pax_global_header00006660000000000000000000000064147734722370014532gustar00rootroot0000000000000052 comment=a3bfecbe94783ecf9a585ee8260740fe2e12d68b icingadb-1.3.0/000077500000000000000000000000001477347223700132735ustar00rootroot00000000000000icingadb-1.3.0/.gitattributes000066400000000000000000000001211477347223700161600ustar00rootroot00000000000000# Include version information on `git archive' /internal/version.go export-subst icingadb-1.3.0/.github/000077500000000000000000000000001477347223700146335ustar00rootroot00000000000000icingadb-1.3.0/.github/ISSUE_TEMPLATE/000077500000000000000000000000001477347223700170165ustar00rootroot00000000000000icingadb-1.3.0/.github/ISSUE_TEMPLATE/bug_report.md000066400000000000000000000012701477347223700215100ustar00rootroot00000000000000--- name: Bug Report about: Create a report to help us improve title: '' labels: '' assignees: '' --- ## Describe the bug A clear and concise description of what the bug is. ## To Reproduce Provide a link to a live example, or an unambiguous set of steps to reproduce this bug. Include configuration, logs, etc. to reproduce, if relevant. 1. 2. 3. 4. ## Expected behavior A clear and concise description of what you expected to happen. ## Your Environment Include as many relevant details about the environment you experienced the problem in * Icinga DB version: * Icinga 2 version: * Operating System and version: ## Additional context Add any other context about the problem here. icingadb-1.3.0/.github/ISSUE_TEMPLATE/config.yml000066400000000000000000000002511477347223700210040ustar00rootroot00000000000000blank_issues_enabled: true contact_links: - name: Ask a question url: https://community.icinga.com/c/icinga-db/14 about: Ask a question in our community forum icingadb-1.3.0/.github/ISSUE_TEMPLATE/release.md000066400000000000000000000006471477347223700207670ustar00rootroot00000000000000--- name: '[INTERNAL] Release' about: Release a version title: 'Release Version v$version' labels: '' assignees: '' --- # Release Workflow - [ ] Check that the `.mailmap` and `AUTHORS` files are up to date - [ ] Update `internal/version.go` - [ ] Update `CHANGELOG.md` - [ ] Create and push a signed tag for the version - [ ] Build packages - [ ] Create release on GitHub - [ ] Update public docs - [ ] Announce release icingadb-1.3.0/.github/dependabot.yml000066400000000000000000000005051477347223700174630ustar00rootroot00000000000000version: 2 updates: - package-ecosystem: gomod directory: "/" schedule: interval: daily open-pull-requests-limit: 10 - package-ecosystem: gomod directory: "/tests" schedule: interval: daily open-pull-requests-limit: 10 - package-ecosystem: github-actions directory: / schedule: interval: daily icingadb-1.3.0/.github/workflows/000077500000000000000000000000001477347223700166705ustar00rootroot00000000000000icingadb-1.3.0/.github/workflows/compliance.yml000066400000000000000000000005561477347223700215330ustar00rootroot00000000000000name: Compliance on: push: branches: - main - 'support/*' pull_request: {} jobs: licenses: runs-on: ubuntu-latest steps: - run: sudo apt install -y moreutils - uses: actions/setup-go@v5 with: go-version: 1.x - uses: actions/checkout@v4 - run: .github/workflows/compliance/check-licenses.sh icingadb-1.3.0/.github/workflows/compliance/000077500000000000000000000000001477347223700210025ustar00rootroot00000000000000icingadb-1.3.0/.github/workflows/compliance/anonymize-license.pl000077500000000000000000000003511477347223700247720ustar00rootroot00000000000000#!/usr/bin/perl -pi use warnings; use strict; use autodie qw(:all); if (/^ ?(?:\w+ )?Copyright / || /^All rights reserved\.$/ || /^(?:The )?\S+ License(?: \(.+?\))?$/ || /^$/) { $_ = "" } s/Google Inc\./the copyright holder/g icingadb-1.3.0/.github/workflows/compliance/check-licenses.sh000077500000000000000000000043671477347223700242330ustar00rootroot00000000000000#!/bin/bash set -eo pipefail find_license_file() { MOD_NAME="$1" LICENSE_DIR="vendor/$MOD_NAME" LICENSE_FILES=({,../}{,UN}LICENSE{,.txt,.md}) for LICENSE_FILE in "${LICENSE_FILES[@]}"; do LICENSE_FILE="${LICENSE_DIR}/$LICENSE_FILE" if [ -e "$LICENSE_FILE" ]; then echo "$LICENSE_FILE" return fi done echo "Module ${MOD_NAME}: license file missing in ${LICENSE_DIR}. Tried:" "${LICENSE_FILES[@]}" >&2 false } list_all_deps() { for MAIN_MOD in ./cmd/*; do go list -deps "$MAIN_MOD" done } COMPATIBLE_LINE=$(($LINENO + 2)) COMPATIBLE=( # public domain 3cee2c43614ad4572d9d594c81b9348cf45ed5ac # vendor/github.com/vbauerster/mpb/v6/UNLICENSE # MIT 66d504eb2f162b9cbf11b07506eeed90c6edabe1 # vendor/github.com/cespare/xxhash/v2/LICENSE.txt 1513ff663e946fdcadb630bed670d253b8b22e1e # vendor/github.com/davecgh/go-spew/spew/../LICENSE 90a1030e6314df9a898e5bfbdb4c6176d0a1f81c # vendor/github.com/jmoiron/sqlx/LICENSE # BSD-2 8762249b76928cb6995b98a95a9396c5aaf104f3 # vendor/github.com/go-redis/redis/v8/LICENSE d550c89174b585d03dc67203952b38372b4ce254 # vendor/github.com/pkg/errors/LICENSE # BSD-3 b23b967bba92ea3c5ccde9962027cd70400865eb # vendor/github.com/google/uuid/LICENSE 604b38b184689a3db06a0617216d52a95aea10d8 # vendor/github.com/pmezard/go-difflib/difflib/../LICENSE # MPLv2 0a2b84dd9b124c4d95dd24418c3e84fd870cc0ac # vendor/github.com/go-sql-driver/mysql/LICENSE ) MY_DIR="$(dirname "$0")" go mod vendor for MOD_NAME in $(list_all_deps | "${MY_DIR}/ls-deps.pl"); do LICENSE_FILE="$(find_license_file "$MOD_NAME")" "${MY_DIR}/anonymize-license.pl" "$LICENSE_FILE" tr -d ., <"$LICENSE_FILE" | tr \\n\\t ' ' | sponge "$LICENSE_FILE" perl -p0 -i -e 's/ +/ /g; s/ +$//; $_ = lc' "$LICENSE_FILE" for SHA1 in "${COMPATIBLE[@]}"; do if sha1sum -c <<<"$SHA1 $LICENSE_FILE" >/dev/null 2>&1; then continue 2 fi done echo "Module ${MOD_NAME}: unknown license. Run 'go mod vendor' (or see below), verify by yourself whether" \ "$LICENSE_FILE is GPLv2 compatible and (if yes) update the license text hashes list at ${0}:$COMPATIBLE_LINE" \ "and eventually .github/workflows/compliance/anonymize-license.pl:7" >&2 sha1sum "$LICENSE_FILE" head "$LICENSE_FILE" false done icingadb-1.3.0/.github/workflows/compliance/ls-deps.pl000077500000000000000000000010111477347223700227020ustar00rootroot00000000000000#!/usr/bin/perl use warnings; use strict; use autodie qw(:all); my @mods = <>; chomp @mods; s~^vendor/~~ for @mods; @mods = grep m~^[^./]+\.~, @mods; @mods = grep !m~^golang\.org/x(?:/|$)~, @mods; @mods = grep !m~^github\.com/icinga/icingadb(?:/|$)~, @mods; @mods = sort @mods; my $lastMod = undef; for (@mods) { # prefixed with last mod (e.g. "go.uber.org/zap/buffer" after "go.uber.org/zap"), so redundant next if defined($lastMod) && /$lastMod/; $lastMod = '^' . quotemeta("$_/"); print "$_\n" } icingadb-1.3.0/.github/workflows/container-image.yml000066400000000000000000000164341477347223700224650ustar00rootroot00000000000000# The Build and Publish Container Image workflow builds container images and # pushes them to both GitHub Container Registry (GHCR) and Docker Hub. # It sets up QEMU and Docker Buildx for cross-platform builds, # and builds the container images using the Containerfile. # Upon pushes to the main branch or when releases are published, # it logs into GHCR and Docker Hub using credentials from GitHub secrets, # tags and pushes the images to both registries, # and generates and pushes signed build provenance attestations to each registry. # The workflow also triggers for pull requests to the main branch, verifying only the image build. name: Build and Publish Container Image on: push: branches: - main pull_request: branches: - main release: types: - published env: # The variable ${{ github.repository }} is not suitable for container image names in our case because # they must be lowercase, and our organization name is Icinga. # Since our repository names are already lowercase, no additional modifications are necessary. IMAGE_NAME: icinga/${{ github.event.repository.name }} # The LATEST variable determines if the current release tag is the greatest tag overall. # If true, the container image will be tagged as 'latest' when pushed to the container registries. LATEST: false # The LATEST_MAJOR variable determines if the current release tag is the greatest within its major version. # If true, the container image will be tagged with the major version (e.g., '1') when pushed to the registries. LATEST_MAJOR: false jobs: build-and-publish-container-image: runs-on: ubuntu-latest permissions: contents: read packages: write attestations: write id-token: write steps: # Explicitly using the checkout action (instead of relying on docker/build-push-action to do it implicitly) # because we need to fetch all tags. - name: Checkout uses: actions/checkout@v4 with: # Switch to fetch-tags: true once https://github.com/actions/checkout/issues/1467 is fixed. fetch-depth: 0 # Updates env.LATEST and env.LATEST_MAJOR based on # whether the current release tag is the greatest overall and/or # within its major version. - name: Prepare metadata (release tags) if: github.event_name == 'release' && github.event.action == 'published' run: | # Retrieve the greatest existing tag in the repository by sorting tags in descending order. # Options used: # * --sort=-v:refname sorts tags as versions, placing the highest version at the top. # * -c 'versionsort.suffix=-' ensures that pre-release tags (e.g., 1.0.0-rc1) are sorted correctly, # so they are not considered greater than their corresponding final release (e.g., 1.0.0). # Intentionally not using head -1 to prevent potential broken pipe errors. greatest_tag=$(git -c 'versionsort.suffix=-' tag --list --sort=-v:refname | awk 'NR==1') if [ "${{ github.ref_name }}" = "$greatest_tag" ]; then echo "The current tag ${{ github.ref_name }} is the greatest overall. Tagging as 'latest'." # Update environment variable to enable tagging as 'latest'. echo "LATEST=true" >> "$GITHUB_ENV" else echo "The current tag ${{ github.ref_name }} is not the greatest overall compared to $greatest_tag. Not tagging as 'latest'." fi major_version=$(echo ${{ github.ref_name }} | cut -d. -f1) greatest_major=$(git -c 'versionsort.suffix=-' tag --list "${major_version}.*" --sort=-v:refname | awk 'NR==1') if [ "${{ github.ref_name }}" = "$greatest_major" ]; then echo "The current tag ${{ github.ref_name }} is the greatest within its major version. Tagging with major version ${major_version#v}." # Update environment variable to enable tagging with major version. echo "LATEST_MAJOR=true" >> "$GITHUB_ENV" else echo "The current tag ${{ github.ref_name }} is not the greatest within its major version compared to $greatest_major. Not tagging with major version ${major_version#v}." fi - name: Extract metadata (tags, labels) id: meta uses: docker/metadata-action@v5 with: # This will generate tags and labels for both the GHCR image and Docker Hub image. images: | # GitHub Container Registry ghcr.io/${{ env.IMAGE_NAME }} # Docker Hub ${{ env.IMAGE_NAME }} labels: | org.opencontainers.image.documentation=https://icinga.com/docs/icinga-db org.opencontainers.image.vendor=Icinga GmbH flavor: | # Disable automatic 'latest' tagging as our custom logic is used to # determine when to apply the 'latest' tag. latest=false tags: | type=edge type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}},enable=${{ env.LATEST_MAJOR }} type=raw,value=latest,enable=${{ env.LATEST }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to GitHub Container Registry if: github.event_name != 'pull_request' uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Login to Docker Hub if: github.event_name != 'pull_request' uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push Container image id: build-and-push uses: docker/build-push-action@v6 with: context: . file: ./Containerfile labels: ${{ steps.meta.outputs.labels }} platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} # The tags generated in the metadata step include tags for both Docker Hub and GHCR image names, # allowing the build and push action to build and push images to both registries. tags: ${{ steps.meta.outputs.tags }} - name: Generate artifact attestation for GitHub Container Registry if: github.event_name != 'pull_request' uses: actions/attest-build-provenance@v2 with: subject-name: ghcr.io/${{ env.IMAGE_NAME }} subject-digest: ${{ steps.build-and-push.outputs.digest }} push-to-registry: false - name: Generate artifact attestation for Docker Hub if: github.event_name != 'pull_request' uses: actions/attest-build-provenance@v2 with: # According to the documentation [^1], # "index.docker.io" should be used as the registry portion of the image name when pushing to Docker Hub. # # [^1]: https://github.com/actions/attest-build-provenance?tab=readme-ov-file#container-image subject-name: index.docker.io/${{ env.IMAGE_NAME }} subject-digest: ${{ steps.build-and-push.outputs.digest }} push-to-registry: false icingadb-1.3.0/.github/workflows/go.yml000066400000000000000000000043111477347223700200170ustar00rootroot00000000000000name: Go on: push: branches: - main - 'support/*' pull_request: {} jobs: build-test: strategy: matrix: os: [ macos-latest, ubuntu-latest ] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: 1.x - run: go build ./... - run: go test -v -race ./... lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: 1.x - uses: golangci/golangci-lint-action@v7 with: version: latest only-new-issues: true # Enable the gosec linter w/o having to create a .golangci.yml config args: -E gosec vet: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: 1.x - run: go vet ./... fmt: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: 1.x - name: Run gofmt -d . run: | fmtvar="$(gofmt -d .)" echo "$fmtvar" test -z "$fmtvar" modtidy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: 1.x - name: Run go mod tidy run: | go mod tidy gitdiff="$(git diff -U0)" echo "$gitdiff" test -z "$gitdiff" vendor-diff: if: github.event_name == 'pull_request' runs-on: ubuntu-latest steps: - uses: actions/setup-go@v5 with: go-version: 1.x - name: Checkout base commit uses: actions/checkout@v4 with: path: a ref: ${{ github.base_ref }} - name: Download dependencies of base commit run: go mod vendor working-directory: a - name: Checkout PR uses: actions/checkout@v4 with: path: b - name: Download dependencies of PR run: go mod vendor working-directory: b - name: Diff of dependencies run: diff -ur --color=always a/vendor b/vendor || true icingadb-1.3.0/.github/workflows/integration-tests.yml000066400000000000000000000030631477347223700231000ustar00rootroot00000000000000name: Integration Tests on: push: branches: - main - 'support/*' pull_request: {} schedule: - cron: '57 3 * * *' jobs: integration-tests: strategy: fail-fast: false matrix: database: - name: mysql pretty_name: MySQL - name: pgsql pretty_name: PostgreSQL name: ${{ matrix.database.pretty_name }} runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version: 1.x - name: Build Icinga DB run: go build ./cmd/icingadb env: CGO_ENABLED: 0 - name: Build Integration Tests run: go test -o ../icingadb-test -c . working-directory: tests/ - name: Run Integration Tests run: ./icingadb-test -icingatesting.debuglog debug.log -test.v env: ICINGADB_TESTS_DATABASE_TYPE: ${{ matrix.database.name }} ICINGA_TESTING_ICINGADB_BINARY: ${{ github.workspace }}/icingadb ICINGA_TESTING_ICINGADB_SCHEMA_MYSQL: ${{ github.workspace }}/schema/mysql/schema.sql ICINGA_TESTING_ICINGADB_SCHEMA_PGSQL: ${{ github.workspace }}/schema/pgsql/schema.sql - name: Compress Debug Log if: ${{ always() }} run: xz -9 debug.log - name: Upload Debug Log if: ${{ always() }} uses: actions/upload-artifact@v4 with: name: ${{ matrix.database.name }}-debug.log.xz path: debug.log.xz retention-days: 1 icingadb-1.3.0/.github/workflows/sql.yml000066400000000000000000000046001477347223700202120ustar00rootroot00000000000000name: SQL on: push: branches: - main - 'support/*' pull_request: {} jobs: sql: name: ${{ matrix.database.name }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: database: - {type: MYSQL, name: MySQL 5.5, image: "icinga/icingadb-mysql:5.5"} - {type: MYSQL, name: MySQL 5.6, image: "icinga/icingadb-mysql:5.6"} - {type: MYSQL, name: MySQL 5.7, image: "mysql:5.7"} - {type: MYSQL, name: MySQL 8, image: "mysql:8"} - {type: MYSQL, name: MySQL latest, image: "mysql:latest"} - {type: MYSQL, name: MariaDB 10.1, image: "mariadb:10.1"} - {type: MYSQL, name: MariaDB 10.2, image: "mariadb:10.2"} - {type: MYSQL, name: MariaDB 10.3, image: "mariadb:10.3"} - {type: MYSQL, name: MariaDB 10.4, image: "mariadb:10.4"} - {type: MYSQL, name: MariaDB 10.5, image: "mariadb:10.5"} - {type: MYSQL, name: MariaDB 10.6, image: "mariadb:10.6"} - {type: MYSQL, name: MariaDB 10.7, image: "mariadb:10.7"} - {type: MYSQL, name: MariaDB latest, image: "mariadb:latest"} - {type: PGSQL, name: PostgreSQL 9.6, image: "postgres:9.6"} - {type: PGSQL, name: PostgreSQL 10, image: "postgres:10"} - {type: PGSQL, name: PostgreSQL 11, image: "postgres:11"} - {type: PGSQL, name: PostgreSQL 12, image: "postgres:12"} - {type: PGSQL, name: PostgreSQL 13, image: "postgres:13"} - {type: PGSQL, name: PostgreSQL latest, image: "postgres:latest"} steps: - name: Setup Go uses: actions/setup-go@v5 with: go-version: 1.x - name: Checkout code uses: actions/checkout@v4 - name: Download dependencies run: go get -v -t -d ./... working-directory: tests/ - name: Run tests env: ICINGADB_TESTS_DATABASE_TYPE: ${{ matrix.database.type }} ICINGA_TESTING_${{ matrix.database.type }}_IMAGE: ${{ matrix.database.image }} ICINGA_TESTING_ICINGADB_SCHEMA_MYSQL: ${{ github.workspace }}/schema/mysql/schema.sql ICINGA_TESTING_ICINGADB_SCHEMA_PGSQL: ${{ github.workspace }}/schema/pgsql/schema.sql timeout-minutes: 10 run: go test -v -timeout 5m ./sql working-directory: tests/ icingadb-1.3.0/.gitignore000066400000000000000000000000241477347223700152570ustar00rootroot00000000000000.* !.git* !.mailmap icingadb-1.3.0/.mailmap000066400000000000000000000011521477347223700147130ustar00rootroot00000000000000Alexander A. Klimov Alvar Penning <8402811+oxzi@users.noreply.github.com> Diana Flach Diana Flach Diana Flach Henrik Triem <43344334+htriem@users.noreply.github.com> Julian Brost icingadb-1.3.0/AUTHORS000066400000000000000000000010601477347223700143400ustar00rootroot00000000000000Alexander A. Klimov Alvar Penning Blerim Sheqa Eric Lippmann Feu Mourek Henrik Triem Johannes Meyer Jonada Hoxha Julian Brost Michael Friedrich Noah Hilverling Ravi Kumar Kempapura Srinivasa Yonas Habteab icingadb-1.3.0/CHANGELOG.md000066400000000000000000000150131477347223700151040ustar00rootroot00000000000000# Icinga DB Changelog ## 1.3.0 (2025-04-03) This is a maintenance release, integrating the container setup directly into Icinga DB. Most importantly, first-class support for configuring Icinga DB completely via environment variables has been added alongside YAML. In addition, an optional automatic database schema import has been added, allowing an empty SQL database to be populated. With these two features, the [docker-icingadb](https://github.com/Icinga/docker-icingadb) repository can now be sunsetted, integrating the `Containerfile` directly into the main repository. For Docker users of Icinga DB, the following has changed. - Container images are now pushed to both the [GitHub Container Registry (GHCR)](https://github.com/icinga/icingadb/pkgs/container/icingadb) and [Docker Hub](https://hub.docker.com/r/icinga/icingadb). - Development images built from the `main` branch are no longer tagged as `main`, but now as `edge`. The changes are as follows. * Support loading configuration from both YAML files and environment variables. #831 * Allow database schema import via command line argument flag. #901 * Create and publish container images from the icingadb repository. #912 * Log essential HA events and the startup message regardless of the log level. #920 * Resolve SQL errors with reserved names in `icingadb-migrate` on older PostgreSQL versions. #885 ## 1.2.1 (2024-12-18) This is a maintenance release that addresses HA issues and includes a number of other fixes. Most prominent, crashes caused by an invalid HA state were investigated and fixed mainly by the following changes. * Ensure that the crucial HA realization logic is always aborted when its timeout is reached. #800 * Give up the HA leadership role if it seems another node is also active. #825 * Reduce database deadlocks in the HA realization domain with exclusive locking. #830 Other notable changes include the following: * ACL and database support for Redis®[\*](doc/TRADEMARKS.md#redis). #874, icinga-go-library#50, icinga-go-library#52 * Alter the database schema to allow longer user input. #779, #792, #856 * Mitigate some NULL values for icingadb-migrate. #767 * Retry certain database errors for PostgreSQL. icinga-go-library#59 * Retry Redis® timeout errors for `XREAD`. icinga-go-library#23 * Additional tests were written. #771, #777, #803, #806, #807, #808 * Parts of the code have been moved to our [icinga-go-library](https://github.com/Icinga/icinga-go-library) for use by our other Go daemons. #747 * Update dependencies. [26 times](https://github.com/Icinga/icingadb/pulls?q=is%3Apr+milestone%3A1.2.1+label%3Adependencies) ### Schema A schema upgrade is available that allows longer user input as listed above. Please follow the [upgrading documentation](doc/04-Upgrading.md#upgrading-to-icinga-db-v121). ## 1.2.0 (2024-04-11) This release addresses multiple issues related to fault recoveries, with a particular focus on retryable database errors that may occur when using Icinga DB with database clusters. Since there may be a large number of errors that are resolved by retrying after a certain amount of time, \#698 changed the retry behavior to retry every database-related error for five minutes. This helps Icinga DB survive network hiccups or more complicated database situations, such as working with a database cluster. The latter was specifically addressed in #711 for Galera Clusters on MySQL or MariaDB by configuring `wsrep_sync_wait` on used database sessions. Galera users should refer to the [Configuration documentation](doc/03-Configuration.md#database-options) for more details. In summary, the most notable changes are as follows: * Custom Variables: Render large numbers as-is, not using scientific notation. #657 * Enhance retries for database errors and other failures for up to five minutes. #693, #698, #739, #740 * MySQL/MariaDB: Use strict SQL mode. #699 * MySQL/MariaDB Galera Cluster: Set `wsrep_sync_wait` for cluster-wide causality checks. #711 * Don't crash history sync in the absence of Redis®[\*](doc/TRADEMARKS.md#redis). #725 * Update dependencies. [27 times](https://github.com/Icinga/icingadb/pulls?q=is%3Apr+is%3Amerged+label%3Adependencies+milestone%3A1.2.0) ### Schema In addition to mandatory schema upgrades, this release includes an optional upgrade that can be applied subsequently. Details are available in the [Upgrading documentation](doc/04-Upgrading.md#upgrading-to-icinga-db-v120) and #656. All schema changes are listed below: * Allow host and service check attempts >= 256. #656 * Composite `INDEX` for the history table to speed up history view in Icinga DB Web. #686 * MySQL/MariaDB: Fix `icingadb_schema.timestamp` not being Unix time. #700 * PostgreSQL: Change `get_sla_ok_percent` to return decimal numbers in SLA overview. #710 ## 1.1.1 (2023-08-09) This release fixes a few crashes in the Icinga DB daemon, addresses some shortcomings in the database schema, and makes the `icingadb-migrate` tool handle malformed events and other edge-cases more reliably. * Fix a possible crash when the Icinga 2 heartbeat is lost. #559 * Retry additional non-fatal database errors. #593 #583 * Make heartbeat compatible with Percona XtraDB Cluster. #609 * Write a hint for empty arrays/dicts into `customvar_flat` for Icinga DB Web. #601 * Warn about unknown options in the daemon config file. #605 #631 * Don't log a port number for UNIX socket addresses. #542 * Fix some custom JSON encode functions for `null` values. #612 * Documentation: add TLS options to `icingadb-migrate` example config. #604 * Documentation: Replace `apt-get` with `apt`. #545 * Update dependencies. #548 #549 #588 #589 #590 #594 #595 #596 #598 #599 #603 #632 ### Schema * Allow longer names for notification objects. #584 * Add missing indices to `hostgroup`, `servicegroup`, and `customvar_flat`. #616 #617 * Change sort order of history event types. #626 ### icingadb-migrate * Ignore events that miss crucial information. #551 * Fix a foreign key error for flapping history with `ido.from` set. #554 * Fix a constraint violation for flexible downtimes that never started. #623 * Show an error for unknown options in the config file. #605 ## 1.1.0 (2022-11-10) This release adds a tool for migrating history from IDO. Apart from that, it reduces RAM usage and includes updated dependencies. * Add `icingadb-migrate` for migrating IDO history to Icinga DB. #253 #536 #541 * Reduce RAM usage during full sync. #525 * Update dependencies. #522 #524 #533 #534 #540 ## 1.0.0 (2022-06-30) Final release ## 1.0.0 RC2 (2021-11-12) Second release candidate ## 1.0.0 RC1 (2020-03-13) Initial release icingadb-1.3.0/Containerfile000066400000000000000000000026161477347223700160050ustar00rootroot00000000000000FROM golang:1 AS base # Cache dependencies: # The go mod download command uses a cache mount, # ensuring Go modules are cached separately from the build context and not included in image layers. # This cache is used in the build stage and reused across builds, unless go.mod or go.sum changes. WORKDIR /build COPY go.mod go.sum ./ RUN --mount=type=cache,target=/go/pkg/mod \ go mod download FROM base AS build # Mount source code and build: # The --mount=target=. option mounts the source code without adding an extra image layer, unlike `COPY . .`. # The go build command uses the dependency cache and a dedicated mount to cache build artifacts for future builds. RUN --mount=target=. \ --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ CGO_ENABLED=0 go build -trimpath -ldflags '-s -w' -o /icingadb ./cmd/icingadb FROM scratch # addgroup -g 1001 icinga COPY < Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. icingadb-1.3.0/README.md000066400000000000000000000021501477347223700145500ustar00rootroot00000000000000# Icinga DB Icinga DB is a set of components for publishing, synchronizing and visualizing monitoring data in the Icinga ecosystem, consisting of: * The Icinga DB daemon, which synchronizes monitoring data between a Redis®[\*](doc/TRADEMARKS.md#redis) server and a database * Icinga 2 with its [Icinga DB feature](https://icinga.com/docs/icinga-2/latest/doc/14-features/#icinga-db) enabled, responsible for publishing the data to the Redis® server, i.e. configuration and its runtime updates, check results, state changes, downtimes, acknowledgements, notifications, and other events such as flapping * And Icinga Web with the [Icinga DB Web](https://icinga.com/docs/icinga-db-web) module enabled, which connects to both Redis® and the database to display and work with the most up-to-date data ![Icinga DB Architecture](doc/images/icingadb-architecture.png) ## Documentation Icinga DB documentation is available at [icinga.com/docs](https://icinga.com/docs/icinga-db). ## License Icinga DB and the Icinga DB documentation are licensed under the terms of the [GNU General Public License Version 2](LICENSE). icingadb-1.3.0/cmd/000077500000000000000000000000001477347223700140365ustar00rootroot00000000000000icingadb-1.3.0/cmd/icingadb-migrate/000077500000000000000000000000001477347223700172245ustar00rootroot00000000000000icingadb-1.3.0/cmd/icingadb-migrate/cache.go000066400000000000000000000253571477347223700206320ustar00rootroot00000000000000package main import ( "database/sql" _ "embed" "github.com/jmoiron/sqlx" "github.com/pkg/errors" "math" "strings" "time" ) //go:embed embed/event_time_cache_schema.sql var eventTimeCacheSchema string //go:embed embed/previous_hard_state_cache_schema.sql var previousHardStateCacheSchema string // buildEventTimeCache rationale: // // Icinga DB's flapping_history#id always needs start_time. flapping_end rows would need an IDO subquery for that. // That would make the IDO reading even slower than the Icinga DB writing. // Therefore: Stream IDO's icinga_flappinghistory once, compute flapping_history#start_time // and cache it into an SQLite database. Then steam from that database and the IDO. // // Similar for acknowledgements. (On non-recoverable errors the whole program exits.) func buildEventTimeCache(ht *historyType, idoColumns []string) { type row = struct { Id uint64 EventTime int64 EventTimeUsec uint32 EventIsStart uint8 ObjectId uint64 } chunkCacheTx(ht.cache, func(tx **sqlx.Tx, commitPeriodically func()) { var checkpoint struct { Cnt int64 MaxId sql.NullInt64 } cacheGet(*tx, &checkpoint, "SELECT COUNT(*) cnt, MAX(history_id) max_id FROM end_start_time") ht.bar.SetCurrent(checkpoint.Cnt * 2) // Stream source data... sliceIdoHistory( ht, "SELECT "+strings.Join(idoColumns, ", ")+" FROM "+ht.idoTable+ // For actual migration icinga_objects will be joined anyway, // so it makes no sense to take vanished objects into account. " xh USE INDEX (PRIMARY) INNER JOIN icinga_objects o ON o.object_id=xh.object_id WHERE xh."+ ht.idoIdColumn+" <= :toid AND xh."+ ht.idoIdColumn+" > :checkpoint ORDER BY xh."+ht.idoIdColumn+" LIMIT :bulk", nil, checkpoint.MaxId.Int64, // ... since we were interrupted: func(idoRows []row) (checkpoint interface{}) { for _, idoRow := range idoRows { if idoRow.EventIsStart == 0 { // Ack/flapping end event. Get the start event time: var lst []struct { EventTime int64 EventTimeUsec uint32 } cacheSelect( *tx, &lst, "SELECT event_time, event_time_usec FROM last_start_time WHERE object_id=?", idoRow.ObjectId, ) // If we have that, ... if len(lst) > 0 { // ... save the start event time for the actual migration: cacheExec( *tx, "INSERT INTO end_start_time(history_id, event_time, event_time_usec) VALUES (?, ?, ?)", idoRow.Id, lst[0].EventTime, lst[0].EventTimeUsec, ) // This previously queried info isn't needed anymore. cacheExec(*tx, "DELETE FROM last_start_time WHERE object_id=?", idoRow.ObjectId) } } else { // Ack/flapping start event directly after another start event (per checkable). // The old one won't have (but the new one will) an end event (which will need its time). cacheExec(*tx, "DELETE FROM last_start_time WHERE object_id=?", idoRow.ObjectId) // An ack/flapping start event. The following end event (per checkable) will need its time. cacheExec( *tx, "INSERT INTO last_start_time(object_id, event_time, event_time_usec) VALUES (?, ?, ?)", idoRow.ObjectId, idoRow.EventTime, idoRow.EventTimeUsec, ) } commitPeriodically() checkpoint = idoRow.Id } ht.bar.IncrBy(len(idoRows)) return }, ) // This never queried info isn't needed anymore. cacheExec(*tx, "DELETE FROM last_start_time") }) ht.bar.SetTotal(ht.bar.Current(), true) } // buildPreviousHardStateCache rationale: // // Icinga DB's state_history#previous_hard_state would need a subquery. // That make the IDO reading even slower than the Icinga DB writing. // Therefore: Stream IDO's icinga_statehistory once, compute state_history#previous_hard_state // and cache it into an SQLite database. Then steam from that database and the IDO. // // Similar for notifications. (On non-recoverable errors the whole program exits.) func buildPreviousHardStateCache(ht *historyType, idoColumns []string) { type row = struct { Id uint64 ObjectId uint64 LastHardState uint8 } chunkCacheTx(ht.cache, func(tx **sqlx.Tx, commitPeriodically func()) { var nextIds struct { Cnt int64 MinId sql.NullInt64 } cacheGet(*tx, &nextIds, "SELECT COUNT(*) cnt, MIN(history_id) min_id FROM next_ids") var previousHardStateCnt int64 cacheGet(*tx, &previousHardStateCnt, "SELECT COUNT(*) FROM previous_hard_state") var checkpoint int64 if nextIds.MinId.Valid { // there are next_ids checkpoint = nextIds.MinId.Int64 // this kind of caches is filled descending } else { // there aren't any next_ids // next_ids contains the most recently processed IDs and is only empty if... if previousHardStateCnt == 0 { // ... we didn't actually start yet... checkpoint = math.MaxInt64 // start from the largest (possible) ID } else { // ... or we've already finished. checkpoint = 0 // make following query no-op } } ht.bar.SetCurrent(previousHardStateCnt + nextIds.Cnt) // We continue where we finished before. As we build the cache in reverse chronological order: // 1. If the history grows between two migration trials, we won't migrate the difference. Workarounds: // a. Start migration after Icinga DB is up and running. // b. Remove the cache before the next migration trial. // 2. If the history gets cleaned up between two migration trials, // the difference either just doesn't appear in the cache or - if already there - will be ignored later. // Stream source data... sliceIdoHistory( ht, "SELECT "+strings.Join(idoColumns, ", ")+" FROM "+ht.idoTable+ // For actual migration icinga_objects will be joined anyway, // so it makes no sense to take vanished objects into account. " xh USE INDEX (PRIMARY) INNER JOIN icinga_objects o ON o.object_id=xh.object_id WHERE xh."+ ht.idoIdColumn+" <= :toid AND xh."+ ht.idoIdColumn+" < :checkpoint ORDER BY xh."+ht.idoIdColumn+" DESC LIMIT :bulk", nil, checkpoint, // ... since we were interrupted: func(idoRows []row) (checkpoint interface{}) { for _, idoRow := range idoRows { var nhs []struct{ NextHardState uint8 } cacheSelect(*tx, &nhs, "SELECT next_hard_state FROM next_hard_state WHERE object_id=?", idoRow.ObjectId) if len(nhs) < 1 { // we just started (per checkable) // At the moment (we're "travelling back in time") that's the checkable's hard state: cacheExec( *tx, "INSERT INTO next_hard_state(object_id, next_hard_state) VALUES (?, ?)", idoRow.ObjectId, idoRow.LastHardState, ) // But for the current time point the previous hard state isn't known, yet: cacheExec( *tx, "INSERT INTO next_ids(history_id, object_id) VALUES (?, ?)", idoRow.Id, idoRow.ObjectId, ) } else if idoRow.LastHardState == nhs[0].NextHardState { // The hard state didn't change yet (per checkable), // so this time point also awaits the previous hard state. cacheExec( *tx, "INSERT INTO next_ids(history_id, object_id) VALUES (?, ?)", idoRow.Id, idoRow.ObjectId, ) } else { // the hard state changed (per checkable) // That past hard state is now available for the processed future time points: cacheExec( *tx, "INSERT INTO previous_hard_state(history_id, previous_hard_state) "+ "SELECT history_id, ? FROM next_ids WHERE object_id=?", idoRow.LastHardState, idoRow.ObjectId, ) // Now they have what they wanted: cacheExec(*tx, "DELETE FROM next_hard_state WHERE object_id=?", idoRow.ObjectId) cacheExec(*tx, "DELETE FROM next_ids WHERE object_id=?", idoRow.ObjectId) // That's done. // Now do the same thing as in the "we just started" case above, for the same reason: cacheExec( *tx, "INSERT INTO next_hard_state(object_id, next_hard_state) VALUES (?, ?)", idoRow.ObjectId, idoRow.LastHardState, ) cacheExec( *tx, "INSERT INTO next_ids(history_id, object_id) VALUES (?, ?)", idoRow.Id, idoRow.ObjectId, ) } commitPeriodically() checkpoint = idoRow.Id } ht.bar.IncrBy(len(idoRows)) return }, ) // No past hard state is available for the processed future time points, assuming pending: cacheExec( *tx, "INSERT INTO previous_hard_state(history_id, previous_hard_state) SELECT history_id, 99 FROM next_ids", ) // Now they should have what they wanted: cacheExec(*tx, "DELETE FROM next_hard_state") cacheExec(*tx, "DELETE FROM next_ids") }) ht.bar.SetTotal(ht.bar.Current(), true) } // chunkCacheTx rationale: during do operate on cache via *tx. After every completed operation call commitPeriodically() // which periodically commits *tx and starts a new tx. (That's why tx is a **, not just a *.) // (On non-recoverable errors the whole program exits.) func chunkCacheTx(cache *sqlx.DB, do func(tx **sqlx.Tx, commitPeriodically func())) { logger := log.With("backend", "cache") tx, err := cache.Beginx() if err != nil { logger.Fatalf("%+v", errors.Wrap(err, "can't begin transaction")) } const commitInterval = 5 * time.Minute nextCommit := time.Now().Add(commitInterval) do(&tx, func() { // commitPeriodically if now := time.Now(); now.After(nextCommit) { if err := tx.Commit(); err != nil { logger.Fatalf("%+v", errors.Wrap(err, "can't commit transaction")) } var err error tx, err = cache.Beginx() if err != nil { logger.Fatalf("%+v", errors.Wrap(err, "can't begin transaction")) } nextCommit = nextCommit.Add(commitInterval) } }) if err := tx.Commit(); err != nil { logger.Fatalf("%+v", errors.Wrap(err, "can't commit transaction")) } } // cacheGet does cache.Get(dest, query, args...). (On non-recoverable errors the whole program exits.) func cacheGet(cache interface { Get(dest interface{}, query string, args ...interface{}) error }, dest interface{}, query string, args ...interface{}) { if err := cache.Get(dest, query, args...); err != nil { log.With("backend", "cache", "query", query, "args", args). Fatalf("%+v", errors.Wrap(err, "can't perform query")) } } // cacheSelect does cacheTx.Select(dest, query, args...). (On non-recoverable errors the whole program exits.) func cacheSelect(cacheTx *sqlx.Tx, dest interface{}, query string, args ...interface{}) { if err := cacheTx.Select(dest, query, args...); err != nil { log.With("backend", "cache", "query", query, "args", args). Fatalf("%+v", errors.Wrap(err, "can't perform query")) } } // cacheExec does cacheTx.Exec(dml, args...). On non-recoverable errors the whole program exits. func cacheExec(cacheTx *sqlx.Tx, dml string, args ...interface{}) { if _, err := cacheTx.Exec(dml, args...); err != nil { log.With("backend", "cache", "dml", dml, "args", args).Fatalf("%+v", errors.Wrap(err, "can't perform DML")) } } icingadb-1.3.0/cmd/icingadb-migrate/convert.go000066400000000000000000000620551477347223700212430ustar00rootroot00000000000000package main import ( "database/sql" _ "embed" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icinga-go-library/utils" icingadbTypes "github.com/icinga/icingadb/pkg/icingadb/types" v1 "github.com/icinga/icingadb/pkg/icingadb/v1" "github.com/icinga/icingadb/pkg/icingadb/v1/history" "github.com/jmoiron/sqlx" "github.com/pkg/errors" "math" "strconv" "strings" "time" ) //go:embed embed/comment_query.sql var commentMigrationQuery string //go:embed embed/downtime_query.sql var downtimeMigrationQuery string //go:embed embed/flapping_query.sql var flappingMigrationQuery string //go:embed embed/notification_query.sql var notificationMigrationQuery string //go:embed embed/state_query.sql var stateMigrationQuery string type commentRow = struct { CommenthistoryId uint64 EntryTime sql.NullInt64 EntryTimeUsec uint32 EntryType uint8 AuthorName string CommentData string IsPersistent uint8 ExpirationTime int64 DeletionTime int64 DeletionTimeUsec uint32 Name string ObjecttypeId uint8 Name1 string Name2 string } func convertCommentRows( env string, envId types.Binary, _ func(interface{}, string, ...interface{}), _ *sqlx.Tx, idoRows []commentRow, ) (stages []icingaDbOutputStage, checkpoint any) { var commentHistory, acknowledgementHistory, allHistoryComment, allHistoryAck []database.Entity for _, row := range idoRows { checkpoint = row.CommenthistoryId if !row.EntryTime.Valid { continue } typ := objectTypes[row.ObjecttypeId] hostId := calcObjectId(env, row.Name1) serviceId := calcServiceId(env, row.Name1, row.Name2) switch row.EntryType { case 1: // user id := calcObjectId(env, row.Name) entryTime := convertTime(row.EntryTime.Int64, row.EntryTimeUsec) removeTime := convertTime(row.DeletionTime, row.DeletionTimeUsec) expireTime := convertTime(row.ExpirationTime, 0) commentHistory = append(commentHistory, &history.CommentHistory{ CommentHistoryEntity: history.CommentHistoryEntity{CommentId: id}, HistoryTableMeta: history.HistoryTableMeta{ EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, }, CommentHistoryUpserter: history.CommentHistoryUpserter{ RemoveTime: removeTime, HasBeenRemoved: types.Bool{Bool: !removeTime.Time().IsZero(), Valid: true}, }, EntryTime: entryTime, Author: row.AuthorName, Comment: row.CommentData, EntryType: icingadbTypes.CommentType(row.EntryType), IsPersistent: types.Bool{Bool: row.IsPersistent != 0, Valid: true}, IsSticky: types.Bool{Bool: false, Valid: true}, ExpireTime: expireTime, }) h1 := &history.HistoryComment{ HistoryMeta: history.HistoryMeta{ HistoryEntity: history.HistoryEntity{Id: hashAny([]string{env, "comment_add", row.Name})}, EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, EventType: "comment_add", }, CommentHistoryId: id, EntryTime: entryTime, } h1.EventTime.History = h1 allHistoryComment = append(allHistoryComment, h1) if !removeTime.Time().IsZero() { // remove h2 := &history.HistoryComment{ HistoryMeta: history.HistoryMeta{ HistoryEntity: history.HistoryEntity{Id: hashAny([]string{env, "comment_remove", row.Name})}, EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, EventType: "comment_remove", }, CommentHistoryId: id, EntryTime: entryTime, RemoveTime: removeTime, ExpireTime: expireTime, } h2.EventTime.History = h2 allHistoryComment = append(allHistoryComment, h2) } case 4: // ack name := row.Name1 if row.Name2 != "" { name += "!" + row.Name2 } setTime := convertTime(row.EntryTime.Int64, row.EntryTimeUsec) setTs := float64(setTime.Time().UnixMilli()) clearTime := convertTime(row.DeletionTime, row.DeletionTimeUsec) acknowledgementHistoryId := hashAny([]any{env, name, setTs}) acknowledgementHistory = append(acknowledgementHistory, &history.AcknowledgementHistory{ EntityWithoutChecksum: v1.EntityWithoutChecksum{ IdMeta: v1.IdMeta{Id: acknowledgementHistoryId}, }, HistoryTableMeta: history.HistoryTableMeta{ EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, }, AckHistoryUpserter: history.AckHistoryUpserter{ClearTime: clearTime}, SetTime: setTime, Author: types.MakeString(row.AuthorName), Comment: types.MakeString(row.CommentData), ExpireTime: convertTime(row.ExpirationTime, 0), IsPersistent: types.Bool{ Bool: row.IsPersistent != 0, Valid: true, }, }) h1 := &history.HistoryAck{ HistoryMeta: history.HistoryMeta{ HistoryEntity: history.HistoryEntity{ Id: hashAny([]any{env, "ack_set", name, setTs}), }, EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, EventType: "ack_set", }, AcknowledgementHistoryId: acknowledgementHistoryId, SetTime: setTime, ClearTime: clearTime, } h1.EventTime.History = h1 allHistoryAck = append(allHistoryAck, h1) if !clearTime.Time().IsZero() { h2 := &history.HistoryAck{ HistoryMeta: history.HistoryMeta{ HistoryEntity: history.HistoryEntity{ Id: hashAny([]any{env, "ack_clear", name, setTs}), }, EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, EventType: "ack_clear", }, AcknowledgementHistoryId: acknowledgementHistoryId, SetTime: setTime, ClearTime: clearTime, } h2.EventTime.History = h2 allHistoryAck = append(allHistoryAck, h2) } } } stages = []icingaDbOutputStage{ {insert: commentHistory}, {insert: acknowledgementHistory}, {insert: allHistoryComment}, {insert: allHistoryAck}, } return } type downtimeRow = struct { DowntimehistoryId uint64 EntryTime int64 AuthorName string CommentData string IsFixed uint8 Duration int64 ScheduledStartTime sql.NullInt64 ScheduledEndTime int64 WasStarted uint8 ActualStartTime int64 ActualStartTimeUsec uint32 ActualEndTime int64 ActualEndTimeUsec uint32 WasCancelled uint8 TriggerTime int64 Name string ObjecttypeId uint8 Name1 string Name2 string TriggeredBy string } func convertDowntimeRows( env string, envId types.Binary, _ func(interface{}, string, ...interface{}), _ *sqlx.Tx, idoRows []downtimeRow, ) (stages []icingaDbOutputStage, checkpoint any) { var downtimeHistory, allHistory, sla []database.Entity for _, row := range idoRows { checkpoint = row.DowntimehistoryId if !row.ScheduledStartTime.Valid || row.WasStarted == 0 { continue } id := calcObjectId(env, row.Name) typ := objectTypes[row.ObjecttypeId] hostId := calcObjectId(env, row.Name1) serviceId := calcServiceId(env, row.Name1, row.Name2) scheduledStart := convertTime(row.ScheduledStartTime.Int64, 0) scheduledEnd := convertTime(row.ScheduledEndTime, 0) triggerTime := convertTime(row.TriggerTime, 0) actualStart := convertTime(row.ActualStartTime, row.ActualStartTimeUsec) actualEnd := convertTime(row.ActualEndTime, row.ActualEndTimeUsec) var startTime, endTime, cancelTime types.UnixMilli if scheduledEnd.Time().IsZero() { scheduledEnd = types.UnixMilli(scheduledStart.Time().Add(time.Duration(row.Duration) * time.Second)) } if actualStart.Time().IsZero() { startTime = scheduledStart } else { startTime = actualStart } if actualEnd.Time().IsZero() { endTime = scheduledEnd } else { endTime = actualEnd } if triggerTime.Time().IsZero() { triggerTime = startTime } if row.WasCancelled != 0 { cancelTime = actualEnd } // The IDO duration is of type bigint, representing seconds, while Icinga DB's FlexibleDuration is an unsigned // bigint, representing milliseconds. In theory, there should be no negative value in the IDO and multiplied // with factor 1,000 should not overflow anything. In theory, at least. To make sure, invalid values are capped. var flexibleDuration uint64 if durationSec := row.Duration; durationSec >= 0 && durationSec < math.MaxUint64/1_000 { flexibleDuration = uint64(durationSec) * 1_000 } downtimeHistory = append(downtimeHistory, &history.DowntimeHistory{ DowntimeHistoryEntity: history.DowntimeHistoryEntity{DowntimeId: id}, HistoryTableMeta: history.HistoryTableMeta{ EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, }, DowntimeHistoryUpserter: history.DowntimeHistoryUpserter{ HasBeenCancelled: types.Bool{Bool: row.WasCancelled != 0, Valid: true}, CancelTime: cancelTime, }, TriggeredById: calcObjectId(env, row.TriggeredBy), EntryTime: convertTime(row.EntryTime, 0), Author: row.AuthorName, Comment: row.CommentData, IsFlexible: types.Bool{Bool: row.IsFixed == 0, Valid: true}, FlexibleDuration: flexibleDuration, ScheduledStartTime: scheduledStart, ScheduledEndTime: scheduledEnd, StartTime: startTime, EndTime: endTime, TriggerTime: triggerTime, }) h1 := &history.HistoryDowntime{ HistoryMeta: history.HistoryMeta{ HistoryEntity: history.HistoryEntity{Id: hashAny([]string{env, "downtime_start", row.Name})}, EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, EventType: "downtime_start", }, DowntimeHistoryId: id, StartTime: startTime, } h1.EventTime.History = h1 allHistory = append(allHistory, h1) if !actualEnd.Time().IsZero() { // remove h2 := &history.HistoryDowntime{ HistoryMeta: history.HistoryMeta{ HistoryEntity: history.HistoryEntity{Id: hashAny([]string{env, "downtime_end", row.Name})}, EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, EventType: "downtime_end", }, DowntimeHistoryId: id, StartTime: startTime, CancelTime: cancelTime, EndTime: endTime, HasBeenCancelled: types.Bool{Bool: row.WasCancelled != 0, Valid: true}, } h2.EventTime.History = h2 allHistory = append(allHistory, h2) } s := &history.SlaHistoryDowntime{ DowntimeHistoryEntity: history.DowntimeHistoryEntity{DowntimeId: id}, HistoryTableMeta: history.HistoryTableMeta{ EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, }, DowntimeStart: startTime, HasBeenCancelled: types.Bool{Bool: row.WasCancelled != 0, Valid: true}, CancelTime: cancelTime, EndTime: endTime, } s.DowntimeEnd.History = s sla = append(sla, s) } stages = []icingaDbOutputStage{ {insert: downtimeHistory}, {insert: allHistory}, {insert: sla}, } return } type flappingRow = struct { FlappinghistoryId uint64 EventTime sql.NullInt64 EventTimeUsec uint32 EventType uint16 PercentStateChange sql.NullFloat64 LowThreshold float64 HighThreshold float64 ObjecttypeId uint8 Name1 string Name2 string } func convertFlappingRows( env string, envId types.Binary, selectCache func(dest interface{}, query string, args ...interface{}), _ *sqlx.Tx, idoRows []flappingRow, ) (stages []icingaDbOutputStage, checkpoint any) { if len(idoRows) < 1 { return } var cached []struct { HistoryId uint64 EventTime int64 EventTimeUsec uint32 } selectCache( &cached, "SELECT history_id, event_time, event_time_usec FROM end_start_time WHERE history_id BETWEEN ? AND ?", idoRows[0].FlappinghistoryId, idoRows[len(idoRows)-1].FlappinghistoryId, ) // Needed for start time (see below). cachedById := make(map[uint64]types.UnixMilli, len(cached)) for _, c := range cached { cachedById[c.HistoryId] = convertTime(c.EventTime, c.EventTimeUsec) } var flappingHistory, flappingHistoryUpserts, allHistory []database.Entity for _, row := range idoRows { checkpoint = row.FlappinghistoryId if !row.EventTime.Valid { continue } ts := convertTime(row.EventTime.Int64, row.EventTimeUsec) // Needed for ID (see below). var start types.UnixMilli if row.EventType == 1001 { // end var ok bool start, ok = cachedById[row.FlappinghistoryId] if !ok { continue } } else { start = ts } name := row.Name1 if row.Name2 != "" { name += "!" + row.Name2 } typ := objectTypes[row.ObjecttypeId] hostId := calcObjectId(env, row.Name1) serviceId := calcServiceId(env, row.Name1, row.Name2) startTime := float64(start.Time().UnixMilli()) flappingHistoryId := hashAny([]interface{}{env, name, startTime}) if row.EventType == 1001 { // end // The start counterpart should already have been inserted. flappingHistoryUpserts = append(flappingHistoryUpserts, &history.FlappingHistory{ EntityWithoutChecksum: v1.EntityWithoutChecksum{ IdMeta: v1.IdMeta{Id: flappingHistoryId}, }, HistoryTableMeta: history.HistoryTableMeta{ EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, }, FlappingHistoryUpserter: history.FlappingHistoryUpserter{ EndTime: ts, PercentStateChangeEnd: types.Float{NullFloat64: row.PercentStateChange}, FlappingThresholdLow: float32(row.LowThreshold), FlappingThresholdHigh: float32(row.HighThreshold), }, StartTime: start, }) h := &history.HistoryFlapping{ HistoryMeta: history.HistoryMeta{ HistoryEntity: history.HistoryEntity{ Id: hashAny([]interface{}{env, "flapping_end", name, startTime}), }, EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, EventType: "flapping_end", }, FlappingHistoryId: flappingHistoryId, StartTime: start, EndTime: ts, } h.EventTime.History = h allHistory = append(allHistory, h) } else { flappingHistory = append(flappingHistory, &history.FlappingHistory{ EntityWithoutChecksum: v1.EntityWithoutChecksum{ IdMeta: v1.IdMeta{Id: flappingHistoryId}, }, HistoryTableMeta: history.HistoryTableMeta{ EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, }, FlappingHistoryUpserter: history.FlappingHistoryUpserter{ FlappingThresholdLow: float32(row.LowThreshold), FlappingThresholdHigh: float32(row.HighThreshold), }, StartTime: start, PercentStateChangeStart: types.Float{NullFloat64: row.PercentStateChange}, }) h := &history.HistoryFlapping{ HistoryMeta: history.HistoryMeta{ HistoryEntity: history.HistoryEntity{ Id: hashAny([]interface{}{env, "flapping_start", name, startTime}), }, EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, EventType: "flapping_start", }, FlappingHistoryId: flappingHistoryId, StartTime: start, } h.EventTime.History = h allHistory = append(allHistory, h) } } stages = []icingaDbOutputStage{ {insert: flappingHistory}, {upsert: flappingHistoryUpserts}, {insert: allHistory}, } return } type notificationRow = struct { NotificationId uint64 NotificationReason uint8 EndTime sql.NullInt64 EndTimeUsec uint32 State uint8 Output string LongOutput sql.NullString ContactsNotified uint16 ObjecttypeId uint8 Name1 string Name2 string } func convertNotificationRows( env string, envId types.Binary, selectCache func(dest interface{}, query string, args ...interface{}), ido *sqlx.Tx, idoRows []notificationRow, ) (stages []icingaDbOutputStage, checkpoint any) { if len(idoRows) < 1 { return } var cached []struct { HistoryId uint64 PreviousHardState uint8 } selectCache( &cached, "SELECT history_id, previous_hard_state FROM previous_hard_state WHERE history_id BETWEEN ? AND ?", idoRows[0].NotificationId, idoRows[len(idoRows)-1].NotificationId, ) cachedById := make(map[uint64]uint8, len(cached)) for _, c := range cached { cachedById[c.HistoryId] = c.PreviousHardState } var contacts []struct { NotificationId uint64 Name1 string } { var query = ido.Rebind( "SELECT c.notification_id, o.name1 FROM icinga_contactnotifications c " + "INNER JOIN icinga_objects o ON o.object_id=c.contact_object_id WHERE c.notification_id BETWEEN ? AND ?", ) err := ido.Select(&contacts, query, idoRows[0].NotificationId, idoRows[len(idoRows)-1].NotificationId) if err != nil { log.With("query", query).Fatalf("%+v", errors.Wrap(err, "can't perform query")) } } contactsById := map[uint64]map[string]struct{}{} for _, contact := range contacts { perId, ok := contactsById[contact.NotificationId] if !ok { perId = map[string]struct{}{} contactsById[contact.NotificationId] = perId } perId[contact.Name1] = struct{}{} } var notificationHistory, userNotificationHistory, allHistory []database.Entity for _, row := range idoRows { checkpoint = row.NotificationId if !row.EndTime.Valid { continue } previousHardState, ok := cachedById[row.NotificationId] if !ok { continue } // The IDO tracks only sent notifications, but not notification config objects, nor even their names. // We have to improvise. By the way we avoid unwanted collisions between synced and migrated data via "ID" // instead of "HOST[!SERVICE]!NOTIFICATION" (ok as this name won't be parsed, but only hashed) and between // migrated data itself via the history ID as object name, i.e. one "virtual object" per sent notification. name := strconv.FormatUint(row.NotificationId, 10) nt := convertNotificationType(row.NotificationReason, row.State) ntEnum, err := nt.Value() if err != nil { continue } ts := convertTime(row.EndTime.Int64, row.EndTimeUsec) tsMilli := float64(ts.Time().UnixMilli()) notificationHistoryId := hashAny([]interface{}{env, name, ntEnum, tsMilli}) id := hashAny([]interface{}{env, "notification", name, ntEnum, tsMilli}) typ := objectTypes[row.ObjecttypeId] hostId := calcObjectId(env, row.Name1) serviceId := calcServiceId(env, row.Name1, row.Name2) text := row.Output if row.LongOutput.Valid { text += "\n\n" + row.LongOutput.String } notificationHistory = append(notificationHistory, &history.NotificationHistory{ HistoryTableEntity: history.HistoryTableEntity{ EntityWithoutChecksum: v1.EntityWithoutChecksum{ IdMeta: v1.IdMeta{Id: notificationHistoryId}, }, }, HistoryTableMeta: history.HistoryTableMeta{ EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, }, NotificationId: calcObjectId(env, name), Type: nt, SendTime: ts, State: row.State, PreviousHardState: previousHardState, Text: types.MakeString(text), UsersNotified: row.ContactsNotified, }) allHistory = append(allHistory, &history.HistoryNotification{ HistoryMeta: history.HistoryMeta{ HistoryEntity: history.HistoryEntity{Id: id}, EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, EventType: "notification", }, NotificationHistoryId: notificationHistoryId, EventTime: ts, }) for contact := range contactsById[row.NotificationId] { userId := calcObjectId(env, contact) userNotificationHistory = append(userNotificationHistory, &history.UserNotificationHistory{ EntityWithoutChecksum: v1.EntityWithoutChecksum{ IdMeta: v1.IdMeta{ Id: utils.Checksum(append(append([]byte(nil), notificationHistoryId...), userId...)), }, }, EnvironmentMeta: v1.EnvironmentMeta{EnvironmentId: envId}, NotificationHistoryId: notificationHistoryId, UserId: userId, }) } } stages = []icingaDbOutputStage{ {insert: notificationHistory}, {insert: userNotificationHistory}, {insert: allHistory}, } return } // convertNotificationType maps IDO values[1] to Icinga DB ones[2]. // // [1]: https://github.com/Icinga/icinga2/blob/32c7f7730db154ba0dff5856a8985d125791c/lib/db_ido/dbevents.cpp#L1507-L1524 // [2]: https://github.com/Icinga/icingadb/blob/8f31ac143875498797725adb9bfacf3d4/pkg/types/notification_type.go#L53-L61 func convertNotificationType(notificationReason, state uint8) icingadbTypes.NotificationType { switch notificationReason { case 0: // state if state == 0 { return 64 // recovery } else { return 32 // problem } case 1: // acknowledgement return 16 case 2: // flapping start return 128 case 3: // flapping end return 256 case 5: // downtime start return 1 case 6: // downtime end return 2 case 7: // downtime removed return 4 case 8: // custom return 8 default: // bad notification type return 0 } } type stateRow = struct { StatehistoryId uint64 StateTime sql.NullInt64 StateTimeUsec uint32 State uint8 StateType uint8 CurrentCheckAttempt uint32 MaxCheckAttempts uint32 LastState uint8 LastHardState uint8 Output sql.NullString LongOutput sql.NullString CheckSource sql.NullString ObjecttypeId uint8 Name1 string Name2 string } func convertStateRows( env string, envId types.Binary, selectCache func(dest interface{}, query string, args ...interface{}), _ *sqlx.Tx, idoRows []stateRow, ) (stages []icingaDbOutputStage, checkpoint any) { if len(idoRows) < 1 { return } var cached []struct { HistoryId uint64 PreviousHardState uint8 } selectCache( &cached, "SELECT history_id, previous_hard_state FROM previous_hard_state WHERE history_id BETWEEN ? AND ?", idoRows[0].StatehistoryId, idoRows[len(idoRows)-1].StatehistoryId, ) cachedById := make(map[uint64]uint8, len(cached)) for _, c := range cached { cachedById[c.HistoryId] = c.PreviousHardState } var stateHistory, allHistory, sla []database.Entity for _, row := range idoRows { checkpoint = row.StatehistoryId if !row.StateTime.Valid { continue } previousHardState, ok := cachedById[row.StatehistoryId] if !ok { continue } name := strings.Join([]string{row.Name1, row.Name2}, "!") ts := convertTime(row.StateTime.Int64, row.StateTimeUsec) tsMilli := float64(ts.Time().UnixMilli()) stateHistoryId := hashAny([]interface{}{env, name, tsMilli}) id := hashAny([]interface{}{env, "state_change", name, tsMilli}) typ := objectTypes[row.ObjecttypeId] hostId := calcObjectId(env, row.Name1) serviceId := calcServiceId(env, row.Name1, row.Name2) stateHistory = append(stateHistory, &history.StateHistory{ HistoryTableEntity: history.HistoryTableEntity{ EntityWithoutChecksum: v1.EntityWithoutChecksum{ IdMeta: v1.IdMeta{Id: stateHistoryId}, }, }, HistoryTableMeta: history.HistoryTableMeta{ EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, }, EventTime: ts, StateType: icingadbTypes.StateType(row.StateType), SoftState: row.State, HardState: row.LastHardState, PreviousSoftState: row.LastState, PreviousHardState: previousHardState, CheckAttempt: row.CurrentCheckAttempt, Output: types.String{NullString: row.Output}, LongOutput: types.String{NullString: row.LongOutput}, MaxCheckAttempts: row.MaxCheckAttempts, CheckSource: types.String{NullString: row.CheckSource}, }) allHistory = append(allHistory, &history.HistoryState{ HistoryMeta: history.HistoryMeta{ HistoryEntity: history.HistoryEntity{Id: id}, EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, EventType: "state_change", }, StateHistoryId: stateHistoryId, EventTime: ts, }) if icingadbTypes.StateType(row.StateType) == icingadbTypes.StateHard { // only hard state changes are relevant for SLA history, discard all others sla = append(sla, &history.SlaHistoryState{ HistoryTableEntity: history.HistoryTableEntity{ EntityWithoutChecksum: v1.EntityWithoutChecksum{ IdMeta: v1.IdMeta{Id: stateHistoryId}, }, }, HistoryTableMeta: history.HistoryTableMeta{ EnvironmentId: envId, ObjectType: typ, HostId: hostId, ServiceId: serviceId, }, EventTime: ts, StateType: icingadbTypes.StateType(row.StateType), HardState: row.LastHardState, PreviousHardState: previousHardState, }) } } stages = []icingaDbOutputStage{ {insert: stateHistory}, {insert: allHistory}, {insert: sla}, } return } icingadb-1.3.0/cmd/icingadb-migrate/embed/000077500000000000000000000000001477347223700203005ustar00rootroot00000000000000icingadb-1.3.0/cmd/icingadb-migrate/embed/comment_query.sql000066400000000000000000000015361477347223700237150ustar00rootroot00000000000000SELECT ch.commenthistory_id, UNIX_TIMESTAMP(ch.entry_time) AS entry_time, ch.entry_time_usec, ch.entry_type, ch.author_name, ch.comment_data, ch.is_persistent, COALESCE(UNIX_TIMESTAMP(ch.expiration_time), 0) AS expiration_time, COALESCE(UNIX_TIMESTAMP(ch.deletion_time), 0) AS deletion_time, ch.deletion_time_usec, COALESCE(ch.name, CONCAT(o.name1, '!', COALESCE(o.name2, ''), '!', ch.commenthistory_id, '-', ch.object_id)) AS name, o.objecttype_id, o.name1, COALESCE(o.name2, '') AS name2 FROM icinga_commenthistory ch USE INDEX (PRIMARY) INNER JOIN icinga_objects o ON o.object_id=ch.object_id WHERE ch.commenthistory_id BETWEEN :fromid AND :toid AND ch.commenthistory_id > :checkpoint -- where we were interrupted ORDER BY ch.commenthistory_id -- this way we know what has already been migrated from just the last row's ID LIMIT :bulk icingadb-1.3.0/cmd/icingadb-migrate/embed/downtime_query.sql000066400000000000000000000023441477347223700240770ustar00rootroot00000000000000SELECT dh.downtimehistory_id, UNIX_TIMESTAMP(dh.entry_time) AS entry_time, dh.author_name, dh.comment_data, dh.is_fixed, dh.duration, UNIX_TIMESTAMP(dh.scheduled_start_time) AS scheduled_start_time, COALESCE(UNIX_TIMESTAMP(dh.scheduled_end_time), 0) AS scheduled_end_time, dh.was_started, COALESCE(UNIX_TIMESTAMP(dh.actual_start_time), 0) AS actual_start_time, dh.actual_start_time_usec, COALESCE(UNIX_TIMESTAMP(dh.actual_end_time), 0) AS actual_end_time, dh.actual_end_time_usec, dh.was_cancelled, COALESCE(UNIX_TIMESTAMP(dh.trigger_time), 0) AS trigger_time, COALESCE(dh.name, CONCAT(o.name1, '!', COALESCE(o.name2, ''), '!', dh.downtimehistory_id, '-', dh.object_id)) AS name, o.objecttype_id, o.name1, COALESCE(o.name2, '') AS name2, COALESCE(sd.name, '') AS triggered_by FROM icinga_downtimehistory dh USE INDEX (PRIMARY) INNER JOIN icinga_objects o ON o.object_id=dh.object_id LEFT JOIN icinga_scheduleddowntime sd ON sd.scheduleddowntime_id=dh.triggered_by_id WHERE dh.downtimehistory_id BETWEEN :fromid AND :toid AND dh.downtimehistory_id > :checkpoint -- where we were interrupted ORDER BY dh.downtimehistory_id -- this way we know what has already been migrated from just the last row's ID LIMIT :bulk icingadb-1.3.0/cmd/icingadb-migrate/embed/event_time_cache_schema.sql000066400000000000000000000010111477347223700256140ustar00rootroot00000000000000PRAGMA main.auto_vacuum = 1; -- Icinga DB's flapping_history#start_time per flapping_end row (IDO's icinga_flappinghistory#flappinghistory_id). CREATE TABLE IF NOT EXISTS end_start_time ( history_id INT PRIMARY KEY, event_time INT NOT NULL, event_time_usec INT NOT NULL ); -- Helper table, the last start_time per icinga_statehistory#object_id. CREATE TABLE IF NOT EXISTS last_start_time ( object_id INT PRIMARY KEY, event_time INT NOT NULL, event_time_usec INT NOT NULL ); icingadb-1.3.0/cmd/icingadb-migrate/embed/flapping_query.sql000066400000000000000000000011311477347223700240420ustar00rootroot00000000000000SELECT fh.flappinghistory_id, UNIX_TIMESTAMP(fh.event_time) AS event_time, fh.event_time_usec, fh.event_type, fh.percent_state_change, fh.low_threshold, fh.high_threshold, o.objecttype_id, o.name1, COALESCE(o.name2, '') AS name2 FROM icinga_flappinghistory fh USE INDEX (PRIMARY) INNER JOIN icinga_objects o ON o.object_id=fh.object_id WHERE fh.flappinghistory_id BETWEEN :fromid AND :toid AND fh.flappinghistory_id > :checkpoint -- where we were interrupted ORDER BY fh.flappinghistory_id -- this way we know what has already been migrated from just the last row's ID LIMIT :bulk icingadb-1.3.0/cmd/icingadb-migrate/embed/ido_migration_progress_schema.sql000066400000000000000000000006401477347223700271110ustar00rootroot00000000000000CREATE TABLE IF NOT EXISTS ido_migration_progress ( environment_id CHAR(40) NOT NULL, -- Hex SHA1. Rationale: CHAR(40) is not RDBMS-specific history_type VARCHAR(63) NOT NULL, from_ts BIGINT NOT NULL, to_ts BIGINT NOT NULL, last_ido_id BIGINT NOT NULL, CONSTRAINT pk_ido_migration_progress PRIMARY KEY (environment_id, history_type, from_ts, to_ts) ); icingadb-1.3.0/cmd/icingadb-migrate/embed/notification_query.sql000066400000000000000000000011761477347223700247410ustar00rootroot00000000000000SELECT n.notification_id, n.notification_reason, UNIX_TIMESTAMP(n.end_time) AS end_time, n.end_time_usec, n.state, COALESCE(n.output, '') AS output, n.long_output, n.contacts_notified, o.objecttype_id, o.name1, COALESCE(o.name2, '') AS name2 FROM icinga_notifications n USE INDEX (PRIMARY) INNER JOIN icinga_objects o ON o.object_id=n.object_id WHERE n.notification_id BETWEEN :fromid AND :toid AND n.notification_id <= :cache_limit AND n.notification_id > :checkpoint -- where we were interrupted ORDER BY n.notification_id -- this way we know what has already been migrated from just the last row's ID LIMIT :bulk icingadb-1.3.0/cmd/icingadb-migrate/embed/previous_hard_state_cache_schema.sql000066400000000000000000000014331477347223700275370ustar00rootroot00000000000000PRAGMA main.auto_vacuum = 1; -- Icinga DB's state_history#previous_hard_state per IDO's icinga_statehistory#statehistory_id. CREATE TABLE IF NOT EXISTS previous_hard_state ( history_id INT PRIMARY KEY, previous_hard_state INT NOT NULL ); -- Helper table, the current last_hard_state per icinga_statehistory#object_id. CREATE TABLE IF NOT EXISTS next_hard_state ( object_id INT PRIMARY KEY, next_hard_state INT NOT NULL ); -- Helper table for stashing icinga_statehistory#statehistory_id until last_hard_state changes. CREATE TABLE IF NOT EXISTS next_ids ( object_id INT NOT NULL, history_id INT NOT NULL ); CREATE INDEX IF NOT EXISTS next_ids_object_id ON next_ids (object_id); CREATE INDEX IF NOT EXISTS next_ids_history_id ON next_ids (history_id); icingadb-1.3.0/cmd/icingadb-migrate/embed/state_query.sql000066400000000000000000000013071477347223700233670ustar00rootroot00000000000000SELECT sh.statehistory_id, UNIX_TIMESTAMP(sh.state_time) AS state_time, sh.state_time_usec, sh.state, sh.state_type, sh.current_check_attempt, sh.max_check_attempts, sh.last_state, sh.last_hard_state, sh.output, sh.long_output, sh.check_source, o.objecttype_id, o.name1, COALESCE(o.name2, '') AS name2 FROM icinga_statehistory sh USE INDEX (PRIMARY) INNER JOIN icinga_objects o ON o.object_id=sh.object_id WHERE sh.statehistory_id BETWEEN :fromid AND :toid AND sh.statehistory_id <= :cache_limit AND sh.statehistory_id > :checkpoint -- where we were interrupted ORDER BY sh.statehistory_id -- this way we know what has already been migrated from just the last row's ID LIMIT :bulk icingadb-1.3.0/cmd/icingadb-migrate/main.go000066400000000000000000000350061477347223700205030ustar00rootroot00000000000000package main import ( "context" "crypto/sha1" // #nosec G505 -- used as a non-cryptographic hash function to hash IDs "database/sql" _ "embed" "encoding/hex" "fmt" "github.com/creasty/defaults" "github.com/goccy/go-yaml" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/logging" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icinga-go-library/utils" "github.com/icinga/icingadb/pkg/icingadb" "github.com/jessevdk/go-flags" "github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx/reflectx" _ "github.com/mattn/go-sqlite3" "github.com/pkg/errors" "github.com/vbauerster/mpb/v6" "go.uber.org/zap" "golang.org/x/sync/errgroup" "math" "os" "path" "path/filepath" "regexp" "strings" "time" ) // Flags defines the CLI flags. type Flags struct { // Config is the path to the config file. Config string `short:"c" long:"config" description:"path to config file" required:"true"` // Cache is a (not necessarily yet existing) directory for caching. Cache string `short:"t" long:"cache" description:"path for caching" required:"true"` } // Config defines the YAML config structure. type Config struct { IDO struct { database.Config `yaml:"-,inline"` From int32 `yaml:"from"` To int32 `yaml:"to" default:"2147483647"` } `yaml:"ido"` IcingaDB database.Config `yaml:"icingadb"` // Icinga2 specifies information the IDO doesn't provide. Icinga2 struct { // Env specifies the environment ID, hex. Env string `yaml:"env"` } `yaml:"icinga2"` } // main validates the CLI, parses the config and migrates history from IDO to Icinga DB (see comments below). // Most of the called functions exit the whole program by themselves on non-recoverable errors. func main() { f := &Flags{} if _, err := flags.NewParser(f, flags.Default).Parse(); err != nil { os.Exit(2) } c, ex := parseConfig(f) if c == nil { os.Exit(ex) } envId, err := hex.DecodeString(c.Icinga2.Env) if err != nil { _, _ = fmt.Fprintf(os.Stderr, "bad env ID: %s\n", err.Error()) os.Exit(2) } if len(envId) != sha1.Size { _, _ = fmt.Fprintf(os.Stderr, "bad env ID: must be %d bytes long, has %d bytes\n", sha1.Size, len(envId)) os.Exit(2) } defer func() { _ = log.Sync() }() log.Info("Starting IDO to Icinga DB history migration") ido, idb := connectAll(c) if err := icingadb.CheckSchema(context.Background(), idb); err != nil { log.Fatalf("%+v", err) } // Start repeatable-read-isolated transactions (consistent SELECTs) // not to have to care for IDO data changes during migration. startIdoTx(ido) // Prepare the directory structure the following fillCache() will need later. mkCache(f, c, idb.Mapper) log.Info("Computing progress") // Convert Config#IDO.From and .To to IDs to restrict data by PK. computeIdRange(c) // computeProgress figures out which data has already been migrated // not to start from the beginning every time in the following migrate(). computeProgress(c, idb, envId) // On rationale read buildEventTimeCache() and buildPreviousHardStateCache() docs. log.Info("Filling cache") fillCache() log.Info("Actually migrating") migrate(c, idb, envId) log.Info("Cleaning up cache") cleanupCache(f) } // parseConfig validates the f.Config file and returns the config and -1 or - on failure - nil and an exit code. func parseConfig(f *Flags) (_ *Config, exit int) { cf, err := os.Open(f.Config) if err != nil { _, _ = fmt.Fprintf(os.Stderr, "can't open config file: %s\n", err.Error()) return nil, 2 } defer func() { _ = cf.Close() }() c := &Config{} if err := defaults.Set(c); err != nil { _, _ = fmt.Fprintf(os.Stderr, "can't set config defaults: %s\n", err.Error()) return nil, 2 } if err := yaml.NewDecoder(cf, yaml.DisallowUnknownField()).Decode(c); err != nil { _, _ = fmt.Fprintf(os.Stderr, "can't parse config file: %s\n", err.Error()) return nil, 2 } return c, -1 } var nonWords = regexp.MustCompile(`\W+`) // mkCache ensures /.sqlite3 files are present and contain their schema // and initializes typesToMigrate[*].cache. (On non-recoverable errors the whole program exits.) func mkCache(f *Flags, c *Config, mapper *reflectx.Mapper) { log.Info("Preparing cache") if err := os.MkdirAll(f.Cache, 0700); err != nil { log.With("dir", f.Cache).Fatalf("%+v", errors.Wrap(err, "can't create directory")) } typesToMigrate.forEach(func(ht *historyType) { if ht.cacheSchema == "" { return } file := path.Join(f.Cache, fmt.Sprintf( "%s_%d-%d.sqlite3", nonWords.ReplaceAllLiteralString(ht.name, "_"), c.IDO.From, c.IDO.To, )) var err error ht.cache, err = sqlx.Open("sqlite3", "file:"+file) if err != nil { log.With("file", file).Fatalf("%+v", errors.Wrap(err, "can't open SQLite database")) } ht.cacheFile = file ht.cache.Mapper = mapper if _, err := ht.cache.Exec(ht.cacheSchema); err != nil { log.With("file", file, "ddl", ht.cacheSchema). Fatalf("%+v", errors.Wrap(err, "can't import schema into SQLite database")) } }) } // connectAll connects to ido and idb (Icinga DB) as c specifies. (On non-recoverable errors the whole program exits.) func connectAll(c *Config) (ido, idb *database.DB) { log.Info("Connecting to databases") eg, _ := errgroup.WithContext(context.Background()) eg.Go(func() error { ido = connect("IDO", &c.IDO.Config) return nil }) eg.Go(func() error { idb = connect("Icinga DB", &c.IcingaDB) return nil }) _ = eg.Wait() return } // connect connects to which DB as cfg specifies. (On non-recoverable errors the whole program exits.) func connect(which string, cfg *database.Config) *database.DB { db, err := database.NewDbFromConfig( cfg, logging.NewLogger(zap.NewNop().Sugar(), 20*time.Second), database.RetryConnectorCallbacks{}, ) if err != nil { log.With("backend", which).Fatalf("%+v", errors.Wrap(err, "can't connect to database")) } if err := db.Ping(); err != nil { log.With("backend", which).Fatalf("%+v", errors.Wrap(err, "can't connect to database")) } return db } // startIdoTx initializes typesToMigrate[*].snapshot with new repeatable-read-isolated ido transactions. // (On non-recoverable errors the whole program exits.) func startIdoTx(ido *database.DB) { typesToMigrate.forEach(func(ht *historyType) { tx, err := ido.BeginTxx(context.Background(), &sql.TxOptions{Isolation: sql.LevelRepeatableRead}) if err != nil { log.Fatalf("%+v", errors.Wrap(err, "can't begin snapshot transaction")) } ht.snapshot = tx }) } // computeIdRange initializes typesToMigrate[*].fromId and typesToMigrate[*].toId. // (On non-recoverable errors the whole program exits.) func computeIdRange(c *Config) { typesToMigrate.forEach(func(ht *historyType) { getBorderId := func(id *uint64, timeColumns []string, compOperator string, borderTime int32, sortOrder string) { deZeroFied := make([]string, 0, len(timeColumns)) for _, column := range timeColumns { deZeroFied = append(deZeroFied, fmt.Sprintf( "CASE WHEN %[1]s < '1970-01-03 00:00:00' THEN NULL ELSE %[1]s END", column, )) } var timeExpr string if len(deZeroFied) > 1 { timeExpr = "COALESCE(" + strings.Join(deZeroFied, ",") + ")" } else { timeExpr = deZeroFied[0] } query := ht.snapshot.Rebind( "SELECT " + ht.idoIdColumn + " FROM " + ht.idoTable + " WHERE " + timeExpr + " " + compOperator + " FROM_UNIXTIME(?) ORDER BY " + ht.idoIdColumn + " " + sortOrder + " LIMIT 1", ) switch err := ht.snapshot.Get(id, query, borderTime); err { case nil, sql.ErrNoRows: default: log.With("backend", "IDO", "query", query, "args", []any{borderTime}). Fatalf("%+v", errors.Wrap(err, "can't perform query")) } } ht.fromId = math.MaxInt64 getBorderId(&ht.fromId, ht.idoEndColumns, ">=", c.IDO.From, "ASC") getBorderId(&ht.toId, ht.idoStartColumns, "<=", c.IDO.To, "DESC") }) } //go:embed embed/ido_migration_progress_schema.sql var idoMigrationProgressSchema string // computeProgress initializes typesToMigrate[*].lastId, typesToMigrate[*].total and typesToMigrate[*].done. // (On non-recoverable errors the whole program exits.) func computeProgress(c *Config, idb *database.DB, envId []byte) { if _, err := idb.Exec(idoMigrationProgressSchema); err != nil { log.Fatalf("%+v", errors.Wrap(err, "can't create table ido_migration_progress")) } envIdHex := hex.EncodeToString(envId) typesToMigrate.forEach(func(ht *historyType) { var query = idb.Rebind( "SELECT last_ido_id FROM ido_migration_progress" + " WHERE environment_id=? AND history_type=? AND from_ts=? AND to_ts=?", ) args := []any{envIdHex, ht.name, c.IDO.From, c.IDO.To} if err := idb.Get(&ht.lastId, query, args...); err != nil && err != sql.ErrNoRows { log.With("backend", "Icinga DB", "query", query, "args", args). Fatalf("%+v", errors.Wrap(err, "can't perform query")) } }) typesToMigrate.forEach(func(ht *historyType) { if ht.cacheFiller != nil { err := ht.snapshot.Get( &ht.cacheTotal, ht.snapshot.Rebind( // For actual migration icinga_objects will be joined anyway, // so it makes no sense to take vanished objects into account. "SELECT COUNT(*) FROM "+ht.idoTable+ " xh INNER JOIN icinga_objects o ON o.object_id=xh.object_id WHERE xh."+ht.idoIdColumn+" <= ?", ), ht.toId, ) if err != nil { log.Fatalf("%+v", errors.Wrap(err, "can't count query")) } } }) typesToMigrate.forEach(func(ht *historyType) { var rows []struct { Migrated uint8 Cnt int64 } err := ht.snapshot.Select( &rows, ht.snapshot.Rebind( // For actual migration icinga_objects will be joined anyway, // so it makes no sense to take vanished objects into account. "SELECT CASE WHEN xh."+ht.idoIdColumn+"<=? THEN 1 ELSE 0 END migrated, COUNT(*) cnt FROM "+ ht.idoTable+" xh INNER JOIN icinga_objects o ON o.object_id=xh.object_id WHERE xh."+ ht.idoIdColumn+" BETWEEN ? AND ? GROUP BY migrated", ), ht.lastId, ht.fromId, ht.toId, ) if err != nil { log.Fatalf("%+v", errors.Wrap(err, "can't count query")) } for _, row := range rows { ht.total += row.Cnt if row.Migrated == 1 { ht.done = row.Cnt } } log.Infow("Counted migrated IDO events", "type", ht.name, "migrated", ht.done, "total", ht.total) }) } // fillCache fills /.sqlite3 (actually typesToMigrate[*].cacheFiller does). func fillCache() { progress := mpb.New() for _, ht := range typesToMigrate { if ht.cacheFiller != nil { ht.setupBar(progress, ht.cacheTotal) } } typesToMigrate.forEach(func(ht *historyType) { if ht.cacheFiller != nil { ht.cacheFiller(ht) } }) progress.Wait() } // migrate does the actual migration. func migrate(c *Config, idb *database.DB, envId []byte) { progress := mpb.New() for _, ht := range typesToMigrate { ht.setupBar(progress, ht.total) } typesToMigrate.forEach(func(ht *historyType) { ht.migrate(c, idb, envId, ht) }) progress.Wait() } // migrate does the actual migration for one history type. func migrateOneType[IdoRow any]( c *Config, idb *database.DB, envId []byte, ht *historyType, convertRows func(env string, envId types.Binary, selectCache func(dest interface{}, query string, args ...interface{}), ido *sqlx.Tx, idoRows []IdoRow) (stages []icingaDbOutputStage, checkpoint any), ) { var lastQuery string var lastStmt *sqlx.Stmt defer func() { if lastStmt != nil { _ = lastStmt.Close() } }() selectCache := func(dest interface{}, query string, args ...interface{}) { // Prepare new one, if old one doesn't fit anymore. if query != lastQuery { if lastStmt != nil { _ = lastStmt.Close() } var err error lastStmt, err = ht.cache.Preparex(query) if err != nil { log.With("backend", "cache", "query", query). Fatalf("%+v", errors.Wrap(err, "can't prepare query")) } lastQuery = query } if err := lastStmt.Select(dest, args...); err != nil { log.With("backend", "cache", "query", query, "args", args). Fatalf("%+v", errors.Wrap(err, "can't perform query")) } } var args map[string]interface{} // For the case that the cache was older that the IDO, // but ht.cacheFiller couldn't update it, limit (WHERE) our source data set. if ht.cacheLimitQuery != "" { var limit sql.NullInt64 cacheGet(ht.cache, &limit, ht.cacheLimitQuery) args = map[string]interface{}{"cache_limit": limit.Int64} } upsertProgress, _ := idb.BuildUpsertStmt(&IdoMigrationProgress{}) envIdHex := hex.EncodeToString(envId) ht.bar.SetCurrent(ht.done) // Stream IDO rows, ... sliceIdoHistory( ht, ht.migrationQuery, args, ht.lastId, func(idoRows []IdoRow) (checkpoint interface{}) { // ... convert them, ... stages, lastIdoId := convertRows(c.Icinga2.Env, envId, selectCache, ht.snapshot, idoRows) // ... and insert them: for _, stage := range stages { if len(stage.insert) > 0 { ch := utils.ChanFromSlice(stage.insert) if err := idb.CreateIgnoreStreamed(context.Background(), ch); err != nil { log.With("backend", "Icinga DB", "op", "INSERT IGNORE", "table", database.TableName(stage.insert[0])). Fatalf("%+v", errors.Wrap(err, "can't perform DML")) } } if len(stage.upsert) > 0 { ch := utils.ChanFromSlice(stage.upsert) if err := idb.UpsertStreamed(context.Background(), ch); err != nil { log.With("backend", "Icinga DB", "op", "UPSERT", "table", database.TableName(stage.upsert[0])). Fatalf("%+v", errors.Wrap(err, "can't perform DML")) } } } if lastIdoId != nil { args := map[string]interface{}{"history_type": ht.name, "last_ido_id": lastIdoId} _, err := idb.NamedExec(upsertProgress, &IdoMigrationProgress{ IdoMigrationProgressUpserter{lastIdoId}, envIdHex, ht.name, c.IDO.From, c.IDO.To, }) if err != nil { log.With("backend", "Icinga DB", "dml", upsertProgress, "args", args). Fatalf("%+v", errors.Wrap(err, "can't perform DML")) } } ht.bar.IncrBy(len(idoRows)) return lastIdoId }, ) ht.bar.SetTotal(ht.bar.Current(), true) } // cleanupCache removes /.sqlite3 files. func cleanupCache(f *Flags) { typesToMigrate.forEach(func(ht *historyType) { if ht.cacheFile != "" { if err := ht.cache.Close(); err != nil { log.With("file", ht.cacheFile).Warnf("%+v", errors.Wrap(err, "can't close SQLite database")) } } }) if matches, err := filepath.Glob(path.Join(f.Cache, "*.sqlite3")); err == nil { for _, match := range matches { if err := os.Remove(match); err != nil { log.With("file", match).Warnf("%+v", errors.Wrap(err, "can't remove SQLite database")) } } } else { log.With("dir", f.Cache).Warnf("%+v", errors.Wrap(err, "can't list SQLite databases")) } } icingadb-1.3.0/cmd/icingadb-migrate/misc.go000066400000000000000000000226701477347223700205150ustar00rootroot00000000000000package main import ( "context" "crypto/sha1" // #nosec G505 -- used as a non-cryptographic hash function to hash IDs "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/objectpacker" "github.com/icinga/icinga-go-library/types" "github.com/jmoiron/sqlx" "github.com/pkg/errors" "github.com/vbauerster/mpb/v6" "github.com/vbauerster/mpb/v6/decor" "go.uber.org/zap" "golang.org/x/sync/errgroup" "strings" "time" ) type IdoMigrationProgressUpserter struct { LastIdoId any `json:"last_ido_id"` } // Upsert implements the contracts.Upserter interface. func (impu *IdoMigrationProgressUpserter) Upsert() interface{} { return impu } type IdoMigrationProgress struct { IdoMigrationProgressUpserter `json:",inline"` EnvironmentId string `json:"environment_id"` HistoryType string `json:"history_type"` FromTs int32 `json:"from_ts"` ToTs int32 `json:"to_ts"` } // Assert interface compliance. var ( _ database.Upserter = (*IdoMigrationProgressUpserter)(nil) _ database.Upserter = (*IdoMigrationProgress)(nil) ) // log is the root logger. var log = func() *zap.SugaredLogger { logger, err := zap.NewDevelopmentConfig().Build() if err != nil { panic(err) } return logger.Sugar() }() // objectTypes maps IDO values to Icinga DB ones. var objectTypes = map[uint8]string{1: "host", 2: "service"} // hashAny combines objectpacker.PackAny and SHA1 hashing. func hashAny(in interface{}) []byte { hash := sha1.New() // #nosec G401 -- used as a non-cryptographic hash function to hash IDs if err := objectpacker.PackAny(in, hash); err != nil { panic(err) } return hash.Sum(nil) } // convertTime converts *nix timestamps from the IDO for Icinga DB. func convertTime(ts int64, tsUs uint32) types.UnixMilli { if ts == 0 && tsUs == 0 { return types.UnixMilli{} } return types.UnixMilli(time.Unix(ts, int64(tsUs)*int64(time.Microsecond/time.Nanosecond))) } // calcObjectId calculates the ID of the config object named name1 for Icinga DB. func calcObjectId(env, name1 string) []byte { if name1 == "" { return nil } return hashAny([2]string{env, name1}) } // calcServiceId calculates the ID of the service name2 of the host name1 for Icinga DB. func calcServiceId(env, name1, name2 string) []byte { if name2 == "" { return nil } return hashAny([2]string{env, name1 + "!" + name2}) } // sliceIdoHistory performs query with args+fromid,toid,checkpoint,bulk on ht.snapshot // and passes the results to onRows until either an empty result set or onRows() returns nil. // Rationale: split the likely large result set of a query by adding a WHERE condition and a LIMIT, // both with :named placeholders (:checkpoint, :bulk). // checkpoint is the initial value for the WHERE condition, onRows() returns follow-up ones. // (On non-recoverable errors the whole program exits.) func sliceIdoHistory[Row any]( ht *historyType, query string, args map[string]any, checkpoint interface{}, onRows func([]Row) (checkpoint interface{}), ) { if args == nil { args = map[string]interface{}{} } args["fromid"] = ht.fromId args["toid"] = ht.toId args["checkpoint"] = checkpoint args["bulk"] = 20000 if ht.snapshot.DriverName() != database.MySQL { query = strings.ReplaceAll(query, " USE INDEX (PRIMARY)", "") } for { // TODO: use Tx#SelectNamed() one nice day (https://github.com/jmoiron/sqlx/issues/779) stmt, err := ht.snapshot.PrepareNamed(query) if err != nil { log.With("query", query).Fatalf("%+v", errors.Wrap(err, "can't prepare query")) } var rows []Row if err := stmt.Select(&rows, args); err != nil { log.With("query", query).Fatalf("%+v", errors.Wrap(err, "can't perform query")) } _ = stmt.Close() if len(rows) < 1 { break } if checkpoint = onRows(rows); checkpoint == nil { break } args["checkpoint"] = checkpoint } } type progressBar struct { *mpb.Bar lastUpdate time.Time } // IncrBy does pb.Bar.DecoratorEwmaUpdate() automatically. func (pb *progressBar) IncrBy(n int) { pb.Bar.IncrBy(n) now := time.Now() if !pb.lastUpdate.IsZero() { pb.Bar.DecoratorEwmaUpdate(now.Sub(pb.lastUpdate)) } pb.lastUpdate = now } // historyType specifies a history data type. type historyType struct { // name is a human-readable common name. name string // idoTable specifies the source table. idoTable string // idoIdColumn specifies idoTable's primary key. idoIdColumn string // idoStartColumns specifies idoTable's event start time locations. (First non-NULL is used.) idoStartColumns []string // idoEndColumns specifies idoTable's event end time locations. (First non-NULL is used.) idoEndColumns []string // cacheSchema specifies .sqlite3's structure. cacheSchema string // cacheFiller fills cache from snapshot. cacheFiller func(*historyType) // cacheLimitQuery rationale: see migrate(). cacheLimitQuery string // migrationQuery SELECTs source data for actual migration. migrationQuery string // migrate does the actual migration. migrate func(c *Config, idb *database.DB, envId []byte, ht *historyType) // cacheFile locates .sqlite3. cacheFile string // cache represents . cache *sqlx.DB // snapshot represents the data source. snapshot *sqlx.Tx // fromId is the first IDO row ID to migrate. fromId uint64 // toId is the last IDO row ID to migrate. toId uint64 // total summarizes the source data. total int64 // cacheTotal summarizes the cache source data. cacheTotal int64 // done summarizes the migrated data. done int64 // bar represents the current progress bar. bar *progressBar // lastId is the last already migrated ID. lastId uint64 } // setupBar (re-)initializes ht.bar. func (ht *historyType) setupBar(progress *mpb.Progress, total int64) { ht.bar = &progressBar{Bar: progress.AddBar( total, mpb.BarFillerClearOnComplete(), mpb.PrependDecorators( decor.Name(ht.name, decor.WC{W: len(ht.name) + 1, C: decor.DidentRight}), decor.Percentage(decor.WC{W: 5}), ), mpb.AppendDecorators( decor.EwmaETA(decor.ET_STYLE_GO, 0, decor.WC{W: 4}), decor.Name(" "), decor.EwmaSpeed(0, "%.0f/s", 0, decor.WC{W: 4}), ), )} } type historyTypes []*historyType // forEach performs f per hts in parallel. func (hts historyTypes) forEach(f func(*historyType)) { eg, _ := errgroup.WithContext(context.Background()) for _, ht := range hts { ht := ht eg.Go(func() error { f(ht) return nil }) } _ = eg.Wait() } type icingaDbOutputStage struct { insert, upsert []database.Entity } var typesToMigrate = historyTypes{ { name: "ack & comment", idoTable: "icinga_commenthistory", idoIdColumn: "commenthistory_id", idoStartColumns: []string{"entry_time"}, // Manual deletion time wins vs. time of expiration which never happens due to manual deletion. idoEndColumns: []string{"deletion_time", "expiration_time"}, migrationQuery: commentMigrationQuery, migrate: func(c *Config, idb *database.DB, envId []byte, ht *historyType) { migrateOneType(c, idb, envId, ht, convertCommentRows) }, }, { name: "downtime", idoTable: "icinga_downtimehistory", idoIdColumn: "downtimehistory_id", // Fall back to scheduled time if actual time is missing. idoStartColumns: []string{"actual_start_time", "scheduled_start_time"}, idoEndColumns: []string{"actual_end_time", "scheduled_end_time"}, migrationQuery: downtimeMigrationQuery, migrate: func(c *Config, idb *database.DB, envId []byte, ht *historyType) { migrateOneType(c, idb, envId, ht, convertDowntimeRows) }, }, { name: "flapping", idoTable: "icinga_flappinghistory", idoIdColumn: "flappinghistory_id", idoStartColumns: []string{"event_time"}, idoEndColumns: []string{"event_time"}, cacheSchema: eventTimeCacheSchema, cacheFiller: func(ht *historyType) { buildEventTimeCache(ht, []string{ "xh.flappinghistory_id id", "UNIX_TIMESTAMP(xh.event_time) event_time", "xh.event_time_usec", "1001-xh.event_type event_is_start", "xh.object_id", }) }, migrationQuery: flappingMigrationQuery, migrate: func(c *Config, idb *database.DB, envId []byte, ht *historyType) { migrateOneType(c, idb, envId, ht, convertFlappingRows) }, }, { name: "notification", idoTable: "icinga_notifications", idoIdColumn: "notification_id", idoStartColumns: []string{"start_time"}, idoEndColumns: []string{"end_time"}, cacheSchema: previousHardStateCacheSchema, cacheFiller: func(ht *historyType) { buildPreviousHardStateCache(ht, []string{ "xh.notification_id id", "xh.object_id", "xh.state last_hard_state", }) }, cacheLimitQuery: "SELECT MAX(history_id) FROM previous_hard_state", migrationQuery: notificationMigrationQuery, migrate: func(c *Config, idb *database.DB, envId []byte, ht *historyType) { migrateOneType(c, idb, envId, ht, convertNotificationRows) }, }, { name: "state", idoTable: "icinga_statehistory", idoIdColumn: "statehistory_id", idoStartColumns: []string{"state_time"}, idoEndColumns: []string{"state_time"}, cacheSchema: previousHardStateCacheSchema, cacheFiller: func(ht *historyType) { buildPreviousHardStateCache(ht, []string{"xh.statehistory_id id", "xh.object_id", "xh.last_hard_state"}) }, cacheLimitQuery: "SELECT MAX(history_id) FROM previous_hard_state", migrationQuery: stateMigrationQuery, migrate: func(c *Config, idb *database.DB, envId []byte, ht *historyType) { migrateOneType(c, idb, envId, ht, convertStateRows) }, }, } icingadb-1.3.0/cmd/icingadb/000077500000000000000000000000001477347223700155765ustar00rootroot00000000000000icingadb-1.3.0/cmd/icingadb/main.go000066400000000000000000000304371477347223700170600ustar00rootroot00000000000000package main import ( "context" "fmt" "github.com/icinga/icinga-go-library/logging" "github.com/icinga/icinga-go-library/redis" "github.com/icinga/icinga-go-library/utils" "github.com/icinga/icingadb/internal" "github.com/icinga/icingadb/internal/command" "github.com/icinga/icingadb/pkg/common" "github.com/icinga/icingadb/pkg/icingadb" "github.com/icinga/icingadb/pkg/icingadb/history" "github.com/icinga/icingadb/pkg/icingadb/overdue" v1 "github.com/icinga/icingadb/pkg/icingadb/v1" "github.com/icinga/icingadb/pkg/icingaredis" "github.com/icinga/icingadb/pkg/icingaredis/telemetry" "github.com/okzk/sdnotify" "github.com/pkg/errors" "go.uber.org/zap" "golang.org/x/sync/errgroup" "os" "os/signal" "sync" "sync/atomic" "syscall" "time" ) const ( ExitSuccess = 0 ExitFailure = 1 expectedRedisSchemaVersion = "5" ) func main() { os.Exit(run()) } func run() int { cmd := command.New() logs, err := logging.NewLoggingFromConfig(utils.AppName(), cmd.Config.Logging) if err != nil { utils.PrintErrorThenExit(err, ExitFailure) } // When started by systemd, NOTIFY_SOCKET is set by systemd for Type=notify supervised services, which is the // default setting for the Icinga DB service. So we notify that Icinga DB finished starting up. _ = sdnotify.Ready() logger := logs.GetLogger() defer func() { _ = logger.Sync() }() logger.WithOptions(logs.ForceLog()).Infof("Starting Icinga DB daemon (%s)", internal.Version.Version) db, err := cmd.Database(logs.GetChildLogger("database")) if err != nil { logger.Fatalf("%+v", errors.Wrap(err, "can't create database connection pool from config")) } defer func() { _ = db.Close() }() { logger.Infof("Connecting to database at '%s'", db.GetAddr()) err := db.Ping() if err != nil { logger.Fatalf("%+v", errors.Wrap(err, "can't connect to database")) } } switch err := icingadb.CheckSchema(context.Background(), db); { case errors.Is(err, icingadb.ErrSchemaNotExists): if !cmd.Flags.DatabaseAutoImport { logger.Fatal("The database schema is missing") } logger.Info("Starting database schema auto import") if err := icingadb.ImportSchema(context.Background(), db, cmd.Flags.DatabaseSchemaDir); err != nil { logger.Fatalf("%+v", errors.Wrap(err, "can't import database schema")) } logger.Info("The database schema was successfully imported") case err != nil: logger.Fatalf("%+v", err) } rc, err := cmd.Redis(logs.GetChildLogger("redis")) if err != nil { logger.Fatalf("%+v", errors.Wrap(err, "can't create Redis client from config")) } { logger.Infof("Connecting to Redis at '%s'", rc.GetAddr()) _, err := rc.Ping(context.Background()).Result() if err != nil { logger.Fatalf("%+v", errors.Wrap(err, "can't connect to Redis")) } } { pos, err := checkRedisSchema(logger, rc, "0-0") if err != nil { logger.Fatalf("%+v", err) } go monitorRedisSchema(logger, rc, pos) } ctx, cancelCtx := context.WithCancel(context.Background()) defer cancelCtx() // Use dedicated connections for heartbeat and HA to ensure that heartbeats are always processed and // the instance table is updated. Otherwise, the connections can be too busy due to the synchronization of // configuration, status, history, etc., which can lead to handover / takeover loops because // the heartbeat is not read while HA gets stuck when updating the instance table. var heartbeat *icingaredis.Heartbeat var ha *icingadb.HA var telemetrySyncStats *atomic.Pointer[telemetry.SuccessfulSync] { rc, err := cmd.Redis(logs.GetChildLogger("redis")) if err != nil { logger.Fatalf("%+v", errors.Wrap(err, "can't create Redis client from config")) } heartbeat = icingaredis.NewHeartbeat(ctx, rc, logs.GetChildLogger("heartbeat")) db, err := cmd.Database(logs.GetChildLogger("database")) if err != nil { logger.Fatalf("%+v", errors.Wrap(err, "can't create database connection pool from config")) } defer func() { _ = db.Close() }() db.SetMaxOpenConns(1) ha = icingadb.NewHA(ctx, db, heartbeat, logs.GetChildLogger("high-availability")) telemetryLogger := logs.GetChildLogger("telemetry") telemetrySyncStats = telemetry.StartHeartbeat(ctx, rc, telemetryLogger, ha, heartbeat) telemetry.WriteStats(ctx, rc, telemetryLogger) } // Closing ha on exit ensures that this instance retracts its heartbeat // from the database so that another instance can take over immediately. defer func() { // Give up after 3s, not 5m (default) not to hang for 5m if DB is down. ctx, cancelCtx := context.WithTimeout(context.Background(), 3*time.Second) _ = ha.Close(ctx) cancelCtx() }() s := icingadb.NewSync(db, rc, logs.GetChildLogger("config-sync")) hs := history.NewSync(db, rc, logs.GetChildLogger("history-sync")) rt := icingadb.NewRuntimeUpdates(db, rc, logs.GetChildLogger("runtime-updates")) ods := overdue.NewSync(db, rc, logs.GetChildLogger("overdue-sync")) ret := history.NewRetention( db, cmd.Config.Retention.HistoryDays, cmd.Config.Retention.SlaDays, cmd.Config.Retention.Interval, cmd.Config.Retention.Count, cmd.Config.Retention.Options, logs.GetChildLogger("retention"), ) sig := make(chan os.Signal, 1) signal.Notify(sig, os.Interrupt, syscall.SIGTERM, syscall.SIGHUP) go func() { logger.Info("Starting history sync") if err := hs.Sync(ctx); err != nil && !utils.IsContextCanceled(err) { logger.Fatalf("%+v", err) } }() // Main loop for { hactx, cancelHactx := context.WithCancel(ctx) for hactx.Err() == nil { select { case takeoverReason := <-ha.Takeover(): logger.WithOptions(logs.ForceLog()).Infow("Taking over", zap.String("reason", takeoverReason)) go func() { for hactx.Err() == nil { synctx, cancelSynctx := context.WithCancel(ha.Environment().NewContext(hactx)) g, synctx := errgroup.WithContext(synctx) // WaitGroups for initial synchronization. // Runtime updates must wait for initial synchronization to complete. configInitSync := sync.WaitGroup{} stateInitSync := &sync.WaitGroup{} // Clear the runtime update streams before starting anything else (rather than after the sync), // otherwise updates may be lost. runtimeConfigUpdateStreams, runtimeStateUpdateStreams, err := rt.ClearStreams(synctx) if err != nil { logger.Fatalf("%+v", err) } dump := icingadb.NewDumpSignals(rc, logs.GetChildLogger("dump-signals")) g.Go(func() error { logger.Debug("Starting config dump signal handling") return dump.Listen(synctx) }) g.Go(func() error { select { case <-dump.InProgress(): logger.Info("Icinga 2 started a new config dump, waiting for it to complete") cancelSynctx() return nil case <-synctx.Done(): return synctx.Err() } }) g.Go(func() error { logger.Info("Starting overdue sync") return ods.Sync(synctx) }) syncStart := time.Now() telemetry.OngoingSyncStartMilli.Store(syncStart.UnixMilli()) logger.Info("Starting config sync") for _, factory := range v1.ConfigFactories { factory := factory configInitSync.Add(1) g.Go(func() error { defer configInitSync.Done() return s.SyncAfterDump(synctx, common.NewSyncSubject(factory), dump) }) } logger.Info("Starting initial state sync") for _, factory := range v1.StateFactories { factory := factory stateInitSync.Add(1) g.Go(func() error { defer stateInitSync.Done() return s.SyncAfterDump(synctx, common.NewSyncSubject(factory), dump) }) } configInitSync.Add(1) g.Go(func() error { defer configInitSync.Done() select { case <-dump.Done("icinga:customvar"): case <-synctx.Done(): return synctx.Err() } return s.SyncCustomvars(synctx) }) g.Go(func() error { configInitSync.Wait() telemetry.OngoingSyncStartMilli.Store(0) syncEnd := time.Now() elapsed := syncEnd.Sub(syncStart) logger := logs.GetChildLogger("config-sync") if synctx.Err() == nil { telemetrySyncStats.Store(&telemetry.SuccessfulSync{ FinishMilli: syncEnd.UnixMilli(), DurationMilli: elapsed.Milliseconds(), }) logger.Infof("Finished config sync in %s", elapsed) } else { logger.Warnf("Aborted config sync after %s", elapsed) } return nil }) g.Go(func() error { stateInitSync.Wait() elapsed := time.Since(syncStart) logger := logs.GetChildLogger("config-sync") if synctx.Err() == nil { logger.Infof("Finished initial state sync in %s", elapsed) } else { logger.Warnf("Aborted initial state sync after %s", elapsed) } return nil }) g.Go(func() error { configInitSync.Wait() if err := synctx.Err(); err != nil { return err } logger.Info("Starting config runtime updates sync") return rt.Sync(synctx, v1.ConfigFactories, runtimeConfigUpdateStreams, false) }) g.Go(func() error { stateInitSync.Wait() if err := synctx.Err(); err != nil { return err } logger.Info("Starting state runtime updates sync") return rt.Sync(synctx, v1.StateFactories, runtimeStateUpdateStreams, true) }) g.Go(func() error { // Wait for config and state sync to avoid putting additional pressure on the database. configInitSync.Wait() stateInitSync.Wait() if err := synctx.Err(); err != nil { return err } logger.Info("Starting history retention") return ret.Start(synctx) }) if err := g.Wait(); err != nil && !utils.IsContextCanceled(err) { logger.Fatalf("%+v", err) } } }() case handoverReason := <-ha.Handover(): logger.WithOptions(logs.ForceLog()).Warnw("Handing over", zap.String("reason", handoverReason)) cancelHactx() case <-hactx.Done(): if ctx.Err() != nil { logger.Fatalf("%+v", errors.New("main context closed unexpectedly")) } // Otherwise, there is nothing to do here, surrounding loop will terminate now. case <-ha.Done(): if err := ha.Err(); err != nil { logger.Fatalf("%+v", errors.Wrap(err, "HA exited with an error")) } else if ctx.Err() == nil { // ha is created as a single instance once. It should only exit if the main context is cancelled, // otherwise there is no way to get Icinga DB back into a working state. logger.Fatalf("%+v", errors.New("HA exited without an error but main context isn't cancelled")) } cancelHactx() return ExitFailure case s := <-sig: logger.Infow("Exiting due to signal", zap.String("signal", s.String())) cancelHactx() return ExitSuccess } } cancelHactx() } } // monitorRedisSchema monitors rc's icinga:schema version validity. func monitorRedisSchema(logger *logging.Logger, rc *redis.Client, pos string) { for { var err error pos, err = checkRedisSchema(logger, rc, pos) if err != nil { logger.Fatalf("%+v", err) } } } // checkRedisSchema verifies rc's icinga:schema version. func checkRedisSchema(logger *logging.Logger, rc *redis.Client, pos string) (newPos string, err error) { if pos == "0-0" { defer time.AfterFunc(3*time.Second, func() { logger.Info("Waiting for Icinga 2 to write into Redis, please make sure you have started Icinga 2 and the Icinga DB feature is enabled") }).Stop() } else { logger.Debug("Checking Icinga 2 and Icinga DB compatibility") } streams, err := rc.XReadUntilResult(context.Background(), &redis.XReadArgs{ Streams: []string{"icinga:schema", pos}, }) if err != nil { return "", errors.Wrap(err, "can't read Redis schema version") } message := streams[0].Messages[0] if version := message.Values["version"]; version != expectedRedisSchemaVersion { // Since these error messages are trivial and mostly caused by users, we don't need // to print a stack trace here. However, since errors.Errorf() does this automatically, // we need to use fmt instead. return "", fmt.Errorf( "unexpected Redis schema version: %q (expected %q), please make sure you are running compatible"+ " versions of Icinga 2 and Icinga DB", version, expectedRedisSchemaVersion, ) } logger.Debug("Redis schema version is correct") return message.ID, nil } icingadb-1.3.0/config.example.yml000066400000000000000000000134231477347223700167200ustar00rootroot00000000000000# This is the configuration file for Icinga DB. # Connection configuration for the database to which Icinga DB synchronizes monitoring data. # This is also the database used in Icinga DB Web to view and work with the data. # In high availability setups, all Icinga DB instances must write to the same database. database: # Database type. Either 'mysql' for MySQL or 'pgsql' for PostgreSQL. # Defaults to 'mysql'. # type: mysql # Database host or absolute Unix socket path. host: localhost # Database port. By default, the MySQL or PostgreSQL port, depending on the database type. # port: # Database name. database: icingadb # Database user. user: icingadb # Database password. password: CHANGEME # List of low-level database options that can be set to influence some Icinga DB internal default behaviours. # Do not change the defaults if you don't have to! # options: # Maximum number of connections Icinga DB is allowed to open in parallel to the database. # By default, Icinga DB is allowed to open up to "16" connections whenever necessary. # Setting this to a number less than or equal to "-1" allows Icinga DB to open an unlimited number of connections. # However, it is not possible to set this option to "0". # max_connections: 16 # Maximum number of queries allowed to connect to a single database table simultaneously. # By default, Icinga DB is allowed to execute up to "8" queries of any kind, e.g. INSERT,UPDATE,DELETE # concurrently on a given table. # It is not possible to set this option to a smaller number than "1". # max_connections_per_table: 8 # Maximum number of placeholders Icinga DB is allowed to use for a single SQL statement. # By default, Icinga DB uses up to "8192" placeholders when necessary, which showed the # best performance in terms of execution time and parallelism in our tests. # It is not possible to set this option to a smaller number than "1". # max_placeholders_per_statement: 8192 # Maximum number of rows Icinga DB is allowed to select, delete, update or insert in a single transaction. # By default, Icinga DB selects,deletes,updates,inserts up to "8192" rows in a single transaction, which showed # the best performance in terms of execution time and parallelism in our tests. # It is not possible to set this option to a smaller number than "1". # max_rows_per_transaction: 8192 # Enforce Galera cluster nodes to perform strict cluster-wide causality checks before executing # specific SQL queries determined by the number you provided. # Note: You can only set this option to a number "0 - 15". # Defaults to 7. # See https://icinga.com/docs/icinga-db/latest/doc/03-Configuration/#galera-cluster # wsrep_sync_wait: 7 # Connection configuration for the Redis® server where Icinga 2 writes its configuration, state and history items. # This is the same connection as configured in the 'icingadb' feature of the corresponding Icinga 2 node. # High availability setups require a dedicated Redis® server per Icinga 2 node and # therefore a dedicated Icinga DB instance that connects to it. redis: # Host name or address, or absolute Unix socket path. host: localhost # TCP port. # Defaults to '6380' as the Redis® open source server provided by the 'icingadb-redis' package listens on that port. # port: 6380 # Authentication username, requires a `password` being set as well. # username: # Authentication password. May be used alone or together with a `username`. # password: # Numerical database identifier, defaults to `0`. # database: 0 # Icinga DB logs its activities at various severity levels and any errors that occur either # on the console or in systemd's journal. The latter is used automatically when running under systemd. # In any case, the default log level is 'info'. #logging: # Default logging level. Can be set to 'fatal', 'error', 'warn', 'info' or 'debug'. # If not set, defaults to 'info'. # level: info # Logging output. Can be set to 'console' (stderr) or 'systemd-journald'. # If not set, logs to systemd-journald when running under systemd, otherwise stderr. # output: # Interval for periodic logging defined as duration string. # A duration string is a sequence of decimal numbers and a unit suffix, such as "20s". # Valid units are "ms", "s", "m", "h". # Defaults to "20s". # interval: 20s # Map of component-logging level pairs to define a different log level than the default value for each component. # options: # config-sync: # database: # dump-signals: # heartbeat: # high-availability: # history-sync: # overdue-sync: # redis: # retention: # runtime-updates: # telemetry: # Retention is an optional feature to limit the number of days that historical data is available, # as no historical data is deleted by default. #retention: # Number of days to retain full historical data. By default, historical data is retained forever. # history-days: # Number of days to retain historical data for SLA reporting. By default, it is retained forever. # sla-days: # Interval for periodically cleaning up the historical data, defined as a duration string. # A duration string is a sequence of decimal numbers and a unit suffix, such as "20s". # Valid units are "ms", "s", "m", "h". # Defaults to "1h". # interval: 1h # Number of old historical entries a single query can delete in a "DELETE FROM ... LIMIT count" manner. # By default, this is limited to 5000 entries. # count: 5000 # Map of history category to number of days to retain its data in order to # enable retention only for specific categories or to # override the number that has been configured in history-days. # options: # acknowledgement: # comment: # downtime: # flapping: # notification: # state: icingadb-1.3.0/doc/000077500000000000000000000000001477347223700140405ustar00rootroot00000000000000icingadb-1.3.0/doc/01-About.md000066400000000000000000000020631477347223700156530ustar00rootroot00000000000000# Icinga DB Icinga DB is a set of components for publishing, synchronizing and visualizing monitoring data in the Icinga ecosystem, consisting of: * The Icinga DB daemon, which synchronizes monitoring data between a Redis®[\*](TRADEMARKS.md#redis) server and a database * Icinga 2 with its [Icinga DB feature](https://icinga.com/docs/icinga-2/latest/doc/14-features/#icinga-db) enabled, responsible for publishing the data to the Redis® server, i.e. configuration and its runtime updates, check results, state changes, downtimes, acknowledgements, notifications, and other events such as flapping * And Icinga Web with the [Icinga DB Web](https://icinga.com/docs/icinga-db-web) module enabled, which connects to both Redis® and the database to display and work with the most up-to-date data ![Icinga DB Architecture](images/icingadb-architecture.png) ## Installation To install Icinga DB see [Installation](02-Installation.md). ## License Icinga DB and the Icinga DB documentation are licensed under the terms of the GNU General Public License Version 2. icingadb-1.3.0/doc/02-Installation.md000066400000000000000000000150021477347223700172400ustar00rootroot00000000000000 # Installing Icinga DB The recommended way to install Icinga DB is to use prebuilt packages for all supported platforms from our official release repository. Please follow the steps listed for your target operating system, which guide you through setting up the repository and installing Icinga DB. To upgrade an existing Icinga DB installation to a newer version, see the [Upgrading](04-Upgrading.md) documentation for the necessary steps. ![Icinga DB Daemon](images/icingadb-daemon.png) Before installing Icinga DB, make sure you have installed [Icinga 2](https://icinga.com/docs/icinga-2), set up a Redis® server, and enabled the `icingadb` feature. The Icinga 2 installation documentation covers all the necessary steps. Additionally, Icinga offers the `icingadb-redis` package for all supported operating systems, which ships an up-to-date Redis® open source server version and is pre-configured for the Icinga DB components. !!! tip Although Icinga DB can run anywhere in an Icinga environment, we recommend to install it where the corresponding Icinga 2 node and Redis® server is running to keep latency between the components low. ## Installing the Package If the [repository](https://packages.icinga.com) is not configured yet, please add it first. Then use your distribution's package manager to install the `icingadb` package or install [from source](02-Installation.md.d/From-Source.md). ## Setting up the Database A MySQL (≥5.5), MariaDB (≥10.1), or PostgreSQL (≥9.6) database is required to run Icinga DB. Please follow the steps listed for your target database, which guide you through setting up the database and user and importing the schema. ![Icinga DB Database](images/icingadb-database.png) !!! info In high availability setups, all Icinga DB instances must write to the same database. ### Setting up a MySQL or MariaDB Database If you use a version of MySQL < 5.7 or MariaDB < 10.2, the following server options must be set: ``` innodb_file_format=barracuda innodb_file_per_table=1 innodb_large_prefix=1 ``` Set up a MySQL database for Icinga DB: ``` # mysql -u root -p CREATE DATABASE icingadb; CREATE USER 'icingadb'@'localhost' IDENTIFIED BY 'CHANGEME'; GRANT ALL ON icingadb.* TO 'icingadb'@'localhost'; ``` After creating the database, import the Icinga DB schema using the following command: ``` mysql -u root -p icingadb Create a local `config.yml` file using [the sample configuration](../config.example.yml). The Icinga DB package installs its configuration file to `/etc/icingadb/config.yml`. Most of the settings are pre-populated for a local setup. Before running Icinga DB, adjust the Redis® and database credentials and, if necessary, the connection configuration. The configuration file explains general settings. All available settings can be found under [Configuration](03-Configuration.md). ## Running Icinga DB You can execute `icingadb` by running it with the locally accessible `config.yml` file: ```bash icingadb -config /path/to/config.yml ``` The `icingadb` package automatically installs the necessary systemd unit files to run Icinga DB. Please run the following command to enable and start its service: ```bash systemctl enable --now icingadb ``` ## Installing Icinga DB Web With Icinga 2, Redis®, Icinga DB and the database fully set up, it is now time to install Icinga DB Web, which connects to both Redis® and the database to display and work with the monitoring data. ![Icinga DB Web](images/icingadb-web.png) You have completed the instructions here and can proceed to [installing Icinga DB Web on Amazon Linux](https://icinga.com/docs/icinga-db-web/latest/doc/02-Installation/Amazon-Linux/#installing-icinga-db-web-package), [installing Icinga DB Web on Debian](https://icinga.com/docs/icinga-db-web/latest/doc/02-Installation/Debian/#installing-icinga-db-web-package), [installing Icinga DB Web on Fedora](https://icinga.com/docs/icinga-db-web/latest/doc/02-Installation/Fedora/#installing-icinga-db-web-package), [installing Icinga DB Web on RHEL](https://icinga.com/docs/icinga-db-web/latest/doc/02-Installation/RHEL/#installing-icinga-db-web-package), [installing Icinga DB Web on Raspberry Pi Os](https://icinga.com/docs/icinga-db-web/latest/doc/02-Installation/Raspberry-Pi-OS/#installing-icinga-db-web-package), [installing Icinga DB Web on SLES](https://icinga.com/docs/icinga-db-web/latest/doc/02-Installation/SLES/#installing-icinga-db-web-package), [installing Icinga DB Web on Ubuntu](https://icinga.com/docs/icinga-db-web/latest/doc/02-Installation/Ubuntu/#installing-icinga-db-web-package), [installing Icinga DB Web on openSUSE](https://icinga.com/docs/icinga-db-web/latest/doc/02-Installation/openSUSE/#installing-icinga-db-web-package), [installing Icinga DB Web From Source](https://icinga.com/docs/icinga-db-web/latest/doc/02-Installation/From-Source), which will also guide you through the setup of the Icinga Web PHP framework, which is required to run the Icinga DB web module. Below is a preview of how the interface visualizes monitoring data and also supports dark and light mode: ![Icinga DB Web](images/icingadb-dashboard.png) icingadb-1.3.0/doc/02-Installation.md.d/000077500000000000000000000000001477347223700175415ustar00rootroot00000000000000icingadb-1.3.0/doc/02-Installation.md.d/From-Source.md000066400000000000000000000011211477347223700222170ustar00rootroot00000000000000# Installing Icinga DB from Source ## Using `go install` You can build and install `icingadb` as follows: ```bash go install github.com/icinga/icingadb@latest ``` This should place the `icingadb` binary in your configured `$GOBIN` path which defaults to `$GOPATH/bin` or `$HOME/go/bin` if the `GOPATH` environment variable is not set. ## Build from Source Download or clone the source and run the following command from the source's root directory. ```bash go build -o icingadb cmd/icingadb/main.go ``` icingadb-1.3.0/doc/03-Configuration.md000066400000000000000000000403751477347223700174220ustar00rootroot00000000000000# Configuration Icinga DB can be configured using a YAML configuration file, environment variables, or both. Environment variables take precedence and override previously defined values from the configuration file. For package installations, the configuration file is stored in `/etc/icingadb/config.yml`. See [config.example.yml](../config.example.yml) for an example configuration. The following subsections describe the configurations of the various modules. For the YAML configuration file, each option is written in lowercase, as shown in the tables. When using environment variables, the variable name is constructed by concatenating `ICINGADB_`, the module name in uppercase followed by an underscore, and the option name in uppercase. The hyphens in the names are to be replaced by underscores. For example, to set the database host, the `ICINGADB_DATABASE_HOST` environment variable is used. ## Database Configuration Connection configuration for the SQL database to which Icinga DB synchronizes monitoring data. This is also the database used in [Icinga DB Web](https://icinga.com/docs/icinga-db-web) to view and work with the data. In [high availability setups](05-Distributed-Setups.md), all Icinga DB instances must write to the same database. For YAML configuration, the options are part of the `database` dictionary. For environment variables, each option is prefixed with`ICINGADB_DATABASE_`. | Option | Description | |----------|------------------------------------------------------------------------------------------------------------------------------------------------| | type | **Optional.** Either `mysql` (default) or `pgsql`. | | host | **Required.** Database host or absolute Unix socket path. | | port | **Optional.** Database port. By default, the MySQL or PostgreSQL port, depending on the database type. | | database | **Required.** Database name. | | user | **Required.** Database username. | | password | **Optional.** Database password. | | tls | **Optional.** Whether to use TLS. | | cert | **Optional.** TLS client certificate, either file path or PEM-encoded multiline string. | | key | **Optional.** TLS client private key, either file path or PEM-encoded multiline string. | | ca | **Optional.** TLS CA certificate, either file path or PEM-encoded multiline string. | | insecure | **Optional.** Whether not to verify the peer. | | options | **Optional.** List of low-level [database options](#database-options) that can be set to influence some Icinga DB internal default behaviours. | ### Database Options Each of these configuration options are highly technical with thoroughly considered and tested default values that you should only change when you exactly know what you are doing. You can use these options to influence the Icinga DB default behaviour, how it interacts with databases, thus the defaults are usually sufficient for most users and do not need any manual adjustments. !!! important Do not change the defaults unless you have to! For YAML configuration, the options are part of the `database.options` dictionary. For environment variables, each option is prefixed with `ICINGADB_DATABASE_OPTIONS_`. | Option | Description | |--------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------| | max_connections | **Optional.** Maximum number of database connections Icinga DB is allowed to open in parallel if necessary. Defaults to `16`. | | max_connections_per_table | **Optional.** Maximum number of queries Icinga DB is allowed to execute on a single table concurrently. Defaults to `8`. | | max_placeholders_per_statement | **Optional.** Maximum number of placeholders Icinga DB is allowed to use for a single SQL statement. Defaults to `8192`. | | max_rows_per_transaction | **Optional.** Maximum number of rows Icinga DB is allowed to `SELECT`,`DELETE`,`UPDATE` or `INSERT` in a single transaction. Defaults to `8192`. | | wsrep_sync_wait | **Optional.** Enforce [Galera cluster](#galera-cluster) nodes to perform strict cluster-wide causality checks. Defaults to `7`. | ## Redis® Configuration Connection configuration for the Redis® server where Icinga 2 writes its configuration, state and history items. This is the same connection as configured in the [Icinga DB feature](https://icinga.com/docs/icinga-2/latest/doc/14-features/#icinga-db) of the corresponding Icinga 2 node. High availability setups require a dedicated Redis® server per Icinga 2 node and therefore a dedicated Icinga DB instance that connects to it. For YAML configuration, the options are part of the `redis` dictionary. For environment variables, each option is prefixed with `ICINGADB_REDIS_`. | Option | Description | |----------|-------------------------------------------------------------------------------------------------------------------------| | host | **Required.** Host name or address, or absolute Unix socket path. | | port | **Optional.** TCP port. Defaults to `6380` matching the Redis® open source server port in the `icingadb-redis` package. | | username | **Optional.** Authentication username, requires a `password` being set as well. | | password | **Optional.** Authentication password. May be used alone or together with a `username`. | | database | **Optional.** Numerical database identifier, defaults to `0`. | | tls | **Optional.** Whether to use TLS. | | cert | **Optional.** TLS client certificate, either file path or PEM-encoded multiline string. | | key | **Optional.** TLS client private key, either file path or PEM-encoded multiline string. | | ca | **Optional.** TLS CA certificate, either file path or PEM-encoded multiline string. | | insecure | **Optional.** Whether not to verify the peer. | ## Logging Configuration Configuration of the logging component used by Icinga DB. For YAML configuration, the options are part of the `logging` dictionary. For environment variables, each option is prefixed with `ICINGADB_LOGGING_`. | Option | Description | |----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | level | **Optional.** Specifies the default logging level. Can be set to `fatal`, `error`, `warn`, `info` or `debug`. Defaults to `info`. | | output | **Optional.** Configures the logging output. Can be set to `console` (stderr) or `systemd-journald`. Defaults to systemd-journald when running under systemd, otherwise to console. See notes below for [systemd-journald](#systemd-journald-fields). | | interval | **Optional.** Interval for periodic logging defined as [duration string](#duration-string). Defaults to `"20s"`. | | options | **Optional.** Map of component name to logging level in order to set a different logging level for each component instead of the default one. See [logging components](#logging-components) for details. | ### Logging Components The independent components of Icinga DB produce log entries. Each log entry is linked to its component and a log level. By default, any log message will be displayed if its log level is at or above the `level` configured above. However, it is possible to override the log level for each component individually to show more or less information. For YAML configuration, the options are part of the `logging.options` dictionary. For environment variables, `ICINGADB_LOGGING_OPTIONS` expects a single string of `component:level` pairs joined with `,`. The following example would log everything with at least info level, except database and high availability entries, where the level is one time raised and one time lowered. ```yaml # YAML Configuration File logging: level: info options: database: error high-availability: debug ``` ``` # Environment Variables ICINGADB_LOGGING_LEVEL=error ICINGADB_LOGGING_OPTIONS=database:error,high-availability:debug ``` | Component | Description | |-------------------|---------------------------------------------------------------------------------| | config-sync | Config object synchronization between Redis® and MySQL. | | database | Database connection status and queries. | | dump-signals | Dump signals received from Icinga. | | heartbeat | Icinga heartbeats received through Redis®. | | high-availability | Manages responsibility of Icinga DB instances. | | history-sync | Synchronization of history entries from Redis® to MySQL. | | overdue-sync | Calculation and synchronization of the overdue status of checkables. | | redis | Redis® connection status and queries. | | retention | Deletes historical data that exceed their configured retention period. | | runtime-updates | Runtime updates of config objects after the initial config synchronization. | | telemetry | Reporting of Icinga DB status to Icinga 2 via Redis® (for monitoring purposes). | ## Retention By default, no historical data is deleted, which means that the longer the data is retained, the more disk space is required to store it. History retention is an optional feature that allows to limit the number of days that historical data is available for each history category. There are separate options for the full history tables used to display history information in the web interface and SLA tables which store the minimal information required for SLA reporting, allowing to keep this information for longer with a smaller storage footprint. For YAML configuration, the options are part of the `retention` dictionary. For environment variables, each option is prefixed with `ICINGADB_RETENTION_`. When using environment variables, the Retention `options` are formatted similar to the [logging components](#logging-components) from above. ``` # Environment Variables ICINGADB_RETENTION_HISTORY_DAYS=14 ICINGADB_RETENTION_OPTIONS=comment:356 ``` | Option | Description | |--------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | history-days | **Optional.** Number of days to retain historical data for all history categories. Use `options` in order to enable retention only for specific categories or to override the retention days configured here. | | sla-days | **Optional.** Number of days to retain historical data for SLA reporting. | | interval | **Optional.** Interval for periodically cleaning up the historical data, defined as [duration string](#duration-string). Defaults to `"1h"`. | | count | **Optional.** Number of old historical data a single query can delete in a `"DELETE FROM ... LIMIT count"` manner. Defaults to `5000`. | | options | **Optional.** Map of history category to number of days to retain its data. Available categories are `acknowledgement`, `comment`, `downtime`, `flapping`, `notification` and `state`. | ## Appendix ### Duration String A duration string is a sequence of decimal numbers and a unit suffix, such as `"20s"`. Valid units are `"ms"`, `"s"`, `"m"` and `"h"`. ### Galera Cluster Icinga DB expects a more consistent behaviour from its database than a [Galera cluster](https://mariadb.com/kb/en/what-is-mariadb-galera-cluster/) provides by default. To accommodate this, Icinga DB sets the [wsrep_sync_wait](https://mariadb.com/kb/en/galera-cluster-system-variables/#wsrep_sync_wait) system variable for all its database connections. Consequently, strict cluster-wide causality checks are enforced before executing specific SQL queries, which are determined by the value set in the `wsrep_sync_wait` system variable. By default, Icinga DB sets this to `7`, which includes `READ, UPDATE, DELETE, INSERT, REPLACE` query types and is usually sufficient. Unfortunately, this also has the downside that every single Icinga DB query will be blocked until the cluster nodes resynchronise their states after each executed query, and may result in degraded performance. However, this does not necessarily have to be the case if, for instance, Icinga DB is only allowed to connect to a single cluster node at a time. This is the case when a load balancer does not randomly route connections to all the nodes evenly, but always to the same node until it fails, or if your database cluster nodes have a virtual IP address fail over assigned. In such situations, you can set the `wsrep_sync_wait` system variable to `0` in the `/etc/icingadb/config.yml` file to disable it entirely, as Icinga DB doesn't have to wait for cluster synchronisation then. ### Systemd Journald Fields When examining the journal with `journalctl`, fields containing additional information are hidden by default. Setting an appropriate [`--output` option](https://www.freedesktop.org/software/systemd/man/latest/journalctl.html#Output%20Options) will include them, such as: `--output verbose` or `--output json`. For example: ``` journalctl --unit icingadb.service --output verbose ``` All Icinga DB fields are prefixed with `ICINGADB_`, e.g., `ICINGADB_ERROR` for error messages. icingadb-1.3.0/doc/04-Upgrading.md000066400000000000000000000233101477347223700165220ustar00rootroot00000000000000# Upgrading Icinga DB Specific version upgrades are described below. Please note that version upgrades are incremental. If you are upgrading across multiple versions, make sure to follow the steps for each of them. ## Upgrading to Icinga DB v1.2.1 Please apply the `1.2.1.sql` upgrade script to your database. For package installations, you can find this file at `/usr/share/icingadb/schema/mysql/upgrades/` or `/usr/share/icingadb/schema/pgsql/upgrades/`, depending on your database vendor. ## Upgrading to Icinga DB v1.2.0 Please apply the `1.2.0.sql` upgrade script to your database. For package installations, you can find this file at `/usr/share/icingadb/schema/mysql/upgrades/` or `/usr/share/icingadb/schema/pgsql/upgrades/`, depending on your database vendor. As the daemon checks the schema version, the recommended way to perform the upgrade is to stop the daemon, apply the schema upgrade and then start the new daemon version. If you want to minimize downtime as much as possible, it is safe to apply this schema upgrade while the Icinga DB v1.1.1 daemon is still running and then restart the daemon with the new version. Please keep in mind that depending on the distribution, your package manager may automatically attempt to restart the daemon when upgrading the package. !!! warning With MySQL and MariaDB, a locking issue can occur if the schema upgrade is applied while the history view is accessed in Icinga DB Web. This can result in the upgrade being delayed unnecessarily and blocking other queries. Please see [unblock history tables](#unblock-history-tables) for how to detect and resolve this situation. ### Upgrading the state_history Table This release includes fixes for hosts and services reaching check attempt 256. However, on existing installations, the schema upgrade required to fix the history tables isn't automatically applied by `1.2.0.sql` as a rewrite of the whole `state_history` table is required. This can take a lot of time depending on the history size and the performance of the database. During this time that table will be locked exclusively and can't be accessed otherwise. This means that the existing history can't be viewed in Icinga Web and new history entries will be buffered in Redis®. There is a separate upgrade script `optional/1.2.0-history.sql` to perform the rewrite of the `state_history` table. This allows you to postpone part of the upgrade to a longer maintenance window in the future, or skip it entirely if you deem this safe for your installation. !!! warning Until `optional/1.2.0-history.sql` is applied, you'll have to lower `max_check_attempts` to 255 or less, otherwise Icinga DB will crash with a database error if hosts/services reach check attempt 256. If you need to lower `max_check_attempts` but want to keep the same timespan from an outage to a hard state, you can raise `retry_interval` instead so that `max_check_attempts * retry_interval` stays the same. If you apply it, be sure that `1.2.0.sql` was already applied before. Do not interrupt it! At best use tmux/screen not to lose your SSH session. ### Unblock History Tables !!! info You don't need to read this section if you are using PostgreSQL. This applies to MySQL/MariaDB users only. In order to fix a loading performance issue of the history view in Icinga DB Web, this upgrade script adds an appropriate index on the `history` table. Creating this new index normally takes place without blocking any other queries. However, this may hang for a relatively considerable time, blocking all Icinga DB queries on all`*_history` tables and the `history` table inclusively if there is an ongoing, long-running query on the `history` table. One way of causing this to happen is if an Icinga Web user accesses the `icingadb/history` view just before you are running this script. Depending on how many entries you have in the history table, Icinga DB Web may take quite a long time to load, until your web servers timeout (if any) kicks in. When you observe that the upgrade script has been taking unusually long (`> 60s`) to complete, you can perform the following analysis on another console and unblock it if necessary. It is important to note though that the script may need some time to perform the reindexing on the `history` table even if it is not blocked. Nonetheless, you can use the `show processlist` command to determine whether an excessive number of queries have been stuck in a waiting state. ``` MariaDB [icingadb]> show processlist; +------+-----+-----+----------+-----+------+---------------------------------+------------------------------------+-----+ | Id | ... | ... | db | ... | Time | State | Info | ... | +------+-----+-----+----------+-----+------+---------------------------------+------------------------------------+-----+ | 1475 | ... | ... | icingadb | ... | 1222 | Waiting for table metadata lock | INSERT INTO "notification_history" | ... | | 1485 | ... | ... | icingadb | ... | 1262 | Creating sort index | SELECT history.id, history.... | ... | | 1494 | ... | ... | icingadb | ... | 1224 | Waiting for table metadata lock | ALTER TABLE history ADD INDEX ... | ... | | 1499 | ... | ... | icingadb | ... | 1215 | Waiting for table metadata lock | INSERT INTO "notification_history" | ... | | 1500 | ... | ... | icingadb | ... | 1215 | Waiting for table metadata lock | INSERT INTO "state_history" ... | ... | | ... | ... | ... | ... | ... | ... | ... | ... | ... | +------+-----+-----+----------+-----+------+---------------------------------+------------------------------------+-----+ ``` In the above output are way too many Icinga DB queries, including the `ALTER TABLE history ADD INDEX` query from the upgrade script, waiting for a metadata lock, they are just minimised to the bare essentials. Unfortunately, only one of these queries is holding the `table metadata lock` that everyone else is now waiting for, which in this case is a `SELECT` statement initiated by Icinga DB Web in the `icingadb/history` view, which takes an unimaginably long time. Note that there might be multiple `SELECT` statements started before the upgrade script in your case when the history view of your Icinga DB Web is opened by different Icinga Web users at the same time. You can now either just wait for the `SELECT` statements to finish by themselves and let them block the upgrade script and all Icinga DB queries on all `*_history` tables or forcibly terminate them and let the remaining queries do their work. In this case, cancelling that one blocking `SELECT` query will let the upgrade script continue normally without blocking any other queries. ``` MariaDB [icingadb]> kill 1485; ``` In case you are insecure about which Icinga DB Web queries are blocking, you may simply cancel all long-running `SELECT` statements listed with `show processlist` (see column `Time`). Cancelling a `SELECT` query will neither crash Icinga DB nor corrupt your database, so feel free to abort every single one of them matching the Icinga DB database (see column `db`). ## Upgrading to Icinga DB v1.1.1 Please apply the `1.1.1.sql` upgrade script to your database. For package installations, you can find this file at `/usr/share/icingadb/schema/mysql/upgrades/` or `/usr/share/icingadb/schema/pgsql/upgrades/`, depending on your database type. Note that this upgrade will change the `history` table, which can take some time depending on the size of the table and the performance of the database. While the upgrade is running, that table will be locked and can't be accessed. This means that the existing history can't be viewed in Icinga Web and new history entries will be buffered in Redis®. As the daemon checks the schema version, the recommended way to perform the upgrade is to stop the daemon, apply the schema upgrade and then start the new daemon version. If you want to minimize downtime as much as possible, it is safe to apply this schema upgrade while the Icinga DB v1.1.0 daemon is still running and then restart the daemon with the new version. Please keep in mind that depending on the distribution, your package manager may automatically attempt to restart the daemon when upgrading the package. ## Upgrading to Icinga DB v1.0 **Requirements** * You need at least Icinga 2 version 2.13.4 to run Icinga DB v1.0.0. **Database Schema** * For MySQL databases, please apply the `1.0.0.sql` upgrade script. For package installations, you can find this file at `/usr/share/icingadb/schema/mysql/upgrades/`. ## Upgrading to Icinga DB RC2 Icinga DB RC2 is a complete rewrite compared to RC1. Because of this, a lot has changed in the Redis® and database schema, which is why they have to be deleted and recreated. The configuration file has changed from `icingadb.ini` to `config.yml`. Instead of the INI format, we are now using YAML and have introduced more configuration options. We have also changed the packages of `icingadb-redis`, which is why the Redis® CLI commands are now prefixed with `icingadb` instead of just `icinga`, i.e. the Redis® CLI is now accessed via `icingadb-redis-cli`. Please follow the steps below to upgrade to Icinga DB RC2: 1. Stop Icinga 2 and Icinga DB. 2. Flush your Redis® instances using `icinga-redis-cli flushall` (note the `icinga` prefix as we did not upgrade `icingadb-redis` yet) and stop them afterwards. 3. Upgrade Icinga 2 to version 2.13.2 or newer. 4. Remove the `icinga-redis` package where installed as it may conflict with `icingadb-redis`. 5. Install Redis® (`icingadb-redis`) on your primary Icinga 2 nodes to version 6.2.6 or newer. 6. Upgrade Icinga DB to RC2. 7. Drop the Icinga DB MySQL database and recreate it using the provided schema. 8. Start Redis®, Icinga 2 and Icinga DB. icingadb-1.3.0/doc/05-Distributed-Setups.md000066400000000000000000000117171477347223700203560ustar00rootroot00000000000000# Distributed Setups ## High Availability High availability functionality is built directly into Icinga DB and can be deployed without additional third-party components. ![Icinga DB HA](images/icingadb-ha.png) First, you need an Icinga 2 high availability setup with two master nodes, such as described [here](https://icinga.com/docs/icinga-2/latest/doc/06-distributed-monitoring#high-availability-master-with-agents). Each of the master nodes must have the Icinga DB feature enabled and have their own dedicated Redis® server set up for it, so that each node writes the monitoring data separately. The setup steps per node are no different from a single node setup and can be found in the [Icinga 2 installation documentation](https://icinga.com/docs/icinga-2/latest/doc/02-installation). Each Redis® server will always have the complete data available as long as its corresponding Icinga 2 master is running and writing to its Redis®. This is because the Icinga 2 master nodes synchronize their data and events with each other as long as they are connected, and each takes over the entire configuration in case the other node or their connection to each other fails. For each Redis® server you need to set up its own dedicated Icinga DB instance that connects to it, but the Icinga DB instances must write to the same database, which of course can be replicated or a cluster. So the steps from the standard [Icinga DB installation documentation](https://icinga.com/docs/icinga-db/latest/doc/02-Installation/) can be followed. However, as mentioned, the database only needs to be set up once. All in all, an Icinga DB HA environment involves setting up two Icinga 2 master nodes, two Redis® servers, two Icinga DB instances and one database. Please read the note about the [environment ID](#environment-id), which is common to all Icinga DB components and generated by Icinga 2's Icinga DB feature. There is only one Icinga DB instance at a time, which is responsible for performing database operations in the following areas: * Synchronizing configuration, also across Icinga 2 restarts. * Performing configuration runtime updates made via the Icinga 2 API. * Updating recent host and service states. * Flagging hosts and services that are overdue for updates. * Deleting history items that have exceeded their configured retention time. However, both Icinga DB instances write all events relevant to the history of hosts and services to the database. This way, no data is lost if one of the Icinga 2 masters is unavailable or if their connection to each other fails. Which Icinga DB instance is responsible is determined by a specific database operation that can only be performed by one instance first. In the case of concurrent operations, simply put, only one wins via a locking mechanism. Of course, this is only true if the environment is healthy. Icinga DB is not trying to be responsible if its corresponding Redis® server is unavailable or Icinga 2 is not writing data to Redis®. If Icinga 2 or Redis® become unavailable for more than 60 seconds, Icinga DB releases responsibility so the other instance can take over. ## Multiple Environments Icinga DB supports synchronization of monitoring data from multiple different Icinga environments into a single database. This allows Icinga DB Web to provide a centralized view of the data. Although everything is prepared in Icinga DB, there is no full support in Icinga DB Web yet. As soon as it is ready, the documentation will be adapted and the feature will be explained in more detail. ![Icinga DB Envs](images/icingadb-envs.png) ## Environment ID !!! important Icinga 2 generates a unique environment ID from its CA certificate when it is first started with the Icinga DB feature enabled. The ID is used in all Icinga DB components to separate data from multiple different environments and is written to the file `/var/lib/icinga2/icingadb.env` by Icinga 2. It is strictly recommended not to change this ID afterwards, as all data would be resynchronized and the old ones would remain in the database, resulting in duplicate data. As long as the file remains, Icinga 2 will not regenerate the environment ID. This is also true if the CA is changed to avoid duplicate data. Special care should be taken if you add or redeploy the master node(s) and as a result or over time the CA has changed, which would result in a new environment ID. If this is the case, make sure you copy the file between your Icinga 2 masters to get a consistent ID. For high-availability setups, it is a good idea to enable the Icinga DB feature on the secondary master after you have successfully connected from/to the primary master so that the certificates are set up properly. The secondary master will then generate the same environment ID since it is working with the same CA certificate. In any case make sure that the file `/var/lib/icinga2/icingadb.env` does not change over time and is the same on all Icinga 2 master nodes per environment. icingadb-1.3.0/doc/06-Migration.md000066400000000000000000000100741477347223700165400ustar00rootroot00000000000000# Migration from IDO Migrating from the IDO feature to Icinga DB starts by setting up Icinga DB. To do so, please follow the [installation instructions]. The Icinga DB feature can be enabled in parallel to the IDO, allowing you to perform the migration while the IDO is still running. After setting up Icinga DB, all Icinga objects and their current state should already show up in Icinga DB Web as this information is synced from Icinga 2. At this point, the old host and service history is missing in Icinga DB. If it is desired to keep it, this information has to be migrated explicitly from the old IDO database. To do so, follow the instructions below. ## History To migrate history data from the [IDO] database, the Icinga DB Migration commandline tool is provided. If you have installed Icinga DB from our packages, it is automatically installed as well. ### Preparing the Configuration Please take the [example configuration] as a starting point and copy it to the host you will perform the migration on. The following sections will guide you through how to adjust it for your needs. #### Environment ID Icinga DB allows writing multiple Icinga environments to the same database. Thus, you have to tell the migration tool for which environment you want to migrate the history. On each Icinga 2 node that has the Icinga DB feature enabled, the environment ID is written to the file `/var/lib/icinga2/icingadb.env`. Please use the contents of this file for the `env` option in the section `icinga2`. #### Database Connection The migration tool needs to access both the IDO and the Icinga DB databases. Please specify the connection details in the corresponding `ido` and `icingadb` sections of the configuration. Both the IDO and Icinga DB support MySQL and PostgreSQL. You can migrate from and to both types, including from one type to the other. #### Input Time Range The migration tool allows you to restrict the time range of the history events to be migrated. This is controlled by the options `from` and `to` in the `ido` section of the configuration. Both options can be set to Unix timestamps. It is recommended to set the `to` option to a cutoff time at which the history in the Icinga DB database switches from migrated events to events written directly by Icinga DB. If you kept running the IDO in parallel to Icinga DB and do not do this, there will be duplicate events for the time both were running. You can query the time of the first history event written by Icinga DB by running this query in its database: ``` SELECT MIN(event_time)/1000 FROM history; ``` In case you had trouble setting up Icinga DB or this is not the first time you are setting up Icinga DB, please make sure to double-check this timestamp and adjust it accordingly if it is not what you expect. !!! tip You can convert between Unix timestamps and a human-readable format using the `date` command: * Unix timestamp to readable date: `date -d @1667219820` * Current date/time to Unix timestamp: `date +%s` * Specific date/time to Unix timestamp: `date -d '2022-01-01 00:00:00' +%s` * Relative date/time to Unix timestamp: `date -d '-1 year' +%s` Similarly, you can use `from` to limit how much old history gets migrated. ### Cache Directory Choose a (not necessarily yet existing) directory for Icinga DB Migration's internal cache. If either there isn't much to migrate or the migration process won't be interrupted by a reboot (of the machine Icinga DB migration/database runs on), `mktemp -d` is enough. ### Run the Migration To start the actual migration, execute the following command: ```shell icingadb-migrate -c icingadb-migration.yml -t ~/icingadb-migration.cache ``` In case this command was interrupted, you can run it again. It will continue where it left off and reuse the cache if it is still present. !!! tip If there is much to migrate, use e.g. tmux to protect yourself against SSH connection losses. [installation instructions]: 02-Installation.md [IDO]: https://icinga.com/docs/icinga-2/latest/doc/14-features/#ido-database-db-ido [example configuration]: icingadb-migration.example.yml icingadb-1.3.0/doc/TRADEMARKS.md000066400000000000000000000013451477347223700160220ustar00rootroot00000000000000# Third-party Trademarks All trademarks, logos, and brand names are the property of their respective owners. Any mention of company, product, or service names in our documentations, product descriptions, or websites is solely for identification purposes. The use of these names, trademarks, and brands does not imply endorsement. This document acknowledges trademarks of companies and products, which are the property of their respective owners, whether registered or unregistered. ## Redis® Redis is a registered trademark of Redis Ltd. Any rights therein are reserved to Redis Ltd. Any use by Icinga GmbH is for referential purposes only and does not indicate any sponsorship, endorsement or affiliation between Redis and Icinga GmbH. icingadb-1.3.0/doc/icingadb-migration.example.yml000066400000000000000000000013341477347223700217450ustar00rootroot00000000000000icinga2: # Content of /var/lib/icinga2/icingadb.env env: "da39a3e..." # IDO database ido: type: mysql # or "pgsql" for PostgreSQL host: 192.0.2.1 #port: 3306 database: icinga user: icinga password: CHANGEME #tls: false #cert: #key: #ca: #insecure: false # Input time range #from: 0 #to: 2147483647 # Icinga DB database icingadb: type: mysql # or "pgsql" for PostgreSQL host: 2001:db8::1 #port: 3306 database: icingadb user: icingadb password: CHANGEME #tls: false #cert: #key: #ca: #insecure: false icingadb-1.3.0/doc/images/000077500000000000000000000000001477347223700153055ustar00rootroot00000000000000icingadb-1.3.0/doc/images/icingadb-architecture.png000066400000000000000000015672211477347223700222510ustar00rootroot00000000000000PNG  IHDR 7eiCCPiccxڕлkSI*-Z R;VHKr')R\ׂmп@WYEΊ.Z )B CԌZ,v?.ëkmc&6aVW ̯O0e9^E8u>nL(|ATL}KeRGwqeGE*Vs#\q)Ze9YEg1㒎PkS즺y =UXUU^{SK s[8=v$yF+oڣ} uëw9[ TZ{&! ?SM1Wc_g) pHYs  IDATxyluqaxl1غN:duV}H@4 ܆@8D.[:7 ȩ"Jcc[7v= PwOOOx }OO ~m>-#mV-vWf\eqg hƟqOƅ~K+|Xx܈ c/?8}JN7'g~`Bl\ P369mo,>de(`z7.?Uˆ±Ua&1L9!q}҅xogQ׽J&e75LPrB7Όȏ?Coq)q?k _<1!1n_`Ÿ9[2o-+Ǭ Ӿ^-C<'m罴.5{ lx.}{̥]T`?Y+칿Ɲ t{ @ZB!"и[×O\ʾ^9pOd_?y {fǮn+HaN=-m%罥{<L褾ƟO-~G7ꖩ!w M{ݕ8.YُW=dCпc,n @9;ߤK]ޚ"NU-akCٞ?hq(Tho*-L@'a:T63}hO>2hsz7ōq6z~=ҫ o S^ ?şb*ԾGS+>f]: ^폦pSl Om S^OㆸQn}ᤵ} @wgN>3m-aׄ=+87ӾEq2}avk㹷hnxloN}cz" [{n00P4wiOƟ-qW4IG?JgVvΈg?9} ;;iYмtо3%a32'w(RNmYRh>̾-#[TmT~K*n~&Ԭ=lӌnGN᧋ݽ.?)UǟM8k](gI6~gzhz7O/Xqfϼ㊿n"`K׮ԝV5ǟ~x3|Qu >lOwwli2TW]UsxP2ӫbAwbɍ?gܲڷu+ ?|nmOlU\&~:ş.P6dϼj۸7IG5Nhzm~IOG2_}{  n{z؈nH(-牟z? _$'uJ'7T\Ϳ.1Sn,`?05᧻osM9+"Psf\vF}OO'Rj;iiVn0`Re#*NOEo^K,j [+|AWK'韴~B @ڸb70P>O7\ >)(7}[:S2n¤ß Sf'boդ3މ% 4ꮚ)oO7O6m)?q-x]uLK'v L_ٓ9h(-u)o]usr~&VIOu ?>q)SWfֶRJOߝO<6쉍q\. [s^h?Oj ws^p5r`sC~'ɟ~v]T)|x3yOd.P?gc@(m w,maƇnJ_MB)mf1ЩtBkd("(:% ,QAD4OWp}rxNN<'D)X};Ï}hnqLȕK[ve An @VN>s׮9/"x W3;|8=+ZL'sqllZn{},/:U?7M r:EWOx!CTIy>%MӼ/lwGy=z.'] @ 4<_?V˄|Nݟu- d9㏷hg^JH MήIhzO"g$`rEF65h5Sގq'6Qt]h3cWb[ c绛?/wrrBKecOMc7س܋ɢ>uKb7kVym=qRNqpִJekxhVm66Fdr>AAcRODBP+2 (QQ{l=3׵ֽw\&k ?~wLy~^g'~@;Goʄ .S݁ kmd~BJ Q%D_.sŏb>[w{c[VYr$P/@<'%zi (?զ g{WunW"GǦ=创+?vOTVG(c!y=@#xi|훦OiOo? ʠPh&#nvPE7M}@S.YsФ .Kc)hD?ZE{^Ϗ ɟxퟰV ]n9y䬓 ־Qb ~,ojuUӒ9謇ݠ?D$Pj/^g@*jٌ4$~$$Pc:ԫqR-?q ֏ӢIjX UծofozG$@7C@} T譴'5Ʋed2%}IgKμoҽdOV d*=1W}DHhZcS'> ^um ^(#Fdh[&.,@P6-Qp>If$&~RWC-*~l[?T_h9/Ϟ@QoIIGmQڿcєS Pܠ $6$TC[@W>a'@?Prd޻$tm ْ@??Xe'\շz Tp'?ahTwU| `*'͈ڷtO9Xf3Xfѻ)MKVY䏢fV)4T;kq/]|)@?&Ls@?:?>ЮH0?ʈI#fdhG?oj(@?JyT2޽_j%OVhZ\g癚!N2> P&߁ii%h4v?-6@l,1dORt}E9F I3e>_@uDI 7;K;@4?@\_66?iaQ dR&?6e!s >PAORȟiRΕ@ŭє_c P7 `1ᓕ?2t-@&}$2p\%6 v/>ϳ-3ߔR(%75")@ۦ\՟ߚJ>jXSϕ‡ٽTM +԰ly1$,&y۽sf\ O"UQ (O\Ih )=.| 8z l ֿ h@6gff%EО|`V ďPХK_oGN|ݰz{wovڤc)[rH?Jf(mG(I)z'?]D$_69*$&qϼUOe? ?# RGlh+|k7p+}9Y5~YQ4cGt*j$LQOT b) $! 49}M95I'\o@@?jEn͌9~)@O?({/| o[+%~ɟ`[.MI@A??@woI'OVv~U(]J 5RǤlR;'>H'@jԬ6p#UpA'O(aG))jJ$"cS(@O6ѵozvO5TGHH2æ?9{HpM52)@1ILmnKoy3O$1m䧢֏?*Z@&z$,"ߔPo[H?z}jC$LI{H#v@j(aGoI*[$^- w sIdȈQ?z[ۻtJY#c %P |l**l(5(lITJneשq\&l&np](pmGً@GOQGi n2SQS3neշ^r.?Qc~/(PLֿO]@9GI =>wךQ'-hLK# |z\*)X֠XGH'7p\ O  n(&{lZr&~ҩp???;M>nQef%b׿nVRG2үf}xP ɟ46B+ZQXu^=wÚm@?1$),7ES(%QocH:;|»?6%~MM~ǧg>RM 8zEGf֏E(*~|Z>: 5p޵=MW=~P ,jH%oEH颴#~n?z+w|[)MV-ߒ?{_tcg?ɟ@Lj&.+G#|FU?1dG WI@#mI4K 5ҩHi[un/^v| ;_p*Rhl(.J?>q $揽Mlo[\)>DXr%?6+Ydz8]Й&~)LOII<#@ @^PO$mܛFܿk.GOb竳7J;׽NN($pѻ??6K7$?KkRd)HhLծ)CȈ jZ3qO>\ߎjRȞN'Of0ЫnWܽ뷻 [vg޼ P &Gs}gs Uaӟι?]?qSτ귉@lOYO?ՖP)ֺW9a?a25DdWO khT6@?j(ZfQfP//h[[nنYPTؼcď>^\xf{V'%h%?6M(IqOqgͰOTxOx9ٛ?ٷ%?i' AEО|;/V47M%@@J[?}GOyѽ]7W[ݠ-? d撫wo}cBo?ďj/孀RҾcf OQ>Z\3~7T`@鬞<(C^}`Z@4뤧7 {[?&KR\=;wi.@AH7$}tG(np=[Mь+^&vlS,?z+3HflJ}M6$?9>afhOI4\YծS;R'. @NRn9= oSzH TH)K1%k~-7fˮvUٔ[&dE$bTpG HG͟ ֌Qf){ݚ9I:_9v^x';?j%~Ubƽ}s`@JcML|1>E_x1hx @33m-uڂhET -x#dN7.ҩ3'+ggFlחBx8!|Y{B!B!B ku\h;cdS@ZEI - ʓ7oȮy,} O &cgܾgknj^{X`Sa"he'OwB@?Nϰ?XS?wH͐@oAo1"L׼jrB!㾄B!оȞ"m"&V?vB`">hZZg)|p0#ãRDkFdT'wMudIwY^^fcCԦ- @h XV 7_ [A2+H.)8%Sʬy tʧ&l7y_tB!BXq_Ƈ@ ͇@!s?gψ@@^kT Z?Ⱥ`uKor2sCl=/ ' dCoe O'M'.#e'=@!wjuwL,b[7% }jecrKɬ9V%P@'7h͊hbCE_xB!BXq?B!P>bdJR@n9nع$+zr qm}{M2{/P^ F5 X6Ɠ_]+ 2-R$DgH־}XB ~L^cѭGied ׿iZ T&q" B!BڏH!q(:FD; . ~tH ˷ nP=GFl>:,7u׿ݟlbj?b|yY}/֫o-Z?6?CuXߴ\8VL 4HT){]fίߔɥk'ɋB!Bҏ'HR|B8@25sFZܴ%O5@paߦONk-gd918"+ ̚tcbePƊ;d:<$˳}2k$D% |0mܷG77QQ7n TuYRR[*lPZ}V㋟x> 1;OB!2~/qRd!2NndO?#Yl@A`bnujZ?=&{S)d.| yJՇ2AN-/DqcghIbvtA ir|{onS͟@(ͨ@kTB!BCKL|$s!2ؑz:Ҝ:Oq _gbߣxdeǠLU'l@KªOI[Ui.˓o)ܽ}7TʍYml?yIHE]&Oߴq NO?>??7-wL_;hˮ\ss{VsRoH !$! BGPg"Cy@P Ҽ4A*@$#M#M%T==w9ή T%XW7^gNqks] ?Lq,K38$IxR$I$IcdM.AA)UI$IE>}_:pJU!:. ե`e0Ug碵{l¦"U5[c|#,onjqɶ)%\v`ϋT07 bA;O=BJ,5*r9ǡ *,*> ve,> |oF H$$I$IDaî\\$I$y!pנ]FuQjN :@KCBh仏N+-g.!H<|,ǻlaUrՕ+x)4Ԅ{8=Yx9F8eƭH|r‹ JucsjYG-k Vv6^| ~Lb0a-^řK׼?$IRJ$I䈢 ːsr.A$I<(3ը "(.hDoTxgw*ܴusn_?kED+b2gʞ_կmiK{ Vpњ1ċ?[}˛FyIiYZ9z`a )*~U0ǐGԷ#!64xjQ{Tlr?{&{~YLY=e(Ur3B@I$I @I$I)Kۿ-B$I$ɓgz='V lREPgPP-"^ =+^WQ*y熝<昅|5kٓ.|x$Z9T}{xlo/>t)[ănaHAۏwh=g/9ff"u2Q_bGؽE}#!51H;6]xB`|?8jYAQ@SՄv;g.:`3tT,9{Ay±\:J5*{NE\Yۗ2zhWa5m9r%3'I$$I$Iwͳ X $I$G63O|"*qBzubZpgX\Mc<:߾`ej\Eŋ@mm/|y+=Mn8zF$**! V/n]րm>|@<{U?uBw->r#nVXК>A*sԪBDqE,;ݿu DŽy3A7̈@6I$I$L?pv.C†] \$I$9ş)] msoRzˉ=pXYkl[0V?]*>.M+Vg/ A}' DBTŞuxw?33˖rβA]oF6(P(V/)hRuP=S|g8x0>a zxK""XBL_ELq$F_珿)!,̙LNd՟$IP$I$3'aע\<ù I$Ird"'3sXBTPM)ĝS!X#(O_W_;( ~dsJ\}xBEjzln +Gl V-.x·G7t9Zs ] n, 9q4rGl-֏kXCąGKX(/V.?B.V?gD$I(I$I.˭yO$gXǰ— F4nj6Q7 uI]ح#3Rh 4BTTB"QblB}hһwOkO_U/\#,W[8RUMڭm,on ܵ9G eH }=lQQzldN%ڰjuq ,<{4>#ʟ"X_S[B8g0qz*CDV#򹑕ɯ$IRJ$Ip"6:!I/\ H$9zѦC?:.|L05 6V D8`3AR#L1؆\{6ϗ;z_Q.Uh ]>У- &NmtrԊ;#JeNax`V>|vB%5܅Dn dG#,kʵolgE rH/ - Q\vM{s܂n7USa3)B^ϩk+BS׫DqXµx9+Qym|<9񋎅 uow( z`~5%IP$I$3aI OZ9)$I<)%C^†]Y2:̋1˦cE5 hS8wbqB8ޕӮebn tHY 5\?v euU=R#2qAu}ZB(,/>pv3wW-O_ȼnΖkCI4Q~pE-4$jmϻ<2jְFdW0~Og ѝ")Ջ0n7vGvLRs 9Lĉ屪*V@Qlz!Ա,hUس}]M jX0R>|^Gk/ZK|Uv Ǹq'-}t7Д+ X'#ݓ|νkw?<w]M;VV-jqBfŠV.Z.  ` !D䚇G9ea:vkk"u`8sDk)'AфZw F6sr_s^(T &$ac"\wf\@WT$\$I$Ic/aîȢ4;URkri̤|$I. ^].xb7N6M]H~ Zq"v_u>#GxJԅQ5ѧ,(*w (Ѫ(6@q=JW]J$I$Igz+;?Y*Py) ' MXje>p!,_$Ieඉ(:[ =a+21 Zvyvt uq:,![~pD<-@@̥}!@q UPD1Ýc2{+g-Yw/nC[h4 T! b l^HT88UWWZV,(*joȎW8KCMe  w}Ӝ;fvMrIJ=C%~Ց߿>j1x^尿g8їI-{q _SIP$I$G d(Eg 4Va~ggyvS$S҉/wbD&8$hStp.%pcH8?W+)esXWQVŒE5kE+ UTe7vΙbx46[7>wwOGϯ#_pv (Nz@ђj>Ov}ctm sV@ ۭ݊ 6^yoS[gaz|k6h܀ uG\E.>MDxjIգrm$$I$I#AtcTi!s#ٵ0I$y@v8p"qF]?qk/cv#.S;xx,] ټGwQ Jt 9GPYB@J;Q`O!{= >T A]nEg "T7̩7;:j%{;o8qGJy@B !ޮKB:>_A~sEP %:w"@Y(pI^|z~Ŭl:PDY1AQobViUong|e!zTD@@DEP]%-> T{Vro{m9K{y 9~~7?䈵Rk[|ot> 9KD‰lj{C-i?")ĕ:&6S1'9jş*>oί$I(I$IH8y 1E%N]UR'c>ppf'+>^$_$Itb,b 9F5Ph6*PTpk4|9;m>]*s),l4bO{_m猑%<>zkx-%*sunigcm`m4>qY qC0Y*/^;zh6QY-͉Sq/ 1;F!q?6r)J$I$IT)#,NV\k9 oV+sY$I}#NqևJ;Vo|к-l7ߘC; ]t߾Wf;E4(b\?=1*';'W;-_u vhU'4E(Q E{>E^yۆ}&WO_ E0-`pgq)Y+m "m%˯l-A H3{П߶EY7Ъ&E$[{ϳ{W7caO7{۽]DBD:;8icϙ qLUB4l7 `^63טNj"" F)ӱ$)%I$Iˁ|X< 8XKCѨğ3JP[%$IG9b:<^hx1C xbä5NljE~^K;~A ؏E =jmUHp!Z9jl T/Q!n~t@bGq8W@6T0j9V;?ㆭ|1~xΊ)T{e˒1iR\}"!N^؍uwYO.aM6,U&\u~(뇺xuDBPBKioã->?36,眑zBr_{GADn;gH5rH{^`CY'L +;8+$$I$I#;f0TyFsyt8OO%g)%I$i3%I>t-N.vyGj+nۯ `RB% 9=&ЈUxʼn66k߶ϖ: \)4U (F ZT{7Eǯd6@Pm̾6{~A w (6\`}b[Jykg5+` e-%_4{la87G 4j%`wDEٺVs_n)E&•gS$I$IrU 몼Ccp|%],ο AϨ`X[1I$RV6$SW % $r:o]ׇH{7n{Q`*/ Ppl*U{7=Uh-X[bK0-2kPBh&@@(y*aXѩĩ{'uoEݼ%4ʷ5wZȊ,,߱W98xv0{>_ݱixÉ\BwެQ 4Vn1mor~5l೎ ִ'_\!BHQYPSX>V|.:)IRJ$I$9\VV|O_5ι4`Sʽs>\ `9uy RJ$yʻϺk"NQkԞPU njGECN7n{<6ijw%?.AL܉=AVTD-* sR 珷WPT(N_CwQTJSmvIP@LO;[^ X1܌Tdr j 8[Lg3 bI,C/@JA>~>V 4yÜI!s2>7S2U?fb P\]rmįb8SН?R_> sl!\lݟο'I @I$I$= ` 0OJ9FyrQK녀<kJK!(I_f_B 0`R6J`KwmX:yZ<+uǹw}SZku@=P?zssq:Xc}oq jSQ 7 b5CUPUڪ%(oU r%t ܱk77=5MPq̭^@, S(}_2ٳv hZ80v~ }1"Aƈ*Fu~m,<KCYxRV6Y?`_DDUA v(90G%W붎ңyً惔]C=&o6梥}:S%^ Yj=Kj_'o*Uqq朅e} utpaAr ŮACa($3$I$I~ X r$"tϤγE$bP*/¶vM&v6|,r\8w Nŭ/m|{%2<(ǟ&Qe KuU'٤6V6JEd.?  *nO?µ?={ Kϋ~5Qd^s/m x9kI/ J P?X47{`W1U ̈́ BgNdE?,覷i1"U\aX TΈ%6=G,)</yTj] hNKG+)IRJ$I$q  xJk|q~d&] )0e ԕL 6gSqF~q?؞Ɨo|lyW(B/SphD햭9w(cX >U6PjQb1ݨ; Q+UPZ$v;xp\ ܩ 7(8G~$/X$I$IaW7H:V?yӜI6mz\=Ss2yp'~`~~ qP1svr:? ںJ]PQܹiacٵ[R%xtSF4A1 ll;Bp scLPm|8y8b傏kHjSvX0˜k]>UnA,sn?7miK{yIS qoqex @V!P%?HR{MهF9*y~XCW!\;좇K*!ǹ|΅A#9B$@:$$I$I'D< HYO,=9(6:v&$.n>,og Z C4+ѽrƄCNS vk1q@tA90l|_7(ӭMS¬ Uv/359\ۜll 2++/mJO\+6n@‡}x=U7/A3Vֽ_U!6m-D)DQoO=\̱QqCۯnQJL{$g~g6SRƝ|qŬn › Q 秀  AHY禪WՎ[%R*HW$$I$IWt?)v[P''P81E$ ?gҿ_NMҙms6-Y p#pa~: L>k$6+(MHj| _iL''h CVDD,wN6Ū9ZF!v]gu$[X Z͝BJ,:\F@b}Z !Ed o V0R>t^~?qO}sקJv3dnv-c S糠qH"Q+(vMz¯4g,pǨ=-݁o<6]\ަ. @ 3Qy4m`, إEM<2k'BS2+dpe$I(I$INGأJ]Ǟ#G(8E$JI6/1'(͕ 9r] O+L6m)q5 _&r-qm_}WQ=v#:EMp.fs /v 8QQcCz׏mMg?d[?ń,;k rKՀy=Y)!* U.xl(Wmϻ_/Zª&\gqeX TSP*/<4ʛD[yg]A"N|zzۄ;yBv-.Uoum[4+w jmJ@iT"V.97&`Q 8'h4g6=+ r{VUPOGM_6Cԉjy.ճ,e1wl9ʣ,?uʕ\yE6Ryp4{n;9hFF9#!@ $Mpx?c?&` [  (PYܹߝ^nպg@B~s`t@Ktɖ2>mt<N-u*ݵN~>/D۵yAݭڼ w#ksADfM䢐H/=ʱy ?sOӟ..`-'JKuΤ[8ڀ H)I%G(h]Ak)`|kO[-MV@5FD w e֏*>CP$S#DfYj ,@- S-&U&:_].d}4 `(p?3K/^ʊᑱnRp)glqR܆S*ۧ{^KjRI]((h6)0GYN_Y۬PzZ_O g bxk C+]0Bx1$?bSPO I .:B s ^}h"(E"H$<{}̾b{8- (eb/GzQJyw ! [؇D]>8 ( 8(yb*,7 ^ (O~t %;wfJ:ydy{g? F  tZ~dei9UD>1'k$H$D"9 XSI'Kh*kE rå9snws &"qͣu"Pګ8E7wA]Nܡ' }gtjs8TNR/L!N "49wOއTȭ\,YC׭Uի2թz\A8+*y?>l?e]r;WߢJ۾U%L')r JGhrHQmY]:-ּ_9|L/΄[ [<.(>CaZ9#Ts3AV RPf{8JҊ !aEPؑa)GgW_? \Ӌ.?G.N, . HrkJtsu~N|_r8XCGT4_GZ;0d-HEܣ;iڂ燂6H_.VS1-EXTQCEOiZNw-~.GٴoX=r )u~CoxaP,Hn_w0>u 8H 8d=bPI)WigXLxٺ&k דZwbJ]kXzi`Iʲ--P-Æ{{."z՘CE|}Lgc Py/&! '4@H"H$DOvZ lf\*6X6ȌԹpzyDstڃf1;:Z7&fgcDZb\byǹ;ñ95}86̵ZJǒsۮ[__(u! VXE8!Kq4U_GiWPL$ A˸rliEOu.~É&& Hyr)p `\=MZEmOCxoS'f%so FEm)8ɇHq"HfCG"Qo#sҸ Wa^?vO4(ǝtOB(Az2&zݼ}E|5k9gZRv{⮱O[ʯu  s">2ͻogI# u+0Ѐc7i_Q`'Kݱ.-,o$IcE VI; ~AE"q-ceNF#Ȗ *nOwB(̣T |E0[ );%HHLD"HVC<٤Vդӫ OG`QQrHU04$#Q%r8(A3C YB`QTad15T1IFڌl.vt8$IZcQ(F,&$Hb1y1zbX:֠"dYE T4 0ƪ( ݪzUjg3W1L#rு_~gt> ?c@/~Zs!aS'HneOjVmbd?فQwZ'(xbhºc|VAT3S x]% ϷvhGxE+jG;gRQEK?W=3>U|I P,EZkg|I,#8w_|d&{ 09!M~]qk<4rÁ6j}Z DX0 V`-dg'  $$g-C`o> e4َYcf#46 ?{B0N E4ŋ`ZLRLhoqQDD"H$r,xi*2٭!*djD@YZUHRljelfr(Lomⶇ۫zVa ImZtG!9T0 GztCQ'dndIFXLM$̈́T `1FQILwҪ6*)X24~s+8jo(LƜ.da 7K'9,,SD;H @0 wE~(J1ř @GiA׌{kދGR\=Y){3~ X q%,E$p3 Y5Dާ~qCB>%FE ~.>v$_/fc!M~ {(Ҽq,O\;'a_r4ؕhqtD69+1#?+`F[( o΍  " -;?e ^a[;5-cxY(oX*c4Q*[,\{Xt3?>7w9iI5?k-4XwkW徉.>o9?uCY].uBټ> x!V6.X5LYP0ޭ[3 H6:s6wxJJsТS[x `w4&8) tz>Es6y}[ǡ[&l]y*dm1B ҹySE"QD"H$9bV~f\rk%ߦi AbE5,0"VɣW%wLoB47Sy.#F510x2"/:2D;C{ *v^K ދUWGIk59ԮmO<+"t^|ץ>[F g7=N(owBڛ>NRwk>Lv7|6W~tzjp۪ S)9|G.(x()>?Tp]x 9ٺ s"g[~5j ~Qql=oNP~h]-O '.S@;˷O[βP@ +PJO7o~kK`$P+;m(B2>4wytiQh B Pz>rh4P! Z=޳zSD:j/r9o0R uw}`Ӭ g.ŜUC[G@E D(x?Vlf$H$D"#fՓRgL.AUħ]?̧{sE.i-}!3J5OWx1iBZr(uP"3(۫\RC;pLtd X#Oq.> \B?s6p-Y3i{2r<[Yf$a9/_LξGD;p$H0 sn(̸D#A{fPn$$3"rpx0?s*SuO橻4f^Y x"t ߦS;&/@U«Fؿ W77ޛuss’Zx]DJ]#i_+<;S6hMCM-go6%ΐ#JM#y3&_Mޅri8logF:KWcNYUS2z߆u W"'/)K^B7_XOw k⿗DD"H$rDHޙvY4(b@2BOڛ\iHR{ ҟZc$u9rq-|z[*5,qn-CD #"F O,㋋6 N 1<$DDP4L/DD"HiCd&;1i6AU֠6+CV!.b,K_i/!K_Bcp Ŀ|B9j WS)_TXtj Qu\S\8U8y27hП֌Kb ӃߖB/RrV?5?|tWC)bCgM ]6b- x$m}  gCpŒZyXШ`^ :C])js(% )qh l/z a.XqEU<.P$D"(O4i&sjXN+Xy$ U,U Dĭw.m?У؄{6ekY\3,'t%1 ,z4&H7p+L,./z*B-Yb .t,!2R<9eЬǻ)7g d9g) WqBJ˅fECڽiOQDD"H$rDߚ@'^Ee]#rԥk MuOz^tI{/``h&IK{,8^[pNSs u4u\>!3=?1D/~VſΥ?{n+xDy O^쯯~dZ%a8 % nB.͊_|;>D=DfalhE-Q\,Hط%p޿=?ͿZ•gt*r| tn>5vy28#L i=R4SJLH.6dEWi0R쟢`:0dYwL@+ zŽ[YЧ)KJuM8a$B),O g؋"=T'z8}p W F*nN 84J>H$ @H$D7y"o5%ҳ ֊XD2kĂ2C%`Eft"sgO~nMZ??PD7Q]@}\, A i7E ]Qa8ifl"ָld6ɾA\Yl> $;Wg?w5> &f PD\{?|})=k \ B/")qyx׍ D#!$)RIrM~C"A=abxzU=O݊aylU_8yű#/;yV̏mMpH"Xz-G;zf JA ߉w%%wqGLy'gް6J##LVthK=)x~b|J\@r"4'[:wƸ~ub|" c06.mp`ke ' r:HY= w4E?a,r X)b0\Y7G=^{AdA\9jR8^=G;#Ba^Y><~}xza$o}3e)r*严ȺI\;ǯ1R.(5 */ ."0].k 74'MH@wA</_o?8k)~2%BSA UY\ӗ򲣚TP]5%S8Ե3r#U~r0Sm%+STHe֞H{_ [IjVtnE%uJQW=SXX9}•ZoE,f!/rFK_m) KE A(P$D"ȓȬÇxYHM$Gb L̈́UKr7ע"4_|?JzLZ䵁"Pjd6p"г5JtEFIׁGӟ;W|B~8 xU$fJ$*O]qLGD /?Qb*-O5R8nxoS#wY"v?œ5E*(yά"+s{ك ߁ۃh}<@(q;!*Zx/!  ­; ;xc|k8~i wS+3vc&%5޴e_o$wHCO׷uq}(,#e:"P(w;P|/ np&`j0p̉Di DJH(_ZT D1/^9}ԻBR}lٞ%\F2v0ռ6$t)lA "1%\$H$D"2m"~Ms.u}5U__[uo+N9Tjj7fmD։@:Zki=xUɷ,}3C<~g!xsK8Ҹ?P~x9p79p -.3T-돫6&>(= U D@-W0C @saZQ4Rc"_RQUue΍@`y:<D^|Z+_{2Dp.ŒGH GKSi>{DpE}wܫ_ΒFbcɻgz~ƻi.^?H=a?Ǡ\`z3>48į5J{?ar)p֌f|i&{ V SR+Y|8R^;n 3)dū-#`$c:E?@v~2/Y#1@+SkdX,SHR@-!"(E"H$,L@vLȡV !`]?hfҼy>[=J ?ȯ+loa{qF^{{~\:84CԊeeՐCd04įi~sV>WdǺmWId7CbVoѸ|R`]07>/Er׎<'xpmi|*8;%EQ(# iJDWu Ur,`էc~| uYCLٮ9s-l / H̲,l>e޼P#A?NT (yQҦAE%Bj8')IJ }n;57^=aS)RT?}d{nnW䮠2'-vX Nty yݦ!kۻwޕi4trx+0xTPI›l*<|kBSxL^ kaN:%ڮCj)P5t5j _~sz!Y $l\Y=z:%z?>#&L Ӿ9'P$D"u15"[àu;~HmvAYjr ]W={,ڋ5K?{>.o.GX#Nq@6W @![ԮmNj @}jqm).n,?NuΟO =X&ނbg J nRf?j>Jqk?kn/y?#?ßځ#>CN~N%)Ăq3^3 / ?WkWK(*@~ dZ}|> Wia~_7ARIaQ2'/5/k?: ^D Q m~}\vYKSl | p 2;gy-wOZmK tQDž] \sƔa @nkigJ@3*x`t[DgzGJ楔hpUIB y0R y!i7MRYA\9w W9nE/ :nJ(QD"?#H$9W |ɎbUgj$ 5bUazvAjbş,̧}vsqC'a~(`[E9UηזY(~k~<At~bPm` J@63s0Tj3f擝Og[l DPI~/_??|Zp :ӟQ =Iȑǿ?~94GƲ!irguC@pT \CA7Ņx7B(s_舒DHQRt–j{wǏ'ԂCI>S~&Aoױ>GwJ1 0"`7o?{_l&-Oi"EL{M{ ~ajPDN?%-]˧Lr:~6 W*p= P 1p܉=)Ѯ{YH U(]V8Ԁ9t,cn!AU$'.)BNρ,cޙI;&{j?k+ɣh ((P$D"ú4,y/TE2M@MC1 NEss*B͕G&@( |u4r`h| m~M (9~Z2O ĞPkwdcHz ܪ椸pbbEWF(~F/;Wџiw/BGOCnu5^:bZ<-Q:=׾@8A /J[@P jĠ.B'D@}n.sMCο5>c)CUhڰs(d;{%\z|~mUrꑙ?wx g-r'ITX2jYx tT,0`&5 E2.x'>tr/1heసoF.Zl)"Ua^ ̖Z$O wTl1-6ǯo}DD"H$A6l VCť2Z#Ӎ`MAI{^iV?JA?,NQ ǒa}Y$T$h Ǿ # ~%)X }?Hv8#l#M+NJrȥ.]R%EH]-(ΐ@IUF t*>Q'>0C^ KwUs%K_ U \:֒,0b!GET]0-SX)OqC΋JXcO)8IZ)w:I^8PBrp't0 (BuB)@9C0ݳ;c+X?\+?3D"Tp O#wMcyY# (#0pX?TWǍCk4)7` RBYj |XA +-O xp/񿓟zoO"pj (:{UQ \0wίY^]{s 7.|ʷb_il'S0~\YtZ=pס$ /rϹzŃEI5A234+:Ͷ  B_S Zam'At\ }d[;9Oo]'h hK9]o\:љŌTJJ.B4lfݓ]  oٶ3L)λ*̇a-}s`xԌ|*ף1g/rbȅl,T/G^ b {^t,!"} ""傧v](P$D"D73o8NZi M*YU6&v^?i2/t˨+t-d }| h.g=EQH. A pkq̷I sk@Id'u ԮlL$3"][Ogm2Eg\| 8W.'<87.SC|%5hJR ^;WXL/'e|v+,3zsn UlI ߗwlXf-Ӿ Pmpa}#?Xǘ ].\8ԯ5 BGɚ 2ݦ<͕G<@;K*u`pR"ܔQ|{9 Bww\k'_xh~r}rVVoGBZNkb})#DCk`򙇦#3/;QÕA%7in~|[3k@)eW+ NHJ-Z&l E5E2}0%DV`^Ja~c@5 5%<$ѷk!DD"H$1'-SEXM4T ֚|8tJ,3aVş0&9S,Z$U!ZjB AG[L!Da '‘*V.%uiTp6Kd@VPD5K|Os.  |*3g??g9'uq?gD4DQ(vׯ~.>RΪE13Yڢh2\8z@!!/P/xM1YXςV~nVPѡk(<)e#GA($nNeO(RH7Da+h"J 4 ׬,+suȀO3ŏ~y'㝌Oj~E4% TvxwN8{x(!I`mʅxh?;;^~WdQEX{z=ATPxLhv[M33=-p 0JHE0\Y ޱ_s{b/zAd0;y*dtW e6tSv>"QIZD(D"H wf5Zk X+v]s\TOϧ}# OV_ӱ`!RW0E#AΠ A> -YgqLG r~{y];0NbQĉIr-r"#s`~& |С?or % ?͹x'܍ȏCIP(懲^),.]Űt)dZ(`$s )<&KX P^WH c(X|- UQK=YXR$*婯OVV ZSGji JX_EJ/@6и`H J! eUv]{{7c,pA)@ARc;oˏp̢*o;e k㨴%<(Gc>pөnj jnW hoUv8mV5 g6Hdq fw\)Jμp%V}d=S`9u ;[#\*wEDvSX(P$D"spyf@HXM$*sQ%1֐e^Ʌn̞G>H ұH,* Z]5?֔?>2:D}` :TpN%ՎVd֠M n{y`|Q|)?gW9:sB #qL;Axџ&g]şϞX7bOPE@$tX&Z3;Ar꒱1* w7iҬ5l/~ ]= hymM)\%S%Tڈ@W=_?whǡk_G.B&g!(α.I5(JSD{@XꉋMN]F)k&zy}惹5PJ(o(j)w⡩p(o<`ŀ)\B0ZVY>*sB/! SSu= c{* y%ZA u0BBy >{99r(4Gwˡ ^1[$H$D"ǍHn޻L+yX &F3~6'sT^\,(#UAkڰ0r"Mt pk׽l_INԶ 0 iV!>Oɷw,L \Y5 |x>ppU\$^ J6.Nx1'| :/\jxZ%V!3:ME3޽:G?ښ>ՏG!nEr A *?`0@"~ `N_a ?;'u )6BY8 Ԅy38ЀBC+k%ՇVe>0 ,g'7PY?Hdo \;߾QFJ mPx-S?揿;O\ʋVP^24M-џt2i.u~|0+ wQAѢ0a-w{=Ok6ѳ@06%OJk0l>ua&KW1` MCd悕#`)ۀҴ^dSa!.D"QD"H$y\t++BQ &OuBş^.$d`:m4ה~` '6#老JFІ m/ egͻ4 :7Pm]E`ZZ!5;OSEDO}. 0U|s9p:?1BF|w9#(^Un[^{şd#`d^yic'UGG0Rt(k'pjqBхHmސW:볬/Ǥ̣W>C7E0  }Ll(Gp4/\5:ʖE5`c}T}`綯>j39&x*"*Lݦ V& Evn읇 bFAN\L^gect{DR -ùĪ |Ĉ@DgN.H$ @H$D"9UŠ6CwUhn)udSPa)R˅ Ʌ6 ğm6V흙7wxq#E,m$"3vCSX3KA=+8^P ؁9} rRB焔M6p*!SE"QD"H$~\}j@1dZE5f&Jy)63cT!%t;OG\?- Q˜G, FI"k?`@@{؁5̴O%~\y!(KX\d[ڄ\Lr@I?|sUfs7rUq# 0&pp  "._9G;P .bzz}Uk{> 'őpIw b )DѢH~ M[PG?k8&< u`0 @E1 yZ/Ps@`L߯^ Pm!Bj`vu $0\EBE! zOмzoDu*iS(T şx9W77»#>Lze=-y;8y>IbXqZrٞ_z4*Bw԰R~0 HIx "3WEv #',)}X X,#_jpxCʅPT- H,cD(D"H{#q*ydb V j,PՕ ПG 1#TpHO1Sբ.`FtaPĺwY0D ݼ.LeG]?ARPN_},f)gt.~8$`+P4|/`k\>rooRT LjEJ!ű ^ 8}sVm?>MXkoʝ-@Xrn&˝o4mm0TLɽi?׮7ner .kHSR*@pH kk)wg c=轓`5•:IFܗ#S T u99, QA OR j>H$ @H$DO+$= YV%Td2=snz=zĹ< M+t;Po.L:׏:PILaD@kJZ#F0㘘\@?/t;IviWr@i]\}S\gs!p3(&p'.NP'@Y N 9WsW5 ( %iBXBUXB^hlu\6aCe~ɾTCP_HoV D'.e\":‰޶E(8{|\ALkUa܆1.+ (29.G: "ʼ|Q ,uPGُ̣v-C4߰K*%O2uAƃ\n{rNYZaawTtDqnǎ(KWBO)05-8gxAWI2 [B$\3>ȒE+1g,FRnre{]-".C$xNJ L%} V3GA U@)G(0nu!*@H$ @H$Do@k y 6{MkrO\@s# 2!Dܱuvؠ&~& M##"d=4uu҄^Bk@4˪bm#Qk@P$Ѹ:g\|:pyx-p!pk\}N9,>\z)(+X-he]܏E #gSyqf<NTVLJo7xqS y# dvBQ焖PAdb}X{jѹs֒{Cy"ֆbHi?ȭkuQv]kUpe~ A8vF[aQM=oR5+da;'D3FiF*K4RDqy~4ybqRV5+"P!|oL᪽-CTcF8vJ5ئG(BM2{[l5MV5B)&EFHz0#DV >(@B9z : p%PKR .SBKj"(E"H$cS5?TZP ;c .lj?NevT'"f:CZJwؑ*Qyu9Ɋ ЩA. kN;^t.B1Vkw>O6j?+x7p'j3> |g'dLg-پC_.E ?mlƼ~"D޴)8nQdA&t<4ab"Puy̦ T^J̉ǁj1=vqs#SdU"ǐc ^!uCǎAm-*},h0@-)֊E'pXuog1Q0P;c4*[FZ+ܣd)"꣐ D92Ep*׮Ǟzr~aU}>QA 2Y> yx卄l]Ķ5Ĕ`EsP 9ܥ ^p"a-y_raM9ba.\(O7(X{^qZ A΅ ]t@d@.)a9g)@u'60 DD"H$ҏ;H'’ɷ]S5yusv.hR12)\["m&L"Ea$aF#r׭TolOsF]g (FzQj{~\p/@|  hU<(VY:.ρ!ʜD”aPL@9A#sg_3J1k|1UB:2"T7/?-OQ*/{) CΗw6QE :` g޶ݏ_]bP5&O H{`<ֆie$BѰ(RGNFgNVF}Lz^ԡU n= BXwйt7: Yՠڣx%2t)|[@|Lf}7.5 :,u(R櫻fxM<?Rg(=sWTh'/Q5ҷ  AчA)Ҭ g-E(R}t{^iP@#!9eIaqSjW8`S1pN RT߇^o4E"QD"H$<*.*`3!%d\^O2LdAA(h3 yv `PvL2LlԹz}t$כBd)\|XEܵ? +y i9A8pSy?KP= S|PLXf`Y*u*yہqooaG6ȇ/J,cӠyaºqHf( 9*/{2,䑺7 2Cp:,^+`}d hNg[;-omq_ ؕ0Z84 '=Rr Z@+avbth}~;zQ'Y٠G~Hf36U `TO]d\~HD]wrsWmZ/^JpY,)E;u{&yp@Xۤ9(^qQ$sU؀BYnp6U``!&$nnpbo~sz,QBa72 }mY\E 9e 4O:{,H)͜(Z+AP@(P$D"Bޙig#?PN^v#uԐu2k 91wd hy:vqt<+:h7i} Fz pf˪7JyLn߿:.3JY7Τ?W04bt@]t3VCB]=5~JӻaG_g]]ɏﻈswW{?}{lӏ/#.0JͶmT_*̱ǂGjqn* "~`T1ցŧ}{0MW3/bxa̋Tn)H(I{ċ\29Q^ET!GL9j`bqHՐ:Sô}Y*Ǎ0 TO#Hwtz2~|!PS ͵*?wX߹~?Wn['- SK_˰? *Rt ʽm>p$U#ʖ^V=g\Er69ᘡ*/Z`iPDҗ٩йwlJxlļdrg2;c`:ņ_ȋV>).[z!;a*QxV* NQ@6?v$H$D"{p% .TUW쉣{2! Y:ɋw:f4 % vk<ѦXhMhfz ;~h.ilGCUs8 ?#Cx#]'^9`}p^+ Q=%Sb.T5_𰮍1ɑ{%D-tAQْ6oS/vnWӠ^ౠ].ou)gAwΉ$+u[@ٸһ)zEE}9SX^8{>s[u)-I .QYEfK)H"£^7fNH|:^xzx.yQvR?ʦ!BlJ{ha;vRx5WŸTtc\UQ_?LWEF N=3:,Wu 6sΟ\q?g9 SOU2hKHY"Dڕ%i5ukwb59d^W1nO&p2W1 :Ag nK~=vt-_Bd)"TcA.\YBH ] P){`kyٚ^~њ\)׷ ?Zͤ|coTɂaPG.Nb/ۃn rpRkg+3Hӗ1R໢tpڱZpʮQuP$H$D"#b@7̧C`SU1$3+P**H;Rs"U2B0 jklnjeޑ(mTٹ,~QigV<r6 g?kŇŅ:4AJ0U+C ?9 zb@B*2Q4th6a8$MucV5x)Mn?}𑢘" cjF}Sl[_t hO}1u <?p^ su٢~?> Ơ+-/hIb, TL^޼w!UH<(^itMES{ G ggw89j $',-g%5̴;hs8zpm'/aPBB\!p.7mE+K #>][*;f3P@Oy $ .jws>+A%g=,9W7L#6 `I$LIhYtlْlKOOeT~-JDJ$ H@$",b]`sAyuNK9uRwCEU"zmCdy4r( D?ܪ E #+SO P"D"H$un9%C1(%mg?87I+ ˛/С DRz %v^e0f rJ/Qt 8F]jswYv3}P?g>V0-XNuI_+F6V@_ulJSNRxwQkġGgZ\gPNuxNdS#tREc4o7hҽ 8B FF 4ߺm(bBC}g:_呹6qFkO (hӱm3k3KԄ3uD p^Hp D"cWeAm[C |{i􁳰VmlDw B\n/>0 ` i X)UA FMII$H$D"ADO!pVpfSf96KBpC:'A䥘c5z@2k )KG5_U3o҇ !_H?<0 O*LfJ_gk|McPލ℔@K3k#1]b>Ƌ{dssA*"PB`!tf6n]q pbΝ'(]] .UW;&g @*B\ ƨ=G8/wZ0 hD<*BL_YY?&YXAcF$AYE7dS' DEgXe CDw$1H.ui8:k_ŭˆ|SR=U۵=,rm 7n5M$GF=9c->~|&#lhf vȔ$rC@¥ jM0*ϝBZ"mݐ]2ܸ&끹 Skm3(#1"7LT?q/z~j?D" @D"H$<fX| KJ @̈˶%sQY+ ;QKBK8PW֖b͂6&due#xT^Ɩ҇u]QqRǁoa ෝ: NH1`ğ6۸dKO?r7[0ÃPsCwmlҗ }߶ tˬF,K!Ub0 # ((p|ffb5.|WwRX7\(9?,܌}ిϷUY' ~mp<^S"#[ 琙yqK#'go'XytXa ?EIȄ ]Z:Ga϶0u߹"c5~Ɏw̠lͷv4Z3ɢHh=wks]>o= e\y.; &^B5p9i3Š!ݷE7K "4§ozan8?GZ^,339?][B.wI֬~>ykm-; 锔>B9 ɏ6_^ R|]/Bi|RZTb(~|1+ȦWĄ@,UDV52X h6ħUXK̑#ݿx٦* M1  U(Ok^x.jO#5SyX([#΃/ݓ?h] @5 xv˻cs0?r`fUz>w`m;fAxx!?w!R ļf3U_-΢wbX HLkӱ# ݳЅrDdqsw"OLTW$$%D"2L:U z]*j١0sd&Y$h# Ɇgc^؈>R3Բ[^x!iHϥ &^t[C #|!oЫJX\~ Osys\})^usGqG&)xWa֢B%tg {)ş'{(O #C%ߦPl({1-kM(2߮o[%H y7~곰6_x ڞ<Ŗ?r 91UYfyFJUڶ䓫.>n+dF[he;2ݠBk,#^ԩ]6A tvI 39UgQ{Foށ\fIcq9/<4ѕ.qarS}^4Mw׶}l͌休kHYQP'>Cťc-yZ*\8y&dˀo?tv cyx: #oy:o)w ږ BD獆ڥMbP"D"H$uL"_[;ӱ8 AD\$#%pN@i@L1"= `20GNXDBHOB g}9UL$P'\$D<O`d@'  7] ՟5 NOR*)Npx>4w;L4'fI E&j7W!=rNҥ9?Iqgѕ%^ <+:ĸz+/h. F9>P5FE\}Db4'bㄹWk9wj!(?d*;g.%\H&@F:ďkc؉w^ʉ߱uz9BZe'gW@2#Lܺ1R#DE U R!#OX![ga5ґ?+i H$(H$DfU d/r9ğ JJ\GY=RUU Y%yݘ\ Ԑٵ gG5^Oџ[NL$i ~P֧;'bR`uD-0^@R!(P zI3Ƥٵc̯2U4(>'ڧ߿[LJKU+_4Fv\1|ǎu4޴k 9  gJgv_5 %R A*ZxtgfL%@cIV_?‘ՒmnrtLv*xȳQq|9m>4zML70ڈ\:5 J]>@/LB˧{b C1z,n1GAU"Q$%D"H%7Q2@jj;ںyre9ځ UFNy;R&;^Gk+J](T 1:;vfnR%C5WnJW_9Wgk/L$r :wП B!Х5b";r9q̠ߤ5E3m7v BZ_sfmhE-B-'w5މٺ,&_by a?&\%r wrvN\)PB,6&Wk)RAۊZZ9}@\U72rW:2oLf,x%N&XMeZZ>Li/47ld; #+ݻTD;vSzrATzO._1y^ =xz_Wif=xݠ~e \"Eu6B"H$sUɥ-rH٭k٩Qvrv5;`WeLq|хa?:Y;nV0{!;ev΍8WrG{S#uDZI/D5C]>{@A?~C7}{\r ,^ u/G<P{Хy.B^TǂjuƾbLDGŪ'W|n]q:EcnOP'yn ԗk*ꚈJzSup+1 \lb" b&&]FjzGWy]To iGeJA3O/GGcollN EQösla44[Y+Ǟ}_o'ϓrBkk,/|y-Y,Y`Mds 53+iG)L}xӾ ?/[87XZDEa ীK+c nR1J^z盟 gGM]ᆲeT ľ&-XA+ O܍=u GПBC3N`w 櫑 M$##$WȌ_ &ު)o+xnުu7=w'}&ve[c΅zf*y:E;53ݤ MMpS-:wδ}O=#ԯBrz()ElߑkP642ްm M'[< cXK/ PZ"6^]e(k <5>@[-'j1wlz3ȃsv Wo^7 ,w{ҋ*.zʍSc[\}lEėE^IW%IJ$D"X1T3J;HiG{NJr PQp 1IH PUgi>D()RyU#:98K #Eޕ>EiOO9Y ٴׄ۝8πgfa>obċ,℅[/N ;v3NjD,aPUn}/ :v$/|[ѵ^”! Xo.'KX_CG-14a?Xk5GhƇUkTm>:ZO| D| 0Q=|Ymbm,k\~Sc+EW3ՠ_yN>0GO:Ek G; +[N1t kԾ} 2VuUЈA _mZp U8j7gی FnbN-6f\9qL6m.>ߢixzRnKƐODݿsj zhJB  OT iЅz5' ΒH$(H$D\Щ#(;bA5cIikfvS,geŹ$|K,/tvV衂TFjq,;j'.d(պy! x y`|ORZDkN/]O@% \z llя4̯n8'h_!D "@^_&qj%oc#q~V>i:_0,D%,\LVB6r@U?!_\BT)Q[Dx͋TTHTXLѪeuЭkC3sv0l;DŽ.˕#Y''vGз=ӝkϬZ@v0ͷv$ŋ˟@|zz {)Z*\0ytKи3tѱ~?{qų裋жh56/ZDD" @D"H$Ⱦt՞2_~"w* Fbh 쥵,,%g/xZ+`h,eZ1G.Yj0tԘUjfzye<'B1IGon/SϷ_~ Bѣ*@np"Cs%!˫5Ͽ}Zzo6 dwfFSP%]:MȧRXTDC(x$i4Ȯz׿yk굪%zyDR n!Qͯ}E82΃>%J (|W5$- h^z >Lp rZ@tVtOO=N IWg^~>X,&M@xk)eb[GÐl-Rs'(n>#~h O XV{ 5#~k8Ks̩ _U2'ѣ+T̑&ip]Eo?GV1.G^65/j v_CYs~1!OAC MQ.xI":V!H$ĹP7Ԛ̬@aǠH[s#LqQ M8K$H`F`d2K3ƀ "eA9|vx-#"i\SW,~Ǟ鮱ǁCi_px4^"M4_ۗ9guld58_ՠoVEړ\w)&:zVnw 2j*Ʒw:0FU}~9`Y|.c׋~l"DA%в"+@~#1ZaI ky9  R#:h\ 2K6k}U}hFXIP"ۀi<'O8c6hnη67.F @R<4Gqp\0[z⏏DO*E~'|.hU gAp*B͍74<湕$ށJ|hʡ"fBT㍶1TX[A\PQЧ\J{u[)\ _@QBc"D"H$u?wZYh_Pj͜AQk&{Ggah k}"k@ TZݗ 󳰼"`2943m0 EE͒֟^CwKϻ9 @Źq ?'\ Z7WeC7,L*7hCGWȷlՐgPuuLtKʓRl1`:A  qz>ٕ/C'(e@~#n @ML4(js1&Ȃˏ3*>xz'UD Yu=@|S@q!h}eA]H ƟE:qiw6wt75GУ\R| āQ+&aaygxѸ~"\"xdNݳmJ[!$.I8eQȰt-zhPT`CF Bv+Z?w@**b2$%\"H$'Y,GUJDT JfNM7k7o ,q(`䫟'_/3j9so3,0_gbi 7]O!#f^"b}Wf5sy;WZ~_Hp1$$2<\}p UrY-ynz BA~;J>y"2 Z8a:1švcn\'ƕ zCB!u7?!$.wV&ǯNjrqP)\~qyη׈ K:5{H!&''.K| t~k{ x:kWZ<4m Ԩn 7lC&mhH/GA.=;1G'жyt*@ |O-us+m[޲uk&ԍJ}$;=GhjX9٢4JA.EnXiw̠O.AK}J?שOdH$D">ڟ>Sr Kl2YLA ("k{:v|כpU*Y c06 &EG?_qAp+[eU"jqm}]??PyᖠXZ#"+(ȖҶK*D˥Snߺylv7 ZxP%L;~y`QNuķ4M? APA,vݜUE #2bEXAN`⊇yfp3 n.>YuV@n~9d^I"3,8)){AA3"UWt8T!˂}C>o뉿^]߆?ڬ=brd0mslܡ:HЦ/˹;0G#W?1ܺȌ'(C;%=\;]m{Ϡ3`.wǒՎH Z) a_hGw^i-* 90 [z_Ȑ}`b] .>}mUx$Y%IJ$D"_]"t!V!4h F՚v{4Lb`| FPF\XBCUy%JX6k`<0Zq-_oCc> |?Ko.G߷(:gZ$bJS1=/7zI C^_:pqK-/"@P˂ԋ"lq 6LdUb؊G;)=hQ ݛ!Ek?kA?.?cG)]]и(/ }=&,s כh|9d%~~1*Zӿm~5#D7i#z/\ |70qW˗W1&ags3[SUw,}O.VxCdWO!#5ptڥuV=L^b"K8.'rh(dl#U/G7 ܹ.Q>E왓p'_(ט@rhf=E^GpZLQ aq47'x!Ώ[ \?Y+>Uݹ_|;Dxqm kӍ.6 مcdN@yӄFV.B2 Tb6zԸdƉ:PFO(VWuͶz"N@HǢO-hpa$"\bP (HP"H$D? V1Hjxȏ)7jPQkPXc5Pt8[ny!(S08_)-bZ,hPP_on*Ϊ_,qfeM7x.lY|܀){n(o-K\F:?yԟ14;N)uEA[_xSNiҟ?X~% @w?`jy cP#TТ)D&o}5X:JY7 ܛ]Y8TZQ3$:̖}C(L){J[+tcp={u>ʳ tP"Ϛp3[ )vV_5aM#VAOD5C[{B#mKVJEL4dWLQ5C 'W M(~ԍphC9O,uyrP@Tx(.D9ĵhD F F`נ+ X좏/|'}F;RNr7k$pDD"H$@g @6}Ԟ?4#Gj8Oe֠6C5C̎6I^,舡<ݔ븅SVI,`j;򇝚9!㥈:LQ܆U.T%=gu9"c) {y[dKrtm 1jx39PAcDWA(;'gʆ-Ɵ:,HD :i2c .bM%M`jE2㯇K0Dm0; @ښx\qrXb+rݗj9xkYʧ|KPtqu6NDĘC`r5 6_XߺKMPڬJۺyt Xn$&xL l1)l#~^!>}{NlP|fl6@6%*Fzp?VG^D׾D$Xppsb%(8/[HxN90D9> k%g|8 ߿pǡ{EH@DD"H$֥^{C,vjED˫?U^6zv+cq:{9y:JcG[^oV܍9t, UW A*ހiUb.ߔ}DaJ'i&g iP"3%{hiYEѕi5;n^o>*#]$'õ}'"8ķ0ok]sn炾ߞ^D"n܁17E5VL%n"TKP}4Lcd&Sf~̅!C#Uki|.ty>>B%MND[,L7зs/_%C  1QݾW%apMJ(~EQ>G@#J9pјiDtz~vui.4/(j1gԶJ0.9ZvH}Wswg^3UGp!VU QIZɗ@7x R"yZD"H$猑 keͻxAFhFEPu7VqP3_bYg"X$EfAD'9KauI0F&,RTi{:rz:+h- =Jv 1 @m%['J28C ETvm)?'sB~&rquhB*O]CH֬CXP-VCiM݈EU}zxFF܈c:,P{(;<ª/ǭx=ZR**]=#D|YoZ5~DkYFcq,* u{ x{ӆ=,pM@muϜz-6Cѥy 7 /e ц[`{*  ^n fv"ّ6ZP׭Xwl[)P읻@~_6ɁNg_aO?K')WEE8s$j$V},Z0穊ڑ.||'gDEc\Y OؗEH{{}X>`d\<:Xku>[LT#e64"G}WY]WEZ8Z3kv,>n%KT̉" Usgz9Jf\2\=9O8cAu b݀.H$DbpO+vŷmݎPgy ia3rd3zPUdNy v:i+X ֻCF'`domn/VBv am  湵 P-[mc̝9h5&*ʒkq]f5;v=oGw{87> {&:ҼW`džXר^8=Ҙ1sK-(N|r1!1U wyA, ]Lݏ͸dQOP>y/Yݝ;sq_O|[},0qf|C+ۼzre0molMݹdL>[Co3{8f3 \P%.PdskJ{\ V,@ }E*%' 4݈DDժ$YY]Cr(L!d}`>v#֡{7C\HCo\%\"H$Dr銒ҵu p(vgU3G[,#+ @MÜ-0/b7(/@.c-ހIϋF&hfn,2yK ѪzUA}sEO>7DQL|o!K_^ǹ& ޵!E/ZM:CzI(r 3wS BA.筀P5ӻGar#w`g}u3sq"~j+bQxYRڟ2p;cPsi=ۧ^vpT$*wF0{ 4\k׉G$8s ʀG^  Ϻ ɌӃh}>;hq֓?z%$҆@\sŸ5*0a̢ W\q|^U0B&\"H$h-Y_X @7C=A:߹wۦr|Ủ-=݆2 KEz^Tt`,?.A%3Ȍ_{200Ȳ߿B%mH=t0{$U#J(Y$,Y͒yfT3QIN6S췀3B-s\ğD"bbxwcs *`PI>vd:x"yKq6EUG͡. 3C_Ud`ڥovqxa2݇?Cq{(n Y5"xP_( D#(K@2X9`mlLޏOaNJ*ɬb-# $a#H$ׅa:nHYg.W'8wMǻi&`#uS :R4M".V5J E!jk+$0F>ZB(\c'8W7w&pDJ$D"Xfp"@(vzN&ؽtv=Jvp Y.!O=œR\:e`PmV`j34sQhBk:L]EDL6fPBCBM`i,pwer $"% w{7S~)H>ċ@AݘwwfvRLc3(`{ȶNQv1vXX:QP: kv_bçxgSBnhZĀyT\RU,\?HŎ׫~F01DbED ~o#G3Pqe]\,̫c5%T$%IJ$D"Xo|^kfY:vr܎򺉧V0Ggmc 1P;L"=RA_rg-t1t0G5KZ)KbO{9 )c@B?逜`Nm:XՕ{)/E>vs3QqpdF;fnVAP,T%noBgn->~O$_5V-re=.uj c娥"ۀXx#oE &"(N4w󖻡Af(;".xKu}[,bxk "8L|^^ LF"\yENp{\4&'$n-{_$"x' MZx4WB #4>صqK^PBxu <<\~0$ "))˩vX4iӵMB4b檺L":#P վC圭"},zM:X,TxzRD" @D"H$QY==(vfb 1O,#eM*`Kj97Hq(ZTb(PX 08KB{֜iA,T|9`f;޺G ?ŗz"]q8:U@V% R*K80ϴ6LrP0XБ;&~FqV<5 jDD⫎zq9^Hr4ilQ9-G ]|OY0F8oWcHB=lZR>y t 긼Pʋ+~ o|=Humfsf*s B.T଺TZo\a7\4j%oq%&hX @l y~T"N[I.\B\(2yDy8|̮v)W-݂FUK~9[ N BrT- >^38F@K*.ʫjU$%IJ$D"n:(3K]:Z(y2w96 Y)5;G( ?9!ŝsgoӽn -(Lnߒ`u VVwD {ș.f@t0](yC@.8Xta5!lZ,MMTD XS|gɌ~?x߁~8~$ "e!h ӟ\yPpEO$U1FZ]WFvBʒu7D &EL nzh%N O&\Ǿo?W&n?zju1{վc<11e#!&Xu₊;1ci8.2>"cVZ |x'`b׈՗ڪYjqAX#CT୊O"qTE ]8z8Q'?Q7S_\%IJ$D"?e1.<̍ ynQ+x[):h4 .tT ܰQb*EZRYWa2ĂUts`hGVZ >(0501+6`Jnb4 ZzOy0Q>/Nf͋QEz Z/TALnSA@1vMIğ_ܸ1S'H|MF~b[K'hF1w =,ODŵ#~wZןk7 pf+a0x `%;wqPa 2OUTQK}< TRTH*yo|n.Bg\IHeƆ^_G$u?Fqvb(fy;eہ>s1@sv-&Z1gWQ'$."T(q\[q6ގo5TxO8c$l/X&EhJH.HP"H$Ĺ;Fu̵.Ԡڕv%hER$!(#i,O߁Hp~,G5o3P {vdZSҵuXg=Kl+Q(+ s N.IpDË=E4x42x)":V!H$ĹP^`}п* eG:75|Bì./ie067xb[ vԉ fr_U\(/t2jAq:.5֠u~(`uZ޵[U)7̩ѵ%"D{!ɷ]y}-"dEEYC\dj#r]B pbSQF'3fcG, W)1ggy$꘡8O}15]h4S:sCd-#0<* h]"D"H$)ۯ@1*`gUJ,N{bA+T:%'/ե͈!3YoW0: v) >4!oC}i[janup 0s###99 Naᣆxiy @gZ쩮ЊU̅mr TMTb}}siMSQĔ 8Ͽ_Пl /NȹlI$/9#As=LF>;[HC  $=\f#>ğJ.?DySPF/.8T\X=rÌQQHL6~\j-"Ft^M& aGON4vGN)ct1Lq'D s+u1BHl ekcay UynڻJ]7}<חX ş׻-fuOq혹7 29qS_K\7w(x&O38sՋ3)ӝFwEXfYyZeƁ@L5|#ôi?紋(]8h[O|vqmΰ?VzZfw@5??!oևKR"M\gzMnN"sy?])9BP= MP"HP"H$CbPfN&*dlVv4aE>B7J85~QŻBw#DǙ(y;߇w4'vxG[0lHx f2 5 _' h$nD@` y_Gsдt4z]:ZZD_@i_ZyB)`vd.?Pqc6 RtK.CjXhZr V(D(G=\x1D@IJ$IJ$D"| @ì'~@.$8Z3} bFu[{MjkFϹc]{An1+c̣dW7<͐@"fJ `%a$T橎/`Qp 8GҀTmaVqj{tQ*`F<^?dva @^Y'/D"$!r?5:zYCƷG}6A~,SNq0ZmPڣWŠ_T<a )b*5jLJ)vBPV/*5lz"זAqw]hD:En.|IA-G˽.į?؟~x`Sds4/J F((qHCQZDQ @.?J$IJ$D"| @ao5'#]jT3) pd [E @/su5 ckDhEcO?6,cjVn7/`@ur Ԃ ?`0& ,Pk &+Tبk=☙ْnzQ /sy{i{H$(Zӂ"A::F$ #~ $|-5y>믿!eP ΍_u*}z\ڊvs - p1Eun$ٵiߦ=Pti9ǁȔqԟ2lOfe{cnZ_û\KFU¥0c@LT?-5*'2XU-|m-m03?y /|ρ;$PH$ (HkƇBCsD3bsې| @(ُaH5Gc_c\&?^;UPcczq*7W{φ8tygm۱$k;fL0Ná}.zUH"ǷuϵcqbUK )"Otm>T6&}AB&>e"cąMLHjʻ\Iѱ/䅟 1v3OQH$i  s%.i8[9MSv?;bTVR/hT$ A<"Es@bJGssF_շ_ v3lCo&~}P=d\ XҞ-HDލh(H$(H$ $nu?8:FYIA9R{a oGPCg3@!X\ŽP0Ԣ+/ abyA{x~9h.s< q% /naN!yB#(TYb?-[ۧn[<,U<𷁿thg YaH$4!~/8$p6AX5KC@@E [ `- Z"ŤY ^h:wX)tzTT\;uVñ"k5f`_;%GLBv,b؁oj .E=ӣ?N[!,rNK>sòuouzs/~(o96iUQ3[9Q5Ih3]Q'2}.,QB9\v')}KP"HP"H$HOLp_-8vEq^[enh62Qu]W+ȗEn" V6Q_}L;WMkۃc<DǏ+ZB6^}ބj1G)Y'-',\*v!fgJ ğU1W;㗀I D⛊ @F"HA_!GCb- CX+HyM 8uDbD)qc5v,^BQ ]Ii> WEPUg|۝m"KL`gNpvNLi &2o|?Fdr0$rnln#AIK4ŵ /'C($tw1(m@{>@D" @D"H$^ (ͩ՛VQdܣup b&{| ƿ(_5Kus `P'Π=D+|E-a_wm2œAY|Ny"~\emla:STbJgΕ8%N [,W+D"$3qJ̻el&E;| Pm~EW"bR1PJ5:r`rԻwq p_9C{G?=7?}0$XSŷ a}yzH0V;q%>Hܕ_S((;l)׎ƎM/ZCU6L.-4qQisĝKaATv/H$H$Dk/rF9K9Kkn85G.&>LС =,@WnLzվ.lQoD 8ddO0O҆IiP:KyЪb̥ȉ 䝉Jn+zhD @qvo H$ ch ȕN{ t1n zw(pd q)C_O4#. LۣQ_O)E~;>:Z -D:TbbL':N\߲P6R%{dMtwQw@wX rX>ƤWoJZ=6*~?t|v_+A#tzrn< L$딘d1U3wx~Om336H"x@^B㛟 'R,P칟l. 9X yϐru7D<9Fb #p .0\xLe Ԉyx@cl52KV_eqf\>cq!%wNP"th8iLQ~۝^lSӚۥ"m !&iqDA'Rk(HiEڵ0$sձvŦ]:Bx׵IcDZ pl?B'>]xR k}@͟D"D"H$/TY)~71ދZ ո)Ǔ׿p7;8t */m= 6 sah hGToBKU`#Ǡ1  c.Nk>ծ7/\?_=tGW<{LdY酨wBu5gbP O$T(AB'@&^lq-߉{pbj:y]3LV>иBQ% Mύ9$L"BN0yҾ_rvkƴ!..>S#&(cciL'WPjG[Cյ6rFumi xLYO8bJ{{`.h=bp씹EӞw6XbcS-αY&jR 'b53an"#A[3珟UyҾ @pD" @D"H$oȅ~K9UkpPuݻ5lmlW_H;%z"xEc#(BGC, Cr"ϡ2,g@ˈ&}kmuSƏ?6mP Aٶȥ{L %SNЯFS޹.qa}ZF'tW0p+Or!YX/ "FQ/7nag|)O$ zCSRqP6O_I} 6@<>4[a#"A5_N vc$3:(tC cAgzwpumsx-'`ǎ!k}nIejQ#c= P[dBUUp>7czx_WRUV9qXm3) ݢzݢd<)5Tϭ rNqJEjq<٨˨=uA@@ucMfT}EZ=Q\B%P"HP"H$}ܡsoA(AUh9`s/A`pF#j^o=w-l!o(_@u,|> r)uJ u6Dx1zg<n >1sqRˠWeh?cg`V.U9VRt^|czCz3#CS`.YΞ9<ᄟJoD"#|#9myɝ0;whE|0SFrΛZaPe*fZŒIZO-Sh0JF cH=f[/rܘxI^H(scT0gm\_Yc1Nb]ܵۅ$;%?S|n=\O_l!V 9r!@oc᫕D"D"H$/3U)WOl9b48fvvMg 0,^ K+dD~WPłɽKp^A|[0خ˺.1G@ 5"H1GSëc"IUq egbndB5\"`2W 7Ȳ/zYVNѯşrLQTkZ-AƂA#QwlAm։D"A;g"h6dr#T}бG;nhh6^$PTm^̦௔[~n1<3jq𴴵roLJkEPtJ'x(aJ!sMc\ % F89t:U^d7E8 n8'Nts9&?ZѤ^n Fe/8KZ9[Z NR,tąQ8xby^bNn̅Q$HKx8 `wb`vބPekW>SgffDwfB?!ϫ6s͆re:ظG\^%.{.s"H@&ܜ%S,)`i ~C8Ep0RSQ"1!.65[G`)ud4A>-!v"Roq81D9F &h˲ u{U8AkAPuaN1ޭuu!JDs̈́DzeŹa@D͸$'2AQT8A)pcݹBxlfvLՂP;G4B?ĝC¸˸]PPiT"Ny?eS ׹r_9MofDvD773)ќ#W.lTv#O_HoD"h#i8j" F|^WXEE\_A{/2ʨ /qٗvRU\ti'C5="-D"D"H$/O:o=dbPAXna&r1:u9s=xc3Ng,\}"S#3` tͥ!8" }@x|+"G|uNj';1Ưࡘ_/j?Q >C}cv-t `+gg̎Ό&r*~yD\>x‰D" (-yv5AQD!#a^4 sBN\_?sFǏCIM]ss޾wߧZ5-MKqxLJqOQyyYZKc$ST8>ƈm esnE?k7P5@6_,Nt~/I0P}όQ2T9 F,< r) ]=Jn]@ȝ+q\Eq9#VsPr)D܆H$^|tD"H^ۧl!"Ju}+Xqʘ avmo^-; pow#WaŜ|_5·/{;\&pD¾!kYܘ93\20셆~.zM'`:< zy*_,+7; ?Vs~m!! g/o πAz&pnv?񇥡P]4)i&O,τn>\L"*=N~mlo Hy;X_o4sk`s"#0bB|nc)A2S 7NNY'T(y:n=iݟO~ieAZD % :p1 No{;s\<\;^ 򯍻>ן0?[9gP\ >Q 氊)b2UyB0LAp"M!x"aB@D%G_Lw!H$Dt*>@RY]M0e3gc؝=X@M!X\%s!=2C.DxXK4]?Fz߈ZFwv,o1'ߙU;s@F>`j2uDbwN .MAB0j Zj"!4.B1#M!ߘ|~є>-ހDZೲekn2( EF)2#˼VPAfFJgWˊD]4&]d]"[\YI_1Si=:: 0'xS>,fFa1 @PYKs7gd퓟G(SD"93sPff!ҵ9׏6!B0Ձ "~na9\!!tc?2 #ףs=4.ێ|="3QBITh k."*Ap`v*:2/:UZ]1qg&DGvx/mqPEkKWY`( F^-Y V3TnDC'45K.bEL{1 [d}B*#kȅ(Pd}czAcc̀\?`2Lh2.Ǿx2ҍ#$_52ucxV:H$v:rYfQEM^$ þE%5ub2~݄ ٗs~Y.bo9:}['Ȏ PTe}+jU U}F},3[Y Mtǎ&VjwAnr:eZs_vR ZZV˽vV3 "8WRUB[q`i|]Ӟ;ɣcFUB -l1}!q/أTDx)K|0Ƌ>F@2nBʊT! 9bh=KO"F,}<賈( 'az'Į@q' -͋&ai! 6s<^h2>_P n!IUAkRꪄCcgNKY}xnٞK@[h=e~ʴ0f1(kwVstQDu+rei~Ğ^<2>i &AڝAJ!B'}eouzaFU |jP.3Se섃CQdWy|Pd|7 S4#a(vEfW3(Lq$ND (HH$D`?m΂x-,A5m#Eʉci8N xWbU A/Q A&k $ Z2W78v #dv+jy{tUXs/4?@xZ9$k@v~Q/k's`&#'T5xb iJoD"؅$I4(2{D*6C-g jdE 31+H!usd_>]X(tQ? i~$& DE;/sJa`UpT`(E-*g+-i v7:L9uEPth͜+֝3TVQh^k_^sx6EW+Q? *!KPvl.B@ ytq$%.H$K,"v/"?/ya~L.AJuKhqr"8Ѡ`ectwpE mm [X *Ҩg.P]YXP]?a~ KO9Ka4Bώ_zdBί BFڻ:GmnFEgKk x(Clް[\)qэ` .>RRO?r 'fZWUN H$ZX86$FǗ:J4ߗФj,QnF;\R{K ٣ y]~|ﳯTDHRR ?'ϲʼn;SamPeb>~Gd&*)D h~uJ 5p#qF*5BpI`_cBE?ם zh|ԃK-c0Y.8fI[о!KsfZ7ytN")s ;` iGn)_H\\X5ɌE` ֐e%UJrxmHfb!ksy&?DvlNe D sv&P"H!D"HlXFX@QD j+ (^)EzͻQP#L&QV@Nhtus-Mw%@ ۽qY_79;3~>`}@EW'0hs'N WѵVM=|noB[=e_ߒD Bɴ+klGN!^DC5mYYq>4EZڸ]W`ϖ|24ge9Ñs[ȋ g*`ZQgaA0&_ `m`+/>|G71@|v}̈̄S2΋Ƿމ/p򾅇Xӏjk䁑 _Z' SGH$% thfUTBEнc|H0%x$"I[<  vW?#ûv[^wx)I?T(rSQ Ap U広[d&"LUOoL$^w;;-s1h`m;9Oge`UpCZ6CDr`ylR`Z^h=8_?]/pąSBP_Wͨl" (|ADH$DE%=rBM_hbfr; X@#[w,qFUÜѠp`gkuna18ώQn yg߬m A[H mFZ"wQ#hSyqKⳬ]z&2x㡈`&oX^۽~44gR4T/M8D °k^@hiay‡ \ϯ M 5k`QY>{Oi?HnV~/[0) _9g2Y3?9s!ܟv#"ivln1-̢Dݺ--cW4ַ2:|(8g`) -GָfߠemZ-^:%skȪA5k $(H$(H$ aPxiXk<ѸO PEƾc! O2yo鬎 Ih``{`M73x+bkS;a88\ YXE'UL`4mc@xx7"<_D^8akM΄ϰzvtgzF&\va+A#K4I4D[@ A&*WU&P0!ܸ95ZNN"d9OÕF 3NEUQ'[puB0zo[^ǀ/ZyZzf5CD]N$%$%D"xaYDNT/[hVU~ZGoyUm((-͝gsv ;h{Ǒc7;) CJ}k# ֕ S AY Ğ"nP#~_vwR)z,ۤw&^:gGtcVCn~N޴zMw:S/rU a94}$WtP񮕈&H(8=+ڜ5abR qD~x{W9qq9Ѓ?f.oUl7W8ŪZ1([#t; /)ݡ3D۝3ߞgykv)׎?!23tV mu⪅U\+]kZ?j~!8Y'24B $%-OP"H$$tQnE'BN ) xN ܞfnsv|+ ݓ) 0suq[ȋױ}|h<,(qWWXXeoN0ؠ.ǣhӬ. OCp'qR(:C3@ͅ[~rQP;Oo[$8 9 #Nd@+&H$HN8n.~!`JX8G0q}`m³7ċ_9aOL *d5Kcs!uM!wl@DiZB-BLYwƴiuv:vg [w5{rBG]fRfoNfP^"3*O0Տ?ו@DeMʊH$7>muh ;P"Ue,vqE R^'A("vTİM̕&[sW}`}NoM+\ēplAUBSoyyެsŕ{(ZM*K;ףOWz&{z-*9qjʻ5B&]P Nd=-(ѓH$^4?20CT%J <Q\~" ׶ğ ޛ3]7+-1`RRUv8dR;n›lߺ+?⏉D|Agc~0uǮQD1m'l 8#my'-KIuFs\ޢVMU82'1{‹6wYo7p?aA$ H$(H$ rm ȡFc@ "\{]4FiGD*Pj EǍ*ne ̀1'w[ڤJN= +a<18[9+p|6@C^@V@߃ץO<Ҍw7v AëV~]@Tz&{"C6>b|I55 ?"~h eTzEQ<}%W, 㝷 B64x%S$ަ H \pB 2"pPC^6!2CrgS_W P=gZPK]q`ion!/$⏉It 5vA&?:c" Cu+m c.XN5{q[(ܺ}ߝިA&eNU6ރslKȼu"/>'?q}q7HP"HP"H$y GdTPx!D\ W(z]~U/ (=3K.s܏dK;b4;s{ovyI(8)es慔s'yXԂK SOg`2L`'tx, {5ߍU n5ן[u. A }9vE/b ^‹&ƉB"Ə,~ /"`?]@5}O$`(MK#N"_^Tr}>+#>op <:EPgۯMu_z=`lAeJ <ﶳt h‑HmZC,=-ab4q$v}9-NZ8z}mڅ,O\`#qΣ,r;~h_w*묬2*+cxEwn6[\ls.rC&o/D"B [QGĀjnj\ 󞸇  z$ZGU])_=pJ  A=RQOh˽Cz!G):(ln]!ڮP,Ru ލM.8ėa?N׆1 QOnfRnaJ=T,|T=@ǔ~Ѐ}JԺzߋ:Kſ 8 zT"x>@ %zEx1G"ljTo'bD,R#(/f #VNyE]jZx͗)r;%Ọ:EaS R9V<6lǚ;p-\h_\qyc?NuJX^w=ȢΙ޷bkg*#b4G=>oEK^z*o@/'H$(H$ R ^zԻy}//C . Fpnj&#](>1C> mdyDZ0ۛ,aDORQ߭֋AOA]W[|}<9peͶ,u[PN˪\"s!B@X.c?.0u&t2Fʟ^[̵Vq"":kW$NvUbWRvğ%؎X*%RDmI7Xf`[nvu`P]}ooos#sT]ۻwra~/-2>wNj<"~"XAIJ$ 8B"H$mv'Q JmJjhPEe3džfΡ'm4?9祠րK&+8zv?Ze˳hx+Fs P__x< ≕;DdmDp sD2>Ertګt:'NLd=XdyM#Z^ C@ >[dRA#/L89cܹ?YHD"q-1yŖ@Fy; |>s E&11)^ô=0|X+*b1UP1:)vn $AY&=q 5z6GjC(9el jCQѨf ǯ{ĘC߳V (Yr"Vxr?;"4S\MH$(H$kQ `Bq:B!"-6Eusc=!/٣Dzﭾ fNL1X+jyum]XcnT$k VahwCx?9U1 ˪DQH[[ $jĜ(ZN}꭮|}?n/Ǫ)S&"Ja3oYgy3j=>y!woD" @D"H$^]r( YEb  UeP\YJ="B^ @'|UZǜPP~Sl} [䎷8 \]4"Ď5(ʼJjY12 "xWY'V? ?]g:ʚ `c,b ۲3w=ͼG)qI'xML.<,ZS P%m,oD::_':D5"Z T$r^'{|V.N 2Zp @ MH$(H$ī r@3C9( HU6 O8fܲAOsZEɿF(-6 j ald=Zh.:qغphp,z7ZshBDzxvA"P!rs .HXQs {.7,Yf @6`\|Dջ+ApՋ8Y` ]"x2 W. N/V]" 8Cy?05JO{+NmjE+ &ƨkꭕ±H]EPTN--ǀ>5"P"׸oD" @D"H$^yvc J|\0OhPu[ AN:|J!UdX~CtcIk)mhőš@5HP@۶񉶏[ ՊKHp{"DmyXٍ ;/H#kȥlVWt7vڃ:-r`- p7é'υqdhO̵ TKͦV\tɦG_",oLETň[o;Ñ}q# q#/s5Rl,߮py]"m䒭gb󨷨W{O0]s Z9<n `i7«LoB㣟 x'MH> D"Hz 'Pxu@ZrqD\yޏ[oxp~P'uN7B~'JGA tvn(%! 0-P c Y[K!eGZԣl|k~2OS~cBA*j r{^CE>4[Kn]4nZ#bE!\3ƟzAfCGg$0D⺱xukD _se\tηOrfe1 }cз7M.bjD:F_^:BkzA#~ޚ(>G>_$լFѵE HpTX#t33Pۗ?eYc) AC/*a6"'Y'?LZD"H$^2T  >NO/ B/UErc9Pԩu6'6G4 .WkDx?I0?.5.\]JȜpm, dFG:ϡ=sXfe c1OxOO"D"H$ Q}psxCA5[I%tgm^  ~g"et-j#ޡůWB1EA V4?9U1$K0y/ɕzRm$H&Eچs!rʧ~RYpZZO`}ksa-ԉ9L. lCn"IEz17o%̱! ܱ"8H#=uƎqX;(*٦I`ӓ(@wОƻ Oԙ.FPdĮс1x$HԜK;075bQt⢍ֺˋ֮P!>L ^#x]52O#ވJoL= d `(s2VVSR(sl/D" @D"H$^T[x;#3U hZua¸?21s@Yj`%#3-<;< [颀NT)of*e /4'annY !$WS *%8VZy 27Z3mPu@VD6ӿMh3"ZV\{nra/3+[3"G.ԗ;\OUuBQ%P (=Hfv9k:̘m\ 6}1%IJ$D"qu1r>voQ%1M)+}$CԷ']jw A`K['id=tлG~hvGcCi*`1d X|?x%Jk++&NRK)L>3P!ws@!l0+EU3U/0l8C.":͎,LVssta(P1[X,EAE-ĵW zmEg[ zJD"q.J 5n/鞟1 oO }'΅njDE"!Gc}]ʂ~ő E:1ėE%@e'諑7^FDYK5t/2`~X>\ůg@$SogπP(>+'e$S~x2}%IJ$D"qu~8HCĠj[hod[6Pu bMlo ڋo.S#Twf|rVgw EP9}n?PyQىw/ A9O2'}eiY2S)d-SNS ?K.&S`f ̓=ݦĿ^tCt߽CsQD)XLf9}[@Ejɒe޷9O]ޚRGu5c"i |=f.H. ?xMOr,?a2J$^i D"z{ڀjPTqHqFDb\_3q*(N!.]…TPDE T]vpmaLv[`OM]T7l82*Tq-P Sؒc NmBC׬^x#Uwo!ׯ ?S<\:ol\\9qR`=)Q'Y`ӷY"H@D"H\hs84d*o/!Jo_ :_qm2_UqD̆0襛q4G bbȎ =Mk/ad*=49FX)E~ 23=DVF T]59t:0um]`5tם-oC\] `f.٩6 Q-C;J ff.1$Lfyk!;cߖQ2|@:nAA(s">MU8&i4BoGE`q"r.oKN.NnA0 $Un57D%>bA[vqnr^˟kR'<kF+7a}\_XI1@غZfSc cqIZ ܃P^~ɹboy~QSJ$)P"H$/P}DZU4 ;' >ŋ?HqC%ș2EPRՠ*e~plm("^"q?5Am;-9hV)SP󓳘bҘ NXZSe{t<3SeYYgRRc_&]xhLwW`'`m {^aw}V"d*k c {f%"(RV3c 7cV)JBAzU\Ƹ1ADee1"U .rוfw)GB:n\bNXC11 hȼL,/DD]լD\VGxu ǬɣmO8<0'dxr#FH "r=7a >TzJ$WUH$Dbszmj[Z*BKNIBJ2܍]1U]N/Lj2í&{^736Kpk#8r,RG-=:'пk 2w.Y[7wV-|Vau2/ 7!2u13]̅.2ۭ zo݉=4!3Sh4KofKY^8ȖCC}Oy4Z};C (rqnI:37>'MED0"?7`>.Du V55R)`.=KeO.#]%!ymwn[uo#w~hx9AYH<6GkD!rĮ.nXŦQ %P6ã \2tnG + ,>2\"]j1p"$|HFqʼn-h3N榡({ߥ\2?sų34ehG'o(Y^eN goB 8ht;wn%ֻg/S7]([pCeTZ0"yU` XMD"wr^Џ#K:`c^P\D\05QX g,nƤVM]Ո65ck_׏׬<2..c2h}IKMw/m@' >D"J$D&܄ _-jn aP? ]#4EE&LBQ2W*@gɌE~.S Y>ʢ04 PѤSȾD9Po1`4?5CߜPrX]6f YX_+r.>fOF(<-2-).x clC~gAQ E`_ CfvL3V r  KxY"Vbx:|`"sxWpac?A  NGw"ց!6G v> :vLPEۀR # &ܱ.l_=&V4FNLz(w6csհmxDDbsV@ӿgՃncx|3p{lr`86J+b@AN>֞+yKf}[DuB5'KDplb_+\&?:-@2cɵm"H\r4Y&D"a@PkCKU^ԱNQ#PĕCŤA@me;O4qcy9vK`Ar3CbTa?6U-z /}3=z`}E{0d|[P[P=04fvA43+P!#؛G! ]̴^Ā1y H&,wܺQ~l] WnuU̙vJ+_ZO^l:aoqXEӓ`Kg,M2hi yÒewe3$0(L.GfgË58Un^b/:јZQ jՅ@@;=eZMXG~ժ@'E tt?z?jXqb]ú<i1j-q&N8'jE|z'~N/2N(Sg-U(~&$x+u 覧J"HdiD"d?pt$@5n\wDWA#BNM @UY* 0L% Vf.ytAMXk PTk jw39kM:aW[8Vqf-`*4kӱw 4>wY-x#أ(Y y$?&4΂Σ@D*s}*f9ݦLDx6'fevG 0Ǝ@lZUo™fiC thh J(oxHqΞdq}\[' ⾱OoxEU[Q{uBUpD| bPŚY8@?=e A? <-tZ .$QP O@(uk"‘byMXuʀ>xtl4P||D;)EF}ԖyиM_(jp,)Tz$KCPD"g 7;+?T? T?QMn|̏n1]?~XU 7TMSЀf]GxP29'WK wFj>:cps_] "wp}]`w4ѝMx tT DqwZij 5⏸,,jYfMV>kr?ШHPA'{\L 'Amj$g?#h/JND +c;܊<39lo?J("pBъ7qe@րP3٨a|ŗLaA'UyƊ\$^zۀD ˎhl-}M\]&6Nj,"Q>kXA:1tfGd <x~8R.H$ D"H$^ -7&k,7??CU}Y3_AsV#;o٣'v?mxx 2:MVW讵8r?a(},d ؾFn-3dC՟󪁗+ 7;Sm(n T}] <.s[>\3݁/\L;[a0uW^|uiWrX~ҥ,7dz |{ig|al'% ;ޏj`҈Ul1Xk\U{ w/)`9}$K?R T D P6IS⬀LL@>PD:adA7s6kaTg&"6a=ꭝBd@ $ dBTlu ^t+ʻL 4,D"$Du z@ǣ^+}_&+UG\-D9aDc[?G7d(J>{,Ńrl#R`Mܱue߹iX0GGrz?];ɿ|{`KY.V>Y#ã[-A]eЖw MA[jk}d@溘I֭ķ,5Cg{-s{WsuUwWϭj K HB#(q0!q֊@&`c H`ZHh@-ԭ{:u:*uM:Zιgy;(p頴ߙ$HF!)-@ F@^l[<TsHrs!b^s,'2ƫ4F$ˈawougCJ@kEǣY& Q@cBqyx xѐɮR .!SW M!w܆% & c߾@2+̕iv$\!pS&} Ԡ _@P-<)#F ;e7c"@&Ox!vZ)z@g̎,9180l-3 3RA@A@%+XSIJ7jI;af`z-֨>Ex44q(g"> ȩ)H{}_HP"*4J,7l ?>e؊{-ls+q,L!N &geB`O굨aQZۮ74R@T:3Vu$#4F37 )Q%~~ CĔL8a)_ Lzg oC!GLi#zsȯO!}ߣgm7=j$0~X@?_c8#cf`O[ TPPPPP-}91"Aήְ3ԗ3!U;v@ֿmVSu[fJpBk8;iGɌl[<(g_}:HMrl^ZM 6)) HDбC0_@|xݍgxKa+)NC}Y2dtESz1y#-#;|%l#޾jAN3'@ @*k++Do*D+ngP nrxrpAPTԸUk)XcQ0PX%s2ʜml 9\0p*(((oG")^$=}ʍ PmH!SaOAeyJUM{5"E@l Y2Ϣ). )ҷ@ dm7"hT6x%<ӖC褲Kʷ6m]Wyw)h;"H0Sr1ژRISѰ!խE/NꟘ"gĪbIx@斥у0^Mm0}-'Zp*r| f+r{,>,2 Q-WCoHKܵ%.?&p,~B @𤏀`X={:L $G*W3%4o&@PHHu\VH"h1؛?QHw̑ޙ%+H쉴}P X.$- SZG !:`KX,Cxs7ƠCõX{q!5}j Tѓa`<0O/m@pmZ TPPPPP7цx1L'Z!6b`$RO|^G1d:dFE=h簚J+s8=]DM9UL ւ4&1g>Y4)cABԆidDG IHD/5 7*!޹ -N#G֐**rbҖԥ}{ =elinLKܹkK{ #ȥ AtgaMeo)((((PAAAAAA bu̷IQ_)@ys&|;7ޓɫ`}6yo,=h&N{T>dQ eɩG5..ֱLSPPP!%(((((xNCm(oD X4FPMJ'YP1/H*;2TlklP+G,7V'#őXMP (uʺUy*>i:WiiQV>E3B VG 6N BM_[O ru:jEM_t 6GiWY ,c`~bkKK6 $)~%Bkœ߂j{cQ PQ IUR ]X)>f>)R{O@x2EBGIR!6؀ȝ-e-yuH*'=B5'bwlc``Ldȭpɬ0LB'{ \x ԏ-3@=0\\kAߊ sc\*Z=J'5du "XOXϦbҴ NFj !5TEQ"*;m"ϖHLN/  U#)I!NCl+Li'X] BU,M 8K醧}tQfꆐȠj8U@F@ ]Bq H䈒0oHDcPtuLa#RVby04P&Dv rp"R> !UڲD0O|Q3nueғc7H} g/S[ab˕iX!> tӏE\\LDUIUeAAAA! f a^(;PG:Lcuӌ$#~\5tDzmc V`iv -ҝ__DL a>q^ FPe߱J=7ɇ5 ʍDHdpEi-/fX['~xz<g`:*55tOqɷLxi?}Hmwh ӧ2( t$+#m{  FLKz(`eFXsU=-X24'N̤4G@9 !frꭈ܁b*(($T|է2_yU~XT(<1 +RA,W$SqG=s'x|$['OTO `[.Zn1z^ TPPPP|F7o} ;:9 wPk^`TOK2g#4lk@S'uhO uNN[;حd:+HFY@E ISEQQtL'8̑ #/hCJq#&jڠ ; !wP`,?B;罏gԉ4jdN]][kkȓ= tS1ZѾ_F uf&Pv> <$ @DFl QԈy|X Z5o)m噃.YYӣO:N%qB\&8UM6#@~7U+((ځ:#Z\2uQ 8ɣ Xu i}jq!Xlө"_ڷ0<|4\fSHiVRPPPP+BPxXAdNӴ8K(}j>?CRYbG9@WWҵN]EB12 [ (h)ЭA Jrg6Eb2/M>[)uІь}_Mϟ2SbQ U *RlnI!x6#a匉vn9#iM!ٓҶV9'}rO׬)xso>4Md>hFHhj$˝IYp833  ؉jTPPB;ؾd$äCzyK/M^aЌC}9UC~} 4u & m=N\BB R@7jL^z:;:Stͩ)V銄DPM72IԵcDJNit2 j32 ը/D @ R#Rft ͙0R's^I|j?"\PHă*#$YjLT-&봊}уl\ kp֤#y%whCb3f! [7 ʼbec̦iͿF%Bm(B : Q!ЮC#+L5#A ^^~^X]4K$ Ȭ4+5JV0 l.no2XXj.{3Ph,]{o({|Sz.~<<=Cf|muL_أ,_Z?@T@( TPPPP|BP $j/} A bWxsI7w|ڛ/^S,6/e9M[(45^sIeQT !<|K#(e:OԵRZ^C)O}}I oZ?'# kp_qXY,;\=Avlӏá}p$y3n^c>~D'k4=S=10e0Kf4TLڄtM7en@ R!9 3,6]=)$tҪ%w2]gUB^1cG/T/ FS 5ژYtՇaWPPQLL,,&2*&r$.dѣlсЬ:C=I9|VyB'Ѕf.s\ZRG@N@jQ], -vIj+bq#~DDqݡtDuǟ=AB%o*RJ˲NJu.QB8~5 ME$Zg*:ڃz?{ |*O[jKA`mΜ`ԗapt"B3rɣd!X> {BݙW1U+OkfD'{aB 拟~7:DfT`{*3}*Šx:v8рjI]Kɓ-z?i!?ޘ!o)70>OPv5Y[Gf=Fi{RPPPP%(((((ft (("1W$3efțCrQ#gISvUSb҆ 1;fK#!$N=`ܚ`SԘg#7Dfl>qzu` !4hp?6F%q>?imwW DVPt*<3v63XrL{1m09f.MҵtX]KOU4)ke +W!qĻ'Zs$B?BȒH?}:m^&JQъޅ̷:"I2Em_I#s5FDTvξaE_/`ŞP'hL>Pm`[NN‚IP#vz|_-.=<=qzh}~}CxmC Yyv}|y0dC% AP"e_)(((x(+((((bG#DE䕈l N-mm,Zs' gטO{ə{6_#~=}kq~!׌NGV^JdYq 5b U@hc `Wٚm;e4 U|)?8 `ׄ`gX_eX^3p9*ZK칰gm§t Vh&BLh2))l|X朙yջpaR*W”BcI#"$?CTk8޼ >_Tjid?۱F?: ΐ7j"!2"yr9hHQީuRZ/)POpҵW8oAuƂ:X|"27aYSQ Y ~g|z72h r:3s?/!hdh,ϗ+?p.ݏᕘY9,*((((xn?By5p!Qas.bR f-UEg}X nn4ӏt1o=6l{uV9^ Ӱo}]$jfq66o0vs2{.),sp]5=d^+F,'鹧qCǷ'o n}k|yqҳ>LsP_V""AD s,*((((x`pmKFB$ b$G|P͙>sE+tۡP R"Ñ1(F!1RHӜ8Ǘٍk==e)]y*h!p.S[Ivl1-ϼ5q霬0A㔣pl~6AxVA,xՏ{`ҶqU<]B\XXHU5T: Y'3}1$ #`>PP#Rie.oFA~>[XD@?BAQS3ء/&-9t!ϳuDB狥0I!K<ė8ul;ذqtq‘G̣#IL:K O P9E3KbT<LIg|.[oƭRՑDxgɣOH{QA!M\_Ϳu*;ETm:Fh@3Yl*L#fss!0L&5,M%yl߹W _j[2hyPŊ-5sme_~3O$h|i/LthJU+U FhNg˪ށH5|~=ITǑ)F) _AQKQWfϱ=˳6~|r{g9lmA)~<=UunVP=ӂ 5 9O_p':=Jԓ1va\w&Ӣgh|qs}[ }R^3/O̺?(*((((zqp?!F:3+[),A2_= Y?촞@FC\˷6_&5Jz|n\m-mmT5x5pvmZ_vV6U"1 `$PSB*u"RU4Y͍]-`!z~Od=#-O I'7Y)b(̍ϯOn/۵pւ _['ޫW 0@H!pC}{xuG&n8I$W:?g_/?W߾7/??>|?yИ.IAAAA! >\ s  OX[#AɫR^C]u&4#3…a)ZqhfSUt ڠH˽!쟾epݷ)Pb#(BGm:?Y *ЪnfQKͦ6<]x>fׯR\8qta~,h4ިSz\J%TǪ?|zwg6ȓ.]7l%E3"ǔ+`y̰ !3$J\?L"}0~) 1~x`{k*m ~ZsCw G9Q<{A~SFFLs/ abfX5TB|lm4L맧nu\?;L`iuqQ?LЏd&-[e .^E~\W@98|[xkf(5_#5% gV):ya/7fk@/j>vW"f#I5TqG->EUEc`6@Ӵ&:Z5tD3fuRifmw}(P}z]A>S_1ę9_? hhڒ?DQږeM!8vpoOO~TE .Ʋ7!9qV=Oj$#4pVB^`yfL%1K=*y1Kc%&pCt) .}ʓA5A{ 1.`Qd1˿V24uʏikðz +g7NOc*lwe')(((8U(((((x6ލKPzmGҫ\a$S5IRβj*@MYv?_nS˵Ql&Z+~J;U;;EN5/@TQ@H_ښG}͟wS*DD\1K&H>Rj6T꠶l _J^=Wz!bs9WJCgNc4$gJ=%So3F i nT"! L-:"™~+Fh^2> !`AGԄfiRKgڵKD]{hF{(vRn^gZ{|eQ.'2m9 ႂz3q/L$P$d CVG S8VY7YJ= 0h`u$ 2@Qmll"x;\vb&D8Rd0&҅u^֕;[/E֯5YGPό=FiR{17kuv6'PָTK4d7@QҵiUm>i?4m0P\zҚU *Ƌ;y7}+ner \uXYԗc%uZgMt=kU?(RW*)b><3'qecwtu*F4wT5{$84" @gڠqTC$!CXԄ1t3Yܲ~ܞjfW*2z!OŸ@(Д䂂 19IুU._y3 "K,f$sozF>RDKY7ڧI:zL]xsU')\6,_ "|7RPPPP+`_3+okέChGǓBFt,f.Gu\.4?)af3zSPnM|Hpބ\ط~ߙo}`=7|_gۜcC P[2()B"*fsqRM٤NW/YXsAy^H~N]/}|PMU$oIs.1@U%o.# * FǏ}i}s ~`{GoPSuFJx@7Pu*&92`Hjwq61K~!gD<ǀ_@AAՄߜ}ô04bݗ @3L>Qy ,}>Ia +{,MNU>1o7K/]fgOǗg*ꟂB\9; ȩWi!^)[9£C(2pNژk!W~{|;@"!|Pg}S~k63+O@eTZ7Bh⍣?~u @֥k TB33uPlBOgPRMB2W1^q#{0F:?ıCSճĩ֯mږURUqn $(rGӷ6鐛X{:T?FbJj #zў0n^ Q1v~ȓPIVb6x(wPvbxz{BM2~MpQAAC5^lvQilo'ww} V;vS9??pk`uT[;S ~QLcll"QƸQ'<ڰojDcG/ S7m=^~66nFiL0EPLbڲ,д~YjMMY8t#uA܃)Oѣ(g"5bR̨k%TM'ԑV*R"O*DD0?ygzjn TY6c@qx_Kꀏ,س}.2{őM^*kjg?rW,evMlzN}3Ju>:by $S /{~ˌ]W PfXQ00zAɏƙe#WcΧ Oo-;vC|/?ϯ?A):n?<^vB\>lNMԙ?̫`3wyh^m]2g緂 8O.oBrTG#ќ%گc򧄩F=wZNϾn7^bΛɐ?)Ɩ܈ MDhbiզgӐfZ׳ ۹_붔GN#gN-s)ϡgzV#%x*"!R-ӖU)?T-E+mc\'t dݧWcR ?R"<#H6))XO<珂IˢD`><2UgpA}!9\jT@_ TiO|y{4QTy  U`SqF2'~6A>tP߶G ߛ}#z T:6Ox G$d:<" TU r) .e Pcrz2HI>hUʝԕ0!k)/f\{6|#Kï4ad1~CNA^  ߿jw:EhNrg[aEB@hV%@yLhjmwK_[/55vN9ʑ8vx?Uh=V#!]RBe|B!T!:ď}h[AT??Gz,>*/?̄h:鷏EγKQ$Qԏ#lrz*=7] u{$* $NԐ}d@y?sV|AA⿑o~4x3b 2$Џ :`CbHr!0ܿ6Dg(ߦ,^_4>Wzeȟ_5=Ke((((( K}"OVt^V=1k$Z*8ē>q搼N]`>R]ͮjLGʬ[*O yhn=,]mThӱ#aۻy a 7EWQP+iBROV TLkڼ9t.iz7x>b}m8w2kKcU` M$P*;n~2֤R~U+!SxG96zqx&FAD)Gkd%KzQVٶ#3]罇JQ1FO:ؐ!n`s m`xcWDU5p393px(0-_ $?|y2Wښ@qȐ+Ȫ C g0rK̶3D _oo _uু=ew(((((PAAAAŵ /ƫ|r_.-OOzo+~ȫPfw2;t x3p~9J4wwk?뢖Hu Woqqbbko#A.EUTXknp}wH5*M#hFL5 W%pt2iF):[︓n8\58'OdF6TMKV*|4)U"v$ʼn۸'nU%~1{-Wtko5FkK4A7ɛm.̓|țs-:&І+NՏ1I@C2ysh}ϑ%k.|@!_b@Ƥ PPPp *#A*WQd t\2 c}Whz=  x ʒ?]@ TPPPPpxs]ȟA%а9/jwDHF qCPOlbbF?MyvxnBkٯDJй8!]?% }g=Ttc3}w׾0ieN ڦf6!HfZ'⬢ikB-wf箭ԣՎf</q1B98bMDA9)< В@"P+A#~DgP@f6e߾;-4Y%?}xիS8`3nw'=>f=nmRrʿUڙԼ~QLY~OA*$ y6E(p9PPPpLk\Qi6~D~8ڃ?"=ku @8O=8vȏaX;C|Lkws^)M,w*((((4dO|PPMlg쀦kW,Pwn2`h$Sy8Oϯ1G"}xLBc}kf?re]Xr3V0:&Xw7~n#W9eڈ@QRY'hj؄_$i1JXuuF۷yF6n^+޽{45Z%i07 sOt+S7 h'hۋmDC SGw=qWgʭ/5k>pzb٫2+ty3OC~~L#OЮ']D$%]iɟhjtZݮ''-<G:嬼:NE'qN\iHP{" }: fjaBHH%KrQ)Vudxf͚kgyܽ:ʖr( 0#2Br 8Y\j,V6{L;`/ )A/Bz B/!2 U;~=uiGOOcZȟ~0~ ~\a;SdN\&C:ӹW C!dh5tJi L!LCM[3.+:b9݈#AP7v$Z Naa~> ՞pf:TH=3 {-uNɿϘÛsAD= Ry"beOlmYRD ْIPiˀy"%p$"!bdNOUM )/RiM͓ D-m"(kR? :`,~ju&gON_o}rudo |m5H x8v!a ~ IS?G| |1zŃJ\puA?xu2}tzˇ=$WǬ<},GzouE,}'S_PPPpM۲ OлB(A| u '/GDU}wkM yE{Fc&g'毎2uYR1c/kο?d4~ ( a1F~;?23)~TjeCJyɮw?0||,&ϊKH'94AjE#.UH p#pw {B:P>9VDԱq z: <|oeW9>A+9ہg^PPPPL\ ؂ 2C7kA~#8ʓ΁.Hb|٤'cϽʟrsbJd >oHrJ=h=;έsaQvFFSZhJ t@`>|xҗF ؗMbc5c#J"x4 9$kfm]PQP̴\"|@e^&(1sMŤi8if#UhѦ35fcTKrRcԩ3콽~t[X{U@@@*xh*eCz*Csk9I8#x$/{ZxY^QK{=&;o!#6O^դVj=Qhؼ>j#z1mO<qőfPMR`o/|EK 'A~X*v.6 $CHyS,HD X'!!?}9U /_ ׃6L~?WTT/n:g.dyxH#ScG2h5?n"5~KO>Ge |p1F$ Gw>sdD{ۿ[-R_`49|n׶~y-ٸy TzCI僠mq!Eim[etN$i SED'#$DaWwrS95iJFc"ǁSύK }OcjjcSY` Z^ܝHE< W e=+P (z|j L0` UNˌ px;<\AAAA>@ˆuą_=NO'}q(=xARDuK3_`05sz~^RAl-g߽{g ᙕpj&@[7jOa┾J ŊB~]( ǟ}u_-c]1dN1#S!@bMHK$D"LYSqZyS M䏽ɃEpD|"Q?B~bKh-;?zfuW_Xz92V4yv! jn❓猄sz ;J vm B=_[4ls37pm bΩϘ"['p~O8 վ_cۜPWAeHEd­?? .> 7A!ȓ z2 2= 0!'w.Dit!~R䯹Ob*i< ۺ ,z,S]PPPpe!*(((xCP}!CH;wD9V/L`6ogX dZ~΄Sj{'S#~~^";@9JJ2=Z Gy YH7Ow~ijO|WؿwEݹogfv ӛGnG@fJ@,812- }ė^;e40׀tg-b# -jDP -7 MOԖUA`I! U|Hu3>DXlWK+?=x[ܙr:TĤ: T7,y=Ñ=ysyY n7H!r$ } s~Oͫ.=ֲ瞙{gtfzg:SJ[JKGIkUDDP(Dcb@5 ji"bRʳ<,}vJ[Ztft^&ϽoQXf{ks/Q8!|?"FBz YsD][^+_P-n1Xߖ˱c4?Lϑ[n\&+I `/CܛOmeHcmodNFpP~A`oS +#e A@@eyȻj Gm,;c%|ʐ>? ݠkg<8OΠ2o}LNzB~쑅֫ĿC5 pP!k|@'R]ept%2՝0 ]hnntKZbvٙ۟Ü SdjJ5>2%'ߕz9&daEQV62mN%fJ{!H=ߢZS iYMrrه1hnsh:ʞgük+I`,؞"y 8W:&I~;Ә`I_挾k9&b#Tƥ0ŽHqő"ښ{ t SBz"~=VgkGdd#E! ן&' W tWs)!9)@yHHfc틷ܭm4.Z~2M-L)pkCW|$E W$jd` )΃(4ܸtϱgʄgͨ$@JR\9ݞ\_eiTp;")I)%˼MCr{A31ĸ;)E 1 \XRT\V 9 zb)|Xl\%R*f>PRQQqHx;+Vn+Qz]<`ЛFETN\SwͰ'ƴX&eR`DϾ'Ԉ Zw. 4@ve>[QQQ#>^PQQQ8x;PɎ6UOE^3v]س'c$zǍ+#fKixbmklUX @غ%yh PH޹p;>fU1]xm_<=Lن@\v3c!/zw}-7ܙݼWwoIASpZR#{|\Au+HjcD+m]GJPab^wz{&9bqWr.FL:x N%'hS!^b%(})~"ԶXBҫw#'a9?#y\LWwXT"%# 5%;w e%q`o-{SQQqb WO@.Г<E`Ď<F|tt fgAJ3$eR܊JUTTTTg炮&Kjp^>YFY!GPض!4.k+_'zv>هS_qRz^Ob3z_>:ȠW-J;IiNkG{A2 @AWlh>u!K63OQU5w9I-H-{/oHw5wO]wo>{ݾ0c4^HӡLTCt1/}I-,*Foy#D)TSyfL[^J?M)Nm\_nݔA茆$@ʧq$`ď%5αg}|CFDd=Xc&PDJ_ҠJ]`1I Ԡ=ŦK1佄'O[{w냪W< f'LEE " i6R\WZWsW'hw 4(οJUTTTTc+@7}'p$y1ļPml+bUJy">cbqe"/#żq"(Al=#2a#l]/=?s9gtKeπa|st濜ЗoVy#oݠ}z+<昈d2khأin[??\Hw[a<c#,Z$kP&v6t龣'>< csG(K YTKᐮc !N#9N?/O^!8P.A@ۃ˾Z)mG@Ljv TCϟ#b7;d{IN:O dq T2'R{Y_`'0.~sezK Gy1TW1 7 h@@{2CddJxps oEEEE%*****G%dh4Oby_+Mߟ䞾$Ђ= ȎރAcpORAŃīWwV吱PlL#co],(]A}hZzxv CG}\$Q=J*c5KC\ wK  E$I1?GLLta-}yuqtD?qt\q֎"BsQ9ҶYN<4YHtAsplɒmlI2(ې(oz%{3 !':kPpz("6\@5TO@uXo>$XOntT\vR-&!R×NuI9*A~(>~r#b5H)0ϛD !ȋ v+ȼ}IA|FaxLX{3".ah(Tk+****TQQQdG,# ]*$$|)8%g{*$Pl#c"qCׇSTPl~zxmA &+O]O"LBpk۹ My0ŬpHӛrg'ϸgc$p$'1FM((M%k4'&yYn 3d&ɲ1l$"*s8Jk!]y[zz~G늝\t P6fѵ-xXk@/{sgDJ ˸/i=Ժ`1ńcN0/|y>3!ah-&J y}rQ`_E8Xb7yIDDŽpp}s dh~_枭a~P-ZQQQN}BEEEcO%;c~`~8? 0g*K7kwj(C>]?AM{es$Hhۯ @)Dj; e36 J}LoI@@h {l)2QDEQ)Ȕ5ܘ)]$2a9ʂN3E#K& qmw"  ʾ|Bs[ȡXjaBBQnWtǬ"5EUOcCx'ZDvH?ɍ_ub-ljưB!?}*** >qhNЬ%o4ЎX3tfdW_%*t8 E#'@(\&ǀ Ío_*****L?wHHr^.Y#l3O{A왇Kv<!@!4t'X#ʲoHGУjX$O~@ߘ J)yͰ}Ϛnr}& Cפ[gn[o Uaݟ#q VM-hvi?ϗc v Bw]j7zV@ߘ#BYqw~ZνgDL"ݾ+xa q\pe B=s!|G!wR3U6FՐD^k򵢢bXXP roH4zw'C5O`<7?>e}HFQT? #.;;;ɩ߅O(TTTT` "tT>>MRM&|R6.-DdO3 R@()fP7A:mQ jcXQz1LrpCJU$/"$V^l_"6=}哟41 %=XU>{NŜmnFwqЧΒ .-%pskDn)9͐du.;r/fhU[D ֗۱Fznv)6{N~䵮b44:qD3{,J,Jk<"ߩn7ra! Q: !Zhժ#h4|ҔqK)qpj  N 6pɎxPB׹~Ae}Hd ?***T?8> d|a;!2G ' FFD^ԝ @[_,*mk cO?*****(HYU>mm f2($fxM70a0 ,N{aSxE// n]pǫPrJ(;R492Ϧ(k4/GOꦹi㉓ܱ߉ x'iOs2a!sLd'Svc%G(`845@#:r#)NҰ9Oz.yIwOoM2SyHT ۢ $PLm5y9~X߂lb9nT^"'ߝZk맽gP~^SW0_ҕKSR蔒j(?S'=>`R&UTT8sJ"'1ХW :iW-aߪg+eޖʹmݨm^2{h1VJIÏJUTTT<lQD.^@DO?/ OSaOuA\L++J(1qϵY.%Pw아FзStz7",;zbI/f_naM/Xw %6~~'!BϿ'&>+UI:TndKs/)G))HFX*dDu)۶Y%Ҧ@K 4ӱܯzn-z|.rv_nz|\$jmK6[\ Ī_9g*#I=\OT} "?(NTl-CI̞Eҫ{$^T÷QgEEEE-WQQQx"Tw <,6O8 lW\3;^_ٷP%T 'x;jWz ]i6wԎ I@!.!)qPի2be|9#S]swkqkM^zbt )ƴYB}%`si0uHigs z 0g k@.)O=t'޹mvUewtNHBp ` "ȠQ X(xtDeHAѱf2ZhAF 5ܽ $+֝;]j?筐4ݝTyeu9g=;M;x$0}rxp6MtsBP(P(tl`O8y}} c>q| ~fhu=Aq"ژ24EOsP(\P(0.c 8zn\Mdl?\PRHHMB",)᣾;J  &'>H\7vM/nJWf߳}Yo8~?xo"Pbٔ@;B HLG\! -5'PგUFvhȑ+-PR'9%0UЬsizh8y3D}>GBdX"U=sGCIedYNGV\ )g7&~Ws Mg%Ta찮HAQ?-w$yw )ԗ:SDŽBݹ*T(53糌{7l z6XuH7(nvkw_%,v|x q^_)F'~m~L7< x#լ~BP BP8p\Bp0R|ԜSj/ϑq(фDi !h!XL}K>ȪC#p"Ջ@/e$nqE-9yBGeLrzZұH_2O0KrusTX 㑿ώMN|-Rb)\gQOMU S>;J6 9)9εY+ ڇOuIVrP8i*c?Å=`*,PzwB!tݍβ``1?"odL( yL׿]jxOp BP(P(>[8RxYΪ=MLjeWKB6'뗾'^盓$dcK% Èط,Wq"2 IPdn# nԫۗ2|cui'֋|/9d$? A2B@&eA,` +&9Ng9ϽSU7($AqXmPuN>n#|8~a`!ȤiređO |51+U)=!.8ҩr2\+~ZV۵mBG40Ԑx!䘣) VKW? 9>V,뀏Ha> xp")ly,[dM1t+! x2p1pI{8DC7QJx|V_~2E?w) " Bpag~0e[i$;;2"7崾 g%ܳ.FTA{tqeri+@ w¿BLE:!1}(HJ=ELLvͯ;~ p~K^N]l$> 4TV %4!={ɍ{?g*Pr*l_X{jdE#QⷽRUł8)WxF${^3sT^FWs2r4'[r2<^FkjϹnL#I=AKdyk,#=k cg*x z=mXA(:gxuS2>É〗°w|6lrpa6w:o<dc-Or. `N{Χ_qp7lh7@g;тSXgnCug) " Bēqk3yB~4 ?NyR<7Ϫ*eɸrMNiھh$bwI:RN$ITO@Nivj%$v61"Wtڍf?eͷzY6{^@Z{bbr`{Q;O dtFq"eUD9ڒ$0 XI˔zSȭdA@K@v T B*( 7Wzf\JESJׇYI18Ah!^$I8\wϋ5>U>y CFp.NJ0 iکd‘뾗4Cg[|ap^rKp60[#lF[.O I1>p'0u=sqxn"Zr1&kwK~.f|nzz)cME'u) " Bi]Ѭt!2N,o6ROUɍamD 8&` *EzMa#anG7[NW89@IϸNhX8KPR1/Z}>TfG3 ]&Zke#Et*T%Qո8e](37W9`S_v9MLL#LOsW#> G{Nog{O2Dݤ+|nG -VNWۈ0{;pmzSY W7?P(* g% d?GIl>å~I+)$P$.}zIq *ě˥ kc,'bL]$[|ʈ3jc _;T5$e M+!4*/Ia{2R'}YV"W/Y-}ǽobRpā9a}>r(_? #Lj&pOAX,+3 ' ;{X6]`ǁoϾv@S[#ϬhZ:q'op>΢&πw>FK) |,cv;PP(7VEP(}..MpkGRdńx%ȑ+*,+w% ]7'X*1IA&Ĺ# "4W%I0#n }wm-/n{+ 6Y}?yqtO@3PIl匲T8"f 2lFP#vK5N](+PE[H|NآD@r= yQ>d9*h*:PϗIQ9_cgPC{YNQ`JEJJ<5TJޏl\Kͳtpg" 58;[ X5w肒A~7oj3^'{X@|6y3F"{ksOgmvѧ~߯o[3R}XƝH}KG- R ª8xf'(b٠ldO:S~>-eh.7_.)d;GU/h٢%R0S/H/)HGeNg>m/XWَ˘O޸fEgy')dcm%X?҄K^T0I:^5hX4FVn1_]-* QA;dK9S s14T!dGȖL)xF2!oADDQb()e-e|ցg?hvf~Nȟ W&jd:tn|AI~6ғFv'z}bg^P(@B9N])/$)A2Y+zUhN;OirU粃12nq߆=QB(%#@m 5ώYKQ-9 |*&U5Χn|;OeO{NDr[Qؘ\IҜ A:;.h@ , U!yI6!9Ϛ%-{Yi#*#^$REHF cUR-LE[L £L9 x12׻*T}pCIWehXjDb(e䖐e}\)yu6"7S*!~ 8ı;^*QͼX=? zJ mHK˩zK]A+@|&!YG]{*BBP(а x JX@9/qM&>6YY •aP)^FH.C @Ǩ̛&ǤVl1xl'H?/GFz$`nw=.ey≿z襏4LcˤMBL-(3\`D-_o&z W)68%91&VXP˫B 9 av4>TpVGGwxc;j2n'#x1,':4q\q*t%b:XNs"tmvlF{kxe.16om/n53C_HˀB)t#\B&/:=Mj/{s$ʟI?d?kvm^[~D#"ٿ*+FJ$M ~E*A~tF u`r!>M!#>Jv&h:v]UjU,H2Yj|LzJVx%g_?wX>^,CNogW|#DAKVu=D9y%v0W £P( p6sN +>D(wjgIuT,3hRrrEP$k] a= fFBj]7Olykmτe'm\gOUrE#IkRw0I%c:CQ?m>$6C ˤE2S mÀٻK_RơY< i)0I3s&*rW?KjiBHcHMV\Q1Te ,Ƴ@c715tOO(%crRP=H3z`h2}@g  $'F~,^ԙE>gPLE!qw=a;2|siyEg}8#c͔@'*HC@ B0܈ %+pWUrDtTF$W4Bs :mW#՚& N5J0,Kv)E)qlqTUIKU@c*G=*5)9(baZnL@+>S(C%ڐ̍Q2H}fОKTyV: YU&zUOpѿ%uB?ۍ~ 8~x˸)ZApX0Ag~]V B@Bpax:xA1(IK˞>% ɯYy(0::}؀k >@10R'N|ue| 'Kykٹq 9sƦP o^j2&t- +X sP咒 $L^VKd/2 K(Z:3ƺ*"%}ꍴ\F~"CH :G]zuD6RGITx x~ Y?%,F 'oʻM19X(* c%8I0̮sdURo .WeX c[rao/;->憎L`!DB&z96wIowZIs$.y;伢p+ H4%^[ۃUh,@%!9I~̼e>Ԉd6"4z!qM+>g>Y3${Ϛ=QOKE\aCbFKƾ?xQrUW1y91賁ŘzC)6QXQ\m7MEp"xWS|W(qoX jU ±WU ±rP,Kr]Tּ|v\`i"9O upxFnJ";YRI/eQ8 $ZՃ$]ۓ)cD&>썿U}[2|c}駼egcSJu(Խ`%4Zhlп\vhP(] ?Գj$ 7Ҝs$@CLʞ)/ %_2?EB~}c p\*K$i\,#Q"xa,MJ3|PnLzJ\ Q "2W9e9Mq^UxP~Xq@KOcS޼$^ɶ S% 2ǀm"O`k?.´P8| #cY ) c@TPP8fٳ<*%(QcNHMibI %x5k- aٳ/ɘI(˂}cעyx̜n*az5>eIc˱8yQ4GZ[-O{z}ŲX#"<>/c!<G.ģ R|Pro<>z{b@~hU"(0oG;57TeLc0Gl#$뢿_OzW@`ge'>)y,n*zQ6`emkP(P(<< K0;1O=j1~ ~_W@7k]?9$jf`GX<[.gt.s[nퟤ_R I?}37_v}h;~ ,c޾^B+gDz5{2]Ba&J }zK^H:=t{q7-Nb$qYY+IÐR5ARA;u1IM wG{*zQg? |)ZY? " B᳏.t\A@}kΚ!5w6XȽ^r_H"`XBc/2ٹvwR!gXv'Vl7; 9Q- K o~G%00LS̲[d<,3o-ؕz1}U2 {MٳC۱Z8 {X^+I?j&_P8Z߮( 3 qֻZ&/N:#UAde/^~m]BaUШL"sE}!ť[/{UL&`(`=q Q)顳@I-.z>r2 O||8><6%WQPBL&ؽJ`seo@?U*BQK^j0{*tBBPxp*pp6(r/Q9J̈́& =Od K8zHNu۴e1[CH)6x0co ~ tQ"^o+큝 `kŧ\8]˷P( MXd\Lx>%e}uQąl& i"-6x&yFsF'/qR4<Bǜj}e sJն*3&T‘{&pNoP@~8p+|BBPxĸlbP#zkI !22Z$ySU&F2:#"$1..Q&@)d[zLl$N _hKtlo>x9`,lOCW6\TPPx@tj"ϚN.>DȐ J*A0dzUɈ|"#iJ?=qGU?tPg~^$Oal#ؕrGL6u%>nZ Y;V ^fol+|BBPX4ghUM]3C$[H$Ӛd&ZP`};;XBX H=J!Ƅ`&cyqWeρfirƮ˦9Y|qxKϹz`z/}E @^U!"P$*!8~Lʼ xUe*]P>~@HxKL xrJ@v{j(o?v]хXmg^, xkY 777R(?QPP8qX*AlL!'@Ҍ}l-I8nybXoL7o?1o (P(|%)* CK;M> #O%^Grg&qX61iXGUX:rsã 9Um UN Տ QFRsK _Ww/v༦y9~1^Pxo+pWW B@B]S^;Lax vAb4"{ŤAj԰ٓPᴘpGLj$Y4 @\ iRfTPiR#q]j#?{gU}ŭI3IA6JBDA˗QAo $#?A"DeX:ښig9w'nLu9{vrƹ}]ܱ7X[ 8>៴mrGqH/ È4+1c4淞5-ńBF ljçZ6) ~7ŸP&P.@)k%ѳo3"<0' f 5Y~"6RʆcYs|3.3xx:ۀNf0KtUyHuo:h @a2 ;)һGbb,b; G6F2M3Aل>EBA ]rqqWCOEBxW ;rfKTdؽ7oI[K#QoIv^6Y+H2Se~2MM.=eoky,_so粒)4<<ѣtw;9smyG_ a\l0 'rD=E%N.0/2sDâୗ|dt <\T̜T߬1AHf0 *&4.B)OoTGf0X^?adF-nNTtGky.+cdhY-1$|n]>͛LK)wA,>Z~HSF` ?gf<p'\9mR-oo#g\ HY 7OCCdu:ՠ;͛ |?[T*{/ȣ1ct&Y6ok̉j.HI@fB/Dx"vh)p!Y=s /&,uJ$!\ r|:__sl*-LZj+'l.l!#N#3&(8# .:@'yPqXؙӿaa EMR;Qmh> r.@Xrfh;nY6 Y BTG˶CK*MbY/t=;ײpuݧZ{6$#c:Ulֽ9Uwˀ@&T,/n}  s{h @}'{4M0"WJ*}e&ז$J8 <\ >\JNncANEL^}ZK Mw-=OyYN*zEC xqQ{C^>j L[\x|lgz[aWĹLYH=Ӈ #&kb0a u8ځvpE8|Z D`"@nҘ9RnG ˎm,0Fٶ ςσKY.*tVZO8inLB$^@D~'C wK5n+vc"s"ɮ-Zu4ET ?@ߑ~? :IW^޹XYa]vf,400n4$t$(HWugL`APE!cZ7NbkԪ5P8 Գ~|m☏^E?-91o^LZTO$ 9[vav @7'swx1f"1 AL2hoBS2*hx)Pc6% xQF߼9 UM܁~Tďj0. q8e?9dQTCv?fl`v2,Ieci{vĵE82m0UUHC@߇ B^z@>$q ,3灖v_ܢ۪Be# Ar%ځYjg@!A!A}_BS5|ļZY>:Q)LL l,3>"zܾ[E4'Ld$sPR5DTѼ%\:g\ls~8%X#c?溣loTAp2c'pB?x'v~v ٳ`_={vi&вz@3_{ym`T(;P֬MZy~xbcFe-x ag.ĠEfAq6Fh=&n]L[(kq\v9R,qZ *SkE}F>eePA@ADPHi5V@lP,Ife֋[xW3E*lHmW.uM#m#ߧ.Ŝ L0dxG̓YH}Q_lN]=`trbłI)PA !Aɪ̬ۖO>~7o*ŤGŧ!.S%aji ^(Vvlv:7wJ[Dm붮XE g3zɛ"ZzcR?+g^-~Meh]P}z{. 8 \\5C ( "(E 1=ۿ8"p'T5pՌ6PVka2.wX!\Ag2 Z_L\~n_75|(:%¹YNJSۯVZyQ (&}Va!vkAJc+D"$_Ʌ3o6hNټzaB|.΀PM9@9#5% /{?Y*2|b=ճ=sXoH?s-X\ .`21 AtyfRQ|wȶ$<8\^HubwI%Q+zDĥe4%f*OE/Gv~yn9g߫w"XVdD"5AD<ڢg^ԜNw8|o:XBw`bILlO'eA[놳(A$Tv4m>'H0;8E!.H(A<|s-e?o,٪% O3W)RXF@QojTàqӅK.:ï9vo}=7-[VRƁo?ܥai߮9g6noA[c]qm1[C}\|ui*+agx1oۭ{Xڶw O\wxextCo>s:>̚-Z fi(v~͕B$X! aLB@jmk;ʼn?vz~< nT|yMjԢ-&tńg?,& "f"mQW&OؤSjAB;k} ;nm FD"H4)r}@dD""ʦ}/hDGgZ^y _#ftpևT3NAr-~\dI9mOm@&1(z#M.Mۺ.{h&_nËxJR#jAu@)q9\|&[ngi~t?թ 1P-6&1Ga龬}hc#_8͍%{2xbۂA;NAPԩ˲ Txrę/lS1䟍0ˈ>*(jc_ɢ"K@gk42E%7DETTn:`0?Y'H$(H|1H،;E*"xLҎ!%Q'?9y}OvKf&M`{ac*);.ǶKZ1S-~vl$Pwn׎-:aϘv @S \GdO#~m\tMZx mnVwl;J ؅2{W\rɯ]Og+nz̘1SN=zt]&腿͎;n0yL`*OʠAC_N绽ve5<\R h`Z/mrOuNQ IO^J1ĉ>WO?O`Q"PΡ1!̵BtyRbyD'\P}bw$ Jl ;wςXjkyJH$MB2>M'D7A`wY&DBoi Dbď@$*)eo@΍ f;KTs K9c}GHZ@.5^|ʷ+hZUo,v@"bNEZkZEKE$ԧrM [ԗ9id>ܹcRm +*pe1@04eTb sc.ҭ[WZjғͦLeۦ<0ڴigYLaԫw}@9- N8(0ӨERkZ]R]݌]_sZƈ8 Ylگc?3>LoS_9-} oEX ?kի_Y@ko]/m8QL9}sdN^2 @p gri'ƴiӹx| `ts!RSS.EtN3|Hnh[ns=p*++׿ϼ[o>G.7b̘wU(ڥ5_~>>lV==zd}^xe(z5blQgkmР#xi;JR~ÂvmvoHPsO{췵˥;F4&]ɾxMO< bE߽M8d"(X_\5Ӭ*E$ghTTAdu-qń.@4'O&hlgHdW"S[Zv;>BiyxtFɩUn.XouY B1 &bQ?^0'~! B̷s n&yOAGk'.9A8ml[G ?ڶ1Es*"almU|<7E"o51w+P|梒^. [ݻu"isvd [7CPHJBZuMFH$ezʁ6y}QImg42c` zD" @D~ Q7 w uЉ֎p#&bX;ȝ M{!LyM뛄(2E}6\s6IQ[QsGzWq#xFv{^X(hkM28ꨃkYy! !=8EM-X:瀤%IJ$ HKDv f, RsIEj^@p"AbBKɜ LDИ >X_a;΂aB] 8b)Y&ZEemp_][ ܢ3S.E=̦l~Ȃ@ +[zK Q?"R$gRQQ/{V>c9O?0څGy0`oe[c|ԥDANYlУ=W^q@P窫nIe6ydB! &&XEamh:R?6zQ C%1 U~_6oOGR H   Rњx&;:!Jz0GZ{,B*>6ؠ;`u.L5ʲ'F.c3- @fY; ,X۷Oa}c#$F<2>."fa/768HECqGRZH][('tE8>gmES~–E懲BwCDW{Q'gO+e} lSA S\3s̶%ҍQck@"5\UWH[N>= o/fTV+[݃a]cܸwy)~X9TɄDDDA([ T|1i7LqY H []u,ל4/d6P\5s|uuɩHf/q" wE=)]5k;4n4o@]WEkU-dmͭ[6$M]F)u.tc saY5;Ԃ{8 ~l nB'v[.NTR@l ũt` r:[ 'VVǢJ=v}wt$U*f\SyyQG0\}􎢁0f}phT\j=pAy H*.+@5նMe?`0hH#F>R&дY^vܡ/>n"lmxc2t6^b ̗H$(H4$kn g}}姗"`GYZj>B\SF? xvw`HT>Wa~Y9~Rm^\X34ߠt@IQ QQ/>2 @FiӺ5|&~:Ug.+F<@qMzq,h/:hۦ{nι??]#noLYU:</7o>'|f/ *y”Nb`L1F]4|g`Q!b]E W' dfObN-fT&7U$"+>;{iL42sYlv{f?FrBfn{=fNy'G~KFV`iq6WM5-6 SLcuby|l1}L'OYڃ瞹^?y8#oAöw_,X\qىtxG_+cޣJ䌒c!͢:[qB3aE$~7th bG}ŸTnzWW"$˂ 1gE-{L -*l֞ onu\#>ؽ7A0/ -/`׵}}4HTF':yATYnx؅xߟi4,7?(e5mdy"8=XM/~'ݸ5X:k'&IJ$kh aN"N0ǽ}B2DT,bӑhѺ.BZC&>nΦTAsD("~Vwr{q&5@ A -^84~t#>5h'(GK'SWg/RYk[5'E2 TM@ P+Ө&jAϞԩX\WLKn.}ǜ4aYNK~yO3; <󜺙ͩ矁UWw>I"M!DCB8=sc> "bPXBE8ĄB?XW !6^ZLp K =OegU?i "y"O=pWㆫ.[Q_?){a[C@u]zX6>zD0v*-.OR`p |^;dDSg?Fѫg'_>]`yXv)<_y`6BX+by_H7mep4 ONw?m$%o!' JHP8WUqåHs)_x 8"3L DO?dX#Bd&|ݻ N2Tskd(~XdP,v^8.&Qjy1;FqWAPφN A}%^(&|䏝J]TT +]A`DOL&HkckDs+DJ{A?D}#K l6 d |vlPj&&tmdM?? GdQ7f]QO=ر;ԏejqR_?Q*M7k4}`, 5/HP"XݑY p0НL2"t{5c)6l# UPfƜ^{s!g#c&>0$ą JD6wv--uZb2E99o[7ݻ'V!}LVu,LLkbj 3_0Ͷ." k4ț,R2ҵekJ]t{=gl3|=Ϟ{wsfݽN1 pw!1H) "j;UMeaVb](ө޷=d i=P6a30rpীkjjԩ=n; +_s78sN`dѣ^XXQ6txB;|#h? Td1~n|b|? _ m b==q*4&@fOʋ>tLҬG'.x'9yA0^;|*S^Pu(6Y49jZ8>&O%Xx EEC^%~ZXr0]]C Ra 2zv$ qA2NۯOΕgWBӍ/eu'BD.xv“#.vOm6zׯ[:9Hk,ӵO߾, 3MiŐ{*kZ8fbdGm.Ƹ`ca;&ҹʆkW?1.}%)^z0̝3 ;Z _G7 |xZZnCUpF~s% VzUuuױx  yprͧˣG tfN14bQǢ&+:1.r?EPǪ1qLp}_4ָGw Uw# F`NTDL5eLuc#>cuOh;J'o+-lLjw:M8P\:Љ%< !d;l#Z?(@Ϯ4Dxyi݌~ d{I ,v3QA#QL"KFDc")je( bR4ޢF%ĈƎ+*Ϝu۳|}{ (}_~ǝ5GJ]tlZQȩE}DŶtI'tig3oGA BuQ!$=[F ?מk-;3 ><1ʐp #<uYmckV߼?HV2{M>$rPG"zxB@GC@JIsn2wq7IY"Mq;s;Yo,&y³ϾsAr@Ԉ87#BmG{k4ȣ?7Qd5@O~wAIcoztRi Ǣ!$AP {uIv(z>VCx =j ],Y5":~(78T<zh 3uDzK9i':Z(#*$T>z=/oa&@O=9>|Ga~g7r(i3wWeUWT~n={k\r?v%pd vE]l}g~/{'|W@+}q> ٳ6xσEϔ&^tK'tI'X-E EHs򰬏@!A>pENcBM9 $'Wvi!?M`!d2ȣqY INQ޺ߔ>?8tNmƍ8iƞ=>%'$;pr:11)ܑcGd}:I zb}p͛G??s|y)glj&7oБߧ}1ᩧӟe{ܠveѣO#յN>yBY߆P=wMhlh#:D4Wr DӋp餓N:餳OF, pQOBFAV#2ر7ȸ7{8~PONr|r{%"g9 jȢJsD@ |Ѓ^t@՚#o1n rk>zfňK聴GMR+Ge}r YN=FvVYm ^gͺ ]xϿsG}G?#ny~ x({`̛8zE}&#}35 H!29>* \?cNБFYN.aQo=G9ոgd^p.?Bŀ*c`=ǽa;.%>QȡOEDv*W_W9(?'8p]M48wݵq˷n# x3nm_){'?qf\k/_^^ou3úɘ=rMx|.s)l@Mߐ?(n0@B._z-l2/Nx)v3 5͟XoE!>+j^K'tI'x. f#?쑚#]!d"#✁ծy~p}"cvCЉE{ccBo<H!N L*?탨RP衶ÀR Z|@C+tG   ց1h޽xCe4@xznoyxWO\cB@A~h[ÆdwsϽH.7⸧76fgʔ /&;]7@lta<~t@MƚBN,!8N:餓N:M(ڵ~ѣHk$9xS9 HkrA$"#u<{HGa | PpGs @ K4*9}{~)\VRJDT(?"䐁x'Qo N 4 G@zJ x<O߁xS/X6 uΞΛƑ뾀?%\-h$QQUr;ou>N }︕υ濷TʃB>a u Hh. ;ܑ*C4@Y h }|. oD 1qww!T1䡱p!$=j> "E HNeD,#-BrvZt$gpt|5{^~-^tNj?19 3mϯ{{O2j8gt[G'Jݐ!^x)FO+ %cg怣.$&#Cw\Mb]:餓N:,G*&x`9~w4G@!9\7 @rC!}@ | ??;;|;FN"5";|0s:Ðz2䙺Ǵqw 0?K(?&g@ A&N#ವh'@3YW0|0ρ_䆂ۇ PΚrA.? ~y>mN$y@XϺ@ /759Mv0: s(Z"Cn }Ŏw\ @C[!"r@A^c=Ȕу?]?TS^,wO ţǾ!w쁼:@' uU৕h-QȡE+$dHDF,mh܏Šz51?sϽ> AK騸+k |&ߩC~Iv;>,gw+(@orv;ƣ @73mӧϠϟ)D?)Z.xN:餓N:僟t  b"jc NGy'rhԛո+C4"rA bS~\3ANwoU  @?${r%W3M=?_W;aS#brC"r#C}KTg:2tB@$up<,ЀG@ A0N } q(8qd .{^=skmv8 $B ,APqޒ@]4S!iwK_N*_jySYW4iT[|Y+3zܕ>[?o:Im!A:9 #=#>d!yge #KZ9X.ՂPo> E$7y>Y<(pA_k =9.q{p^?[t@$?hz 6DެA}X؉k?vGGz;^4tRI4^QB\{drϢU+$8\|5j?'~Fw5>7t"8g^[W5dd~~'ҫ ,y׎e{V}hY?Mp=' O G>-C+[;>χ~ВW4 th"_:餓N:TL@ \ c޴?p0!裲ڑ>z纂 o3j#~ FNH8 ~=cp5|?΁A~Zzݎ/7YvZqҌ ysњ j|qo*A&-젆G{FiNc. ():Qû߁%}]? ˡXlS)t]`u@KՈN}Yuh_:餓N:?#h@?<΢M@`"CLAM<N8~;e @V 9aEHր>8ܕR 4_U/=_?.ZsMpǃ? ~L?j?X=ƽY\#90n'u|za;i#]HҒ@>j Hޤ}| qng@ |9@1bH9 bSFA2|}?j"Ǒ  A#X>ј7)sPdU^w]&(D}ErZȇ%`nNh[Hy5ޣo#?g*yBDƵ|}COӧ 뭷7Re,,߾{>O=\jcu]ojuNA]DBNWUz0tI'i:}  m҈Qo1oԇ|q)p> qB(Сgx-ߏ@܋joܩz=?m7f!᏷ |D1?R iGCC GQMvX@IMz/-q?xF4? 2 PK4eiZ~ KE@'GEa OB7D?sdCg'}L<Ϋ}'O h,\@pXߞv\=wi}3Dzc8;O* [D!扆+$D@7' BRggjkO}K@{98<У?.ߟ# $~{(,g}}mݓ?|h};Eh@\>3\)Vx tI't~~*ڞ@1?3w!GGrY#85{3G@7 B@A?䁬cyp~7A[}֐U={[7>m,>>;9=S\ dQcҾQa[n #HvҢh]=Ni? GEDgY?=N$"BN@wABQDcT+D+ù/@ A-<ù|yC 99~ 2c. i P_j()DE߉B Oth ; }?+syx{񧝅2ܓ{t2? zg|#똵e[q@]l'':V]uSyM<{ |u+g=.},PaK@DDVN/N:?mE 9H! n:5DdrR PG@*G> p=D@kTH~{ >!'cw{?) z؝w\@Z<=y i_yߜtIG; bcw&ܡqrC*,7c. Cr@#p %-ybU;=zp@ O 0*P{N >GjE1 "? `~ @ Y9F&{Θ7=tAwE"{vЎ{ k/;boB='ڮN@ pd ~4RH{H@y;Oa[=? {^(1\dy܃8 dPG=Gr!`vS!z>o0h4.i!̯ٳhG- qC Xp҃o&Rd A}?k8;Nr\>s}|:@=sR"ՈG'(vǾqQA|?O<F@ UxbTZkWr=A6rj^{^~?[0 uݦܯG+%2?Y7k6ܰ57;;/GSf#i)P36&CtK u}/WcLv=PAۊ/#Z7N:餓~~,%:乀<"j;~|4"rz;,B;"$Ggb~g 蠖c:90g]n31wĮ zǾq1 o!? ?9!Gr@ (0裏#{p9\kuw}3oާal? PP!A< Prϙ\'H8B?M9Bn 5`2#9"},fG7@*`yh@8E筷.] G}9ԓBuFm.w[v|wIO>P_멧?&!PaEvҋ餓N:4gFA>j,nE o?*#y$sO '5n <"$5 DE>#5N @ ȠwpAj Zeۂ\gگxy{|o<-EgG#7|,yx|}zH9svy= <\z bdz s:xտ8O<슱1ws;>܁Jpã@%7az¸7}wrh}0_`e!.L (\ 9a|#q|<},>*@ 5}P#2ԉ{<>\WYDN'v.c@?EVho9 ]@@ZCFzմ}$j~*Z0d=+H$[b{QU@-߾™v]r>FG9<<#bLOi:OWGs8cȏ/ =AW߈hK A7|G:{a?ơ}>y/=w¶߯v2[_VӨ:}}:gͺ:ؿ~T%}* 9htI'tJ H=8<0}  'C>eA?G{ Djvv E=˝@Pq3T7yw9EMպ~ xio[T7-x~,W@}$Rp I{{#߸f$'9i? p"#`(=!Qn5CquYMjr0Yr@ ţ3 GY}E&F4VeA 71њ?}N|,j]?ˇD5>}D\ Y?1)٠C9_Z Nkɐ5+; 3 TAO%N h };.:yg_I?Z^WOW^gk!H'BchlAM'xÅ-xe} t[nSA7r[h|뭷]# X~pJ7z ,Y4M({tI'tg5Q?=r~uAs9Ct3N C1!2O}>{oXM٣ww(8@!DjZs롏:$pf߶[Rq{~x/ @@Oi5 v!21z@pG_@'Ss@{"!ؓY0\?#r`˩VðsD"C9A }Ѹ7I@;(OF@(qA*9`5 ="b(9Oƾ@~i`Y4U˚k7WިB֬g8@EBփ,L9 7{a!mH@y6_|`c:VP1l# ˜4Q_3j>2~в?ĉ>k=(\G.F#G 圗^z%. 6aIi=)^L'tI)oEa?Ο!xD=?wY$|G!fݣ&ǏE,=H8Y. l|+ٰ͞s{\z'T<I"r; YMbG1pѣ{V ~FwYAv.{>2@?֧\ûϠDrP؝ EzT #9"ƽ==v0. AxqpC#7Nݕj FPAD0wƵ1cŁբʽzcӡbj}1A Ž__gK_^xe{oϺ tIcb͵;w I'M݉Ϧq2Y2R@Ͽ/*z}ڮ^N+u0su!m<;nz;s~9ꪛ6|\@-`?ޢ7AW~^L'tIg@*==T9 Bnmy|;;I~y{ ? Fpϡȣ9"@NQ^,@12kuEV~y5+k؋*N_a|.!rh+kWn s>*yB#Q/FJJJ*DGϹ@>9Ms{&&D ## _#z&$h"cB-Yw@ Fi"@O`OpH8@p立9Hj#X(!WZG 9_Rmm^V6 >4bTuԷMi%@ &Ӄ@|ٳT8 ya:%k9aw${ysٔ%F9h?kzΔ?> saoq_2~d6{ *5oZ-ED}a5e[o?s5Zc-"O QAM7ݮ (_B^wM2dAKK3QTl@?#щ\Z{$2EtI'tqT txh4Mp8o*@Hz$LQi-¸8cr@G#zi(kxP;G hzŝ>,6zV O}W9_LXP VMQo"#1kH!$wp1paTPjAF%%%- UN@' W?5 " ztl|h웗 1QYN=" A r𸷸v=Abg=C *{D{b}Qo\31D!Cp[{2?͗pZo[MaH?XPhu @C['4jΜ7 pJߗ%= SoU5I't/CT/(:KtLPQQOя*+2wi>  ֚Cv}%d@^ ?1Hshxr1wqoӈ {{~z?f!OZˊv'U|VE1#9Ew'ҏAܹRxc=}?A>$6ŵz P @?ip@ Yr:q'v},]?vG.S5 q Qpz⒔T *v 7GBp=DLJ=p ǣb)<!o rg"9FG. 7GkvyJrDG7bc1>Zvε'g^>Vz {HMzc' rWPRN$%%|(׾=sN:,Iט-Qh/:]ԩ ?ml&:Tdp'K3C o$>o>vqoqriNp'@a,b@5CH3CX#Fٝ\ݥvO?l>?H+(f9{>8/'jPRsYW_/II y1T4A(Ч6e*}I't^ŠDSDq|#Q!+(vhj5Q @E?Qo&AlO4MaOB z!УZ! D}rDܛ0]?*r}ΖVptYvfrΎ# V#K Ő9FA" 7{I?g$\@AHobY?JJJZȅ@"7@ph\80 20D DUqp}?[T3>ArD:;Ї|#~H4 >A=d ~UC'jB N!;":}hpЇrK4`w~,uVYՍJߛ޸fQȩvMI'tE'ZQ2ǽu):VS?C \AҷZc A޾{FA98}C@5'L1 {V?/w8oʰZ5yAU=lԛ o0"9C?xog8ԈGS @pPRRҢbOiģYN. 7Ӻp8A?;Ѿ5vO#E8Ԏ3Hȣ |&N ?:֧n,<~Mu@>fو7, Զb=ܑǽqv k:^ghZ&Ѓ0zz~D` Qe@IAkex̛iFP{^[vΥN:,ip.=a eюϭUpw z#)A1;pχ@T2BwGEj׳Za#sQ95\?Ԟ3HDGkwϏ?zcx|(\# pρ*DrHֽYb$q w[ns8>:X~]@" ]@Iߗ~éN oVψc())r^l+:} Dgڧ^:餓Ny37NuhL߈VcG ! "$9#k,= @!;b3Hc4.c5E參]?1!ٝ H~T#ðkD?çZgMb·9gϯī*F<9~xn AO q?j+|$WX7%GgU4 ())i1Db@;q$ r}P3H]?"㍂c( (Ac,=`w,wq0ȇ>\S^\o0zpA >{ U;KjjXj/Tu뫮!;"İg85cn)) 4^eEmJjJAa.xVڛ=xWw=LJJha_ :7(:\&}I't׍QhFF4I{&_pV?"<-[A(8dWlг~!>C},2=w 84#h_Pqo9.!!z?c/׮tVw;V^pp!~3}28x"$<{p }4͞="}+@Bh@9v˭~ ~^hS@r!=N{7p @1j=;xV 'Hqo}(y ˹]@=AC~\У=@yܚ+ȕWr?Lb%Vn/:/^ʵ _>|:!Gƽu)PǢj 2V %5N:iB(|waƌ+²˭II -z^mΥN:De#Cm63o:`\?"F1paCrFa =ay @#6Y A>>.H }蚕;Uy_m4J\> H8՚|b) Z"@T#ϱ}GOYsKz\UuGnVt^a;Uۇ::vܖP%%5_CsDjAƠo "#*Ӿ ?788;w } D#ߤOGŀ'> !. xP9{<=RCTG h9,Ǩ7k-F?Fõ5tuD}?T[HGH $7:A5 %-tȐ /8bX%%%ԔYVv& 9u[N:MaU3Wφ睥ǁ@ "\AI H;4?=Z#ƽbC=5Pg # w 0#jjŀF=wjo[.<١cq jAN `ltɽsUcy; MȮUwAwRԳ@+að{+ɣnS{,]S~:tl4`Cu Uwߔo_>LJ=;'׏k?A@{e p$#Sm1N  sd#  @Fw;EݗgǢ 1AACC #=*Bis:5k/~Vm!=ˇGe1ù!?R03#Ҟ$M(iaNw{_gxaҤaMwL߳kբE!$}I'4[} KWTcfbO< =C~TcƼe8{A{Fs |& > 9@FVuiAUOF\g_|'7U뎾A ]?q;~yJ`F!"rG! ϙ0Mby-Y;2xo onxgΚr.K.N9̐u>3]τN~Mm-škmkNQokw;s\cGS6awFQ8kX5 #L98{D}ڍA/~oAvgnV^v i>Z<rS\Gv'x8Yu<9b7hvD:yCʆ&Ɩ焤4WMzG4@*}I'(=# K0 b\@yPsr I;x7!ܙ( JzP jh'9|{4Zm}Gk{=E@N Yp4ʩX8Ϡ&ph/@P7pA}& Q4 =;Ξ$Z! 3(/ 4p*?;X0'^W0\C1>!ǏG`O aO}^"HL())))ƢGD!6}I'?ƮDI^vg̨8f@zy(GMA~~ d*vGn!wGAz!9DrяA3bgի {1s4qArPP>}sjFC}D?.ᜅqp䏁Y %ıq.#_!l~^@#F cǞvZ'+ s|8iA>z5'~'n#fκJaR/6gICy ."1pm}@0M%5r&2pǩ5B폀ctn iErXpGc9AyyC ;;|P c/PB"^sU8yftg*[:lU( B;}Lnmw@88,>#?1ciMnyCju% 9uhK'tZ "JZ  վv&j(=Ɇ?*~CmQZN f9.T CpQ/acB@Z3_W^(. +}nT|y!F}5~ҾP)0Ї{ht>C!qЇcLJ>E nYZa qAܳMhSH(%m+mL0|sϽP4瞃CsZ?ƍ zlVY{7M BM*@@< .!w,WKo! ٝ O@ws!py@CqOrA X>O}@ wx ɞiQ5rm֦g:p$G INvН7MD"GjTD o7Pݲ&P xǢ1C_F~{餓?JQP^sc^~p b= h#P{AεAj@ [D~ JkAf '=Ñ]?g;bO@O|`ߜ|YM/rtAZ'QY{A u}!BNM99, A ,qPpX8 dz<N#A1 $9F™=B$ @ UNA+b@˷vypGߦꪛW J\> ;:Vys-F zb.Y>tPù{Ϋ-إ~-aкny @yG(v` =@s )]?:qcőǼ47ܑ94B'H9jo4 LJ>!^ zX]@p8=3tP+}З<~SY59_ȩYv Az׏Fǎ :Bр" + 1X U@IIII BW]- 95GWT{餓?MDUvzsŸ27;1 }Ƚ3 Ѓ|D< x\Bs$<a'A8}cu<sH;LPөβusbϏ0v灞G(B") xGE,ZUqA*#[,h6iBRK.o3wGaKٷz[xԿ }uH;^ya{m g}QQrS3' 7M:G1>N~^{=xnMXu?WPÇ*k^1 G}\K@=b{~yd5"6)pLp@V;GeGq@wb_ {d ^u3eym +Nb?"@ 4j; (r xN!?'pm2;?VsoV4/B=l 8NXX}M m*@  _|yyAGAcnM,ѱc7x[vxg yЛ9J8C 7A|&9zi~Q#B 7|+̞DN`gΜ71m u:lԥ&9m95Hz߿~b@ Q6c9@ xY? {1 fV-0[А!csXq 46>&} 'H~e~r㍷O?cgsϽ$%\!>/B%•f[~#Ǎr ~<8l=U^z~OTr30ӧ_|츓=B3gޘ]s eM<; ƌ谂覛n.쬳/̖YW_싏eϛ0R:sj.}x ')YQA+PW0ch_kvwI3ZÝ~?<*L>\[s :PGtEj"?{:Y"{JJJJJ[|3LLY 1՛:W/Z\"j<ߚcQ A|#i۷#QN Qf@r 3ugi sL< Ķp-4akA]ȡٿ'^ZTKϏ펺0c$QO 8pD!N~d_W_}}5_/`W{ F͜_:5892p"-b#u  s~L q] F!iGÚԩ~t6x  {BcuW<@S1! OHPu2}oYz>9{w A!GuAs D L{q"@`NPC|($(9?]t)+M;@i֢v^>餙mNu8#3jCT@Ga#" @z#GEȳ`@B?v:cbQ!>&@A\(AR"쁰C3L=0b 8Q5N 1LC#X@ɺ[gn Zpeos [h֧V:\\gn!={nZj*g4j s&ua7+:! p;@~;lh*ѮsTrbm~^zΖ4v_|9rτjIB˿fvQ۾M"qúPp |K[If8vo<"O9 r{@)DSCv/<˨GJ [L:8}[.IpG@RǏHf0_D!|9@Ѭ9?zK%VѢh7k4mը!o&;l8qډ\J и[#_ @uȡCcN<>|~R߾h@ yqP|]u̬O65et]teqlfwN >b]A03?vu=94'RӋy9aBę? {47ٞ{:p?T)NM~ tA D8ACCg r*Dcְ9y-ٶyN ǵmĪz9Nkb4INI7ϥ{S([A1  P@IIII }4)+M:W/j5=`M @`~Mj{u"4BH^!.pVoP tr囜-zP' HI5hs~~vs]G!UtװýQ vB7E\z =?CE1A {F?53#jQ:q!Hr`P3[TO.$@]mR1oݞx) = {Il Jz#dzϾ \2^@A+u5AG5*Iծg4qqOT͵x2<~d|6.ZzF>QB}v8"47u̩B'Pu\@RG>8z\[{*u*!= @' sADΟ(GP{?.v J;8q:n4Uy6hj [ H]?!gpO(񜵸%\X ?&;9ˌqP5AOEPjwkOӽ2K\Zitk4ݩ)WL9<NE\?}" ?HBsbC@Ě yX}=>_.]aثv|<`"CCdD\$(nH#?@=$']$˜` p'AqK8XMZq<9٨=^ 3o<@ 7.{PgN0`Z n& ̲GcMp)#uBO:)U6nWqŏAQ{w6}~f߫h>|L^[f^uƙ5ff@tu:@=)i mԩ!sT<*)mH1NE#0(V\?̣?" T=#${No"A\#֨[n9܌!wtѰ9 |X#Rr $µ!Tl6psc5C.vPRRRR@쐶L7e%uKzJ+}/Y42{C-ފcSAN՛\3͹vo |rP)yv_rdOܷPNM͉WKSk3~{TC:jxP {)!T o ?#k`'8$ ? L-~^-ָ9So8@`c0&4y aO+lA3C饗^hMv|SE75sWn_jZ?T~$pZv{}y :&tLdI~A={nuj؉8;看!^tp/ H@!C{Eq"*-X8($ W%$:'c@m1@SBtQVp>C^va 5]ȡH7 Y {q-?ÙRdpk̡Nr:y?ad-JJJJJ(-'[gmĔgM^J_2LM&x@ã펾lQ0D(rXs@ {t?vptz $B=PmS-ᎽjPMf؍JW[ڎlp gASElF3 z^ ̟^%^B?R?:]?́`5@xP ~ZDuY>.[s@hߕ:#%[ۦbHh cH=B  w2T4vI/T,qҸN=\O8@ǟ\<|˃?^sCkb+"vwiL:A ž\wϸ9@gEij hA?n N &8W:d_a]Ay@'pqBI7Yj Jw fU8+A!<׹?<UDأQ[aO)_<'aR8pPh1@p.oou`lk4O{e5Kk-u7,I7>^Z|t)+7MڥW/Z_,HeSݒ_Ԭ­mq@:IM=# dG`P<5 g3@U|  t>eJ#m?hJl&. ?.-\xj |'p i&ҶnAػș}PG.sTw5i3_5Km -7hC37a4{P5p)ֶj<6̓oڼ<_Hn( t}8'v!ʞT@ z" wq鬟İGŸ8Bax6aO=X.)k }0Fs۲{2{wp-Ў@СEE]9H׺N\=+xch^[-d |+l\<\{jZnpW{ nE+{yp}=,[m=s^~uś(U[u9XDs)HȺ(ޯ&}5''@/6;ᬫε 26Zc~JrӏӫVZ<0o4o H~)'y[8&FAa #5Іm✳0Ǣr׏ZGkYcl{ܩ = HA|x9{41p l\> *%j۹|<#E-LAa;8<]@[Qplj"({&\& Xxf `S-@hgs_y6_a n*nwYuG >W P:f7.? rzpf4i(Ŏ"~M7Z">A"JGri&Їg2Q=)Fo*zXgN"uq}A72u֏Hۼi`Gj FýIBFu5q5vٵv{ʹqsߝe\F}.{77Y@H=y BhP&\3@ΕvmD[;6L;fY|Ź?3ԣ9@A9G4u쫷{c49AΨ #adMڽ1?A;8Gޢ9@9dơ-pp. hx>~lײvC->\̟95. pðZipf\K.Bp#ߞ`mƬV!ł+ĮÍ=S`7~Iz]]wDd߁h7rq8|"hVjvSJ40U~`48c~wꜝeȑ\@6.{ n%2p_ ssk g]xmK6 ݴFo@ۼy'@-8G Q-3xF8,',;^sD挢:#APK A8Fim"Zx r J[M熃8je@s!V|dF> v9anYbWmb->tP\b8At@.B :֭x؁z]Q[gԎ詧p*-@x3j|my Pʗ8K]>_on^}nƌZoa};4Fky7X,E-n7m͞/:+ twusq}<-8y߷ׁɳ`u9WT~ W[7,cߣZy0=eJ^:K+o_˙L۩冽q3/>;C?l   jG숂>g2?h#\YLtmNnr)(.*Gsg>A8|B=ft$GfAPS?'!a ;<Ǯ(A1uUg-ݖqlgkꛭvfo}Wf{,8Rl*kBe'Vj1T ZLK݁D7g1pOa|O"r֤\oT7Ss x: (lyNӕ5|X{j z;ѺA"ۺ1R)殎c{n,{ڼeL wD  })|/nDĨ HϤś{?.A8UÜ{8= CIXu;iD88&*8?J-pi0H=Ɯ5H>}U @OQODH9"a.Q@ [9! [Y"Dw4Gqo:~LfrՕqoNY~@WnG5.SED(4<ɼh_-ߠyN nB)-z s:7kl .yڎs$AZw}s 4`=s/f޲ PS $tV;\yᅗ|Mo /g-#<Ba_v}` ߧJ.!_$3k_]?랯9y{fO</"1q8g?sybo8V,L.z37Mh| 4ل{\%hS꥕7ΦNsi>޶"@GP D5iAGE ]@˥[qiӉ-]?C#!.|9"UfF D!u*琴Ù+H[ñf*79]>qkpGkygB7ʀkNZ)>5Fqtc{m >ztz] Y^u䰇{*>l5qF;XR g~Dq/s}|3xƹ?!u9@~"Q($Vp B 5t^ $G@Dg Tt3Bei>DpD& :B% ~sfl/ 8}hx>SWp~¼fϾ/t<.fbƞ[9.$tZa&/|h8=#Q؃fRьwu{iGՊ_sD 4/Q Di+8= )[>壮m8@>P9 = B~Z AƳϾ"3,o1+|FHIk3ux @!R!= 0HG!ĺB!q+8q MzCp@ ]A?E "CD qUrĪڰf׽]r6{ ġG|] jt&w!S?A8~\zЧXwC0T<^{,G { !*luhmk1i7qg}3ͳPT^8=尉3o B~)g/D Ғ]  8\־ Ɂ\S{|rR<8LY;f]Z>9thزq6^{ OZnzW(Ԟy9\c䰹kТ˯Enn6u?: Ρ[o3x-hj $?0Ԯy™AP+sσ3Pp@J(ָ7ִESVRVO^Zi-4gG2񆁏38:x wCE5=lF$u$0Kf?j'_fu{0 H]>~A ~(Q51l+?>ZC`k@E@'P]Y. AQMtstΏ]@IR^\s~wZK%-p:"GyTy?2Gkk3)qٹDQA$DžrugVpxpsD^Oh&P ~{m@=gi=AzZ[;/Fu=DA0.:$?  (r!5ً !QDb7䬵hQ}r`'e6lU{="<_ϧj*[5vSyΨ~˃2_0gj͜ycyti\'xF 3sl-Keu#s9yNEcv'0`$0 [#-w-Q'Tq P/!0e֬gPo?pn #{3:9k-kWcNs8y\{C6Y7_{ j{3p:f`;Fj@iNzӜM~^Z}a J]m_v阰k>.¡xn~ZS ߻Y@@dc+ 'Kgs\Qx'$|9hѐ@K ^|FNǏ[q0HA91pnY. rq`ﱌVt/pH`OT:k֎O)btA[+f9[  1On.if ua3 %sc5ˣ=3]ؿkp^v7W{O6M(־wbӗ3 6O^Zi-?[Ip# *8฽kP?sig!@9[k&uk \ q& 7 DUЮ-7| dZu|wR@HW;eg,Q6{gOg{sl입h@=3 aԵ :7cq.P$a.uH'Yԉ ZP;8}Iu< 0s:.E  g#mT6otT  ?txA-thaE؃#jܫʷ~S?*?1Z UB[4fU7$^Ktif$sh~x<@Úuc4i1g8] A&A |DVk jlÚO(~6!GU]lC05[g%V3 8DJ q>RQt3,a33k˟ZgLEMsR}!TpYVYK:sb^V}9ZCG^MR.|=L4e%5ôjzJu~t1Cu?/wǏuQn968JA~n *CCh!Qk{۾TB]A=? v 䌔oQrySdzgL aVoZQ,7Z%%%- :Fȣ@H5= uca$P'tUw0g  u.Dz)ܳF Ԑ뾳H@f]x9?ծX\=GwQ$s # , ֊'o-vo~V Q8k7{i&{m&:}bD#3~5{DjK8?!`M5\u^1kݽEgu3iV@s >2n ̠řϬtY@Za=܋0 k*Bk1wIf_I;6sGy'g^C6?| wgf{SbfMe Sss(k32<e:h9|p~U3Ј뮛x9F^5s9T6({Kƙ>5e%44?K+ Z$D[NOiQDȣN >.O \4u;2kuK-ySa~ok;Cx? A]k2aOB"K@?yxxw !U \>NfARS`H[… HsAZѣK-b9~TkX&1:Vpyc)"@pAkt0@ZocAsTڿb>7=<\Ko9 %Ni'ŸpOŚb"r#{D:|(Ԩ-b{\!'  \A{z|&M@hŖmgW(Zo*~?뮻Eh3_hUzZ_laV[G [hyfssh.PӦ]gyk8y,1ANq.8;4F>5JaNt]{"艣Bx9P! *:~ 3W=UݛǐB7]t <xb#{uA\Dp@wSn&Pr%%%@=*KJA*B =9{=?;K3Hb8@9AԹ?}s:B8% `!à3}Qk-WA:qfy |J(n-  i;8z?GO"zb]w|~nO4($! Kt7ӿE2ڠ [pƛZ'x*@& 5WuYm8Z8![h7Jf¬& swl/ l6Lncm`'<4U=uq)*P z|q|^3P*B~vJ[?L;>AgP1'^fµ-(XS\ zpP 2RA uS@ HfQ|bWa r@DqGZ!2ۋhBpFǏT!ݛY@ :~o< uDX"D > |ĭXH:X?QW 8 v@zȀPM׆ X۵is.?@Lg'}C'QH 4]@txO 5uy'r gGbvoR_Dvz>U>Ͼ*(637qXf|@kt-ntd\?7k\h+n :=lkyo|b J*A)y||TsqT:hu?Ī4 G9m#Ǘ^z_}/9&@̿_{8pI=lƽ>Gd|o9琺{*(i'B RE0\ !=ڽ-W T^aiaX ?lӨ597(vxd$?Xz8 z CnU R\hMAR'n93s=!PPCV 8{,hՓ8iV?*&hb||70>0 \sCt3HZD4z yp<>"dsLp_ 2H6_&v:⌛usǰ`p =nyl^n7sS|9O5X+3 _s=7Mky|xLAsqFKeyT .4Mtsc> :iӮ|=1g~f A&=S7c6@v^VAFj gGvq:9v ڹ^U*]P  \J!C6~ vsp%@kۣfH! ?+}\jCq|./\Zݎ۞vNI3s 챼}4 )q%@9ܫ{h| )5 s|C.ߊP^`(>>U`PS-rm_jԔp@:@']> ˧ S|$'\ a fH^Q< Sa PC{cM[µc9KXWsW%\ tN:vϣENxH\-p1[Q+HE@{ӺޔPRRRSZ!Volm#G?`k =;^?js'ak)}KTG~c7{Lp; {mkи.߽^/;ګ5]9hlgiȚ '. wH 8 ™=mBcg#A msWur&UYzln~Z_N&%UV@i}@RsLMYui^ ֲ=n`DRkf|diGu0HtA~6Һn1;r1O |KsDEs\ D~ 9 }僼ME|FN FT>a(=:|Cp |"s -½GwZ%%%- Z༟x69<&s}L z8H: Dq_?Rc7I7q. 5'ATh,J!N Ja#~Cy?ۭn!Ƿkj<>6y?mD(;( P4-j13tF)( HVm]B(fa+QhQ"Z5%qePM^8a"xBf+Ǹ d@ |o&~X>{D- 0 V>j ;69< 8DH;87lDZbeGnTT@Y SR/OW%TΫ_2|478$T@pBMSwfZKݷM'=A=c!Uq/`,= ГGX gqFk|Ќ$f} 7CT 8@z=%hn3Bq3s}9ejnP<y ";^R|[]jj+.hVaNQ7keL5ma >A|Y*A>$b{>\gzI 5p*8Zpk" W*j266~!PqeN=q_/>ul뺱DTj.}Jwo(a؃w | ڷ [?ߛ>Ԑ>y 3!'??l$NYS҇S>[zП W@5 oǪ7VCUosǽUofu (L4-4 l0(^| cǝdJ#:(-I, Ld5+rN18|Yk"|ϑQL?@?B==03y#_`gk Hpɮ|k{ケfy]igH.s^u7R.4u}c ,3!JNyvRYWLp?23f/lCYH<攙aJ8ARAع[@gw -\Pyyt]s,0 'ι<^GHь{:ԪI~Ggxnu7?L ^;w=<Б$Ju]$~4C8BK޽;':A"0q:˹`GꁐGAԊ j"$I'G!zz#> o1ab 0ZbJhy?+VZ#Tz7= `͇P:EA!CD Cs}sTpkE45 5p&SN vI~@qv^8o~Z{pjzQo~"vx+i^a& A# s~rEODN $\c2cu&tԇ?Y>~3g4io*zsl.ݡOoN{$}vo?lMbҗR[wdՅl=՛t+@DA zAY~Xްncqۮ}~޴'(;s1*8;kmw4!W>ub?8[uokp2$Ղ=+=jeqzԣyM}>~(s"މ :gA$G؃PW{jo|"J1ܡTB+HP$ոK}<̡v%R+ })\zm0Hu R4Ӹ~ќ>Ї\@|c.^AK? p{.(QD|S8~pn 8EfQpӻ~!ukd=u׏r;{_jP#_Y~h_ۅw\7 OBO?ZP'qw-ilC7 nQ;q}@??MX:g@=y(]>Gl8{ⓞ5{~6&Mh ~#4=fMyoq˴nMKZ{?Xeg?{f XAVOg o|B{"& cw0bz uH#? #UC/!. j?8{@C[L14:|pDj?6pN _V%dx*8a\?u1=߄Dخ{s٣Y@Ycp9GQ!&7%XbHs#bGA 5A`cp4n=^ ds}ow)ߖ<b TW ꨇ$ 8*[}N92@#|p(Ǥ}BBn97J hG3ʩyfr\VW=t7-nk#||ἥckWi[a*}j/%X-7PBYB!?*HA9׌9(" |$sXOk߈$D5PiܤI&MhN@lhM ۮyyM cŰbhV8~n\qD $"w @!iUmtq?}խo]u뻞-XU>)Aq=d;9<u'gԀ 342YK}@O$c3ˇ}> |0Ϝ[@3oʇ9}ƬSHQs\@0hD]W }zwXOdrc5Gc~c Ab"Oz5v6 f:=}ݛ9R Qty@jN $ȣdح (*!AEUO] 7~&ͣH}rCNCAѳ؀8}S"\QR!>QΆ$=ޘg{ {q;};G2N(s`bu@>kaP?.` O^Fs!@ is ;~üN@82 Pp O@^?I&MhN9tfh蓡}BϘ~zw @76&y7՚-f? ~D7X;@eݮ~S|Ỿw+_MK >?푻V'< pqG5C􈀞oU ).YH5.WV@K=SLNX7 o8$p`Ry:ȥP{ŌJrO;޶bOT(4Ϝ~Wru-# ȣ[@9G~У 5cdD.e78C͟ڷu?5VUVUxr@T?-wGyF>~,Wֿ5w4,jA: Dp< m s;@z8pYk|^6͹|s=9!gX!}@7=?A"J !$ I@@=+Qޭsx,#*8Dخ~74iҤ Mi/lzZhӛ>g_x$Zغȇl=p?gO$P >9 sq'|,=ڡp]7yV?Y ,TG_99@')wy'f9A-g<+z72戕n>TTf:bfN ; EԺjt5[ Q暅=~Ff5q5G5n>6dp=>j{8$r~?`ԉ>yD G=;6 {wo b&W=`Q=vhPhAM ~s`Gw2'"*=\>ѓƃ @9\+ގ{8}m R~ \q/CqFv߰ه/MӸ~Ϩz0@Ԯ;pU+Akk< 7oNqO ~3S"!ԭz>P(594iҤ Mi*Bæm~mGhƝ]w?X$IEo~(jNՋP H7U yt7?z٘uoC:|@G# #>~Hwu=` OXg+ߔKs㎠ q'̑كpě~F8oCdpjLG3`L ?gPԡBj+H8 1"(Ӹ~ $\@ uN{[Bȇ@Je_= ۧ_֬xSh= G]g?3裹@wdZ]@!Su 0hR?!2bIUOjf{~ u܃sz![&wj~Ψ*!|qD9$w V©nHhҤI&4} Zzvh_;Ў7}1B;ozm>1[s5?[qz0?ugne ~8~ bm =KkƭYܣ^U/| ~Xֹ>ȜA;M- vGnz;DuInxgC uBS{Z g'k@;?! { {@)o Uw :y@~x߀@SzЃۧ#G@3I3)k?Y# $!{?Q}vB$A*Q>`dNC"ω|k@ND@[@:Y+F [Ƭ:~oDAԨFj~CuPȔo{A {@;@MCP8PFՀ>*wk޲o.fnŭ; ~>ckqC>- T{5B>CGoRQw ~4. ɀr>:h5rT]?qq=fWMhҤI&4}%:;gBݡ7}1BۯgϾUwqi!7v˰gáCA0(3JS뗼9s',}l,=ÿz[!V$؃l\Cv=*=Q(s'v YF~u2<:o Gy*ṙnITSA=- OH 'rso׽r5Jz%}@Pu7kAhnG^ =ڻ?@ !˫+A!@.C"?@<#lA@ };~Gj>73,@ϸUp<- o=H|V>Zrz@)?pN;Uoj`O رpU k߼Q=shZ7kު9t7~ܥ7.>{yzjdp~HX:vN5'j$9r}O>?9A|[Q Pwjֽ)*60?WnM4iAW~>4e4}9B}FN #أx(nuX7V m=9zE7gI;}p$Q #׏+rѤ>o;Sڷo>|wqcA xyrFn0'ԖKԾ.xA:(9 H3@Gr@xK-z6CG.!~$bu `u}jD{zl @1LB[(8~Ms(r 'T@z#Q(^'  vOMЋXW! fc8D| Vß>"nhR׽z82W,PHPi\@buOWW}@PqГ@^֫ȕ u4|dٴ:@R?{b YN=ĺEC]@("`U'sqTBQlzYF^@&M4;A7sh6RfMiЖ~|vփ$9E5' O:~m?Q H7B<׿.!P@8@DŽ@?"j!qQn 9x+\>g8οYxU}Dw~V%P (5k=$ͣ$;@HrO3A뇼:|'"b@DU+Z䩱g@&M4雾U@}44υ^4K?0;fgn3ASD zA;nJb[Ÿ=:rGhw<`ّ}n~s>_!9qC|3a`˧?9enI=WH=@DYBuo7S.>TyY oY +v~,v;|A 㧺<I nĘ ;5pq D㧊wuHəU[d naPknMԭ+>S:e2R^{PMJ|B=)jV+wOq >)=ސ(p讟|㎟nC߁ >uȻpO! t.sz!{/n#~bck|Aɨܡ'#~B'k i\pCC{xZQޏ"xD8},(/P p {%޺H|~hҤI&4}7^>}uOoφf_jg\}/;?s9GéA[B5)jVGOyW@/{s?eo^ܺF+خH8|j@-!A-\@F^@HnլSУo (yy= ~ZOy }! `PCmTuelupXΊ7#ΏxmN1ρE!jK7!Wp^OԖg"sq;@Ĝ>C+pDw)<Q 191n^az7.Eri([7yd7R!?B'g;"9N i4.%Dn=$1' tg?jq;G-c?y 4fKOuU \>d}ճuoPh#gTzM5+C ĺ7fuݛ;CmN` \D3أ~q @ z4iҤ M5 /f#M?r@C{KۮylÎ'e|xnJ% yH9$Pyo>Y}{d4/ɺYF;̋n\5k?5n`9= g "U9|Hֻ)7ЯGn-V=ZPAQ8|zG's`ќZQ}?P? ި+ߔ_]AxcGr7 in~X׿&k?!@ ܤ 8sZ$iD!@P*z@I3P7(2GsCG9}V'9n x: ψHTj>+@n'wׂ,؃7N >un=A0Y.Xy>>꿟ms}`buPzDH9}Aˉ "rNӇ (kupg _ rr^OԶ WD=V&M4i@7}hu[CQz_7}~ϸk뎇ͽ-Wev֖\ka ~w|\1s989z랅+'A7z{nн u '(j{C484!'3s?C_OD>C=zG79?M AC'3VQ+؉$ rT?[Yށs=Z1rn&AnQs n >׬Ygլ}S i&OJ_~x>+3f &!W-!z֏"}z}(xOȄH3A@zvup} ^'c ~ȣ3X-Q7Gug@u05d==j~+{)ub>Pzlr`uJkᨙY]A@s!I5. BxglУqSoxaP/@P'x4Enwx !psM@;iҤIA }f#KB5G~póz{@m;g/y̍'rb@y~S;4=^7GYu7G}fl3]Azr.QN4Ӻ|AOqt2$J?I3ֻ%oo(zD z\RӇ(w~9gAp3,;T8DL @OJ3zxBC{s4+b 1N pgR$?{NJ7Ez>\R#[ApS 6U5pOt3 {?`rHJ'z'0Tn&ou%Oj78}b&z3H 7z=YYfç=NQ'E+"K5W )oDw:'2'bHk2/^~kx" <#GR xS9Rvm4ߨwF[#puz'g k* 7P DDm+{ 9} P ΁!Ns iP |fԹ~*wC@7=QG{֝s]zo>p}~Axb  "W]AT])8\ p4'*rw~ 9@9Bs&P>e_n D{ N j3vzK˽;cʗr"=|A}5gE E1jIxdD?pQy/b똇RQgM||/7}7}w i{(?~rOОkHϹ9Y hm~t0Dw~ C/JQ .rV D%I؃(jYhaxGҹ{'{?Y Mê7E]"TPwG59 hG=d0Q@Dzr[? R- sGpmݛj B (v #AC!1dP;MuGifp n(~9?<~uuУhu'zx qxw~`= Љ tudoUp=6SP;@q8d/d}D(؃GO?287N8D4tT;!րfn!Y?(a!B3? x< PZ;!MMhM顿 F L3zlhwDL-? (w Ҝ }p7|eN7'yq>!˷Ewp   27ք6{۲cs'Vߓ@GǏQD\K=C^R9d #= $Q;qzȜB=a \ofʼ]& PDa \ 3$zo zʉ3C4C/D@@_VkPD>vhGn 9=+P==RP:ShX=.teTM.yo~` z d},4r>8Zh!\iMM -Of#Сӛ{V>) W;$@f;v<߾l46-9AVxK*sA\Oۯr>yxs_{V#7LN9rQNTミ߼OC!w{OA|\ɉ+i?ǁoQ}^ v(@ )m O?m_Q*أxRAM}\?!Ez!~@~ zWސ 8190u swSpA; ֽ'ޤjyDY`P{H`rTab? ~?M63ˁpĄ7~R*8]&!׿~H $W_9tx䝟U>z>D 9nCfȝ>n9#'}uu9 Zz@8>:CI;B QT:CA @)?D""~;`u .z4CԮZ雾雾;E@šwf#o Mwp<ϊxcE t?3cmצKdv8i h}ޭY~2 %yJ\/0$(bֺ v+e.b@w~.~' ~$@H5\>LGP?~92)9}o ȃ D=H3sGz㰇[?qS? =< h9n |G9|CP}>WNyJ9 ?nҚ7B!|V5{C}Q_g;>ؓy R$#kjހP|ab0Cj [vȿw[m8O({ʋ Hu0:c.ࣹ"g]A7S1+ހ?.A? rȃ5. $"J&ٓQc'r`O~ۧsUԁbfu MI9W A17=s 7Dw!s@?雾雾S}MwBOnз&H[zOjN>=4/y~.x sh(X t@p,{ۺ#W=G$IDsG&7 ~!?P},9:s~:$A* ~5p?=A}qM y$&Rߢ9oHo7ո}6 ~DE˙yZ1AM~{@rCo̐ozٍF! Uo)_xNoq|*!3i׿ifQ =$@$Г{'^Hn~`T׽u>~  upzGs) ּ)~=}]}RӸ$q}io(VX/3Adpg!ңQ} g H5h9- ww7r׏DOr.jA=B@:~CT=A8~|@D4ʷTW+|Tg^ N @qqSoO d," 19GS\ȥthooN6FBۦYhW}l{@q7is8-Ø? }B 9P #VeR~8=Gj^>R@p)ja}wk2JW Q=xz 92d%Q$nnX!f~J@O rx+orgHQWO]:"!C=p H |2: G=\>Vɘo*C!;~'s[7}ƁbY&gORp)okܲWO PDЃ|B ?~C0QӺ\P j>~L[9k1?E|9*+8b*i{r59N #?DnAs;x3=ywH.Gc2O+wtըJ#@*ڜ?v$DcW NgS}ݘozȥp W<@ Ղ@= $Уѯc0ǀ̣~ 9290Ú7 |z{T@;)`Dd 2#Xw9A@!}\wʊsw#=Ls?!?!"GQGͽʞC ;1tWVN A[  ?8y@@V?vTK9nKw^3 =+w?{>PB$AVQ8PwN AP}\oT75J}??AM6| ,Gpt9 @'EDOЧBDdYwX?grOG أd+ؓΨځ~ԣ6571zC̾М>MM" C7Oosn~FI7~OrvΌ;//4ݪuzD`6UǏ4@"K85n @D?{Ǐ"*[9~B@ɹr$ew7C-0ļ urOi^ț;@|JIi\b2Cn+IH>ZsseϡZTC3bYqǝ@os 5b?:1i9rV!q; z3|C$25ZP?Oʧp7}7}wo l>z~ =ހyu=׽OO7l;z~r>Ё ResE,D1 |ܒt]quo vQ5U!+<+*GCPv H #@O i 9^?8~ nf\sءظ~G4Go|[+ f;J;XF]ɘ2 Zr@xr@> g~F\QLzHw;̀~T7ȿ&!$KN;CQ5ȁ?z \0B w4'@5GwC?@=;@.S׿'Э8|DCE~͛)ec}w9?-5 3 .q>,!l8)@B wtJQG{7H913cCDWqUpY+V׏rN>?OG3@YgwgGpC(DTn~Bz@=$0萧%K)Od.gk?雾雾Sͅ~(}6wzyTĝV|X@@s?9??ζ_3'>fpL`ky: "P*f@ e~PoO:o_5u +,(8tΟQ+5CaQm?=䉜w%~ hgU?HPp[D`[G=97R?89M jOkbJw%CꔈCeP;3zIPւ<R x$p1WO 'r)+HYzoq(Cpo7~jG9do UZ. wUC;?5p!I4w!G83R qH d(z.P57tDб~?@X@^kps޼8rx@;?z׮8})w؃p(73%vp(zcsd=$)G|d Y/]>"@ Tyu0SeCP]@R䨇<}~Ϭ!Ј9R]@| 81ϝ@P"~?}ȭ ImO.uu87}7}w*;Bwf#&giK(`OΊp<;㉮!xqΓxf8&O~^ 'r'jOh})qnm񋻿}jޏhz^@~{V@g͝?.Pz;D(j Tz^,(!C0zm rRLy(Ѓ~@9(2 up P,AqnQ?jiV1j u>9qp[Dt ~@$nQ$ dRߝ?zu~PYH`D 2"' C&Gw~,]@ QO5} w By&ourzn j?+WQr. Uww.7\l[H=IkmX i8!" ֽѧA8|,yC/- ?zd\!DCm#D@Ph78d'cB~B roF,Oߒq yh )2@ɜzRnX/11{[Օo|%к'4}7}7}zHWCN? 5#ԉz0Stev<8oōK???3"/n5m~)2g^e:r\Vtg.$O .ß{vbgkV_sLkh;~+ D2p(NsG=ktOD@У*q>cQ`LΟ')!'\Р@}%ƻ= (@dNVHCTj0ozD@7=Z9+Y }?){kNAu[֭Wr92}@-Rt#O="> (D~DMNU{ u}D7f)rC} 1zjs7w~j;WpU+'"@g%:r _xj!wA75=@I@{##Q;k 3@Cq g!A|<X4 9^ ;~PsrI.#R XO4-雾雾; ГC{CL?S<!E OS*<'dn 0Γ{芷ڲsƲJЃ@S =Vݔ_e\rVmo>@7΢HHH3j 3RF_׿ ^uop* brf{L:tӹG>U#W=e izO_Wjs r?B*C{@OF kހ= @áP؃@C.@k=І>޲א^G"=1 1OF>飜C z#@v7RUp1׏f=?̚[?:_'u= Cu\+QMT]?x!>+ps/w#||]X $՝Ç(qAO~I@r`O(rA)f :e(HO;S rV8Duw(ޘZ G3wTOh>~\oRYaýAiAǣS ͲͶ?gOZm9ym~^-s,?g^ȗ+Sr#0(%0(b8~L o=x?sv~~p}X nYq珔(Ċ7j}BZf |#o^Fu`>a3s}~j_39>$@Op+;@q=tz$kߔ3>J5 zP* "Up#( O~BA({wq2y@p(.DKc}!qFPq)DQrC? r}$=RoC{9BcVyQwA@]o!\>=fq]7b"7^H}t?}$O 4CW 9QOk㺯;Uۗ3rgw,sg P ~׃ }Aq@( 0 hP};wl[H5b> ֿ!HG9`@ON 5LN f8~C7R=U#+AYopC5'bVG1@g ]guu7| N;@@RO@H1Ap7}7}w*C?_Bė1$@s"&ԉ?%zq dhP;m-{>yBk6musA~fv/sy& C Zh. #}"_r[̜yCmM Z5("7jz=Y?]{׻m>C~G=jr@Pb أ Hj!~ucY'c}Q q(T Tcr^>!=5H.a͛q׽Y/afGp{8PAz8 qj78?y"&}G̾@S@sD뇜:NYV̩wԓGP}2-k4\=?SnG0g U׏ב͜@$q@*(%Q?DVwM֊r zB@ uoY H̢[]@WzCZׇ(֝7>^>|7A>#$OY(Tꚻ?K'%Q. hf7VTj#1@GsmPwOBUpx= G=@5pz dDm HzѯR]@r;3h0HMMMߩC#ܗz ?KSkOjp#׽Oo!Y[̶\n?5۰ȗɝٙ;nu}&zMp(c:pVuh.־-ll\|n;gl":oP2ê!@!D_JOsл,5- 7>zG!kT(D]?oSF@uZr5YB+g Hf9WeB9=?J p!(T{| OLe?VWNV!A:0c͛ OF~jsEMȁ=Ϭ[o(&'" W n fr{p$)gH'rjC}2ojA""'k%?![wH^ XQZY?ʟsqgOQg]V} zW?ʻ;?3XڷZ#w fC-cHPwxIE4[#}rE!ypTVetz9anfZy yD;{I=\Ú7r>_S׹ѣ5y=-sUzgh hNi-MM"hM虡 Fm}̇J3aF^jWwg]_@mzIAmM39pW Q^)(@rݖ\#o/-,{;gֽmZ[|n62nGF)zA"'z7xSC_"uS ΀ۇ~uçȳn>ȁw~"Rm>Dn!gN QCnu |3 y i#<Q_"C@Ԋ 쑺Z?0TA=OuuԧVر O\({Đ1z: 03- ND O?y/7J'\A!"GQ2Г=o>us R.O],TnS 쐣tz৾3W2FPꁐ+H=q ];7QgΏ,\gtuɩ?lwU#pGyʡi J7^ 7ɋ4$SÑ EdA8 7`'92#`O>&*?5p WM $/HOM9@ 飚vGP OMMMߩ6^th6B -L?YzH> xR1o)?~Q}Љjo WKs^O}I} 9Wκgg=QΟ8^@\RrC@ n$͇gݶCwIrT> p'#3"p8D݈?Rm~S]Au}[+ 5v}$qEOp'b U|˺7u,䐧+X~7kq~[J.#qeP|=T؃61G\sSB?BCSEdjzJ8 [5p5pu+p G}riNqGNV@{?GB D׏Է!= D\`Y9}+ qHyFOsOʑ͙iA53Z8u|mKf9gg[zyIQ@1 wأ<4\@#BTЩ.Q9 { [bћ̫ z yA"N9b:0e:.sV![h 7sVg^{;?rT?Q#- wUG(ou7n9W\޴nooN{CГB_ C@f A Dl Ў>qHM!}g;Z ^2UJs(?҅!neLsKsBYܴ X.p,\J*8Vm>VpÁ@B@b?y;s j9" ~ 0o$xҪ7=-'doulH(RC ֏|@Q{h G}7@ weTޭwS{Y S3kVn w:||G;rأsdj>WuwL[-pޮ(mj%ܑBg?{ ;׿1r[&8䠧TeO~]HuFf. : \ 9[?[@A= uЧfGp¡ =}EJyB#'<Ճ9;@7&s0A;=HS7雾雾S=6CЃ? V\'Ur 8dS]?B/x Åm'>P{O9<{l dn(a\@PŸE9NDZe{ٟETP~̳j}RN`կkRjiRpg S_b ~N 9є}_8Dd6^82pu ?rEVI{A@:#.țC PJJOoʇoeO'PU{Q3#cuhNmsi:p'$Qw"җ;9ܡ/9 b. ;`P규wGΟ r4ߘ5rL 59Gdlo*G=> qԯ`PΤ+. (YDG=jYʙEn O`\1i\?1 (D.gs (~2"׬uW @Wz8DrA:}\?@;ͩ*hthooN.ЇC|O䀟_qoErG` ׏=RCmWsa  Xyp";?f, 9.=#nE,+n ޖNVoٗф=@y'?? ~f'1>rk0pgHuB %J`pzcpH1j7n)sNνohG=r(wd@xE n 僮T>?(PwH:!g[uYVk QDA>x ܉9,K. j@=9P:~rNmJ8)ݺ?rG >C/!zĐzkIis$Q{@qk#ψ AROPGR=ʭ־ }-W_7ӑw~z;z5p?#ͪVѻG7o}, YwP9$'kb3 O} @HPBDz0 bFbw~X!=rd?zj_(86C B7s Au XQ~zԁ >~˹rfzT#J{su87}7}w*MW>GC/~z& Z>y䵢rn {|p7|㉀|͞xH8~O6ʶ >t2^o (sVIr(bJw e/ֽE@5$qSFG Ns?'=/wqؽS_P!AtHP #;Q@(E_?+G1hj@scouk|ЧFڠzA>(Q}1W-@3x=S9  bw~ԓ5pDjri@P/7@S:AYӧqC8'!@0(t2uD۬Yk-ykaP $ >ǡ?zJ8OO!{D@ou;U{ƸOzZ>@}▝5.O;r`aݛΟ+zH0 uT#>04P! q)#QGr +nhf.; fȁPYClwݨ?~\zSss#;?!V=`N}P}D}W˧C[@{Dr{$u˚MMM)'#L>'@i0hޏDow{$ٸbٸD D͗h?9;9~4.? J4HG7 #5帀ο5V;uog s4%O*`O(?k|ۯլ[V+F ("zA!){& u}+q$ TA9Y=h VqH` :PB$MrE ,MD):!Z@ޙ[M-5S@}[>w?i>{d. CPDBD=ZnDwyG:vV8>;dO+uo dN^A7 JE$ 6@Ԃ _~wYհckwXW95y.#sXGl`O;sOŔfE9@ \>{Sx#|A}~!97d'k-Iv6w΁?^!z7;RYWDAw}boCzpCq B8hY[VU DJH4oo@CQh6Rb}_@3<>bRT{q(QG|/^k7;0ذH@:F/}윋^5߹/@E;.ٴwvV^\ƀ?oH('>X׿%b\(;¶C xH7KZ3j\A![G~[oC+5sVU$ȣ9J%ԁ ;|꼻j?|jn=s4 QNl]A?l-\a9o 8CGQb[zz@=y&@s{P'{Ը~BѝAk?co)XfC@(wRuhcV)G fZHՂB"5=5J>XW©Wo?HV55*FM90/~G߀pܑ*@Ha}rE #Ak޲T^|,"5O;pnO 8[G{BysK{S{= (+zszC׾ t =M *zG5rI8S?~ :s־ip'`rN;G9 ?D"?&~ MMMߩBB34φn =UoG @O>M{@-;O$gM' )•Ҁ2?snَmfmYzleomf|k?>J]ٗ8GnDȣ;~2vWWʷp=(Qȅz#ͩ;'"yXy>Ԋ~=\@Y >Aw0;@]QnHt0 V՛?́@'qz)?DPz洐?2W㇘8V`~[;DzԻ~9\\@ \~@r!9#g&|4&D@jrj|>G!jֽ1 |֏z_Ƹ;?4J|" d ?@C3yCBN8#:MC![ `'sF0${S=9W/u95gC^N I Ի?jS~R}n`'sE@8}Xf9 ~[TYg7ET]?R MMM)hB7N?/ <>!@ 5zǻC9}sU}@k~'t49IeNة @?g?=ζ<ݳ-׼kw6= ~6:ʷ$9'ٗL^0H+ߖc!?DI ($ r;E }ArA7 ig5xU~{Vzk|$ ]!=2TepH9D GmGȑ:P'@\?04>a'{+5'>2PA>|>(胬>MzQ@䨬3?Q-C>k">zN vq!?>(#(9h7wpt'd Ѓ5&vz4 B܄#?@>8r?~S.E-؃ VQ Rn <}n@}i @ >o6ADM*N az[/UzZ ??8p)>Ш5pyȋAz'AD?o/cԱbᏯ| o CL"՛@DO8}=QD!Ykw(ɹj9 Z0$|Hy8CdS@3 Cv-% >CnQoouoZ_>xȁ@= >Ya՛D#zsG2SAnjԭ}S4( N֊8 (:aGsvC G:`UAH| `;>PZC#.sz7PTW7ϰ h>mK4꿃 zÚ'yC.'72 y2'3^F:jb r@w2N5R-pԹ~ wԻ@O+@=:.huz@_fHOb].dGDORk z7(wOA:~ȳdG7OC Ѓ, (Uo]3oo_f#^||B2wOJ5=@ysBkֻU՛@UM)r@PBs<@^p ݹ- P@Z\'GH 'ϫrۙ1 D͟?nt.I5p@=q CA !rge.ЧG'\?8' O伡_w8V~2Ϛ\}s *Ec T#?B}Sr@ H@qw\??^Q<$ûG=eM^Wiq]Sa=T= 8|[kȣր:/tR huʝ@PH!z$3z/ J=;@8 y*swi d#f 0 #k['rH؉׼"tZ?8y7{rApukBzAi ?zQj]? O.C Rl`}@o@MM Б'BdЙN/><"䮟C~Qx r!O]D]]@ޅi UĽ`IЖ+|vVA\xlG8u.;s \hE,ޞ:G'V@rp[VBt"Zdw'|'z)tdGG)jOfs~ړOv ?rp=GT͝>㧃APcqC2u "Z Yg- "v}~A;=|hXg *5pGb[rF A2GCL%q7y=@!'= E: Zo@~Rj{3IPG7;&u/C.;վ d9*T7;`2sfnzAe5 m\1 1Q&8*)nz7^hUٗfkYL2JR5$L2N9h$NEy?O]fzU=n\Z>/=̪5pq[ O;W_o[2OiTQ[1 )}gyG5Ӫ |=QZn֏!f丅C QOT <Ώr{?qR$CT-Q̜Ι`Rtyԓ@Ā85pH\?!E]@쑘|R!kֻiFF*\?N@O%WB =@d!JC}du7>f(z]@~7:6thzD}/ta91gmO'fb[ SP*ޖ&D r'P! }Q?G\>!qA@l+ j=-/nQ>" A n#N[@K裨I D$W,?u4@ ?EڷG4H7)s)Zcb[ \FgrPH5oz#[V!~|<׽DPKo4V;(j?m]p{=8z""ViV8PqcN fQM[ {?. jQo#;@s޴SVq/NԷ~y?:w~V䝟p$7}ݟ8~ 귬M.`(ꟶ;ж=sŸ\@w?s腬gNΞ7@O Dޱܜ=@  *b ֏![?)oYR\\s=Ԧ፟fw9SKW<weh1+ g+޸T*}}jP:/Å[ǣJ@ԺT u =@H} 2S;A|k߈ykaNjG'd7 )Er pA)k\?}GB>W8>(]?7C>c iv R'b Һ7:F A8A}*1@^w9?BDB@z3 D5@ (o  _&A@@Q yAq'59*nH@EO c8jP |*S8r jC]~?U-d<bq=['yČpZ8ze@!@H3>7B{"JM52 DOrOΨ@5^C!V H|tȉ | dN#?vٙƩ8:ڭr[/^P@E?yjCOtJ c^֑Xdc?gOHVnkckP}9 _ T ճ87B T2\}͔#㩟.<}: ɨ:2n, r+gxhW@ώ (mQ(@( B N.<@['PBwO*5#ŝm:Ts|$ۤ+7V6Y"9赶mTM_Wwڦoz{x W5ϻtyR-| Ov5P\Pak߈R@O-C"j > }Þ:w)jP!zqk얏~B!<ܡG||d z9n:R>ǣz BsYt(dpI}CݟLFE?GΠ\8,g?YrD^G/ }}\@\T C.M>2G5j}7@M/ ٸsuS`;?ߜ{ ϩ^$[F-n8aݛ ۈZHG zŪ7~ ~TCX3wԬ~v }nXn@8~M26+$\?C S.\>|c`pVe!1XQMy:},SsSH}>& 0jṔA07%howchzDAu[q>@X)r>.q%ؑԹ 1k{{w=z(yY/̧~: =V[1 NJ’:cm^tW==phM}r܍(UnHn Ο'ʌO]:fsSJ4i[t 5pyA'٨(7f&,~5?{ܫo ݡnkjj!7CO5nU}Hbi9'z z6.z QCQ Tv4pۇ|tw?%d-CQW!nq 'n1Ō5or8j* X^P{($CWtG QG2c9 哵9\PG=;CH Aڷ!oX󉩅HgMrħ7~2.b?u͟2zB `G=|k9 PkrP{Nh7́;Z~R1'WMyFH2S*qt;=Ęu )?-IQT]A!E@Dy y@P9 ӱĝAUp7}VPk'9{GA> d'sCbJ'"'!7;!C?M_n-u?ؼ-Z`O<Ln kހ@q(rPg>u x޳3O= Ke_y}k,{G5k|FP%+G8k\G7@Yrgz*b9'?>h@J?|2p9t%332]$R' @C; 3]W?'5uŽ oܜ笭wꟽ!_G@̀<Gʾr>.а&}%O I3VtCDֽ'rf9+|frgqm sgf!"G=Bʁ>%@1"H`o}t:u}`j>9jO=ٛ.&>.ArŐ!؉YF ?@s1xj{?'9 S瀟N}?{#2C)Vet !oI̹1W f@Do!"Jv0:bV y D5ocś.txqrs BDH}`R?. 飜ݟ̑\@!= 9p)Vr @ho$ h_GЏf:ym@/1#j@Y[_,Yh@CCJŽ;w{޽AzDz8cޅ{Llrg,_{3*K^|4 [f e% #` Vſk;eO8i[\yhbeK3gs=.rhR| ~Yu%_͠@_K碉|[wrG [yhЏm>y:[Ɗ8>D)>ʨܜ?zFQ =^F@E^HP'7U'{|bFY{}yB ?t?{S AN'yQ.Y';@.P {؃?&@~y]r9[@ʷC ּEn} O]777UK@ d(sA!A"ɝ?.飜?} ({ )@<p8%rg"2J D5sQ3og9J $u%*V Af}xY/ީԒO>wq{ԫO? )@ +o! XB6ZS:}~ju; +~j>Yh4|9. n#r[(MԈ>;ɺQ 7zyHG5'P{@ Uw% ;S9zQ[@rPB 4y }pыh. j?J@o7":zQ!i9d~(oVЇG>+$w(6ZnxGR0F/3[rǿ;e2#@cwM/ pr@P9tf) -< f |5p HwgOpx^ҝC_}vO~Gu:?> ~t (@hz6Х4+g%k,O %I]p]&!P8wizB _u(rn+A{ ϙIRC>*QH=@R5G9 zCԝ>Įo&sNr rTZN G43c3`A s# zA۞K`C uFYj )?"[@9|*9|4G8p@ClA]2У\}sDUq;|}OHup83DKCݺ!rO;$s!wvCv! 9+"@z+NRH/kzq^Q J?!u}9{Xqouѻ*V)|r]l1owA^CoG'w`烡wG[`P68+  N[nGz49;;#wC/1q7FBKxo+T5_ ^yK@g}nf;Np\ 'P",σ@C saKF{;;!DLcw e f t!7Q3şOz/_>8~B^%&J \gzsƼl-[=8-2mkpГCT_w~4w5kTgT@ Uo} ԮBH5=`O hV9j7~Ƚ @@hv\5>}CG_/gOs ŔN)08!r7"nyD~=ouF>L |=A~@6+o!cH0H}@Ҝ~pP@7 |Yd"N#8CCzyHWSsp dGӺ #ٽ崹ݩ˿;Y{s_j6 TTr! P tQ;RMqD4$397%J2;jA}zrqMk'9}$p)6+@r\@ l&P ;Rlog;ol hnhu觡|h{舿nꐜ> j?RR\=Z D"@{]]uί Ьw|"43cXw8ؓ|-€m^}73[gw^'WPht+@fޢ3'0;kkvPHցВ/OOtVo%I h nf H\mֲ>o'^ȷu+o}@OA2"'bI|Ƚ䊙CjTC ļrw<@c   f[$u @+yQ/2ŽGMuou `PVQx Thp7nI+Ǥ;?Q:V}H͟)zvabMUo ~Lқ $Q|xO;~q%HZ'n HNhf51qg f8;rY.}l~TQ[߀ h{J8n(GћK?:hſO'_/?#s];? RYĔ!uCB;}\?*8E>%Q@ȀOւ=uv5!Wo)@{`O}w{=\=^2+`Oq́=~ի\=f~SO/!!4ֿe?%gr dªYOǽŗ>?҄?8V@ @ sy;o s)bDioS{.(}`P9 H#PDB d@.f@t!O(k<<~)g79cɜ{ k+=(k?]k$@%7ӬE)8~p- Ir>̀CQvP;2C \>A"9|dWY繃 jV}G:sV5N !zZ=Og@ĻP!2 pc={273dxOeqP{E!?iW7B>h. V+2~s^2XA/&YxAj{@:jW@}ZT9 Rr?8~*Ժ^=ˉȝ?ŐO!Rۇh~#w,='azy_1qrO^?v}s{?@̫@*S8}xr<9ZW|2Gjz-#ό@ A7v7;AЛB:4=]謿*st'&@S@啳A*C]vͳn߬z:]`o;+yV˅ΡKa] F懋%n( X5V@y:Oa ?;_ $!.w~fm*cʜ̆~B&MΟ@_@r_ 7ݾ+ouR-my !I~;H=ֿ H͛uo+69Np)rgj D> k*pv}2~H(RXkXL\*`5"O裈A̕w8x7U '}"krV>XyS.z%O\o^Mo~ozZ$8T#Q}[G- w@ʁ>7T eN]iDQyYûG{@ |pc~:|+o|,ZsZ?~ZDq=>&.%}Ɂ8P ~$1c `Hpfޘ~sG}_by7 PuGsSr"Gw?@ /Qn}Er jj v!Ý7p4w8^F rֿz\ɨ{˧Q}W rj(AqdN=@o7@Q) xs^h=G@bnwq=o7|YodU쟻뫽vϟֽY7F3Qg+bF O-(8nq_O3#ΟNV߮1R~Xp{P~ZzsmqTPĀ>{UϿn<7B_E r7o?σ(R~[QDp ) ~}>E7R-հ: ; Wz@}` D$VeOHsA> !b=#;C{}Qn}E: I1C"wpQLin%ȉC׺{;ݟZs< _A>pH)  JE_ :8jӺ}:&"7~ϯZBX&Cdچ+ߔ.'05G? ׭H?1CHED8U+XF9= l>Di]@(?>%A\?"t#o@Ǐr"Gf;<:O2J73T"n;A!rs n>x0{2:Q^PH0uBQ gP@$-T.GB8ֻ&ճB7;Aм塟G m :* B7(B~(- \}"y }ݳtžSOeJ={b=܆b[nukL!7M/:zܓ+~]ϼ_>l}N15/O {?H+""eۦ'ɝftf-ˡ' bt'@K]pؑHԎBBouEoؾOA ~ `O  OK?!!Q E (D]@Ov 9G Ľu k9}`F*? r)N?D5 ~}Tw8}XV!@j@ ~sֽe#xCwBA@=VQ\ACݮ3׏:T I=@A)r5\M 1[nL0sb[3S9ZoqQ͟VrƵ G?h+W]6ͯOh I?k B-vuoQwȁBjj[?rfQ}OOK@yK=׎~J|+L7 z횷0_in珻|VbjGGp(sQ^@Kg{?m3Q OyB'˻@䓣@^S#'"\?ԥt#\>'yRAoz(4=$C.sBbpIJx9=E81YSki0n|pYW?5f^DoßqC*RO~oL‘q;gz=3छ>ʿ9;iI$]&oHь1tgڸ@ Z (?YpdHA`G/Nsfޅ7}O- bB㽐 B-1$C>:3C^Xf\So)y# JC'c7M{yTy]>vQb&S8ќ>ɹT(?"hF.珯xs3 G A E\]i+cǪKIH%,o8-YJJJ9R2)˴e-$;D I HB؈}P:b {v{ows Rp{o>P{NF C`L~P Sz׮/^.PfO {>t̓?ǂ@67%4sIP~ X@^"$) ,Y@.O]RϥvP^έ+p;@ui%ܙw1 ql@ D)8'Rpdzgl?@=+;>hlwPJ-SJu nN+*yv PPJ𜄄k j/7J;`v2i7/]@P/2S7|7$:i;kWvU7N<WjXq%R7…2]o`3`6hy0vJ-4B(]tZt*lsdk͎@!mFMV<6w`c3ٵQZ>FyZ َ\Hvɷ^/p%cG[]G)&>|O>}n}_2np\sܹ}w|oRܹ%{}E|_?yX׫AԮ "eڇS޿/{߹qREu}$Ҕmmk!_&6B- movOz1M? `ARJJ) I%y23-9më!.# ~m9aKiuWw:yC-m9IU9޷xz.um%H gἢCa{dĶqKi&ZwFڅ8ڶ`]=;3hOhy]8ϔ[ԃב 6|Jmy^gS:NZ,>3y] A?WKFWg%c]c:{~-y[)Oӽ̳wO/ςh۰]5?R٢I[9PM̃{pl?ζO Fp77C"tdEԡ L$$xq-8;8x917CoOV*X: XY0VbӸgx쫇R)^u,.ƅq0kp,uv!-LX2n\&H NY0i7P5sSHu她&qfRrd: 9og=['|6eӡ;'S,[\:^ll8=0|mqW8XM qvBFs A<\3gzqU.B,7l ) Ry?S"|8͹R *.%AFS0HۺߒˮӿS}&i_",ίu6ml-׿ E']sۘ}ҀQ YgU yh+^R/];.-ŴM2(É#jlA+Q `[ @CY;:/Ċ&v#"<@S e}{/\նp??3<^`ӹcMVBA'SUpհnq;.GHeuLKBX~9OTDs[eeM'6ΜӘ2Gg+۟.U(̅A dRK;抭a:[*Ϭ!ſ (@ \:D$Ȃo O2erm#ϼS듹3JyaMtzl;L SɁ@4} 0Xg)S B jo߿c4` 6؟0 : ;a,}[w3׍6IZE@+Qz)9F~M7S[ PRA7}%_.7}@+W>]~6־S'vlnX}t 6N>O!oƹX[FZ؎naq%Y=T=l_! gO R_ yk*.IӲfל ˽dI ղu`&%Gius"saj4k>[\4Nll*;F֕_,GD3trDcd)a"ˡGJ3)psaUeZN!L9 b0~' pkʳAErMKߙ TVEQOhHȾlmG}S(6>Ö2Ho@jWY7g-G<;zH'9zyR(H%!M>X\ezG+LG/=d򊑜FXy,GR eLgt$dӍ(53(y2+1Ѝx߆4^*PCfMPr-9(*utb[ii=qUN%K6sEo\o pd cOnGmL l ;C/h;f2M4R7NIs).ޙly:֥Q~"%[w*n{q-Ս'o>CD[7^0e?.GrlWT6LIg핕1M@f\JXv:cR\̉'~qDsu2~%(>uA[GI4 El?.V'&-k5SW| sSqXM ;8֐m (NZ8*k8 ^u4Qò sFJ 27v!AwIض7A6\uY]gK#KWK)ר\d>yv:1L[NHE֕4 =:uzRF%!CϵYJC^na ^"^/*8 iSt HsC)Jէ23=)%iSq%TSZN~r`1on+oFٲĠ>3[`.&tprm~#GyP=1F eXO-USyPb/ev$E`Z=;7 m r>t`(Z5Y6a ʱئnc qK~ HDψ.}(e`J-> վa6e*;Ge>gl?87@Ζ/عoR/7Ysrg"@[}P?"Fcwv8(\o=Н* ;0^ d_}]8sz;^%o;F6%O+83!S2H)M2c𜜫 iydpݥU`@ॷe]+͹igTs( 9d+qS;e1u+dKI5 n<-|~jۂ:~Kd; $L`,c%~+AmA+*vq(,] AL əlĂ~@H=v5t<ڎ^ViJПe`-/}&ߵ4?.wu+΋ ?! fs}J\T]\}{BkR1aݮ Az@0`)aFmX1(Mvc@E)fͣH.`XX*9yǑ`644u}cZFu^SӻW.kDcpfSpZ<8[:;5>l2 W/]?`]"f G]HwAJH"H!f ԅ&mAu+*ƀrdNIq}dvh E6*mEJǶt@-\6zejSme(p~ ߡq>߆G+( 544} OŬU^d(ɻmZcq䝜\^6N~>]\ܶYc!lW~rS7f"}G Z+ad81/HmssA8}r5)46[V+ς9~- u 6p40 -̡J<>W(9h𓸟!g` 6`%M5;c>b%X^8x \}6 hr"mZĝ!32*A, >>+\1 :d9Z~݁ Ǩ;unAj$޶$ޒ p,3<pm1^Q2_ervsݗ'~/J<:+s$UШ|"zc)cyeKj2HGrwݘRw@]'#J-67}9Fo,>SWN"0H|7&i;u\)98Dx~,%KZ[Y&,*#T 0sE-r߂H4ukZXkFb頓\a'@eCӜP.2v~zLΉ'B%ᣅQ"R/c\WdHg8Zhrb.749RqsV%Ab@.'K~\ |P([h;cܔ})i9 {&dٜҀ1K.h%D Os}Ѿsg0 ;b `&~cz<7K&:Swo8 q@Tԋ:t[I dAS62γTX1tg\YH俢P^ t&qy'7#_,f@Ʋ"+_] _+]~e1q\P[;\{kc"Anl@U&D`1qmsq\ƜTxdi"˞@xG6챵'!=u$ʔ@¸7z~ŏK\p7nV{j/O -汸o;n"A;J!Sr@B-e.9V_D\ŹX޲\Yڑtq $јy'**:,|ЯmG$qѼu}o4%v[.Z kS p1i5=#;@|ut{P&[{v4\o&m:FIcJeK`.@}(*{|>iJ9'΁cy7Yz '3uI2#| -d<Բň.<#G?!1 >4r7"=Ċl8қ}1do~6 az+A1y/v9X oպk7t,ǐ>;&>Z8`w.KUԶ .%1M$N[唈P`}l?G8ڹ3/2ړmFBrtXD~Ʉ98HFf@'vvztl}Е) :w|zEv<६SX\ޱ4N 虓8=}Kq6߆=7`1P@P2B<@̫Sڤn̥=פR0=sX?yN<7>Uvy[,(8V)%1RvӂFXeƋ~ܱ 2ww=}X@9{cYgӻ_vFz/>`Q@t^I'|p@"'Z1㣿I1SyZtP@0>+ x,o/=`f@'뢓~q%Yh@/A +{ hb  Kr6\>5,u@k=`3+M<}?Ϫ,^vR;՟Qd:OR܌gPuhO;FR1%V܈2$ w):{[,OiY.ߓa1Y ;ffԢ1$SAA<ލWYo/*&-Cyt=H 6` t~ xk0F26[ww$l]YhE@XpGXI@^im}ot FTo'O)v<2}444бK-5@ck?px:,b/Qt'<5&%OfשO#Dev*ʙ#tbymO5|Ĥ:mgIAPFOe~'eu'Z=yFtc-IrC{|X@_dd6u9pKhr &Q{;"90w Ty$g&Ә,Sl|z&վKZ̉U'crLODiμ!9zN;i)oy߲qL )0%tsL9Ac#$ V30[l5z~9qX ΈQԽDban!Kh|[ 5lw >N~X8ϔ(u lМa)8xe~_ugXv>s$a$τ[w )gu ^qle$犳8Lm筓ۿRr@I[%0[9.13I{ >+H&?m u+ciV?ߺdHGfYk.GVڌ;qVaml?0eOQHzߜpѡ;J chl?"{KC?,y^5( o0V/q\eF}f|#cb;< 9G]gG̙KAzA%q|wf}_wx ӦqФt+JS,]@gV'O=C'+n]bnEYu7E! ''L@Qeu3Q6N[ݗZMQ%1h}ǦP{}\:m zgӒF}ccٱo~ٷxFS( ##ƊwqEQ\wq<^$u]{Q=K/'N dcKI5΅q yl$p zr}2*,:1Tg>tŃRz89!@hƹgAA|[ہy']aBw` @N7Ѱ= J`J$?>A>QN4` 6!s)G?{{j@)>9h\~inl[Kh#튉B AU4em:FޅV_;̳M'7vp(Q2JjVMtr/Fǰ)g9EPtnzч6glKha422g\@=N(k/oeQk`0̬Hswq$y$(fpQϏPe F <6HdzM<}x#?xQE;ahL<a_q|L*lvjr I,| 0p3/-lo=|dAx0* Emɳb;؂B5h&fZ+ms=Kw$򄞝mbe9}>@h'Gr@`w];F2%/)VɥY/3Tc8UmО^0^m!cknaeěk473` 6~D_; *@ "WHV>^WN*D?& @)%ҲɈsIgb#`cSf,HiT.^~|K=Kg<H-<5@9X)O9֋r淡@d@Us!h+ O 9 ^ }MF5>Sؕ05Duu+:}e8M\4%y~uݞ] GoFd;,Z#m8q yxYmc`r9"iPhP @:ڒH@ހX$6w< za2o;[vC hTF=n|[˛M=Jlq@2Jb#0x-VQ}|PnuY,ȾXs8cDcyP^quX0,YaD4:=} O>T(@2+uG\υwQ4eZc]T%vt"V>!;eBE\-wc@!q֫]@#hǟQr o} C3Ҭbn\ϮG/W\^V]Xիh9:J;`(1NJ){sDcl~`ND*ٖP)޷ 6` v+s+q^5hJ4aH=jw cy˂\F;@L#9/LIJ-.xn=~LKjl@|oLvkMB c[|m`7.T&'%i:Y+h~/A8*63@^?zesc݋XS#4y/bܦnZ}#=oǼ3>a|m`䈜;?7PD&{#tH\7TKH.l٥$WC h;;8?EeeM2u86( ?ү*} {q 0GoB Q’Yl&& ɿnq,%IS%$d<оx4l5?#5YS0O^RLl\$mq-d\fg3?\%?!@@~%?t'>Ǟql?9\?dK1243ү43Oo ԼM]Cʑ*N@aP+Sx|Qs\52;+ܤBENlaγ}Zlqn0*:1 \vWݲTaFpr>+bI y3WFk :(d S} ߱ItI]1W>/p,ǏL-uY~^t%|?@T@W_?(bei%D:g$3r&KqsЬK#Uu@D N@=LD3S:n-0&#D⵷tlmE, al>? /w'6p{҂ 4 :9b}M\~)\r֙cmeT aot x)uG.}qf3s/W5jq@9>R|?^Ǻ_O?ƒ%} "P&J~dmɔfZ_P>yqO)C߈nVX f2ZY@-;4tv* Am#=+t9r:L`nb\$۲ e=!bmEǴɝ<`h>I'XDǏA£|@@ popx i^K\\svq@JǛ|l#3){2/c@@m Rmh'T>o{ q˧q;. *n7RG$B8vG?sMգ`2SNrt룓{> .v?4X٘?mε}tKӲ]*0(ev\rߘh\2R;ݤ"Y[ wg\ ΅3NoUH\~PgL-"")Q1sIyKT;6 MyqpjF`3k!#8q> D7O85{<z/ ډH^ d@?M"pl- \/,(S6D}ʄ09#Ӂ?n%[VZ|?w_6a^9&8A1sTcnVH*µ`l+=~[Ї}%bƬj2` q `?sG+I/rrDZ͘+bi{НejrB{-IA U&O?C,ϼe oƬFae/7Ǐl<^? 8YŸ+@leg]'oa{my,,!ys s7#;H@c=0_=~ڂRRWbSAWFq痧ok '$c}寧6rm'4degҞmUQR}2P+;kmKMuˁtN gc:}셛GN܎iCI@*H%9ԕ4i.lyx}Î5ZfE$XI,%a+d<-gN)]afI φ2g6p܄ORDBAttl:t2;7o/E3VfkXZiPSZ$3fUE1 4IiFbа#"yDuĖ,yl[p2 Msny3caA3ss:箒3\xx\ٱCL-y^bG7m\^Q2[pࣄyX9g;97Z$n,従a>A.u ꝿ>E0Ze8o)/}e9r$ 螒:ZVo}?^ $KZ{z,cn7ː\?~L.`N(f"̸uOAg$TǞ^9>_S4\|gˮ鼴[ hcv^o` 6` v FϏuоC M `uei@DJ)+N1uѐ D93l~0Kz>{W:MjX$d -OM|0S^['[SIc\|l '49΃>ONb{)[mm LN\qv @/r8tx_nfVFEɉ J/-;4٣v=rcL \c_-}?6 "]к[ c8B)HGg78Ju4@Emt.u gѼw 3&si`F.$5'7x8g3x8}*{aJ.>2F S˧8] Sfv&#>'0<ܧsט ## kybIizg=iVX f>٘/)a8V1L 﫞{5y~,W<? 6`'g'88_; ޸r:ii"8O{bLYy+{Is/}:R +Yzv?WmyIɍ%zP++;^ dW|>^\`+]|[_8J/&ĥ\wlz{s 䣯I=kޔml\^޾;<N67{bk#݄'H$vб8@]bɖm >Q#NV'N;β/vud1-,RH>_y;3߆ !#åsѝQh(6hF¡yl^Җcs?L@O1(ŁNͱ= Kg&oG١^2ʴ (,u:>y7e[ח}~w 6` 6y~r۳1j^à}@@z'Pnq ׭XѴSw-(`c"(ɠMcNkӜ;OGߖڱ[1-c$&.Oy> FK_jbj:j}oΝ|l/ rϽ{u+;YVRTAg*iMTc4$\țoM{#2ZGAQ/27<4[ߙ:sJ$R_&P a#_'oe,tG X}|??<^E |Ô ʥ2ym~A9Â$No?;[ԵN-:!GhC5-oĩӞHhbq2⠹">& ̱103WF%ŻDq椏mizc,yhReo/zRhֹ$/5 9gHR9R:"sdk,5xoؙ񐲏f^]ii3|gGyg};(pXa5<W62RQT*ȀhԮMDG} @Yɳ~=b ̸OvyM;tR xRLɒ-XX)JPV)P`ͼz]r3%#mX2Xgk6}z~ `e=y=V1(=C_F=[,2 l3v?gۥHx/ .B d$D5c~ihaP=-.4 nz%(Sugyנ N:׭MoyQ7uM* %Adt?\fyoSO?t2w^m'iuz0ߩ \!0U!VnK @J<0g';t\ry'Na#͗# zqqZF6.*;hm4.<֡@ff ɘRr|7$1'dB?[bNy=P%f} (i޹&M/xpW|0fbJΈ'1}r ^*1e x$Ag+y^`NR-c4/怐(g WOH{@țɸl8Zb# Wlj닡aLm^ ;TFT 9t| nA_O'`eea,dj۱^_g(v.zťni3` 6y~~N JH^REJ[d엒?즸-1C QI9hAbնg*vl܏(U0d[G'w/f3 du}t[ZTy3;!pY^:75w{.>ҭ]qԟHX@t9Oq0<];?4}#QDN}Kǟ{83݁tMo cw,_2 `UE!dVW(ΉDV~Ue:9n>LXəh=^`g7qi{j7/7<[{8:c*caUʴ>>:67EDIy ux`֑iKɁvx/7mb[ btpZNQ~Z*h>k34f_WxcM+D8b3\%j#3Y?)jw˲%eJ|l =EAd"ld|m@Q0H%yO`m~B~-=;M, 4 v[|` ?*aHdG" n'6YL9T.%~C9ŲX,B&ɟHe0cNہ7 N+CYA^AR?>gb8;HϿB<!+I-Ksc,-'xFC` Ӂ 6` v'?`)? `?&m[U5ԯ3|ܘ"f ͯ[6(^W#q@iVL F~/މE?ʁ'rp ;ju\@_\?؟& @+۱h:&N 3'U"1]\\W婨dNV;T@M3,3;;tdr0:5uS7w  yM a#+ %;L!EVs"gd)HPN+UXA֛d2@SɳZ+ʰ+iAWM6ep[1P'ul1 UNC#[3smQdqx{Y_c`@/sɭe^GA VJ+Tg駁)|Y I?L@y &K8>mN@z4oƐs2cDuSp4fG?g},Tݰ3PKNorx߱=gG~#4A3}g1ifXbcK)0ln滂o48AXGzױ4|l@& PC T>u4c޲isJ^@Vɋ X zFV0 #EP~kbЛ /높lqNRc#'] 7v t)'}qy{l<?`Ӡ}@ .סM%h[VN׎m^#tpHY'`elbmuv#TjCdti;܏s1KpEZ-_ [>Э}8f@btkӍSӼq+kct(4?em.J7Rdچ93|a *,Lf*H|nk Ewj2?wu~miݏ"6[s.N3#qF>[0پ80l_,'~$ _Hc taine ky1"%qge!*ԳMx6 :s"CmtG*}$f6YױH/z(O25'CtNf&C2]omc()ʂb<h>R.nsr{0NOI[KDߵ=Aw͠cC.K1@#<Ԍ\c@{=3̀i0| JEA^=amkk Xrq*F;vgq @*F&Ysb !0n+Hka Ұ,Q|i;HwtA+އL>4K3AtWkWo+|gZYjŮӁ3` 6y܉~9?>@+ &-dŁ *{q\uG5r";Zf+ 9)ڕ>}gJϝ5mtz]7g7EJ$iǧ݋) X7eԢT&%r<馲wJq:繹HH<suN?32Jͷ|d&ߤ`7u;MJbۧZd1M֖ܖ&dh(<(7pDɦeGG7\X6ÆIs 3|! a!dWbu%ȁ2/ a[&|d{ɵɳ&MIx 璓r" Œlju_=ea*Ȫɿ|ԝuOlM5os((`Nk+seƶ2  gy|LTL*fJ p X9,6xU$R?zmfY}PG\;輪}Na%rI+.4:x EJ8~p%b < 2@rcAaFO a;p҂9pvH`v@TYqrlY称2?oN@Y=\F cls2~~Y %1),!uSܸa4ĥW%WoS{!ɮlDыƟ|nR[5Tis6~ʧ] y7gyR1g Ed"evިCjF̿\}ٙ츿~6ow?b>xݗҩͽdHZD,Z\~>Ϲ2Z1P\=ӐL@1(;\A$R6bq}̶V;f! Y- [+gE|mAqh8K 4 #!{8o EO`ތ1oiD[h~XN/c< XykXqs4`/z2[F}.N[ay𧚶c*aEx~r jdxPA3pRr_v^cKm2pL){,wvXZ_)4l;u?SsB-mHNp!b 1t[7kr4,dfLaKZw;f^'(Ou}eX~cxӟJWU52kLQfa9O5P5Ofi9P:auz}ˀVtJݤgV?›ׯ7m69z9@˻>u8oc,'3Hpud5αj>^bE*o& $\"rJqGsMs=D,e /o}w,4cGE& 71 rA7&׷PiH D_vҩ33E"y(VEy7` &\V#h0O\(A2tX0KqVy2?pY6w`- [{S<=#I\Rfm>Gaf Ñٚ$oq8*;]'Omzycw, ox I 7 v^y&';KOʆ dɾw~!7%3ж cˎς;}8 =N#J'me\Ui[iW*E1`o$b-&:PNմ0?~FGyoY喺NwL(r{#$+蝉1n_8^$+>6ɿ{|,b1Ql{OPl}Tgԋ2 u~H ,?ȿy\4q[@ZQlt@@tɆI˾d^+*(DVaáX$H*ƪdRI^FNu|p>AZ0f^ZQMmR+ nˤ"̑ueYA[+]i%zkNl-gCY [RUޢ62Y%d%{5+y, =C'I=[Pȴ8vso^>ŸmmF'g`Y8y|. >l+-`Jxch:mg:d)(*)v_{7Ax{祎ƊUbI_-=e䤅 sDxv&~T>A!f%L~7< ?_񘹤}}6Ҡqd1F@d*(X"e‚%> km\:tGljr .džxk8|粫簰d/:ߺ^Y?{rle E? ߠ~l 0}b4?]w_Z:ר;}l7aD@}tߑCϼxO:3Fֿ:sɽ?v$^ؾ3_Ls Roy7*)y'P4XJUvTzeZCA>[<./Nn[ͻw}ɀS'&#Ժh/=߼VIɝ;~kzGsZןk7-sOn_y#Ă5 WA IWE>J>q`QR6M˥O#yNJFDG;\ݧlA<((N8%!s#NHxO(kc<=") s5(߁:cvSZBC@e78lGE LV20/2ƐDo͸ٙPɏc*ٚ3 $Y 2f}(\Oc.=K|_mcJ:fr^h;u-ӖM:.`wG>,u]WwK}Q'`(fxEro 6`Gg_8ej߶)&bB4?_\>knbeRI"/겧܂j.m; sz ihI·|ϔ gL~#mBљt]5-aQf&O4nyr.˚s++>νnn Iֹ~k͌В<#*WFn'6߳~;Rr~׍xfށ-~Wr>—P-!k@dRrX0sj]'L'qs~DϾw#Y\F4+N? "d]h8E1`Jh#B& Hbv|D9Xyq,A1 q 9à&gl|@sDrmV. =/Hr<_]+n&>*=I?nYR.N(qf'\4ח~7uOނkST2JJH]Ficz}w^^V*lt7uHy3J5<٦N7lœ伉\eop޿xB&^Թw䴵xG>4'B|px=hԓ G_zg*b+6;c~[׽<mQ&0r;I:=*R/, Ll;@2K9׀ du8'47.kBPO gM%9Ҽ .S,~ֵ@0Y= 0ԥ dwnfwXfJ!ȁqKbzUcA-HS?0Z Ed(P28PP~n7~Mp @hu/8_gv9]9 8oX#*uA7+A\}UGPPA e?d,CnAPLs{~(7!V Ŝy0H٘;5Pw׏ܘm' JqFu?)vtni15/j n ao]˔*]2n\i  RYnL̢ skƜ^17k)[i85ms3` 6y~އ~ Z@nAJ݂81r6q!)c8t2FdX@uǪxh!yDt7/-y JIHfi&XUfC@w玽3 }H]Jm+;ǏmuGu[_p2Gt&r=zlo<_tϼ=̏^ܶC RIL^Tc[' :}1 mLDlgě$QA\^K&~| .GY֋ϓȿP>(@yjط~{G.q~\c5?ձOkc3# +mxc&9̿]tI{(67ȃٱB.?|} 0ܝ:C[J/AUkqݮc,9\-{0߼[d/ 2><3 0}6Te-|.lb6k=߁G>0r|"%v:utGϐg# <8!1ﭖE$Rߦ>t cMA}/`Dє e-[ #\uD4'93ueBN&oDir|y^sڜHrmy$ CJ(m9gƠ-5%Yc‥Wt5#,,u4N,JLlORo @@({\_gǴ wa.R w?o1NN;r=9ȪG;zOZɌޡ(ɻ,_8[K`K`ip[@Y2~WI\:6qy?F <( oeGNNG7RQꐐQ(KK׭]3m\=Էl:y zX6O @:dBZ]s89VO2s²qVtLG>\:h 3my$"J"Z E~OX1Q>ׁbr)'Q"^ lInFml-bAL ֙;))俕jcyV-[5NlyՌpzHkhCrF@_AȜ3hUClЂ.?R,C$R;YU! xX@\ \p{D ܣ-ΉȲqa/ϧcq.<$_R]Yff||yq8iwK^"FcS;Iv^T3/(UP9ߓ?g%}~(?۞y=bŤ yF,ggaC6dy0Jl+crm8w>Ynro 6`g/i{z*? T?:[Nt ,ە9$5cbs]6j82tf2=|ꍘ1A4&e bU] Qe+Iga9lwޱ7˖O@J;HG7~['W_ا#Mo˽݇nLrɘEK7 Cf4o}$o^wˁmǑ<'pKbx m];>9sHOHTU鬑 98NukQg; | G5CE߁duK}jL rF}6*]$mkuULAp4I.ʟPqwxZg@b!h s;w~;t؞Kޱ's@c %uv!vEZ61;і%ZV E1S`(Ҭle8}i4 9??S$kALosTlI;fr]R#o+*Zq6a=U2*(XVk9 .Dkdm@D̖ɰe[f*<3+Xhau,X= FRQb,Q5jm"׌X2NL߈d!ާJ-Ts<ƾ 8~eQ&. ro 6`'-~k> GQF~&sdd@uFxSVq)8ZZ09 R$h^jk8`3梽/߶KU^Y@`{P@$ <rDP(ڀ(F\SXP3/> 8N,QGe:n5 xnb'N9>^< zHsUzh$; guVFC]`"x#vwN%:^qrZ i=Ŷ/b+CkfE \*V 0@#d?0ߢ]eRG)uedDALv,m>z+ T"6n>GHL/iڠ/4¹ϹrڹP͎"e4b;g x-s1x-ܳBOdpO6` vS?~$eH~G{ lA8InϺ_~^mGv(%D1 إ͔/;8؋H'&{Ve=>:cǓt.W>սg99 I O7gKT@c*Fz[(on{y{.{_n}mih}s}tGnA+&o9 L1,clԞ8#Q=-Ǜ61^lroh;?bGǖWGmyq|GEѫ-bt-i !"ͥ`1#Ky[2lPG-of[)aG @ m~\l  N٦1 %.1MnlWN"/I@>d|Y ETG1H李=vxiSMq= W Q{0, PƋ}+EsX{ot[V{ݯD7jI(Hq*J $˲َQbq*1B-Bd I'z|}P-Vw~YuI {Uw{眽>k_?AL5vb0t"&֟%$:@6??N|?1 yha鼉)sP1:tbOPmMKEdzCvsաW_*DJ >:fjo•&SA?N+]N fV[t:td$4Y8Onݺu;CO~E҅fZE^c%,`jɭMlΞۄ@(.xA D^A5͂bEm/iOxF ˑquwoj ^Lܶ'|6? NjE:&IWuƽmGv_OEi~\۶9\n;4uT"PvVz-ߥiY|[+p1ĽU5d/\zxױ&ad%Bb dqe//4HS@| EgZۓSE'Ǐ}Y[K3,\!^RA&#@%r.{ ӔwyjCU'={<ײ`& 3UMJ@zE 9@S II|AQL13L!>Ӟ,p~w!ajPfFґO׈/QcYb(8d 1K1hpPm8?ZRS2 ڌm9/sxȓx}bmK Z3R޺u֭y:?3ڮ\Agte%ԉ4 1:tK-s DY=,08s(x2UAϝd[ .ǹx\Fa'#d\W uS^pGpddgdbPжgz$_"O\|*rƸ_GAɨ?e$i>[#FP^6jmcqeD{&k.xUM{NZR'p~Xfoa@J8C8C)ϻqG@:M=<15r 4o?uN *~4Ns!6 WV`BҰf+ hj30HOo%G~ b]ƊUb@L IDZ ,?'I \}&[HW^_tUK-7JV{4N֭[ns5ZWU- } 'H6<$da 1l[^οtw|#Bo*6X>\Ž^A!f\i.7c;b&i/l?WE-t$U]Y}uX*'=\5;YY p^Tfw>pKyx2߽jJ3k_a)"W+m>8˝}eCwl?Wo!`4N"kwUrGf#yJ&mx@K?nz`0 lJI⼯Y 1X]HHYKjjI@Ch@%3jDשׇr$I, lo'ch C>4j.h}@w|z\AH 9ƚiyڔyN0LZ/&IjK7ZUϿZJLiJ4zV 0K7q3\q4YT8GWy,i_Tv @)KoPigwZY(:xꨰ:}l׀lLyp/w,Y_TiN֭[n)'%*_˒⛪Y*zOm2.7r.{:{W)@dQFA&+7~vvB>q}xt[/>m  gYq! ǂjK[Ugċ('wzC#>tl;]f?-U5,3lkw}`x{\B$I?5$W` @)i(pѭb"@Ky6(WO |s+Z/2_A1)`1(יhAlc&VecfUJY`mLYa%rZ/zD@!4)ǽ0 H J2 kD1!1\ UTWvLgs%7| $JHÚyՠqt%{Sx60}i}>p)-nl;PIe`-†kcWuȅ ;ocz8[nݺ!W%]i%Ow~3@lJzK/@7w0jуvY3<& Ff:k~SOT%ԪQ{޵uَ֮/@ʢ~Ɗ>cԪ,cYA"Ix{^r)UՌɃ{_P ؔ0Ƿf}y[{a1g۶^rY` \dRI *gqVQx qF qSLضD[P2AaJ'ᅬaEcemq:1m6A>`/'GY*Ӂ0s@,~)4)s7dGAוAf9=;+ɫ`k\ U#Lk5s,DX#P!-WY[T8{|>PU!Eǟȸ7׉OF0HjǭZ&p)o|#tN|ƚ]43?I @Rw1i`W9>/~`ls3*cA4ψkNgjH Ƕ!)$>ی.N^Ȯ){oaW9Q};Z#=b)bZL hNTS3P`XR xf:rRex, <+%m0Znݺu; ~Cҳ5>z[޷vK:˱X; Sd(":rMfeSp˫UJj^0~0*DȔ㇗orixpig}LC /:39h@?pPY q)[?]w[p#q^`<-, \:d>Ѓ^^͆1-3:k5Az}wІR+2i9g8;K]4j07<dK% >-J,|`r`14 PJ <՗(@`*;+E` Jh9ɠOJ8=dK!&P4D?Ab뚟֞ >?W qS\dohѳ(^^-,shdYl@$3x"ǚWRUkQob?*c6SrU}+.~9'Xx1g>:ჵŵݜf5;8\ Mw61@k3Y29ッq@ xunx~ջr'@(bw7ҟdWʓMk_;壤iI^o'hӧTǪ\l׷q7{u;~Aw˺ PV ~p,;xDLܘK-+Ƿ/{~ůyyBKD-hfʶhX aQyUg:B* 6kR\*ЎfWއ*Szcc|@bm<sءo** KS%Zqh @ ="ü*/Y񚀞~)HAdPհ32D)_mps?4?I@ڮKJ͏& geCDI(-l`#wZmC:'%t"f _' 6W Ṑ!pB:CHxH"Q(>9Pmuk~@֊"E^ y01^#E{|ׂ6ަ!b@q|crh󅓏[㳸6Rhss )N]{RO4z;y_t֭[ngYH%CIY<K^oۧ:%8v.lTå)S94/h$0X:l{2֎6=ñ *U5'x^r9㖍 ,՜4._ /~j-)-lZ][/9Z V@3Xdby]S!/zvVZmO.Mn+&/?Aˬc7fI+SėNR{ȉb`=P6 VӀϟ5>Vnp^u iEK^t/|-t1 4 A lV %H+<@;Rπ.0ՂIB_Gg")_8N%T\f2=;`To c8n{v+ՠyпaѦ")Aa!Ps6ѳ)%(8Oys˓qjac&eh\ԫ=3_Ǯ@0rگwV p%Y1Zv ñ׭9;gIbcڟtP^[D:m.@1n'u\Ґ 3QfWzfunݺu;CtojU+$}{@SBUPEJC؜h*itu3-7R2wR/J *8΢.O˝[{ӏ%-B+hV6߳R]>  ta fO?OiU7%ZW(ŚU$mêy4! 㔛޲„λwQ$ b Y԰KFKA6wj`<3MT֯%pW>P@* 2,կWn9s +@?je{$߂p@)߂vnA IǺ9TZŏ4Gj q%DYݨTN5Z7`bpKy;xeЂzA ݀} n UɚB<]ڗAggvqwaP8t+TbnurX 5[".5-9R}dN@fN+ӫ*o1aŀ NX;/_s\]H=7F}5Ceݺu ?WIUI/4WJz]!p_=FEϕ/tp}B[cjd"XIlQ3Ԛ$س#{SVMEsV Tgn"YJyqm\8u?d~gۀrxYֺ:mGA^ W[%ꆥv=5 C8xVmI:lݺu ?%~RBfhKG~KG-l >CS2gǍĹ Sc:=.40-)pb6) 6pHvuo\/zЀXT"rYNG[ܾlգvݩŰ~qT{{C'}];k5'}|H{PP[+UL;y@6_dyp D8/HAWRir,Vl5_fDKPłYi{>65* 赡w:1'\?s%`No)iX)qՓ]'֒TIQR{ߋ}4?(c6x10To4]Q~mgm !?ϝ*S?FySI@Khqӯ/Zn+|6*v}`uq"V6MR!hf]c?TCUA50wJҪǺu֭# $_tD`|$;;#mgIŘ0Z>>amؽa]zJ{o-Qd˞ZH{}!Y{d<D돭w>qY5ƻ?*Quc8V7CS4֡ZxkU7$ *Vz󭧿;k؊,{>Xh$fLǁu]$atC2lհ|íOYVuxu?zPwLb=R|&F|/ seN€fT A %EiNgqlB&z t(Ù+ݮ7T@`ɝ5B Yx+^ 'O{[(i }-@M<4#mg4x.jiC: b^Tv`?Wdk\YWAOU dlMT?\=ZtNn1Gdo?ڕ 5V B?Pa HI~d.Jv0Xut)A8'4|‡iڭ{6LMТZ5 &:| EJtYr\3rsa4 dD/שJ~ nrÓҹ]kJ=bڸS{8[nݺ~SMf߽[tBإ*܉:@0%+=uɣfZ.6+bNzAc۬Ihϟ>knܾͫ*@J8:l}wSs--.88#8p{%=H[v+߮H~p(}5SNpfHTXJ*^ EXn{"3^;8{37 ƚNi53V3zp+"0MsG# T92|qXqa}^*^Yɪ FgDH贗aqN :'-aJΆi1},i|mF*W]]iDK4 _Z=X ^Z$aCTW iN4JơJ\src钫Z,,qȪ}}2b)I[[nݺbI4#wsST%0p9z$WGmG].t4jaTTp$$Hq\䅋w<έǪjpXu2Tժ*7__TJU,{;Y7n3<I4ŒNÁJ]e3BT} oe V7gwB k+d0&^{'/^KiyJ@ %duK%Xo@ hcޯ1 *uq&C%Wha~ȁOJulH%q̯EGbs/1{`&Cn9#53Onݺu{ݒ~foNI5Xt{Wu٦gJz&qߡ*.٤3-ȸm)q'U\`1$YM5bf'apeNB Q[[׼V( n~tr } k fwclf,|(6I4r!=,+Fɫ1y.Xe_{cl}p ?#}e)Vs UlOtPU݀_p9$m;pOݺ~p ;_L3$ü˵גu.̏F''GM&>|ሖA]Nv@p2B :gV?'{I+qhmԳw\"nA䜒u" q9kv!:*ۼH-;-E%}/,P7 `HQQQ!eG/9˳7s3b67RYL }bA23*?H+RHϘe@"Ph)9{LF?ݟN #hENFWb->C[ԃ8>PtSe66è.݇,^6Ow~6 IN Qٸv>*N6ARՑhyuW+P6ﹼ"i=}3>堝ؘM!ތ.BnT!HRTv-t N"g<29ptZ֭[ngyZifXI^^*rj͘tZ:bq4=Uܧ^jŤ'`~ M1,Er1\?6mGOݾuIypuv91q٪4jVucxf_gwܰҍ8P4?VO4 JH΁>RKmWq"qr7|;g_:)`]ck].-f#/}[0'«J WN1HU"iKyt!ā0>Q̶y0jc o\ VtQP#ڗk!O sGoZ|2= g@sr~A7ƍ;F@qhV-|<. Oa'1@4x`eETm\6)aMā<+PEAP@ *؃[I6y5'$0m~J*^O~nNNiccxA}'a5'xy[ĀiKVALЅK6;n\ 8 X2ZHmjPa"Ims?o4ȧqZmcs,0Hkւr زlJ}5ozBy)&)*90/fZjsTPN%z ݺu ?I%Ĥ%]Ҫ{@_6HzJy {[+W ۺuE%B -D+Loq G4 $/>lq 5:J9,Mi@W5 < ,ٳ K,nf;>}[Wk]۷|o dcm/=.c%EQK:4vTW^UJiDT3ez?B_Qx ƹ+0D=LU]  C 1#W_'~x%LVI'(![,2=p| 9Eg^?》Y& 9#@t9t|duo}DSI'06?QeUP۱y0}G819)U p3z*%\!|>u%pXkuz_zXˏIany/4E4v}3ӵ7-P ׅI[& PTE%1dvBM6aiVXZk+,ǯZoq5z͗xف{r߶>/ҿ]8m8Q+Ǒ4;І M Bm [[ֻjdڟZ\nDD=MQ18m?Sx`- JWF}Ϟ${ϵPJ A5 0a&r* UBɻ#mLg@Rd5-s'0O*sI xU:c8GMJ>A5O i9E.zOjY<}ڠl~Oj;۞%p~cz\|"hF# (8S%^Rj v4:&[g*0_! \!6zDI)xba%'1;ֺB7<q2M^Ns709@_ZLL|gpND>dzf>`-@hWSQ1UJHFxpz~blF(j2:cѨHW2G4`UoJ,t] n(G݈dYvj&YnLԿɴoJh O fMOၝ7_FI?6s iM~NwP8}1P)6_4r%Imہ.q8Jek+A7J*aT}/iUt8+XIVln]Jڶ3#輔V7+Qk.h0aZj47$/-zx40@Z'a%9jMTFctk tT*S59w$8u&V?QOJ̸MQjBW} 4r0^^ ź_mFAV卹zT k h3'qOy0cjl(0AJ@Cf0XX|_u N!H% 4.V)ɲ o5z˩lu\ܞ ]uCf,b\}\>^9ș;6iPު-yPF>^3 Dy_e@ȓ'z̓7:Ԍ`Bc~ha? *8%E=-c31 %5Xp'a@P(oaze.SBST?R>H dgdp:R0لD*^殜 H34's-;54&VEA>,@͵<1-Ɣ5Y41AOIY6/!@;\+ vYu  WI:kԁ3IXGUњr[҉ӭ[n3JEIS5$=)UlJyTg!#-H`cú-=1)y%Ve_I%T#@ ޷k*(Lb[Ѵ@mPEͪ 'I`U T#$W :,.;Mwo9^) Aa_oa&zLMX0^ِއ@P`6 2O=1k5>,hp:* XFP-{"C;D  \!S|&So95 W)%cg/QMc "s!pvЩ;jSMc~08֎A=NFeiQV%䠾$0 Xyq- bC?vS295ANX;LH %ܖN-M*cD0t>v; qc$NuR)r@=U"E7s=麄v-ȣ*3ۻtݷ-uEso۲K (5.ݺu ?ϑivI?)#{_V QP^FpȬж"}ӥW4_ "́֫i8D`SNwܳ/3֋'~!94~(x˳/k avZ8| }yEO:=^qOʷhr#R|Nyv Pd8!@DM q5{ΤY@H@?$4L\-|x׏d멺$X[ZL%}ړ>fuKnsA3C{EK8}FTD#]=,&XGl ,`' j!.`,H 1q& ^U cۺԟAcz3]tՆ󒌗UnxϩN֭[ns";5nJIϥov/YQQ){cKB=*)]J\xοlCC`2![gІFkvX1.UYZf?>Z}WD괰i^{72V^悬ç;|g_6w&Mݻm.s ŴZff:Hehe'bրMܧs0nS1|jȨ'1V8XǝiK_ w-43'?T$.FEê;ʢ?/ !6I'Y ]ȃYs.c { y8kA{c01^ ttOKuoA*Ŷm /͟aW %3O@q>ޣ;W۹o[[$fp6*@/FcG~~}JJKbgټϕ`6?<5ۯP)M5FKGTixTc2$AuWW_5( ڽu~h<*Z?;{h[nݺ=>I?/2C;.$S݃R3TST5Sb:o8pZ.ٔ">HAȰ2$zʠ?/lSo\Df0[oV#R U1D ZC2$v^it_wd˩ 5ˏm?Ws󠌷; WMc^=gT:-GF¸ Z/}8iA,Z -KFy4x xc'gJU;vt;TbnUU-@zHfTPc- rAv+ςbE!8&h%`׆qТJ/VqtIH>Q1UnTN`|pgU [Tk.wa *a=A8yer%0=UE${̈́~ >A6'eX)?KJFOꛫdF;Oԁ(d}g4>Pe :_xp۽=)G0 BcN u$9=†ZШ@mV1pJnݺu{AIǒ4?$;{PJzeHFtIKqͽ꒫Wڽo)UIq(W$ ʀT{mPߡ[1\ju8 k a.G¡L'(1}QCj,ҶtP jyv/>wJ?A/+I `fsr4'dQ QtOu֭y{%u}Z_]&{p˫}.r|fe] XB@MC?!Vt?IEQI>80• L%x 7mz9h?Mlrω=_^:qEPN9^t۵1[>O}C7h kŜw)ALOd(dR\i)5[?Aa}?TP\*\$<;PP\W{\ၲ~:pWnz` E~!0?7?)cb:7YCOdQ@-] 5a?/bM8z; {3uuڠ?T^G;- ~q&B38{8sB'dzE@:lD窮~AN+*쾈VW>maAly( GW `vqՏ#u0W^@?I3zJ904V~Q/>& s>~ ko^e HIg;ZpG-tUK-7gc2ǬZӽu=nݺuv~Ek!g$?zPǫgIuL T nAGvtE.Io%av %PALw;as.\[MNu.YmQ\8' {:w HT',,xg.HM2=./<}&Xݘݱ_fijM2l9Ӛm.t.2)sZTę|Z_(͙Sm>㬯ImPp\ۇ揨RP *Sr֑@@y߈6 TD(D^1Ӛ?l Me P48'@&qKmF02> Vȵzj &@YG~4Z&4`Dz-NP"U?%?IqĀ3V{U |`{S0:y6bfU)/|fn/ KgFK zB'5iX*M%F9L4p>4\uAz0/JLI -Is3 X j5Aak7X1ӫ#`m?W9|'$'UB? ‚05K\ W@ h /6LfZ9Yۼπ~o*h29~>چk/aL @3Z1 ??pB'ghWԝV9LiY 27E6ծdžb6s ҝZP/ 7"PR&Hwd`V2>W @2G?.ԎCkY?}!dTKFL|?J%/66L4PUpZG Il.k陸~c?99s(1!V[\O2$4GZ)bq+\$Rd#Y2KEcd.5zؽ~>oƏ*:?anݺu?EK4~o]o: }9nt/" jz^Ү=K!*F4 8-s/|9"F\ق b*GM`dAxn}us>jh[^|kݧ/D3'H ~~T8d!lך#kS{xX?OX0j'k{SbjPa\0huڇ qӻ?0T9X;|c:?AUhwcj翟 Š'5_q҄DϻAUM1O>j(Ta\c(׋(T3eOWTڽ:Y^=(xM, O6茁8;=JT gF;~FEÓZDSIϢtŝ4gPR4mut|%!׽q`?r0,@yǸFFZN$(J L>Նټ9,ٝRJܸԅ.5 Q T:?'{[nݺ:?4Z{WcWfImQquPUա#f2!&HYꢫwm49WMQ![07;=L莿l;ī!<9w1mqV|/~Ň,:t?O:/u_}EO5ƌ@ 8-$A~ y qp!@Nh{3b`\۝A3ۥY# 8h4(8r_|A$G,؍Y-r432*9hqXπ5xx'RHLr5 FAR{[%  l H5 W1yS(kEu}<"h߾(:'^ulc!W9<*@I~0c+=VD$HŠ# v_(ӈQ_ la;' \37>@Ɨ؋qЮsn3 W\^ lt_b=&>?`@gԝjyXO*JH[ߧL芙.{Ԇsѹh}^BЭ[nsD/I$%WK_; iLEOR z|:6`m܋9n, `+6 8f۵t2\_o>@;3tLC4X{KLuW}\WHJ}]pl*Mk\/v|᧲,tI5_}'5.,;+f黴u МF52p 3K!?k_\{vBe;`k{[%z2z*b{ē3b ~Ա__ĕ tVRȄp@leGv(SS ;@g"`- fJ#`_h`G;b[Yc3iyb@{w'3XT) z~YKxI^@Yeӛ<oU Azsej4N:8*}.&/?!Ǿx=3^ұ#myCEݴ}g-Ӫ*;߾Rnݺu?KI?.Hگ̂$#It~Kh_#9RQ*s IPB5tѕ'QvO(PKc4| jFY.R,*~< 6JJ($ >VPRɬ"+˚`޶Ml۞0/+AM~wEȁga)g :ї }[:Fˁ,h~`MFv| t.ToS: (9 b@яQukB0O)<&1nt_}RY W5?ERFCt>D6FZ*&ORQ l~6(*%gP  ǔ_F %c QQB _hAu|&ULH6&s qǦ%A~ߥMcq}J먖buq48}!  ͹s5i q @ؗf RE6t(* I6| f`Lf'HF$e1X)B@'lu~J)80>3(pBdS>`O+ӥDp@<Uw6lA\s4@eR,ೝ|€T'\4VbB*$H3oc5Ud\LpK i"ܓ+bws24}. 4jb jAhH0zޕ$FtVi8ź<T/>9U7uMEFb[|ġ&0@(#]& _ +~Y=bQCV{@ٻ&oApoo|&X] pn?jVd~.8&7 ށoP&LsYP6eQQ.18& #DC|C$ 6A(**Bx`;@Xhm'Pew3YqFw1xW8ON~1h)Iir&>Osu(PD:F6b S- babTXԞD쭍+w4gs\ :H2yN!+Cn?\ȺH*eiIA9QfЍ|m;N=/b1M p5Pv秭 '< YҘ9P l*b![y- ի>p;K]~.3OFVڸS몟0u֭# הos=(鿒?J@ݾ1lR.ipCca*f:u)oh2`4Wq@KcSꆲi9AZEwB/X+@X Kd73󅇨w\xܹDlܻӏjsoSN7җ'L<tݙ_S)9 0k2>>2iY ب*۳dE?A]^HxabU#GssD2:H9NScCQ?%evSËcF8S' {6>_eyT,RFuO;Onf{"Ϝ k$C`{#  U qCJ eIO!#fITBN\#6AglLFX5WVSHh@ g+j{OU/6oT}eXa0?h 6NF{m|x*Lq|x؜?mTmA+gE6Økýgt:px4o9? mIIanݺu?3I_tX`HIt oLۯZRXxͅ E^={Пт}=ه} N4cu%:R1Lu>ȓN_sL)q8"aX^)jժΗof{N"nW#tx@,wʎCj(T}pgƵOʐ(v 9;XǑ4v6 5VOF +qjImkw'bPa5K0SZ0[j(f?{')E'vxwA-vzGj>hzz voF%*tQ#R@7O8ЅB+DI)'(xm(тfnSQ`Z Vau_2=$tm;?K38x@z xz~(k9O;~hΠGsJg)S`s|I\fnoj6:6)xJZIzXҩ֭[ngyߐMwJ IoX r>7 yUebŢHpyI@KYJx~5d@{0ɨLԱS%mL . >c?$ff:6@i3RV?|_:4rC9knkG9헛;9̻ $Rg-,L_ cCJ 窄U0so|,xf9Pঋwx e>Z耐_-`U\G+iiuͤ3~={k5ƯTBjvx.0mjmw>u?VvRظgGO9?s$gAflޮ\< @D,Ƕ@1Nb{mI 5UgWShtޓ!8G` @^Oϵojog@/^LBDx$yEyЖ,Cj2b0ϥc@?wi^ TmHRnFkG3^Zd9%4Ss]2j9wR _F+WG^6>rІ|('$:?ݺu ?I'[쳒~ZR7)̗u/7Re,ϴZ-}sZk0Nʼ7?o'ro2x- >@O|{p'5o9{#>Tl?e&-}Qiq fquV>&6փopk|1Uy Ã|%Cx@Xz'ms~~M M+"xZ- 9˛|$rp3(CXG=xx95>.zOճ>s_'׃r;pi "v00/ f4:HuAc$WZv]9| jr:RL"5D>Jc һ1_wXG ?y v3<~omXO0!/vPQf1:8-RǕB &t3 b4%H :sak}Tm'Z>N'_3]R?0F)jf:\Wݰso`J>-ޟZWz[nݺ=^Ioސ I,$~۷W_G~va^$A>Żn~gw~9`R/?_jۖryʏB MM#<&Mj@7`*_"+r7AJ=E@\MX^ڈ 4~'lFӽA bZ8B4|ľ;[i3ݽx?ݺ?6q O\#:hT!'J5G (v Lp+4.qtHRR% \ YL ؼPYx6`횯 D_Pj#>Q1Џy5t NM>icHcSiR%ӥ=C׈׼,4Lj[gxb󀫛h [$vq=ckOuۥ,; ߱gӅu֭~I? W$i`u@ݺկ^ :X 0< J)6TIyz/pw>yw}Á~q>@`;ֆb%|9έ- oG8ս@9 =-Sq_"a^Mm;~` X&jO%4]{2\cJSO0; < {¶`*qV,貊fp\} 4m% y?`낰rS-Jsҡs]ͼ+߿WPI3i@ ՛DtԥCDhs(Eܸ#nh6K[{X҉J֭[ngyߔ$Mu~۽׭@?(] 3ЇhK3\zhN"T>|ώUkq_:nZv@ 8GL1)jJt(S3ajɌ${LuNߵ8mHdl'LS j@@?eA U?]⽟*W{)jQpX=C9%X`>F딶Y2m]/}$q[O?Ƌw/0 k!J*赙hqh.؄iNE!!r &\ȠŤdu; a@i !Jʚ`^B n>!Іs_IZ ΫZ] # KgS5ycrx:WU+Iy9HzhUd}P+TڹJQi32??D5Y?g4e}AtUK]M-3>N3t~u=nݺuv $7~PK~V%iuTk9˓5g@qe}䞣wC[j޿yѿ5 jq@FA!0`XJ Q2GՂxD߉a16UDp./wk`U@@B6@wzgYήӞs5MqL~YxazR}* #9%KV;>kg}.XNxdE{ز O~//zSZ*(s=4z9%U|/<ObPp`y%p_wgxk񑮓WJhQ}Hc6̌f1%X)r0~!> ۤƵ(x B0(hfy,cP%2<+an@M8%9B[ L+neZL1"?oLtzVmd-yB]]ڳoNZ8Zӽanݺu{MIs _%uvfuT=:i2RAw_՚- D?wlΙvٗzu;4(A-M1,x0K:Fi , zyUTI}E;!H̪K(>6A^,gFyEg!=#~r49QAdTP.I vt@?x|SLl'7k rțK }JcSV?7JI ~Irqߙvp܋&ldq$w#荺 {hP&VY6kC#[mno5_kx;B6_hr-lÖy@T''8/*.h6Ƕ؜,~xWu6up^ۿ>kDOQP MTWjHFZumNX} 08ongU@AF\k|̎X(| X/Q"Tdri<xU5 s*Ԥ ~&P edGR&`mƐͪ.%^yգ\HR{=ECu*GԀ e*+e`jx6qZI6ZtEM& tŊ>#O7@h*͆+ԫ NutF;ͭ߸=fK@v Rވ>7i"mM9;+4@fmmjM_M[ݽdisܾhQ#anQ+ طHEiY #+kzmNyjW}plz::^w_aTV%Ma;h]ߩ4 ]eh m -@Ґ ">Șo! 3F!l5%0k}%dX]y% Dϑ j 1)k|C]|XB*V_C7|S&cXg ?``hkn/e%6mgZ- \}_lƿ˒HZ:::::N13/%J?I vt@TJF\\>W'B ٕeA܀;?Q2V-\+&w<ֲ:&;7}m5{n| UO?5Hfu?w5BXWxb M*Ga3ֹ8=.'{8$;cJyjKħYvH@ QJR 2Yi}DL<`lg[Ņ已ӏ:_]茏^&&grA?+1" ҪvQJX} 2Z8H18NfcL|m`A׌ ҌUN0Ҽ<kPʎP%Ka%x,$ fγNB1'KqFՖ7WMd)v$jvM85^^A% 9UMb%$Γy{_god䫽rP5a]No}y?OzI^Nuc exS#s(r4"ID sѫJռ{]򆽟W&)^Dف*|v"@fb[@t`m&b[]}͞U4xnC`? ܋@Fа-! Z@I/?FH,lG5=mh` GIaj]/7%STRt9,4=ų^Z}Ux3@n:|mGSNY*3aջ\x[VIG|[!J`pvc?aLPDJظPU^;29~cb{ G6XHrhJHG[ Ra1sH&W:GUY̫ѰD(bw?eـ`N^!U mv3] q>\X &V&[v%s?KhuT޿uttttbg˒d@?"iW@xd&7`!Ew݄55u<å{JCCo+'֞?SΘk]R\vm8qD,M# 70؞|x%Y(DҴ1עpǮ͡m&,pkP ~dO]yJcRKƜd ڲ}Dͦؾ[>`nzs Sy԰8s+lybE*z:<ϗ_sb=01n1VkN4cyIB I@'Y( GvN RU2+U|@(EX72Rj> ӳGH}ic'@WZDUP{GS1XbOdɇAs֋(zW^,? | s'!jē("T323Xi6pg@jP R # 5]s,jCj~<hgFJ0KR(~|㵈I<3%T ښf)XV3 a-lמ.7/\@j#\1rOJ::::::NGHzf÷%Oҧy@Ҝ߫Oz}Z c1oPynC ~9oz 5n6M:|uaځ]X}]C+<H4`䪧  7 PmPo?dDIɺs˯9uª$휀 J'ol , G VS(g6cd y>XPeZFq Py0!f(k2? $AQg{_$kd)Y6/@pf*_o -a[h0v^f:!l7T,I;SC1R01đqT&1=INIդ*k<ϙ-i9pEd~yTֿYvttttbg_9d@{>ըPw9~j]z%ڽ{$I:t~W<=@2I_bPQ!'k&㝆g,IqCo+Tm O_zփVRfK4'rld Y0/qsCy*H5b; knU#=[ƕB lϛg$X[#v@`:`eWCꛊ4٠ .qKe?r=y :hP':~GW˫1b d["VkNB9!8 r%jp& j$ @(3fd5͟=>i.HB$תBNz:'52S&ʮ=Hjp>1b,m6RnC%!5&Q Sr-)V78I$ FMklJlS "=p~4xG3]}~&Nq gT'[-Os~ˎSLI?%%II.^NuqܱM۷o$}>g xKW\o~.|mڲeI_}.EՅ^[nUֵݸ@lYffbc 9?@RՋ51k5g~JXck Kw$R,`-70*!憩l cÂT l96[|uBZ"A:=N\]Fmayi?aqI/Z;vX0ܺ=[?w!G* 2UՑ$e^& j5Q&l*a-z7(0TDv5AVUď5v}Emc\<$'sDG{1dU <Ϥ%u E_#d)(n8Εvqa:>{Ez+X^آ1k~{/ǘXbÚDDA1JRw:'﬽dfs6޻r=ηv>dABFat:6< A{Ci:b>>*5/'-s!7*/_e2@ﭳhӾQƦ }bQamJk_ @lvC(@^7RϧLh⩹;RXSP_娬L1I0C|:(@瞥e<>l.5@E@@@@@=?\x"x8K P*_i?"1iҧ_G?OʟBח{Cc37^O?SOSC{nk\vQt p7ƟK AeRB<u}|^6ْ7EokH͐'١T@,Sr2!&*+ПӥƼ(|T;<Ռit4&QTzG捥soML|x*~4+Wb)g6σfRF#!STCPܮSz{Xd)f[RwgQUDR.Be}O1C= J. fX[4H6>neKBL>Mg!)$D% y5vxCV>sxcŒ)H}}T6柨ؓzN '"TP5Njc!U<#OKӨPs/Vcs [͛,K^ ꚼ._Q?I*+>jhѶ1gL >IVL5(Q඄,5@5xuuef@}PMGr* [WSأ||6y*wJ'?Nc/604rq bf,FQIF:$W\3N&wQIZH XB6FFCAcg,Js KjJ]6J`XЗdТucR_0N,TH01ޖƯ)QCxHM E?>Q?M̕rH_M --)D8&G^}0]uN?GF… =V=ףJ[XBh]B] B:SP5ևpE@@@@@VݑP L &O}K{"p8唑8 _rxf,^6[-Po^QG#}1#.m l cR @ ×,x$d~ݗx27Eݚ\ f:XRUǝUy۴p=#?JZR&)!RNjbи<|n%p!c }CA\Da%`(,KH0/ t(|)uk-(4٣=0<"oIs\i_[KF읙DjCj? A7_ [_uӻjj2KE9@J)FMD~X־zQPk>xoҥ\MdHy:5>\ZpzC­jOMAڇV&9Bg"ߢPMݗs+-#%XX֒~%c{~Rd?R|ÈE~PKC}eN~A͑nɳp5l&xLrLmG ,W{"P0z?> ]t`0q7_#v=4ր@ <) )P2BL7@"{XICYLA9sg-ݰK+}Z>Yo1Ǭ_׵1?Q 37d:紻#Xad;H6 2HG3U*,!A +/ -cM~@s,J܅zm+ۄn*&Z[^rww%} :TŽH6i&}wEy{44lY`@6-xjזV_nSv"g<  +2U# 'f 1R\9&9dܑ{K*e}Ao=vMF\C#U|~!PUjxOƝd,(D 2G>2H?pE5M}\%ğ{)%0yc=A/,`D'YpDI bQ'DIG= \PUUc8-K.Y[\Q&Rbߧ!z&~Z"l+\jB (@JrxaDl*=ZtA~= s]?Gu9WbJ4N偸qW?!4Ιm⋯-0=wknŕW?)ู^l*{V&èϮYyS [f[0¬%_WHV`,*Wj`ߤ Zk&KHyQ6W:[D\ƒ1[Qy"{!bIiugpfܮ)Vٷ(W^Qҡ\^#!\_u󦢱` Vm yi_2.M%㭣!`Eז!yCG8LRQgKƗk\$PwIi뙋]@~OJҀyӟY,0c ڂցcIA/D%zLNa=Q% ˘@iļJVU;ܦ8@B) 8(ls”0&*3o53m J>%ꟍB kC*&8-!c P g@O=grbpշk@?Tz98WbaG>KE`޷o {}$&>лW[LFzǝpy@%]k?7O Q;*:'},(!Qz PH{$E>6qd/͐qˢ7Tܹr;@W *2b@OL3 `J[zqki㟬~}:@{>*$X@W):&ka_K ٪TAS;p#rC%ʬ.̍_xDxÑƢePe {SUQ1uT\И@_,-'qo|oA:-BoyCXVư\?I)=p|_#)h cD<4#; KANLoX)'dJB/װPnZ+2I!mkvQs, DsR:3$MUI=#1T9bTo#4SO]z!W6wy$?@2/AV%2pbgdhg$[?ëI) $1|^O#,@>s mT%^?qe2lM;=z&`·1uˆF7 Ho}@2gŠY|%2Oo̷ 90v4֠*Ƣ?EAI3~XoXƂ-ި>H ^KK^J1,@/4ܹhM[V-hyx1UC)xSxJ[ɨ:y**ՏlKN>jxhlF_}htp&`Z,ɾZΟN!f3<VgEhrLGd!N4O2O>4E+珜^k j oُ?&:iAоK) M."}%' - @|͂醳p }wjd|hٲz!U*pWƩ} г$Fo?h3)P?5XK{T%L oTm*$u*'(H#js9 u9l~6t@"Im;eнoJ$xT}҂{")4ƱPj0 @lO&!> ;|6]Ð!a~ҥ|;Ӧ~?WlС;`m_^ŋgǟ' 6mZN_|ErDбc{kUUXt,YE7??ЫW+%/_ٳ%pUǞMO81`!C*KgYH:ԩ7TBF` !+$@x_@ͽf ޞ7ᢑfCR .NmQHGyY&jf{7Wp q#j$A}m)"_cnM@:Եis=8)Wfɪg7}i'U&(r'vVת/aYܮ菕dlbN\*3tr}P4RL{ˉ]"z'Nt+K%SJ[=W5e$ԘER.qǿHC^t=xcQIi"O0lsq_ 6o{0/rO0ϛWQ'KgOy/&Bل ƠI>۔Y!mDC| φ~g'p<M./.0`@ @\<W^q!ԦߙHZ.{&MpTVV;W 5yMũ',t਍L).f꧛Lʟ뮃Q_Rssk3py7S w>|5~Cc]<9gx;0mڗˑX.!lD{Y Dp܋ԑ ֋ Jx $_-Ajp"p T3q3ffݐ/(7hcE Ơ Q#V̯XƂ͚i5Joshv $&A $WmSÂ^3'pU|rOqyIM#Bwph%흀^XKïbeg P) uAXTU ߟ-^RO" wJ7JjHw4_,"XET۩6&jd,OCrof2})D-eX][ @mЃ_#=_v6[o͛7CZLNŘ5{9Ҡ04)Q}@ɈAF݋M`S#OSVۮd\rɹ8̳oZ<9v?7@x1Gq74H;q^Lxh )8* }cTQ(w/֚%rf-X262ݛjnQɻ_}A N Qv01:˕W ? zIb[ʪ TtƀV8 "U ƤjM^[cf_–Ф((kbݼX;֣`+;5CG$Ju)A(B֧)"EslEBjϒXxFJ„3GTZ=!ZXDbFhGW7 8 ?}Dp0|VYc9_:WxX>~]ada\BcJU<}S)FVA_I=Ro &;"[:}IzmA#rƮsh߭ ˆ7"~Hҽ!POg7a. <|~͔{>"kpONoEE⫯jme7nJ`Bx sm<}+1,ZVԩS\wm83PXXXЖ[x:S?t fΚŋ*nm۴F]QVV]=gwPuP<=q@vw19S-@:v5被pmO5 4rl+=i׳G8|=|_n-'djӔ8JKϗϾ1oDTQRf lhN.6y&!  d6nXx佛ZIө,KN!Ōx?:8[N bNRc)kL:XSK44vLf ^pWv~4. h(j?6ؚ*4}lͳVz-/JAIݰ $0%(9 &Y*tyNqeg5d2`!.7s3FaHx tk QG$J2y )WDIS2/i_Wח6%Myq푴x4AHwp ȁVKb} .C1$ZSKe,zmUB)0Go#2!PO @1|7%׆ P 6{N¥uXd)ӯo;(--Z||1ř+͚5E^|q<>\pί-\ <7p^&[:i]=W]ua-555A@/c7$%9w5-?ÆR/OGII1v,]v8묓8e˖jq:a!5b<-*]<U?6woJBi}Nܿo̽m4 bs.d*)7}R=%4iΟ&W@v&@?Q,IJBM J*Ue! :u!@kֿJ%EޔpI*Z,fykXLe=v@i׭a ~̨YD咙h, ;SwWc<8"f}>Y\T|5>=sG">ƒ`uZrF$W5'O!-ԫJ*C}&C=' m`yZ<WW){I''}r( b˧AD␞J{f):0)#{,8~$BAhڢ| DTf:UX`}13cfO%DP V-KpO%BocG+ }vxHs*Kq:/jADQ6*\dRUt` zŀ"xBpE5#\ց&z 8uX)+@2yRFYKN:s$:lEآS)!jo!rR)g&I*v >N|~ $tU*Pjyk߽55yZ7GmkawG>3 ~W!}1~ߝժ < j16=7pˮ#p/A/^>J9M|Y۫Aw%[o8 \3޽ (Wc93f_~.=x0mL> =j0^Shb"O%_k&X26270.<.;`@ ~pP}>!ta_.ߎˮ3(13uXt,~Ç 7mZII><;GauMH.<W_uq@'/t߭øq;'E6p7㎻Ex0\w%Fw6^0 Wѵ@(Cݰ?' jixjkɪt);%:@|Y@ykW ˶Ot˾5Y[)`2kpvI%_]IyǎH_^܈Mx p au`勵 &A. ^Qi!pT=ݒzALJ* _[d]rJf 2vSNzVx뾝 XX@kV*jJ bG%ᒱF>3Ș8_Bhe(+Y O Vi5VhOMȢ(bJ)JU."Wh?H}H{ru7gN B~t 7)iC6QïK?o:r]}|hR 'U=ɂ$ *ϩk+rU]4mV(-ϒ4mdڟEtoUa gIG5;\Ԩ ЏZtyf4.n\U m z0y]>\­=@p{ࡇDZBcKbMRM*7oV4?:̟;^vwkg[m=]w>d6 .%<̚5'{kMV: `YAW&<.ꚠWʗڝ(T4fcxw3W#߮.,eu ߉HŷSBDfEeqG% 8>?(-ʺm f2:Ecoڣ;)l*U"ʏ읥J@R/yԫBkE~k4y'<itxVׇ&xlcsb#;T+ZQ"L6u H\}"$޶KO\"f*@M0U?$Qi7IA)XIŗ|-w"hSJJ×9(DA#퀀ltxy 5=Cpތ:L1r,6\K\x٨ ~uW\v.7chNĦǯ @sf֭[BTqUɋ$ocyjŊo0"=ztw*ڲ=sm/OgIf㦼qUpZ>$yvml iDL=pmoG })r^yoVW/@cK:XB~F&JO :3UQ0yݰ.rڎnVӤ.x?vZJ )I7x!h#yIQ#CpiJ|7JRqc{y^kO4y-zI]).O6)a׵@h,آ٪lJ=(AXvkd@k{csh@2\N| 62 ^~UHԙOrP3wD/G/J- R>NJF},ƐJ(U0%=d >S*Kz>ǂaj 6@~g[y\+UǮ"meBlѹ EYHs$ X Y4 ɟ~n7a:sj/ @(,*Da.BPUU?*Ow;iqgTҩ]M'{ Ǝ}k#=st3qyg#$KOe7Oz >@y<`lоڷqlp"̛|<W[WA#@'?.eBv:]WI_uÛH^O_Fߒmğ #X/Yr92ZaH}[8TƽH6i]k>XӻmkiV?$u)@>EOE, ~  @p3dqp9{T fIrxaDl }{o>xEEEg\x?R|?!6e2dGuAQO>CstL qa݆aƌo˯aԨј8 )tÛ̸)nTj7}fy1Kը y9u#})xa3k!lIꝶK͠_C7 @@SI[0E]9b (rW^㨣$L:U4''Fֺ>+YVyc4Dr vDֶʽĨzw9R"`tf ĕkQ;X?o `e&}Z?\]eS*g pT (}н4S6>̕bU(#DʮP8i,,K~$u[r iNU.,|$#24-q!)bA`DnsK`JelI\8&TL`,uQqUꝫs7ˠ֥(mR<|3fMu.ãE0Eh ]Fy` r)QjVM{+6?WŷU#>pr_bdZ*@(zR(YYm^\ 0K)KҺg>$u$U3>&GW\1C$M DrUi>;>*l* /#8Qj '.ag  >joK \SHzg zoUmKE5Ǧ"|,I|~V1 ȟ=?a_,^@@ 7786| ]tB}bΜsm7ЪUK_Ro H80|^(--1o\vٍxW{(_< t5 CRA9fw`rOcTO.)\½deBJrf[;)Vo6yrXP& nbX˂{~ã>)iW),I<0ҨX=?%S]fhs.RBX$୕R6 vlj׊ISG^K5'ФOQP,<4 | kX?irgM߲ OŊWJ 2i?o {U?k26B;DC/ =)W` cD Jӣt֫r+N<3i[Y?Zנ[NoHR)~.y\9͉lKSI69!^Wu1 }Bϱ.![|!eפu(߃%-D.MIItqy,>? @tp C3a^  $3NFU@}  >Ob9oPQw7mcQκl*3 AMq҉a=*(z97H}o1<1 t0Gu uLmF- pxri"Hҫ0x%^=4dY5G@,Znt^ՔU/Wl0hUU*YFj|z9!$"\hBE'lbNy;OMUp )hEJAXlHXBRFKRrbJK',Txڎ.PW< qO-6r1F~/I(Փ*&%N')m:dѣ_ sMT$03SƱn!`@@ =~ƍ:q]O݁}u⊛p1.;p`SqԑC#40W:{;r,hsW X/ kH0QaᦿpSeѶ&Lb/O ט\QxPg>JZoPђ2)eTip~VsX=_&u{Eu@GΡq$%X/.^P'VW|UzeּDZTϖ\ Y7[.^@'Yn͊}Lcd QN(<0Qxb__/Ɔ3X[[O k!-BvPA?0O7CO‰Oׁfs1)HYKۄBtY ܬ%i{rPˉ]͝/%s0\aԳK*E=M[8mJc 03[ p1 z aa;//ycOēD}GGٿ> ~{ F"8㜄RaUE 9_|GFA<?]ܣE t< ? _ 3%H'~@>n+Qn=2_:Ķ:Ӧ}ze OK"!031QtB¼#MG^¬YڿӎӧI}ѡ]7fV}СlV`yն=bG\XBȟ$H/9G$#GJ?t@Zy53HR&3g_@'iԾq -ic6mKVWPհ.eɀ&_:)7eߘ7RnQhO,:W~#YѫҼɫPD K"[+ B-k!.!&!\o+6L_ծNYyEc?&h~hBYfPuJgu??SEǣda %nH Iitq/$d|cD [ !dޑWtAA̓.Mi"\AvZgj gs(zv6)j},n{v yO o[=>?dp!3F&L Qʭ79ӝl(Q g@='hd30k9SI&~+ug ЭOTT_@&1^lL|L|~zx,KA@)p'KU?X4Uqp=T)qXu> V6r&b9u 0wۂ)KG-R nT=ã:=iJv8z5,avW^:$̺Otoz[VK`U{]qeFRhc U ȬYXa2YؾP0Q&<-\%Eֆ+`3 $Eh_6~@&8 p G%6h֬)0~wY8a_6TbaG;qy&N65y4=kϡ?ݻqym1os7 7VO*(A=rnxhϋ36W) #$ Ѧ뫳/ͪ8XJ^yZO1!oU69'Y\XgI0X E!HA< {BAQk*8, lf^fmU?9{"ע#d3_bT!`YkmVq17!DWXɘd=:]|vI |F0GN'uR1IIIe'9;ljCBJB,8M$s|E IC{m ydyR*5YȜ,n9TeNZϑŖѶc92!nw'N>+C`;l@/h\T&ʅ)A pu+3g@hz!ZjjjCį0p@'ߔ:/_7ߞIj:⡿&NMV]{i83 w쉉~NHq<8 'F+Xp+='dmcȪKf,PF0Kg4IH/Kc|kB;4mYi}(W"UI^Q*9hW\),PYXQ=qOh{Q+E̡jaU*T/A[ϿX'ď BgUpk/_*0HRU(S\3$.IsZJפȺaD>S_{Uˢ4eѥWQu!g9%a (z'JZS 1 h \$R@@ I't}w ٬*UW^[7taSa >c DZqgӏ2/mmp@*cy*hT'o~'n dр8)Z\ @2ƃ( #JH )T[U.2ObD>Z)g Q)Rg:M+"DKXhoCڗs'c,U4kRs~"LQQYI z,CIy!J^<"Z`!0c|O!cB4Ǐ +"}/x@Mh9rp8jܕ]W P Pz8nr1hbO?yλ?\,_3g׾`آ]thڵEP\\,O?+VCpt$:u^k׮[o3ʕЧo/ܲ;JKe1=<#8[whwBƧNܹ05soDvmѩS{h߾+nu?,Yxz+{e"dH< WW~{&)=|BQՋԣܡeďH`!r.ɛͽ̴ǚR n^v7YNH@պI:#W%e7, &5Q@H&A},@ A=ڣ:'e"4+w v٦mѤ5kR~ qf_`P-jՅE( +!F TP$,e?e į[ dRkwQ2^$F>@)T?Fd$i'MnlDf6j"ҥ}󧤥qBHF0D\U?w s0'!JjNt/qWI+ԙeGI] r@KѬU9ej|6o:X 3, #$%dKV^#pt7 P :`>S(N?'<)-[Aü8_v"҈2{ixU4ZQ}@=lO~nj;^=G1du3Uk mLU6.\Bl):,K7< ͷ507v5,5;گh[P9O"Ҿ::(IV6+%0O(AX"O(~:37TM@ Iq%MzeR: x_Y$Z_ Qk2Eei{D咙&j֭DCɵeQyd! +i=~Rv!fqZgYHG=>? R<7I/Cl _8Pu P@?x GZeOK‡ .8}BZ|tzogzM4C_0,Y ]~#Ew`}'HR?r:PvȐ pźu5l c*!.O>{ ({M^/I[Bq4XO|A<:0_pœ{<5[ֹͪѲ|fVd" Yj kabe:jyrTpO($zRL[IwH6ﷀK)'8LTuvꜩ;`2YuݶB\1Qf9*ʥ'Δ73QaSPpH R=^+}{1"CvN=oi37H/K)hh'؜KFkg_,q!*F\vO>!*is/HX=k}K1S[֛>VVTxr%s^U;m)n"W>cmٓ*n%E!T@#vB 2 .d[ L Iʷl\ U '2B}topa`592jshp5Ёm @b]vAQQamJ a7wƎ}.l?;vm ߄Sm귂 .]9sbqxtb*Vy^=O<9M m #=]tD۶Ѻu%$ڂ0oDF(SՏ2]"22 >pGW!x ZGy/'Ko$H(A lHgoK W_jm'=,XG;T~YQi''lۊՅ6t jL..5$f3ц)kt61).G޻hɥWWbWa27 (iuQ6۬ ()\uH 89TҲJMgd!;mx/sTkݱ;TxoDI_'`3^ݷܔu`JLN Qf#Or?($ Sz=M93O&ϜhZJRQRLr벻uɱ>&rgk`7+&JiWaIa h$3@pP#, D*ݚ.9.@mvLqQVDCe9E?%B03gE{א0RXGczsլ=[Ū$"7 [Ӄ_MjQ&o iY4_j'+| .QafrX&)SR|9)"ďF vi 7EQIIPA\#PzXkvњ P@E4+MBa-};gz6-*j{IQI׿@+/#y@X<*qyRr4FI8"pU:=])xկz!y=_x-ouqb%: G䕕_+T]Xzd}}#Oس8(nCÛFVG~x}S zmUmEr=S`!Ua h$GqP#L U@l #zͅ.dм+Q9O  cZǑ@ Ӻ׊dy惡с54K^}X`pdRy?[98fyZ!|m,eed1pW+e #]_ "xaD #"u?p{OS Nn@R6QYZ*P cP'(3\GŪ鯣f2/d\6o?i@N@Ano-[$Ьӈ )?ׁ?"յ26FN`\%-@ӎy@BS`J+/6$峆w|)y ?ـ;|J4̅ J{+aze>PZ|Bl.~A-RϹ)@*9k>7-G#s4TE#*f x+DƠ*9UN/ν}@n7}~fҌO;s|4R8 (Ox?)| JPBN&ܷ$h=zQgH@-d'!@tH'e{hG^9~B#TE p:? g@zPKUxٓjr[ 35=_nag)@ ahؐ􍀌o|vxGJf>EY~D$< ۡcAua"|E1,A 84UΧ3 ` ޲@z0? o`99Q]`r#}x =;+gc|/B,Y\ N%ɐWpI\_@̎ | "FN}'mz6ch+Q.>@HYA@S߄K~SEDX,.Tzbehb+PsI> .*!IahU{j]?%-#~IDb4[%ZsS(/Q/E1|ܓBD%$\@*F 2f+ 7%|]q*ժYR?F?O^)cc/AG'_)g T) ?=>+R sW6 |(#<ܟy)!!@JHP[0I884Rd*QD@p3iVH/1WIJb0{tC5k?qR[L2gWD~^ޅiOyHEL#q$bE[ڌz->T5 L{Rny`M̩UVc`+=q-HW(:z[;S?лYַˈ4qWJRr3Cf}V0 BÃ|P# rK~Q=毐q*ab@DĚ&~t1Qb@ǀ{~ AV)xiS.N*Z؅z'i+oS! ضg=uHK<|'b T) ?/T>7"9^tG|D%(!"nM'u9=1̔5pN%t -i b 1.8qVyUB?ЫybC8\PL/*=xנwZoTgaRtJ\p;|)4y IrL/#G{,%ρFEv/P6Kflzơe@.}%*#_fO|ogYP.=ӳJuN,'D GwFP)$K=J.yE)"~\!?s.M(Y*9BsĠeE(l\+ (5pMd$e m0]OD₋RBE)ԡWQQEv쾵+z182k! 3'qlH`K8CO ޤ9@;I P!(c)| JPBJFd*eI‰ vIH%)sY+=[5C.&$ V%,sƕ0jI4|L\韰ϜiPE8޼iߺ h4/cd$<]$I haz~4+e'AC}gȆ$$ U_2ásҙ>dg{|1z01Lnyַ ktt@Gdk{h2sBs)Gd!B܄j2)B!2W6 S Bp F C Ji.W}ӑ92}}{6xFNՊi m̗Oy1 "ͥek5(̓rT8?$a}︼5O}3侴 .O$ ?/\qAAn E8WKLKHHP".t L%tv!٢SxxH1H8}MZ$"b%{6V ZEΏն>8'Y8G}$1É0순}Ho'BLtv 捛,hrﴟL.mxbM֜{ɧHC64&r@"V% ôO/2 [F%/ʸ:5Big#?b>,/І#!9oNa[!JILwgr/|qUR exЗHň0V6ϩU@yX<ДE3 4%%9 $o[ k3ĔӪ r9_d!ǐ{#, @Z˩G=ֿ:}/8ɟvH ~*^-IsA=I# XsP;o4/%$$(@ +'Nyi8_XIƓ\02 =N$>TO6iŋ^?yN˲rUbSs'D+)|?V"}T/k %%Bu,`qD!N2l|}=j+`s p mJ8O/ wxs*%QxBp'SA\~-+ҁ$J dUX'+qOPaH".ZĊR=rpO\x $91$dHHJ{!N~cC'y;LXR?|͆Odc@a*Z6:ʏ£KàԏQi_?;!%\M?b/5@ˀ: ^z=ʃkg<}?yeA=Ux)*H"҄h.d JhIrj JJ$:[88B$\Lm]+oiw?U/[7~r@$갨(չ*/g6`D ?Bs%y2*T2عka'm; Lq$Ag-;\"p78B"_m+~)t JPB ,E3GdoՌ:vlÏy/|Bcroq, fʣܚ 0~d1Tz`dWs%8A>'$$A8x) HKއh͉ "v;,DEdjpBtD*PcЩ~D;'ot[gA7"%wT I%=Y\胢""U}rr[w`AdY揤:9owpɟK|w[Ɗ^Wvbx?_HRBB"K'>_9D$d_<֛70$ZJeQCgiOU<d!`΋() \Sw(W;}yæ{`a3脧x!p5r`v-qe}.J .9=_!IH7#; mLeop i9eg1\!8}W@ɕP~@,O~w0A-Tx⁀%&BQGJY=G:8DQ1L]q/O#I D)%Q:[W7u*H_8pɟ`CƊax:Ơa"2{QJHHP"<$h90^ʍ Mu%_ìo-xd-f$CJ6N2A]x\HiJ TD^F+eL_Zo]ѹ[׮xUO$#}CbKq5P|o mQw&sff~, zjk\k7q{1c^zTzUx/q?O;"@(PuQqRUF1,s|,IrLl%EU9@ cF>($ .j *NE*W0r5 S5ltln "'#!"Pʧ( o.TkGmHZ U-'5W+ gs zI\!-_c̦]$ghh<:)2 .8HtmRVksoxyJp$t$QBO8`d!#8ģC4~\ :) KЄc imw+7/>쉩/D־ڼa_zBPڹ@G%Y5'фꦠrUUQmhr=9ݩ4&2vX.TF6-Gqfysc*6UrجߏE _C}"9REhO 'd'> B?c$YO/б3F(,9,^J8J|\U/|B :ĤEcH,C\kT*J $>z-!Prx"R9VV?49PȖ+ctm?[DكP2N8O:E#Bq> J' D%$(!ay1EQR(Z~{ă(\ƒqŎN0KXL%XOŒM~.}U@'@$C}p"If<-V=gz+_z-M }-_DOt='}w@}  V3uںp{-kqGT,Ih\FUd: yD ETuQ}Sh S݊C=&ALݪA˾ (gl0!1T3$C1܋1 $V/BF#´Q"qp&qlaZ /}%"[#wo_ :<",@pkD9 [{oE1>|~|;_oH=tOʛ:@yGo#9gc@'d?7}%I6bO@l2r!H;H*% /=ode/jOF=ԾlWoo2$xK@eߠ(Lj4Β?\\@ JIdyY,l/EEL3w Sߍ#bK23a`.ݹСG>dJTB҈Ԙ$d0;'>U'rE#'b {8Z=?q%'q#[v!-Lܟ1z>2hBCJEd^d3#SdрQ,.lSLU'_cNr.8E'oUzj?xO8V'[|6E"!' :D/_j9 iBB"RXRE5*^xׯ`u ?G{JJ0$Cg%E"!/>?/C1}~NKHH@JQHH87f۸5FJ@7SexRbJ <0Ty&y=x?)[!!$)? S1%P*v\RY<'=43PocӍpLu.M}%\Nդ$zc&h'!1¼7 / VpKy*|>ArWmt"kOԘ2h2Է\m/)U|К($ v~`(O؇uZR'$="danwBTzZ+v%eWd.VpKP)kLaU(gy$$SzDN^@\b[+l-;P*WNe%h NH9Dx#/0Xމb8>B) ,ztRX^X&zo` 55m޾?`0.JM i"7agT#3f2oP1Jrz! 2xE02HHms.|_P򷏾̴w\5{}ȟ[Cj4YF\#+IiU.rIdNHS?H)Jw!cȚ-|wK-1Ga`=Fg w/ZxchR Nv=^j{qcVv=jP#m/"zdy]QFU,ud5(@/^ ֌ꪈzA\8ݱxXS]WCH9^24&pۉX\F3\g>IzE BwQ=Ķ~$7PuOuQɨJ%,5'yV'xDSRW`Ayl+[6j \z=* .`cµˤP6| *p&1|ɕ AcO/("^n6Zw IGEUŏ$Qln^ S ! /9[Z8 A 1,Ogy s'7|9okJ%/' *U, Z>_@F|LH8GɟR٧O~+I yh _BBB 6 !,Bq.Jرg(15Ǫh$Td\< <Ĩhu4-oOӱTRJ#EI,;׷ڈH'dE(m$`f GbCbV]Guog]~/A]`ZVn{c'O!5e=Z5kyUXi/Q"qz AB3%.AAD$$$ `Pq Ne0#lfPÁ0_U RNNj-oC B,&߈+z-r1&+JpyPĥ(#eb Vjb6 wHkaף\fNvv yg/T~GKn2p !QA"C8TFP֖.V[ՁU<ɂOϩC=7F}&X8~ȓ(#!a57eB{ɅߓTN8$sk)T:19~*oQx̟~tbChu܋Q^IDH<{>\m,m}XgE5l9ro;Fx*NH8?HH8 lp0`~楄D%$$(xx4 V]mQ;>V%$-7A,1\ R$ Oj )7UVϞ0o P,$ĎLE $Ęx`xʽ<ܒ,!?Ti; *} ;.3فp55*bø?_j{rxOz"pxO0Q< ;rD _BBB"bp$?! a7D8*L%5!qdщfaBP,9OHH+QY%d!^/D2LG?}1p fJI.lqī*_ɛM כ|KJ|ZGrO!e ۮMۨҌ2Ϗ, |nvp8`KPoRX޵[ѷb!6Dև$C1 Tm8`N )t JHHx2l@Iz@F#7I(Uh6 ˊ89ޑ6W@'At{Ḑ:1g> =x.' 9XN)&&O,ZdwQYٯ9AսFglϾ%t37M㍛?r_>vHF[{dtN'6nR@gT Yͯ7iۿ|9WXAL 4|pvAmp/`2,>v P [^8&/љIvQE^E $N6G(# XD $+K9B̐v#t\JKdSJ:߃d"e\L\XJ))*n$NDqYj_$Hbc==/@q۾uW.Bd_hͩGup@p?/W8p8 ` N Ųb;I~D%$$.17裹c"[ b#X|h"'u}c&B47H Wj mە"WMՄP#W6؇Ń8W+< r-ݹ )۲G'֕:|jJXg'mXXyHu]o- ml$v,2Жc }ӻ̾nnVʘG6? r8QE蕰Yߒ nڵ\10?~ 4v9<3[IRu\Z6>5*^+M}|QJԅ(Z 0τWy4,4{d$"_vjJj.ioa?W1`AdE| G9y,ƈOuVB yUزsB |s?fAyJHDN0, W~ϫ)| JHHX T`+ܵ0&J]1{e0BiZmW8"*$H0| 3@" _P u8Z²3q`X&,ILr`Ę>m"ϝo!\×?soAz釭ޑ'OjBrpr*$ca+Tr5py1mH$2l5CϪ(U78{78/& ONH8 W+E"y°nkQ d}$E!!!.OΕT-9UE6G$ʵ .wr",hR%I"AHЕμ>/G{)Thĩݡ?NR@! l*;z XعK8)Ր4MIC3*_|5G&Wվ|OS$?e}I\K\+=MT]0r{pfB`A= up`2:g'ı /}|ϯ:R7 IX@ j rL9(4%]d<3wx !6 hx.t m"!L!>'b\H(dj⇽2D{y?I!CBY ۏ2ONvRJdBXp@ NHxx IaX2\A1B3h <9$oopz X/AE4@jI0v~buPy,4 D<,9DܣQ.q'Ā+"gHV `'1_W6RIipv/]{8Kߐͤ:?ofkrc 33r5)%8&?L?nqs4,1Q_ұKx9ʢs$ #ߕ7WN^Ǟ2ge!}lt1E(1ZO'`# K@\UpMLtΔR>sr8벻2/Jb6J*h1AM۪ظuRl6FcI+8..0_ ?0s/+~cF*G7L#IQNȸ݀Eғ2rr\\ E#S9%O0W-ZQHm2MBG8=2VL$깘G,Bҏ] !ë˸a5BjFNktSH+OH8]8Ӄ }?b=Y4"0($$$,{0UD|M>0J̈́ʽȘ$팱$U,Òt9wd2IXR'I1-M$mUS q̟؇Ns ˭㒄ZkL^v=NpoS#ɜB<1@P /& 䏉A%wdS$XT$!$\bDtl~VNgK˒g傈'! kbHoc9 W^I5R3عw원@ς+<3~'\{ݚ>V&60 %#Jp[=Yy:E0!!!@ VFMx5_ L!+YPNh(bXE@:T?Lx>,.n9q%'(xbjmȱᣔX*҃[BiOcM+{p\\cOo5ut:nM7}ƭͲCʫHe.'a( Cv]SjlԦ=δ_"AҋN+ -[Rx8Tף69>?iLxX*#HSF( x:15\)_dkP~3' [>zX ~(NDzLxa7QDʯj7k9#c9BSBh%l4ڮ2?}*TYLygdgkߧ7n*J#AQ%h`]I y;N NTrf&WޖЪ"*XI(Yp-sz>?}y!LV;'}~v Ӈ~ߝԓhL?3/?yB{0k9SX*}nhq8 d(~""AhR"=DH e02Q)?8c4`Di''N8%C5(ԩq!a{ !H A &R5,.ʰ!8}pL8PTEI]&WTQ l~0c1|; AsJZ^ q9*q`>(L ^JӜDc8{G6|,peMkUZn32ȱzr=`R?#* t}]Txv<0D ?QvUb${JR_EIw9ӾPrtQh|EAJRH98Fʲ+ ;.5"9jKa<x-Xf);O0(/xSPBB…u E>/'O# KE̝8F~B.uM%#6 &d|FDV!A)| ݄mժ O*%n$zh82Jlq 7M zm#=V 'ܓa+&h^YXg۝N98kѪ`%!s 0:TWg*vthL>A9FG`}U=, uz2BOtB6=QDBY |բe#PH`I;.Z7k/BET#.x !Vzx ⑧K1YxNN8:(PdJ]Q}mu8 e&8|~V:Ԝ>|ܱOH8 ot3@> K)z  G) K={`#_4"yRz;Tzjb*REH܉|G,r}L^˪t"Pq )cx-0bMh8Ev>$? + Nv9Z-No$K<| S*8rl2scm HJT[`ei/-gM 3~mHibrXR R?r[^a@3(5fU6[A>?9O9\NKk=C?@QJR4 #o9[GjB cPbD܇t(%C܃)jV &1R1?@?9[*wkoA|K;2)Q#~*1V?QrϨ8,m\-;VRvSo#8U?A>W.2&TpKtt]$!"ckkٟo`Axv(&ɪwisusG^͞8u!@>\ 7{-6cd_O?'9L4cwf{V2ZbF89'LRq"J}ڜY!h5 O,5DOCICk%wBDTM,ӊ sQ|[ѹ7 +h7~qӦϡ^jė.ET>=:Ii3Lqy<1~`5(3vA j:>?3g KМzSO.ď H}rybxZBO_ W(&^*SLCT9SGLcrs/fg11? ;Z,%?phM?# $`N[2sjZŔ- Qh 8Uz#v U?qb\BE Dڧ`0&+ۢ%JTij3{Ͱrh_JGjjH8iW@*NQ.qQq][ŻFQ@A9t>'EC}~J'$t'5sG}JB74la ZQO?{20zPBBB"RHb>Hv9zRSDVćG󄿇FK3*E0),1lLgtY,rQkY,4Q6ȹ}՗F dJ&_y":|E7|3 K?hd=" ~_U*S,:zOBBB"ca$ѩ_,´N7RɊB*F&۱\=Ĕl J |b5~7j#B&1 6Aʝ0o o1CW8pNVc鷛}7ƍVhްi13Hb(.+I.!)MOgz" X ڥ:=ăhG|+qWJP(NiVԚ4//^Q{ Ěk-QzNrK)阄wDb%H#W~8ˉ+|ԌIb$ R]=Dd" +99DR{ ?olka q2~9d`#$Q+~ Mǧ"StB8*8dNsg?($$$ \F LHx8ʇQ흇FyhNUθ eZxrD0CCRv:%}=K`ɱܫ'8!?O`C,@6rQAp;" ōqGf*_=636,YLq;P+uh|BU&Ǡm$!ަJڶQirb]oah߾*ckTtC: nsy?%rS\zgNz;N\]-,,xA>1JMD?z+/ +P}[,* SspiKQ)Ō*'q_ͥ('BBDHP j&yER=r!:+ƭ5lxr8y## N x=`?N{(M<UUҌF-[-a;a`6%a N YBC!``l6xK#Hg[u7oW׌zV眙[~[>y%i;g>_h!ǍR,D]vS w\@@@ ^}F(Մז9NPͭkw S{&0К bdlVZhcINZpUUPb`k^$"$O.rZ< y" $I䙸͸IcsOVDDn`zߖGIDH^'#9mHXA rEDY了4UuM5'aۮ: .Gi|@]׏jqϱ;R!{quP|D5shRBP_*U$ʑHMVq~b!0z'\=d #zcmG5W>G`, ?Zk޼4>~^HRx|c SU$>q~ K/=CQ }Y( "~=ZX}ޑE+ P@@@ U4dHb y6N/<&\T_ pȮg}W~BЉ@tT.le(@@4O[mS)er$Ȩnr_7~f[UfpuSp)}1vYGxD'Gxd$^mF |]" %C<^\ӕO,%OOtn҃] |H%ڃn_yJ *l"AR_ƾF1aJzTA^֓" `@~TA@"@|#sv'BxRp J=k)hŸD/ M8gPZBA tDGᶐLy2EPX~q٬.Y&F."avS ALmeN,s#l8+%mV&͓/?dEJ:53wpP `\APT f⊞7Z'$dyaNM T4R(NbbWϏͻO9 @\0U?l>8!s ?"}fKLB5R}O$<<(YܗPN+ZW'?}!]&$HSwD PΚGyl3!W5RƉJ)Yg*@{ NBGZ"ݶ- \T. Oqt>H t %&; : _jx ;uxJW(/Vp jb(BOcsx?e%hiODyYABs#r%8k9523j=r"8#~'v@u6TOrXxi|ʂL"d +8[H}|eקޮoBH-仆{B=W>_3&\O 7k慦SuA5'bîۯ ,=GwaOhL\7:cS_1{f=rDV\|F)(aL5!A!{aйb{+)oϗINĽ:['Ch;efoNvl]5f᷇UbA(`wK %՘Lg:^nTZSGYQi< k o\qsŧ`. @HT|c۵+d/(QXI8`a6į҃Zku䫁.&/9M$D)y7\M/`G"Ɵ( yvmο[Aos9)CQ>Xn炏0:`ρ !ҲR7y?vx !ΠsX{a`Q|JCtr6ư62OOH@@@ <|%Hճ_z,zNk}ZHHV~j!^ ~սRQ,U^,z"X{X63%scQ˓Eޡr`ƒM߰=#3,WEz m`@Ht)z]@@DPDRr~oWǤ}? @_y4:]{p /@'o{H *>I(*,O7)2QBdF)M$/w %*vi7upǕkҴr[02L$z6*qiV< d% (VK&#'015#zD|눟:p "9zY?u9&@,K@@~-.O# eFrhk nΟHUS 6tDܠ`paOyĐ}HTȩl (Ye)$H$τ[v9$mKĘ@AAgTy>[nB.ЧuqBϒZ4j>tkP ?nv6gfLR7 "ΟL,X*k=B$Pphatd?ʐF1qQr|~LP+}gZSN  }!2G[D>RLZ O*)Sr(}#}J CrSƦ?n c̪uk ;o–Q,z* (t?x?@5< ?r( xQhGT94j͔+7HyO/{HJ6FS(nKW%#>,;AN$ԟRdξCif?˃ёgE/GX{GcmR~_=RJfWg xY "zhVI-S#75D 4vJWru1Ѽ ;a0 @)ߘVqŔ{ȤMUV"KHhxd*~:H0O)UQ'Ȟ| Y>]ܝʢe0~w_y6mKpM՛TN CKI!E"i/WրF}KiU y/@y^PHŽ{5@lpjcm,I1K xzY܁ʡ8B0[-?1 Lɔ4,9.ہ< M]VE9Mht:EoSgov7{Q==p-+my"2Clgέ T&h VEW4ё[PQ@h!m/š뉬waKKI&?=pVQ Z|$"Du`hWDƶI)AD )_hUAFRɲuN̋Z+4ybZTaDoPta='1<:3^٠ v /?\prxM <}&4u#dq \K?4[?w6V_^gÓOU(uL ocT@q"dQ=bmŊ 0儏SIi9 B`KV{rve]c{2˶1 z*jU xlɷ4W| zqرJGh1;ZsY oϗN@l;ͨdE#G+H ctf\Il ~9)`TtoF >64y(j㊀<`~/k}Wq33n]K H'tkB䏿csYSO-k075#GOJE0;O)߿Dzıރ8#F>jGT hqp$(zE`.u^L7FHS)*GhG@s-'iY}rByc)ΪP%H>"XWP'+Ft_ݿ3Tҽܰ7lD׀iM}B I>1 ~mQ}q\$LCȺ1A#0l.H "!;駬㸊дf𵨆c~@\PzjGBYD%'SH1}f*@V~h/\Pn!t "%+^uI#ŠV#A"JAq]l _4dӰ&%ŏRh5Stөq@s'J> rTq@}5K  ,_bsGP&ߞbiϔT2^g+Wx|oRq"DmֹSR'~R{a͓7w*cji\ =T?p1r =R7 5jȣD?7KG u7D _5k? >@7<Rސ. BP^@Ec,J+2PN Jnx#(`PI<y<@/ 9 ]7RtLjzDEǑH1yF:XV]|* O*m"_?m*5;PCzf9?xuz""A(Z  }߄˅a2⧊O=qq$LxnM}sܴ (aSO:Χ|D2HJH?S,9zeODR} ]c]`SyZĺpW,!]%%m`ˉ0HAnW)*dOo;f"gĢ-~@WThc+iNY(F.4}秃:Dl5Տn4^9qќ؊\^s=<핧>{;y_T <=V )(# V@ & wF cK'!Kr2R'Y$2ۜ#zqŏ\%0R\,:[&$F&hDayBZin "\H B'0Âi'09 S_5or/x s߇" `m(_ p=c/,G⇶WK g M#w5 x>s(bdA=E I!y/Ǯ%8c{u&3o(,b|V}9[jIUH6fۥם>++j,C?ZC Aet"NW{(>j`U4CThF1:t k3 `Nd`mGiͨNj:_OΟ UrMF^)2/7iE>wjij3vɊ=ZPNC)|IV X~4Td]r#y8%2HN9*M OHJ EI*.v}v6uZ]aZ/WfܬzF8"z$~P*1(.Li3wR5M cͨ0 P@@u BL#>"K M#JR(8{^/4W(}f*<$Q/xy\TA>DTpWv7|]J0cGfw'@ؚ>+7?-p@esă%A2hGAir]/jH XSFR GIؼ|~Emd p׸8͠}6>:d|n_l>^r{B|,U蹥oS݌ 0ߧ_-cQqhG_,V ,n!Gavn@A?-4^7qڸc7*r,(u=cHZ0ӟi - rZFV́RbRwʒ{7?S ;R r?i%*E*D,rS0{eu%jiL/VWa|`uEI)?]}c56`x۽pDu@ye (Aа6gCYaT7HR]R$ ?F5|8N^n샀btJ3?*|uIc J @4hNW@@?%x ty!!F*:CR9ї{|R? |2÷0)K!K j>O+Flj~N:ŗgoS3p!ʗz06a00hwLeEU hJOn-{F "hGqDTJ46`>{/>}![G ͩ7p4Gkef42$]{U1&{(W?LSAD\%*ci,3fur@)&y[salںZGeiZiC%+rs"\[9pv8.5 ҕi+`^Juب#ء9$RfJi043+ֵ1=/9԰vp?IWP@@@7Be }A0iDy4oe>0_)Tω)KyFh!^?+^R*7ඃreA>#v( F%%lF.2?k>ۅc}teߡ/CH细~sm{It@k^=ױAřm;VR4O gtKq)dAGXthwXXOd8;!@mK5,.~Ou] A}|7cqƐ4 B'.C†9=sFy)j{DXC}5_i<= +z*W2cp2@EqXFIօ-yHTWWYJ v*(Q{%T& `|xؼ{6!5rKudh0fV0 Ö,{ŏF m(]F>kB7rAP 6j5X@)G֚|7EcR :Jp вf#s 7~-( `=x-7 jre,8?P\%?RI& f \B H&d{I!?%\VVBJ Fr:'$ ,tB˷S)M`iWx %13)4F;K59uNVw]<uD  'ie)r '̅$ @a(&X{g HieU wB#$g{(]-  .t0H: gFyA9Kj&NzP~ UB@ 1$B˄1T7*#J>_|cʷN򤁼>4bw㍈#;j%~O=8v<241{ɍvGO594E?(@~NA^xH@mą¤K-<7ďu*DB#hNlÆ]@iUQ= *IR?O{gDs w۽M/}H43?S9kȞpX~_~;x(OJ$,LIln1ɰ{g%g$NP{֓ZG161"?iP;@u>?g_@AO=uYwdUTȎ+k2Ⱥs{!M``W"mgJ6}d KD] 耀ZhvaK(O+:ˬ+J"@gpR1jD|,АM ICmK+rua76Û/B:!cHQ*$M(P+W 1+7 _{)T W}*)+Z y銾p|[q< [_Jq\7l>sxv17C/c~O!G/{$|̮C 5P?`ey{jc & ҕ!z(Gk[7rb|]hlq,{QQ'cM*vw>'ęHSDT?rqZ)EA3*("v !,oM"h S^@,e7cjFDQ>y×8q >?hO>8$C|WA_\k@*C A {7ǧPAÂ#L)">nj=o~p?ˍ; JqwpAt4(Ecęn)#Ryܐ$xIIDLjE3e FI}0NQ]3~]s‹H"H%}+9g$<-z%{=*Y}0Zp׭Ͼr7i:@gؽ MwM5vNX_BƉG-w 9iaO1(>"ͮ#cv/ֆ` lUX;ݛNb4& iz"5Ejը Go _xt@_SD>2DH&%c؅gV#Y[8|bm6`hV $Ȋ#;oW# I4>uk7޴ zKVrGXiJ N9O?\^`847݆v\0YϑAJȤm\ 7BӀU+` lc6$remAD&g"Zw-s1sk U"!1@g]P"T^ Xvbp%xWR+3oq(#AB~';xR@s3?)ul@ȁLwz7;Jk*AuzX:\`.\%_ m2ƿoR]s6S;Q#cɳwO.|JldaXJb |D?MeyA A*=-ıơWeSV<<":K+ϓ,!'P?r ˙K G@"-\NA3MFw܂|9y/7Za j,%aK?/3/!oR‘"^F}9 O_N5nۊi?9$}5KUQn{e9*cWoqFė>8FZd7"{YX Zp@mwO-Dܜk2SA2 />w`U Q@G@TC1,4#+Sc2(h -i NCs5(!TBX?b uwM?5֚cPu'?` k-? t\(C+c}^ 7!:t& !B+K(DDZi b@F0@Lxj)&f堚0Bq`i{(U>@>Ro7'!ȮKu)S9}G쭡R>>ve0z)=ǶtӂdI a  vfxD{ol x9A]G{*ڝ>>it@iBCG'htphGLZuD GFМ:z!ndN}d{a Vɱul:%qBˠsO=lh)N Һ>NP*h;k~/;O%)P椏 /1'f}"TP뗴82RqY3 ib@ ރcߴ!JTx xy@&=|o_'vQ9u`Shݚ/J9Wx('{bMrN6BG~Lц6|:gGWEY^ X"?o ^j;z8jpb'/l"q%yi?4 `u#3*A >hEgT;~#0bB8zR3B<=LT"_J|8Dp5 ^P)9߯⩒PަfoU@Th]>l2w^h$h6tz)A4 ?H֩[6qfno[?1fehj{0<<89g_(eY^= BZAm,/ws#>>ʋ/͍׷bP7#5Ż%ig.(H0i@͟,Vf.S29Nv!3M&9ay#~}8w*]#Cӝ4'ɗ6ԇp>Ka]-lq q\+UpB'ئs^?yxu x@;kvo~atƤy)d2QP!0G뀆5SXF12# %g31pW,4 u E}ATZԲgq}Қ<"s#u~@\ P^ kR-8Pl(04p< (H(pRҁ6JuTID* E'\V*vCmHmRM$'Ŭm6`O~ɳ 5oq<=pcw3lOuaˁ|6}&u$qRAC5(fJ i)v61Ԋp\CMUGO13<5lI*x40HMqYiNGCgEdic's?iX7"č_OiUmd(FU,\Xe8b0$brZ/ű:ELYO&9}5X>ҢiPKUDhG`L#{r;N PJWcoLM7G#=q"H׵%v>|ƒ*褅N"I,#~cJ(H"X+gܐ@b:O>IJ򩋧,zGGŽh߀\#\vr "(quV&GͤPJXܳBP @k gݿN( ZCjNq.IqyR+iȸý ;J~tf:"0x|/ א #x_P隤r*1gKa_Sܜɻⴙyi?~ ~q_*c "蒦{;vP ZAifH Az(Md FcͽjVz_@k[MSYfϟJ ,,uW7ܴ:m2 ď^&Jgd--\(^x ӗzo7ePHRJ2$X2"ܹY( XZn?X: (?`o Hz"l̠bʉ6ϒ P{p#ctDO D_K%c̅׳1Н}Sţ0nDTdߎrD#66;5C>: ~~6&c><s~RXʵ'Z fGŲ~e2$aTTk8ĉQt,BpcPv}bdб65A)[>XD83B<1*! ^KH>Y~!q1rt(:!Un)y~ E}% ҳ(R(Qy)ڇ+~ը,RQu͆/~z<(V+@f ZAH9ˁJ1>s{+FG 6fgtjFx+P< O>pӞ|:ǧ>@Q䝈KSPy6^wzSŋWN2YdZl=C&e"^P BHh cXz7Nr_Sqk(.Sm>1^1',S2G9O)aWBLMʦSܼ ZGe#A>qpV' @r ^@Aw!nNu@DSI dHkϓF f|NOFC$ATEXwd "l'1ߡZ$Y59LOws?w;ס>|~>~W^:nB6ImmJH @ ;I *k:Ok榊 _m~=|#}R(ʒaÒ煂{0O_ -邾EuN%>2|{uڰJ#!OXOl?b}q9 'z:AD⤆Z^Oj%%QO28"XfYjKpnz͠լtp}~WO[_\c[6-b-WChl؃ bMe)Ȟ(`aLDD&w>@r5¡'tNq7:新W~O&Du Y?&x^=Z^4ƚt,K\ߌaΝZos __BY#FC&Ejĭ:ב2F @d?4 ZѴHC]C \=xSm2%sX@g#9{F4Z^=|_iLDϹto ǑL2TpM# _@r$ڍS['ָ24s!GU_r0F.eg1!J N{$ WQ$+N^#X)iKpuB'( `p?Wz&~귪iD˼=hɕ(#r i# 8JiĔslp#`E\ j OG {x#0eO#mTQd~OPL?O5/VcUN~]tڨ?PY}%= |Wm< ՈIR+Պp12i 7P`9_Ilٴ{l_F ffUc_A 9Jy}~d<'[8A,zgA8<Ξlw.HX"B96? @ 8,HiN8^ bC}HHT Z\~d0L\c"k\ L <>Q=otjϤ8F'] S dKUB툟s5+ dM@@{Q߰|Ǥn506s h4(B,U#kܐH֛NJRj~?PDD))V>Jxnl2XЏj,U(yE5)\( NP e:gŋb?4ä}!O _HmXY<tԏ`@]'n8 !>Cn"~)$S18Ѯ6 Z}ظJPEgk΋~h,wЫw݃S3)kbY ~x&Nl#5k?Ox@8{@=`bdgs 2q(}Jw? R8p^6Wx()VKA %"_i 4JZ%֔zrs.LiÕ>u%3r˖RkDIO5&WO/~J#lTer}?߆{+ҵ'ΤI\+HZVK07ǺB v,NTkK")Fx7(ҏg"emm) }80ES>7"/AfI%֫ I8ybHNԶvBRkAX9)0 G «T@@@H Tڇ]51ҫ'St)?DD. 4pB"`aݫZLє.{74<:e;^e=󝺝#?b+A&JՇa+z |7߂ng#n=pXKm[8)TA% g-`EfQqHXow-. ،]ch(ß5\>|~|҉g[8/R0[5d#{߸}e9,ԟ+%97S%;u%w1DB+_s%%*inI1;4cρI4WWvA#Oϧc<.0YJbI(QM ]K 'ZO]~^CSy > 0ƒ^I$Nv 2h6<躒 FL^/LqG6r'g}DQ=;:69OEyEj$`y^*1 ~Y$q};[n(JND(N<)L\Lqd ϠqGߋgx]ds? 3_;q#UaGj-ﳉ1!VX_‰bdEC*@ƈsR +nIRKEey~~~cFJߧ _ HJpurG5ްwS۶"cPF"??^.`>VN}fjP[pqcW!q=)E^@x7I!͏06VqT]UqӜ D )݃P>@LJ#0t/B>. P( N@ p叜KkoAzR ^7gN :?~- \%{()F$z(v\` !Cz|;u#c$tVl_0ٖ$ 䈡*AVGC0q~oynapd 4=È"2<ٹ bH'kO=XG/,EMy=ߚ:<%"HVS|1fXIv(ZF!'˽p~#g0i_g(D) E%%oSn G0gb*Vr'И {33AN8^.z!V;gE֝C%PjJ6_mA1ZۈapǠxv, :Y)r؜ L EPYb5#.>ƥ. `PRoRj@x8qjjJ~13X*<<>*)d" I,ʏ'8Tf³g)PY/=AjN'ZFq_#Mq{}ȯ?h{bt=/ֶ.RQPƠ (lRǏ~xپ>oca9Cn,瑧mlOkG 2\i:q91Kar04O^1ģ`(w#X*7Yx]7!\%H[[E@,N'ź9FsժDP9F LkCg"d2^$ :xIR:i> v(]ElT=&O?6+ߚbl>+,gٜF0&c ?SySiYYTC%֐5m?`:( `Po_P}oEƇ,sӓl2doY$9j 8Rg{ ".(u+xYH?HW,I#"}>u`q ̼'IoJ]'21H H*<37LseWy'_SN)HStGʔ*>9"y#Ղ` )?MSH-#R'Dx X'^Emt> FoD TTz+ĺ)S8~"@1c؟@>WJH3PYqAA]˼2ªi\+Jڊ-cko_S@@@ }|@@@UݰA(5UEH 'gqYZ= eB<y 8:c }?ȉ* _D!wIy)h ]:)UB| 9⧁> Zȿ>bKi`5yVM 6݅׼b3neqQǞdP=sdhnŅ9$I{PE|#Wg&7 u]Y柂I"J2PstZE 8m3BA>ABч_"r8MIJLAwTbO^>Mj(Q-eXCS8'K?GmW[n؂(nw!JcaYx Xo:w.#/<ϺP q}&$CS\*7Rf wD %WDQȡy<98b7'&T}#j:mr&!r?W75hߧ+ ~? |PnC* )f~P6)`]hNz=wR(ҟyn%oZRY֘eI|a<)e;ɤX|馽{ݻy%DRlK.rPer\d׳eKzmIe , D$i]lN7afXXC z'ܝ9Zuuo>(ޣ y|"H$ @H$yhcj Yi.9Tazv HCc xܕ3!hxGYb.zPҕ 6랡Kkyv1}0PHs[h\;7woXY^yez]ˇ>Ԧ=M7q4ܹy3flX70N^evXOfyRZan\%RNظ3/1wj?o47ldny-=)i~x u61bX~` A[D"QD"`Gm< &P$B4O&h:'^uނX耟nV/ԏۡy,NA׶|wO=:  ܏;0Ң7v7]wn{F{"FwZ!Rp[+ \Ʌ/ļ oBGcdfZ"yfnVɧRv%PP!ȏs@m|tţ$tw1NgLsAA z]++,w_]zvώ05y6\_Y%p>?֍/"bzx10ϵ;h6,uίasm?$`spwoyc|Κ=4.Jw}} |we"OwnG+vhIm;DŽ n"a^'Qg㞣!…#As7$lhq,Yy6:B'\?s X I"Foo}Ƥ׬bisZ*'ia,bU׎uªmAp΄%0~R[ El}DO69 @,3@u0$l?̈́vY eү^ < o]$D(D"?)pz-0!$jD07==Gu3 !yU*@7@CՈ9c"j,t`Y*zt7@ce&Үw,=w  "3zt{]VVV辺 LMa7 [شqwm[xh 1da-eY|- , gD"QD"(A@ eiV} o1xf t=ޠHVRQLR"A: a"X5@V?xVT"R/y%T |lNv.LKC 4?-O_}soXCp>>-r [X5y,ydoq~1sOa/` ڱ~$1g[npY 8}G[TA|.0*=k=<k0ǚ' ?z*kȰUfݳ*LΒE??,"`H$Z?K=t;ۻ#3[G(V0X:J|2. dMlB&"%Ƥ5jņT#hK, zƒ@$AWy8ZE"H"H$s#a`c`wyۡxTY* _™@ kZox8ts悰4&eD # # lOʥ: ѿD8xdptG/gNi @9rd`PLej, X7smY75˜87&SomfkK|yˤf2z|ܓ3S-5TY@MN?>2y$ip8[W)2qaJE-it;!9P#jQa|V!a;8wpou ]):Jxd͏KnyCJOܹzV3}4#ck4> =<ύH$:?)AL|X>_bU;hKȗR4H\:ڢJ ".tKV\yn tin;AR +Y^H$H$\L`0pfab$`Q!֕gix+hEQIk8I\}CSݿy3Q( ByCSc]*骨dxDv%C bp^۩ㅃ纉Hk(,?J%{9<'/rz%P^GJwV*8vIkdM6c wܲkG:~69[V~uW>`%[X\;37.7w\i?]BxSADb_Eb1=D""_/]!xV48wxVC"Oza>[I wO2v]}gnQ|GC.p$~^D"Okڱ}"MKGe^\5qHlB=C;G;-z|KbRȚH%9q@AJjL`5D4~%f?I>| ]\ķ3D\i"H-fz'"ӕqBjBN#v>L@ݬRt0 bn֙ g Pc]7Z10BH>Ft֢ 8Ag$wأ>/($i<ʎm,be*]O{e4kG,-O8ݺi39z*6P1(~Oۣ߯Xp20;e9yٸq=g~vVC+wܓ| Hjck$)WNA!\۽ K}*<+: 0ԧ?n⎷~;66|oz:khjƘ0K,GC43#+M`)Tt|x؃X1\ Ġ{[tyKd6$Cz5܂y\*8 I ⬂J(Ǖš]=Bt$/‘.-IF"țJ"H>p!!*|g#RJ.ZzYAҚS͸uop$Ǽ M {*4;Z;@y"] V3` abyn)\"cv:c-mfFK+O78̲P^| G%EQTV@Ag9$3S XXN0iFsOǩIX{H.GL'V?6涝IҜ@2!}tCRm}tk)B/$1rtNR4[H  &2tGWkEzw\5!ny,8>PL/sx*;D"7 0 * 1Pos&AR͉-tpb;Kٛ"7@Ҁ Y 6$)NkCO}W3B]y?ܾ*: ,UKfK{k9 @*m7 E/KmD".D"M ˜oPm@$mxK=|ʄM@"G Po6v[W a]?l0I`{տ'^``,ԳJxq,AЂ bvs\q&VV+,ݴqR~nwlB#R^7(K^{,[/=v'Vs9,<`EKn==2oK b ֈ* )+lhoá Ajb >:4-lBKzn E]@ VV㶭Jh /J]p{/21l=>_E.Ě?k9qLlD"o0T8,VN=@xNPkn57 c,zElI 0zL$Dt`"!t0@s R:yvSJy`$wX %[ZmD"7-"H[51j SX{>N8piPF d-Ak1 m 0 _od $O8] E @Z,❘E5׻#,A% {h6 ?ll5i4Z-:&fWuWV5G6_Jǎo< 3)HBȗџ)ZXOk>l7s>EN!H@ U\#F8* (PﻥEx\"=<#-*l#(&/>չ =PWo>\SS&l~I§qKAZ?"#-݀ ڱZ+X<0,ovSVP%b DZeK}B\ m`>/ i`҆sf {%jwv.OlzP\sAӂЕT!B*F9 4!Dy08om$D(D".$c!Wv f{W㻄DO &֏2zpAޡ@J iG 70GŪ(P4fGzXn" $A--!xxuD!Π]7ؑ3""^G 8E!/toW"*NU1nqF|~W{i}N>$wQM4tKZ-B*cA7.癟cnnť%Y^^dii. K}Q(-!Fjny}7(G?ZX+|[VbX鵹=+'J9XR &P=cUoyotMoSA$)n.>->0F bcFd5o}yov4m? J5\_LupxAѺ9]: ]k_pRR:e3}MVz&GP! 'Sns#tp1^Ώ 9|x2?H $ 0[ * %]ӄeC'x+#b rTN'hW8J}k. v'6^'՟"&V\*ʸ:4du]wݤ*OI6`~ܤnsS|o#H$ZE"HAx?p3G5 j4oly+%`\]K}p.p azDS`V .f+.$c;&\W8S>Z$'e}g34#9m-o09Bŝ;܏ųjr-th۸i{_xޓ|{,uZàl y.X[& az GNOէnB),>"|~d֬\7']*DIHd\Z rc`y}-=w'κ"n6rذk#4Z0Fˈ]AzM.TO .m=SM̠Ydxӭt'D"׆kAY~gH=}wW@84P3&ފ.YTy"U*XD,b-HY׸@E u1}b]-kR@j,[j:|8> J.Œ؜FSGa$ly%@hD"׼_SD"َ&6G'I#,O!bz7pn6N8X*` Hxú^? [uq և3WV,Skf19.{RպDHy2i0l0Ǹ 6NܾvHNVC٠n;iG/ 6MMJFMli)–EIYزr/B#KX?UzppZ^bzsO!eBwok %1[SomLk| ycزxmhyөƁ;Mu_(JKN7_/n(N 4ac6>_< d=m}l4ukoc VVphBVwv$gx4,_cH$rm @ XmOMDD/5^oIGEB`4VHemb{Sƕ9`+[xxaT{_fsb@s$0!.Tny?Nroq$DpH$ysp pchY+(Ƕud^t $B%IAH'\{7 yפxq4U<+!kCsHQV> *+I|orTn!$ޠ"Tռ ߝ* ŵin1NtqמP+)n &¸ * ƀZ۠D]z~wl`#(B=pyBXN9< bD=:y ZxK$mMf,[c HG[?U/X 2pfxkpiN\Ґ"$0 j'*MʂfBe\}"tBf1L)H679DD"7%py=<Nma4FcI< A (TX18n7 tzA 1S' Yfu}N!0*5gd]o2+̨7A|] B7H,*hbes8'f1ͮ`b%/결KK8 {?=OajU$ZLZ,#S-YQ>ZMgf/ip5[oD@Xϱ| ˇxd#gwu95 ň-ᶓDFe0xo;f:AHLna7A7mG!$wO1^3DLsj5'H%4/ x#e&*N{ؠF L]tFԉ>í#ØDnQ$ZbDUԂ¤i0 0^(݁60 MT\=A塪G %je5 ,zEEIhNwɊP1G\nLb/ tO5R8DD"7'|֘Oa(F4O%dɲ5`zskNQ_+"Pc߄k#'a=X):ŭWV?4K$>O8ALZ 9KMݐFG"H"H$(Bd5 /_1" qݤ٘+~j\ .UQl\aϡuR$Z7PD Ғ=RnmxrXn2/(V 0{Ӈ42/,ϝ+ğnۻn>9aˬ,8_ A,,.:k%?w S9W$ۮV{1)Vh YZvY8f^M0 WglOGo/=5-LǦ]I osK`T~P ARܘ}?MşH6NRcíhQROC o#ۡP֟B ĄԴ5)Dϥgq]wlcfvܟl[TJ|\>E2n; Xa40&sk `l2i,pk'Y>0`0IaY Dcĥ5X 1**Ub :/ cp~ޣu=py0HI]@^cۤjnwt:t87mjeMv鳼NJ0 91s!/JʲDR}u[(.`̈́r(ʔ͡3"6g04 =j4GL:&rUP=9Ca<`,uLn EΙgA_|@<+1rrPysmnbDH%2(gʯ ?F .IJpWg"r`)c!mWp뮍RºQ'1"tl5Egt:/rϺ]˳bD\@6md, `jG? |!-_ZPO@ҙwLӺ6Iݍ%Yo0^|g+A1谸'*d]v]7A6y6Yn/,[׭  ,,177Hsocdd4HHt:M 3N+\5YA(uKV7H#K/|N1@ ?A[L{޽?Idr-o`bn;${K'^QJ&tޗo؃MJJeln6in7MWVR"'~W ԽoXkC-h:R3c^(%I ;n\Þ}BѸHRE0J}DޤldT :Y ǷkqؼZ]@-k Hf5NP7WDc_o|V%Ѷתķq&FWph]ڜ E&E=Ƙ^4kXX^, P.8-0揁@~?}e}+@Lڤ5-JYX -u7gh% Pu:̢@늵A5ף^[}k$[=Ҳ"\(sdc6ᬐ|V$}274 |L/Kou$D(D"o] 03\1C X{<_1cn?UyQZ[ /9_jXxki.3`!H/oKWNz_pv\UU~_K9<~Ç2`frK[W=W?qRf3B;ڒ,ʥ[/'K@w_5-=E={!ty&^Gv!K_bs\&Ncs!( OFm ]]>8LpfJM, Gŭ>վ$‘A3"LN|F1_h;ϥ囶uǁF"7[ TWc!0\ "rl7..cRiFpM!DNjm=hܷUH Fb\x3YY/&ijA&5 2KRb&y& J9i ?… @v= UD"\$D޺0p?`R "ayyp t'Ҭuф*T0D@(%O8ԽF\%ox~0 /4Yo5svsK#72fZwuጏ5ݛ{obZp^:q㥐Hr2>–B#i Mh-4cdC@ʄNF MjR9zf ~{H&PĚO9>߹?_Cglb 5h@NWTiE@QmedCt?mWT d@֓]/W(HB)ԡQD"po> ;gn{MC\g7x5OBh AZgyQD"o ``;$q"'p׎-_Sr x+x?ϵ@(Ƹ\8tsƸI8gUyFNnxݺ@U^=b\Bo#0؂@=WYpyrd !2:7#D"hD"oւv ׃Ï?K$tS䃓XBX#E&p:RsբZk`\=xDYV~{GzRnAH=k`V$- "u&J1T:/򉿶f#byY<2֜g`L2`oGcG_aG3:`0(YY,A?\eaY e)9b1_XzKA0pYG 1Bk K-lT躭$YeW?U[22{q7]>zH AL!3[]LE%!Nj7VR^u ևn0uW[mmZP?5qndrj#I|S} O/H$ֱ CŸ ;/mKGѱm\Y{5U[iLIx#)Ak o[8A\ ⬦n4 )**O0~X{-}Qr`lΥ`MrdHI}C> |",20DT}4p2ݑH$rma_O!D"WSr6F[FrkX{~+Iޯ`Wj<"6U? : < ,3Ui2E @xe`KGNz.5A%LWW8tj{SoV?$D0&E@BO^,IZӁOe\.97GN`m"C >D@Hǁ`Ƿ;DD"o]F03$PG#=.deYxRoC88*R@GEEвcAKڼޞ"wbij 5ޕ<@>p`~PMޙD_jd>Fp4 ?wo]xZZKiU6X^8CcF¥n>ΞTŽ~h53_ԙuyc216 Bmz䃒$5T⏵,3EN_{cz˥[srޒM4GpH&gdj`PN=56+8u׳6m '>b@b i<ܖ=}ܬ]s$Ғ~=eZֺ~xZ_@aضkU3^ᢎb$a^Pׂ~2y7|+Idr`ࣽϾ d#STPgUs'@EvD!7㬂Hɕ@ /mڸ cqi%ܼk5ip+ګc`-^I3.3=nbڥ;w/%{BD~PD˥ce<9I̕Az;ڜ?Ӓw_Zu'b`1Lo"I^[=5Ax xD"":`RH'~\!D`zgBB:kH[H1ZM(ICLT\%ucslѯRpmyUى1E,@[ع|͋`~ oD"k ÿo)D"Hbm`&k46.XlyAWiC ]3)uۇZ9wnr|tYWo G[{j,TN -_!Gz>~o|,<i"k4u45mvnB_*֜RعNoJ`6eӠ];ְdl۴];̟MXx`Z@t`-ɗ>_3hIܷm{><ѓ]"*>P%l<6{lʹxw)1찼e Sk::ۭbY'NkjVKs^|Rʀu"ds۬]%NH$\ |̭ $ qn\uj6Yf+rWr\RNT269>NReYD$p6jh%.EΔg]wP wn^Xܢtclnav+#\|H.,kro?ZIRYMnX\ٱu/p)^cM3di‹J3a<Mq<-vS,=ɥ͇J}ӜoS&f8?HYp*Jb  D'|]5ޫ# $S͍``X$F0b(Pw/nԏO(;!/Aa SOκ6A$ -cD{?,Km૗ pp=;RFc dNJUJR0ElTiRԺu NHẙmtXF]q~N V[}#%//zQbxGs; K I\c$ȐX> 9BփG%@1=$mqVsKM~#H'} E}\}`K|>45/R# H}֖-I[}֔m(ELn)8@pn y׌D"kH$\܂!`uV/ uZ-1t|} AXO@Rۊq0NIX9{R>lzLbRʝ"-AHN e_ZYXw$/ b@N5شé/.fnwV2;=cm+\ Y=}# 4G4 W*HUͪLQ c nX?3(~cOr)kاbj AΩbu7NVZZ,\ _;w_)]_(u.k]A .I+w' ; +LF)^bzKC"E*eL6hKۯZ^_kD"Psu K \$kww :!"gܓsO{_‘6FN4od Z?ף*⏨{8L‰?%"#\$`i6x~ 7U#H$ @H$\ 0y} uF ?Ed`0d0TVR[k1F1ѺlYer KҼOnK{)@YAl41_Iա_ }"nx{~ȲV;[}n7_ $Gy"3k[Eݭn]H`mg?ʌ؆ycac6 dV!$! $Kڭ۷^U=T'ΉqnZRsTFdDr+?ߗEA9Ts֭j1؟q4dρVE^X)uúՃ|߾Lr< aj)chX04XQܡv`4)l>}&yYW-N6NOKZR2up㻟NE{Xvxw^scJ?#BUd+Ɏ 3/dmK߹8# G>?x4AZt\Cœ?"B4 \DCZV] ƯH$۾x'~"ȟ8m/@>ӝܷ}3lwrE Cd&VU*>|[]P nՉB>b K)zT/wpfe8  H$9x"H$r3׃U!6" hA`n]AfPvְLxZ?r~G]Wmnט}\ TJ)Vȭ{(JIC.^Mi42YՓdx9N,t 9EvH0cGj'julۙ=28o;aD I>"P5jf#Ș{#m=h37]w?Dw!N$/8Ex:#|Ć{K3 ę{ٝ.+H͋?lipFi h|m݋;O"U%$~|PX.#FcXu0C"ΒG+Em't[W$&nPus)5c#/ jȁ䁍hKԬE&[I6-n=L'ʮZZ|+_]U3t&AW0)4ՑH$rJ:>B$DNV#:.B 0B *LFU![dhzt$\o]ݭ Bu~(5u7WӸB !B0$q; hE%ibD, sEN'gh@X1.zc|³P%=1 !MZ5r TX+uac?`r:g@vhggʉ3]MaS&خǙωBEG-TjoBi(_T_Z6^g̕(CNŗWMTg~d!+ pe>w*$t-YǂIV :R Гn3ǯH$9:}W˃I܍W]N }@gbo#w^%m>N֚$]lPU#&Ef}jѤUZAWk >P' w8jSI Kw#H$:"H$9 1YwrQ%/ўeR6cB$DNg惾XAb_•0O_~vcr(>{]j2msm$ٯm5rK+#$LkZjD&5)~in##1fmCFi4ڨi5&KZf;Ɔ쟚n79yF ^?+7߾{63g9tdC$&%RӼa^CQ;s ՘i[D w8M}gVж5/ X@0:],7^\O` jǏ_.mx ±x$خ۴B@zxįH$90D~8-E{Vͪ ʂba-01+ ^AZD zs9|Jϕ e w+*`$L_C )BM Ļ8DD".G:(8ah7OH+[jn{33S%7D*7ǟ0(Jv>%gu  ( ss|ŮQs墆,sG>^Ozb[YFި{BPєf/<\CiԲo|;gœݚsqӷ#hTadr,)i^4nyzyuV.m$IҔNݻtaN ?=tX[8fsGĨƒ "R.;q[q$[jW${7be$c;`҂plzu_ף\Ro Z)3vGM$p'@~[KFxskxZ8'sѸPk+;N$&R$V'$yE-" .ĉ=>[ Ax7E?n!]1@wfho-џb$D(D""FBRH4pP=|=nKPe7k(WԻDü@e+H:?E~QfŨm5ܢ)0\瘏'UOu1MIVzYDžk6m^7Z]$%}S{L,1g,܎N )i5I[pI.8k'I#t '>݇y~;GY98FITr^D4PqyE=]8OHWVB+ps:*s]Jw)Cu\J ,Ru{KRa͆ .Gmh)?2Ǹ]]%DN_?B;T> 4/*hCuQU"esZqc7ʺm/LA۷?VAD(p8U@9?+?CD"S=1P$D^,y*[U}쀢Je8ϻtT,Ofݮ?lsQ(-!XM+qcJ0?[_hgƘ W=H۵_VcuѤ'y~њ#vo>< {%"QPrB=0pZ" lK$R?7pkJg:StkŕSxVەPՊG)91܅1\PQ\O(lJD"-}2?1O:M~8+kIQs ct |x7ρU^?TX#v~gBo?yUo}ηxK/@:Հ $-@ xpWk#H$ @H$ lQ1 'B خ֒ۘ W(;|j`2)oҺޯGe6ֽgpZPyz{_Un5Ԓ3qXnLRdV<Ѷ0-h6Z͖6 7l6Q~ZI&/'wf4BVQB49sA/*'U\Z#bh-\gh?>uF>#)HRXrc+k8*U;d~k̈y-J[* ;3_~Wx z!tQ N;$ W:G}pUU+H~YşjuOŸH$| @?.$S?1p+xBO Q N6ŋ9뛣 !nk;'?_zu'C>\#\W?^9:NDXl.\#Q| ;@xF"H"H$9UHA^\QR-D$deVffOW*M7oIN((ݠt X5[i^/A pQX;ݝ+.1XO _VY6IDŽGZI$s:h'V/hIѤh0{$ |()OH!"z*Gpc" 7x@m# XRd{D"QD"HTd%=ס"wP hӓɻr EB|4q髄- N9z} 蹀3LKJUF.LmVy1 :}ư1#}rf}Stsd/x0b vjѤҞUDj.F))"}tKsґB \tk~f/݋;O%4ʄa0~UST^7cm7 ˕Tܴbi3;"sQ@)!AHxIҠZ)3PQ<90PįH$9% mW$xgȻ 7\ vxǍ\x7U@Nx ju"3wXo`"*x!4L>]}|^?>Nd} g@E@:~D"D"HtD^ 珆"o8"vv1599jfw[@ `]eW}WL7a >>ZXR>[l`7E6uƖ_R@1ꓹVtHӔZsM?;q`!wl>dWȩkOOv;%Fr0\ArZʛ#H'p~I5͏`iŋB/Auj! ~\"~^Pged!<:SZN YX[{UD"u'Ot?|> P-p V]x8kkq+wL( V]I6#:;67\N"7@>('dܬȸǀ:D" DP$D^Ԁ@^$jCRaf%N0=1?A` ab}B'-MNz A|nku^E/X/[i_̭gdGݦh$ ACw?DNejy'/qni9^HآNP;oT{}*af}44@֢X@Peǐwn!ĤҖ/sH:Qğ~@Sƻ2DNK*D"H$Baz`#GCOU S V"d/?rpb 6< r0QӍ-m-^orۻ%C)$L+bz k#-g׵_83 gíVHDp];wX5ffzQl OZƃ[@Uѷp%7y~ڙ;3+C%EmCnEPABa6B'}8]=9%QTk꼬0w?KhpvDB5 ZEaGVfhx%b u(6{i>qD"߸=D t] .T $>ŹXW?^9'&f\;O Nt1g;>1 ՛+iU{`d"|"Uw]y(ލH$@H$XX:`xBį;BmGLB-o-⷇ :WGuiv7?)Sl@1w$h]&>ٽ-۬'nvvnVK$}l1O?HpwnFT9;6:Od=7Pӂlbm(8GĔ/à)—}WfsD<,b/i_۾Z[B։4Wrj7*e-Z¥+IҾ=Jnϱ)@7~G"i']'@ T [A_@u XT{`0 w"ǫH=8M| hxR<64HOrHӗ!H;ޅH$H$D^l%@'PNH^v{SLUn f T%.r ̶q*jvK秤|K#b@?z͟G_CN۬jI2P%^F8cʻס ξz!޹azڡΨfj%F%7V) DJH)ܙ+;nj`7կKDiРگv^]T ub ~ G΂8לJM3Z}.şr WM܌ǏH$9E.Qc?$ A,BǽQ rK-eZ/GqlMUDV^Ĕ(/Emv#oT'1/?H&ƻ/DNo!"H$ʵ\C{ 4JւHhqhQY R0\Iִ ^ ( KjA]ۯK65>M;#wlxhˣ{sթ,Iv &0iLK/^s|9_GRk0o$'i/`g61-'Qd)`)ㅡ@TXv~T tY^"xD`#ٝ!tf ME*T;eVOY~eH9F'<;',䖅OnD;5 0E՜덞l6Ax_}$/^Kch>&ѝ=vOl^}ےRh~jnew9wodQv_2-@B|M+U:\9|#ڡ {+eμ-۬N\7aD"/:\AޫhADQv8Bp `xPU) ,ΉD>?-ZlAĔ< E0(K#TR@@e\?ւޢ'O9S?St1PA֕'ߍ9"HE%}.^H$D3s ?r]()G ]Dj-y&^ '!#gzM-dYZD"}5=Ef81$U+N'?8=NMlf}ZczQvw 9j\|b-LMS'Eǧ66+Fh@·}![ko6 (YE3q"L33nHC"cDR8P A w_OihJҴ2 -^]1'Gu$xih x`$PpsyEqZ3ʸa(97NkWAVs$(ށ4U2p9bПy+PSl H87<H$P$D"/erDFu t c(3Loczb" T;, E`ouBݬO[FlKסNQ92ٱG~'']R;1b,x[ZS4͸KxЧDj %U[~mzف#Rh <*{йɌ+NW~SdO,C@ X:\b=ADºҫRLBf_ ˳ B ?}).ќ_ͯ eP΋0?#H%#WqO-8Nt~ x[hq@9y$cs"x~ k-UA"ZyZP 4lٵDMCL<杳S 7bJ}"Ȅr< cXXXHXЬރ'- Rwӳ_˚gΖ|S[}**sRRƋՃj4KX~KI«7Sc\y ?#H(i@ W|\1`ǀ3ϣ$FrpbaT7>xWxPjPCE\Kq,;T}zX[Ĩ_Ƈl"HŇǫD"sc {Bux8oW_Yq]L(,J:j?ÿ@Y1nʰUVn-2Wb4굌5իL{sS1}mǷZߦO* 5%\x!I惓y=ۿ-l?P(A|^_Zdv&@X|KHoclbvrm}ŏ#*!aSxbDc ɚH$4;ׂ7KnZ;@Y|2\`'ksp0pvIPjGЫ v G"@R-˅v; Hq9»e%a ps"HE-EP$D"'s\ Ve lAɱ@x2*BGB\aޓPR@)GKv~<̲LFﻁҡ0 ՙcirT7sӓOCgl޾c@{Ꜿs /0s㢋/ďl ex=v[rxS^p0;s_)QG6,B2[]kO|N߯ގ]/:?wE|?V:.hd l`C|gi8=`:~F"Hċ@wl‡ $ͼY s*~)lX\;W@6P^UaQ}D> P^`t&2 YpàŻ'DD"HIA^P rxQjVQ;6&Ϊn%P/4y¾Uݫ缳;XOW$Iuj28А /fYlLwS,۴c|n}|Zg2EeWpYgs:2-;G@-J rE&YdۡCGRBg`n1}zKP)U+S޹U ~]gu=V]LJ˝ =4\pF}wc6D""w 3ہ>7uetׁOq1g9  `q/B6:xțX@F(0=wS {7@"y?"D".D"3\SM𺌯/GY\@v(L+Z/(U|?@ ^5iIJ:clqIըS,7N8 cΓLeO?x=7哓 Ⱥgzt{3;lK"`dmpk;3TZy?,(#%X΍fE*h?g(įbU20g9"i, L8Sc5D"(-}k*|6d(ȗ@?tD5`'|dTTt =GvTu b Sc` tp7x s uI@oH$y _UD"HxU0RnWF 9k弻#  'yVpSR\=Oް;?@4[S#j)jY=20,YfAUt{؁ /0w-tH'gx ׏ ^Iw_1݂5y ?KBdϐPU (_{+K+x5&i͚ǣTK7, <<~F"H[0`'0uavc"OxN 6?HMQaO7/]$D(D"ȉE Wa$HS⍒1'RrviOoebl(DmѲZ1&*@QD̞[Vk__?}}B9<3ZFMkYV&]8ߴ0 7x;wn_ 33= |oȴ_hGi  GGmrC9WnP) ~Y,q_Gٚ04js+<NTuV.`"~|F"H;;xj0mA<bA hP rǀx5O)Rz@.#Ab  D"QD"H$rr\ \~t-T&tbmLOjRć}s @x*@]y؉kꭁhVt'K:,iQ2m=|B>煨^@Dk^j4t{PJ6VrVP#Cf*Lyه/4M)P 0{[/Nʡ&0\Vb0DNpp]2D"!VP";jA+!"ZA @Wp ^ ?O E\(XAR@灿v+D"/y *D"H$2 6P6'!O0F".UEpuyTD߭.P*#B^5sLquҙ#UtqI^V몕ng 3o|.Ng:-w~+^]?B >H*3\ = 8&dl+}*/Dv+ݹvQ" 9ppp30Bօx{ "Z WeF"H@(E"H$"qT A_VUvZ*^ ]+t?P_JBgd GGQRXa.gho"6ے*vCYШ։2W½p,\b$Ik=>ax7ىD"q?׹po86n~Jw I$ DĠv PDC鮻E{DP"1D"D"ȩ.Ah@t@ zffj+G 3hؽ"[X=l.EN,;F}ogD;͹3Rճ&zMn^24M&Vn1FV;vl!28; @QZfe,akGR;F;jfx9Q9 Vv]R'""*d! U+C5YN>V'OuY';˷lwގďH$96E@aWo$Rp: wr{#Џ{Gצ]:zǀTs{2px5s 1R6R-HF+jɱ̀uH$ 96x'cŮI8!߃Z1nV[Ay(xi W\ i&77D"H"H$9}\ 2RzP__A)#n{##<]>"rו;)ʍh]9csٲV%nc#Ip/xQ;wngrr[EN8h,_gm΋#6c 1Nfx!߽݌9xF7N:~# /hyLRkӿ)K8aսpPh0oaEאfS)ބN>df{LhD"q?W \ıq'<QlZ9p^=3t? 8BгA6}Ĕmny& H$P$D"/D^ګz)eLOne|t-!HT•\ѻEJ=sxՅFLcdt2fǎgEsMvTc}[sZ<<ȡCN=^M .bi6X?D$h_bΚ1ߕdK+"h3&Kt{AZ_yx/]COC$iMꞕ{y)Ε+wFjP!?2R)԰||W!Z!\#! ƏH$~-M n'Mr2ktț]Ma@E"8|(9 dvArݲd `-j8SvBqS0jA? x'D"HD MtE"H$rBYN@F!m|:,Gɑ}yQ<-h);K@ѭ_9xjjq/#ISUe߾=<:8{\v~b^V5EyUO$6&IDjYN:d.3fpkG _xsz9ZRowoxfV#"WCs&.]=c@3ٜoU9%+` &2kޞj\ H$9GX)'= ]䕠 j` FADQ )n{5Zߦѕ@FFm+QuR^i*AۯW#np0 l@(!W&oD".D"\0!@j9A%=###Ec@5}BP8ANH.+xc hpɥW^'4ڶm[Xh1/@Uu7Wjd7EP2ɣ-%"C,MjQj =PC.<ʲ33ܶz,]Ii#ޒhn:l!b>^PUKrKj_?pu+K?P\r%+Wfs'(W1SWsLŏH$s ][9ENـꫀgsIPLA"Jxg8"qU "v@ em]xNw|w"|zcD"tC H$~dASRΕ Ը\[*vLOQ@  YPK?lY٢,Kyk3h`ٶU|j\r=ЉPmCwNJNz9o%ə/"CYY%Ӛ<5Pm@v&"9KW<8Q9'v{ەÇs:;[-p;?o=I뤔Bz'B4EV (.YrS.zT Ć*oR$DCY Kptϩ6]/ A...XĆ2 JGm9I6h+psƭ' ~jc"p/pp[E'D"QD"H$2p= \@"AČJx@zE~ѝ;Z|7d0[kL.id5[+kG nٵkhZ'U-ܼ[;N== @fK_b6zPeddYx#'m˲5t Yp{ƚ3ҡz<^@ Gww}m?mӮZ"| @ DK~SZOG+Bg߇pV+80qwbrH$S~ G'w4ELqbZmz{z( ġ ^qw|_Ə SH$ P$D"/VXY*7/ xing6tUBQȇ(:NklXiS-!BBTd @62sLdNk>ƍ9胇??!DT蹥j\<=vuǀn=}ٟ-.^(OkRyD"qyW:<Ƌ3X@ @ )ڟL՟7l+W {vik?aY*dBWC t#$'8x1!碂vums%(fFDϓլ\ p;̬}$~|bu] ZΜXK6{«&0|+dQMu~u'`F|تED9?|hUՃ"""HDDDN `;3EGG\rP->b{ͭMxV pp> %ZZ RϝK{ߨ9D~O> zM:3G~s`>ĉdD}K6Cb2LomcsU}׹Ʃ!]_qlh}6`B9gp\,G[ԃ"""HDDDNV&0Y@%#9_bAŦet/âd D__3Ռ3R8pf$9E JcXAĞѱDKў=>1㗌30G[KX\]HNIV&ug[*;Fί.G ~瀭[m0 XMEDDD<_ǀabO8 ?3 CKt'0';,pa M@ɱ`jfR ;v< >a^" ˆdfOG9,9g '5H876G%R \l{""B'.r`19`\(""" DDD䅴6صAz$W2K u0\: p`p@SGrq03cxr .YLI+$UaӼ9MMyԖ[o[7Q)^0zf #c-u,]5La G*&UgW= tBDDH^ ltQCU'Ճ"""HDDDNm}fSOrϺYH~44 13\]Ͻ'~Б,=0^*87i+IcF̱C|J,K-Yzk( (;7>Go߲kή_D07&D3 !C+]pL3' RSoYy^V^_ƨb˦KQ ]`=ڞ A=(""" DDDt)fXE 'CdR4YNϼ!ၙBBOȎp}[=q#n޺u_{tS uwrj,9GC¥8,`cGh/\ٗ ÀSĽ;Omr߽w޵a層oӆ6m߳}F1_-כP,` ?!I]ͫ$\};B1Sk-|xhz?|tj> ,*E92ۈso\<0L!z6/ l'8I88GRܘ?q 7~fptvv[1Y hQCw/9T *mmjOc-a[0A!ſӮ&Zu6'}S&`3PK+/߇zdlp1`>'濁Qfl̎A1玚ktG{g~Y:rX]]5xLimk'8UTʖ;ji{90 st?[Z;~0N#by3瘯hnca;Oëg)ue( (IWP۫ =.DD^V7מ`8XᏈ(>W݆Q8Yxf KXQ 3Y3 ɍzÓmY*5n` MMHu*ers q,sZ{C3TsΕ7{W*UQ-ͣd-Þz0Z@{kQDb$3 BD%:x- ܬ-'"""$86a0ۏOuAzd|]rX&7P>pxzdȞ7(dzsFQEF`; 0$BddmF6Nޑ(ET OdžȋZ IJgg}"""HDDD^l]s`ŇHHd~@Q,@قbi@XZS{o\zN<\WW.f ֜MS 9<1e 5Y]p t8 ;zi\HKN%$5 L#KYT10E ?X̉Y |xP]'"""ZNDDD^Ź]s Hpd̈*@ɂD)RG|y&UUG B<&R*$5ɱ!:zV Rn jm}`s5spuh,~\v y)qݘ]x೛8T_oc8Ј8# l6Ǣ́YN_SugXхᰴ@vl.`>WuԵGUm?qj@g(S]x&"2kD3~. >Q$"""/UZ;}cK3s:߮ ,L:R444ppB%n-d2]…/t.зQ_HPes)R8pKj| \;NDdV 2T瀯Ci,"""HDDD^FC}ZSeO {e rPLIZbc#n I0*u3g0l8| 䋥?  Lpf<:oQR`-3R`:3(?sKݣqJF`ofױP($uwvSuwկއdwk]'%uVeYxHTcQk`3 ,8Bmo~|h]'"r-~ßǁ?^GDDD@.6R^$Ginn#UqSV8|,q 3O.7GuYRaீPw)W.ocɇ~4yOM[.o.PQQE4@"""rF3$7-8ځಖ  pfj{\PDDDE """2 s71ܽ2LR9G2av+43.o hα@eB+|#3@ ÿ_~$͝/ !"rkOA`3ONDDD=pF᫘יXBҕաdZږڂL`\)鉎E%_wչE9ks.` 8fqX=rAQ 8WΧ\v#\e"7609{|`h2:U-4a$jLU,ج|x`$s4[*swc#OYu=vt+^u_~&\G} "#2+~ @WnKoP#""" DDDDYE_+?][y-x|&=.Ar`0\(&+Z s,7fa4c0g'v^m/wD7A4"N*OD. N= \ T>Q 8G_w]o7Yi|{-jĪ]+pEwTYRHdnnth|SX'^sWڤd9"? Fb#A[t&7V L8Lڊl[IME6w:Y&`0yOIp """HDDD^o:]7<^˫,y.k9/FCle, |v#g\F 6B/m 2Ae&ÏϋKGQ74S m#})=HD#^ Y LJQ 89wce6h9 EܲKI#xρE)9R9)~ ~GDDDDƀ1Y8 }`b@g``V-w?ډ쓓ZlӤrw̍8oYR@T3i3p̜H3[6t15k&.d끧kT>9I,p=%`DQ 89 r,yn8{qǯJ`S---y WR2Y\me'-,yѼ@FXL}kj.96;ۀiQDr~|t^4 w|d39m'/p4E=4e\mŸ/""""PDDD?V]Q`mCARZ(v\=13ʰ *VpZL'6eaDE㳭*N$_DDDD / t۫RM^ew9}BsUmnwB WQQ4TK'Km&]氈Kx%F Cù6mqᴥ7O,"/Ypqtvrн[A\tu B 5Mr<ޜsϹWN%M ELg9oF 2,^Äo|(RE Bđ$TcJʼnў#Zyb@s}\TqDEe,y :*짔m"GsD2O;Z/ !0_*gx= 14<_D,9#0ѼropMcnuiQhtB)¨ Ų,:R6˲,o]m k4Z;T*[s oͺ BTu 1ٯ:k&+vV.s}pk{BQ09႗rI{ﶺSR)'!vioWul C 8a:O@}9¹ );]R()cP3֦vGxr>%pnemβ4s4߁?KHQ\Xj[EQ m*z.$z,* FjMKKDQL• P 5" ŷ:fwa?sV?{ws5"?@gg?uR[ʪf}Q"""p"""cfOsl130O38>1>07\kJPDaP|ed@Ǥ5Ϲ(//;yظ>V@"""t ^6qx0`8f?<&1PH,2}@6_,J EdVW. X0P l1pf&f VBq{wӹu3M/ODDDOČ91#* f@9  8t/VOD<>E@@%"la+99۔h/$GVuF\/󰨂<˞}8m/!a^z"B,M4x4_2]Z(Ġ6do\NO+,w~&c=444լY3q'nB!'BIvmL fϞt0TYYKr;w*M466멢!Сxx<ĉ2}$ kMeg[Bii%=p:|]F{^{1ІVV 5d ^~ g}2`9` 1 [1N8 )뛖V7ߓHDD0ƍüobZ?0PL%oB!@B!N[[V%VŅ W(/<}ّǙb͖R (HJuK**jX=F^^iR8SUUCT h2czmTsF1DH#:ƹɀ}B 34 O*2XŸlgҥ yjp\fr 㽆 s?%B!B!Do555sz.q2j5nfiztnft\_#3#sPBÇ3o4l^/'5T;s3|-Z!B!P7KI znZGZE 1 rj5mfl`*8~D̵4]R(ΦCkLZI N0A٦Т6R?S>"a@=c{!cw99`oBEEĕꤖZV=˖9ɱiܹԌK'5\!}G M$Wǟ5&v?@Z6 ^}m h<=vdkA9ܽ9?i0/qu@i@sm_ϥ•Ŵm[_hVtFÙ3;|"BI MbzU,!G {?wH+TՏӧϓFٸq @YfֹNmj h=~!858h煜U NzaT( 1T(*ğ@F~RXT*"MdYI\ܷ?@=7toBT|%M"NPjji@Aცr;:dlbbΓڿ?@*djj V9:n2y\\dj9ʏMƊɳnѶ\$8 DHh@"ƍHqru^Z$%<|W%iklzUC6z/"RdbySii9)@iؑ\G_LNsYJ_z&c7 |xSAαŝq J u@^ ڿT7Lo@32kIT)Mr[jWTEj[}uYRR $ox88'<ig 8>gs$+klQHy.]XLsp6|]%6%B dz2KK˺cɢIsQ@7DZB4..L NMMg^ߥR qXsPB!Bzvj\m w E{I$n~rzYH}n(rBP E8_y蒢׳9\~N]ncq.>>gN@Z]S*}㨺H1mv;L|h h4̏fQr+6?#t63c;^1sdNB)"hd~vF B!BGgf^`C Fkx++otn$KK_VVf--Wsn(7~`Ŧ8NeIk;oߵ( ËA&7B8K] -$RmN-q,"88-ġP4sI}[-9 'A(BT!mp &`*StMV_/VWr'޲𞼵+|j&)ƔS~bq@O*UC 'Ӽ<ςa(5 Ͽxc(w+s$B!En#nwN/v;3!}t-6v R|`_D^(g纳|̭%tdwBauI' nVދ5\ 8O7'0qoy?D @bﵸy V+ĀԽDoT&]y Gbυk;΃EIB!B @kg 7&-΋gV[p˫ VX @Dt3y9;h|)l^pߘ8FQ&nl챫ֈڷPJĤa&ķ&{\urʭw|hbg(>_Κ NOUժgU:{.ZXE [N]8gk>_)!6 JBP"rwﵱtcvx4(>G:MlNpZl@BElb62Brq|_E)P@ o-AH<Ñ#!{D=\@Ⱥhժ32/*Of'scesTY>S:{ Zlێ{p@&Xkbm2H==_)U9bdCHKԩsd%9QT1[p@I1#ߥJ!B!D_@xPuL9sEo"l|'m!b2ʙa!<X8}j)[@yƒ17.!(wI rS_98z$$sI\sD=3B# 2lx3t,гeʔxqV^F?Kh}gҥzaGYKUz1b&I@7-%^zM2Y:kMuo^U&a+UDOO!\*'H.g)J6=R&99X7S={^/=(!B!$f JAheE4пuxPg Ǜ!^h^i$lPvvD>|t(3w/P6kJKcI^,1Dn ~@bU9ć9z@ zZS>}V#fѢL&C裘W$6}} ii+WFTd1<~rp֬Y pIsΜjÆf6Pr@Xb=RhL˗(Y?vE)(]鳑,-ٽ{d2SYσOrTRFf%}(%,]-[QA0D~QB!BHY"@k7^8!q:(q^> ܯiqĩP 3͍?y8dh%GM%pHp5$.Xk$~h]YݺCV%̗~wҤ4XbKw͞4X8i$}p_?(گP~]UZjT| \K ʂI1dHy0ȃ-LZ}))̕j۶jmjٲ> Qtؐ>:v]v9]ңAWQRnݺ/C |5o"5hЈ=ܮ]5c%P OeFIQITv(l1}3Zj-_ֻ|sn@2Vb>IEHe"6@B!x 0a'F-s@S$(#[jUaSBk` P7kK,f~^D5yn'"KbĽ[+ F!B!MRh.$4jdw9xP رLB̞yRjl7eGG0xG|B"B!P&P:ّ@ #'œSE"yJg܅~>#Gh\R>9)G@wi`> ),G9z`ķoD3"B!P޹VY< 0p7duܕMq)qR,0&Dc :Ai:J`Pƭ-]=>I͛J8bk<;S19*Ǎh(aG5I==lxsc$kdϨw?&mjZ%jz+Ӄj^s xzT`z D$(q= 6+J6 @=$E`+|z|cDvJO&"G+8(zo7RSU4OM`}5VKQóL#!"@! @4}@\"<٪JЈtAQU_FFWZq# [ [A-ZdȑIATӏԶL*y`o*6az D$(SsE}~III$&,8q'ٞ>. q".թB23-;2wIO7k|U-ӧE[h9? I rxId#i"!" l̒?f$;{ ZuFX Y+hY?)1t˗ ޒiQIÏ'>4ʱY.}g4}q&##KO@PQhnP=j&缦:\W kjGBD@ o-aࠑa<;j޽O|Pf,t8JU,xb+f}aN.ٺM7_ڹs<& jo*.S0;LU<ݢ@H0pEA͛e@ @6Hw]!v핢3ۢ>wGV_fŊ52c =Fǎ}3E5k]2jp @v^uU4wk2xR[ m*((Cw?w!T%R'gT:S& sHMU`s9S!AtFo/UXMRk3|*՚L@gM\23 ?2ܭ.Ujw-xPKv ƍK~1qy~lfC؉Pw&5RsU})^d%;;G\E|@[_UQHS-[)gϞ*?_/.[]ٙD툱&T*MS">zObZ$\T*;-3jH*nt`db3N~i(>K0I2,cDzԛ.RŴ/XgqSz7~JO; $8~t#T6Sc`/Os{-p`dƐ-i0Ӗ'T~՝HVF;RBI*H[$h!3OT4^JK=Md*v% @ @,!hCH㩭CGڛΧRѥVZ$BTq h6>Lw,hcz[RK1`PiO{h*ҚyxwR ,!hu:&R\Ik[L=:\YX*}O'Ƨ&S_ZJ9;;ҩi>g| ۦ|ip#ΧRѥfZy s}HigjsGuPL_ҮdcEڗ.RхԛBW?mNRى~g#uT*;\{>ГT*{/4Jei0;C[*^MSW:Je#;5<A7T*NcT4N' 0CЃTfHϤSʾL۝&@s A77T6v'мCh*Wh"L@ ARGF'К#P{z6IҎdZZ:" _IENDB`icingadb-1.3.0/doc/images/icingadb-daemon.png000066400000000000000000014640261477347223700210310ustar00rootroot00000000000000PNG  IHDR 7gIDATx1KUaq74SEu!;B-h8S^GgK44D-7 GpҫEh΀nO7T:&JZN8 \\j~ _N4]OFM8Tdbb^T!y~%d2.}-܃tPmҩLJdy@FЕhn4hԩ t7E-;PWtcugpYN55'\1I'4Gw9DI> < /S$Rpu~ނ u)1"R67 <ҥ}]Vn3ayQ@w@O_rwfɻDŽS㏮n~h_&]?R>zL\{2~k3?0(TOfm-mo~++'J] ʈ{$} uQMwU_U[={)%NL}H[ثmBΏ%=pȜ7§Жk&} k7t~=]ļK6xnP'i4LmQ^쩣=dbO=&t.^&j1>~Zhގ}$?|P3: @[ eJpnVe @[?to̊WsmЂ#e݇wy zEr ]^j-_]WT}vhr@7h_rR7I |j#c+y @ @+ @+=aӏȘ77DǾgd^4 ʼn|Ɏ7]L UFN;lǚw' Adؽ%^gE vp=z 3?}3V+=Z㏽4 HPi =,mSF1NJ?"GO;Ivz^]<T(ews^-|ρryyS-Vq瓿{N kk}^VmVeOt{뙭@ yP(\^=S^ }ˇVq2{b/;G;u,4(Cm &uswfdzHm2c&y?J*ޅVwp ?{?LFδVvW9~s7i oد=vW/(6wL?qysmOJ{&#i m`nR>z߉=km}NN+3As5?vmj*o:XW+5go5޺$U !.r#LmWdpzxTWx@ ^5%  ꗅ6g&8K[0Ȱi%g 8?VqU&#nn8nXvؘO*9Nϳy@ ƚ^k@iԛ䮮i+?!Gdg1mξz*nQd9Wğ"99O+x@r ]cM?yk2fN- k׿Mg B{1rH8s=uD +Y)=ƌ?=IZdC(8Vc'n_E Ot2뷢Yݺ? ;ؿu+G5"Hd>bԫ܍?w>7 ?Y~B[?֬F]G%ʨ?N34hD?"Y< 9PId7~sArI/?. eJ)Pj@}7+S>2C2 ?M¿utx(@ 3wƺwKm`(8K/䷊Ҳ&}2]$E] 8k&(H3+oz^ TuO5֜ nr9W9~snte<$C'W97i"P/g"3z^xHtvr^ڢ @ճ~kOǬ#}3oXhN>d.hw7i7+ړ<@%~ݟtszY6~n$7;hqQ{y |䀌(l@y'- {e=b{'^roػxMkvOB|*O[IN+(ر3frG,y ?4݅< @nq#ڎ-\9u,sDo! 8wm Q޸? 7Ж&?z @^@e-mޣiI,Do}[?f̹dU;,7ؿ'NÏ?i' S9}o:۽]S~B>X+YM ~t ?ީi|H f*~D 7 7ݵr4Μ3nywoط}6ZYo;uq|ke'}s[E׃ @%Ύ?bşkWWȾwW~N7Ӟ{'V Zˡ%cI XÏephgp@:M7b~[ kesKJePmp&?+b^[0< ?&Ydظs=;𩛫trFqٺI_ :3kLc;Du'畎Y"𣏕<+Ïdt}y޹]gx-9rlIlDqʴVڡvPEi$]RIvÒDJDP,oC B Hw{}]>0k&k@h(J7FTK-eG%G%Uky-.''KKyö|G:"[?*j>3P?7$ f%G?MK i6ThV S>|sYH($\ض3(@G ?M?,{\"Gď;= '(r揋hO?Gڴiݟi$4e&#@!"{bGPNIUbGSnhd mYjT~Ө(ŏ*ϓz;?b-ɟ)@"3HrDJp,|~*t''+K91zOi%g%wlTXVG[5_h[|O1 Z@ͬr@1%PG# MJ.~|JF@_ޟ3vټy[?*\<$~rچ_[eJS?9@? ߂)d --(}gϔixZ@g`$ L@5oIc5ڵo6w=1Flү٬߸/uhH?Yx[n>T\?bǧʟO~kT!. - ?QDžOaqyVyN67$xoOh4Һh.IlP@.~ߢo= *)Q 4)~4bGďRG~wڼ\ŏGO\I695)T,n{DڷѕoQ5q,?!huCamKeH?(J kYxd>גN H,~TDJ,bHtHt6_ #ghz(?UUߣ օu3Bx6YW]+Ix(~|LIXHS)~S !spN*?. gN#O3Z5M/ۜ0hsQ5䏋?=%'^ OOhT>K7Th ͟.ݟ~Y&Tfe ͟(7M$>vZ뛶ѸY'ǥOJCh6!JSOKo?`p~LOA  ͟NOzKD $+K,4*||?*}S6߹aks'#'g'I]d>(W*7~|)7g;:d?nohڷI?䦏͟@oe叶 ͟(<ڬ_׿*d͆R|X,<`q~leu[Jy?>͟o!*}<".T (&?M?(4/es~ZomoYPol9m^= >wD]9cw>rcvꥵݟZho?Qu-3"onO=?.}ϔ?>cz*דf6۬eH另!<-Iy_' >2W)YDH};w>k3vwo^׿DjpSy>MRݟJ'Sni*OlDӼ#Mٴw}ZOJXSPO]+^  ӅOrTyJj|hVЛ飉kwG?z'EOr'4dicOa[H㭟Gffiq$G@+e]4{~ϧ$+ƏKM4.PN{=ͽl:tp˾(I ?1,?.}4~gh4qGO3|p隆lܺZ~OsV?z'ȟ4UxrfϿ"|xp.\iG< |yf'g6S/Sně?qPa囿ͥ͟OX7o=yFu@.*˟).~djGҗHNxS#)2I=[ j8HkٮG[?ݟo,6BglT?EThTO͟^}פ4,"%;$w63\Ѭ̹)CxbHn־-֏ϔIYO~O-K Q n~̪߳u]SPM@ xgުֵIv>aSj"BDx:CG[?ѬT Tnh) MTK OP n߸IdOb'O@>{6>JX GOE[V?9.RTL>l;Ssa{u 7:dtOAQT~$<S?o}g#GS cMm Q6<zK R )~,t64Eگm}v7uzlI37mT)*_oHdq))or淪> ko@c_\H6R4=.^rNʱ|/YdY&uo" 'DO 9fcǞ/U#߂߱Sy |s ?M%ʟ#(>yh8kKYof[4cxq9g Y}hܲ\Z@"~Dy ]6]_OڷM?a64QibGψxtʟq" +D@α*Yׇo"h`lF9|/JDo; Me7U߱gC['lFʟZ?"4s$7yƽv݃k7Ig@ ͟4K' yKG9(~t?O@,~|fPƭߦli ="~F?CѺ:eoy.;7TٳԳ<飩r]O~>6IP\V@.SdLHbwog=d>eK3x*oq#)~ wi5/4MTď$ 9~=6m"T '*r?[8rtNO~)}7&Wν7쵸Mm ꑛ?fݹ]om4rQJa[=Ao@"l'?>%}2u훿]la߼eO5Y)G$PK`>WA7]#l '|ܳD|kFvfn=H8RZ?f@ܫ7sH oG>MM%Q%@%*Lq M1SG4~X?ASGg_ no.*mG O"=ZI"zjӏ^P ?J)ڷ|NUΝR(?6?ME@29f揤D'7?i)L?Qo co?@cܔ;s7X_ {YmX i蘻?*FHLH|I2%#TxƏL̬N#6S ^gVqH><>g<{^u y Nfdto1(ghRȴ|H~<@õz'r?^77W* I+ oZȳ^-^ EwѕDo"O~G4LH?֏$ͮ~?V4S4oG\>"q E9yp }pg0r]"hIFq^HPkųI]L4 IJ#3c-*W"H>~֮ѫ߮RIS|3h.u 1NHܷ]4Mڹ;h7Y%7^Y#nȔh?6J(dtiJD@i~z~s@&JX>aKLT_O'EÛ?CfTco75%39ďzyH=Q?3#~$n<TH# RJj_/>nmYc@{9 xQb Xɻ&oy ?<]D$ -0(mHz'u7I2 #t)S}FWS߂ G~lXHIg]a |*lr$ݲ6+JXݰe@Og;./ӊS?6ӱs#=xj#S7R"\^NQ+'yo6&w>]ВNxaNE_ $6isXrr(@fֿYe@%<4ߺh"~ fWD#mXP6D9#<HԔ@NJ jhA-KDntgQst@e-+15!Iwk9r>x'u+Lx?6rI_Ȍ&8"$MV# @CdSjO]^L}δc|HPziOPhHrVΜ!DiF>miCgN67]g8K r G 4Dq6H s(w L#ig"1 []i1OHIDď(@;>s&&ǽXnZ~m>@Mз*T\ YA>Wnt9{JjU=Ƣk/V)?׾I'D@?+{O41͟hO;?̩Omj?Z,2y6H$9/ ~h@2s-E׉.89*_c_ak&oi؄&mrG?NH $Y(+DY@i ddLu'ܛ;{?OƏL 7MJckhNݲƔ|=b7vmtqgLkgr$Ah@b]'-~TT#~g7%Stݴ(HX`N u+ N<'ΖJr*-?DOT944#8ZJ 4`FB?#0߿XESZ@,.,yDgf~Iܷ$?׾=/c$1P6OM?6"ɹZ2^C@@@ǘXq^GXt=Wv-G9I0 iıHZGiZ@NLG?dnGn]B5ucsZZ[{w.->**q} eu4~/Qy-h- un '\Z*7osW}+ХcďLI?žoL4f@^@*iD@]ZhV-L HrpX$³9C $L[˴k|Lo?waU;?Wwj;@El @@l H AZI- 7 57zL.t@ݟ>,k^6}LzNt q @n[qt݊4ݽ vQI]==~57PYT*-$P7SX|A{x-SSMPB8#S'}t|1r~DȌM?- +l~w'~G  {օWDm_&$Qŋym~).|ۢ|M<969\@"*6- Ohk6Y-P[@ 8y2?7l;Dkk*|G?"N%Fi^ q:R۸~Dw/nJHD#q4I7NMoi[ij*ܵUGk 8@+믥@.A(Ӊǂ绋iغz/IG}[及>>3U&Ǯ~#S *47a锢_ G%A N /qB h-+M=??bnm[B3# @{@ TZ@h G mHi  ?OZ3PYa4|e=C?KJRt锌^Zkr3w!ZlfU9nY$Gf@@?z;M&kiZcS%N* ?YxY-=f}m:%M҇}GfI?L-}W@FxnD?^ tr6qA^9[@E xyK9C bEB;="$j&!6jmGv:'| $ ı Iiđpnp L@M t*z#JnO ~D.HyE)="~3qSb;iUT>:8e@Gjhvn\UI76Mo) ,d5ݺ+$) &?_]UGJo?dOoc??֏~fcoVTJvo~4oG^g< eUyUUP(  *Cl5F3iL it'I'Нt$jL4Ѭe6&Y@;! j@I (W՛|kY{uoAVt>r~{Ǒ?& (r[FrC88 Lp&7Lsr!@VE-'k ;uuq>vͶq}hyNH_IJ:9#T{ Ci_-pt|*/Dw&v󊲴Ղ-Uˁ$q\98sS':P )KcT,K9ah6:<'(  ɡLȳ۴yL:O*AꚏR SJׯrk)׉D)fDZIΣ" Rn+Y;ѹdؓ h٧}m.KzpKs& Z\ AvcrGDXDsׯSL/, ՊďTP2_arטcM-#uW9immuM5.L8lp] pF#YޞՓD&+!w5nuاW??lrEM[1Jh;Gub1 Tr6|qy&88T" D fHE!e<=v{#8sҐ±E[a{\3ݿ=o^&p. I7T31?`k%,dD@/Z " 3R( |Uܷ'n;IE1^6'8>EcTEA]/`;Γep``L|lhMW3Kkws9JDP^]"DJ9tXx߆Q~=>y]Y6֘rGg8*˖:O&R؛ glu++|w<N6P$MG?F֘:J"^.񎩀J6bTmX~8srpɷ,~־ŞoѶ)V_.sHâٔP!C1ePP<xZ/R}UsqCKJG* 9oM[앫pM(dh0W&iiwq7|hQ{*e9AX3QŽ=Ey" N5}s *^l5=TbK/|} w,/_ϝ1ĪJZ m:6.>$?lQLibdS"%Bhs'P4VZ_QqqdcxAէ HiUhgUmVs]=fy@8Y4 T~z}]vζk6XĤΥη?>QR:")F5+\A"nS )-c3oU MElRRBw-A5.ޯ OїXj)D X7X%^,9_2+ռ*B&a"(V\āfy?F<ԚE+Gyp7DWi))ۏu<*Ukzem4@&#pӿ 1V'OZ۶yOE e=ޝ}+]AjoSbIcxQE⨞LP2X2YF*4KzݘF̈@"n*"3ׄq۽ΧXÊ*rV= 0W.&FR2!Ƕ|x~F{dg}63sI- ڼ^P3}+QDMlTdy7X͋}|ctpoY(^  P9*nj fc-۲˕( P4-~¾ _QqqdG5EAxtӢ m58㴉Ti_wf2!1T(~^r!J7$}$ HTtP@3͗e"yp&Lj&3Mj( a?E[C%vLŴah!^fbJ&Z`#`iyɛ7qɺ^+B\|۞Kd:G\CuWxCk\R( 'g래?k2ڕaXWn%mHzE䧵`Lfڷ5竇X`#$(OD)z=9 qq9!zJdAl b7`v8,CӮiR<1Idl8>eo;oUVn %fJ?~Ǒ?e$A,∡A۵ j,~ELFAURQh P 4FtȒL WՃղw4"(J† n3ϗ*9k2I59\L 3 N|nc̓5:kul%f?q9ۏ|u]-.[ˋƻ讴/ 1{|N&_3JJXm~JQMt|pi(d\X_QqqdAk,p 0tХ[l j(7k)98)1E')t:\6e:Usd$%]WRtvlon%,)HcI$lB*K(@cדX4)")lHTDB¾|]/HT$Q@(P Z yQ09o&'c>˕_?z zZ? 2EFHX5T.erY~Sk~ZQDvB(c0omjq9n7;OmgH(pN&Q^(M6D+&z9}F=+ XGD֥vZTgWQ(hlHy8ſ88ΉNQ.`8 <kӀ0է >8RJtSC8zyH8^֝솻.#WrS JlNE!SŢP DLɠX^OChuR0LCNi'e  ""( \LDN.||1^&C%J<;[Ϗb!Ȝvټ! 'ce<w&\}0XC!(yV@K}<\="^'F@آ^"jb_~;N(F숂 jOEAgq\98㜨T`$N-3 /*3'S(`H+tf3d7sKRŠReE@<~YOByp,PiY޽YKEB=$% 'uUy6OH:oUL2@UT P4Cs9SS,\u<|ӼuKn 1jsX1ShXrkWǦE"EQ Ǡ'5nl\slbUgrHQey 97unjALiTψ΄v#<B=gǡ3ŎJ[c.>>~.Pu8.qqN8*A* ,& Ayv!@/ "qN|zU8Q;:~\C֡C٣OYNv|fZNd߽hATJQ"lagr#BXDOԖАL4 vW8h,Ef|}/z^B / hS9v(94[0Х{~g|z0v% a\Q@7D.W暺6Ї Wuud% )e%i}vG7溝K@2 ղai;ڎzbC#ujԪ+=ycZ`#sl䏕ce ۭ*Z#F`SW|Կ88Ή@Ϡ'$[j`4HI zAjk{Yo34]8'-W}bQqEBs 1t"qzDNڳyiq`;"sd5dI+FH,x x}UBA܄,FǔKQ,TTF!dž) &q889' 2 Rh"D lV*<ԁ uѳ)q` ~tT2rB<x?*|p%c 1Gפ#tCO{k90uIN<-ZOET@#"ͤ&"~~Y+y,m[D!FOIT@>sv\*VqX6set TU9P{qkVҵ=H~ (_@J), u?7<1 3uv)h(QRk̭[\ᖽ|v rxYԄ6(\m)ŒiAPIa呍; L $N]aY@TRL}8=_q9Q2E8=!!e6BTt:&p(wgT^lR..X,w=s,-j'Y64N$N}k\϶^;ΤѺJ6D'-HLlMI.3|5+␔-46 m߶cbTQ4&ٜ2R"5]?a?}${ nz~C( 'p``G蒲->yAVʅ<2cwB^.R(TЛHݗDJ)n5˭{rSysv̰IBr:xdJ@<:(,YY:+.nzrmMT6I|¢ᒸ<+bHڎĉQQ9fRA1?[  i+CyPb#<1ڪ׿88ΏB g}Tq wG;gq1Z`4)R:FHJt$ZelM_InӒh%U{Vqd5L-.dY҉domJjF,aP?a%UR?dG<HxqRUs*4V)*&f9~?!>}ܽo!-B~*W<^e:/OS J$M+sJL,Jf/=`ȥ7SYL/>hO{Nv.-:G@P\kSH#~~ 7n}3tN-GDL) P 屆"ʋ8dv:8"1훩PШvVbϥΨ(jdBBQ4UGpw,ngGZɊj4& 4seT b&B*}o>T9ELP$q4"OT"yj)UPU i6$) 6!E,iD#EbeQ^ʦ򚐐qٿY ej,[QABE5-^B^;'S(|s+B e'L(qY0қl [O1ĆZٔ؆m,½rcg wqPz&twUX"%[3Wn;45\=ޱi`:`Q-mm9zkTKXDp^L9Mit(^MZ yr@88ǝ.`#?=@yg|1.`Ӟ.u/(;O<1c>GDYHAD&'\٭[^KJ\C J,z"B)! }+f"2vi-CI?!%-T4$ᕽ9~>~y)}|m|chR Pg+ghnsaSWngmTm\uBuUM%$1UZb-ٖrkӇjeCk?,Kk]cH2Vl[*>^,/tL1ЍǢ7rqyF@F<%ӽQ?Ҟ:/i81u(Z;i#&&ʈK۲V#/aWN[x@ $(*#{ӴJIO륔򅀔bDBPIY7_SY.OB^w b MGI{-,#/oXC-#FoM3WvNE)P jN[Y+r/7O1rH7m-)pN7xp`]"u֏ CPɶ~D]Z+pdW5= 24%a4!5dMֳBUH+TF@}`K5l叽w .W|aF x]9 qqD}(dO 8l1iڸsg |&Р=[?ӝu,OnZ<)޴~vݕkw96) $K^@eو=O ۰E5ns)4se[vz7.#A b*~/΋.R櫏m{`U7?} ]qpN\L,"BF^pӮ9)W҉^D$9eIM+`llkskK-~ Q`& ͂+'z9ZE$$ҹIRHf$EH`>HZXKKP!S9q@8\QNmck#Q̱sIh+umssYk\ JZ@F^BQtqLqR&VhH6jЎ>FO+x >6*2ܕ6rQ-3%(| JV\Kea~<q.Xѕԥ(vJ'BCE| l?S?8w }cS?#](ۊo%-HFC?As4 tCh /sMȻjFv+"k{3"͖,/KY.싯! @|- q88?B%Ҷ*ybjΑBje,42͌FS¾l,R7qj!|hfHyk>󗶍n3#\bR3[JpO ZqN31<5O4dž&oA(K{+:۟@zGH1F[ْWwv喭WI3H @$fHP\,4Jɂ9BC)̉uLuQ)PgrQy]a?AY(ۯ*:ly 3|J{FJil"^&#MOo?O]MC5tZ޴,+yJ#`9La"inM/E=ņ*`lPTѝF&V+:]?y՚*ki60+,ʝ}l]y.~aΊ (%./ƤFe+b2TCɠ?"t]!AE3C!d Xrq9vN(,fw>QPTj+*vARQB_كA IAoqQ*ݝ$6 Bf&yI$s#hCgE =|bhRP 9[@V"jDКfڊ\N4}v${%`t4f}=(2m|.1ӱH:<h5bY9gK?_d 7\0]a-j\@Qnv> u?.I5CzIcysp Iu WBw3a q5 8(kُ'?A݀GLd9Gfй@,t#_ĞƳ_/ |ؼN Pk%v+߼h\cFm|.x>(U7ǹul%xvCa=y3= SXY%-,͌(A+/# E d׍t n7؟e:'PZ ,)`]cZ6pYd%K,Ydox SVضF-!T)@[/AK/=w\ɍ@3vrmڂrcϛ#vV7kTNc(D109ۥ x<'ͨR9O֦E1bӻ%ZQ.Vʵ4G!66 pLjE(8kmqz8&PT%@Y?TI'mͱ2F(&ȎHGFwUvIL:(3b+]pe@:7˪NBqTЈR'bIrq,ɅW^+ᩦ5l#FO6o0ݸ >~^yI0Xv֋ä}Kxvb9셓x!>/a'z 9-vܻc'WᓆqPg>!!KH|@i+pġlߚIu9¥[p.^W$`)6w! `J SP˞Ҹ- Vw5 MY@5 5w [rca)j1v H_xx<ʀR!1L mfjjmV&$" t]2LGiĎQ#unn[Kݠ㝾5:QJ%=nDic IvJ[:)2&%<擑 R-Y9"2~&~ /+ 7SJS<[:Jk#~to)柾 ԫxPqYc>a3 (]Ǿ 7׮S d26oar)9L{BdGh " u}1摽/D*`"vL`"|~ {p]\i ~xƍ8[[Wc͙!cvY8!xx1Gn㷎D-t&Eg|cwz$#-hŌЇǪȗXwLPzpLY ]sRx|"!3/ۙB"@ eg}p4QwI-mn&[sabox<gx_)}IRifH-J4߆4Q=^{`z͟m|1#apFjG Wl\s5H2_:DI܌5(UȽ?SkȺ6&SE Q  <ӂRp6~!sL>sb`r7_0 6*ᚷn[G@Vj-"{W^Mwņjo<"n`ٔlZӐvT4=>vo܇zMmL=贍9f{ șXֳk'kvGW0Y h0=,(U،ׯ =-nZ\@1Τx<4YCp$Q@HVڀq\F7F_PˇkzRxx<sE+X섈u X?nV-1P !N chG+٦NnhVJ?Z+h-RJChV۵GT *奷TT_Hnmt䐎6RǬ7@0fPIffKʌsT֕HӵH-<'FP]?~#N;J'wJ+VI~$aO*}_lV %"{B*7ۊ97ovbܻ(1ƆRHsflӈD#:GBPSe21)7m@N䁝R.wh&;;͜=fl%`޽b0`;;`G<=?؅߹r QF/^SV7QiEldKlnş?=vQP[$g&w#c"M m1 *p1No?[f8tU _X%@cwc7#0PݮCe6;RJ}s+wA< t~25 'ȅl *S&8)LyIf@xx< c% H`uAXF@$*@FI kR9IYGkiZ߈8ڌD*Rۄj}:Tk(Mj5j}U )楷>TZk땫 q(Cq7qOFQ]qL,)Զ̬N!PNUdK sh?K+iZ% HƳİz^`A~SJ!O(@RJ[CJ'kCoԗ$]; f2_$qÿNdrjjoXfi)k5qBQ4t-kȬpzIf5n*X9Bf$3DqFH>fT'[ 9 ; &w/ھ-c+†r{{^m70~D`Xu7#oLJoY5|q<^-Sbgy`!_1Zxx:rD#>f @_ۺ (.Їzc"ư}*$Mgro  6c4ZAp$ĉ#J\b y^$j!gO@< `GVKFzSO >>ky<x<y¬RjCDYDksa*4%gR$MnmCPORoT-A‹*W*6@gj.k6LTbN1%,$`6ֵXg]/H-vZϰ4<҅~K`CPz/>kͣ7cJRz{JQam[Ǵqsֱ.n ?si~"rFHrf 7 n2,nWvҧ;b~[59 %DSqF1v Wu78Co1~"g9go'aoN?^iTh6}rcSA- ]G '`}#th &4z5 aް9,t%~W]̉)H!b(c#3hƌZlgS׮k`CǴT} @@mΝLY6"{ UkCA0ئr y4Syh]2H\yߑ~a-p%6OxOx<'A4FL5˴ SAJ%>dBJ@ Db"}ȉ@?!Z˓`TҨ^ hjca4]9bEiHd$PsHX0ĩf̷HA @J)l:!Y)5HiHzg)CJ+ *ݠJW\A *z zPm=w?V Ww*16HByݺQ2 k0(J9ȍ$[~̈@?g|V bN!^w(ćN3Җ.:/Ϲ9UF"s'h@7`MND5Pm>\!p y1bbr~cxw~^rp>58r#56X/N?Gw4k.>r}*5/1`Ԍ@p^L;YJ+nj A3Xyl}l1Tdo`^G!f" (4%q &ASTs6U!o62 zAk֠A2Q ;f|7@x5rBlη0Rc<k킊7 l ԐyJGKSQw:iMz=w>̵ MW "10߶b? 'ǘ@`'q#̌V?~Woo_>zhwaTž {Ma*wg uEq$7Xoz9SxdwuqD vQ 왪Vi%-ZDc+D 餣t1_1krYmXI]6IC_ q5/&d57ɏv^v?t҈c M;Fn:H3d5d?O@~ << ]+ZȎ*I((\ QǤ{C iUFTˡ9D(4qQj&PAPj#k,%D)b6MgiVʈ%fR?Dsl *)M7J_S]xi-O+mGoJWzh:iuLB~YP .Zvh4w %fhPMS1%p L6\@hu?_;thH:g;kzrcwęCWC&aeQ9,Ҩٗ&8?Lʊ1-;fV1t~[;|kGB9 \e&6}m*鈡rE{viSW@w팱kX] tiDaFәxl,dtȌ $!eu+`gp Ӻ g+wg;C5OB;>gfE y/u :B^3@+q؏k@f~6r)d| }lhiT_"j{w3&Pnc xx<y hbRP-$%6WHh9p~M]CoF1!xq V?e .q%(m2sҁ<&M Bz!c&lʺ64xQ@_6< 'w<Ld[9/r%*Zڃr08aPAC8Nuo>[?8~eaBc0Z%>"94J:3VWAFl#.1v7c0*G)!B'ܲbá*5ݹYAbe\c9f7\EP`r Ƚ.2TP:D(A9v?I2XͿbwj*94B#SG c\=;!W x<NGkXH$a SKFYP]Hv2g}cקt+A>RR݀VDZ)!TDŽ`^]Ll1D |I@2&y>u-u͊UfbAFẀN I?}/ RԩxQV>o٥W\36gc1 nEH'ǂ Hs#2m֗e2AaИeϖF馺q37# aB:osZ5~dD͇T@3-`d2k-B&8ݧ @Vl4q;-㫯[ba\KT\߅~6] xvaKZKC(w7 w=?߿llOt@ rar}2f)5v5t$c*NYAr"$$XGpID~{Q"qB? qтz];i]t* ,8)5{{C5;|[>IKGF> x("ɸD=SX`ٵ83q>y8i &L9Zc?,nnCG=`"OL?0;OصpjLDxב 7\ڱl> XZyv;aZjAγq #\cXl'tIA8o/Fiڅ.S`ډ#o8w(d_lG9Nd| x%XWAI7+J,z@ҧɽVsH@Z[36&:RW. g}M kmMI}>5+:Ɣ M 6SaEޱ ACFR3U8?{VCh7g&PrYM6-߻z |{UoـWon 1cddqtj7婣)ٕ'BۛϠ0 #x:J,wISGJ`+q(m/d15 I7RsL;Br?e0ǚ9P48g5h0iuw,ϰB50 q80\-ȫ\g!:j1`b9@yrw[@7<xi( Ui ,Vg@"XyJN#}H@JiHjs*5h5'@ Z4Õ({L7eZ > |2~ƕ~[ЛiK4gi7~ћڸ;O 7 V\f>ܕ_h}&%+jBծc׋!f59SF(L^`̠DfZXؒǖbQ~YfE/yéɓQPBwS "z64jĤPúgTrNt6.vfgዯYÇ  vwGGWNe4l_Ӿq. w1>Lc _Ʊ#]st>$ruU1.ᖹ[]Y5D@8d b2[olbp/ 0 V ^B*S)t^$WF~Slt0EkZH1-Kim :fu7'W';> x<"xʑ?-ViSަ̀X %B^ƼAaRmW ]͟ITjkoy?@!t;mM(2&cRzBpSO4?5f}O*=geV JWAoަN1?}/( eo sHo&1Z6 si$tk@ǜHLf_lL!cƭ!cwL[*\yt6dg;̶:BL;P:7OV ; Ƙ;ۓ0ilStZ9_ފv5U/P-4s\dGI|wu}4-܅zVQ3܋ol]6GbulnXZvͮJx ]pq@ Å*X6s@lRi`Ҳa%g:Iőr1 ӐK V}!qj!"8,%C.Fp8~֋J1,R>x<zCx Ў mto O:X.LNV;DV }%abttN$kH} ae]>=2bV`;ׁ&`lE߾]*6GL}7x? ֐mhXuS  2E2Sbӊ{.6x:ꑫ 7 : nuo:K*1Bpλm9<(荛h\Аv=-U2<8Fwڽ+o})ĩ,˘Ux1SŶ7NȻDуΛc&ctSF"3 ^>?.Y] *|r!wWD$ x'cNp2z &P5ӿi%8 R@m 1eRIO mUJUOȟIJ?Wb<>t҇N~ZhOeݣeIDa"KHs(*.2k%2ȴv$c̱=Ȣ{sD&r8}#ܿ}B˝'3m2go5t8|4,waFmEp*& -qEp 1>ȉLxqA5iJֳ7 LdtuE G avN`1;s( 3&j4z m~/aNWM d R3}y~_ݖ(1%*6ydKH.ۙq !N8c,Mf凗 ~tٝz:iD3 -%5WYԀٗ7u&'5$'>x< :% L`d&dp-H}-ZMIw;%C/?$ÈYɕob8w `;]'k Xuݑ9'ck#hw: D,R /ũ!$AZ%oy%gXI(z3k|Ni>(zSSHJtUJ;9\včkܰM2i H2@:6btmC@o#}9>U.H f;%i +3%86E'je$?oښG-fבqb:1-)ݑ.-)K7T{vL9}bu `a9'Ke]~tpw3w_5cF+bהЭLTkŒme0_͘ѳe8U6NحJ|%8~=r‰gH!&ÎQ wٴpVBYd]R0b;q7 ȥ#!oj7x<4^EiTJD@$(yL#>er>" f}f6`"m(ȍdy<x<A1I}+; %A$H> TyS 0OL1ն}6ZotzU\J|^GJ_Qڋތ+[=i?yWz"L`v/T;1[jrؘ5zl#X]p~qĹ]ƘLrq& Ds5qX7ye3rsES.VtS6&cQS\apkIL7݉cѸfW |%{' ?8!oC2\]k)wurݳwpN"ܓ]-{H[ L$L@M`K?0̥.#ܴ+eֵw!&6 _:iBi)JkcC F б:6"+ ^kEV }0! 8,#}mB"0[fr||o6_ZKC{'&8<~6o8~(6=ٝ0zZni_,bCʵuTb~fd<@& l eƞUzM !liI=\+ÙTWh'X-=^Yc ] T^iC^=F f}7{)` x<x< vR,$R-KM#iP`bdG(a[a pH@'F/(Ȳc7t?FP:[L(}v*8^SՀ2Hl@7v<SzR٦io)-|A+]ћ@,m ePϿx?LZ|`D&;f\pq!BEv6gbP/k<ƌ2K!GdO&ל禛՘\Ӌ`%ɩ؎(lbdH}`vM&(IK7Z7$k܁R{+m!?0+90:Bp09Rf5x){У>t'3xa+jaM&P~mn4ni㿝41~wn¸oPf`YCG‰@sO). ^L -]5PW0T9gס|yw,8 He$hA>PacGCKWoo:,LQI>#o>x<B7#IBHPᡔ0L}+揉NRyMO'fP@Kb>,` +KRҦ%}1^e&J^A" $d 9QmC2AJ$#jǥyUJonIfQߕYi4KJTOb_WZ﹡g_؀D`.(pӛ 2>=p.&{&|J|{|L}bN[0\\Æd&G3٦}mk]gMGOǯˢ.g;]oc_h[YvjIJe CpOndPucv؉o>9{ 9c 1Ӿ#G7 OE}=†ė5 N⽇ `}_{ ŽJ 9؃et Ž?Vƫ8aF1 Vb~MM5V9&NJ+AYO ]+&@>5IC^? k6;OA@x~3D Rf?`Q$7J$ czP m802^. %,3,]Xn .J fw֏n{ SX98?ѩ$+W!ySR:o+J(}L.?/*v(73k{.QFDß_&z7ՐlG8 ^TeJbYޅϯ!N.M.V1NȌŴv5{1er&mܰ9MN/ e S#ǩudsdNݤ{z(`t{9h(RrRd5h߰4Z;Ϙɍa"sLX/p_z$w*Br2raJ!̷c|խs8e0J*1'ܧ\\oh`UED_I:"+T` d?X]A!}Zb>EH*)`76t$`#tp?+VL"3Hn5 v[}\Ӷ0ݴ>x<@]g v'u6LڷL@-a9xܨ/'ٖdBoTs=Yw  %ay⵵Lz@&bDRp̨o ?Gi[?W+E~_:-uJ zs~V >3T뿕*zif :Ҙv 9ur4сkO])|Z5`-M d!ۀ*n`f 1CTz]GYr .ӯV$+흆$dX ,5fLPALˮ)TZWGQ}8buce(î7Б+wъ2 hHcq]E|o ZU359~ ?>uƻk(w%<`̐֬JwUH  ~2j*A#0*LP!N8{ }rT^eIt0Ɓ2 @΄-+97pf "oy<x<yjjb"_ )_'BW;ց EH"v$r=JRaOGf&dLjHa-㍟'*d|6A|Q@UD@ R $!Q) 6}jL<4_ŃϤ{q?#7v+ה $*] {ћ˵t9Ƭu] jeR>SpX(&MLqӿIqS1#Z8WgGfX2Z {Τ5R R1? *mY7f>yvf>^^FNM( u{;@Yg0S II6Qhk3 ®Nӏ FE<7o_;}\ s'pP3f7t 24J*j؏FI8]0SS0.Ŀ=յ@A}8| cKBwGW>;P ]U,0ߕ~"$zةSjռT5R8w5/* )|^ȫ@5:~Ȫ1DGũEm q-$x<x<yjОRp1Hu;a*wyc Qm.G5YPJL7Ͽn,YEtH)擫kFP@XCcGiɃ0ddtm])0~^Jћ(c~_Ug7ެkJ=5*r養y4{2BDΔA~-L}m0H}ԨlK3G,,ed){gQ'@z46Be@?4c4}h2vb53ݺ]\Aq=%9^@9M+(⇖C*76\b/{;Zxwẝ-Y_m0Z!-@Œ??yeqΙdd2о L7W]NӶ>V/ox5w0XGrWŜ_ZB${?H%\M3~ i`%vM Oi!`a:qF-GȑM<c@dŞY8&%:@7<x+]^m5$dB, z/,+2?JR¤PmF>ӎ pM3FG60D1Q_JB J#,L)?ٱv-XOt)H4`\(ţJRR ٨*5=1*>_+n6ɡHrAB6]E/:`w\㐺1'HԷӲ#{t%baG)Q 1 ɹeq?.$R:SJ!gI;̽ Xc^7QI. *F #;vN6ġ2j[k@ )4HJ\;~ P\zjlfc&h'sL;'[?޻W' rQŘKu!^هe)8̎:l}(~a/̩i٬; j!|= @̰%:j*P0U<΢TT" jCp!yӆO;7<x4heHJ 099o_x+G@>Ϩ`ѾR*b۳AS)A$ՙ`=A\m1O5@&* Զ, "}"W?9.P*7(ҏ:~=t+ݨ$ћxRৰ(q`cƎd#;ݛ[@l`z{AH#rcNY Yb߇N 8g6T)RœdqAF@jNFw,ũF$҉6Rr%xl\l6(g uB>MdG+_ڊ5Sv(joۀʙ@8l'GnxgNְ/ĉcUw\[Džps~U0} a6a.}d :C0DIxmbL?oI.Dn XLd ANK=~x=+fnkaЩ#@猳r>3E_x<ϓEE \V* \nKȄZ?R,2EnRe$``B$@ [)Ky \ kAbDkhWgƏd0XJC`d8{$tRxk_t1wxz3y/*eJPڂT.TMCIoq>>ӷک܈H76>7U(wTi(?l͹e<&3\řQD> 1+ٕF A(ܸq:@"Cɝ;@,.͜pG`'] $΋uRtFqDX2 Ќq7TtV.}uTt؄bbZ"w)#WC l yDϤ| {=P?tE9;D"+wTϏu䘄HtA, LȒX2pɶoɛ@7<x-hˆ6LH`Irc}VNt;qd+3n X P (fdArj@hFP#؎QP.%1 ĩdux,&3H@J"]tЎ˥?+]_ZOMЛ3qm~a?M+CiO_nIT ik>@k\8PV9(etFˏ!yl%U P9w7oDd{rGr7oo1R`md㟀4}Ҍ_tyceٹ ֦ nTpp%+aq +n"fܒ(|>[^y63lxjЦ>7o2L믯66.NgC4 Yixx<Ġf(^ ,MkPi99Nu(XR9(I )'l \?<tU0E߅ԅ"]Ċ\W EI$+fT /:g%auS+\IIY}S. 7-–~xVר9=}j@EmSŭBp T6qjHeۛN9lYQN H2) HIhDi7+tھz JFF Wh؞p Y(AQ,4( 8ޗnG$%9Yd \B̶k Q?EJ'P{JM?Dm(ތӴay%(A30,^[6D !Ι8qn)m}*wONeYHZ_=hNPr`X59mtGy<x<m{l s& 2:mxq7utG?jOZdkI%()dׄ BNYLHXi uuZ+ tl}J `m.Jo qqlORz _QCo*}YJ{ zV ƭM]JPڄ9 H~55 ~d I"0+a@郠WM^ w2gem8=)[W{GOD=utxiܹ]Ճp@ `ioTr,qTW_EkX] PYvLY&gsA_>Z_Gp$p`iыf,{,FC>] c/'3cЙ(&{x(xx<牲{&`bf@B@8}"1?@Ա"<%*`-'#2eQ?rUy3MlY@tU4\fF])NSVM`yI9,*(a:n~_OY|T: P}~=UJ ̈́ү* ^dMcCr[!]`ӘiY"N*8}s&3?ll"cPO`FCkɸ#6s8MJ=v!km'6mD@q21J\Ṣc!;zɞ :j= awow7 \}:딝g 䤔c{ $L? Ij}F xU%G Qj\ |0 2YJйf =dW+Q9o5*oX@sO8ɌmoʤڵO;Tu-JF#o(ˏ.cCelsg i'Mܻ)^?f3n"7J贓PϋԬɽ[]:q`m L/FgR3ĽǍ 2:Iɒ\Zxx<ǃބm,AH[T6/ה;dt^JqLJq7uJx B&^@_Z&P@XIB)ie(>}p BH 薺~_)f7\+~=2(}L*9\鷕^T ~D A0 E@7/Bͺ-kp`D0hm `s +uX|`| ۩0 %Ym}^4<tPHܞĮiĦ?0IeK>qEQеDF ;`0VD8g=~̳mt!*6n]t "#]=VBg84:ǐ4F &jNhx)DK֣ ,iِr_/ 2𷧍ݚ9.d]ߙ3V۸lgWD-0gАIQ1.X]1eBOx&eMIz:yt8MBcZ&{/x5@pQ`l'3Rgn&M|B}Dx̱[ؙ+a%)@xfgg+];ћ@e:F^ODpq@T9D2z@o; ˚Աix Z Ϭ_GN3i״ܨ9BJ 3NGW TV;&bljbmNl>ϙO<+w΂6-̷L\ZynL"h%D %f `5)TH- S(!c2`Ose*w99Àxx<Оu2JW(9vt'*m RqO$؛ӝ6䐏yQ!v%J?ڭADPin{G%GP_Í@b31p>yJB*=v}􄜏a)l?࠾b,r!XcC!zh8iS_>DX1@h%~急2ݧ@ *@x<5 I$aG5(6"$R@NM,mzY@ϋ "]Ƕ#'G&dBP$PuQGF$-~A?: h&,VmVt2zVG]06}`4n@o˙%J׵A'.b]ehp ftcKs`έDrjźu_ZJ0X&.y1Ee>-{ү-LiT@a"or '2m N?$=uw1$5hvќgC<] ȅ0Ϯ؞lLˀ@u\b;~ 94c|oۈ>g{nUngU 'QyZ24gfgm(`{xLRm&p>MsW/8FQI|k2u p@_ɜ1`&cfP.,tT [Wbe2Up@I{'scTYP~9rW R=#g) БYDX0ې$`Hr1` nV%+-|3etxx<dz=+}`& Q $Dtu-wyR Y\}9V׿:K)foSk.DN RΛ~4cqr(i%硾A=(Z$\[cԲȍ1zz҈e2y};(ȘfaXr"t DRߧm)Fӏ>}fM/n+8P aCʢR3M(6<#nRA u//IT_bB@X0R䨑%(t*aX;k4~V+V7{>U~=/@JW(}\>t+Ufi4l)t 90Ķam?Qq*;@SQucܷ,q绐[s^qMҦ6H~ͬБmOJ;Sх{wާpk)sl=g)9orzZЮ9FPp{>7 PFPm:߆U{ؘ:7o@q O|"_~m&|*T߲QyfnF>"8J3=^7†I>`?޵g\t';95T{{ ])Iϖr7Cp4|uSiDNB;:| 0A5g.ˠ3TY!yvݣb.fx<x<ehGA_rZa"77Fy}LjFgM@BYqM9A2YQ@>|@izTҧ3y0e)M7JJxOAJwr؍Omݮ%Wk$Ҍn1GR챱s -#CdG;wݕȜYCn+։b5C0 hOxas̵n31R"0Vđm1r'"cϹ~r$H$& hw`88U>Z$A< 4X98P#Dըq=D߷"՘:0u޺ 1p$tsd*J k1h&a dfg:skzǁ( vQ st%㺩6.}d %¯(#2Ωv$=`#|LD(~ޜV? ۅ~*5Nu!`K2,Ef@+qMKgւ0Iy/Xx<oy<yQ,%EJ&Z7D^No"jZ6&J"w%ם{irHdIL2x ʻ-Jr*.Wr9,Y"W+v]1g9Lo޼g{N3~ 8֏I}!doػ]XiY߫&~9/4sNz şq5Ql cA"B,/!"l}q WEg,n{hI[vkr<׾L^x kA"7 N /yz}IwQB,*8oTK&7(yXׅK'W +`Wѹo'2C-ϳ__@:{1d }z_=ObL||BFs!U/o݃FXU°,?—Npd_;0¶ P `ہ ¼oLuP=YmЛ&S88;~w}e Js ]7g+l'$|x :EIn@D" @D"H$. #bP5ZdTy63NP fVBƦM6A*tr{^eDFq@>,!`<1os5wyWa,:(ͯ2tB݀Ǎ bz` h%C` YuyWad q^Al/hd%Cw=gDPqUA.ċONQ sP|<sX81tle~X f_?@)%!trOb/t0m::ۍ"=Ş\'GdZwowc5#zQngW,򏟟綩͓c(&aWaN|Emܱh Qh9? ԶS%`w;r _KE_\~,zfWwm]À-OéU"sI A/8*8 7$%IJ$D"h@X]P$eF,<;!SXh6Φ9~; ␙n"-'-~a yf9a*~LmWbP4a@Pvl]WN~Y]Z/&pq 0ӄ=pC9b7Q`^H;I냿ٹl ))}^Ē$03 %+G %_": S]3D)QL<M|]#{u#~cpK` Ok#G?pb* 0 r$ʓ+1z;yQ_=@][+GK\kd׌zx}_9_bߺvC^%,,a#GԀ(G5n^7NQʐ}l}hky>p=<}"vօ ;Jl$%H$D"i2ªAuhȲW[jDE"X6LNCA4ad!a Je ZY7̽t߯L5 ׁ-A>ry~~kRw}wOl!s}ugCv$vuшڵ{ 5oApjdsj=c""+pd9V[2才>\KĂU{}X}"U%Mњ\J""_D" @D"H$ @V;^dOl; `ՀDD`QFY=Ah-S9 Ѝ 2s+H YTK&.崂DD |'hvr=0_:H%bp9{4F1 AW R@ Y 0u/ [,`Kăsb40J8ս A]D!}0G)ku(@D TZQE< 8 OV^Wʟኝc>]:ɑKc@~8~8azttB睨C{ih2Gka-'(+ٕ#tۦ n|%,Lw_],r1b7cplO,st依gk0\sc6POz%,;g]F~&b(/o1B޽iZBLkK3p!` *hűPOB#˙C P"D"H$ 7U[ًKfXĉ@jnaM$v$ى6ڲ(Q@̹XX̨pϟ(UI ?oدA38V0hdKif?^܇ c<^9KgU r $̚@xq <: dWN*(0RWVFWjmmPU/! PbPƀ5nF$$h 6NhQ۪_k=@fp^ =fT ?=16߽_OoO Q'u>u;eů'3thS\o3J 㵅>9vjW06 @&~@ * g>{Zda碠R=DG6L)GF".1؎ +}؅݃Ƚ0q*j>=>5 (5Թc @ (HP"H$h˔HdKAmQPE;̐]MBGZ3Nt +8"82slyoC8Ug/mS |U9z82}`'o/a!B 8"3e?{8#īMoTs!8@&DuTEɊUϡ/-@2 dnl5MwC PhcQ䞭}8^y":, H;OQII$%D"H42%ƙ832EP#0".zvrat$v$jgeZZ{b/,dvm6 zG/,- d4s?DDx  yj?ITTzґ  sP/8m#@E DѭE7||7S2Qa\?⚄u9KzB!IT7ڠ 6;l6'FĦjȰ rTD=**~}4^}^IڭAX" n{vXT ~ފ k%DZgV}LNY;hb/=ۑ,vħ5Wœ+56RlAHm_Yqvg2}oTkE ъ4C)*"g+T#9zΩ>"J|3։>Fr ZRCQ (~+?DD"H$C>>[a#X5V eky@@H, -"$6WSU";w&K͜~3`1`"ㄠgi&TrhOJBޤ3 mw^XȌ"DB!+`J,|A-AO9X6guo={,3 ?~lq#GT PhR+p,ޔXEM kBB:fQx9;9[Lo<-FW!F8so+ZΜ.{lՕA#4I_A~xg]u_8A[gХc/uvd0<Ë('/`K1ڿ Ȅ*Ht/+ܳmy=R":c+}|f鵒{uyM;s wT@Z@#ĸplOb<`rﶍ>r/l6- >)Ћon ?$D" @D"H$S޴} #ԖXX-P`Ė{j~7Kb -lqwNs-DB1&"£ ESc>o32{hf sďyw43 lm!V st%,>kRBb B{mUCپ X){EgZb א(du< Ї$h/`D*KEp\=3_Í/n#G0{8ەkn'p2jutzU{MV#H)p…; X"D!ëZ8;:hw;_ڏ9uQ^bR<~ 6DΧ<[WJzz{dɇ+Ba 9@XTT>322VCVRGPnm~8D~>r澝a 뭋@[`C0o^n\죏\X2>wy7}P\RZ'.^>a_zHN3]dEC;i.dR~;DC=(.~0埽Hiu(!7Ⅲ7%^ﮔcs=~0ee0R#PQ!#=r$a!aۓ+R6ȍȻd`iV'dԡ:H&xj$ m[h( neV܍M = q}yH'hIZ7~ ތkDQ< أ%Wq=BsH HSˋJ^µ@LԙH| (/AYGW_!0oRPo<(C>C8ZSwxxXl)'M\8_;™ő>u; 9].z;Zݘ6IzӨ61hr/殭@,[yQ$*G0 ˧WG807x Q_~5,E幅>RS"T*BDL1݆: x%K }ά1B޲@zC^BN1CBίe\j$Vb?ġ-HP"H$fWNӷl mR1by}k:g${*dl 4|&. ^BfzR8%}2hg7_&hٴ[Nd_6a'^ ĈX "N,N8zb&‹Mg$W6pc[WQfڀ*du j":Q/9/{/'׶PmW1g6nMIe|[lkg5>RwA ք ĝuN*wȡQ43hu̕}b ,9w+rh&@עίcOQPQh *B(ZyrN$H$D"ф^ ya,o@[k,-n 0֎Z`OwYp(F籈9:Ftdo?W:C7ޅH{uevcspN;hb/f['MFXgfs˺d7HR<:C/SX8=WN|K_.}|`FbiL _QP6aEP\h8Dw@ϭas}~ ! ׎!ێ`fz<},dW l]]n>2>] A#jG!z.HP"H$Dٓp` `#s@!Bgp%X^LζpV/(45㲠P5 5bPY`s;ҧsSyva0S0S)^"k | X+{ Tq%q@xL N?x/gסJ@"!6k@1{i>S~]Ysa8gO>dwE#$۶{LZF E#$"=$Ecm{, 1&]3Y,:3zÁ;x\J+xx շbijfOud0PrNϏa/@ǐߵu#ۮx>7OS|t1'CQ]9Q?]e\gb-@!B*"lB[E_[~,zlBP1m$(pl4]` Cn@o5x}S9 b)4U\?)Mc"6G&B"H$͐Q}~z^Ga;{ShKVQ/;\Нfi>gB6Wߴj*TZٷai1(#̝cK+צ#Q0 ҳC(n8F;^‹iJx5[:>t="Wx{Tz1QzyLN]|ݬ}xaIM -ߏr\{X|AZ0&G5Γ <?W!:w 䠳*aJ<P`3|5Z'c~XG&NPW|M6muuy.NBϿ"bLë{<=K 3HέDHzQ$X]]B{ <8jAq17Y--.&HThh qeEktrݨ#*QiX/=A緿Aު?N<&(H$D⢘W(pkUAͤcC존^0ſX d3qV+(J:~aK %ğD⧚# (Dμa"qn<.kݷ!P<=tPy=oɫ!ʒ=Ci0kQUT@ƞRQ"z-f.Z$MwCCLn;CiZ.BD!邹[Boso+3B{!1sv}ى?-$R:/4Rz (k^][ybٵneB#^Uzy>7LePDip ڤpv Y+<1}As q~"gQߑP?Ѳ3>4>> e$F޿ OTͮb$b r8PjF5+b#WtHH$(H$D1ύ*X:YCU0 Z9W kkrA/e`}05#0Q5sDBs]iϕ5}B0w:|KNqSP|2*NT4.K8 zٕ$A( ap5\2V0YiEx`)"n}?bVBm-I.0Y l2;scOVr( vD ӕֆēwGޏ!yZ @'k#c"5bs48JViV z"#Q^͢DW\_Gj눎)q8 |;#Mc֬= F2ڢ]>lCRyvtDA1Aɯ#Æ"_KϼOR?<̅{sM~ 1B3(1 =<^~솷O2 =`k']> Q$3w"~ʌjkk%)\"H$DHL7ϿWf@Uۖ\XۋBs 4+0m+_7պ 0*q `>jTs ߷3QX =p*i->~s/nW]"3M hCuAPjCA]P%H\%"0!׍Abiэ>B}8-6P/Dy%K$H$D"QO̓?Gl)+ڬcVDKZjv`2ҖVK10Ǹ,U?TcU_F "(X.\|_ZTmBpy̝90HtdYŕ5fc1^3|}hh_x!j?mJ3;| 8|8#N$ :܁jDX(q *5E콚; ,T1gEAݜD hG)X(DmA\j (ZxEDkPztmuϖ]3DoST܇<@MM& Hw epR<6C8Ԁ(>s 2G^c@T,Ջ ͹v*NSm e9虢6[]'xsᅀV'Z? VKOX\;snDzNrsW EH$(H$DϞ(=ۂ&Ʃgn_ERDAZ21m޶kn%-#?cDHT*_ۗ1t(P,^sd/{huLZ…iX]`,#+HOŕUfW0B*zЈepȶWJ1 ?} xGG WW["f7q`o$59 ${&d9wL /@<4űCR54 7x셣@ E N~󻑱m`m|ؙ3n?"h]Cɯ_EIQ_Hc"o /*{!h,19#/UhfUiwMVBޟ#dBv8M2h DW-4_Q,<]=J\B 7xx#G"P܏'~ "׌Aѳ+pj4^;6bA@i\<H`i`J$H$D"A=YP1"x!Pĉ?@`1:؝-/]44 yk#hhO VK(p>mLnPJiz@Zձ!2|\o+ɟ\GZX]^C2v<;g^s7J-DRUʻv? mB^=@N3KX}&Q@;ba{5z"bKpL5O6q-"㐃o[[ޅh~c X c!xE&nC@E@(?=Rp෵@#xW5+rld@ (ccigCG  6LL%HYQ(Nx2cۏ/ku8*&<~V=9'E[-Q;,q0wi_k@wNJ3SSwCZ*4!o>GE|>n1=~F2s =P4*H](l7~3Q1E9k%]wc="W@n3AQp.HP"H$D=Yw,PDGyʛ Y~>swHV@;C P'e`wx@  àe~?Rp&h&`-QVMJ0g@K8nMs%pT smcLɟZ5M/2/11gh @rn} 8KOpa>M vy~=H4#>DR"IІ8wl8+Co |9h,NUrϙ\}5w!#J?.1%W%KZ<њ 0' gp_ATx `nLOyOŞAZ,giݳ!n߹&\~CBDmn_\ t5A^Vj!DCi]{~AQ.Pݲk [RX>6LݩHKɕ5F ztJ7i*ڎ!)P"vŤ%H$D"i2cQ5jumh񮁓?3JŀVŒeZ[Le0نeAYa$:/e$L0mNr}$sFfv2h}TK@ů iiPd d!%O(`SG7/Jn ^sϞ>3.aM?_IO"4"W;?N*61h_[dn<`6y Mq`K?@0v8j$Zed FG|( :?OR|Kpnۙ;j b+b Dk}$ĝǎqcIZYs ,k+lwq.N c@u)^gZ#8c6TČX_\[ȯLD^| dUE@k@Q0Z)\I.k  AqR@d}^" \f7<6jճ A#r bͮ TBJD$:Ԇ8w­)g%nU@ğxGq;Z@[ڄXOAy,7Q/@h"kMP"D"H$ ZQGgTW`yxhe1cB+K-Fve?,n7v[Ac@X 8AHز N9~~E{@%60L.#]C+MuCCGavh24bm^^{㴳πp1Nj"ti ^ `v|;raTQ^Ԉ'݃ M\\ʡ?M6TL@u$A=gdn_5sp,j6U1IVh+|/%*g(!+H $D",J8m@&SX!z1?xV1{s}ʫ) @A6}t0 R7^V`q- h " gd^Yq =!Cqv{ fϐQeeV*n|D;90G;ӟg p' 4| xaM$o_=AWߙ|@QroB08=w/KN_^̎]%kK==**Bݶ{E)P BaEA7΅akC0)^)mE[\_53]>Vu䙥96u@5ܯ.5ʥ_'kiCi;/# oes#TJĞ?JxDwh^%uj~LJ6-uTr Lw =7\1 `IDO'A~4GS4D"<D"Hl,۲g؁l] 4B,auޱ{QBvdEj hNq0e`->He' ;w(.CQHk􁾂ȺHg^b{bP(u Z'hK.g~z-C%C6n9_QT%|+Xܽ}s"pP1N g6H@g{ zf] 6Kv,řbCE; H`$G@x^kشȯlM2ʂGJT*ڃ}^<wa|BqFCϜx]|{!ձ ''5 E* Pvl]f^KҴn6K$͢6BUB)9shKiiqsfFesԇwǩx-=4PO<ߦ|xrF<$%D"HPOf^pu/_bz~#:JʒaBBlm/1JF'buc${vYG^5HyhǂU/uFg`̺46 +e>VQcEph'[۞~ğ+]ml#.۹&7|\  㴶~lè bb;O(c\7Q3njBifÚCdWi =~}CbJ pNԊ@wd< ƑX**"0SpJM nNk@3ט?-2'ֻ;4 mXaM6:hVhڜ?(сH@j5{6kba*5\Dǣ1&{I;z/S @h촦O HpD"H$!1ĚLOzeE5ώwObKP+P [[Ř!(<4BH҃"g{G/+jA\+0FMbOwmc>D.. HtTs ] ԀX@!w9NN/qm@fGI(~g p-c RzďšNT߇R-kӚ|/=Js?7=(}\D+bSUĵQ 3HiPߏK~V0!<:Mwg1σRӄs uY@\+Pi4~sFnKlAwM=by1?d.1: qbCF63Hy5wWyTRȍ- ؑkVLUACUşKh BD(/R/(i7AbiИ^uyFh<%|+%M%IJ$D"(fV,1J~,>{`w%KKHY=xY#+%_} mQR…iXm04ۆBw֜[k ,{o1s%rů`J@@'W:Q>nm*ҷ )9Z-@AUse#CrA0 g{ ?}C3=~!L_DDG 90HE$緐 A s_$/)o!錑|f!??k+<@>hc5b)h yCQ W֠*(5@^@ a!5y,x!M,H)Ne 6 ?!O\ۄx-/ZKD;yYnY+v66(V QP0bfRWT+kqC4u.IsmVs%gjD ѰznK$%D"HЌ92_QBvȩ:FQ/2{~& Y׌R$rsʆepWW0'շ _^eӧ3S˟Ik+K[ ŝ2ˡ^Acf |3Gz Hǒ$B]^a Bх92C[}\kBYJ(ƷTZg2?%l'oK'HX rW# (,XI/H$~^'qOo-%POrU'v"6QuFx 4+m7о7vn^bg{)ϋ?}=4 <z3~?DVV(~M}^tkAHi*i-q@EiB6+xUB~r6Fe1v|`1`>R+]D!4H8fĄbPۥ . JIJ=\Rq:e'&'H@D"H$Ets^f׶"^iS8v6Ҝm_К!,)o#`2P==;Jvl[G TA Y0 O4E`l"WO-Ț#ӽu*)(of[7S^3n _@W:nN Lv8 s CY|?8aF6"5mH$2|PD #aB6i#KWn m.P;,1U7׊hbBĸQZLXVPp^cYRR։rjdYwo}Ծ#86NN=a4#5si>3OChI p _BKR<*A.] л(QW4 5Օ+*8#7Ѩ+DD"H\:={>60Yս [u,0= sbNחi}wY) ًKd,Q4Nqd91Hy=6:lyUXY LWœ_CNt1 ERIP=7c&";kڍ.]c!&yliPKOO Hou3 ~Z{9[&He( >TYb>cW_?lq.`B[@$C@\6Ji{ٖ&f5KqA3@Y$7Dy8"vuU6J %y^0o~AD۰ y| 22X"H,4 =h5iI tW׶x]/ǀQ;I1NmY~, E_2!H@jX|O h(sBWwc?nۋ5z* QT5j[OJHIH$Db3d^k˰5ػŜbaN"Ƃ_ t8<03-C#V1V4G v ŔY=?}`D(l[7?`I"p-n~cs<~L"xQz=\EZC+/x%r5T5r*"<q.HP"H$Dd^hA@U XeTm{7̿L1#.8x>'3NA*dOA@'Nm.9B[g>)Nօt43Uiv֕׽X/˲J >%^7/"1cv9"LW`: \@Df>ux vh^^8?/;"F{۶g^y<׷T]ǁ}l3%Hi}ZE"Px׊;goLPJ 0 \WG@E,ʶ\K8OX(~]m#ƋUU1 <KP+*f@s6K,I=<йfa2Fp4x)}]ڵ]>F:4/4Q,tM3|M? 2* y,a~B^}v(~P4@őD" @D"H$4 @!sr š=sfgKpѩXz޸BwN l’?z P*Nvv:~rx GmG@۱K09&+1~ qd&#㭍1n@n)K8{> "`|R@¶\-c!S')r㓴 @^ncsH8O:5K6@$rxϠPi]]2Fk1#mB^{s};*[ Ä:qTbQ)˕JW-2R7g!_Uݳ7\45piʁSwI,jدӜAx صk56Z?7 *56WWTu/p{?@zK @|QVq*@$%(H$'Z7BBw+^V`'0 EGA3 ã\*'r9Jvbz<`΀c|Po e N@Q8`,p]^[4]1E2 (|&w4cH$~"U LiG qPtQT"Pc붣Ppwwlۭ&((=ZCqszOcZpu-I^0Z{q*E' [P'u`bzy.wϒ^XJ<8a QhmC:BGr es9s\Ü^|JALqqmx\:]릻[:ztΝ(O"=PݵE(Uc,v Cs Q`2U w"ɦ#Q@@CêH*"L" A=CEh'SX ִ> ;,5! r8^~QzAk[<2`;p#0R;Nq=k,u۲oe~i4HNA{(ZB%$%D"L(5o{UTETksfv=l谡FGtҠ pC0?t|sˠi  A;mm׶NQoKJ,R\ %f%HeYcZr0Ȇp#gyjE }%;ǜkԕ b,Y5R3J %VeJ%ʃ\qiFK-A@^1AQ1[JH$?WNDdݷZnNN 9+X0xye؀ %,KppM{7{}u#Oՙ<uvUwppN="2ތo~H9A'/(Jh>4I~v,$ `&bٜ|׾: :5  kЭ\( LXoiV^+`b}LpÞEzE)@۷zU3BޫP Dž2MB ֪#ThD9] @*@"H"H$:mc^t @3ٌ4JȀ%Od Aa1w*JBr;]hu.kW대WWD]38=8FÍk1  ry. ;s+}GX?Ł /i+!mkqD> sW)NL E0F/ҕOaAY}kB[nsIv:w(PdA *$}`BVFVۧOmwq|ݵջd]8$0['L6Fڃ S­2O87A+UqASXG{ E@5rH$H$D"^˛[GSv ɦ9J!3ʚ&MMܑ)أc3, f`y A{E9rEwKa#cy cnᾳ9A -~'si8TZ(â;~L/Vrf-Yc '_>tl/ǏH$'KPή_&O/=Iv+# ޏ]%؝w},+ U!a, ??'G8Nㄨ\Eua׏iqP3EUk짆8Auck(w{+X/BW՚&N@R{;,oJnͤ7wfg&,j*H*֮qV5/ӻ{U& ZE"(E"H$h߹r~A>4V*pL,%ݟ"k%eB Kk5@0Nꎄ"}%9.σAͫ/2ǀC6#Q(gW٢1Ms^0W0`I~o$3>ǏH$ Mӡ&Bj > $[";e' ʼn?Ƃ5@ ɯ}bzg#eN(2pMY=x흣F$ W>3Mml\Oc .k׷'Xwo=Q8٭=mSR'ґk8ETJ&|S(H]\z?S!S7aWG4G@G"H"H$4J[Gbb`{X'd~u9y l( {Ix 5Xab9Q]WhdC,Ho'*˳KǮ27kɚğ= @NLρo!|H>H ˆU A[~4ƄԒo@ ,bWjCIIB+ܓk韟P)vp#`}?": )AW̿^x`#/^mHMD_g24Z1!U0@Ӊ9OupP_pԞZHU)P$P$D"o_X3 v(䃔RҢ9ƙb^퐼F=pIQkZ?-pAK+@"k:M,cR;o_~H͕BRX 7/sj ,ۿd׋O=cs73fny|sC,ghޯO}8 ڪרF:ZPXTd7D"PϬz#]t(-"H5iH$DDѵsqgO1 "х&-6/`?6GJ6C8esOyJ ( 8 쌭ff .t@LZ U$o ~*E(#hHqMȦ ƂAAD6s7/u~Km F$#W>Bj@sƄ"Qկ`f}rFh~(:oF`z{<'sk~U(`'΅;wqL"nn,`MsG/ b+ǐ ۩|R:l9_eav#5ザ]ݻos.GÝ)fՅVt/+xL]7/Pğ=^+&V v[L5[DP$D"2oj%{!laB(Ky?NGY;3sҷ$/퐼REOBqq"cݛC}TC '@Ƈ+]pbFe#֯m:V>QHҰj2+I{ɨ=Q5@UO < QO|0/H$W14WA%p"$d˿KiH Wo~{ nڨ¥kED-Ǫ/A :7&s6~E(P՗?,>nԍ{Ok܇{8 EVP FoPAg+㑧2t "=KX*5V p;*c`0-;8|z]߅|8!>2$y>e+X f׵ܼrfGsfȭ7_t4H)&(ƨ=|[ @Ny2t <lK$ @9 2!t'{2e;o|Т;ɫ~(3]\|7p2\ٹwc*cNnr8NGjvuD8^.4~Bl  _r :`AmaML q5F;@@:,uŽW瓘`_.w GYTW^-3/ż!C京~a( ?Bbsa.dRX) |2jH( He04^8 qRx^ܞFkn.PB=MphLB?FBn r1^ ":{Ԕ- *%`5ҽP$P$D"{/ecr* {4[/ lo,m7oNʱkdYa/1-+HN!5'GI3qBP Y Is 0ӭ[|P Roك ұȍ#C8+!y "{`] j]̨[Vnhn[7ٺ|Nk&G * Ql .4/֘7nķx$i(qIh " "q~,E  n|Q&PceX>ƹ ׆sCk[A nN]X|驟ڧNzS*`UH[{,a1c|1ȈC (J(>hrh0V s)ݭkDHyʵ\iyzk/MR'XUy^7GJ!hFz{"@S^=6 Ъ*/@G4I"H"H$|+'PU ,3Ewg~m't;)gH&"kZ+w-w;d{kkːb90\ x?QN n2)P0>[rk>Pm@֑H$UwtuaAoT+ݾc] _ &,Qg!Ȝ ~B e00 YN( jUF ijDsY z--Y?13jKe^bg}Y{ϛ=@PsvY ibGy 1tWzɊ2fQhX$6PdJ vC\2M$I&BHH$H$D"& W@IR4Ɏ}$d}COq*s 'Hm γ[̕.鷮an xsؕu>Ş83]-Ӥu/x5R#$ֽI )pnUaP23BRj]o8YDD"H%1?O#M5)Zh"6EU=3~zd$uwt0+QX\aWJuҟ1 *>2]=B1.ǀ1 f' DEl.~(\铜a";C/nC1yDGgF>:0s*2~Zߦ533WhZM%G1S&7 \oH$i#$#nH2fPs’É,%1^qeUBqU| " G[W~6o->=̅NO$Q|izE +$FRPIWn6, ] *N\YW6?,ZIi乌AٴX Li6S\<< ?9Xy&M|Ox?P ݾU Q(D(D"ȃK7?m8:~4ebMU``FOm'9ڡeTq0;n1^''Hh&Z]ɰ ?2@\ !˜Н O|NvN߂aN@JV=B`smnx1P.2[4g frZsͦ57f3nܼ @sKD"q'A!V$$!>S ͇aė}[G@n_L\U'ϝpAc u:\~ lSQJ~uBG33Ėb`Dlb ,on\xak/ӸY s3 `d 仵+_^y᮵sggo1deS^r XS^ʔz}l~{aHjF :VOhs\$ox"H$LC/K@q"if A/1t; nJrY>Ђ; eޚKsKW1WWR_ ^38a(î48qZa-R=tB2 E.0ĦWYܹ4}sL.'r n~wG.sA[')H Dn^B. D"&SPO'5\?bLbqN'1x#вI>? ̵,Xy*P:]!/ƩtDAn0XQ^R7gKlӒ0Ӵ 135±0&(Hly>74Q&Q fHlz]kVbZjx8X@' !Be|)U@*ܶZo~1W'=ZE"x"H$1O8yj@PO^e Á[JrX^ɰ@(B8.*)BMWAV4;BW(mx/5m$АqRq .s 1 \".88~Y&dD77a ՏOpFcަ9W$5sw&) I@<[O.\l|F"cHI\BY8 @ʁUOT]*#5mG7#Ǹ\CDGWP#_{yw>2KsԱ{z!v:ͭLºX: @ibp9DzIenƎLSR_?5DݾQ٪Pb$!I#e @-,΍`moj x8DԅǪ2"i( $BiIՏ֊."}CoD"HA`4ßf'i:ON>?ݶ n3O=Z2yz@ʘdBI^E >Zxd2A 4cmh$4hCNsSxa g<}&k\i[.KL?YC iD޵\ k߸[N|G"n dy]U4Mcǟ3Icqk-,lnnl&cDAn=` NFŽ0[0Rfg,FtFpt amBb((/Ue~F93?U-P}pxm`z* L5Xc6zGxP$@H$D8TWA$kCm@(f/ @\ȓr G`)}1ȷ J!(a W7+{>8y9Hݜ~[xgF}v:2 Ni &~ `&b Ϸ7o,C I).)ta.l?ԍn (@?#H~1BƋ&\AP4쏫0R> wڨ41Q JnPPcPy>yX`l m(9n>5m(O?^>LE*MgmXJ ˋ% `-cUq}Dc}gHDu簇2uI ^,k[W{ +#!hcI#<EʺF,.ZBw|ZwjY]=}/;i_> V RXU v_P$@H$DHVQ5ߩ̤?#;,B*3xMl#̓q,+UP2NHTǼ'\1tcU?lEv#S=9O";y7@ D# :8PȾ2ruHRb̶6tyXAoyMPUٌ1"Hdz(rn/1nԏ)] ,qS#Չ7Ʒ)|Ƿ"87sI̫%/azESЇa R6 W3v4 ֻVcQȨkmّb~{p9s_cP9a&l ;)Ba(" \,a(ppe8 j5,KpT_YTн r0lP$@H$Df(g@?#[, (%ZW1t nr;89wy'X,N xBX2 wMnG\buGL[xNDjA H)-aOCp_ڀꄟRI sɏ @H|.]ҡ7^I-7_ڪ lH$Bu G B#1h`>>ys?/t |X02}~H'x;>k̵>8S@F")0YAae:L}Sh4dy2?c5a !Ε6wnm%# VAUWXqkK9RׁTs}Px*6!/Z*])UCzX^DD"HYOtӲ/P6y. AߌNBg;K8Y?LNAթcy, ȍ>r>F9;9ᅑ><]ipɇp*N^ ,!yruJ $t>}%dsapAq(%gE~Oۜ#*v|G"HP xV5.Ռx"nƟX]5RBwr @Ղ\U#CHZxx6+|6ӝ?+~K$fr[m۝kcVΪB3,#`sŽj\iyԻuc7N|K 7ґji# kEë'ոmG z LUc3] B^$CeR-!5ZE".D" wn+"( :kG2׆(5{AQÁa?p2> r2+ FD:9rCn#ҳȠ`.EC3#ǞG0K ^׌E=3GQ Р <0CK ;6)8 snKz]غ6#&◑~ڻzs:QFfG>i6j\->n2?ϛ)nN].DVh6,豺hkqBUxH)P"HUj(Tӹ# @HKD"G8p "* SE|FEP5JYkƈhYVXۧ\2ɀId&܊%aJRH8utr؀fCfa.H5LotV]/)C*r-<}ϧ벼 %2:* q]ox9^y0wUڄnw-`Xs(dI/JǿHG H$D>* xWVP,PMcϤ/vO׆ _^`sMzCw's;?,,5$p[d-`Z$z+A (x+˲W?3_d6ؼ&3s͙V˒lQsXbu7fwlZ;źR=@D*$Ƴկw} # 376 P2v΀{9_a䇀_E?(yO #t+Eyr4{ݧf;f^}Yo]hi8!YuSlnдn21|n֝||qwCC AjzZ0>;}/uв'\*VZRs~ >NY8p[P:cfgeH K,C(q@)NܙP@?~"G^Bc N݌L(!O ($ rYZ֤_ ŏK^jhU0.6Y9C=>8.U㰾~{?v|c_Pś-.l"cUHDGlgc`e ]ɺx@uCUoDP$D"{<i* տ[,'JăsĹoM_EF @TQD]JhwwJpg <X9@{Z#L^[X j0C{:;0pXuV=߮#ԣ5趷IcH˓KEs1 xڇ[/^W/m5Ԫ; 6>Pt@c|H$ab<ash7Û7& rs" ls'9 v<&n<&"F=t08{vm~H[c#C>ܯ?}sV/@\.x^ZTO<Cor8|8R .*D(D H$D"ADmRR?ЏA?AixAM48CAPgҷAۣ6SB @Y$;Ds䦸7@buǁ{8Y4d;kCggPU c@x;u?ş^Tnlٸ2O gQ#`@Dݺ " c&-*Nԋ^^e*T c)| jGWgǘ@bܱ U M~[mQL?L3v9\=\`*ݫ-r+1Z&X@8w]nq"hv@h-"H"H$3 TPhtW?Rk"ipvܭ)0 36{Htw2]:Bk yƖ@=4[)˾ȣeO՟Ci YI}C^= r]yZ~y+Ga*t;` )s66’a?b秀Lt/+`Uq?CDtT8;v) xp9 |8Pa?/7DP$D" 8O5Ž~ ߒGտjtu9%jF3\}ɫ8 UZQ;b֦m^'8|dU𓵀К6[8&s+NCa'ؕE1"7a#`E'ͮ(b,ISi\~iqT[]X!T 7J*pY`ďH$?֏g A)La]2ZP$ @0f z&|\D,co=>p8o\:)?xyP ˆQDT?ԉgx{8vzoMhcc |Ej 0sW:/A7CWS?"UD"H3!YZ)+]V#HlN?I9D]yBoJ^ªggh6L(6)z9`XZ\15 W[ ՊKa1{BGU}yغ7Ac7 :p3?9D#vTNgCEk˜]ͻ{w"X{z/7Mg6楛/n2\vs~p_Vx7 %vKD H$D")pXG Lv:޼dJYĀ$.\(ީUE&V42= ` ƏH$  W6&d CON>F@kmj33w=AEDw>Ç]ċ]cA>P}} f2DAݼuOO}l{(|~wrֶ7&{(pHq}ߐE"QD"H$, r BO/MO-ԛ!Jȣ^HB!InɭU, (:jH茡xt{(`zVA'BpPjѺ ;fd8[ 3VA6]秠a.|EwyIgIÎşD17C;SB >_RƋrG9*\)`#2Of#{gdqߗާ{z )R&%! />8LI7NdG +$ :x@J ˤ$.!b3{*?222^PL&22+ʪ7>otAĸz#P(" r1Z[[O LJޕ!ȡ;}6oMX9`Ƌ}}LRh+?s 8ȚTLC2T,c   cUszQ(@]v2H3*d06PV Wݼ~6hO~ LG`'a}bSQq}|N9G1٧ծwu{4], 9 "2HP"H$!NV?YUOZRPU8ޓX /][`0n8AF@ZCưaFn̰A};Q<[Y-so.I0*NJ8Tag a<!`@%6[RTEŮݼέ-:39[͎1 KT 5 sC@+-4*x(B<$`|BPlL$n((?:#[*EAF7;g@cO.؟DƏ<&vL㚫vvfΐzn1r=8vtCk~-綀GN}"r/z KLj%: MFK$H$Dh` XR, ܱiϨ\mA#a9[ 9\s+6~_4[f_se @e v}=9ϛ$:?=}  2,l[lo 2GX?/쒽] S؞ٸ-Lͼƨi(X0XzNwc -՚bU U:1NŗH$mGg{ H1"_EGAZ Y~LgF8i SSECPs?g?ndki hig87kM/")WLx6}%//~>D"H$YTO-<,:#rZ$X_<z[3je?rvn;iqU>qsuH-̭C _{GЮj {[,KWaQUDd0 %xv ."#6p577Zߢ-t+{]n fD1* X2ˇpg.|p#aC'lQE5Jn;ݠk ">>^@"=hskEaE@T\ 8WOXG9lcZzTkyp4>=Gxsκ@8J?MgɖHߘt D"8BT[A! bA]BmɏQ$`#Gh omsekEPUAͬM @]V0ڌ?{.4@Yy<'Ⱦ7t',H |y_)CR:hpX { m2\1 ʘmz)XB!A[o/2(#K#'v9=V_35tuPLT.nSjIh#D*Jx ^ ;7HpKF np<=dĻ[^AOSa9|9"H%@5ROF'S"FTj_Tn~PGt_o={Uwq}˲d [~ Gޜo&'H$pD"HX+]PjdJM]uT+{`S\YOF4dw}Xk|UQ1>NV(AƠo3vo8۩bl!.շ<&{It.a@fJ awi^xAH撅ٹ]'c? #ڥZ#bh{cn};uzfh(mʵD&TTMF؉j,JVNJ\Ʃݿ7j QvɁ-`.D"w7i." <(흇A+>.x_9 z9x \s\#fx=k>'r(qq4OxN7ϝf{ܾpÝsm_]2`ӧY"H.D"8:Q]2pYBTQժw@a!@_q|ƪ=9¼>"{r>}]MZ"QM{;µ%vm%o}GA EUBh;Gx 3ȂHD"q?:B5ρ! ,hȶ /3w3H7M6uY35NwE}s^ 9seA!h{zJ$IJ$DCuhSm@X>Ĩ~,mĖ;b#7&zu ;yiA>99E.mpzf@QFC/ۏS @F'dTaGMd+tA#?a< [c`a`8AFg<{v( \>\VxPz?v AolO,J)Vg/23\ʥ7VѪp(nZ*']?/A{";)>P"8B?2 pQ/(O )X0fp @]?fP##[9U뷫 a/'C= 'T"H1D"6Cg%_ @u?UeK~p B;WP\oEjPЕ]Z $SOvP>6(8=+dgǴ y#5x5Jjx=kW+pCb.`/S?@]{$&$pN$Gnq! tcϛ$5yX0r81L=Ou9CslBLc+Ꮿ~??0ԉ[-skUuz03_Gxw2N)ODǂȑ1sm P#2h7"l!LzfaKί/xQK"ފLâ(q}T J7oRTAPB⡱aԥ@.7=-`׉D\p /,-r2|%yW㑊ZQ7vj ]}L9ŪS85;@U( (ra<a?Pntl"3VN1L-_1,%Ń-bw  a 764cQ`W >{;=.ҷ6~`O(>@ly>Z0cD1nlEWНiw Zmձd'' Οb7qH]ꃢucK'RۨNō Њ(t WqOrd';`(M']@mo"5w;fz!~m=CkĪi\fJǁ9@AL;4N$$%D"q7@X>xT+:N\ Zˎ"69 [oW>8Ntncm!c! a7 2;A  VΘƟ]W3xbo-3X,(d 4[ly&mC|`-4\'}H6տ-Q|hPGvٝ Dݥݹ-67lNmiw @Mڕ[{-y)\5sДSG$~?LQcXjh\vS|D"qp'2=oV1&3CĎyĩ9|M/< H- w~s'DrH$1! Г#b__N_#2x|H&bbO"Q{r["nfC鋠], Xj`u#XTh EQƩ9y-AZ!wi|e Z0^!{uy٬c?[1!9"n۳,|:za(BϠ]@q @ su/ }d+'XJPbx=;tI-B6!Tugf P 3( ![ވv0nH[ά>=,E!  XEjL(FeGM$}\ۤ =s Az'.A53w)É?c v@kZ!hH$֏_[XuXa~"9H ^[D9;gm#hp9 \HOD"HP"H$G `D $C>K A?6Q6GWo树U_&ye˞QaKYD/pnUP:*tzL@y#34rNlI BI6}C ƄU%j!hX]ך2ϲl@20~Pe` Wvu+,,P"H1)ԇQyיYGgJK,Vu'wlk,Y-$`䮿ؖ9,bUBD) o ${Q'b턈^Q,H"n>p'w'Ym& )Y@ l'DO%bnϹE:UYn0=c&pp݉# q4?HJ9kiL#8PL5u~c_pP /D"\%D"q!j}A+ELFD#sW9@kBҕIᣥ 83WYhex,t6NtG8qzr;]_95Q#ʓdP ʊC}߸͡:'ķDf}9/a PW_(`t}]jc(ֆnb7vEnzĚַ oNR9'XνGa@g( Z*lՈ@ձ{b+ % S.Fuc]St'J$ ~Uef:3U@󔈢V\s_&ʟfXVzQ`n ajr-߸c}k[{.KeKMkbQGrPG'^eua]r̉>=c%6Pm(NwKFe84? 5n^333 @ uvGu\{C4Mϴ؏/׿՞b~NT`rվzҕL/khxD`/=DheA# ƩF]"DXwӻt;}m1CO~_k,jD_z2"EAADPӓ%H$ D"H$ 8 ,dPqD 4ID"+{TDG \V_!@@(O,T)*w;րH`L x@#P"Xv&b@D@ŕMY{;xzsLES?B%_[#u(X0֯l-.^w30t;7RmH_òB1WFǬ r-(1_/){bo| 2nL?K;#>(,4܀s7rTqV/։F1 r3j5VZc?oHPF牞uqAds%\GE/>s(]`>DPfi8A#pKCTJ(}f~Mq{:5jNXr8%xأ#DC[ [(+, \z$~?H$ Au 1+^bL.Q̟_Ke-a%n Z}ժx/|_Eq/ז Q {gs@ 0ܰ'ڠcW\/gMX83s5l־u; & ЖiVr-`@vszs}$^ ]{fggK랦P\uɻ~C\Ypk/kfsݜLASA sWN:d?X"NUPD+jbGw3a5/bv'a-<01/sg"P,z1ZQ>NMߺ1a;S&pbۯ9r!w00H$-}!D"HO̢Њ,5fp|H@ rߏFX=R!_?xPk5D?~8b(7hXfOc?˫4\ a8Fh2f9fm@ 7`gL|~;tۢP~lhe@2~kcbۺrpFR<>}lkrWUB/]^AWk-Ѵd 1B.n̟$.GW "nT,mu۽~Ex' x8$>6vMD"qp})%gkC@miş9hP7\[glq"08a/%DJ$DbZ P G?R$ ʡ11>집EX' }+!!])/ªo6E[p1i0kOr (~:)@(6ꚭ;P0v^\/h&u婼qM(\>2 ᮡ `}m|kM"PԱ@Y, swcnn?x3 ` !7~)ʴF sxX_£VA*$DeԈc#H$*]8a㮍Gi~Œ98+vvs1M}^aml/ci DpZz$DH$Db@W%Poʌ@,HEPqsi U A*^ 8)Fݰ0d[] ޻0FA]5(*>!$,9]VW7To!i3oGn  4JYgUW ۤ(Xw3 gc2bGPqew>ť˗vj9QEdhFOx""e>Nz!p2Od!88aNl ny. H"HL#>T{+r`"5G85uܣ5K5T܉hr@WvZ7|մ3ZqB~rLu-4k^z$DJ$DE^D_ɗ}9PoEUF!1M(Jmmʾxɉs!jcѲl!@=à_58u1>ZLX2+ ju`$t1V1CY{#1ȭXIAl)<16yP`&lL)? .\(]uK Vvfdb~eE@mKgO\|GJ*ӿ0{&\[x`jA/GBe'J$}}g~=qXvsg1t}V":d=ߠrMM|<#[ȇAOOD"H1D"6(" a*5TNpĠֆBmxюBT@8NC^횿o H/>|Ǿ 0^g,>{? c-\/Ʊf*ÑQ( B._NAqv=;ۓ@x5?\!;OW :72OeCߘ3z"5sfɕPTb&L$jhxpU[j h(JES*7a} ⒂졚%D<  ҾpDP!D*ywIJ-~9+x.WN15o'L"H$(H$ &"q UhV]q}s:T/ U ~Z|ӗ鴲 ji`44[w gGNZA)!),7q"#(]I?aN +ONXaA[ĂZq3|@,NSS(20wBK\ m\lo@0<γvy PMK_L"Rh5Y4fqP"HwI͟ޏJDLZ >c?Ư/x6NH$xDLKs\ո-mQ:a1yzl4BUTW羭>vK~*]o뉷ЅQwOeV@ `S&H$R D"Hܟ,AwcNsLZDgyU}_o-PSm.P "AQO?qK--r)°o2-~SbVn3Y: s9 E]*^1, A W- ,h4۷^ڝfl)(ODiknm?xn U"Vs: [hԧV$4npn'S~֌R&H$o=m(Up#dNLoc1 I5M9_GߺE`#_*"_)H$wI H$Jty1"ŻR1TY"!bpyLQ5W4\$eCD!Dg1* (EUR*D,S2oB7.syjՙS{gKs^ƾpH(R$Eʊfp7 :=h41R %"P";@{[y&+##Ndd<~ ?Bfeefeս_~Ӏk gԛ0n7np8\8Ӌ?۴ք.\̇-| 89M6>^qZ2o ~wi % PL,+1/Xң:7{Z4y~r}xCU9QB*$@u8,JRADH(d8E~8±- &_>lbYn27sl2+*@:yH^*J @JRy -"wއ ]U؟dcxĪ?b*$u5%mζ$u(7y$H@CIܾI F(U._A얬٧[*(|O6M{1pP9]gq8R^y6C-l%O`gʥxfӶf).O1">}Bhh] DDŸtb'Me69DSJxX,&&Q:/:(`%bu*dI8Z3rKX=LoTRy"3"cn/ q6>`lZWLtߊhsiI=טQy;iĹex=XR˘e1 `YQ#&Mq1gS~aMmmo-RxStq mg/]^*J @JRy'# 0EJYc$5n |TLbJDz}*&mĺ0~' >ZC+ f/ t'ٹ{89p ӴB3R6V9 wܻDapqTB#_vptoݲ0,,F=-j/L71hFHc|=V-#e8*W/gac4׷vm/4!%XdQޛNU:Q$g(\~H3Ϩ&bP*=FlJ3-GID@2k" y4";wI0 ?bJe$Å1*p ؇l1EbbӼS#G^8MX򆢈oʢl1žHfǩFe{PRT*UT*;q# KɊ@IE!}L\b&"е'a.!ՁD,7O:^ltwM,4FyPxOB[\s~0p+n^>a 5;\#8/w׶FFsжBkwmT *H)1̛0] ;V2Ə8N;`'>& xW~:G럦7WѼФ"Ó3W0!4 @M"po XFs'OOBbr/D)9,)"C dX?hJe$. 0a8XLbYM[my25#lэ\W ucܼ'K3lcBJuVT*UT*;q pB@zMPDd}H$? Ѭ"m@qMlqŒM#tàX cH rv~x.v3O<:g4jV@"и^c@m뫜x*>V˻rOcGp(xꁦOEӍ"ӰcgnGN>+0 fK$'X˞H;+ ~,B/]d>[fiǞHMϨqܵ4}-Oʥ!,cYf;GeIKEe~ }BOwZWM #M'طpa00"t',WT޹4 ) p ؓ `%S^* yՔEr([e L8,'E`ƶ!Y @*Jez *Jr[!n? H1q85qB2XV$ i`u )v1"]뮉9GI*5?J/(?jPK[5{q W/\ \ \Kp]z.F gZGMm.lBroG,o~s!m$ugNp|oI3sgSv$2:/CB3J!pqK y{T\bA~$Qa;׿q^jG>}Ǚ>/ X泹F'0 w6WPh*"RIER+spPcL-S.B{I1}R X1w4BXHƂHhM!m@S*;H|u"2Zdxks&2L9X)ߟdΫqgDzXCi6_pΧ2/l+/GwRT*[C/ޅJR,GAǐ&iswE"}"Q Rb|4p'Ӻbաa*`)[q0fO=zHO O+ٿv{<~̐|'ttҙ09fSa0pӍu|p}KTʠLX y[[c-x 4#n뫰Y[#ↀ !a #–8 ?'s&Ix_O&!PSȟ?~v;5ls݇/ J?)vH]Hb-ͧmCb,a9^̹05>αDl04sUWY*;?\(,& G.ne[ĭCĴye/w? f3:T*J*Je v+#( 6]0fW줱+bx\p}?YF8k8U [&UBK7?o?;PB(4lz:]wL7z!hXoy]M\a*ṗ}#a"`4Z8/P{f0tVacTB D8+ARDr̷Ύc2vԱ1[LbcjKl@l!=kE$f2{="Hùe?q'#Ly`X?J$=< (:yfx\Y"z[ɻ+su(k |[<|wg(gV@J]T*ʭRKzfH żўK tR>l^)EmA@ZI̧BXi;҅]E&vi6j8 EXp˳س<IE Sa>L@i BG?¢qB&I"XAȊ>>=Pۏ .69t]1#@}0(TɚL9 ~D ?6wdiF@Pti~﹥{c]z -qqw *k  sL@u:|["f%0 `Zu'ZzgF"X=u^>+;>B5gl#Y!_V)Ǣ)Ż)5 c4۔b-jp( ذ/w e? <}o:T*J*Jc/if$-K\o'=f,ޓC\MW:m;Ɉ7eLH\d_upMXj^h܃rnvknŗ_z*a<@3u6a>sx?w4l5X]4#Rl"bʣ+ vx,Rrv9q۷h9I&ݾh]Eo Yg>[߾4dQ7X;%%Zo1SRN!PSf]͕@ARŧogP3YE.${an5mˀ?Jז_VW/f lBFn״ lV/7\f*&:T*JuWT*;,de(X@^5ic t5־и^,oҒ'3q?ljr*dI lDo^Z[jU@UDZ|daqlch ֯4|ڰǞp 81R,!+,i}r;RcSTc-d"[-_8?q+3?m84ufQxG]@˝ϧMPYEC +IJS^\KpĜ+6&Q&~HvsY \ǣ5>PRy2՟`y1l1~ٌ-p[Gś lL>? 7RT*UT*#n<@/hXi pbxndЯ'Kh2Uc-$I}Pr&DFD,v<Nl>gnONsCp"X+(%"@{& GG{1n4_ea.JV?H&)^}"/F4>럑Ҍ'!/?}v~u(Bhw/\1+Z`+&~yyj싼d CRRQKc=+K@ 4}{y\LXFX6gRy1GGSu=L _@^=l- 7_C]fĕB>r-${\'Y طRTT*JuWT*zy NL2V@f4#ECI;f[7JB<1TMjɬ'.k e>0( *{q}0@?N9pd7`o%м߂K |BG11o [}9??;=呶l?ع{"P V?06̃4t B9ObޖD+LV$hJ:GYɺmËWiێQo$iR˟F8SԆPs=u; TUh>bD<<Bn(~~h/kcd,-9Q >CXwДZǹR}8f_1@wdD 1r#azL9K}mJ`)P_>=[#{`/k:T*J*Jrv$MpTQHc8:bݿ僘u(cӧ Pk5d- `E.g>jz(G]?%sFGDEwu+G0YE Bׁl*"!(Aݬa ww<= [FJrv"-Gmk\tѨ#.X4ܾ)"k\sxB6; O-Vh@7K<’u6 iD jÚ]YtH B'6?ƕ|j,5zOf4SnXhZ Beο]S-ZݽW걓q>粗= ˂Kh,4kǃ@x}w`4n5B 3׹r2q,|!h @mC!O(HV?\GX5tٽ]6IGjS0I'5G-}Oj Ja.-'jj i"kOĺnՊoƿwჲN$i@wD{4 o $AC ?}n&̮姮?6mυx}grn;Vv qm=Ip-ϵkio)"Z@/ gW6Kj7Dv| (CźLş|^5nB1s#VT*/bjeD %דZ cKʌ++2B~ X$W*ۉoG1h97?R) G7 @&2?H:y^A*J @JRLR!ƅylbV(Y4YMŠXNC<*6h[1fXn.~n9j")3Dp7?t5zu+G-&#?Tp2 t֋Ak%A w?p} ;;>7^9k:VIE6V-)IJQ|~sff 7A^$V"m-v4L^ua03XǶOEjcZ&Z:`M`c1ג䍀֣ @Jt捀B@~aن85{BnmG RBwY o)GRT JR:T!߼ eTm "yo֚EҘ h -V3Ȩ U{MyL-/ݬtsԭAEw4^C?Ҷ ڭ[8%ecb̓c6 nLO/G1)O'9wM Qp63eMC_*zq @\>ųWݗ^7f (~Lu]0~B"a_1ȀhA.Z1dCd1;Or uqerZTwB(uR^@ݧ}Xu_.dh x/06c|L{%w u؏C~γ9q6MMX1́火7Yz x:[u֨T*jTT*[~DM~hub_GHRT B""B0`~>](bMKb-D7A/.ռ(ԵI9>Cr{[Xp :zZ i #w;]}|<+W:Ξ\z< V?Qiv4 TIϟmi~֍^TgJR@JR,z "x y9ذXDWoxbjܙghsf[4{$mﳁCe K2N+9xqN^G|>aD]t]~f|v,-CQP1BP|wm#b]B^:≟ݍ:gu.]Wϱry%i84&|{}`V6Z|=,-B{!u 7 ~BL nQ b<wqи>l\4k6~k87i4kk[ k=#E iG >i~>?2.=&WN.J2zG3{E Daq?`%Ut gbDJB,vrԸ,I?B>90!D1cJE @|_Tn4~  HZ xnʞ`Ɛ/"{w\^n "iF)*J @JR98prjRnӼ$Zv֏n˒.@ӉlukqsgȻTWɿx|8Y("RVlrg;X;~q+Nr=4#b4BPt2n+ke!X}>®=-^|ngW8s2N_9 9hZOw4QiϷE8?O"Xov$BW/ȗ>{@EUTb;gԃ2qnf,^b~ 1B+YؾTvf(I34V>W6pZtcDuk!V(e`^+ʭc1NEBQ~Q&+l%M ߢc-[ uZ6~ p'`<0DRTRT*^Ђ ^ )bĒߎ!I|㒢xIgCh* bLx"jk&Ђq@*/Njq<+ǚyTwOy81 1NEz4#q!j8&Iqo^C1< aD.N?|C4sT &u)5]K6,+c}+:nBN1\0\ŹpF3ۢO>ShO~R"Sv}#>8NJ@疜.z³Ǡߊ>I"C&˰ 5`W*, ȧ@ۉ_ph넠}N~( o˘Fv1-Aāz_^3CRTRT*8)m }K>}[?p9V5m4f^5j_}2 < H&E*#br~B_N2+ 'Vt˫uvgGtf?.+p]'Hu.u w- O:΍^Ў۝nnp9^\ '5&k E;N @, 秿ؼlY;WYrdb`STv0s{uMƟRԶ'2QV*>,P}:#T*J*J="P=z68h>96DًeZ*.MɄPvb}lo`cޓY˾Rw'"8T@"Y]{{\m(9Y1ȺK|'}쟙ulPE>Xw޿;s`NعgĎ-M-e}s:'|/{1U([t6|wmQqU)4!E!"!FgfO2e7/|wL珹ĝ2C6C~Ny{֒()+B<eG1L|ϴyg @N.f[w=sR<9|hb9аK@0pPrIwlx)Pn&>O|[u]WwofS6`G ":9TwJrsޅJRyw#Ql=%/ IEk9$X,f\3TA|<+a(źK5/KMq~$؈t!?,B׋A}~ݼw ,\~SU";G04f;v5ls:Np \:,uB<^i{|"(M H<D':h#qEp(4?}YF_r׋50|%kzQ r |yc"j3Μ>2+'L+Lryzˆ6/phգy6#iM:F^JrsDc7qD:j,mtrǷǀ ?VgJRPRTn, 1Tw "fq߸!*rW5%6]ˊ7(Yqmsgk k`s\q6Uӎ'[d%"=+G"@;]|L@e纺k`c0be߹{-!.ZJJA]'FpP]¦^Nw}*a/S~4?ɸa27׷v0]KЌf$ g}ccuڜ)'_eEm!>"Xn߂y"1Oy| A8'qy0ec}*w! * LD^Фm :!4+(56P_F(}'(ȉ>t*zm> g{&ri$tW@mFqlj"![n4휢IYN,.}mc>ɧc SAKl]KFpEI1֏q 0T*+}:h'n/!Gc{gDTmeDL~fɰMo?vy3pcJ}+J @JR1C@EO$nt; BY -0!$dnB9o!ox1va|3xS'0 82u/x̝^\ L݁U¾N=/sC&8'ѰzN Azs= QClh!(HDV SqP1Dch8@63}Y8^6m|irnw` 0GyvyV3sK3^B0ߕbDt1 ^PؚDYou֥`S1}̻6"{uK+NXp VT*bƏ QE= ROϷg܆b.@vX_8b|{Di!DbL刢\i~~lpЈYtS;Y &6A2kN1*0YJ~lE6f xhf*7Wn1rfST/Ba*Je;Xad_fƬѿbޜR?u+z8usdr^*T*-DUT*w(®d/YgK1edc׊̢s,{BLKq,0˜˂V['=,&QV˳ÉGc{#\V}iYC~ߝu@.{Qp@"zNϟu=kX {$ x2(Asځ H?qUK8QK4p hD -Ӹ28|H%0w8֜c 1 +=<;(υw!.ug`I57g#U3 b f:!(oe%M_[u ;}Q]?7*v[^p-[ ?Zum.9'p?@R'}"?\OwR:w]T*? AbU F6eD>&D$! ̰&?chX?d yrЖoα[رcs5AՅ_z8}ʨc߽{SutKo.]Ǔ@B*؈hG-D'Ww!], ۆ:0QOj}H_fS"!qG$b?΁7o=VFyo($4PSWU9{e>‰sWQQ&n?islYOrݔ,g{{a-GmbD=&HƺeMź3亰;(bT`[޴\\$XCwV)|/dXMӲ;UҰ*0T*7hুƘhƌt ؝[,M%y>e뉕PH' TW*JuWT*6Wt_| A!-GbœMȉ? ɾN2hby]Q1o~9"'LX "8Ѭ'uo>!ʈ &/l)wށ`r+\5]PP=?u#BPCD Bu+U&G+\CWpJi (]$|"6,LuHrlœ{3W=ҔU@Ú??yijNz,v}q3X5ľЪ>>GF2B qܜ%]+\a[4  c]oO%P#"X|HR@  K@j-Ͽ `!ko.;BMUp/B-[ Jax?~/O;ohlꗁy}+J~ޅJRy{p "F#+r1/ fq9 JF=a"db O;'#5bGV6DlYޕ\^AoQÅ% |G2yk޷ +VƁ~{}{LVP&\ġKɃsFTkqBtH+HO6]/pXJR]U*JoգZ&ccOQ)޳F CkHen|NmICb8 H]@*"dܕ(,w7hϽvP682&pb1#8=ΒǞ:CJdHQ̛!g\NڶʹNuFcxߓd_6Jf ޤul|z{m3AWϔJrD%~xLJv$e"w0o8`@jv68<0>ĢgScOcz%/,}V*J*J7Á&V _~E, (lE1y/f-nFi(p$ö'1ܙԘO뗅қfӜjE+`Gs&Y(xœOG*;?b0Q9׺)}';"޻c"΅ZowK Sǝk >@vAHb%X3+ܲARtC^}T'5'PR"~<)^wIA}R(tA'" ( //YT*UT*JeA <.@E첾¬ 8 7S$CXx4HzEd˭aP:aY)^g1#/=-Sbsfԁo?b)811/yhws2]ĥgoEZ|'YEzda߹߹w-uMsL] [dzbO:.{_]p'VlɭEEH4L0՝fwxQ jggD(-Sv޸ Sv?qCVRwքJ9(Z?1.ua\5Mܙw%,~l>;V#B 7C߃4qrցϙJrcD]C z(6 %4+Yீݫ}?`2mۃ V*-~ޅJRhAtqKkX C'6瞩}]?qvrZҲA[oMfLK&8Y)V B3@~EYm^s/N-2JЮL?y8: ym.xi>uԼ;ya@B AmNG\]*ƫ~dCw3Yh8 N,e4)+Ϋ\6HFRoyAbx7L)Afu({4ܙ 8 Nuר}6 8@4 zw!!%|pp0;mV<3F SmN杈ՆN:F)|?J0sK[(rLu'a=>Kw*Y7sDI0u Z$ =8D")dBYB2jE 2~qD vjмq1~2,Ŷ}VqȬZ8nDМXq*ʍ>"O nͲ=/?Bz8 Q9{AdhƫpJK7v2k߮Q+J @Jnep@x?-fkyBfk0|ZG*dbЧK/]6}Y'ֲs se ΓxkN3zm3G߹P(Tc^!Y~H!k/wI}9+d:̳[[\fGXG/oڏߕ\ڢ4o\G6 &#i{9zͩY q1Mu+< Ӭqh\ aIk(zSX%>>8yn'^uYi"?HLT)8vN,6c]Pb }2`qlV,VT*2;~icд=.f ^u dxx h%'f׀JJsY>^ERTRT-,ىzE(#^ɾ WcM8Kmk~a߉&l?i#mj&^q2.&U%'3mkTwiY@#nFԲ؏ۼyZB?5[؝]ҁ*bE_w&v~>wf  B Lߗb!`YO_Mv86`30# l$gJuo1Iߪ[g{^3´8U1 dԈW2݅7^g3;äYT#uu 6kcTrD=IjMtW?W87p΅pin[޵gNd\55 TW!Jˤ)]2}MT a}i4k5?ȔE0eT2:n:G̬rT/`RD,=}Ol>88#|zIZ45'PI4b jH8Ɓ$$R. x*y=đD!V?"FPȟSk1AHB2utt$^?OGw56" ^޾e0H[5K{x 4<?`YH:y_ _. C`=02H @@l$P-RB!xWTQhg8ؘ߲}dL7k @mN;spnAsH0Gv PfpbUówN!C[=l0Hl#ʤz ͡><}+/Ʒ6>6gdŠFDFRBFt%SH_M69NAE7PE4P;E[(' \( j82$=Se#B敓сz?ȱ %~> OzӪE ]fvŝ{3D =\GGG͆E8'P]׍qFƠ^¢9*y84lPĚ jʅ#j4à&Բ[zZUV}@vPhǝ&檘{zcby 8GpG. Y(}dv m]aVak`j6e30֟ldb>)O5ɚ/Wƃ:u|lb E^'drRDlzMY<@jĝL敐>9$ob|Y5vuO‚!!d,O&%98%{転@=Ma';zvGQCH4 X?ᔑAF$G.JQ'>&'l@I%C11 ˝L W(GqY{dmGBgR\+}skC<<'y- pc|WZ&f+Q_6|7 '' 6ׁW?e`xo]`B ߁@7*n-?jx︋aUMH<:z+6llP>rĚK ;)X}x< o[m5ko+u_ 6)!r_+|^O.= hL=>{>׏Хإ42xC(0Ꮐ!::::*'}q+d΁Hǽ]&G 5tFz}b 6*r wuhgś$Ƀhοcõ}_g % R))L03^GF)gࢣ$3yԻ'#\!j#&u,2 YצaJĤsu&&(h\3å=Us}D,b ~V7~YN+kw Үkɧ%i.us@ef$XC=%$`3ogWG͋|[`B7|QO`'?,BQ`*9?7.p#bx׀ǀ,5)NGGG`ӿ^lp? IAU~1HVO TprhL'*'ʅYJ.&\ID$QB 9PHí'+?>}zZ{9R7"fGrr0ECPZ).t9^<娔K9n+UVIDi 9x)E?u%mjy\ustDTQ\9JJ\T H/uA҂'`+ 4K:7s!G/XMoJ(_fSqh#t=Ak[G&f+]Ga1p/9{0řs 3t V5>pgF |pk|=p8~̰G _Up֗> >uu7?s`xgw_9ր}e@_$cvyfdsIsO8 9А@"ԝuh%"8? 8&soBD&BW*ݥCScNkzP#?>,<=l/B»?v{ Ճm}\gXu:o/3c**̞/Vwwu!%^@ǎ!(t#'"V+Q]UDZf /.dfJ))e:/a85c!:5 {r6!c/!%zE [ҋW\(w X>PGA<&'kyܿI`B3s@5oɿ\.b\tY7 8spgB@f^2똽&۷ޑSl g}@7v~XBXZ{F \Tq0Z fA?$ &GOuo \8-Q.1G^𘭍 e~̒b+vn 2lA5&o.1;`Fok. ADȌBb28A)+Aw^B5j', >Rb=XoB㾤'֘aEI $XJemyM˅pV2 !dcR)zOȅB`u!<&NiB ʆ'@/Q4$$|{jqÆ{; < ""ESIn= e=4,ڼQe")5o[Xp_lW9ǗvFi8:gw١Dн3"[;3"蓾tttttbATx'5ЗEp'~)nP}z%@PջFPuv8ZTˡ|?KK;!W֟:J j/('Q @ < 8JF!Z?Z)s)Oɽ6Dm=W{z?rP' [|e]*@Dס#"06IcGCbMuQ*sˇ$LlD$]JRU3n&`Ba͚7KwSv=fl4-)|]\au226k'F{.NᚅDpy10@+on9Rċ-CIZ [ףxGB=akP2Mܗ.BGWFOO 8 <2(A׏/X~i|frew%-~nx&u Qu s) 8[H}"uttttr eCC0u4 I99jtrbCwsh %.58M]%¢td3ߘsN1[xɣLOY5pk(go't @ZiS!T#e%Au.1KB1<@e!^OBݸ1,>}Ùk3GqsO׆C +afg$abuX3?o \轷mrh8]N[HߵWOA{g/Q;:::H,αf%=2c!$04\g5)i[c*a- U] ە>Eɟh-v^?u~~z[M 9=g6{Sv')mMesøxbqأZV$v\C 1!>[G[QZ_WN!A\Ϝ1ՄXyq ܰY"Z 5 lJ,Ea5$H}%.B$|m" G  C DC~6c=s8X +=xUEPEgB~:8kvXGǶx Ds{})d&g!ŧF_+ox"Y[9LnNutttXN3 #F^H%-#5Sӹ2BGQi6IjU"d՘] 맄DnW]???f˛G!6:ƓGIM^b"u0Eap|vfmpP7d_So1d860% VAʁFTzH3U|2Ggu/A0 ;`K|AoiN!CB]ׅ_!( ))%sB(V{$ca=pl eMg;қH@jC [ +=NGVɟӠㆃ*9~ 0utttQQbQwL X]MJ$pTC%Ar$T[*M|87zJzCؔ OA`m.Ņ=m;v;wnf~2bAرPLB+^#U.JOدDz&Z2,O)4ď5̫#,$^:qhN.,m `B3Ć˕hSRⰂU Hfa\-ݟRF~RC BiT8J9-]^f=lB 3"h<92#~!"RJ< -0! {@ǁIh'U.B;3JC8\Y88!7g`C]}T}VN z`P~ ~IT/;+s*6ӽW8Z|{;טͪy/30W\UPE(1ƚV6iMLL6[kjƤĴ^jM V@nRP(888a6 {=;;_2yg?}sdZ7=omP[Fv#t!RΗ#?LH'.>BDkVogMl(dX~Ʋ+YX%,%$Gj#yP y녊Fn'Z\&">gPЋS9qO#0#P: 3fҨ&#dbx5U7TEʁeqX,tW$I~F[3 I VWod4nɡKhۯ($IrM`e8_7 .C\~n$+ 04ZbPAŴXAT LN|$ȉVumo7p6m|jɹ5pGhWӳTS v)eSq-TH7pU:͊m X1D GsU$7:nE\%D)⏊5_,(*QڃHRYU`p1QĞU)pY]#MeIV Ȩ]8zY(GS5wMF|}Qs0^2E{3t19}~ƁKIlnKÎWS9tIE@)%Ir3l8!o@#3^DfM[ؾǪ.Q-BJ1Aj_66WL݋sG?.۸Lmq 8>)hWmb/" %!z˱nb~!؃V?: 2񻊉be&e$ԨVONl?o$ìCO?w[Sd,%'[sOi :b(b𖈧s>GF{q-8븣hh.ʍEfƏ: "K6+P{`:c0r`%m7%aM\\,r$ $I×X@5XИNpkK0} *+fFEi ݛBuOAYe{e6&t =ZD @s{nfrgwONw?v=*h>W$I(r).Mզ*뜆׵]OE6qs}@if/_m$@,:N+C/CxfybfZ碲(aX!%TdJO÷L4h pTsJ@h( 2&r\/GϠ?59򄟗:BW)nv%Q6"2 "$I(I`:;=)PfHURLE4P% jxƓj[Vf8jOQ˾!*\ 0;6>p9c4p涥B$ @C,2pjO[ҙ "4=a 3x4cVm-s")}H s|2TS:ZaW"9[Xvo`"$GPZڼ <`9n|Fp3@>#$91>P$G,cl&%-# Fn~@5j} z[rZZk9nFW[H}538u;ǵ=&8;OɾsmާMrrg8I$}C`Yf3 ٫ND|ۉ=K(IExib0%dO I)GЉ^^#SGjRZT1#C11)u'm>z\C:DדF&X+#(.K&PCyꁃ|g6$I*&㴙 $I2(Id6 S.DJSPIJkE  dk Aq4@_j%SLjOUv|nɷCn%s@I,J߾NqH#%d 1Mof|"?Sv}%#68feytR b5q,0H[MQ?&,Jc9<$ 1+ˁsBr$ $I6+6˂ȗffq3@ RiPKڢN"lBfn.c"1lǂ)w0 REJ2I`n4\M{\"J $y%1:YI_U/NLV-*E"k-8҂dچTGɦ.̙i|OgrΉyXW8/~̤?Prʽ \ lA6{)R&IN62r$y-1>9 ILoY"*D\ *H4 NE^BJ;HtfQO,il}>k13+e$/bPu7ծ]:Ԉ.+Ptnѧ.*C:dƙ?!SvJ),`dŽ2>5E?wPY@/K}ϽZpI.~/ݿ-SS|3oYyʁ暯<>&<¹(^7Pl 3G.hìQqxWJ6P팟wLGS><\ozFX8q SFzW,*ԛ/b 0OdE0$I1?nΡK$=$96ᾪ2W%m #4AJC٪fĵdKG˗IKJD16n ajMC[wQoQɪ~3W=8M;14A}~V.uN|+_Mo:Ν-O?9y *Q#L&ivjV1H 3bud;qF_ rbߒ$yl09DS/+CzLzZ}i`.G6|R` K;nr8ux ?IJl t]Ggz/P!NDic7r$9'bv"XU$Q`ȑf*-PdfDAyK-}tg_%h*\)-Pq))w d<ʿ]M}3ىw>pAG7?<'oaDxARJ'Ǐ| SSSϳkדرmwЙqꩧpiq ㎻ye~ |Q kt^,Q.v>LT(B(+RٮC'* K/dQO"Yuλxg ZEIm.[K&V}̦e_9I$ <Ð$I @I & Im5> ESª]˷l ,. (6T3q8S0/a7 NISTuӻM^c[|)W->M?OYqBxY.j^ n哟xq,C,|cNJ˩ԧ?#@Ώ}G٬JA2)PHsäb(.B,m!_ EJ@XT^{ h?~?Bɪc b6%RJ$IRJ$$I,~f+pw@"A \oh()JȪd>:᠛jbZrjw,`\m"ˀX34EĤj1hL6ұ=soYw/{NN AЭMw)ccgx;җ/~/>ρ]WEziQ#}Cזgzɿu6hA/̱dU -^е3IBfF?(S's&b>s  Zf1αa~tn%މ0 3$I$$IRJfMj@Wj@ <B!HPj]t ę yB]Z #4i i޴MŠ {InLzn Szsw7{6oglL$3,}dPP-:3_i>_@x%J㬛Roq2絶3ڢ6ٯ.׻ӉO_ꝣ@e༢,SX L`6ϧP$I @It9IJ끳5Q> ` 3JnU}dط\N-GjBfo"SV[6 oGxMD }u@=2LQQd2(ɬMjق%?vFo (cFX0ğ4ANM& ֓EMuxQ4- 3S}Bh8ԕB=͹Dۅ飰7}xKDњE+v#Oie)y~ ޮ;vƪ1dޜy>Bx#h u嘣CJ cҭk;Rp>_-W\~ +|f{:n84ivtùLzJԭLrS.$n ¶oؗR6R!Fp'poN~x~E\E.ŋ`i߾=1=e$/K }h9l'H(6$@ g@"ZUm+.u!*S@/qlxǮGmusּ(R2__@pq.G" uD] @5PGL&ɴ%D*G:d29P&YTQ)(ԋ!f'MMu ԰Jv$n.` 'x/b\!Miu;a{kk!x&VPnݥ5^?ۖ_9%mؼ󋍡ޠ[()G7:`>(轷3Nf;R̝;;/x 7v-o;b{QGI'V[m ygwŗfڛ_KΤ('8ϫE3r;q6k}Cgex8+`9 _ '^~U=^Tkc]ZY$6.?)LoEt7Fn 6%7ݶjHl.jIZw\Ia 0 '%A0 Zɜ@n]^AFLv6@(d5;PJ)T`EL&L&i}SHlJ5.rbb @ !VSl]kcQ0I- 6HfC}ÿAX%֝УQ}/o,dQ(@A=Ϩۻڽ]2pAftHolze,5;ᄟ".rN?OL[A xmWOkᴔEs晿WGKoߝe?7,f зU䇮+_مUa9j3^˺}\W:f4ew(iJ#FpR2W:=Ov(ã@@mW?.zǓ輰D iaE'wyb r >ՠ"yԶߵ3 (O,e2L,/d2Yd2m(iJO})m ٨"P.SĄ 0n ~[P\uŵ9!8R@ހYލކJ]Sޠj/7٦bϔ+ a}=M&z)G$FU5k6ߦr{A}4 @cƌbȐA3g.7%.O^ߗ;D1thf^ svzUtҙ 2cMҠA[&XkotՕ?#FɓjΜyKMM5}ntr2XlmN*馉qOWNQn%Ejp5"vlQ׊ΏWzB1}7 Fm) WR=$ qΠ'W.sFEiAHy6@L&& 4`iL&c.P&i%=/~ -V}zdh&Ob ٖȳ倉$ 3MR*J񥌐2"(pI>"|HBCQU_٦4ABZbEyN/׎5U6]=$l{; TJ>ޫ?l=Sއ6yᅗ0{4}ETP[ @W^c~9g]/fE5~pig7/kЉ[~??0ՅJK{?1tx?&iܹ<},Z*,9 {TxcqS(aM,>[a;{Nj@ IPR EEݹw|mÅo2dB3> !ȥؿ+ = @L&>PY*7`&P&i PRM:qzݯ8 gP ; v)-4{_|\6Ubam'FAq0]}k@͇R_ܬJVC1ިr'& /?<߹ O13fTir~E <܋m|XjPSع1L?n]1凂wᇟ xuk=xZB6OCƍ/} {},k4}A]Lm Px'% GnOՍ%SjZ)P*um~l })᧘wHR:ίk3 B.y:a(ncJ/ծNP4ʯp~'2L<>}zҩMN8'玡)usUBh<{L $Q: FuHu,Ƅu)s؊?8B\Em޶hF {uP |մGˊ#] uaquˏar֕+VPd_CF@ F eȘ 梋tO Ocd@_s҉cş?r-e%v۽ {_XzܘQGğ6PF㏁v];FH4*BŎB>+ršL@k?n;҂Thkh)V(32ğ< A(1&D]Dl j^ XՄs޿+iD}3,^、i dDn˷J]ۗ;,M؛د̴go ם_5ѩbߑ`{V7,Ma;cq`FӾ}yn)Z#p tsf2Yd2*MA~V%a_%-t  %\rSCv>|F5Ԋ(Er$aimMdRuSgr%DԾrYB 0$*f,T=5gmBZYZVnS?:vȣC/ .#h4; D3ۉ|E|;QQQA3O?/s o&70;b׷79obILZ/u˖-Ӧ1]SΠf6޸kMts$J=DF0i9TC$"R}̥7㧆7c'O^S^Lx|ODy|XҨ$5"̸ dI nu5n~WyZ^ЊPM1=F  yDv^wYc9SrчmCvHXbBeCu.7^SzKX|fpce *kH86*E1Y,&VU%0!B,јQVf)&Sh\w.5+>,AxIDj6KB60ݰ!l 셶:Sj\ 6LLy˰a_duQ8`_vahXv |Q{> ˓O>CmmN <xP,w̿ۙL2L[E(gÂAzח`Ytw 6p?aGJHI 8ĝ(B8/VS"E1'!~L8w"i-MKj"G؇tbª 3Dx>UMz q,ʄ L"\= ` hHGZ(j\&Yֱ`°,Yau=49sLT؛UeN;mOe*;fgvݐfjkkxۃ},o]se2?9r&fJ@cc?6[IV&iw"iAeu'Ccky@sΨ}L7uUǨ'y!7a|& {W!Նzp7eS[PD%'|i~(F+dyà./ԍ-*J6[t0{[! c@FS5儶RI40&C̙3u.`-``VwgYeF1nlӋJ59(>X82UbBzaxЀG^u^T}7GHqcRgW3I-2lŌ!IMey69XBp\VJ%1oOVqaQ7`ʑ8'Vy^`Yb{C"Qʉ R4<*#u,,RPk[n}%wĺ)ر_ƅݲJmv1<M~2zp,Ӧy9z0`7 g+`$.wa&=2۠?F@(?m]~ rG$ZD*轘>d }+ DUoR74k5Jߨ"Q4%x{[ c1BDz׶1- ;|TS.m_➣p NQڃ"b;wZVN:)Ow:J"Gj =ڴ$T5.'C)u-/|+\CaJ:#Gmzy73=?/PL+p]d(| l *)w\^Z}J1"@HJL"Z%BVRT(]%*BTFB4> g=| >Kk3v芷?V (wU߀I|Ak>s }ap6u@VT0+\ef:4Ht؁ҥK'VVy8lX~{&'?3 :h:ÚD5ɸϤT*a_ܐ~IsEڼ6ʪXD (Uԩt.=҂;5bwHA ʼnhc&wf=lzT[*v` \hDnj|:bJ%1Bbh;8]k5X7Vu!#JD:֠*mTe;`gnnsH 0d &CB8rG.H?@0QD}hSӑ8AµDŽ)wHd/8Q[)hf|(R05VBaUazs󺴿ݫ{(w)-Z񥞏-?z [v] [8šp䒔wPS4쳝C.E[`֬Xw߈Uo^-N;qe4|y-wgi'.-{>fDd;u܋ʶVgKnMh WfK3Yԭh/ͧ,88蔻/P&Y DE12'jc[vK +քxb"\i1_# >CC 'U5=b1v7CC3S~`iC+v='cb qQpD& 8@dsF̴zIvzW4ӣFtPgU7ߜe>}z:F VpIqиS羧XWsѩX&N{mK ?yX+|TH=&k?'D9@͘Er1:W+"K)E;3CGmXkrhdf=wE\uurfy+I[4WB, yMvv@b=~5.ELkY:܋3N;'wz=㑇O;T܌츰_+ʯ1|[ſ)Lr3^T__;9_"rxE$7~ωXN>fOU49iLX^U 9+kFQZfոr~Vq:iSV@G8WOlyՙg[?=]?ٺK}_uwf_|Uz;kW{~v饳|~}8'{6ڭV[;Nrd٭`~-~u\{sK_gSͨ8mOJͶ{~WS/sS=~gu:g#n}Mtnѯ]:_/E$Ow.V(tSVP;mnFiF#{<HNf$9^sEAk} A@Gf52W@xqF@~^x`ľudVG!<.}|,A6?Q {nNx5?;9B@ 'Ѓ؋A D; ZA#Μ0r{j9?͝vuЉNA$TC8{?(M! 2'. A{ص͏G+A!-o3go q lb Tȃ$k,R H"-! -gO~|*r@'0M)\7x;PH}88_rԸF<\G몛idkQ$g=#d5ͣ@C #1y!qn`GDCB8E@P!q ZfOA TAckG$qi"F ̚3+;XFϖNK|{/뒽kg_SqsrG{-S^WqT\*`v} x=zK/kBק'w??;(:x-̭vH>T$_WdS\yݸuPg:;@a#c5g/f7p[eSλ>#7'Вi'NYwR FiFKi}|pݑ5#3\@ԛ;8~8'>-vszȋ=7!M)8@Q}S@θ}ȅp#^աVc{HBmC;:}DpX|d˾],j|38,?}=r>ӭE$ < 7ܵp ?h0$ j޼{F| 1Hd?tp!PWf\? r{,ai̞Qx> %xpΓ8#Ч;|Bo9DA ʽ}pS0hJN͖qNYréH ܸnI^Non˿{׏?UY{DQ{VRp}( 53CU>#Č k|jv%;dԉϚCtM&Ωp~>eNbS >}='@3rEjKSyʼn$r8_x0S۽4K*J- +z"rۣ Hb\?@JrԛC,'@90# }m>~ƨ--,ú- !c]A>|. ˃?:8dsǏX+59~d4uTP?>wo}lVw2rq _s͍)&@s(aNI޳hȉAFo%={w<3僥d&~?Py֥ˡ^⭶3Riw?9&ݼK#4H#৩5뺹/ xDȡ` ѱ !rQ $d&< @bf};z,!Rj:bVۍ?mZXw{3G kpmi'Ph1n 9zGz^MI~Fj0 '}rqEW Dfosve/FH}?h=\?Q B=5c AbXb6'9q{"`}+aqd JQYG!+8 }Dvj-u;P*_c@W"Mt~ ѡ |71ܠHJOJ$s"nΉ"BV ,qW{^q_Lq z/駟 3fpHiP_p sѩiFiFjN6`Nphi?GrB'ty)q!"F,XĹ(a  +w{~AZ ۶U֬9dx>?:9vGM7=~>DA f}z< "G 8=H A?ҋ4HORus<2lM<8t]'x*;1/'hOJUnP usMw߂#ݣrk>!'8A D*VPᜅ?"'{) \>!sZ#k?xEaO|~?e:|E{# (?!T;}9ً' O1QNYuש|@<$yF+5|>3eaigp, $Γ9z  c„iv\8obgŠoѾO>ih7|gpFr_HRV."h֬/;FKh造u/Nq8K#4H#8qj{c "J9ĺsX͋uAC7q~@Z}]!8 \BأěH{11kPj== b?x@ZfpP%(8 ?q-=r@_>yYe< ~yͷƃ4Dt_[tFٞǜ~Au-WFx(͞}c8u@6GRzϏ?DnHy=J2=K!.< !V9 {Kϱ\>"Xß'Pĝ>v],a>1`@vmY7P<c]? Am d˾k @O)ؑ؋>#HA +) 紒[6;ҮÝ~P y/oN7&$}K?1ω-̌W_N|h =P!n9bIu/tVp^N{I<- d5=}.\9YG8Z hKN|iFis; У?(ZNb.|~98z `)dMlP02G币)~OY@}b)7;l>g!#[6&gX}l`p|H?>FJYf{WPRǰXki(k4I<@KiwWΟଇ> $2H9~b&Wz"u&?}/!֐爁>[y1 G(FL.Ї<91,!HQ[7 9p D'hΜ[1 'n)~sKpIsιXʤU\/j yMk-~%ɾWzLUpW^Zkj q(_BC*$!P =Ɣp2K#4Hc?:S>'>yL(ȓؗvX1 ;q'2o@ v<"8 "VGr >C ?|lY9|bx b;s{!Zx@ 1Yz1"8>f/ A#Ɵ|3#b-1smjom4)+N&%'Әi$ 8st~3<_Fͻ'Ïx|D l6}w~]}4N] =IᆵG_BrlpO?,nZ?PiF+"6w2[- 'yb * A"ޢ=g3YwuOLpΩRo1엇?!\@$ǔt-9{-#6}Ѯh9NX{1(( 8~Ξ{=v(%ֻᄃpNr2!] }A>cz!布"@PIqȬ)q Eh5JQ=oa5XcWP1H8G?u7 ?kjWP7sH=ZcZB3F$@Ap{_)$Ͻ&v8q0X*⋯ GbUB׽{k vO%9SWJjm=BAІN} 4H#4Vro),EYO֮`~B I豊a/2H$13(a?O@Y+J$n~?m.ΰ3Z0uy| {lĈ5. .`|pW4bb DѲo2'T_֭wg}&M 8 ߀Cq3@H@>"bT5Y(8r CcJ#SPW Q% !59b@<{Gk\AE1[@ڪNt hN+'?t9rR3/_ka4do5B>4s+%_ 5ԩ NiFi,f͋E @?8|p30(A"pHX@6n `a8ʽA8yɇ$8%tl9q+~V2gvk !Un_gk| H 7 O2p9HvN($M?voAz]Vǖz#>yr d P""*gOy/{tr|@=幂P[]-8'B\??uD79J<У3;@l)88a_?DD 7&ZmK.%z+㴖|@/ۂW]udTKj L=؟N QjxߋgXw%3^m[; v{e9_[.__Շ;N^p7x3Z;4)+NZiFi,/gM= @ ǂ!"J}bۇr}Pd_ӰH䡏HRMJ}%y B1C a⽀>\QeވE> T3T#pqE> @~c@ \Z#>-A "uQ a1 hfڭ)ZwN͚P@7 8+V4q9,wzuH\4O>Ҹ ~|-;K5XN{}x%?wn;mn5|9c wqo@mԿvFiƲiiwlqP̀D>Vdn ruJ@w=ظrʾyd˽{l ?!~Y CԼŻhd}~:>gduU˽.faO T{@ +n . byPR5mE'tf .7OYfM?O P(C٧ yF@BĀ @0}B'˧(royƦ(C%8(?jCBÌE\A v^@l>B0P,j k֨UX}Z?5j|r+1$ٗ_~0`DСRsu,5$ܨg_ñ/s])<-?/"[skLvQpr^}%/-Կ 5~ig%ڭn*FiѸL8; ~8XkE?H}bn ( (pzA@*IuuGŦY)%_-a2Mzq= i[;u 7{M\@EA匆@k`{UrGI s>ĜL()PNk!Q/zp@K‘W1kzKg#X D7f/ r&_׏)8C8l9G| !Ǭb#@Hϔn5ԛuXsmQyd>E-~:t͚jދs 0?5já/2 ,(~PL}l݅7͜u]pFʬ}u)OBw׿>|] kOeCb/ߔL5,Bǩ5oP?Zv@PӁNܫN:5K7H#4hlVwj=9X0D#0d!WO$',>3N f/`PqLϪO8c99?gnb-kmӳ֬1ddro>)~1'P9L zP%:2gDb`νJObZwVnlK b>j )wqHN$k>PdAeވ=ul1# ~[95Mh@r>(%ݣysm 7HgK]ynʽ AΗm~_eW\1;xٯ!2x85(Zq#^@ZXNs,lL#4H1ronh}?~Η=s Qέ'c^.F y@d@ghY8Qro#39EYo>aw| qq}=Ĉ= {|nz{y#@ ۉ( !>yj_gA?>eT^ 1N  f'tHE@ }dת@"ar%!DAXAvX8!dja&6R@1`hQ\nS=lΉX+p2+ȣC|U: Vre@;[r_`i4 4ڛL yV[}v=r0|mHʤ(+2p2{ q=@HqUXһsnˑW=K^N-也dв tTpZ#|L#4H?-A@ 5Lo |QA(ɅcJ9b:N'cdPH/79A~M^.2=$׬ߥ;t ϚC<@YU)!+P$Wǂ=ypkN'ջi2^NrȱrDꡧ( x>!ZGֶ'q>#fGfȯqo7eA0{S.rD7@HApG}2el_ .3R@8>Vˇs r0Ї5yQ-lZz퉅ޫV;f.~4|%4Ʃy@5M~qH鲨wuvF=]&\^s.|_nWz{J_Ϟ.ߧ`񹧟~N(qD7qĩᆻʾ>w%זBs9ѿ]}+= sUךل Ӣi;W~f]_o* v(%CN?u8ZiFi4pӺt"@y.&@aω=`kf N%G "@29?>F)^ s}, ɛ?6C.)HMG]ӡut؂"zG6y}8Aq&g^@!( >>69L JJJZp8@184k<=#`* tH 7PNM4H#4 d<Hb`bmaP." N Ⱥ}X3{̪n 03OT8zuXL\cAkה׬5tx>?:Is="B;kS +]?l ȝ o{pIII%'A P9(7HA z&qcJy=b/Cأ:#1pu5!&G ; )wOt!'toP !FFԞ?^X7mڵ87ϘBYV[ P+*Љ'})e J4$8({#(Ǿ?=J\cZg pA=t9 ZNvQ{9W΍75 l:⿡3w}qqZ>ANT9N?N7)H#4ҨOƩ>!=aٷ6kO!V{Gsx.8!}~X^ cP@>>xGP;l0|@ro;Esx#2=~(GbyacB'a( ǞS%@vz@IIIK1/= _{C =SM&!PDTOPMh@̓'|Ȗ#FB :Q~ȑ[3 [ DŁPȫ#Vm~n ->F[GÈ"F(a%7sotsg-uEJW^y753iҹAW..8~}%-wWឪy`ŏ,%pF]v93%@gJGϓd3:3;wzXq>:'m(paiFiƒ;Y (Q1 @9<ƺ,QX:!fEaG'*&q#f65 a6৬iWf1?k jIh2J /@< J6B)&3GŁP%PRRw@NHޯ?>u%C x)8dȾ-9W j@I*@ fH?Xq7T|r A$P NJ=b[|iɐ_ϰ6z2N P$n կ٨QO[tF8SJ[^7MzwS^$W^9';]Cn_q z~ذ,8OR@ Fy`Awؿ jeg}'M7ۣdkyk+Nq!֎]Y=uT_PG%|uy/+~ !ؤ8Dx}q{ޠA}ݺ6q UJڽk!?C#xH(JhŁ@-8ᨭ.9'[iFi?vp#g>3=Cu) ([X+b?}B ,pVi>82k˺C  9[xa5Sf[t̎wAy7+YgGr!\AC,gL*˽dGELedQPKsʹ =s8--N٩4w=<}7,y G<_Lj3P ?w@III>Hz:r0\! JnP DQd= ѽ@'v9CQbܪHȓ DmeangBQi׏̸}l/uAaM;?-p6ouD? qVA=Jz1dS3H&I{gNYI]4,}t+]7N9!N3u4iNumvt-衇p(PvEVqHqX"@+B gAPG~d>Bzڕmj,g疳zzD=Cn?!G`P@z"~ȵ׏ԒK${+W=ErEюp9}?߇s跼C><R*B@ z%P|$\dF3 Pqsћ>njz౎V'"* Ο4/^V o8zt ƼI$!H-ѺPޫN(ݤ8&p8Tz.IIOwv: tAɥ+]JiqNZtaN9FS4C!uBv} >@q}?ùcGqnzC>ׁ ȃCH$5Dd\?c}IYG91?J{K{ۮz琀"=͞Q+"F5 Y!"fG9#D_#zJJJ, ;]@#j@R~pC>Ȍ Q)?p>?8Yl4\l珅A8{>gPcG}14RQD L:~P0ŹyZJַan{|=y5[f׻;w}*=$ľb/+]JWSSjv.?UN;:u#٣'ҷ#J=1?51~CÇsQp8}j7 أk\=yZjOφ{)2ƭ܇ kƮ8ҍceq= l=AD7>WPx?"?ȸz ǿypIII8n;j |=Ѓ-jyczU#< @9 G8;>fd@EFS`s!?"GG!z885c8e˺u{~Yݷn=N]/(CnG‘ $~ ;պ^U@IdLk]z.II qc4ju+=t+]oC8eݠ%N3=? ;9=1=6#ƾ:>CMωOG ? " s"b@ "gqovߏBwЊu#kƯ<_ckYΪ1mM@ jx#nO?" y?8| a6Qo8wp59AqF%%%m9#p1~LD-"r @C",Djs@!đ~ CB8!#3߈p{6_? 맒bP7^!)Z8>pk:>, ")GP 7 (=U %mj2#'@zRz6II UӉNYI]ҕttm8Mt$ys ́ucߤ/"3 Od. @O ܃>?]B#:S$+7*HgP!9nnq"W{zvs{DrD!? 8G"r8b,D Y$8%A89ȩp@\}C@F=sPdPY %%%unU!40@ooEy04@ ǟ;t*tH zbUF@@(lϺ}@ 1 CN_)#qF!诇@DCruC߶as,-ZSk6 衯Pd[fjAu=f5J(ҨQӲ믿=ӟ^ o􌒒gUNubLҕtsl':N;?=w4.pHݶ1@Hj= AGb=@CR{$Q9~ _ }vrDD(8Ru8gž7PϖG[~B=3jf/u1=)O^#! ȷN (v; (8Q G }8#20(3:N FYc{`珿G9}|>$<Cb?䜛{ȋ8Gzy^&ңb=Y$"b#BC6~pw CHB=Oj٪ng?W[P{r:@9ĶB /j@zDqpy PU %u>95GϾ̞~'[o%;֦gІC;:T^ҕtUutS itA:~}ɽA.!!3ߗ;^`[$\9:8x\@ !Їں}|^}hEѪuk&_zx}`nӪιm?ۣuŜ?V D^N!BXukr@v= $=O0捚\iWgh-vMJJz8. 5\ uD`nf#\N-F cP?Bȃ=<7/ptZrVG{Dnƾ\A(p.;<4ݽq{~oĖPpB,?zg]PRWh:%=벺&%%Sn4)+svOO.]JW%.7)cwšOkw\x|@U䱮GЗX8?v9@>YC-D ",DN~eʽ zD~$O#3?s^ zʏ~:p(d$}>yBr/#7r$G@!$~vR|䬶 noet T3|tȸq3oڪyvZۦw'9#$gԛ6{#;!΋ODf[Ys_!8~("[zB^'@ PzOn޶~@eo8zLۇ:A^v?P,iˍ,ѫ9CD^bWMM;=of⋿~g'zjagPw~NY -uSMzzJWދ4{:ub6LuCU`Am9#(ϣDTGJ>BV[OCnk|tqQnoϱ$]V;<;AzP|:DO 8~" F^}G??o[b5T]T~F2w}?}Od][ WGs/dO=+|.} r@>Sؖ @#VVXCz4ppjA 0^[,#P?'5NDǏWauCND&~DF|?FɅ3j1:ChWPGZ l8 Zg sklᎼD]@XYr׺3AcL~VH&))w3-tJiSҕtWQtرpjǬ:Ǫ'xA^C B@HC#y@ܺ?Q(Gd 5=rDpc5AP{YGTO|f rֹUg2 :~Dy.H83 c{~@vJv@GbA8C.!LzUkIҳa% wFZvGO)+y7x3;c pgyvyß>'r=k- py1 @@@Ĩ7qQo1wn +Ψ}7Wy?>gK#ސCR@{2RFiv \gEG'ӺUN,(ou;71ˇ+Dٽ?#N())))pJjNɥ+]ڜ1q:)>o>#{\GrH?#o!CiG%D?䶇HrO0#g[[dSq=Q Oqy l^>u!qܟ!qy> v88`=quPWfggf[1b@+ )-~y=l%M7X?l#bȻ}h3NZ~AI}z6po9{HGѺuo8 >@`WgWҝR7aJՑxǏHzC(P)O$u8}"O= :5ֹ+6 GÝ:iҕtmN :-q6g2שNS߀B['== C_ HS! ,1Ⱥ}P%(T0 :. jӷ88z軜:s>Zpغ/]_kl+I!H:N t?1wou!#ިHˎ}_iO.G!qw;l gS޵?ҺY 46۳uJ c=^}Me]Þ| ad61;3eStA{G }|`'K)Z)؃A#Ѯ<:D "]?Ԁ(Jb,!KUm9@@@`OdS4ysY 3@~7_K.#Ū >q:؉Q ҕtۿwTU M!{|D~^~hG$5qN.{Yg}N?F rA@Ӯ.wT͸Gm\\.g=֌q dFjz"ݓ1JjDOA5 G;O>` Fqi, BqPò/"?|m)g'%veB6ky|ݩ+¡3sټ3#Ս-\xqwܱv=Cr?%%tnsbSy8U  FÅ9pB =|sP~i]?wp">S<B 9\r=@ǎ~C8tMGsTгN^3߮aF};5Z3igy?s AԸ~T`<2.@ v=k@ ո^L딕ɥ+]z딽W>_Z3{\ky| 5ǂ" B1P>#uCG @P̫oX(rvSosznqQA`O?(2wvKHDq$"➸ZO<[Nt!gph6/Jv-w=8_|eп{/NAy.?^z9;H ɿ/ ^'AW'xБ|_~\o_ry-|_F=ܟo(tI{o?@==ң6xIOC"(׏gb|/r<10<@h04"Y$u\8E1<@D߃r@QϓZۡq~K9vơEf}QH@=\~>:ثvڤ6EwӜ't nK8eImr/>1p@88&?q'@8~'?{P>8;Mzs zyB0}Ӥ]ZK +xlm$5(8D뇼ǂ&GC2B+Ɂ @C>~x *vw;yf?xoWJ?;ȣv`:6=?O?Ը~jwoy%Os 0ʻ}:vO+ zC]@sp=K h#{֫n)ڤ6@cKWҵ)~S4iq>n{ Ӈ~}=5GQ=ѝ?@ yɉ@"};Ѓ3}$}NǺz.{L'%58ʍ)]?N䨢3H!W(>hh}vCQDPHN_sQ]hԏuB]YO|1쵙;cN?)1w|<(>8vx_}\F\Q0KF.ˮT!ⵇzRgɟITY^z5?-,{z> }IOΖ.TVSlf][vf箽VYS?pL^Zu5'gƌv#?o~zHz8N s1prr2 BD Ȍ|#uPrX^.>}>QzE!W~ ^T5#wu#f˻č.#<Ý kz. ,졇G DnHD|oHFhnX@IIII m9MwZ攕PD^+]T4?A{\]|ZO52>>r5G S I~a9g"> W2YÇ (h}#k[K=ή8O( ds},AU!׀C= i6ӖE"?6XӳWѣPFUWKso ­.?{̪SH|3OS6o~GNG7 ; _R護>'}^}59}ϔ_?%H`K--+|;uׁ=wm"OI@=?OKF}=`ϔ8xɯ#/R=p@v{:p{{pșyqShCm9ÇC Qp(X7#)ǼQq9 HB}4EӿD dkr?9H~ՙqs0 ~ePRRRR@NrJ疮tƵv:/p=zt  rb. "EzQ5Cv9]@>\ # DTG-\P^'p"r G3Mj cAHQc"D r'=A=N ǽ!QwzvΘ"pK46W^%H`eĉwwaG./'O">FF>}8^.@o5:@=G^w['vuvS 9{G9; $s]v I_~m{aA_FIs3F,gyI_nC![n}ugzzJz' \AWS }v&z#">8"8`N1@᜞D+H[8﹨䞟=洆<#:Jϸ~ZpHaO;~4豣rkz{* N-NY -wT^ҕiQ7]ݗSuޚ)@ @vY~ P{@A b3' 7|ȉS璏PM/9{G qa?dP7}y\8\$l/KɎ{~̞9g@:#u8TO69ljǥώKUWKsq]6O|KQ}[K__W_ vH׾%m4 h=M։@h~3_}~SOt=)Yhg]r9^99{G1Kqș #Ǥ/N-Ir&#!xg,j]J~/ůȹ Ԩ\Cf?P^G@rab) QP{p8|'̸7/t>@Cn2jn9yR7aJϣZ}Jl P?QpF8 u!Rz_{#k9~D@IIII }VR :Ut! v:/n@`yKN=8;p  $R@CNЇo@ߓ:{y"p &F?(8>y9wFtaJѺ=^u}?@DDK7:zd<>uG 2d ~pH@^l}BJ*PCT5[%Z.@?; HOv~_~C$N$y g$5W_}S'?ڲ;~FNj=>%P%_\;Rkysi#xmwTn53z/hז-qrV$ tA=?F  RG0N5J}#@B4VW{|OI9| 93cߐ<8:>\9}1ӻpHzK~ۆ>hx=Nԑ@*v"9`ЧEdD@P\z͡Nj~O'PRRRR@s׆Ns:iҕtuقh6HhrQt;ȸEЏ " Bf?PAuHn]?HjQC,y#}u/kaO1G #Q9$R+è73DùC xΑu Qޞ"wMxЬz]yx[¼[73{?S{d@Fz eG~?ŵrU9sezRT~lܝwݛԴ\ x?ٌ?0&V=[g{n L=g9}@~O{3:X8(\vDv!g=8+3-6h:?+q2@" z C(USQ?A*$ҿ~ͳ ֌lE^o=ym5. } @rx@(d@0(\>zӵw|Z;JJJJJ(}۰u6ɥ+]Zo8N8-KP村 >n8rs$p!u}/5^@?^A3Ct:c,=Pfw<P:~Ԩ7r kEz] @+W8FC_B(a[ :hN>-hO@t˭k~؏bwL|_iM;V }?3@g8_?Ck)M7សZ'}H]d?{`&+2Mzy1ǜGLpL}Ԩi=.4?;w@c ?H /> X8W3-P\?qTG!@{Po\?$}#k,D0j(Gzz)8Ɂ.skhG^>"rS?>"Z "<!/?D'jM #Qr%%%%%d{;MvZ씕RN5+]*Ma6 ̪LV"juvQGps)>YI"*u1 s}k]q)9?~YĞУ?X sr補@ @(`j"q:[#=@ )G"Pk𭓻ufn# .̹@cĥ{r#=ףϞ&N&q)yl-[~ڌT+4W1ZuuP]e#{|_[AgxG >g| >ns;@ R;A .P0-8p'>7[ n@ 9֎zbXvzMi?MMqb>Hʣ-'@]@REǺ樑pvѦzˡζ`B6d́ٞkv?!3ytVr5cziӎKl'F~ޖG@t?#NYI5:tꙞ^ҕ7]JeS}ecWcC=Q;iY?:G%"*dU7?Q~ .pT+go\zfNuDPCԻt1.pu!z DrqXCnF! b@(t Y`rFq;,]oBv8gy6k1$ 5;.%{7BNhr;݋^qphW_{-|#YIGg[ >Z>i|0&7?z-x;X 4LM'#1kD`9w Ɂ?^0"0Gu"O(T^6'3'!Bzuu:C8DDCV0H}Ѽ[}%Β {\c?z Ԃ?AQ(!xA}q(CوoʪJTQ&ۈ2 IDQQAjB4"AEvcbb6s'F̊Ml={ý*@]_g}λޭWrM'FG?ڻ~F#K(_hym\?o^{>Zhu2=y.?qpN|ƀ8sg_- 8YFXΏUwkyW (5.VQpp|?$?5"]_K6x0@1Ac$g݂"_7\g2W)}9j;{C'd[Zp5Wr@I'<A ѣG4yGC'2RIl aI8CqM !Ԥj@?~k|x H?z 0>J{j9s~Xj@iQnmxĹdr8{? */^?k8c>1o| ol!x͸ %Nnt|Xv(G2gK#\ϛo^>HJ^a2=Wgt2ȸs?pps$F:[ ֜CxVY'y]G=ܐ;I/=:2: &D] F 7{䜸i#u X!)<y&ͳ DSNII#O}]?1CC>X#, "IPy@:=8)Ǒ=\G ~d`HԠ_-oYhDF>0\3dxJ)Dq>=2J̾?2wAqz^&Oh*9'0<P/ KNs$ E؟I?+|F<7mzS.[{ky{y[Vϕ8,P8jbQ߸|:.p<2K1y7>v Hs~T(ɚr0S'GuWtonƨ¬iF=zJwuy5SeKAg@,fᏆ@!H)O@$7ŵv~tG\C,ypΜ?jU Ν")j@Je=9o0zX7jּSe =.{ (ՙ/J":x?Jvܞ?\7IAiEc+9DC=GP`_̹u1Dpu+GGo2. gm'aQ y˦Q:%u@Y."|Q7W_g0Gq>ҥ+yl{i_2Vut.JYN|]·Y'>3b?@P^{ylb//;; KB8>+?'5AAz?bM 0eVAcqDǏuH& oG}| BpP&'^  Rp=@B)(O8=Z? w3G%1Tк[ܿgJ>?.\i=F<ԛAaI)Ǒ.tp]~ߏA\c %3H`>F ҷKv~s/4ɻ'V@U~_3Xz)BXSE״ovǵ?_9񫯾妲+ASɗr (y_wX#cEuyvʅ#ߏ@5&TXQg={R?T&IJp&gd>:6O#p9PXgK ,ܧ(3q%G;)roe89B4J>X#I-AU@pXS9[9<WЇyg-=G ||+/Oe=Cv8ps"G30 52U; Yc-A )R@"!ңuP>e#!Q@y?쁸"CG''{)o;+=,v!Էst~T! *dΘy @#cX4cYu AjdI8U7>=zNծ[發vmj@?ǜ9_D{px_n}25 ʀ+?Qǎ@a}c2͛?}_*E/^@ۃVx`L@mȅyc]#pϵ,@tcg=0%kp)ְLb҆CvHy@*n[9J9Tނ Ӥ{AjN#9g]ڻuEuҒ 3w @Ꮒ>k ##dzpdY:s^ Z ?<7J>"Gb ! N x]ATo,W*K5=K}}oGgQ=ڇ"8g&T4wnRJ c5g> @39! 4Ї1X1Uy . {<}d+@FA _?1G9_8 z\˿ٰ sڌ}Nnoj >9sXYU`\j Ι9J#BNXB }>8PTZ-OdaOzM!Ǿ}yqq z뭷snJʙ}׽ (.,B4yܟfkp^]$} rpy)aƼȑgcOjC);u'77C(,.!\??ytg_^~U@ Pc{@R` %0y7qp߀?IGx{| >M$sѕW.D|\g!F.MI$ek&Kϓk(3 ^JJb ÏW^-~G'%v=sw-9%\^{|2IEK1[tmcW\kǕX= G8v?. P{%9":zt< }t뇣Y1=C r?stl{ΰfa/wM8<>A39]>4! AԜ zd-W>HϳJhKʮ 9(Pc<A!{NeNфƇs,(:~B 뜗+q{xʾ~|dԱqC-FPT"̩D5%DGnG/C#LH@rCȜ~4(e؃^xK,R> _@NPϒzA+VJjq,nl^T0pOa&M* Q`\[.,Y_ {ҡoV9*ގ+K+vQkusθ `7|&={!\3\k O9|yQN9sժ5ϒxܡ7zW'm>>"?rvwӿ߬z ?DxDQ:7VQc\8±{5*¦3:Ws%1AD?c{Y@ ʓ~rP,(o%5~&g?cw)f"qŜ.=워P@&@y f_]qcy⛣>}kR=s;GFsQ0̵@! r3'+c{l~tp9 L'ICO@tّGb!%G,}%1(YJKwReRЇ#} (DcTaFٟ39JOO88j5<:_#kQF]CZ()'n'`!cP \Q&ϢE 5LL'mU.Yrjx}ܬ@`mݺnȽߙ ͵y'QV9-@ A(5<6;k׮\ג믿ENFa1^>hrJBn593)u9 k(uMI:;Vp]0֐X3D-ˊb1ȁ:tA5^De.gs9\KX$7^T|͚5<׎tٓ3s)hdCIkSD t\EY%K #Re85}(E_ntʙHQ@>z82(qɜ9|T7 oU-` k!#G`u8'+50縄I@a@EÑ"iԱ져Nʸ4ܠz'U4G=8bHrZp9Usq H ?vNsFt@Ęs)eGDC#bY7=(!5O 8H5mG=6Q9~jzJG|m7zK/@t;q%9 /{Ryt>3p " kI.&ܴͨE-'IKC78{ o^$9-&s|,}\r[7At (5&h ] F]pmv%?vN#Ї#u oµ!tĘ0?, C?vΘbN!|>@+? =zCp1AGSy@A-c {2gO#λXJ9s "qv@tuG xJ1V. Sn Broa6P p3(_!E5 8+dɋ̽i}~_5 :u _LD ܐ8zhCHV^1}*?Z#p`plٲ%; =ںu+]P  \6:P[L5"Kg7!D9SnȐ|>?d-yH~uIn2zP=XN΃߫hr"{y Gm;AbEUK#;XY֍8o ;$dсAk;5P:'d <)$O5 dDN9@.z$/wzeӂVc7ϴle6:PK`<̱|jNA<"!XMUl{ʿiISڍn 0:r c_(5zm5(2BoáP]q訐 ܼȥ:lW>ٰa#墄/W7g9.{  ]/w88V$6n|ZrkpHKzo'ӦM{}~C]\KHȬY ; @XJ9~_֒2z̟y~aX>TTRmirAw9A W]zue bEuq• G8vlXgb0RިS,pX搊2ߘO)#Bcn=U(7E!Q#A8J*O0A@QpȊeQ֔GF+(E  DH ͵hDWrHuY7e]1@AAAJs)dGB!=~,8IF%>:HȓRΌ~ Vp)Gq+]-U>(DǏm\r*& h ZtTK7>S1?R2"a7AO@,78~,h\>2=&9;kɺu1Ϲu($p. r\sʻ1hR:Z@=n.яS?aipjez> <@irapP &;<blȂ,q栯r^?/8Jrg1"n# wٔ)S+]j(昲m(g\AHD.]ut0xB5PC6y b^5wbVpB.Mp!}_})kpmk@bU :e}HYd{ Ϝs6%Wom= ~AެQ9'י#Gqѯ-`/3g$G %Tygk %y@2ǺȚc>PPPP>%,#au0v Fq?3 3b?ktGH3. ~$OC)Ü< h#1s,֨}i&EeS^_qߺgT6 +s {ax( |=b B7& ˇ~@^O|֚.Qؤ2M;DԭXR=~<. \/f{\L !IJ&B̜?? uyoCzT ! }8 @ (((cA (1{Q(B ~c[y "q$=8qHI =gaϩ?.lr}N|>=.!#~?U|z)3͝eAq0 9@*! ,"a_ 9YK)\#j9ol9HJЧsps='BI1ׯ./sH6ӅbFxɕp \7A98y9U_n5 }:sH^+ C|s'֦NRJMX5jbzbq 1BAP:{m <!wU:/&L(OcW߼gᱢ*!\pPT*h;sL H ƺ=\3|l,g [d~V\Tܲc@&Gc1?? X)@Vt\@J֭nn{~$f7(= ȅ>c~8j'P]RpCc52%,aNG2|m 8?x $?dZ}O,dgvѹ Nm-Cd@D=6L@*?6%dNFor9jYchϮ@I^ ֮]x L[nM_nO5 :t8Nz_Ng>gJ/$rspH,/B|ዼ@llpuP- G{%XKԻȡ1^i=IʱLz5Ni믿EzNJ2jlVʅ#p^DPmqh@]Mr299B 9o: ]N7z@@D~?uz1A>׏IL׏ ?C(_/ xL>s.H#c! vWnj+(<!950bJ9bBtU;f9 Ř<=~W?ieto 4HcŞ@nN߻`>ü,g&E4nSҞ=~8]!)C0l> ||ȉ9yc^{dIa@SJ0RN=*?tFUۻV;jḨA@>Pk@|RxL"sʸeP<-.o752g ytޔ| E#˻P^!e>9oi8%X}H%OqnKiX)-&#c8R aN(=GFwʂ zzI8s ~˨@5K"BcDc%&ؔӮ Bac3)c ⒂{==9rؘ%<@A XK1t!&a? @b_7-s?  N9=:u(0,qxu8 Zt2ُ@ B~ݺѻ99<1\Z؃k&?qy# x ~('GQ@]zBXc5W/$j[Nq@";Os-L! zr wwntMez 9nɊvpn1ļBFF9zzxD9;ߏ|)P.'b5d( m7B z]}ׇ1dzqu dJ!lǥ "jqxKq4e ǖ]~RJys T 1&b Jc DcoNQD𓌍:p3ZeAAN֌N s= Ę敫G -9s %4edC)⨝>EC T;j~Zj@sиd77p_M],ϧT  |˖-61x>_*\eVXaF& Bmwp a8 TAO^=!@4z̯]ȉCp` o9v3yIY6<.ks9G숻M%k(x-LY!CΖsõe\C8Ys:}T xRJYrU]vᣁa,, @(9X'P[ |dz8sT98* sTUHJ#HN;9Q"a^A % cl`OcE- g!s\(c>!@$y *lQ<|E#MhFc@ɀ! {5d ~G\NCQÜ@' j4G "b%z; חR V^:5z'wٔ?\5IiVus@ ϚslxdmE+;<oI*@Ƃ7ыX J{}pt9=ѪUks}p\du `9\1ؿC*/% $m?%+ 7xm(y-')/xԽ{pjz%8s r˦A,݆5Kƌ@q{T- vQfR҆P굝PaG>޲p`'vlm@{K>`;qI8G$3s1sUs5]s5]s՝~^}VV}ހ U=NbLY˝=rG$0Etd/_~-[9o_25ƛ...ά!s_hwN-P@{-C7-u#t׊fگ׾o?`D/By!2#b:u#>bS< MxG@2e3~ˡ9u z%~F Or?~GŌZu r=UDr}A~ |p Z7fA@!@9ɭO }7 , :O!O'q x}'wL8|̎ߴZytQ(G HU S+O#f B ~4!Dϔ~@q^{uݵ[<z[Ϟ,mjjߙfޅ|PEM_}'h:ݚuxeo>NqWOP\G^;7MW;uof߿@\!OtG yxCOATz'q{PzH=uP[{?^X?~<C pGZnh ED;<>yQD`HcADz|Uo^ Hz]?D?,乮|K"n_m[?ю*qz/]ՈHJL>':^_1Za@(hp%F9ɥ E ܩr⍀zݛ J@.@x9xC|Luϧw.MM AW=Xԍol\ڷ4wOW/60t:¥Cv=}B2}PO<4?;?n0,AOvǣi!Tk[?RC/| j=#Hz}9@T=.Wb@{HZ (p#}{''W=~ע7'J ^=;3eUN|cϿj|v;V,79Pf>z#=DOl{-Y^=GD%/jg|Q_Ŧ޳Hc3&8wp_}N$GY7.ZPԦ^]矺M_wω!=?Q@r^ 8d}-JOAD$w|Dc:gCQ J_[;oݣWl-Q;L Fn1GH˝?=z~2d#`(?9֓rc5@ sw?~zg?7~>@,Z.FDۋگ׾ * Z64@JjE+ 6ٻ[@+*=[n>a3rr=&aGPA XQ>H!`GsP-< 1yLn|Sݓ<3905oh\I!)ZUgDࣵzqN >DlQ#N)2 #Pk? )J c=6WSI!7/2y.gRp>r ;x{{\L8;@L5}ֿUW‘G#)_F=^:Ff'@#W{Z־$/hOfv;[}a#W#9'@xk]־}g+P~#< r:F̑x/h_=ڿ6=A?wNMM } E7ml^zSvdSSG7^|a?P {YnzG7my=w~.?ىg{<P?#[Z$'D"8R׏ e73ˇ;@$95Loo}(A}U|AF?E2WCs8H! ^~{Ly;|0GrЧǏ S=U= Ѡ o1qz(q1&';vX?@1S)졯`@DOtP8:"zupup^㹈K1Q;{w u5p 22 #ynzdGuOtsniMSS@k3EH}˵Ul{kzɚ޹p|ӥǿa >w-vzSPG}z~-4z۾6 XA " ˃g5Ax q j=ǮS׏B!z HhD sD_Y glC !3uhZH_1hvx?wdbۋE^W9\P y D@HOt:K ?P"yTC8: ?rYU}ї?zΊ7? CrSroպ=\=8~GOr(BQzB;)Ir`P}wFM]0\ py2yW>0sH0urG>qha 3־Y&Z3}Cm$c}r@їGzҨgt|bxn>yI^KwIV\N%>(]3@\A}@RCDk> >{qU% H]?>0[3?ЇaPGzG@u-?ܕ?Gjˁ>:1pHNnky\B^\G7/DO@z~#\Al r\?81;}3v;yvX!U @M q AwP~l'a-iDC`#L@D=c!\?,OhD 55555Ծ3FP5kYALӳ&tNaY.QjX?"}^-fPt]*CJ}#937 RC=|hh@"9XGW|:Z#rE0f:q@$9#K`Jz8\PY>97\8, F@HEA%G{@pC,>j` ȀF^s@@ PkYCOt1@8}x7B6C2!}=@RC#Y'wXF,<e( x''>.GЃ#%\j@OMv;yˏT( ˓@ "Gq՛D@ $w5 Mz HL`H7 },hzz|f@7Y@MMMM A_ԍg_}g9B{m}&t_ڸwZo~Urp/uosGwGoT`p~\PB0?z q8BV(_fs>&ρ<>\poj)sPHnCm> R My5p Dυ%}3p^ 8qY Y}D HW@G$3^W!(yڷ)aE}"r`ϩ{2drO# а}?!cixO ܱ~%p&?=zWHWo;OvH*>81ˁOvW@#p ѷ SC@]ϫC7UP覢6kY M?=?{=95y&.8yԀ Acp8?%7bƥ?mG>13vce=6|nVأ+LZ原t=!ǻ@ˇYzL}q;ڣO= / %7*Oty9p?W{֏ ?8ǡy++}Yx~Gf|M']7,uXkzEA?woL>wZZ",rQ 8`C%)R0?{fU?W=+)l<RQCD Q5p[Xtfv#ωlzʜPt:YG;@6W-Q?J8 +w(ЋyR{@ǣB~H@ ~">7>וo6m\SSSS@;KATۋNu#\MkY ;gB!gfv=~|Ӟݦ=NjNm=߬^s=]~<;@_'=,k+6ہ= Up|?DOk9ĈCmqX0HVF>Zk G{uS/ @"[?ru{ȑ0$y4dҕpH?}~#GPx7}Y>|A zbxCs>e?R\V1/d=<}r,U{7 }Q#e \A2 QH#Wd  B 9!8G=Dq8E-p=yM[x іۗ.5#N>z ȔxxM!q0VU@'@ @w~p=N$%"z [@EjOr n55555Ծ*n,r;s_tJ#g Mc׬ßcTdd U |3nҗ6}8?7dn `8zJ\]?!" Lj7 Op#@8C7@8ƹ*@*-T 21C:guu'P5p{zCN AT{?B7o? $'A\9Ї~=P @@yP}"p#D}fXT 裹BD[?%"j"On4k$g>Ɂ:p= }Yf $5H?Uo S5@rw@Z'wM_|Qgp{< ۇ#BY z? ӞŨ%:p{:ٌEZqzr䳶 貢/u#˵,@hcux$g 1سy#E]=;wsOXf2d?.A]ӗhGҞ#G_?O jA{@kzL@ ~!{]= ?STR &r0D?"X$`\7A%G)qk'E ~SrCn @}AV>f }6P{ b zC zv%;@; upOUC] o`:A COrTp@Dm]~"{:g@UpPHO"W[-@(Y 7pH|9uM<81>0};6nU@uȃ3w$F$}XsD!$(w@8RW ֿIJΧsfBf_@E-u#t]E3kk}{t?t;_|wΣ !y129ognB@q8u1rS> +:{ xr"*2C  7vp]j[A7)s!C U7M r@ D?6Cyxa)w75ۇ;ȣ-'P?@{@G}U B5k@Dq|H@ڡQG %?*Zd.pGWY(. >zH`G@|,x > DmsD=tGJ?Hn$|or> Pp(dR fǣH>"@[@~A7/=xM_pq"jr? d N :8O0!A- jf"#Їɪ0㵿u)B J@8Xt%Ot5PSSSS@ks~Hn:ZtkDZ@.^n]Oulo^w~&cgnܣqd;L|zMmz$(ϽE󵿸y˯>ޙKN<7}Io~{{C8|+?!z.N}q|s7ո{(#~,cu3XVB}K?>:E $wC3{>01.o߿W/r">qcyrX(lO!9c=Ɂ@M@P佘A5/wz7%IV}!E^oC}q>[L j ]A ~Tс 8R=uh a_$ J־YD;zyT VC?}V395oM Gr@3zDz TdyQ\@ljgBQTMjxTE rćNͳ24yUЃFȷW@%AG?[5o5fDY;HՀe] 9 s`O՟JW*8AMx P@MMMM }|]Y?9h\^y9slhht[w4*t4[N=j3S[5p n>%N=84}ʼn{G*.(w~nvQDu @D7"] GT$zSIOAP3ֿJ8]>yZ@%E׼L@EU3{+JAQ!s`Og}0#s7ȝ?~њb\Dkjjjj}@\RԍM_};Ƣ n韽XiƟt;|;wǑ[^e)٦groqA naAPٍJݧ~'nx#O+90(qI!O@EPvL"sjy,"c=>& O n fcN7Qne "jd7@==0 ==[U>=;HCT7s?D #Ju $- |sQWDAɭEORk @լu~{|I׾orCL3 sq(Ha! ";zG{9o]@A 4 |y8~,!530/>v쉊. g7,z.:cAf ^ ="&@䬂#lϼF3 ꔚbݛEDWohm~uv|k$uIn֢{tCmg[EטJM^{ϹjW)7\y,_ Aۊ~6_}覢;Mt kuݝѓ p?]?,T:w V7_Ǣٴp7hGe  EOa:z  `!r@@ӇkU0>?:O%CNt Cb&`РC?. #+?d@wH>\r3,7uo2qGr$N r)fCD' Y= wyA&ڷ>Aڣ~ooh rjyFUkQ @O>2K@@oyqyQG׿*.AK4 |T@@H̱7#r= ~ϟ޷}|ʸ 9'pH@O.5̤opini:Φ,hL}1Jrj>#jwJmVmڹMo_Hwt~=ϼcS? ". = ϓpL-zX~[?H BH!PBQ現Cc5$Fa0R) rA[~rVR{!PGkb&?ǻ?(u ЏЇz͎ ֵoA>u8"yD|,R~.#= (|pУv=x^>g'zr{E9W©C}z+^@ fԸ}Rdѣs (wh==!z^umz}s [;-oZ>rH/]8(>-xg< B z~:4ڷq@8}>&ޣ#)8!ǀD?=P|gU0T@>^tDI976s9CoH&jmSk_׾3m,h{k^N'ٴ@o*~\?ζ89\W\?vݹ9MٵC /+xjN;X 7zQU#v^|lxG}p':4K]?#cQ]>#Hp T!&p@q5F; {||vHVQKO@ H| ۇ.9.|ê]?)9'>>:s1{7~ml;?պAH??L!#a>Cmb^ewh$=q-s~X ѠMt U@$wGOU[9|21"OUCL{S'{L6. 5Ǡ=" Yl }k_wɢ_)V~hsJß7:QM_ٱwHq=] ݎKd Ҽw~N1]@jzciuJemON]'6/B|3(|<\<=#0D܀So}(ڪC_a伯A9)(pP{OAHO5଎w^@! oƢ>(q>& g@9AԞuBP:}'oD L SvqxsQcj"OEA{=j'@-'zE]!?@Th{@ T7> w=z=P?DQP\2S4,n让Gn*@w~c}rSR׏۫ (d}Up8{/n8% ru 1 zE>:ϋ;zD2uo 򍘸~+"t\ 4f z䀟pk_׾3m/@Q7Rr{ٿ9 8}ʡߠ<ݾᴁ;y3uWr{i'@g ]?߬'n>n.kfְmҕ6_|C:Ÿ$!nyCn12(>|,|2s s 1wYhD( +ߊm.'q:`9ye@>dSiC} #L7-=0gewO|w(Ҝy Уs) $=qGW B\ :Ff 8D&>xR#GyQ:8`'uFvgP(GsT8Cg)@ }k .)|Q7R.k\^3UtS?1PkfC@iUTuO4xTj PJ^@ ? qq4-ƻ >zk8z",>o>T9`Qڍ\q<8Bhd-z9. NB'W{ʝ>0}; '>ɀu!i]>Gn}\ ?J+ZD Q($r|?q<>֏\8>C.# kА (B rAGzcjq/[?}x9 XMNd;}\Z7r=^@ff@Çk q*S?wa?x}淭쯜=xsb77-"?;<Q |nS=a5\yC?#Hd=xN$QzD}Dß z "F<r&Vѫnx~H됈^z\tP*r<@(B S[ ׾};S\t~L]R&ʀж7+t޾t{n,.DZl0g)kئ}ŀPѓ _fsw9? = ?3ɺњx7@Q v%Π飵Gӛ?́< rw DY/sy?$ЇE\}ux-|gî-'kz!cQ36Ѐpx%j":p?D$r4+?~\A {^ rԽ5o&zED33XV:zG :@92G9QaFop-GS rgWs$Hj%V$?NO׾9#b#>7\AHB;}w7ϱq8ɛ8!A5=? y~rZr?gRê7!]=ěcuz'+}ek߸SoRԍԗ^~_8[ Թh?;!ؑ:yu@\By;?19ѻ?oN =U)[fWֽY.\>gf՛{d0,GO5%bR1CwP8@hx EּSC |="\@Z׾Q緀 :^+CC.~>}]&0^G :~F@xp `w`O\(w({־%"dUpkt%k@}LwL ^g䈞CP*u(ԱLaКQ3VQz ȡ*= Ϫp+sBDECm+L8NSzo qRոAqiCr"%d3}j'o\V#;3e. kO׿3 ȳ@ )GAD/8Gd?ޯk9 8X qErC>tΞ:z⭟-w.nfFbz{6+:/1~"ڷD=(nMn(8}| 5pB؃D^G ׀=>GMr}fU#7$y?t;_|t?~mu՛ɠOhjoEWtڵzw.p3d+|I׼ѣ@J8$"y"gf5" Dnzjr"r@+a{urS<,τoG$n <G]@ȁL>DɪLKu$ yprQ+QXI:s\=87x\$8wLGAH%*wL>P׾ AsE*FE_pSϵEw|F!-?=vM̎n-]קu-ܞ۶ԙgQ>EO ;@V?~ r.w*ɽ]^?[8~9<yAyz ;(:}>7'r J$'QD8|R# wIT׾tm; s豚\>L@L {B<@8zo3D\@ n .(Cϟ=u[fv?4ܾ᳏vcG?9Bv蹘\AO\ " xr'4^77PzA\@rq>O#?}3CX+uQTLD C~Z\@K>jC}@k_׾3 n>Xrggs8)飹p@hm?9튧/@f:n3O>O)=Aj{S ȡE{uxeӁ_޸{AS}v@ }!A x3ՙr7F 0D@ rAD)׿1~u^zs=^3C>2ѧ2УrrO\pЇ?vo D-G<ՀCd0H"d |. jzr|=њk5[@%zy&_Fo+ߴo#(>Z5'}=m; 8a=?7Un ~xǤoR>eʙ2}wlp`O\Fk׀~@h;s>"F0P} dszw 8uG|s y?&nȃŵo{ 7) 6o#wC qM 5+PԤֲԞ ЉQ+@u$(n9 Ds}k_ 订njdΐ;?\P%}< Ig(4X ׇνu'ݎ6k7չ{ ʝ?!q o.w@T7ĺ'7_zK?6Q1=Z?EG-:@!]p "X`G10 H M h~m/r5pQ |xutQG0O{\@dInMn OH`D S9pe!q9~X< jӚ}vUG@W5=w S }C@ļ-H9P{׿MupcH`5"z ??@S=#^;RǏGE6WX Hk]ָ 8W ZA>P׾LAۊUQ7R E׵@m ~"!F|Bs77Gk-܎#N*鯺/|5{ 7cS+;,귢 ?MaTY/7'< h}p;1b?W5~b衟8}ޒQ{{q{m{qnu!8uU9AƉ?27𻊛(gܲtc1ּ D$7b 0Cnq3 NCC>N'Z=8}w>(dʁo9G@<ҫ?ρAkFB `sײ-@a oCQ$:?^@Dq@k_׾3]T٢n+r-3St.@QxPt:!ǺWӺn ?^#w~s9wX~,d=^ y).tgb~LJp} s{pIk@ C৪unѓ"=ϣHsB:sr~ 1]F>w\ oWx6}sz"1pS~,R `N zo3 àc@ YFA񃒵oyDF?O33xܡyr?}^"Hz7M'@" A!8}2 dbÞ?C+7@!S5K@7 4C. j>J ڭC@ P'#7cP.3{sf.;rgsx9UGopr@ Ε\]@{5J$W"DYFh9[@83Gޘ~`Gj?>c"oM>9+D0X9>{-3>(BУhXˇTµ}k_$UO7R~W7TtN;-Bt$sVoɅB s͏N#iݵ?;?[/ywl5So _W},7 C . ?;mz/o=vZ1;jp| Osr?O\Wqaf pXnj$ ~wLKA"V1O| %w3sr#=E=@G5=O''}[?ޥ.z@BX j\23` qM ޱ|Q! D rz<pZzߔ<="91) 8A@(QJaOr|L̘]yy^1;qt*Q8v]?;/= ~#>늷ƻ>QS9?q(:8~$g=B|BA'ȣ QC|3y. uT@!qx|M Q D#@Ѥ}p#<<b.\Ny&Dm-\׾LAEo-:^ԍ={*SzU:Ah}}gec^{ݎKeNW՝l= u߶X~Pug=e?&-:1c4{I7 1iD7 .>|ȠA V "{C4= @ J:@PFBmW2>w D!xDG =.ּyn}"0\PBܡ<=(C7 ydFԉ<x&q9$wYt+ W @@NAHy.B|p.cٸUpZ'?O|'_ GF̴/== .= y7ռI!oX󆶼y岙= ~ϟ`=yP=TrV Pnrb~]?] PEDmopy.7@5) rE=@DP'渀rc}p \AD\>4 ( ϔYgRPIЇ?^YV Ѓx90'Pt p~}k_wECEW_~+0|ﲨQL3?Zn;?sG˾W/.x ~ zW n[~ y48 @3 $ߊVWMϝf^ j5o])dyog2Ї|E@%ݾ X<_ Ca!DTP\㱟7jAQ6xNON57x8~ 4^;&Wy@ roUI,GDur':|? OZES"0ZOT B>w\p|L׾չG]>s$[qH ? ;!)> 8.@O>.==se+LcFAsZȃÊ7}{?#rh "h 0D7N\X`oa{>宕Ǣyy>(slVdS)A+#0-B6#}с|>Gz\GD!>n ٿi?Ͼ @}s?%q-SV@O*uo3|1St׾&_h' ܉}>M׺z5)=\\>8r@N8ġ'J]?d՛@ $nu"*AyC' &?RtT <? (s'@=  F! E"fE|nQj>峌~M{ADuoYfRPC^^:o!=+:La\=u~@ `OtyV{?@r!f y&%FA@"D7jV$@'{##fm-\׾L@E-Fdѯ~~&..NE$h91=5p{ UOm>PYUfyd$s";?'mǏֽ,7׏R{@8d?د{+f+teQE'cb \yW™Vrn w9@BHONa(GGC !gQs]蓣Y>xؓ;r (>y/s}r=(j8]gY/jC'7"= XG>U+#o##=d}S}&w㵁>pxL9:}ѵ qq'[@HDm#p%xDu9 $. uE8so8 G8ˁoԟlvʣh䝟ˏޱS >"<^'@&sx kn}kߙf޹ xZ,C -UojqHLϨ5pC=;wgeO]u3`gfiw}8w~mť\?8V{ʢ; cf%, o)wX\Uh5Z6d 믮~;jЇv=7w%GV UxpY\ S_@]D\>nb@ˇyA8~'F{׏7A&`WTiA=q(x@r־qG!=41>!f Xt8nCZ{,r B=$y|́B>㞏F$jrS GgQZЧrȡ\qM 4mI"}@wӵoRӗ.@HP |yh˭W잿o䝟߱9G@Bjأ57YT9{\3{ ɕC0Ȅ3ȕzd}Hg%$KUD<q#~  <3P yp"Wccq@@InXD|ѫo3̉'9K$7{H PAk_׾3 }/]~+gk7o?R |"ĺ#ٶO$T1+; B@uP: 9[>m+..y0m_VwYVdǠ;~z ]?A OqPZ~Iw~& qycpK<7hOnX;"z@D8{>5b9;J8:d? ]=`d7r=C^t(!DM!_:N w~rCc="G@/E{$$7{PR A {9gxG.+,HN Za$0-u囬 1q=u VrsGWi ׫"k;@;S}׏Z8Y*WSG$O@E|M<'(o?~‡Ʈj(o߿;1yA X;4G!ҋ+ y!u =(wгuq wIoޏE r uX#@k߈@EWHּY  70(q~aVղH.Jֿ{@@rq%9T|. JN>C~׾}g:Xn>Rr/ l)`N"B@]95WP{qw_]7ض+P懧 rÝogW[@=]w^5_}~{&sن Ǣ3gP<2T7p KVSoX>,:qYmᏃ)[@1 p(3 A 9g `y0' yC v >{B3}bo<ҺHkd3=pT%;; y ~.? x$&kD x\=#. PGea +ߨQgYɭu=>a[t{vwPTks׿CĽ\@~]Up$8~,pDDqS ܑ=&rO~TZ _F,+f8#]sl?3--_aVꛢGRCm?4FCcc1?NnGP$Οa)p(-W0k@:#D7Dp$ΞsG׾ywЇWch ׾Fr#HAdkwH=vgL*u_{WBU!H+ "as*r5`%TJ6H" s>oY6 kٽ|0x4Q-? w<2C!*%nkk; pҥIےz 3ڤoo_rt ϥIcPb 9" 4o7L]!r$k`Haɳ>6Qb8{ bM$ 4?޲S_-;޲UoU3-]ޒcN{d\?}T>y@Bn,71 sXֿM=j؞ϣ drǏ8XftU٭Co]*yT?5-\ L!O=C!>@$ IG뛚E]{#`Hn|SsY&}uԮ Ӄ? ~@4*AB}L@S-TB b#'S 5jM!#g=f Ote=f}? p'Ȥk*~CO%:C~B+[F.C.E 2怠$ϹӇ's|PSpD۳6y=q̭;b}5't|P]?K=}$PoHh~Ӝ RbQod{ Ü:A֧ }XVIP%*]At%u97=*:sn "p'+\ݟR`oޫrj". ﵎kk;@Т[z 5t~R߅ \?k}#>N\ާVF`O RϋjM]sq{wLC9/J`dѲ;U|@9d@&@ @{+]onoٿЯ T ho$ @VY4Jг |[@eF M=<) =~]&Pp`sq:{Y ~ X]}ּb@~$#g5p8Jdj !o }=Ϲ󓯂`+=!>x#HA}8}FjND*{O7N<ΏѕpA D (Br uo7ϩ}nB\8@V X` VI *9kYF.}$L*8娪e",@ȢDjtٳ-~ѿNo=y}y9w}Up&W#QVItp#tX\AW,DG@d=:*Do+aDp;P[nQgK j8'G@HGzC0Hc&G tCѨG#:8NMwkk;@бIK5Nl92is|՛  S>Z7v;fm"[zW + ^Hci|Sto%c*c2dz5p9r|g3r/:vO8z4?UǢh|+ ־-HcՊ[;B>zZo iv@"Yz Oԋ?=f@=?YD҈jVlOʷ~$?zHGFD>h^%+Ct\@"z?Ś7˧OX标=>DD-n ux-G? D 97hQo1s|GPnQ?1'ȓO a^B!z~ʚh 7@HydMB 4{:qĦo77ؒ6ҽk?}2pr.ߑwϡ=ᎂ "Py"CN ,Rs=ZϾ4GA=Ṕ=j5oԁ# (?*怟GOʃuo PsCG@;: ?!]@4u`r@28A(dZzϓ%yq!u?/AO%#3V = S<ދncTR(~ u!FJ'9qm[?~WtCL]?o}itLnws L1*5p'8>O| #C. zZC |}(px}rfrC<^G-. p0duLZӗCN*` uo>Zn9r; um# Hod7 u`H@~Z~~~Z>]熾_Z2Kc1tyT] 8_׎B]vrbկ{AK+fG3dk$?rvoI@KVi ȝ?lj)/ZtOgM dfw$L9q@&?}ǠkpPU"kpu' Ȳ-ړ5O4W.z5 C\@O-! :#$GjO)iT8<6r 5^F\R@uv=V U@Ȥ't5G@50ȓ8@Ex,r~(p%Dx~hTpTЧXF @~p?]- Dqhϴ"krAԪ#[?f+|\k ?@P"xC?@}[~~~!::Τ^CM'{[Ϛ=Dn#$!EGqoѩ[ncҍ:,;"|~n&KC9&'@1~3c^3"7? ȝ@9 Ҿޑ˷ ~/̢)p6P[*2ӏj[VŅ.Xѽ:7n7.u>  t5p{S)F̀;̨WǏԨtPshpP>\O ~gS |<'s8J0;|\@C֗^z"c{ zAwq,I-Οi4 8P.@>}rgȭfo OrԻb'G2y!}ȣ CDZ.tY ~-b[ӕpȣ1Vd=q8!g)Wy>5މ3^8lf+wGNr EOxZN9'G'ӇPzG{DN$q7cg}? Ç= zDus#PH@z hs 1'>w;@Mh !P LRǏ.!ޕ?%XwG"PO(7;^#@Pjkk^Ck3tV{^K5P84@Yow}MOѽ;{~m"lڡAYr;ϼ_P+zPz s'E=s9lL ;'Ly$<>9 (Apsuoۻ{7wH[:=}w.8=*88}j!{ я}9ЋW[?=C? Mf}c+A|pyCmЇCno>맪=_x37}᝟'\L9v 8+#" ^&A@}8|(Q{{?*9uoAO!ܩ$=:)z ]@D?uo= rGr?A<ɳwt!fQ?xX s#z=DwW گگﰂ@6'֤Ňg8䤵@m^~9:{lF{C\o_u{ nx39%n^M^^7kpiǏ 9nyѾHAg) 1)R1y[@{QB@T+dnCppzn5['[@ O>VqFΠ  }GVS;{ /پ  -a3b9Rc tO[?Z+a8جS7W\}靟 ,>A pX f.=M@G֏=DA #ßЧ- . dh@r(jz HB'wp\?~xBkk;@в{z 1iWst5|@B>'0(p( _չۺ'suk>ڶm[216:d,Mdҙm-vۧ9 ASV}ZҫǢ;~&18I~Ǝʠ!+qcہwpU0~X\K&vVս[6x̴.}7=%w8}\V_L B z׏A> ֽЇ׏~C#'pKNc)*((3/=wAf~zR<=~Ab;C/GA郶qIk<l׈a J5 DqO }=.\?& '??*n xkrފZ?Vя&Oݟ?V2yi[.[:᝟|;O="&\?Q0(:} )ֿefȁ #NLk Uo|6du!2N^J p=9}tWg<8'l?Vvae!P?:ݟE ~g3v~wrc :1cA빬~6.9tPܷ>u ۲z ݵpڡ^n@5AZ`9@p3uxM | #Q0H x9}:~:?ԦUo*>Ԭ|?(+Lt[9@=F (v)Qy_@ q(>g9s?%uc +> qP7A>/a !:U8|p% ˁ=%98~^ ;@sB@0(r)ASW@xm11g5 Hs@{ Q1?sǖOFgѓgݷ4ds@z,(. !jZk਑rS))k?=jN#DdL ~;Y. չ"-WC!'j' @B3 TP C @Q {X<?@ R'Fu( *#`7#f/oAP__nta֦+nLg?ݤ&~d՛0#׻?>H\A+! 8yO x޽f.@:?|ɋ?c%lE>rֿ?}o33*(gXO72esgj۬򭽡;~tZ?kjrWUW {~~c@׾'ꩢpup= `O ?RF CMgMrz\~?Ե{@{CM5@؃3?^񞫹+)EX >"''ț Z r0$@@ms[k$|wP@hbw5Ο`x@p4>GAO,sf]5]=XF)>No,\㴱Mi~LύX/>h7Q]?J$+ވk?A?c-)ŪyY|uoS.Xr ?Hf!Ȼ>Y 1Ob훸ȣo|TM s=gD.4^&]fJS5s g@# \4,hz&z qD>}kk;@И>5>83񤋒򬷨. T=7` ''Yyk7>sG{6SWԹ[2ɋ%s\ɶVLMCp,Oewh槴l٪A \@2O_{/+.ji3cjϑǧ?g $pd\Vd' OY͠`vtO- U!ή.lx{o^C}3# ҕoju#/c~\d?"1aV +s]fy1S4ph Rz.oc9QwyphSFL=Y f8{oB 0HA/I/B>"͖+ȫ(}u 艸 \@9yTx'^FOG>c(v 7s;>zǏ|Xa36WΝpe"@t,A@ @ }M@n#3iG!}qI5oxQjt8   ߈ȕRS*j+T"n޻H0(pXV5eB r#@ rC  կ#ʚ7pIm@!P rjB-jkkMWꁤSs*)VPtȁAphWu7<ÝŻ^o{J?.@7Тfu,9@o*AC 130_@d Ȝ?pmsJǜKkNJ&v~ d?8pǢ  -i;~ҙI@?Z:޼{Փ7u/{[q_W?yO߼D=M~=dopdPG s?Bڳ. r< =,@yި#OMۇH@ q(B8}7C*O(=wBgR@D8~z5T{5pQCf AQ?eǤ@H]@&V8"\AS?$u ]V |p5_A~,wSESB5}@o 4c59p&r>9@}ޞcGO:qm~VLĚm9(=Z#c\@Ԛ!@z#Z {q0TɡA y6r>C=+;@ŝPDǏI>Df\ϩPՋW̱H$ɪ7@|2xc=>? } A"oCCN ܩ>8<"EzaN_? ] ~~~_*icRIZv¤?=eGs B }s+*s{1T*:߹&9*[TSk>ٹl[>s օ-+ |rv@9Ģ<7pd?ӺUpSҢ%tҳ r q?I uocami+SiK\D@-;2cr'}\+u>~k='sr/JE{oع홫Zo(9.;BH-'AH:{4/+ި\GNS]`%GT DR  QpX𡯫׽u\~#"EN־將)'rLY <zt<'?SSc ?@4 8T|?`PYhҀ$;1/[/[6P#lzzdK~\> n|#(A Rp^A@Q7 CAq=6]>8HAv-S~qPg(MItB" Ԭ ?׏)?@CkSx&z(Z< A~h^qD d~2׏^sH~|fGB~~~1NZҶ^L:i?_/%Htrvr'GA&f8|<. @u}<˟"z?g>Y"k^҃€;{ @gc ٭8Mc?\@_@\ P~h|NESlRr7UgrGwp3 w-|$l6<:>{;+f{&so@l @w]=|cž T'Ť;S[zb@$w~4f2$N!8ȃ;!T V #}+ݐt ] A}>@<?Df }> 8}_I jE(tx-H'H{3 UOo z ~QNCkS'B}<" PH@$fMV@(wC{yb@xC^^?%B7ȁ>8J@>0w? { Ҿ;;@&f{C־^Moxg3u~^м\@&zC8;{֙!nQ њT5 :8p}r~T@%!J/\ AV[/ DI. (Rs}򾓧s5 HJ bSx@ ?j R. ־z|=1" А?@($z*8󇹕گگs8֤^CmN:/yI_uH=V㧪y|6 w;_mxoI*?]G? XyӢS<0PI5(9^-20YbGIPe/&gϲU ;?KN~!ivq?-|X>Y>ӟmȠ G9 TeFw ~gɻ~ܝܹV?&[ ;}Q7aOR1}i|ֲQN'vgN ԡffryk5y JU9C~CDthA7 ܀~}b\! *5p/k$, >\汄@j ?"]k=zds soB j`9Gz.>3Up(F A#VAq:ylj= Ϯt{'8ѻA| (DC$WGɓy`C8{=f;C u4A@  k> {HAZ88}8ny4惻~07y`^l7~* V}Cr]t͛Z]?V#yd'FCN~CDeF@ bOL kkI%IϑICS D.N CfO|Yg,kǢզT[{swuf'_ڱmufҊgm!AvhI&b%@(9*?w~, .qTǏj_62Kw~f}ǒ8{OVȢ O;Q kgçg]3)EnBb[~:.;Ad}"9D8rЧGr#p~bq@ A18DY@G(s!h~?^#jGA|#Z! SK47'EX;~Tzeݛ  D}AX'=='f AGP v\pk!GA' 8@}9+P֏=7zM*sM3 /ݱ*;{GY7jAӵozy(\>7r ַXN@8~?PBq<\w,"{uoo<G P9G׽@D $7=z:S4HMHL@Up{-XBwD9rj?9;@zǢ|گگ@ hutRL:zh/y[ΗS,i!O?ޏЗ@rOЇ>+@vϺ/^uOWʉ+ӹ뇞k}M]ܒ58t`3dH֡4ֶ}Nts7Acrd@\<}Ynq#+mꞰkz8'g O>T'4}P}>JOsW 8O?kRtzKj?(>!J90z^8A$㰆F(լ֏:x>Uo@쑞@;|?x훿+׾ūbŰG"`GE_?Yo@Gy(@e@&ԺM?BG S ;C )oūh. ?x@AB1 B|<p x$7ʷpj"8Oe~l{&GNr陆w~~rWfϠ'nC"D9 \g(th5p%&Z$ݴ!Dr|b~~2<{'GI=>sPXjunwTʠDqYCN]@"R?qs)%^e:P 91{Zf__-L"iGRz~MR?B#<>U"9 {}޾koah_.+]?`GCBd_;VzVES􎪠 E&9  2L+yv7Oǝ@x>8xn>ׇ+E@O?@{Ɋ7,^ܡGT+y:Cj"@(B*8D*A q    5p@*o?XẠX}` d}=ԥ d&rcѡ5Gw"qY"}qpGub.`\'+B!dUp ~8RH=GR'Q] !ɑxӈ͟=G8|',2l;olt[]@R{f)H *Pwȉ= S>y!@*:}EbѤ@ GAZ>>3zy$FAU,|<f{;? <9z뇜3'? ȤI,@h<v[__A@1Iw%Igչ~$hFqit (Ӈ{sD@S`%C^7:߿ @pzщ{f Ǥ9g!qo)/@3u'Av^@8;<" -?Kw.<wL2cЧL{h@~!PvHoXf)[qXN4_g'>DxN `OC1){ 製,Z8u"ڜoDrAuyD쩻 >@ ?@ W WtH P~fw2@x^ySb ;zc{;ߪ(ko@TLB[T^ -CPFbEmp' 1m41MGM\kwgT$|k}upobHjBZ") %| k߀>X ( ȠtaǪ[.~I{-/55OY~R>G>}AAUxd$Iҧ:M WhcZ8$9C GA!#}@`X1}Ԑ>j-w+}Mc!:#1Cji %u ;@RZS=J UYVu 9?#2H B? d-\%_%_EV!Q{q'KUoHN=~ $cBZ o>Hs=/;{J&R=կ{?V˞*gӔ{QZ|ƩrנmcƖ?$AVӛ=kZkZg1g?$L}, >Y^Fesfka$yfNʜFdCL[@ Jʠ9?n01jh^1ꭱ+g2d548bY|_9lKMvsK(X|fd%=| [ 'L~P }{ɐ)ᮟaʀVC ۧ Cg>Sm?0Y40yZs=kuWWGiqbW~aw@g/԰'jN/REw/A%WBw(]8VB ՜! ܟ?Uo؜8h@gQ8NYɀ@w Wd'29˱XfrD'q(7({2#c!$PuWp tWHw񐡫Irb:Au@/cꃔ0؟% K#8ހt0N0PT/q?pP]i8Ubdi% 9]jl$ʜ0 R2ʭ牳9Ԓ:_j?YlnBRTiU?XlyjYs>顖sK~{AGf?=;@R$up #z'`zRsiE?5 UpRC@Bz KȝBw&FjQggJ=-t ;ǯJI;}-y;j=7ѓB"xP H!k@Z;P()`в@JDO%_%_%_$^%rDM#'E4ZGR{SA^'5!t+~sY={5Wh.U:__*-G6^7U^늮kl^^4zS> gWuVq8'rOhJ(TЊKh(_tզ^fpɍ$$J`F uj:zx>Yq}޳'GɇλgY]o#zk4u~~:*ͯ{Yܾ>*|DDРrEEaR@R+&, ڛg~}u:^IH$D"Og+O,Qizȥ|?̠QG ʌO vlS)A ȋ ;]^5J! 䏀! |} (<j[@^p6lV!}BH* u"zHsސ?7%I 9߀n6h&rHqn,\DeP1^0;m/B^yكr8DG@@KAA_(fwgB$BePD80܄g%̥TwN0WAHwO۳*}NhR Ld҃?2rhrG9]=psInIt>*H *|lUKho$U>TtypU͉RS/ _]U#AqoTU t~KD>nZK# \H$DwvvLJ[&o@:̚Hl >ib^;$=o%+uI7 `? f>Ù$Uk\R=s=#23ĐSʷ`&0B(+H;17 TwR>ȟlw'6)G j@į~S+X \f5Mϯ/~k(fĸKAaN#~:zd{KimN>!uۥ{_ >΋JfF.4>z2[*#9 f`Uo"Ev4sgU΂V< wUkX6|MFfY8xbrkI:V%?ڧ񣽽cGXe`q{'I H =#}K\EW$D";?m]&}6*gO @oԆO_pIދ!`? g/B͐= GpfF $~잷r; 頠 ̹ !3k\G =v٣$}ZgtVJdGfȟ*ĝ>zfi>I7{Ԡ''|H?V]A]Γj̸'%Iz#s&%eP/~ytDi,^<#<'o+{I I *Ƌ?@2(qgokrRĶwzcը zX\|jϩ{:4%SDhJrfؿPOEЀ~VH.{OG\]"7vL]"KUsISR#."耑tfI ?O R@ HPHξYctr*~5Q4 Lѳ~L tѵ >Z΁=gީ3ΕD"H$_m;wuL%0d7{@ㅏ׼3E38F6 CU׿Qd>7jH H"0DǿCo2 쥐{cr*w kHrogCn V$‡>S>d3*y( c'=Z@Pp7zRh KpΧ!v@_^{BEHys-ӷpXU1:GxQP>̱ٺ/v ?E}͇F8~C[!UN_~Tgտ֤O]%PZ?dcw>?$O>ÿICJvmU Ϸ#k/W ʅҁWJ?bZc!Ҿz8_:.H]zJ ;S5F2]c(+Ls c C9GyXHb޺,ʡJ=)=\J=uYm@AD>t}̕*}ThHz%#.{?5Ll> 8 CXpf=RAp"(#{fTIP%P8CowaCuI z^x=+̋@2(. z?ggW 2ܡf3>VrJ  BswG>e:8DH$,}~v{Q/~{VED_n&ĘDԋzAD'OYDq 1zfǼ y!鞪Ϯ!߃_ kxl~$ОghNZ`"@:AE4>9wo*" )>׏O!;ɵcn ,\~b~`ݹ"sf^@㵑5&ڼhU%PT,9/΁Y[Q73^p7Q'Avmf"b\-vw? vl= ps<]dCɦ=O/I!&8]h!VC% G(D#UM~u:}t{z5 / '|j+.Tm@1hϒH w'%2*Eƌ?@yy%tXaB$@}$H*~vd3eArLs nZl~3\hg`SP,xcÃ] qZT&X2 ^ɱ#n#G6?rgױ0|޿sWqHxG xp-X{֛lJ킲 ^ι^'pGL4Q m)uu(choUٷvӇs6.q`@2lY36 #%L9\ LnyN`AwG0vHksœ0lR2Чj3ܕդG%~nИCjsV% Az͉TEVJ`9EB{ry K  `$C#%ƃ za\yGeiѶ Ӻ,b5\W/ ;__Zu1"ЗS~ylrЁ?tI'7\E{1`HTnɏs6/xC īRdᘬD(GQHWL@ XT(}˟Aruqb@ܼlٵۛt)19#VF7f|w_nm_+m\5w%2xx `@]>2 ŷ/A=W79q1T]k8yϬn` 3A 9RsDW ϕpdIdkډ:bԪnJ5Y gdP͎-_-%2\tӖ? \vV32aρgȴ f>4]Ѐ|7KX6RxΣ"AgbJ)BdeA nguCCNo=Vi=xoϪW.Ԡ gNj"SZF<'i_a/|{Si, >PCm+!0+LA\< .9 . ǵV/5Drhego/n(lLJ (@x 2a>z z V{<(pZ3Wj0~iubPAda}I'෦~{Asqs㚰7jz>%+աWL |~av3w8œ0 HY<1e&=c5:!'K|j }XtI't,40 1HA,cfgRV.Д#i#R:# w5|ݞ^oώ_+[*;Faa;:hnxoϬܺt/Bx]gC<o2Fq;"YhA4SµNJcc?66hrD;vnk#Fjކ?|%P|D޼|」v{{)jXmg\)OﻓN%f$10§V5["}C -XqWu ʑ:OnSfrS4XV7qt=QMx 4v'i)[ץ#}1OR;tSplghnQLl5M3T6rUR)Xy&";uYOV)^\9R?"Ӂm?DhG XZɏkzdUv(H꿏@50.M? a[5ĉkXgMwϏbVݻڏ93̯s?kn*2wv=@䘙!jZ0=|>oHٷ~’0;,%ef4Y Ϭ< cFoo{߹r.[U|DqeW]ClQ^d ffoAPGd59g;RO,O՗vi@nc@ܯm3V&GFo &Ip Go.!B}DhOR'NX#WQSpgN(5R<[cQw#x'Uًʙf(YQ8)ΔQSz.B /D- b@I4ھiv}fIp=3QO:y59'{#P,  ̃DeCtL-r-. b}tw}VRũN!3C Ⱥ@ik:餓N:=Nb:y _x$$*n቏1? .@z rl)`t;uvbA{*rdJyjGod, +hX-sx⍏7;[| )֛¾1r7w8ZqPM(ἌA@â. ƉvP\E=,w<?ֺm/ːk|&ҥS/a¢4߽C^J0qtGBDϹɁL-y>DnIO`k! !=j+áکVav7IP8]57VO¨ 0 Q! 9Ufő.12j.:-atev̟}uM|"!055 c66)PQcHGR#`%{Vt#x|E]L糩*.ZG(;d0 X]zMЉ>ӢyJ(΋g%T|ld1QC .t%Ϊ'bp1(UBTp7'Lm|OUKSjq# j=@CC}[>PDdUF5T; L >0M zYv%sN;G&Qbp4F'D?>&-TGu~c5juI't15/BdA[8ua gGC=rDfk'gxԳS+&ɟ@7/;w9d7>j078[@E:^my83w axReᄆ7@a/x윂8>nڿ6'~ 4`([wgZ]<^w=݆ܞH˽G~kh+^;oan\?{?A50D8V,V*;ihtTV$x^c0 "zuԵJ(1%+oASNIډNZPFT^ #Nf:,vHrA#!z.zT$խL0a,De2Z2` }tJ_qQ# RlsG~zN$GIG$ \ρԢ'`ֱUW ǒKT]SrJ8*v^hޠ>M#H4QN@WC d6Tߤy8v\' B0.bn k MͳBT̃@Ӂ 5s?m Vf!<ƺMoҺk؜R,lЉ ɼ<[ :,2]C׀x\V)uNxi}餓N:w)6d|B2HĢ`aόq<")m@P1 O/h~xyö5 nfܯn^ppO燗wm"({KŅ-|t<߹d| /ýp2%|.Y^F:q><+np?x&kVSUe/`*6q0Ls[/Nբv|ۗ֊9[>zis:&(s'$l8cd^z)A&}I 5>>õGF')J%]8v+!ǃ<LDRJ'  n4E`Ӡ"HoS=W ҍ]Gk?(+¼n"& eQ@#X>>iN>^]:mx5I-0]2RNpK)+i 8M)ՙlwmkHDqw^f  ) ]I܃;5Z(2T\ۘE޵[[=,і^^zqķRk+~չa.A}Ew~5o;@ZiJʕ񧎼z83Pȋ#u7xOxܗكbzmQB8*a5@KS;~;87e:yAK#ڑ3䴀 =Dn:GBpvKDc-U 1:];t1t!l! 6}/h#F'v/aoVKvVzr+_6[yP?듰^ D"B;S #[I@L$\|hlleP( :$ˉ2SIxJ=Ej63Mt 4Ϣ? (KDXi=*헧&fJ9SijwKhzf{Sre+=3Y@?y`Sl[s 8w:M <\į[@m]N:餓N~ (|% ) kg7iFIk›<[ۖN{~ۥsU̓f4~;jD1;=Dm}0sTRMt!t{&= fr*|f_Z|+F`ڂZ1@.sBcD=1BmWFR>{y?7V,hz߻ŭyD'Tܐ#D>*C~]9+SyL)=cl*.v8)0O63r!'9镊~A1cn|IMCz!Jӳ* AṈKdXQ`U G lYQm8zuW&^c R]-K>O3:=g Eoj:X*շκ$lLH\oyNȨzH JkT25ZuP2r&f%)$oy)^R :GPx'p ;&7etI't[~V|a: ~xP* ^C83qXS49sT؋7{]:bwq7C|W`ch6u־ssq#` u,55k'&]S&c&|&ƍ0#wp60kD:?MO'5ٹfvo9@_d gGP QQ{?vGb rxw !dϢ2>W1[qaGTݧy/#RGhq4]Za KGhl?|{'.F oeuY>.b 6noyw3`1̯?왶$+foh7D&k̷n<Vp?tWlT>v j3&`PiO3kGð\\{|<7A-zaW6zߺ|̮nL5 Su4pMcGn栐.>˿K~vϠRTѹ%YN!]ֲAcJ'sj|'`Cq$eif= dPU^+r {%"΋-)2^3j[R)/G1d $60l_j 洑Oѯk5jI?I@-n\+\=n:dO^s̅S| kE#=M_<EKgq?R8+.#D& _ c\'?ƟH,Xx] ][ʡTFxuo\P}(jF]FҔRB2x15u4t t2;`q 'zCaɜel F:]O'tI'%Ȥ)L'7P~,R(i(M:?8^f~7|\;v\+{b ,?9nȡ;hL@ژUl;vzu?kn=<)=z͗1Xߩ_: rp22ޞ=(C;oބo`ŅMj6lm┛@;4Q&? @@i|ߵv޵=ONPpL}N` Tq?0wsmQY7{{!BKSP])xp^?]ӴN™A]IYvr.I3k #R}ğ畂&"RGgPtD|4]`\DcTP@)35X\Ӕ+<| N0jkj *EU/UqMY-6qup ~8ru}x,/L :UO/_Mur,f}z}<@P ="hʊA/l>=Kk"" _8ibSDZ"&pP8uOj.U8;}v;u+qs"D^I\dPkq֩i'ܤ0IIٙa.aoqi2H ls`$Pd?~DBҗ25u9 MRGßV5X^Q{ 'ꤓN:?>ØN~@| 84^h5n۟+xm8?#&Ǝ@y`z8rGk{z߿r GHJ޹O}ϭoӋYמFs/7ۃTr@;@>;m7ޱ'1H.^]2o|+=9i|;;;=b1zx<~7'wN/3K3 N]?,0药pF`8E (>CecFlLw$2R:l*צ6?Ԣyn5j]7|=b/H'Z\' E[YY^Ӊ9)MBU;_[R5_beC6Qwg,"2BɉGKz`n<1$ڐ_4eg0PhMsY ة۩34 0/NJ*&7rQHv̒*Ԙ.5MB9Svc@փiӠ lVg Tl+2vҘ+>#_z]wg>맬ξS4J&2jAq19kzx 5 ZhPL2#B (2+Ss:2=<AHyK2#&B2YG^LCϫFEBkai\\>~ Gfє,^N;03f֥/nƨ4iߵ<'.c}n3c0PY|WV~'zmHxKx0aCnZY^Qб̈x X`hRJi{* ]31q qyb]Cqpʨ}(d΄0$qB!3"pBR?~V>)s6spH ?gkAQ%W\׫2FQ;P%8M<t ZVrEFG!|;/)Dt!;PcC8) ")%PiFD~SSrFKguʑt={)hO:d.9pâvּEWgb^X;8VBwœ$3|H9H@ɜ,uIɪs 3P*@b"DaddȌ`hO"ːǥ=qyJH(>]H7Q`r\u B,1澉QgPz0P[ }/7y3Su:餓N:-?|Vu j.D/=j8>>4!C?/($u O~oQHfV!fr aksf{}Lm"'r&^rS;}J:E&~ܹQ 6Q3Səh#aaӓt|f?tI'?| 9L''u~~Gi9s4&e'>ȍq>9@g+kptN[>'f!n o{ܮo.ݢ}f ѳ. C s h6m;3?fn ~ܸW[۲7;`yDQnICPE{~>_{KbhN@Ħ׫;';3̞ !kzgK\"ͥB˰8+Bv嵃2WrD!c[Z8j-"Rs;( 5P"2cLrL]q+7n$*7$ MQHp!*p쇠˩c*%Iʭ7r:eT(9a|4DmN0Т Q*ej~7`IrAO볧|AŔL+A>xrD^,{C` R76y walu. 6-k&eoq- 3Jy<[a/j* ''3mxREg_$v~'IVҚ~$H8.u&M8^/ (<H$N:餓N7C.[?xi)5r Xۭ_q!>6{ʛ4S~!R:!9{߻ǫǰ1#);~zeSGg\ŵpapd4}wz%Ćy`ӮD5 ][S) PQc:.3%V)81a g,^ss46g9^PMt;9m?@d>Φ+d< R/73_z:X\I )OC@Y> |=SS 銋x9vDߥ /ni09EZ(ǍgԖDt?j=k'Is _g0d38͏g0i@Z*YgzuX- ξ.gFʡ{MSN;u~~v!mI't#~Sc?M; 8 a"VGK+۸!`u__P"o _~`.Mj^uco9$]6w:7mlކ1ܽڏ`{kG ~^hC̷:ׂ4>z)ڬvE0+/{˽*uj۽7qPгqy|3.ctJRE:tt(ά`Txf_GR#RT>ݻA6HRi .+z8ʂL7X7\3I6Po@> tuՙ!':=Ѹԇ5u\ShՈ"ss~Y jSqagg1:CsEN&H'N@[*eHf'(ñOcxWC[B ^Eӌ8% h`ڌYEVB5483"lN*"G:f=&m 1G.غQk'ҺZ&MHY核/'p >إQ:9J!0##6Ӣ}lT%Jgc=΂LC_3ȧ.+S |! ks]:jo߇Lhwǟ>r=+QN7 7>Kyܣfy/x}_sY=VlXhsп' 4pLnyO.mhqv`u~^s#~l資 CVegfDN. @肚ND|&ji4 ɓρCP3g?Ma2R'd_Q9`M!9ƝKjE Klq,z Bc" E`V -=]]-<`C_wmt΢fఘӌlWjH#Yimdn[s@V*OJPDHk *=,Es|_h|s^;t92V{K!zp TPW pcnJOx1>Z:ɀ Lglsu fJsBdR9;AI?e~.D0 ЄN#u3u 1 fovKə`?m;fq:餓N:-?{|05/ b9Y8ľFCŁr6-8kx#GD*T[˽o]>a3Tׂ/ 6G[ᄡT6n_\j{`^w5(e1ɅmF0CJA ,O=?@c@q&\)<-ư'QXG-"YMn,*%!4࿧/{z>˸Z@sH=⾎2rh`md/䒗1U4{d^E1URR:bN! Nn`u:K8AmcafNtVtOL_z"T"){A9Ykߞq?(0N ύKg' Zƶ^}QtZ9|mwS` (tn iQ.jP@E(gNeZMP1e^y:;d V tS81RQYc8q8d=R<IstI't9q=2m0'fӀ`4Ss#1$@mh#2ѕ; cG;W~xY5wҦˉP[vPFƥ{opCެhBHaZ/Q9QK ॏQ=~by=xeC7,)"U spON("O9Bq3PDJfRhW )gIoK欩料A:P#ѿiP\dqf3ѳ*כk~™@ Q@RRt[ )j"SE8Rȥƥ/ Ŋi ]Zv 1N sF[xh#)@"b+gECi'O*BvVн( *Hs>X] M\5H>fGEMs zL`w,8`?mrH>g6.|X^@6cPH^H'؃Q;G e368xѷ3;l2Q^Pl<,5,x=Vk`lV xzR.>`a) +teY%ýXx}#/`u8Q+Ǜ 0 ;oPKz:u mAAVuIaHg_rN aץ;mXP.MH@rҦ٠RAT~WY4w+䴣p#fڋAXBmr0Q٘[1-zY.1,R+jH?#{d.g]Ӆ+jUϷa I%ےͼF#p][6b%#k >I'(o 1q $ʢ:U @$%W'k ,u׈ZyZeΣCBq@D3I/#ItC0݈فr_$r4EbfFұH"߳:H:^K޹?'򃽑\7k7wƟ:|9:h[N-sVQliPC4kLo&Ljk8诨,vQ@ޛTe{??B9>a}S1:NRqMI.;\dUŷPr8YD3Ԝ:#-y3w2pcߠZyMdRrHѶx_3 x1W*t*Pm EkP8:Ei` HӲԚY53H*[^o$]3A]h/mx'vNmBW rsIPd`7vZv=e  P21;ǚιf!羫=fιл7F:Rjn?} ' s`$@@0p7 u`ߡ-x#->'(<@Œ7?T'7۰#dKG_<^ئ}VV?{7./Q}RhZ݁ɹcbщ"DYߗQ/4@ht~kAi\ݜ{[ uzn!e/{w(Hj "C(O_7l4pt]8uΓ~g4g;4̩&dƄji0Pb*@;+Xb,>u$D$9T!wuCTIp@483 Y~%Hn0d pR+ZtPLZ@"$ |\gy%k7aßltSG(Z$eHoU?'_n>&_ !4 &Tt :@=LpV9)D+ӑCAOy247%lLH蹃$3q@Pty1L^"$&itI5L2zf*#4-f|OԭLʷ@ n"֫lHJ >d:F*ļT̀߳ <ٸr~:餓N:yuL'/[ 2eXXg [!Ro|Uf21qK'Wnfn=гqGb}Z<9V-pZPq<߀i2Bq19x6ksDpS[xks_mĸraGkN4?Rm y1ʩΙ^bR@D!'=:-;͏3Ñ;4{ԝq\ ''D/%8cD6y%9ke!LxoEf mLxR:*-D9CdKdY3:9t>ggu95XyJ@' 5eʨ 43ff iJPq*EdV'J`荒vv*PǹM68q#'ѽuI't>?|iL'*-~,k }g p&>G"ȣH"l0@4h^խ5`6'cqf{o?~&AtFa[h־c-* *Д1ᤑ @m M7Rj1n2$t I}'z(]Y8맇֡xNV)m81az h'PsRYDD e`e>z~7M`Ii#L9N>~Ƌ##Hpj_5$iUOW7z\t ù䵷r]rp/)+D.uUu[U<5S3||MEe:&jG$hlwԨZ#lz?~jV] ZΒ:ht=Β4`'A3!(I+`FsAAj\Sy&hd$&@Nl8^^<)ߖW5=Ф`G.ѽuI't`?Wkÿ?;"+}fPBբX{]aa;f+ju4]˻7Tpnؑlǰdžcgc!w['tI'3<y$]'`vљ0&kbk4ȩM8@3`Pe)%% Vz*h~ywy7+s(nbos}Ձ[p'%›}9; [-Tr4iJ[ eq['O>24%x<޷AY[[Ϯ>?m|̲Rޭ}:kewpk}{ %Ӎ4Z_=\}pz~~ИpjOIJؔhڏ”EYUk!S|QfsּL?7눰MDŽd[ $],΅/v[?B'OSÄ+@ӓ63DoN{<vN5\a~z>8r)I't,? -ߚP40;sVyGrf}`#'\!+ג@\HG"j>[n=f3F%ʁ[/z]ހ>YwmqvqpO=x(&'Lj9Av6GO֧/״cW^u^?g7"vP^ 8BosWGw-Ɓ躨,S?OSӋjGRVE@2yY J$ڬr۸ ;͊R旳uH5 ݓ>uR8q?Sc+P#)$?͓ Rppk+aN!R&n Kӌ GFR i"pk.J 5T8_1Mϱ8a3Ȏ:ق !j e^taѧ)RTJl^QiDr6\*I0^кϴNǀ`t%U{- 7;kY_57}Plދ-frFg/ʎZzm"4;i>sip5ID7LPAd1\\}x$Pj"Is5fiȂ* Tvѽ} Vi"ɯN:餓 1KN~oGE: G+`}d5~v.,o:;,!>ּp@ܶ|BUC]xDոwrM Fp&flߞM[#}7=1J_F_^r2>5K18v%5$]KZH*IBe-Vg eThqaPDJJsrxaT75d&JG^%S_.b )8KV݅Sgz=`U҃4Lp`|Vy\<)[mrʢm9ӪJ mkg8Gd%N~JS xͫ } ta/VY|b"蝩$u2T%=D@G ƚ 3&[ܥUI(I'te1 .c"#klrN HD^;sOПuƳNOdH"Dܰ5]ڜ|cۛ8 p\3?cϊ.`ưmP6cI9mVP ι_/O,l7.|?{ #bF*<ҡ`+n'/"[20N? \EcnYs,H:;R@’UI1HNׅ6Nx.Dy+4 0+$RB'̦K%s yCmKZkN:餓G<'1ubGr#GQ4lMfy FB(N`Oyp1?}j߫㏬ߦʢ׻wsqheBf{Am[OZA//폮O'26CdL'b"3:d(T< "g-W95Y]{Ck h'#$% Pihi*%d/ǟdgHܪ` iJz ԟj5F3Ǟhf7ysOvI't>?q}2mM>~?1af69Jy!+|hga~mT7"(ڣ)ȁFý>me pwq|dˇ^S ^sȶbocig鹫8fz2ai?c2FFa0MVPz/,og浍׮kON6!чV^}v4m4鲶߽~KOhȥ/\~_?p⦎1ˢ2qt3W;;(Um5Pȍg/BQZzə@{NwxPM' 1ϊS6awjfr u&2YfS Hg#EN*$6$:A >!Q,d*MJE="%hPGGēu46#ή8x=7sP*D%}̐ȳ)U~Ql'BrGϐ2&x7U#OCt&xf*Q5͇T8%ypZ_EvRӝY:.32%w~'኉`B ѢyD,Odx^ qN@3불+<@uiGa!{h.;/~ѽuI't>?OO~V0t,8``DQ#j7rwM}IJgm gXK#tʸL͆ rf񟬾23~_aur{dXF5^ ieR?kh0_ .m~pp Ww~].:_ "L.r qro~?|yiC.o'ADԩoP*xY6ltq.YSJmŽ7BQ4~B=!&g.c@:$2oIu~UB@Qu !6w @q0} g 2 Dvٲ$ҖcCH$ ` 9wenΦ?v;<'Y%WCLHYt,^B +ߖkWv6+@(ByIO$ԛDgGݖ@$r&D`l#IĎ%ɹQEu $3@D+M'&S|rwA]^̮ՂǦ8x)nDsH ^,VaVP9U(`BσMdeY`}  #y4rqdѶѽuI't>?{|3NO2~~e@v c0LP+8~n GĹ"^lZg4r)T$fwn{%Jfwgjbd"*E(K}hy_aYaكaYn6Nf1g[|;^~,˽O4ʃIm5HP QjCgWS͝@.ؿ;|?>q뚡,p0ڸ М Pd.AϟGT'.*93NԚ9Ciq/:W=iIg̟Q")B̌Itp3m^&E|t)q,sy͙_V'y7|| !T 9xV=;Vq~4?䤭fvpȨf:[ޗ(+^|wLdrF}Q[N1di>H RK~!mʐ0M4 ˲deMAv&J~1%? SZҦŰCdUCi%"pw\fC̱TGKcacXKю u,Qf^Zf5Oz&p`",g S `^sм=WL)o(N:餓x'!1Mjlu=@2:Jм˪ȷy8{17U;3E""m_]En~t~K%A8K7%T C5By{k~w 됁 GK.x5BwPwQvz=%e!(7^;l{R/^_{qVH~ũḫ8$*G׊؃TVlEKϊ?2N@8/"nv5GQ0 WJŭ+TpcQ8wcg*(jVcտRu_:YͫcP}*²g.WGT(@gBm,C::--@CwLe #TFq:, Q>(ɜmԵŢ-[3T-LQ/@GKN AYXh DaY`DGLP#艇s-8m Q|'x=j(r?M7hJLHtf֣kd v нkhy1)ΔμNiPuAP84@6'%@3k5 TEKrNd~; jyHh?tI'O`/| ͮ I}x҆i(4BVַp)R3&#ڠ6N"-yAd94mG|׸aq+ol偷s)P4Q;Pq1f?8{isQ J9=??뾷?@Q&s33F;q ms/^<~e__H7z)+*"#%D;k(/ /^v2Ca?o>fD$٩B;t %pApޤto>N=&m_ |W;h]Ӵ;KOyXѵ|wی4>3PA w'1ֆ@#pj3O`쎬o4P`f8[>V9JϓlyNPЪ,l}_8t|.뛬 YZq nhi枢 @Gsu]탹õџn/SXLdM;}kh| 4 "'%t| JA:8r?<CRRhM3̹ J۔ AVx]G$IjFݫ#n6EK/N.i|tQ9Ɏ8^g"@4HV>ϜɱyV'arJ8w siz('{cn?YTl<9(ՀYƂ3! e/? t&9rDž.9`aQz/"== ՙkԒr}&q: cjj"5rmNGSxv1zL}Hic:mZA㍠XP}bA(] ㋋ JVy?**@j{v֙ʍWjժUv@62to߫F@ٮY{ײEDOdژHdP*n4_gH k-!46n3}_s{N9` ! N,{dea@o+'ߌ qLA q]?Y}8il0CϦA}0~pcRf8NV?{{i p3GͶ?,Z}IOUAoS'iLW Ȃ!\V~i xi\;Džs [% ?LhD^L=b,(%@ĘO={d‡%4ĹR%$\$r8q,R|sP&;rbV|&t/@g0If}؃SȢųQj3#󬄕HD.y9V b//A틁c^fȩvIj↓"AF9+3W1&pP!BOJ @<$K -T]ÒF~fC»%\$e-B, BZt>Pi~fkQʭwTfzfY[I1zto%ϝ^ m#X4\ bvy*sMǦtMk=J_V-'߾Sa}B6H^m[:t Gx]hV6PH%~8c9V7FظGU%p ƆmME;{Z{1k= k,ki'Q l_V@mS7Xm̽Zb?"u9STA`eԁObs]BƝK}}wyk@ZdBT@HFC+`tĖdb)i+ }qLX3et'7WCkk,JPcf:bZ+Œ+tn8*G6͚П?&PXXL U&5d&C+L$ 8{2SBST9hLH$WF,J 0n dh7WƓL^"9HK7e2M|A]NS6Ȼc#Dk08Nq)+Z⹅`TWzl{d%)^BU+r_%XWdX$$JN q,!)Qa$Aeh1Z.01{$E"Z"Հ?:}C$ֺx0>?@; hÿu@5vfS> yq8{cIPHehد銃먓>]⫧']9&\a>byXeag6p 6WƭS0_o6Q铙͚b%a%+_A8(|0ZI4࿶nKdsG?zȎ (qPoxD) nfyD^>h4Zq\y3 -9lQ3jb!2-k0-q,$!mIl3F #k1 ߤn+POԻOY5Cc%0uuq"(@wp`D1\adZ8j &Š1%ϯjI$m*#Z$K !C<(B9h~(*~*u* 0̗YCWs 2ّfUq)I d{tߥB$զ%FT֨a=gZdZl)ϩb)UZ|FDP!'%$DTLjq/=2Zm$ـ'Gѧ5v1?/t*J0skY?7 1tttttlsrsmxz\^yذ]j5CS7&Y>R(ap,@AlT7< ًR;/2%%a73%|ڧw=0؎7*g1*$2u3T+StFA1RiyOxe쏟mxc [&;z'OX)B˿u\Y:zɞ}>?In7AK 4T@c Lux tO&\q0 v|Qw`V{8rS=cD"Q++d׋QsVyM5Ԇƾ BBɲ$d7 d MLp,P0c"Ɓ .+/Gx9@#X "MgŔ$UYcn=5 :mURY }'އ JHu:84CW}qPW9 ͅ_$Re 3DUiu&^MJ0ysUc R Q3I_"$ 7.~h;NrvM$~f~i5o`'~V̎J 7KQV?]^é k{xXBqo@9M}ͷNϭU_jb ݓڧv _ďĘք,>-,#8 UWhDJm&7:m4I]DY 5f^knFJ҄#W%d3t6?O|U$;;H;.+<=6x_9&j҄?]cɟU?І7{um0;}IN@&ͤ|X߶sgnql>i攱NY>φ ~ؕ6#߽wz#Kvel.g?ǷIJ}sz|<.f "3 `2ګ:·<ڍ6w<տv!߷e`p!QD649BKq>݊7j_>oM⡷ O'KJ2H$5>nYL0g?JiƤ5ЬYwk.OO) 4{S0NyWrЩh ݉(4"iQH"O^fNT  euMJf)v^7, e8x%EVG?|vA\c]&1[ZvRHU>GeJc3}=U{(Y%uDsHzpE U zGNN0%P]c~ _TN_ym:foU9^'N < NXl#I8ZT#k<ޜo+㲭2F 00їmշM.^߶@f灉C;YY={T֌X@$ae/^xgiy;'\3+U*/tD= Y":ʲu"2CGdd=BE6@|,KM gwqK蝄赈E'Oik2?N׸2iq!$ȠdJpdßH>&x{"H)1!<J3L.y(.iAF"x>$)XÅS*ZwSA\Qː ަcHL)WD8#˿B]ÝIw1& 䕔~c$^`ZZZWR'`Y }*9"񆞋#)2Qx@ViPqQ@}XwuQ]?XM ~&~',| J^A 6|.rii,-s7Q7,=2maJ C&$qՐD%?AuQMs7+;B^@GUSH~ Dax[рqV:1(XfB$AR.U#ѷ7IDJ?aLzfBH>^!&M? W:" cVKeSw QsTi %hz޾  bvU>>ľbвU^Tb)؁sf"3"~6~/€kG5s8iObQ:51ҝ#PL:0TPՅPIiWyTD_M^jͨ [D;x\.e^\C%j_ZEIe;ZH݂;.ڼG' Zykj3^=^3e%jy{IBfJnRKMk9;^rIHҩQ&݋ "sXX^nopp>Ak秣cȟ~>a_Z^AMe{}ynsU X2Od Oa+vpO Y&;QWݘEzpbO*#hC=^k:oƛ:Y#߸` aO~luH{{-=!];S/]&iKci9L eHq^JKd(~jFAq;IIה'Kx(@| RUӎ4gq^`+5hl| B )bP`5$G:QT]%JΕJ ן淪#ۤBL Qa[t8E;]AEG),A-_O(=Ǡ=WuCVTP5 dk4ޒC]n&ey RsA͵qJ3IR1R90tcN2#W?+ưIu/WZGD;(G\$е #n8=t&t-^qy{$ E^_4peRڡ@8p NbA>=,C%mN{Q Z9Bp@SD*pM:,CF2%rFw'ܲo^| pu~} t $3C&Q:SP&6J>NQ;&ui49yk%,OF%B8=4qO8N-3`u0d :Xi1]&Ya/ŝ=G %/L grDBWi#A$_+ڔTYҥ}l&yN8٪Z8@wĉd/LT4ԡ̉`IܛZMUj[@CI抠@JI|Jdm47abi~(><"+^b$SޗyĚ#HE9>cq/kyE< A\W9Gy_1)++ HօSWmEbLJGO gr{1@l)o| ^$ N8 ` XzQ7n0Ys+8pT= d"4!pXju>p$?Q6Yч,g q9x*B>hq|ВNvlh'({}?a0 A0+w2Lcws=`Z`(+E3ʉǤC^D$ GZ\Kǘ$& S0EY._B%oXKOY&mj⸒yHhҌ6C۩ ~ϧ%EK799?#*Lժs| ϲA;ϛɌhLj<0x:Qctttttl3lE _>p`'`]1vSع{`.wmB'\L$z҆-هf,9MS^2åHph*b_) )K]%2Y+G,}^20g~8}Uf}@Ca GkK/ZΧ7ΑDePA8_m+~lixd$(*`d7F;ƹĵ!ң %m Lט$X.Ib*Y$`"W]n]Y ? Uv7.碒#7BW +u^T~'ϵkQ%+H}N[xm뫫b5&9~z8~TU'D.[-s'=3(AB ?LȢ0*/1 p=b, "Ϯk~A ᅶwz 2"8>g+8TK{zzBR#͖ 7d#'|~{إcȟ3~ AቅK:`vX >8:wS7.U98FO؅N>܁7^m>< F"*N[HO$ﵪ 0sل8r4썫ӥ{[ P 㹽ǰmiqĒCr^.yURFpv4:0UCgN[b\j  )Koj_Re ̌EqӦuN*pNd+$ 8 v/Ï*@)P)漊 &~4p)$KCu'ŵ.>$a}}I"Fx`ELr5xl 0O6f]+ tn{(JT 4^id/uGEk3.y|Onh+Yz/QRq" '~p'O0ZSKOGGGG&?{& _` _&l< A H9L1 q]@ )$ulRJ㥌X%4ì^:aSgj\*qDJJ܈9O)\_2fs|*dtံ#O `vORZ[<`|;QE^>PL)IroU##_K2klREXM7Q_Ki 8frLT1 K,ŊʼnJAQ[j`m?n^'IL_(]"Y>t` (USb%}_TSQe+ι{qڟ0au5>8g$ c.H)*XvZoi`"'^<"/0+O}``v6i[GGGG&?K~o# '8|4{C lgWL=bdĈrI2:N"M6%<썕A3gsj"@) l5xYc?y;fW;рq+kF@Wu4׃/&ĽI~t*;'4DI/1ZhvQ{XH>ASKJ #$W ېTrbJƸrqR1E sQ]\_O>7\H3kB+ߎǨQU rUA&HRUTO8':jJ2EK<9)nMF(0XF@;І {@]E2m."Z->_޶S7ضcqbMR$ӁB>0QsCQPk Z*_.>,ږy !:ԅ\EgY-*Xc;=y՛mg-xtǏV9ڶiyJ)?qy UA%>ύދ KT+~ :hJ.wnk(r"(#HLAFWxlE398}X!j("ufY} t*!MSydֻslsRs4 @Kx%1-% )&jI}+=r4H)! '.$Eh13A)RxêCCRmHNR<',ԆƠ7>:It2 sM@JCn'ekHxȊ=!!!+ԹM"棞+SrEKE}uH Qy(RDb  EKNY>_lt󹹃I)?(#蜲u+9[Ad}jC+z}'N@h6OXᒎM ~v,ц| :Q pٴ z<ʉ#؈')ꇠ*D$h\:GksR"KG W$@B3@tH,M\FD g&ruK~cr;g_Ճho3{~5ImiHb *۰вog2 ob-9IV3q'Ho}'AA IҞ[LCfH3t% ܪUB@lm1V #:_b|Ɂzo=>|OpTI'=[XD 4S%{ĺn$kZy(Qȿ7!q DDu5tP$Z`c+f\~)Ϙ+B5@AD{Wʚ q}HeiUWܥao!DuN)Q\5x\MV]sǶI}[-]?4✚{WKL,QghΫ4`M`IY]jg | 5|{j0E靱Qpdtװ{B$R'ZjLG%kPdr i*r#uWxPq-D5~௄TT7:2 v4`ܻgNݷ~㾷ES"""Ps~|=Rb8# !kĔK mѫd~,*6D4U-ە[Lat- x qh"m^{loqG~KK2e]V@ MtFꇪwP91ˋA {Udz"U߀!L fwai-%G,LȒ0q yK]'KșcohOQO|lms1ʘ'R_ mS*X )AJٹ*ҬYIJ r%w$BRsQ!U;@Hmb5әօQv' Bj⊈ŎɪF*/S/`eq~HB)L+]ۜY;^̈́X@UefLBW+ 9o bjB 7FRL47Ai=!^su.\L {ݘܓR_r"Uq+r^vX`Ntƃܖdl2L^İ3l=X*@?l뱥xcqi?uxi厐Q:<"m@{~ s}'GB @Rr$1'J^]WVUE%J .ϙ>Ł#EuBVOGGGG&?*h# {y`N?v~6Yfܬ 傽c,-`pyXC'ē-BGv?UH3Z)am,ȩtQH2'n7=0u(˯2t(0映ԮGV9^^O6͎̄6]f>NaLRK29"W,1t4p%.X,F* U*4^Uޖ iz79PhJ&y`MզפwDeҍBqO0  qLc 5w&!'n.H 16WsNb L;u4i xA{/c>rIB1yУw(.& ohJy$`R)+})ĠxV@&CZ(q&Iz|%@6sRRd~cjsߋ*D ?4&Ď @@X?цW|:!ga,8`7:Ec+8zj0ȴ"#Į<8{Ѧf= g¡嘌$N"(3=B\EKd:q7.\9l2k; &COR*>&LQDgVeRB̤̉[h?}6jUpo qf]/?: מTȫG @ǢD`բOMpMGD', Q'6AKs=2T"at35u$E^!E' ڇ%-lԨ,QdhD ~rrWiY,e{bNl%]fIBKxk>`zsH|߸F$P ӧٟ>{]F8~_BK\ wCрDAK LHl4#!$?8LȋQzrqFrX\k|MU@Wu59,5QA{A J:&`*-1Wͺv uz!ϭ*ןڃLt WO;j?2o2#F{0?>8W =>kٵj~I1BVw%9'd]= K?ڨZbWdWpZliw6)vԽ؂>?@;|ƌ:˽;{჉ep_B1W$a N\m +YJ2(q$Pz)΅(9⍲9^9k dRG:Hm?h>иI0_җ85ymhxhSwfRHaA#Wq}t&Ise]<7€|WKC1>bɝ*:]Xw oWLB+0E &ě.eo$yKH}UY骠40O4Kg0i[V"59hP%<T![5&X27MJ>f<9qAdL"ݴ2ճJUAepW"4 \V)oZ*|hRr4B&x7>]HX'*MgXܫ8CLp stiS3aM NaI_b0'm6v8zɋG=D{Y`4hg&r``BʋĻ⡇_gp 9AM B۾9.A`dzAjR\^:]ң7O}Cl~vCc6zt: !zy-fY&-VCLxW}FD=sqUIjFSNX2v\-lfzNDZS6xb(|P*]~ʥM_X!'g>7wm) KoT?+t*+Œ}8;iv7y vu{1e["(Y"Gw1&k=^K/3vpu>܀:I qLuKnf*OBd^U$ I@$:ߧõ4F{,#|c(-G^^nGZN92jv`nؙ)K&8g܌6<{t 9~ /70 n6aG*Y?z,YQf:{D%AwG A|iri~>}PKmVѕAIcXD|L)-u&Œ!8ȒNYa F*ztAL<|K'6_W|\1ٺאԾzD qlC"*IruY 5^rIK}zBvav.351nNrD)א plb E%->?6iSJ ]䣐K_KiV(Q&$2Z NIM2B Z0PO 7@T3 ?Shif" >xQP@ O1k8'<Ʃ;퉔Q;غmظjMJg '" jګQ;:t}4_ŋ7j.[q&Ĝq/@HasMm^^{o&KAbToeKEPT\$`*o2@_I&מeS0HiábO(T[&oo75˶ ?{YbXn*{si>yKiWhq}Kp5&& Z&TMxp|ZCм6P?"A{p_%)U%\B)@RY)?(<(h؂ Ҳ2#2:Dd!uEPgU=8Ըӑ֮ $2C*HK; {k0`6wOm{w CݩɄ6E^_%EGl(MgUtPxm!$чY7eXz9 SEiN2Rbg̅66d/ %7Zt">{-|~鳿4pwmET1O>J&#ו!X(2q:'r%?Uż~0sW ^Kn#i4z(9ɕ6X͈M׏!JR /?^{>u!/}C+"PR_2"Z6 q y.k_*E' ׮zM+ٱzpĘhZ]p&y!C?ZsrȄ+冇}<$sOAٵy,opK˃ڽ4uVaGGGG&?;|Іw??2PG{$Nt"s0D`DHH $~]g"o )Dߕ1Ld_bWNMx뿳5&ش]}]Z+]tW8E[NyX%cf$^}$m%q=YP6|* w4!^>.= hKf$f;Lye{ן[Cd6ݷԷ}q HAzH',dEymX.M$ u)Jfx}DvO ]@>z%z{lq<Oֆ H.!~4sEW]8xjC.~x;YѣQ>^ɰ=&~ `9jNu#7T~hM{,@`%"`΢`t}#tokek9y}"^Ck#E?5No z?uF~5& 'in'rN5?mw$seq7`QD !H ɡFqNGfqNZ@x4H+Y?]e\bU@<-{HH. _z7c|< yD׾B: @^fB@~!36H $xF9 @l'$9 !6Z?6ɛ@z9y^h@u"@|i SUW"<m?y?7~SOOm:YLU͔qL01DP@ua""*8"J)q]oO *XCj!lad(0uJEœZwq2Q}}ҀVT7`He *e 1gTZ'sIʩ2HNV8V]&TGM:W|Ȭ|QNfK\u跛)&C7JȋtM"~i᥅:: zXGҤ8| DP1Q0 80<<~򕓍֕ݿOa2ˌmlSNf)52]L@,@42)B>Fd)+ŔO{`b;b2N+&8jeвPdB. Y )}(ejt >x;crRM0σy3oδtOg׎N}x}m$ALYH5He8IeؒULZDq5oHPD&.$iԦ9ĦNDv&k(:D44x$$AJ_I򵡎!6sRKr婐*`piޟXͨRLNm*k~c9Yʷ,4@uI Z9"ψM=Ҫ$|$`׾V3uG;|!v:::::6|li\P'::~:@_SMx$2pEr*f|MG ˡϊ9$9OIt5Wi2pʳ* hh)}^[!ZQ#DjSu{Z{y Wy~`O:}/Zƒ#$`E3qms.oHP 32ә֏pDk>C>?ѱ y 4˅?^ Nut=t)>қ$f@4PKsľax ͕җ0<s (ԮW9\8(j#WQ˥i#aۑI^aP,]#/YFbMY"RF_dv?=NlBUïH-kd8A~m^]̾6\ā(+sP*;8 q>r_xpŏl4?ڛɟ8F%HK]$0ys!ߴU6X&PP%,\̙$YN [ڙ93yqxᘀ(Hm% -mBɣ*gqx= d<A 9L"gȗ\F Ȫ5tӦx/g{t>> f-^Vjg6y^G':3͇&T )Di qabGcמux걶@pe~ہ{>wY )PLCzedu& ,lnhDfhe$I"pʢ恵xLPu{j1Eܕw/>.4A 'h 0SlUNK_}ɓ{k:O39a1qDJmJ!QuXShu}P4(n- ~M` 6oF#~&5kҠ?ڡ%w+d@Mh(A&ĈT"ŷ%b=͊Hx^{:w]ݓӚ>tk`SU^roCu Y&jo(Tee&8p%lnI*x`秣cesXͅzNugeװ@& ǯF4ğ*.U o1}ٕn4`1{uG XO_b@ Gx $.jv1a$-W A)3>,םϋ@kG{Z72J.3!Pww|KFY-{~5ļ )clæ?x_:u>p˾{sŸ!F'DTܩM9z+ ҥL|3)!5u>L\j.T~TAmH%d\sfҙu2JMj1a#e }ޟNJ,I"hmc"&NQȋq7==pseu"UXn ENCܗC,};(A$XA"!kNΰ{ߤ,s `|؆6|\= Nut_$ꨎJ(- X g:}}ɏіӓ_} mgoرs@#uR;xBP+oXKoS'lߞ@\:@L\-`9Wih,:>>* ЁG[Bڎ[zxP" ׁPlK=[_ 7lV>_f" (S|] #̨f{hXQfxm1~K6Yd-&vF~BĂyFi5d\UJUX: C "s rp0=!窮p)%^f`3+ A$kRk1Y/6K6{91Fq%of(%U0+]?jL+jC@-^m Ʃߔ{Js ?+cT{@mS᳸|*i}QA b JCJZl_9ӷoF|i} ̉1y,]Lg:>Q"I ͂T,]1bK4h,`K 1nDQlQ Hޅ`f̻Ofo^ܙ0/g5w˹{9w} u%c-1Wvbb4@vEP۴E-1N7䠖#*ܲOQ&bur\L7Fk$UE"OHDY}Qؾ *[(**J!sP? q`LX(G !Р!~/lo cJJyDAq .{x$3cd)`>L*)\'aLC!~&5RTlU'):txL `%y3:A{y- aPXnԚńE04J-w'EZ Q5B.PoFlbw gpE% ;C}~Bv&~R0@n'|6'<-QGs~r* !LjjjzZ̚50^~<@}M%`ָ.a J0K'3ǿٹa3RX!!&[ҫE}X^fφ7>t)&YD[m9\50]t/Py rF 923UǾ#5d}Q Bl ߺJ&1,P=8)~d(X/m8zԿEȗYQ b)|>Y = je /)Fڄ#8ڄ/ 3㐜G딁#_>S^gICtm@te؇Qlȁ~`",}.) CVMދJ 5mtUqIA?1ϏG3? 0k*|yx@%NwZ*C˖ek; ;6l>i>Eqq`{w{?{1ߕ+ 6%8kԬɚ {'lo(" ;/̌9'jWT(G1;pPJPxMظZ6fP[+UρVN\wKX_o.08SGL,o:x1ȇch}U]Pe?0jf Di -Ԭ[F 0ۭŵfJ dlAZn(,$2]@."_jos%,TET!0[!VI#񦜛>dƗ%Y"K ~A }LtKE) ԥ -GmWU-P9J϶.wVKV0$@:4r2ڶv#:47,@Ni kҏQN5ãN99<< m܊ a6SL&ZK㛎ښϐC}LnCמ9xi3ꞻogW<8 O:]w p%p/)TsI~rXrdx`}z]©58CjK:=i@zkO/Кi=;3bT"4:E.@H{p,ݦIԓѱCZ?D)zP=Gʽ09M'"li-`FfZ S-x~`E/MEneF!ղ=b# eLl^0am 0*VvKЖ%K5z0䁡fhra߶@ؕqeUDBXu%Ô L~[ .mH3*c$/x!0(`HI@ 8(2ۦ{/X\5'; 1{]P PP&ɸGL2 JP&!AKƺNнO @%mjID>|ᱝxؒ%Oy(ɀ5 Bi3?zW]M|_j̘1guf^843&N > nd n%q#M )%:`a9rEO׶JlH-b *LTaFkAEȠ(;ddrjL.AQaU8&Y'U DmP;‧a3uFrrqU ӽφg/bT_׀Sʣ@u6#szwmMW` R5ը?[Δ6̈QIC?k]K7i#? "j3Mӧ+*<sE!>|4>F28s5F!"X ~H! kqC&ENLvBL|-!Z%wso-AF!uWg[0FM4-1cӎ%V%b[ld( @n- BD v.¨@h'`\L8 7x@AOy(;yppzO .[bǓq& HlZW##~Og?LdϢkNk#1g:yr@ fX"6zTqNr0"GF)"NəkLX[=l[T\6_; 4#n7w?c %1l/YfJ0rP@8<o\s3tm0 KBCB~$CsnvlZ,RT5{L"➻n߷6GŜQ~i>m74'Y:trDo ꤷ^!j:0:qx^?A y lk/}xXHeGM@C^BLSnș!߹XGK RGeG'ha(;Bqdj#$ړ&O8_CXh+QyFo,<FzSߔ I]"*c %Ѧ]17M N f 8 `=Oy(3gcaa-@.{p{㩧͛fͺzvʑNK~8ÿ>Sjf qse֧΂@E.ht=U8y}LŅ}LDxv-9ܨe0F5˿I F9Mu{aό6gY0 PA;ɵV|m{HMymp D ̖IoB օǙ2?7!?)7>9Pf!*>٭/DIVgѵ.Hk\tewENIibyDY rVDe I"NUayI,\S,Gr}*SBbM=ސ[k@Z8'-ˁ_9/%a&,NHW,!E"5)Bǜ=,XlB2Qo ʹ %]RAl o3=<<<Ŷ.HGNڵ#:wѣGa]x~ ճ>ٳ?} 4y8]+0bđ:m!}F?.$XnM DEuH7׃)_J2ҷgX,`IEaz򗃂uU]cZget_DI=kd:eh:)?M.w^haH w!EgJtY|y+}!QBz҆9nC[<D<dIOZkb & F*k!ݺQŖş`""O G2{umJ+tY wj2:Ahl$cdu99%T@>v#R'/9L_uR2x4@#8SCi I8 Tr kuJډ"FT4:3iCrSOK$ˤJ/cFlMC?ez7"r{lP<<<<L\>wnBlF=eLW *yԗF*,7-y.k$T* ɽe}hc;?A9@al*5 O}- &?!i믿7/?= c; i,(KEII 9D,@0kxgpW7>SJЌmhQ= Z54}IOZ5A.,D m dFwv+ s|X  ^ Tt&u0PC*94s҃đ@d/؈rLx*)oؔ f>{ViߥR-.Lfsh< u{$_vTy +/D>\SsN}$6tekʖhLcrU\PG94}7Ӎ"ǥ*\o3LHR%G%X"Ls8K}xjNɵ8ވxO90e3YȓzQs$9ӘfXo xs:=͏E'e!ɻ.,Hкm A)rnۇZIxxxxx4+'('מ'<"];` '+Ɲ6@y_6v3`O%u׿7s{8b<`ͪw1{\*42f7ȭ# E0Qep] XႴ@˘&~>bgeskt2Q٬6ղ(~ãC!S]3(j$>xZ:'R+*jE+=B4 G,y@nG|?t惘^&O}yx =Q_$Z넪sQ9]d7蕺%׎l0YV8K `ovGZd "J.s'[tt’zo )/|b*Ѩj*/yZEb Q6#fh-I!4|#]^P l%NyPLQ}PC@p~`=Oyh n|\t9[3\ONymлϡaӦ \vuxI4JKKЧa͘t<OҵA0TPh:w KAbL9X8ƒW5Q*Z7V 0$#f| h9eB )]P&2a(d`cClצlj-^OҜCLJMjWAefd#үXy#OHAYPжuؼ#lYq| 2hܗٷ7E[$FX?L萔"[Z Wy*в R)U/!Y8Gm$;tNr'^QX p\__ `h L2E1 qs$#wСѽ{W,Ysfӱjo' A`͚uxgɌ%M&>h(ڷ/rhg;o5I}ht]tBǎbݺXv=VYwL o 퍎@6|/\ wghQ뮻<ճ鳙! C zle>nKFϊ2p`9Njڼg(帳:PNE@Rje$vda6rD(HBp |reB8b[sYH/lKer5zM,wWQ|a:a4D~&|^6R'wQI~Mu{A%;n`G@>j< ,:>$*z@0쓡 zH2bDBк 3i;B\IoDmf;IuQwj?,g`=s2+mrRPi!etPD !}a,S۸ 30v]I&|wWLzw&s { Ѥ=#c+< eIKJ[d}נ#:~ď0 Axf_GrrP/56z.ѣPVV 555{q5D]6Bcq֏~>z abڴ3M꟰~#~b[ѽ .N8hz7yo9z/:'sÈ}N֭u`Bnx){yҘ,Ȁ %9R< \Sdƞ? }:F&'-Ꞙ;&㤓D[,ʌYSq7,Ϥ{ֶN pPtTIv$G6) 266Sl`n7PρMWO Mɂ P|u>{!HbGD@k4#\xM͘ Amo܆L D|l{֏aۥOx"n"3?gW !{96cq g)SU,?+|yx@;,}p)'? .rhqǵhݺ7ξ܀8((HGn1GELgqɥwj& hѲe~gzkƏ?8'xwt('$~?K [/ Gpy46 Q@ "K~yIRnZ C 0(A)dVғ Vnmls2X0GJ z3=59kR(E-O!Qo0pW4ۻ.ӊK:{]"N]HdM_oBDPPeC;<[FfwԔynPMZKEN^A $7u>VD g8d\xʰEcBx;7,Fhwm4Zϖ҈86K )ۊޖنQ=ற,,ĤK憥n,MѢrhnM܁Xn*SmNDY}Qؾi2ClY %&fj;1ܩ #GgaLR@o{yHYZʩMzZK'd(4_1Dr1@d2Wt궎G@F1~To#d C 5~ Z(3FwNnD=n)6F ~vjӺL:o/< W^q {_ A3@"?ڂjD@! w꺠 {*0JS̘s-j| ̝z En)uG HLØ4;K$ o9_>T@si/a(.mvJG%“4"2ПRWF n.ߌD_~l\d"BPy J@PPoj}YOmހ|!J] Όn5ޘ;U @5@pCV3!d|9[|2+E(&a+#H܍Z !Hvg! I,C2Xִ$.\ $yLd O_z"4*yT2l,A E㶊|bCD4M BnuG]9->?苗Ƈ<<<<<` nU&Xk@_Kn@f3"̆hۮ5:wPOtrڴi @ǟⰱo3gߑ0y9M{ј` \q->`olq֬Y9IdAS?xmQ0yȪSpAg`riOW8Г0W'|4_?? 3>f~oA*>'p2XW_#R$719\LEldMV߲9ڏچ{Z6(~z9BPcP!~yԟ`h|־9]z%нo還QtzP * O1x %=1eG8sra_7߅ =%taeӊl$t {܊l0ik8 0lh7:Zn] &h~8 aŊmNx2;xIO ueO8/m_l^.^>` u(3k^7.7pWI-VUZ9t`6ua/;'gobjú]g[nA@oNxDl7"خbO GZ&u#DD*)196G@qektKQU-ug ${ñr=6}2haXQqQ^n c(Ax}!rA hg&\Rvر)ٲR_R.grj26DoA!\\h &>,, 됫ˑoTfXd2s$I:T ;46~쒻r[ץЙ.7,d6H 5877b⍴=<<<< PmLמ'Ѓ>.g1xԩ1b1qe9?@p̈́3qU73XwA>}zw򫿶zAbʗN@ˢPד|вFE,䉞CQqـ;,?d,ׇ[-WHeM">~&B"F5 ;snTDsU@%sp[ed&X.d OvN5ѯ"% H!9%m&? {/dS a>1f}ͥ&B{ ;AY}hQlbz@٪ Q#۳ŵQ K bMpX5]K6Ubc#px%DCOB&,Wf2 "c0At@ "bM4Х䬩F97* >tŔdv2|z@du*ť׀@:'71љcE^ )?#^C|10t:0jj,_L[ց qT77C+a+,^O_ĐCh9{ چKN +Z_[:8P5f*;̡ͬݗ 0rL׀  - 喩tQ`lLB@@ ]DDP:㐅SwH+LʨjIˇ%o` v>?֝M#YlY<([<.*~b@L`^]Ei/) J=dE8%geģ¼PƌeCp 8L`Kp/HG~+E9seQ駟aŊUh JKK0r m gqхí^ zyҽ5j$l?!^y w{r<0EDH PGA[y1Pf=LPkpmg.u+ NI/+xj`m&Dg zHo/͈sQ9]d7hR]kG^igB:*Ia8NZsCLMkf޵ 5@Ojj2'^ݹ$="Q'1G0@8n3\?, qS""GmA3ߕqč>z=3ۃ]!D ҟ8UϤm)3Ԭ *g$:J# p'"3QOaʏ@p&k@*s`̘0uf}ԔY۴Ƚnt`E|3/!Z(Pr>8p'ok3ICrڡ&[KRkjGvv[πZ\т^\d)haJ% "UdX&VF-NYRoG4\2π݈gۤ_{~@< HdPm0`Ƃ#[Uz| ,ys; Fړ|mrpDR_hui2]$4M q!;X6[moK9 e?]; HbԿiMM:ʪ>QyĠdx@PL>sF*k!rnRt&{HC{W)R,eb *Jz#v#h,?& M]''r9 {3Ѯ#G3?]a9I',8pn 8'ހv~~=tqMKrigqh,sy$t '?v9n` )zc$>!Y!sj({YgZmhITżY+L iݳ (!A zKA%[{6۫ QYA 3N)%ubo 8*V! lRB5Q_7JdNEdF߾?XY5ބI7/j4I;qR1oC9&I ;m-Wg<#u{ ˘)q$R`u6ŒL  w?t=)[J#NZd`('v&~r?^0ӏKt$sf=9Lu*4{a ®؞8p=79,[={❷^{gHǕW뮽Oνy& O;uG`;3S%8pk1X]BJT@7ߎomr:}YuoĬuewV 6׶G DmgԎIj0t? c )!%Hm",~<܎klāZݜ=xjɊ=UU PfIP{8{$[-_wPv1ĂC2>3*\LK^ jqFK33{R.٭k6IsqFDu=Ozҳ;%o 8C{kޯeO ,k]UrD$ZKrٲv;K¹޷7?RJa ~Rh6tPQ}SG.,\h9գF֖{, %a6WlU O5mˋ0gkhJɓG 7@51E؞ĩqNFl8x oEydXI$1A# R1OIA )#G#cc  A-6 ^\'X\1DHƱH;}NԦv[.@tpЍ}3T&t؆ K}/D Jٍ~EܕG| (ʮOg*6]jAHo$; Væި jO鵠lƘ`K{Ur)[Ho'3᏶%"d_NJT't缂#^u㭻+&GҖ3 OAQdke'mJe[&H$!-:1\'sEl1.o PPMW⷗AB.i$1Ƚ09ڏV_cV_9,u&/Kb'ctG<2ž<<< "Jaé_ ;g8+λs ӣg<,S_BIIqn'A@{S?Z T $Rd@mTyV4[m|jQ!C ]t^WEUH4G#) 8rIu8YVi9DŽ1e2qFdRu‡@ј(0RI*Ԏ@ w$JH"=88w2cҽlE^PS3tٲdPkY@Hik l0Ds t[T:hjv_j[|kDZvRzZ 1TǷEa+7|%Oy(>:R)yzpcxn­763:8#0dwGӱBý3N?}W_s'[ Fvx[p01o{@3 %xٗp󱠠 .\ 3 +WWP߹i%8C?$k%1Eq+hl4тmE҆I% ]' / c $EIv]יطιy$AdѲ(RӶbw,9RlwtNʎ;v!ەx:m).K@)< x fߺoyߪf#g>ʽp|{4Htȱ<1\ o$ -:D@}?d=Ńb/X+4.D6߹D08gHbծ*u4BcnpĐ5%R5jOynϖBi$f{ %uZ!﬐D^TdO`wȞ n.u1Żq#pFQ#"" |,c8YXx~i0.^ѣpͷqY^֮5nTUKXXؼi9_aÆu݉pv+@jKp%-ߒȲNx͈fb " Rv;#v 50O収 &m=XvgC+Hz:D hq I gG&$tȠ7c;&A> +EDD(@KLßni)oPH9~W>…&`?) S1+7lk&O4q :ɿ%U ց/&8GR2UDP;;!ANjM@؇ͻ= k+¾Oa%L@2iۛ[_k >UOJkwa`H+5DQL]f.Jm4Ю$T9&ky(LsYg,q`jZ15xdB .+񲫁("ZAE0R*]Q 6mG^Į06^` EtҪ2:@F ̹*h,A{R)`Ǝ"I&H*>#vvm 1*p8w!$ƊpCP$boG5{o0Ξƕ_|mD^wj@aWo:>?>Ν?>G/}%"TS(~>{i"}>?ǿ77zrD(Aa$U@ Xe1]d'\a~g' OH˵7% WHfۻ_j|xq$vn8_@7%8b#ŒLY$!{H] a^To*G. q׊i$-rWUDk"&.珡Gh'gjviy:5+9(=$`D΁\A ϧ/Uʳǜe:gW8:۴'?ѮPMh :'C H_H"<#NЬ-Wt,sH:}蕦cC}cȥ:d$I eWoHeWJjq/>?Qv**Km>#1*pJوu$Q-D҈HE㍓>K  H79|ۯ@aWg>k')[y&T*yIӧ仧qr'7_|ڊOӼ[8~| _GwJԣ,ܡȿ/|W]gizZ5j$کSgp)<3s{3l˻9ɐ$2O)˟\QC3=\ ]{V%DZ bzr*T .E= s!䀫.4]|.I.+'F>R,J9x\1QdV(L#wy^:&G$a ,f-Now=K5z>22} e`®R3}&s+n-.ّ{k+*?5$k1" 3Ogb^u pO-,oወP$n pLRu,%xjG BM7{V"oךYr^!0\ H+# dWՄ†/_&u%/ riQzȥۥȁlr d 䅘~|;`xB+l6qRtΪ s1o Y$w(Ĉ,)Z4< `P$""n `NJhb횘vmy{/(v,nQA2r9xQI%/Xv N7)7S@.l-g ǏIN@M?i?a%7R(& _:5ǏOHC2 -crK䱄R/}V EIjb`}HJ_4.FkBg־P]D2@"}F@N^cDgȏ9c )슏\pО1I$hѓk|:e'YL z l&W1G>%Dt&ZÅǷIb2:U"E=$Z;k~4Tw{E8nvXb|&I>?.XWYc4zuO8q0# _UEDD(@7$b$sKeNMR# c\1G1W'kmC0ygKna y(i74䧳rqڞ~w'5WJZ{u"9fl-IfUsL+[*3c+)"tmackt|+=]J~[4${8;5$أ7~mH@{vbg[\Rx-i:ł=*W5$ ?Ww'B>[i,e|8f$6s zLoai?ztn3xn_kf"E;ZfK~cÎ%M9M%@FoCM 0*=eTj)U~Bjg*zD\G?cD #썸J(xR$ iDD$"q#@aoEA`*aR̈ %1m#ϊm&b%8dϫY 7;F!;@FEn+~klU _h[1aZpX^ ڐ~uw5HDj64ʎ41)LR@ g= ( •G7zNvSo=w 7j+H2 @=軫^̏Zhûp5?Y5W_"{@(gڗ$t#JW~#ǝf+bx0{5tuO_ԅ=(my\c!hj`ׁF3gCMh+O `GmEui~D x'LEDD(@7$P_:LV̊/ e%ŕ$>tXL-ΐ3'&É &ACNcUζ^\1(8V ٲ=lMj0=VjKA}Ē^Ƌ#iq=@yt<Tvؘ=:&?>@lydEDpgƠ BIr/,XnKU!2 f 2|t,:?a6$2%"(7^`a;9M36&/c!k$\u~*᭞jy`"V)#M rǂM4**? |X Eb]g=]_0""@$d5ٵ N6rE矗"BI J& z ]qsP.\= -k`~)r|&%hoxMo:ĠFNh1b%-6,8g~XP?ezzg"HWh5*'}@#)ӸѼ|W"#ߑ$>,X , D8b鯮mf-ˈ !DSӰE0S牜 W2Q/: ʈ4|tyS \0T!ہU< AE35@R2>w 뷤ذb1h`?t~ OĈ\pjoFɭ0^RDD$"qsIQB$GnCJ҈&4a(yp+dM +n}r;Yrp]ͦszO9L5G\n_B'֞ <NCg{ڭE&k kVb'?L"yLpB=_Z-[ӓKU {5(iLf}k:&-A1'v: 'JA@E$W ʂG<6P!֜-0GfDDy1$@hwz1mpv <8 q!iYⶄB!O824<`2}BouQ)*?L{pS t2"b(,"vt.F _DD$"qSU}GM*gጉY{bx.Ҥ<=4[ՕfKUл Scp / %iC?v&z)tە>6l"OQFu>_ D? p2dRL(/W ~Y <S'r1 L9߯w>A3L='+~ҳ!*ulT캣Ѣw+#6d XU?7,\|[("'v! `<.""@Y 瀸!3it_c6U( s|NR_㬕׋[> (IH-:_Vk&9ɿhٝ@% ltlGr|r8YvMr5Ɔ.Yypl#jNq?-soOɃPe,2@'!JcIuWU1xۃH0wML$ڳ ͇+v-")&t+L\];!Y`/*2ce47 t!?s`H!rG]y2RИp|'@”kwO$ $dp%LΪ`~~䏾/^%g8f<劌-ƀ9Nl0|% *jB\PqvRD I-ѿnHZ͈yL4.p@зڊ{4žJܤ-D|}jV=GA1a/YH +Dns8cFvK%|6VM( 6$~ V+ ?:3d=ptys{V]:tL(ۣt4+ySۡ؅p9[G[,7+Urv=p kbӘ{UCJk+Jq0;;D>eb;ID2x:F@Jl/ -oJ e0Zm be2L<T` 7;$IYF@)Yţ@, g2mٝ'J_=1=|i\9 5~j": { Nra'e`b}•bJ!`{<;F@3K\NClC(.[u#`KzȚuIrrxn?sFIl>"U {|-M&QeG^h0 ݤ$I@rTh, {^m4/z%!pK剈n8)0Ws2֐54݌B㢟QյV4'n@$_Pv/cx$= 1H~O=#*?}~[9[<Ƿ|HE(""v>K =B& 0,s)A)vzj&lRЄ>ah*kZ6p J0*OLp[$"si㻓ӻHu}7>(; :JTiE;Wb#v ۞Nq˿bB>GPd@}X|:iDP];GRÍcroqšTo{_"i`6N g)G**1"jT/lm̳J `UAT 9 @OM2pQ5\INγX%XbW(,I8$8ɒcEI 5 lTy˃XI4:gn)]˿`ύ[n+`&!,TLF\g' hRѼ؉|!~EDD(@*O/hNqΖXᤆ/v4gINH2+n*6"? a椓2mQX>˵NO.7#\!i6BcHNLY˞)@6`{/Pl:bGDJLL䱋D]{$ܫ٩dn zI>m1OL]Ͻ!KVܖ!Bad3=Ly3Ny:0{#Y׬<5$,Pҝ*elܢo݀^/9㲄cJDWZ@c"A8aߦSj\(j˽9:!]uzM+&زr`ڈL* T~ ׀Y0qKb \QHF# HEDD#G|*Zc#5e0IAQ 4G|7)o(LB#$ŧN;CW+k޷D[z*FD-H0lh7H~I]eH @\ҹdz:~Up|>"2$Sw*+6(/[wS\8zY:cX7NUxG抠o/~ -6Dsy3a'7j@oh_Xήb 9~ͥmaJ_խݬhX{]GѺSTdT5\+h| m/صe% H[>fGwq ȟ _0qK?0CqA Cjȇ<Q#"" Z@Kw媏\ Nds!5i>,N܉& xۖ W9 Gnc̤c[ӷ'IەH_ SDWSɋ1. >:Fdn2]]I25>k3Ƹ@+VTJˡW(-_?T5s{GF֘E/ PZ{mEs'pW~j @㯧-)R_hO6'MYGH @(O z}gUP(M6scb CHk<¦uΧuCr۳JzJp5'«U\LəpfiG7A% ]w_ J_]euP@Mc1b"DI]Hs(M'Amqb'1wМ8X[ʻj m5qo擀sPʖ Kz+; H~33C}˲GpQg#RēκsdYfɍaːjh:/B~Ba@W˘ê(jK2C:މRd';:[6K2;h, J XB1(F("!E_a E>L*Wc""" .d۷~㯠A6ؔXWS0@5JeV(ϕ[n7̕]5LVn¨1U }UL9 >L6 \1l[B'׽kQPطͮr3$u+t9Rt]9G@7 HsK $2ߋIp5Оġ'1wzX@m]HJC݈ y>&NuW&nۓNqGȶhlOiT.qҿn_HWrb@}6Z.眪 KzaiIɿAmhD"LgF- #$+aF Qy:M86rȪ[vWP8w^3\+#g^a!Q@_a< (C ZaVH߷*!"L3VkVi *5%abK`)y)-gD!)&0p-$X ӐH6pKh⎎DUP~ǔf&?J,n(~5/F6~gxBla9GSzE`L6 #Z6V:U0p(]@zByM\em8TFv4 !$οt@S:9@J@%VEeN:y^%Fttm3ʤ# 8ci8Ś`T,yE@&h:2TvM`kY]xc+rMu9vʵy xq7ǭd q?5Pш`guBDč*J4&D\g18@r&k3䜙I_U)92ڴ-|6?oon\Vj࿂>@;kp;&,fRɱɽJ?U7Zm>R5X'0q BFm]Npx\_@7$k4wh+G`pOPRbC<=zW:rFZPCsfYo ^A 8_ lgjaKJ)&}N2)H`B<XxL!y& R;Gm9g0q{=:zP=Be%*C0u?38ܙ1Ն6U̟׽ )Q,Bl6 )`RǠY6!EۨOV; m#D+r=v YL$W$ |~rAKN;7.7$@k `cDD'1 Rv+#)p@xtn"'ضAfu^:.BN|zׇG__T&B͡Ԛ+TVܙ0qIg.4AyvHBY nŠ]GoqKK^#[+bh0&xoTH* FI?Pu D 2׺W׆3Vd 3k'(wҖ`7"* P ;Iux;9 'ǧjo#oBTf;xd1$)#H1wv))$u4T"ǔQLZH&0m [ >? 'P\>HRa_$yw5;Ʋ{P[N]2ȟv /&D~5M쬽_tW9kdgږˆѼE8 )$jж\ďDž͋Տ yA*b2f880=E*ڇZv5˚t )ޘbӎ B.o;z}~_1a& s&y)""b!Q ="|$I@*]g3t-Iɷ5Q 1oޖuE @ %8lǟr`nƂI5'DfQy8>;)>{̵#\%мks{V^$ Ï`' C5fPGctS,v^ c`}h\>/< +"-X6 ہ5!kpњ& V"jkO]d/&>?JYwo ˎy /RZHZg ?IF*I̕Nx`yCӼ*W?bA:Ut>QиG;3x<"p6Kcc_lYf1w9Aё{kFD (F"b"b*wwȟJGg6/"""@WB m*v$(6$8@y$hŒtH$8$L*'DJvH*+!akωMh(1o,lվu'7EH҆;bdՅ\6qǟJAPʉ*ȁlNk_6 uԱd‰] ԕY,&9!f r6738PbVj۰T$Aߪ-_ s?\J?31q 3P,d()|h( H~A_$[:QznP.bNc/5&ky̖T<0CUΘzܯ0 !iRb$4!Dм͕oiAc_ ãe$|'&b-$~EU>a+G"vEDDD(""b! %X4:;r@VʅWgUgmi{0ޖMwNe}AW%9z'xq]j2b:N'v'fv 'he^l!۰Wk l8# ~m}~ p b+//ȥ-T(6Z7ZJTH%|HK<Rpv ."hn[a7+[qږ J2|>)<,ǟ^/bIYU?JpxP&r kWo+H$D/}}p ).W!#hD,9]ȇq_p(."""@:+PJi2b0 rm } @t~!g%yDdUL ˿6[&h+Z٧}>i9J_&h(i/4amk+IwOH& ]C7^w8njX08X Mat͉kC:7tQCuI}~mB1~E̍A ?zY{2DV? B%l$}!L2Y%HzgJ( 'bzqe-D">ТQo;KA4/;v<|9PB~jyKzvVP`j.\gSӎ5A YD{p1'( HFw|?KX*6/l-NI4o$MTfPqFr./ WkuU'IUc Tb1Nt6bea۴<,I>vRƾ8tKۙUX'O*xNgːV8ۼws#(^" \cnHi, uSI>Kϊ(n!:\I9Euk{X\8#4&/WȒ;щw96<^i"vDPx\l:" LF6[=]ϔ1d8oQ-=MA=ޚ8^t!Ϊag+ύ=/AXcUF/Lh?D] q%9@_s_*I71^/;q@|:F"=OaXR>'LEDDD(""@dcSG?c.$͡PJ8NޕՓ03rvIM @^-U[X'%z}/A/^*~E%/ؖ3O2WʣFo6>lMΉ:+1q/Kn'@r >8BI'}?Sq@FumZAR|{OY|.[8qGs˅*`95go-@5C]z~| =r ҉Nծ\$Ȝ}Z/.aӍ~,'c˿$v[Gv=U^M~d#8Iv+c Tx?#nhx_m s""(UA0>ëC%nh5xfTډrnn\f6A9u/bV&̌@:? TQB(MoynfQtB: ( Dc܉ʭ߿fL7s0$/?_t@aσ3ѾA:&lGNbj[D/*-d7c2|0ɣZ۝ ŝ-؁5t J챡2u^_zXWQ XB! :ƪ xI"&#ŢC>0aI? v9k^%(DDD7xMd(WPϐH A$?d$jjV!44 % s÷>I1lHes]]M/=X2OdNˊO3jFb2Ѻ}CkN$sN͝9&톾5xF&$at q &µDZ+:r'5 y犧GJ^qNM!}tއs'RQिVma 0#Q`3Qx+HC&3& L9Fz+cR+?9hyd9z' ]xș `*{!KO!fD߯.k~(F"bpX:Jx@a<Չy3F0""ߋQPs!ZB:LPIa~ gPHN<Jv3X~@|j3 @EU4a윒AZJgʟ 8 "$C⬮ˠWH2ujm;#»V==< B2!LAdb 1,$vDXd 5})ăoBe{'[%l pXR$EAeNFyL<4 q]xsEjoi_ө?؆HDSTi1j7;Քz$1<|9֊R7Ǘw~AAdx #&2$J6Q)<&4Bc\eL2F?i!n BH5C'3 SΙ"^2[K.’=vV)14 )Nrm:1[o3{(h%@ Eٹ5pEDD #pJDBE C<@I"F|0{(8Yo+hb\āIq~]DFz=ʎ>?kE 5| SMLY=WGt;H#B)IcpvKhYP1 ;oL~IW-.)YCp+fPO5eq:}.VKԩ0}õј8pYve[, 7T_>&=;< UbI2aO~t"̗}f[&ω]'e R4SI^UtG۔!OT J DT i|X+Cա,Ʊ#i4lLa[ Rb+{(w ,tw/?yX,f%b$¨O8|\DDDQ pn=D6H5DZmI ? K]rj}#|OXΑƍXs"lmǦܦP{_@ס\cGe4 g|ܖ y|$CI ^)9{Pf+\jyyʳ,f~W+-0Iz͸F;?'*#u ؈p̶Ⱥw4Wо\ƞ1{`F /&''@e$ 4 Ȓ-4B}iA$i-1oemaOX[w^|pb׻PBQQd3ɇѿXC=FG;Ȯ>&tBtqo_p\(NoF Dz:fg||~.Mʽ*ٴ܁s'hfuկ.p#d%#̎!Hߦ3=x"G@,:E.zS`dlS<3|CX>w|<$H,$rpf?tN)qPh͙viqf^@źfǞbjCHڄ4˽LF \ڕ=yD2MK܃~-~ugkg5QL&ge2 oP-y8G@>*[(NS)dYܿhbR_>_n? MSG6oH"nH @1ͭpψW^?p륧 ]4oo?C@$7-$E/ @7˵N1ECSFYŏoϏ-MLؼ]on:'&CmXOs!P"* M\cرqcA61`dl,~4e \H]m\wR&G!.f-c C6"qe (8bD,%is/p:5  IsMF}?ܖ^>|qgl1sbt|l?I `O1/}:Ro_t>גx!XZZ @Qr1$fկA$*Y>?+*aK硍~LRyl?T=- VѬgѳB(o\`FuvLFPB6)? Ǿ?BMd w1EzOhhesJb>1xf8 h@"Iԡ!|SK2okgh?Zn:1>Q E,aˎdsAL>Qd*BPwicvy ޙ@l>Gbgףta @!lx߁("MINL2q~a-٣EO7Y0F'(GP=B.$:BI hbT2sǼÑ=t-(_A$|~S:I @0Zt~+dR \q9$Uzp62iFdrP&LCdOz{P݅b4;dxD_`h{3*e^#lx9mj{w0I৶^頥 ;ߧׯAB4⮳w. >!JM%M2  `&9='@~;j ֯?Z>n?Xk}Ε] ~R+g@DBI:7D9Gi߄DqTF]RX{8-gk. iX}Z ĒH*Ö!lXO0=ׁ-UB3?3& Z+LƢ\8Q~SJ Kd2"(d2;IQ;lqFŨ8譙85t,EeFR902V83$SNgi' 6dڌK9(ijPVV֎G bs| +ӏ6LSyg}ީ!j]IXq̂;D&*+ sE5>RoLDq tW0&kTo ~t^?}({@$I5 g D1=s#1ʆAe%_mb =RHL4dj8ҩQ͇&2E(HcG )]6 Fp6v IM@U-˙̦ _][Y <:&~ݕ A]ş!4?Is2L2L~, `|ZBw"(KǮLa AUYez( I'ݟ86/)z:_3WZ/9 S=t\C2ʗF˜uӽ? qqri10X֧*FiT{@<{1{艭ƵEKKs|穪 eq W ͽE< 8H02,x KT lRU흘Su,C1G8K-Aggkzcq UCT)peb ̻G^}~2gW/Ke߼Cj)},L?O"AD. e 1#yu4^= nCLggO >s جd|?FۨnOxsPFmks촬4Z{> )TOP_%*KڻI AkcԚEz;ܡS[GKaB5 ȯGeЅ -Рs=C*!%4@U"ASb_$S%U4TfU`{ΕoLp͡M:4DFT1h.;3]txcncZkO!P+`!P7xqX!/4+|d2d2"TlI°@cg _qNhWj,$-OAkyOZaPZ:`6~qvp+gP EB@Py~8lCWT]?ë\;jy4 }ɧkMap 8Ôsbo9yH%,>qA0Q3|]N&":&(Ǣ3'=$б'"34AdΕV&󐝉iwNu03׃8CIZY?3[$~)3a( q!'q`x ;%d(dn}\FdCAEmXEgj&PX&ޜ d 'i&q8I=8H|_/<];<,DݺM)߈{&,>Xn:v~|}rJ&|=l>g.guYPՁb{o"Sԙىl)PM|~F" @ڽ{Nϗmpp 8ʄg-9}`S&i45#}?=UbWNj_ʹty.= trb*{d勈H{nk3G-}$ $2MA%*/^:{匬WЀqWO8;eZd@V .$ AUŨA/u', ?^3~'FOwvz;{9rnq=;<$aegs >,vI8{.5^=j'U@̗lg[G_rutzEK!=BbmHeb4:<TS!-*0;S_G?Zsp73vS_IW&ya yNLHRQš}H 2JFؐ=)1Dg?yṿ<1w4hFʧ0lшy儶-SmA51IT埳XՋ/ebXvPdK^31X]m'ە|wd2 < L^`@EQ~դ(W 9v(jD"PHQGAe !B9ʱ&`c/hf Tʌc$a}){ظ96Ḱas=&@AP=7fiWѲGvЌ+qB@ R-rN A\G٣>D>n3'ش3q \Ѻs>?~0-T ?Vg(w@HIq, ܈eU<贏s.):9&_GK^~ꏦcO_E_T=T?!&@F1"yOzp3EBb>?!dČׯa"qQE%ROw<[Oޫн#]ьwdd2[y@x0+KX ([Khu+WY1Ԣ̏~?zL׎' (Fcd` ?^!nٲ Y(} 5uXv֠i8," 'tvSҶ_^|-Uq&CxtQDg ^ &!!cEPnbǒʉ#)('#H a.cj|~ҙ?6]}~rA&s/GhH5Xŗal#H86y? o?w!͠./_zF~{n蹝gǧw]5ɏ(rԐtgp\,NHA4 03}M)Z]>F+ ­d~ k+7U-˭z;;hCsЉ @ GB$UoR^cpG| j>'K4J?pŗ}DސAyS!>9IAږZ@<5> Bt09Ӌ)MM ym3ݦcO(g2w^z?Es&ڕ71Z>»4< Gxs ?4o/ |gd2,Qd2* @r @m*Rb.95gm[F=m| V:C+Y;^ϥ*gTU:~бXVY!2p<=XtXq)yiG:hkjSecx_ @w񯗫 b<~?@0*a\N(mD_ >Nu ?6f٣Egq ?Ўd6fvICXF7sIhEq@>,4UB \ +&b'wV>_[7Q'@7\0&X Ο_8%O ~^7zr8Dhݥ-?BKSBP76l;P# p X7~l[gVwq1w<<}\yEO ST/Fv6*l:֛~G-M~&p֩sx9ikpܘbrokia> T O&swa:.y0A+P=xB?AzBgB f+2L& @Le G hfoFlmEk NQ3 @"b 7Zfӂk@1zOI`(:^MF>MU÷"5J- zC=Qy}Ϟuh@h7^ǜ1?hkX3Ɍ W@0Xx 4'R{Iݟ:;ԝ9t< A' ,!P @bf~;+K45 @Esa^=df Cfg)́4fIRQ+%ؾ=tzm1lqlg)`_釿{Rp3 c![hY<.ԶNS!j-# [ @>,K `$[4.O182֯-a{;|ڹH=~<`2y@VZ7dxDm"\R&P;Ԟ\" T'?1CEb}eԳ=XL "< Ru[.K$xޔǻBR҆Hi1hsf&uOֶ}YhkxZ-LpepE-4BUO?+ D"t|< ьs~ `1L&=2̃G"G!p6](K­]F"l|cA6WCr1Kc9Vi+#p>:_xb ]k8 YaSTÏW w f5h "Q._؅0m` 4.4m* czAE.ev=v' 7^_wϢ7$Z>[H2V1gPK 8u2+}2Kh*>n9yhT.,֊'#zĜODg|Dp|^f2[Rz=v-bRnpWYbW{s l#8iB{+!I-->?Ќ Gd2F@3B&cGCYCA\vw ?P;k1 ]ᅱ(xaʄ$H4v7ίp&"*@8(}Q o, qhB5OH"G%%"Bj4_ļH <%C-;a\7 &y0jGj΍׾D3a $qO ~>+gdڃ[?1k{.n]p[ "p $U3 R¢LUH\QFap jp>?z Ý}/<& _ T$g!+ Ab,&9g~p6KIS!#PʀfeTZ 5iCim0 C6L_Z,GNwR q"bU32l7?}YHZ] Jׂ=1Do" 7; .OF98C䭅0@XKmCwo(g#aqe T.<\xZa ʏF_:1 %qHBDernn<~Ux]h, 9L=[I5sכA7\Ýf>/B (&z1H~o?_?X۵-pO6"pԲ@[R8#Kȱ^hA)H"[tD;#,)b`#8v鹾G'aw9埍̽|KWt/& A0h!ԯ*<ޏ\9zlzݘb<\A~oqh!]shoL&$L&19cH8έE%  zϫ mj#rG5C~\ކVSC\NrzF$ƒ 7L90 ?L!qSVFEp [zc"]UP`vp豲g4. |'`uOe~q`ҝL@Z` V>V'RJAoy-Zizˑ̦E\yo`W!yє3OStWEx^Idǘʒbk7x䢯,PQBY9͚5(Xq7mׇs!/B6Fڙ̽ǮtK~"vn2F0Z~[8 Z@B@rHwBLhEU=||N!. @k#hd2WL& Q]؋S@'"B$9Yjx@`9},ϘCmih{ e0t vd{% DoRP9'`]r>FGЀPzuxwߋsagNvՕ5\l /]j ,w~wNc<  Gaum ++~}x}Ϯ9Cڎc' ?<:ۏ3{V޶3Z[BC6`tߍ(,":N&,sPeUDRN-5}F$Bfc)ԗ3#y(y^ 3nK?}@DqJ3oρLnv=+M8'7_u|.L;;$htK>WaѧLP!x҂ <u7tLPOv5DQ*@?>o8@f OR&d(dnaD8 % JEʉ"kŮmB׶Ԣg(Uyb4K߰QFdgNoJX".T֫מj':g1{G0fy*V?{I=|խ[etO݅‚ +$HZH #,NavA `Ӿ]y_&MT U]f9uOfFFDX ye^~eLY,yWX~Sork7sR%y3c2\[•!/ ñQ.MeKL_ƖC l|8K1Fz^}3բd=$4 On$3/9ԮC*`^Op-0Ȥv[{tgLP>ýO-Cdء.N/9wvژյ5gϕ8,=W<XY( Ɠv a-xl:­beƋ/Q~d251l8o}uN]|N"BWq߲$D&c7mNhoz5 ]rm a!t9ذ?| h};h c8D[E;~׿H.}rt}Id[8[R]ݤ/0q&KCnp(ވ`N- Ε~H=O1PSaN(9ޮOt$D(D4IF8Ц\@rIVts0jb+6`d-JhuD B&CnvH'' vKߖ3&Cr=k+Ohx,?xre|@r @~L9|rkc>GZƵF7oWXXrݍU^yv?|x3MF Y]Yk朽޲lduy~|bjdS yi;^?:ܣπi\DbԠtg3No! F@ʥ=MSⅶh.d \ z݉ץEq8%j~3ϩ}XBH zdCӤiYq'!XE"T]<9^#q-}wYo?$ԡݺvqL! pc1^u^.wRMd+?8[;Ri$ITm~v?< 3ID";Ox"H4sq HBf<9k$XtSjҋfzG¼ɾ` Oz#@螦Ps:Qٜ\g$ꂳpvGg%ٖKmk/&w%}sekW?WcyNQUɱ.;u8{q1{0T + k?75b2qGc@}֘,'y-Mnju9Xŷ q/ePpoI'8cNǖ9xݙh WXx(H0ba$J>cX{(8-&S(s#!-H !h]Bu9.Hx,4Y:Ky)A}PUPůxȃ'9>/v%x{;;Ͻ-^ Z]BX&@ڃW/ǫ &xd+;9Y#eQ9@CBbK;2iABmM>$KH$H$$Az>PJ9Nd$j2K %pp ۮEIDLj k0tq5QopK}CG3~w8%F6 {`-[ 墵l\|LnwOУ'w1) ʲEeb*=>E%*fLp}!.9|^y},_yWJNMp#!GQfW,-V]1s?mEjԲEU|e)ڰH*v,`ȘF&ZR)5r:XUp9Ut‰Ln$$~D\W$L0`7:ΖbX ARC\;a&@Aҁ40slz\YD̑ǽnVŘ~ÿ@W$sc߂c_L9 ?H$`>ޅH$Q(8w؋7 @2R *E!Lj3"I| @]1FM\ B#L'[If\[_AW#0M #K&!q|)ʲg$ kzCƺ޽.'s3 GE-EE" e9S)9P45ι!W.-F=)g '|ۗNh4f2PVVqϙ+p`˵Z)GWWH?'e)tE6Ŝnpr;_'_]P{OIOگ98 xFC889rFq#0~)k6M][pC8th&ڪow%I 's$4BQ,)"CB8WlU/;K1Cr^1igRL֭E»mkKIS#vܮ|['mm%!/,;fñг8x!*q^5A32Eg8ğgsRF"HtE"Ƚvy1F Jю<&JF/WH9(2>ٴt.dVKSdrZdE ~Dw; qAeY@e qΡ}˿vcɸLu? E|gIa)˪>v d]XYrE%$=zML>91W_z)\\G6.r-l1Au6.[]xu&0&˿ix悊@͉#R-;S*;nJ pndC77u@#:P .A{N CFu$)d uvM94AG: hEN%OE"ߓ^X9(lH:SF&B $n֎܄iV?C&dES($bNͩsx(!*ƻvю>``^I Ln5O͈Ϲ1{)ouɲn^WFEY"P:Y븱Yꘅ!XKN>S'7,-_yVGt8G|W>Ge˗^(ymJ@g.;?1ۚg)fp;ín,k9ɘm}kܸh8bj?NYu~"(ZŗZAҩ"#y~Hhr;iwV_q(բ~PH&}}-HȾHu= N aD+k 4.% ա;jI)H-/#9 ȡh9$5=c4Il"޵9tr:D+g?o]5BaHamc1ǹ^JJ4r$nR,J ?RP8ZOJ?zQG} }MTWp5 /Tcݵc̀.O< Jɻ$IN:]^NZM A, k{k7FAׇw`eecX>s+?ٿw6^|+_$Ly~Zs]{ 8g8c\7?t[yr x#ʑN% "<(N0n-g4UIʆ pXqJ02eB@L ag+H֕ (sp3dysZ⏍_"(@>ŕsz&LBqz;/ToKC⬔Kn;f$OZ0F_yJ6^@bƺ~E($CYw+1-ۑV9Ybd]tHO9ր_E"HD"2cqrh.w"I1>В| ~b* Nfڏk5:!q%`xpҘ$j!⺽.~pE$"P>1:>Ep /ezpfC哟8ξ}h+}$ ;o HZ0^ft\Nso=p/ԎCgW]rI^`pP. ESaR&K1B튔a5mBlk}߶3ة)SQ57| H-)W_XH:`֖"rVFqדA; ~Pyy㙺 Qz]#$$1ҟ𢓎1e12)yl> ti_$~#H$D":10D~VoBaC ?)O@sѴdh>ȴ9,l9jЋ&=[iɵױiV%e \ oW\?v>@~ݿ@z5"!2:nӭCejhyE-9E1!K^һ\9~| ]~}?g۷6% a$qU♗/^vu]gã?347zv6 NkP@"W@z҆%W(Z!*c鐘j],@H~!UM mT<@ ?5+lFrd }q/˺|y" =/qqceJp}:"(?Cԓ>r,CuR"sr2#N6Ǜ?nOa$_w!D \k܊waIҘ(['2ـs} @0HrS8u{#R&rpxjaaΨ^8C9' u kH8/F!-5jE;p<,vRtgpI|#;1X|o#ujezS]FqIYUL9_;Tƨey0՝:5?v + H{>l#Bnp*_䱔`#N\}v# pΖ0to"?D W\?U3I3xדO-ds\ vE"HtE"H`cL?t3fcY8l2&-1mBpndjTov:䆠Ʒ"ʉJ:7eõ姐e^ ?V.Mʤ3L IfUaz?S7֝Q3-wѧ ̵9iF'"Pv/yAϱfffH.^egr>g޹0 o}# ,b+nN5 Hߎ:>PHު/cYݠ'0lVׇǾE_l$}WB9夂De8dfaCǧt;~sz _"- @K/('P tގ~Ë>HH J|e^47YC^PN!@*i1NN Pn:?G/UjBZNhCtq;Ag8G c*k1\$D(D"I$`hA Ø귚Ee} w61Oz P$v}}mnNΧm&S7]K[Ftڑ*u!H-u·A:_z4{yªI%vUY;T?O1.1;ȱix5W:.Yvt;\w?O,Ygk#ǹ}8zt锯u%~姸xc=|7/^v᪜wȗ/Ǣl_MTb x,2a }-l DCJRパ{䝗QbD8uVt#v#N(dj{jf[Ӄ6޷E')D" @[@ I4 1p9~](̈[-wH+!Ϟ\G;勹/*bզğIc5[bŵ @΋>aH#H$D"H;]d0d1d 8 Z<Q6q~PxQsvLUq͉g tV;<9A.x6A6<{m(HH_ĽSatNtȤ!Vnaӌ;M:.cߓ=,o;\{{@rΐJj!C}G/q+Unc~#I9wrZ+{wcVNz|=gʻ]9sۂs+gVR,%;UQYO¨Pe\ eDrV-CXm Ǡּ3$Qp!v@-*Lٜ54z /Kdc}v"Frh*.E"# S;!zۏ'aq8l-ΠjQ9+>w 4<6y| 9GƤr>/}`\IRLHvr."@poW'-D_ ?H$ lsmsvCX$cH&AC9TmùoVn+!+Nv}Z >A=l^8W@Lj ]? h$R_UMt,M*Qtfp&}yLwx5L& 7d%'L13aWK=? T|],BQ]퐥4ݷ>n ^?_c6zFL-y'AQӠ 0JiHJrCC5$RMS v,¸(8|ᴃ(dҦKY=-bP?utD}gHdӢY`)ܢ)WMX5l0dS{pY.[SpƋ*n>}/A#&IX#a$yKƖ㏷i'6>ą  ?aH$@@1ޅH${u1ڲebBPU ۦ7ЦMp6 ߴaTw9R`ȶ+:쑎o䬓b752t?mqd2d8Niʸnɫ':K0Uxk?<1g. U3\2͒7޺U?'\rt YЎ2թ=zb-*b0!S28lL!\}la'% /֌y$R}m~}V̺0{.i.@ZDu6]?eJD(= [ :"&pԙ H8[sۈuAAg߶ArTcyBO?"} y9_y\cb%5)exC"ds)DD"G < &N \@ L2m4-ml&64fؕhַ}mO.]Ɇ M$l8@(s.D U_^m^(= f~"FxٚpIJP}~zaie[-䩝+%u,,,Pk衩y!w7[o|ؒ|;g-?ܳ;=:޷`7s(z 0f8Ӗ7eBjtNܞ TD`H{9-o6ԓEOñGm .׀qDާt "3Ln~ ' m;Jg<Ƥ8pbmke%/wA.v4가qIf1cmAKH9yb)Wqi*N#$1}-I{e`%~"H$ @H$3 :LdETN #0k^lpӞ[Bi@ku;gqkF%_o]$H[-h'P{y)](T{dQFw@BZJkH ?6Pde?[&ę +9s|!/r192?`.!?x &֙:p{p(V1Yzg plMIM?gkGqpVTb:deנ内gG@*DvѼb$N~H%ja45{ν3: H,ǯ=H6 @c boSMULڡ!z¤]""8E ilUeXXW 򂌸qXw%&a1$gX^x*8 SI8ǭLJPY$P}LN)f|+~"HS)ޅH$؁s'1f -"OM~A%Y'ړ;S8秚`*X̖+^|#I;(4VH0%jƿ6W ?Z GՈԇ%UMs8LJZ mDvT%vϒ2M0 \+J:xÁfH ]i'E&`WH$r_<<˖qfΖ! KgzIg.@v]tmW/-6Y/X&s C:67B9 d LC5T[vTYڽk0wF/g)DD"1 "\C*iT*0@|@BX.Roi2h ԜG=Rǟ.!'`dĩP }>mAd@CBw4z_0Gy}H @ S}x E /'v0=XpfŔau8?¾=S\OL^y NHeFkN':> |+_&Ms}qoթ8ϐK٪c_#iEZYUBB1S@ŹR9R.iN'u|cSK}9L5[~p& p>\8Zd#xV2B$pH$0LHi4 >r0+`LmU}i-M Dh z3p<@*QrP}ۆON_pU%uJ 2Ilvx2f~ aƓ1k!2gՄ]?^>õ{7o0;qpnsKWxvuֆ:jbs}x{kr9ppŵ\Ypw0):OW/E"o [H{枲#sثBJR;8pΠgMR .]nb*Wa%vְva)ypot{ 61lճ)f\L$/t=t3 my8x3(a$#Cgj_4I;8~l ǖ`}N\?;}$ǏrI~ hWH4l1 8Ԯ"A?89"ɇGW0@?eH$`B$L'qng1: RF dc-jO-Mʴ(!u@ڭn:v@҃맅a=g>+%n}99"NF7|`{[ *.o'b  g+m.îq$V9x$Db`-$aݤ @1*a|ƤH8;$䛳Pe}Xe륄9 d䂮iD"(E"Hg7ΝOԐGep$n#mra N;PߴcQdo[AJhu5_!~ҌVp\FIZMس{e<)((ɋ Ac^Z}g gfq{s`~y Gm/caWqd~[h _.q/p .KXt0`ֻ~L^`LR/F B.x8il lr pzE é+/.Acb*8i׀qE"H"H$cC8wc`RDAc&wK fZğ[K\[X=dĕGj&dƨ]nOz>|@WPX+Bv(P;8v6\ؕX wsW s, Ɠ y>a<34'QP6|C};g(GaVr|g'o gf,wdnn? tﭥgw=Ϗub>:[LoONSh%B^Uv8-J5PoڽBq#( ʭ?jVӦ-r.L߾Lכٞp4>a\lA(Zư9HΉ?iY~jӻ0T!EO-yQ^LIhWu_- ۶'NyXpWq6z;|Dc;<}E.K NԹ^Iq:KU(kNMvO_$~/ŻD"'95mل=ψLi`Nȵ %.d= X_T!a#Ps L~nwl{^+@- `-uǎt;6\7u /  Aa6Qڜ{ -f{h{ iWq`߀;@sVY^927^) W {Ms&avgWޮs[sSlq}Z1~0s(X\lh$=naZkVBlsA$qdisP /my\5N=:`@5`5~-D"wP˜93ꄏU6uQ;$0ЧdlBZ1 &z9&$.&g}WF^pwmfPmx1KH~"1&eC:$k VyUkg]Ss5沋D"D"e8 f;8$[ .6وK@aƁ<P"昖<: olf2{!hhpLYqF?8cûK^~:?n'!Os+sȑV]^ 39ö, T@KL_cȏhcg?g 6[=:CȘ0܄ j2^ sk!.ȵח6ݐ3LiZ hAJhhr)We@V3C'?CJVqGe"WH$rH_9i,t;|K`jStfpq)׮\vjYgKyNz#IW haX|; 1t1._/D(DD"^$*P8Kb%+0l6'GDƄ수cT!—K} qZYW~l6tGL }D0R"N*W{ĽΕ}'OsL&}c \{gnn,A9A#hGv?w9o{KRum{&'ėV8y~lxe %?8ۖ ޯM~CIҙ6vw?<=hhǠ ^:7n ϣ;2|RNhˏ>CpFBc #mܧ{dZpKg<#J^oyng=PJ>vDv|ovqYu`+11{ ajqG^f9խ2قҵ@^4K8-DKĻD" pC8rpSa㤍~S2JcՀ Z$\AF@Fr´ O"A4a549Ip^uϙ1s]QG,lm3]^G n, =y0E+XX2EEQL1d L sKV r9>!ߺIp  <:9h:|؜:½GE>5Ṭ3sҵ3?\fwoߟĠ7vz(]0""T> gP|ԟ3?ݓmNCKVC'J.°Yi, Տ'qL${t~Pdp5&ŎD"ck +0Ŀ~-z'l2i`?##1 ltxdX\b{&Y$$]ðu?~ӯ;FY禎 ei7"d\EY0@Ɠ1ѐhpu9\ѥ7Cq>{:5?v]Ass4wW%_zg&ş$yɵ'C,]=󧜭d,WWOgA;r̵B[ =pP->]L8gu|Mxs~}S$l5Q.0py?+E$zܶ8@ӫ_x܋:3 ,w[ )G7( Tl9{d=\>)cB_OYoGG8px1H<8WTk$yx ]]eRtF"}'EP$7:tֵ5?Ib C,iLaga,pxD" ا,I=`gэkvOڝE Aqw!/rIؓv!9y#<<}Rz7yíHoD,2߳%s5y<)D"(E"Hb?pLd@Air@` kЄD75FB8x Omʁd=7΂ʾ= .f,%O'K8y`cx`n\rtH)/Lytv4Qi,f+sv Z,q._j9t7nTͱZDN+!.Ρ\AN "0<&J]2maSyZ/WcH$Asodo .9>/*9ͽ-b&x0]Lև3 X |N|E^𲚳v/H^ Ζ0d <$c2<N`9N.@?H$CE"H"p!@ŝ-ȗ$_}-1޷>?'L`83ۦtV!Hh+ec 0_"03 $7U-/O?8bA `YrI 0i.$)Y|1Oq=m%'S\̓ Y-y] _lր5D e"H{p:M  %4$CRpD "k$tT*dh( T}45ګq9p'_\p@CWmuC8O~-~o?Ƞ?tz ]݌ȡmxkgl /导)$:qkg,r ~L=]`iqj| X)7'&!Sb<L_G5lC"IȩN}ķǷ|Ut(zH<zgg$pH$19 .7hsbs`T8DeK6I6] $mt,(Lhp`'~im" \ |:ͧ( TPp,r_2LB7Sf~-#l֫]@SSj7P߯AnƶO&4<.ΞY'tG؟ߋXgzY\5b2"`&m/L}dwsYx}˫fu1KGqtp޿=@#* q_?1~q5%#X?@\HCjG7p}X]&'3H885@7].ezLܾ;塓6YE:D7q|  s00N9LD\qP]0uz_č1[`3;g$T zAW.|Mҩ&4129o - ̽ \H$H$d1pfHY8otvd?*$]2\u895+t pЎoO5 `!QS)C|>yw=} @ۧ-|jBׯE`P ?q8tp=g/, _zw||`XkȫPk+2t3Ņ{+OҊ`F7A8 0٫^Б0 QZCͻœT}S&sИ6(:% ܫD"QD"4p؁{{_i7- 9FUqAZBn1lqMs!>R?* HD& {6YY d g1 ނgOG?`05`jЧv^ 84N{|8TLW]le)˒VTeEUUتڊNp`O/=ťig v8ZCcv?raz*ƌo^Ve4t`y{ {7J @ mɸ\=T~6䢒 =3Bmm@\:u!S+}kCOxB#'q͐$I-#=&sa|X @97\9٢O'+z][q'΅C|㭇0UdTPvov?dd0ff1$Wшo~;(zbpu9uPH\߽??_=\ 7Y6'I {ċp2=vdFU: Sr.rBhp,YGMnk)[OH~4H|23^G@ @B[={}$/xQĕ^$)"z5[8,\h8<\ È+G^@Cq 3,unkKUdU'y;dL"}(PX? LS&SD"QD"C 8|:P$jT$MD`6 z^Pb uR(aG_G84ނQyp?H\C.QRy%W|{@'X\MY\ }uh ߧn=<ei?g{Bo;Ikq,KDvo-)w7vסߜ34 W(sky~H3ߞ{@ڙ@g0˞ӟ@3q3/bs{V6oEIkqȨY_bt&?~%UΜVsXu mt }I^7 =Nkϙ Ga0pր+$>#Ƚ)Yj76-)F^'I2Oѝ=ăB%s?뚚 rcRu##1'|]:nKr!1wuwD CRMp(MrHy/X!f[7iD"{]D"ǀ"+qi#.S+jbU|ӓ4Uq\BVȹͿQΡvG(f:_1F>VoX !es7H7@7ToWO=ۧ+.ȘjPA.A^'/~}3gdY{G^TUTo{QȖuG*,0eYշɗJ;~6' =Yvdz(ASc7ߺ5D0=z~A A^drhobjj'V0TX Ο҇~"8ݜȡ!KO0λh%&/c`;8D$p[\}˫h 2fC_0%E(5)Lq+X<_Ϧ$mE Xu\:NC X/K2I_z>|˞$i.Ook7ݑH^ׇIr8U쯯}~F ;;}1!n Ζ*7oGAW8~iFZQo_EGɪ 8**YN @-taUJ F4G"HtE"H`pcz4bZpvi-(M5.TsUWf:15rZiwI?Lһ`Iҳ3X] tӼV<|zE~XĪ)8L1+ͫ9{ev N-vtjG{uWlK^N;4p8g1Ƒ0.V>l(7>eUjM 'al\ ?SS{_$ KtwGь΋Gs2D1䇱r_ϟ?W-VNޗϵr4a"Y~29-l^wϥʎKRnE*PGu$Oğ) O4|| A;{Q-i͕s\h!K(݇ DrkuG[w 8,8!UBE:#Y)@#qdjWoU%Y9ؒ6I62I c6 ^"v݊4lx :DD"cIPq*('P,"?+/9ob] wB )?g?nKp"%ח2VG]>h0`j7/EYO!&Xgt `<13I(㜥,JH~ʲbz],JyG9{u)ȗ^#_}8b>=mĘ})E4 vD?7 eM8;ߗW}ݸA8 IDK%ʺmI+ǻ3>yvvov7Xxf|̌%ɲDR(REJH$x$}ԑT/^xfWȈȬDefu}sT @+MϠZqbۄ}hVnIHAю/w:M􉁶`Bs{7'~WE6ryPj <&vx<>ONx`N&w|  >.AMDqoL fzc!C\#GbRtH62Ef;I-] Pz&O$7c0@  Ce8 @ X,5ml"װ7"gP.nw>9+|L["!~Ⱦnn3PNl sf-u=A&S`q u("T7~ܞ)~ncG3R?Ef8|"0Fnr$[w9\vX|5v'ऩPv'Ŕqn SbLщì_YXfZ 5LPL=m$+vdr(fe7-9,hld20w|?ec_eJtE;}trkî F#=i֕tno=ĕX;mTm9<?;,q]"llqSq.No.=4 @@d"PE{CԖm'In0P S‰1"Ιc8 jPp"N8'8g}l. )ĉQ%qAp6dJeVdZ9s u Wu @@ xm   ]tpQ3yۛUW';Gp9.W_U'E 㭷4}):ΛP(\)]]ƷiT:esnl @ZL~mo\K(:Ξ&<}UGNeH\#eYzW켁nO2V+G1 tyOJPchu 2'p{gڜŠ*|;XqړObi@g.`}Ŏw`d69[tgNs(-Ik ;#񻤔Հ"tw#+sl`jO@LB ' =baݦGd ºU(< LxW-wLfmg93sA1gKɖ]DyLE,ǃXÖ9VX1H?/Xzbb|?Qr ۇ-b/ 2Mj z?|sN&@{xV@qasU6-@=ĸF~p^V"Lc0f<"7vY8V%s:|ʩ:מs!wS0;QIdl;^) vڑUla{DCw^9陜o=qme6gfc^q.KW‡?a]L,)ju1$IҭĊDКD(@6$1e}Yd18Sҙ|5 ckI}WW9KL~~ 9,+V&}GS6Tl;Cq"z%e$uQv"ȵH|Wǖٸ}V_Dx7Y&<弨py~.,E Xw{~G]GfB^ƴPΑd h@9D'qVCd1*Q~#sg/ ׃w4\݁@ @@ xmPmޥy;Y*KR-DV!wry۴/z8y\>9~Є{{K9~܈(U,E kx9{I8c#%ٲ`)ʼ+QE25btƩ-QD(ʲ'zݥiDY(DB{dؓN^XIn{@RQ'l6VT 'e9ybՕԇ-W Wn *@~xo2=!^~߁"6];ZPWC*3y N|@iUC4GE:&B@ >{蜽+0ݙ#Zv] *B:ĵe\0bV /FsPvʼn58'͊S\]M%% JJ#:_}w9Q$Du鿬+gt!9D|y7bhtȉ?Ո^I'Hݏ{$zHι1ùe6n~.LrN(3g^m D VY;!Z&S؅nx*s;HXǑ3BQ$JIF2'LN/J1MvIM  `".3"4\ց@ B@qm(MG\\uϭaNmPuQJNEr>|nTٯQsS4oC7ʌpMFCᅨ3uϗ@Q$]KV2:sJ77|c0Na^fܰXTnn3]GٴaRg=*k׌p,EaȲv'.cLo( C$ʮ0\;b8vRӕ秛4j޹1%| 5*ztO8r K1tr#.MUSӈ(K Wiu@(}cad 7 C]ck8sC:jo㯫̍oExzCڍ$I (g2x68  y~k1:UU3~.\ L;>&PHL'm&ZExeQT5jdcG0X͔]\rhpvL7:gΞ'2nJ@F.,"Qv*;FԠ(廞#@:o"TUq '¯U8 @ 8zD6IL4+'"/RJbcCbt}wo4i"%$y|Hr%[W ҔCŵu.TCD)pOp"wlkIL=G=3[=%k+'Owx =ȺeIbe1,_i~A ]:[^8ҳE@G}Czܮ ̮ABgF|WntyĥG5T 6,"OUi`" qh%p5 jDDuΑ;+2X;>N^9eW˗2 1yz&غsugSгԎ7W]M:rKDdp! ş*צz8ȶwNŀ{#'D6)P o, k5E$S'V a"Q[ӷϞ$1(/X7ܛ!~UmDpxD:9Tn- _>_¸UPP{f4y:\ ? ĀјI^K#2'7 (9Jj'֯n;z XQxnnR].Z5g#Ofb7Y ͡-d-q 7\c'[;1WNl$3kV5ɆKq,FZ.EiH(^c_f)+3;/Y4-v>eTy~V_ڭHp|9q{"* 7ݕH> ]G,WOw6QD~|^N{XA-n^c|(DEl)c)@#2|@C@|[97莝DLwjHr8qmQ6B %EM 0u:qH$”9xy@0pIvY (Phف , $eKQ"ƀ8`"'g1[OhoqA J`PQPỉ,v:^A1 W 9 l#}ܔ<.&R;o7Det,j!@a/wOOqx><7&8k\~-@X.a4{999 H _2>7mub ]E(A=Q(^9s=V؜+GP-zlND8ǐADpnl[Xq 9]098q8"Ê"yaǻNBl=Dj:&?5l$/q]( ZPSt;n΁v%sURjw#0xb(c[7Fw8޿ nV SHJ3t|\ʱ8|!Ԩ)7rTY 7˘H fgs$bxZ@c ocHɩ6Ͽ4ɍ׬fK'Ք*ss]RNnaTI-+YFkp~uo+)XmRQSyk|Wt0fP*_d#@;<$۽_(-` "|$JzBP<|đnj_ΡcnjKԔ`B岃]{%j8OR ?XTKºSPEG׃*{7B@ k@RR:O$hn eqcV$i&[<G3Iq UFkQs|oYٶi9/8õW)y~$7\$سoN Cf0O1:Z㡯?̓,-y쉒+*jּy~Ѳ DD<8,d%c ըPmlɾZߜB:EpD$X~^3 ;gp1U|iG#00 ɭs&<@>w;H Tq< ?w+_r}ڧ_X)6"$8Q(-#vY- +.WEr6hGV5aι}%pNrdsWx1;Uo~<@ \HzY]?nZ$rEYNn͡uoUN F*o;J4+GKǛƜ2ӝw&{`+9[o^rU~KQyAQEN\}AgPzN&^(wwMYwMqHN QpNBM~A@{)|c\fHzjB֭Yd#jÛNWn_E\y~||j^|jڪګVDIv]?{;URhG'8U-Y\#*d>qtﯽCfd^1P.&4tnmi֕B,aizmĻo_<-ֵ[sɖQҬu*Nv5~I`(£- @wm |iq[^!TU'O,ۧVճGIՠ WԀDX1}AWp95%"QoUE$va)QUG k6|lAy W@ 8@ 8"M(" QGpinj@KL% I?F=LU?[* &[&mnC(ÀAP\8 :7G59%+v[񛯿5L$MhlkiYt9EZ}SA=8ˑf49GnWn$(bdNke5:](/7.:Fǹ投=Y~# K@~ᝳs *ϏC;q/`.K]S#"J$슸uA5V'HƍG0 ''@}3ΡS"_Xݾތty0Y: .\xdpA4`^TT>{ts1ώaQhm4qm9"sZb#+(p"1:[ Vb?}fp P 6ЕH48R6^8,f9:x?{ Iaw~m־j+Ӽ%r[0Y#f%3S~&!Usۡ/-(u|hh}ޠQ$$ZuGuEAYt.I\uI,znNL0e {<}2rCcDqLRjddY\QOSZEoyrj:xYͩmo"Rr_~ $Ϗ;}3[pob.FrRQuڬkVb ')d'J"늿~vu)_ բqE[]*/WN\ra`b(͗7Y6>HT))Ɂ `2<@ã `Q""_ 3EB Vۑ_4BC!~ˬKWC,e0QlwDO{!\aŵYڎѨKfM8Ԕݳwr͉4=7PYtF63V=5VuY,/ WdYB(I3( J/'PiPFGjBkX9VgU|\@]$TYj>m&`91 EOz7&ΪM).l\SҖ;<1cfͨD]sPǸc8{_EcJ ҔUG޴8Ouq2g%X("PƯx…)NDR]&ZD6I$i )@UK? 5DP5vD. ( (*8o1@}8@@ XJ֡f TqxmF E>IhŤM8 fncG.Ծ5Q "p1hc r@*//굍xnf>Ro6i6juz AI pLQC{eYY1F?*[NrHo""vl ?Y") 4 zsk C3s%I1.zPgŪ9|VZk1OI'-'>Y7u/7œWʴ{oDFi EPjCؽ7zs6H9"0fy8@ P KI&D. _/п/^5LwECѩz9A.灿 G!`;|Trsf!މRpWb?zQoFz`٠hjV,N(;v5~ NyI7D `aCذ*e#FH<=ǎì1qfqO)KP"F3JBc|֍|0=o'2_WLe_Ԩ4!VqNrk!QӸ6>%[x:m Bȉl~}ܵ7$H`\!#C1dma`6<@`"=oF8g/qqP)hٝ+tLesfWY&JRj)Q ҌdTUcx]F@G j[ںp6/zr@p1Xœeož;1 @ P & :L9*B9PdYZL~W9몽G.̕;YnZG% DLu52 x=͛?<o|Hr@ZD׳k!Fz T٨GI"Vt`j욢(% <'/3QDq{9~iF KAQ8JHӄvnƨg:(RjNW҄v i3/޷]{P^y~pom[bIZk<@ٺFxׂίG1?kBډ T}J‰̮/1 +Yr(1tu;W@ X  A(URx(~ 'Mkٝ3\njreb-"5CHKH\ Qi_D"1%)QԌ$EPuA$Ž;vDB$Z[ǹz^['^ 'Ѽ@$"IK5p@@ 8ߌہ'UQԄ\)bv1>֞ ?AxqCm7Hf6'OH){Ey>If|ƻ s-r\OF}}ZzZ$i޳orݩSѢ(yKQOX=|8fˌ.+{BO'$ILǜ8]rrpzuYJ%BFk QO ii/>-LѬ٭Ԍ9OFA;7s }=](U9p -6~G :brf ' S-GnyFR,0)NZ @ X  n w+n2ুQS`DKƊ4ZԔ1(m_hQ^XDqsxa?^nGn; YcTl-֥@E& ہ7I|(U.o~<@ Vn3H@|mֻeh!ȵEMIޝ΁ D-:'Fʈw v @sDgꮛ:MqS!UDCTh21eSCkNJ+ջ _=ha}whĥG5TWfK3a7@ "U}vPpf[y Dr16,jb^H\_S˹kqOf^i@E#.g&HD磮މCH{P1Z~o9pp@ Z#,Q%!NLFxdv/?P^jWU"PgqENjVGM>z aW ];Ϛ[9%lȑo8OjU썵zhRo4QK-EiC>st+D8Ize%$q[(Ore\?qğz+ڜox\y|̿mm=1~3_[vwM-l]Ŧ{=ݣZr⬂D+<ުW, แ6˛ x{>+LK jxo h 8/g^p5)\Eo5#Dz'܀);cG{/r>pkc{ݗno¾U$QS> *qIo_[7KGQގ @ |p@0vDDp󱂥&gqBanvSR"W{mD " GuvI3>?.-ބ# 8Q/:!Y*5~rm&#Ĩ*%SE$.&5;&p:[j6(d ) is6 3{-9L+O\Wg;͕\y~Ceks;ީ)Ba|[Y* ܥ>JJtV mTe 3n>~Ojp]:>@Aua07l1zE 3pH .] %, Vdz=" ¨<=DSXP)('bVM f>bx_SܲKӶ@= >PE1XW*n? vLa5œXׁC  ?P ^!R.bWD5?/RSͶqh_ Z?D?z^Y"}H^gУ>}Uc!zׇCfsc=u %Z_nK,t^o6QoHVo0hRe|/tMLQ /Liԅ4˨9!+8~V|* rD4W_ȅ秥i񇳛'HmMՐ&5m[zB`T #q2'BI'[u~s{3fzm#(XPuy*nVIpuVZ'f6244HshE#Mn(cF R hϭLAy+xib.Is 5͇>ERbTkĨA^uPVU䧥-?w>a,7QpZy ƠW߶~sk Oc^9܏X[j$.`J Clj,<fY"l9ph 5@ P k-@0}B 8AچnwlUuvXTT E?h:헓v^g)؄CqW[7oҴp|hx(m6gq|nK$dY {vs{j8p|5=}q`Uo -OWOxk % ?@;-8aB*?^y تFID 3juQ? % AX7PU3ǔ+h j /HcrOQ5V!,݆{u'BA~ GZa9ڨb Ifq2\@ @ .6bR`# WXo}RX_GWMvkv'UQo"]p?>a|ŸswF'Ie^}|tomLcZGn2N,%MX:z8ygp)GkO]M^$4׳|RLT]6띵H1Ե$G/[\'HVB諾>: ~!|GG-v|p:O0񓀩Veo⽷*l~y_.l1DchE =z-0n@ p!@_iZgN c]/'Vixp9Ic hs~̯NN)]89qB V88D"P; E.پ}'"=j D>9xx@eUA @b tq(n݋"GKCenv<73~ A RKA}*PGG }퇱u3_hx9,yH6lnɖc(C. 0c+7Sڭ3Nby%凁6uP Տ6M Twܱa۰/xug/)k6d^8I+^0q(`->.6ob@YHp؎onR.@ԅGs9"=UکN@y~ ⵱qw4ot'KDQ-Lr m@CmYUA @z` T8W; PSL27rq-.C}J6 y?o0(CI̙ٙ6,MVan4cg..M$櫑Ԩ֪WϞZW~I>Ps(a9Q&ц~:'Ŏb]y"g TDt ~1 /ظmYqg1mC@7@o@zpz` "V…P3Eo]D˲삪'"a FK# /'[F` 3gL9VDfU7GL$V$,H@@ &A wʈ' .YnК)@Ձ>xZ?^Ue~I~ky!admwnMWi^ԑ}g$ÇE0EL䦛_OVl=9O>/&6~ ,u*UJU)>2%m(~.KsJGAׁ/a'zȆ {vnþM.^O`nGd 7Gk?PY2{fzm..l܊*7gOz;},VciŮn=g.ٻ33f*P+`;=hp.,nl%Qϝs$/qW[9R ?1jRv\꼨iT>@ʾ\<9o954"n}D<++Js G."u}[7ؑ76n|r([- +JNv &E;5D*8 p vo6«AM D!ctȱmۂT D(ʑ(ƘbA\WU> <"SErkw9e@jMAoL]H3ȣg J:wDE(*lj@ٗ!9Wd$#k YvG\ܳO5GEP7EZDe344Ĺb _0ע/Ũ)YJ1IkmjdbUU*q +s(A-֏.˨]8W:Pqc+JǷj}ƚ $I6HqTxc @ xWX'аⶀxxP3w\.vRP Vż1]6Zbn8aOdeۏ/nU}hqDZEIxV<8@ @  @c7- M "}s]U9Nw08sg$p) SߕdțW!ۣc%|%-ܴNEiNy>λ{v3#Z8:\ $InQ}"[Of^~?+OHM 1s 9< qPGIy>je D`u?()N1tK_ǫv[_5r 44q(FWh+P/noұ3!nρ@ "=T lڹ|AV{B8' 9jy1 F 5`,6uAAo4[@+6+@nV2Y9K@p@ pV`-a&!sDښݎAUao?U:2\9 K|^i~DFS߾qkV [/eQtő?޹GL=t}}/@WyDF +dKY. UԌ :bZ5ºLP~g$.Jj(5$jGJ1щ?UnR#bL#?rWh?^n,sGϴ {\'9q<̵;4axt>Bu~8/E nO< ,qJw(\>e9A:wlkQdKXpzV@㪢DݪW#4&}p HG+G WU ( \lM(G^8砰>ȧ93KY< ΡQ|- jt`H;5 ?ȑ>ʚ;okYeHyHbtC$<}į>rp3>M?b6_з*e5|/U8xTy~aK{Ybk[nagD<ଖF'|_}e_NKYQD ?CO r2j?=:"" Pp+pԌs/|P}M"-#xx pk)Ng%[j^NŃ"ۖQX @㗿x+JH80m@yX~ٵM`;p X4 B8ǸzuB)6[uo@tq-UsT$:8 uA*A(^ЧY@`iX l!h'Ԁw}Iϴ |Xo[7VR"Š>>uXeԲZ-]fTs3|W&r}4ۿ?z3/ٛvZ7e^^eWpn|1q B{/C4;#n%fJ\Kӧ?{ŇpBD+>U7#$ DJcG ҹgfi{%'rr`.į#?;<*aݥHҚ߳WWv'@n@ p"7oTa8"NfX-&ra)j T]N ׶х:/]c19r @O嫀K\<;?(ǀp@p@ 8{"KA6⇬W=n!͙5.׫'BQЂ.}(#ݭsgnv*'ie5LGF ׍i,#E gҮr"lΝWq12WwKNP*g"[n)gI RwWoʏRT%Fif!:5Ry9g])\}zsd"}8̅l *D yCՖ 0p ' -@We^0e( V)]D*sTq SDղV-OrLcPî'c ۼ8x)o8(⩁nh '*9>13un\﬊oBN~p7ǨGFGzm(ʶ璍Y-4$R֭93V^<4(|ԩ/>Ż>;;#ll7ob0z+N<{`7.(J{ӝPp#hup2g:|">_S(N+~t"۱BMF"UŻ9p8n@ 8;!#m [@ RB2 s3\8Ȁ1E]$eh+Ք5$^YW BO(Qc:e-:(ж]""?:= r %Ų+tJ@#B ev`/T ~2Ҭ_?m]?p Ol5# ,)@$0 / \hh X>{P\< _ (%FdPx.WDnZ{S2;=Ik Ko!P}xdԌ pܚ6M'ے$K4:>ޔ(䙃ğWՈW-A$\;z/~#f9R3{Kt\~æ>!J @߇NS Y~UOӌKGTTyt¦mX(^cY]ش}𰷣A"pٻX;gs%EJزcEn&i&Q4#?iQ(E"6.juڍ㶒mEZLI)Jr$ンu)}qyqZIyg9sG;cD>\ i)B eGlKp;pD@ADQE_Y`Π1Xpv1ƘV؍$>v-jDniO=V҂:ݿTh(j}|C>X(bQrBfy![3d.>Qnϵ w}Ņů>GSnb/S!D<NǽA1Iw2 xx{,)O@gm/އצ߹k|PZ,)vpOdB/Byeh&\1GD(փ Yd2xӧ;wfn6(z.ʫH4>$7޴-T >`T9;@@j]O 厜0 Eīׂ/|| %-A%/ p7Vt_B=aE.]AbZNE,--Qو-['ؿ6nFKʷo?Dى.y؃ T>V}HD[h /?ZOj:i k?:uaP7'{0>iyv3swt1/+lTS@w lo鋸"V@OLsI~`t;6ЬПRI0p>Kcv1Ƙ n Ҧ!=ݮj ,ΕWIh?? Hkph 4m,6[\f{MX"G_>tcl{Q(tASE9sU(" EVV[oY+7Ks5~r z{d˒x\O:$>"e abbEZT?PB<W[I$'Z1olV"t9dgH8jEh-=atK-} phحc&Ÿm16 s4]=~`P!}p5ii t F\6<@^=,_1 1Ƙ&mH'Y l\5\k+,/Rykq[bm zDZ!e#v2SSh'si<[mݐtvnfqK.5jKwWjPkUK&U|# hDˆ^taW2twx-!,o'{@5_KNW }0Ide= ;:P78R{_`V*3֝d]N7Ҿ LecD<,fw[A@tܶLyi@0 i礥*ii59K0c1v!2IJm"v$ 4vTuSݿ)OSFcc??|T-lttA' ?w03<<žju\_-\;"g޽/e<ka \6\\3>T`z6G&۳pdaTwX^>zdChKՎ(TkS}Z!|vo5ԣf~`5Q: "q~:H ҏQ}cDnN5Oux~=;~MJ-y :Gu d!P Bh/H \ij K%+0f>7v1ƘC tnݺ_&L*+Nqq%ŏHEHW(tq\p Z ׃~jQsg|U_##Y?85e}>3)^pQLQZ1ើsݹC";gDJ Tu5D*GI5`xh~(xu~t\j)|~EKߞ:Un8@p`}cds;9 | Xzww;٥sJ npKE:IەǩAaD" Y @QO@$̓t |dhB|-?s==TAN'= o1@Vd1dAvݸ>>sw(Y8Zi,\cu+ݽ!Wh[)Ҳh]g<\.{[ok'O0:2@'(@ke$n-n UwBZuW_=&к.ZFNǁY1X1cxP&< onư<+KN%"nӲMIb.ۆ[7Г@dXhܙSNdd2 7#͞=QH~| $ P% , ZZ6-"щvC\cjӧ ՓG’܈.{:Qԭr@kdf3w,4!с Qt߽l h0'5͵L7w1l2)w1kc r :(M7pնIEV봷-]W}@vq A[Xc1c1f3b}hodBNCXci~j%v(iK H#ەJ?=L` ZZ)VWV(KQ(ެ'z߸x/t^QRBƓ . Ak{ދ߻'2V7kdwqŪ(~ⅹ'vlo?O2//r:lPng׫vO3 :pƾk1f Y <|r# @ߜgX I@]p.78RN{9,XWcngagcNSv/pWUY[!j^HRG_xmN_~pWIl&= . XT"ckz}w"\zn/3%S#nw~P((%ۭ`ɹqx>ih?tXΉNg10 bcDxgc^fy[S(EㆊzB (v*VZ'3_>{cf(SXt_$Pa;w/54lc1~BgUq9 !Zjsdc̳S`1ƼD>2+CyH$>2@H)7ťUa`AHNGB#AAHCADt$̳Q nDСb};?vЁDq>/y x ^Zc1fwy.:? <|xc1Xd1Ƙ4e"G5'! \IҾjgp w$sDAx)IǶBz.pcJG!gSꆆ-C!w`<mc+^*Hޕy>z?r+e71l2 |E Og' o`Π1c c1moyDl Pw[@6AYP6,UiG*+m( TtՎ>.UTy EsPEZDproٞNg2.L3M> NJfV2vh0=xj}|,pحc&>>6f&pΞ1cc14~<@@I#? 8BRU$:H^ND)TgAl[] lҙN(% fճ$=Sfڴ9PصĎ[F!a.?h{"3;r.?+]v0sO ?`S?cc1o:c灅+8RQZ"ƴ r 2 <4,c1 c1ƼV(ҸBa*$+̔g`x$TaT 3aylפm6Q}{OO>񷕨Pp}m$jkHh q$/N?ڢۖ*~{^lP\~^]cI P,4c@cfC8ĩëHsR)i%٦ h4%}i &2{SG9kQnD?Gxs;iG+$@I!Ey%羽[TuŧVjopOwcW+{B$ឈLKH>Ʒ٫8GJvm <90]ߍ&Р[߽SncOWlଝAc1ƼU;cϼ8 L֩SW!S$I=iBJ=t,-P^ADYHW-ҙ NZS; ~6;*]]|O6ApyGz5{ѿ0:eٺPZ~hqeZֺꕵzSh^77j/A`I$iå֝ݽx$p~ͩRN8>p}j c?,<c1 c1\/5{@J$O:qIz-A<%..SǨ*-shuʽ',8R=[:sÑ,-2{ѿu|,xmRO>K==UAH(Bsщ,C}x~HN)syq8J/71gέ6M`N1c 8c1(à5H*~@,k$s*W@61G x(6Vw]\^k\.=}u ődVe^\yزe+oES3<@J 8j g ; :w&N.B^Υ?E2 5{@n7 CW7\|c1X1cnTDL" IKX^H*}H դ%5XABAS'>ֽùk`}ڷV|5$1 0 =[X&-MTpwW<*/tlHю> wTsމ6Cct&x84a1o+]lLx 8l]c1 c1 "y݈ F3TYa "|XJ+\"Bxk[ܲt(KwW*eUzzUFD6[au L@&ِ0l/eҞ.ggfxiH(TD'PUAi5c1Xd1ƘM8j/$H CdwJo=uWw o\.hQݱ\o<+$NO%T,}~C裀tq1?y.CG/ $pnsS< 13v1ccc1f<ZgTmks"eLi*Ͼ[UV9N- !M{=nc-#'8smO(S@̛89e:|Pcno,W_Zc1 1vsgAς(鈀Ƭs 6DUh$k0̰s[pٶãY |i(M116?-Q+PAp\WS88p*zUv X  BTM9_SL^ ޽>cJ) #=+gvrm١@ψPq׿cWp  sގ u\/"""EDDoR'~0@tjm쾕 vannښխ?55@h{4+3N?54м*۷GZG Ph7p ?7}\׺츈J9\ytSˆH۸k;ObtA34Ö=;,dEDQΗ07xV """AtWT}mɡC8..WU_4.;yɎn[ۺm ng:GZFD{xaI.w)_DDD7و'5|KmimE#UChm<h&8|S)w'Oޝuw6 vbv'NC%&"!J P!3Ԅ *Bj{ز4+qbxx fi>Iփo7nT+c@^U""Z$"""8e-n` ^FiZTJg9FcƉ?0lEQ :4DDN nn${x8_O֡C:tkQ$"""+G؃~j7~[fP,EQ]1/!MDt[Je녑U7-(g| Y6_>ls`N񉈈 ś%̎b7 mEQCCӵ *1_7>2: nj wV4.^!g}@dwYH| b_9910Kxm -VPkmo=>591EozCVz#ZJ7z 8l{9%7,]dƼ&PH>Hg'3π `8?6w]v)e`P-CD8c@@""""gfF/tݼiaJul'@RőcyiҬǟKy);)VKt妿3:r=Y-vBcf٨TDHHuvVgR5hm3p<"!"NNHVv@""""gVlk׆셫70晁HV+o( ٙ0AZP[y[*4$!zrW6e4dfMgJqcA0[VV^A05Vζ'y78kSv例Qq"P h'/'"""*DDDDYUmV/V[`sj wHEkY. !ĞYVyFX,Lv+_Y3` Y CZBWkhmy49pp!sx Pt"""HDDDde>Y_6A8 7ztiw\ xϦ M ߲1b |1aFL pKF*tJ*s eg2SSᶞl{9 m:I6|x()>m'"""g)isփc4b ^Ƣy81~TTNˤ;:=Jx8X- sřMQP}w>gX,ec`U'c,i-C_)Ɓ;aoi,a,mjKR_XC Q p-ŧyӌ0_Ӛ]#L lhU@Y`[Gf m@DDDDz^Kx0Ds,Fs 'ƒ$3J^n?g\0D.o/*>YAn|Ȑl0u """g+$0gӐ Y9N(L$H3c& l%8pT|{Ǎn>z>I`N;dpJQ1 98IMKwbwOTݱTÕ=قheEtn,,)$JxSϊ*D >%Q?""""*DDD伓\jdES4mUb#]`IKsZtBcMŜVXpx(jH! m`?2ODN4:d1 xحr?'[6)9e &弓dhGW]%#߲zzc+ , C{TOudY40^rZ::{Ud~]wU/Z] g heiT,_X أ(cM0?95.(W^B l˦Z[*WՠAfQQ{-C# o}믉?_|ztg>5׼u+9eȊu=} yGnhTMM\N+aHA.zrx5W]UVf }4d3i@Z`LL['.`U( 5fM_7 ՠ;Fy8Wq\'IC#ʼnuZ<Ι7|褵ˀ]@INDNZ^ gx89CzBA~'/iF=wk1Ӥ:T'$Y5ٻ(1SZ(pL,1`4&qxoh_kܹK$”#P xs@ 0 1 bS %5eE٢EA;O1X]~~p'k{ :/پB B!\@bcSٹ+=dL8}U45ܙ3Zps: TPq%LL{cBOx|VV ||wȈ83aشq1>x1|կOPOťLN?VM')q K]|*ˏ8bv{G㎿MǶ7~뒢Orr I0meMX>=yE[q&?O3v{Z\ OOf=ϫ>\|Aqa )"bxE+B!x /{)[ PAKԊUFnAdZlZڦ,W!ɧB󟒾:/o^sb-} د_A{qgi߾N QJ+++[6//(㾅AD=%{ڃ-}D*D+bY^Ɔ摅4ĉ -ѣHfMט+P fù=g{AyW|ۭx1WccߠJn8O"H|KAm87<4oV-\qT0pisHdjk8N=2&v/{S;Ry |>?WOwD+MAA@mѮdĝPk:}&Hb]g,e:\Au%h' |IKMy}"e)R1j)W2 y(KiM5mIgQ53/p ǫ K.ga!Sq}tw͍ʫdAAAR1%TS2vɮTw 8Uʹ^qȫ^T+d h E؅:Ӗ1uB!q8^'c`==Oh5" ( &izEQy  >1m0<+2Z]966[?2^/m\^jjT02^:߁j i* P MQiAHeLbAXX 4SP^},oDon /r7ިXE(ls0]"kb1w?9{vsq~R Z ռbz+:;.x"%^^wU_rkR}HD]/\ e tĎ /wPR:("<(4 vF(]?99Y|EHԒ RPJtm3䵢)صjeuqIH@$>OLL"[rr"?5Ij`𻘝 zIÿ8==/֓Pc!]sw~Y JUK`FFދBkz[eB9_<~ڻN Pq9\G ,C$L9':QNS'RU N _?n cx]I-ΣϫoV$2~yDK)ff>SINss_q7o݃ &wE9ZXE[pהںSJ+Q9_P %Ov2b4XW(VzO"&Zw#(-YXɐ-Bé(5s:htvk?.-b&JYLt2cy,_H":h.3+(. r%ܷ }uC7 ٬# @s5"  r*ȍ\M/,/;^֫W]]U0(2_ ~G!020ϋLΝWfJ 6TP>}Fj=d(nV;?#z.]ou.Q_@#ر.X4( )4"|;T ) C_xB70Rzz"? 1P8>sIEƍFZX50H ³xv-ruyGԑB]t٨E\3k5jܾ@ kjNB!Bai?\  4\bP}Ktm z.b1,YnƢ K U ed t'~o@=Fo{Pw%*Pɒ#n@8qQBh͝Sdkajz8xNun1Fٲ5L#2>6Ѹ1fϞg#9y B!BDŷi?tzxE``QJ /2?Bb.J(jҋO^qO=JL@cemedd5)deumڴX Q2 4~JqW1chB!B *q ?.Q85Yг$/mXx/Pd}Bw:]͡Ň/LYD C 1lI:IǶhѲ ?H+y)oie=s팴qWW5k6 <&Oack8ʕkhB!Bȭ`}6ݒ..q`7Ij8/j0=z@!Vs#̙s| ‚Fmp_@# \J̡@ PwdHY(  )o,z3_ШQ_|ŲiشjEW jǎ 4|dPrH ԰T-POQ!X;wA9 B=Ϋavqy?E5i:t?ڶmD\E1nrkanW?Awxa֬uCԩӞ8"B!B2hrP ѣ'z_$=|X /d-Ns,b7!e^PI6!~kwCAP_t'g/ a-\O~*K$ie!PӦ:?U׸Hs{رnP <ߩ VI<'3! B!BDſdF`שyg„bAqBڟ48] j )Ks ,^z@R9{k!8ڵG3#fBz^q#Q_~E\6kH=D41N:#fΖ-Hp U1~.T999 I*}͛y3LըT-_Zl<]Qt1@B!BJ TZl O< w4 oY+,U gBRm|}8smLpC "f ڹRXFHZJ~ {ٲUׯD9@uOUT_!wa@mvHL5~[Jܵu]7nEH:zrj8!EGBz^1?.\Iկ&`ݻmwOSII $D!B!qdI Ƃioh!-xՏ=VP E~aIcD;A2D] Bėr z) B8{o~6,zJOZćyY:sJ;X}br}tIk} jjnۈQH6l1gam,ڸ)PT!h3)0 B!Be|ڒ իFazz׋pжٚv1f=gn>~Gys)z֬y;5Þ; } 6l)(sA:;h5^ 'Z 5f4v1}u 3i,&=9G?,4hӦ 8h":Tw.bb` KH cRkܸɮ"Vh P o~Rӆmed 98tjQs([+SKtA|ĉӌ6HB!BLްDuZ<i-K.\j`gSdt#0k ;zY/AA 1TG8mqeaGrv]faG;6c@E4VG8s<1}b}OL<hI 1ͷ= p j<'O6,YwPq֭63g4FVH@!<@B!P* DD||<} ڦ](%ȵ`:\PW#K@)Q4?G5'DkB%T-'oRj%$uz1ΘB7=X  BX-3\47 (D_{W68Jp۹6i6E3! Tzcc|TpN0U:$RR]S͖4s9q[nda'v &[4v`JPw#m۲?2AZh@ɉ'} YBB}Н=`ꐲTot;g/ D+Dκji->H_ksaI?;H à³X;v.ۤɻdzdZOXUD%W; 6!C>Q2Dw/5/]i6!B!$$vU4?آyǓ4^\Ōd`~*€+z Wf3Ovv 6|C@r gΜsoAqcq1ia%{P-~? )Kȗ@ɐPTxPߖRHSp?6%Oٲ5ƭZBdnȮfj#ZS ~bracN Dؚcߧ۷h#f \F#yf&r/"3 B!BIH"OxDx7Z6lX)}Xhj1Őrnp Ǎŕ+D®\T7L{@{, g =HY g. P-cue/D"Y3vܤ}&NҢgy5Dc|d۹kO(CFҶm۶C^ C~70\HMhhs(u#T策yloaS%-1+D[ڏjD8@B!Bb‹>uvtMQ@xQ /SVJ#XH+H:3,4đ6X1'|QUu;. 8 * Cՠ8{$8PcHY$g.n ѣ>R*3Q3PW ,aԝj}"g{A筐 c5Y~1`N $LH̉ h>Ԛ5\c-Y"߱ *& 6H;/*Մ9bwN0$nC0 DϾM-:)lQx%Q!B!ĊwW RĄVxR j'Q(N ڰñP TN6 3Y܏a#FE@!e>ˬBb ABPtg/. -㏧͌s|&\5PGQ}:OPRRuHTV)1TG~慎tJyb#0aZj:~GW6 nI<:SPQ_,A;پ}R 1h%R [0~1vٳY@PO iŬٴiv-u>C>r@`ȼn³Dh'/@B! ^|`-[xXNC2` 6,Th'Hqu,1mH/:~8Wwh@;1;wN \4j )Ku#1tzARoBz_o1.ׯ&HTQ|,K߁Gz1D ,nV4x470+,f|F䓅LA|_4̵)}zK@(V1  jWQi cmٲM;|^hĉq@ / )Ku؝PY/, U(!B!P@O( A BeЌeFd(3Q\HBʅ( !N73aDž s>΁^ߝ;w{>Bm83IUc]ի9"h~x+P~Aqin;Fh%;}l3NevXP|b|6SS@s19CsFg-SoXG|f @z{NZPqd}#6㓾 4I+d8mmi_%9LZX PvmQ/!n\e٧Vaǵө9 @ H$)L@MM-⥽=<3|u @uךfi雯wKdN+ )6]]?6}\+9jq*5#!"  ssb3<ybƜcN(N(/l GEjOb-uJy&TZVE?'e~#P2s @%6r&ePoh%++/o0~{{Q\qeeUlL.as%E aݛSd3V]m3N,'OL8 1"21GFwim푢 lG"_dmلDFa Z1~QZՌ)Hh(  u'2EH !( p100:2$fᅑqx?q.{Y>O!=)E&O8OE v$);XXws$ !*)Ї28 5I$L~_w %@;Hs~^)%(H񎗛Q;.rG0@B!'ɖ9qcyH6@) 3AZ}$Ξ,++\C~w25 R ɤg@|!*GhI @MjZL<Ҝf|󽚠Eoiz@ PB!BR{ΘhN{U޾BI:] {}9LʸCU t< ۪@ ]3=4;pp6J t[]Oh,g("B! 3-mDqBgz:!xΧi+&&b2?tp\3X\L"eQ_߀,$Q%MG9ЧYc~^8cf)JQ;TDmY1,[TPad?Ȳym7;%A^:y B' ;ç_>KG~ݞx^ ]؟mAr @DaR݊_+1;3>h?9݌~d[5k?ު߫K1TFuy=P -T*0>GmG 8*VVnh: ?i~tR铱MO. @S]u(3iVի$j;U5ssCm8CD=t\n͟Q9PhQ]'Sff旱e_> @hDV}=C\ @d3cc__BȍиcDʨ\1bHS\mW:p=wUq9\s25?hR" `*MqZ)PS\.טs'.$%?@8B29sA>o^l0~描uO;w~߽k޽OrnhƉtJ]>a$͑cc*8RK+}0I2(cG[ڙ*iwjX ?TI$D#]`N}6GF G]'$0JC`ZįwS;}R0I2lH-a?u5k\N3iO I }jO{xőd,Lm `db AK@hr1`5F+H<Kg Ox޽B>z̥hcNRS6_1f`LiIH1e"H\{҉|.uZhڑZfuLzgCPdؗՆN$Ǘ S~?ѩ;#Lkz'Va};  ?Ciw lY2ӶT+x;W|3y>N AgҚZK??uyGoڔ*lL?g0<hAz?]8\I҂ԕ ԗj.H3VO{RK:}&efw-49Φu XC ioZ0wz){3.h5| _t~1E<ۍ>I#uu?_7i[y |~w'_m9)ƓBS Eߐ2xmj. -N?tFt5׋~ʏWe~luI-׿OUqovߜȅPI}O#Z[QՋR~zv󾮰bʋWL-"{dQÍ5fL'~%v{Z;pi ,._OpZ!ŒԇO~cT2T{5AS"-#AzN\h|7$hc0!|@   =3 d)rӢ[jxFsLWMOdlO͍,YjͺJ.VJE8jUjjkcOko1x΃w.cƙffuXVYuq ~nq¡N>vʩ~ƥnr7_nG־2 돬Zo'0X$PQ9-9HWXd|Bs'+o_9fϼ-k[4^>]zh_Ψ:w-qj5{ itg2ּ%vS7n9 "X%jM'X م[nR6ֹN!.UrkV.0R 'eWOGAd(};weaP$@KNB펲O'|no\dca|3~sKŔ%"ɣZZf=]JkS}kvL' =Ma/J*:pȳo6.t_0C)ӈl1f ~'VX$ZlAl35*UwnYd{idwenV׬Qct[7KcT'[suۤS=$Mz;=;,0ϼ/˷}wi$.T7nn>I^C8_>3CנBOsn=#N)JNt(ܫwzj13>s~q@|3cB0f0v䰝3 n2Iӌ4 \({r[ELʸ7Zqo!sOoQDw[hZ$[ݱS[Ҕ0S[y_r9d*[#f~A_#Dk"L18x@\РLޛ׈t$y^dAEMa]I-fhD›bVu!,2x _;|Cr!s"'`RѵJtD\G&"9P E؜sOj2+rX &\3FD|hϝʵ\T`bJ3" Vq2a؍J{,@x/'kahUh';oө_4rJMY3IjIQi# MVh%膂[:5PO`] {&#vPYA)L(QГT$f5 x4\8uYlJy 1SJVŝœN(ىċHm[=Hdμ'qpz8:&+ M;[Epw$MVCۉ\y']E2B2SsȎ\xN^ m0=""L)]Tz; ۸؎I7JT Rw> 4%d)It*{5Ө: \Df#tpi3,]E^F,H4y^SLLLݩ#!nm>,R4GVuKYf- N6`AْLWQ߈ tX';]p;c?xذqh0ǣ*%€_7 "_lKH_⋘K&` dh1⽗%%zBAvGژ y(T?‹"=D cͣA;D*wosGGv.!s7buaJf IvbF]~ ;-H6xsנ)H×].N lᧀN *=A &ȌB`l YM@'X H wv\:Jiw!dxwxxH5@Ђ]ԑ J@s RA[(M uHWWh1NfKZ' S%t)t |p!:&+]V g!8;BI1̌4N4Ԡ B5fV' |+J+I` 6I< vI21"A'B@ka&!I ĜXNW. v 2J`k,`?%`\3PBY"*| U6*QRl‰*m2Z"a<`:u4 *| 4SFѲ7t~oѺzG]]x9=htGJg!+!@)_P_Md9HqJbn A-s!P0Zm%4 =l_ፊ.m~VA4 XLbn@6w=V185JWx6)`BΘ‡eVz+hJaMp [%^CCe Tq3(~:BLDe63rF 2j.iB۹ +N&FYx6dBI5fq x-TQPFZsm:0'#č%F ExKU̘%j+Mbs%hhB4hڷ]1•DDX|D LPMn). Eۈe9Y wt,y#`4j&%^Pf$aA# .I7 Q 1g"de}tkpq].fB&!HciClRAk3BA4uS+XʰxS\ |ȉdT؃V6d5TO40riɆ&B''H~hZ!:ZԂL&pii ݦY<mDžft *qF|4H|FԂ*7Xii=NI0 Hg uPѲe!:xnj3;f7*~Dxciw(֯HFK]Pky =2P؊ӥO;z"-'BZ󧣓tc↠^5MH:5HGq-Ԗ(^Uh'6@h =J2xe-2H`КJγ Dx15̔墇YE_ z&ADŃ\m DtVӀ?7cjNP)$5mB 8Vä.`1p], K6l"̌[k'/kϫD͂:s)6Q{=ʍ"CB'Fp2P;7 t<ħV5tv+NKAycaCA;'_yE(2Q~18HPJ+]I0V(B!Pq(ڠzM;=:P2!dA+ sA.4lnfGT# BH >oDIف,;],DZOKoe( \( 3mL+a,ԙqIZtfQ7 ˋOP?hr?tTJP>,d18(*XL#7|k-jJ5 jZn0 x&eH_{^(Ś>TDmΥwMVd!#EWZҡE/"ԸY!2$XB}jDD.KMׂvBG46hchUcp|a/1ybwxHDG[n@diMP񢯵s &SD-S+Z]%ez-P9RQ@چVՍp'r. "=( Z\I`kBRmkiN P(Dž/R#褄@Ա QMƝ>9:Z3`UCz lKSciiM c|Mi0+-0ٱFH΍ C?@9oQt:> ]%NdES[eB-I|AЧ~Ė qh-v$2ytTtUjGg0$|S'tB\h U @GD5$v)4|Z 8nX~Ny(&b3t;{ϲVlUt0GHKK_[3ryh@b+ F tUΌ~dE,P@0on&2rnХڳCWIaߤ|i8ͧ޹M/ H 1->P{Qx~St!s St Lwe)΁5`bIтDs*.L#o`I kk"Oi_,JsfәcRT \fV:_6M~77@݌U~7 N!2tHw fkK=ELMOb:cop*=kY|B; [\:-)HN'3lTuJ:ǻ6lK*4PL ⦵wTPm? U^xg4 ֚z# A;/~"u7DmH_XHB: OI;4 G ^X@ DŮȏ74vS,!vc\r4EO?P.baHAf1 ؖ8f~Z'{C:s{lCKsbjx殐}Oԛ|`ZRsW~:=x2zW̐kkb ň_69عB~q9C[^uѩ2{9 /,Tu|J9%J F[AϯcBFYfo3f'څ {}_ځ0嫕E~Y* R#v+څA *Rn%H5!&cpVEzL',EoղCf:D+PNHnoJ P:h/ !=VP5)!ƹTJrgRDtb 7Bf L5+@P9h c4Q8('5ڐl[1T:PR{) 7vNFv TNo>$g\N MǚĆXHxPq/Qpa谁N ~Bθ+Izĵ2J^j瀥Tgƍ7^tf oLǬkYZ`VHu'svN $e"taFsz4nM]KM JO)uAksS 7a+ bښdmPҖ%' ZiaU}zJ:ݵu,y Lg1$v"BS|(h'Vg'b)hi3B+%O ,Pt#Vh%Oe i$p$ +Ƌ%އ4{m:BB8.$&"1fPQ*+[kuU9W.jLtչo& ln4u8&:6OȰM48Gx:Wrurr!@:,ji:E5O:uJпP'"5d0I|YN+%yfNϬ?'Ka .D: OdžcvfNg!sJ턁p' 4GGyݤI|* r:~*qMڧ1_9iT_ZKCYZ-ahe=Ą')e[۴|{|1'⤊Dć~L+`( 9d69.5Lۂ%DG5`2NIO6MO}h]rpG-R^Kշ O-4Q07jzH +1в-[oʐ *u qEW :?Jb J8n"8d$_>fM{xWh($}1"@.&4LCtT@";+=izǛ7-1>̬t_$@g%"r1a^0| -sV>}*/]~&*L,U슰[x'wLP)V׎*Cb4:ޑhNo`7Oo~ft'xt o\[g|;.,*}FT/C$d t4WAkd?As#'i*Z@CYK`u0z a0>.L+KU<=9N hjmH$MUPwʰn!BZwE|ub-YhӞyRkn `6҃H|t舞/9~:ߥOa):d,[[f T9`yQ=P-h,'DbS@7;-:אNӴsn }U ٞݙq*)1֦d]Bt+EruK< 9FL!h 𵌊_q~Ö%P85R03ü;Rֿ:ƻڂVds;\&hh1SESh5 Ƭd / ]٠SDq,_zbwxs1 }:;ۢ~:)O[x[}HV'_QaZCw͏z iTXtXML:com.adobe.xmp iCCPICC profile(}=HPOS"U;8dN-8jP! :GhҐ8 .κ: x_Rh8}B4c tL'b6"^х>*1YƬ$໾]U" 3Lxxj68GXIVωc& Hu7E3bfsbJOGUMBcg\e9 y}yTHb(#Ul quR,<rrmch]?*L{ q>F.Ш94N3p:0IzEm⺥){0dȦJA*Pr-г<R7!0Zk>n;~mr4 }bKGD pHYs  tIME49 IDATxwXW.U* QQT{aEc4t%F| [lhIDdfTМy|dfgg=33{; Κtxwhh^𺆊,%\c%B!BQ񥝏 !B!BQPCѷ3elHI!B!BߘR̗$B!B!ȕJaciՎVV/\FLB!B!2KmSd\$B!B!¦)I[=dB!B!ګ<M[@en^JI!B!?^qiܼ)&&/I2 !!Jc,L$>#!M#B!^ӆ#Q'^S)DA >_7smǔ:(IM|'.ְme0et:)bqdukjE6ͭ/Ş?Vq|VW#i mD=t(ݞױkr- D }lsNV|6`,^\.d;0ɸY;w/`|7%t$mظe.DϦcg{@XtgQ [9F0?o{Tb/ݫB.'>eao6O_{QQP||-v¯ޣV7o 5zLf-ش1lubhGټc[Mj9ɦo:l`fWHiOoFi?!պ|BȖ+wHQx;Y߁cjr믙<7Cs`#Qn?6o)3MoW1= d׺ tUej=Y ^#?cҎT5ƱhVm_-0ͯ2coX;c_r(j?mWnsIR׹Iaukm)ِO?ɗ_51{d%҉(产Wڕ ~`E/KKAYlsͰTH-(V_zc[~NFp-ΔA13&Nj!B<UaʯYfM7 &I2 Q@\qq69J8<>WK$}W|=.Y :}OtjyQz ,2:_iѴ#V;%G\SF{+*EqZ4g~4%V=0re܌n[X<󝹘 ~t7UPSSnQh9t>=W'YWUNߖh1r7IpV<أ|w^hif?1fҩTw\k4l r:ԺvzhX1# dP;GQ>3R\| " 1me>tlAs6#h}!\WR\_h41kOش&< Ã|e(w3l.I,4^߱?GGYN RzhhY1e):L3MvM\8&0Oo:֜v&Ǚ&⧙ܔֶrK B.jܑek3w|4jZKd%NSK t?%WϞ۹6,߈fX"9x>tmi9^I -k"RVM6,D5IX=2#غj?4$]9٘b{vz:jT^[فa(ሕ*=A v_%1£5JոwwF97lՌ}xpD8Ұ}puk.8M:mH.'u晤TV}GãLjpu[Q?рzksmzI%=V hS,?.AJ*LȉBvw"cGf=hH0 Nr7)-e0|ٺ*0J=k5QepkU**1B!xG4j5a\={ʘLB?CD|t,j9J}6!PqWWf|?$*zMhxNN-1O꣉cBe^;Վ!rgI4T+jՏyZ|VWSJ24~Cđ-n9{# '~C%sC/)-$G) %:E;(XR Wxf>RzEea?;Q۾L{ZxnO-|ˣ?{kg+O0j9ǯ҄% p)?|zܾs;1sqܺP+YSx_1+ͪS36M㞺s;[4a2Tqu$‰o{_afC \Ih@ֆp:PP˅]h }$ H41G| LPBȍi9Ls[p󙬺*B!o)tՍZu)'❜ؾ} NN4jKt#Oɻ;өFIttQUjɄpJ$]&ji-!BuZ1cELJap3@O_0J9u^kP]պ g9J*żC?|4C6)Գ9bMM3T[҃q?|m>)]GMRzNt >%gy8F.楩g, xV_g=c\}jH|C dRٗgP=>LS:]a|4"cH qX9V~r yгuIt( '0(72I?H@mjZ* ;? =} s4Ca`I|^k`K'܋1+Qd$ӣ?BN0=9NY;|'::\u,к !Bסk}VmCwSqvu)-&M6mQ(^R"aa|T€GW/ݝ+YB~6;L)g?a1_`wu__߰0zCV^!dꇥ<~\؋3]<ԸjcVcaOɔ` 7(9#_՟)j|z< 2c$&o`<8J+̘Ā8oF /ŵ`캚=EcV}PIȂq;qG~|ߣ5(JgJ3N/˶} @`V쎁;]8rYQy{o#U|rW\/a1[I\yO:#rtN Xj OnWՓRAcF}+4** 9>+>\LeOR~(Ts!\6 5!ג]!-ӳO :uCj(E ²&)1 Kmqw&G;MoF5Tfcn j%o^t CP.F$&fFؖ3B)lhԭ=UBI|5oƪ׈)!B_VtD՟fhxg[2EDDٓLrD7#=t 7Pw iHHx&׊hosK8?9B!FS.TrRd&邝v^LLB!B![a{]h+IH 3?(3wndB!B!D7t/|ފR&wy݁ޛB!B!D7t/};Q+{N2T89U!4d[F,-U`B!B!D7#?:u[["dRLپ} NN]MDGQÇd޼r !B!H2, }hՎVVo}}lۻ)NN899CPPH[=۲sA9bB!BQ6Ɵ^)aUWM22֋WvU*S<=>)B!B!ȉJ1U6[XsSXw$%yzШ aatXLYe/&89UN?~IҤI@l=ॺ鉢@oF5Tf)zG\=/B!h)k1hڲ*swE:иq=OO.{ٖ;*;$<<@9ҏig7eV$$B!EЬUKTwoSa- qʔ)rUVᵴi3 ^ZUͳ/#gB!B!\E 7-allV7`ʤRpxxtqU+VzjV Zm͛![BUS B!P)m}hܸ*K2M4,:99Cp&+M,ݼycشi'$::o歷ᏹ)AAl޼W!B!Bֆ}iҤ1FFF8Uc2DFR9}=ѣ8v,x9I2&B!Bׯ}g#O xZ2$`ffBHƌB||B!B!WUOo?=% wٷhBttl{z0bMcټy/ ={KcggCXEs~*Je݆v{ټy!! T#ɲNeKFs+Knua˖h]!B!x8p߯=ח<.wo{ <9O40ed[F2e͚4j뺂BۗᵨTGRz߇z+,=z%<<2Ɂ5kfbo_:ec2CRr6mWogY^?.'B!qwO8AWWWVZ~ʂ-¿3Tl߾$dZlJk2̾..2NN>6䑧Kdm͚;^>YXمB!B3A?L3p* >!_x>8?ecYr6|7%,;78پ} XV'bb۲/wW!B!Ujלn|qpp`oei¯{c%{{Ț5=:ٳW::>M2m޼'ݻBX؅|w{~u''sT =A+XVwGƾ/ɥשvjBFs}Vٟ0d|NG5*_@2/cAEGDzy,-O @hIXM^^MPL_kK.!B!"'}ѱSlll$o@L2-Z~~Y} ֬ʥK^τ ә>}. igݔ_EBBRvvOOιs^ ިM2T"B!BF(Ϗ^(U *rI#%2ў?{k]aahf\ڛDhI7>/\!ˀO_$99E;lW8z"l'KJ!B!ȏ2lx~ZL$T)bݻѻ6n'ϲrF:vA`B-ڵۈٍL2ϛÇ].4oŔ)0p~ dڴkO;|xmtF;moRT8!B!b[ƚ&'x2ڵk-"W'gQ#5rq8 \h =AH,Fp!!t9?AA!vp&&MMPM8Mr !B!Qy2 Ї 144Et%Y=;ҋ[ =!2croGq/|-&&@ m3\&rgl79C"[X\n IDATLjRĻ]kvζ,DF!~\G7LMM=c;ZfbW2/9%7nͬ^ j_og¸Qa B&\͑/!xթU~(&#GO0e,:4l.OÃQZ}dĹ :9wA'xcAw$!'e&k^ ) te˖=YP+Wnɩ*vv;7niaa;7'lٲ'9pxEϊM`40a:}Exxd19 prJe샱# ZMZZ:+Ur hֈ~O/TXƿGbX||!xTffn #b =Ȗsʗ`az#?e244N͚Og=ʫP5kV.,dKYa] 7W~Ϛ~@ Ԩ^-&I焅]{1y.Ic077|g\|?ڵ<~3Ɨ>TttQ~mބu UykLݻtLϷJM0}7klBlln2sٖkXFӰY{4Q(XbZ8twI2 !x#|{+gMx6?H:V=]]vdԭ;ʧ=033|W\tM;z~JZr%dzVYvxԪY}W]]IO d/K_UesAI% uqq7G`ނeիKZzv-`Ą3gh9:K,_4tZeGȡǘ''$аi{m ͛6bܳ5[6֌3q%/ϿNiUñLjUHMM̙wFy+5q鈅 33Sz2|H=?l޺7À~hބrvD޾ + Ka_!f|Drrre+ލz0^mѭ3*aT[ɢ+̬۰pRNyYsyvם+˙5g7nƺ;Bd3atBGG'}ud(e&pŻ_ҴqC荽-ΰ}מ|\x9?:ileanè|c٢ٸ֭Üyy8~{2jG͚F29g~JG:S߽ WqDaLq®BLB'ܹ{FB`Y~#֭۬\i511fmRJѣR߽.ulН1};R|9 $*&}>iiiҬ'uj\;i$$3Q(̛=*۔/ga)mcg_MC! ! =8{3c?|g*$J("?v0q]s۲e[۲?|'3llLMե|9{~q.^ێ9luٱ{/Ib8#pwվ^:::4k @ZZNݓFTP!X*Fr`̩(JJEqQߞ׮XӪE<o#8}j:Ұ6V~FV4kjb 0t`_ޯ.M7dַ(JQW:y/3ֵ q.\$*#|e#[8FTP(رkY][]r©^/[^+8MB]%SJȿwXGj5εdoZۙtڵiF/J YDnlz|0fDQ!}5K~$.>C3n>6pz5LIJJ49dP_LMM;}&-}h‡Cÿg׌ˊxuIv=RJү_a]ʊݺmeTRNy?a߁C4gj5Gkt@tL +GNYm``OƣqZK4²$ӾMY>#daPa+m7:šJ% cσQ˰Bu+8}2'C9~h};a? w7/ɴnߕNS>?*33J*I@k{LWWzHlޘeJk= latZuVh9Ivcu};,XÌ2-[T磫jc}|d޽πc̔!0ң/>]Q4lgݸ1#P*m:Ѥ(SƆ-PҒC2Z_B6hڪaR!m1y?Mܽ@1(_ΎYs2v|EP0fPJ%~ꚯ,"144d>o\֥Lj'wر3#Fuj=\1zWu=xS{pL1z`zIK&! hŒ=S۩&ի9PTI5QCj8Vews$A@>$U12*ecO]mǮ4m̜=z7&))eS&l6o6;EWW02*x8kyֿKG/t6Gܸpzd$q' <7o_7:l޺GǑ4 _oA❒ʺ7#1o}Ƽ#GOг[g=y\HNI@_-}<|=uBQ8Tff>yQ5tqC`SMG(mOa؏044$%%%_ILJ2Z.X# p P͡2o;~ǹN-<x0hrїkJ@ՓViii8TLt>x+3!֭xpKll~L6\iX<C]ڽcGX svv0*? c~y8am]fYm;g]._칋HOO{Y+cF 5nw@FquqƱzU*WBy{*st۲e,dzuزm3fi]Dčٖͅ}\'$S^_GVm[7׷3( $/ru\-ߣawzu?抇k+ U*Z6Ҿ]*WUIܟcWM3y1nݺͭ[.O[ZX(j Y_6lwL~R,o>|][;Yoܼ9=?NNN֎9hzrr61!@ |w mYvoGp?\-'BA+ THЬiTP="p`g[QzgIFf>Z(?u;Q{MӾRu>>0{ٖr;UفKY'^q gX[gIWWN^k;[mOHf<73ffq=NS vdݴɧy>Gt'u2ܹ̓s6/|.y)?TK a6*W@ iۺ9*V`ܘܽ7B!^g>w">FGvږ͸&ZDT# zuiҸnuIIIe=ف3p^[2( mn߹K/\3I%,-9Tڦ7n^KYYM4e^-avK-x6pƺTFRɏfqNKf"Jr^Əz%Ks[ \eƊul۾Ktڶ}]:yQ|#{ g}w>|M2^w vmZP׹v,AKswN:xe\΢+8t&D>nTB>-Q3Fg^\j[VuXb--9{4s,pSuŦ_BAjr:#׬^=0}g5DjvӖܾsw湞]Gcabc/^=q6;wױ0*fȣGq* ˲E*/)ag؉qaOiY s z-{gtZ2fvccv\v޽agcGs@)y%55_7mgtiGf144@gí36֥XD2|r|4/;vaޔ(nk\r-eoݺJ_"+J0 -(og1O9~/z~GsU=qS٢vo7n؍ArUJ(^z֎؉?uVRSSwk~=.\`w*U@\\<Q !x__|9;UQr:bbbP׮E 7GpJ[[/ghzkVܽ*[7gEp mh))A8{] CebbcY|%^v!#a-1hme?0OLMgܽo12Oʽ.͜K%\|p_N>uߺu.=z\r 9sӾ͐S$1GbUr#^V߀nl%BaYY.M}hXR%B"gPF?ˏ,B(Ϗvbmm-/$B!(*7纺X品ɟm"A__~{,:&!B!hhߦ%_1{KIQh:7m۵Rz$B!EDl7ؼuG1 u335f޴l (IdL&!B!( )ӪUK% HK&!B!?Beʰiޢ9&&&HI!B!)Sڊиq#% ═$B!Ba[ƚhҤ1FFFJII!B!xUTDdʕBWzc !`mcO'8E__tRR%0Qffk$x7B!kB+;=ח7BLB!B!;©^=Wtu+xB!B!r׃:u$$ yB!B![G]zs]gttt$ PII!B!x4jOP*Q$HI!B!xKi՘]B"奓Lv_ڵ#=]B@WWG+ahh@TT4O_ܹ7…\!GB!B"}ftQKH+pIP0eXYY2~t.\FeaΜɌ7<MR[r~fx{7!%%+Wn(IOWB!Bn߂] E^LuںN&q>|̉gX+ Ys=66%QDEp)LL055E ws#wPvUj[@ݘkn\#GˆMږ"66Op]WQnLMz&G!B!Oo*V(o6hP7IOWB@W7cӗR~ \Oxx$5kV~ڔ(aŋ:uv>Zܹg\3R9?FÕ+7iЙҥͲe>jb=w*11q( *WcHOWs54 JvII)ܼy}}}9B!B]}킭C dJOOƊCZZ::: ʖFPuEF'2>66%tĤsRIm֭N*$$$JBBvDFJJ k R.ؔV&f14Z/㔼_I 쌋ao|k/B2xZ- !x:ZbTzLе0 QH8󀤳Q$!k7:wZ!zN2lfSLz"K''wdP8KoShΉgK 8xv%-re{lm FRR2ժ\22FI뢫KZZF+gjڧIbI/aR{ IDATK1lӣ /S'$'mb2@x,,,066&..j5zzzLTT$%8&]]=qB!zeMP/~y7ZRN R:)7$hBWJGG~~jGR2txw84gJf $((Xt^;/Ӷ-sb8Mka=X1ɣGSfeΜLriӦK)b`GIL;=]둸?NQ5 8u(UʒwHOOf!lBWScSfڔE=R̈U{KjR(5*c餤JDGGӬY3X鑔DrJ*L;<2U!ђU3?zsQh gU jY_ތ#xjBzoo/J*{gffV@En]uv֟ݭ(&vH03?FFPUWwy[9̉} D_G''+0` ?eԨl8Œ%ѣ%gЅ 7yޕӧm#..oh8t< ҳ/TPϣTs4 ݺ5Qjܹ͛oԩ+X[[гg sO܀ #ZB561Ӳe3 EdFY0@<gȲW_++K7FիWz@ٳg122L2-[+++nܸ;x/_$ D6^c͊c\t>Ҟ%YbgppfFgCN{ ҏy&N4~>>On+ }O+7j^7'v#y&w&:)Z0A39F'0(C9~]K]}!&1/sχ ^e=ʖ` ;oܰ+s;NFq31e,_^Ob1+̣WN_0vPNuߓؽ'̘0fGoҹobʗ{_*W⮟{t&'\8sUL)1\99s| ɒ߻.];+YӧT*^bүn?znd͎͞mۈdׯ]#6F@˗[sfojgOێcǶm̛=-7_rQRR2 gJFFF$%%\RRR߿#f}\~?cy"{+ٽ[BkٳWzؿl4:4?n;**Ya}B0{: 5ibT"H"( "))-[ͻw!**ڵkSJQT( 133͍w9|wn_ M'66|prp/M)^{~)Dn\;kvyY ЁqE^|},>ch)ä3\f.޺s%Mk""#|B.geصRhӲ9KΦQv$%is ֬ۤ$S'AF+Q*޷U687`4&MXZZ0|p?&cuիSPN ֝lؼ+9YG N>Y+יp%g3%"N7)T üN`zgO;GQȪHM< 5wqv\RȍRd H$ʖ»n-޽fڬ/~˕-Etw3j(ɳ~ʕ<IlپܘmW Rr,[4Qc&soZ[YsZ8B|2̜6sqhy+cђ8ti*ޭk_mٺ5?wxx5wn¸pmwĄri4pZ˗;s!c'N` YqڶjNRɴ9}CCCAzJ%?xYsesJt3zҵS;v=H `4iM2=p !Phj؛3.rCڵR%Kp{p~Nw+V[jnE RhaTw-5B,q^G 8~l"fj|r9q񘛙Nٿ{vvX,δlli&NMpqv"66<{ۉ|B.S6*H6o㿞"Hhݲ)%g|5<ܹ{RLz۷5WNj5fLeu9|$nĚacm'Q\wZtƭ;zmd^kB=1rB UDRBQ^ 0r2W91)[Dp~7w%bcT^2|x^D$ѧgZ6oL(n޾w/2!8$뷰g!R ~Ns&8;;r9|/]co=PYb &XXhᴺ~._<̙n]ڱxzvQ@.7~6ւb(S ѽK{lmmyc.**2oޤ! >e݆}-Rkذy;OhŸ|65Uo=prr gm_PfUƏI3hӲ=w$$4ҢY#6C=۾sGx6(!#;o"uprr`?ٴuNٵm-#9/ܽO*i]###=~U[wΞȼtx ]\h]}6#GhAJˡkWrmtJbW*<~c``@epؘLLMECFa"-5j.[Aj &f5 ]*Ǔ1Bɒ%Y&kצ|ΝGGGd֊Zq 5ͬ6Dԯg6SB9ƌ[/s9٭#rbjj02}^Zh;ƚ)FyO`ÑbZZZ+'&IPz|/]ֳ޵=`۰Z50_/,^s(r.؈9#ɘ;sffz}++K޾ 1 g'-X,7 ^eX~ /]cEw9ʗXZZ0&՝s6tj߆}g!ڷmIv3ӫ\)ju[avޏ# NC$q %܋ҦU3Lg'/\wu CJSxQ&LɸI)R*ϗ77FgMm<Û6#O=ΙBrr2 ڊs"~%5LbYԮY;/]$'N˰Q LiD8łT*'N]T-t&.>Z5so{5qEV˶RE/oБ0Zڶ$<OխޣXfx1}XRbi:s>ؘ?"Aܕl_vMZ?>PZe6mTN j>._׏4_^;q#Μi#oIEs dؑzt%Kƭ;qzҏc'ϐ°}12wط'*hݏOٝ~D!gȠsΞȖm5=BXXx*qG L0/Xt%݋3y 氵c֬XA &&_[l[5CCC]٘(̜:$͘ǻwL;Mkpe/XF >\|fM|}jl:-v̘2 ammEn1oթWYٲ}.? ߁ ~iy2BNUt&D,|d%dy?qF/3zvL˖d*0+_`^ԎIO8NY򘙙{زq#[[7o讛=c򍏋OB|#[`yykvj5ϟs~m߁ݺ ׮^j~5AF<~JQ0.]n=z7_^ z͚$&$ nݠ[ 5[!5jlŋ8w … Fv/qqqɐ+,,-n˖&6u;]. (i$GH:P*`II$&&Lrr.зT*EVhtqX-a)=ukV0e& agxh#E ʒ gsJ% )9 '8$ K sX[YFAABRg',9lm8z4!!!hQՄRN ,Yl g_D"0bh*V(GpH}0t丏ޫEFԭ]/av Kٽ nHI#o/\n NLL,y\sRB9hԠ.eD"S:4oĺ [;ռyxmxܸuБc122vjئ=o1j ϫ+oE)=~hߑc\ɋs>:Q'ψH["CK٧;U*%s/\K'|ObcP899syNfaֿOwݤN*Ϳ<))*ݳ@]&ko=ZaXʥ{8#)NPT\r F^JlzHH(ܣgItum̾%Rҥ3_ sS\ $b1U*W7JIIaq'55UNjh*>yKٿ&w~:c5Uf)l޶!Ju ,-|‚5R̳ l?'H7o%+$44BxfU*l:#(^uk G[=Ԓ%sm߽ sfLԍ2k ۿ|\n]>Jq'̓Gahh\.Аi#J%.N+'$.* z ?y/^&:0z6x@-Ϡ\ 5XxY ̂㤜.NzmPVINmst&,<3e:>۠_}#/(ΛWoP,ֵ.NtҞ*U*P(4.nАRJUbc˘ҨISJ%+.5wn,,,T*࠷,DN2~"1%J (X0>@Vc nE!PTܿw%1M} [Ӄ+/Slٯ%K"qəcc#dӭ688S'Oc$ik;L ލ TV SZ#%#RĆWL^b^ 255E.DLL VźH$ba)=v9l  %>^X5;Xyv.TU,㿞MUDFIHL[4W8kk+ff8;92Ye֝˗KDEG3y\z,Ä`A1HQ'2ݼuɟ/# 88?M}_R}Df*H$ZظxbRi)i$8u8JX,8;eZ.i„R$**d%@a۠o273#<1<"BOy:Po!)ID&}Z<.^Gښ=_vj\n̥+ضco0((` vJe h],Ydiaa0I!(8CCL3Mukr=J%j 7ovce!߼o&*q" :uh;sMk~7iѬPÝ#NIwƆvmZ`bb›z# ŸtG ﺵU KzkV¥+2}bhI;]@~E*2rv@sShj51q[Nxoy0ώyf*ficUz8;Lf?bbbh4(_Iɤp /t(gWұ]+ƌZ.pQc&e|@RRN$wQ)}=@H$"gNgʗ-Ͱ}2wW78!2%'k3 FjYn֤KǶܻM[w VjPrd.G[fν[^;AztLJ3X}vlgG9o]w׍_zW :!щA?$PaC._ЁΓudp񳰴@^t!M]:"nEqT4/_&&$Rg(͑orҥ[w>Ͼ=ٻOɤ+GIO|/^JYiˌ˜zhOOI"Ǒ#G8y$w͛7acc.Rur\4oof+@FtJU&,_Jpk*xso>6pZ(g}s\D"1c'Lz&LG7d`tm;vK1J,[nOF̙1!G'*IlSpA>"||xD$Wݠg%yVB5omDkhd2νTV_7DEGc.zjb IDAT>]oajh26KK |.\f:c ӛܾKU39t\2M;]{"_<_$=~B07gڤ1؉3TV5Pj=N>GZ5Ѷ4eY^;RVu wbLƘ Xxg_h>^bcm-N];pF1WD>z;νߪE-؉3LbreJ}1HߞSSjmQp[5_^Wݱ$  ffz .YR>*tt]nRiiᑑ(JKWg%TEZDEEce1Q(:߬IɴtZ6lڮԳ133Es~<}tT xDD$2 G cCCl_ϒ3x[᣿066B"1Ur9[jW[PN bvˍyȤis2b,ԯ[+yW$;h=K"Wyn߁P,\|y\4q 5k̶FFTVq.?Y͑зd2)|}33ɯ\NRR8$#WȩZ:z[k߁kgVΞELLOK2}~6?Yz.NDFDf-2$&&pEI@;LHXj `РA̝;___z͛IJJXp.XlY3b>.~ev͙4|.^&9YIܡ ;_I![azt@Isf[̙L`԰Z:uxμ?ظ8cTdzi1r0vn^ݚAn)˕[w֮y9utݣ ]syR-y *xr<¬i)^̍ WHNVbz1rΛNEHNŇW%xGח֖C䨝'&!ɤ^hW^]؈U+1sxN'quaq̝;֮^UWpvqsT,S-Z޼y'";,՚ݻ/H6oXOHHR L `9 ț/.hx.^@*Qpa.CbB{ÇmDOu{]UT&# RIttOI$/׮i۞75`AI@;s31KC$!ILLo߾,^3j(̈`oߞ+Wb``"Z}xjJ(N.9}'1|x tlߚ#Nꎝ>Ù(WeJ{ժd y@5K\.^}fXi!bbciXk!o”Y\~;3bH?=ḡilߵPAXxX.gҸX[oШ e_OQ<+ѵ+g,\.^]{ҥc[uyOύI)eEFާ Y-5i<,3θ;u;}p&qxSΝVC#kkBJdg_gi/^1xܿa42Swp/V%^sg_DLaߙ:^r):vnطkl`|m s+m 9[s>jA;GG{.zלpU-~sxoގgl?6lّ?Lqz,]JŎD̚6Cp {Ǹ~ ǶnCn:vt |Lqv麸8!I;k+}JB O+Fo]vMZ?s\BLl,]:+Qg'H6la#x,NqL~Èa߰aÄ3uq_?qGнK{LMMXl5O>vjd2\ҽ_ĴY)WcGk z0Vemљy&cnnaռo|ȧ͍[w5o9]pJy`uEѰvlmiXu)Tիr/[7M[wDN(^̍[w1zdiݮ@4_lݱZ5?]=Dh^eSa3ig'G6[{ܡ-c'LYϛ3g0wtTT*vs׍X\9bbٺy3[7mjXE弼رu+ȒÞ]6oXZ#|Q(Vܝ-7`<"#"R5 s&$$sfs -qqv7X9+]vPңdVș'SL'gY` HDrr2899 :w` 4%K0vXʔ)}y*1yhp 0}f]ĪX|^`m*Usx?dhͰhwe:y1-L)nݾG Y|b^3d*0Tm۴#[s"wfVX]rc@ThVh4SݻZ&111j ibL&@ّv*31}֟Ɵtܾs-;fE@@Eӆ/]D oq1<>'4Y4ϫ;7PPS!H$ >zᅪJKѮ}[/;ZI@; )Ao_39B ޾AE"IIIhAg&0կ_ݻSB!Lj 0_Y@@eνl۹?_ (mQ^ 0e6`$1FPJ'.|#_ H?RꁭDԬLV-(R .  I@L\ m_3s166FRaggGPP]|Ջ+"uPI@@@@@[x?Ew04fraV/W&Gu(@x׭FMqss[ h1sB( h@N@:*ur )o0%Ko2[1JGAV#عs.wL?4ڷi& ! ~B>"0Y(RR~*4PM 9?Wrd0qvrFL&C*b``F!88HRj{.P~X t+xcgg'?`$aԍ4W9=I^hJ wD"pᳬubXI@@@@@@@@@GA*йCk4O9D&"GFNXJyo*:Jo DlWPUcz  x*gYLLMyǻH`S(ʏ 2 D|L`Ҽ1޻ƥw&B, Saf{Ԯ] @~ I'EqE9LĥdHQ!r,XҥK;ԩP ? $s^`Ҩukt.qtq)T*X^?'9=wF" #L? YM.'MhRY0)uo;4%HB 89[׎TRB!O@E&G0u"|B%QZa~8դX B] zh4j@ r*P*Q 9o_ ' ŁNQjrP ?lw,21G7_;t|Ld8wшĈАbnM[iwF%kgQX_2*yˬL}N}-4اk  )0D"r qh*044SSSD""JELL qqqHl"CZ_ֵܹ#*WB& " mIefAt$)fZi-?Elq/:@]+0.#ɻZF$HMߝ]4Z+&M&2U`uhH5)M(i$^I)ShhФ$`=f!Jy󆠠 "1Nv%11RITTM 00Xz ܬAjv2 {a$ޏ I@;V8;J9r$ mK1Ac`>r"nkmlaFl@@"T*T ,q `\'tCd;g,> bHw!ׁ$prXaD0D3ҠW8adqEKּN:KHoAgdrǒ׍V}P)̐D`} F/UћgT[Bv2^i+lw 6TBj|„)z)ФҜysEȌfcO)&N Nss=!YaAؾ͈ay|;`z,Sz^d;g '%bja4sD$Ƕż5dZѭXu4\f"|TZWx2PqX;}+Zc۴AJs 4d/~( j S98c-J쒛Ao_gߪIz/FPPjZ}6/_'''={X,bŊpq nnnYթS 8vB0rº}!X5"+A$>@$1FPG ۾ Hj+DN)S4ZT&N cmļ F;L1@enEUL1CݽT&fH߾@IXӮzǖJ]218zm_$#tqBŽHʙp_qߕvwB-5Bc`Hxjc2cLnJlq/"kř}B&h2Wo;UdzHPߠ(yδ}-& 'G#xbb1o߾ɓѠAj֬H$ի8p UNR( sS">z6L2ŋҪ]7<}u/CCڴjF)ȟаp>DHHWG^,s&ʾG2/W+7I:ro3.N޷UUH$ݻ(M6erEN'}EЈ[Y䦨eF6ZQ,!K癘HA|,\A\4Јs+z]5T."dXCFl%0ME3\\\ BkMMM)[,8;;3i$D"ZQ IDATyD ,(šRP*/KiϒYoj::3k^|ͦ-;y1v9U*;6fٜ:sL*Cٱ뽨דvBBBXt%۶dΌoögQ=CK&U2#tL ҟ=e~+lm{oٰyGikK5n x)cʄ߉O`= 9R^5tMk{_jWӉm/_fi"zBhX8˗eڤ1t5@'$)T"%)1Ҟ%rМz$'+(t"#"ػ{Ǎe),J%f9z~U{!ΞSS3Zn㖭[i:yR:),, Ѷ}LLL8| gϜƻAC)FÞ];Q6yeߞ=\z }&OE=PTlڸ;;;rɓi>T*T'28~ kkkh+W8r0۶EsUXF"Cml R)j"NG I{`r"Oj|T SLAjDH1lw.ED捉A| DR$%)C ϋsՂA$"פZKef$K$<&[SqѨRxi`m)L3UJ˩0ͲۜR ߟbbbh4*TRÇJhXz5jooo E$abb3C"T|26dvl^B!Y47L1ojISw -hm`ư!6  -^Z=G@hr%y=;y_€=n4OBBs/mTǭ[ь7R)fwV v]n߹Kh#Q7nx,,,,ߤ-jdl6mΌY?3w4_渹gد)A̽0'""t׮P ܌?v日+h4xq%<琈ńG\CTҦU3X"]g{2_bNg'GƱ~Hڸk1lmm[INַhZH"2ws,/rTVK9vn3dPc4oӕ1/.^gu!Jzqݻt 7/sI.Z5opSؾe-oܢ[:;zuZ*AXVܜaӽh(f]H6-t"Ӌܻs.*]mTj'(N:y޻"6iAD?|% E999\AЦmX[[ѧgWlQ+s.Qf5uMG"HMMgmZy{Kv T(Xn=f@ߞ-B@$q#֬HNn.ݻv\숋KNt +VgϰXLzzYYYL9iݢ3M4aJL0[wY僖b;_#O`tkblL*ERR2Jt܎ʾHMK-R$j$~/L+~5Rƚ>V8j#GOs^fMe+@0kCFڵcƎ{D ҟڐʥ+WUٷFIObXn;vA&r_)..:r35mfLiicƿ/,<ſǪ_RӃ?/f`,^!V=;A,? cc#@/gQf5|2tp? ҡ]+,-ٸ~YB+xlƠ¥L8"CVsm֬LFFlYoB.P\`{Q&qQujTq@>o&V100`thے&zo]mX߂m?0r[: Ϳڕy(JW$qfV#V`q( Q0 ?  *SsD9Z-Vct*Fw"P'\ULb." dV"bE:yVv az%D+ w+b80h8#H#*D"%Iޘ'&Mkdggcjj? 6N:x{{RHMM% gggiР4iX%4nܘ&MPJ,--Q(⋡,SXnt\o؆ 3-Wև߷řf"8ortz5AXYZ0gݵ3g'$۫g.`gke|YeKk}BѰt̝CCC͞xnۺ ЛmZV:jz)kW.fp+@N8s|-ݭx!I,3|@N9z/ԍծUu0HbnT{u%=~BhF}=Ior5wso f5v=%'h͜=<ǐ}:s"}zve߁#|1nݎeƅ)'OuSτ1E"exSߚQůG L,_57դQ}vGC4_烌M4 qv46mc¤iۀ>=~&'Ne%i cc~MՈktl굍aCq+'Ne`un=}? ujkM7n R:'V^ϋ1a4ԗȨ=~vuX\lYx90jTSɷ</s6-1np:Rd/!Ж!nG, Q6qL}zvՅĘQ#>h8ͦ-0Q$$$Q\uІCP0d`JǷb9M@{t*V`ڔ Fvٕ_WcHOϤG׎- G]F{OaP|VNW֊GOfMLT<&NcаZf5Vݠ+ J%낶 Q+ܬI +[ȬY3 Z|=j.*֮^}{u];Dڵ\8-L8@=/R(Z踇\/Gӳ$'k}{#^lۊZnt4Bѫ7G {r=|/ӲUk8s'WC,驷Toؐ,߻ǥ )[)ؐ?]VDbnUTݻW\n'H$--޺ի2ZRYY+,QYgIk9dfIf$mTPܾO3Ͱݹ u۝lO#q=G6yv$>*cS9>qlYd{y m~*1媒Z `ܘ'}b7,&|5^D%ͫ7%D:I(Uav䣰h$7G!(Jj5Rkkk,,,$'' %TX,F"`hhT*E$Vtz҂ Fop_1~)fY<.^F*w-o&!iܰv#m[7~@"엹ع1gW(_·vCc zvD>hJaeiK1gNXZXd*8T*e/Pþe ,9q/5m&66x*zv~ԡ ZÍk6лGg~q MZu'\]!8~2D;s6͉ýZkW#pvt,\[zߗh4̞mWڴlH$iw!JEyy|X3p+Nr?xȪlP_4 oߥg!V+QM[yoq08FГhoD^ϥ7oEVKH VKNNz5N>3RoR,X<4&(|033%=>fJy0FFqh``\nHZY0uH\@LL)V̉[XJp;+\#ǣR8zFի5ϕUҥKW\GR \r晀?ER!IQUɹIMS_*jDTivjZggr)uX[[QNjO[ΨDʎJ¼Y 5>ND9N\|"5Wщ#DDFwSԭ>h Ro&PdVФQ=lpB9w/\fƬiP-Yb 2];bmeg:u\,--i0~*W)['TԨJ͙h;s]^)(_9<3f31ˡ8Sn-XCBbʗiYVKWtwftʇ.GP|YrxhHjڎj*~$$&q52[w100q@n`rmf~Ygmxqz8+2<-7s:w E FCF<&>>[",\oٌ< 11Ha{ "UV|X(ɘo0Ąгg9q[B"F]Q,y5k255_e}qޞy[299;ӧ_/]BN1{n@4hٺ *+Wၵw"ɐH$>}7-8HL|LJkjn\W#G"H([qtUɯ2gRZnJŸ/\$o9666Ç)?|6P 3/ dRϷb_HF$B#3$R-;he Q"GS"GOrcAWY#Ϸ(~^޷K_`TJ wv#J"ωQ?Alʞ K&E p5>5 MjRINNyyyhPwFdmyyyH$]X 0iR/%5Uט9{Q 呚Nnn޼};쉺~jU066Mh4:?Lŋ QՔ+M/V^ϷߌE3m&4΄q#0` cԴ4=~3C/Xa+ǫ4If; ؇:$$&Qbb2"UT 8W&缲L~[wؾs 7X1'rrrt227S͋ ,6ncވbnx4 ~cV 0_O|3L""'NX:kENn.ï/] ss2 W˫^ىs.ciaa92{։)Cz4Wݤg`$#Iu"`F9}& ~XgAdgk͢| IDATݘ`K1gn޺'2 Л={pLYӵ-J7\ҥJ|EiKǶ`?Vz>VϏ/W6?ff4hr`otJʓn}qZo/ޣX1',͉}O+||YŔ-Mrr ~y>Ѷ5-cef>cÿfCj5FFr dJMLMLĺ:C嗯D`iaAf^h:#'з'}zu҂#O0{*_ȁCG)S}{bnnFș0zuL3{JiQC'''ĨQ#(^ ښvETrE fА+͆$$$tq*U~fTf"3oٿoCzzdae+?:@*N,U+;;;{{OB8Bs`B199гgP&VxJ'//y?17@T꽇=!!^O;cٳMw\\HNJFVʚK %&&bieH$"77ZuPA5-(<~D;ރJBV3o59dge!72Һ>II[]N)!/=3=` LH~uu*=W8P(d2R)JR'$^<_X_`$Jx)1Ӧ|~h߮%=8, '7Kܡ-N؉ض]:e3MSg,Ά])<~7)ΥKq:$">D X޷]ִq ˬ{iԭq#P̜F<|U~IIXZMv _ '@ nٕϰk>ڴjFe lx%+UDRPINU7{ JP FɆM8abV !}fϘLbNr7mHvزuիnݎ&--]CRIZK\ss3&+ݺ9^چkIOw7B0;;-v0_Ͽ m I^͟bTgw~jTG"uTտ2‚tD\Us߻*~hѬYY\xZ!Iezә//]_G\+ԡ111&11 F_R/GҮM nܼgUU9u(Y```+'݊2YR-8v6ѴqN100` ܏F Y4 G~Ä#ֹ=Occ滩wȯҦu3._eJV,jEKVлgtlK\\<(4 :G`Ѵ8vXL!JkoBqvv=Хc[ w-uZQڕh&%%V-0q(:uP3j4VDmدq:/rMYYYL-N%yvo0ݿGWÇEXs>MjdӾ%~cOӬqCΆj&?l~}oeuӳ+3NDVc?~sJ6potcc2 ~Y4éY -7f}$ Ǐ֭.*_]۷f¤i/ C/?YUq3 ܏Sg1vpFH]W؉Ӕ.Ɍߒ˜ =Kۻ+ 5-WRض}=ub)(*,4UE_LFkB6o}ҕ;q~1u\^FݸxK:+041oTƥ+W*;w?&D^LVr>=zs>ֺk|[Iߎ BٲԮU㵢%Nn%wοz:q:$Thؾ5=u"#3sYW֨qدMק]$'v&RPn[ߊ\M$ѢUK>Ğʒ;͛x!&&Tc:ÃFM벥L~; |lٸD"hס]9imR LF-0tIV+R-[zSVe`֯YZۧ \ Bll,*_ۗk9f;ɉ*)h=j'ggZj7kޜ={?'Lhס#/oXf5yyy*]5k:U̙iٺ5ʕ,YZMҥ[Mrr2oBvV\\iնMcݳ,7ww3"m3ss7u*\Q4m֜];wxiݶeHf |"h*~jШAM^( >ߚA=3:Q/%ӻkTPAdPĦ|Mbm9ʕ)E^ݩQ2LAdФ!zn[ؔ?]N$M@@@@@@@@?AۋU`` tMeMvJ B5M5xX -&D TQ%K! >G(QG"~tڙ~HqI@@@DP=QBĂQ Adi$SlYDoQAdHiѬ>۷%OAdhբ!:uK OAdHک5۴S OAdgbFcSs*ɍqj<%HhfIyYk"u3J29  dG& $!KD65Y*!&>%b&{'jGY9$7Vh^8Jc=gC9cl72~qIxʵl!qd.XpCnr撚'܇B |0vjMNpuu"C@@G>*%b,C% w:@dRk44.fu* Gi-?; ͜70CI@@@@@o"/kM/omCfSȋ@jojH H\]jxՙv(DAdU_{EȤFҘLvTPFW7 Poo$FOW @B=D@AVclj΅]櫰P.=rv{Guie_J$>!\r:jxl>*:8ѧ "ӿ[Ƿ$cHG1o1F&{C1"3I/Ai;܆rJ{u*hh^s߀ըWUk6I{CggGٰ̜w]=mJ~1%%%Wҳ['C"};僄nH9)V +aN"Ō%j=OwI,7n{szL6-4e&7nݦtL- E6Fss@wN.lݰk~+ְ|vC~]N@dzրB^ϾE|B"jVcԉ +vex#Υ/. wIJnn~}9tn_彷{|5|gC32|+cތ8%W#~]NN{h;Ƥ-^Z +J8"[<_`EETj 94p~."ܜ JEH"jРA'i)[{ý lcn[D,^0 #K~]E.m4iىjUn(Nr'.:w@0y\'{ajbBFf&ʕy`ųymiԠ>^iѶ+9tܞ FρG)DNKk>yzZiS/J2S+|ywswa6oHRR:w9rii|V^h!(Fnݼɦ <~Lʖ+RF 9~PfϿ{11_ӷBO?Q LY Z!]b`iK >t~:)!!S'ӽWoLMM ޽cGмeBi{ӠQc<<=ٹc¨˗u& FR!h={x]$'0ddggi)m[@ c:!?'2T*rm}0 J=`zF31{is"vF@HKMF,#Ҩ@ZI\=-ҀHA#q>rr)U$NyՖ.u\m\1Gm~jd_€=n4OBBs/mTǭ[ь7R)fwV v]n߹Kh#Q7nx,,,,ߤ-jdl6mΌY?3w4_渹gد)A̽0'""t׮P ܌?v日+HIMe鯫u;RҘ1k[6E"0cܸyR4WTZq[}zvɑq߰{R?6.(Z [[Dǰ~VS;LMԧŋhRR?6G,[ ԇD"#ؾ5tG ߋٳ~]HmF.c9v~Vj<oYl( IDAT{β^ݵ JzЫ{glmx4x33lpݘ{DDF1{Bڵi^p 'wWW钴hM7 JzSNdjޤ!GM~i% E999\AЦmX[[ѧgWlQ+s.Qf5uMG"HMMgmZy{Kv T(Xn=f@ߞ-B@$q#֬HNn.ݻv\숋KNt +VgϰXLzzYYYL9iݢ3M4aJL0[wY僖b;_#O`tkblL*ERR2Jt܎ʾHMK +2 W#{Ad\𫑺6Q9z2kd/[0kC"d*v0}'zupt'-=t9tkIgm/?_:m17ofdddq=mtdJ AѸ>kkk߻Gnn.R;X[[M3OFT ,܂#v*FǵHm~plm ~saaTZϿ HJb?z:uqy PQעȠ~Æ<| -[х3Og!H(U4c}ѣW_ςDR˂XX3pw~>Dys012~uŋŢ"nj5fV] YD"Zn屢 9u\(AvJu+_Ajj*{w҂XY[S7%"x‚MZ8ϝ|X(^>֯;)J%u,$\`\j\Y UU߿5Ο;KIKM۞DtiL2\<p[3&C/oe5.jpM*Vҥ *qw΅q5 "3#~rr9$'%GNN*"ǩ'HMMozTj@ǎXl":UO FwҔK?;{o͞"I$cWUJiU*Uj=cD Cd=?\n#Jڞ{ys~͛۸ys.mয়&beU6m3{v;}o>=eOK 5 RUx &S} K11P_}L1Зbh XC= 02@cƆj)MY7i 1rjlѼxVuT.Lnlܼ ,[L!P-bK}m5Ei :)H HH)$>9<"bK)@,QVkE)R]1Y9 rHuŸVRVD)G\r> )i`zkæ=ۻ;e˰rZPi*~m[~_kVLѸuuUf/Wȑ077-՘\Dzz:OFPeU7 )xZNMjVV g.EF İ!S]{gDD>2;wS L6lEPPNRw+K 60fdddѧWsScCƎMoDžwT \NӧĐSJ/ǣ5Q* z!# KyO?v >'D{i^H$nRIнngGV|5v,v\X|#+(4Pw042[- LW ;;G ?x);mc=n-{vRo ˅sgr['ם;s׭ee5Gb\xu!jS$%%[m6o@TFcGٳk;;// ׻ W.]}ivV'W=l;Y32z8::qᜪm;zccFu{ O<Ƶ!<:׮}|G?{h׾'WTk`a8:i~R4i֌ܜ"#"}ŮOKKlnN vş>F%\]]VQ6͝4=|HDx8N+#5,c^qGL::L<.]ǩS\Cvcn΅ 酏O/z]]Ǝ_%eab-#Q%>9|SK*FVF1щ<$ RS }4c $Rxd"#'O"HLHBO1g*qxp ?%77qNalmbS6vZ[wiݡ'q񘙚,koRk*:( .Ε051ֆnҠ~Lٱkg_b}.C=Ӫ58BAV5ˑCQU֝yy 4mDpBϧj7p""QPP{A􊕵+J/^Z+c;U!Q-` a5--R]3>Wޖu~6Q733 } [۲$%0bx[~b1ս=r9WiN$ԩ]#N_@||w{]Tr=ʗ]en hPӓr70*~Z* )faP(HMSMZmlvܗ=w9ff:sr?f>`CJ蚢4ޅ&哑-G"Cmʚkc(_@HuDka(/SȤb,M07FhʕR- b j=~w0wdͺT{׎/ǭՀb0oƌA*MOV1UQ;66֘r' Ϩ߬YÇĤdpU[BVV6_|>ZĹYh2v66\sssIKϠm\ժr]G ٳ >ޞjavnjlȤ _kfzNr᛭RKȘ2e8Г(k2>k  R$$$OOOԥ Z!)160{t6T-^$$ī433QO%^'#!><5oANyɂ%ھ}Zo{-CڪNF5 y… g#~0aǥR]_PF 23ٴwd2]x{ըY5kraΟ;K6m֣'NŋTrvLɍdɤ4n\Ch.|[-UeZҮ]m)_ xKeXki955gZO-Ç`u4oMֵp^2#'gfxV҅S4_f\<~Χ:gcc@Ռw*%ZA*2V_.l+8c} LMMp*ΜyK\ jUKsMF&zRF]hټ 2233YxeΞ|< ܜ2e,#CC̹| ~\ڒx{RAKLgNTpcʌ Lb5s50оtn)#7_Ә< ) ˠP 1ȹɀL]H|?%7OS>ΞZ}Kw[&.ΕP(6&L8-jl򤦥5Wƭ1ƚh޺ {#;+={^1U ؘ[X}J߷&Ɯ~!Ӄ7Ѡ^2~KlldȝAdgнkG f l^3Jiy+m ~STbokЮm ,-4&VUx7T2>qX\k 55'#H`O˙4a: sɳǐ}ҹQ{$}'];q%Ξޝӳ+Kף?gIL9_mpM+籄U,_Ѱhբ)Æ `쩈b>]]ttuK|ϯ|"J!r":re232ᏽ{ )V.2eT]]ßRPP@zza}Ą׮@^^Wboo_lS|y23GTrZ/"ٶy3q }Pd\|̌ Ӹ{ʫ6Vmƒ՘p vY} wv ֟Sŋ=W&j*ϟ'$h766ss? c6ofddP(HIIPn޼Ϟ='1 8t<o(<^llrBD_߀_),s]&|%u^ yϜyf#1qɄ?ct'u,9a0OF0yڜ7.EVu/ứ8[߽ v"4iT/5%&%3j̷z$3~KxDLjt==)׬g"c?""ո53wSg=oq Gkߓ:UkJy 0nU%Z{7S7o{j˥Sg٭e8|$ڵ*۱hiir:RSh߶%'{6ZVzvĐ}OHR3DNNM2'm6ni{̗ S¬i;r%Zh8wJ^֙scz}mB^̝9B}x<KVAA?޽/O~+&uN uԠ]?xTu9D_{~]֦,ݺt`ҔY̓3c4\Qd¸\xC2u<=Oo;pX#@vi9{+92gwrcqb٢9jZr9;߯; NP'Тyc:Vض{:?99ܾ{/13.޽ ǭwK^ۢ35~_Wn߽se aBAx&ZRfGZ:Ҍ fp'#bk\Z03fh}GG]X[h $3tp?=ɨe1Bl\~?wU1OiO_wž2m< GɱݻtͅvkL~Lzus/sN9_w.]P0 2/#=~ 6oEBb"]w!<]1l0c'LVcԈϊm$$bM>t 2sEϝTKJJ2R](gzaӓ\$!/K][U}`goTO\x'XYYQ|y"#"e+Ul3NqQR=֣j_rp>^ٳЪuΝ;˹gߠj/V>۶{榈qI8 :t,'o^/[JB|<4n^*VyV*&O^M-ZrQ ;YXXpA2Гpu{Ս ~0:ۗx>m\jycZiÑLP]EDGGY^>lXXX,EK|m- l(O7/׮[/eR'[7mDPRƆvۿ۴C,]CC:wD"ŕd6_GAA*W.1;v\|kkkuPG"#YG *W`ㇳ )))ڱܜliߩݭg/:HNv6*3OѨISu\7iÇX7 ήUYj݆Cp*TCNx+23V漻?D"a04|i ڲ (sym:={׷kE%KС _c}C~,křwn>Uyb 4"AZZؔN ԬY!)+TT*ԡn-nܥ0?j^^ ,U,["Ѷ_.ǡ1rn-(ZthֈZ5|8|$Ϙ?g.kܖ( i҅f4u Rw3 O#v- 1%ir-p毣paކϣm} 8;Ulr|\uqQd&tx$ 7&'_ALb!u@ƽ'[bI4ϲEs =iddiu[%Mu^k` 8~?.k㱴(q>U"#"|z@-r9G\GVNJ^e244ѱcc?KV[[+TDÆչp&v$**Vú)"B3ޭ[s9o5M˖sZNO&OTr9RPJř ndS]undT^R/DDQ###^F~jqqz)oo\$)%*nhksN5/m굛/,5ԔԴtn߽ E k]rcz Sr H_aO&d򟦣S~NיtuDbKwJ+ȧEm}\)+qw"WR)!Ii ,L2]::"6APbf,A$PL  7C I|21d7WgztD^Upf~ԬYC#dȧ[sNND`{\9kjV2sTRd#}LrƎ]w _W^p~3c¢8q q1y0FC||c.$;}kw:+|N B ɬt H1J=v'< cb_I)(Y[eg'|^l%Z7)a.OHdcFK!ӭs{4aͼ(+}?D9yT=sOgLnR~܍l$r?O&` Fogp/ kmU-(vn63%LLV!u7CaZRIvP`Ut777A\L2u2lt;-WӰdЦUcv팻KjI"[LukYvgwL2CQ(}ftggg0>%e+ Lzv@Nqtt C@@@#"X2 +ս: ⒀߅ 2 սݺužP#$ `@t kkk0"P1 A/D"y lH?ZhP  $ bjlȠAlccc@>aI@@@@@@@@@@̘a Yf " @>m4/ 6@__I"00K*Z[$c tde$ !@-S))gHnpPH#2`?5D& " Ddf͑ %!/BYJJ]otӕ5<͂X V@@@@@cgq[t* 'YPh m2?GWWW(0$/Dt%cbڪDž34T*o;wBuG!u7üj|M#+ ܐd sжCj~-k$f*#i#D~}S:::B ft$XR֎QOKeT$) b;]P(DD M҂fOZUzQؓyii׳ սQ# I<7AѠ^V,Scq`bׄ=~Bҩcv+VzZeKaJwH;Y⹗A__F/!>`ִItlߚ=p82|Ըםs.ף ٓXl9or\]SS8v ?,XB`疵e->t(J0=ilVGDӪ5xE#mC&ӣI6'i؊,C Gz7a )iߍ Y<^c> כdܺ}/Gųƹ !ÿG';u=ݏSCA|41~2u!ES2i˥+; ؏5k ̆dUN\tA}?|7=9΅@R5UU+(C?#';fS_W3o>vvoװTٙq&|<αG0hprN ** SSS<=ѥ{wEIܵ>>10h{Qlߺ5jOTÜ|d8ӧiԤYY:xgQX[Mv"o,K%0*4}caRuz L\.'77mm?YvF*P((((x4|֢ko&&&5 N'2PXѼi#vnsrSSXzuixehټ |o7}Trˇ.)oDŌ;CG~HL{cظegۧ]:c> r%'fOܫSNS5ٱcZcWY5b[d3~mxTĂSPP#ǒD;s2?/D;w7tuͧO5:9Sߗ|q9o>^|{|9jWntT!8y+WCʸP^ʖ-yOm(0__ m^ۧ kT/obRϝyt4#F~{tVwrʞfD2skb[6md,o߱#N337e֥f\|SщdسS0}bu% R?'0]<---j׭+t$oQ&;os/t1ҭ8r0zD&2 MTדXr9+WF,GLL jRI,#ҢGGGGmeӛtuuTM\C-kחq:uhCdT4s-^p_ -[4!11EKWЩCjѣ'0DYt> |J\%?KallL[?g=̙EfЬIC|E%NJGD2cBCiW}022dރj iie93'-=9\ى][׽;-K^ؔ&6.&cogK9{[,,y$[v`jU1Et*aܪ\M >hҨ>^(vܯG}֟$C֥m:"Y4 ˭;:rH%lڲ=_PK9}/^Z :Tl7TmP%}{,@*9UoXZǚuxFF:4</۪E?7oSĵkUǹm;QXX3qr@"S8x"Dj죈Lsf| 9q?$M[wbffJ^XYZP(ca߼MUUDŹ=wFKVv67lYsͅlD"QѬ߰|zꊇ+eX'Y1>}}bLrrr9wkUCV4iʬ7@[[)6lQqXTscaz/1.ΕHNNa݄> C[[^=:]*i?qWK Lu?Lޞ V܌}{P g.͞ʊ#2c's7HYsI oަM8֝@y4W #`:'罓$u4ARwOmO5WBޜ9GN2mxjܾwS琒ʽp ԯWg?qD"F DIIM{V_ɱ"q۰+qqqlٶy#~N]Тe+ IDATzaYd6Ԭ]n=zٳx_>ؿ.ݺ0ix 擗KXp!vFسwϏOI-ڽza`?Ǡ냐Ν=CnNӺMd2n޸AB|qqq`kgOV047=9!0Jpj8/ѢI, $7nSz'OgߞRbEΞ>͂%K}TL__u9lՊǎ%|Wgy 'cddĤ )4D%ӳ(=BjJ*бUY|||bm[bbl̄靈rZu@ KHLML016@_&%\vhߚdN ѺU3{/*nΆgdfw3mU&œ(:wh˩3gX6o܈/G0nGFyFܲ͛yc\MCg݇ǎP(HOOѣ :ISµW).*bǶmtwgahhā_Xk2H$&N*Cn pkQ8cblDm[9A-162bok9pLƜ3iӺyG_`dhHt=4~wػMC\|F,zvvD"^¥Dݏ&&VUAܤX<T*'MʊxWzA*fGbb"A7)))Ғzw.D":uc.ii8:hDJהi♹֙;5qqqdddT)LLLjqyF]]zx6#MZmJ"88#GU;tvdD%K#ҢU+HNNf/+3FP(X4ommm=T[\p&MՖ!{zԹ3VeӦ!/7B:Czj!4Æo`@Rb"1& X=::rJKu ƍ15UzSR\ۑXPN=Ѽ9?/_NII eMƃ'QTX_%ӢS^!V2+ӓ033CRQ^^NBBFFFbSƍpnnn( U%%%( b1III?[ӭps2rr(-- XZceiAxm{7CWWGR4q굛(JҰ km⓹ӳz" |Mogޜ7GPmM@撐ō<5Ak!Y~HmE@r|֥:::?y/5:X!JHK9䥊LpǍBWWWU_#CKJ(~,VLkD"7fxx+W`Ѐ>:s/Ϧ>z{;[qs33F > I(JMmmmӣ1/]}浇Oٞ]{T l߹S{.^yqo]s̃= y\۴sKJiNT*hnZ[Gaaf>x(2YYZV!%9Ocqj恀!l$5T 4st+]==󼘙?k 4kk~R!mJrr ?B]]==D"&&ck'YkW+4k?9=;vdԯhMfCP^"\GG#TSJ%>=z>~v̩Sbtz3vfD߯C#XYY?ceض5~O翔xLR.+ lXVme%RHHHYYQ\\LQa!:տHvWXX,F@"cǶmHRRS(,,#6qJEll,'T/Vչr]R1qٹ>[յ../M|vPk²B{EJrk~_UA,+-.JKKH$O}WϏOB[ " AR=DFF JddggM~:>Jnn.yyyڒʽ{pqqܜ 9%.jT:Lʡ k+Krmj`eiS=_~CF 4~]H~AathKKs_dBr !c'M R)Fmfnkc͕,~bZ±199>5:@qPjW{:~^ޤ]-ڊĤd\?9ƏX,FT2i(ib1WB&ѡ]+FR VmjPϡN+ͽQT,RmR^^NxD$/o&<s004Ը!?i=D" 41%jZbh.cr%%U`xP*hk.Hh®jWtbȐR133#.6湟4_>o/LvT*2lܸ~#1y[wue&M' OOͿ[jH$߀,9\!^ӋWNݺDݻGXhͼ_zf_YJEzz:Ϟe)rMLmQ&kÆ ÆUz72gs&dg^]Ǝw}{wӽI 9gBA^~ZʋlV_/[d2M5dl~㔓@tL,_/Y5r>Կ7[LwFGV_8P( ؝Qd{un&ܱ2ZZ2Z4XH߁CGiӺDcuhccnߘMoxy2i(C&{tC,̃ݻPTT̵A --f|{ܙ/o1~CoUtDR̳)榚M0IbdhHvu!JJq¡=ee/M{YgUfo}0 s3S &~` yy"JYBMO g-sqJ%۶}aS;{{.]X222hejk7SVVy]5ݻ5͛S^^ΆukxWй~}"IIIATWgZ'7Us3[e 0xyccv7$&$pA{Ц];p;2s6oHdDb]]ʫ򥕕]v㻯AYYiiiۯѥkP&cԷؽcIyќ˗.]LDBqqI%Vcŕ~K|W´;Dܺ#ޞ[aW>yehnGFjJ¹sI툏Sesss()Q #BIMٓJhH0qQrssqtr$2"Ą ejjJDxă` AEJJ 9|3腵ALs}g^`?.7LXXԢ82L EA@/(.VfQST*8>|psO[J_S{/cu?-6tU|J6Np>Y%<ٯ 1eo~Nr:BzF&3ޛh\cܾsOA |}{#g՚;Hdrrt 11Rd55Ɗ_T 4Vbc9RmʳJ(J{M2x`lmzꇕO/gO~T*eudgлg7#&Vy*u:Ə$5-C,ޗ" 6֖]lڲ:fvz,ֳywT#CCcb`BY[uhĤU:gLΞȴ)Yh??CٻPʙwvdɢO(++굛\ ctul' ˯֢P(ؾk曥S^Б\E7ڥ#tm2i,EE LyƏ΢rcsFՋ_;;[E~_jnR|&r jQL:O+YɇL7[qssmOoŒZSn9N>=co;L&#;;wpiLjbI{xVbf}0 ٷw/rmm|`А!Oŋ߻3``RRR; Բ{0jX>̥ pr 8jբ{Ϟٵbjӽ3_뢦:`J16E LֽO$Ue3//'HEV?{az7`q IDAT\8w ŗK\cD"z'8?&ƚxZeА!XYYO?óWz͇}R^lT)* wcggsgcd2zꍙ>={ra\Rw~]vvhɴرmzl݆KPcccMБPZVZm̧G80me5& !6@[.\@mڵC,a2--TJ%]3gJAAy89;ϰ#,*hסnV~}yy!Hٻ'?/+kkz:r`>V#[4bָi)/t{eOԢO~9GTSU\>>m37yyLk|7ȑs 7wE@E㫢˭L ls@³4RbD}n Z4B*pBD_d2RD?s$1ƏgXZZ 5BB>. PˉiݫO3}OINN'?/+={z\ [G+W~֖'9qb5[~C^4iΞ]ϛo6رUmی#G~}l$ԭk; qcuQ++SV3gֲjܜ04?tu_XcVRik˸rss <3Jy/)5@{Ip) 0f ;0oPOƦ-m+Y`iMIKKIٳk &T*Lgpuuxj ~'[lݧ*~beeeԩc7iV_OO8Ȕ)177gw=;f:tO={ L:w#⒉5eʕ0:ua~6J;wbiXmlOÆb6t$>>, < wEO}q79@qX*~.Zv~ ۯZah\~OiiɘDc Ԕgk*JqssPKKSmbbk[rT 5uk] #''=۱n^JJJK]<Ķ P*U_ѡw%7ڵ-qrc˖C(*ΜBqq) |9W쬈K&..''{6uҥ`_*)f|B438CBY T(PPVƁf&1>!`QOڪP26EPt#GlyV1E7Aڪ7{2rHjժ%4#TpJkW4mԅ+"TT)镭,-MM"66󧢣Mǎ9rHE-.|§O;5ۦS0iR֭K7n~R 7/VVVX,"00qLprmʞ=#B8]'X)  egy0a(u튑^!2U|CЫW;MouZ'sJ}v$,n߽ΝX MOxT*r: ZږkxF=`Xm4>i>GGG "Qπk#f T/X5 ja:U=fPLqx&eE,t7^s+$Ҭ c/<AdjbPc! TM*ceiAii&RD,P(HMM%%%H%H$J%"HJBKKN_F/X՗ po҈&qn RCN}gG36Bhצ%5.\+[Ǟ6W:(7jFƆb?r?:極+#{M͑hSUBqP9GbL{at6jwXصzNZ1+)dWmzぎy[s h7zOd?=g4})e c_s\8 'cffZOߨcM &$smcZ4aTU;r٢9u0{Μ^4zf @ͬLXӴIc 4D"A"P^^NAzL& tuuJ( F]RԒ{eU[nVnIJJyƊo~Nll)))PRzGklvˢ;}bjj6KKKZiCQQ1W/5rZjISF())ڕlZڵpmРB^n(/AJe_ʹwcaiILt46'.6q&V:K++A`Tf_rsnނ-ZסS' ^{\VV7  2?vSSS @<İ#I@LG=`/]:<ۜ /FP\\H$BTRXXHZZdff5bl111sss4^8pjk&mmm, JJKپe-zz:s~}ze?άS8n[NgݏЯOь;w`|Rґd8t?jʼx+~2ԭm[d۶%~e_йS{ZwAݺ|,K%4,\w 8~$}]CvNNf˒e3_/{n~}z`iiNJJE++[[kƎ)lڼx:uh]m[l133^T4l#++1E 1ҢIT̝NrJLJcIM ,,AУ0آ.o8<-҈L=uᣈӭK|)&&QRR­H|S cG Rɞ}rmZ5gЁv$<6T?Wg\[Bo#>!FЕBD"q ߸RF H 4'55{QѬYfzzb)**bh܋>=}*\Ӽߖ/7;bQ#)wB;2np\]b֝D޾L&cؐx7!'7cOs*WLM  ̴cGn{J%Ne,r!qhf#T XH$ӹ ^9XV -C%5h9"w\nsZZ2ƏF^=xŋ4dhI˖Xf5nBRS104d4u@GG͛73FR{NN<>vd$[IZًv:PVVƤqcqmЀBRSSq&l'E0|*WXP@+χeeffa=ȵyEK L&c闋c߷oz7#~kJo bMٵ;w2tpΜ:E^~>te*j=dggڀ)o~׈pϜ;:t]]]JZj )))dgea[ێn>>V}U',;ߨcOh(.*b&n\-ZdȑH$݋s}Zn_||8~RQc ǏwnLjPgN~ܜ~~\8wBllm=vNUҊ~нgOfzVh_HJL$2 ?N;#̔^}VVx<9|2$Ƀ᜹|4:tD]MzB?!L}.).6#1ad$ *7"33sKKK'pzMOjg٬NNwl݆+K$Ѽ JKJJ.]Jr ǧ{::5SB|Meh P05j؀MP_Zaȭ;vî ˿_H$@ܛ6bL84X,ؼaiؽqs5L0abk}Jߠ#A[[^c~>=9v 2eYz6iDaogdr OAɸJ&qB 3S2}$͢mlܼs"ЮuMSS7UO8Dk|0JEYܿKW4ٓ062u8|cS-GJK˘6eIɕ_ W$ЕFnxw3N4Z4eu҉}p :wjT[y sn3ob|Ԗ4ǎ$"6_w?oHA|>][ ߻6$ nw!9gAu~-A*ЮmKy P(X[֬ۤy si.\¼Y;.^tM5C3Ϧ\ Bm[^ux"X ];wҲr?{R5b̚OX,On1Yj-C*p?:ccœ{Q6}zw'==o~Og qvmnEVUrrXr$ ҧW@TP(XWnmތ&?ydzK3ߙ~L8 Ls`~rss033gΝ\z|ܥ+A7opAMڠ7Ÿ{x;p{w¡^=}1Yp#kٛ7nҭ{ޙ.J+t8\mvofθ{zpN?Ve|ډUreE$V(p2=wơ:khbbՓ͐PlphW??JW}Z#l2bbqvrmO,w|յMrbYa3oMJbǮ},Ī"/?[[ktBmUe6֤g]J@c8;:0B 9JRrmr^WV[~dR^Oz5wF̏SǮBX,˳)3B+(UJR -[xFPp(<*Azӣ Μã 7BPmCII) --J9AapoҘ'2uڱnk?EgD*İ{MO@ɓХKgLLLmڴ7166!$$8h3[ё~R7HMMUH$ޞ1\NRb׮^}HII  U64ufqŵǍի,{:wBPs~4O?\\̆[&&:v:ЫO_u ⬿?C7`|`!66j!ĤVEQc}}=ksbs/]"++3v;ոF:9;^r4$= pWT*E-z] #11ࠛpl*&ceeEB|FS.’DSĐJENNNh>nSuutIKMѱMOfffi;5qqqddd`a"pXŋ~ͽ{w=v"۶q+,F"D(**"ӓѸ> W9773}z GiiY7QXYZqѸFT*M&{{;sz&JFn4lšud쮞/_ۙ7=yTFSLJ.P9$$&a؛h+yϿkbWJw1v0v9o~t? IϨHP#Vi6JU<τ`cmTOBbR2!.3h`߷*2ݽ2|?p:,*LM'X1BBD1tN__aٍlPRQ RҖ#CCԯ͹[fO:mk&V{yGi+L6̟:0SOץZ5kW&6&Gb>hb I #˵b3)5Y#9W66#SaC~$LIyz*:إV1FFZu~1ю)IfαOuD,FFD"mL( bY뛕)$Y뛕9ցX,߿Z!hL&NTъLRÇz%LV^,D" آsnRɩ'XW kLJ,YkkڴmSEU-,-IKM)=%SBʕ=SnLߙ׎$ˆuҭc?regm}m)!!4ilTTG~AcW^Wcdl͛#1 99ej;yyy``hƟqiϞMXؾ |̎I|իh'\|2C8uFܙnٌsaӶ'=#K ݁(LMJ"j"ƭ*,/ ķc[Z4k ,}}}툍z_#`bJňL1cb1!Jiբ -fs=*8:PŹGco/>6-v|[RŹkLaW3y8/XcѿoOLL >~m[ѻ4f.UX|)͚N}FF&zzzӶ߸egd`u511 $R3NjJYehѬ1̘:m Io~8u<{aog˨Ҡz%@Ffr92T+vl߆3.O?/!~k+K[[k*8:pCi;ęs!j~q%-**x4K5Wo 55bBj)E„ mezъgǶmdg`b|1|>(2R /(2"{ 7|ӈpLLMnȥY+="\j5"򹖘*4sJb1add1)tryMG,sYL&#LRmhڼy`0$z~=yW1eڷT^/}^mwR:ñB]% u&"#˜T*OQQa/s~>qjs`>:viYY]Lv5iH$GϞ|#qKJJ̩S p$r\UQy+J/##c2Ǹ'-5#ccרO{[,цukĽvm_x^on,bbbB^^V8T*cf.'dxG)DQ4o*w®\o?y'ϰcj/~狱L9Wkp>$UHMK'66wRՙkrrrrЖEуu&k>2jP~-b={jtN~AFm[ *1&F>cjA$Ѭi#D" =00(QD<`.(1$| Hf;mʗ=\GzV:s{ҽ/ )s0qXԯR$3+@)55?SR:58a,6l-302zi'N%Qsg~'v+6QC222dddҴ;y(J]@MMM8”5bKUgL.//M[v0K,g8:/ٶm={toqup;nՊuo >EFKOSW,23^qqZa$+_1r9vW61r\GGXЖk, u\v_ҨV7_#--\:DFFU]rbcbP*>y疖ܹ}i0ۘ 70@*22)**ڕo-IR\rEm~`$ N QyM?~}r%H$r|2^^^\t ///222prr"77{Dbb"(Jqrrz-k1>ݷoiq9E-ٻOCtϞŵ-X;s6T_W֙uG6ʌ#ܵ ǎaߞ=it&Mf׎,ZĄ,hݶqR}ߘ:}`Rre\\\Yf ";{{wssc޹#ccm_:nͶ[K+KOW{ԉ{rME4oęӧ?Jtҵ|/R T͛166qf\8U8 dff wuףNztLЁ\ ATjO?N5&3#WWN8A^^JΎZqfjD"йk7CVfvtV|Zwn-X6֕5Yjv'I{vb],u!t|,,r_?ߺlndL16.cٙ:vǦTP%Kp5*WLn8|0j͛i&͍qss#00!C̓pww}Ar{й?Ǒ3f6lΎ|ME'GZhJn@%ӡ]+<QQ;{:jЬug . C_&cOrtÀo y- ,@OWJk }T;ci ͚7)/p1$[7oݨ1vvx1,YG1aMGNv6111VF~~>:X .%;Xv&rs4xrs-0hi{I&M033CVӲeKD"6.SJJ Һukd|aiiJ{??ZЧ`anNZzaW/ B?+˗X,&*1'NU@?D"y<%0L ")faҙBcYaH@}õZ5ìQرMޥR^36 {`$d/g3^-5#+=ѓH8}D%HR$~A:| ]1c4/>yЈT*1U@@D& _+[hRf\Wb(39eJ>ɻBaB. ]Yz@_вPy/A"h,{ܥ%k-7dQtٴjUfh_I@@@@@"F&t06;&LZ|aay9eeKo y- ݭ0SMk}5͜il.X/ "Bo1Dz3!I@@@@@@C lG:uoD"&H$bӳ(((jV@@@@@@@@ħCKEZDB!^f}'1rdb|dР.de/yikkɼy_p:ŋ'z>O}z 4+"|eX,fYԮZ6S比S\_fm /}W+@ժN|+d7o tm_pww&7+[25oހ3goY1m(iӡ322`ժYlف(Je)9*L&ƍj3BR=iOƃPT "#c^mӓr|ڵkāۜ&55o\xcf4Ÿ+Ju[g;֭sN]8s gC[ƍ2p`g F~_R+K"ΝJfڵkđ#;wnI˖}E߾Mmvm_ӷm덗W-LLY͛4i!NNL'J#IKdaiϘ1 :[uVSO>})_}5L a 0Qpxߧɸ/>&wk. @Æ7nժUĈDfWrt%))[{qCn>##._Eh*{ǎMؿ׹ĈT|}GBaLQssb;wnΝZW[3hPW֬[>O׮ : XjXr7|ІۏtN[/H[!G^,Yػ$11 %ݾJ[dddc` ]F=zGؼ9][ =GLլ,T3܊n NoýBcDUy^[d:zZ >}:g KMY5),,Β5ٺuv_xx4rR^ml,y | H:;:4!99<"vvxxT;wiF!kE2Ӻ >kksiV*Ue^=%%LM_ZΒcccԻ0x ԗzNlg _[ȀYX(xbWܥ}l81kNpn]HJJ@RvSRuD5< 쭇W-Ltitm; P(= Ӽy}ڶfƌߑHOJJRRʫXOFWS(LEdff4iBL5s$1#ҹK'lmm xxLY[k^իh&== 23s'0p^^97ff&0v@ C8u*VSR}ԇ1cL&-5=z.]ZdBa—_`ggBaLff9ҫW{RitSS#~3ڵ.cΘat SS#NpW/ϮKmMꕑH$|I ymQ.88vP##zj/2Q#k &Wd:q"c07@$tԘA& `*& e΅D"_G$++O3>ʌ[2mR;y2={ѥ˘^,Y'N\bƃhڋC͇?~m4ʕgef^*Vc92;yWI?UgȐ#}>OL|w0Fy |?F^Ź~}nOg.IN$e.ZSGڈRyD"9t?[Jb,c9\\=r(bZ}fL6 ZЗZlX[ 'O)]144MPT 9}-}!^*CѼY#&LFjg ?CXr?>O5ת kkK jՙ0qbHׯ]Z4k⭕{mxm_C8*U>wZ/cy}XYYQC&QXXȈCtҘ!HR}q:xÆR9Ν9#ܜuѳOm?:yM;g6:l8"M6EUw3Ta,>|o xp0ڴf޽<ΞN]P b1_Zٽ AėVvDrgH*UD?~L*E,onL6lKFF6r qppR\~LMxQ+f;͙ATcmʭ;w}VlYNe˟MCDd4͚6bW=Ge_03\VU2%qٍӈb?\ fqOX~+4/=waڌ9ܽj.̚1\6n١ٸ6Mؼn9obϾCW,pVl~&2=c3(,,1ILJYo̜>SѮVȤ2 DžiǯKAA! q$vGb1} [z۷aԈ!L2V-Ҵqj0d@7iL&{ier LñX~uGjݱz#yedt۶qN.s6v3O {ӧhҬ[~aZ232nwFujS-,,JXׯ]Ғ{r$ F&/T62yegHH,P.Ȁ4 A-1s!.U+ҤsfI?VJňjEE:y>6֚Aw/(`|=u"*:9?Q {ء II)_:Ѓ?q* IHR,Ar"x0 !,n߽ǒ?P(hӱ͛6fsٰy;?~G6-iڪ+WdWZ nOܸy[w50SSIKO?Vh7gd0ǟڹ#̜YtKGў!q#IkmQcڴjSG*:9beeH֬LjjNzOEEdΦ(|*hѤRGV >~~=y6{vSD?a|_qu[Я̙mO4kMOIMMcUܹ{#= qu }$. +{ͦ|MMLx尫:s;?uYT: LÆ^&;LVn^.EZCnE|wŸӹk7^ ##=&͚ѷ$ {vµZu7mʜY8:>>>!C vm߁9Up<8y,X zRILL}$%%aaiAGNّā{Q)‚ZSrekÃJu3-AZ4=߻cGC\.vnƎm`2h׾۬\yy4kђ;w0ÑhՊsgΰs6177khժgHo©'էOLjcRSS|'+55Uk8:C%]uJW@KHH̜=G{1|?c:GI{Rd…(9~ES7`defLWC<<=ٻ{Zmƍ4kGGR9M5f-2ː}B.;{{Xr%c>Xy=~^} h,%;oe6xLƐa<~z֕O?N4nڌ#HhH|}&' ?j5jЮ}􈎊"ArqXN UǏ9v(C4q=|!CtĄ'$k+KllV5iw΍Qhr/X>?ϝ~n :r0r`zvsuӵsG~wSXz@ΰ!ppc˶]%4?=3g/0I;Ř#H$4o֘61oŴjѴXeދq!$\lX;(ΝH]qpsFl\V`zƙs!LR@5pU3B^yy؉^Wr:oڴx+Ӿg u0yݠ>d wcԙ_|14 ^7gͷ~?Zvx0̤֮3ٵ{?~}M߹{&ӓТf~6&OR9?b ,Ӿc=Ӿgp5  rE*8: IsA:8WĤ3n<:km~VZЗ>0EG@,ӭsG &NeݳU+X(0S(024ƚ'ݺSaB|}ڡ05v h,0+Tp死:O"HZ2:p14 JRdw?prYYG~mM4L5BZGYgy:xO/*U8|23~M6%33U5VcU88:P˽6'I}oRˠRضe3dZW1wpd/ZՅS'NTµ2e/;qquK׮\zU{%qQ<z#gő͒_6|ʟ~А/@^@,RԺ$'gNvK iӮ}yؿF|x*89qtHwoյV`zZs KfҷCBRRУg/,,5c o\\]5cqb忳{j׭èӬy vnVlx@=߸zpKn BTCӯ?#F"B/]"/77Ǘ1}{2_ BGN|23T*aH$ p$}ٞ\uɓH$޽K&wH}4"{>7n+ɩilڼn]sLWƍ=(*Gҧ=Y~ :0S.^љţP0h@_d`?s5{{Qɑ _OC.ӡ]k~ѭ_gǮ}|9i:_|1݈~CPF pZPܪsA85bnEƘ),}9NA*2qX5mDffzԔGӞm;j٘ıknܦƍYܚHĉSg8{>Np\HEi^WήCܼ8&Wy[/ xHQc\]i޴/m|WdffQrE5m\.'*1WVٺ}XIdfeh 96o/ $&%d\:TIbXOn޺}=THHJƯIMM'Ϝ'TJ,\RRR% o&&dfekUg^}C.'#3_мicV^TOgZ 124ўxWTs\IW,٠.~1 Rɹ QUIhȋ\IAA! \v/ =뿗îҠ~~:]Z|´yN P*dRT*%r^I.>;D:~vnvrANXicGxV&ޜkX"yY`u!m5iB޽Q#rv;wǍ IDAT\z|N:Z&`ć1Wi+ӷ_n) joTΞ%>.}HLzDTws[HO+:_ٳD"\.Gn`@JrJBz166bӆ $$x7ӿ?b(8xf7_nБȈ>ջܖLeQ&Tuq!>>۶'c3ݺrn`pPXXHzz&:[[klm}^h]j6SŊNs) * Z5Vktռ.jL8=*8h*=#8lh=cރ?eY4iMajJRrNT ̀+ZUr)4旺lߵF k/NoܼSȔCSa!-=㩀ٷvFX,fպ1۰=m{1qOt͋.:c>@7&H$A:,[3N~@qO.~J+P͵*c;VQildO6Ld26651u""GQlڲ%]Fn]|ؾ >zXVlIHLJ&e VEpYЀs.X%_ y:BBD1tN__aٍlPRyPjk++zcllLLlJJ[~GG iP6_*SP3of̛=w/MG:uޚ5되)U^ib4ͳ< TvvLČ&--/&+!L9WΝ9Cbfrt@\l,"#uݲ0[PZSS嘙irVzViߡc[YY?}hI EJںо{ ʩ'KR=1kuk2"/lnܼMMs B_Pkױ׼`尫05%;'^E;ywt Yڶĩ3mCӦus>?Դtn߹[jXA2á4^+k` \L&Պ۷̹ deeKHKO EW[[k*8:pCi;ęs!j~q%-**x4K5Wo 55^rJ*v6eL>ZҧO/j֬^K_y`ggҘ5TaJAAIIIXYYyBNv6+ nw.aCuD&#cb+fff`<6u}ePEwQo].v'Xm@)PPBwB$!~Ǒ#i Byii(JM۔@S+ޜ<~,ظ~o'G,T~Uoo~5]]]>klTHD2eq%Z͛S9|Q|ALfxÉCf`+۪]c(JBC<ڽs=8:#.>pP_dd(z&i|3+Zle 8y0duf>D,s츧&By<{`DdժVf_| s6aa8ZZZ}Di104@WOr B(К})J/gWW=|@||7<{Đ}z:?㑟?f9<{ 7o0b@p1093`}7'Ok&7oеS;tYa GOk^ҳ[g\]w/3 T*cWDFFr,0n] *h''~ Ll߹:bkp5Ы{g,9y[yOa"ZZZv3 th׊?NGaޣJbޙCqW6nAZZsgOƊh;] !4kҐ9|j f͸l^c##^z)??sgKWĹx*mZ6MҤKgR͙$Oa] ߛsfБSLbP(Xj=}{wCOJj*ޘgy{[۶qOrS.W9w{׎P aurQ#0sB&ODŽ3ЯG \|g'͙B{\ytalݾ{y$$&z&(`dffqL{lфc'N ۳#"--x*Ca<|ǐ}4֮B.4Va+XOJj'==m[VsIY.EvL@ݎ Фдy n\NRRtNzŊ_ÃN]rYbb].W=֣'Oܙ3ӵGbSe8;|@< XV[ AFrRzuR뛘0j8'[>'OhʩZ<~t97/|`ck}bi٪5{uNNL2=<4thvsYN; ;v={bmm;= @&ýZu&|?R\9Zjͺ51kGs.vrRn]v|pv8~\T[W>Щ3ҹk<..ݺmflll .ؔG[͟a` Nܼq2eQvmN:mĭR\$wuة3Gfaؕ,IڱX;Ѵ;@_&=ƩDEFH$I@UܫRJUZkשSܾu eV:w|"./]w߾̊S/iظ1{v@.Lu$ :tc$'%cmcCy7HiԸ Ǐeұs {x} *Vr#*"ՕmrV SS3:vY?"3j,a/Bܓ{Cy4gMd4Ƈs!% Jb7zg-4k֌FfúXZْRBKXK>::zdd)i_ےi*.wmB__v|p96{A=WqzZ$?-7V<}ׯCX4on]ߤf_4u0WtxntMY]kb⎺8~pOpOrLJ~]ף[X%ݺGԪ]kkV;/Xv?s"kΟ;#ժWȡCx:3p-_^hTr X2 \HINZ*NZjTJ,,Xh)[89T)Q*U2L22RjiHlqmܸRc:f'${!:ڂܻn]:i b1C8'\H$ԯózHN_MMsW*qKV?=(}^0qT4) L'gg.?ς_Rbwb-6~d[AdZ2Te}Y$)^*O^+iI DFajjFjJRmm22ؗ%55x$bӱ#<<3Kte%SZhI$\vS_R--yORٍ"ݣ#ݻwþϓ0jZzдa΄.6 Cy 4>g>L>_S"=-9K@@@KEC<N"-)Yd) ߅SN)6*2[#ɐgquv&19pHKKb| ----  |oI@@@@btYesVI sW7Q܎ t-"Վjer$@m4.`Ҽo!ggSS@GWXL.>G,BOO++ >yH,B52>D&0CѮ}[< [N8eU4)rm &'I@ 8;;P166E,ԄT026]m)anX :DDE' PWҲe LLL("~T~Mll)$  qF " L / PnC*UB*&$۴٥> A@@@ϭ|2 |2 Q#v" LVV+W""bRB~SB|4p`pKl-RIӷo[J%"`&oYUSo\x"͚BRO||g`u?Q+fhi >>xT"H%VAή]'Yx 66ڵ ++sttLgϮgŴoP][PT|/hkא)S!gΥK>hQ˗}M,73b g\g߾Ӛ;6"< c: *8PnNŋ7̚CCMs <= DN̙ؔ9sCSVo׮!8i3 Ё?LL 4i0gf= 8q2-OT*ߦ!Ҍ3pvt\s~ɶm XM<{Zs<Nʸ? FOOݻObiُm摔¶mGٷϫT^֭[Z3`̚5`FÅ?ttT=>Cγpw9&&e˪;w++3>φ )[֎ qy+=*cmJE\\"#GLTT%KZPdÇO=-lg11X[feeFTT XX"*ΒΟ?\,^sQzE/12{<&&r )QCCO_o.C"Md,)b>]XHD"* 33S:oӧO GGGkի( ڷoO͚5ILĽǏD &55ssstlÎ}Gդ- ށΝ; 'VL PtMie[IvLCo8%U@(Qzbm]6mPvetiJժkfԬY6m`m]Qz9]cc:uj̓'/HNNa"ׯqުU=)11dee9s7?/::[eJ*0^~DtHD610Ĺs7i߾V2iKC5\TرmDhkkxܹ ҉%L12`74o^ {{k6msiRSIII*Y`Fe6%[ke@R)*TjժԬY2e`ccCϞ=С 9s///iԨ t8::ҠAj׮M͚5}+P}*Byx3tpNV4k]O[[ۗx5c 2}}29z`m[w@ؗcP<[BU-tyY?nkcK}3|ȀO֥RuR֥ =4:oCo}B\?QvRtǽJ%<903O@ ?{ o_ޭܿ}ާc",J7hҸ>wmޭxk?vp'2xJkߵ[Wp^'gLᡏ7es߳}=MreKӏ;^ٵc='~W$ԉ,rtHMIa/pяr?qޱeKv߻p޼/9=OzZzD:7LvtoZiav'\8wAOv LyI6rP,\oز%K>xf|h|:XBCٲicuUΞaޱ\ Th̙57KY` ޫ/YfGK/::[lٴϲcܻH$emnIM>m޽etG1slt p&bcy!^ÇC.ٛ<鍋K"v0upN,6m:/MWWW;BVV'.fڴL0p&LXDF VÚ5?!qDd̞֬=%L{O?CϞHJJaٲ턆Fx<,,Rٱc>\pMPdrE֭D"ç!TºXSNiR kyYJU6$&&DRR*U T1666 022B__LT*UhX _VVٳ'kRb6lNFxE% ߴuk` |= ,\muٮu v{MGFz2{WaU(7cG&4S}kYtCѻT%.mDG5bN&!1X;y{Xb "_++gμ%x_ 'c)L;qs(<Ȑ+3nW\UX#߻ѻ7Ϟ>Ì=.ݺ嚘ݿw/]tJ#0rgs&[N1pa |o0zGQ=\7 L`|]`@CK*Z$ 3ppt^n]5"G+VfjݦXq8kWx_Nrr* &8$SgkV\B2bqqܻ8ROv [kk>#99;;ԫm^v9LF/]$!oBQ*TCz&Q4WoǍľσ^` ?xRvl^m;QrEqB.ceeܙ?R3dPޜp3P Ӧ|#)):Ǣ+Ս]KxEݣ ~Œ'RFuc&?nhf†5Qՙ7o3k"RRR^7o|Zl:'kzd ד .rInR{+)/ZhBff&\ԧl[%0DƭK:p_%+Vm[v-m܆G>gGvl^m_gѺe3}/_ucFPdfҿo<ܫpwz͔dz|^ --Ysard$^~Z&1zPɋj_h tjթWYa+?LL%͘:;&N@n4kҐ_Kbqʂ}{%4mvD sd}3_w,-KgN{ҲUkK"33gxjVryptr$?ﯙ$$sIBTA Ywt۷lvݺ89;$'@zDk 9TA_D|+&/5-Shz// g9t?ܫWNlڰ???T*..|5r$FF ח*U޽{XYY1z8mlPT:p a`h< d]cjfFviظ1 Z}qvv)Y*~]yz:~]n>Ϧm9|W>\<dhIj+/saqq-ψ02tiiؗ*Mm"# >.j:ϤzGWǿdG˵u|MD"fϙzׯYrw}|pptS> ,ի>xLMMЩ3 7殏v:r/ ԭ_{kƆ[{8;;`J(kx!:u)}6gА߻WTP~G)FHp0=Oy swD]DFFy$sk3gq۴՜G|/g=.L^Bll,W._c.PTl۲ACg\wr7ryJS.HRܷ}GBBĘAAѨqJ)CzZ'Oki;osM\\Ӹi"ץkWIƍ~ 6no.NܾyDBZ'(:tꌶ6UVs( ksb/ksխy֚ߖBFF+X+C[;kvykkm4Z)ܶ}{pO:"5%^^ן1ǓG&[;7GMv&yAAܹu~2dWy[>Z߄0j8wY//,'JmRs6^"㮫S 244sssr8]]]T*bX}͉ c_Wr]JKmD̚e+VsBy؟aꌹR-Cشu'5=ѺeS:ƣoŎ\;Uk7av~]^ݴ;MG{2or.U[jBCÙ1{>.# )MC,.ʵҗbffQ1zҽJ%vO\\<z"Wn-])hTk7}>~e1ϜǤAGYd w,igE s֮Yf#?[+Βe3ܽDҢ}|Q*Tr+O.<z #ʻzzԩU:w Hҩ&Ϝ/ ~%3Z6Ws!1餤rL^MjU8tTs } RɓIIMF˴na[w!:&ߕiQ kHHLdԉ( /^^h:)!&6'{iYY[6Ν~ϣsۣ6DE>եnxz#++3g/кU//3zꍍm 0 "HV[GS.RSSS+0.I N..͚Ӽe+P(D"8::S yZXֈfmWѻ(11/^Pr/ſ{X"eNKJ*̝jըנ?LFu161~+i-ף0rht􈌌T/#H=n=z&בtރ-[1lHuBky LNj˱-[лo_jשR$/ JjAo]~W/_Rn]w_affLi&ce%fED޽iѪ ~W tfT\{w5"F[[$ 5&?@kkkptr"=݂1o]E3__/?η|| 1%KR$12uҵ{wFo!p2zxƌDBT>KMM=::rKKKlI֭177¹—E\N-䉊OR¢6sI@yr9Ξ{^Jn\pA^&$Ҡa#t061{5?׌%0x0n*s岺n[ZZҨqʖ+Ǡ!CӿA"L9uk UDuߟp[LAC2hP^IM]Gg\ nݼI2e,hp IDATٻ7=ji>HH$D!H0x0UݫBDbTH$¥|y(B*U142BGGޗbKBOOEFFs7m;>x{_is<.HjkidSJRDOO===d2Τt|STՃلķbڂB.u[)NhzT*INJAc"c~F X,fνujeIo]'&,@_5=?;&&lپ-wkg_PřaNv=c6^Nu```<"Zr&W,svي"_4-eccͼ#3ig߷ n\162{TJܫTѡ,7mXkӒvmޙۗ|'<}Wn~8;bnfJdT4.Nd:ڌ=AF[[w_bbc151β#?`qB8yairX_~"r 2-Q ۓsy&tƵkܾuFMP{;nVIK Jn[r:.*qp̱RPc6B߼.ϹٓJX]]]sq1j lK8KKKd&&[KK~$EmQl\؝۷|N_&&LJD 500l!g-"5B 3S2Z}kdaem B& qX 3gr 69GO_>>x_NL)[V"]NRTZ1blL |;vL.1DT(hݚϳjJ,,-hڬfһ\3kw^˔aqo֮aSdDIwf"}[ZZdj$9vtrҴ9-XyFFDF`ԫy~6vcbb ΝC$߷Ԫ][d2OIRu8q8e˕eV>dOoQv], _zی [*/ܶ.ݺWطg#Gw 2 |rE&]]]6l؀I3M4a1mbggGJJ Jhpơ5a8s! Q* ܟ磯DKǁ#ϞQE=,5\]导3 ?fYXQكjT3Oi٬1:ndl93hөWizWpt,_JRli^%~5tm]+ .zrazBB"ElLI۝&~7 [k033-#gp *W} 㐈 pmlHH'66HJ9LzpTHĚUk&weʖ%00ׯ9Dϝ%M(GXO?B:t)),w230~\042˗!![Ssu~6DEE|NLxcXAqE$JL7o2 y2bcdpE;7˅{L+P~}^|!$0gҽgOwrYz7vttfaaiӦi,)JzMff&wy$_:yήܱ<._{w+uڕӧqT.MeR ,\X(DxȮ\}kkk%"ErSm&% %-5g~ZL5DzZ))+ ~]1addLffr _<+] % |ϫ`pE濖H$zkرcYj˗/gԩ˂ 0`ׯG"`ffH$BT~/>gϫR?MQhX{P uS6TZZ5kEd<ߍEVV^E̾3MbquqI/J%v69i?L`Řu<zɈas660m}|йc[$ vv6ԪY{nO 2^$;gh\2-.&Ѐ3"yEutq].T bCAłc]c{Ԙ[{{ذPYXvca%{g;wvsބ+_釉1ii(bct]F DBk+W}s}oSXa+LhkkSF5L{10dzT^GkXkei˔A,chh{U3ӓоmKѣ;瘝=׮\ATWqtvd2RRRضy3)))%NN8z*E,DjϥXxJ޺M.]K$rrzr&&&l&VM_dnxy HII&33b5j"Yoܿٳ_ƍ?uV-׮qQ6mXObb"|DզF&Q\9ذn-֬I~L~=eܹk׎={ H044Bӹ Xv՜ng߫S'ŊYn3 Mgbk?xzĩzQ ƙsX[[ҩC[ΜȂſ/rEڷʥ}n <|BHO`܄i$$&Rw`s<D·FS W38u2/w=PLLJU177[/H׬|:}rsedeeGjG&T*0{BC3c7e\> ;̹] DBjx&=uba= ͊\H$,?dou)+q1JC(W.` %黊pOБpMosUd<̞Μ3|_͢L=Cl^;ѱ|%^ӳgQp imwεǙ3{&« aaOX]JoϛMsٳ}ԾwH$bw*h٠DݒxtS1c >>o_iۖ8.ZKܵx5Sn+~[ζ͛г{_qrrg8:1Xr1qu1wNSxqqqd| U/*TٍLTn@79oA2>7z郮.K-$ܽ{ öѨIBCCz ZT-˄ɓ70`׎$''1x>yLH9|wiݦ-zxczX#Inݩ`cdq]~6mXYysLQ$n2ehӮeK,k^i%]l]&til/Mo_*~sܿ'aatؑÇQbU]77\Ç;q=-^LjJz|QFFƬm9׬QI]==vK-st]NDeʺ*r;(]Km\f,2~'w(?̞Y~'%>!m;а~=ֳ͛j&{T#`mU/i&ŕs@&|;\O fmKLYnRp:obE; K_eiBEb2 \Lfvng5p3;Sq(J455y1<@P J+b1ܹ;ar444x< S[7rrs ca|5r(2O: u*P<6 /} ˹{*_ LenR) ;ȨJoeA^JnRIނ 2 ,HeMe4y739J$~E"999šT*155ҲSv6ldgg\d%.>_M@[[--MOš#'sԴw'ٻ0deem6 6Fw\pPY҆IWr&Zv6ieAuAU_,U7T*Db/" t ho (VLor;{,r͉eɒ%4lؐ#GҨQ#444 //mmmMr՝8//6@IĔVV+넵j YH Tu^JUAh79!X2  \L&x,$(ì} ݻSNPJ:wcǎEhii6bBQUQ*Aý \G)S"~-᧊M[ݤZ8R X2 -^!>Fԑa}ceyJ8A1 0/__ 66oڴ[.T^]I? 2eDjwECCCI@@@s]tIfL'|@─EvtGGG2I@@SZ%5SK+kBC"Jpp,T'Dp" ?ҫ|ѱvvvBe L5A]*C@@@@@@@_D>KA.*C@@@@@@@@>tt<۷yyB>!I@@@@@@GGGЦmʔ |"'>þ@˖ޘ " #L2 10D mW2VG4i\L*I@@ScC 量OKLLL [_D ؘj&i`VNB% 2e]lbn^l/ o,wᶩTs\.%L*g^nfg !G9R 156d!nP! O_)S"KLWݤZ4R"XgsT#Ԭȧ/257de4*%c&,Vr@6iP!`SZYSzfȊFb0R &R^"yYNB@}Μ'11CӨ+˖m#"EexycԨ9i!Kl[+o߶L8BH$".. _ߛ,^;Lv hm4B$qe-|"S56K-0 GInѤTHDy$,MȒ*"&DX":(A]]/SxQ浃C8;{: PYu1܅K.>DEP122d֌ITsr$8$Y@g4U{5f;p'3 ע_}PJ~se:L2s̈́ hkk:ODx8!""mm:8Уw۱U5_ӿcBCCtt>?:y#G}8yqqq)[V`ieճd̬ VVfX˗ ##}*U8ɓWٷ?RgPn/\]{2l؏X[3gcQ N_㴶.;gWT&MDL*gD"\,S13źL.edXQȨP63WLeXͥa.)hkM@||+Vo 0ն71۵nڲ7bVHjZqqdggDzyTaŚ XZv44^uZEt w=` ŗxҦTq\~?cӦU\f#j`U-S1Zb *`6FF ;3Y嫐:}jN,_+;vyN<Sc~YxQ(j{R)>aldÊW݋^'r\.}߷_Шy[&Mҫ{0m7%}Z4%ʔ-Kmsiii\賐>\aTT|CS//pSyNOZ`U- {K8|# ̼/夰%f]AvFѫ;EgyoЀ 1kVӿ#69?$(NWS ]Ʊ#e_\C5[ jɓ'9y*OFWYcCض(;we-k’%[Y`aaOرb6`( ڴiر}P(8q7 <++3fArv>ɪU{z=ϟw8qb%+[e˦ТŗX2y a3޽Я_{J%glvJ%̜9zjemD"ѡOgsqFIǎT %~m' %K&qr g?9}3|47|k pգ;)Q"rhrIL-Mڒhje赿VKrC}%E1u8zJνOH$Ocwfo5nAAn꒖Ί8t«L֭ZF5'nµ ~7Xj,-9}l/8q\vG=HfV'-/'NӪe38u悺=` E:0nmF&}Fļˋ+N۶nI}7֬߂[o|6l۸:k}Z0vT.^Z|7#ˣ_/^.n 2qKًdg[}==2IKKً4j}DD&1r:wlǮ=lNgYom7X,ʥMMMaMq zQqRɩ' 6%99YmtM^KR`C֭142Bcx1>ZcckK^^gϜ&,$}=ÔH~E4;۶x6"DoЀ^}ɑCHOOu}jݚ3NIRϞ9͡0-cJ*Ux< ,̌;wrAWZ4nxrR9‹(tiG'"閍?` 6TH9ھo&L,CܺyfD==|[[\j!3#m[ж]{llmi Yo^%**ݻzYiήoserrrX;n8zcc"1-S^ͨXi7npzNx5o^׮\!//&^^gq\xyl"x6F?{W/_'>.;Cڵp2*D"VVf>3F=zyY,u]N':wq2fLoURTД}ң$Z^X[g„5>}и:ȑ=e =w\PÇOpr\Xg2`w4hB߾2{zD͚UׯӦ}IllؼKL>;v?O}1ڵkJӦu{2=zLã&:5W{3G#ekJg2)iNyd#K,=+l'=+LXzvY9r2ȒʉOcaD#T1 =8z &N5QRi!"~7ҩ}4lB!k8;Ve!:)2F ̈/0E( W!Ix!Wɞ:k gM~S6Di٢XILL4jwS-,N3~(85XXEL 1j! O++ -\~[e˰|ќ7ZMvԎ{I8͚6OOŵ ;wiJy~q:6Yjާon4lSz5РJH$9;"˹x_AuczGSpUг}c'݌S0b̷_J'^^gd|;e&+l_z̤i?~vZd(q1+-t|߁#ޙm+NKlȁCpws{׎x7"֩EJ6s6?YAGG9s޷)t=X ڒsҕU L\ĩiՂҾ}+w*UX,,`b1j4z@IIIE C6mj( o3noЀ}{DPpe23:w牉.ŝ5idIXYWPr&&|5kUJ}\\s1rhu?/JIIN²5Kusl_Uny 9pR)WΌqM|Zƻwr1uڻwihPNFFr`^ЁTR׺n\}$''p\RSRֳ'Ƭ_ӄ%W.]b֭󨏦&;m#'p=@Jr=ڵoOMN?Ɓ} ,;wlƆuR%L:ccRՅsps@"sbcb eUXY[ӥ{wBCCXzu)))<~/:vbߠ˙ӧ帒v|\y oj=sشܿwyڶy3VVTQ yn޸cGqrv{^Ʋ}떒׮bbj7&Ь7g_HNNƣA"ǚ6kƣ Μ>#G:}z}e?j\-"y~[ r۷lam=|HJmصc6oid[ϽnjN?Mv ׯS޹];v}˖"<|p'өK444HKKUϦ /T׏s`^6o>??uǏS!+3Oӫo?7,>_$]ԋ(,7[ۛpn^o r/^pv/5f,;|ӧWۊuܼq++ON`wdHtryswã8r"͚c`H$[4lB``0::̟?s\ )%ݺ'6"##,ƏOZZftOPݾCC}s?O+yTŋ-E&#됗'@S@RR*ffE[,[P(i׮ Dz w`ǎx{קidy;v BQel|Dն6s߯r}e{6xc91ul444hē TϞGavFRd%WѢyfN@nn..XZb9ammIpF\Tp0'/ONZ-7R::`Ǯ}U$>!4.5)4/F< Ϗ*}l`cÄɪgWkkk,,T}ժ$$ģP( oESS5j"ʷ}>;wA[[SSSV%ѣ7Zppt"$$nnPѱ߼7::hjj"Dbo_+.ӓP튈jkOWW_{JdDzA9(E {X"+ĖS2>\\\=v56ͽ&&ܿ/_IVbg_P(H\jy%455=v,ܺQGNN]uaFԮäp'jMAu&˗,ۧ%;wAS'IOO/$R<4n\;xHxyܿ{˾ 'b8ý~Daar [[3mPLM {F^޻F''P ԭL֞lYcdff??qrLMP_Hz~>,>Blw-\~sj&'hP[ -fҾ. _ˤC#}b .fC9ggӐ*VD'%jsgdf̦x֖YT\2B #=&#vahhhyn <x;D%} ?vSjh:ybbbLRԡ-os0 η~g ؅yJx+r-u!R5 UY*--- QP59aldwP*q]enت(jƇvm^-,m*Z Q0-cJ\|NUYpbG~utJLLJjTTkĢJ^rNBR^7oȖd*ƒ봴F*p/bJ,'$1\c~p{z2--M Mm[{sulA_QXц ~Wjw%&%f\WWBpwwE!f ܣrWbhhH޽?zɊߖEns ˏ~cG#J^&[xIgf^^w*+3BjkT*IKK[ojոpu AÆN:IvVʫ۠mŊ#&4$5UT*vhڬY7Q;Y]M~2>_sdl۲/.vA_ 0ꪭG㰰D"Ũ)9Q5G-X/_}_o&&†Z,R`U b7o /-WN| ?15cz/cc -33206~5NDPE IB͞YYHRuhhhл_7ꪅ8WfqUE&mmmΜ:;6###֣{֭[ݕ3#99 Ɉ%-`ҔDDj 9ߕkW.#q\bCCvAUzUq bccejiio`X!餦P*<{sgμE._Ғ(322ܺyBAVffĪ8oQYr7>mmmu耿59J*UiݪH{115A'^ Hi.=}׬ [>z|\oL]Os.FUg!2caaƯ~MRS3hؕGѱMH4lBpp$9hjj8!OLL̔P]b'UuiǕ ɡ[s}vJc@S>3"))X18:ؿwYV[}93==]44IMK+ўOqvTMccKg%U !ի9aee^[-`ܭnmUO;^R%^ ټu;ԭRjaWY=pb&;V#ۋ_~|5yq~}z`jjš[ЕHء _Ib[WguV2eȕrrx:€ IDATL&#!1:.5Yb"=g)<'7Yn.&F$ׯZQMJw1P8q,t]wl2tBwTh'a+=~K sF kZܸXh2O /8jdl̯gҦc'OsQp(R"1ܳA]7<Ǝb 4f-ZǵG8,xr &&== ڵiب:LL߾[99'SV-tݧzƛ KKRSSHJJ"!> 66DÇӓ5k!XjIʕ g|ѩDϝ%E4_^>7yO'/OηƖnodHrrrDEz9`jdDVVǓA2o1'2YDx8FFj 7shHDVvZHOO+չUXq䐓#-70 ) civ6 DRl\_*xIJPolܸ`dlDnn. +WY\xw,4F?3-}hզ-Ϟ>ePh1lffX&]xgggbV- Y˅nnlXHwZujm&ʛ[ԽQ;`DHD~r2Ǐc.;{+ {xmoWK[G'g{{}T*Ŭ|yBvVgϜڵ"s'8NQ۵ZtfgaN&x;##c Q _obcbH$xu+UlDEEk)?`i; ̜'7Wfڷo3fƺu Y򼉳g8#zz*UGWΟ*K׮&&&T*O ڥҌ_~=""^ܹHr3wx{{ qr ÆuECC-0thg22T1 :s0Ɔ3hPGΟfFQbeyx:JEʸ$ū12ʗѢ}{̴v? "R]1c)mB{u1V\D"'1fP4j^U~|ՏGOұC\ký:X|5r(fQrN>WTfIL8'Ǫ;~Z-6WsVu?xċ1 ԗ12ˁDr}<zpxL.\B.3z`zʏ3жZp) ϣ^V-1lHfNj tÇLBM> &(8{HRDLK< Go cxZw,-5c2'Ɂ'ϢP(htu%ܻN0|yV=:}MMM-p˝{K}'Q"7"A_/Z^h/NߕI~f3미~B./6F?n>͐H$Tbޜ|՟7ﰘ̓ [Y6iEZjLfF2-4$HB]x-occCXXzܻy1FFYٱu qqq}qkHOGԛGkow͕vm|tŏ'Qϕ.ӦU"pU1gtdZ 6gRzBnFv:<+WSjTQSmiۖǎtB ܵx5kΙS'Yr455гNG=@G,:8v`gg;([`wU:*`Ab%5bby7oz1=41Ǝ`]AHRwX])&s_03̙S~y+r'>e3/oopvv~`?q3E-v;SQd ܾzBII1Ο'7'.aa,ZVuXZY17[xbHUl߶ LA3n=ӄv'رm=z1cqO"00?{AL:(N?MkdW'T aMJ]\8hP3HH~RlehվI6oX$fȰz1$g%,cGt+2))߷NxR]ݽa?w\F}ަ}@^x%6""B'-YrOb- K SoM^sn6mw>x$~!-7%O>x_߭L3z([4c/S[[>cQtQ"G`'deY$= 7%0N8\@Ιӧr9]b`/zj*+ozտǎQ[[czsUm@CmTZZ?la SS~uii:  \.㧟apZHR.]Ja“[rU(jluU&}: cJhШH MљEZEzE1 R)=_QĘCeƏpk{IIIf{EGkټt~%C+4LJLE๸: /?:ju 2 {LsB-f؊I@@@"K4n-؉Pk}%'47U579!L@",^*>*GY0 ?v8cƌE( ʳYҴ&h4A@3D& tpcS$7@&- *+%?i1 !tQ"' RzMleYm`$ BIȣ%2 H$bfNȐ D@@@@@@@@ E ЀS3lPl[ " D&& ΙA~} D@@@@@@@@ LL5s % 2 ñ47eƌI sss@I@@@@@9sfMo߾ " "L@6B!(Թ:  E˻P "+`Z-<kFkqK@@CkMD^=122 D@@@@@@@@OEdxvctL&_ 2 Ap`$P KI@/&ؔ&fɍ7}yu\PV]QƁ[$W7VM.Ό1jZX"E*kr),.e`nh5j;^N(kjF֧Ua(;6%n=zD"@N%~|vrK8v"'#[ 8SȞPJ$I@@@@@"?'ޥmۨ2!z,vĀFֶ ehF5!/,ȱ E=bei W/F$!jZ.έs~z!{>k~\wչSGLwr۰n=қ7歑^N1tK?乾t!kޡ0nyn" GrR6Jzz:2CAr # Tj(ÌY3sl,3LםFʶU+;<=k&_>yyާw}?|-d֒7>r;>-OnN{vG1mSyvF{1g.TN2l>Oii Q;؈^a \RXH˯Hܠk9O˛_~/iF_OO//=9֯յ&O֧Yf Iv@@d?vrX RoߞQ?w `ffΣVCRBn@~M>]@mC$ '}& "^gzvZӔȈb%EjjA UUJ.]N̘2Zͪu\KC Y:8FF ?{?| p!w5x@_~ٸ{Ũ0~4**LԁAjjZi~7.7?_乚{ߕLpP֮@/>3{粝a[; ^6{;{:;vfYYηkw q.?е>1f8#FݽqǷh멩,Sx:P^^k 0[XUe%|!6nYݠ/<ޱvqAfΞ+|Jdr9}gͩ'y|̘\nem̀ΛTJbb"!mIIIu6㹚[3o.F7q{"N*5?&&,RxfK,p2(JZ-ZDD"J000SSSJjj^h\tw=ƈD*4{{vɨc0h0FF\ 8y,@.?rOJٜy{>wVƒo؈X[uK|<9a"sϧ޾A~+$Wޘ5G!KVՋ>Zk))E'Aŋ2g|j~^GGGPTTľ1w D&b05EˆpcfxsrXBzf>R)PS[KVha#H8~:FZ2ү_88#ɚ<.Íhjjk߇8sfM%˗`U IDATp @USÅK\:w#NPQQE]ao/>{Xg^@II)7&1)'FIbR -`q||%Fw?e]uc+hڕϑe8=112Rؾg]SXT_G)O655ގIeՙ4 7gǎ"?ݺ܂98;q-:ظzǹ8ӷ_fݯݍSgҫoR?oIw0.y?_o^y<"*z~'QORPXĉCIΨqS?vsDBB2K^[DЎ7?-2N'ʂ^'Nw?8uϿ{;wFN! D&c##&O7UUlݱSus?Q N]]{bߧۘt'0ݍa[3ӢĘgOハΚ7UKa !lZX'/|yR){vGg;УgǯX˸'ک23gFP4HcdlLhN>[YQ͛7ww&N̑C"ӥ8>r$W!"͛]g}))=s&~8~!Æ{e7ޝqǣh9m*>TUUOHh(ڵg_V*0ǎ/:]矱_e3ݛ\Bk|kyuK :1ƱqN;Fm]-ݻI7Fêɓ8::2cF- ؽs'XY[1``),,$*2s sbieE^zˣDF3>4"Rh$&$pY:4؟@Tlߺf^رm^t֍7e&xIOyE}gرܱ_njaȰ,~y*++yOԟ:;HAiP'&OJ0GTe]-z^8w cUUY rrusdoo 555r JVK̞hLt"  wq/ݪ7= XLm!0ʊ "֮a𐡸>zѣ$$,۴mK>}5%Ç"055cСzA^Ԑ}{O +3=(-)ƚG`cc w} ]u̩%:u/+9t 5*^>>TJfF{vSUY+ n$HhegOFzF3g8s$Jm6b$9Y$&$2f8@gt`>?5A*8#r\;%%|/^8OͲs 71Sj(TT'~ fO4/S[HfD JJ\K…$239q2eU%y9?rMcݚo޽bLLL6ܜna҂%:+xus\gx|&ѭ+Gɼ93߇SSSә3s4 n\K7ĘQq w*n}# "))¢bƎA>wȨhzk/P_06s;qGf֙#N6hϲOޣ/kk+C]9+\Jx W6ӳG ŝ~g'>.^b1u[BN>^bڶF.ZXv b?p5:o2{Vy7nsw 0/tbĸQKXOLzr,vwmyշa:&<1冼mRS7mhڥʴ&e6lLvhGLn g>I0g<=O1\MI LԔwNAٹg QZullly ?y8ݺ?Jz9⅋ 4 Epy@gRona_K׮l+cGPQ^a1ܿܜFщ2*ujJpt3>z0_,LTVTIիΚ-??nnWyR{V cH}'.(Y2pⴷΣ9?{2HKK#))˗/ajjJyy9FPPdffORRiiideeQQ^ΙSyޥCUe%WSRb2Qt u6޵)xyyÇYv- K9"JEEy9k0pq*/=kWbڵ̚4GHDj5j5:q?==MǮD팤cX^];U\\LvV "3#O?FS~5 6Jyn":y㯨պp YY88:pwȡC H~b먫˗S[SC}ٿo}ߙҩ3r[CpptdwTѻ(**bM ,Ǐ҂-"O_FipLaa!%%%tڵ\|^*&z;vcj`Yscy8 ̝GQTlm#nmXOEGgyYsÃ7yd\̴O1srs@m Lii$3mS̘9yRعc;fȡC͛)oeKmm-[7ouXw+׮n~Y_;ӧNY'"okEEE]? vkԮt҅-ŅG4z\vVsYaZ={xfΞC;{eu5+g̜;y ~$&&'ط1O^ޞӧNNzZn8iѣgO|)+IJr2iixܚ e9{ " џHd֨&%=JΣ:Ǧ-Xo|YWo&2r۷F'ΒMPȍШՈŹw5|9sk+r9#B$ֻ;q|/'wY7ٴen]8z~+Z˧u8zcA=r7K?>Y85hccBxnbaL8s3S~՝-;̬l}Cr7:s_}k=10oܷ{|rH7pvrƚ.ػ +.^?.8tV69wFC_}<&. F ];r V!H5_zn R{Sҿo8".KUUiA m;##3gAБh4SQYU nMvڿ: y߯Llغys1V#Lڴj 033gXYՏVTTD"׵2sTfNʋ=!x v/]K׮H$:u'z9 {{{R)(UJ4 IItv8ZKt KKK<<=IrIIIw}ҷR)D"T55xxxr5ES)%%wbX,{*,,d5׋3QVvi׾#쮔č};*,ҲQkkkjjjB =|\NbB}fgeaie.;ONjUe% #E]vvd2$ ;p5]⤖7!0"#=o_}|6_?_ӛL[m_@~bƍOnݐJ﨔z2''Nd)HRZ-*}{c0v:p@/t%&\aҔL6Ck&.vI.]xr$ Ȏm[~0 3|F B,B!+WokkkKzz}Dfh E lRou&?ro]E899d]\o}cc}}%!?8{"Zpow?[ ԟ! 8|%o/,/(ۓe/E&7d14QzWQq1r jI]I!Du}J-{ʻĂ^F"ҁe˖ajn.{gwCBm9Q*kG>}tq}{cnm-ƚҒFGX^\pJ^ZԔ'|ױ|rmgqgkUo :CCz?~hZٵ3ހNϏ1$ĄDw.--%znm\[eu5I h4V9s=ToghW]S-Wk Σ9=cchh`ggGuu5 EPP]]FHDnn.mڴATR]]{m`dlmoRWJiiN%w ))z];6b$ff( 111ϟ=QHLL__?Ү_͛xxzD"jjjx;砳|]O޶+X[fffNyy92 K jc,leM =ٶeKo _}MacWSwqmݚtp.$4rV N]6X\ƖzenSRRL. "^~SU()z?|CTUVՋ)PQUym?~j_??Qr`>*+GyoWT"];3w*k GKmӮ}{D"7nPQ^o6[tڶuӿ]iZ-z^WWUU=] l[һOFZjaM7ʍ\;lmiRWP`cۊL 033DX,WbKFF $RI>\׭Av~}|}P?Yf1.6Hqvkӆ\t[N^K VIvkx?Lcۋ~]ԙsL0KK a !H8y,E%ɗ+[V[VVA|=fŧedS/HsUM 55X --,"wYl&Q{2iX ׬2ܔ1h%&GF,s zG+C` aݻSTTĶ-IINO!۴SR^7_ϗ5.XܑڴiKA~>99\/]bǶéǙ2m:}g\MIy&&z716z&_TadJUCmm~S'OҾ}{<9aނI{n,‚|]\L۷m%[7 _R?oӶ-IIdfd0|d㱉Knv3gi ^jZ\giBCCbb"nnn իdL<< i׮;w &Nȅ "88m۶ ,mkJ hQzKK+rsQzZ>>_KKKb1kVJ6m(//#jg$謜ڴm͛`С 3l[믭N]c(,,Foa,MLYvwjz[5cRGl<=v,'O zB⵸ҥX2DIk2Ee%}gdۯUoEJ[[[8}tˮ}Ү}:w5{166 Ew&Oih~&TUY^)_?XVv8uM{Ǐ ((^,F|*BB;QWWGfF}BAUU5;ʻDɯ)̙\23INNѣ̘9 TLiv9&EnqyvGb֜yMnq@%%q4 99c_`h`o}21 i̘9 BA8'[6[ЩKW}ٙ r+Vβe7f1̞=>{YyΟ?_ϿG`y KR"5[ @tjhhA$![>ZX< ܛ3s](w6L4#N=r7# "8=;uW<&? Vݼ\/ dh}竛OhV^:sxLFV3ot|b4o/y6^dfer™5c2K^]tgnlB!ىgS:WՓ!34řWIHLý-JKWͽAƍYhc1dAŋŮ{h4,zn K9lBxK]ბH$899йSG.]jܝAƃ!\/g;0~^礩2CC:tR\\͢f}DU̙;FÚ~jz$cv*162B,S[[ฉᗟ9}*|VXA&gLLMP*-1l׮QWWǵWYv X;%'Mjjj7LC"Gj$&\ıdxr~jkk)--%bj r IDATJKmY!!*27*D$&$PRZqmݺYʊ .;G&W8=9D*}dv+Ns;`ddٳg)**bѢEֲl2VXo[g̙3A׮]y9r$seժUeJ%{ںpqm_}F[-JЮqqq2qΜ:Km+;v!*g}V~z J̤۴R?];XjU~Dnk Nj VK\EZRa|KInh>6aÇ׋a!(vlJHvn@mmm-k~ S33&MJ^n.Q;#L^9B]]~֨!SOgͪ8qjt{POg*ɸ%&fgefF4O._GRVmbАl[A̝ s?s_ ÃDͱ!<=zw)tpt:u.4'v:9ٴnFo!WYY ee\\]@+eD"NNNkyyy W((+JBY]MeEŭv䁮yݚ5$%&"12RPLJKqf=NRb"9ٺ0GMdou\]D.c`hJ }}#{)8y唕$EEB-(.ɕ+n Z|7n5" sAYΣc\')1!R#D"NۯJYCFMm''{a߁|*3{VڽW%"R)_}76dK^[x6nnؙۼ5)@T+!+;?3'f!hG̾|w:1n:*wh'L^Xf§IJ{|֢VWûoƌٴuR_p6oOX7~m+.^:Rcv+ qAdɫxE鲯e} Wՙ}yert cXMD 2 >yfs[^|@WlZʨ+Q-t}['&&crs߻.0q2'C`]¸|9r tm\h "3#oVD*_¶^ۛg.dƍݷ(r:]ٵ#w6Co^IqQA?v. wd6\yE0fΞ_^όYٿw/AX-$472rڹ?5z ^ὉٳXD"KXS5"ߟ[`(MPp0Q;#:}܉O_~~>uF3/oopvv~`?q3E-v;Sϣٝlr:ĸq8{,NNNH$:u[[[Ο?Ohh(gϞ%442\\\&99 @VӥK:w~_E+r'aݻ j\vlF~~>'L wؾu+5:ާ;wls2z틹yCQ}@^x%6""B'-YrO!SP٬ I@R1 &z( 3]r=<Ǫн^ލZyzyK;Z88:O?|H$ 7161ѻ0hP~W@gAx~Y*ʐJ^oM#VVܮ ph[ 1;chs޵U?Fחݺ=R:Xn yTU)ILcaa{}寰qc47nx4.^L",, ^f„L4ssRSXKrBjٯOpcS;<fr;9Ӷu[$bYR K1PcdbDbH Ze%ʚJj밷OOOIlnEЎڳ,>\>t桗E }[[[|}}:u*\zGvv6͛>>בH$8 4Z W._Lo$߷ww;vdۖ-ūo,W( )a> ؒi֬_f]^/߃#G3ek88쳓8e22xiL4wVxSTsŃOj$#;;c#NNn3fL@U:**UBJV)8~$Ύl޺ʪj}f0c=j?~XLFf^~mjjHHJaY)jkkͪuhLJ%ȈC HBV{"N* m\ʔ٬t+SrCYEf L b̘1aaaVgϞD"}\b*Dcbb!/uuuX[[hh۶-d8j33svI̞D^X,ΎA ]8:9!Y|0nxA`jQ)\Ԣb"-dZlHllR~b{y/K^h10bjjLqMMxqXZ+ owdY -3UeBuZ?11(g7D"UU*j]:Z$qR) 4-oRjZ^8q{.GRӯH(abbLUUu4 4c+M@>1+x{IIIf[VKW1Bʔ๸:=r\ZZJJr2nI,}Eq m "*(bAc{1ĘS|S$oc=vc;bǮ(M)Rv?VW@[D}];u99ϼ7l Pdget"\iʗ'Stt,zq%xЌE!+II)TYJhLrr ٹ$'Up+sr/YUh*D͔{10=jGxː_愹/"}AO :wnNӦ-tBt$+wo3Ν旤 0 j81z05oVA|-8VFZj4:j_zUgx6$ [L~832XۦFAppHyoߎJJԩFDD4~~RkjjDFF6YYЫW[<=2`d6 O2>L/W&A^Æ_#\y&89S!\OERӮ5ì~^$ srs%]@ΝL&w嗏e9rKsg طo1wcÆ}L:V|9|8XI:!Ipf萁5CGGG |-D IA^r'7ߛ[7w-7or(AAAxN5- 7[.2L   dA)ק_>"$  /2 2p`?j׮T*"  /2 oZһwO<==H$@AAA&A^:E!5jՑH$DFDBWŵ(7@D-Q ׈ o!v9Ax݅ݻ( CAA^#ѓIAx+ӕݺ   KDIAJ^=PM   DIAKݰ!  odA* Lة666@AA "L OGGܹ*W"  o d1F&`$ tdeBY:: 3;`a!)Ʃ"Q)f5M  ²:7PQ[V0]wꡫ'V67(us9ue8;ؐ1ҶmER̈eeF:Yu쀣(4AA(dBo~ИYU!)r/ܽv^EfԠF쩥xT8݄Ԙ#. S3SQ taz洫KK7 Nlr₹tݫIV#HD dBovCWu5`z5*W]><_RJI/E_EݕyXZWCzrH+ޑ۰,~5kgG>h"s7pI>>ةȴ}{py&Lɋ=$-,,}jUh6Ê[^y)w @Ol]p5ֳGC$룹$O[rJ2rQ|h*~#UHLLb\xձ]oʎa`)E{U"o|Gn?VINk qq]?\‚ˉOH,u[eM͌O͚u#6.+W2z0ZhK֌Le 3.e&4ia9\76j\^*VTsf𑣨MFF֬fK0|_~_~fƍ^-_i'%%1)dgw2W;wXh!zznΝ=+gNgoݵҒv;ƛ\NXX4~^sԺCfۖʹm'ggΞ9-7a"\xW.W ʨ=e0yĝceԞR!%D"!59KGMApY;6ַrGhԲr+g< 99 DRuk뒛ü9sѡS.<~_gj /ӻX] ʂgA0?_|7a/E-ײU+LxȤ2nDFjnFF"H_6._DrbcO 77*UU d<@zEI0g`*M}} 3: lʀadB A% RMK*rmDAxq{8Z^NO|\jvFE^~>?<Áз'c #!1kBݳ+؈cG\=c'NMǴϾ&2IUG2`{T*\ dI ؗYs2_oyJ._kkSUSá凟g˩{w0ԩ]/Ukkѭ&Ƽ7Tw Kg܋|A:ǡZUbbPTԩ#9q 4kLJb_ՎQ׹\RdjvX2nNmOkry>kJ%+[W_of:g3ݕ/>YYgcǓЯ{ 1)SGu6=|1#Mf|> ꑞٶsm 3X47N9LVV6u}9u,-֦2E-O7M ܜhiּ9^m&~Mri2 Q~"ڨOͱr-5Q77'73hoX[iݻנcǍɓ\ Jn  ̄}ܸIݻ{x0~dܾ|ӿri>1>ukO2\ξ{O֫O-ߺkۯ? |}e1AO_24fefuf[m/ 2cGjLW\J*tޝV SZZ*kVdp#2sgZ]1IIId: >))U]]} SSڵǾZ5 8x`?۰!^jNN 2 LKKeϮߋC*R^}6o΢ӣw*W hz4jg"W7 DRVYrNZj4`z2tMFVas*U!2+ 69y P<$)<Ǒ}sYt4;aee͒E  êibuMI\RR{v̔[QQ[XТ?իz2-ٵc;֯gtҕiM!++~Y,zN;@Vmj=O^wWXhԸ]dkpEٹ}ϝ/g;:Uû+A>شeKF\tRYvP#Ux'ٙf-ZzG"-`zRxX;nuLqfKHHF͚ΝACRXXH\l,ǏTL&cԘӯ;vC4*^2Q2ۡ^=Ƀ df瓕Ozfyd䑖GV濴<25Ҳ'#+L%R3a`zuygGoCtuپu =zvejy{[יSذ~=Nt҅+/jrm;;+s璟G6m8|`e,Zӿ?.߷W.Ijj )))ڡ&ѷ7{I3RIP*>g6Y둣Giېjض@4m\{].Jbbcb)ıGU=o=2-i߱Uw|z'O`fnƇSߺ +6ORR)))4,! ߟ׮iؿ;v0/061yG''ƎqJ 1U6}g6lWڌ7a#Fjcƾ#86RuXR3`  Z`G#(NJ56WU9?3`Ms\\<37H[4A*}|2/&,c%i;4\<~ 7pߚ6nSžgV-Q(,X56a߁Ø<{׹Uʒƍ|9x8YY3i\tt j%k+ΞJ;܌\]pwJu k؀c'NP D&ѣqW?ߟ~#<mH$de3q(/ǕIIMAF%ӼEKd2+Wˋ0:>>HRUC__ejRiw섩)\[B^^ݻHci[fС yZ tV,GP0xذRc``@nN2u4,,KNNF&aP?|-ca|(: hףĄDJR$U!mؐӧNUxY 666rUjjӴYsd2^hߞB\ůqc 89;z\\6T]]iպ m!G"əDFF!+yJ%K4r=UPh -heudBT6V]24JqDJes9n *˰2ZM󷃭ZN +KBeنMtzaۿ?m۵{^ III˩'H$ 5.ݺ3``llkۗ/_&==.ݺӥ[w:w)mA|'joSSR<y[joϝ۷ !!wO.]DfF[Sڴ!99+/kۨaĉH$N<nsmٸ%nJ)u Hpuw'<{Vd2AvV֯=mz5U߀ԔTpsw/2[DILܼ呞..r<(}==BQnn* ݇"Fd$>u59 MLH͛lz,̳+37 1!<6mڽG^ ~ZАPjU""±RH$|6FdS.܈6#qqqN744b¤IX[[L&C!*U;c[)9o/e($ kduQa]g7\VNR.T Fne*#8rwapxCM7(=9ꖨ>CGFޕ8 cSg?E&#C/aNlQ*ܾ0F&O.wOӠUTdfd!}vF5Tʪ?~װO Fhkn̬-bi=_6=ѲnΘa]:r:o-͌iD޼ŤSPPFFF$&%+kQ{y?y'pT*VS1Ehz*ER÷_bhd]&&p Zw-ktlm4k:uS]>A |\nèfoVw|>tz IflbbJF.*U]RcZ׬So@Hćy4^H$V֚ˣ1M6c=ԫ_ě'=ꦿkvrssUV`aaAAAYYMNE3o,<V^VX:y8[ŋdgeTM<7`Kfff`\ToiǤعV]]]4O/j5޵ydsȡCԫ_07.;!55u%5W-nCÆ΂zgE܄>z\y?}$X]ժLb=ΞUϙi{??zYeZÓjܹ}~dffj2mWEV֤,%%]==meT'N֭(-X %b>r萶6gHR ;M|Yf}9VYCvrm2IMmZo.{y싹KF_On]: 8|M0Xזy{>,+Zny܈-_~I]  Lm<##c#RKOjV6:4 طwNx|'Yll11Ew呞Ʊ]ϝ=K|||JSM̶-C;ի|L$̙,^0_g)9`mcOzܽܿk"CB^eǶn͙S':|[koD&ǍH_P;LQ>io+70@#??_F3OSvm 0pOMMA&}͙-ii?QXXHVV&z^>'%%h®[M2rߚz,_I=WJ+s6R=wѴyR|gfeѺm:t۰"kkkLLL>s ][vk{cdlLԫ_KT[zWȈ,m٬LknӖ<6#Gyy۾SPP ػg7cƾ_lޒ~KFaxRSR042M[T*ŕZ߹zE^hF>!Wp0uGggl\{޾u êUr UruHQ{$I'QP 'xdB.YLۂ <20~+\vR?Jw{P%d#_|q/>aQ4o\qYas)K.[6 }qa'MxÇ `qw2mǾ_} ~<7Wgvޯm{kz<GCTr7&Cި:ӤqC Б ?vұ]RRnL,7i֟1#0㳩a_Վ>=(ІGѡ}U]#4,'ruݻOȵPFL:q/c#~0ظa=j!Ju(J8t۶r|cJ@ ILLzHvzY YyUj2'%)ۡRJW3gرm+V,sڵdge1vxT*W(uؾ̌ J\O4d(3gP*$$$p|؈>&&t֍gu&ܼqukVо=9\|:O䝒H$xשCӯڛPyyydgey\e=&%d8:9qqj5a9u8:x0v*RSSK=W]سs'55s111E"JJj6YATsp(‚DݼʗM^QY> d-yR܉\h.-;T@% 9;Q)ΘKy81)F:\ʣcGSnKc,quУP׿zkC@|6DVb2vΚU+WzP(رm+{vdi9(J߿OlߪysÓw126ʊ5j Z޵c 9}Yʇ'pvgNbۖ,?JEfP*n:::T\wcVm@MJ+g0x0cϮ.sAN;FAAPUXl+8u99dgN<Ȑ#J\A {rrrM{)3#[QQEXZYታ _k!W9ܿi(Jrsr|Xz\0R)pqs#RSS}HxXqr<(Rƍpu-8''=]=::(J.]HaJ{ .,(O*o`' ==/i{ \~PF*A*Q ȐHH$rjH">O̫x8!Cá#A,Z7ڴjk=_N\.g,c*Oyko޺PxWĖa{Qlޥ#o?kj=A] \.ǎd1L?wWk{qs]>6===>>IL2XrRZӿ"F# ҕm!/ZFٕ4 ?M4֥哝Cԭ\ /< j~""ngSiӪY[rGi!CQ*! g ئmyyy̟;M7ж]g)MO!ֺfo^W;yR*H0i2Uٵs'N.05N8w5nLf͸rDu||,^ `+l4\]8y2{wb7XY[1vܸRre] !7'ϝtſuk,ZưdhJ?wjՊ=[3Oior~3[+jaE 9ӭGao| }jLs>\<-y̥[K>N ;OJ}#{"vVrj>FtjN"J3=K=`a*M iȀ 122*hݛpoFzӘ1n$T*wQ&tҳwog6={[+TszYL4#89BRYϜ kqgfr?7^-G 2. \1W 25gCUA&r3V.i⭏nSY3 G;w8| NԭWm[wn>rn.ThA?w>̊@dHVr|o;]ӛzsJܹOJLe^L? "??yʢ}@ 酧grHTd q\NM+TFAx˗.aW;`tӬ:RYq˴ȭMӬzLmΙc;Q%$d)(PfxK,+k+;+f\- $}:r >R"rH2e6\Ϫ!HY|K/Ȉ`(SAxj\ Է-DO&m M࡫:ʙ8529R \FNΫN.NT#駾$rM׾"122$;;繓SV.$';=}w oAn݋$kẄ DmfiaVirRwvzݰy TTYY,]WwwwVWd*oR 4fV-s5SżK6ӫXrCAѰ9z洫KK7 4yqb9ƾ`jՖw  ^8$H033&?lQ2G'V6:w.'_ߪLBѿOWv낣( A73bYkѥiV5;U=AU*wR% ٽ=zuΝA>LKK3vQ\ʔ)?g8pShO.-={8*FCcL3FI_lgK¿BAx'q*1멷HT`kY D%AA(r'2_k33Kp 9ޮ gg/B;?Q<Ɔxy9k q7Ƒ Htw^ۋk&I =LHHH/t&ԩMiܸ 혃->++s-ٽ{[7ԘwNmۈm3?Y>g6l2_v횏kuV-ꋳAw!}ٶeS>PAAAx.2gR)͚ؐNEAAm3'11ŬY6mii|<]g޾23fϥmHMOGjѧO[&NOtf`aaO_g cGaֿ7}lllD  =\.&>|"YXjNJJWkq{hEn-|&Ɋ͗AZqi8]l_:õk7?={.Ծu bc :رʹhQ'.T拳Aw.N@@[,,,D  R_t'fM;S),|v2-[T4ի ##իa"XZi`bb@BT SSę [OGGcұSGE  R=wIWWH;";:Vzu;.] i;iii/P'gOEINNzǯ555F* }X^^>!nݐu9LeblȘC h(AAA^ 2d2ML&e޼HNNյ:&G"ۏ2e7naɒHJJA"uX'72aB FRΠL8篓#AxxTP(thה>p?)`Ax%\\kBxD  sT*I2gΧܽ[[kj5+Wn'<<9k ێ,fZC\\"٘0sL+R~#LL x1[u?~zCΈR^KףE!TbahC#CQ fCA^ e]unNs-E6PEDD4vqfu9t:tOZZ8*b?9\t5"a!hCC\AAz!T/-ѣGk\&A*<{[3͚' DAA]ғ'yz|zzTl8` O BcXP_ߠdKR<ו#HɤoUȢfV#}χAjJe>R cb!$gΞPhz c@ԭWL& D%ʨ=\K.u>O GcڎJǂIRRGRRrgϒFVͥRJP( '4k\.=A7x$.CcfVE7`} ܋y^MjBwXUFRFWGOm'drN\" 捽qw•||l/@Wy <ڵk A,89BPYϜvU|i`醝Plv"g̵h>^ݫIV#J!.&RSSQ(jN8A~~>;wQFceeΝ;ȠYf꒛KFFFFFZF") qd_ »ZoCWve 0="EB AY$?VJ")>B^~>7b y@jZ:JH$Y$?w]vȠңk'֮Xȉggӧ2plmm@ݽXXy J% %))zĂyXr+۟Q7ws8iy6w,q޹~c042 AA3MXf+˖,k/m'|6,Wp,Zȟkp`>B`ʤ:o͛ٳ{{zυYLXX(666'aרQ͌XUu푸:`0c0ԁU ?8'\+&ڞD"A" Efff顧'ra]4jccc*W`UnxZ),4~RīV[c8?\. J)^8u/ok"Rŝ$ q"s8M`v߯W^eggfgg3S07?: Ν=G˖Mٲi#{ŋ{x׬\CiڬyEXj%v& ڡ[е{R߷/>ApH0nnݏ=ʟk\pʜ;wOt܅9?Tnr.S&N@Zs.N;(կɓ zKB6x^ߡGgN8ߗzJN;FzZAB}k4KnߺE_A{`iiTm<~{y8gw׮n(u^=ٹ}gN"//??$ J%[6of0bo/=DD1xTJ`*Bw]$(,,ة3:̙ӧ0hпmwrvkx33#**F ~b1یF#[7osnrlĤ)Sj\ ˴zNn Ӥ~L_f_y )9ܜ{K^^yyy\.OOOlllN`2 O4,%?mBk&(8N;Ʒ_4Bӝ;INNnDG3BnnN i\po?sjj*"QW.Fa@d2Soiة3W˯yjyTyzټq#O`رɖMgWWj=<=f 1ٮC64Ie܌)Mj4Td˗.~ VcjU}{̀A8{ a;w1dPQd/1*m+l`4"Ià7R)$#3 UK5 (sPrjUthJj 1W(Czgs c՚ }y Z-|7L? ]dЀ>;[[&Oc,|q) hݪ ɼųhբ)6l6]NTt | @Hp Q14F ̬  4/]ɖmpgo^՗wPpn;%܅ped|՟֖~'9yN>KP?}{wގ,V!1)Z#[7ӢH$._ gڵ] F$ 017ؼq#%5%on{pf ԨYӦcnnNff&K-"6:wa4lܘ &{+/#>. K5o#X|9~ǁX{T^eױAjF(kWKLjaҒmP34#;i޲ΜF*ѤiR^Sn-7ʵXVp.eWTlٴa#G:VQ>ykWݷQ>8sBj䃏?旟rix7(9+a:&fffFtd$ 6u۶oͪ ~y4@P0fxk*e4GtlٴϾ0ϰ#8v 2]r///Ǫ˟Ȕe˘܌sO2e>,c\8TRSS»]uJŮ;=]vN}{Ɔ&MRvrD##KLQ%99لEdR) 6U6,?^4`^lZ 0(sutt"8mXn]>`h4b/Q\ˎBӕ[\ˎlF#7 `4D&amm^^^XZZP(E\.^R %%%έ[7w~i׎l6o܈\n5l(u҂K.Dӱr2Ξ9C͚5Q* HMˬ瑟%~:FO]9"S(={fh-͙;>jT}Ԋes#:z~ũ'زi#8:: ,})O?*UIoYr|KxF˖ƙӧb̸xW۷ؼq#Ar-VXNbB^^zu ~FvΡϧF;hm1Mx}{̞7~XZZҲu^zRǏѨiѲ%@sj5-Z.oZH, 4kΠˬG3>JEF9v5Z䍊dШմjӖm[63vki׎ ϳ~KOŅ~мnX@mضe3}gK/vN+e{Q9|JoU聥7n͍W. KnqlgF'G*ۛFX>3yyؾD,Щf]|7d┩|߷n{z=ގqMxd)77B"Цm[Bj|"xbB{v3ŅӠaC*#_j4ЩsHg(ҭ{2m'LqqTV $]h tϝܙӨTj]ݷIDEF1h` w^;mՠQCߟ,Z-QL>LFM9y8yy<2>DD!]l<$ FQXZZ`eR88bggiǹboQt8lєaptt`GPn->| ܉s ׫|Zl豓d1|l LzU& ` 0[K(yP\}H`p_DGp/#sǿ];w ##a{Ю5Vr12]{ąݳ+[6dffav0cXYY`0Y ,]11f_qvqy=s˗0ta  ؿ\ߠ߀ ###C8Ȥջt*L*:޶}{GJJJc>@ZmKk:pgP~RSq̄I=v,gϜ!33Ԭ͘A`ꥭ-_~MF@zz:Ο~G_{RKjשiӅϧOe ERI\l ێ?3~{0e /^L.L-5o0 8v|&NJ8| w&//z ={vݺ޵7,҈sݺĜ~BQT2\tԉ(~FP0bhlmm: IDATuݻGRb" BAN8zPvssՕWJ-fۏ%_zQa̸DGFWAǟ;t9v F/ BJJ WO<o6;vb2Hʴڶkϵ%Ȩ@k&?m۩Z&MfС;zTx7cn`ejyIfxLWx=K/akHKMU*6[GnݙٳcrFDEE%FER#v[ N/|T*mTb'$tj&hdæmD\/L53%7ͭ;w7th׆c'Nmnn6M4dɂx4''0 wi߶%RT(cog%J\ݍkk"bRM4tXZZ-,DVNdWX'+:ޭGO.U4jܤ[q>xy+\8/E.3|Ԩ 󱲲BRN~Ri222dQ_?ajQ]>r{ci4 W2jSIooo<<< ޽t QѼ[d2BkF"q qtt$ 0ˍUBtt4 5ƍhK:vBnnL&C"HGi޲%117/w]F{.=z|٦AaGDjŠ{<e[[[h4QPP(dEݨW{vBVߟ`0.]&ҁ1c0x᜖[ӨIczn>femM}>\T*ё7yGG'077`0[{&ұ~\\\H'77Gk&J~^>{b7/]"?/RaCtzW˜>u DLdfdP5(ttt 99t܅v;>1!e{:q^#U VX!}Mb;rCO |%{vqM233ձhסffffЏt:*{Eaa!V:pȈQQ3 KKV.[V=oX'$$$Q00t: vFaO.ƌ5gN|liEzZ:A-Ũ ]Z^ѨܸU||hҴ)EѠ( >,xDG|:pkkL5j LFR5nnn$Szun޸WV0͹3w֖DID?C"-Ҹi}=<07)kTFr3 53~T囌Ĝ\ADx_DPdJk yJŌUkؑHR^+yƼg%76ܻ&]tR_׸v?}ѹ!88 Iz%4Liٮ;޽{JUP<3ddy#ԮSu[..8E.FtR`ʸ R\,5ժW[+ aZMRb"%^}D״ԴRժW'>.<cO?RX?E.vv5CS)kpXtU8{LP+CY0` )>ϭZf06jR^}vn߆Z&vm:tT" 0wɓ 1G>)%%g}²\`Rpqڴkǥp J}-,֖_y剷J~yP=<5{&{ZTbn./a h$77];wAQ&aFDEFѼEBWvv6{FUPЦVJzz:j7UVV 5\~7U=w.E5&1hPtNQh4b0?wb0{[bmmMPP* N'\І=LOT*Rh U[8VZ5AjZ$_2RTYaUVݼxǎ\@an^v̸Wf( <"ᆲy)rٲIZZ*899 CE!Ccj6m biP;FiQN tST)^_ s܌.^"OE}EQ@l mG㥗_&l.n _^}&NLffZ?QSPC {E"+ 6x\.gߞ&o٨qcX7,--iҬ9 6,%qG>jjL: ֱdB>d#=d2Y2Ұwl{> ug\\б>ҕe/喈VTܾMj]-,,SdՍĄr9vv%/DS rsI[nbai\^aLMиIS#iҬ9’AB,--yE&@"h+je"OH:ukؽ(Xaff&,o<{BPA=嫣^ƍΌ/pmjd=5B!Ah 6 4Bk6m܀ra7ٴOVC* 8Fױw0Ir-*W\{]vh8v(zB o%LWWRM=>.333ӓOyG"\.G.yy>Ѐ,[6%xE4mޜ=JhieرHRΟ;GJJJ)8yyԭWZ͛]"9UU3%00{Nق4$1!߿jժ7W}wșS'9Uw( M͘R&ka^QL'My;XZYjԩS++K^:LYȤoINN6KOO i-hْZ HX8`rV:Q$ӧ_Dqq\A=/OR$2YXXd{_H }_^{=zRD h|I_ط b^0SfbgGrRp/ yF JfϛN:V}`UܿAӫO_~[+ǎ)*UxD;u-*q4lHWTܻweNN+KL| !!z| bnĐ/;tYYY%bFt:..|4cyy:y[k'&M.9::[N{gzb UPQpmlppt,KQv_#33'''aI3AIIìH8W:v"..}{vs9Ο;61>>5\V2=άmlJj ;j=m,ޡqR8A{TұsvA|\֭#((DU+z]GX߬EK$  O>f+kkz} / UAAKR /akkZ^ONv]'dyhuXFh407gѯ+싹yY9J4a }PTdddb4d'ӏeꤱih;Uc!;qm;vӷwwԫC& 9sBS&eWxs$z=xT泏w]{f ADDК=|[=| bffF`p0W/_Nݲ6nL&c˦M߷s |ܙ3lߺEYPUh4RSS9|Ȑ V%55~~T^D 8;;9y8kVdڤI:uRƽ{%YXhT*ekh4po QpH0GFדBC2:T0gQ2tʴY &c0Xm TZfa#F?8{ 4̟Oz+%)ä2ѻo_Ξ[tܺy5+WХ[7T\|z YDBz8nʽ{{ PXXHRI#?3) L@'h4yS'cP\DՒͪήc~ jUAvvH$"#>oժe:99y=۷n K TBWbAz-:(JOH$2S2|fϞ͇~̜9#Fxbd2NNNH$ #{3U^777;}{Yh!{vaeU7޽{Z_.@𒝝R,YdW0@~:۷na,e>2z=R(,(P*zEx7nݼ[8wl9U _|)-dyXXZ2di/ZȎm[9| u`aa8s4~7N%-5&Mb4}oܾ˗rW] />W͘d%xW!55r]Я͛cU' ۹eK###Z Bɯ CxxxO&!lvn&OLLcܹdܻ'vv4i+Ws۷nؾMIDTd$ 9LpHpމDZ ;}~+8v N'!zdR.]oBՒί j匟06A\ѮEB͍,sv_bQQ&O1+KtnEZb=OtTIIz=Ç++887nEppIcJ9K M|)r'Nҹ8tQ3$NڱkǦ_΢%1 mڴlα`xHLzs߁#x{{үw8?ܿSSә0n[6a4n9ښio;7o˕SFaoSbi dLNvA@`0gAdffraāAr,,,\܃C)_Ƿj5/2dK{Gq& 1F#gúulXsgϔNPXXsظ~v}eq i#*桷( ifU'q ֫O-hٺ5"rԩrϩW>fff,ZE ~ `N];>e2_ \\]0iRLгwwȯ 0:u1ͮ^8_Rk4SB2olƍ%wY/rܿ$\̕˗)}&ѽGҘ;z!hsY|Z,s @qBBj_fN]mf-oЀ;LJe!刏ߟ#1租8{ ~"3$5LJ[tNQ4c4baaŋy7y;w "IR9s&={dXXX`kkBL&㍷J'Y6i{a4x0M6رTlP5dP,--ٹm;uҒ˗/q ֭cT?}TNpttdڵ4lԈ r5_N;_,=yR3>??.y=q[ZX}6Mj5l^-||}iݶ- "&:m[ҠaCF~M[*۷nP[ȴ7ʊ+Ww6kF˜xuf^-j3` TڱMeI; e֭\[®VNR犾T*ISa0صc'Z,2|8i),]7Z{mJ%{wY"772NNNtٓ-6Kn~6xPZZnߺUn~;v$6?Ϟ5ЩSeů۳WoS'MdW_bei[[}YϏ]ݣgORSSYVZIvpqqAPЭGO6_ϟk֔A6n޽8t`?3O 1ڴkǟWh/89;ѰQ#ٻ;wlgY$%%ѳO 󲰴+KR"OڵA"a9O4jHRbQ~/ LV'{133cXo IuArr2!:2}>ɹQҋRGZ_Y{k[ziӦt:|bffر*[ʦg> /像?׿+֮ew.>cj }ק3 %&?43>Zw?*u,!>@ ٺy3v'3 6])w;oӧ_Rcvlg޽|?kv&^$Hi>V}x/bL&g!eU4|Ϋ *-0ex_ sE&76׉' ߛ"JOH?}*֚FҥKj-\.jjlXM6`ffFVu"b\t *US@Bq-;1[[TuZ`*dܼy jT"IP;:J'8"H bر:](*ܹ}S*DʲxBmlSrѹkgdfUśWGַe8q$%H,-0bF*L/NL?N:amc-f""""/(E-Մ!x[%s.#=gIUgTj\AyYǍ7¬YeJ-Z`ĉj TJB"dx"Ǟb<{)pw]<t<Sq$EƮV=iڴ[bR:ʒ9x(de#IϰsˍqcGѶmEqIDDDEs7IJa\ˎe=̴׽RLeQB`Æ cߟiӦѱ)kvv6rBhE%ѓI_Tֶtr.`o~c`Ř2 V U.E$d*QQ+Qʤؚ< r/عU}<=z8ڵ6"""""/g38;krpUSӡ:]k=v L kkkܹݻw8KVVVR r9r^G*L"""""=$/R /Y(+lrktZz 2::* ; T*WfQn)N#MFЯV*(Jr9 (VOQ\yˉpqu"8('Td5֖VXY[`nnFZiq) Z+$222ueZ#Q#Ѭy3Q\yl R nݺEƍ1 撟VER  E h4bff9fffDFF""-"""""!L""rrrq+77\0h42fZR3tjji 8:9aooD"##UԩaChޢ9bey"@NNNԨUĤ$*>>>VKV(rHtƆ*U (2h IHLNߥvhMV $nRBK A3G=U}8p%La4iXFVDDDD!חc^GP`nnL&C"p]hޢf B+Z^DDDDDyB$/DT.@*oW/H1 ?<^4Z4kW^AB j;5/"""""}h?11jŒyA e3 NjB>b(utB ??oΝVS ʕ̙Z޽'ͧN 끋#$'O+x1mBW㟱aѢOUܻ͏?.رiӇѽ{Kӳ7Ξsf8;;TS'o 3xѴo߄lVΎG""ЫGGDppX""""""""""""ϐG LҲe=ti!|pO'`K@_}5nZUGÆ5ٵx>}_ |83˖me̥tҒ|=&F^ݛ{hn ~3ɴͫ_2c 'O^fK\_7pJ4~:Kxpuug)ΏpjksAYj13f|, L""""""""""""d231nRp r[[k,-T2v#++WWܹiӡ\x L[}{/?HE&DBa^1GoTJA={̴zpF,|3|3 NZ)KKV( ԨGBB 0SP.nnN\v1gM`+C""1> 4___0DDDDDDDDDDDD̞f+2>};o֬N b{O2zFa?$)9͛q0<=Fr0gP;ZN-",-ʤH$ TGL}sS-?.omfƟq,]6ͤIecooí[ jV͋ <&N̜9iذ&Mo~C3L>Z#%? ƈdii-2GFg$8$T\NG>}O>f!ݧT~S,Y\¾nX5ٸ*hV~]L;jP_U焱c byITtҿt ~-[n?۸.ԵǏh/|U:v,ua.Y,ۏv:ôIJw{~DZp:svN8NVVNNNhՊ^}":s79==fSN\tӧcck+@dԮSwdggc')))XY[Ѯ}CBXv-7omW*G$A`ՈIJrʕ~>Y}LWx4=ٳ\r2]7zZ*>>oq={1d w)"[7o&9) ssT\8];=k3!XXZOs6Wy*ǩ'8 8::Rn= 5+M) 1B8gܸ}h+X4jv<~;ӭG L6 ;;Ǿ'~JEu??Ivv6TڶmѢUWdz^oo  MﶓꟚGwU{{'jzzU4;kY]] MBBzB = y|N9wΜ93ywFV؈FAR5zIRɂLcs,}u1FRQEbBD>;|[m?$PQY#bldL7oo~]4 nn,XS3fE:3ߟ-F$ofיƮTUV1h&O$I ]v 4J7r1OΚ$IzJ035{8|]m[9o555tܙf=MGf׮VBP*mtuuqus_/#...][uSZRBxr,]\3VXXHXp0EEEXY[1jX9Ea%.]DiI ;0jjmƞVcėf6c wjkjXv 1HHG;IP* ڱW7Y?D*+:|89 kkO|  IO?;c8w6F_>R*+INN>חrJD@^|ok5kxŗn{ntTYYY|1̫k79gӆTnͤhJrb"=0h%%%%[mM !ܜFӡcGٷwЫ]yz .$'&6qv[VVJhpP(wL2U>DaM` U[UYIYi}C$=<9q8qu*0TWs&6YK#/͢m L Mg/_EdqC6}4031ӷ͘b,fݽ%fn2غ K+K8:~k9NtTEEEڅ9XZY1h:u|_e Hӫ+iiXYYqeyα䥗 Ջyy댛0kkT*&O]Mqq1FFq#vvv|7+sOX(cO{vQYQ rsr022d7s'¾m[-y>x}{0zSw161k"+3}j5;V*-?qgϰ;4_x#cc"NDVӻo_JKK BAzu_CCx"$ѷ_?v󦬬5++''S6_B͍$&:B§m?123Kn49N??O8B$WoyLKLPx8uu3|HtttȾp=èCǎ3VHl&2)صX uu"NRSS5{2mY<&+oCHKxtM?cO-C$j5 Q__O]]M:::S0s/1ꋋ8Uѧ?}7%9)fߏ@/ ٹ}/R]U|CC}=C}rFF̘9}VXNmmA?T*9D:Eh.=ܙ:c[SS3='L?۶ltT#Gf!$8Eqgh_&ʻ:::3V0jȡC ENڱ- Dh.AJXH0j 3yT,u223y-OwMA3lݼwf<5KoZԕ˗oDFDЯ_LQQ\++kLNiI 3V&xҥM5^lL,ƌeK/VnQƑ7V߯mGbt˞aۻ_BCջ7,]J8~H4d_@]]e3zhllJ]\eQ}|8y8~(IS"?fЫdii!rII\c3>ZnvbnaKF>}&j5ǎEK^`)8żVm;**ʩ͒Ŵssa,,Y|f6'O'2]AAA qȈE?/Wb־YÇ/<(<vw)OSߓN;[MWYQAٳ׏ V Uh8t`|i0w=.ж/NN9t辍&m׎T{gzZzM{z.N?!!?lmm̎m[;{C`ooOjj*55 6L@'IgϜv1,,-xeR ξ=[ ]\\[=e!5{fWPov͕;eA,X-3<3g.?1kk.~^^*j ŅgOr.-9B`yط.4.0ݪ"Nd_Yj۷n"#"XWVdsppy&9'Xz5׮%,$Xw Gs1V)..fڵ_54{4]õ[XnkWCۙ֊q /2~DكJw3u }n!.q:*ښ6oĨcxW033gWP ӃīzfԩTUVdBN?ι6&1 IDAT!C`Ύ#Gj]Nxxzq1/13rh`wHt }}=LLM̌W_fWW_rmǎ̬ٳh4 #قEB_O~!*m h4th]ppp^HvvqiŧuǏё'LAVcdh2QXPSGnmecci剉)ڵ#5%28:ʢ';^wW7?wg̖Fヌ.554<=g.W}qxx]5 ?t kVʟx-v{;Q[SCaa!;t`Z+fZojd^~5J%^]!I*sq<6 tuuŅĄٍz\INNߟd\ܚ=C GWORICC$QW_ GO~b]P񞊊رm+=z43Q^^FVf HBvC]X"vgun)SyëK_ؘ<ΞGhLl [ӦEf㲾 IOH u\vqu%-5"prq;tޞ8Hb|<8:9!IOϙٶensP^P__c .XCYY{xͅXX>PPpI|&6CC HJLW544PW[{[n..лOfߖVZj*ĝ353ɉt\\,"#"xHlA̧AGG7n$3#'gggegfT*ٳ;f֡ii$3u  .}3y`ŝŧ/ݼ}x"mڴ#KL}qrv&??[6h p\њHmM &&dOhݨc[#@w__ :vЀz kk3vjkIIImvA;ՋV7Q\\\9Q$d̙c"FԠT*;;;/\s.0ɖ,j5'NwL 1cOE)D&!LS˨ZT*T*4Y+e},,-C7ndqr/㲳 7'5%}}}:\YD63ࠝ_Hbb"=gp 1ښ233ڱQQ<]+"m-ٓ VCCCziq؈M +s_ [dff?qO9BԩSZaw[Q(#)tŷ.8t uuu̞7' TW7'ehd$',4BݨMټi:::\Z{mΟKGylrQoŋ`eq|VE[zMoh4c=TWc`h)~ WWew˶rp>v܁ݼt'skMTQQg9REs3U̼E$I}RC8XZnn+74޶e UU|w46x[MۇC+g[([. I^]ɓ ˓fvmxk?77W@(,d޽k&2{\رm+:|x6P|UeeVN2Οϒ}M^+geQRR%ڿ[[afn&/f܆p;Pv+^EE9T]ފvl>|o!zzzMwڵkGdm8m &,4 '<< y&MrE,ukQ(LWA޽Y~_yD2tp6_OEEy3'ޫ[W~GN,VBYY|j䃦\iٱm+)XXZ2uu444ȋ'Ȑ')?g%(7s۶˗/STX@L;wlcHO' ҝt!99 x뱉<}nasSK?Ǭsċ!|V(**es3)**Ɔ WO-)LuUUR>Ldٸ|3~.TVTp18:TtvLeE,愅~OΜOw_<e~ܕO|^^]QccT*uuuxuWn,[nP]U% QU8 # tW,EH}eZ;q-xvnLhks꼬N;}\GW7wb}y=%Ib3ϐOfz:kV2ytlmm133gdg̱Gp'sccycȥ%%.Vb{-$&&uֆI ?żg``hȹ_qSwrqaۖ~O'$$P,b2  ? +++ppp+t҅~Q^^F yBx;tt!33W_}Fa+ɚU_̻ɉ/Nh.wf0pc;"#rkjvlgۖ-|dA[eİjȧw_q{JIJ8y?|:{е7GguJ{$%$0tf'رm+?~=j={&%9`KKgM` tΎGoCC022B$%';񏿽7R_Wvw]æwҶWT֯]ˊePRRrL,u?s`>o݂~=5z .bEW0k?_wް١h8{&V^յw#f9ˢsyYtioI 3#[jڹ'BDGV>ŧtq@{,urR ##CZyz.yqJ~~>.3'NнGs~S33&OFAA-mF33*ʵ8)A;7f DZ#Ghll*u=9/9II444PXX/?HcC#Fjf|VG.ݺyN]\8u}V8;}Z+TT\qGsԔ#GQ^VNԩSum<%/x pjkjΖ=:tHFFy$^Z1wVԡCRSSwLԩSr6{#Iu\~~>&&RZZB3ӧ_?]]LrsԹ3#FBTRUUImM T*y^XPPp_uZݝsqg)--}wS^^IIR8zp1Q͝pr}t#6:J-FzȈ<ڭ iA!,?\5{.^P΄Jㆤb``@ii)]tsHf;0>ܙ3iz?HkF=y2$6&~~<3g]_x +|e2O??ϝobODRy& ֌5)ӧڠiؿxzu%!8:9ݗؘzaSOrrw1z229s jΎm8Çicogi1pylZLfxӞ7mDFDp( 6,ZB]:`dlLjJr͙7uk~]%Ozܹ eoб# _rÅijJ*J↟SRR0IaB{扩xGCgY#g)+V߂v7]4SكBR0nD "]iI I ׿%%IJH`;\$M ҂k5mpyM0wRRTTDfF>t_~a@SݑFsȑ۾ضe ?|-eeetԙi3$##C/4u%~Gtt{zյmOnjKHp0_&L<R!Cٻ;RIZuh&{Gdmoby899+7]z hhlkD^S,ڷo{{ZtХXN'ݱܩ$ CTTTؤ'dK?}0˒$™ؘlߓ=G''}q}{f͞<>YZZ+GHOgS6otX{C!Æӧ10gᘛ|oN6 {{{6mXONN&߸a2oniwʵrںgO=ƎǮ ~tpwh=Z~$IbĨQXXXRVV6idVm۶ك}y&LLӯ?'Oҹ#;uՍ֬A$mq.賾>{;3g|ڷǧ/]R҂W<<<ٹc; 2@Lt4Ξʊ Ҧ=#Gfq Td$j i\MM Y$CCkԭ$/\]033'.]o?Bxz֮Zkoqbun4?8x0֭WWQ*0]ATVTb߶-&tHCC.uϝvFJr2?{INJGgg2dWɿxf۴iügRȾpc>ʺF@i榷NV qVzTK[9vwϬSW466"I={sqO>$$$퍍 uW,]x=ҳrZ{'ï3;pL??vlFXhVb>J7ߠ#?M6}O>+bG4?D'ٹ1^K(/T[[]g`PӧdKXXj&EF^`֞̌ MN97_K^{ F#ǭk9NCcCS^L4Qw;Oը @:T*$QQQABB;vhhhHQh4-N ןӧ>Pqv($`?alb´3y `M`? 'r!bcby=T*gbcqh`펗EgK1u;]|?nRm ^z~J|Gh4ڴiÒ^zLߏ=Q+h%\HVa$x~X,<6KL*5]| SOM<":U`)++E{:F ط&>xď:##Rh1u;{O8:<Ԕ9н؈Jj5~_?dc0@ XOyx0zG IpLuqTjxu{=Y1x;J"VڿT* ض#i3%ܦ@m%]Ӕ[]ȩ$vErV&'À Z7u.ꂚ7ܓS|A4;@VHcc,0ŕ.ҫO_@&"PKnˢ3s%,@ x1?|5s71YH7% ʹAbrIVݳҵHD]]ͬՕc-4Y0566K@ xp2uCg,ND9J3)+ooEvK@ !Bdd_!f( j5 -嚐$ Bzzz!I@`.$@ #Bd_j-)wSpRRtuu144DT I @ 7DL#t177z_+25d$6ꢣY@ @*BdφMۨoh.;iM.r$ѡ@ @*t9#_t? ==]>3aNt@ @ %@==]-x1c`ee%D @ !2 8f,xFh@ aR3E##\ݺ 6m`ooOmm- TS͘$IBhC=[2%&$Iw[7&L{,Bb>|+C@@Ott@ JzE.ėfCb9t)/q!I/^仯\AOOZMhh(m۶%** I3f ь7J%W[]Mue%oM ڵ7Q %bMH`Qv|q9j{O.ΚBxIIv7L߾ ?~[{Ñ#ф[y7v.6n `̘SW&GbwEOw2s |{ qI Ddq[ @KF ;FVr8yėfFu[5ݻSXX$IjHNNFPлwo OOOJ% F7;na䘱8:9)r$.]NS8uLtttةCENw 3&444p͒_:y81ёcQZZ[4h0}DɓG0ysdd!!Go+o>>DDh]]%$1o{50fӉ @hŊTTTQQQo0bDoJIty&Dmm= YZmݺJ Wahhٿ$_`Ӧ=L0H<Ղ~=9IQ(A@ fT`4{Cgo.+kk:uD~~>:t]]]LMMիڵ}|H;#@CC444Э[7?[UUI8zʤɓX*ܜ&<8OΜI}}I | ?{fy3ºRf&MnnN55~dgW_aii#()LTd$糲BWW}{&0+++z{ȿ>䎬5zɶ-[8ysə˗پu {|ǭֿy&|tԉWE ++R"SFF:VVV\|Y; 1gh3zqb1s\|2{<e֭\x:fU *w>tRf~VfoQ,,,$,8"5f,kdfd`ieŠCԹsk3c 4{Zht<֬o¶-[Xżx}{0zfyvSw161fڵG6ܼi]u5˗9zsBh7, Z'n𐡲PhpssggPJKJfǰpx8=prv>s*$ ^C#!;2zXҮȤTbƞ `^n.V6]3.G:ũbmc̈́'/7$L@Vf&g%={rP8$v.{g)&ӆ al۶R[;.M`aae8)K2e)ӧɇrZ ڶ];J)..mM+ y=Vh4V2lm϶b&kƎŠeѵkW!0 @9QxQ8oS2nZLLLg 8wwwT*eee׏v1x` ;FBP`aa?#GdԨQ o]AAaccO@bb"OLC|irڈ'137o~bM` o@Xh{`ر}j=;%<1e =,Ll BAw__gemfBw~=$Ąx9ObB<1,X6o^_?y~s̞7O. WWwf5sssw̜sg 2zann""mNEFb߶zTv&wOI?wVSMk-o7,]?[$Cvk899sСe)8{:n)m۵)=-Y;sqg[[mm[6cVΞa𐡼ۓJmM C &кI3gy>~t)C gߞ-$'&* L2h?{fWPo6ff} R|=|5Z+%%% Z~f񪕿_}jX7nd=X 'O`ڵ֏v`ڵ]Je~}gС̙7q&wwؕFNv6sgμ6MhH0z敥KiߡǏi5]nN_x&oT*EEEݽgs )tQQ԰y&F /9nx $%%^mˤD= eܿ)gkޞȈ8::q>+K~SRqski1x/ӶmfiHHǿgχ}{_ЦDwz 8r4Oc$&fsSݍ >`޼I&cjj̓O嫯֐|x!011&11Ν[׿dٲv.JJʙ5}n>}ZÇy8~(Z]nɉE/AVCAAG‚y.@VrÇ1lp Xz5|9w?L$&&&\ˣ5+[~]ΒƈѣO?HOzclbko[ٿo/ôn;u^knVVVɖ@CAAxO]ysq/^D{w$IÃĄe֕޴}(** 'w耽=qqZ/>ss $l۲Ev!sP{om[clbB~ ɡػʼi=wJB@*" vWu *VA"H/B )$BH$3r$$`,>ו0s<<=^}?];v0d0T*) ?o^'ښ*4 XY[JvV^ޤ>̈́{yЂh4rp~N&5Y{774dpNYvum#+tgµ\hƁ4ϔI`4g-ldgWg ;;gyfo xqۙ39|rغ;ȧ6"Ø`B?\"2\k4Ӱ0LJ[Vc4CS[[Kmm2^`0`ff/CTj5ϿgΤg|Cpn/б#ǏM۲:jYTI=}Z]8^ ۶1\n.V˄oݝ?oWĭ7aر};Ι j6кZõZVV˥k8N~9F!dmMM!%m\\9NξQK=JŁIJL3VVʹOKKNÕYf56?e*67U]UERB i^wtXbRRɔ)4x?豅 ײpK_OkܠA]J-;ݎ!Cd2 rh|j. !lFhTfk~7F%2i!RՂqY;3;Z/P~DꊅeJt)--fʲ9g qvv6旂'ggh4r&=WV,[2Ҙc ?ꊝ=6lD6($4 +kkN 11~o7$'3믈ރ;ǏLJm۲m*++Ϗdfdˋ5?T(566\,m`b{bْ!v]|j(/+c޽xh:bֲa:ʔ0gؾ{'MKp%;GeE%XXXm>` :33K|YZ ggg||}پu+a<9s&S)((`7_EdfdгW/T*{!??% .f-뫴y=()Ъ2% s(/W c׎[X0b\~ #G&i+GD4;?'OWJFkx8ǎ\Cǎ諫Y?իVa0eSPռ|P~i`+Iٻg71?Q~1L$FoUK>CujPfn޶-66F>[&iqԵB!h^7;s8]')hqʊSOaoo`d2QSS^2 Jk@^g2033C`aahdŊ"%T*?4 cX[Y18h0U44~&{/*Cs.L2/||}5ǎݣgx \Xݻ$ 0K!C,^Ӧ7 \@GnUpkߞ=+eYXX9#Ņ{'Ofk}ͷXlǏN`f#5fغjnaѨV lZm[̝wOhx+ov.8Isvfps|Mֹ=ǏW_}hپ}{&O吡pttbO1۳33sOzZ?'av]_.f-Gœaouw˗qYl 3=򵰴d9)]ZGϞĬ/~V:FwWhI9}=wSW[qC{曯D1bhڴi÷a4)**b󦍘տkl 9 IDAT `4 ix ֢{ȈQi}kXXZb0HOKt:z쩼-eC}VGw~v]pJѣyV1c[;}gK-2FcXS e帷m1מ'.uWx ԉ|:cƶ-[HNJ"0(??SSZW;we\4777x@vVFު#LUuCo ٣Ffƃ9jnnnr BLlq_#s?۪ug 6V KzZ*joKKKZ26Suu5uuut:t:fffhZt:R!,:->x\%QkUUVC3wLПz~b~\CɅFCUe%&xa0N>?w܁7>K=qti++*C0T)dHyVqaf!3C+d2amcrC ۵cu7JVNLǃLdQH!7h B8Uܔ5ע榬!^ F#xxxPWW7_~I@`{vgggPTؠj/*++ϧ^}p*? 06ӭ$0(|-QT0utаNYf5+- s<;tkgQQ[7oaST[.`8sm7tJd2T|\o5ҒI܊o&Lff:}Fqߜ !⏕VG0#W)kؒ{#fkۮՕ+m޴:t:j5:@z2ZM,7bGₗMqz}Y~Okx8?:'3 Ǝ8FBk/>'08aGүUB&q B&;[kC nԴB!94tppdG4QA8M9*NbSn,WBW%!ޖi&3tBaie9,Hk.Tn$BUI$nA7.drv瑇2h mBq+-Nba< %g(\bnO7=]¤BJ2[o<۹3mkP!B!U2ٖS'ӿ?@B!BI 8ЇO=077B!B!ZIB&ǔ&󶞘I!B!IB&ԣOww7V+o!B!ⷒڵK8+wLPT*LB!B! "5l0tT$&AHX*FFB!n)H!!_H@Mu<2[ڈc!\2H!B*B! &!%M<1ԇK&i$B!Bn$dIac  h2b4$\B!B!2[3qj$"B!BQ$d}.F&$KB!B!ğAB&?Y1f. !B!%!wB!o[xJP=!t #9H I!hsJt7Y/Mbcqswr&I`4(;4B!_MZY 7p$˅:x1g8ЄBIܴ,,5<[֑I![ĿfPhhg@Ne!ؔK~^ |]L&*C\X@]]*Jyd2htT_>TFj5jVG=BLckoY>j$m\]ZaNB&!B4',`G$3]s)kؒ{#fESC@ªVByy9&*QՔQRR|<|JLLSNXYY1bm7'+L8\Z܍49ؿ,d߳aO|lڴisuJKٰ~=g)ϣG;6b$:u1knrxzQ?9 cnn~TVT݊8vr 1R *Yl)I ; Sgz=O{^~?LofwI %;ǵ3}4(ܜV,[Fjj uuuk׎c,s6;˖qL:_&Nۥ/O?ƇwŸ;[lQQLJK/b2Cc!=rիV;*exv 71sVyYsfLxx8Flܦ8z?$vvy_TUUð#)))a7_7Y_ֻMu>dL&qSK^ΐpptB! }C&@YfKao.3Z`bMx{{qFJJJ Z T*UUUh41 Jdnn=DFFc6ْс; k_K3%&˹s?`{/y^<ã:iDEGc08sZ8'*:W7wN?Kљ1hǫPXXH.] tı摙ѳW?|^;u.~ErY֯^SN.J͡X#^-:tHƙ3QՄwh#7y_J ֶ˗^՗^w߾߱$..|¤m5Yc,?^x 6oڈ NF!5%QRDZJ j;IШ5?3d0{EeZ,^DHXMw>$dmylփ>xR B!b8Uc3q|J2-Nju9GRSSVEJ\xѨL ,,,8~8J.z*t:h|Req߿rS&GXZ͍Ǟxmc9/E]B&=CSW^|o,&[Vucbdfd`aiI}гWo K˦!F;Yt[99AQ;|6Ό;ܜ$%&1~5۷Ɓpff&]P"2*];wR֛Pکsr75BI<;b{LB!/<[n: h J+8<ǎٳTUUM~~>yyy瓛KUU666O%??/oqa4!++G''}U[8~ ZMp232Xj%ĎۉFRpJYgU9|!C1hN?uꃐŋ=x^zcgg˩eyyyKFIHhYQVZJfFFm[xY.6m@qq|ٳ|IF͛1o5UNft҅ܜ.\d"1!P033,]CI=$5%N6A!p*h$ǘ:}:*a-.7yXXIFK^$44???eoшdj4.SC T[[pZd2accCfVVɹ\Ő멮¢><F;FAA{vi3h42ᇔuzCdtŝT*{)S0LQ^Vhw>֣?ѳWoRSy)..?7oi'*2ΜʪŁ_@ +3TV-2% Gn#11.]jē||Ǐg};0e4EFRXXC(oU;9)yF!aaNJRu GV١ԠeEۿVNQT\^ޔ^$[7mlxYlۺM뻟vؑǞxZ87g}fB{z6"h4rfŅ(P~B9z:w];js?e*>KX8::2ញ|՗MZ29882iط:qJEyE9x}[6)bq:Nҥk~``5?-&//rVb۷nVVo^ORB:\}5}u5O'Ã@}˷OfF7;>v`aT*R9A~޶kkI+kk\]]ۛӧp}MЂh4rp~N&5Zf޽tF#!k Ԗ?H}B!P@E5iFKyo)))ARQ[[d`0(] uuuʤ$ _45SVVV*B߮]宮?u*@*_j(/,,$4򜗗ֲd"rsrh%%%孼//oirsӴkV[.]R8::ՇiЧo_~i=舯'Or6;R""y1LweK+\. Ԑr:ܜ+WS[[KMM 6!cggOYYWWFJ. \̯Cʩkx8ZTUWRnf!RWWGvVa󦍬XGf>t1nFT*m{гCt g]Z ԉ5dj9_|.D狋qwwsƙ"QQ5~*D޾鰶̌:rΞo-k_߿9K۶mAi]x3<3݇a#F^ӓ_yIE/ ׷jfnQ,_;w nnn=r}@搚Bt:cƎ}|hwp̌r聅%zBb~\KKeQ#0(];w0tΟ?OB|<s2geYuA[ZNQQ8~Ǐs@}8}u5bR{[en)?y7F_P$%&5*'7WJLHLz:F Z(mp=y嗱cAXXXy#hM={",^l`kIOMUY2kl% ;ˀA z}:䧘NCh߾=k:zy)r8KEyL17tffnNEE E5f XYYR5p5AA\Xu& b׎ܥ+nݽgwn+00wj4FUUUcan ^ǔN8qwOmF{OO[0~.^,a]HQa}6׬[ðIOOĉFNηcxy{hp>SL V|I. @={/y嵿?^oν&]X0LxvSZNeMyGgʕ=r3xP%`oͲߒx<ڵϏmlv6.m[Y[7   tǘ3xP\\Zw]eK7$\WSDnF})@*gaa /W,T)>L<Æz[Xǎ)tьp ]"#2u ';+/El6|]V,[;oߞ?h|+M>_xcGѪDd>ST*u%%FW_|eo͜UOIO'$,L39ڷKp.YFс_orr66- eҥTUURVZVʠATTG IDATTPVZ?vd}ݐ{JbQm+bbppt`Ԙ-^ݝ%zFa1)r۶eܖ%N] :utr2''g""m ϏTݛv޹s{򘛛f<` ;+a#FoUN*BV}nfҴID聮͹oo LF#ф҇_~~68!/ 8/‘ݟmպ3~@~^ Lt+5RTTtFZ25t233Sh4899Ȩвq %J9f U֛xzvW^]?}{NNb= [22P_ЪeElټgRߢ02jr>Z۳kZ&7aԷ(T%-*V.)!B|uTIsS0ӿeAܔ5W_ U@nؿnqSo2a2D(ҩjԙ^vAknٌJ? ӧTT< ߻}{eFjjjqptGϞ׽cGrQ|nHrSeEG!Yeq>j3L諫9ǘqwүUZ26Lt]"o%B!&,`GMsSְ%0G׶_z=qmW<2c:LAAhFzZ&>>RB!B!h Y1fKB!B!h5 ػ}O) !B!B\ ,,5< 97ww)!B!B&2XXjx) 9W77)!B!B2Eڛ1sdB!-t)! GB[^ΐpptB!ʆB񻐐ն-z "B!BߕLώ< B!B!2"| k)!B!B$dҩ-3^}`em-"B!B?LºcڣSݯ/VVR B!7ɄJR*>,Q5`kkJBRa0(++@eeڵ#4,B!n&2COLgޘK!B\$ƓPrBE\ qKA׽à[AYi)'`333!//ZTWWS[[ŋht[&LJI!MKa2HIz `Cս;f.]hd4b00MF~ e_!&,8UqB3_v׵s?VZFbffhdÆ mۖu֡R>|89h4r9zrBܔ$d=I&գfffR BB&!B\Klq_#C=r 9*NbSn,x)lr[5qORXXJh4RWWGRReeetڕvڱpBj5'O&##'ObccCHHZd͍ .0d||}d !HwTa?""j4 !BVie9J4#,ʅvV.ܔ5l=̿~Vh:Z PըT*rssٺu+GaԨQ 4JEll,111qcnn|fee5:Lys2r&L#ӧs/x53#˖1h"u l$pptcG/F܌S'ow`QLkz599L]2GfO1={{{B;ub=^Lz: ]]K7$\ڙ>C^멩0h:}G̏kx5۰'vlNqq1vvvt  (FŬN>}:l8* ^$($_yڿoU 4QWW5k8rEEExxxлo_ t)}o/s]kS޻ӓӦK[eˈwGyYsfLxx8Flܦ8z?$vvy_TUUð#)))a7_7Y_ֻLFKxW4. !B0 7\3`R2[r }ov}99;ӱcG N-ݻwÃoRxWҥ 999TWW@mm-ҩS'ݯ FsZ圊#"">37ww7ϟPA1utEF6Z'Y$=-:>ёsyƒ{~Nc,^'''wm[o| ډu,ԗC.˲ym*~޶KOTIOg֭ӳllˋzr4˖,\n.NѪJ]]{ؘL&073gOFfF. ;+Ӧ7Yo~qy wߏF!5%Ѹx&* Gb);IШ5?3d0{/jkYx!a7&1}Dh@B!n$NdfآLq<Ʃ bZmBCCIII2L&AAAֲ~zd27`41brT*666oߞ T*kC||ֻOb~@zŻolo1k4,Zlzx0iJǏӮ}{&nwX`Vtbw{?tM/FHhi899qye??4ݻs.7ww߾Ծ=ǎk++_WWWJmn޸FKJLd玟³CGG |J.\]{O]obJ2XMNNNdefRSSN#==Q9[$'&2ϰg֭,?^|S'TSQQ @%*:ǟzZ!c?ӷ_{zrHEy9 lv66nB m5fr Œ׿@Ͽ/<,o/Cc >c#0ygk~XE4jʊgϿO<ȶ[xŗj  ٽkZ;Ǐotdtjv]ڱn?g:xFCtʱ%&b1hZ-YYl޴ʊ <;t`JF!F;Yt 7''6//>tCPUUsgFGnY?agmMLt :bT* oԹKWe{m,qo/""%`B!/0n 4l!22Aѷo_0 \x^zA8p AAA :Z 2CgAA͙JfА!ݽXUŲIuUzMB"fT XR~%>8wODd$/_ #8q8|ơEcai5kprrf1ٜ<qptO6 5%4#Y|IN-2VZɏ >^'P]U*wSTK{OOizѧo&'[;;#"!`OᙏVjpƙ3||9?ʕe&RSRYj% ktl;7_~X`a7_s.7 .b2/]ʷh͛6ʕ:TJ17e;wwfB(,(hZr]@}+ǙO<ɨcغy3"lLdÏPϑÇbw1tpxzvvsc &))QRR"A|PZzmc=ygpsw'|||`owt2Mv";G۶m-SZzSDFEݔo%ӟ)㞻 ~B!3Vݰ΢M6ZBwXTgwPT:bKl؍&11零Ivnf1fcb{{TH00cdt,ܯR8uΜ933%R)ڊ gggTUUa2R)2 JB@"X[t:J%Rӭ´0L2QQ,7 TUV1a0X8ogN\``DwϏS'NRSSJŞ=b}d'ǎٻ;_| }J}yWYhYxyy>=WP2gP\\LEE9A!!9||%_6QTǎwix-?'ؼi#3flڸA؜UUH$d2?RyNKKE-cɢ8)@k=/n<^סƁJW\A[Vpq&<`FᤦT( =)\x@mgG3dfXjrrM[-cۗѝMOII!(8zn ?ڝ?  ִeA2 hmYrZ`h!l.svvvd2JKJnݨ ,`ӆYZ͊_q!/SXP@\|d2Wd8gKKC-g^ٰn-G"0(bz 0vnNLl,1l۲&t"3fzC "__49}F ݝw[ QXP?l͝T*%S'3v,wY8NNTVT.f[fOEEy0,-5L&w'֢V#Үi.,}Z-9.xMDHkHL|׿l~#;oŅ@:F׹3G/m[BeEnnnZQRTds6mXǻp<ҐJaZzꅽ=|W1 def|F}l6X|M͖pusyy*kBzK79lZrju{r=oZש];vLON:cǚN1>(/+~YƲŋoӆNC&DtNt=0xw';qz,8?N :t0vΆupqua؈M{f* q~nٕ( 0Y|џ[\|AlݲɄL&ÃMS]U5l8/V\FCk@aa![6Z^&MuI܇!Cش~=)IqnKUe]{.2@d(tʒEj@.s)h P©j_{^܌ezBBCnX*||}:֣GpstS(ΥW_Nl8vlFzZaav+Zx{{3Fr.]"aȐVk'{.zb4[?Ќl2a41̘of2]@1$@4AA 8RƧI V2-ZvQP[ƻ&ӥ@j֭[agg\.f`0P(P((Jr9 2Vŋ*Dݺ5Y/0}CaAN`Qwǎտ/L=z?k1h~Uylۺkz}xzzj^xu"ILP@T[%=>z^`  <`Ҏdf_̐ίHv- L&~~~a0ʾ={pttRD"\nNWSSCAAZGz"%9g{Z6ӯ𑣈h=QQ^AChXwuBv6v@T\_:y{0e6Axf$'eĨՏUd Jf>aC+Z2 Д\>1 ~o4:my&$ȱU?ؒc F4 TB)멬D.1pPm)4>6r$&\\\ 9#,"⎋?,Dt¥Ç)DL  JC9o+nӔ[Sђ4RAJL-ڑ_"HL  Nfe.?em"Y{EcZ`A*25[g{e*菳d"dAq(m6Ez˰*gڻݳh$ -$ ߂[g^~9{W7  o]p$ =$B&ٗG^h~#H    k"dNNT{{{q@AAAAIL@Xf<={RAAAAhtԽw(SgLs׮"\AAAA ɐףL>nP*,AAAAKwHΘJl|grSPAAu9- oHhX?wu@Ʈyy gwtTRs>); f<⊦U'{0n";F!Jų_s};ޞ Ͽ͝JZ)C&,   fdRS}Qs{$P߬ h0?CXDGʵe\˵\[v!pըPs)   f߽P4vfS#כ^Cؙ4z$$ػwQm,84` ?_O?͜@SՒđ{mٿ$ػc+vP)D$   fd]R#ǣ`m"7˥e2c0?9z2j wΞ<#0LR]T*d2Q__c Cnu ֭#KZo@\]]+]AAAfLW5F*Es`'5_~a뉌e三|2Nh2`^S'g?ͭd0Xl)yytޝ-O^/M pSGJ8XD6"}9*gڻݳ]6KʑH$~i͌f<ܝ% <42US} u˲&͠ARVVβe_sػ|S>s:8۴%S4/Ó{GwJKظj9^ެe1{wle)l߰ww|mI _/tBi݉t˹Ĕ^&}$s'g*e|Cx`6'"*&_S"+vop|[9ס/ *fL01a$ħY|0AVfe.?em"Y{Ѵ"}9 N.8 Vw= HЖWj^r9FDe `3d2 O`F"AAp %{F=|49m̘A,Ys,gGy\5|w,oWr)Gy Jփ-kVZqr潿G'jdTUV0dXT*Rzd2:W23mOX<;Zə;!H NFFF@UUe1.t5ǿ]`oC,7$Gul߰:}ߓ[\O3ϧ0nr  :RƧI V2ȯ ᴲ %il;BoŻ&u&RR񢶶ɄDR Ʉ 2dB&VEG:b6NAx;ЪҲiOII1/#+=y@t kby#Jٽu3gJe%E^J|Z#Z\7kG.o ka&ݲ|[<3Ri󻻇^7̯'۽1`rqqaт"`A2+s '=ߋYW-&-ؙwԢl@*VQL&RTB.BJ{;;r9 2)QpvqAy/\ȇ Ae Ez-*zyudr&gqin631ǟr{y,] Zj𑣈s9'L*#0(& Eشa=#nݣO?7DP4dge_BP z_sqVXuG0o\y=۴ᡶtb:߷@Ue%_%111$ 1e&N?K9tN@HhZFӗ={>|!EqfRcpv),,Z0Ieud4RHTWaqEg%\Ok8q iIgX]K@BiIu:] EU{7ޜKor~!|C"vu55憇'he|]0( ৬M n0϶c㐩ӧr ɩb^R)'+;KSYYZlOOOz?!l8鵬Cz>7Dw!;+ جF>TWWH^H%R9_>6mr!;OR8&''9]Ӣ8vxHN:&L̗^``ߞ|irO?;ӯDZj*ǏeҔ)}0 ,?!CKoG&q͵l6ypc`:GϝC&s9zM[f˗k67j)ޭZv(bIܺpʵeTWGV8\=jqusC"pqJ0 G|\RΜ""*;r>5MW5N?b3}B"ĤOp|.^ĸ yb8/]ʚU1j(- Ց4V6+`>h:SIGJۜ\.G*bRR+).)cS4KУ{뛼g`|֕@.ogϜ柟}FIKMd21tp*+*Iܵ{;;yyRSXb/]v%?/w~G0bHΜ|AɴHuU=a49{4s/~tl޴.W޴/?ғ!ҵq;, kk5X-8o 2qsszsO>߀L4̜xRzԧ)6+WOmOFhpu)OX8ooNΓ˖~\.gMי^}k67w.OMJ=6b$z,\ovټƛm۶KD"ayh4=۳sґdf% ^ϖMC*HϞDv`wJpHH6PU]ZfP`||})/2x8?/_f̓O= 8CՖ5jsVkt9'-7-ΰ#`Ob"qqzDzB?` rKغe35iC!L2^>\x֎n;z˽LZjO lv/^$SgNxND"شpur̢9z>~|џڭ2ΟCTG&<=A$'5ԍ/2g8r5kP\\LYY]wo|G%%9 _3[4ޞ)--EW9oɢE\Φ3O1L}z:z!9zڿw/^|'}Vx֮^ETtG"={f Βѣ1HI}Ϟ=Ct9yXh˖,jOJgN3gw̙t2..p~6/n-^ 0Ƚl)?c4/ؿw/֭?6:ǎ51 N?F.]u| t֍|طm7g{‚;FNe0_{''g֯[w}hAZZT#}PQQή;xbx^{ }|8rA\pz^;NXX/-}8\mcrRR@6%S$vf{$4Ś.|`3foʯ^|i84ԪM[^y ړHiLyY~W}P<ڛ6ujlMopxo|qӵ>Gݺߓg̴g3>jzGMQUYP$+pprB[ZBPl<M6-Ǝc^q IZHb]ǝ0A*s9u:Jʴ,]oNJχ01~jy2b nSSNrYeeLJgHMNم ` 0uJE}}=G&4,IS`6I:{ʊf&xyd2޴Ёsii SL R6mSS_W캖Ez-K $$paZ,s;wR\\l b:qpfʕؾ---۴mˋ/B}sGAmht\t߿QE6مݝ:k-ݷЦm[N?NTz=oəӧ <<"<==qtt"%۴ XjdfdDPpMFy Xo  $3#n().>`l2Q\\Jer 9| 'Us9;MfFaa\G"X[mؾ)ӞFR]>rTWϳ=oݳq'H~^U?'N$/7];v ֣A\r+K/#ɨ"0(_??:5,Zӫ9r/_ =kuagOQaAAzx:dp;ҵ+|zq=ᐐP$&2pPt4v@qW^^VC&QS]F9.. s;ab72L>xgN3n$yOnݐdm;Vj,ݽ iI~e5^;A:+Syl!ܴrm qӞ!pkqpr]P0Z-{oB:LBN..\ 8''?Ţ9N(ƌˊe{k. Ezv(r-ѰL:dP_Z-'33'Gۃ1f}yb0=СT*HNɾ ](dWY>_W'. ֭J~>wD"a@Bs/s'v@ԧR1ʹmдkpLYKW4 )/k4x\n$yn^388Z$ m9>ĝ;I:sd|||hIDH 9.q`>nŋx~_kUPPh$77D˝ oӆN1lXZ"x_JwOʚUVVJz}-{-=ys|Kڝ"+399}1ֱ҅'ߦ O"syҔ>yP*ջ7~~TWUaX׭qpFCV;{{t55TJ:6oڈT*6N1$=KhXM+‚*Xt5H~ %LJ.ϐP.YLxx!aa6frss-|||EWS=2z;99RXpf}VVV|߯HܹoO/O׿{'xz]egeQp%}uuMLj;;<+qEcg6٢z6lW4mO]+3_{>CsݓpKONC!͍6!)IDATSHD{\~ӓghMy{. ,f3zɀ _ /L$eЧ#TWW-[o#wgúlڸJb̌P;z’ B"pE:.]x(  UU֛ 6{yudeΞ[N///ٲi3rZKAk4=sT}tQ9tڍO S'zIII kVt¯@'''>LnlߓHDDzd)Y1)0{6Ny؝jR\]]y_?Xd1 vvkVsGGxuS]Ue\"0iS۷1ѷ]gQQ˗-z.y3'oLhX8;msii<39ͷ\- t;\7rO23Yv ݩk#pM::f1 J^}=̘+dH`4[ ٻ{7j;;"[j;qݲ yڲZSrFɺf30  ;]]p%i-2w$ͺ;%J":K/<6m݉;wČ oO/$l6a2$Suguh _~Y͝˚U0 ੩>c?ΙC⮝)ӧNv; d|՗(U* g˞eAVHSB/ ,!S(ǏkUA.ط''gk Z;/Kcd Jl >.^̩'1 DuFTnjnqU7YCΥK̞5 \FxMvo݉7z˗p|$H >+M3;.I ]6GD"w>ZH]]zjqphfZnMQQMJVX33cyl޸}תUD"aaڱ °#ezBBCL#ذ~UU2t[KmgKݍ-:DEq.=o77wb;DZc6 '08 ||nw%?\k8ooo?;HΥK$ @Jc͵:=[amxŧ޳g}U 4*8  ܵ#%i|o+٢egea2]ZX8Nve͊ ӧ3FɌ\&G*WR٣Ra2g֬/ nc^9~_tѣk< Vj >X!lAگAvVǏ\O3L2'ϞDd2%mSt;#}n'gۯVhBA=HvԖ1f/7j jˈti6t0S>òe+ 퀣 Nnz삝ZTb\4eͮ;P*t͞Ŭ]c-^ .H~Ӻ5ٷgxَѝpvqfq!qzٓ{Z䤳7kqDzd tͦ2 (RVD9AAʴ}b03Gf_mwZڶd"((Ҳ"M:FEP*ǿ55:ʴZ2){z\ lFGj ܥCCNE=QPBKdH"8Xm t55̙a{䎻%̄)t_hul2a4YM&L6?F;& ! ծ B{NSnMGKؒw2;&נ[ IۇT4 :=ᡡTTUr% r\d|?  /A^jq:4񮌝4d28  C{8䧬M$k/0/k 49oK;&ȱ]ol6agoOYI .]əag{шޞ?A\z=0A ΄)%AAAZA8Yq(m6Ez۞*gڻݳ]`j ..HRrfGGg=F*Ύθ{ K1qtrO иm4~J?F.  ]mt+(,*C.FZZ&:F3aATVU[@^^1Z""ɽ|Re)AMCI2 o^ !)  w ᡀ 7W*+kpwwíN'*V vv*$% h2=l>ApX8:  p.\*TJ_ /h2Wmϥ%d_BMu%nn. qA5dz1 9@qTAAh(7І#Po0"Y# T RBFhX$lB!f] 𠒼O̓G uq4ld2a60Lf&&CAAAA{PHlIENDB`icingadb-1.3.0/doc/images/icingadb-database.png000066400000000000000000014621541477347223700213320ustar00rootroot00000000000000PNG  IHDR 7d3IDATx1KUaq74SEu!;B-h8S^GgK44D-7 GpҫEh΀nO7T:&JZN8 \\j~ _N4]OFM8Tdbb^T|tuy??-O=qw4KX;t|Q?m֙ o]!$njYw/_@hҙ? =)5'% A.]ǟ g2-.j«vgZ/Xu?/CO )ٝjM7/ .=4h->.$o|;# .K=VJ$F"=uf!/4lPnyD#>rZ]yV }tvN_|7)g~շ~筷:U6ϒ j%  ~Eb ? N)>yo_=5q*r>FmL ; ޠB1p@r6-$݃DpݲQ+ZtfOÏ]ԭ)~h_: 8{:矱=ԖYH~.w^޾gQtD<`6|cX&$3w3'( ^Ezmx~B-}#;)ysiJGHW?z&l]AimB._;R?|բ9XiE >g£uSV i?zUП lL'<Ԃ͹[a}޽v؛ljm[=?ٞhY$)˪Z?zm2aޱxEwzȶ)Zl=?z|k)l'f>EsG#!hVɻHB OplΚ4eL)eplϼe|6qZ( ɿ‰@^8u@5(ep2;gWu)ŧ 7{׼F-~-$sGtv:s ߒ@ )p @: @7|=rl%?{sUéi]k~Z'z{ry,׺Rc);o2IVK??6敼E\<GA;]^yVsm\Vis}o˿Ip\}>Gw}͢ @yzvuyy@h|\q^bi '^@|VX|Co @ 4n|\P%2=ozzwy/ZeœN.1pvF @EA?c\XA/"O\ HN<۩?'8 ?sk'du|j oh@{[=\\WG,W~9?;3XeDzEEd!cW nlΉ@{E#]\d ۀō??v:NgXɲ |JF >dqO|۬;xO?.6}._zNIO>%:^v_3Ct>3;O d~Ob=WM*3ubo'd{4"jM.'ǿ%{[Xliy~#N3?~9wUulpt{#%fwu<-a;;lE{DOJY.<-mwޔ(멣n3xrC{kckY<[[FJf.b*kQ_="ySf}sɷpOGES= @l=!g{K?nB.V epAʢӠS,~+ō${[wOamҼP쯗n;^J4xkHF|L*o(1_al[E /g)}Ar*"KzPnhEdۻb|o?~JCSUvJFϯc}⏳n] ;"Py~"z&߮wYzLr}U`]ǟ W}7:^I]ED^P[% @b >IoѧcMvÏhqwMB#d[pVt춍[Inm Ȧ9MF,<"K^O7;-xwiBFoq`fM3ﮟ ;['Tuf ?N`~ @1hw[eMu2 @{?Ws pU4e>iW-M3ټ6=~]X(2oc,E^7cܔ^ >,8mIio,簊ʅ)ѥ,x ?AqS7l17}Oh {t㸈/ym~g]e|YGKӒ]oO(?{lxHgn`)yG/#; >;u9\@]?Ο.Hv -^uYjgm~ >ǖDX2uOdfݗܗЇ<9D`n v喽rxIЭOmμ.x[{3?6@m1Wov~"hdLޯ/ otI @Ymcr9X9Yn}ܖ0/lcYIt@_􈌝;b < й @euaǿȍ?9;X"N.lӿokH&Ia'%?|lƟ'CvzRF^(l^y @n3\cܣ<]Da3v챶ֵ.֖kuݵVgpf &rJikj 7E`AV|=~BKz>g:ru:|GeoѸo%PkK:G.ޏ@hX%ŏ5r ~⟯ ttǮ3MrHOBUҧٶB2M6~JJa2?+A*}?y 3ʐF##7tL@*}tDY ŏ}{+Y d312itk$.rΝik|HeOzlF-QKrrwQ }(H&ΐ z|n4)omO}r?D5q&r OȠO+ݭ~+zNJ/Y @ ͟xxs?a35cRLt7l"'~\>~T|`E%G M?%!Q>RTq7/zzTd훙JP@fk?&!to*|beIc^j?Ni QKg N@V@^|"h4ǫ ?DNy dOdc䏙*ѩHg׆nǯM?ٜgQv~1̾|I@~ۘ?-4SWBRǮSo^&!fRˠgI {tc$!N_r§Iwε+}J=]O< 8@H?>Or @)3XcO@*tq7ƏI,|tֻO~6џG]5Gϔ:aZ~C2eAO<:AݬUzڼ7#+ퟄ*};%w']V1 z> Tų䏦"EPH>ЗwbP$ŏX}5!uȮ}s߬i־i~r>[ۤ4 Rc?6oTq'MF$?FP1I UqȮ3Y*|4*}tjzS6plrw_w!9o6 XD'.yެ|  wNJ6^i2H @NhJTQ ~LTkS4OsB_sް6lTďW<5Ytú}2Wd?#ZM7VٵoV?vNѩퟢǦ7{'+?+-5մ2ߴqG37ґ M^^7:km}{؂ 1Gg%ƥ~3]t0 l7~i2#3̜Iz_VpG~LiI$|dGEHoFXt{4-. |lڷ [Vz{GO&r7GMBę$Pk|f9Hx ;][@~[.CѩG39tcx 3 {' m\Wm_ε1}TSS^@6~5qH? 8A^Lȼ4&KACOjȮ3QcԜ2-|to6n(ENi:U'ma-ܘ_ˠ?ot?oMOavKAa:o_Wi?򧳓?>=ԜX[?*~ 1hieW#fx 7- pG[>>^8T }ݟ>2H%g䴩K7ѩ)'S~[crF'~ů~}I@3cFũ |?aZ30C Af>Hέ\@ͮsG*~ݟɭҰiuҷ!-m@*|ttշ wtjCOƯ}yͬDf9T}2- ?5s ?:C43s8%`I!nгP]!:Ҧ? v&$[4oq( @͉k|L?. + 9qRsZBc?jJɌυ۬+ʸOPmEsOK'o!l^nx@ΝUON4Ob \C6F? ӈ}ө) +}i)ıK ["(4$ qiƾ}%V&!} ܻOCFgZ?firvxwc (nDP/@=Иu֏kFLmzA}n]Qcc?n6~ 8MivB 1o*/ &]oxϖ{nK>ЗȠQscdgf3#75FMgش 623I $c~.[X{ /Bsymrۦ90ߩ[?V64n@ӷϩ^ǵ͟Ye@s䏾sܸAzg28.Mkљ@ SM9/$ܭ2YW=+?#m=$,&=$ʟļ {#;dC3r-PBk_?c%&Uo,M>vڵoMz̶ȧ˘Jo1&5|(+~L 00tq|Gv64+}ƉL6@u\MZ~Im{^{Ӷo>W?͚HNȕvj#gžU@/ 3$m rnӶ\\d?R M]7oΑeeWw|&!tSt{,|I6-[,x@mxV޳p@~??nh ȯ+7{G%>Nب1snisͭ9yw@POm,~%OHxhC'wL]jھ߭i$\Zd($S}yl[wHoYSՐO x>|lhI&4E#o*#lmtQdcaصo.N^?: !4Yz\B?6cx'Dg2d>t8q߉?wxqt_VB>?PS/TG>V?36˼˦]5ȴ~uJ @3ZrjB$/yR@S}Fξy?$ci*mHFm揾b?%Voa@o]*Om2vZ 28:}k&G?@YtO=q1ȭ}ӘoibdoLŏN/4Y 5[IV?>Hc׿9.~1)KSk=% ;q'!T:Ntj t@&s+?cj@٨:񇿑>S[fDPi?oDO6 yWțh}w(*h>pN FOOȶJ67/Σ_g^ُQMN?qADb׾ "Wܑ9 M##|'1+ۉV`ŏ.f@VI?:V/lh»kߨOBiʟ00*=9.7ǐZ~aUa9PH 4*d^+$@iG7.YCelb׾ ]wvf>lȊ?VM7ǵTih|Lj+~ʟy)hAtIz|f55l&S ԐKR_p4~ߓj1’V8>e&Wq7zT"4(ʭ;kf?|A.]&FhRh=-O$ИߴȹSoʟMIMYSEOb6~q'q'~3'n&^Y:?&>شl' S4BGR͵! ^*IA@ߓOśj:,mJ$4wv4*]Gca׿^>*?뺷9Yo͊ћ?@# mhӳroz&7ŏ@nMƶmtcD?FYmf?YOk>N&ک'M 8q3h;B:Q` Hǐ!jsR%. we|N- ]g[? @*|G+rTc3>:(-njWWߴ 3ZTOH&\'Lwgp\yrOwIQB@Goi +~tZS@}L?͟܌ŏm/ o x# X%~G8pqmK#ྰ0F=E/>I/ef䏌 :a|^CgtF>>A>Zp}nz%I3tFZz4=f+M('?YH]@!L߄,ƾYb#5)k4x~-BB"?F s73WAAA)H`AAyJ?u~ X$+@=n+1-L{cDI Pg7'KhSZYX@GHf˟-T2@(:,4:E'=ϒ^ig;6ǕQ}67KJ##l\T%4CAcR(#U+Xx\>nC Fi#   txBAgaLmrV >?\(83N #9?yVD>Щ@ZH=?AlEi[46@JdV1FKъ6]~8`{+-;M7sg0ُhcJ׈ш_ƾI]  @Jq  xtv!1)BA%_0?G$?3@RE z'P +'-@i$1OG[[nCgiJq"-}%H9 W(8=N^i &U}K3̷J=,JZiچXz+S{Nе]#C-Qؽ?LxJ(qS @iRti;7*0⇫?"|zfAAA a.   ^LfbXWW+g%6zwkx-M "v3/gsqZTsnkR#Aď_9vּw}FF7#`Cܕ:hX?n-SϿ8NW/JHcGI1@EP[Tt@B:4cTE&6Eo(5?"}*GruAAzf0.L_\@! HSz` sSvȫ\bDN # U3 цȞь,:V@Gtf}2?1scmjN䲸? Xf@U/d$F|rrJ #~F!bƿLj?q+*-xIzGjI(cvcG SnTc*Cv0QUκg pټ}";;N$9"AAAG a".N|?\Le A ]ZpT}![9Yߚf>Xyh . =Nh@-D?;%Ɍ)#?oɏ)~'ta¤qz| Z=G65шE<83v$Y1nPu@%hhFLgYA4"@ GCf>?v;9%( A]:Ny]ȟq2G`%ЏCAAg J\~^a&3@ 1V>B̄.B_CV}Ͷs12G$"vEN  FHxUf-L׏:F1"{2 J%|BCܵ?"L 5M~quJ>h8|K :4&A7 GM8FƴB7UK5+Gӹs?FG u|;7#}7?<CK AAA)QH㏅xANJ ߜ"65g+z|S\;N~YÕaP;NQ@LDďgTP>5 "RJ/P34,aŏ0@?yQGF-c5ǩ$Qݵ;@jވ7#~:V*AnkGw45H?v:}?Rc!?>A 0#ďV)t&!cߔ2 &Zd?in/'AAAzq '0@ }Le/nrn!סET7?wNgg!agS@9k~Ȥ~*g"@@fW! F#H:2rVtd m<敄/ңƲyVkk jI tp13CEK7H} TBe-mMttͪIvmXUȊ -Vz;asGc~ 7ne\F3M0?GIPVvFV(ݶI*z1FYďe~A!  @vDAXHQVx"70b]7C` >,~,~ jO.S?XF1 %g:X1"DHU"@C%E?~P?Fh^|n@,I( x1c߼ꉞhĂ`[YŵhW/7Sn"i'"*FwHo\g޻r ?F *"` 88rY:<\B$Ht0gt{|ri@/nkD8=Y˟<=ڲ8]"N7Xtb=G5Zt>NK a#tϓJ1t$8L[/I5=),@e'@ -3cX-_G#4DGU*cď-#lH )}FO. ?,z:s{~A!  ңp s).^`1@ }3) 9]>v`@{'89˜{00Hď:Kt]@Z -0\CT@jT-~2wh2ywSE=l>RϘ(M*єqOM+OzJoX;n9J?}ҸA)cƿMYomwOJ})ZyEPQ[ =oc髱@iF V'韶[Y.G4MXG JhΟ?^'|#t1R˞??/tW-~=uvԵ|<5M~˞ٳFDa9sw#A RZHh韰vDSYYhc#MAďB%_xw{;K.@a{3\ƅQ]=c}~ci6{ EEac'Wv{%] Z\pkteM:=-ULSmZ6g̎7lX35vAjbXXbn|ka!DI,H'bF<26 9|}H\7F=u;i^9țUEN9g`kiJ$IJ$D"qة3+? n v?j͗Z@z`TD"q$@F$ھb}RKmdQM}>.r=HE0Y'jSp5:9{C-E 8w:G4e[zXA ~}G\73M_ZlVH㓂x#-s@q Ķ8@Irq*AbqA 髼4Ϧ#S Ey o?SaP1 0 8`50fxEBO,?ĥTj}kCpe 0T( SwN2_iPmGq"\UBNrC4/=tzH" HxWAP 2NB}*$bi ;(ГhY[hy~0y S|öYB EPUՅ5tWi7u\q2˹_X"`SA@DCC<9{E6pl~!ĴcA(z~$6E 0T{TuҴo4ӷ7EP1^ ;1:Pg>EOy!w h(@( "B+KL- qdS,y{.Z|$y0t4[4,">DX1kz[t,]<^fܸ{}7PRHXe>Maϖu'Vxpɞ'|q<ػH&N H K8|ag=%wl;ٻ!jԤ* Fln]lhyeBƯ߰Wn#/]gi#O*"gc *W BH˔m~ݻ[y>ܲN)R%5RN:ssw6hE߲ku}٢Ǒvn{\~Db{*!1'T%fI_;ª (W]x,~e& @aaGj:` p4I?}zl:Ds#1h6Q>0 #N7<_*\RQ$r,۶b 9KEȡډxHHi] 5I~4oG䬜=xj !O ^A Qjװ!D6!?#e!=L3 :( xa|#\slWce SU+j JҙԾ Xe6?~  0 0;.. πM#Qƃ`Ħ0 à_!@5NNw7;EJHU=r/3s GE^,^ETq0';_8QEﴟyrhmBIˣ$UEE(Ut< "(6}w6 'xD/N+8,(S1j0&6îWo"8O(> &1:$H|:,bS8\G ʛ!Tt^EsW LTDS":.@|$Cȋ1Z.Uɡ׻~  0 0+=00ĉo "АMi%k!Lc@kaI'q^br]Ui˧+*{7-zwR-o_!^RgO""X\RB#BtWfyyJU SsQs{2X7%%?2O?M $}Z*^Eh M~+((=Rue&aa٤AR),`gS `K{Hr!a,(EDItŽ:tyTK wIwÝovf2j!WyNsBzPcһ i/PRRVĈDč)x8f'L\]mdu ƺrpK4_=PFXh+Z亝l곆]wq/ Qr͍{`7=3"#!AsiNp&_xhʩAE]a-'rCCrBUC>#[JPt:o ~P()'^Eϲ'00 0 La>`e!`0cz`*o4^N0 "#E85!!ʏtdۮ>wW\r.ރW@D$`"O-trD|hEmQZ(W)z)rJB  C@q(-/Xh3rv 9)uHc`dP@B /X;&Y? AVA5/mreGh}0mich =Nr[-%M$X̔ohp 6 yA ۑU4Kս "I "lHW:HK4Gd3+d?OaaaƙJ&8}zB;SAX>ɼXzI`p6Q5^#۲avOp)i7Oj{E^i+gaɹz:2TkwRZX*x i|GP<B;Hpz+v-ȩ.\G]UqUkzd>j*̃ҡ)m{L7sLuw>E~lmKW. WA[<#]v% R29>mpOVx@/,񰉘^ʸ~"ird]H+ &BgQI?r *QrѲmۛҸl "rZ6& @aag *=J%..!''*`K@ /- gp6 ƣx*@E:i.NѴt'~d٫-Ԩ+C"HxP.~B >^yHͪ>zg)--_tq$]7qنz=KV^=9V) m{Ùo:ON 2Ts jwOBvK{gܰo^ǦWE݅_u&XB\-8 M6$Mmmr'0yk0L2 0 (I(8 T: v5{z  Bϖ FB9G AqF?O  X #xRpA߽5O;YW}V;38K¨3|b )\&G%;)nL9&vK-T ]$YS)*IGQչ@a=`~ ɇaag ALlj@1Y<\5@B캄:9ۖ7TY DJppѱr، uP Q\yS^_+c۾77Ɵ\ u3y4 @Ї rgvAOʗn>|ܴgן=o }hHX:l\'lߥ0o1rX//Z3L7}Qh%R1"UE*!uFKę!C jFҮO#f:{,/#0 ð# 0 0S1ǦIoD3xԄڱ\݉SY5U6rPЊ{u*J;Zf}*my;|O|oOhG4bjӷXCDԓAA|$B-CW|$y 9$8hMH~aJc*|L\@(Z * [EIόStLO+|M1z C^62$*j16([hrsXAA !m;nw7n"Ü?ы@ZXPID"BD"_i,`JmEuDJ&rqͤlt?܇&JXja0L2 0 xF0h?X9$4Isl${G-]su:z =ĶTl:Mjv/"2 T>z<2j =4mG^=ȗ<i] 5z:Ⱦ4Z& i=5{% ut˨Bl/z y˵{x!)^yzÄy{HF|^Ygň([|➣~`Wm檳'Q9yI/?u5 Lv8غQH7^U}.=j] 7՛X?ԑN+|t(H"l6+}Q˨R{HSoȡ#SQ4:(Q0L2 0 x ?'4~+T|oiY Y`ͺqdŒD)yh+͏ӱ+v]+je9N@A6|:{]-dhHt"JO]8wU=̗w` ͌77³'i(ESg{h[t+ RIa>Cbgws&/Z;D^I|%Yv0!FJpO€\T?͋$jg4/ٯada(p0d]p g'-c!ƥPm2`a@j%/gn"S=F?r-EO㊺.I{G1erh l5 %.!tNj ĢT> ;V$RA ƅddAH**P$*@d`l xh>*\\ Py2Aj\Ei$9mSB(;jlw;]GbK4'DQeރ/l!J#q{H(D!/(3S@,5ң݃}P(!ʇ8̷6>)~cԝHĹ/!7! |x I5O6TӮ@IӄwuI8ᨈ6׮zwg@$'̨z=>P$攎NMک}s)LjC#(\%:U<Wd+Az} Jn*Jt9 E([uhdG{>^s0~z.[?@qn6>l?pvn޳{/]3_#TTҌ([Մw=}KWSKҵ"%,LsËr`% ]}RAIS~KVB T F*JDJPP6_H{VzHDP50L2 0 xğՀ<.@g6>EA {,\xմ>é8`joj] Q(=I+E4:$ iV J㵿dvgJ$diC'96"Q # G/ }P6@qḹ~`HwqJ@D\4W=FR/ Q!=^+Ro)4!Θ|n~fj6-z/xADX+78h{42j+ Gu2إ@6r>1IQIU/,eO#+{1yx~j.)yT$ܖaڀ{X yT|\! Zh0׵D#]# 7{,ԕ(//îadaR1D5Nv?!U$L23[cB |c&sw?v\^@Uv*=t4j^{z ?/vxnN8B!^IY%_4Sqǐ,`&bQL,jcD!:!؞zhPA &iC~+T ⏨Zj/AA@?5|z {A`G)Cy'͟(!>=o%#AHMϙ[76(՛xÖa&jj*}3e!7q%Kf(G:Ԯ܀TPUx$cp(Bdg! ?*ѱn%!¼  0 0'ȴV[heB; ^Vۑen9nmv<-irX~_jaj f3|- !}^BB?q%d嶎r^N !]x3<1 Ͷ50g %50`GpCO5uEAV ( Ž&qIj/ɅI/> ܭ]٥(5@*]@!Pѐ@C_ -)4"-83̗{yEC ?k1a 9D4IDHFzh?b5+&5 kz>xa~{2jWm…L~(7LC^tsp>zO7k sdG$ vS^P;.`#u$w  ,ewo4}sOdꯝ BHH@!uj_MEkP('}' *+|G]Q&vKuoEÃ?aaa##QOٖ"Hh.ǂVSKnrAX9j,5 )gDVfo:Aa)/5kCręPP/hhj.?7m,:8!m]he.>L!A`G[X: MGfgS>O#$oQuvڵwOk :' Ҵ#8sδLw4[Jt췚I鸀s$m[OM㶝it"m TotsNri ] CN¹Pk!s)ڙFjy0WgF-4~J+"9dל;V@yy z`4r XU!dp!"'RBs=c52vQFג@=J ~Vzqźc~8#.(#)ߏp{ _h2k(QKVNGB+G)2ݢ߲PG,~~3x\tPzcpBX7R{|~"4I'"ݳ̅S5~qW]C'"aos@8 ήScm<;Xm]ua95?uneԷ 4&xo ? <Ә-P$D"cP*43N:UqO7[+3 Lth4@vŒ, 'JؕZI ҖN .X I-ZZڒJ'q=}M]g#m$uv}7OBy2$_į[i(` 8:2BW<.  GdL^j.N$,O KR)*(*11H/KZ@ª>Z%\ am=:mŵ($*h}u^G7oïk}Eې*t"?,-ͼ5 Gf Ofk߿} LxxY)f8; ]m>|w̶xͶ^u QQr2}rɬxi ]|KZB!^"]{1XT u+6#@^~*xhQWu3[oAؾ;gl%H$ @H$D"3 DʄvKkF i&̺z9Nq)h; uĉ/N!kvԥnk5h;NՍVF iP}yh&tbU-ؖ@[H209l*9!(suPVȜhН?'RB32|u&96t~6Oo2C섨{L9̸xNYn#meϥ[% D ylA⏟I"P S$Q$hNmC}H2[imzCHP{O8g *d5a $=tX_sqH25%}{f[|MKrA) !{7sWU~7%D`,@%D6(۽ď6ϝ CIN+h Qy`t~wZY[fSm'rTRPgLd l=Vl^2))HPG'HV@Ŀ_q ]sG{ K1+kb?q:h(liVwOAk6'P$D"ȣOVR'噐f@յq)޲;L(RJm!mI7ZG,g.VԍFY*~F|7%\#"9tÉC]Ae0)R 4R3in.˺5~\<mb+Y>BP _S\^v0:YC<8 | 0pLo~X߆(B(km.5LQ#8 뇡d Er (ύ;X}1$[^OpҚ2׼e;o=sDp *'I=8W=v o:e$5 ѾƁy SFNKf-9 Kb"Ȕk燗4-l)ʨOl=Nk;42uz=x'u8Nr~l^dp>9w-$~ p#`y 9 Y@>GwYH~$w[så_rw%ӭ^^dauŒ> /UDDP\ޑK|zC B@`~T'^IR:cewN,8W]Zҍ|y>UQY _/5^so_w-|9.& m|Sٻ_XZӫ}m>`9ܰj0-xA X@`ŭn!k;ԗ)&X)Eu̙ȩcD-\84>mC%`CqW}zR4|QDD"H$]jL<Yl'X X'd4we|: Y.ZQTJT“1Bjl#K-v6EʕLb1 ?m!K,I TDRkpH* Yj%3w!O/d~N8ꄟ{yRwNoNԀW><ߜg )P Dj~NͿ'/df^**,`P0\ydk4 {};LAz_' =\!]WT1F9L˷n2)r2[g79S5޸s یMQJ>EXD!+3@5K!Dݩ*囱/bo? 5=MjJ d>2QA^l2z1g:wHiy]#Չ`THL<:g!D"ȣa hɺ~dxŇ2+& ;׏|:\iLPc͔v"Ii~%R'BQH 8gQ-" yR:rb(':"OR0 \4O/p"'=Mz_"Mpl/߲NvLf6,(ng>}Gp-Fjsa??gWZ[oߘ|<NC!G:Ү9hY gdʱlUCYȣ(qn>_Qb]'*œ\}?yy "PSOo'6u\;kk AP @ paV=*[8)joߖp*MTXWK@SՄTp\ />F2 /_7ͽB/z) _rEXmk}`ڱY_CΛ@dJvx/g~?r}@ur:HD"H$2~/W:UȬk! TmC2&R4ZW#^VD}q֞Fux+L"<0P6RTI,/Oj:GmjLKdiWPkݵȬt"l,*, _ȓLx>0?2~eu{V=iJ08jV/TٓО7Z?CpTkb:;kn6(@$2ׯHqlp8AN]G)y_GV>3ZUQL8?" ?=~=̟UEgLEaRRhh^B&ζxsl76߾j3LU}zץs+peՃ7N0Z6KU(>W r|%clNlcU(̩ u%I("y"punmqγ[ + ]3B6[&5E̐؆(y$/۔|T>p[YhYpX&-07^GXtPCJz_H$ @H$D"'(2 3RG@heԅUkHSY VtM9nRi+Y C~=r31PUـi4[h,BP+A.жaXL(YjHS`:J( Lrz <ƯdI$f0|XM\焮[.uB@mBaWc>rkwK E0+BO` ɷ1* PlEA 8Ǣ9Dܖu!T gFΚVKt$șSw\F'Z-^aӛc 7SNtHZM/@@"bZ{8@8Gk0VH:Px1ǼpW}p;[  IʺB@tuԬ kZ@H"H$DNRE¿LMZ-~t MCI%Yn6R%AŔ q*C;;ڎ6Mg[Ȅt]M Np. }NrcḈ'XY?̻4,"= fx3=mih9Ε>m:PV{-\D։3ȯ/:s ]AtET}J(:w(w\1 Dʅija](.Aq ٩} R27z`'8DT~k"x_crR<׽(n'^K@PO;QzNz߽e߹(Wld'*FLM8TO:ZBksȈ?nxoRFY2q׊6 8n¥Q62374E6H؄yMZv@7b^2 o!?EW>uH$ @H$D5Ej@,Uh L9ALhkE'mņJ8Y_OR9P\t]Aͤ AkhA-'mmѵIeUL:Y[*Lh[H -cq"OS^teg3pl|X`0w?S?>]@B)g C5s3fߌ2 Hax<6Z`.` V?]~HXū #o01 19y˹y{v֤} .#ٱʦ8Umϡ*6).z Cߊsr@GjOю_?^y˶ ?˶!J'HVwyů}0_xd_8o_\p@hx2F~acsFׇW+\PQ YD?ZwNDP$H$D"'3LdBF '"X+S.턎J c \?-Wæ"KO621=:!h i{''5\AEUR*))^*8jw-wYY*- ~?r^ .5@;`yI̹/qV"<:dsۮwH#G ]lD 6*\;QZUݣ_ !?=jͼt(+j%2j'y#Jȹ로CK0\ jI%$l8/ |&ph J="1_:>x:<^:Agmܻ/_w#_$;bڱE˵wX-eJ摄09iٸѮ6U ľd9Fq uU+jfNIgѻ S T unD>zzJA^YYw8+Ds Rlj_D"(E"H$&͐ 맕2O4`qbP&0ddtd64(UvR+m;i4FݜJj#ĕu >\*LKU^y%c0tN8}iΨp΍Aր%8A4)0/?U22 ǡdל87Fi΅ >zx9ZM>+룈;;/ o]?/]uu|M۸pc "!t ygr&brUB((!^{훎2R6).XCD<׌,=[YP,kZUj mI~\3T(~5f,fpDD9 7 \qΔb#>t2xiS0\ 9, ]!h#%II-HE|1J ľ¨^6U\DD"H$22`x,Ynyx~VI̐ZA`UH(M,5T֤ڭ=~}fJ4&:TZNF}D6]P5-ʒr +r`U#yѕxE,ynvy&:,/4-I #@O'u]e..>"-0R6a#1?Մb3oݴyP Q-B@D(D"H䄩Xr#5i[#jX )4]Wid9%su~@2sB>AZ?+aʕ4WF I*jR'd*ҶkE,9Tᱡ'8 ?xKl׹fĤ]6뀑8}OZ@~.>JIf7U:\kGX(w(^Qiͯ.$$O% A~Q hylQ^K @TtE|.B31nُfu\w]Ԏ#\پ ̏ DЙ:^ qYM aPW<27좝)_{wCAC@AKFQ7n8¯]W/.sS {䶙[3pY;XÚVQC謰팃-~Οb>Ӟ&,{$Ӷq'TK@ f^K֑Pu&؛B30>|mP3wX {!YhdI#pPDй7TUX'D(D"ⰰ[ 5VVX iw"bHM[ :L\4n[͕hi14|@ ԆG0$vD,u\*ϙNVۺa%vW2S0L)?FLˁ c@37\Xs @)KPN f?| ZAND.؈1l' h.:!gk (6*⭱ ɻ:\O#\měb9/iO-M[ϟB3.iS/YxV 'yaI I{ iZ"x36Ǚk˼1|6Y֭Xey.}UU :K6"UOGȾt VF̺4o*(VPhj 5tF3GpNڝc 8bN6)ԗ7j@ 63$*XPUR]@'~%~x 0`>3_t}  w{J@jp_K{i^Sx@sn(n>z[.n!Έ-xuğ㢚GH ғb1mG.َʃ=}&#w{A< ETCcP 2HaQEeO @p 3k6sdT{^K>r$//gbY*qFJkFoLycPk[~YΜ_gOVA.Uzi6L`RM9MG\ibb0pMT <|0O5dp=#Q5*1j ~ٕu&*GVZoZnCcܩ $Ϟ,D"QD"H$IgϮ,JdVHwBjM][N;Kݶ2NDuh rWOhdVs'F:-'u 'j!Ӯխ$<<JY$>)`ǕG# f6ǀ8}O9 B|Sc̎;ѧQz<2QcpJXGU':tpY*讷ơj<"h $4SJST? ZzS~o.A2  #ñ'^>T T? >AVQPAHY)w,/=U _9k)"ǿ!@%63oM{/\Yb{]U(|sL~Qk +I 3J_U;֔OkR&-1hP2>(m VH%c% ].;">wf eyZ+6!jCF7Ǡm)rxU$ QEfZu},JXHp4O'D(D"Hd {,W*X+-B?Α:c9G\j%ݔo$N*w-Uőp_t}x?VcA_85|iE&mlnjRYP+^vy4x%Pc09z' !p#(])C^MO 74Z!WPOQk+=n18VO&@wcUmP[ %OU6V)-̋vݰZvxr.b?|z!hf0ooE~Xnci*E4Bc @M9^Y<8 U-ՇxSGM5oR_8P!>M+O05 > <LeQ*FOM C$ B |ؾ3ctLH,d-LpI(Ck5ZP@CşUT`1ZV;x/Gw-0Z\2t~?}pË's'1Lx9t ^F9-"a {N5͏H7'?D"H$<~dXE2+bU.Uf=yNE,OҾu$fy%14P nk\(#LXo_p["=mq:n\>ã*C4#$ dapv"i+> ?V¥c̺? 3`,Aa3xpR'=w?|ۏɱ嗈;R~1R5^a5#}CZBQ E!@TQ#unl4phއ\*rP TvB}?w_]ؿ /= wCoi_+K9KkMRh=nh/NiCß1oh=M0dh&ʧ^Wd9Upo>uj" \,sd_)9 1 -D'5=Qy} bu(PBLf{=gO$J^sE6-<y4pcva$E'/@mU ̥;kW=eET.rh ,̷@=LA@ RحBZKe@ =|HN̅ AV9ϯ=wu 9Sy[?#;Q_lBм@'ocByy.2UM¾k_eQM(g-tB=Se &(:x.qj}ζ:qYЯ2bfhq@J\0zQXN>c.ۀl^R1G ?v?H$9D"笐˥bՠ*NLPHh ;G`V"I*m*%?b醺}cDQlφq\o5xKo_?9pUonIOL W9M'ξKGU]*@V@*g(8?4`Ҍ]dq儺ms/*q\TϏUWӓpZQS =$A귰ͅ")8z򾊎 qS97Q_ĿkzVMkWt]cy= $DXH\{#Bw(yk!PziMB:#)ֺaŶ?n<?c%>-QaUDxx9~y'k !A%'6Yh)?{82LxdaaA VQ(0ڙpho5^y#w"$!BSH{ݳLs)8,@'0mDj޵~@{!9H51Ėa¾mUD_{ (P$D"c|3IoJYY*`ms$ %BjwwXt1^F^0\<#p|8ثvD%՟YdşH$ @H$D"1LJzZ&SdVP+)KIs\ @FnК+O GG?˔BJNp@1YX[\qw0StNvN"'&\F*t0:.8Vkϝ#Rxk.׭,5Z4jj0 R ()*'Xw_B)wmH|L.;ڴ=%;Y]=_;;+gsɪB XTh.ar/5.XW*E,IͮtDe3@J vlnUҬ2YuX s|'ӊ_f](DG֬ěl$7ⶀd(и(A"y8^PG~ʇ5|=X@,aJ7Ih 8"8Z@{Bz]`]hh S vJ)w^d{9>\?q&LRwQ)3 hXPUD@yWy!=; C?1,wBBLc-eWlgYPIPQNpC?s< ױ xHD8-iwXS1ٽ$[0 ٵĩkyl.)+lBK ^om{XlYq8/Z_jDŊ"H޻[ob3T;5~Zs&j$ү #ztjJySG֔ Z*eW/j rNq`q}ѝ uⶁ@Cm"P$H$D"s! TEUv}٩b8ȸ߶2rL?iw ]GK~ +lVRIC5w¹LGJ)63de+a ,In=4mE0Xٴ~g03\LxΎؒ=kP~+jXе;mE"g)wkKo}Ui6*҉P2S,o}~BG-'. 0.?Gt TXcŵrR0}(>g rΘa('웇|{%Zh㭧1R2x~/aUuQWeE6:BYkž E=JHq;Rvɽ m2%DKc~?!zjЋLV1mĜլwa>ly4r %쥽uB ޫ0 ꀕwkE"QD"H$yrri25*A-Xkt# l ~#g=fTЊUX @;Zss PBN;!T&ML N eP8h@!R$:^vUDV~FWum f 4g#q YS8}ٹ7?u+]?kS'xGȴP˦3*mѠL)C$#`ck=PR3~mC"M N&shc rt E xޜxm2 KZp䎰 H.j}#md,ä, UCEӌm }34@)`WGW/XǺZ1 h_Nju+2U>"3NMCLWu*@8oGk/_*o9Z)RpXS->*`m9> k9~a) /;GHN~G:Ȗae>4PQ, 9p|VukD"QSD"H{feVl*X+d֠}Ui۳P+d?B\*0ij#c '$Xn_qކ(E - @]VV*eqڻ2fgY@TծYnOIVR} _winD f5@Q]ut%^nmBڅ↸-8QYԄP_ J"?R 8XޑC i<M(N:o&]@ޟb?吞SEPH }}" u2HQPUҚ8QB=ؙ&fk0͘|}_G-|y 7Ɛ¸"Nmxg9!_ppT:DLㄶ\lb E"ZLkFf Y`ubۖJW?Y/ZV3/* ^/8  28 Sx|&+Aqb d<z%:@MZ^uݵ I_8}W߁WD fDD"H$(]{B6F*p 5|HKuͤ['8Z&E,[ĂBtt8AQSt` $AMuk V Yfheҕ63ߌ?>sq9|{`&`84/`ˁ8-N_3pPAm. Xצmz [ἕ8>/ ?xZb7a]bXx}3Z{ú8-sǯKuS"H^PGl1W XT⑏9!ڷ΂U0B ߾kpeuĉ4Zµg=ce(RC69dkM3mZ~ ^}j"w_ nXJׇLΌ1\2plq "k qSA=tpEy䜵P6e^{u1dyr8T R+/XZmD(NA$D"GKrӁQ57~Ȭ~GCGRVӐnIV!m,dHKA7( :?<)T|- ko .n],.VAnR+3KZWOf0  F=ApQT.MM?.okѯwil7$w@Z9Us"44=Eda&-Vq1WUp߷~upy ޘ% `L+޵WDq~ORñ+ȑEwMV57T5P- Yqmuj*ͯfcȜSDʗm#)mt"GPʽ˼5^0rZˆ:EB$,g^~-%~\4]EU՞c߸ń KYW18ZT$8 T *mD=FG1?9 B MG1Y8#ȋ'§'3Gu/d ^z`{! 8oFB7]LMPJFϗ*\?; k Dn4ء xG}u eɖ!|Eٽ+(MUa+՗oBJkHA[] g3{9ڊ^1BbFɤ8ذ|9E.<^ˎa5#,xPR8v_a#\2=D-U$:jzMC6"wݳNz8Eaą" l,IL=pQr*+7a\ 6%{,SF~N*MB"PP?n>o4˷^:ͳ'+=DչqmWV:}gqr(ceOIׯ._n:x\SHDԠ` 2Q@SPK Xл_90^F.BJ";5`2#u0Za0+)}$@XX,5P$D"ȉ~3G V t"Ѭ}ɺu4?CkQ YR𳺼.bv̠Cwj3 I u"PVY8iBi/uEgکQޡHrzs8O;gb%0` p0`q` w1a5{dD~WCHbGpA;nc_y!50rQ>QE]?KXJC-X 3*X =NwM%M y Ikcj)+E6urQ N@˟/@sE?T+2}A9tFhl"$6Z:޴e19er]e-[Qäw΁%u NJ^G:q/]OZ◞5^%eu鰍J)?q8)YZ ]FZ,k5`SF˼z0P=n=# !\ l1& a z8aoӋl\YDn?zz8&`:c J0bDO$P$D"GRtR(QȞ;Q?2zT0R0 &JQyUK@`fi3F Y -lH5Gt1*}[r)B{3L Gq# 0`6? X { s8d6$A/'E5p_vE޾iqşZ)WPCEB̩;(b=دɟysQ uBq;B>Q仩$<\Xl.`$!Բ+)!p@뫴֔=sYZ̲wӾc`u }'ǼT5#d)"#%om jVK{y)w?ŏ6pY( .|@CbGLJ%5=QAA&+63m2w͵yTM+P_( Nkaofed0}\4_=v Z6t Ȗ͵;"PfюIgHAT|q!FH$H$D"화VVAx):fJvKpn:HSBތ&e)=a]It<) v[CDXm,\ 8ֶ%}CTŀ"XirD?Y]ڬ եY|pf0g?P)6iQ ׋ ҍ uRG~aQd[ւ ,i^*} \[ )X[Y&WÃd'[OR8PU@.H$ @H$D" B9IӋ`3V"l%ljh4֐ tğvD];< 4~]'uyTfW]pQRM?b4ƽTZI觤 i( 9I`!` $ꄠL AS}ȏ!B h#th`㲥n 壗po{ aO6Ÿ/[gz!=s|;_p.j$Ͽ+_i9E4v?H֛cd ꇗ$6~1֤1y=- *yS{Q+tqI82')%w /q#O"恏 c0cnO'amV#HA-RH "B'`],9A74y+dyWgqxc,(>H!YrR9lʯ}-椓z;|B"Ι?.U@7gm N3 FIRô_@ʆS y0Y]8ºG4O<̵ʳǨ&;,]=^W{)'{N_ESU VTR&.4lSG˼d}ɲ u1~B m},馅;yboQQUr,/TH$ @H$DNsPPPk Ӷ[ ˤmK+5CfVIf+Z?Oct@( M uͺOLFt(U1̯3~J+bx6=p~6 Jڏu(N0rdPFhlol9l %~V^dR\ҾqEz_.T.dm;(< B]Ji}On e/D`U@Gp[oUTw/o8|[2~(U#Gz>#|;_;8{;Or il.9ȸP]K)ϛrxD!k0B_DAױ_9q*9gmַ/QE5Ȯ=m)ri8#f[7wTUQ`(E"QD"H$9>(֯>":^Yl?&@``'Hiz@H1Fi4uL6ef薑y2MjAm܎}r?g;@Ҋ3y =2lW@'!v6!u[kAL=qBBgj$֑+f8!2CհN^hPo'Hg9 z@EA֮+0/ 뵜_"kd^"ͪ$D v>=b⹢޵ T U@A18Fe:HG/sSa >ȡcY SNC KgNN' )`N{*ϟB 6/XKT_k`U(ӮҾuAt9 2LwPyzL5! b4 E(̷-v!\[_4ECH&  R{)BF+ #vBCK)_9`!U2ͯUnkb E, + -!O!ϛn]xx <m(A_cD_<\:ˊ:D"QD"H$9r@*jtD)L:V`U̱QiV@ 0v ՑgD$-y Dan!+n@U\Ro(~Sƕx#scq#OAZW?f0erY<0:ңn Sqؐ;r@TQ@EP\<lj7 ,^0$cğRp,ϣ|ka&L .:,dF`zD”o"iw4.b|w # +[ZPwBUf56虛z?vOxTbH6%7U1Py:tG'ݛB.$؃ U3#)x=RK-3O},d0g] F@4VC]<۷.;GM}AH`α~o?il-?}B%S:5fY] ,u(Z9wU/malUdD vdc--һ.7wEJg֝xm[:BvZ@ KlfUtDwݒ}H߸(ߙm+1^6츨C*j+ ?q笭 'VY#6dJMȶc-u;b"@# SB z,Գ #/RxsR2b1n$H$D"AbՠmԊ'Zɐ,V]FtgbAהh˲{ Kwns~fwfͬ$ JZQDȇPH IP0|PH8I,h `ͬm˻g2Q*kzfvvw/F˼.oʯsZC^:d?Orυj, h|Cu'l%J5p sbS3+EPR2A=q@vu hyW&;M+0`ϐz 0@V|%G~J{j9y<-ڋHz}>Io)-SkXoo-}5ԁ!\I*90R '% rnڝ6ѵRFFr_Ⱥ/6Cj࿹cnAB7fr勧WnL@@k"l>7Pj8G؇m&ȝSzQHIӫa^^ s !{51tᯯ`o|]U E'D(D"" V>dt:.P_4d- ! ԓr kUr阕Fn$ @nE=(kx΋?G$РW *Ў+;!@vB=/u8)>cQ.W~?gb rĆm=*YM?BjQLpybe~4׎2/v$^u'tzOcg:uQxdgWqz?vrkn=۠#jfy ,@N A)APO0<|& ƀ'R@<~f.(wHRף^u㻌|@A@@S@@\t12rvWU2<[~ u:6 O/e c5E3{ N<#{ujN׏›vrz?D矟Ğ^@[ S~̎7HnhG<9ˉMaZxmGpmEN<;域Yf[ì A׌Ȇ+I*c}H($9YJ\?dWܿx; sе0GF7Wp :v&+BwN5\nH$ @H$D"U:B ZAbYD#pN\ ]b )0 Ҥ (ʹ?VG.͇zԅz*F"}@j"[OP UPв#V{w.39f]3 -V;~sK(B9`-.NL_&>8 tv_\./`Kb;?L^Q|P)]_E[~6xaᬗ_DpE)m ֆWC(Rkrdf4s+\u&`n>^Yk n1߷i&^c#(?D_ۏhvK+i,&fk/H[{VOGܕs/O?=;x<ۚ†z\峫R;&[ %js3TсʗYr8Pܽe-cuonRp uw eRpfEx}2.:UqSq#(E"H$THp yl~,"$KdZ+Ԁ:bd^gW&2ݞĺ k[32?6OPߢ.市H@?ǩs은Vb@"~$?؈&X^kFEH4#Ŗr@zԚ#=Ll C;dO7{4׿:!C1'|@}հ@?>]Q- )6Bp gꅅ˝9B$Rv^ZOο'vE 38ٳ/:8+V q| H;ץtzwΖ_Kc(X {xc%fƯ c !4Qv?xm?|mnm^3֦@HJ??񕜏l Z]rA!}mU*}r{ytC?v h@[=>~\0QG޷i@ZB4 :{!M.:i D(D"H*Q\yiyȜ_Cx9/ )J E Es7<9?<9=*9""4}G~gru_vP<π8W0ds'f%ox3 9BQT~Y٘sp}*t v`)K\= [W(/Q &%9|':faH='sb_}ب)DO k˒ɝE>u&taX+;I\[,`mx[bcI4 OT8#Ҙw逹Z EttztI 9R*J\W<>vbno'7Tt'iqz^ERs ҲDdOg_^R!}jMC#o! P^]^gVh&88D+T2Rw랝gW kFk$ J?T6Xy\?>2 +Ypr`k +9Z 3lC`Bxj}r.XG%gaDB4E"QD"H$\!U#ݡX]aȮF#:]f 1"EŜ\Lx ? 8F닺m(ҷM_.\\H s]O 8o:zվ$xSv z|f8vj,Hr7p]nCyk=w %uڇݠ)[v} Om4p\kfJzT}"Op%ѣ("+>Zo~;6~[|$d5 a}Bw@8F }_6jXs,h8r8D &=yŅV3ȍ&Y /,@af(f]"wZnjk"J"(E"H$PM=Q@d Yh-Ʌ%\Kv-S EE*JbS{y 52o[ۀH)@"73NHQMNPjvUA _[/'jQDŏc^|}p(Ìs0N_&$yF/ Ī' ?N(k¬!]q}A3Oo 7N($\;wxμ<7Ud0_OzVL࣫9g' Q'εpf[<}ϣ0;q#MS¤\DX͕/^4ƭSuAB ro %fzoo|&|h[A0uF1^C)h// AVnj{ wO>ko-;JV>5 #ic&w^cHN+1[$H$D"mU@P+B;Y+V,"XT|4iwA%,Jb4? s$DAnG0YG=֋?{՜~W0y;!I;!(F&A6λ!R:W?ş_B %C䇁[}=݅~.лOOע<„# }w6@6ㅅ]FX `}bfW7'HB*ש/M*GYGա@9={|򱅳#WWZNLoIz:_~ Rrv>9E`c{or(E]@.Su-Ȋ8$\?~D Ǧ8A9@H"H$D6$e" ^j* P1`|"ZD׉ab b 5lv{AP',$ 8bco3z5PρND6]HR+vYr;ņhQ9g/_4r=Jno1$n~_rƸT^ϓO!\ɵ/!38тPHRA sMza fmy'jJ rpy DU/՝02jdYG[[vo]b.,8\U4T:3nH3Ytu?fĉ:K3)1=& audJ B}} j->̾}x////\80/bf gY[ mj |lGz$A" 1v"{ve\"r:y(pA> XϬY)!] QPΪgTVN P$H$D"iVk ^ȣ +UE.8TY.,>"JQ!j5a)*zy #y築[#}.ۭTwޞo"'X} 20B"ST!DkK!Z@JN?;DBW*' B<3fA i,5`gy d|[č1}sá8RP D-(`NA<׏ϋ R'NDPԑ{(~GUDq(n_Usm^},8BW|P ^nBř `4h߅$:z|:?*nӻ/F;hvR]DйPP,} Mw,[om RIE+Y͔Gg<4af0!Gt@E wLa>yEJAnG޷& P)sp}e0ǐ ׍"NT[="-(fH$ @H$D(:Z@1tm U^06A6kw ؼJ>bszݮ[J,~V IQŸ`5Vhon}c@j^O@7`$cGǝCRN0 `&ۦV" ~z]- |.B ?1& ǾN? b _qcB&A JZ?*פ8}b%qx_4N:6&pZy# 52:Kyw|x xX*Wk{|\őɡv]SJ9rF;~R\wQndk^DJ8YY/J,gWήGǗ80Toh \*Pv$4مaJ㮫#W&nCnFRԥx5"݋pMX g rۄBkK.]q Q<8T)D(D"Hj9z$ YXPesX bbyUh$d /ZP\륨誂"$K-<%~3ZqTsl\H| /QM|Bzsu>q(U?^ 1l!har^I]3,ᛏ<#{aދb7W@CD5a@3£Y ȉ+)?EbFTs!PwPԂеZ[8DA3Eo _(Nyi:zo}rpTGJe9Tѳڋg?7vT&}g z]u$_(:ޭHЇ tp9pϜ\?>(#A0<%V=cK/ m>ɯf[#J6РT ewәUKa>92@J>>>4 =v6n]#) t_ B؇+wDQ^e/uѤD(D"HdX* y9oZY+X[giXea1P 6MjOj̱m R*%D~)E~׀bw ,.p]_x G-1Zȋ յȐ캅{>G60،E ]s)q` \eh+_k?/0t⵱ŵ.-7wAڹҿmm}O zx g0}% 0Po{]'^^r\72~d'_ڋq]iqg&׏$7Ef'Nk^>&WN'3ޤid@; :W_~F*M(ϣAf) r;]-2Ex }n>e>CE[% _'A_(/#k _H$ @H$D"$O\تC9@\)rɒgw hMˋ1ٻ,r94E5A-y!Pd2ͤ$O]~r u7 l0S!O<7eM5WH ՒE߿~Vj/\E\ ÝY 8_Q^wu#E-@V~tǾ@鯡%c&Dp -I|/O~s7hCzoՖ>>Zq8pCS\:՝/%(f.R\Z4jOۛ~^o:Q@ ;~6}~]y&tๅ,/fcO/]_\^loR>j@RkYzN{eh{y3Z#YosH@bScPOP3'w80\.B5ZxaU%{/cu=v59֍Z 'V]a4 S0V+kζMñ^QP,v'P3NH] H$D6CBn5+lEDre/y-s:K u޲zs `at*컍Kƀ יtQN,^'&JO[(nmd:>}+z`0SV6"ŸzO%CG 6mk݀AD 1N08jK/|ssy&':|=|]SHM!$^Q#1t]i^!̖#` )v=h?ΉA1 #8BLbH]Grl]pcRnk#$w>|ׄckom9(8(8ڄ] i#=>{U4U\}꾶7C FBP1}twsx!5%{j9JCk}dcMF{ N 3 ?OV6I~4J7f0WRv{¶|k'`K=̖e%r(lipEά,APÃu( ş;QeHUGg?J9ߏP$H$D"$^ݼ2 @efu7|#f\l,/9|a&Bvm :oկF?#ku|1wns/x<緗iX+\?FEhw:o-Ny*F1ƂQ(?+rauJjtOD>y\HgOl7/YC wP ` LJ("`DmС(kdǿΕ 1_H]X_Ԓ88tyW<\%tAh(Ldƻ&ʎ3Tn1#xAh1{gJ :T+>8>}a Z`y  ύɃZ]%{": EY9WV;h2H5nsh{<5ףk@3`%GI܎(rx!`)C_XK@5#z}vG@ߟ{-(E"QD"H$ـ̵i*ӫHtATBM>co?p-S۶J8702S`bx0^;%< b1Ker@z]y0";& +cKҵ((" b۟#1 *C4ԡ i/ǁ!6c.&@`#@$q5@BHR ft7遏av`S z4kΞ(K#P*ʀP v#7M ŵɟ}geHi.( qn^7o6 )@ϟb04tH Tuaj]<?V6/*Un&6&lزjo.4ygn6g+;d\B/0pp! uxu1Úcr %c!t{Ba3A-ǨzreHD ]:@L_z~ G5 3h D(D"Hd0I9y$,t+ Zq"昽m5/؊-0<ƛBD~ ^6%eCa;<G [u#lk OÛc,|s[(+Ȳ+m1*E8{s٧pd/=0$pw)i'lq"W$t{wD>'I@b"0 'FH|dۍ:?"?4`~LZ7O1CWJ9 #@$7ݍ4E {ӏK eI@M}Tv@.w];[\H5'\:CyoBR1] $IZ=[CJ*õUe]udeC$".@jVwk&i!h?LrdZ&sHy/#]̈́d].tr CU ?Cա[Dq kX+kK+;M©C` (pP@(P$D"`?xSl --m#l>8Rżl_F(RZⵈ^@Uc-\%@,fɒ[v1eN79mȻ{qPRsi^TЊģrS#ҽ5R Jo)?jɽXsrH:#e!S:~%!9P| 0M݌/Kɑ:H&kHq sTK, W Q6XdkI|@RRO2 8T)fiAjC$7݃{ğOYv^x {bnbvphlZ#E i%$OB#Ž,(npd%nqpƋK=^Z)2Qc5S': Ǡ/)-~TC!'@ =EytUs> [vAU(E"QD"H$~ɏ};^ȉF˧|,TkJ :jȏ6;R`p 01r,YUW N@xNV-/D(A\s ose(vKR[Z۩fbq:Gv~WPp9ܦ4Rlo~RAbFr}RĒ{!Z8T9ah8WWϫ`}tн+ WP0plm_k>;'Wޡ<>o>ܛg9u)MY~|k|,vk믃Ë)hU%8?zIJr9~Fó ]NӏnQT;@'pMZf 9F_^NHpC(p(PPP$H$D" Ijd; ]^o[*,,&wS#: ƈ)Зt,! AO]ALl0"=wO>h"NxGqX]+k!P7LF}BZ*3@Sbh+hYY-Kf3;n5/21ch4 @rW}䍾 %}`a>?!*8{$BGd.9o^X7T$QEjC{>B2ulGKvQÚuBHq>tsc0;^w:<:i@f}k)\Wp&tsSGSM KkEݳ~BqHup?D6'8vcPI)n3+#jVWp-l$4pE:`,hԱJpW @n Otx 'Nux-u1I Vːry0/=Fw+*DP$H$D"J?amOQ[^31&,V93J̏djKtqD℠`jmD'1?1&x E2es9]2ZK<$WgVIwl7/2iVMM\5(ޥ˛ro 03*I+X< h|#f0rs˄#bE嵀/1[CH 3ϐ]wBΞ 1hn%mssuyNϭ?|!}u\EV4=C~RU >pPpkjdɑ]G_A"Ɔa}sU9s Q+(cGC7tBdWBd6)?J'eO^"n\3rd+KB#Q; @h Cs~NB@W|; ]'Ӯ>P SBDD"H$RIR'V:"^ fSRs;;B}h4),6ɔ&v[ P"= = ([u#*rEvm!|2_:@"`9>m^$ u}Wѳ3:ctXuZke%ATA5r7< ?)p/pP Љr$y#Hs¹Hα^|׉D)&rb5iSĮ%9\3hx5z{H5 lbt_{g@ؿRH!PB+7vs4,σq1 2z&'63̣0p='&UB̷Ū aS@! BB:C]{*ha(f3 0v~BPxcz~}C //" 3_!H /=NU MP;h"(E"H$ $K;Q@=}lyz]auɰ8t,R݌vwz5!9h 0-5Zح (HG! 02NuDM覬^9B@-U6+ؖ_kif/02cd L9^7\e Ѣæ 哑Vj>8-|Y0_$-EuV G ɁH zi~6cbϼHCh]i\Qw0_N!oDkpp^_Ŋa|[7 @h~^!ݿ}:l[5A??\em@h~n%mNSnY  tXCP2jR! ' Zűr(l0>>G8U&9@P~sEP$H$D"$?y^9G=g< @k.K5VjfveN>,f aoju~h8/GPѡ@-2;sRc BF ұ `]f 4fw/l3//!wxz ?ہO]D :!\3grIAw#`Gw.|- e6T> @a.Ĕޭ[vb|m*W /ZQ*T) ot$Y65 jV1k2KQvε/BBZk wA> lk"GG`($?3IOҢC H$ @H$D"I?{=+JM>tkf KsiI:|A: U̱Ugʿ( bG[ (E5`l&AԀ]XYy3Az@<A-+s1C ^:Cpy{G3Ʒj4dXڭ=ͯO> մo6>H!|ƝOH( @ZY}-nBA)(-Y0[}77^"{Gssq Sӗ7)°k&CüEA.85TS^iB@(xUu@@S!\}_a|ER U"+Z2:,VMew HUcbs TlrT (Wm[71F`@QynRkIhx4G:_'U8G#R :" 4 y`3p̲Gi8PSH$ @H$D"I̋3Gk(⅗v:Jʒa~&ay!aqvyƷ\X%y A9(`AZ{Җ XZ@ #0 $wpj b+cW0dhr)ZF+c46rɥHj_: t[ >1~+;7ABG6j{ң<9Zq- #W-^E8;4DxnM22˽R)7a±F KZqΕDc-쨘'UE@W+y"P(6oPq@QDޅq "H$l{dIֱjbV0^Ř!10J~d痐vNࣈf^]EwGw&oԂ⺛eb ǛbO>D, Hlr1g;е^쀨X~0Mh 7{qYqEKarCI1bQ\Ǩ'S> \ H$i#֖_ !5jNɀ%}lw@Prr7\s`.F-pBv8&6sj=jz3gnz=Ė.#㹹To?\7(΁o Qt~{C5]@E"j9TMv" {~M Yzi'xp%E6ȵ:  f/77^!?6wT D#O^qs?P؏fk•52,I/5¯pibzL=E{Zw`~QV7sZM].. 7<׿_˲ "J>uq{%d ?|fs<|X?"ȏ-*科 YQH d{W^EvJ~QB)nQ:WJN~I@ô)§z)PriJ)@kqOů/͗]GםW!@nwPyn&lU1 Y6wT %\P3+*Db#* WvONACַ(>a.P$D"H$'ܽ8;8`Tcy1 @yI:D]c4*f8pE_!yfRۢ]E~8v<)>+BZ1ZZ,o q |L0{.f>R h#YwU`e$zz&;htK^ίEkPQ;[_Iy`eLDm%'#mO6EPpB )H#_F̡R ^Y+\:mՍ_T|@0// S5`j?p>S^'_?)y{އ\%yw۾E#T8^G@{&a넍2+ig5/[uk SrtCar*|Q*2nFn Q7w |B(n($:"(E"H$lNo6š(dzn:Ϥa6&F߾&<4E,?&ym:aMxnE[p[u!5 :Mփe':(g/Hۮ=sdm!رGG wB:֫hac ƙ%|2TVQf2i8H1CWnzHvR 'no_?r";*B' T%jW\8Q#BBAbsxmcft7遏.^ڞ&;]e ]F!E`.<>`b @_/CC*@"(E"H$lN2\}jp*p2Hzsf-Lښ{"F15n%[J^^So'ut+BPC6Ρ^eXB_%p.ɉ6TY : f#woff ] y.7zmti]b4vD1 @W߸O䄟~@J5WzM$yG ۤ6Fs흢wy砡} [ @_8&n&~cN=@~)P-%J-b? W8}%e$q9 ,C@m!\'G?x34"WN3H/lCXrb9*0ppa~ nE"2|@E 7MDr\𼏀]r_zekRj(E"QP$D"6/9 riujՀ /ћg <*֐ܽIaOHnN4s ExrLm6GG'P1Z׷1NjFuO{+i{L)tcNnCWKSc/ v0!!*93q׳(&?Nj.c'vk?in~cs<\?L$yfsR?%JLL+ uҽq%iauơњ{I`b X]wLn.9B[瑅 T7Nհ/K*R Pb $`Wb+XK AC[/|O;nf5\.vv}TUnoba` 1l< /h;]4/->gv "'XD@{O_s4wT ].>69+%$ @'\3+ Cs$ב(uR?Awi՟oPύRi w'rp|MPҰ xBEi{tC#x9t Tݮr.?zyUA,O|iyj99M` ֪ȅ"v8V(B;KXo|D(D"HdGy9xPUPPYXҼsuMFSyBwMM6OfI!}|2/j֥${]DTbzǽ _aݼ93k,eSaxb\Cj˥jb6 5\5yOCCVAVn3[{`qN:6S@`@Dt-S;&0q6 Mq@㏖H$E99,HpfѮ,HBWGbJIs龍)njgxm XmCN(}c52 R9/RxAY=[?rޜ`QepٔXnylVl\E8:8 ^]'bT rMɭAWX.X?MH/W |'R*?>|qÜd[n(h"H"H$ \w; -s*Bn䭥211 獎%0GyRK$ ^׀N԰SutRv4h(@q}a⸙!g:S$'W!:P/6#DYv;[&: ޔsdb0[Xn/I'_UI,bIF졇udN @NI{u@'HD"?Cb!|ᙔ¶M Vhc696DC$C w.O19҃jqycm{)noF<,wfEPPd2x|M !@E+tyM:_G?8T4 @H$ @H$D^r,wLEf;; A47Z=4d춴TA4hjAkфk7|!Hva ?tan1[&A$iB{B> r0]ED@6k BJ5NwyD^dcmGoxJBWPͮ~F2Rq]uVR.+z PTx :*">aΟaDy51N΢⚼6(E"(E"H$yP +mSnK{FTkS&v>l!_Gʼn{yw-5`b ԯB:L ˄ꝷ)(Eukui$h]aYjKc.unw۠^jca Wo;ˋ0w1?Ⱥ $'{=pN[|1c;F6Ј} 'lsa6%+GH$~8Zr 'l"D H! YVcFVqXN} zQJ⓺[µ qբN/5&nBʎoGOd^a^pPCQ.T;|?+UWSa}畍1!ZAw rc:MIex6~& p R歺\ߣ(żE!'t<T@8F(D(D" VۦO_\h@U@qO VUzjPc -\3j;o V7x.9Ef:͖<WG%?27 5Ï< Ɖ>ҷ5`eLx;+XbȑfGjcx̾~ZGB5m;À?>"O&p$21㎅9qCSקUڎL:hgwg+;wP@$x2SKW\YP$FwԘZy1]9dswH-ѷ-XTpzNUV U Qz UH8U?>H'Ke&O`JǎBlҽlguX="m` h6$@Mt{h;nBHZ `.I\`h R}}_m՜s[wlo?v`se \Ud9/#[vM9tClvYFs-P(.@jx6l%y{Of^Sc0@\)6r+2_6B ](1H <`M{SP{zkx 8X#PMv"aX8JS]"A9NJP 2՝6|dD$yߓ&pv40>lZ&-:3fّQH_}}Dh|80ѻH4w%NsU'ϛn&R.X׮ywԇݏ]W;iH3O}x}ꅧIs\Yg͵k'u7ǰr_sp"1[ji EaT~I5sUd89.D(D"~ @IW׎6)ݭɆYNJ4 @d:v V `~ _zQ[h(1+`OLf)N`Oݮ ?ƕ0 =H\aY(ke{{F+44;g_gv`z֒$zO /4 $3ǯH$ArUDV5'pԸvAy_!~;~oe@ ljaC@C߯Pb[ruj$c/_KZlBk '?G#\=ƆVuǁX{a~~C@FēpZխ "DۍuR'_yrdw TOFtE"(E"H$'?7֝~B+SOBs <7!}Ex 2J reրG=#H@ 7v v&;͖%hAjxwa6lo"#W"KSA_eb>Q]^&in&U/%k yG06WC$ @YB ZC0h)BǏgd?Ozs #ڏW E/G] !RWddGJ0C8|ssР:ŋ@1\$P$D"}\:`.-`E/!'݄>|b^&ye a |⑦ `ԉ?-3h~$_{V)aoIҫTٔ3 Q!-FA1JY]jo_>swȋ?' g2._.7D$@ @x!D!.LU<BJIf?F%mPb|?C+ƌ .a&/3:/\T1$`|B1 wpn,>q'GL^mŌqCn<]}]$#!5oȠHBEQ(<2zwPx zNjQ@NrD(D(D"Ⱦ @䥛BѢo0pN-o٧O/q$[ $lPj"څ3 @;=_=@g>>>! %yCfJ+Hi͂[V"FO6Y$*Ib+go @Ϝs|:^47"!p8R*E-dl&:Nv૘3`fR[ V~/̌ɿA~!_/ƌ"Q5ta)0"6@ lG~V|7DžZٿ?L"*Ԝ7(kāºE5,'gkVnGM{(ӓ݈?Av?P0(f|@ wiM;o0gdϵ{*8bH$H$D"^2n%}80ܠ v`(F^n1}eOhOguB'SS?Vynz1՛}T} jAb׍e]l0d*joh +-H$ &\Q{rvg'B'>6QO|.ЏoH$H(̟Sɵ2 41dd0)EG(5ۼsm>\bFFy}]gLMD°o[ =R%Snd?óym_rPOװ@>zB` H^q%'fɟa+4[]o-'w3hg$ KYLQ,wN @U +8Dj Z9|=f||-#>hz&v]9g0@2 Sdoqy& 4t4RHGkcQD"QD"H$Pa%WNџR*hto'l58 =u#TX>i`϶?96'͂UWZha0Z|h)rt~8xGc(0Ww^) >p7װV1o_gevz ɔ$`RR>}jɣc / f2_ފH$TaD|a yz~i,B2$5۲l7cG!;yC?׈pԵ}qG7A@45n؏iOO3d3CHZM ] O>.q 5sM*„MxRQ#ԞÂ/v#9@DD"H @.'(;WլYWlo.pYwd3' *CQW~ﺁN5pS3xx=lbO `3"0A:YI+=d@ M!*l[_Id͂aYkL/7 I1bR &Q/yKP)L_>dto0~7iZG ,@tE"(E"H$P/, ,hRw\g{Eg+SUo39.bs`̣=Z 4p DP㯥uۗX[٠==`j.h,IɅb,seekN66 BW/SρqD"@J1-.\?$1B0!k B+'t*) J(8u@RP=-wE?]! Xe2(>c|8=KMh {=ttJu,+Pc+lКi;ٶ4MɾuBI|Pm1D"ZJ hE;猐B:DBA1 F| qaF2!/N(꯳:P}}x>n^?sS"{ 1-Cml/XUn(JD0ƻnB&lX@RF{B\Xa ֖$w<,OW?97*N:^RjYv01=]iZ0\UgdGBqWDA+}C)<_ĮP$P$D"$>)%-msId:a=S?ۉqYY) `jdJw fsVA@]j`2t.h*U:AпJ0b.vOroßΆn~4cmh{5,a^ ?BWViNLMC!R7ӟ\YU,RF"] @é$hb2oBQH;cF|۸ H5O?3tᏍj#ݲOY>})׆[( &e)?8 [0{9pe]K-JcvP XJLgp(\]jR=@3b S꼁[ȯUMF$:XJ_F]CBO0>+R#ԇnoΥbHS#䅠sӨV@ZjP$f_yo9vǰ1zu›b9/Š{*֖w ,Zt2d%QP#c~ H%/D $wE*Ï C$O"H"H$R .4嵄̈́(Ń4)S) UCai[ f0n:G8WVSrL'owD,,llַ / D]j[ Lv5nu lR> <$c @š#HU^Eح0^H"}CoD"H@U @lmoc+ztsà'{e^'ak#@|GpcvJW1yDjzro 2!z zTLJxP% [۪;?#/ 22w"cϢ| 0Ƌ>F@: ʕd߹\_s:d "?ye ӷn o]XPk1'P$9T }\1h(ܸq^P+*K!In cW7$/LijV$UܛWzPw_CcՍS6;fz pP- fC.QZ=  ,:q[/za(^,h6t/h, <<ˈ0(٩`T __D"QD"H$`0B@?qХOZ>j!Jx=lyP)U@|Gg;^wY/YB)]ۡ $7;fsgc@7w¶ٌR93Y}e}֜ ?OD\@`. kNr I*P13}SZG:HsME*;/x:?H$REαCT] sڰnߌ +S$LD ۫se}}󪌊GDVi_p3 zK闙n5~.J$Z!}DRei.Ll?D0h{}0P rrG\ ' R7espşuBn k$QQP`ow(E"(E"H$d!`V?B2^=QYgu{6]''vBg3r>>@:"Cm%W/Za Cw`naf}c>85==.6Auz/L$# ot dN2 E+ݰO+#i|J~Y @?H$R'y D‡ƀ5DPAD*˝ӆ5.\Gk\-Qcg`(YY|ϋ{ Q UC.N}SDB'1JQĂ r/̴mM]ٷa(2rwBQ7#WM@ n$k{/,Z9q('Kun^+^ f  nrY"EN2(E"(E"H$` XUE\\2lj/J׏>in Jqy>R3:[NJw|GZS~PjYuY°p8QhOd;Gnu07ȭ.ts[@@w):n{fo@t?"~Õ *֒<:x(Ad`O/Ciۛgk[8Q{qxxk(y1W*"R }5"Hd2(H:$xuU76S|yBGQ( >/Q+!Wa[6"J@ KchUt}=?O]cr`xcxZS=*ZaeXgn١sh 1uj._0y&F& W/( dIRI3\qk5\@*c}( N,Y9yd@b&6CXU*~ `e~&Ԉ=~P$P$D"p ՟odɕ< *C[SO[:d(u73| N/RA \Axp_QEzN}q/D:L)tFx` T?0~ϲy2杛CHITN_?}5zd Y{[2N"νS+:;b#BP EjD"Q'B/mA/9Ḧ0mǪ6M XRcƍ}-#;@&Ǽ|Ũȧ~vQ=w9zϼx׺>6PY^O+iA@UX9~hŒݏ<>OC=]zns•W3z}sq2c=ILݺzr~8sj wB3SYEFvDǻD"ȇ6ATUx|V$ywu+Nd+Ch3C] @;FƩGqQ@P^ @jKX [ H>ؼ\mO|EO.nl[MKez#TQmJ/!"VNhEM͘(|+^ Ujĵ :u}DMLu=/6k:re+r} ^5ҷ現OA3?j+7(ºZ!I0ù/M{rlc翏9äsԱrfVBQ2 qXyL;0OPBu;!hslǪUCa㿓BH$H$D"8̎rTC c6O<9 Cj5\e({ ۛN8yngNfBa(8P‰>V Т<Gkm}>z|9Y4Ms[ջL{:n%kXr)'V@o?=w-xA#(@ׁN|D"(1+srUj^?>t ~?(?5HT`\52F=?<~OVpa/h3[/~ϊ/>uo &XąxK 56B#/;̽N/B97RN?#ǘo01# A~*IKaf.P .:%>P >R󋗕,Y*k\_=UмZeӟ[~g^͎*uPv郮D"Q qL(yx0?oJ0mP7VfkA`t4&Ǔ~Z4"عK{>vbë\[nND\~W>V3͙Gnyb>]&ixJ[k"o=%F}!`V1 |Xk?A](D g ڢDD"Ha8R%L(RST߬;mcϐ 0NkΠ' ݭa*::G Q p:';nO!]c0(Enn}@GD~}x7EyG͛}F*CO=d-˲Dds7[Gd$VxӫDx|:`&|W'MB*@"`(`p3ι $ 'VYwbmx6>@=s杛OՄ[|ew?u)/Ӧ7j0Xe,Qsf<( uëZll @a YOn*p(e.?2VR0\ktE"(E"H$yOhxGjP0br@yPeh!G?ּli ]u5Z-8L6Ys ֕ LϖBPZS.[g4ٶ0g$lucPo>fAڰZec}Fնii'|n= c˖NfzD"O 4mT 'y.#xc\c/`8yf;}O3,>o7#br@G4}rz%νq_okj: +_B(p` <| #r"?P$9"H$ "Q; "(U?Ȱ_?n`@b}o:[ @)' k4iMqEDŽCǸ DjA%_I`نFY{M׍ %R  ܾeYqF@ @kL hќNUFF,S+@n5@7~D" @z 3N /a#U aY%C0ФOH#E AzU\\u*H_^!_sp5Bӄ!jM޷~}%Z3Lx{ o) {t钘Iu Y7t7PmUP$'QD"&H$D K8zK!|,.NB@̫ݹ!pR3SbѧIuK$i"O$kJh ZԺz:V=Ml'|)1n |Nn^^hd2wmgGs'#d>qpkRYkUj5 _?HCH>[ޡ0pmA <\(YEĻTw qB!D))Kh(Sadؗ(HYB3l!F9'=ӭ+9FFU\>v*Q."Tp ۶(|nT>FЊˇќ@~.F^ 1@q/lpXJӯ1si1Q5V<|vifc9vG%K8"JSOwqCȇ(^m}3V!U$Q~MOxCW ԈEQD"G.D"H$!` G ܌ .(@=@cJ ;(h%:}]:[&e-0I"L➸ԷW p YM*t`{PBWK$/uzTK#n -ZS[Chmey1Ȱe@g%u 9oOR$`;Hm#hw\8k%.N'7vq9 EPTj(;C``pHwR;"j]?y`Zwx>VuUsj 0!fPv lwDjx^AQ=>/A 6i _E(D(D"Ƚ`8$ՀO() 5ytORG۽#r`bw=r *۰tNi vԵz0sYL෤Z$ 9䃲,rہ~T 1|@x¾{g66~bj0[Ss`cQ0 O .x^8Ш1E.++|x@NP/@5 :/T0:% _ 36!1UA@ 7yD6.&.dO}^6jYfiu:?|ik.[%3Ke;ߠ)%kM_[y\S7,-6.kfV>̱;kW&ijOk*#m @Ug/YK(ƕn?{C섮jrn]V TK^nwVz5"Is$ `D\g6AC]X'`h7x*+,|@UN 5fT8 `$r% xL  r}=^C2V ?I(|5?Ͽޖ_]Rb)@(p_]p"}\ 8G9ާЋD(D"ȃAfpT>q#k]rw -!p$?<ɧcھ)foO=GNJepnVAa*.NCa'j aS1 x'!LB {[HKObIQ{4qLx""$0A^@°oCōQY$ @TñT5sE\_PUx7#sYŹBqI"_}B_ EB"[vGzwğM^sԇL{̜!oen^ߠ Kx"C_H$ @H$D/8,TrL{'"^)C7HR'Ǫ_?f.V\3MA QU! [n͎AnvޢM@Aw`:BgFL(1< *K'p/$oI^]WXйduHsFph]77/BDt5'튪#v@$m%D Rǀ7eB" S[|ws}pkkdҜAaY?SD's>w/8ƶza&"J> PywD7}@<I@{|7KD(D"cމ?iMUkS w@QF"DP; 7?X?bG"(N88U+ORQ5=gQkm7j ;nA]:`'B,@_H$ @H$D{!&c@5'P]0 ZEׇcbFuv[H+X*R-Oi6T(nRKR[1 ǻjťzp7{BGc6.ElVWEFAL%=N.mrx7I8/}TC[n~ȸpuBgVD>@PcL5M@Q ":"n>fJ?3$&Ew}bX椩9| qs\Yi3 _%5]ટ",շx+KD(D"{G!`dAU S@ R(E8LScwZ҄ƍsXL%PjJiM8ߢx( UP[H],FGwt˧1 C|P1Y+H~lZEwzE`Ƕ.,̒[]օBݘp+b|:x']eաt`$ @ z C۸l+Y "'@% !$F\ܱnrs%Gnr5yZ__~ݬG&tj@,o6Q ߑnÆqW"P |qi7I%=G'z$H$D" K3A@(hM>b {"c(vcn?"kas(:nJiP|rgUm(na򎠑p~ZH2?<`;:X=ABȄC$ho HW,/w0o@s+[>’`pd6&S"NT:y`c] xi*;λח#nՖ*bO~vp\ ~-F"g\@mcW/ecKo phi3w?w,#JZG8u_7Q3~qM\=t脢ܗLk]S&]C9޾ ͟aD\:CoOsh_rȇ.D"H$2 RTU*/~~A;*SPOMM3>?E (|< #0Sc`%`@OC'fvş:e9} r^ru7%t )2$/^`.JDP$D",!4'17NI|ٜ#αj5;Hxcy Kl }#i$3f1ڮLmǛ5P R ̟FC.Ȟ;{6Vac ~|Xr䭎+wjw0Fz[tBj I]$8NP Ϋ;=THGpycm`'>.#} tg|rᏁkgWVKCDUџi$mcz2#ٽSޯmܘUl#;q'yߵIL \$G) m%1d$-"H$ L(,7hNUzV5|tP2^>MoP!S 6N:e'+6z s׉􉖷 @}=`vᮢʑ"Uބ5 $` d0)ɳ[̝T-v%W7iN:;ZTT-"`Z`d?; l밵ւH cCFg*_BDe`۫l+e4Z)+iA(bpcDȉ5iE\ow̢`Oy+ޔץ8vM H$ucD"F뭮 @ <:;mk@qKKɸ%FS>rK^0xc+&O<$-`웿6|x#?aL[$H$D"TX+aD@r`YRo${tk\lԉ?禶}hT$to/qiɋ4g LOI?56Tskvkr.I'B ; ?FpbLrJMd+Chf4|bvoPuY&VFs2Ѱ\4V&A͏ZM2>vj֮Z\ɣ%?\u bp1ğ+\|#|0-ψZlr[XdQQ!m%,ֲƸ>ظGׁ8*OtK3 (XA's.>q4/rs?ȇ/A$D"J 8R P/Pb 89m)&(A7zw-~,w,"V{q~ajbqkF!`O|uߚT?-sdUz@Sŗmlo^S|n\KoUho6 $sm@Oש5d+B^;*Z7 8K0 X^rmTQU%rV%qY{ɉy'/E "K@+>b#wYXׁ߿şFUE@1ѥWDN|}lƝ,UħCƷ@ x(v1 ׭-M@ǹ&6grs7.wf6QD"/~=^H$DAu$fDV#U9UwPYh=$cԪTdgq5aUPQs$VuC +ydc'n#K*/l"냱*g #y5T㧴~z0{FA% ]wS=" Z7oR3WZ73jMTUY$b+jXd[yaӜ8Z^ ]&ЏH$>wT)p/[xRKhqʥ -}Ød`7~>)E99m^߱kE<3@' ,/;/|,`?72I@6~E".D"c @5| c 򢍯Wrͣ((kx֢=w#Uq}t~jJ/lU.9qgfs=6%K ""{OO%Q!3pl8>6Nf@ >\Yc.I@/LN ma6;Y &R KY5T" ՞NoR#P^ *wXl?/GCM H$r.įȀ"9CB3 a9qbB$'c*DÊMS2.e%}J96)tc<{h@5\ƞlQ'm<{g`-~KE"hD"ݣ,Z/ BPBP uP忿V ɅlOLJ'&d!M ݶ}/Zu+zxJEZ EX0ﶩD;]EAM`7~$p|:H pr Ql v=_H+?x6>&/`(u^D"QD"HPIBn@yԽ)vV wBtI"`aӪRSO2,N'vxlq ka00=z;N;S5Ӕ)6Hn'?}Q͝IOLCEO( 3 01"l,ûqra(>ZG񈂺]kmB /c϶XlQuP-c:[&ԴmR[aW4W/tu}rz;t+S[ס> ܾP"F>2tb[@'>#?#28>d p6z X.XORsF 6 \^\Ͻ=pa}gk8,ۧ}9싁@?'cuSU__ A^?fb62p-~3E"(E"H$rw0<0 HaNK U}_]'P_sF.hRSO"ԒT?sfㄇ4=a0H8ShJƠW假hN0fOoa{.s8@ .Ifw>A(dD"7[}daJ8=y#h-!ׁ՛eL>VX[`kcf+9h862"LʅcZvK" 4MGK7f(?CPUֹg@ 5.>D"Z ),`YH;~XE _#QHV->1f)CN4 p Bu MDD"TssK ܔAe@ů 76u"V̥djV>԰*' Yٮ4tvB{f3LL7X807< liT٪d|J 5:ToQ >mH=.v$L:`-bnPe`smF+51ִZ#/"߽xΠ +=yrTTsY?=~S#b|][݂g'|~@~t8S2O:!Q.%PŻڣs49sc *2`0hx#>#HB$D"4A)Ȫk+!AUs+Ȭ7# /N[C)0(3ͮ~/8 Ҿ&CZ޵ޘ I`$$ETlrgWgЉĻSB !cZA07$tvݬ{@ ,S şlc3SMUwcCqloPof&]D$Q*UEDvUz @=yR ;.FUB9K58p TC91>P$هૌ;xY ^Q"躍?sI"fQ;lۇ|||T3_iעkH$P$D"GIt…[P-vJYykaعE JnND.@Dk{$FT?}j"d0P6^7̮IlW9s~) `30 ,JQHآeg˗+ҏN:0< bD m$B>0BOHu˽},}̥J%# rf tR>ܼ Y]1 2ko DF^TJnQp _*"7VDɩmȻpˋhxo,6')t7P8 t z$c,,Ά+ QP z1Ug$(F BQB 6|m1^H|ـ$`H K)\r6+bsBGut2${p{U[W*_/tX[~-Z2j5%l*Ox 2;_r zɋ>n @O&ҏŖZ"<56_H$+IdjEl0/ < cѠHA[I=D/Q2Ǻ)f%(?}׷|=!-1m@^ϗH$98/v H$ Bu By…\ty\LR CPnGU-x$"d? "xt=LӜ7}à'.PBݩй<|9kم=1Pv :k-D2"D[ & cBǵ/Bg(X5, @;[ߛcsn7vYj~a f+ZJMIեֻ-:7t 3oF{͋Hq"Pl#%O>_.}|v(Azpxx XWPz D,բaOpoȔ>r/}/_!xam`->U"H$D"HԁM ,wݤ`0P3>nnI Ȫ$x2 Z'O2UgO/,4 .ݎ=8 -T'sY86 c*V<,wMU/pyfj;_CjM:ʾW<^X*g:e`vH.t0Vg؞!; >'[{}qZ..hN&PaNRp\jȋO՞ pq~vfPQ(X(Z,UB8,{eϚ|j22|d;@;>#H5>HE!Go`hcosH.wv$fPݟkvq,O_P]PPADP \$JH$@$4pPTEB1Y9!0~p_${&"#/ۂM;u2@ 6 PCZE xPqe3Z6Ak gȞe |#[.\t;ah C5S"X)yd,a9S̵c.w07{yQ #1юXch'ؙ:ˠ7`@ \ts)B ɩ.A#kkDM`ذUDGGBuGW>+|7EUQK"'Dԍ9 \]P2H -"H*'v7P*Ե >S.4S(g8AAc1mO{ɼJܬ"?Wp!Xn"(nPD".D" @0ujwC\EQ,U0F/b6P2 ~Ae&[rqg o'!Z~|KeEg@ӮIh Ifxl-͗*)|ɫ%k%]rTP Z7h@}XfסS.A;CSJBE{obĞN4j8:6`s CW%\kordJù6sվ$iK{ 7Ŕ+ѥJGrBwqen#K|cpB2@H$9ߺpfIJT@W'g~o]m"AKD)36c<ǧ \TUOIߏ #HPtD"(KPɭ|NŔ ~_/#gţRyHGWΰ9v/=Y/@ҁqPBm$: } 旚(x PO#TafZ%yiu`U?=>+\wɕ nrw D#1Lk H2R6"D%=.__: E -% p@ -8E"H"H$~&A (%PUWrP*/@} N\ M^xW)ZOZ=/u; ʮЙ wl\>"^mUkP0wH^^#ym> EeiYgJv~v:kCEk*lD07n[$qPo4ZC޼ZR,A??wڼqg班r6| Սe\".KAl -JgCn?Љ_H$@7> TmqV@GХ;$"vN,}u[TJD"QD"H1(  h[x>En bQ_xQH^&\yrZ&~~m CIvS!Al-0 U;[$n`nt[]HmXSoE!7xFF}5|.5A{p+[09Ǖ_rP+ *5%I,&F1%EFKGgCNU@\C烲W4v5t "(i ru"H- ([@?~D"8?7@y gTǕ~%6cL+Mύ_{;n8*?pn{t6aK i\^OH$1"H$Exo]!t Kun[ePh$ wxD7;7H/o1R @t ^^9 #ښO'gXP:!lob{.^`nv>X}IBvvr(F'3X_5q.\x7.]iz3VTJRl9ܥ*( s+3$Gn/xelGP \(*G,BQ U"ph؎"HLZ>Nv\=P.mz?hJ/9uG)Џ/\Lx.>a"H$ @H$p:@ha#"ywhA ]uE?$&8Nj?r( ~vEF+RTy$N&kߟ{-0 jS.QS9t _Fm;1>P$ @ Ox8SGMq ~ubLw_ \?Di3l|D"H"H$",:"fh}|[K t@c DƁ0 rcu.Uyqc<b=}Z-AP8H2 0uNV9͓<' !U|[$К(En ]I'^Nta{>gb&*TSt=7]h k9@\H9le/ʞ2oTLQw,gsE0,C09p" *D2@&e ݆ a\ ,uan]̟$(zil2EzN(r)UUU^uHS0&q_ k"n!FW71R$&cԥTH"ƠV.^ NgCJSn=X0GB!>GoLAZnD"CDLMUM&p̗ZZRW_*iRԯ,Q9m>߫!ܖ#{Ό,g>`AP ƧL$D H$|89,"RE5K~/qm@/-0))[ -)7(PHPy Gc敭I# _"35 Y@@}5?߫P(>  o ].LCBBg:aE#ħEn?GңܵZ52uZTNJh?ChoP(T( 7[A=&&@-9cn٬m{Oۄc%ưI!X۰q)K'dMA<#;ylcHv,pX1 K5kk5k+>̡;f12hbӼSEbva ;L}صfy_,D`bf .b |lINϽ. ZSh0=EPX’* \Rf/ 8ƫ&Z̰t|bp"SYAhf&T!fcG<֒F i + hȣnl=&>`乊~!õ j6ލd *k/S`q]a 2 †)P( ~YccCjT.n"#U6 ǟ AΎ6CU9;܇j;Uq h<Zp @znc4!c倭bYR%f14af+`<X^ePmw/4 8DrUOS`3f01OjQV֎X!5hYv5mLDPoFhDR&:iy|B)1zҮJB k:^07 2ٶ(eKJ:+ v'<YAgrlXoy/+׶MM;#I1C9$H(La BX BE  A5=]͛!I {'՜[i|Xʄ 6ykyio[;o`(wU//܍~Q? ^Fd4V#+! W'V@G;ƕLUo hdd@7enfn)VW&>K0Z\z=ʋB͗/p'?n3u@ۉ/6wbbX4χq#hvĉePAvyiȏ$}ʴ;%I\z8.#5E`X W>׀6I=Ȼ>˻˺wFv=A$I1| 0d!y$-.ϕP(PP(?@,@7ˁwdIJ(՜cb@> p N 27!^..ra BX Bg04OsU*v?s) b+%mI<ޗ:%z-r}C3Qmd4CUI D $pÆ{ΰqX@JP-t8 4 Pn.OĞXYYl/xa 6VqauoS-g~Jş4RUP:@QPQ8wR_U/_j*s$C\% g+6N{F$1Lh#~:3۴,@Bgq`> Oged[w ۷5_6O%u'R( P( .}`?LzaPGW#G>sgW[*|"k/e(X{ɻy7_}pm;gn h柝[΍1}xZ`N"XWptc!@ .uXAQE}y(߽f((ƂQ/ٶg}F5%^ן?A?DR?õ?.=!#FgDQF,^]Qg{H,L81/Of_:+;r,_s< "ЕBpZ-/ R)ڙRT)`Mdᇀ9##82"O/gϣٶoa.?e|-Pxx,B1wK/ Bz1@u*c&]ՇoYc" qXru?{g9pda@$Cחg.=j F}Ϗ}L ]_Ne] +KGtfvI5'c O*ALb `qұv.ڌDIM [v*сz>"d wVgF+ ڰ6ŽGetZRk1hm'1PHUX8t~}h/[w4l&xVR"Gjq+ Gnvb ?nO,=^ 1@$!:|\OOQB@u43iDAzfU]gp,;A(5  Hp!..KX*^HSnRT(nq qKK~E0p+ 'W(rl+7KYlNo\$k?B K< )IP(P( 7S`:D 7勈3싅ޒ'NEq/x&p%a`u1>țyvk9hh2IM/3ah{q3v}mc079 DZv. m+FC/um;'BЖ5FJ|~# Go0wi]ikw95ozQ:] ()}BvoE%_{F5x7^V3pC1 1ȋN1[:9;aѤv̺DŽ΄2x?d:8?*KJ- 7pl?_'.`mb γ#3txc',,#IP(P( 7 A ?${'BȴIC?ߐ4'9SK6'R9WaIjוЬnf{gv5Guo'u]'D DI¸L[uah 8rA6^E\/k/Ugԟ7.]I;r\z}ği "FE B WzP( AP *" q~<驤I-Pz |0MTJ \IN{,IfoFVfqT7E_vobj9kNr.Jp. vry=v\+qdyA iۚ?ćMo h*:\0߽l3O V?!Y}*@"xX[jOW?F Ħ+H7~l@o,yLB=8)BE%/"Y@&pKOqANZ˳q4u]]޺Q"kP(ܜnbHHDܛŎw'f8ռ+8LZl[7ܭP;HpKdnk~6qw5bjPBk.*X~~|r?S37Ja숟,yjizi7VDn"˟K痪?}y{z1:nOѯ ^I7$Qf/yw\ -ayԯeH%"ʩ=F"k@7eP(܄"Н GOwvbߐwnEx!_e4,箳"0 Q AR B* FdӽŻ'ʤF$$jN;ؼ=}p];hH: B_@x,# +z(9[kp??9ɹI `C(7Pzr^(3I (ܾyTxnW=@5_?ebp;`dO!62~ɆA?fY7F;sq Y3D'9̘Rw}-X& %uOd p:@@/k&DL3 ]S>6lrH7Or}(3^E_?+FP( BP(v\rk@:E,ئm7JOzc)k =V5t?7M $H(O[|cpڇܱnO}lk{ѻ52n$XM"(?꧚h< bm{xR*Xo9wr.rA̩XB.B!JRR@43A9zך V6ji˽uG5v$8W]LN1qe]o;6K⡑fɄ_xCLPIؘg,@Bf`귻@v(tȜ7W>a`k6NLy$[ȉ rܸ4z@sifR֮^D 7ʈQ( E* g8jMR'RD:py>~DU* Y2FA*;F YsV;nMr7m_Nc ..RsE79=;[U{_YYj >N1hbbb.HbY[=6Nd_65._Tp+rT(nINˑ B!( qՆmwrߟ<PhQ( E* &`yq[`U&r]Cޠυؾ;8*sm~_zHe%ޭO{@Mq]5Au`xz{x_V?pcqcFeqͼb>/ɸZBp brcDk ؖt2GI $ߎD]9\ +z?K|؉N@-#EP(P( ׇ D+ÐOn;:U~2Y$) ~>iO҇m[8FIwNv\?5=rUSyo.Vv<ï]|Ѽ:C'9p6RDLڹvBc~Bl h#}<~h2wvg8sO/ U7|DI4 @P7]jXZ߆ :i4 H-PX,|yc؎E@QS07WQUTX[a@Ǎ-͹Q B+(uS o>|"xhLVdHLE`\ 8 %7KN!<*0bÕMO,?#}ypwDdhN1Su;  nO^*0,DP(P( DZDl(OR?27ۍ'?:i|/$g\9.|d(^8%MT6|9_V~n+?-2Hi bQ={ c#T ;דr&K@W qf5*pEp ~[F96WH2+3_jd8`!a 5b BaSRzP( 3qjn;!tYxAǾȪM/V N,0WN$>x@IK79YU;wt? [0:b&w=P9=QYӭvA(3S3/unav4>&@ >,Z nq+tV?Bۆ@a= WqH㶻v{'cxv.瘿6Uiꪣ!3(HL B}B;n9vlWgC(U{_ntB+!loxi:m'ʓlO 8M^VKY+$uNvUv[չ~KMѢ  bWS 0Wa7T۱+Gn6suX<|̟! Ÿ'#OP(PP(6A *'dHoN 3D?CcwD WGsB\o(.Mw鵫jȲb]%ք+r?z/+R /7v2/d["Q:4׍vs/t{#P(\?|["߻CzCY`pʈ|~ݚ3Y3a؈[+<X&`}]?kP(\7 BP(|zAxB4͓KO,jaqKz t׮1s32syT2Dhʅ >o/do; *#;BW ӀjR3Ǎ1;γwRU Mj5*K`a_ڰ_hma׾-ˎ3lџC5Rms*N.q ̝_;ua1{2uHbOpQ՘PeROȜG~6d, ?yC{O/'lcK/G?WZuCO y $dj8טsF@Xbd' V~t"?QfS9ȶ2ԄYeBP(\$aVx!`/p؊'X>Yך?į%8p0nȓbRFBP(@BPL!fK ijw KhǮ G7)\Z`ª̐uȿgUTI{.[%IHڄ[d|KOTfWھahdi|Ooyfns ., m@5\e7cFPh; uakv``45~Mӯ.P.uOhAV;+c֖ҐSt~0m=ho,b4`n,_*bu91q hoj[EnCE\qDAEm]+ KsIg/aOF0/ zcDlBGb,/Qe2ߑpmu}exA\."=^QmL8n\=Ipk e@WTPLN!qXhf $vŗDqkx} N8a5/e_( U B!֌ AI[du42](*U &uCf4k,xܵ>cEB 'ɊD -<#wmz<)=P83GGwʾyC]Bk_sm;Ak:&BNp*_A"mU肈uV멆:u}m y:|P*S4 @%TG*&MGb$O.J,T!ݣHLvV)!3\zn;P࿡6D@/ڇXQ*9y# .9bZ՝x@"~XN%f<cuJ4Jjނv.NY n.:%`X( Az}kNdBP8Zo\ɟ#dN3Nex ?}Abc|y Bẻ+@B>E({s&2GV@x 1GIp΄k&ĤP%K{aM~8d몚22kC3VQ{Y8n_=@uzAQj(S#v/;Grkoq=;*%)` t)&(A17oA0\c:5: $OR]Ol<D l(ˋBr&PWU#uәKH%UP9 B܋`q\vsskՕƞĽ#4'GG]3VMvgW [5'b ZҢsRq5۟߀#XSci&&,!df7mW(ˀ1 f0;O x&]A iu\C7os賊q?/Y" C/T( #(A8۶IKi|ri4zSt1n7u$nZI`m#̝ w3|ьF z]xBV}G];^m%#(7 [dSǷk? 3kb$y`aG5!XbXE(\¡i  HCN)GB,bY>&ۑ5OegU$]M[/ǭzmtw'-S}+'d=‹rߙ&n Dכ~YZY`\?,'D9!X$#*=Y']?oJ8^/Iz_;`Q(6G<I8o1nb1_ bPH͍cmzu4.B6nj7>i?"By B+ ƨ}.u?x?0!*)¿ 븙ʹvkC~5+jɷ3||s#GĶMQ,yP4P< ?1)gǽ^pZ*;Ы.tyyYѠvO%5#M'ԙp{ wB'=x<\kLFd*Q}oc!=D>LfuwQZ,!rE IhQ1"Q(6APcT af >`(IqRǸ~}ir \9;I灯. " Bac! ~;n\}^ r?,B,ȨQ JY]ܿٹ?bb _~lw ȹx C,CB3q.+WWXyXTw^Y܁ީa8W4Z8~YI7)b;=ա#UCAQ]m'aB}ʋ(!GЄx -JAҧUSWA8r}°;. *MujgJw*o1#MMmG!q;՚:,e o \{}ĵ(bM|JcW^5a֣V-(~̙[Zsxe$yێAl>&,ĄP!t_Bp-}~؂8q ,s 0K$pqyz5] Ӿ,t XğߺSTB*BGx)`\BP(1 BpP1(i6!/gţ9˟D({EY(}Pq|@#?kvdPTxoU=uPe[!LJ\y pI,~k0}9`=:ubs{z5qxakqcOP3@lUuBU/B!䯧HQ CQaVxT;N/twNm2Z(M"܍ŕJWn'12.#vdM=Ib7tb1+P.+ L qXLҭ@?ia(i1xx1v*JT(43 ҾCE!3ʘ($4^FV(2&LOA@= Xjζm~lu%c`;π\WxT%{@[BP(@BP0r@9D3uJ 3f&q`˹brYwiRƋ%J.뵠c9a$s qpX )FWC!224o!lBP(PP(b 7#kxc'4 V-MܹXJw&` 9m?6Ң60A()d^; BwO?V-o'nK2WCvjs̒`UHY֭"ݮnkFHw?fDJ[?":TU՜̏837U֦pFVu+-IYN9*U1Y};'L}Lȋ輁/8>j$0N eؚNj72@ H&X!agL?(Eels/_Hordže`X) ׂm'WAZC7 468՗@ZS!8{ 1Ҁ>8 RJ-A a< |vy!P(T( `oX*"Pw.ɭ~r6?r>ȻD;$&+7" Cuu[k_=`uf~ *݁?nw$1Y[^Ż Eu[8;~FW6C$bD+T2BhZ:zHKSC1ZW)mbU2r(5JCQ kkUd_lViM/U Vbs>X"bۤ+u.ZWl,!;dNʐcכ{ ƚ`)jI>ϵ } Kʀ]C~,T/%,XEJӪ o,BZ1{W3aHÌ,0A@)< .W | Wi ' \~wlH+Q B@BAe;pA<1k 4ZO @6ȼywǔcN (S@RuyeŅ41WGFyf]H쯐6ʿ;03[1qG'Z|TZ<[ÿ-e&aC$zغuet\(S~`Q3fbNS*_|? yRz[r^m u/ ( ެLTD_3ꔞq]O>ڞAwJqrK $" Τ $?.8yoZwkK']|HܦkWoW?ΰ'mekn=:ڒq<%L%> iקP(\ 3_>|n T#׏_NKo~>6ZA4% ▰P(T( $Ct.{\H$&VS )Yywj + sy-x;po'u|:ޅ'iOnwvwOj:?~dFsжun$l[?-.p@O'i~O$P8#o^K͚”X; Ly{TEl/Jn6~vׅ(.2<ȉͮ@ }¬Z$w\-mP؏#iǶbAgMc6߭wd7{("EJ$.3#J#H I 'Fb$ S>A'c_b H!HFvÖ="FZ"rĝblvsf/~:6Fqp/ju}n8{!3T>@Ui3?T3Yy' ahOHZ>S'EQ4U+EQ|0ayΗX?xR"$^3-3g!"Pј n 5(!u*Bx7=}ʄ@i-zprZcs5]/Z7SqLf;}&j BcsϲmE.;-&PR(셄U'B#:rDLrgm0aN`m^b;)!zTheBuoQQN}d2rl+uXXa5!a$= U}07bvT}Laxq-`>]y(J*h6č}j@Cjlo'tC#UgB8ߒNLO}O :#7 ܌y:O}kacHc%T Kǂx6L>"iKնc'b=sz! nb, EN۶ĸV?~.c-)i-3i?K-z yq2x}}Er=?gb_򍈾hHJ&H.ϗ1z>0AB0!@O*f( Pg$\O5ؖan> m{ĕ0G1Bn> `І_:"Jy;>8 XG-pEQ:;MH0960sk@3;8F4̏!x W01#j( tT>d:~   K6GЩzEQ%EQ ]N~PC*h)1Vrs,}AH "P'J[E "HҮB/.;G5 چ:+юcㇶ=|gY7&^>r4$uIND+ a t!M?w]w6^N_+$ԛ:$u>n~F pǍ.+PZ~L=";ސ."fh a,[IS .hi\'P6|$^XÔ (b+zC8kTQ\2͓|}OQkہlJzk`gg#5Fߴ`N`]ej:ρGy?^X>|cEQ%EQc6 ;bRZ2K+m*$a:|zg13L"-#~(8NuuPGTQ/>l#|,M,me04W/dL޵ܣ9c xeKT<07 #t~bQ$/~]z.-^M"|X#g%/NA#"&3'󴫊0Q*ؑbJBioix;)b̢s>[B[cϯٚq_sp7p}?r<(^{BX۴EjZ`7 6 PѼ''1`>N'/EQTEq 8lFd)Dž3CO}bA(0}>+h(<[5-bފֈBPvnN1tf$t c'v aԻlk6# #$$S't/!N/70X4O:FĹ=W"^.REQPQp=[1'!11P6 ?;?'-C^\Egr 5lz.Y j;~Ù/{x ^aА<_d}Kߋ Bx;e!X^G̨* g"fa"W~9}:`[PS3gdl{膭( .R[N;#].(ƽ_dL9Ch؈C(Xc}lLMd -@"BxMZho<;Կ]EqA ?Ԕ-+Ə ug` І<{e)ش\l?pX)nz'8$icxxpNQE @EQf{}((^90 AĘargmF>y cT-ċ= %H͒k>@C~7-lͥ4:Xcu<ϖ|ȉ>{+tIA{ Ǵ{I#j"EoDmG*4"lA"ɀ$mjGz,EQ%EQ`655zI'< SaDY_$PJ~w…߇v;. $ 9mTVǶxTmw/>??m M>ܿc׆hO>dhXb~0y{H }ץ":bhvB1o{x$\b{7@o4QHcW\xuLDfDZ6*=-$^g3T2\~]󚶧Tpn>*˾5 hcOނ~&BpEq? ic8Ƶ|5ߟ4cl\p~ IZ`'nZۃ.`,$|#akG1.`lx7r=I }F(zBQl mìg' d!İLDO$ROOrKnCcxMq*.:I]cę[IXHay}~ھǎޖǶ̽z?]_ ߹̀׾ r̢tEb(MvRQS[,aW7x J~qT137.Kםd8]m4$φ]m(@CP|xt1( `иxS|iW#LE?7>׬yRwM쮾z_i?p,UX8o~wmШ |~^Ms\\v4hrL>!GҤC; vI4:lֶ~жm2h /68(3ǦKGȰ t9IzF(*Ur#W,|1sbWvjjuݬ^>m@gqPx\8 q8Se\/&3Tg=wj¿~w>/24U6艅8ш?^^E$\3d}&*h][r@N*Q%vu'SPЃ " {WT`̄xvS\mRcxgqC=fA=;3L$Pa(q0zEP(/D1{Od  f*Z N2f`_gZZQ?ۀ/w>Ns죗] #`#(#$ǐ||Ƃ1N**u_.Ym֦mlKE`3\C/!|Ҷ2_2d@sOMpԄ(*P4`/`ZВZy=7kh܈ۘ=l#P. jgҜ)~4Gfg] $P(I#?vF ayT8w a=}G;^r^37*yWA? \*v4QG2$K_fX>^D*D]s(>0yN"}_pT u`,l4z؈ś V"Pg&$(֞|qvREQ%EQl0;@k _> aܘ ͡1$99P2 I<=tgB|rύ5dQ( z9uGcW><ܩںm>΅ëvo]LBuBwй1 WC4y <ʼdϜ|<'ȳ%?bg 9F$J[P(qC%`NHhep_rb1P/X,r] e@K VmxȷizF&KCE?5X\[Zf+_fzF"P'iޚmADp,?i>j}-Q:e)ϕ SP~1;֑x߅q(]Q7AaO2Y1IB0ֿ|E+ ?wsy pZofqh>Aۀm-c_i_W!h$~q ZE @EQ;ԛF qoF~ ˏjn x'l!Gj('v{9%1O,7O 5Ik ģ)GkzSol;Y+YTGNèGRM L^@ =nG C } #Mjėh@wC,W?Iz^=6̡UQtAl4A I.j b.(o#ߟ|2O<ͣk\`BɹE4kwHOH}/1͙7u~3 XV3 ?p;E`+}/V/b0͑/ X;+{!*A6+7W((gp؉ӂ,,tB~*ݖO 5lA #!O ~pAsϟ<9H qpE R:!z}s~ڕk~xW=TIH]yUL#GI@C7RDr$&_L"ؘ٩Q]-|$ ]2ՇƤsLU BǩD!/\\voU-peCZ]>}!|?xQid9/ʹ|%}kφ\t mȽb:ߟ#Rl7e'_ ЩGt]ɿG U8بsz.`oyyG>9ymgc va*(؛`51~RW_5Qz(F9h'rNI2 ; 13BcO)#yMz}l`ez_>,[IGn1[OcPMQ4' *h &'qB={#b²>ɻЗy(/Y aE /?EE 'P?W_& u%=(} RN hĸ<$~@H7)w ֐câP3&#Yrn"y3}Vw(X EQ\jq91Kff H&s%< Gl\lc26y.x)n3 ? 1wym7 /,Mϭ΁Vxsy>-`a> ?PLj>@zX0K"۾H1 ,qC*<·痓sA^TMeoq(^ߟ_ D~Ty|Ƀ&"N듧S @v4+ Z|G@wGǜ YhIukɳ%e>}~@(@*F* ~_n} `$xx((.\da22ԸfqaMsoQ]O'>_"-"$u\4l#u1Ӷkq'Ϳ{Z䞓ffG̀~o9iw(iL<S2f 9*U\KWh=N@%$7iKG<7TJ<ġAzWƴ'\9✕J]D0]Ѩ s?f*^a,F_x{R"$'a~fbPf2u%ʚxj;~54Y[39y,0pj^Qw\ CHUEQPQŅJ!^bޘPѬb4'FSQī"؃G??\w8eݨ$O T}Uo7P+dmCsf^Wq1ޢn;B<ź}[ZG4I,ag1xvDw&OTcxh{ w7".hNDh &/+ BP,tґ칯r /SO?] ` ~BN2{xN?HT`ұFT` 9枼r1ǘvb|[Bf0G\*.A[/-~j8;&-1ɣl5_Q%EQ 40|V>  %$VUq71VrlG QaRQF­o|&@oJĠ4G B rk2t H14xߑחnj`ǝˇWs91KN=O_4!:IѓڋGFsmHH?f0 nub|yy/;.D{G%;珞E̵3P"p&kьVa2ND@nK-nC\_B4PXNǑq)\O[Fт7L<OSB:B $׿E.|8DswVĢ6@[I֋((cp"xpX4p>:ƶnޟ,1~?7[ q byr73y_m/Ku1t~7\7Ou}ƵWX_}E-.]k  [9hu@4h!U()|ҷ3;py,> S۾oFTlYV"~vM?7g~ R'Skj%f, zѐL<GDڦ3<$B-FFw&f#"P-%\[J/Nm]O 'W>fK<͸~~EQt?P @|Eя:e 3 0G#6[i͟QaG@Èq42 G l %V[;Wy Gy.  <^`;mlHEQT(!hLj,+q tQJf\ˌ iŚaڗh)^K &4cF}!IDO?A&>3xRbӊZ_-CsϞV3^ogg[ Pv2vx8/ͱN(˱FvH(8!SL{h7 *U*gЩ֍Ӧ)"ꥡUg%)?> 2>n:~X^nEqIr*p/b5]QTE8-2MKyCyxh2Iz" 'F!>۠Mg`mqGCկ x8ْ;Vt'^Oؽ7h֯>i8^앯y`|~EQQaBQ<4}-ɡc"+ AIc,OH.) #͛o&`c̑xVG4]Ng  dz7% KJg;E6;j 9-EQPQůMBuHkhsLj51:9^/gPx6*@i:W LI|l<#l^+/_}l-_g+\ afß>XPQ @ ~EhyQig4^:{xe$3Y8 k׼~wO'#<"}n(94S* A?W;bvX_rA>|X }kzEQ,ƒy_EQTE1;W$X7dkG!. 8. `рpF3ְ0S;p?$d9hbփv&2Z+1'سksG܌y:x喧W~mU+%E1sb4qy @{"I6ɳgD| uߙahi z^@ݣ!(м͉0 aN|PfH!W~QYy_v-~j(ȹlWnacx(TEg;m fj{pFt?2 G܈$ [@# xHjmv\ocdR K훨%VM^4{oVgܾpt7=ݧi?PQ/릑UcpA6;Ma {3e$-n׳5'~/O AEl#T+o/Y:`χC9|iEQ=6j(>HV(|dCeO=HBb.9a+1r K @}Y?$L3mr(NM \>\͞fFp6΅zpfm?-YYPQS\@BEq^1`\IkSL 3{ٰ+^ "fQ{h_WpZvNhx|`Ѓ4'缀3]s l`uz_sl1d?Ugf~펛l}i}N)}q/ ny5ԣ49ؚ(El!:R٤4\LL|r`]Gl".tRxX:Ye ^].{ |40G'L'xp'0geT((K=A` #|dz3-g(1M@F[vVter[X8|灋+0 0?' 쁉76]C_>z /ɓx啣u;=ە=~{>7o_y>^x[\uA3CPy֭ݿ_vd={}?_F_(}\ԇ6Y&M2tBJz"u% uLQş-_C ?vȶ>S}9%^+D B1U X0\Ōn W̐Jl,}#^6/&!j(J*bf HŝKgECPFP $Is"΀EcBk#xIh<@znM*/F=Akٓ񉏓ȑ|+ O>ʗ;2 N'?c0>B 2hIz\A&!(ypY$P5=GCxbU?^PYF` Xf?=aaSvkma 3so9VOQ'm  [>a7a\' <&.(.p%>`?Rt8n6. {N< c"jRcA*@I㙙o<ԍHz)$0 MVvbiaޗ?6;{cX?4[%gE|^9%tIs1O A^>~ʞ*Cz$ۄha}IJ6B<]υA O+V䨔gt [S6˕ek%(_j(>Ox?مAE54~^.hQИq]c!C4h?nylk54'AhRn#=rs'?m3w/^q\%T8}~g_?!ϬhvMs?۷E_i ): -}uL1#h#xWSZCG>{ގ=/cSԒ6 8]4WimBv]@%EQTE @EQ\lDSTİ&,T1wtY?$x^e,7\;B'ԛAfgMM5|?K?G+_gϮw!0@^9tqqdI\t2*B`1 yB,Y8 7LqiME$xFD8s/ѽň#.D5QbP1iژ%|@ @-븢e%aGр`F(pEQimbًJf%O6F!BDUP/ 12EQ;4ՠ1&>s4tÿg]rP*[g8|jw^ʇ͵s7\ܜNϦme@+pڙ=oŤ?_|o܋R™"G;b.m2=@].-}S p(u@ I{'k(!bJ wUBu=|ͽQ4r%`F WEQP @EQPQ !Otϰ$ 03q|c%^N-y~(\:+xLB fpGxN1IvTѨqnkgVśWX3`0>rUOخMkt.F+?}-JaB5`DGm,ZmCz,Т@ kW1lsg}U }-֗j""D@H:$>[g};O5S΅`‡VA݂.-Tt'j(ꗭIuM$+`[SXg.FP l_bk\Ēh U-/6Е@[ X<@L&.Q۰'-)hSUu2L2̻M?`$C;fFTȱhDI ɉXy:N|@6_ 6VjkFFՍtlq[>1 TaekWT^YTorp3eU6)WeFtg(R[#\o1~'Sŗ\Yg_ @--45}Zx ]~|ͯG7?;e,XOn;S^>/kÜ9o0r8f0_}9: |-vr+Vnq["z|}Z2./ HITA ocՎ<@ŶWZ8l])%z>(_;zu*0׿?ẼJZs~.d6X<L-dd F5FѻIM$ %jb}C#j:+9.  u_?+ 9Ԇ/'q2'<zF(cJ#>`vr[Yh{ H*7\ZQG0M*@fh6=z$ٳj?o[OE/Z[[7ab]1csbذkssYl9l6 [d>|4,||z=q.\̙/ JCMN[~w/|W}a=Ν^hhgРbnq036Lz/uPpMܤol@qG0;b6DJGC:0hPMңb(KtRGNBQm jBI|WDƅTMe&0؁zWJhtr9T&myd2F2^~-d]2Lg@{$PboĩV52 ]`S[oKJc%Kbȕxڭ5WFayLI)֕{+3vU3uS^YjuU<.Ue!jaF<]z:r"`̟exA0#9#hmm1U2~t&OKwZ]p8jkk?= π'gԩڦP0h@8b= CΉBe>{c^~[y 2t\|73kĶCΆg}c\Qvo71nvۤ~З+>O-~2Ë>Dxۢ $Q%V'*ž$oݷNmVݖ0& To(e_X&YOhm`(j!|yLW4N`g)k@}k\;sk=Vm֌xYŌ&vvF!k&'G o碋dK2 WOmN=։?˖-g\@G3w)vG`I3Ǽ6Q'mwO-s{)b%pl@q]_o$x>$n mU e ص4z)Rs׷kG""Lџցsvscm= ո.k&.+E;2:&8th}}=vӧ+5=؄Gvo|ft„CPo_o_3pyA`׿v{F-Y^FN:iƍ$G1z(Z]p r f2Yd2ΈtsDJ)KF*Jk9L0ى¨R< 3.X<0S1T<93;g $ΊmWDf1xH7pT$l\Եu3Ӽ'%hmeEN{io!EUbrkD>5`37 /@MM <߸)l ptY^A} 0~~5:p=+VfuAlՖl۶> "/1lW8#`ByXy^P1%kc˾?[Vm1l׫+ץ[[9}IEobICmFhTqm)"&F4C"o#r+@C!^~&y~mgCѻO/vmؚiޗ LkrOgdҤcYWn[LA=Y=v+駝ě rʘ/W=͔p20蒛/P&ٜ1Cֈ ׌,Ѳ@֕$?SF*8V m{*76iTSڌ7dd[lc7uhzRA C f(+u$vؖ>Ɖ< D\lţ>F[DYc5̙/ڦtW^8*tu @~{%ӫ=zzܲ`vϲ.I , l ^ SBn ߴha>]|Խ[R裡_'x&Ǿ=!օPa gžDv{nBğ4 _qp¡ #VmdS+h? ?ӇS٦)+|Ĉ.ەcg=|b(օӦ*=FCீP+3,e2^ DX"h`. F\0Č~D.@4J8{C1U1{ /j -qTČe)(!O/ht"B_NqFnZ]*PJgmHG~8`Z!%XL;o?"HHF!`>׹CŌ͛TdZymUsa1w|6&-_λ;G Y[^3wjƏŸqci8pkjkk8[8F[[g}S>fI DK}T*HŽzM¾y;܊0!p`),>M{Pp du^N&LX?~}SGx(Y]Wز}aE#"$B/)\h,Gu Hu@3К{jO;Wv.[n_pjGu\|-k6bH[qIg=@xɧ7?لx >   &dP&tlTv4Z<{1,_PX6D@rJ&Ef2/'VOCKb$>^}0疒P5( X]K#c%^[Q q[:BU5 K/G6s+' ma۾L(BwMFRVJbPH2-]Nlvq;7o>ZU"nڦi `,]ONǏObOQ3xpSRV,^w}Ǐ)>ߍ? /)軾.QTk*.?Nq5Zֽ 5  ɫ¿9OʉwW,X($(NhˉN m0Y"t/)>w hT?uSV[.Ƈ>9rxCK/ cDyydJis݁w\x9T*fh  .M<-#"kEÂ2tc$`*X XCUYڱ3)qK]a>XW'>CŵEPune$|_}:PHWTe3~d{a<[5lqìX6֎8|:ᇍ9طپMgyA^ؠ]i.K_)g (`Д/P&yQ4 Av`b 퉄'xd\,(Bx 45 @"&2y03[E5x~8@RLbͨ͋]3vg&Bhrۉ}eU%hCeto۩rP8 P6 [Z5l M2{g !,6fϞem4p'>so3q=0u|1՟-TLT =ʰ1M׈S+_?dCxRxҶ<ښs d?h=sCGe.صs |ڌupWzc{Hz"]{OCcC!g:C?w06N a=m? Sg+oN)9W׻`ŊgKNNbk"C|\ qصk,^l1K&c9]A=Λ,)0ܾ r49iNcO3Xn@?SX{ݡxT|˚6%PV/rȶ`CЗoT)nUTmE56N$jH0>D˚jXUQR91AH9J w'[XSOVEi.bo U)('& p( ' -3H0z}&ZnSPU0"UI~;ykn62>>3 O.YY;:zզȯ'Yjv;_ƚ|U5!.]>2 59Fu]]&VW_C\'~O,o'ɺዲ+{ܩ_ !O(4 }RYkT tkj `(9Y[؆1Q7T*>,INOj ?E%6FE|mڴYWJ^ X#E(&XС)5ŘGU(ҊK2o8}'#],21s<'(+0qJ岲:;)8`VUi4]Q ")`A3QcD ,Ƙh+jƆ%f={0<ܙ;#9ʢ>X]qQ̵ƞ^j{$}vUKk~OK$Ήzh~JK%Ҏ,v[祐{c[:h_G2_R'Y4ozӥzMNHiyѼ˲^w^S/{a'{ϟsNe{ǽm4k¤_\/|JqϧOw]l\Po!:A%$&[XaVXa5%wvGD^-@Dp BY9@0O\ ž@* aGxUA/PҺ4m>wć||D1,;1i`@!c\#IAgo& @J\#?z}COJ<]iss$ G|=D>1|g[1؃؝ A}L> !z~`A>)q֗s_=o$fqІSk(@t~4C9𣖡MME 4ZPzt)gF}9L-+fQz86_z4KAG qR=}Q//z=c<4˯d$ȑde=f]w$k?v;-^~DgADmM +Oa%w"Hc=<۪AeD>T@&O2>QWhl,ϷHc{@ |zEP1|/6{oWyz7% \x`,Q胘ۚ|"WX1dDވo`DY9 ~|>/T`ǝsp|`o+ a@@|"ЦkŸ]EwZ'x\W_ʚkQ9ק?4sfZϿܼ'eȇS~-Yr Z>1_ "bG~%ʕG>F*S39PU?\[z*#Z"|p몫oH#X(szh_~>t݃91u嵦vlϝɇ_ /V: ZoGR60l֬y);(]| >D0'vP'%,hhhp. +8VlT X!X~Qv? \g{ا!;$>1ae@W\Z(^IZ<*~pqJ6}huDy鴢9Soa_0Oߑ}gQC>tC6}@G @šnWίXq[@>4(|N䚮v۽Y@ ~s}S547ڽV!{}2[+@Y1|X eH>yÖs~ v Ƕ3AWvA?L+8>~ķ0D(DrH*pF}4qT0ÆUH*-Oo|_?AVϙsIvkg=`9ѷ~KIr{P]j^K*HWùiР+gNqe|xXuM[>G ͩlFT٦(;HťKWvPOl Z)#7 + AyӜ{ķzG|7>{9?j)/Ucc{@5>-,2vp@*ĩ[]saYK,Lyg]C9*{b@·\+8@?U?ȅp7:rw7 dF X߀ЩNH|fs՟oY |:D= {~+ ɍ s_g'8!m oiJ Q7:.#M0!!\  @<+`s(88GD9S r@l P m7` Or*6RhHOu.LYnh[13XƏyq$ϙv_طKZyt6f>xXT@@:(\޽ujy|Fcd=fȐ?eg{ͽL/y${m/d@`b; H}̨-EDQB7 + ~6QLlf`TE PG}@-~ qldora]7p +, A T C@bE4GC4f':#Z[Κ?*Ķ'{NbC=r8C XSl@   P| m+8X:GL8shSQA#?ESEQ"jV@u@}j#ֽ&O>?{;?jy$0kԨsbPT$Kzwܝz믣RQCE](P:G#豷zg*/LK Pd ME[uaVXaU#09AB<bg@s@jceA3z7Zdc@ {ȧش~䉑B"};TN ~ZO.7CU?h1*z46l!> v;UX"-*pq-3rћ-[?y"RbWCq PG"ta'V*k]H)WZt5x^oHuZ5mdRCPHs* rU<@f&;v=VŞoa03L>,>GA!@nϴ{<@\=C8 s>Vp> :rSj75OT%89nT3s$(?Jro䲝37xKO==7ωX{V:/vI&LҼONi_fqx/޳!}̛6#oM~ǎ0O-Jwʒ?>h@Di&_nMA6&&M>J7aoh%M5_~09tXr@R -|p?Β*~\1rTs~ !o|AY>9@C!- έI* L 3%iRkh ـYsYThF >@F3DQzk |q 9ݻ4gd.ԡb!8Q7x|o߫ms1;ǀ"3R **rɧT5zq%z:Ӧ aQPp3/ +Ul!꜁:E?> t`=1ON9:*Hc% }~ ȝa,}O/[P͝g>Y+:3es~v:M*z9WgL>[PsRŏTc[9=YPӡd)䫐?Lj+_t4|c'@~UڬŽzBnͥz@3o4 >M3?.Oj y,R<@P@<AGg=+}{b!p|/R<%(Nf& >CqES"s\ щ(PNqͫo$H)Aא̅^ʭ{ST$'J obQ򶃃 ةw`"|lur>ȫ> fl@\\ K۽Lf @_}@O:?,tpT7@(>\Jيx@ hNI)@-M +xVo1"zLE𑷲 @GcYks=P\K8HLP'H|=IWǃyg]ݳԑϖe}fsN ~(v`'|uÞȩp@WqWOlA9Y\C 11G}VEem }=f4ԩ,A3$@"}XaHML>)(Fq+@˗ju¼@E[a?u9 W nUկZk4,ZZCܜZљW_}CRH_SN/iS|]G:!P3~i)*P~aVXamչsZdP7Bo*s}`yĨrpc@=r, ؇|l `!|?Gu)i[3v~Rn q@ ZĶ}TXt | } Tқ?^ 0@QL 83@s@%9}cVl!=*ܙU@?e[9hUa?c9g\DJZU ^%UiUX7:E 4Q)ǭd l@ICO~J=요`>S<ޣ@] }!T4;IUß^\^mE>m{@TX>r){|O7Haba<,~j>`j5g~x4]esC ؔ? QD@@RCB7ڊF+j#+B0̿:Ӗdq裏>3 ~!i=bP!D`o^W\O#bFI{=n=i_fy;ճ%@])թ?E)S7 +O=wg* ifA ^`BVs.Fŏ@"3()ر?jY]Z1v[ea $Weo3޶8y|U U_EOG0H@NOga*|(TYC?vOצ  =)-!1oU?52@'>\ emATdÝx'?BOpT=q> [ Y?c|"ceAj>Zq%CQ j(Q@3D6q+O>2@esR/lF?y~h殻pQVZN|z@Pk%2ڗ6{qSI;J{*wAfCRǏֳu~^OP@ (f`XaVXM FDG!Ā<V}~ s-`| N`XӅ }21ڿ!X܉QameS 9$'Z12y|IqP{jɪPjK B!E՛d4e@Tg U *DdC B޴K`=!<dZ9 ¾Os=,BQlCVy,ڽqeOTÐUE1Ul -8TXDh)f+"jV@?/;ׯ(|t&a?֮( Rw'[ti{XgyHf+Ao߇w]=n~Gֿњoս:N]7 q"AnO@SE}E° +RN7p[q.;=8y ~`!nXq_Fk?$}$g| . =ߢ]AN5I~D ˝p'*eY۾ {S_y>~T@w1P4{ӭ&Tצ  y W >|̞kA + (=o z`1q>b짨0Ȁ Xq "D>̌!=?‡L  g, ҜB s\"3{{2Q@gvq+̹Ā =H~kf~@@Gsmpq[ok֬Yg;e;f'NxOJ@:1 NE)fu 7 +pע!f7;舅/yjB^ ։ۼPbgc#p,=>~Cfb<?x k b ?[9?.EA}n>|W@ 8U>G\#bcrETtm$ 2ȶO@: E ({nTP@!Mc3l @ WYC>O~ , ض{bm  Qŏ9(d?dU<,[9v=ohV Ըȑ鬴3(̙ L[uy;@RECg> mdS's=؟5a~vz,u]v ] ƍW~;\@u[6|5nh\ 4B:D + k? )mOߨ2A÷I~xboIi8'Blye2Ar<\m\-\۷QW)޾s~Z ;0gMhfdAV@!*|4;Tq* >( .}?I^7OtXa&kCP[}p}|w/>ȶvGb/ @ |S#j'!+Pc|=o˓1>y@引?@AF(kW{ٶ%[K~mh(ǭ@& ВosOI\wyo"T^>#ɳ禛n[oH^s}9_ijl.%L믿Z55z7R?Tx5~'S49\MMŰ +sOv=D,d!쁭m=;@qV Tb!>G1 ?&6`' xV fڧz?lIN M 4G7A$#S 27W6T"O@SD{Mư +ۜPgOQi{۽!gar3ǀ!Zq쁯"Zil1RoUĉamr$ |0Gլ={pɖe۽:2̫z*k0Yl. yuhߊ}2Bŏ > DG=B29E "'1muq7Uvqm-`I4!A!=;s !𱧂AJ+S@VdBTbf1QfxQ4:FzftUm'o^U~Aʄ[5PІ&N׽{j!?ok]F3#((1RAAUW'@P+pQPgv7 +j g<3G-*+~ W.u7pj!BbC>s3X3[hTSG}h^um- ~IJ8pkl-Zȣ1>q+8?XጷJ(5=[ hg*A@ <!tW1Jr AiYI\ГK۽U)OELL~&oSGΰMsFMMĩ Uӳh%'"=ZtVq?ctYM ?~4OvޗYi49;jSEENו> !5g ^ vV<bLL ) * mn>VXas)jEl> ~žU1 2U>S X=EwaPW.iiO˲Ʌ ʙQhlAڄ>Ap6ƬȞi>@"ɇpAY5bƢFQyp "kPO! @"9 Sc;@ʥmdq1b,dUALB>g@4ȂTU@oVU&&يnaOQKZN^mҪ֥o3ES-P#@&Th2_EoN={! /Bk~T}_g`4wS>Μ{1Æm&/tRimrgX<.zA\[oҟ+muϘ/&ׯ0ꫯϟ}M^~V_oVt$ MyaUDpC|>*Q@Ȱ +- .r{@lM|SClnՍ݋E'ȧC'yE]f;ei7vPkȞ?L5RA=mD0},8@VpB+;Us~v7Wn26U=3Hzc=+qV?2mԆpAAAu {$ .#ɩ@1P{f.Pb@T@6g8D-;P[ 1-D}46@(EX|# 7*p.V6o ~$ G#Fbh.U<K5ϴ$ /XW5d䤱jdEa@ AL˴0D4*1B ;vrmA*J. Pµ!;d}<@RUΟypf-މko}u /# Oj<> ډ$^g 7) +ªOS,@ 9q7ub~(?cB' ~8Gǀؖo0g[csG- { (N; l=e|vom*&6;baG!?X\ bBO&1GQ!&mŰ.((( 8XAUJUVp@@kA*~TFPX@D9'T @bo7'@\T @鰲0tRdU" l>rOYq>~Vh]Ci'@rjd-x܍n\YG.1Lg͚5k!̀vqtk5kwSOw}n=3ixZջ\S+uГϨu&4Z䦨:1>fV<ٳ/郠΢sSD 7- +ª m' ?}[ㄘ۾i B<#gv>[?1r183oUsD'kJ @U˴ϖe}f3sEji8Yisn, 1!րosh .(((-ќC2gY̟ cbNo6'Pj ! $|>}o[@kUuh,T9HbX;"| HE}"?\Ne pOEq>'NU8>q*Pjfe4j9OL@[[=I{WlWHruˣ;kMvZF_c`* @H ,03FW`îN;i5_ъnE=/8Eٴ7f~ɹeKz(qJ[=gE@ }nwU8PÀ whm@bo. c "o7 s.Blnh |4gھ11{ɥ?j!zH}>Wr6أA?* 1`Aa  I} *9[ة|[i6,{vo67* -87 FhC*0F*>kT6U]#:V%ԹffXaVGE"WMg?:9+@ @"?=o9vEtF-*|3D gԏiw Hc{5cMPVpUTmܥ`༁%ٮﭏ!p* (A#{*zIϭ@?Z_S q :ۊB ~,2qkO֫vd\ٜ>ŐG,||(Y% {9@XA?XD9+}D??@8a%O?}朙V?H1[Jb Yj[rpRꨂ `| lO@AAAuq"4H( @"k0aϳM}X>ڇ}YO7s7X5Y;ݛ>y|XTh̕>\1rBÕ@Pef/oȔ_)/<ޫ([KY{ ~b$" *(hCPy @O=lx]z0o/^CD^XaV#UzPhhz?yySae*} `  v-}*)X=UX !gV8\v99lNj!?-[ڳhLv3ljaGD˻8GҊ-+fq{/!y>SA' z۽YB q֝1@-[X ~lJ LAxl'=w{‡r*o,| 7xIWyٹ?T?>؃=~SUڪoW佚TmiS~@G=EV|XGHd KW%((lDQ*e(?zaVX s'$Q&$ڤnm);AD؂6o,=sPlko,rXO7ŷ|pC fn{ReYUQGM>^d\l`}sرyO } ~`Oc?@X#{PPPP][]A  hríG可AU |T_b+?qLq gP{w Qerj٬?A wp9>*h@Ƕ|> Uʩh]gLjByGTlǁ\BLG-{H`r jl?;T(&v \XaVCF4JU奬TIԻ[9@"B˩ p;?oca`L7=,[OGc=sbbj&{dE_ *>*9g@4g|2ܬU@y}ATD91%T1> xs@*Ŷ{X}H}WhWҲg5ۧ*:C@, =+ď,KjXGE._gxmJzqg٢(ZW. kDt֟ƋvI~ D;zHN9}‡ k5Ayw B[>)Af9 (ddBZ - "9?Scs~ZW 1]P#@qO $gx7~ )56Hch!WBD5{((((%6 `U| 9=4*~$H% VbPTRYcc`B3x{!of G9#>b -q>\Bbb[Ts`E~Ԏ\[lUzTLO^mᅻm *~  Mb5qy~.u>0ZO>%?D'86FAA'b Q$zaVX[?N~rs. }>aRXUQī b3g@ݱphcq?YTL zȗ)7( -AڸӋz\ez Xdb|~LL@y pƊ` @rGVqA˷ 2=6 3 @AAA+@T[73r19'8W|qm EAOl%'@C'Wm^ܮt {vvюeȡcx?N T$aHbjT:誫o -YzSj}ѣ>ߣnyx ˇKɢ=Ey +ª]\MԈtQ?-D~a ĖQU?nNRk6p0DZ A*w9= |@dh_|Tq> R͹ka ,O FO=5oܵ{f@ʂ49Vz} 'XC7Z#9@TjD3 r&;u?6pm,rZvp;Z2 ݏ?^9'͹j*@QC|DYgP ,CT>Ű<XUE;u: WܡzB-r$!S &q -_~+NB}E.K:0((ާl-!jhʅVXaP[j Λ\s.B"y@@8YgUJ Yj Xp@vp-[*{+z* O7ACO?}7;KMwU6;:*@EA*8c:+h>{4@" {ԇ@MZuڝ'/ h_ho~=TAAي|0-Tn 0H U0b"蓪 +ȏ@, a YSY> z{ ԇ$v8pyY-R}u gzuk[Q>Woۿ?Y?CSu # ,j+b|{5qǝ^eGDQP'ZW. JUPY5rl=I:TaVܣ ؊ G5E^ am}rƝQ߶, A^Vpyg][xNKٲlT 3{%$A%9p<*_kxЃdA1 B cAm0na=^>DaO_TԢsV{D3j٪~ҨQh޽iܔ]_;#ސm@8>WA1{?@Na5{Wp Ih2Gs;NU@Jb><뵢' dwߙ}3N7wfDEqwheTt@~{[!@m qk  (i,T18sh3pGA0 C <.ȂY;jz0IY>$o7ݳ?g=S?Ud $@NE_PPPPP@M֢Ѣ(Ɗ \XaՔaBt(jj_|TΥh+8?f1R8>>d~%|*~D&ZA\xA08ȣ>7mo3Ŀsm*&5|J @Z1AP.9!>s9g2qր x9 ߂!zXWѐ?k/EܵQY䠃ߨЦu+9찓IEW^>_!^}LkC=):;Z0I}рKuk\ǁʕ?,:".&w΁4s8 w<;ȉbLcZ?|ʫ ܑXTX< c9?Ƣʇ` X yA|!v-E*y&ή ՕB}FW41 ,| ! {pƂ n$S ƀ?>aED:u:Fyx +ahh(j*޶rbkfDqۿT-8v*mf~ N-|QCHT0y">x n{@V5+  jӶWxW_}g_|e:Ǐ<_4;wžw=hNzz B%ǶVo* iL> |Xs'>"s4F<G%bZ!a@ Xl^dsy?f?\A[L!%K4WZ!  XnkfCTk G-X'9jT$q^@AAAA5{D߯E +6o<*8cLTj(&缭< ]*B6 P>zg}瓝%,r$TdΜS޳)iQ65'Ig~)7â b jebA8 }l78Tq 8 $r kGGmDjPu׻ڍ߫APݣG Fzi}#֊!@d>|~ : ƞ^ߏ\4y]<%bɌ!=hT}{ .e^9MVRؓ8#CV=a?{CoA 1S1A@ 2jogcq ="B! <,vp/BClYU% olY:k5'~Ģ2faڇ[bT 9xqt>P@AAAA5GNj$^ kC9Fm \84g{@L?y9B E> C kDȩl[$ɞࣲ? -gG-|!nHĕA Dl-m?5j7M=^oHA?̢6itUKᄃsp?>寽vYu^+a$AZ?Dk_W+L7qoE?cqk~WKH ?~ =N^{Q  }9wރ>{Ÿ[o _zԲeO8 :e5;rp p< *cۿAPc|=AvA?~ [cs:EX'@'U? >֧?Tx}T$3hN~ض{  ll-BU? pӼwr1 @()mPPPP@M)矟*j^ kCn3Ѣ(Hɍ@M}?I !m -d +|?~9HcT@>U@A#ܷx3S97@S~Gd+Ts*ܟ? f8&@o8C !gھIa3#'@ 5hgR_H5ܘ4_MfKFW9O՟0@,ɫyo{&z?L[ol IkLv/eYdhe `!P~{j>C!(D@Nɞ օBgھJ t|06=N@U/yW!fCj-31 1ßTE;usvK=J wjmY8DA aŨ/O-#/4,ܠ )E uhVXf~d?fZ9 VOVѼX_pq{geGUuW@ c 3I @@@$ ! t C ̄1LBdEEQDTOvy^s%y@Tbuh79s+ q-,=[IآnCΝle7BqpN<]><胹>=D (qǏ9 x9ANP{"ǽ0O[;t|[ j-4gΒVwC %यgezB|0 2n!(<0{=8vtU7揿"Ta|sٳeEm|p:c*@|IG.^z'7`n.K^(NB@v/hFa-8*[E>pv_.⺬Ǧ<e]vJl kCwޥ5h`ܬwQ=x?5{ޟR!w7rOCF7A!9Dr6pPRoa,;ØHN#wPȉ $#E=T C 8""Oc,n궵nJEVnbC8}ŀGxgc{$' rej|.>|\8"J())))=jDSVB#XW"m:#A}\v; դn 9&+k HK9z0_}Hbqq$yB^D@+w]~ށ5kx*e|^q y(]@=~N▊n?Zz\0=ŁsB&sit۠OdCߞm}2 @'hr zxױC_/8Oi=\̝T`=婧~PIch;yъo=3;۰w=D{ױ{ Ee0-Kn7케L=6粒}^2p%00HUCWP?̩#b7/b:~u)y+0( QrGE#({(G,7#}'"i ]iM9WK:ϙuh>*?< OA_ ?!ǘ1X_ œGtPRRRR@MGmJt#k/MM&|Xm).R2p@=' /$R׏WtCn Ω (sqTukz;4r·_1F˺a^ぐϩۇyĔ}4E˾"AJNG H!P>z(Y3%d@SmZܭ3wZC_s򥱭,Ro#GZ>:\~/g 'RKT }.cJN:y.\@ .Ceo~N=.f(Wgy{mrN{n@Sp-&L< Nڥ|_h.jo6& k"r#Oj|qy"n{XqeusV48Z/#%ZPA=M|tT*GF{?:*?XshL#FƮsK\|%˻1's?p-'N݇uH  r`T&/ذzڽY ʹLeN;tpx7猃Gcѫ`' ]@:  rs %%%%% 4SVRG6NW.HG{Es> v|~th 8(Ą=sT珬򠈰^\?2pwˇR#Ʈrmd urD g~l2w^׽>?t1Q9c9;bӧD *}k\WΠ[t}8edQ@>"b 0o z;kS5cZZu'?ً[^']tX92<Ҟ:gy?篅{j͚5yc?[yQf-^ `2 `H` rjŀ,;G]sMXc >Xco(^/C_=َ;r-X[پq=U᎖tM}98q`N Q#WVqS\ b ν\ 8∹??D)~t!r1S A #ЇnJ?~_~ֵYe>پ3X7py!e9sQ)QO[Oȉ#ԁ3Wҽ=:QXG>K%[da7e%Դ:]t#oZW/:ӬUc( %"p\+X?Xʗ~ {{8y$L̋;xQ >? o\#F7W AXE }JÞ '2gIzP}!-}#tCTk6}ksl'Ea9rѰ&ڹpͦkO o>ު藿| qLO?,}o?]o>;HxɧPB?z(MV5do?{Q'zSFvh'N?3;Srš)3AMscLpj!O$G+1&y k ϓ_K+;(>;{0H PqeX "a*tIP'TgYg?)*C( (+A>'"׏ G!~;,v s2'̒e!4 6h,|0JȕkE?&.d9ܕ,PRRRR@KCgbꔮ^:ґ iGӬk@KsLdz8'&qX,J}#!܉žH{ S0gyc ϞP`z't:91G Ca؃Ē%ࢮU1!@s~-9%e~nB I"oTCPNV/G^5EQ9qըR^x'"ls?Bz>o7GpycK/$:㌅kB濫,ƾ?AS *\;<?]JyÍy>;g%o-?R9@v@~NB\o1'r0^GaF(*ЃG) }l #<>m{6@#9)^V@vC~k=ȣ}{?@ _ /{?#B?v@pmB^61OF)qy? x 4щN :G0GP@!.<~gn>9[CYkZ =d%'V Ҳo,V W .Hi71aoPr%%%%%>loIkitґt/*Ӓe֎ ,尫' ]Bt +Ƒs{+%NB=2ù?TSktڍëwZt|3^}1|P(y{H˾) `ǁY>q@?-1vcy#sA]B[#!b.eVh= 85е+W!}wL#MV"g~,tm{&w(p>3s&bo .lVr =4>n!X3 \ny1zB^DS "ߘ0`;%`+o@NjM}S8DŀOӇ8y(@.Ї1%ʾq]@oŜ@Q= R࣠NY#h-kG~^IU;r1@AG}Oq @õ%tt~0z uWM]A())))t=.12uKW/HGd:Y7T♝κm@bGO yG@EG`M1)AӜ;C+??_T5) {J֏_R[vDr:s)H)70ZLŝ@1N qP9B?屔)?9Ř1 _vZ |㎛6:l\*{[%d}w}/AFp2t"RdsKI_IbUȟwޥ@Yv[:X=8N>kWRn}L9~b Ӈs>! ? x8b, y8Ҙ%ߤ(IXG=Чy J #BiiJFt8j!{yX `k:w'GT<@:aPc 5A!)HsԺ~OgvZG=-m0f`m}q5E:aaSӍay۾G@Xw~YSVR#Ų]=lTj#;,g@B!aQ}~ Ci>*գs\!˹|[gtp~5=֕w-yʑ8#1UG8Y)_@17AC1a98 HbWMz5UPFe?fӇἭYW/e@з8{ّG7{v}K{ )@o{q|K~+|KٵBRrkrkժ;s77krn3š( vǻs¹oPϦ@u`a 8AaWM!w~?a9UD#?]?\4'e"s|^AP4Ͼ?E1^ P8~[j9tYiV";usiWa щN8(@&Xr֮hQ~O퓍Ϥgnl}[Z3^ZmKk7Oډy7^k?˯+Tz:\o/9ĥ_1/p-68YF8=onx< $u~햦馬wtґto@˺uN@2CH`Ny+X.~b@|:}՘gmV7CwsȨs}<7PYpǏ!,/pA /8S A~tN.o0|u1Aۇr0m>ZU+Vkk H_Mǎ,}Ǎx |ZQo>5CȀ;T_n_~w>1~xC+7ALxM>0nt柰Jء972Q[)tдR39{ȀFR$*.Saq> &(1ĸdi8'Aq9wP!9s}4ǭWPH珈k]YM|3vii̙u {ߏa\# b̑p(VͫIBbwQEq]{9},u;%ֆgrLm9ߧ`D@~sB/o;Pupuݒ?Ǐk{yxF&bvj|.k9/ %?|S#<ƙ%RVw>ڽҼ}<"߸8E\1ƥ}~8aNtU^zlMYӽva;Dz R9 s?Ǐt0:kEO0RUqĹt`x;PcST.rkNtN1W$s z< Rc,}y0zOX'\C q8FĝYؽzڽsڂrn9'v۵n'UA;?L\cJ Y@>%Fa?!O ݎiϛ8 ? ~uBVqϠ&\Z@p%pe  {;r- G䳕}+@r})|9mYl_gʼN|fAE{'j؋kaq@-~Ν| ڗpP:^n7&mMOKzH'/Lh;1 Ht ?>VqУ#㈴[ y0R Gln#Οle,#j%tj\Cp)b.R8*Dr}&'<=) O@qG:C7!)(1znꥮ P[v^MF7I6ZQa{j8n۷; dg7x;?8䯾&1+?10` -͖Ñ@OyR<ְ駟@n,v|#]8*&x DUWݘ͙7 L9/+W$ u\Ŝa9ʿ`͗c ֯޶v9d3l/\4r9БX>P,FB){+QC/G9#˼QHZ{=6ҷKK/O7}rT-@҄~}"Vq[ @tc}+,gq_n7~|6wW$!Ǟ_jɞ&i)+3LӕKG:>Aln:!UE,p*a ux[+/{~ʾ)Ȝh&lZ74ۺӮ #G>T GAqsjov|Y8UQ]@r:#pT)+2J vQ}3ِW 4IY/۾_9˜7&r|&T6wRGپx7 H{PccG{)H9'>M;8jƑ?t0G#"H )?+pGcQy }%8š\?&̻ٜ<3K~Azڱ.@}A'!@ d0A /̛AOM#s \E7Anh瘖 j{ƶvcZstPد߃&^s-Ѷ sc_l-@a}'zw;7E|VYY]̭?btsDŽ^@M@+ol,@me;*|'8#תrd.tۙN1e%uitґ_tP&CL]>sro{P!Ƙ\Q } PPWvI4;\'#K,˕zDE˽)Arpq)a> aN>똕%%ߺes/9mIͦsw}%߼#!cJaעRB\,\9qQaN`A1ڷPܴz95`y]@>G[J8|={U*-5>)mP?{̭`ʠ(A[s:lQwn!˜Y]@@1}G[ N}=^NjJu279og.^7󔹇PJ9p_h@Džώvo oP{؃}mμY&Ht!G$umHU쨆2nVC=waG=G<3l,@s@'=\YF\cq[}HA{eS? FyScJxM}5Q58es$k=Ü?&K98q 9aJBL9W~c9E#1cy7CX 9 `sǞzcw5!R]X6;Y94ckC(Qr79S~?-p*n7|+֫&@Ɀ+u9+Q(~ pQkQ'Q(^3\B;%zq/ı;(kkoO;%n(zɧo;YYb\/60zF^qKepk9t MPiSzHG.D}i}\Džw ߴG#\]??&/G(*@@s]ŁF_pPƵZu:a8 n-^-A\7HDMPʿA }8 |yDC$`9 >9rJhoouBg(]-VgپIG:@Ee6Uy60{@S=2wȉ~@̷1GsAsOistOBy(EVoY;frbpV4O䠏}Ɛ!@h̹Q@O . CuU $5P06v^ޜym%C7zWZO8z,j9ykT sIR;"GczFڟ71mJjitґi $t]mv!c}GNE׏Ɯ+ bd ,9cBAPɗ]sޙϖgw9=}8:<(Okqr>I9:|(d^JA }4sS] : BK!Z7Aȿ5=eN |gcI[ ?uHBJKA<{ ?C.}G[8Ѓ)h 8PǃqNC1?Ye򌙃N }3sZhonV#:h<AD?s>??S\ Ȼ|;\p@G!GA*PUnӆj-@xTuCh߆hڴYs"Z.Wp03]hzWKY95< @`n ~SKO:6T !$u8* qvrO6wAo\y !O E?}anN4y* qy?bfc { 3߰nϜP:p/lSVRG+tkLLKH xv|ž@ۇ nP3]?PPIAΡN0zEK_MEwX|[ ϘbWF('zuۇ0H?Fy쑒o:7G@Gs ~vQ@:o|Q)gjv'] \BN琂{D`q,R@d=Gb'0v wG@E"; DC$6`VNEVnba K>@ 91/@(a|Q(}OxroB|# @;ݼGlclG{iĚp]4駟E~iW P%Ǧ>3i#D@9'Pp,|lI]vuxIrk( s@6җߊ *Jw2 o .+s<42Np"(ags8fn ke5\޻5(use. 8}_rg}qQx\ϠWk:y?cT`P2 J 'n 2T_i:]tck54/Tâ;ͺy}8/Ҝ>c?ͽ;\KR5[KJ~tIՀsAyJ"X=a> ~C $@DDPb'c|9cB Ab>us $PHJ`O4@붬 0!Cm랮MҺ6+OTtp DrpQx9|!aΗ{9aoRp<):0rOpMjʻw[߳ǜǸɜ)]FPЇp)M|XT;.䩨R)RL $1As5A^%h|6ê]qLl) ˊ}`88,ڕJ Ym6@M(@?XkԊW կ>!Ys{Ōs%q- hpY; =zRR~|EX(-Y 6 d4($ 3Zޕ&EZ>bMRnҤ# E>>3G]Cn֬y!GY7 b9:LrsKii }K(}L1e%Ugl꘮^:ұoo:5$48Q!P  `#5>@=cN9:z?ZM=EzQ?C# 1ŤHGQ8Gws9:B"2uo BΜ3b#\vS@III-/GOs 9 Q A!+H!P4&b- йyĔ819WQPtP7$\ɷN,^y>YXV]=K(BB D1i9|s>~U#d9"kpCڷ5.@p(&Gy 75+r#3,)/g9P*ΠN> Jںt)+Mۤ+t?H@#20RmEroAN=J8]A]jlCf;Et ނ? {1( |Tai79<>!/%"Їe|gUx$%\98q ȕ}Q]?10zu3-900HscG w "y8T=AsXb,GEC!J}8To;w}!iN/.QANX {4WQy y$.o\aĐJs?{>QG> }8Jۧ\oMg ۯ>5oxm+r1~h34F!y+ 4) \x@GG.{M(g7W{*0g _(/9s!xn/?Cs(0N*^yBub^x' /+ J!Oe۬sW3:+Q.^P-P!2mlsanRMJN+Jھt)+) ҕKG:hiiqI-I)8 ?&!OX 9q0} )DZ7yk뻍Ą?=G?!Sxɜ H\A]?qc; 8E#%)sc$roУybsȔ@III@K G@+:݁dr `P^AS(B].e2BΞX#Ŝ̽ }X [taH)ul4礒}~꫷q 9bL@  99<1b>8{S qs8$#=œGz@>@(Q5E9xRq嘖 >ysb,@h_wqo=`dϻ]ГO>-}x %}pPeg8c5GEo {7藿bqyQ)sÏ C_8m7G˱fNJYn,T$;~{Ob+GLh=L[s rr{]zqJǺpiO"SV,gꚮ^:v0w6M"-uq+4X Oqt9}bPH?5eSj6]TҪQ>4*ŁwIK7B?(?1C'!ĘSTƽT =z(|poȱbY A<&|o!j^@܏2& GKA!4U x89#o]IKj6s`71`.eC9?"[0/tp_ '{ ?n) kR- <@&A# m2uh3@fɶU>-DŽC| ^覛0}gB6%b3\Nj(<\xo;X7mB/ ב@=$kc=69!@@֧ME_خaاc}q{Oc!wWCS늮S@X74ٔStґøoIm]?t0=r9]?2:(DOdKϾWӣ4nIg\7Z!W-s} Q@ ~C\ÑΟ0QroB\lu)q5 xi7`N =.x98U)"iHޯ@?A#q<&1GPR%.Ҳoa=G#h21F >ZN?_أfkX=Cm~}0Bm1ߘs=~?~NpG@[yA=Ǥ:~!QsPñ]JC6@2!?ً6=>&(:" NSCڅ*uSEѲo:-5wP9-1|tN??NF>a 9j,ިz=a>gR>t> ("y h 0F?* s5CT Ĝ8s; |'fc]#{e]vm1:Eب-{( %F\9,T Z̭BQ^UϏ[j^QXo!:싱DQ^pcYɸw󟿈4 '8+)xY!Q3lP(SĞ=y.rSGPk&C1j՝,%蠃#_#X3筿r\s>\vρ!81G!/#yGJ˧nWC9GKq.Q 95@=0g#{1(Q)sJ())CsZMl77zq@0ro#ezbCCps*?iɷ]mjGv8v:x!F (TOQ Ϗ+ G08":O[ ^z1z8~8"%4DP۪zзm54s7Q[fs>n2y@l%觃)m K.:_{_7cA#}N4_3@q3 c=^r;^/DŽ^:VL ^gpJtJFjSqBlzꙆc,Xߙ"?Ѯ/YcN{އ{} NlIMȡ08 ]vu~YX !.\~d3p\ -.ppF7QNE ҃~f_`m꒮^:?p$ ު|Y$ |T+A`G5V]xn.\ӽvaTi2,Jb7w"DaC( ǹ@Kλ|:c'u *r1B\s$H]?N+"~lFT %ߐvN;kEH7?kLmFCAsSAZNaK9yC@T(\U5!ȗ~=rn';p;gE=k'v:p {| }qN uy9ǸQ? tFȻ} t tRZ\=9%("j{mrȐV@8 l9C{u7ߓnbo )8 JU@k5k<[ quR X#d^KoA;p|/k q* 8U'~=<D7?wi8ʭSksLcfaP(ˆUc,bpro6WmҤ#sk˹_j| t_z#᦬N7풮\:Ѽ?h'& 6[FOP,1GF罺tلu^ExOq9~H ]A~4Oa"ǃ ?BAO @ H= |( x8B; "('b icJJJ* !H>٣=^hbLđ0Bcb1"vPx<=A]-آrf)]FBB !FWqC1@t`G>27q.b^;B1'r!/y_mL,V#9B!)Dj z?VKA N;m~o>ʫ?\5(mC4'rx䛏amIX1JRzXi,8 5z  x?9V ` 0ełscOdݶ<(RyT?$`]sb)GIOƯǑ5 n#,fS/{qKpPRk,fb6\*:3[o EM(b8yh=1 CV .B".AD/z4=Í%o%ջ 5Ώ4p#s"<? HUJ%pو?O̶|$kh>rͤl#5my~\6 ~r{X(8w5w'O{. J(e44ߔR$SMzHG[}#ֆ:Ob"؉y莡U>n*,)YC~qՐeS:z00'}yTأ%ߢǗ|aLqISǏ)@ v=wp>/1.r`웗܄pNG}< !ux 䡏Q @III-@ $s?; ro=G=:[o8 h81t$ rG }~fdUo{h23IH!$"gXJ-(jy{gg?m(j*˱"3S==3f>Z|5zͷ'o]zl%b׺}zmkŏ2knߣ=#s\=.*\jGJ8 "g^b\[ԴQJ]? OP Z8Y:Ԯ~:~p zf=` =Ms_ \@n9#o=w~ϟ{'zP?@ 䵬y#[@{"ϡ@@ P/o Ǐ tD1K?o9aV{D_}t5~e77u<gwq\;Om;9Zk+>655Ծ3MUo]O}˵}v]'h:|#๻*x"$m{ľGz{;=<可<pѧVУ,vbA@"_GMA=Qn \?:s.*?{jC͛p'x=e7=eDߖw-ϼEc=f2`ez|ɗɁ>.vDVI$_=s zitS׾EL^ s u|]|BU'_߀?lKSS@;AEp˵}@׿r/}S4ydu ЃJN g>~ٱzË{Bx=XWk>T@XY\?!Jap֍^#Πgf-h=ȁ@q'b'] 9' P:c9eWKyL{xQ#^H\%_TsFu;hċB!o_]Ԧe"o]+"wN ^=wAUy` 5#o[oE׈&W3hz65yG."%W!j5(b z<>!]W qԜ9~RJz5 c.作>C}3@kq̌o{v!FJzwqPt~|{=29 b@o8z7"%+C|l\/{?O`VMM }khKEE]/zgXP@E]@K;fPMF_^?ݦ ] 9{ç!u=Ûn|Ck{z?>v݉o>7UȃH?}zz&飢O \) qO|ڣyȵ1DTІXT +B@Sӓ5oH!ˁ<p 1Sd@ȡPH!So=q0 coA(Q 'DC̨+QTaP }?E+5yD?m }@@*{S;%W TNBrB&@ڡ~hΟ!/oG3#%+2 s #x2GyPC$7Gyj?=VoooY  oT]?*?d5b ==WC@]9~20$G`G@^WE==Cr P@#K=_S>~׾ ^]_z;PɃ#[ V4*56G6O.b[͉&D+>|K?BU-0̞o1P_xC{(SE?'}6 =rwO2`PwpHp1CԶrNʁH@k<DH䎟xB~"W>z#BK'5'$N A@!~DA@q$C 7@GS5Jrw=>)$r)GnIc0rA{A kFryHOS8"C㽈lts/<|ۦOkHnN֡iHP ~5+5oY wpenC|L@>"7\@ CןV/w'N|뺧Zw{ojMSS@k0t^ѧz@PuЎ'J_Zm7M-sd Dt73׸~^ȣ[;*@[@B wxv   @Mp(dЧTs'DES#zA-މ@ p[ q 1TbЇ<\@g[#!7C=LC@\AUX'a!;QB@717$ЧȜ>#<2T>M\? D8T Jֽ?)YVcYA$wOD O"bAaPOq030d~L xt dAPo+߈sG\?R~"Gjȥe'{Y?oN{"z8s("/Njz6ٰo|[Їp67=m ;b>Kwڂ-zꞢs/׾37SgO.n jhہCgWF,w* PpD*+6ް}{G|6=77ȑuo8~@ Ɂ;rޢk\Xs ! @A2"kqQ(P3WІ'"y#AG}q e0cuxw 0Sm&fa`bzo|pHDc ( L (J; 'r>Z?L.wEUEOH@РPGa#X@MMMM 4@ۊZt롣@6e\>FS]9p|n ,q(O2[x=Տ}t_?L?{/OD:r3\8~@9CN-ys.w%j:*Ab#a[ͩrC?pǏ\{-}qbګ G`G`ǡމbN4㷀Ѓˇo?'j"3@P%:UBG8=$ǝ@G@FY"@! uqA;~G ĝ@!rjqSg: 60*(COf |\"G׾U /1ɝ? 8757OGG. x$n rpڠ8"BMBԸ}o>?%Chڷ>!rdȳN]aP!7Z@MMMM AVOS]~G} p4esxiC#SG?'"n SuDWw+?a{퉙VrEby9ur> !@8~b.o*WzjbV("Gj8@OD W@ ] G?YSb*2OU~\>zmBDr<C5O\?귚;|]Ê7"=AZrs$@O'wퟐC }=WIMw޲-*=Z| a[5k=]6=a51!׵oqDwC`sx+Vw_trg睟Cc.ܰ龸#j@g6p@n{3Ohr=vh"@O.@鍟zPGO7~B; OUpj @gT˵ @hڿ`tDCb&d0b+BrHVEȩ}@xxq,o\oHƐ :/t5 ʡAz#Pӕ8[7{|ž]E@ ?oPӫq|j&z}nJf},>:C5=OR3 q(zxjo\5PSSSS@;c!^i-~[YG95z#/Ltk2uģT&JrOڶ[O!?9t{Ϧ/͍˧uj}DO`\0!@6.urO 쩵  >,GϨY&.zYXD/ ɡI{ |rPGN\e'DMdf0pVUd~dnT8~J/r3GA`h1zbtn#l#C9S鍟?@1Kz|  up} zkq @O?j8*j_gkߢz#9{mm‰{{YO zZs`{kx㰧Ψ6AL{&8 !?OڠOo'[stM? Ѷ[.wvGOԸW9Г)5yyg(]G-{ 9Pq zu!7(@s}NA@dч:Ttyw 4}Տs~_F,賺?Ehyc[u 8Up[&y:K@ 85 O/r$w,c -Rol@$Ez*uT(*8z"B R5DOGnЧ:z2Qa*ֿ9u > Ǖ-"WPs y C@*?@!G@@un{}}BB{~Gxjz DMdޒpS{lB DϜ@DY g0H"G˻z{:w1GJ?~gW nue}o=Ǯ\xc?5 rDN =ȑrD&Pzz-'>'?bP{l wܩV55555Ծ3]R>V4~uۧ5Hrj3]c|NF2N^p7! C?sv$M/vW߳WI!P~d'#Wyֽy|h wD41 zSH?@"Ϻ YaJ0 Q,=!?!?{n*z7C@}>Q'Ѡ@@ Au(sCz7uvC\BVb[UL\B9=(wO@b x\O}<ȩC rP2=>+dfP]F7zc =׀<y~3qH??n(@P?o@[Fn'rj Rgz/ Y P;q|@{"zBDz ?77PzD3a@P)hբ.h^~S狺_ytg>ҠiGm|DRjOZg)bB87@~c?~ĮDv{tHwB0>QP ~rpVչ }?ʼPo,jf^#zl>-sXwz"Ro!"08rF/~\xrCOf!Q7F5S5oqAqyz$I?D[FOO!:S8}7O#u1@!`9b@%J8dP޷ :8'O+Hd+Bg%2Ѓ؉dgC ގ޸xpbܧz=:oNURD9|CL@D?UAc*}N @@ zrdEͪ7jqc ;HwgPjjjjj}͝U x:R7 }UkvG|gtXuDQՓ;q-*p>w?_'/^vاGޞx!P8@u@.=Dr`DDM.~j^"A )\@NbW!s&($ { 0*\@7S#(Q׏׫dc+w\jB  f gw}o@B}W9;@蛸 rwX T8  ]WFuf*}bϕokt V7>4ܩ=U~G{@S  W!@:@yz\u#}~|A7nE?B.+'f+S.QS{ spyTD=S8I>+쉨9@HA}9$" PD$pHn}9ȳPEnYV55555Ծ멇.j\~Ek71x*Q 6@*GV;@%VP?uY@(Ѓ?3|[8`j[?s^k; j=OrHEo!bHH~?2}[@Hm(<y^A3z*_FA bH?pHWE?)5oԸ~~'3B  -= PdQ-y5+5}rGgC!G#J\ 5 rC !wQ9;@(j`ORC=zcN4Wqȉ{AQ  PU4EΌ> u aBGֻC Upp|w7J?31u:"#>&ɭr ) 䰇:n }@cSs} Syl3AA ys55555ԾAW?]k;c8k_,m^9=+ 5^ 'm+Q u }B 1־''⁣F/?৸w{cɁEM>pԷ8 Gk@Pm-zsJQCNJQ4~^޼[w|y4{Ϻ]};{B-;?Чѽ_  VATUo>vcםu@(RwO;@ >Q'j̝?^uJq @D$l 7Ы(u0Cz\Pڜ@ZsC^"Fs =C"A~t՛{&&@Uv㹻|\~^99@o<_ś.xSw fr`Rr("!/n7ȡC?Ü?H]>Hc's ԞUoAzViUq>Vj-kވE@5CϜ?7%kBc@H?P~h#WML=oUÿcݞ9qNbs XtЇr@ i)[1 {^ K"+P[@!y 9A&us'd9'"5n ;&fA􆀞Pxt PuSÜ>   ~ȵ6EK?/bgDB9BB |@(YG~?﫻J OHP#MHCOAu;.[ ж;/￘3w}[{lou :?!n#`ß~L~OA}>MTdu~'w)aǀOG7sH-r|\]?Dr_ <4Wsꢱ"rE}H)>2Z5.9GVg QU.jZ5_ICQՎc}k_Nȷ庿htLsIS;6}7\Iw&\: M]35k|7>u,O(>'@',ীV9]I{m sRFjO{@*?!]AAWp APr CM_= PC yjTq82 D^r+OD<"o}ȩKLP(pODr"QS'r@uF aF$kT04?; skਉ|AOԑ}b8qX"sX`=n @71Ŭ~-@yѓ!YG`}' $wRBkCSA=@[wlY:ݻ:}"dΞR 7 #W CqqG~ΐF}s$';àa. \?MH`@ǡsb }P| E?`G_h>>=J= yD@ Q[k_׾m.h멻i^Ng˦/xT/m{ok@k~Н=Ԡ)D3ToCoE (8b蕕prgK蛟{ӗ#GֽmD'rHPR4C^y D1Bjz =Qđ7=!s:IOod|sCp䭸}l*!׿Q;qC_0Ts͟ڗoH?w}uuDz!_Wz@f3ȃЇ(P&`O3 P~$C>C̤?뭂s}y'I@VYHn< +o#E-.mݛ!QO_8duA!7rjf M8ֵ5n[[7S?:QgN zo(jPw*?!>R'CL@S ;H@!OkMgNXݟP?^=^CR ੹A O"'r}]!$P}kiFV'-rhk~ssoƯ\sp@u𹵕d ҼVڽ؍W3Ɉj]"H׿Чj:"vvs:ձ敿U`X͟~> !+UC_?]?.n !B >̬C"R ?I U!PH!'29=P(q>@z P:)D]bC3'_{f PM] _G.sqCMj"7gA?l{ C 8q9cN xBj>~|F#P{z3 {@8}s qBqIq1_cn(w3?vm{lrUufn BD_ Ȝ@h>C(9YXy4/ٻt/n24sOs{_񝟉|5+y Pτ{5~C[{bś}r))EoCR0 `8$ ?=t-os>~,C9[@ +R713P^p > ~l A {E {K@D~ t͛#p }@=|&" xC*8w#fK"::rGPϑ!׾996c'_g{՘7z@TyS̓o)yD`'X 5yIu*qP+ɜAy,)I@E{q=<sVk?TnwsHyCM@!A@!U~~ e.rYsH#w1DNI܄'AHo&@`GOAk_׾]P٢>Y4~*?c\!G2謋H/5@So=͆kbX7n?UB-z8~BQ ~ʷE[gլ{:}_m? UoBٛH=uG1GWy xj]rj33s(3O7  Q@Q'L:CQSsG=fXWk\>Gt#AnsГWo?D䉙y1z'tK:$*cb.Ο_f'D~uBS~ ({d}@?"PˇpjC1wB^7+2ַ?13P\-o5p@@̢*u)졎7SC? (Z?8L HP=1:}Efy5p"p$y )"ϝ>Hg֙@ rj׾J`hnk׾}}z_kFHE1}Ўo+2KU?>u r'b93^ OQOH~BE^b*J^M? DCԾ1㵬qCQ- BP 3 9+{@>5aF\~ k ` =Txr=A}<Q}:3 `(_ ZfȁAD8~?r$ֽ]@h2?D[@8}$2A-"(!Gß@f虸C8|YV#@yL )5=Sνb1cozA}w7~8]D:}VQ$p\A:8QG"(~!f>Dw9r )_9P-!ȑ!"^up)1bz*C(y5ph9"Y g. ;>oɁ?č 4Ծ};M@x]ENjZ*hKL&?;~} Qn㩻t?v;|}0}Lj7+A} ^򭮂?Oԣ{79:K  ׿ms}N)C!u {'U_mK ?65oi0~e7zrb׏X%w~{@كXF yBL=@͜@WO =@WyR[]@6Drs ZqڷGXFrv'qH?s0OGn7Q'"X]{DπO^& VrDmÓ<"zQ$wȽN4|;}L8 =~=ncu]rGA{GE@Ȁ;{ysؓ@7ղD>rO x玟C)Y>$Qg5p  ؓ"spT3O"C_>j|}959Tm-\׾4AE)z E_}|~g{;5s/8Sg/SBb<靟SL9NŸ7BI4pl+&l[mڷ覻HODwk~/+]'|]`Hg#u@BE:o}oD Oj\o(pxw5\?R|"Mp'| F@ˤ3q(!dwBV(7>` \>M. wы!GdԼS7s2-ɫp7班hwP#=S ?.>8yp<@!whHs*)s\@ |p2WC \ iO DZ\?W/^=19_ߺMzz ~9qj\@8<dzB<9u5pu%B9q7r@x9A#0H`|# NԬc=@Oͩ-*8jr3UDL!sx#j@IW=CVY Sb\:A@ "B_'z ;t[!0Od7~$t[Dq3rqPqۇ8M "|Pr?yO uA Ak 8@@S*ּ0(>}V10!'? {߷wnw3T 5pP( )3%N243~HA~9G?뇚<]f9Ї(rCnWC^ZO@!}(05o r|\ @ Ρg?9}\>z,GLP@rÌ:B~:ZNy5n DžAnɑ@6kk׾} :E]O) gg᮹Κ=5d.|)>θ;?LxTj?o-n)'T:~m<@M 7 }F9/s OO s<|:3e3@Nr'#9 [XgnP̑y$ݓ8dfrp:8`$$@ɩkoݟ9{rL@-#'j\? Bp(Ú7B$d\һ?YzԸ5ܩ=z!O3Ĝ^ BQu/O)>rO6кj'NLmo+kܖzɹϖpWAC@O#uN[OΟXqУ5Gr=ycxBz[ta sV$ٛ^:z |hb}n?9k7ݎOkfxκE_ Mx֜?%X׿ $ \@sgl<OBU]T% ]F^ŌzK- _6=ACdVn5b2c9u9!sXc'? y{ST{rG-\o)O]>@GͬqqQs(r wDw=7jsg2,2wO=H?+J8PJn,kߊ ˽"ֿEfj8}>]nȝ? ~@dC]E5S r!@|XsϚXFѓcy rF}=cWib=̍]pۦ}ȑ}<[@aFm5G"9 z.@;~0sjZ;&;zљOҳ?H{C@Awcn:)rGGj!AC8.Pz}J\@ pk_׾]YHQS(~sh.IaO;[kqn9Q_@۾g4s=(ZO8 ?5<4o=2r/l޳ M.y-OQ;?ך>>|; e2c jb1qR1Ч2< zCCt淁p>9'B ODsxM\x\?/R{{!$t@EBԀ j1"wYĐr̈-j7b׽z=%| b&GrP W#oԡ0:*)5Aj="0(4 !(YFbB|7-]1g=]?z<!J (UC!nԙB? PNG*xqȠ7{?@Aq#> a[*+bN Cd' qD-wC 1(=R7PPuvH^ez{ Y:׏f@ Tz@f䦾B-s7(z8O!wd[v  Os$PG\@Du UJ8͉ o="pGrCD~%ZCN`WL'$- 9Z Udw= :#:h뻎]013/:1;ϖwg{@!rt}z1筀rN" HP'Gk`M0?@P.@ 9M@Ĥ @D:$p#:!+n z~GD375Yr'95R~90y@PŬj_׾N hGu=5_tM vXtg@@+z9(/&9p}{O*s={,~ X ~A_;@=% Зt#kݿyF @zE'"@P@T B=Џ"<=!?D $gdG#Jnq߇\堧OOV25Q/6P}饎 }Y%n [?s' sQfyU+Ժ SjVTrf'zC;.t3vq{Զ7-,P>%:=_F?M[<(ȁ>Vh uoǵlI. z!;p8)y̐qO} zJ@z'ꇩ#$ =#j ĺT}k_w/z꾢}?Eo, SEHr`1q̛^Z9 $ؾh??k᦮ac x纳C~<" S]@*ocEK3sdaE=g2২:"gpq8~kޘY_aM:uqBD'n "O9JO}l%\&@CPO')ViA~ *D& P^`ǪUD#ގ Rg%@*!A \>U ^>rCDH P;v'r`o)@D= D-n";.uw{9Ig }t1y9ED)r'r(. ?QPݟ+A5=(< g xb9 ;TݰvHֽ\>> :={%byHsj !bzu.}TDKZH@v;s`O}$wCG`#wGPMك|fy~38;??:6@P׾t@.=zk[ +72Xk֟~>M_M^l@NgOv ~koDT'P87U+BGTP{9uonx >%Ī>5rw*h ]. !D^! vo P3OBJV 8anCr?ŸBjr}TsK^)BHAPRJ?CNГ>P~ $(3ȁB xꌈ5ow0rsS2ɜ>zNo uĜܝ? zAp8Q-R#ݟ3 @zB +z3ɺ7szH5 |ĝ@~urAD>Z#' MG^fbr^g oSE}3CM:p@wrDD03 8j]fh,jADd@Q@;M|j G &ZDHS}[FoAh+l1 Ceo?"9R 7P[ ׾};@hݟV={~fn#?D?WОV\=+.fSwv]pڼnrqŸ ~;l"?!@5gn$eOzLL3p귢 @ 8Y4;?>E@ ́B'0K׿Sd Y*AWcPY.PDD9 s8=s uuC =pm9@t@ IoHB!uPHCRC. z"F xgE2*ɜ@s%nT>Ry4 v?YT@T!Ї\r fvc$=uC-UohۛW.X/syyxF@$CQ;~|8~s=~CNT bn`H\?2O^B q;nD} GPI?~i5}@? >K aF)ov7.}8}|׾}U@s=\˽>9s}[f2GP 4{O1R`K^,^:us{|g!l۸~.zR5uT9R SֽM^_DkV֙|5?=+pEZ oChkߐ}CO }P sG&'BB@j?=w H(kߪukO$ !G$N GWá j>G1G2I!B Cw9}jV8 2g do\׾#Úo6(@-[:>lfޭoYc`5L@">:b@"Aw<~@ :r~ȣ: |C>0W(*="?Zko!.YG>$x\=~~cO< \@!~̉\ z }@ @>P׾4A=Xʹ_~ yC+ ňE5{Xo|{:sq\a}x7u_@+S 滳>(n)~J|.b=STPĚ'q?15ZZϚ5㧀*gq)97? c H $V D0( 8~pC'Y]nb^swOOy/?!jw;@R {$Q wBA=}ּ՜9P'] !J/s%wRϺ#oڳJod֏ Y 'C|%\3> }*#@1, @kސ́:GEOJo>P=WJڍZI? |\}KA!OyO}'/X7eR5W C >婢@=V|C?d}jnnB1w=:;?wPD@9z~ˡPQ?& 1<B|ʷ3@F>x82׏ \?| yU3mJ qQ˧jrG5@S%Un.`OrjwE^Q[ ׾};] HMEGZ-zOY;5gz$b[zAwbW UnGql>Pšs P8)Hώ +8 SkYV$y8d[B Mnjl 'ckx(O8k?fy dЇ|*\>9'$'sq߇wԲ ,G.u8hnRl`Q{'@A@c=?{d=@}rTwÌx([ :NO@pAnG4^9؝ ?U:bU.Ny7ü:|NVYGr 9ZPSQ*_ [%{?9^D?Srz!':N$n 9!gț&v=إGnتz?>Ss=!f}CN}C+ DP3 T@P׾ASE-zsE_WkK3"=?"zQUԈw/V_B8.|'~?)] ;g+߼}D׺s 9V(yP?z T3q:P3g3:ڍ{Afo@ MpnZN*uoΏ7.7 $q8;PGV9 PCO]=BV纚Xs>Ы}@ϩ@ސ+PHp;D_ 'p$hو>->eF.}&`5pA@P1cQPD?.@+AK&C5}7(2!> ~(=:;# u DLhρ07BjYaB|Bz u3(sx=8vj;ϖH d+\r!g:r"oS|E(j_ Ȣ}dpxBA.sBnwOyo?GTS뉐} Blk׾}:X􅢮>R4~_@)DՉ(^5pfIwy_01(Sp1^<_ԵtvۋShv^}Wb<= {P]@~@ŸgC.uqL^/`g' 9*@5P}d\>'׿ `?*oWsj<HO~Du EDؓ_8{㭾a r׻{]A# I?-D]a}[&=qX7H!UoG 9x=?΁@䈻@Qr"kT5y?+j t\}ȑ u "?=\?ޫ>~#HQ~u<|n "yPp3O#zloqNq/L}r-:13=iM%. S$G{.PG?B3G>E:>xܝ@!;">%ү3@-D} sD? |$Y@}wJ/j?C_4JGA@+9S־<,&P}>͡67P׾ﴂ@[n/Z.zxѻگ? 9KpyKD=/`PŻgozةr^08wS5w nڿ8]SW}uˊ]kOWEW΃ҝn@+)v}J;@|@ϭ ?uY߳R~P?OɉS"/{@sgfqq{?'7oH>G?Gz+!*!}=R!}Skd=@ЇGFSz MC!-:DJ@ B zR}CIO!\@4\r&(5}1OD? ̨ $pǜAB"=<C@䩑\snD=]&p HԸ(yD;8Av;~ȥ_Dy*uyC@ȉ<*!SpS}c,9y=wh*TC 9!_͟$OA(A9A=x$G2?w{ ?Y kY9 uѹ" 7T3 {t 16}10`1 cWaZ/@3^10/`eRyI&yCjL2(ߜ9.FW}-Z-KuY[|bN_Tz##"CѾU}"֫~j珮}SpP'&}ڧ}ڧ})tPkM'SDb<%gZC<.??nZ~/X9uw,X~hOzogFK?ro ?-9E?oQoѱ }s xXf{8cN ?+ױ͝3?~chŽqluk<7ͺF4@ӮYfk^b.7LV5H.~0Yj: #(Q j<󧊑#$3B(*8zra5sOvyan '+Ǐ+ C .= ѳP=N}YF0HEnrLyUpvȩ?upD>2z4n 4W"&@DO)YDUp?.{X 'pG 7jC "*Os/3C' |"JXh|ɪ7;ucG=OM@)V7;o4`ҫ/?x5kn{j5YP l-5; W# b/ ЛpqC4_v|-Y`v><ˣ.A<g`F-:X'kw!>#zNS~X y.HOΩ NfPHʷ0VC8 +rfy͛FTA7+As@䀠=Wl)Q ;]z- V1Sap= }C:rB >7Wn #+yA!.xL@(rP8jwGD 8C{#(rjO $n=@!裘! Oy@} #ʷG=o1㓫?`Vm;xݫnQ|@W)"29+W~z7'~w=H!NQ3+?zCc}YfX,&(Pz7f' x'ǏCCd.77 PH\BHX0J9't͝OO>7a5Եۯ=v9⹀4K'rDUDG@s/ySfU@C'3}m_zg I;2+^ ,5->p@~ 7#p82yp<\?mA3uЌ;Ecn|+ @~<+plt9 h6Mw{7}iޗN p)uotzH#*VY }3@ q( 'w:G ѣy!qS֏^v}t( Nz. 8{#Q=!#G |cF" EN  H@C?1JNEC8p'׏]ݣ9PG'X jM >T5E =!jnhouozhVyF Pg= 3jqF2b' lmV8MGzC9 D ME_ŪJ9!}j ?H%b9p.X)>cGl-V yH-:rskpßc9M]@?+ԇdkwb;yDV-wst\_g kO6w>z#_#;~w@%@(bCoADTD.R(\?># !/4}x}u|j H>A= ΕZ׽y:a7 4@ rW@a#T9~A@5k s qA'},|'9Ѩ?@!.x:BZR;DM:;gx7JOQ (>D>DV]u0UwOPۦƎX{}fU_*";@&jA|>#?[qLTp(A -B[੤Q h*!/6c~@z S>3 hkߒ6ck>9'y}.\㒑ۿ{x<nrD.pA<#>׽n D?.kJ@ޏ^qA>C: Arǥ ѥk򻳠sjY梏 boD=z2IOC3=́j?j?.OmP-ӡ:|l!Wy}GsT?5Inu4\8GS{"GgDf" ;@V(;!Bp=,fЃC}=WlU޳̑ݝV#+;!/} =vУ5*ҵoDp: 'Q1Sp1ЧuorYGGPvP sUCr@ yo"G<GyI9GzzGm- 9P PSuzG@?  }z-jii}fPjZg|3̡F1CPZޟ˺=zU\ֿɬ0@;ycM(tG?&s 8w^v珁 ??dpyp S{@ {?[XƗg7cm9Vmsy>sg}Oj9wCͨs#3e'#nt"=D3A<^?|\ 5f%" a̚B {@ $GT '׈5o\#. DT [@>3r@8~;@<)cZCOBj)!"k95YLH9|AyOjzN\>.>2a.C?@ch~~5D/@{P'ȣ0C?УwqRu8}X&` n"{چƗr;?[sqw-L~R;ȥ`("\?:KovEq-*z {AiCd+Z8@QrY,G!?t3]HWN q!P lݛW}cG4G;sZX$ `eO! $uuoyf׹,GQ }ڧ}ڧ}51dZc5ԕ#cPg`ϑS6D @5љIz;yn}G^5~\(Kn{``c`͐ ?Wm˦]@  X]>7'3nP`~m5E'~31nЖ@P C P7P>.z B I= :<Y~d%9J8;g4!~}!@.f~PC$䨱Gidf=u>'Ǐ9}7;6PI_>(\Bs>嫯ocvҭ9 3 *?: |ߨ8A<!w${x "6hސJ80^ P{5ob׼ Qgec њ"_ r\> QӓUo@ qwe_&7r5G{ZQz#*s C-g8, }ڧ}ڧ}4ti@LgFt[@O%Z . 8s.^ݏN3/wo=}p̀=Tr;@peśpSB8|A (rf}y"(AbN Y+ D4Q7r@zT+IFkޘ'zֽA z%A|j5@8Ӌ\O#jY'^*= eYO:To$@S#GvG̢k"O`H@O@"YWKIr=x=yt(" cѕWy<|*PZ]+]Sgm<69~ȉ CQU VR$/T d3]&P=&z @D=9"zJj8wuAPWk) BJ`rB#5kAL˵psz-yG-`(f|' @(P>)&WCG?{)j7zD $p5p&Qjii}-6`5ԭc9@?y~4~XFOϦW.\'{%;G>v?ZMbÒ^^7h&7ǙX;}%G?c^߃>o}[ȝ?p@ Ǐ}{n,0273_Ӄ@^GAs~.} \@3+[Iֽ5Ī#;'>Wtѕ_> u~cq#Jp CGPpRDna Oq ?RJ> |r/AY*E=D'*>9rQZb{uݣ0oΫp{-SC! qB !Ɂ?ˇԗc} riw AH$kLSWOI#@.f5 G]@ԅ'eQq'D13y4?: {'nϹ4s˼ןgGa훀 \=" >hN#(Czۇ<1Oq Xfu]%2LF=r$+<'|d}"@wOя\:Ru<9'q W P?T:~C.)ك@HA 8r{DJn >>>:uS>ggz EWeCn";(ּ t08ΧuyaOŮL^O }бWn<8Y|grt-[ff_~&g]@~!9 }? 1nHsXy[w~ ֌s ?!>u l5C}cWm9hG.qE?=^=&9\bt: z͟$VxTz(Ot훋qP[.ЇXBcz$'?8T>>DꭀA zp9s?!6klf9rD4Q ?`(8~'PHrGrHCUpv#Fp=?uQ @E_zV!>=?C:*c DDڷjµOO>M뛮6]jc?]<9;ˉ ?QW™5pid%\j=z>wsrwwwEW}/:>@e2Q1SD''Y]*vjqCoPd\=@=r`|ōӍ8rDMrq5[V oԋh@8|n@@i"VQbF;?&@!\@.;Ć?Փ Q{@@zD/"OD w\f'8 +Q A?7%R)uoZ#o eWWs73>OE6wK{tGAOZ;<ۇpQ~U tYWBp ={ DMtdu{:@#}?'"HbgAGGQ̱~Yh.}&o@|ۇY*z6|[@Bj'H P>ѧ.V p|T\@%=WC}ڧ}ڧ}U4`g@uֽ-3aZi:/ pǕkkr ANA:{ݏ?vm?b::7>s?;:W뒻7UCCw&y/{K ,X2=4H8q=oc{@Bpf? 9:oͺosq<}L;="Ο;5p@&>hyK7 -Y{[FLoؽHw+AY?I~U,:+>й 胚d>*T.(衎ۇLV1W:b5"Fkuqr'O[f|js.|T f0#%'r$S̑=F/G@ދ;@\SRB zVE ؓ{O-XF$Oʰ' . ='M1KOsY<PD%^r0! 7DIQ*g :Uw\jG!P:C A-jii}Mƪ^C}tԿ4Yh:1AS=Ia tjO.\U )dѻ zW  `ޢCw0[ :@ HK Ap & syoG>[0m?jz7߀ p+Pr_6 539|-5Wt/zz>δ[n]:r[@H>\0M rqKhHP vo ~Z8}{ >Hw7S=COUpp0@' DN(~< OS#uJEڥkRXI(AOO> 5j5 {5 9%=VQ;! WF|eo_#`zCzx鉫GkЇq-xOD@϶O{3Yjռ;k{2!/@D OZF]Ik<.W~IHau޾׾E=}"kP{ByuvL<=%9@H?rQ#Z $3(ˡB `FPD@@&=DDuyfyrx<#"Pc @>Č?ѧgb[-]\Ӯkii}6m0h"ӼwtLv㹸~q9W*`N b䝛pI׏Ͻ>!"s<ڹ$HZN€˶;fz\Yr̟;1_r+ugQYl?'@~ lϡP?nlr[o;~vlc8~@ Gd ;ҩkp׌~53য়&su/{g{ TC!`e[DL~!7B]뇺^W'{ )JDDAQ3q3I'p$NP }SK PCA<Ѿ!qQB@ Wsk?!?ڕnQ'"s?}uB8@8,fWPĀ:8@{8ȁ:?DOR^!=7 G}yn*7 @x#=@!1C6s=}qV᝟ cX离 ЧT |j];{"X4 #Okވ&jGPs@Q'#u$ "QG+BrP}E =i9PHּqYc&Ο\'}'<~35:@CN׏pDWO@ٻ@y=j ܞ!T~W~Cbpȁ<D?>>.A MWz twcGW!?xA}@e5\D:y^o^gßM\#|`ϰ-;uߚAp hd,\ LgV-6τ|ށG<;mԝ: |όQlnpP7ǣ@}XV mͣGn-~f?K]^^U43?q=\xu9%Q簇 r$N **#<^;!"Ij$`HT!q0+RzP!<b!ˁA@+;j|z (`}3yM |2 N @yAy՛pXq!t{ d bpu[t>3 v 1C [@L@`5GwB7f~ T{p;@?rg[_憆gf[ 3ɍW5H`5sV~ ]7h =[@wO}\_kn( 4' \5 qq_߫]???'kb^9Pv%O>UJ7j\$k.Pg)ԡfN`ַ~ (4eC\?DOZ>>>&ESb:~Npbv{@@(}`Ovg}C^?yK!y&{vֿt{zCP-9'_ Ws9`0ak[D)cw~S@ }f PUp}COUp׽M7=|ӭ݃LNn;~LYb@|<{> ϝ=+FO3txܝg-<Ѓ+Ѓ Cȓa}zQGR$@#">37w\*B2)rCT#X8| %pr8 Qs9(DjxY#RN1B@g-з'D3Si1{@Qv2Infݣu\$ zn!?*%'p XP^7Nrؽac]esLܳ7=Hd[v TBZ)ѻ? 䘅08Pv o0TI?ڏ(G իP{${?w>Ozi DbbN Y xrq pI/;~j{|C>V`9񣱐?rֽ9> 9k?>>.A'Vz ua{p}\( *uDor@ҞCUO_5z7kks/;?}H@?Ƈq UN}}SX؏M~_G ~&G&'}X3>[n  . sbZ5j!>|,w(~9frrOonkFOxs4 귀:1ס@â. Sǜ7y3@Zȩo"W95)R7qx;RHD ~ޖz^gL3 B YG3V?ѳGa: 7\?a%\- 䱈 iMPrLE !ne8j$G@ z2Cؑq'  ? Jusg ?Q )A>77@ #PAzޭ/І |Xn=S :}TÞr5FO#I'rGL }>~'Ї<;|B!<}~Tj>}]zL:< { "Wב#@"D=0}f#bЩ@5J31"zH?KD./*Q@@z.G P:ڧ}ڧ}]4]k5ElNqȃۇ+z>5(A> C^PO]3zd=\ʅ8~B 쬟Zp=k 휩^ZoY` _ 8YhgQO7-<?'|훋o.@q (`A]qVw ~&Vm{ԝ]uß @ڷiYpwAV[Ls>Yv##sfMQ=Y@Dwz&E@"yb bFeF ͡+r"#"`N!y+h ?iv!k.^!!, b&HkXO>(z3`O9= HN Pou<}3b? CP1,C{$G !/:X ̑up <,`'} Q<:3p I5@jB^A B# >>>:US13Ϙ]t:#GW 0)&5?H$}L5YDO0ďә"37fd|첟7sG~9L>ȼ(KGGƳw_G~sd=ݹ#KGWMozM5w=f,tٸy۟ߏt0o\wmwOޛ֙\-X|c?wu!~Ç/=v.0?h1VxM>߷z>xc;$:׏U::isf?W۫NߣNѤs>wEUa{O&hFx^==VYG\Ҷ%߄?vވZY{Dr) 譿.Z_%? =}6aX|B1S~GTO#7>>>Z;N2]/dۨHӹ8~q!ڷb"Qbkxo];_[9z֎ώ~t{ uBꎡ]4}M\>a& l-9{u-/_֯o#wm>V[|s3v nøc1?2ҍï{;hz͜#cT2Vr+?&c14=b?N]:3_9yu}`UVZjJ\?KWuS7~ ;|<#X GG$\8~4θqMz8W-95p.ϩ<9CϤ7XFŜ(Tq#H]=:}"nHuԬznQ{HnGW1>kz +d͛q+(QO-]+HUzjrt\p ( jk[?!z]>>>#nyM[LJAI9g 袏YF c z7oSdÿ\9zC=s7x;n^u|lV~ȟ~3%՗1r/;4u por5ނ;{9=8۱}귈{">cP?;dGoT5ѩ;αt''@P7nYs<b-\Z O_5p+ E[?pjժUVYjռ?kۧfϭIwOCJ5\q;'2|'C!Ez#^SM" Vy)5ӏM׿y]@+~^Go ;|VޏH}T ~d+JCy z#>\}B7zx{N|$jPOO%~?3hC@?).=wV:GO?F޽FO9&7H`ո~1/@fqI`pQT AkW@Tzp_w4w==ruH \A ( ~;* 'PZ- @rXC=.AD  t >aP{@rHƜ,*^z p wcZ>>>ScZi!?k䱟 )?<Ɂ?.?I @]GLj? 7>weMU?>~R#;TNy}/:t`9r89:52s->đO<^oummo[hg6`s'? ` L{00@uG_?a4ͷ9so5c'bo& - >:7q Iirl@ZjժU ~Vm[{܊Q8M\@;=Y_Wx|J'j@G#!VQyBU^$zs'+L zP@=GV ȣv)ZA X87E""x1Cgjf\1q < #.8}JXD] ?DBnnq1W\E?Y֮kiiIgOM=Q\7|ci+\wLA 鞻gs}_J<9ʐ]we|xhqs6&gFQl\G2.6f&kAI~L42-H̀If&Wې#L3'h!Ѡ>("8$$dhS5'mvo@r+8yu?`E9 QK$A~xcd Py9DH -09\s6#G%<㧼b0g Aq]C\rȵ5:-dJ yA9G:E"yFA<0AH0 %1]Im$Eo@?SX ~:XH9u<DQ-1׺ ҥm:h>[ oGDvY@R=o }g/El0?;$i}WQ*=[D/Ag Ijg QT/B5Ur7uE޸{H}&}, WnL^t*O74Tϡϯeo3 X^_h6yP}s?2yw!l̦@ug1y+Zh<54Q}n9툨TwQx8?;m ǜ2qxʸZ ݆Z|){FԾ|*N~3(!H>-Aڔ()  K ="u ϵvt*7}|]kB>l1*i{@gvܔt#z1˷C 鰓N:餓3>` e~FO=Cl%#-;oEOemE4}sOs@T\~,ϴ0wܑ_˙؏G$ézw0t3+'zS9IUZ@At^rGsdk/TJF$bTF xPdu8̇6N+}жb> "-BhhXɳ!_dBtQT@. 7 Ȭeiۯ:+F !iA! w&pXE[fTf]CEq  A3h0倠 @b)3RِOR*[.?bzG|{2Te"`YITύpIN^A~;_S?-2* 3oK\|pqmhvtܞC79$|G-BZ5вW`Z>*cT]}FdA#{R)1RǹIrkD:c:y΀"C]9qek X3g/y!Q2SEp_3Y~Q!@W~Ox\~syaٶOX_KOו8^=餓N:#  +k{}O>|5BF7#d4aI _$ g ZNU^!3G5¯>{9݌0G $n+7rh(cz$:pBQ'8B@EH%#&@HD[("U :j"xH8;盰QPI"t @Vjw+ego}[^gsb@.>2>`{y:߇Ercٺn&@{(rn"<-R= .Qm&@2 vo L44#J dc~= Y]$/KKzQgz2}du}эFr%o!, /2t.]^v2~ c9IXPr;f8 7Èh4tp )Epur9?o @io3oTĺ/h Q\y1 ݕ+!h sQ}ջhĤ/ޮh4xq{sͭ{o,ci]}MPZ8xQTJ@>hPټ `S6d4B$UN&j ~r5|Kxv&-raRk{N$FٛW-ئ=Q,+?/&E%ms'Pc7(.b?KLRn7ڃ 9HLE:=a=1Ȉ8U`cD~,'{R0MGƸU=n@Y>ZcQ'GYk?;ɏ{n*- .XX[JnM3%)Gc\R@qΎ$_ 5d0ilˬoꍉv,=챝y>;mH}'gг/}hSRo:f!t}Պ㩮Ѧ1PbDȑo)k) HҼl/ ;pO r:!*8ϑ$Dë'||v<({Td`'N yв ޜD{sLK#yo(7^cp,bx 1$ zfsY=Gh>On<\3?U#߅x<&̮A3.20)7XA%@HbA$˓HQ/|b]֍ ؄VVob+4;'ʹtmhEB Ht$S&Y{Ev|i.k ܝi~~a_1@"ⳫVob=`Pv"%$_4ق"$SA^ 37WYR1 @NMV+yWY !GBmDhAm#jmL`Ьb˦`bL=N<?g2^9B\`Z ӿɬ~~|p7+q* ֕%196Nt})u2!nA?iv>l\w0ڔ~Ig;͗'Ǟ>I܏8x^LcނP?z ͬzz Unj *~S)Zt0EI( Ec&20GG@_\JQ0 <@Nu%(9DhFĂsi^R'8G[Q90.솨SQI:餓N:? ?%($6@@P nN~ ,x,  d댈 YQ ܄5ű7⷏AkzbS7ދ﯇swWj mW,箢eoyy+/7ɺ뿶#H9K;)Feݡ9D\H(Š&y4Xn>;A*׾g_D9 8s%,uuPtFt6trT I'tɇ9NKH}m<>gcj𴺜PRy,7x@4G;_|o-{{ꅧչg|WpxaKܟ~y0jjhcUyEZ}<=&cW^O;c7mSG'[<ԷAgIDg KM~^z ]el7?&k Pr 2xeՉ/b@u] :@!6C>DQ$d誦Cݙ l$R3<07awKqGλ#b}m0^II* @ԱdzTcpsaNu:}r]hߠB/$ p܇0NJPBb'vp!cQ4!W)AY:z.1y/[ E|r7ls5|܆ogà$/]o>1~ȱ>eXmv/pD5dx]!E4~nQ2aɤ>SY1Joߓ:ˤHvXb' z8T:餓N:?|u*T&BXB=vjǟFn2O5l] .Gu7g[onl y3baj}~EybmK2u$p|AxD67n6j{ Hoj3kO?Q@)Om}-mCpA @>ͬG;?}k CY]; @Oz (]#gϲ4oOQJ!g{_']XT?\[~l3V n⦑:?V/dlblHAsK('sL;ov3jFrtʔ6ӡKe >R[53'ax@uA´`4Lrϻ!l lM#8Cl16n ,tUF= u~y|#bu.ֶfw˩XO-uEDgR*( tf3efd 2GcK_$ Ra3n6,jgc&ɥ揗kK9NUT,[<@#FVTn?eP\@Jzu1ˢ`X(Mʥ~@`FK>s*Tv,]s:zrfd0fS 0:GuFaz8bP;@4VyTc~@ f0 /wmKA04J!\H>(:餓N:?S>3͸2"dRO@\1N}žǦ b{b@c;<4|"A @Bsw^}sCdzM<@۷6v nbi4 IoC^)h?* :zh^SF'\>َНbxz#"Z1O7sVsw{?x \^$% {(iT>~ 2bop\ N?` fy<6gcEp?j4 v!ΒbN Ƿ1_"/Qݥbsyr%sX7uu|Z GGʺ{èl,QLDdTacmN) aw?J(Ƨ CBz^G׉_`&4]$7d3 GZ=Io(?+ldr& %df~Ӷ^iU:I<&*O_ϣ?ٷtT5 "P/XM=u2(S9Yo *7 rBzAvw0& i.v7 &+d~%IR/GqYeA`FQt\K2Ӕ3q ̛@s|ފ+餓N:C*yo ; b/vk'?w@4&>`Ӌbz )ۦV׮B M = '_8xsSv'Lo (? 7olE }<ӻiH`A Di߀瀀@F+@;$Wv@0a;\Ѽ%HD5eQK{ٳisoo} -d /7Y˖ȗAРA.MKnH!& &Wnm|YQ:߄h*(Nn̋*h_|#)Frisbb7lLw?G]s6C =9ǁIT'L_ܻa _W(TT vwLO5/_%M΁H}MV@8W P,0Y q\O?d :N}4(M^pDl֦&>@',%hn"3&7ȷc^Bʃ8Ei2Kκe}%/tRadG/U@'_mT1ӏd$ ~i42@?n(ewrcU3nmyg}ʁCQޡ\#GYN:餓N>Dc`?=p|9䮜+h-~vtt (ҥQi'yTqKw]Go0g.@/%,;Em߻3|]`fi  Qp'E8Ĉ؎>S#!]78F{2IDf7dqm6e T"ߌ @IzDms^Eʡ]W +7c,=@^\wFL,Y( @L1R=FRczzoCCg" ]sIv K}%n~'VM߆SZ@oh peJ&2$=мUkggzS-͗@qRaFcf^ )= ˺*u9,š͹ 7d*~K;Ehn^2呻]TZl#o6׎} wƑ:⧜ϋT+h_ln v1.;P#-9,`@/ΉW?2; TEZC#m'Occu}deNSyivxX?ǟ{c|([': N:餓ag <: {~C&ذYi_7gF8|f =x&O4p}ӆ;޽vV}]6ϘwS/9+χ+ظr/_қمћ^fH4&B; GEcZ.׀I{cٳVV< ڀr:%:Ķq:~0;?rӽNy _\:67L/Xlϯ, 1<˰Y&?q2'Ò^fe  f<"qmz@9 j G6D/GCѐ L-gU͇!;N:餓N?KKe drZd ]'S3#Dھ)%uC˄Bk) D$9{r|ί}y XS%tyYgI7^{qtn8 ^܆S"o;dCuiPԃ@ᄨ/c(F|jE]9Q?d<-lH{W *JNÉ~u}qaJƧh'3QQL:@m)b9YOWK1%}ײ (?z x]xc?G::jU#DZ9S)gurS&b_,oO{i!dBaAP^ܘμڮ6pz?xwOƭUԎ  &=}K.cI~fY< qvs.vÃN$c\?xtGj?# qNď0]K09ɣ{t*j_,Pjc&WDmw̒<VgeH7yf~pqos:Zi\&D92yŽ0o+N|C StAކ4pZdX|dPjbM~~z{#C|A< Z&NYFW-Pl#t=[ǫ jw7[3!xYp#$ʄѽ''!8]2Aer>ڕS,j9@㤍yƵ!< /da܆rNY>^Dv_GnQ4jڧx 3p>mک|ФiPpRɑꤓN:?Rè (*f@*d<Ҳvpc c6pG\ SMsw{?/\\ɞH>[<6qt,A@bOomym&wgL- 4=BHl@-v@;IDfkvؐD-z o!4Ј$]9AA"2-$._<6l0Ww~wq(k37-`:PS(a|Rgd JUu]FsrSbv3D3i;jGY(C"C,&jbTd`%_K>b -ӷK`h uADOPٺQ`>Eh6ΖyK],> ѐm9BV]!dj`LIȊeD蛒^p] ~Zm7lxLQ[ze|v-lRxT)s D>QX,ߓ~Dab*P:89HKsqDUY`c,Z+#5IZPi$EVdUzYF >@gՖfD68ᙞ(vc%u²0c. WH}ET] uxժc$cuJ}hB)!?nAı'8tb'VDPz'F:ː[͵K Jz?xwoeen򦞪&_ԕpHکݍKxT&BMM ǐ8J[`slR^bͰ_ ϙ v Hfq `Dx^5C5/sSߍϬ&C'(?.'28^ͩKJ _.ڣޫNP55!d;QD\=+29И=ɢ}: #" +~#0*a$S(c9\MOʮۮpmrf%j%1c۵A`M>_-zxAuP!UI#ع@7zO%䅼zC048;E? miwj? ߻N<_׃ @Չz6~1/G=sti9y??7;cSKyNNn7T eR6oS X5)#餓N:?=i%9,C9`IHgG8`e~@q^d~QiMT6&8ϭ6/]_8侞A:ʡ X[^ed5YZUxwxD2scasc b͇t-MӃ6!9#1ii]hgX/qg1ՋP1"3.o{?x0 bP8>tH~Àc#pP.JvR(Wk򁠬)F*l௏s^#4xڬl%︃H!מ-*fev6}U\ q]HM7¤ 6 @qmR3 "/D(YP* ڄ;@pm~_hB ToToineIS@EeR,K6_Zf<ʷ:XH!:2 v|""uՉ/mRL`97^S9H5׫ND8XbŤ6/ ZΓnP٢s ͛AE\uI'tT_ G ,8Ɋ%x7gص303ۤaѨLqGi&۽_/}{7dfvb^h㓻/_@D>}st3#nK~9mҝ0% 1f S!p; {oUYW:v~xiy~\RM-7CW_Z?aS s Wm. I47*H唄 F. X^8  5Lq?QױOmݧ~| G:8 ͩg=jN:餓G &))|كNdaLh΅&$4`m{j^/1 $/qhmgPJxL[ ]jIi4n_??z M0Ll"NAHǭͻolϽavplv #p'N)PhzG"ԡn| !"{^ϬP# Etk__?i4(*Lj_n<~ =yvmߠeۿ [Y6hx3h>m}zSڸ1WE#j@ }&}QN}C P5>A0 6\6ǃV, tc*E#D&N^6Qݮ)y!W^Zo)?LlDR'K n.5Jϑsna TZʺӿ †p#'Hn?c}BԎCއp!B'HٶtȌPEl2P7wk9EVjxHDgSBK29c P|latf*^<"O ooMymXibwF3YFv@D Vz\'IN68&gdW_{l޼=KtLgzs+ϯ^8j7ls8Od2*dd@vBIU/:X 8މK~8'J-5 yt7QZy291c0o Nl택cB9Gm*6"~9R8WD*&6wQbʯ`B$X6M=g>I (zB?ĠȋFZBFQIG~'f5*-.({Ǣz meoet9`F?hPO.<P]׍.%b|ZA{=ۜE&cI̿7ZjLѰh8/YqG\4ns>^XA#f>H??GwHh*Dc Eޗ}z\=՛T}’$>3`jnBZ)gwOˊ]vO'tI' i<f+ǧ_> |H iǁ`$~gdێl[]}O**S0Moέ7؋Vmu1_2ڡ4hm8̽ͰG hp_/`=#Ys5a^h3$Gm. b!^,uyS =<|E|U&}@xws/(Q _Z^@,LnDDmw?APeH;':j}_ Q!?xn/]hl4 ҮEÕ`{RsT3@GB z`Sqk('M.2AC]p#وW i)ҶLbQ q)2pJɠLMQ= ~GIU΍gS37z42Njc^?QMW EIC?gD&}F67whͧRP jq@, 4b4:'A8?kt:@[[u5;d'tI' 9Q'o%P@,KN!;5I~b{p>Y"0<hA΃ߥcHωF@`6 Ef/CrnGNfup%2 7ɇÎ]O+ZOY~8 !PtDsDp̌,(T3/ui)ꙣe͜M#'0R(G 9 E:zn sn)`sw㳻x hл?'rY=\ Hol\ܼ@ꜝnlJߔG綳/mF0Z>o>RLɔZQ(ͯ/~06Ƴ$`q;~?arסZZdS dQ?JG i@8 . %)h({E2-XCEBzM@<"%r}h,b:?"䅚)L6_VUn(>&bPJ*bqvZtIjc7m էZ: #=%շ=9Z8"} 'ǰ4YX-}U;M:#qr(G[WHޤ*5D>Z`GBj}Gqe5Fť58U@1U!1!K5ߢܮJwH7ltJDL1N xj0G8iĬ%drs`$>̗S:*KPdfhX-VD}T1WFpB9: xB=<#I'tC~|,#/)1T>KGB^ Gp90'cϡ)ke\Lɹř6%#(+_^=ab/ܒ,fn]94?i8_@ 03<޿elm7ZQ ٵgZj3#1GPxN`OSo6՗i{2l_+{EdU ܝpe{$ffް}v!fypDO1>婜4kN`~ vyGD &ҳ:x Sa- ?]oRj#Z']\k#e@N .IƱo$cԽi5TLPxoe:-SrGU9QHN(yϩ0<ܧǹmROAY)A$ͤVz5T:?Y:DHѿoYAB$C^ӿ17yƙ^>gd诘_;'T(_QJKK[|6s"l% Y~-C#rd QXFG1p x ,mel)#g|LˋElEK>?*s ?F9Ԛ`#NUj7te~(`Rx'cYw+WY+&ue/N@/.]$c;x 3lC ;` {*M"{_)n11fxN2v0!7jnXPTRStp<i}:Ҕ秡g?;N:餓G Jy~NΥ3/9Ep>!< ڜi,q7=IOEz^ϞkYQYZzWev$dwAj'%-ZL\Xg[kR qv 5a;hD!0EGUxșO6B;৓N:餓 ,gP'w|ilW#(Bq^Uñizơ]T3{ZOMCYՅhV!HddqpwwS/鰼70XQ855?bfwDZH(b#?*# Ev&YOii3]?z 쬌5#N fRÁL7F=_A@ z 6dL/ vP̻໩X Q6/g`,;5(t#m:bhG*ݰm#Pu/eePyp|'OΛG񋍝yN:餓) PO$"X8|l7á+M1fF8LPOƭz: ^Xo~{`>@ /$B<4wuޙ4s%<޿vフ<֋mS~v%"c4M?] *ӲSFҽ!5kïAOhB/oto.i.lBGnzv*qu'^voLYUvl_6عqɽ19}x-/< O\ghYOo>,\;cEbrYG-t3s2da/E^~;7<돩:cH?@5@vRH{gi LDǫ~/@=d2GwO=V7ABE*[ : ѬR^ܷLLE>%\9G^=G4o*†u/}_&Ge0H1s%& {`\Sq">)Pvvq|5|.YiKt+AJE\C5rˌUd #'sݥf2t灣y`1K?`uo!E+XOK:৓N:餓<vN^]7#y'l&vnȫ[ܽS-d;̛yNËN?$2-@Fw g﬇V/| 1>t~c<ݘm.{^ gQ'pI@rGSEHD=ԥ =(#F"fdmjAf {xycb AB AB%#ak4e.cPvWSy,=uBcLma(H( @iWz#D6= a::FX}pDd9v*Dwժ 1ABƢQ(gR*6AMDB+b6I2E-|S]IIC:J)mGX 31}r,NMqfoҽSzވIeӯl8REh;ȥ=D2ZTw >}$,f$} MƢsѤ<"xCC[8T~Mhz^h*({Iޜ3ޅ#2Ainl: v m4? Gg $H}b;BHzN)DbGM QK(J nj.KkV_jOt1z@Dxu[Gv;e)@5S7_^=/_~Hn?w=@e^rp":kX2PL*[ o3$d́ zl\ʍE}2,;^0=f|ra|AΠ TnEyЈ*5!XT~$l4(UM v*  ≄ 7 S1qI_97ёRO 4?٨dՑ6[ct2 ߫#9|1C"#8pH qdG&j&N 'gOmբ˞虨$@FtFvA(EhKnp0j ^rCP$7!伜H50;U@\22|#R=FG'>#PkPlҥg13ӽ:(.?q;_wb.j6'l0= [Xs'~:餓N:y/x@@Y6-_#M4齁C%,+^őC?:W{ކub1{Ϯpw:GQeߡyW[6ǟ^y}~:`/jmBd~psƟ>x"fdHD1ALj}ň.Hl2hlv z%*э @\(+$xEke|~rOC:fSdd;]SY-m݉Yo^d>!1m_<@Z.S2ZQD .0$u ӿ?boh"MG+ynz#@b,t3<4Z0k{px>2`\zn\B4ԝ5^G:y6$LJЦ(J"(+KsoxZ,1v="דBK?˫7iX 9J#rJE8.WD(6hdߎQ:q~`1\FET\_H4G𶀩YqP* $tB>ZXp˻ip~I'tC~z>Q~` I:/SWmP5P>3?©g#w}^iD%9P %pPQ 7}0xx[ޕ1T~̾meL"؎4IPj_%1lDuiжڛE]$Z7#\ z/ūycX|w7 o(ΠBN,oO]S.*|@fDeQ"GQrqרҳY0jbzr4LN9QDeT'粢$ ‰3p QlE)0QL$o1N.~4}v2k\lzʢH*F#Es) Pzt }%`< <3-H%}3>bp oQ`I<7}htnr+cȣ&m]b}|ѱ̦(˷C0$39hQ)G9%#N;@q!Giՙh1@ h;~?Xs O?fIGq]['tI'9 VQ'oKW>xYD',ű}108|ym '?`zWRBFE'[q,2[_\8ܼs biӋ!z\RtD`kt3GWs%"Rt= Thק wj"ԃ{W4y,+en^}s-=5ʫmܝzDAР NAKl|.UiXO .P=HD599BS^syģd/K"QՊ>G|>P`#U q83yfX #PdT]"3'[|'G AbrQ!ho]NqIbg]7n98" eU"WFXh æϏ$nJֻ+J^Pl@گ#$[%asӉ‘b*E Zzp)ߌ\iӬ8: 3ph/#$lz4'Z:V-tS 㠿Ϻ}S1 eݦw9/0mp;/$q9{Q,LIu%麟Dc -xՃCI'tC~V|)ɵ$e!0mtm_ [ 438ćUr.&gga[st,\.s.>N7d8ly TJlH9R["$F~zDbږdols h ɸOzyMD{;(+_8,$@Ȯw_Kΰ4gN}O47Bd5ޗG_?~I}hJWnd1V&L+갩uXʋ|F"xjſM3̈́m̨7Y l16qע :|#O`^3fD 2asK"=8${j`a8ݛ d#犬~ -N}3r0WD8ɻz[E0HB qD#]zVdd.LK MkCn},'/%\Ns@} dW#ZaG ߟ>? U߾L慚<;½WEJ=fu>xmd}P4vtotI'<$g|@l'_$tУ!ؽB|^O~_4%Ù'{VYoi .~yhl ߊ'6S^%/ȩ ]isfp#EAD" 1NV%)G+rhDj@l@=9Iȁ;sz<\%R%m\>;~a岹Şg?{ow %TH\6ґڏﻙgx77r9/ RVf~AF/tsw{(K;@s\z# yc-;l h35nzFn(*qm|_?Mtj0 %:Xtv>¸(& QiF]gu/ƒŦs2,лMNyU?O>48&;8b()8'`g:ÀC{}+O::fS1 YBDAAիTg؇Ax㵆YnQ֞<ӿZTktpKJc &6xp;PLYX[ŢbVsU"2zcEuC)Mm7ш&^0X\e;F^iNZ@?`i%K*XttotI'<$'x̡N~ oſ _/|e!ލ)N=WWY  /`{񢓽70^sQzA, x|؟? bR j8F:RPmZ+(mB6Gfnu dFO#)~bUn7Q"tS2pDX? قEuh] 2 ЀEGJs4,DČx)ڮx^[r6K˷gFb#SqN63ժZ`ȏYs"v$XGs%ʯq݁1`8?y,z(W~d)3WOP;JPp lﲀ, ͵uT?y\@5ݨh p؀k|@uZ1$=@Q243mI1G/@џ?at@1. V[B2gez߆LH3c*6Ͻ!Ɗ$JmZG^5t@e&ّ<;g4ROX (qB@NNBvN0Ti09@uCrc,eѾ.2ͩRW Ĩ'ݳР*mfsy+S{7L)z's"|6r8Qp9S"2S7ט2)c.~cl@R^V?Tm#p}=`X+׬D;W,zYy'B˳m1A}/D H};}e=oL.v̝~kL]ƁC?ѿyBhoI?"!Q(Ba4:=WA674om{DsyTG, a8쾈&8cl핪Sak< /r=;*1㩽dp 2Z !5#(UE YǂbKQس55Z~?.9 qr^u9^asb*O N?]O%Vl砼h3i^ m25qB7TȈ? f>*#x$avQue,6]qXx 1Arې븅VӾeс>;&,P0/cVLIg]{ ;t EŌj&;D8TP9_\<7KeIA)(A]:quRXOTHe8E3$xcCHX9kG#*8zDz@d:(-˜;}VWRqi_!6r$craz!Ί,I'tC>~Q'n!I}dI Che3/QYIvqi`nGFz 0$@ZYe#iSDD@/xiOϿ;X… sلsczJ[Ǟ?h M%X 25@6k͙w.h.lIX7Yvқ&1]4<@ @3oeo.v!lcmDZHlB(- mrBhֳCSh(as8Fq*1X7v1boH/cM.ܞ?i>PQګ{v̆jP-*+!g prpts 3tp5=+˽,/i7"8;zws] 2Gh[,:tUH2o4FPKVWδ@9L4h,*^dd;=87cG/E4 W920LN};: 7<~>:=~> =M1cZ-Me{ꋠ6꧊hǠP42CsED&%藞sϱ"5!\ ;&8TWh̤[a@#2[}+ z8Ǜkpdw$|r aGԀs~I =y~Oe{뤓N:!? Y]4*@9)K$&̞zOlcAm\y] eyL#loxd3NJ_F_zmhݖd(\v q8 bau~}sqw7΄[q ![Ыޝg_?|CECdo @;$W]Z|۫+ V,ܑ pd2l+9s8U?,^k0"HszԐD dsyB#/yzVyzǹnlK %CrcF6sM@gIFIӧG~iL&qCq*"ȱ^jW(_AM*\1Ŕ ԗ2FPlNI2;ա{tFՑX,TU lɢ32`8 q"U<{ )luE,:GP@z`)2Z;Y(oKik0rA[}^ Zs~>V'>rc]yEc0()w *f6 PL?`%1GM G/kC'n<\G~鮃Nϙ7_l'ΤI'tC~>S(K g)vYW>2H:whLp6ee !pA:c |0>QF{CM9Ѳ.)LOw?_\y ,f/hCeЌOϽ9sI8Eg0-pV+x,d󂾩_9 Oa; 8r( ovi;Ks07q^jGo.Hԇ2 >5Nu5L8ORB pm;XB~y^>]La8hGJvnV wa""<+`>`, ™` mcmVjiN^ Wsg ҩߛx=_p5\_v՝tI'<$q_:yw\@,8 `{Bz|bD[ܵO3=8RGO*'LYxCƃp}ԟO5om( @~Ca>>O9rl/A{J ?Ƹqm H{zVvGb>zFp<xotǫ'CDQ7<=& ,[rSJ`Em 7?G+( *'v$_D ,.d o(ʎbz=*&=_G pE rdpӂV(Ja9TB|fG:i ޓӠ e~?Diظ )nнFz_ D?z(H ?9cUzQjzЫmK3-cc` T5#{l:zDQ̛h3TՙsHw'Q]8 bBZ5;$ЃeCK[bђ2=;8M'cEfiby5pQ[rإei02p׵]N:餓NN.W&Ѥw0c׸?< pގbs$!r8o8sz%|+@R07`] MہZDMMOh}yR[:ԗh<¢O938ŻfԎx]+7vnݺuMNI/^IIu!/%COJPyJ'%#~*ifL0ˆN^XəĹ0+ٔI0Igdz-ouxݷ/㪘|]#̮wzwyrT>(~tݳoy{z{/EqeXOl|fa'!οeԋمQ<]ퟆYԟg•tmO wͮ-L>5g8S\q@c4jDSX@-Q٫/_}CJcɤZ\@oR~ xzB'w\5^ flS R{*":{;AA{8:(%4RG70)>zT:b ')܆o*;,[OAH%ylvu?-IM`"?a HD0/Zͣp,O(pn1l@z$plw?9Q {2$A&H`AeSA%*A{[- M*>p !$wv6NFt,vtAbߢf27Tl3vnݺuM >IKN-FoAXhI7:'(#;1^2cݹ[MapףM@,q7NNvf$]ʍwo>CvZ1msϩɰyΧt'Y9g|Vn 8W 1Q?}Ll</<6s3Fv\!bVImN!ە4]xRH$z`Y@.֡h84p\&RM"$%,Ɛl]a堽04KY}ʎoŞ54ܹ A| n\@%:jtQʻqHosݕ4[@VJ T\>AhY|73rk5m63;_\<||e]#Ea雧&]?`O|2fF gEK5ȅw5̤-V<Ԗsi'# l3ݭ#_ճFh@aW>RKtɨ2@V? 6` "#pCmM!/׍J Ϩ tMT9Ę1H7_<c<czT&O@ԍi Cjv~Xc"jPY_lh$m`qu?Ƣ3h|N=_iNŲ-4ܵ|!+*:L=(zƜ} 3@hEC}*RPYlۤN?[0qxQ>2HMI'M V}޾ͦ*֭[nfoIzP~eotN/|ʟ$>4d9qC'/5 (#G@֬?#"#țdz!dGgn/rC7ƽ|0 dv91̿qc7Τq5g]]|~O7^}H1&c^j P;t~@~H]퇧\3wo8ɍ}dg__;UXhdNT9 $13ErQw2kG5bͩ`RSA3`}2D͘#Sm!$}'%tAitB9nLm@vS$LنN^\ס[g1VGX(>Cz|w/j-(+/럥xxxll^C'Rzm}>ѵW׏hsOIs+'iG~׿UXaq1Ԝ)'1-N }4@Aӿy/ޕnlQXÛ=K`l.~Ir A9zXFzn]{b֍Xf0W  e٭>ӆKd h>\CP׀;XB-RTV¦Ϥ #| ިԮ> "Xf(n O|zi9Ԇ!b m_Bj/'7E\=(3&\y/b]q_ZBvƙ08AH܅ϴ-SPAE`i`7B"=zRM0g@6"d8-9-&U p0$G1 2$VPS֫hq &bЩʗ-@th/| 9t~jcE;%̀ӭ[nݶI9If?-Iz '{oir>/[㋧dԏI|IݹkwfXM +x|Kb46ۜo<~F dAYa-Zy64*)g Mtsܙ;a5?IJlAw>V(6.)3~SҽAAXi"ŠČ2Ƙɣo\Jy<~s/i>vZCFs \N*H !~)0xBM`=^׃v}h'_l%=JR%WBϞ?+h% y~\> T3='6ŏң&OqrYp<º=?>NuxBV}U !cX!T=:Io 59$m]Zc+9Π[SjIij3tRL|)l:[nHr п 1 IDڎN|}p|w,%kc$4VPV8?hKҟb&!*ҕ7XtuUA l3 Yٱ1a [ЈΗQYa{x| A»k[O-˷@wnݺuMϩq K@m|Ai(QI,"?E.3Mg XǑTa)J.yQƧC܍Wߺ4~LYR*_2皱il<6{y}Vn*2S׃K .ߖC_:M^dϞ}xᝳDhy66/x| jt L&u@ zR< * PNb3*4ʟ^'ZTPf.˜ŏ&%`n@?*0W;DC9 %UR1cQ0ҏ`UcGA_Z\#@XGsVL|_#QDװOTLcU?CmSZ;u^ܞ 6R76$Q ֨֎?EoVPO.sYjmsSO;9)ki\HQ0<D^}9ܪ,:8pc b`M%U6T(dt.G;Q$)csw&4t&,Rf{֭[nIwޑ ImǕYI3&qfOUȎ1LF;[NAآD#ȕIÙ&iݳosnxeqL@RJ.ޑSNI*#OYY)))g{ƽBqOц P\uO=w W{xӯ*06(tLPv$W%Z PDqj~F?BNHf^# upJ_:t f,~i"աQ(b804 qX6OmB"8S,o;*F8Ng =AI^Ʋr @Oe3%ShOz2A#Dß6P.ㅭϣijP{.E@1殕tcg':+)whn34q&Ee\:@:4gг߄iFӠd!f/Hv_}6P{֭[n $Tuې;ܿM%t{M؞LWu 82 wPZ9W(rRARk@r|RRN^e~*?ufE X1^oשKR[2 91gK@P-VĩyYh ;|J(E7VAݭH1FQݷJiTgxlPԫ Z7gAo%"8HʢԫBu`VqWRMZ&A& = 2@>.zBi~dQ-mxAla$ wgZ,<V -cAq#ҨJ୿Y4w~7SR4 8##]ĉY!y  l0clZb<2<, &US 25am#w~bбSKt;֭̀[n%I'fH{ _W;.Hډq[eAO4%7e*@ˋMhu Ĺɣ7N[IlJ7iwhԠQIRҘW"Nݿ;ϬAƌO9LTt(ɑ(ZKeX^TɟJWtySj5rKЇGU{hF33LU7>gÅX[&^r뀏Ke9ju1sׂ#N! [в"08tgGl2@XZa>( `|m{/mL$M#{~[ǩQIZZA%̂DE`e̖`aEj_F X$ӏ+uHȮC*CO}܍yy:L3P.u*໋869Z\Jn;yZhטdbZ/ | .bc IpU+fI}V*ed&X1CHKbOclv*0PWumW^tD;VUrmt֭[m~nYIS'/$ӐXҿ?z+[t3yxGr/Ed7uLi@e#A7onXF. %'b+G⫗!}0a9+bAᆿYI8N KwW_]Tw?uCs⮙eЎ3xvXZb qe F:\\Ik1nr͢`w  7!`"Bee=GȘH3."5LbfuZ4RP- 3ЌyDx(mZ@{^3Ps%M$kљjʎ8!c ]_ |s0kkWF=Z 0p< O_ub p%2$Mdl(?I"eҿ1 gne;[p}]Lj.DH?Jcw{[^d 827q"|=R%ﰘ{ab~ƓBc:TNn;-{[nݺm3[~O\u%HZ-$t\tlʺNݱRFbq*'OX?ɮ%Sw ()gमNQbȜd9o>C R@@ ǜf٭zgZlTw|Gs/6΢3QTT ɌE۠0h,kV~>Ym <>ٸ j"M 6A;60ދ=vV@G`0 0P7;mAsǸ;>4U{|p b\jc<OAc,,èXbIGR[@1G>Oiچ1Pr-]^f>M)*ıPLC%G-6cp7EX?ƪTu*;Tap4ޗ_ W5Pە*pbc ߩ<@h`q{tpT7y3A4^c$޷C&`Enrۀ$]{':|k"n,it֭[mnj'$=(z-.Hi/ihol =7u41  4/]<*܎(0HcYjkKHw֘73%qd:#g>>9oԨ#UbbMB0,u #+  Aqؾʀ0>^=8qqtzjX_' ߹HKr>YOAYST'7z7!O>VOB $zW!c0k12I}&>f uuxa˄t}!1XުɔM'{%qϠ[{T\_h][nݺmsXH:6{C%=[ ?{+vX #dPG4 $ Y S ӄ?'*gA]oe n Yd|'dW-gr mCf aIKaDO~cg._?˳ƕÏ?pEMRyK|f5*wŸ-\E=ɞز1K献^XzpnW%(n0 EhQ$2sq ێ 9`NBz¾ b\&>ؓ\wq%FAWo,+N:}NI' KzgDF;̚ h㒢_juU#m.6P_ d G و Vjo$gwV1VX)d?xgA~c|g"i/#JM:T;b_x|'"*(`Y%=,>MN$'9{shK#]l9Ryѽqsa \@3IL? n)iӽu֭[m~vJ_}vS_JAF6(餔N)]\I0'OV{kk$s«X=Y~.=؂3k io0Dک*{uJ3 =Q?XK ȶj` 'D?cd4l;/h7+YYJ.麔 rcNV S!q'Q#@j`ym99 %JAgA*YˏínيfN1Թ"dr|6+Oto^֍XiYk[>gL3u P.(˾/i @% d X r^(+~d5 e3Hh%t '[2ltc;9;ӽu֭[mJjgtoꭰ=G$.滌3.As, }tNjjTC" G3\*K,>kYdNfl,̼j#' v )dx:dm 7>yqxI6Xɦ#7Ux4Qb{.-h{H{g ƥIoo:@޶G׵u}>ZGDڎ>УaUHOw>_d'\RP+/}DcLѵx U1,q^B7ȡmQ- 52>>.ϮX/+d,Jƾ j~`- |e$@%ENee$*~rcc&p~!7娚';4ӓV֡O0rIn2')YRQOJR:wc}U%\+QMMĸ<(tNVrL OL .ܝ}:u.&1X ޺f֭[nEIwͮJzPO{}h^vL)Uּ4P_Ґu:~v!ͣg` EM "G?mȶsO^U/I̫cHc^@2.W* l}|s5y,'7>vϞyEIAtXFG¬wr8yb옮M[~Hr*4ی kwQn'#\݊d6UV!U1o&h?/ suQQl\6-@e%#[$uV xҪq'5ZE$@|gSv-/]7  O=+S>TTs!Q a,pZtzXedE$!8Xw,nk؟z-*"=Fvu&@PB_)ݣbZITOwcYفd3x{b馤}#HVDU@fLl]VɎ/9erD'HUm24 /~٥:Ѣl3ƍKұ.\huvmސ޺u֭6?sI)Im]w$]OJpY+>(SJ S?m*=JɃŬ+@ yϬZ4 o'Pf*0ٌ8},_?x`zhw ?8ý"׶?T]f/g6%/o ,*bkoߏ .`%pl;ϊIQAא=g?!~P, )mK'e 6mCZv( =s7M0>0-!\Ƴ|^ZozMZ1LৣG [; H$:*>Zu&cc>x|~1[}bAևEc_?G~U=N/{ ;F2.lo-c*TDJ[_ DR3rbqOǗm};0AMJ% dTģ9 SXŵ["!fa޺z(i iw֭[m~J[f?-+ŶC)tHL~݀wb"sךN]k (o{"\DQB~9_YBsx}%^#J 5k> Wl39O:=/.py-F00[ /^ۃ9ss5heW Pr@>[@%\Wȥzx?*ck_xvd Oj4G6>0R&hvUP¨¾M@q4fC2~xV\%f+IS#@fR7$ht{F +-fxߣk} " tvv_(G4|o-+X^fZG֯htTɉ6dڤe][nݺmsRHUmRz o|AJɀGZJ6V1i:q>i6rLPMb"l1uyDNc#X" :0?{wX׷<tje?^ lߜ/^V my VʷRڟvɹ:Nъ.>l.y @rAff 0!#P˝6kJd5ءg[= lJZtnݺu TH"1o;HVIdPf7ym>u90%Y|_Cك\)Q?f=qBnVqMr&:&&4$(xHYh/=7S1Tq.fx,ΰPƘd#xf<`xx\ -"#T4lg2@J1=2BPQԔe8@JYc ̡mM43~Ֆ>4JV p=*Q4Wy s{cz::E;!H˶hmHQPAKJ>J@(,3 Eʱ4&[íJobmQE+~E_2O0hDϖAۨ&qkh;q,3(O@%>*6MT>ѱ盷td?,RXog[I`(}*X rĊRRYU2ٟ* ރKs0u8?iDTm3^ vtDj2"aŴZHanݺu 1I_tJmIz^}0vPy(01{+{#}GĹ&ӤPUؒn}RN3qM)~;':Egdڈ?Vgfͷe}P`𧐎*kxڎמ,PTfJƂN\o |BП9r@+ $zdt[ WzuwycYj ,QP1٘ŞIˈ~$M9:RᖃHlK|*[eF;Hj`ra4pYȱ~ۈP% /G?vajb>FxD4Bޞ]?fFIY@ s)Cľ0OA&kcO9օF+r8Cb>ZUsm.$'#v̭&Xp"c7sg")|r,{ ei3k䵻C 6sg\Ti# -):A8`ö ͜S!W4UUho鬿@> JmP/%*@]/Njx9: (_0r 0",w;h5pz/c'(8pzl0s#kXaD RX7nq654/YsAg6p1o0d0(>~|@O.1^x>  '~F햝jpǯQ @wpTqyPqE=4#Яq򝋴Y.4z@>Bs+* lt:6AZQ>Qg7u֭6?%= IIJEo(W}(ʼncDFO]{o䅬ĎX .dՉ>ԓh~L$tf9[Cp ̈́"pKVEX4e" sݏW1A |޾&XN{\|yʆpA1ըiLhFevBiB3끨MIٮtex!b/',[c?Cߘ`}GBa/GX %X26~3Fc"E*imHc~@DhܿN ׮kF(:tJ>hނ ^E nv1eytt/h*5Pȁ,$C{}1+ 8ig_ d [Q Igt~D@f?税GJ< h4XdfI.=Yҟo+ޏݺumCK.zۯQJ$:@c 6خ ӄL|'f'`-)rv8~hpR?&xLnY9@ e$ w!MQp!kdkB.F@óWwٻ7ntpcʡG8ee'0TivO}MyG Դv<  @4&Ghj ةFYtq!ƀ8NaxI|?d&ƇdHx؏Ɍ'V$l V9Jn-?3Ն)̤[(wDIeԸ D~D#G:=\ŀkѱPO {&o?'em7(hV6/BL?5a +rk2f*|VݨcED H5 |gHF 0I p_q0 y:}c~+eUc\UlK|8VeThǸbsڹkhnUu֭6?;To4nk-{5o%/oo R:$V"(HnO.t_dLߑE٪*nۣ=QS#J3Q82b!k 9HeDQ1߽t`ݟ$ثom|[LrGbU6˟}![=>`=>&_orczARTSENUpgB`w@&V?BeiY"&SR"rD߈rM7IڞAy)25fi(ᕛ|i@[(XgQ3z@e$Dn1x̠<++=+R_J͘3i^n˨f`9C;u9++!29UL{'qT{NpfZ7NMIk][nݺm$}Bg%l|GIߒt`z+|8mE9IGl{[RT\ Vo$O;ǘH/o)#hR)X#XȀ: (,# Jv{F+龜DƘ_{7.>Gv\Dߠ w ]ӗޮ~E"o#z5D8ZĶ2wc,@΄H"δhߘָX%ITE eR Qw/aSImNQ_+w}Dᝍ;vow&e,s,. 9ф}N=,+(bcL`k0߮!*{jA{p¨*P\eݱ䌑bzH^^A-;͕dd )yrshͨE ;_y*'x033M|G hB**ZSTZQ^)%TsLj23aZ]g)u֭6?g$j$}Mҫ-‡.oGnC'I`PGP0TRxLA DZvyy 'l9  #W/Nrzs6S/{޼ַC*> gFPrUvU+ f`ܷ^021| 8 L7_=9yF]V+N]ؼ뚔B:%j?o%s b0=G i $ 80wrd0Bfde!6/66*)(@AC[pя)$&ݰ"VHZ=ܜ%=wěg`X!FEDs68Is&,t~̠cx"L=_E_ 56`pwWX%tv}ė1]n;;|%j Q$ .iݺum}(쪤?XonY/Jm}H,4h&l`.A['o @bm̾ܕ᭵cjۣ %_ 5l]NnUWoMȂD +=l .eg(O@@&`%#æz}06(7rGz| Iǵ1~D8v2•vp:U熤ӭ[nݶKߑ4Q%jn>ӛo QC;"͜4V;/+wMg'yסw;5`]B 1Ko+Gu3s}eq6>iޖ D 'ɕN)mXQh\ԇn 9PVf K P%詹02 }[O{_Z[wOZ|?Vo҅ +怀9BҾ-En.}ʾk1C8BvֶjջR}eG6*6D,7pv=h%ijO2Ӱ5ج1s|kXa@eW{ -1lZm?w]A-Pz"Eh4؆uwH%W9m92l\Jlrִٙd:}q3wL5&YZ6ZtnݺuMnIٵeO: iu[b_l 'usN ɲľk %d(&XK ~*jgEӃxNٜ=]v=gj엧39lc}'?W~G:U>tl!&F i*Vw@kIH{['rB?e?~-Rb?VklnګQUzLA\<b/VE.zGj">$@SQ&}2%ԙ@jCPX\UwdPp$]Tm3nݺu>?ӥ4S6%GIӓu@ݺjɗt ƞ @PSۜ[赻bsSo~ZO<AUhX3cˡT rq}X%'S`>9'tc)B-}98"mGH'!zFA3y ő*6Q,,۽tl/^hzsq9I4yfyǭ{ 1 1<0'xGHL> D@!51zcFKMAp:TIFD4cEF{He@UؼMFE=h+6v\%Fܞ"}XZ7Ha&Znpج$r*!>2o vvJ|>幹xb7JE;X/toMkw֥nvnݺuMeI_OmoHz^u[msAFhERyVj f2+ᙫR֤a8'w?ʹbjr+ tϿ] $9K0CT :@ ݊k1&6d3ϟ~8KjTzG 8aE)Q`YЎq5/yλ̀VI7'|^ "~R-?cj%o,oiS1FSnيw3ӦC#abӭ[nݶ 9*$Qy^u[mVEޘ A^KZ3f /2w 8՘qy#/}^%c1\= RYo؄ewC.!@e3 7L\em gKzBK!E>LfN̕kKۚnPV-I" DO@gTܠEԩbz#`o>}i1oVw8[Yg@ hA:W`y[E@x@,x)!ySg K {cj}MAWVFN7:|fe!)ReR͑~7(zK^*R!UU{u,dp. gExY5KsXYNU6*RMeeIG℮b187̥VvN}}k]O[nݺm𳺌3BRRnH4:n>8 P<2Kbo42~My#j:?[Ͼ[Ce'nL{%-4b@`A_TP" ;tvS1ٚXD~`OV *f \N Ȅ\  2J>l.^'O][7>1\8_˃ƣ;~#?t1gϾK%Id~ +wep<U1Cq>)(//ʼT?@#5 4GМx(@zjWH03jN:$VT09鞬6_ǡtތ`3߂lP{q'mhYJBZAP& 7_C[/1\Qa|KdtSpd IЬ{Pљv4^ lC`֭[n tYKߗmI7{ vPu0 'r {e>Gӹq ^ʕ?;1y+ic&w3{oXfy<p]D3V# i,~ƒZiک߸.>nl-*Em@ςvÐČ|ޣ}l].6h@to[=VX) ųz5w'_2v&g][/#@6p 9{@H XwQ=1XHwj1&s윤%چ2GV ҁF.6z@O` JNJPe)p tasRNxfClP1>?h!f=w/sjگ~g 0>mfն :tu}`lſ 賾nݺu IH:6{Z҃^׭@.'*6ebǔ&q7fv9w<yt>Ŕ5b9is<ŗ=w7=9A恛J /iK쳶Z9d3-YY|/(bOC:3@ z5qRa#hfR{iuj3&} Gtn|fOͼK˫;v iA G\cu`)"݈)@U glϠ8rpE5cAx8bcGJt@g[T@" (Ϲ@Ot#Ϊ8tw'lQ*ge{ TpAгn#ժWaAƬ_ 388CWXv0JznF0 _ k"#l&F N [V]!8OÿV@+c{dGqu}z^ؼ r(I$a 1"`h 〱 (@}d ! !YjoVqA*վ33s_{)\kp<$Xal-W&RoذpNAZjtΧ Jʔ4ܖа# xxxxx4S`F=7 %~=< /0c#<6HC#6qh/G"ę)I|oUk<1{Pap ǖiNpkB/l]HkʉO>sFbMXx{I:6@U.rT,ZI Z ##KҁaQ͙$ t /σͦ$yHPI:%MNb+g#QW ($Óh> EГKy @ã ȟn'<<<9T@*|FqG*’ʚ^ P*b^P C1 %\4h&}ܷEdE߃1vN kʩű) Z=~F4%۩Fv,)r:qq;C#YtXB8K *Cڪ㢁k$r̈́tNlFEs!,K,jjwy-t`dYJ(Q4=ҙ^:bY+nyX/Ov9{H'@Gۄ[AmF>b #YqgB3@q\vl Mɒ~em+T:;JDih Dd]^h'aF’m1S>2d]3hˆ%Z܏ s3іiQ;LH@eQܮ't.mG'3|stm?ҕɼ &=+l9ZGfY`sCσ0#ޕE쌫!4F.Di| NaS0ّ,攣hf@R"DXұWg0T]&zO82h b_A[Whw,=9̭m4(RHO*:߲oqgۍ^- 6KZ2Ϟ:WTJFO1ӍcD\!'O AD4rF'<}H&z]g}|/< :mӹ7뢳#rA4tMq+HN_;Daezg$G=lg8|r?jpq6&L 7Hk L vlc}& 9šŦ(*_"W-rpQgn%;m>Em`9ۚń@7M+JvڜL/\(5e݆A c[v {u떠؞\25stIIJ쁵9lY@->!&Pp:,-D9ec6D g~wwQnqHA7O1l ,X .ǴiCD}лwOӧ-ދ2?`=Qf)RnG$.utT=PNʼn9;-Ɍ1W-D |=1%s:46;0ǝu0px7;be ]ԤMݪ(̆(zqU`Վ*D ρJB娞&r5\`mn`-7XF;-B:An:etI&KC?7"?^|t˜LU =mN1ss 2_X *%@ z =S-|֢6 ]'r-gjrb3”uyG҄w'{9 0t6,?N|9ʞLm/i)gi DN?:?c& ~:t~ Vt~> O9?nGpC,2 f:|b5|MY:l] 7^ cKӾ0̮f<ЋpGnEEE'4c 8rb = rS[m%jTTW v5ۋ&,P"U&߻̸ːN3u`j-㬐>X-Ml;XdntD}nb9@݈7dq or{])]sVm 3CqBuGnfBeTTv bYY4aV$fFVM XvX_3+Lk L$iĐSZ)ĸ.rΛؙ]I/H}=aBJ! .h[>P ꧒lxHi2w?G7s'Ak#zDv70UU՟(/Y8mY/YOMi^#H1d21eP[JYp͵w> %/pF'!v!?gN8 ">7W jm8QݧA۝_ghg^%!o8pȶ%vCD_H9ڝR,η9((Ñl\?+!~ ԛ 9:c5%Ęp2"ZB&:25y`{ T}X:l[8"h*hlضAi"O|!Cm79?; v²qز}軅itf,gqPXhq$i[sLb0D7gpF{^ 然jX 8D0wGkCe,d hGשgfQ1 ;iHCN4Ԕ㘿6e]XXC@j 0\z2舱*m~C(LDLlgOp -~=< f$A.,Y@_ ԹS ̘"lي{\У |4k3 g<.]:bk"GFPK )ъV[jD2 p[vAFO:&gma)b lU*{xY-a'h2AtY8/~䬴hHLo,_Jv@ Z<,79 HpGt LNZF>}>Y4q`13P*DY(1@f#羉:߭m?%RS&n `RX(,Qgd{a-e圢 qɖ"^C[ B$3epѼLs-EZS.H >פZ?Ǎߍ,tI"Zf[d1샮h͈"vڭ6ǚ/E@LΗEf^Inr>P_T伻ã ȟ 0Dyx@_Ę5kƌ=oDw? .  ;O>`ݺ eڶB:-w;\|(y4N=&&NQqWEk-F,Ǹ, =(CxC&(zaI`~J#]f1O(}N0 #t49Z9hvti|QhKbһ-j#Ac<ɾA~h( aY@,϶`kz'%HWbT4}*li ԭ[yo!_]k1%7rM;Lhǩ9뎱mp6X?;?9Ό"܄?],H; ='dptI@}FG#2CHsp(!05F %XIELLٵ|=|:>7l8Msdj^GY*ej  >?lMvC)D{%жcT,u>ãv^ď'<31L.Rޭ#tN:`Q1b/g&;'@_ԳG}"̙8q93}X\q<S-qq*5msVq|֎{#$Y=C䷕ηx%鉟l5f}]̘nˑa(FJI;Bq,59eM%P' !a\VI m [hH_n'aSױ@2VCU~ dD ims&ohuʄUh&*ۡr!H B=yl_!jϢrɹQU3= Rݪ9FpX$m53] mD\ĸvuPʺ.qq |$qX~y 5`Z&8GE mdv˺cnCќ'v&mv¶ͪI!h E.ϼ/6B^v(YP7g\LPl0zXl"t$Π9$M22 9Zf.G_h?/RSOz M@PFI>eH=< ]Npx~T,1nftIޱn@]BIIlZy~{+.z''}vq篟vhrooT0QDle>!lĮqav5ڜY=bW1'mb8@rt%%5zKP@v(ϲbۂwQr Z>l_4~LyH2X;Ui3h r$"m"W1V˖!G/&Շ$]ʵ.hn\&*_[p ֔RT LlcuQΚ۰4"hSgdfvgf~?DY';rBZ4GAv6n!LE"B<}IvGP[* BYER 7 \P-] accS~=< /$?gӒw↛@_49ȡKN1Z1C-7lIS%/)%̰Eg{0L5Ke3`,(KԈrD8h$}Ļ/k, * D4|5]0z$SoIg(D.] [A4Hd >a-b{%ѪM AB#&Qѥ*Âs-]M@,{kxXZ(Ώ'<%"{0nܑ@?/?O53ԝ;v4/dz'_rW cŋo[̙C?48z3"{y(W` q nƥPCjK]"~ [cz.BY"½ 4G2?&:8rݿY'QׅSJgA'(t+}3&wW/2m4hLe8p&=K ̈́v=P`$K[˄cwAsA$gP\NI{6PvlH{vXO,%I%1UCa Awt6ept'(?:͈)I]2ѥQAT $S-I{- %(ߛ ׅKYT9^/X}.Fx~afHv3(H튆{u4 ޼+ã 'v .%'Z81P3ɏ5z9!lغ]~|E}O}mp.$`8K$Glar`Ntp${ e- R>lЩ67讫MB^1|htwDf5$wd!xI&q9K+˝,eszD6YÏ"ᖜuj.̈́dykT?Em ϡfؾtzB*5uUQx~pm >%ab )v.{$bMJf~h‹-:iۏ" w'Ev9rYgk!%~;m9@i0~sd=^ã "8@hd `/C OV>v!8;dB᠑1r>:t u埮9 0cl l\C"[/ã\h#];`ǘ`-"Q(vqѭk't:G&ņ ~F]o>^861! :_ M6O>덒bpÝۣWͦg=0 1x MD:}% +?Ȟpjt)=tv1+ڦ>X;T+ayjC3Cnq\6ejIOc}p06mP2ʜDSYki.8ᮭH%C"RO$\1I#XY[vښ<RE(?ʺTm @;V/@sAv, ("t/bf5 $`:){Pld|e&xN1&>8Mm!i[3̚T9 ii$vid֊FOɜ- t*AZQ[pdi{3{^֞x>9?Q./(l9_6͹: !kݗN&"lB^D'$a2 &^~f%"|".8fwTф5uCF Pe0* Uͫ\)!ׯ|rٺ2N2r ? rʂ<6g&N6)E8l:m\R+ZSKer:@n$z@02lڪ;ld9el1 e@LJ+5![Jiœ9 ̦(2ʤ-@Pk>f (kE"'6{$Oi˥dã ȟ.xʏ'<@v݂(vhuhժ%bҤqιWb'EE Gg-9"I?t~a6!iwFKv3c^wdɏMpʾ9TLܑбnG2TL4su8i77-D/" rfixJ *`=LV3eޏ{wyTJ_'ЩGE4ZxXΗ{h!`=Oyhw#(Sd{O`P&qpុoBqqU`Ѣ%XzmC޽{m6mkΔrmk{ɻoM<.\k5duҩ@nn\z(**PmOS'3``Xl9֭]ߐ~h߮-zOZq|(y_ RM̙(Ow߄+w&:mp9dB4k4=}vjm>6X2Kܹ1KTzcŐ:1rCyYQJ1o?MÀˮǕ !ɹ:%`J5;Յvx{jqka=R&rDlRlmL}qUfB*v=UemؾC@ͥUl;KW$\B"նR"#k)o\ٶ g؃@?<mr2Jx9qF#5qȘtF!p`a@,}pB K3:w0 E<֒eeT]) eM"0>?Bf°z)̧ߍxl>~C(.M6mw $e BjO D4r)'v{kW(` 4h^;ϢLJX x)뮻 -[ xᅉ8[my`~&+k[Gnx\. $ GB dPzѲENh{pԘskG>7ac}%g&;'sl C)Tnӟz@Kphc, K]$chq#C^H Q1VdGu(?6@SDjdFdT~T?Ll+0iAcv1)r,Kő09vidC7J+ɱTPl$'.Iv# vAXMh+Jfڔ P{틲àm߂yo~R4t5NS3G]b)vjYJ:ؿ.ш[]i\A~$>grNIB7x-`ǑaLբ)M $ wA{]<9]ݜY!.u4 A @iw۸!DD 9ƴ/&KJB˪$h}B!rϞPxՏ'eq{cҟ(X9|'GULߺ\P^*ID@:P(3\ݦ$+@ȒC0{(XW=^Ľ}. Ǎm?9l OhS!~>p]#'{ݞĎP ) f&ub:!qےK}rn [nF!բ!/Ef?E9b"EYH[̴.kqTYO,k溣Nw1GcBZJ2I̼>"m:υ~Ɵ"~gEL\9k[O[at]Nap&ITMPeF$"Mő lN9k 3@׾-ҹu~<<<<<)p`_<<$v%&O'|ra_vPރk3nbf ڵ3PqߣiI|.KW&r'?\2j{ b@'f07*cfwFo7ts+0FT.)b!(tқb[1lk:ߜ>9\\IFb{jr]LHHtr uضp2j?%Ϸ2aG%ɐ~15` -e BǸ^\5X%nY5ItXw4G:Y%wvX<:q[J{9ܚnh$ny͉eaI,K@D6c gJkbjGTPQ TeԟܛDgXZQ;4$ ~t"B@ ᱋F4BQ=< <aF<3az0|@۶ՠCQ_G\<-D7஻@4wLT5*6okhժ. @V}KvzSOއ!C3ϼ[n- AqeNeG6]*[x (C-ptG.v23GxLp2 PWwN~qʆUъ]fZRI'yC8LGG+W97l@7feyTֈkd|ld8"\HOCQB)(\ڜIM\5Xyt~(7{ ܶ: d6@sA'UuKUm13`9QK]~Rp h#Z)l(v&p íYzDBcMdCtJn3HK/3B󘲍DVtkk(V^d߈_va{DdgJA$o4'Qd8,j-?IdCfb: ;RԻaBMDp4ֈ&G@_y衇eIď g5SgM7/(?9W_SCc߂o&Zh۶ A57pd35 Lb84dCm޼- zuO){{ɧ"-呑nSsL"YĖmQ2.C[XG rf876gVHO|[?qd[f ;z:6)<]0l~bwqPNXh N." "",6!i 0Dսl̈́=AHT7[A(]RbODM3$mz@Ɍ d7Xejhkg@y^eS25bX'x4[ߕ=|lrn28مn΋Hq'ѳg8QA8N0q*0tHAYjҧk8 ;#p)Aw&xuںͶ3$]L*'n}kã a, ݎ@(FQQHd `Ĉc};x鈋[o>?tΏng &Lxǝ}FGp-KWkkʔ?=U4\:CбC5kbplwP[3/p;"' f_!! 8m&qXK1rV0i|R5mW 6uq#߿]?E,zKzP5ga;!ً- Rv~#ǥE|]v;3_q6?Yż`3*JM&>B3!UٶA'ݪI0ffT|M qV&di==l'⇜TJR1Dݕi"dÒ 4d 2~:ّyQ;GL>c]s ܇\Hu?p"^Or\a8mL{w6XqZXQ8N :~ -ݧ9-@i[ 4P<<<<<)p(va_TAO ''LE;2QGcժ5TTc>8i 1.;vY@/x?F pxg0u|U@odŽvQ/݂gFJ(w G lQ4pcM!9euUԎ\KĀ.MnTrC[tyɬA45MoV9مv px1H?G] ֽPeb {biMiu{h&T=J4avT/x;VEsA+ԅ>a2¨xSI,rAgŶOhhTl\B UC 8ρ.4NP#=߸x-`H!md`lOi"҇I!ʑdqg ؖT#_ 凂Z8;ƅjeB҂ؕXbz:h3ׯ7P\?,N!5$$w p< SLO< 5vsphRqs5]k0X|)GӘ p<| OƯM@0@;2/XG@_;h8_܂;hK֭ v%/_^}6V|mT5^y&":ƍ;eeaո_G_Jglj* {`v۠,P-BNSlc/D ;ƺdO+jz [żq,z? EYۃ< #6 v!O(ɡ A@Eq)WcwڠJkbI*L(jF{iBX5|] $XݫrJn`Ea{d6wc65_'n[QO bJf89݄8eHF͇ocH}N/cBepC%XGIQv^ 8qa "xɑzW 7[%``:!*+VX_Xssb/݋JeD7Ĉ;+G??a ׈b<̽38h\db?.]hsݻ'P^Ds81nh 6X̌qŷxPᙧP|2u'bEiqpkce'#mNNnBr_VOKbԤOs{Vy5e-gp 󎞴4.g&G@;1A~|, Tݒf]–v1$4e{AarVQ;LHn ~to-Ϣf4l_: :7>P[&gC]|c|v vJG4 ETQ-BKy\cɂ",{a/ebAdn[mؿFvs֐}k4"[pƳ9KJmRɸ!gǿ!9Vl#.\iet/i\@\љ@d:50DL2ǵjz M@ D# MzxxkOq81#pg??#`̘@]w;najLzt@p┓# Ə|:0)H+Vu\M؜si. oK" /N iE2.!G'VKN_?T+ayj]vd!mu)v-QgG9D M 8@Kp<[sqVnwKX4C7]ڢ5LoA*ByQu0 Aݚh.Eԏi /4$ f! ّF:/eI9&xd;S3[8#"hq҇9D 4>%LE *(Be@f&5)& lqI&}Ⓦ6HLGNQVoh*['m'w]L#6& ~!F(G<m~=<< ~p9sa^'…{=t=$:zjl8Kţ9x_v:P6șaR Qj֌y!mm$arhFRҎ"V z&mS:uە,?z Do3#Ph <99(ڝ!~;\kɺ;FvExŮ, m͐Aы++k+J`TAؿ| ٴDz= :ݿ:yK2![3b F̥OsN bI6q Π{ < !I nZG !gPvCҭ]kp3!zBb7<4>g- >?k1!ė,Knn B:вdx.ã ȟxX E+yxx@`uX;31?9 յ@o.8ո pL2 2;{w@1 섉C۶m&q} tqUkce.F GEFӁI_kgol!A5@jݎK TtC*Yqf\(JhKOEgߕd0)']p406b]B Fs òpsmv#&锜u 4UѢ($+ʗ Zvض=h.E}[UZ"e8pi GmONi7Zjqx~p37J5pkI3 و'"'N_~Os3vI LhtL6!_e͑sT`#~D&oS1~E&Ge-vDEHp6~aOe!g0aW뒇'<@20wt(`paø13lڴ{=+WWcWs{(`ŊUH,za>_ĸpW<~ f"YK|›^g.rpMM糎!ןxcԛ+5v] m33{H5nSۇU[؝=Lp 9.8mXٮ>.H@L˾ ļw׍:(l)n˿|ɡsl[4? 谹r*5nl(BhD1k[@`=_ (#ҶM@%0eEhޖB:&ByO3eÐ@Z_ݵ5i2JѰ@zYJدܭu)fH,k[T^Oi@~C А,3P;=Alj`.ngpJʒx"~~%OB46AOy(Ko}""\x;pq<"l UbVfleHvsJƑ4{ Dh~ )ݙr/Әƈ(f0+yao6KnMmA&M$Ԑ )f [sDf*44&ZY[jp HP@̶#@cf%p-]Cڟ9uL'As21wLX; Ocf15u_:`ZiK:~Y8SFQb|&)V'~57w$%ȶkʞِ;4net8S-W6\ǽv%&zP/7&Vߗ0P u@j4${=TJg38ԫbhjkwo}ؙqt9Ɖ |0>lW3O5puwcexpч) 3r<!(*J~| G>z;{9=0ԭaad$ *N;-bNrFX3B#HN[*5y0UB Ė3rt`L / gfԓdf,{PJH=piBF%Z3}L5*KP@tN3ض=Ԯ#QR^dE`bKNk`+ŎoK&xύLN~SS8IcsؑHa{I%x&L/„Ȫq>Bz97⾨ܚY]U]嵉(iѾ&1>J-. J7JvӥҍVE]EImEM1f7b sV \20w9~2\A J-a+J"G#4%8p8NöB[`z(!TV[ NdOB'7@1#T8bqTH^ Dj"("Rܺq~~>cgL/aQevv .ᶑJn;K}e+ua=;ot:rkLL<&ae#]]OwW' cl*##hm K~e! ߘzkjv$v$$.`p(._-οF=jUhJ -f;izЦ|(5VͪP/mP00uJcϳb(%j :BߵY9k'~Ӯ:2alL 3eTOP 8s 34 p$S 8Pxxj/!˷8165i=IٍRwrrިTvP[lATi&!kAyCx!_6fؐ>b,oAfm6Ò&{5< */R 6`:7~AMB J΢٫'$RoU}_Ⱦc]e(JqYG8v| m@_}s7 jKIݳ<9V?w??!FKIV{Jb7J {Cͮ??`Ů$\J-t58[@nzz}S0ѯ>v?ml\]->^J׃U@<Pb0 7=p~x/cvD$7{3Bw-2tk bԫL?zY xrk3}7tPhYPqO KbWDtjǀe } 5!BI5 54s222 KF)ˡCwPゲ;~>R3Ϙ]FJ_'~GSk?'x/~$G;'x,KRǿKo dRL9Q1ht!`,JK]k+^/gxĥ F نp6VsQB1^oS z/94ُB2Dpa񄴣Q$Aț^[Ҥ"{a,E+Ddݠ-_R2ù+Z4c3jV"0~aul x1nVsVLIⴍ'g\n#>rT z,˸F  7rҌLe)\5~u_pLG>Qo}}Aܶ{wq-;tJ½ ǎ硇?gNgNӧG2">`zf_/;ƿ7_[{Ggǎml4 FF/hǏر|K_Q3sJ:'"VE9+o/}LXLju뒚;E$h>Y,U*[o<Lpt]ݳz-+E# ьsh @ &#m NK(գ (*œ5*cѹioʨK̾eUA}fxF9v s~N|b@'J\h\,KI;l˶A!?-Kي~fC-ď8b`)YKޤaITY6Pcu[Qq}2թruc7JZK/J(*(!!J <}wh^A''3.#L戼-~si`4|0× L]3PP%.x=W#F[)hV6_GRbm]LUDDzGmlڔ "L;$P蟱=\p5)ҫ\7v/}T:-p۷m8Uk}* ퟯJ,>ށ5 -66SPϾ u8ףRX_|b@ Tݦ;[.N:(Xme|h%63/>N]d5b3y\gxFҡ@j\o{R?W$vb2lB#\ZK=t Ғ쒭YU?>@ 1 l $ʧ_[u,ۤ47d S ~#tJIDe|YPA4XBh;ئ(/ I}lF <1`(GbCශs82<l" oedd(@פHkveW|}*Fl{TARW3 r9Ff S)[ Đ- N/4Z~8>ׁKU;ƾ/2Ҭd8G&L)-#2.*mL5M5G:¸7W;ħDru;J2,P:\oVG\ ,9sқ9Z>?-X$  ; a?Hch9,P-3tz"xղga4 $<+#{T˻w`o!7sxIMJE N ;04^}^~I2zF7ow`e\O!ǨϏ3Ve ~YUT'+ ma Le(#SuZZ*JR[ %L<]g?"<| ԮmiOK^ K#eS|*3ݔ.S>wn7˛Io޿M g'yB^uWB8dxI/+~E(Gz>uhٞGoY:Ӝm^5J?n.FvW/0}gˬ؉rx z ^_)E pX +-XJAy!*H! #*-'d'd?ee~;que~LR*5RƈGI %LΆ͎]:tJڰ]fOe } Gj9"W_~dg\&j_%ːfdd(@פ_@Uk9-)S>hCvYQ%+ <ݎQ.иDh2jףXD Gxa#hD=7=?~ cAxh7VS$cTQ> 1dxVԒofOga9S5S:i hL\( מ%'̾5^{_Y6Ia-H * UUML^|U/+sJBVpxEAuġ%A ~ |꾴y(KJM9n, 'V6C+l|.Џ#^o)M ¾;۬YB/IR/gU&~G_\x-OUH#t_FF&2q=x$-"68j+QP_Ӳ*"Đ M8ȵ^m9$" Uz37Sp~K?tqQ;_^ztՕ.D:$I7gTJ 1Y O#RIm's*SP:ƪD"~ϽSh|NЮ*C*R=0(&vTdNw/yLHwQ.k"'0ӶUۡS2&I8plR7QStlO^nv1;j k,GG %S`hQ^Fh( \H tވ5Ta.!>+QQ<džצʥ.dne(̇$JQE[Qh TJR[:OUC6Agp2^X6Ik, ǘ{no34' zz20J2..ޮ9r>1iUs~WwY4SCڛsp~w gNvZ˽|,D |Cy; oR.?Ç&4)ЩrܜmtҶ#=cU}餉*bm_ kQN~B]«0@bI݌Q2K-+P]Mƶ:ZLlht{}>0lYs͢~_(#&H'?ˡP&22W(/MlDmkDF q,X=plڅVP:*u5s:I`7ZV(q'> M.h EopPU_XȎgD #&bqB)C{FV<㿉춄1kG Ib/M9Q&MϞz,&0U`ol FHהaJX4#/a&).8FC0d\&h\NZEM-$0j]FF&2q]@?71#8bܬ dXl\{UF`hJq&/~)y7RhbJ*^9z8t [YGNY@ >]FXrJW$eSrt&%)w9V_?Al` JNٙgeD8o b0 *6Yb2X>rd|~2EfCǹ8.2/)t}$;-Ihs1ߴdǾ6v HVTJ`@2.Ӫ"U?*RGF:yுoy)##@ȸa޳*tNOn6ǸP Uxt>ha-P 2pt'TbTRD|CHTC mcTjTΰ( Q %6.#O(eWI*&b󉱴IA~ } sƏ.HQ­E:Ǟ;ڌ5r>.0 <2.395~ɡQ0*(× Led*~慕\kBCJ MRfC}]&4{E<گ R=X~wKC 5v@I%]r^>NC$Z~}<]\bB+=yJ) KoJlhTʷp!M)B3zRKx#-~L1A*9qknM\s?_.*h3KP L:UUD=mX7S ]WpZGe{yd#w:Nn-عCӸ(b>'x*d?+@lhܐ8Cq] +kx P&22nxz]u%T d֎߇, ٤ 5 %[^/9'5\ߣ(}t[Pث Y!q#Y[o-'Hn޷ޡ :p8!i#;$hZNT_P ${,0&{#PD)WeKOs bP3t6j-3W{)Wݡ-5ۓ2k6;qes{ ~{@{؊C㌲_6.I-jy)I1~*4"=J!p8`IJJǰa垼1n+TO"l3 DcD[J߆vhӳzl'>?+@Lh^|uUz 'G5##@~|r+% mhR(ՅXI,9$dŊ i#)*VQYMMx& 9N: r}z]$ZyeC۾UmY cD'qaN1֘QK{A)!*T=Z:\ϳZhv1+? 3/>Nj9Okv: X%(@#Lyv,b;0gx҅O!MO HC HODCLT 9VQd){ٓQ!T3H; ?-as429 v&0p<.##@ڻ?@Iv+55 +l- hM扳˸mK|rWmb'ܓ4& e5v( ҒGV(N/K(N,ug~dKt}CsR(َ23K;o%$%~\p&>uL9ωՈHsq Us |c{hvX>{>OwOsx ڛy'u9Kr.DU:"eX~lj{QvU`b {a ;MV(e/,R58-E)b! )xtiJlNd¸B2J4U{l١,Iϖ6s,(2 GHdyL\X ʾLed(##BgOķTasH|VZGGu@K~Snf7.>*e$ qHtͻh;3gƚ_|p1L|\d|lp@!ADN4?,uQzhWw-NSNQ.-/X 6{ . 3L?ojl6tEkˍ߼{:5QN4 }(qJXlVSc'A;ss.+:&\}rpzK E {.db +ږ}d6v%ͷܓ4+h?M+U߂EcQ}ҽ1WTݹطd?I9(~ kMːfdd(Gbm0d\7{ޱ h% 3Y^7C>C}\elQm݊7?wlsgjTͷDub.0y~rA3[b!jIJǔRWx:o5+Swf8@"vP^BK{C\{CDx> -i :7ĤMjH(7i+j?B;e3$VDڸnJ(J1B2}Fr.AkǘCm׶5Ӽ}O.q?ˆ k g /VBFƵ!{pnp(}_X`|2vVJhMP pܴ$“} !j۴VwؤA>4.sHT(~ P@mpaq{= l_z}Oxơ?qhYz)m3oҤn3yθ@X^+Ʌ.oZhOdRbygW+871nVeC3Bw~ (xt'Y: fqjse (>I/^(jܤDNb.Rx| <){^&fHnNj`}ؤJ[0D5ovb+eN5/I읏+\~0bMQpge"Ky1x>0d\Eǁ̑Ɵ?pM` p3i8< C =8ϻBD9#@ޞcl]EQP'@(B&XV:cZ ¤ojj-GUI^^qD7Adnsp#Pk. 5lFH2FHBԇC|s1r.:FL,1CIlp,i)q5ZtN0Y>Ձ1ah)-{i'Cq̝zmC{$Uw8u OL"|_&UĀ & $( d!Fq Qd"WȢ jՊ$RUPg)VHb$T,$&Gձ)l^"ym2(l- R%ഽ9`&d\eGr$2rZ91@xeWL{lP\v&UwYFOvq~w gݜA/ ct> %7.Eqy5܏|uP3Q/VKqxgћc?xl \P6(`/ikM&t(Kg>l7*`."*' r86.p xx%.###+222&qn* ?!Y%O{h TF@uI|jr\V'e@s``;1?/sRGv~zvOLBΩ]GxQ6i}CŹ$nwe $ʷVWr3&Lc()J ^E)fѣ\/Vi0Fws5@o3GX8h ppݴ\Q\yEz Zi7l}UVR{d,Te?P?4QBVv^TP*!\-UT5T3w sT2TE^E=\ɘPKk_vH*"jumi{C:A ȸɟ`p,`~^1瀯y)###@nƹ(GezǹCc APBr(=Ċ$bZ*N#ۥi R9Wb@H:¶KϥC^#f1Xݨy58 9$ky _=w:;O1yFK){<2>3s@ڱ t]ps~j2>N0[=rІ).]c[2n3=QSLy<+7G cp| pNH?[}'âpT&cnIM.jI2>os̫_O"Dyix } % !' 3]\b{/K]k.017 ӈ/B))j˰E-A "&i8;qDSJl^]K^  u^@)79 ~*(B;)XܼVK֧(`Wm<#>A*8 ?|u2LHB%xS^wNn KsyG퉍t gl^VD\ *;tan _y|D$J , t=Y25&s_T]xM҃ο #P\Fb5`aBDa0dv)8\\D H_nQDn"! {gx* /L4bzy 7? 4LK th bHftRJ=1?]-u@hH8zF4FGZ>?kbqէX`:'?3ah/BD+>UAx?pP0/y)##RWBFƍ܌0!%cUaex|0I\4Y(`N$@*aHtu5Q\DYyqay1uixBa| x]nZCpdٻsy!nlm!5\P\[E)j\+ffG7Z~b~ _qUh m8@2̋_gy,;6{/# 9 8 |! O9|Yqna(O%L\dd"VہI[ QKF; +  |;yP?"p+.&ۓ`' H즋bcwO]6sUpeK?[8$;X`D+2|$ y(>?{ n8zSJ^w3'UoE5a+8FL8ׯTA&k[[pN_{ 5\JJR(e,@\f|8)&6xձT?6?%P:&UdQs _R) Up%}IwY;١,V_(*` ?3o#ad4>C@#Q UΩx%L!ٚexGpf*%$gV+p{0W:T}hк~ HK_p=aV to%p 2IշN,ڟ=r;ǁ[<HCd|8hO0nk^ASGe.%<[|^?T~>'$ ڴQr_z@:jRg' |+.###@W[A>CIz*_(*CtF+s$I}MYDd$ /gP*0C\%>?L{ s,y4C5\}皯+!q7UsT@z%UfS5J*B5c 6Q@tɹeQLɥQOH G I d<`!fl<2õ%GRwNa q;b|#IC[$65g\XG9bp;9v8ixVLeddd(##j0{(Q]ppPX`x|F#J Π֞$&Yv#g1WJB+ 3匯$A!Z5&~?^z78v$Iᣡ %Q#¾?!Vk?td_qdviS~co{o,NA6biJ^h2~_~X˧)z[!Ž7 4a WxZk7Ys'Eoqϳ4}K[dtޒ_|jCc('<] & np S7ѹH$9_T,59 Ȳ?8RVJG4Pt,vgLu<:ԝB0 BOx\,]ƅz)p;>%-6lPEoKV)40g\XN>9+Œsct <l' oeddd(##jz n"b%[xYN0(&  +GV +>JfR$ud dXq練 'j\ȱ;KH/R ͢ '>5`MZ: -!R*s;l̓ҭ @?En{lq#i,neu$FGZw/\>?U;}Y~ %mC_]кWR.Iv!mt\(~a\%X6ļJ05@kT]+V=u$D|!DTBxLC(﫪YF'Ã(;I~BI߆m*H--s0FC@`*E QC $q7MmÎ)Đ44f$k|WO$C}ϦSu_5vT Q2x{P@$ Ӌ+Z]1U"-Q+Ъ(NCɫgԑ OrЛ?Ewܹo_޳W2RtA8alnQA L\]:%{¬LQ UH %΁{~ d{Cx~J:Ȅ*j0QO;k˿!`l`'ml^7nyG~ȸXx_p?~=GưJ]6Q_eH322(<322V&x6KLaBk+YqI0E_eL? ﭒ,TE*h圌̀rk FH|YK$\m=\tMx۵{Y/M›&5O22Jx\Go._:z~T7o~{| !6< Pec|D's:\k mW`oӀ]FX>?S,]4R5[-_=&0 QZJ^cK#-!swl3JW JTp#$>= 9v9֣o*w_'pkTh)8?9Vn!wwCh,iPxʋ%pP 1yXl3nrX}U<+'bжI?>4a (Bb_HIk!ʃi*. ?px -t^yV~LL 1EE5b9۾xV98,lPx~KۄڃqrKɎ}ô%o }8}~22@y_ӯ~|QLEO>c0_RFFFVedd\(x_\*cuZI&E=)dH&…@ &ṇ^PzGVR 4ie&aD#gkX ƗOL68s[%~<ݽ{7zn8bRߔAWыC:xZTZz %O?@Pd5f&WBQxencjYsY8q[՛܊6m;=4S "Qٷ@N:mj%ᣟȫ @~yV|_n t\.sZ&gS5EbsMiaD28ЦUyVJR%HLg3f5p.cBa qs#cm];##@?;{ HErٸ2t)o|Qȸv.ě G-24@{I8||Mh ڏMHHP!hWysj! pO# HMi>,_9CWoS!ȋYEqxq>hLꖊ5r;N""@2t|~O3}Tݙ Oo4!|1eّԾ@[Nc%|_t[%[('~aB7AÁԱ(\PKz]NU<+elh@86k. qDU X}~oAYDz{gpE2}7(`Ȱ c_HF*\w}@7 xH^N䑔;K:>skp8ΐrȡHZvHH @Fp%1l;? yH<RdӦY"%)""9p.}?R{EjTP5=SUΩ}άod(| O(j$EgW!fO|B\՞F ΅Aj!ݧ2"P欞7dg`?t^NiLhz[Q[;p4 i86<}fV3F Kg$qIMῸ@TvVV|=p;ngl9?QH0^{ą.~Zʻ+{(:hؕ5]VVРm ɞ֎Z' 4U 5πi>2̝~7B&9ZUq'v|NТn >nB`Dvә?q]K-l3cֳ1~&]mFRʏ1YKaת=y.Ο|y)7@O~~zy. & 4O|"Ԇb1*76k7bN>.ھ˄&@B c# 疼/ LH3]rh Y@Ģ4ED -W?硰\ݦ9_}qmx=K@+/9v-^hW=nZ;=qBJ?t{?vB!GJ!I>cb>6þ_1 L ڸ׫yd2{|P$yT-8<9`v<'d(dA44`g6L;\-e-|p VȲ-\p*1HK$F;AaDmߞ]emnXb&nb* Ro@_B '5CPW9 ti@9{m{_ GcRCC$[ JjEG+b<#vl A`GMݓ3d ӭQ-]g.|r_Q-m"jFمxc,Zʶ}*Lk}'"{l'8 ZI1ZRc;ǩ'Ao{Z/̹٥ Hr&k ՛ko=w?H'NR&[si(}Ҏ/3'pL&sǹ3@|l*^+Qӟ-]'"[1f'LABrl1ۻvq ݦ].HܧH:ٹ᧨b'Z bl~^{]is/~KQP#C#JJUtz<￴-_N/+|N;(W0@0&faĹ#:/O[p~:=C{`̏@ǯYx}Æ Rw !m>36HI zqIK8}}шrSFLZ_>f >ЯMD쵦vpɱ˒kt(, 79veP=?u`5d2#E&ⷞɣA~3"[a Tjyڱ!R/e2d2pJî4:v!GEAwFmejWK7"Ҧ[+wGj!icT[8œ.M=ZvpwDt ?v'Y$1?md\╅Ο_z O}cᙧv|C  W\ޫ ]&ĕw4s^Oc2L2LQIDERq'N@77ؤJQPBF{1!VYBOVXo lb!/3U7ݶ/J1jWr'Βd]h'J$Lku:d!O 0uPNJ<2G \䧗^.L Q-}i弻d @)X+b}@0-|^X8Y:)|r~W-D5^O#a 5-n)IԅAmm@DZ?jQqbEqd_Y,kĭ+Qq`l<%] &%G4CCT|*87sԘXİ[} ݾ[5@@c(l̍"a_ y2lp RKA~X+Ld2w{y2^aۏFA%[#ZёCzs# oi]/;ǞA,I,^zYRTE(X7YԅƚRT tm q#k&>m03Ӣwm>愒BXc/$8<zE'\ \k6;@]%r{*G=1gf3eo]cg:rV/ 8 mFazZDOQA$(H_1!m͵sEqѮiE`HUt0 >t[c"5¡E%$ٵb^=C >ydh5 S*" Mdr(niCs-lľL?̉2Z J#,w`Ƴ(8z:.!6 W3&i&K /~;@uy@ hY)|_d2Qd2{r(RENo=WZvq(aØ嬄p7~3Q:`WPy X̖7V#2>v5Mtۮ'=g:|+G3u\Ǩ{rCxMBB.$. c ޗkR?QCr$}TKLsF.XΡчz(WR_Ӿ +B_#hA0?$AHh|SYt=`G}}!#z!e'u>-;@Z(A iG;bNqjfscFv?!v]4'cn 'mT[8|>n}ks hA=yoU燈:a1[!@7RVʭ5b{7@n @3,?,= E[r~d嗨FWk׏/~=n:BT"C>%m|}MUcK0 ՊjyVa!vz[qj&9K]@t- u&.:;2G ?L&sG7ZisKkeG&_PR#A jOZun=$kɥ&vկcoxt@Ip ;sz `͸qwo=⠠qT+/{E;x C["⿴Dn2RgmuOF! 8Pb^0,`sEюgw߻<8dYf3R3b9 7eQ>]d+ҖuKHoΘ{BA:5XDSN ?NTݺX `SKxnݲv&`a;mɇ;sl_ ŵ^+`'+l&s t{(L8EIpElCv!HwG Aq|nd2.d>K@B\uO%&zu7T,-hP7eATAZs2Aa:.ló[4m?{QmM'-n:C,pV65¤mP:|~mr?- x|7=tV/D-@+<A^/IH=," L6Vظ 7~xHjGHK[㇉2H U肿]! k݋L7dC$lrnh %BxrԹ=J /@Bro4q!(p8ND}*ouLpڭ׌UBeӉXN08|t{%=F-̭𻴤c. A$$Up0%oC|I*|_d2d2w8PEds 7EF/1?vyf{+<-]Y#z*fHc)lō&GR_/SQ;,%2kCA}+c=ArZخV#V.s\A$nK|#Zu>GgF3m W3[/A{u&E_2-88~/J } ?x ,0/_6d32̝KNpNW%ZğMoEQ1-8}k %mcK4@19xDԄNr/[hA LN:#lm(U,qivG}MYM=~$wxk G y1J*XR'(PrZ||(L9>Fh}q; g!QQg 8-h_=Ţ]"BjA V/ Y}oTǖ%/]-)AT7;ș@{jg8u̟pF)J;fE}99c[m*`92*}`~+pw/2Ljȣdtp pQ([H6(78*r]~,A{ \S/KH ]"hgگپ, ꈹԤuSN2ZqިEj w)VιK;mکcF?̔U2jP8rueXp(!HqU sq;0a*㍷@t7%t;WKON"35!0B#UG<5 b 7Siգ,nHDH?HK#  %r%Cޱ'l'1dj@ҟ%:@QsN !] 期L[ uI^z/e2Ld2 ?>+.?F{84Z;^TQ]4[R]U+ZrBrZYzX r4,|:5 t++OI2(ߟԡ秏_!![ (b}%@bt'"hsrF^~0Y[iKf?}Yr){ KH[wu-ׄ$WEEJH2Fϸn#BW̦ҾzkjVZ$w O;7픕z<|| 0>RqzZVs`#}-Xn4#DU`;d_,3w%L6ٺ]y`0 R GZ>+2L&;2G4Q0SdC=ZgH2V.~3H."xEt? VΫ"`v2r:qy'L&ӌ_< Lnf?tĹb79H VXAFD-w,9+.rE7[}8-o#h{6ATVw4K A;<)LnRhF86{ݯ|p]=hFG?w z<+Q=PN6(F m@IgYϞf!2e7A;ɭw,@dkV; +kF1ߥN ѵrhavQbOߏ F I, }1=Vdb=f-@6:њ(%tD'S½B)p'ftӼ2ٳ?E 5YN!Jp@! [KjC1zxvlNs\&\( @L$P-ZiMEYk#%Da T7%4g1؏W"e$v{ZCekb$US1=[σvOlBJ{巯,vyi7sߜ|rt 2 @{'x ?6p-\{;@J,Ǿl in;VTqBwfHe%fՂEm$^# $]d bqj7.  т#} Η@`iRk|xl7n{>U`Ff2{[98$@"'t_m|*|Y嬨[RϑCTu腊 &%׀gT_d2d2pҮLtN;#:!Fe" &AbAMz^pEcu\[™-Av[&=j l-Pybǩ+Q8 | =2K \P=/(h/Èb @^BLr'ytp&o=k!-2?7jhיC0r[},( >schy-ۈNAQ"$Э&?6VVmFu6:fHIV~NRb;8hB:N}O=DM{19 sVOѹ?p.nq\3o\L`_~k?ܽ?EMxg)Hm\D0 6>MtdZ߲| 02;:Y ",OL&ٽ(d2 g-4AM˝ʘ&`BQ!׻E F8KIQ6Aj8ȴ#a6gqh?ڦb΅.-W ↓ gsN(i@ W?{e9ЛpwENMca`<lCkG8#MY_[f!o[ Ivf]&FG{k%11>= i(*'L72k8H*X[7]pcZm! "tBı  {;sѭEzuG(<Ċi*h<;Ui) Z3;C/ ?xwfI~n6x&C8O({" % < y D*6AD%‘Pt>|._O%h4b4s{MVV|).{Cׅodk~pMg@gfnGЙl1so3Zڐtu :vGlޠd,Q]DZPvDVk(yخCDbZ:caf=53t-bbZ:rةnە [lWsO&sgr߮[_ rG_`y k5RN# Dmp$BH[jK#:kopH?< 8x>ߗ2L&d2w Zg zp\D (ꂛP 8l HSBi-÷utnC8C] jE#U^&yIg[@; X("֛-ҡ΋?ᶫ@zda~E:x_Ǚ+X]Wm57xL+T Ϟ;߽cƓd2e<3!M޻8/^#0?8y-Xg2a:{dOJfhAS{W4gmMRڴ¡ 7yN\pF# $νPEAT~RĎ8FrV֧U*U#Y7M6%D9FL<zP^a/W}Zp\z֦DPi5w/0!{'p1D"p_j 'D:8ap<%VTļ}gI(2& W8 K7U!M5#xd49FzPϙ3_TL|/AEK!d;~D j8JhR!|:˞C!NAy(xm=Ű]YRY]R%zM(~\OCb@ꓑ׬3mƯ 1Qu6B6q,Cd$JD-F4%$!F?2 d_5\|mz Hal7ג:vblؽ57ZCCCn "mK Gf&/C69)vJ7[A/.O5 T`jPA+Ji|^ >~s>>V| ~\['zaĂc '!+|\x (BP(PP(nT^KJ +h3T 9<T+h慖BFO$8$̰Ÿ# H$ipz\l2?ȇZ+DP">NGGq"27<mlIWO;MC6tޫ{Rրg6_p c\2 ˯|u1&[Ku4f)͙fL-xkwGs vItcc3^%>7]C7b·ԳCF{XtCwqsw }a\?pĄb@ğd$5b& 'Uh~5ԯ'c*-54|&u ;tȚ5c)( '{@*g~M6'͜4Zl;T`#vd /]\揆G?b ?~ 'rzb\ @;UzRfvMT֥BP(PP(I4)pБpuW*Ĵ@$y/P3(5˛aB˛ 8HQ(؝L8qWNAEfl0D޿{9xh źD?`8RV9=^z[v#f-ˀp?ɦ$Zuj1==&4K|2!r0TW^Rצ5{&`s:vE ߽><4"r4]W@̔皴HD{tTgܺzK8GM/Zᓠdw57+n5m\ ,g\$!r,*ɘl`j8ƹ)ÝOpZ%Tmg)SPyw/ܫZ&M>{¾I>N' Ѩ(Z}|ƾ=m.-F,Z W3DLMMUΝ_WcFZҪŠM<4Ϟg&+'itA5ndb`@Tŀ|rq>Eo󯢋!51!{,1oẁ-⏓A ,v6s̊ %:]_l ]sl/'h@r 3ŽM{Q ,wxlԼ`9D"XPW̻ߏi)GӺ*A2 5((#0/f}:#b}Iv<̱0NҔs+{C*eQρEaϊH@ہkg5Dn s*D"rEuB*a^CN$k"q>p0,܄4 -*@)#i1R:W?rp@mꌖ:3<w/=`ik,K [HXG2p.iLŏ%rYav{BAP=iA/7(|ܟ=($_`,9~vI9z$nKnU?"oH][?G%ɺL$Q :Y4"2v v]b0C{XQ*rvc>55s}2+H= O5FT$dۛi@fiG(ei#Ɲd5fJUoj$D(Dn52PG@e]?ks)Al md$]!"أP^MS$O oku +\pC~,{41>@E{ݽF3;v;߾x2{s!uU A׵_ Gi-Yڴ[V*JM_PU-bgZƀh]wqӧOKLYjl5e)] ~3ǩEͣ,-ɖ;vuJid O_D .*m1A$ALBQϛ*Vq 70}X 7)Q# :̶`x} f#Ⓗ[!=$Pɣe}D ?w [Yw D"Bx"H9R!lAA׏?vhȲ>(r\pW4dY [mr4%ظfƞP^i7[Mdg?šmc͹$#8j8WOìW֧.<.O*DA3U[C)5N?[=*yUV-Ũ(}d2 v$Y谱9b803ťM.|wqǝwU{<"EmN/s/T< m滮_sW^T╵̭PzsʼnRPu9:_VsMznB+6dv͎s?Miߙ)f> \7mQ(|>Pas6nmvO$6J5X+` X?"(a3_I5.*ɘ{?YwcF("@n{;ld`D9ؼu ='u OSJǒrBTFԪ0o eXyJv.1~Cl&LfF"HtE"ݠN]?F3*%[:Nvx,xA!'-kl d80/tf2Ko8wb;O"Vig*j$yBgӘt/ 贺;S Z /_J%t1;bf+oHPLGr O2Ӿ+R!i4y¥߶Xvԟ+8 wqd?q$Ys}fU#,=~>*8] eZ$AWfb;?MnA$Ryr1בZ!TZQ1bes챻()dUAAz\qhBWS56sH$@H$~F,Q  @mIi* W5T;PaWBWB^&eX ,iE'>6BR?:<oύoE. At0#|ǒB3d)ts-$?r€Mfy]"ntM,GoDddDp Zy뜿pU@p|ǙO~1μeFz=We@k^:;FXyYKuOog^Ei+P}/r@vY+5~y> ZB5I*O'>H=ڬmu  @A' ?oٰ;>Agp1$@"/.?Cqu)=)n}q 8(T/7\ZJ8i #XL)G`fRMuD#tA^P QQ[@JZ4/D"D"((u (xwd,jHn2ܤR D, >xab9}X4 7z \,iI7awe~uBS׈. ZTSNoޫD46e{]}Gw_dT$YFW. Lkh8*%u6P1d4*|y7ػ",ϲonǏ/𱏝i>;f[Ak_MO{s~HUֳ V._Ӳ.Zym_(fh]>2ܾ" ڀipfiC}QiQ NH2?{3NvtzB+X|ч2k:MBJOFşYHd+蒍6Y7A7Юw0T6w 2oDi S ~Xd ޼[D>feo[:1f |z=VXrՐa(kEL? ;]l,oa$DP$|2S)WNKAmɭp@n]?av3, _D+Z(9yeO+pG? 16Qdݿ:34ŊAvi'*iے{%i4 4L>;.;j?7{yPjig-6AIYU #v^g#4/YPL&9O/G.?cJ,_;{/i{Y?*r(6/1\z#lq̗˻V\h]:*P u :@Pr!9| ק==L.(ĻW"ꋽ9y/7mHy1}5P;|*gϾ)4 ]&5*GKJYD ]lyqt5¤LMrk\!GWV2˭SZ +ՈݗX |G 8HDW6yˈ@s9A]CTO#Vr\IovD?X#ZE"ȭoE(D3sqPh(Rk4뼲p$v9t@fAnv>8!7_)4];nƺ~,y[H1 g'?_߿?{aAUJQCw޻Va,xRAfYuSl\zKo!&0ZʫdX!WM};;e 5v\;v/\nCg5sDb 3~  9M 4^wvΚK5?N;X6ϥH$rm .NG#*5BY8h]N6.2k'b1f)j;Nݛeu{7@}~AEJI^'$Eah6|.7W(,)v9~"H. *D"{ J"򖻻S؀d-`;oWX g`[;^ga7#u?eI(VI%ZYB&ek??=LM<2Z+ÂY#LMd@7i$ef;,ufdG7kO뜟rp QD"l n4}_KqGQ;3aPNW D"a@\1帚j:} y5^icC"GE' |O;0E% hKCϲyID)uৡl\*zPd{pYg77/b8)w2-gR)67+0oq Yz$I91V`ºwI9@Uf:8CZ;mHL[sXVaH$@H$yw-0(ov\,5P% '-Xhc=ICs|M?G`O~YvAe > , h}gDrwNF;j*2 IR$:kS?M*p:666\ۆۏO sҐK%/zcsos)eOY ?e ?8,K]z̯3l߂?3k~fbaY@Kq Kg?G}9wSΖNsyD!>vz& |;V8trV;gkȻjcs~(CN(K84|r/AKi5z\͖yl5mш.΃a"+y huR˽ɸhY9YWI(l; *RPKH$H$\;:H E!Ѷaro"nI"^+b-H.^ /G\Mς~嫰!JuJ@'yy%[^ٝHRBiV(3Hoo?XVׇ 3/.^RiayydϮ''9Fۇxᅵ]2Z{[?t:W&4⃯R-Y K,vaY&f\쌸ͬ6#+f|l^tE]ԙwL09ڇB-6gE"w)}7)p-K RK{(̂qxa;fdPFK)W2XȖN9CM~8Ax*x? nbR-$e gq kk9[D"/ūD"7DN{@⏂Px}Pm^z*qSiuwCv!~2W.,zF[wPI8{r]pxH>AZ Ôj>3~iɠ<M>EέX;](b Gl_94_p#ѢްA(62\}LINXz헊Aͻ5NN~w<#ܸ5 D/@Dq<9pPlNl9DMsPؚQCLLf$J%w*]+`X?{"51mMz]TӚ9L{0*mq#Ɩ~+¬q;p#3!d,+8XWٷKu* "*Zhc!k`9 D"D"&h(d{ @X@ !Q ApFjK6BE9%nB{ Ys5I"4 X:(< ?6~O,lVm%T, Wtw|聽}zYa~a6^|m +Ky'iR?~H.A/r~Uϣu@#G|ݙ&*Mp@0e&Q(OrӀ4 N0Jmd։ܽ(3\ _lWS3AZ4wZwh4<,:ԉD"ׂNM}w0X~ ¶Qlb|r$ 2wl"Z*Ln# 8U(>~^5BEDUC*xTiNuyl%nGp+5&5b̡D"D"{DTݔ.qBӠր a-F1CNS&g@e>Q%dx?xV*0h.МۗpڒD%@!r}%__Ljb"vjs;Ո'duZ|[n Vqrf8xE87ήs$IX[_d`(+W2i `ŕ ~m7+pOꋔ z$;.M>3M~#n6er!@{:,'+@OHN;qp߰x^\ c`lS;m,MjzXkfX&\;s:vÿ] pvbwCOȎM̓uvR\o%Z`iĴ#:hGZͼ!ZAWD%yM F0v(a͹V tU ^H$P$D[2:R C`E433dBwi3-rG15] bGQ#_Qʢ$2w"`YFLcr< BX.-FJ) $[>>M  z*O=ɠoЙ!Çjs/_ez2I .or|E6{J ++˵Ho/ʕ?,W _c"ur~b*u41Gf{$o06hX`1 3k `h ݠ<_$ gNx? 5N9Ɲvٶj;'@4 GD"kI0 $[Ni]#VBtɻE%]%9#q] b8 % : Z?+\HXcX}!ݣY2]'6BhpE *` E+Q/@s"H'1^H$@$Jj2^;/Ȋp M}=2p㙆]W$ m7:x[[ &ޙ{!vqʮ2lV)O5Fi9iEG>(p`د~&gmgfl-S8pOほR'mv0̀0/B9OLQBY,//%..1;q4RUfyL󛧙\&w H5 ~Dٓ|~9qOujsr) 3boC4 ]ǧh0}#@jUD fqfȮk6GN;Eۻs ,+K$? rDgo8{Z!`&3@Kť4*͹&ؒn(#AK;Pw@lYG!5c)ePD!@5p̈́*m!JE "gFZW(#-]B1p' H$H$f(1s8 "#R[  > @v6k++0+ZX \H"q>W.̇<]߹7֮aS|?ԀUZ gv;`XPJdT4`kdwԄpqi= ߷9у;XZku>P!O=# :)NXfZ-6 Ww9Hy}Cr~F+ XGoܛΧww1Y>%X0@;_nJ/`+gy. g emH!hB;,b~!cY#aɶYcO$N.;杩?板4}T p A>*mWROS$e{ȸԛy[ޭ2/APuaTF].!WRa.Iꜫu4=_' HY9weA l+!S.DD"R#@sSa94 pe{qy~`-$-=J?@c=坣9 nG,ajI*/qx+\^ܠ1e`A^WAѐ=; R6a\C8Ȏ6Y(*N¬oxemϾĥ!o&47;vb}e듬l$H5s~ͷ j[Y?;}ub}Y>. /*X.wL;!DJmcPcG Pv[-Pͻ* אML8r$݉v{=!\FgJ$>?;lZ;hpA>$P BFI+xX0s ]P*EbuLY4[bDH5rd| ӡ~\XqǞJ'J"-TUs`mm;@<\߾H$%"H$rcȁ>w@P9oX<w u|b"^9.c=H9@!3",DsO];@_N$!Yc 1BbVjjDe +ksyHsO9'ϲ9b/EQp8^){ dC;<# M| a^`m}'>iqSi X,%E$o ku֏)\?՚M@;_Z8!Wl,xa8#C Oy?^3\ {<_t3ԂIhw49~kn2khC;و?K"uP^DM>zo2B۵Ty/TJRP$qB)gZWD f1f!ڼ|FYזC{G!VZePlTl ЭJ0(޿ BSbF"H"H$rNDro_TJ X `uqm럄/~l Ib]A($҂e]If90^u0.iV 8> GjuwIR}޽Ӏess\`4, kh`4`8!OFo@UqjY8qYg_ZvBݻMGbcs3[̤gzu'z{S/0\y]\GITjg^f@FL_0=+g+p{ܤ^ߐ;y\a\yAasLzRpx󾈭T@1.e##td=HdN8)K2 H$^?p/hPz瑏<ؿ|j?]eqr2"Uz7(-$뢓FF(УQJXǭpl+V%-W@MXR h 1;|XPH$H$XM+Bc#J *"M8 =@{>}/^6` A`v f?ٸ9%eϞiX{Dr/O1isVx T%:#hDh^o4c τ+kSݷ<|{Lr&{u._{nF4qf7IՈn8L^]1XyjpW_V`s&v޳'Ikr;';] vZv,&+=?Ib}Y@5ZuLp)1.ݽ>xOr=2Mj 4#P(Z58DK]#@ۊ>`Jt ؞;u酏RWT_\Vy*P*nNi:3-`PccX ;[K;9xx%C)YvW_ΏQlP151qyri655feͯj\7Z>_ i6рwa͈3 PE@P7G)7{ +Հ8+P .\h NO21 Zq.s#O # 3sFcko~GD;ڻNuT#F(6S ?"$9wi cExDFk@lds~4?z< 2s\~}'ӍGNW/Ň"H~)^H$yFq<~U/K!$de.Ġ܃ j~z[縂DҤ(o7N?'d.N({߭~z y2Ɏ,eo"pP0* `P; &-#)pE{br<ݻ'oG9" K>a]~(dZw]ET&՘$4g܈6x ׿O}= "24S=f}6A8~ϋH$ @Aܛ*A?qKwbN-|5͍D=U2`]D$-H37$cUdX]E n\hfDkںCׁH7֦A>@hP):|-~;#HBSQD"13)eAu qPT xe&vZTP4l&~HAD=9ebP,LBTJfNi0Xhϻq̏}{cnv*s/^.ܙKzKu6P9*%hH?`8@=\ݤ\^kv{>e{ Nξ99? WE@Y?" \+aؚ=ܙmoudeͯT%%^U\J)$ hf 7?[]%b](%'b'E h}xχ@ rLfY| p5D"V=K|ao߼Տ۬ZB)n dĠ./I2HHCA2[vT*IwSm3_v˺mG*0 sF2"c {g4DD"}q 8Lm* P, 0}u^XY$@IK56 Y\NnĬwӗ^ 7Dww}16߿v+|6z#yE}],Ko\UŨ,4 y3/3'`8+k *g '>\Yɵ@S/;rH:v%I{_%]jq̈{3"DM7wY@dvG [=[%v?FH w3P ƛJqg:ȮC'&i8ln\"d?+ 9w}?"WNCk0=wp4XH-R䐶 kCASFָy* N971. qP(G 4um/hmDn&s.T}m1 ~?D lok$D(D"7)JA7E4i7buD4psc>ޗo.)Qv8d.f{H`fɞi#Y?[%祝?-S:J3Ǚjih { qFy>.O<6C2Y7}~. `2AHYO81@+vq]@_]:_](-!aM@y|vDvA  ;`T䗐 G ]c p ;̊5ogԝH8zS3/abu$ǁV7R @O* - fUHJo:%\!Hmi_mEP*Cf 'ác,,0bm0lVNVEht;-ZSvq !^|u1:ɧ^%Ҕ-@/ P@`]?Z5 ?iў<|uA BAy8W.7Am{,AS?7_=oۘD|9N@EC ~ "I3 CgB$qϿ8|,/}O-?bbՑjHU B}D@W.1||eK+WR ̼uTzRTɨgi][Ƹt\F)򺍛݃ƬS`ʳXG9vfJۦy9\I*yDP|+ p&~k#HpE(DAم$ Op eiK!-QUCGq0 U}:1ۆ/\1ȩ휯w(rk@೽2RXWrTB"/&r񠺬~gAZe}xNDKݢjirڭnetϿx<}rO61եu?yv(|~R 2\yjj?tw/,vg؛4k$o[ :}4֑JSR;:UC+9GeA#4FvYX!@) \~º~;@M[Ɋ_g?4MZa/ ,:4D"750Rޛ~ Xx-[]j}uw~EDkW-֘`,)Z̻.q!QcߕBv J%cK1x"؟PX1΃8ۈw .iU"OiP9|;Eo!ȿD"D"͋u8 dsf{ޟ$cMѢsU3XywPܛ$3&v?3M; 7R*#T|r9ه`(PiѳRL d=\@d=m8b9L@~)9g>kfW‘ۦhw:K2l\WH&u7ޔ1w7GwOK>+c^JF3Ki"K b]9 djf*umm]}GNA|*?~L+Rt.ɫ$⣈8/>{BOoo$D(D"7?p hK"1Ȑ@^F+H#`ns\cV9~ㇴ{=^ƌ?hyTC \Vuٯdmb{F-6uSaM@|!v:n- Tq w%ěo>z˟SY{֊Q3,E!h]&(an a+T9?믂n{k&KXn4/P d1'dUv:X+>0Z".q>g$a5 :т{6Aiŷ5f`$, 2]űLLT@L<(xxe`3#!Z|/TP6 @' As'p7avX1ik: DAubl97#% tn\i%ATZgƢu ASRci2OXq E$/ǫD" I`g@{FӸ(&UAu?G(}mlW7x<*`ha$i}Eك,ET<iM P3 s.Gӥ;eۡ꒷r:j!Oa$g{)BIFU ]iʲUYQU*Ѻ"x/3rai& VCZ$Qܩ93ݴg 0K̰!k[6TC_^T"m,OΔMN ~K _wwaEcwn9}x̻\Я 2@Cg7s gsN:I{ _ږF42ѦZfŴw!5.f;b Dm\8lD@ ޱgg-s@WjHVIVbN` @A/{Tc[D"7/WUD""r:g`(pFYB"qۙ(@Rx=!+o@d[wh|G ٓ;{]Qѳ,S 0$\ZN.90r v'v:t'\V-MynKQ6|d**KZ(|UU G,U\O^9wz SVNGjIu"\Re`+DJ Z-4 (4TPӮ<85VߌH$P$Dn=p8Hi|((dăר LT06웛xF5Soߨy_F@4j?@ *szAėL+VxV }'|MV6RV6ڴm.nn]KtV=j{R̞%01sNRUUPEYF*|FOs|4pl]MDr~ W|?!N-N?f]4{0ҿzmx%ixkGmF/ An96o'X4 @  h~LtAEBv@G3uOnUM0H$r?'YWh@%Ӵ/ #b"H5SYq +Xg i3ǰ(@;8wʞm ]9 +GTW$ ڂlQ|Kos$D(D"&-JG+rK (uD\AǍ y?b T@<_ű#hN8}?ʂ0F]V뫲O-,9K  -qu2n~g3sW1Yqjư?LttTZ-jt۴}OzemvIQQRU8y# n:ך)~PV)mh%DW{ZOw֭C&ef6*\~sp%I.&֡dC[_)y% nl5Yq0W ڼQ澅q,W)RPm8Fe`=#L_ rlV?Js @DD.M졻vRk <] Ru-V#XE)g߈`]׍E$!)v !g{Қ#ȵW/t9gy՝%ຝO7+W|홋;w).1dq5cߢP]&"w]ze-NѺ-fҶSh-(@<(TΛI]x 8!PsY-:܅jY1YHesy}QuxER%HeX1Hs ( 'X&w^_.ry;KL5[E۩Kí\׃S?Ν ZsU ;Ș4AQ?$)tQԮZW\x{J)._xV7' W_Btu{k~H~gE{ ̞z|r6/aZӻ!+gF xʴXc+@o%pnw$^u|x`lŘmbXJEtGj,xWf. ;}}M]v2eaw--BfPa?vDnQAl; 6PHϷf|#BJn9 4q߈qx9Oh6F6YLn?"2 q?[1nOZPe% 4GJ{~VX@"w'*}*~#H$ @H$y8 Lyeܰ%0Jѧ1BdR x6Lq"{ ~캭Fm MeOI? {tX b&msm~NgYY:ZÅ*mSJn;4Z3?xQ-Z +Ag0e ZUlY7:Ñ}ŧxi0T+ VEzg9?2qxI(`j ˏ3X,!cغ 3{#;J&!,(Ѳ` !&f)s̾?8d B Ac-OfY@:24,:ނ#ȭ+LP׷.}_~zBgt[`E{0QI͇uh=#X`plKeB},+DrAQϐϠ0"n&CnCY6^|0#Dn>?*D"HZ"EJ* y3~sxQkT 3JvGEcM-Wә}D19ZrL V~o}HH^dlK$P@ 1nO?/Hӈ,X\(E lˋO&rx>sg_ZGUP5^{[6'["d#IFYNXsI#X0p+&9u=܍I>MGQjiP"g̘~8ҿ{X_8?5zqխMk\qB%lۦ3AK@vEzBWG# 6&h _+?(sX<}1WvјN@N%ٲZ19`1eJ@*Ȏ7 V@U/a 2k.-k6e5~+#Vh XgbfveGD?kם<VQpM[0UzhDYlݿ=]MCPc8P+lW-}vn3y/O25٘!YO $;V@@Dk$1,j&bڭ&Y52:@Hb"=e_ҟy /A)Xv|FVJYu}gb˵7?w/r((D"U΅gvGDP0k} Ǵ3(Θ%Y|"Ν铍q;wܲ]C1m/nTld.⎧ ݙؾ;W12V#ԋ)A . H DWi$_\U;9O>L>Jj6w("1R9b I\UE 2(jyx E$BQPP)zie?F<}NHD% c@UY ZOW'ׁ@ p] @ \SvL8,(NuAAH0Z=Cms5^_*)` RI2kuRE{|f#tJzߒgpBų>rOi2,UxW|o};gؾyLTgϰ~(.S,r݂8 ֋ Im 0DQ1vNɘXGA"T \|XDC^M9tD:(c> PlQ~PմEk}@8@ @@ xA6:s,Fxm\Ƙ0? 3=o[("Rork!>0Ķ"hAN"'hKP!~\ucpwRM$\Y?p+煣shh6[cEw8兣[6}K 5uVX!$ctګ7•r)x90Iqܛ +ha=k UqŤ_lL&/${K ZEz؟㋿:t+bǷx(mdߣj[؜II oTކ-kFz:#C@ l'Z:蝿p<޽=)+@4IګBU +:}JAM1xQ 96TۨQ䡢k "䋐wAKV3qzQrxkz? |'WIHaVps>@ tPv#Lqqꭓ'rl;oH5szZ;ei'w}';7v3'(EgL~l.Q)bsDb8[v$xqT9Qt^/f,Ƶ-~_v(O4 yOq۾I8J'9}!C3}oZ.^c8Nqǭk8{ax-kxyF2֯m'ؼi'id1ا( Ie97'鴅en^yCxy6ל1""Tڭ߉ W˅C_a*fjsn=z,f]p@keUE cq3}Ke;'\#],',Nh9(+:YˋyY!_@HزԚQ8br'/$Y"^#:Do*o /^jʡP xURDZ;A  @ @j``Q|Mǣ,z~$҉'Xf|@!䅁wI7e1@zAr:ZkNDG9rx`+|Ǐ578][VvcV.w^*D P*G-Nv+oHN=W)]e%זQ_^ץt-Pub@J8U{SZjE"0eϹ5{ CU7-PeTYiIA7 #9#(>TBJ {Y\JhG@L 40@ O!$d+hj1y|_)9"RVtQO!B9۪qC9])p@'frĬr}Z8,!C ͯzVO6Xg9zGA @}('@=~Ms] 2&ar|NDjq 'dG<˾]6?q-(=]33*C 8( dQ_@D-9տT`CZ:acJ@EA0)mJj=VѴ[lE-BT Yڼ>üG<ߗ:0]-c= ? @ PG9;i@S~~(. Ea=q:Kd'yU2qi9:%”8ֿONҔ\ K^0UJ4-/ _EADMFh6bf4ZA_-{dp pxy?∫&I2nёq @c_* 9Mp y5^ɡ.sǭkI\/c`ݚNfl}X.?R%d1Sd $&).lg9L@?-SXlLIQ2ksy(كZuX1$N`6c#D+Moׯp AOvp|w AGu/=lJ#HRB$B$IP5lQ^iY0i8~ؠ0ﶌ:@U57]q?9'YA @`)F"?y"`,pp5ҌR?mX=~tFi]unWwqH#~Z/"/v;ܽ(J(r"Pn=Rgg(LJѤG9v­{'K_b9tFذ.8btAg(flAo.ٸ%G 'KfXܼg>uM:t~4֏Yd|c9(LǶuS;Q]y~|^",+YO.<|uG_ TD^b3!nqa;G'FHcw4#T-1rSqiO|| h5?+6] lܞfQ8P||ɭ79|Cہ\@?X7rY,s.Sw᯹|Jik*aGA Ca}VK{Wx}U!};z, $?_3?P Kց@pvRb&COϟqEy~jQsD$O2;Kܥp9Cbyp7GU\ء&l^#71W񾲧cGg:33$K(y)7XI,MX\֯iee&&NnOYBInemRl<αamk:t{%_r?voߺ~g&Q#IK͓F,KQ-ؽHRt|S 6Ei }a9N`j,!/ "FGk+FajIo߼acطsf3qMљs/.-o Up'}V2_Zv--uU@豪 PmSuġ~e&D~TQid @rh" X}"/ᆘr^w4ԇu3F+9KGUǪ~%MnR;S[y_tx}@msH]._kVtFJ3MF7Ok9=n ʢIb=$,9iz1YϿxel>ZID"8T:,KY薴)fb1(S.Nؽmg\ęyO4'xuҟ+-6k?;B[Mj/ Ɩܹd4}:IL s_vZYw??n#.`S6ϏW8r4p9ܾ@/(jDA8>MomVΎxQS(/OnBA'i>Kښ(YD7Da (Ģ@}죃RƊj,ped7*aAB@ >~§ :H/ @MKS3@u"@3[ Bϛ2ǔ2J X(n;R<|< CD?{ӆZ&HMJGqQљ 47PYž#,b k',n[b,!b$3 2 T!/VO6_,m+F4m&n̜x峬*-|у$J/GVK\_%:+YPsO4#QD *JFsuO'\_v~-!WZ5cq$g ^&ܲ@`i"T9_e@FMqMϝng'x5"es6č5H4r)CjDQ1UŨ@uUBp +&ETo>2 gA:*j=́@ @ V RGHS8E6"'m!/뢱+"'wn x# 'U%N%nGc\(ϗX4΁,Md߽NZmlh54$jIҝ/ZǎƐ9ŗ^E V7zQۻ?͎|99 {w ,MH ĔZ̈́V38NBIDLjƌt2~k&r7oʟwBy";w=-+]imF{H1ޛ{/ U9lPel*fˮ1Fv<~EU @{A~T4w)KgNQS>_gNsb6St7r%HGH[9qt7")J``x#uGD"U@P(uXUgy+ȷk-R"\8@ @`%IlrU \A N>4E^ֺvQlUO(VlEO@(5k9q)?7QPV4w'ӯ|!癭ƺV)٤jl$M' zB򼤟"ZF 8=ˇ? |٤HQ$ 9š&qG1iğ%bl$T(&F+c eE m>78 e>hQћ5X :yYIę!Z "Q 8k cSX.M}Qq}3} vE~Ct[*AbУo@ @@ \+.` ,DnͰPtsR1jԇ Jt, laOS-]b^MN8nE#`*zr~C+[li6[իI3kn5$M8cͳgEa<ɋ> n3>K;ua%ș$Jlj4MKI٠$""F#W4 "?-}kŁ#y/ /uMu^<ӿw=ҕ8|Gl*M]M&VEU;zm(l> kw%Ք'7¢)z&5Ee駦짘fj)ڨ hzHܓ(Α()bDJ QBdD&LzP:9yDpml87G:y U{b"x- TeվL!$z`d >hUm,Z)@nŃ&vPMZ)i=+ 禶, tq4U}$yFGGu,0 d&M%+hJ['$**͓4I'ZvQ-Ff#4-h;:ӾtEI?/}2gT_4kGǬyg@I$J.Ly|Pe`DH$A~9Z&MkGF;7~_vZ,"2^O Jp[u%P\Hr9{GԱuBEk72Nx|8(KP?e@M_ڸ7K@oW'CMY@@*3meCM(Zɩ8PkPpjS0(FϹ:lVP#R'lyE[5*t, @ r ( V#ȫts; rgq:?k 郬M^)h0#T =ǮsgηOD0ob3NFg{vlFc 5-ZpM$igGrO~\dQiF$$i2XIbU nlLI~nx'lطk|g y~5⎳Sn/(P#5>mO0B=jFͱ=fagL\R%K}趥wkMшGiZ Žx'^J@w^ ~`"нՇN*1ǘ+B.uŀ*dԻVP\*έ] @eDŎ:9|0 +ໃu;uݓmFGrWs*g6^@hX U0$\@`L7 | .* ֍)1@MBV-[ǎqou hUqU8VI]u8QϪMi8d /Sa"($+F8V%BUmTs,.aJ/#.z7#8tXTf. U1-w\>N 6Jq:(Bhf4TiI8C(^\nN4-bԢna?m"ʩ * 4eJ/ , ]xhg^djZszf/tH]jygDQxm_ťCr@ x9DC1e@K C ASu61}Pu¾)f_ , P@  i% k8jPX8}zaN&y"Gsx9"'OngD<@ ~1 5.ͱqj_0=JQ\fa7vϞ=+ز#ViABEL7I1ghr~'D3ļỸxoَ'ۭشx@UP<6fjlڭFƟi7\5(珧Be4DR_(8w<,%ʵFU#w;D"k2z})vɅVQJ~"F+z+ȴ$n^E <{[mU_ByR;ݐv]Oj]ʆc$ieɳE"̋i@ xyh~_? a AW? ? `b0& S`f9%yCF}D@]U qj#VD챪b!Tew)Q‹XP;|7|  F@-yB~A @z"Bق$»ys.v3Z9.?N+xvuJ))i8-IYO[ֻwtZxӉZU8nS1g\;G8nU[;F+j6hߟ?' /g/EJIcTc ZY9M 0Mk+_! rmPq`d8T'CO@ZupAԯQCsYVt>:;pEp@@ i;A";KBU߽3.M,Enpp5n^:R.-2mϰŷC(M<{/EUR5ѻzgn̖v{N;YHU. Z4*,ӥe2E8LD " 5]  <2";SܨXQe 0XPn@ q@ Cu7"k"S6Sΰ01 &șp&]ǒ:uN?7Es'5e3%ث^޹}tn3n7dzdP(V*is󭱲 ç70u?[)U? fwz Oɇbu(R J]Z1#Un`Qﺼc*D, +D2 c?z$1@p=~E b,=6׉x!(5P,ͧ"~W5~^$O~3"v85Bnٛ0nNx~O$dY*S=7LعiPK6S>4li|\GKI(oYM Qί#]#NT#]%qFEףl1O|v6EGy q$yV"5^_y~XoR*@)"leW@.3نH|+#X08z*d9Bp)\~yH]!w5Z#G:ztB,}j5kc |: 2 A! 'O@·2nH}S@M`wHuGklSS3??KYuKe¾c+ ^9Y㓺':vozٺ;9Bjɣ߽>ux(c1EPU^-d&Wo{tgX){&ЉM&]YhU (C5D]yxsp1\@nEP-? Xa!n_D\XO1([wZ ֭ցb} G%3/Jĉ+F ܺyQE 0\r 3@W  GA @耂Du/Y<X!ȧ[Dz*aNآu6E;iLɳ2Ytm0S8|ƣ{5FbHG8 htt7F$b.s&NG䜽PLj_n,黁2{zsA{߰N9rJLQ Z(:c~:ur'\[5wAq:Y~ _s f7? *S7Y!\ F68lYnآ; ,bTS-ƐPElߏSw ԌA} d>>͒Td^.wq׿_|\3kdYg4iZNg~#ig>>CrIJQn9x1푢R"\?|Ο>xcg|&%NZc ue =WXq[,RQdMl9Fhb4p"]Nx 6BНXu ֩AQPc]AjPST8A1شS9")iJ'="vg$:pkL|dž,]GG76 @ 'AlDOr9|18}Mcq2nGfv'U_T[Ue_&j;T(.1k;п|5M;޹~c|B5O8>}X#70V~F+-%TYU{&n^:E E ADR5"kDz!S 2tS?tGA4[g>jCXA@PSN9[L)$e{bQA?g[ j? B W*`ru(X0ps6zTA~ET&QND+D/VNwaYH'yq^'R5UmQ5{ʅU=Z# ) @ xU@!J@(L}*`EMulCŘd)ŽrԿ%ΡJ]P\st0G@aטhZb[5mO?  gY z~)@@ \%f$چjP--^fa>w]na?V9-ZBoTO)y[)h75teٛ^O?ڃd鹅KX.zdLm\'$I1oA0$&,tqP/,n:hjq%EMZD"Vu`6aQ+T~@4>Oŷah:/jzFD0FUP:-{]"fh-GR-hڸ(u Xǁn<kEzp'@7b2AW˗g[^;8~a*G@M^q-@Q'wXu*"5W5}^&g.+(RDvw'#@zsyXsIMi=j8;5FۧތP˛4Pb_74omU~Q48pG'Ξs֌SnXP9nf˖,`zNY#nؼ^شNذ6Հ>dxh~~v /h!$/ܔ7Vq@m 1&}(]>IL= =_\i6,,h62h|<) Iz!/>|q#GfF:e0SS ws8}^ҿz]7Ƭ_-\-EyS.?/? "Nh@P1e hh|5)FJX#z_TU@+t\KOd8]Wot@Uyjm-YD G\NE@@T%vi fbmnpXT30OY)e a{TAnSuV)5SSiD8 (0B~3}6ix WK  @ r"`+"[P@|u,8yLhYBU Zy+x}|iFAwk}mE$IFY֐1>ۧ4zba!Gtͱ?|sgûd- 7"{K>vinUZWdzoA/p`Ўߝ?^*rK. "u. 'Qd9vGزkf{*;Jy8.@ E"[@&IAs_^:cbϭl04@j @J0eD@KԔJ$qD⮪A³O):|:\(v~W[ǏsO?(Y~_)@ 4P uBhEapClzg],7ѫPʞDzdhq4(i,$K3,eܼRX^I[q2GJ{^oɍJߘ=|c;v (|MQxG.zup$s9$JrqS9ݒW89a{jTuC|OvwRKl's)\V@ pBF A[ 3gkqnHj9嘚bLUAT͘ ӪfFQeԙi`ts |7u6Ġ3O'Y)P@ #GȱXP3Lϡ%zO\Amb'| {75u#tFFIVp12mȸ Y-PsW#^an{Yn=72Է=G`:K'>5eFv3d sK)~.{|$"mK9O\[3V <|ejmh: I@ p" yy>`@$r * 1!"Ӡ@ @@  v) ,B ŝVc.1;oDuy!c:cVcUۦt32B3Hg)tR4ML,v;;_J|?Ǐoz3ccctK3M?^|č& č{0vLGp>Õ`F=ۋKz+n*@m#|hh6n#͚,s 8å3WKh-5ո\QP.H+!c@> I}. 2 x/!\ kK a3 H mq~_c,]P+N "PNx,+K:v222jF:#Qݑ|1ҟK44%KSVMSErvP^AD;IgN><, O7P0JB #Xr:{U|G/NER 'Tm;`jN¶#GF=ëz\\@`O xpw_t 3&%I D  %R{@~8>W]- ^'AQ#HT-x@ @S@Bdv Y"x-g yx]񶫭trhZFX|emQ0::&u|(H[ؽkL~}Ś 0V;F ^xlw[7%O$FOt;0]y:xvtX)>ǪcQUe*؋ '-lb|r;Ge p!\@ 'ğ&P60coz?tb%@Xˁx'N$F2 <>@ (WImj|x캿.?̥y/ԇu?Ի{'Y0nɻJȗ :tR˴eilf~۔LM5|ywi6 _Q!"m~5GUGp'(_mny7n4P%:eO˴GW$蛵_$SBBaio\q%B|:^8lLYi8NWs19de?;pok2l[_Q=Db@׭#cEI+H o e`' d "ʟO!WAوvċ%8<|[).\bvo'1GpSο g:74##t~=)L4NL,elL \%VfE&l6pQ4My1F0㏝Y8{r@jlm'Ti~,G}fRGw cɁ['5=25Rg%F'6m%ke%ĠX< 2*^KGlہo $fu f? 0*A;VQTj}og @ p;X#[6q cz^;_:.TqCrj@]\stvZՑX>K4JӔK֬s5[$;<8}}'9gDmؖ؆crH)1 KN"ɔEkEQukOOWwSR@P~>zX]qv"p X^1|G'y9E)I? A .vm>< r";I\px" htFg~Sa1 c15 2KjTQpHE*u*y@?'Bg'cjkS.6CRąoj.Kr/R, ׯRTO4(lmmD'cv+q/@_g) C}_:ϼ!r\8h=k_kId*IT%Pb;W=%eyj7@IPM>,c29hҮ~v_ܴ6`4ݹ7pؽpmo$Lh$SP} uM/0= h!!YL![sɛ@~\c1~lWcٛnrH6Bz*m՜Z0gڅ@qPGI2$T|prPJ==,=~(]ٷo?VVFʟ\s8NsطS\_]_YZ17*E 'j@I՚K!y42uGD[䁻3s|*->>B'aOrp(&@1!d8 fl,@!~ltܰr`\DBhAP3c1~ӝM9>n?Me hr25ji&ǁ'*HgH^xw?'c@c[ƒCE ~HXI 6_("Z J+(qH@jSRlԎх NVulW.ic9zBP5Xھ={҂[rݡ8K%9+ q zsVV`Hy\dP(y}|:[uiV ϫB;骠{iyqS uck'B*NsEJ}iaX*ٸcvd/Eͣ<Ppo}+ZOn $?ͥAn^ \]Y@E`O`fa.`Ia|=4$~3  xˆ5c10J/"鐧%+-+Fjeb R#H\Do1 |?*c1wQTgt@ӡ@z6!RR%tk3PjC%)ٯp6HcZ|>ϣ'k.w34իWghxUw^~.Qunf@u]*(Tl&+ ky4b&3-ڡ}}Ō'k?ۉH s'7tU:T u~49)!E/N֘8؇wL;^,ׁDcE3ULҝS5ÂrI'/"8 jND"jh/[WWvc1c1w 0GPbt6vTpqO'YϧFJw0hZ7lmQ.06>AX㠪zn]" Ţ##Qd< 92~H@߸5=5c|Pk+~Oo/Wo$xP)VO浍SR yƗ߮}q=ڦ݉ `^1"qSW, @;Q}A`8LsP0ƥI]s[hr4G S.FЗAcH_v1Ƙ;_arhjd$$ }ɪPE'9|>' ޽=pk/4, =.JFÐ{ɳ[wsTiISM6I'v>r1i ]+@G&7:@)6p>1(M`XsJc APƁaq`Tpߨ8BtOpo @ցEy&K Am?c1Vd1ƘODT^i"k!AR@u{TvN EOr8t)=o A`@q}(h Nߘ8 "sKU1Y?ܪ>*0K`%I ?o#"\Oٜ0=S{!K3zعtPk{z"8G]%ԸilcESNBg5i%6Mh ] c1;]c1s'./JrX8@4_ DoѨ$'KcjbL$"GoTĄ.uG94NWi3E?A܋:R+?=\8\Z B{=~SF;?u*pc1~I//o,1c@ci Csn" 4)I"$q2eJ ch릫8D$qL$h-TD+|D.iw}WpkjTȓWH32C " I_}e[LZ/eho~-y~Rb1a]8OnKMvu) TuPEt B?ɿ888:ts\J"] EZ*T*mi3H/Kv2.gP6\|Fvwٳn}+U`_LJ4p!&x| i_7;BVr #De` v2-Toʿ,38s@!K'$-vy˫9~λIc9FIg1mΤlOWfOW g蘚7VUG4*p#x _{G`fᄳnJ〙*.Hf(gTTW-bdH>_0 WIAql TOQo/./܋V0u?üoi`(Ù>p(|0j oŎ&;ft\ks}`Ls@M(""" DDD8m;" ~w/Qgǿ9sf<̌g0` iHYMlv!EVeS)V!c |eƞ˓I40+^9G.߼ OJu)"Bq@H04PgхG_je1Wpmu7P۔-:NMg31+3gWZ4?_0@Ñ{jl>i6a[{mJS*'>XLg෍w-cӅ1Ƙ @Φ?Vm1c1cpPP^wmQqx"KqP9?(Bnąo-~YjI]۽;+'0/iz @[FVTcG{xjد.ʓW̙P(gP%BAP(Q@ p:x@$'$9B'K:];\Jgǁ |'-jӅ1Ƙfh~l '`Fc1c1fԁ{ QfIJ,&7 >W|?a`_ _ \HR.LOefݺ~ckw&O=[Z/Mlw040Pd5EofzZ&-A w p=P[P¤AV$cc>ҙ ~hbS1|gHx8Ag5 pPEc1줈 1c6Q` t$ (hui̿nR7oOJf5*:MBZ,,0N7=" lBt:+"KFM ԃ_hd}p`חbͯ&c/<q$-%ߤQU ?#ߍz~G]# %N xL[\~X~m19ǁ4ݹX3c2cblEC!Hf v!B-WVz'Wozzƛ_l_*mk$NB<'˳w ;ljkϞ=$T5t&l9r{'oǀ3oJ$y kt<_).1[n,gc1vc1y5 ؇8_!I@.D{vhO lݗVvFllv*3TkďC5\,ٕxvO;ݿ2Q` C81pڔa1* $#S\Rocc1/pFB.Td mQ|K^&.|EbC@ %wGn"Qv@o2i4BKK% ҙ*jXc<s; R:8uq.4 Jvtz1~y8~8tN<#+.?, M~#Ѯ 6g:0 LuG_;@2o C`֦ cy! i ;wrcMPrIܻ_ӸPע~m㾭 "& jA56E3. w^gbu7ۥP>vBePZ=rqa#Oѿ eL6>Ŷ~x/c.,"1x aŸH+j=GEUUZRPVfjQP]s8Р&۳ǖ#*h jjE3Zz pu;X縘Yq(81goWወTEDDăo|LuOˉUeұMo['z`PPxcFJi:vWuW|>Ɩ~#Wqu9.}|'"""EDDăj )ݳXqqwM6U".4!MtB!M y!EXvuݣ6,?s33i&@TO{c1;^X/ ,.ş8[_W|t-#"^^|㻇>yߟ-L^iiEDD뷆8[hf>^EQi Tz mzgS4*! .nn#?ؓR| 3_ur76Ǿ$I+yEDc8URkK3jS(4F'2oWlh1fg}֜]A+$VP9V/n a>'0"b,{wDqB+TDW.ED%;XwWtSlZMLd:31s,t!iS#P6W恄lW&0/RDddS4pHx<jODDDTU s- 0fLfƽju6Z#o7ni7N9?om؊Z3*~t{8vŻj$s;0z:1EM7મ #kdKCobQ$"""Ua#{#"^NǷu.mau3/ vrnc5խNPI:uoAP޼_թb~ln^}rv~P8-/Yٛ0 UF;!` l3:3)$i6pBD$e>p $ODDDل"V0<]NOGnKl,ED98Kp_AB LDqY{{ n쯻\miˣ7gNOg"Or4pК"""HDDDc70f-Wxv _5uIb$&OlzCaK4Mje&vdWo vJ +UTn5Q ( 68};

z)"bS t"""" DDD6vg#=?T {k%aPX <PLWdvOP9 ӬrLd8CNyۃ'/w!<7px8 iiֶO*MkCxxKkh 8:Rs@ {/[115ʌ㶫ꣶofeycϾ YVe) j5q\,`J&[pް&n(o}4;+QOD8|,P DDDD{lX2Xՙlw' in#F[77g!t*vȰƔ>j?mk^Z^^v|"~|Q6s@Op"""M0 )<928y^[w/&qu`̺P`IuNk`bzsBqc1b޹#h`kh~$׀gpx"|" ҉ џUDDDdSWg(7z7X3E|C&Q=*(IXw7-QQǿZ!dPP+0[ZYuHᮒ=iB.apQ 8FaQ:#Vlϭ.o 6Y`QcU p Y 0,iA`04>]7*Dk'o9B˽-B: ⿴<x[&q`te:ЧH 9灐t ?"""" DDDd9HA28̑R-V# O9GK찭+`^%M<+Fa[&:W.}eODDD$.NeqVaYB s;]+VoTͶE6rh k)9,$p\+D :kVXY KMQ|=,]šo,<H@'"  ß*0 (6vn16S9s"""Z}uADDaBM:|{~g`?li90*wޗ]=FǾZߋ±anz8;[J,QCL Wr04&_G}?߀z'B }~1IK! 4Io\SAֵ UeBDAB[vaOK8B9µ9+t6Qb YT}.Tp,нD0@D*iu8~B%` 猵< J7nUO55ph~]0N o'apZjwh54-2E:+[[܁lƄbaL4D`aehjJAPZUjy}hjRv]_ȱz3#2=GX3nJH$b2]$c (,+8fd463SV{j BIIi,[@eYbs:yXiƻ lg0l˜Lxk<Ϳtػ([Q*(HbZ&) $DC]i jaD ݔٴ(B "7 #XD ֢&!3i!o{ݻ:{=wH3JDDDx̢a91"f9biΤ^Wa BbE V Ed 2C@cş)}9Jw ^qMyJ$""" U@qq9F 80c5q#ҤZYB@? !~ ئHV%80\@D)\Xa3+g򥓜?W'""҅s 0cQ Hs0K(u7rOUZf;m`rc@ Q>8d<~&)*+hi@GMz{75_Dvzrֳ477Q[[!""3DDDDR39/ x &h9"0 /f\jmBWbr388ʫL+[(ʀux 4R Ed^.pNri(k!Z:ϷUTs*  [DVVV:DDDD`0D[ۭLuW.tttb?d9+mjMִX?lVFmS') $ǂ!ީS~7Cd`8~߶؀q9y?vkϗ8>S j2^%%%R sb6ba6}!])MqJ4~J" D[[ǔZﷲt @ :3ӀOAEo9 3g URijm hǎzˇ'BHB!¨ΝT::;{ΩcJG=Z0sYW'ذa=۶mFm\Quu35whm_iN8::JEEWcZIhK4f'=Ah (^3/HB,*gvJ '四Qo&==֮]c^pt?ae|hB!t !B,}r#GpF]hߪ#\D\|&6[ fŒ$Vk XtC'=LY^ɧ i!!IdeBL 9ƴF + (>ޘecD Gfv%>&:thO=g,pFؼw=8KYxj.9B B!fI@4/$eLdrn200shKx}v!0ޝTSӈdB1 }\u~V% X{8!I+ZL@"_ke`"Wק9{MgˉLWgu5idgFs)>t7]r. ֬yƬZG!_Mr#~;uk$'O.=%47Z)̏#)1ӧ>v*b'IA"z%ؚs37 spK7xsj][}{gb3< 3S\爎Nխ"u$pADb wy9H~TRC!S!_Z!B!c\`8ΖR{֜2Qƣ)kxh .O ̄(HFn,!Rb`ۯ?{gnc.,ܴ!u혧E|ʲϰXu* RYpGij?;yx~|ծ}, 0a^x)K0 `=q[(y{hg?fLR^^!6o6rmq\W[,jkk'%6״;̈́Qb6 JF.7oަAu9q1kFTXXL[-^}vS|| 7T'\A~*߳s87%s'::;H.~s d^bI(OSYX.@} {+!=~O^yT /WLŴ=()͆'*@۶A9)ƍ+|G!,ɒ?wL5Ӥq8;{@q{v7A%S bǂ'Ɍ+)vqjQL4h EJZz>:Fࠨ)(~ GRnQ3&Q!Mdd|!I[גiMvtcU3?X*-&6Qi9TRrQC  IU9bnrrNS``$>/*d;Vٹfnn~$(22K~EO?cDj1QEH,IH_&^ 1WyTVVNCCCw@d|Ylڲ dd ^@X#м HJeek2BlDD B6rE9ʏMU[[<-tOG Lr6no9ťp1LRjekTZh`;]{!ԤaO.J~At|H:ڊ 0!$LkYkmocBͭSQ 2άZ%&gH#B' s71@x M0+<2r " :w._l<䗗BR\|q-Gr_~#$;aUI ǥjhhFՐ~9jjITG?  7,:;f˅9:y17CZck,;_x-k ZC D7*{gEqK*:y,[a(=EZ-M/>h+<$tЋ!@ `褴n!v `첰|}<66 gfo7ޏ6V@ nm$\ gHO< x%cnp=ܶL݋ܡdDZ꟟MCޝ%Eَ;$[ t<|- ^ iTTpϼ\x\;@M| D ."sqp pqW٣[6=NeY  }f@s chfeW~%[UVik1'B#ByRɒEI(0h@;] \h.PCtQ3x\>K*V|  9 ~ w*g;Z^@yOu? B^@$ Z@|"ILߗ>7G7Y,F*m5_$|@GpEjimwMDoUMe G;os^#vMt"L^@I8̲q4+~4~_KKH»-%54~(&Bk >' Ad<\S"Y $= @pm9'7þ'$&jdJËH:HdֱyhȊ!MqGCPu:u ;F bC"&`VxH:,̌CCf#:l0׆/CyDnIW$WKK?TX M8|C&1=W|5&)е E?џ QB!BN@_4rke c~kVWזACC r- vCr k*@;އ"c!g&!=!b<BvsOA-\✸frRNpFsߍo_ r@pZ::8tҌB!B6QQv0u@vB+fl}-ȎB@?>\!n"Ǹs[M).b<*װH9lRN߯` L+fT*qUtVL:&*s| k۴j5/⧿eqZj+)UikJ"3:TmvXG;Xu֪NA@ " .T$@,-G)T(B HA+UDi,*K*0}=߽|77˽<3|/yu^ O;Q6 Ԋ hĂEN SLi2|yXR5Mk>e詧 z/:FA"y3,Bs`J=~rQDR QEQEQE5g|=A7RJ .]j X%8iOm/Yؠ8piʔѲe'3nS/fĈ\ӾVԹCMV8! Nc֪A^t@jl9SXhÆ;@}|l<7)SBp2)P=) :EoN@X8Q?&jp)bb u}6FM['Ok5rݱcOzA3guΛXlQEQEQEe*>I/=$p yĀ*n yĀN)+2M1V ƩSz]ϭaԙy=Dre7͝bP89rԔl;-ЕW5ǎϹy{o[=z)vSi/Qg!'b@,hpJov}"8b )cCgEŚ5I}s-.q,[V&px @;SD9mp({!(((0pxJsikDō9uT9Fl٦FzOmnko~r8}$ݺ?RwؕhF8aNqjUUc }&~% j[c`,dO-P*\ qj`a՝ql~xVQ"I mǪ[+?KiTaiď-cv8 $5=Wi0!u:qpEQEQEQT V!"Iy¥ R /r |C]/fРPնi͹[!3/.#j>I9=*~·VY@8"Vuj m>?º&|  6:~X۶[99@>t=[8$%HC[c @ `8f4 DDQEQEQHg_htYK0tz5x 6O?= ͈'G]*о}5=okJ(/` <Ċz<ٳ+Lڻ?uڠ'Rp`#B)4jkׇ#C 1@8׾NGl5alל9*p.l<< <VhX$uvqDP5OgO!a NO[H-ض_b g \6(BBAH,{ ((t@˗;w0^5׃t~j>$f-~NgEiE mt䏦 C6AĊJl( pŗj8x濔v/smF9n ľ> 5at?9*M_a>Ŝ@u6$eS aӴhPhB*5ֈ;v%2 QAZ/ u ~7U׬yMlUVp.RX F%xFi*z2j$ﱮ/(<@EQEQEQk VSᴠ?i1RĻDqH֭(8oCQ2Hk XS:rF3ZU% 8AںuR1`wH{)(xNX6nSw 2/a[N={ O*AdyuaB 輾fٽ >c_@EQEQEQM ΎB:"HaӏNeʜo'#]FM .8ia|uؤ†s) Ԅ@i~ 6΂Q;x,l<}#ޙ}w֎IvWq7ٯ}Q1 R@& %W2Bm̘<| !)XG'oK̟DQ߾|`IVj~FPPJA((( Bv#ѣƁHH)/^8pi.JnsA޼y#JMkᑰCE9۫ࡰ@g@O4pHg<>@BF!::4pFӣs"4")A_bNa$Z)oILiIs?Rj]#q#~ D+"}|T[[ ,T }TtSA(((jjt=v8XS 6{ld8aӣNGMztB NQ=BZؠ@|(π BO.Ppd!Jd|.gjgB'l<KOԦm7i]Q?RSʽ뚺k9Y/ .|W ]Y^Txy?aѹw5x~k}gyQ8TYY?pd?l( (?Rc<ê"Pp\TV@ *VDQ٤\@ CŌq,**\F# XZE)₩]UzF{99&7>99= 0] Eo> p,jڭ}Oˮ/ӮڌOy:ڵ+++9w@j\Ha_>TXyogO^/3d n֕\iN]dmW"V@)xI-HP۳zc3yԿΌ;Rmݽ_LڶmuzQ獩妃T[$~̒0ٜA%Vh_y #BD HC7*vUx9>qS@=ZP]2CII oG~NT3gwj-CT}>cO6rPAIFiͨ"P%@~kU{ctXm4xP7޽1!eVO_wt;Nz{sO}B ~B@#|yzˍCs d8[!"PBٳEq(t&Px }O9C w֍vxk*%KZ0CV+5U@|COZcdk*qceg#-\y<!"%,R,o\6THגl„;㾧!tmۼ{S6j֬m߾#j-$2:A\}&-,yüWhi"PԮ,C8w97n"D@sܹ+j~ZigP|Wjʎr+QT &>vol~u^{mYu[nw${](޸+߉l,A |~ΊR.9vo͛K] (+km۶]/@q4y@ʦT R)r@ȱnWτ wyyzk,ZWo\@=]txRCa㬬l9׬Z;t?쮕u>s %[vvKĽzFq+9r5+VP{nS} 8;@3gβ^ %_~H蒮tFw7؀CtƎjY=Ac[cÆb(VKBvesi{VJlӦCv|W?Ͻ{wG}ޒĉyu +93<#Έ"BD T~֍C#/hIoS|Gy2$ruWs/7*Nb Jk Sr'm=}amXʅw'S`D.-Ns•qqh4ûo_qquv] JӁs~' TLʷ^zՊֹSj悧+1?2'T/ey$-@sP= D$S%KF@mB]C $y@fT.i_k9FZdC*V{S@Xzm򴳇A j6r@c^=d@TRq㦸v|j;7-TP̕`"kS=@ ZP5׻&/zᥨk WSW HX{i&ϤrLjNiNTGun q\K&M3{m^޽kNF] =CpiS gQV6r@T ` hӦ;v)!CF/yオSS HΑK <ߵo*J fy;g͚L!}lRAeee1رwN=F)/8Q/kQk}BNQ֤z@r`'Ģu> pNZʖT.5e--)JYPzڽM{l?nGУOYυ--^6rg 9RZ7v}3lmٲll`y?Hyrb;V#O5l$hي"Aediff׬TJ 0Gvy r@GSҬF5d;9ۻm\2B"F.bd 2ڰfv}~ews^zs<9H o I s且& Գd\p. o I eJiرz`LWR͛Hf?i`J&#؝^{s0I2 cH_)FR_ u`dFZOS`j=K7Ny;0I2CP==H G4gtw~0I2nC4T0H:ӭ4[ $D;AgX!m> m:NPoz.%o1`LHL1e)=M{ZwtSv'=IKǕt3ulu:=Y3ٛާ}K_'4$_.wvo.}'3NG(u;{P3.yZe̾`NR;~Zsi uyBk!h4Z3k?M|`jx"7]N?  s"|H6gڕ|vF,~R9yWc\?!d7tlTKWӯu ?ch!hwz t=u8A7 ?KIZg:0ON5Gt#NSh!;u: wB4IENDB`icingadb-1.3.0/doc/images/icingadb-envs.png000066400000000000000000016261101477347223700205330ustar00rootroot00000000000000PNG  IHDRf[\OeiCCPiccxڕлkSI*-Z R;VHKr')R\ׂmп@WYEΊ.Z )B CԌZ,v?.ëkmc&6aVW ̯O0e9^E8u>nL(|ATL}KeRGwqeGE*Vs#\q)Ze9YEg1㒎PkS즺y =UXUU^{SK s[8=v$yF+oڣ} uëw9[ TZ{&! ?SM1Wc_g) pHYs  *IDATxf^B,83](knMv39t!**(+ɨEPP"$4^ j!$t#ƍsfx/Gu^8 3~> r6GhAeP ;)Z,ꊚ|9ѱ(/zn^k7EwEE-=Wgt-|pfdYQ6Y<0.((;0B3ꉲk5+flMoˇղ:} Xeo>@yk-=Tyԁv v`, ]EFWY/{ҳnN9.ZhQh^ad]69ΞDw;Ш(+R_v#z饷֗9> hQh~i]kzmTyg{e}.ʊH{=i'e?{>/jqD`ӢhV;Eki0^ߙѝ a(+ĹZO-sko7ח1^WtV?? avv9l7=3}Kt=gy) Q)_00[Fޝ|qshͫL}jo#7zeEqᒥ|%_"}hAjQ@; |T =}#m \`c8G@A\EP&8S\LhpDsɜCEP"*Psʲl1˖-w_~s*k+w0/z<ple'xk]ub'G݆7IƪV>!WoY۲^5eifN&{8Oj<1_+e ڸ*뽬^vTFNFY A ۣ۔5r0[ZwoWDZRqUwq\ҧl3d3*ʊ]5nwG\Fذ;Sz%4J2v^_3mJ &ф;y>s&n QhPmե=uZu\' nʆޖcY9k[σYc+.apNk:ޒ0uWAɄ q~WVlHWqX1llEW<j3_Sk_k0cVҧVˈeCnd4UH]=i֞Y *|giuɜXo4:[.w[~kƘxHy{᪖ٍAuO xQɚPZfuMO-oژJl_hx5*VGJxؚgtSV#ϮaːVKmY!7f͒o̖cv~fٓ@Y_?H}k_j"jmݩyҮnt~L:oxEzԅ(})KVg(XaVgl]f~ofh0[172n9r]-N!pߓ+9⦭FXg5{lxMYY]wYmf{6r8l-`dXma}Qf5;x&/fW`~?3I07f0¸8kefCxa= ׿AJNIoA Z|\#l:\,= OyQ6lXzVO'Yeucu!QnG9jVޅ @Yz2y`CLeC[uPl7hwC֍o]} ǿ)k5n/飶3Wyz=hԼn/tn*c)ͻ1[X^B:,'nȚ5wcvxR!: $,g5:xEaBjg+ (]"X{O[HXl e͂ejfȭ8a;/j|M5c}u9uf{dC]„z _e1:7̚ kg5 ̞0HiQK_Lςfn̺+ Q]ɰ+[oi5ga#0ldf6:,jQXcz{65ƺ|'Fݔ B LqG 7f/0Y Je؈fcyfc5 ]/1'\l\tǛ-h:5aV?ZpsdI mojuì nFlyb>0aVuajYRirj5 ;;B_](UW'dz[֝c3lY; v-lv<aMìSٚWoyNCs+Q͖A97Av/ ~uV٦eof06 o ]_.s^c\+l 7Мq6۲]陼nq7s C_acqIQ]Cmfu~M.Ze;m|9z7uaCsg~ޘM 1[.vvq-?)o#.4,&}jЬwb<a¬.t{iVuclbf,-^Tݔd8śFڴd7Clh(Y1Qf] f0N[aob z8kvŲZfO=E"o!A֮x(.}V0kO 4ƺa֏2$:s^C fUl3'9fS5[Tⶬ."YBJWeeٿ)YfxXMclˣYg[f͹Izlf+eaV[Z#(msMYAdO̹¬3-@=0O_[lfuSnj٫iV}cvEzڕ$iAWm ؏k4ig+<a6b#l[ )gfzΏoJu*7sq\/Cǔ(g5ʆYeuG&lb:UvJͬkS٥ c?o-8eWwJRioFzA][v 016ivLOJfY2^Y=u+0EY ~hOSv56fi젌 A f۲+{QP'_fo\a.ߖM^f5zh*!iʠ+Zf0f3L=l3 4Yل&eѣ%FيH)lW0Xo&Ml:sG :?0΄*Q<a1ƺ/6 vU^ZI^@}]C>6.Vyl<۲(k:.]rOJ2$;Q/QKы|mWǼ0ݖh: i7%yGldb=¬e9 p:qY%Gemg--+:enk<9DDYƬo6*c=i "]TAVv[YlMYu; mo˦~Kݞ1t3? |o愾؋fLuc6d5t7d仲0Y/ʮr3Xu*>3+eP}(1֍޻4}}:>lSmƧmߕìg0ݐmmYVy!֝e_anu fgwfoX?Ft`5; 2 G%;cwhH=@DFppt\grƢJkFgktrlNY:[g%섑=,a@Ad_|I0!a [o֓sGR ^W]u񋪓?Wrַe5KfiE)Uwe;__YX'f4k$f%d1kAw_twCʇp~XqME9OIY'fTe}YI۲S[mMا#Mf^ꭼ}z>[ +^c)=:?pYIY5dmqbDʺIZլ^_,!6e4Eb6J.b}gŬжǬ1KYbq.- ',j N8W'we%ĬlL*fW_P)U[BVDjJjVKٲ۲5ҕ Ƴ1NR!sll;Cy$f'e[BVqB1۲kVܖm Wk}24lCT[vob2;"̦m?|UQSVV5Ւ 0JZ>QNboz1Hk5mي5>MYטUiJjf1Jc/ccwmIK*Ek}Se b0?‡pp6fUR!⥬Dl 0+ڲU+][%)vf%Hw&!룛EIl|6e㔜bVz#w+C{6]a)!))gV yU.p4fl⦬RXu-[ޖc lLM٬@j֓-))$Tm'b5e]M乐3MZ2 iHVe X- 1mY $j˪!fI$YL-\c0V8>Mq;rd)룦첐TbMZw-0ߊͩ=ǯ1L%mځe%d5_V-YIيƬ,oVJYӆoj*Cf ܟ=VK۲MZtAX"V+ӸŮ1W+QojJȺԿ/dN%lڔMĬ91[ݖwe#YY͡?l_.ܛMƼzK6\ƾ*fI\Jx >&?\ WȦMYߕ]k)WԘy!7d5R)W5e-+g"d "tdlxoz9f菮M䮬Ĭd␽o$ό=~0>*߫D̞]-Ldy?eS1+!lmY/e5Rkͼ-i۲jJ.:MٙBg46KjD$Ȃ͓B>?bvr-NXIYט|nzeͳnKWmW[+7e Җ4f١>Ŭ%닻4C4 KU|Zfwb0^VKƦ%dyØzNxoz1V,ۈАew ׹~IY/g;L 21KƖ2$d][ʼnYIYbv?l͂ti8AkϝՔum}l|X̘lg1:Œ<7=DbV7fθymܷ&uHYER(^۲;a4e5uc6i*JV0w>wkͰm?| V8ʂBmq*f'elkJF&D1;pSVwe'MAnM[)5'dKliKTҪ![Ƹ)8 %d՜UUt"!H?l.Ld쒐E1J*i%dݜq>:@ lz1۬yNؘX:9ܟ}` K7ݖ,Jڲ-SweDjJ1MY)U+%cS1;fGtޘwe%cӨ-Nη*אk}ߔ*0՘ R6w]_>0o /i6jNqbVi*5fvlXmYw[In,{Aߖoj>MY/fo\%g%f5{bQ:9;wO猚89RbZ-뤬,&J-OxNٙٚ/Z/q}6PJYזUK6O"ebI$JO曲i$bޥRV/fՌE+9lyl;m)l*fӦ!sMiAоuŬDoynn3YeHِ\l9qjnc߹nh1[8Y[(dU-/[-e} lklESVl,FbV }5}slul51f!leJͧ⤬۲^jqL|Kj4c5c>tijv3>io6ŷfH{.a5C$fՌ9۲MY٤%d-SKĬ |;I닕zRvnUab֋YeNl]٘PA1o*5MʼnYŭ2we]$e 筵BcvTGm{ǫY봾1Nů/NDl])B6}+eJ)[_rxecVbXjQ'-US6N-vXbHa&>TSm1el>%cM1V0[B֋Yd;g]_WB7f&qB")۩ꦬ[)z)[-gYwkMhOXXX-Y'f8o }|Mℬb髃-jcDJԪO wە죋c[Vm٪Ƭk˺x!l]|[KSrV]aҭUeekNjfmY4 ,fHC6:_ahq1^ KY^ >f|FS4S1\,f%cةlKlqcVB6-^fԻcՖ6XՔSxfYtqM٢Ƭ4^U I$=}pm/UcVQK%{(hwyzx,fvwc-+1Ƭojvdv笩lz9{r櫌);};ۯ6>o[Ŏ%we{5}c6 Y'f5_a,![X-rؘ껲JicV$e5Kj*>5k*;= %c5D欘);3MogGYxCٶYݕuB1l2L1SlOϿlqgjz4Y YeXr[km;ջK?iôl cߔtb5ecJ[až-#!e8M*c=Ygg?nM_F7OBB*Q*^ΰ f9k2QlڲAKYr!酬"1;#1'wٺ/wl81+Sw ޘݞ-_ޮe=/\1N̺thJf!MY%g%e}۲>URVB֥Hj>^,E}6Ak$e%d8]]fy)٩!|phY[Vm c[6ZV0Lietzov9181Ƭq6wd7٪uOfcfIʺK.dהk}[lm٪.j*k{J |&,I,٢5QĆK$ӷ;[Aо1l̪]Vng %la$f5ύ煷k-Sjv [О]N;qj1ڲmbV 8!;ާ/7dȥlqc'm٘򻲚uIY2)[leeߘ]. k훭>Ic ڮ1|%1+!>-+}nЍ-$g{![NH bv|gui{rKUi*1+! J9糗>i{?}uƬVoz)x)ߔwebeb}qq$fq-Y13xc?cڳjݖUc6DB6OWar6G[^)lژMvkl=m f2.,'7Aμ7XoWdX毮j1[&fc*k.i)IA[)饬⛲"D,3.Jo˺)!+)D!+9ۙ慣vLy;;bms͜U$c YM@ΞS+\e3B*^]ӷ۾zDJƪ5뛲$f>+q]ݿ˾w;zV)넬D1[-d%e5qRoΕՔrB̪)g"cbVrQ&i;쨿XPՔu.9u{3Îӱ1f>z88t7JYMeMwemYטtp FeJ5ʭvNjؙٗl{)+![ؘ:Xs~;;uzk̼nz1ŅMT7ecWV-%bRڒe+Nͳ4O?;7%e5IIb 9bW!KBV)l̞4eKڲMEe[uWOŬZ΢}t-6bZ{DfbD*y>t~7ek!mJ*RԒgH/] e}Y5d!we zRv%m٘91 5} kJWzWVoߖ SRV(d$V޼uɠ7nRB$c+&t1j*ZY 㒶lɍُ,zVdu/]7g]1Ur6aA~9f?m6~^7etBVSߔDll}9Wkmdݖʲ6gؑYKY.VcVBI838wnQ詃~\f| n .Jy[vĬ-[uWVB6Yc\"fl.gc$fcC1+6/?gKi'-XSٖ:Y'dS1φ0Yo>c߸aUKz9ollM%8]-d}Y'e]K:^.NlI[֋<ER6DB6fTk 0ׄm˨7wm2U?ԏAAPu?uTm5)(iXuABtվIZZx/7/E:x7yɒ]ν^݈ODhFY'G,W6|l]cdϊ0;ݲ:0-6/~WљGԚ) 1aV{q|s ~\fӞ0kֹNˆf}rߘ?Ȫ9fuʲ:ʲ01k1%ߥMbՔ11NڢrB"X1a.ĬVY%Y8X'eْ 0?{}q\,l-GҋIz2 S'e]obE|?ӎ|UFYd /+ì/fQ6+,AV)nٲSXapRϭ(-NR`Z6ʉYe7ì,&ZY{Vv7یL%6*0ka[MuaG Ŵl`Re_ho:Fk.Qά nZ_D*ݎNye3`lCJy,?tZ{L<-g8Ά'e='ecY6{{dClz.iF+wemYVFYvcƅxsB4/C)d3Q"zivu>39i;yƢ}wvU{ϝor7d ʨ8 T۪՟sbS8mUc*DQS&B7>9JO{{/珏Z%ǶF`Qf*:xdpqn`>\a?wHwUB8m\/]َf'_/B ^&)4hB9V"G|"m}^)ߏ_+hމ3cn_+>WB!B1K!B!ȷ/w$TE! T0/Vr0-4^QQq,\E\ QA#["SM&pMcx)q5"QI ;w)*ŷ6sI%|y}8jl, }f^$VGbO5Ϭ{A591]Ї/WN`c>r6NOp뼜|U!B!B!Bo :_Pzi|@bO*F*dW:R'&p᷷ޝ3U R0m$p|UGF`UWnxb%}"R/?:Zp ~i>?Et1AQ[nHԴ XInGMDgMx)8P>F륱sآ{1B!B%B!MnIК M3,rk"C |Cg%ن߼i9Mޏ -m r3D*MTs V6[Bhh΃%Η J͹8,)ZKU(';eﴅN79$0;^Ty4jzbƿzlҢ;O\T+o.;5Dl⭣PHPf"jżĽg !B!B!LDk>}<Ә0'F٨R+Ќ03B̷5B a {^5't maVGo !옘ߝ߇kۋւoc v SZ\fy%`Fj_l@sAps{pV$'O. ;?*rXboX/5RLx(?{)/[ m.+ɫ0e|@Nj>B!B(f !B!|Q'_m!47DĪ%btFNX Mxq8 4RO5G|*KMH8m.=~ S῾s+ߝ@%n!B!B!g w\<<7y̓9d;O0VlX{S#OScYz ü,*M*4-l/xwɽf  pP|fQ"r/|/;2/hhDCu^+Wu2>/?:Ÿ׉??~?DZR\Éľv<ݓxv%j0_[z51)+SE+4 0$S/:#YG BP_n ?=g !B%B!u#GV4c2j꺰O`jAP:;xL7v I,?CL?'ɿ?w6B%%XyR##o=#C%jݝWKU%9{{Z\3+%?5wMwÃ3x.9@+;(fEVjZf_lė׍`AK>-m{_v cET ]jP_2Y!hwp|/d%s+{셨vJ7JYM'B!B(f !B!GYDNԌj +8H=$DEb؞Ǟ-q q<1E%_}vArmx [JAA&2+Wej(5c">fR"+F 6'K-’u)I/srUq ^ _}JKR+'U%{Oa\ŕ; P;/|k [$j$0?$qQl(^bWwa/D1Wlmf͟'B!B(f !B!GP-.{qaSF&FSsZ("QM3kB* gK̃8иDV{nmX_rwhYWzj EB ɖ(Y/t+*U#}*?7l?~ri R)HNbh6??ae8={V4D5.pOJ~L`͵+ӵяCE {OrMc8^BS};e׷'B!YB!BхF$ڈTib9hh}+:㈑q1وX_3F4b5&mY v# v#㪝GٹEaT$kRT5ϲhʂe) ͐'E+OEGZofto^0cviZ+mCg_;w8 ėgZ `[pI dxE*B>;} %.d-&oI|c(̻C4*Ӥ@bD`HkkEyI>1;A +/{<B!B1K!B9Pxk$XikYeP+SBcڤ<&{Y(N(VB{$v?W`裢)dYYt,0T?(5yW}<%a %VF9rj7n18o#fC`Ig]% [xwSK`ބXam-7WUgG$>X˭%3E!B,!B!!uZT_bJŜ{}Dq)Ϟn')i/yOCO~QR=`E(͓mDhFk+|#b l, #58o%nՓ%VP˱fK;U%/a-`LΖƧCbjfi ~*y?]xOv7[O/Z9m Tku!F8ǖ(QC(߸l)Xo_QEy>[fLV2? x6|X[SZR܀O{DZ{wԅK(^섧ŰZƵ>CqZO +TH"^L4U1j7]!B%B!=T tR͹"^?i ejzOVa)jBD%&K6.ryrg׼̔L'.ilU4O0rZyz[5K&!AKpG~k.U߹b޴NWxa$($G sgx` >~~xU;qZ3 +/H7"d`rGYnNt5; MMOzOx}IDJb1$}`~2R>V"^SfS}yr(CFs;hYK) NZpφfqβV|Kq֠j%Tf,U<c/~>^|1D*TkWR FVԫbV,ܵw zh =x MNS}3 3_±]MreIJ'GWibAD,z8˟د6Hӗ6\ t !B%B!]Tc#>%%jܛiѮ>OXLE%d&ܗg2;|,7Xj}ج~G FZc_GjZ/W#g]cIPLZEYgY C&@ARsP8<14z_lhv[ .B"oW",߶u o}*U8gI J_Ehm>7"{2dFf6s~y_}|w7ョ-ڞR5WRr{i$K[¥mj*D:NS5;0IKROG(?koE'xٟs $̿t~9"B!bB!rrVy%D"hSѬVz&DiLض5cdfDcRuDOA\PF[~d@f^tR=jNؿ"B!bB!rtQA$#ec:66✯cƎ _V͸׉H[M<+{e`su26NzYaיRV勘V L#A_OKF|yaYʦk Sw߮ZKbp~| F(9/^n ^Q@k454&E,hsOn:©}-bu[OF>KafkI_㱡Y|a0g*bUXفu w|rse:._ц5MFFp?II !l{#\DkEj5|}KGu0{Ɗt?PZğ'B!B(f !B!G!FDdƐHT+>䯽GSf2_+OyXl jDFdh%+3~a]7ѵaϓrɊF9 U|h}jMppe檊 cYM ⃿އ Zq8eQ7ĊE$,u^պ6VO7O`hh}mQ99;+_3 }JP?zj=,9ZPɟ>6pi38gu7ᒃy[0v5 &Gn^% U4b&-+(ZŗwE~|C攞O!B!B!rDf&GD\JTj%FNGΎdAmsl8ȯRA^5w],kY-\gm =)U &3niE5e5"E*X\#מ'0Yp`JAk3o4InXVDk`qW!Ԯ]m6+y*6  =<BcJY=PYF 09Ƨ&Mxvo ~b7j;&BBԾ+_;eb.jsZŧyWb UR)RO,bYB7sľ9/eME =8v_Yv?sD!B,!B!(k6%#Ml*T}M/uloZI/ՌRvX{~wǣ,wȹ~YbhXG};8zi q r}yM{E/6 O+|j64LrdHF۞wǮ >^NZ؄f$.!ZP+3ڞf|~?OB!PB!B>jl?hƵQj QY3ܷ1C 4 b:Q}+.=T\^YUZkUx9+@ а]Z*,j6OLw\_}4)f*F3TPJpxhӕ*~8>yÛNBA+g=Ag+ @FONS Xل$OH.{:\f?bt< /\֚G&GZbw NT bY[1K|yRg=~J"R65*lOQ_|*h`)[ GD!B,!B!ZKb|yVhG*#J-XiϷz)VHVsB8kݺG_t4_JS/G#Zyc"\͒fȉ?[bqCB؆yjėEUxe?܎֢o\{4K}}( ̀*| ʟ&B!B(f !B!G'eŤ"-}[=hyUVcjmBkt6Op|RPT "UEwj)Y~/|y&Z b ՈVU^ďkf_RZ3"ǥv9^~57ߴ8jUd9]Cxh4>yA?>vN/JmJӃbTTY\w~Em(\Fn嗫 `ix;R[&pIW"< \1BsL 0&7G|k dK()؛KmEeu/޲6]/Y!B%B!QHɨдe}fa%oBK5csu؄`Vt-EҸUyz\HxzcfM'u⥱6!YL E[zh 3G;/ /_c4yėboHf*]ă06W7/[kv-#f`,nN.Oa_Z7g=%ާ)(59"4*&*1<6T+6t6)Ҹ1v|m0b;as#v_[FY6oEq{bϟ&B!B(f !B!G'DDfr_O\jp$~DU#,hZ}~5ZwЯ֓ˆ.ALtK{ˆ 2uAA?8t1|b,,$߈ѝ#U8Qh4)Cc5kE-f潘Kc_ixӯ?#e,j-`mO3ME`Ų%pOtL} [&m8q+ڊ407}O TYD/'hdՄd"o E|4FJ\j\KD!B,!B!¬U/VXtSO$$nzb.ݗBb\\[ڭTD5+Ara$kl_V2W4Of,Te5ˬYWz}MEx ` J@˻7U$͏ ݆5H@Zn.㺻ad:}!nx2W:@,W;F*ybή^gxr^i_F{>iл(ON{UTs"æ2 ZӁ{[ jv3zⱶA9,-KZs)fBo ߃ %l;jx4rY`#~E#\7 i C ^$K[+D!B,!B!5 ma=Ι~m=M\;2ٱTͮcPͼQ}jhDHZ/k՚xULc}%Gy^D؈Ä-%Dɓ7t*~YIEHH+^}$z|>`E oR12]  bh⿞DW×.\hGA|&oF :)vWʸgb/mNb[>}lS7SKpfO CԀ溞4@e珝&WLD.ؘ ,_/dM!|kƕkB!B1K!By0_b%iNBzldkB:ӧ=zl{nL:ɴ.65vG̏ᵏb^j8ZO?3&@M$3cwk'Y'a녬"C`юʂ HG{bQ:*Zi8h||W JQr2Zk84p^dKa|!\4Њߏ{K:5O9804AL, vUlv""#mW)֏]h..[ڊc;rOZ`u pEe"g'HY9.Dtk"׷1KjPBM~1&B!bweWu]SuʡPH c(cc챍=N03`"|E9 ZsWWWwWUWwj>7fֺ=wpoqq)chLU#@TS'g6mW^{Ty÷eyA7(Ú L#Vbv:xbz$z󙎹|U+w$Y\.-30k*ϕo;|5/*C>QV:vle_r/]_l>La6i6E;ICK(:efSx  e.%w@XmNҌʯ4KFɿ?r+tu_[96Uya}Lql;#衄 ש\8J[\kI>:%WI2tmӯE)W_x88㸘uqq秐{bK w^YMlD-=Ī7n;x2/*ĘfaԈP&525I$4kO}%S;1ͶoɋYRv-IVvC sOX}q$8iA44c)EE{ݳF pPo6296&If{\|/\MOU7HblffDI8z0ی|o,_:Q5~0T_%䙴1k# 25Hy4oO- PXIW]uZ A(Qnwu#gvؽHpy"eO} >Q'ƛ,/4=-Pٲ|ū8GlzB{REU@UXoǦn<GQ~Bbi iZ,~A 3;7ie'nGc?,A[Ƀ #-Q,o.;<U,`p9888.fqqie꯰+@0KMyz,z10)H`eoew\/ K&5j2APRL1T&^Ht=iJX6SHck-ַWY9WIS:j \m4nkoLJZ$9QDADrE>O,x=T(#~+wc(wC)kQɼ|oeB|bvĞ U+F]nӸ:|H,fK}+e5)E}bqqq1888;,AlQ φR]#pŔi~Kdjg&$=J{IV1Lj<6=/DE P2ikEƪakYޖd60i< Yz̅=eTd¦?us4 -7G Vhas-|}fShͽuf-`T (:#pz858{Nd^) *ot~^F׀fTnkǦ] .*B6~(Κ'dS,(C Fϙ#UPKxZBi#+XG8{tW(cdl4V X(js3gqqŬ888?uS\>CW\kR%Y6vx'$>7QA>eB&Mdq4vsAՊ~\l"$\\W8F#zd:{g!j֜5aRQ!okKw#{xQ]{"z_{t3H)+ɶr7#t=zAxz'LaI) hr9mjʠ_Df bsզ%Vl% G5Xe+W1 7MZ7Ѻq ^"G5VlnygTmܷU"d-P888Yqqq~fm1Wet9]8 Vu1XHV%TM7SJ=mjw&9W=4Mdک–!*ZkBv-kIu 6ھǬ88㸘uqqacFlX[ X+X1L|s_J[DVT\ZvĈDm&۔:#gMn" Ed/R~>BP)dªι|u1مҊ~9 *: ,XX)!թ|.6n57x~jF+h\ed]|nޠYӯXˡ=b;gO}!諶T`Vf޼Q-\?<%0y>^zʆ- =-!qn3jQ' "5WTѭS~ }rU /^MxdE'`# ""óigߡuqq88T3)\>S&L\;¾KE)RDZіfRPƊ C8LF[ m~,*K'$t"C_<ܞߥ@KmEU$FS;w;}o:eZ,(J9b$h?|8?t?wNe˦}*N,WwࡃƖ!rT?@bno؂|R1R*,o}& uD=+"- *$BkQ}wX2aeCKӆ@ Z;ލ7Țn+F C=THu<"? h2맹XlQwn.NXA s:D~qkbT.Zܴ6jU2cBt6C`孉e&,*կ] +IK. 4#Dմ ɜ Y79wP$2#`H3BWH6IT "dZf%T,.xul X&ͳfETe9D ,w5xwv{giE͖mtfT ~^#5+YJtaƜP\|i>$w; Xi;xRI E5;fytjekٰAA%D:[t"3:8{%uȪ.unCRrb=P9up(۴cE,U|femqqŬ888Fƒ5qY{wo?+-Ss눚G˗MѳZMjb6Gg5'K'LMłUVdi _:g#/X\IF+2ǐd쁞y_tϬR͒MY:"e]'F^ly޿nW/M| GG Bm=-+P9|z ep޺"m3M\kWush]OWtw+)"YR#K|k, xo!0ubJ^.Pp(EZZ>lcdt& 6#Gh(/!fYe!!C^rt,,"c: Y-q4[?T5yww޴_8nJz_[E}?yp;G^kb* c{boe_; 1ШS%xӦHeNc*Xh5S4-* 4)lt.BS~!Ļ'h^>*^O8y"Hcxzp`c^1lJa}-Mb#*Jg:88Yqqqj#S&f#tUp?vCh,t_5?R$@g$흪hJ4=LU2tEH6Aڶa=1黕GsdYErhdHGBHndo'^<%4[AhK:Z∕E}7kqڞ,jCH9[֢{Mc__2`='ώA4%a kɇl3 'o>Tq"e1*KD*!WKvQ&ڜrv*`kWy,1T9iCV}Nѭ Kт ȱW"1ؾZʙba꒮m<&{(;=hl:śF׭N*?1[Vd*g.F>A]w7*ZFZls?=-"kjNlQHaLuMG[Jً3UΘu_%VPKx+w{Xdeg\ Uy,Mރ`ș#[M)'WDM}eqqŬ888s2[#Fs$PSeغrz1=H5 Ib)OV+\ IJfN, F%/V1%jLo<^:>GtYGxNLZ@yEGЦSB"Cd`rEQQRo8OsWm#qj+PJضg2N-F sn})ŶRiybr?s?5xh?}}5r6Ka\Tv6i*?pqy*16McQPo妱k+l꫖?0߱" 7o3M~ySW" )KX^k9`_"1{N [BƎ88bqqq36+ƶB2s$wRVhK! ͒ }-SF \-EMB rʂN[qb-DH.Eqλir;7-TCȻQABrH1 ޳e`-':d$K);G.'fxlɇc诚ʅޖ9pPع[L,F[ԃp 6T}7HwTDؿX5> Y&1d߾m33F5ݨPDws({6w"TaWº(H{P:@n/ZQH^߃=s99s~c(Zރ7}2o88㸘uqqɘ&IcT/_qL}DAĊքdRĒrXrō3TEUDB&N5$+cy!@Ԭ#$!m) /L;'c.Am:SC^w=g lF^qt*rFWeQmhϛސS$),Rۦv+[-x=Vf%erTAܰk_n?[aewHق-##ҧf;_>z*^P03F }xkDa)B%--~T?=@w=pqNIci Ms\}3ň緄 %d W]}lѧgRy*%a=->5Cjϡsq[9cʋWCu#] {> P2aϘuqq888(0 @y/ِz+>|}Ҋǡ -ܰ)kˢ2Yjn1XtSWlt8:ĊaIuyFAjϞHn$]0@C|0Hy(rLF6RVw@EQ~ec,Y1Pi}s|$z(y(k`QEQ$وɤlWGx廉izBZ"Y۪oCSr޺eОD`ZHX\G4T* h}/}{7!DQ`7YVl$u=T^p0E-E/&\8fb(m"z$9$x! @YΊ؋ `9ϿlϘuqq8883kV('pϓWR뢔X޳5f$M2Ⱥ܌&kfڬ7se2VS2 ٴ(,[tAW =Xh!hv$UnGƉ_6wh%sS|~!Ѫ ZM&z8Ĺ&E#{ 4EZ{ł澢(93888.fqqqY9J3?|{廷_/&J  H=jV%@Zf 9%Z)3),BY ^clnj82QoqyrF&C(·w{&n"^K (bfdKsЎ#OzQ`r173Wֹy4i%Qhz`O{&SsWy,ebR;3hӆyæ>*BB%@x :;zk ?S_d{,{zіbEӡ%AiUAwCT9 +VqՇ'-S I޽ n4M C5@1ћ&&]i(w;88YqqqCY?_ᅵwdboDuI\F#}_V$84/;hD$w5U$jňll-SL@ƒ,V~v޷/$%B} >,뷡0L/ 2<5]Β\b"*E)dL#Q~"l7p>~axꮂTR (c{ |SXQ),E:E2R zÜc}sg0qse_yw~ A@TPAY#3r >:E]9,2TX 笂 %4>2uxs`!FY UH5Fi{P %g)ivIu4LQ>vVuGxu{>uZްj oMELڌͷÓ|.\ombS_ sl$N:e pSK%J^H{(TIȶ[ Ҟb. WHFΛ}i[gUFKFY[" 7o~Wl^Wud1<=xTsf&`4[Cʺ -Zf APŖ2ۊ@wUTp sY[ vr*E8$jP>H~ =c9Ac E%s;DoP m@S2IR -888.fqqq'+ cKiKvCYqڇA@_ I{")v֞ʊwj`"#&}F [Dȅw7W0m6Z`4-F Ry} tqET mMzEQr#xMT%h[qvq׾#x>;ʘX7'gSЙ#be#(jXKpy>~AZk嬕]Ԃ(;SS B-K0@* *bK5+vQW6+ ߈#_OLӺb4(+`-{vīӆ Ak*X/{}^)˳hqqq\:88t_;ϿߋвH22i$H~vYP#2fLhhYs:dGTbEZшrm@}T5a{ВƓcv60F,&s8r$Ud(dtlلI,[A$ՓV$#= M#XIlR-5ٚ2 y C.l˶o= >(~J*8*&@ mg|)>p>UA@P=;`Rgl:w;ho2^`r*s{(LScr1rh ֩\Hnm6k!^9fO@ěƈl`>+"@r&l}?z8L/a)%`m-WFP u-888.fqqq_?#d?@[#`̈́a.0 iv_yS [|r6>vD$l/1"I$m+rIYYHmɤ,][AEA]9h@? I`28o?fZ Y?ґ5hknVP+zSް%$ o5Zʧ?o'=7_A-r=og6ѳWrP,a*ڶOxhǧ̑}f٭i}JsQD; v*KQ"W잧x6U Z4F;X 奧W^YMt鿍0G[yM)P bmLLh&ER9f)*iEi3+KIK\%IR9i:6>!$lVHB57ITQ=<ùkXVIKۖc z*UrvYuwu߾~m㫯Yǹ=&Sֈz35Bމq=Nz Hgקb2ʡgÓT_?a/\M%ۯy)5Cf/<= V .m"Ǝ88bqqqM}?QǒZJ$eEKÖBTU>f޽(sVe/I2@!@LOIBٲE@3 IvX4 I+|u"8IrLfBYm>i.myN,.>jdjEPrzyVN#TFNZA 4e,2,}_W MsFf@"fWl@ۧVT.1uFTrT?oO=6Ȱ&ur)|N9zEĎ&# vFkyj+[%aĵɃyEPy:)CPr4\]7"Y B-E6p6e].=[qqq\:88@ׇ4/=$C.qZJ-f _y v҉ IK&컚? "+*&k䍝䬑]J~ON8l@A+̱i>Ʈih'i~-X+MRZd$U!,ZH_F}F*LYEM EDwm?%>Q~akcVkimFsGxv<6+j9+9gu7McqVe\/=69/lgPJcuzO͵fo - HAac'т q+\W.M|̛pZdSyƶ]Ny}Yqqq1888OƁV]>j.O8foG+^ cUv*7UP9ZF]3G.,Ⱥkx͞1Z&F= _by0•[Ф_U RƎ88bqqq6>Wz7'P]eafhyEmKLǤĘ2/MXl ٛl\٤F&=d2BKV$e+R)K 1CkTdU?1@ {gЇfI"IV_ڂVɈ,v!93r>PQ#WjwK;m$]0Xe]NXA;7S?{@ȳy% 0$SM>x8~|L?`cPpꃚJ 51} ay+b~ҙr_~|cei1-y6Ke[0C(͓utLY]B1YV#B,6@w<),r<;FE1O*Bl}mP5_̯LrUS;&,=<睛OGEP Bx^>5/حT/LTls?"1+R}=ٌ|9I] s37 y|OFd(4{+,W:Ke+5Թ&2m,ijtf=?w$(bs'D)Rp,g} *,_Uɰ#_zlxpF|#2\G:Z+1Z!;km3DA~bb_lC~cIc7crtM=*Ͻms-ree8$[H +:wW%=$K'6Z`YTv k|)9fcoϊZ8$a!~ Ǟna|yrm l+H\ҷ}GspX{`!*@`1B,Za{\jǶ9nAzV$l,[nߠmE;a(?Q8888\6~e"Mg5U/k)/kbcu×'dbՊμ2*HqL>K6|̒YsA,Ψ'#o,;U@=,X=ÿ`55;J Sb}@ub=`EjK.޶WEz* })<-Ƀts3Ӈ"luG^Cp9~4[Fb4+ʏ-%~!~nSU)'e)'o,nUo/1!T@Ka͎@Ap %‹VNj{x^tXF"bt4p%><^`!/^>=Uq勭vTHzL_%qqq1888(Aԯ7z @ErOKH,5END޼9oK@۲fП,eOlO\פ>g{ Id2RzXd'L&2-#}!@=0>=nD])F;e9Wzl_)Py)6UerV0 Bް e!X;y_Lad_3էY||/YE6RZOd*pq7isVۧ 1]iNعxxُwjOū&g;LSbܴiCu^ݕ#;:trWGB%}ma-E~(إ'퇙&X 筂C1DVFɺO}e| ;88Yqqq/&#/b]8 ͘ɼ~\ /D4r8򎝄{ PIڅ`s5sZdK ,6VY28 ',[gۑ\G!! !o'y[H&~!6]KV/}@%Ķ6%db:;L հܳyǦ]dl5waNs8t-KͲGICMOLj x~~yb0)K<>͗9YkqD_MÁؒf\o&5Tyjg2epQXݍӡckMBS.Y| 5Țͫ_@owxfE h-+J&~y8{o$yvޗUU}LLw}_I )R$EI$E+Kג66ve.%m^K$kԊZ  3`{z>|+vmF~~gCtTVf~gfsqŬ888oP:(@dk&RR!@9OA+]g"L;p>Ҝʇ{j0u2%!&@Nvm>!d|@c+z E13j,p6( PHUZD&ՑVik"we[2r6FI٥iŢ =~wMA)[VPKQ3K,$o_DsCѳ' JBD!վ̬ 3|19z$D֒Fm86w_\oi{G  AXB\?;D^j Fd)٧Rq dYKdL0Tk;i=:OE Րowpԇ/%0CwǴW{)ϡD(#fqqŬ888o8!N" +H%rQ +\ȮR&7+?`5vV(j"ڴ$䅕A,6z XJMzr ^ƭDLmشX-+[W X ձXelkh(jҶfHW~v/ H$[?{'a z;4 etu-c :kMGjZGzcSy~:~ dksb|k: ׍- ԄxT̴IISlie|h k`'/qH\PXgЙ%("or(I94Ń`CL09ܷq>zzh}LHM`H$u/888.fqqyyM5X$x : k2ށz8ʔDTs(mo̽z^tԈQG<0\(Js,6QЇEE #JFѹxU#L 7nϜ"`55v%/FK] mFQ}ԵQQdj]Q,EgVRB, x3ӑl]O3{4 FfkU=HH3qF?l[+!JjoeCoċ~q~:F0#/,/̲׍ 4-N`Nwo^XosDF07ƩZOoC O_hDA#o3s5סx4 S={#!-siX5gcD6[g2vqq88QX( lZy+lE1":8Ud@,KN[>5n?V&"8*BkwQ{1&TLdMS,})Y 08N}傉Q3~J i*򷒧EjGz^E#J9Yi\E 6)jClS(U.h?t/wbJdkL1ӡ󵳴1@`dNE<XPv|e 6@KzO$ՙ?>68ju`A^;R_R;&okHzUӯif/R|#; =c-@"E$-Tmmkn#8|jFG3[ 6s/ Rh$} a9)vVҁ'3 dm"~!NU ?ʗNy) .oZ@vbilڄdj%wͰYMn^Hؒ!VY8:_{>H#\[:a'T#!/ॅ.\\mj29`&cqUR~a_; X{7"mffp5#Q[Hy8rzhe [D%rD@BAPS9ֶx88㸘uqq /L)%E$6GG´Y Ls-&aS\DɴJع} d QwNW)N.JYqDrW޲}4)5+*#ZPF ҸRV5Q6*׊rR#WTQriMt`!(u@mne>5Š4wN0ڰ~/?򟜤%]Eq( +|ދ@&o@dFL"#SߏvG./7忹q5 }JcǧګSᮉ& D *8ɵ(,MyJFڪz 铃$~F=#aE 155JX{f`DQ v;|0E,\Ǝ88bqqq{~6Qm*[JfRm l-Es&-3q8 յ0Qީ֊"#hAN{>/kȖtgdtp=/cJtf=7IJ゜*mD(o"Z^މHV}:Ť\Gf! W#p}eώuWhG !ggXl=ցEv:ʻvNIhg3Al1~4VzGǧ8ٷmieBI_  ,] 1TsD v@t5\Lw f%:*"IV( t͸ ׭#{k2E>? vA`ЪeIm~XH6B,mQ2vqq88>YX { "/Pc`OCI-gkt}exCX>RF"S75A-jx0%>+'WkHkZkiY~j0sM[vBtϸVϤ$xWǦy&$V b[^bAuXEY/ `C AT,^^_|f+Gy@cO~$2u%,$edF㽛h~|aS0tM|: ll2V X$b+/[7¦fo6Z#6}hY1 zq%K';lְX4 1P{;V^=V޶y$ sr?-_;`85 jIe\X29xF8I Ѳ88bqqq;z7)lԦihOb,D*[\ N؍"q֌i(bb_? P>R9Laȋ_Ym`GVsWJu+Gja6(ɔHl\EMfBVs2HM$Rf~B@."W{nլB2 $f}l'>|n8W-Pegv~?+4Oek}WeűVtSdGh޿C&fF}s~YϗxA~H@{;?{t21{7hdf{H>ۦ&e !SP|ben(Cڱ\J1ZG_ ~\E˪T7U6QD+-888.fqqy"QŐ~Cm>6G='ͽF 0jScl:+UB!U#M咰u7[QeTjqݯG݆"{ I EƑvE,0+_k~/?H{"o>)qTs5N}ƙH,j 56J9No+(R3Q=02!DW_:ܣsM@6ҺAl򟜠e*ځZ6@&HOz~8O"OH#MC3~+ڏ\F纨}܃5wMy2c ֥l$7[[%t\C0&õv r:7/)%ws|ǣSo3`y7~vHߗ {0 V~dKo\\S(*fۯ^ lufЩ߫ ȞaH$ٍ}q.L_;}P`yu}u.~+ÿGbyE_qq̓uqq78 40Mc Xj?D?S`e ?}y I6AB)%FB <}H@K~U5%Ce4Rf٢?<5&DPbAVSψڴƱ+Ox<+ʬȯ!5/m;@FxEٶmۛZ;g!\>;C+QV6\,-yŕvRPfQ-ówmWr3)dI KC%Xj!&_;mbvǣQ_M մ9×VhoJcW:t ,I-qivy[Zr!7!IC3J%׍Ir45ǁ T[D_YވL$q [WŬ88ɐցwqqq|P KdV>?gYOrDNKM'Uk4P$-ꬔƔ27]+(/\YXJ&c<Cͺh]ZC)Hqt,=>U3-a30$ͮY+ 9Ǿ: TtVR߱i`r%Ro5q~Jf eSJn*ZϨu=( zO_!qTY#ה&` ~xЪ4SKܻn_J)Blx gsjAxsd33:bd'-qMbR6B`|p(6R(ztz R "?#7XN.G^$-2uVbkV_,1w- Yqqq1888댯ܪh-7^owS;H"\F>8XA7uP+4sY FC¦d7Y7ZEЩ f}cVFB-WbGFTm `Y+:ƌm HY-GUĈkJd19k[E%ݱ1 |ȌxU+aͱ1H6eWP>ť:_^jnY_NA)zfAG1N{}2řx V? ܻŻ75vzo]XFH$39}#m 6 d<5|MY*WhzM2ش6!Q`Ys%D\7 ,/gO-Irpί,Яlle 88DZqqy U $]1!E_`W~C|b}LHkD)̺ #nm ˋ8*X9-@XF@j"6֦@L֐BkRC'v o_[Kmz~,Y޿kfzoP9`E+|x"HG˦&X RT Ct(^Eg&l&a;c*y+e5X肔:!C`%@QUs\S;88ΛPzĬ88㼁YϗR-%Jb~ *g>MRFV!G:@}ھ;vDQJ)ќg_~ MU+%5!~J%c:jvVѵb1M`FWh"pmmF?;`Q XJf/36[c ǁVh!nonolkn 3ӫ+q#l}$a%KVg;Qjm@2(,g@04I{}Ƈ ʄ/uQ"86G̶ߛG\l<3eT5fb־G*mZXS&)yXBYuI + HRҽ/fP+fJqbqqqtqqyzBc( @ R(%k A̵p(ϕX؉j +f^ Ө( 3q#~l- !ZK%g}K/>FXDxjWYqG51SPiWsi1ypE>S3GR6DBޫBauMu,y{z<5EB6{# >9j?w=ɨ`i]888o2S;88/#cX U=Svum|O#ꂉ̍emJ#NaEFƉS:sޑGЩ6ӊبnkXh 6OAltm`&1j#1BH3MAQbsm;Hx6Ff|TѨ}Qwn %lajbila"fOR[=o~,;LKWE@X 7V+9'jT7uAm6.'kܖM'ZK5D6pdt/\`1ٕzcuFC3]ND̊"QĩP{7@0^X!nk@AI$`_Q m90 vsm(Piɇ~5f/J,eQvEA#fqqM~wqqq޸< 5Aяj,,VDZBac\Pl]\iP;pa>fA@;G8{bצq68 V-6VIBygĮI\]ޤSrDQ+KlȮIkúqsl?NMTMEőn>t1׬ȥwЎ֮f{b ])HA0Vv$a %e룗)/c'@1DȺzB*0jBbnjsƃګЪFNSƬzgo.͌vז LzqeUв,h\v zhPbQd0Ll=Q`;9 CN\䫪}3{*cqqq1888y`D4g\D~o|ͦ|a9I)8MDhP jvNVeP҈3ϑ} ztuukYQZUMtp}*4Nh)k.1 -@3A4 PUAMYjjbx4AN2:ۺۃFj"5T1 (:[c֤@\'dm;;dkkB&SW\+y;&:%e)4 8F Wf=7jD|5҈c0 ߼ RΡ]ɁҎPB=5޳ſ;HP F }l}VrAR̖s yf_Mk 7뷵(pz }y:5 ɹh$EQ.5֊Yqqq1888ID.4z6l,fWwa-?2}}rHFi*ᧀqg,)IGf['{722dpޑY QWC0c ӞpNSFby2H*%tڱ휬V8 hU,0'k= &pY]x/An mBkɁu]lSڍ޶"NCB@@mlGKgN__[ܳ^Za[r6t Hۏl ˴Y![b dc,=2X$F<77FWGٻ0 հWQ#fxP^s1888oR]pqq7&; ru&2>sK@:/ /G)[ LJ]S_7!}6BTOPNdb'VJ##ŰTb4T$Yum9~.X+W-ԣ Gqîo$dR!$jbZ8J;FLv|1#kjRۼot%#Ɍa;Ƒ%+j$ɪՋ+lDP{V.dBTap{&xt;2X%}'donuu,Epl=:E$7wOo%ƗMGk(kNjZG/Y y-T޳3fPUЄ&ˉOc5Dˊ_76u}=f17J 5#fMJ_b;>/;A#Pآ+y?첉z5lD C3Kװ}e,R,Wq2䀤' @Ѳ(&^cqqq\:88a'p13U?uTHYO+E jC5j@ڙw!EMj +gQf~6]oF&VͭCVyIB߉q]XJy _ f.#Z\ h:]qGURFFuݽRaIOKcn-'o|Z1 +uvv. jJǧЅ.V`ㄽÔ|(N.FFF\-ypxvs]z%$CZ~dSԘ5sZ;5Ez#{D2E_.Hz3#}~ηI ]1uRT˩i0G.fqqŬ888C1 e"yWFJ&/B7R%kvKDlv~Ӡ9ɔVbū2KKR`a^[ގ en%g ? X cJشF,%"Z~͛i }QmݿY횊e=gۥmc >|B1_1Lj 6ַ6׃ȕzNCO621@I2)f:ՌUb6JԧzΉ&C5+N,L>UE̮]WS:r:$əeMMmfU)֏=_#F"SHF$L;Η$lԯ=D+ik oښo[.ER{WVk"`62 9zLJXƫזtdjͮ:o+O.5-fRVMIZ&ck`}u/*Ɇp D_;bE2}JVBty)NZ7b֤CBWfNX+Q f?ldZjĮXb`lԇf2[)̦شJ9zM \{W{bH >>cd'P |@툒^bZ;fle0"qӺ:b5vWTbV!fMMR-ͭ~V,%P*3+~/f@VP-TƎ88bqqqןUqju_Q߯"Igυv~^\{@+o[KD3/VZvL1Ql#?MXf#AHz՟psl+canh"aʼnI46h&T$Jqņy0ru-iYi ?F_#$Ws޴>M_#wql@<U k]!c1DȵGʪqfVւppޡj]5fm,eFɦmտ?g3e.yhBZ_Kl~THZ88wqqqޘDkDUKJ+QjO6v=#c{O-;ɧ;/ATQyI,Uґ"i @aX_z m/6[![YމR5 QDi&tյjo grlB\dbKZCbۯ=εo4 ǪԊՍi!,DkOT!)\U#g}`d+NphM߸LPA"}kBеןv90[[$ HIYӿF# Q2VU@z%Q8888N -FVC@3A EEL}ɻMR'vHa7ku.X0m> qr}>d\Moɛ!^{tfg3ǓxIik[_K I#_Zhok!G` `)ۗ l'ŬlL]:88ΛS=qqyC26҂O BܶDZ[ABm{%clͯ= W#hS#ZQVڈլNmdnFJL 䧞{)vbiI[mkfbIR斮kŬlbsSD`dڛ~#{dYU]f3* * EBa4ѤRMhF*&ƈ?$VE*/PP%QbJ`f9gk-zk&U>gu| m}Wڷ\ib87XT*3k}W}sҕ:y)X{¥et&yO]\ rމY Y"3wo^.1+B!ĬB!һ|lD( 6^Es!4;nʈJf cuYsP?м]m+(V:?}ٓX \θlGgҺ(>or5zJ4̟籼ODXHM_s/oD2Lψ$mRгAZy_wG}dpΟؐ4('GI|:[vhzsxF%n|LRڗJO&W>q/$ekB!B$fB!غb$1;yPNhm @;*m`zl,9@҃J*wpZwv}?FiLc>cˍ%1 оd1%RjY̒4ͥk"a)g֖kvHד+v~}ESNB_X:*Tx >5 숤k0)OfٽtZRit-iYoo.'v}B*\~cgWDpgOyz_Y!B!^bkB!ؚ!Bn$% um7tB6|c{1LXDIT^S)A3[\Es]h^uC!b:=..J,TRaF\nRzIY~rrO$\{>_Jwa^֓~`-vؾ-"V#M՛LPao<g=\o"K??qu2N5iXM˂lz$]joUtZ٠vT.'[ 0z.f?q/ңGHkGUX!BY!B!%I*[ 4ڋ -p qL܇ɟYA³#%Yf 4~Bv3Fkc,lٓϿmٶ )u{90yH%΅v{S" oR훮_w;ϵ,ͿČNz,{D,へMI}Y]0g]rp#ߛ ^868Zo1pӢD1Xe/3Llz_ۺp*`F'x-,sb,`pG CPvY!B!$fB!k֑K,ތW}d.9/vɱ09fr%+ zF/JF?:eby}O`?߂~J#A0KX"xfsb'uE1!NxԧkM3f_7]#jKʊ mIOD} [_/}5,+p8@0"1gmzAΦ feʵY<*,xcȰpg"Ϯ͂**׿/NkH:|(1B!Bg !B!.11K"e~{٩_ٱar~`D,DsRd,\o*{1N]k+.ch{\K߭@!WpyϜy͒4Ēz%+YO d|{/h HtL/+}I[+Q `?^o~WwM+4=kՍٸy޴1iYN2=R+5ρ4r`vN2d|I<)'fݽܖ+s4D1'b\~+f&JuY i9${K9;W4{Ǯ3HҸ qc}ҳ"eÄsZ3U!\JZnfR f_;I q$FBxpe,HY>g=x[P}@s3< ٧bGW8B!B<~Y!B!(k0K{sGY:t3HҊd&t*HXyVHZ+F 4.;ʊpO1[qz>nEvxےy͜3^pGxHbRXx+0~pvkrtn^oyn${e NKyԥsǡsjo MZo^21|a):z^h5JTJ=D%-R:T ܛ=@s1VgwUa"`m^Ȳ 綾,+KR.PzXE1 4WϕB!e-3B![5@BΉV3kcYB@0Nϒ ϲ֓SBq-r2M,Y?s _~g~vk\rnnxi}ړa4NH;_{OX,b9KZTt̤Z2Q?^ԿZ[cH+1P4,|,iOR(7 ͉sm.F|.QDXʾd?v?O˚Ĭ=4qmnY!B!$fB!%w󹧹n|kY8.Bl7ZhYCSL.&O> p0Krmw߭$bwSʕJ&zYƘJ{n|bʗg^9bbat8oEvy ߯v&x]p;{Ĥ;d%:f> @ lMrb>wYR~nf4g0Vo*Θuw[9$fB!xY+$fB!آٺSe3-BfTQf1zͻa\lf _|~D%5FS,+V R:R ^Us:?Ӷ{н+orBY$Ƣt?4' d.?C,\Cԯҵј599cAxXb7vjc5>TO4B,3kBlV)\r)𡂷lY/SüEbPӔ}ޥ%fB!PbV!Bq)'f;e٫Fe~* pyNfiB%9V!GG'b;|L'PQaϟz )=8ʔ_}o)H5Vrx8\]7w5ʒ35yW66_#YH^=QK23N%o*j4Et܎t~L%|#I.?Òtyޕ0zg}f>/^xnQJ !BĬB! :<,YRh,[݃{6oEm/~L_8GLURRE(Z]H8չ *o5?'ݾp7k+kl~Ti\e]-K,u/xq$f>ߘ.緧I2ƵT fnt**aA[M"1CČYL)pTֶ2lmw߱٭֯\ J^5y?%ϩS_RgMLK7<6#*'0wкkY6gMөpOgZyA61TԹ6F)-k,dy,卾,f"-RB!B2?.!BldibCrXnDg (oCmX*[#>\d$2T٪ټg,gL7륤%/-}Uվڟ %+QI3_%J\t6l]tV{AT%ix™?ϯQWs\ ZOv`=RZ6j25.w KY@Ζ&K#16bݻaʟXbV!BW+1+B!8B\вMFH01;A`tn+sJG1Y7ң<6^+)g $j@)%%s+,j P+^3x}{H$O+T<&˖JH^OUP9ltK#lrqihtMxƒ1vN6K$4 Qu\ҘӮ$LyMq֨s!d͑KbyJ !BĬB!g u:k,.:qOtjK 6^x!ؾ YҀvӧ2sҤ K#B&L,O$,H ]d.Krj¶Tky7 l+!EXو%a&Ǣ_&*@OTIՓWyڳ:47l/ce w9BIg~lL/ڙrsƍK{C3$'f ^'*YJ֜߫}(]K !B{X B!d f~Yn=#a`V`Pg){`7ೳ$|IviStI޼#8'O0I1)u`m/~l}[oմ,S[bY#ɳ[%em@ܷޮ? ڼԾ*=?wHI^ᾲul3Uk=!"La"Kdk|qf3pK;v{Ұ,M̬K?p@z5JQbxؿ~)?M> SﵞƊ,QҴâ_ 9)K~uZ'Ҳ42ܧ.fA:L!e%fB!PbV!B5,ٮiZtpbsavHdݖaiٔ`p7ӻs)(g (-[ ]yʽN毠isYkYMR{:Sw\9zKLY=hAĬB!J !B!kփacaFҳ$yji =0v`d4*O `rLNríMwM,ϲ)IBI N֟iRm{{2`sn7qg{EZٿ%W\ey~|3}cr|^⸺>wd^HμJ".Y?-ݣ>x}+ޡY;|$uY!B!B!Bl91 DuIIYΟVކ޻`2٩}S36񙶜R˂4\wrzXYaN)`=߯D_s^/k]]zhvunx,j╮FTi--ùye9bUR nO+XK5jmz7^lvseY1Q/cܟd:C b9h.mR~S$fB!B!BlRƥeF~ibא]1#`:x/09hO?ލ0yMjr7Sqj{BTvOB!B?.!B5YCHrҔF);lwYxR) &qoylmR.[̉X-Yk96$[2N干`a_cY,s 촿f|0 Pq\ӟV0 ӠSy ϻ2"KU[(h3-,k0ڟ~I;5vfcZ19)3eXFMgaA:|$fB!B!Bl,% )T"ƻhiB6%czALN=$+h>3Nx,ek Əz|+JS{iRBN~{NR,ˢ$2ЫI8eWIV{$jK{] k~iyvܖ*ڟbmYzn&mOR=Y^~s vmEhZ&Ģz M>>krz;s>n& ؘ`ej'J# Jrv`-Yx|h9B!B%fB!xY%hu7 hVwHlvhL/{gU=}wk4!@ v\IeDŽ .'v 㔃cS&1"JHl'Y@,b3F ͢.}^s}O߷:ՌӧOO9E\?bhn[լ՚y:^iǙX̻l)F;~vzJ]xt,|m.$<1@Z9J} /iUd*qDӄqL buY4Q'3kQH4>3OTl4Ʊ ԿZnb߆9FyJryx29%g>8o #Y:.RiU38fW@5ϐR岗.f,!B!LB!YnW>Wd9u'ƻ_גmѸ'Q_X#U+BY;6*`%/Lr6\m.Df'UWO\u)R})L1r{lMUquS!HĴPMu3j,Rq,${:XYsҵD[7͏411)֧FUʷvG .%xھrWPUC1r7mSׅgMo0gq*O;ITdRa4jPtuhQ1L!IWQW!CIi-ioKfQL V.iLieq*VnyƖ\Tݾ}.$ ޭ1~uj-$;R)r Y+`m۶/r$u{n7۾NsƜԋ^]:L>,flqYebB!B1K!BĬiVXhwcؠl핅tAp:?/#жtГ>aIcJV fItm~>bi~M;v0#%aW:=t}3 q &͢4:$dEcvܦn. YB!B,!B!ĈٜS;UpX9Qfi^VΆfcD}:ʲ8mܖg՚V!'#WLN\[_gCI\o@1zΣQl>%7cՐd`}F26bBқiM;|mQ7sH; ՑN:Z+{)f !B!B!ue [RvYIR#KӨMڦxټx374߇a^jڝit땪oR x\xӦ¸jҾX$"eAHJ.-ط5ߥ T bei*ER~~1 ^vLkgp+k#QBHTCM{Gg_ݓBUKBzՔ/oSox7Hشϛj@KԱ],b~YB!B,!B! f]| TDIMBF|ayOV|MbRi@zP%)2FW8䞑zy]\=<^ r;U!bq>U5x֯uߣNYR۱D%qyA8#w*I;ZLB6R6]O ݐSG=GD-mϱ b܂ -I [P?;Ɖ3i*w*!n~\ā=i?0(?0wr_6q:E 0oMgbB!B1K!BT1묵7rZL!8Ue횲IW'*tTAbFf5dNr7uS*wY pLn ۈz&猐kvdZ;v4.'f2~{^",/-ھk6kˢ1ܲgɝXY |ZKъ>Vv,Lq͡ط.q{.O8Ij[}׺CfǼ,e%B!PB!BYzv:,6T]~['IDV?}[kڧgE %פf rPY |~l̤TUaq1huJ>h)k.KzT{(w+;}VGx"N]%1AԴk$nü{:}pvMa(⒠U? c mr U h+V~%B!PB!Bh1fNšt:I-*'d)1eݩAsz\ў T ^gWv'+ ruEH,*2\Xhly!+PcqUW\ĕQhd"QS1M=` W H#/qkyWuHN-)tlA"~=2Wx3hg_~tvx'Ml MbiG1K!B%B!Ĭj`d .z_k+׭n{S]p1dfAЙ|>{d G/C*mvf)ܖ&ib@1|mPeMޖjO^: \[pij ^4mK{8} ߘѓ8.LpĴ(_OqrvEl71jy۞WD!Ƒ#e,bB!B1K!ByĬ@ S O&<90;-g1[G f95[Y^+ŵ"T[C;LA.-Lg]H ٭hAJ߫\$=j>-!i^CVq)˜XxNu'j>][^M=R xby-*3ߧjP^WִH1K!B%B! eڭ)YWpT#R  o65ۿ? , B.dl_? ܉YjJ6HUO'F-R%X(&^1(Y˶/'w6¾->-ǖ>"gi?Re xx+`_G~BҶU/ ,!B!bB!Ċ,IE88 Sݞ83/߿i@>'Ҡt>7y~P/w",guXؖ)=mwMtہAv޹X%7_bpd8yf @JEr.%ןӂSw, L_^Cg߳,4p\GI\B:05M9IgHi[wi7xΡӸ3潼Sxs+hoV߅YVD$צ%B!PB!B 1kuNrt22&-^"F+4~S~" o&5'^Ͽ~WPTT&iYEٵQUkN.6LCd#XWQ\ kRDmN4>n }+ f)շ9`kkGSb; VLB#RR[E0?}70Sl>e<%B!PB!B 1 #M;B]X@dٳ\E5׾iOk@G(~)<XO.`鼇/o^i=U5XIHW==aI״w/K<{KA+ʩؒm|Y^3ֿ扸tÓƪʒ8d/ cPK<}aU$l{ !b~\~ wMwh wQ#Vݤ9vE-,!B!bB!Y+\;!]:!'`=+Kܴ7 c| VO< kܤiPD"6QD0z1\{heک:EIXNg&z8r42T Ųr٥ű/~׎UxuqU0í~zRB!! B!@:;G>DYʪ4V*%noLRǷ\)\{GT%ɯ+M5֣I\{S"枩_N[wɘsmS? Leͽ0=#en0}S8,xR:Iwv}\ =;_(禈66u8@1+|C{̷&Y .?Q1'B!PB!B2@Ō~:ծ#Zs  vrw=jv$ M>g6S#JT}Ɩ Mk]/{wL=7_kVٲo`RѴY]5oQ> y_fW g|= ؓVyܻ^޹*i_H A&_} x>8 y(p3_ iG?ZB!PB!B3VYd!Y+Y`5WcTWLќMKW㻡(6M@[?zqG6($ZM[g %WǓ1鵯dlgAG0Tq"|o^)MJTI1 DZWJ3A;Qݶ#B!YB!BvGћV$^UM PH:%mz9}k4S+w?o6ǰ'e{:1U_sø3"pZ- Zq`4Pӻ@Έ/ 6 )%fwŰ8d#[Q8/8xQcE h4=}< S/v1"B!bB!r9 :H޷*U ve4FؖM s؞<&l9r|/"mViH:^Zn{MD+J[F=WL{Kھk)`OjȰ}rƲ8gӆ{oɮS{ [`<\Z+yqv]u?ۇOx8f`*B!B(f !B!v]ٌHhUIɦm{Xc{k"9aA$07B2V4ͭ+zJµ &'>XqKI5maR5Ssuǿmluz0Ű/3׿$gUҳ1V*rm&2?~IKa1K!B,!B!rA{S kgQ-ve̬xwF`ۜ z|sV/B)_j3صov,ha=ւ@tӣZX5 ImHjTM{8V.>9 5~g-O3\A\0]Y[~~8{oz7mj8qPjH-gb{qx@4#/"B!C4GB!5z F 4SG?;| x9 c+nN26U`y}G0?VIG8Q,cŚ/3K}0Ih)Ș*?溓"%i4l~2vM>}|nQ0'ae}N> 5lC&<L,/_ >?sB!01K!BhgD&о꒵_^R< |SXb-[n'eQHoY$ۦiIjmUY^7Dp(۔1 iQ/I-O槛|7.f+О/4/p{"'c}o@%-Ny'ljB!YB!BPm4Rw.h@ </#)+^ rGD|̍JCGyBgjXg뮌Pyyo(O?l⳰)LX^Wa<\Ӽ9Uw߾C\(+il-j!搐Q+hۗ<T:KLljB!YB!B冚 Yj i/7p!7? 0J#0mVo,EOO-xr(nu-Vl":cˢ6=j?aZjo7/${a˚q(p ҹ,upuYy:n @ cb{8ҧjO?Aa"B!d! B!$T;jmV6| ;|)㧮\$D^{]/,CgbT'K-%iA Z)LF޺m;-t޻ܧt/a iMe@^LF@n2|_p TQ7<m" B!,!B!G[Ak4w@YN ^" fI)A{-}E+Ps*,VlnX]je&8¸LJ2XZLρ#JcI;~{y<F2m2n/0, x w߯rv;ϿCB!PB!B DT lf5r@ 2,Qj #Rbӣ,;TCތTÒeH}-a{4c]2ph rv3Gȗr v2U9ˇu|ǚ]{|oM B!B(fyI3m0)T .hR@ .\Vl&q3Q ]]r?…]Uč.DA b\߄'8L(3{νczg/iM eŷq) ?KIP%:V7hJk ۍ2B gLhƱbܧ\[~&rk2#Ңboևq͹քـ m5_Yyj&>Y.nCyZɾ|5s-~P揾wXn6{mϦ)w3|v7w ewrmRRkpA}~0b9ӶV;30n蓍sk1s#ُs>JY};3qB.[v҄}Wَgǯd6@Υ)C!챝VHPVs6BDߧ±koBXlN9|m(\MAgN 6M]i7?xlX?{s\HeL~%[t[~!)7 V+.n\Y:ם~r" g+\pt Lg'l7򲼗_% f?{E>wNؤr-z.Oykv)Ճa\4` qxLj}|}:0NǺ; aK7f^ohX]{<>g3їkr=_4(]1t}َorUΤ)7SrN=UviNٶa%kMԵ µsfmփ݁7 4vkkϚ@5;vwda/ω>71LC0{P^mGvo7Uȡ)Oe9LuNzۨ}2F }X>}F~x۫ca,3ߟ|igݑfM./XA!bb7(| pJ6*'h^4}2q]C{coaKpȬc<+#'=Ʒ LK8.o6%gإZt0!ϾUaRD/,QpAE,AP,1xƞc l`Ǭa,13{~[J 3|'Tթs:_󢶚Vs1J)걛ӄ}.L4ufɻ-ϩگPYU<5rve{df2G?cQG}Vꉨ y3IB ֍<2T.p L hSsW[kg3V̫c}n|@:y %Lm~ڎIuюU@"L\بn: fE=MH65_z/ qBj!Z\Tú̼'Z'ZoR~ q9?΄^d[7303KhWE鞨ݥfvjtX\}TǛs Ryw݌.}fz.c7Mݹ72]J4l\ eK8;7o̮z?85^ S2V*ǛD9nj?_y5|s ^uy\h֐jF{5˅r577EFI>W.@i~5_s!&d-m!er̘osJkk¬9on.U ;`vҌٲF{gSl7ݶOeKK4RBb֎fX%`,֤ 3iBXgkÇ~&CƵE-1?ZsNlB?.puFK㴇7ւJ9|I=6!dkަ,^gq6m~&|yl7جgg^l9k~/P6u@t_ /۰FݰFh,d9rS9&xcY]{>^7luᩎ>6wiY YkTZ=5?읲~Җ cͺVWnZ>a1N9ok?_{?}S@w85g e{Ru@_:kn/!ٔmyއ~i|2^(.xS__=Ӵr˿+Szϥ— ߡeNnr`iG c_Yﬥ[%t}Y~Y9%߹kܺ~Zz9I.&zR g];4Ԑ.۝}<ٚ< o#s2VYzyxѨSR ^zmotR0 j:lM a׼}亽7 T|ci=s3f(w?cc~x6RG*:.n.A뫵ͨ7:rOԬJ%ek˱Yly:G>ywP2w~mϼg36Iٿ5>523u7K/\:pIJuhߊh 05i'U s&~j5~Ys1YuNhϣvn~ו{wײ7voEPTKYW_n>J͙ֆw_քrR .@vڳ֎Ϧd{ozGi*(RJ>pgЖWjI'toބ4f{豖 gL_3ׇ}usvDm98ѷWVGU@-`yj{O㨥!FMkȦaslMg&xι̳yozaόD^?^WU@"L cKk.B8{]CυRy[CoaԞ++%L,s>جKUt=~[g]#{wU@-d:,(:hB0;`Լ d^/8Z-oM]ӟ9)럳~jlX0sQgsB,_$CQ-aGލB8{nc6B[_Dʸqbv=d_YzoӬݾCYGûh[=[?V#!+/~|MDJF}:;.AaX^YUC7i54碴_q먍csO2NT{555-L%C+D}ܫGʾy-&P8MF}(^+"h^i?zSuKgXW5–ji 26 Σ59' Y! #Jn0{_ ՊjѾqx ߖJe8=7d>=qZNs~,w-k:\#zlo?liw@n2/z ƨlUm4l95(,9gރ7-7gމkCk}ƩM8E/y9w9_>}9/WJ0Ew]1pܨ_F-2a_!zN~Gk%3~Yy>{.,Y<ɾQg.V_gB]OQѮ>5[2k 1sk{_or5kM(mkZ?pt,èG}Uڨ#=8_ 66o7*Ǐt0+fnj}c~Z8$CIQp.uVZE,tEE+? ! .,]ibةfۙ௙C6ws3瞹Hl Els"Nq//=x(`U88Yv]t.(V t??JCg^*Ml%5g˦Hh(">Dմߛc\,t\ɵ5gܛrƿw,oV mGʟ{mȎ񳭺'/*L10UWR6ČǾ_Xw|9s h>;jD3^zViχ5.l>eR}&> fRZ@Pm@-gnuQyI;iɒ$I$I$I rLj'-L`xIi>-U1eOEg) f|<-t5TY\DzJ%t$I$I$I( fӧGtAoLߜp}y (9cĞ,I$I$I$ITC.ӡP4m;Czߜ9xvJs kE9I$I$I$MuLg`Fg~*}:Mg]ԟ _Ù!}sT-I$I$I$iaPC@`z.KfބΣ(A:]g$I$I$I4чmSiS]û?B/a|\MOə`%: d MUEI$I$I$)`zNKazqdlÞK#BaX ZiŪ:7Ma,q>sH'E[$I$I$IPי Z8=ҥ Xz'5/v]5(0j!ha!WF,lD˨xgPR,BB@$yᬁUK}cs)J,>쫚uhtI_-_~uޯ6]O'䞟t6I lZswNi%Kj4oҵ;=5v833연ֆZ_]'&㹈kUkjxzU䓴;?Ǚt+NdFu:=W+h!f H@@) ਈo Vډ63^V J`eff]z"d-Yi؏I7ͼqpϱ|c'ϋ*ك %7z#.fRzy\X??~m8Dq>?=KqɌkbWK8Q,9^*ի"91ԼӜ ׈}NP\aͪtSM3Fq88+ltvI?mo SV9gvvf6&uaߋ9i3q9o$I$I$IiM]ucTY;oӼjc9cYٴ`ޢ#c͸ŸN̗ifics|6wX_ܫ13(n<;ڻY#tk֛4AϷO$I$I$Iz?h*nmZ3'ϛzz<3;sbΘ{NJ٥C#gI$I$I$I/٬N4N+tBA7t@ 4Jo$I$%>K$I$IGO^+:Vsػ(8+d_h@R0,ȄH!(tIjʩIir)H""hnq?.6YKcqw8of(5dۓH9Yx]d}ho.,5* בlDjX=d`7t~Na G@ȹw@۽+,'f ,xbYYf@@aY{WY(G0 ~YYf@@aYYf`N9P'f3a1$*j%4+ŕZQu<7}e:[&{ rff(M̦,,0  ,,0 0 hAG?qCfNGOwk~CX?ꊏ^z TdG>G:x(^>KnOtܼm/DKKSd}pYkW/Ž]/*ڵ3jkkYUժ磯'DboͶx72ZX7RXCfcc_PSXsNŁRknnʕ1_[Qhhhf`yy= p$[~]4|57?b@?OHaЬSJQ(/N*/zCt,AD AM̠҉tHEDƪ F0bV ~ۗ/X+ jq[bH0%Rm٤**ʴV[RT/3{JP@&o?E6QݹC99IŲYIap<~=JEvV+dtS8`b }/3AP%ە2eS81 @z1J_LwؔcM2f2EA+EQ >%XdxewV$jQdrMb|1 _vVڎVnoMǗaL^^<{WR9{z/$P~?q=y|KA-̿U?.nFOJ֟(ܻM׮sfg*way|˵ȰsU= i* @vQdхhPQVw"օE$ވ_PD !EXFj K_nU"j[8p{^;gJ?xnvq9RjXv4ѻ4;xxd2&}z:]rJ<{ٿ.b#YAAQXK B:@ H$JOK!L/^JvDJ^اǂgVݖktqJښH1D8 b/ޓ{aZ7?<%M\m}Ɂ\Feuu7U/)V} XV[{# X|NGP^G|>UU ]fI ټe?WVֲN7KK>Vj~EEeq?+mmX699^oڥ:r}l#ޛr{z+7Q4*ӹ=dK5%B>F&l0 50U^rbf{{5+ V99E,[\䃊l9\[w,:;(::ޗu'z`VԔ^#ݽ4q:/ L򤗃: J*H#3 Cesf[f!AHks2涒 q5/]|xdx "JS<[L95|orJ9kf{{낯dZun 9h#14͒Bϴ"ǽt:C @.7 \.Gj*67$)OlA>/vE|*K`Tf''gh~Kwv3 Q2_oLTe0DYYWKmee×.DKQav}%Izlv/{Wnrt(8B?_iJ/k+yF"Qu'N^l=OȮ&i`Pb{ i|ܩ~<,544|O2@8xFMMm$pUq=({Y9f9WEfav+={|4;W4Jp#c:}Ih}[z!bmۏhUOh 8tlUࠑ$?PAR45ٚJ( G҃SOk:;W^/HϴfUmϐ .m-Y@ݢa'7еcg,ce-PittZw/{UqD?RPBWRh.Rp bH.^. (up2sbq;ef1=<}.YfyoDZv2gzS]۩RPNNZZVW =y YXXrWx5$K}} flvd~Zt5ֳL[7vg {XZGv J(sf3t^lHgA|;u>kEA`v6͐ ys/)Y;N; KKZ_B0 f{*k݈rjW(c]!%Rܦ6'$ﷹ݉`֞O ƫ~houa!&N{sdvHrCf8., `vyS5f5$]ώ=Ns#j|MGBS3\^w-jj/\VwhSoZ{ܱG3g/uL ]Gg^lcY@0cyfwvg[wp˵4 z fýbS2_\#o_:?QRn*I[$QeCZ=MC{p66m7.͹F]W?w 88=ݝ_p7SH,YA<=K[c"bVmddsBWZ0+IkL4 r 9rX S]ut0+QR&..:Te;N[XAOFQ#8:5}gYxiu[.׸|ݺwG=l9:JuXh0;9ʱZeeaf)fff 0='a67h}>9GZ߅/E ¬>vX{Kuw[vQd:yrf~W ZCq, ̦QuJ=9ϓ.aVՂ?}?߲e/x zwڵ$9|Y:w|Tl𴱝:s%۲x.]%̪>^_0 ifeDdBkּiIϷbE0+L1zƭZ}&?0fٳ$=ڐpjm]/Yu{z~5=* [C""k7r }]]юk$l͘]aVb6;;;Ho~KO#Ϛ#GS_~ ¬۬@O_cm. z^wύ"AԾ{gF@o3ڹs7]l(tZ;0 if%i7av.aV"s|{{ ߏm[%ʌagffrg_6_y^7+EXdNeml4;Yk~, ̦[=y(^ueMu2WVkl^]0_2Vۺz_5Vz-u2佻~Ԅa=8eȑ)~wK̝9Ӗ0 f+*1ŋ$-0W:92X2e$ހKT?6Zs y?._Kzݚw>1DŽkCF#Sf+nkk70 fsrVH$bk%fffpx:lS׾O0Creh?̈RMFFѿݰaQj뚌VT#51$̎O;|$u~1Z{i}, ̦Au]##KsYyos|+e0+Gj[g~^8_STe<QyKĂ.EBѥPB=I$BF]Vvhl/ |D({= ~u']0:f Xz6hk2j[sl6WXvk҉ nyofޘwx3Iϴðkb+mʹOx_2~Ow{1'U!yf55ȷth{鉉\vl}}{3_ݟ~P 캦]Ph5vu$ew/`Ūv4lr`pW/R _1KE'! h "\R!jh^C)TMbPEC"¹}>olc ʵ29y=eV>Ye~A*J~aAxx&-.. } KQfjfk0 @?^gH ju4ccj21qpiv 3=}'sE5I@0pVklMFE}Y;MIk" ͼy?ahʾ? vm!ٱJQ ( ED!"ZD;Q'qEq+ހ. >L ,0 0 ,,0 ,+\M-O(ȕ_5coa7A?.\\^ ۥc,˗S>V;o=V:g< vT"ntM GAtBae8Vp"Q-˵  )Ш!+`nz7c<D-ϱs!/.v🙝w97r^1U˻+Tuv}Hs_mmc}t14.C+udהju=@0+9B?5 d2q}93?IђJ`Z-ūX5rbџ!" LyQؾ߿Qknn[s65]C^}X'Z[5ħrf1k 6YxtwaXeEDDDDDDDDDDDb),_jLUg|GjiɊY@Q+mi KD-.]G"O /Hf1{n;foIvOil6)X+ZZ)Kv դ,n_$88{ns 8屘ZANN|'Wbv 5UiW^<|GY!B!B!BHFuoYir?F՛%KV} k7yrfTKJ"2_(EK-[=@7f>|eddI5kֹ u1c6Ҏuzs75:u0Ek=ٴ*fy9$+fW8X bָ%x<2voAV%+t0f̤q%yɾ}Qxwql~Y3ŻܹsfϚPl e-N9q=J !B!B!Bb򻬄qYM,fq"Eyg?hg5O^Џ >0t-} r}$c9jNf>/]k!()'uo`e{)fEE:>}Vbv˖oO?y?f[ؽ;/ڕz~=zG1={Νɓ'Mr}L1;jT:{.wvwwؾSw%2և8C=%fB!B!B!1kqԴ ,]v_~>.H,q ,rXw_yi}QsozK;d'F%2d4*iܳg_ΙB,2GK+f1b'O6m:'|W_lR4$023eO:nn8LZسgo@0"Z~\;/_qne bc3/x2z/Mwc~S^zllUǎݰaziyٯÇϴiYw-|O&T"j?x?oͷv`y|q,G<#{{%g͚Oc[bV!B!B!9 ĥUj&-f-{_wU6=Ob(%;}ٳߌ:[^].D߼yk+V)f-Z㭷~v?P:{4ų,L6lr0xˁȂF#(ɊkY#GYYi༰`;d, =i665{B!B!B!D.TOkP*fTk9)%>*fi6:XruPlف_u-}QɴLJ:%+ZNi%~t1[~{zyR7J?=y# i|$2tݺ-&78}|FuY m7nrMYs4du};'-emu2u[z{GB!B!B!bꋷTku$*1Y`فaAY(.fGСƺ.fMV}_XQJİn;cb^7^aXa?$-f?Ќy^~ Kc2cTL?ksmM[5 z,z~>p~,yjY=3 ˭2vmy<^UѝB!B!B!x,}fu+OZ/H %f D%7TTE>|ݛeg*L̒qkػF&+fr63!J6l wr>|D.Y"o[u#֜MYo:%l|d?߁12n#[䍏75VcJ)3O&clZÎ=!t$32q@Am+1+B!B!B-f&\lM_[&1KKM{1qu#'OE ?Q-駻}G?N$O?G 4/=qb]_;u!TMM:ZLbvڴ,ׯ`/ Op+l &#qjnF^^g Kz7Wװ@01oi֭;#D,k$3,[cDX2bcY¤+1k|r^@"G<(&GL:iʸ `;clצMģF a2؟kٻ߬AB!B!BqqY*5]Ve߷uWt= {lelޟ2Bsr Cd,R5\2!o̘IQd1'9CZCeo9^ru"#l=dx>xȐў?xdsq|Z''L֯AJS[k>Ed|vX5J_u=puRΙ}Ԯs'`gyoudW{Y] C}d"yvdǘnݞ +M&6Ҙa= 攘B!B!B!E#f 2])C*]km檍Oֶuv.kTQD1#ɿLȼkrB!B!B!Ĭ5K}r5µ8Uel${s,ma=Mj PE0Сu0YU\:(.t]Wum^A `/p/!xH,C0 0[ioBO{oؿ}ѱ\K,J6qrr<%&f, >}?"3RiQf_bjggX\\r3af֍M7bsGGq\J4v+3af֕J3Q^v: 0kZ0ɮ-#0 ff&ra80  ,,0  @;l^s?j斶!X u/٩,Yx 0 , -@bifS  0 ,,ϲzvwja û8cjEVo JFDDKGQ$gЛ0""RFDe5VkZ9F1sl_sv֩ >!a1 '}75+z1RsFDD asN⎄b6""grY;\4PvwFDDh)Wx '1+޿!|+fCۚaJ'r1Â1`;"rEy~1кg3Y5jB 巤<9""lDDhoi1:n/b_sCu∈7+q?@Ww$`؏Yu^)ĘՏ܉7u:F01ӫ]Y)f#"5lJ|_Ln,i]gaaknu#Ml%4_Pklՙk&Y?b|JوYXc>75:w#:U؎jDDjb/.aKZӧf5G )lDDDW*u;bq؁:37{wYL&I$v׶TDR hZ@ G~A-J_@-Vx VntoM&c)L6if^?x& r2ub6""z/hqzIsCioۺ{✋Yh^U'{#qKwK %hlV%<又H10EL>]Ʈ5xvn^F ""bm*U/G\eč,sDDHK*[xhUh<aYqv&ŒmM~X-i#!p7xmaﰯ?ںSob^#m M̠h?6XsXbw!H1W;fq%8pjXV1&a;P1k+vׁ* _Q/g7""b$` Sp6pdp*ְXFHDDƜ4-ǝr]3Yas%ui`8O`讦&n:1Z„iR6qx`8,bd"vIDDو*,TfIGe.eq c~(%l`qKS g^~13%#ưilq8"^,~vف-6RJVh>y< w\Ʉ+k()f#"TXApmժTye"""O[XGuSݳ_LcDDD*`;k-k(^ "">Q5<5YIt:hN'_u\ XDDG`]waGk נu|̈3g0 MUiV:\r %""lDD<\0t)H_ǎݮ:rcӽTQ˘ΨED\?xY|c^1[~WK!LjDDe4Yls{g5v1H1%|u=:ő`m>ޘYvzןS>VٵWn/xks%CcΟ$9οdVUwO} $K%aްG7w7[?`r:|_EK-<,H 59*3u++Q3"YYG<|'˹;0}|d?T\g~)b |?S? D?ksι+8 cod¤V]$w!=gsy0sS({xVN^?sֱb{%Z Ϲ4:!WlܬNFl~9眻CDIfo&\] | v9.ʮnf{'/\}{nfH+);K;9CC#$-%sevfmm|?GbTkմfV66MM3<~6|uro꫔@ׇߦgΏ<e^p3Wʰr/svd7; #9foQSA/#Wp9 e'@܇ z'/z'i1ڪ^.W!;Ɯs΃Y>q@^;jB#Ӧ<\͉8-qvYS3Lg~;nlVVxot^?i*666=?M4]!p_ErcNM` +;39mzyc\ : ް1ps?039Gp@& yb.)ܷ*0A0&7ökc&m߿^{x^~~Dֵ[!Jxū]7>s@tcQJ$"(% Vj A_ a sm[$|Xb2k@o7<i`:<4p9w=)dךYu_!T#be* ZV0"X` [-(lMvׅE$C 0 jsM G)F!(1505Ĥł]$<>L4+~:9CYUrv:hd) :)bArf*"ht%Fj|zq 1u)ݛ "A)AȚ(Y$ĂyP<-AT .Y2G ):<|OVs<x86e<f?PVP ~=s6^o,e`MN#E RT )%-Lp&3R T|\='S 7Z2h7t lHHc!%R$J2~;U,CED$Y#IvΎ{Lu9fsn7: ,#1l/\h``~+&䜤H0 %'rN4GG2^m$h6oa2BQZP1)!FHjڒxQUvб8xs@c\7/0`v~wX=avn99m^U4RJQ@I,GEmsBe+c.ȏ AłK A$CÄTH`%Rj$ c6Re+uä; gf~:9ۜUאָPL@Հ.DJզL4?8!Fۼ" BTbDfHZոmBF l؁}v:ۅ쇁Z| v$o8ëepuӮ̄e#%T%SiFKSN“ev*b:"w $LUG :Hch#!)\ biJp`<JN/s:n8NZ[˻+ jQ(!yŖ%U5]4Ha06+Kcevie4~TYdC-2\\~nǹ㮲z6ghU.%aV"Zef]I~96&gI9svʗ)1}h $6h kBs~bRN7>N= ba`@6( 氏2lcUz<ζ=׮p\^gRu`ʶQ]vJE1~Jׇv0Lm}F\YCsizجqsɝ˼z!9m3.=/J.Rp,ډeqBzᘱb (v/2BPL w5Ŗ%.WR4JUrftv?';ܭ sֈ_{>%X-RF=Ycb>m|=0(,4.e[ SD W!\ec4df,XγHxWrEHJ%]y}a)5YHt9w -n@RƷ@|osUe}󤼱v -@.-QP(`ܰ#iVMa4Vj@p߶œ`LD~Wzm,de*e"  Pk~!%1 CP,57\ƣ0s΃Yr𭷎7.RY JIIk_rWmVb6#H s6A,͊(Hq)d([ ${##q-"1ɥBḲ}Ygs@v|ǀjFfo1HC7sιD"?8s FP"h QƎƵPiR>U:„, ƢG}vejWNŀbX1Rf!o Q 9SVVRRf':9G:^hZ"PIt%選nҼ#QlzH!%D J@[`!@;G TZ _}!(+Ukc: RRKHw(o>'sι 4`+Fߴ+ީp9w n %o9fwU3E৆R9~,x#%T(%a9P4Ze轣3h)]MIRUc r `F/VKSH%)@qyFO2bMxp1; bR"])}s:-6mcW1 &̢RKъEyG"5"XFAZCJ 6ǀJq(6;`l,nHsQ.K$lv9Qr%T2"kY+|Jݘs:3pk)਷,Z+&r9wK]He;@фi\oEL;JNt]EOS$2- 9t(c+zož&`i>6dQ{t_~'.ddfaF) ՈhT6z9̙fmWY\fRS'?,~:9έW.<0 RKS9Ѿ8ΞntLJ_B)X! w$V@{ٟ!#1ЮތmUr?hjBK"Œҗ_~Xs> <@bg:5wL<yxk09된sL;^:(jaޏ'RRFhI@d>D3}jްV. c)nØ¢:$˜ PL&ȬO6ѻTd2a  g>w9s[_iJD-0fAW,][Qr}45Pb` [AcY-辈MdhcB'}\δisr>EY4`坍{'sι+6/ s/ 0KRNq*`X=|9nXSB[E5bDԆ* ը]=6} -#qtDXLjj`t%bpG `,vi0?̴KVp%Q4QJ;X{19Laq"Vٟ` ` iL鞐Ur=Z~YX5XXPb|'6WFoXs ffoQfw{>}ތ9fa6ȥh5LVrz\"f@Y>lƂDܹ`K-W1DB`\?Zs|HQ0[۲Or9fs\{ԗYE+,?dߡta"ˊ<-1[l%`_r8j J("(-(еL`Bd Fl.lP QbJO!&LK~=P Aj5uEwN{:9ӘŭPV-fƹ%wqRux+l2މ ؾ0C!.$i09yc:~1/PoQf1L,h>&5<Hs]eD #`DQʩ]ꮣUX\j|a!L>/B-`K DReZyE[*rB5a1BWxޠ9w7s]2Ҭ'QK` _лktmdxv|Mq)a[U;a㈬k13=)YDB:Ջ5}&F%s ds}^W>|?;</z:眻{&QM6z:Z7&[ gGwK [ Gl"\DB!s R8snk2գ?! "?ςOHt9fs1`Y Vt]oUѵcV0& Jމ-(s\#\}.1VDa~=眻 9s_yK?v < {C@7sι+8X&E=^@1S[V@ UdpVv !f`k%BZyDHdA Pt 8s:, j C"! bɼHqlBfzH+gPûӗB^$"ʜ!{ :C(;f:y@VE~6 v?; ?3oVs#`[Jx3%S=iG ؊_ulY6XS"m\ ڲΨJA- bb0t9fs% 2 Uf$TRJ@.d׶NȅDx/v#)f J { :sOq}|2|xx P3SG`ެ9 E@\cb& 1@Ո!+´[]@ gGw#,-( ` Vt9fs $" FU9g'QFj;eO`k䭖^[6'RMy@),F ALA,X^sι;7a:%*|;9eoVs@ZĈ``l9"r#ZJBUXK!I`_2=:;$I|%=`˻T#"h sy9n 3P"j b:;D$`HQ1`W uʖ"L"Е L Ue&0vl?}sqxksPփY׻xs8Ms̢Vcl}5FݏYDHDQD KW+&EQJ/߶YEMsY  hF :WӑͥF׍d4XuNQ[GA#Hb6'sι;ׁqP_\̺K6sg9xc)ul$H=1nv&b]n1L#YnԖy,`ff7sW:O:M9Ĉ2j I"wgVͻ0 DdDG)VcX޶{V}sY2k\ww ]ˀ~qV ;g7sݱZZˆ4zZ-DL"J1te+f%h (ID:mV1#]j29su!F)DFwP`Z]|v5܂*P_,w3HXIa #Z%JMǭX'sݑ [O|Ŭۑ s_{3:kZ;@eAĈ2=_>!ɯDLbXaQ*He$@9ٻXIsoD./UXk!uskFZfG c 40 `c acd `03R^oַͭr{ϔ2X<Fdd{<a1z䷵cR$GI/Q꒹ip>LA3|۳\挑WAI@P?s%s1}I` Sw7%`qZ-'6+`wfkk1Ƽ(bSOT=dšDZy٤P+o#Ux]S2wţ8QuBdu=:ۮk1c-CPM@~x;oXw J6ⱺAUȲTm-)\sAp%7e{1Ƽo;vŬ!rCNc[T*Y܇PIQz{A+ %~%,x4cG(𨦨$(^z@l5 f1P?֥kjǯ?V^~3k1ƘqTj~?p@Tn@:wgh;pZ밺(8s{9]߻aɕ??޿5"lmp[ " T!Di#PGIl1X0k1E%W@AJ HWIH@yXY>pP *;Xَv kU./kqXF ]YDT`P(C΃3>*8T(:::AD$8Q<ʘs̰O_z_:b֞k7~cӎ A@D⤨ޑ)Zya,lm ;'KYpn{]rY#ղs^/+W7}u Zp%H f( }1ƂYcgCSO__ ( +{e@!6`,#=GT9 wA"=ʃ8utKx1-D6m5Ƙ&_/+٭_~ g0Ƙ Qщ8Qx:Dقʷz [_ss{_`m۶q{uF׷(9ƲT|_9A>,B56 ~JȠ߈Cˢc%R6PDʻၪs}k1\@Q_U^,O8':-hoBcOO@*+_S@M)w. h RnCAAD(l$*2X_Dc&_Ad@#QũV *b83Ƙ[:2dsu9}.Nw Y{1=#IqlBW3WsNTwzV`s fޤ/("R@/"}*;_Wp;WGH( #py~FaH*T(ǠmX^XK BR;NBT<!?sr()AAXc,5Ƙ[)UՃ:RZ -Q@a0Y[ YO8]!6@V6 hN "0D@ۋ@IBH(At0J5X_B`U`t^~jڲ?U hşcni({x8yزNZ0k7ǵ<  fǀv7I-k12OTQc~4*5ADD)0$/fׅpwJ8 6/B SV//0$ ;w('+ N t$Lv`ebDB39ȶz _ 7k9 NPKcc1rQ*xAҖb7ܱz_Cu}d€n. =5!웅zzB@T( B^| cs{f_D:T\knz$6YNX-jQh ) @T! n'3x0|z{,t:u! jd-ʀ93V=rq4FRiU'F>@QuS9\S~d{1@v!"$uӂYb}o s\q<N*c̭ GPARȤFX@UR^U7?! );)ŇP:[p-S "'Ճl)w1!Q (hQ|x\yNt8Ai8 (P4 4N^ԃv]c`cn?\州V~U`+q&D͍˪5'3N8Ŀ QApD@//Q<4:[p~k6&>-B{-2Pp[/إ׊ 2 pLCS0@#yGCkA%0* "*h_;{61ܜ@6~r:_uԂY fMi#. `w'? s˜(qDMBr_(2*'w;HWqs9n bn'lAd@%OwRzPkKwI#xTQE4oc̍!|}ٺ`1g+?#:(<1:(|1s[2~Z"SӃTa8j_$*emQSH8KRT B lmT)B;/dPD.' e'D J_1֐,"+kK"87\o"_|."qoU\$ɷv_c@ p:'E)=5"l]4|x^>`1Nrh%Y|2MPuhᵶu&zY9/HZ;= O N "*]Q$BJ8QCg ے̨Hh.Ȏ[y!NCA+* TZ)ihGr(>BlAw﨡kc :xǮB=@~..Y&es"?`1`:Pɀc5{xx^= |(vKucywYͳo^GTP4$h4HNd6ABZ)p("SGDl஺P<:5v~Epx\vBbTDw,'F&oxF<LrPPܫ~ hgkq> %_9;Lcs=|a/cE TLIcIT.C8Цc@S3Pҧio/Y젻myhtwٝ}#tBz *HZcsd=_+X'j^SiX}JqMbހ}VV2lr WJYg[nsdpd =|>][5pp-?6"( B$Q{8j* [gQX0k17-?-ÕNX{ W> <µ[^vcM fc˓韼C)Q+Dd Kq!^*М o- ΕAv G)DJumm6&"v|7 'w5щ +{g]X_? P4(|[(~/|] f1榇_rWC*^e׀Ss_r^ X;1t^ίzW]GJuPGNg9ODw' (09I."VHfU0FۯdJ{p1L+Wjo#$g^֑^XE$eQ3LkcsҬQ*꩹z}\< )?h  c03 ރ[ 2[NO+hB@+vl'gzpAK8м(6!l}_HOљU f1] g [Yk]kp\ƹ6ߵ6c fu]@8QT< Iӳ0eu뛸.ԁByU=qbnch= MXY ɅBN")5MЉٷu"y3Q}#~p`n1X0k1W0 ae|Giw''(KU'璩DER6:j)hUaVt^i֭vnt פ|,OfJTW 8`D L AzqodHON+(dJ8dIKR퉯Zn=f4& f1Ƙ6?Ngc!s&>;omsf|cZN^6KOXuJwT!UxJ)WJX@6mLׅv [g 9~.g\T*!cute|5\]ZH=?0$ *'XGmN ;8pV]sYBNɻ5(zUz~i*=Σ!NրA$CT*"n,uN{\.nDПܞw4 q7n{n*@6_![q؟!RttxJ_$fy<=\|cs[gr|{,ՐЫY[;?Lg6Noz)bJfZ|•:v!zD \[#WPCgdq/oJ'_W2Ij]|%WQ' N8;oϘ5 f1v2.7>|'UثR<p?xf+-gסӽsHj'@03 iJփ 6 [Y K%YQEEvLzr UO)©\|k{ړ.Wz`V/ϟzтYc<=<rkauB 4 |hdct ٟ /DcRtb+~LIj[lwwNp\$w zȄ_-^5-'|[( n;o~ ?1C.F9SGZ]~d1\Z`1F!ţh#d4hLTH <0AI: ZT ':pA@ۘq] -hUV \ $u pUQ ?K B3DNz-ѵ* U[𡃶cޏ8Yav7<|úen$=Z(k17QwAXEq kDC Slnl0֜UO2;PRQF3~`Yyr:=5 l~hNr[ 9lm,A:e[Npw JzxUP!?NIZ굨V+p̫GţFGkɷ.~$+&c ՟Oc>DA'&c[ .mU౻e!Gr+7p=vP@bz5Tn [-A#9|"}"@v[J2 M@P<yxan#IvVx[ʁChmC\:|,".?kWcd]0ƘD/dU͗ lը]VGg`ϭ~wreQAxFNy* (D;HP@ l 8"Wvgtېg w._Fo!AmtVAw|NW*2Xsts̝+:z/ΜtY I@$<okq'<0; [-Xb`Ǽ`0Ƙ{]_$PUyުs@^&1TaT$_߁O;AĩpOxT!*TPo J*Xil:[Dp B9@d$;ϙDL$Tm5w_;_~iHmM\#>".03߳=cOk1\_+C&H> d>f7ijtZuƚ8qp΁B0>  d3'b*UFPZق}Po2dw_ .@|04NDӃs]H@8˜@GTr$Wvmd.íd N| (Hk:x. σFpc.$CXY}s A!!6E 4E5I`Zcy;NU+&bJ5:0OG+Ð)~l0 }J_1|g"ۮe ?G't^84fn{$w.AQ@,DPR j1A+}JpA<9FS.|obUt{vlBwy#{, =)Iq:a]cxʐnA\+\FXll qŭ `vdc̏?瀏?Ըz9u@a5a05=dx ׀>uM| Q\8GELU-tTmR6NFWʐ xd~/y&c/8UP,.!6cObg\1Gx@@JTDs Я!*hd,n`"T053KZZ?qSq/_XÝm̮ {zHI)L}";?/l#ʐ©&$dz%;V^npy +:N p18eSP<x(4F`I9vpay/ڜ[70w|xxfqSJUp.)ށ7q#ڀ)a(wbjea{S{ ':khb{k& q`XR*4+gcsY=ƻ@* "Z#8z:OH+q$W;ua ԛ03 i>mxc r~ AV2 !rdϪ>yjpzxd DuElmDpzYM 8QDu\ Gl;1d/TOWo uX0k 'x5e`ZhBAq QS0JDxS@v */L@s iqgϯ_ZnA6IJWëfuэNn/# 88L}{t_! (Au1"MUCHXC ж=c,5Ƙ矺Me2Q"DQJUAej$"g (n.Znr30&g?NV)>~CAqKd[" ~`Z 5Y!k7:U+miLmA <0<@.)#˱DPD"QL A- P2zpecn+dx,0 ʬ6̚GY}ioo؟Ƙς4J`V85UTǀ q*:`.dp\[UIFCx|_{c&X3iM\[Tr&$:&6`uPɶ+dw^h !( hݭPTAP&.쩉c1\U Y"zD+$wi@xD4_pd($&f#Q&A P!`7AFPP3*ڀtZMرh@G iG gw17z8tp;MwF>1XLf{7bLlTCƂ iYF5/A "P,wy<f=z(ZLa ,!b1`egK@i3s(I u12.m' :˻V z86;B V"81 T; 1 .-}@˧bĢ΅fA@Yo d"p]dg/1oDžYSyp5Or4ԟ=G9 *DԨE V"*΂:Qje= dĈVm&EA6{;srw8wz]mh4lLet"[ µEHdD 3(BR趗@AP6e7AD bvK,kzd'p;z<f=gk~-1WGPPdUD!(GP FT+fy2CĜEDI{U놬i'ҺTkiNh4>t;@CĤѱ4Ź'd^{@u,(A0_KL!XGvW<("5*"yEٟ>\?mޱ#f=w+WCnϸ ?6BX L?[cVr~D[EF(ZQjR|0\ sp2gZk9?!Y%;r &E(H6r6>GTteJmCDѸC{Ks +MpBNS˗` sR6EnB4k3@EWh4wC,*YO+ZZ6뼒hѲBW%AJθy Z !(d;xc_C:}IW{͢d\&i*ijC۝rtP(FìlcEݣެ n) Ih.mI1`srB7v)~ʈ9wT|vVKGQzEkwrtP.x<8x<ՠv=1`(),mA50K;="@k3B͸&&i@`n; t} `\6םpki4o<WAϛAmm ]ﶍ+7끑(eT%X=*Q>@%=A(%q慌bPe8܉z'styu^YAx \?%')?6dk_=1`ʉ$}Q'h脞OQ$tTXZkW05t2kv}Cހ5f;eX^ gae!Ykg*A)w-?n-X0z0?}%@=dU^Am]Sx<ިx<lA6ڎ!|؇fD9T6k` 1kt:"~Zuz0ɶIe԰CHx4+Kp,,++ڀ m*̟^sf(S! SV+P*+GP\l֫QqM~'Fl@UGzTq#;.jzP5<ϭ <֬Y綤 |?׸1/~J=ϻ _=}({IB.!ubDb̕,kMzvfݍ8[\K`VX]~`3llKpu_NswBsɵ0i&][I a20d+cd'Yo0^'P P @g7@e %]/ Q ( I_my%NSSx0x<4~-܏D "bRaNp&JBQUX,Y$JH ր <@Vݞ%  'd޸>߇+xJit11>ڛ0C "[7kޛW{aJ[쇙جFIZvV.UZU\T2%H|O1g/(f ւC)T"O}O}z>f&8 C+@Oy'!E HQ@\Q7TFݭōXՐT D$\jpP{X[a9_H@k=qn?/%vZ7ƕ|$LvpOjs| QFry BNѕr8w/Jd 6q5Ƹp8Z(AEς0̒UQK^hME +άO{h/V?#C`A5@-XQ7u!0*XA`@EФMqc̾RfeKH](8q}>XgyA/Z'^ fE *[K1A1{X >3A १ߍP7Y("2ܢ4AWs@<ͤ[R m?C!]BOy>T1z.} ?sk3Fd.<%nTeI:бG7(WVP`cϮ7.,sҜڋRM%!c+nےne& PBA΁& q6t;ApS!5ǑGlZX~EY:H#Fb$v? 8v9gQqCd nkc`y</z< p8YcAq-~Pk1#Ecރ]_3( qTV:w6c%l3I hnWPW +sG[yyT@~rB*n`TE$'^RA@AW7֤o[0&zL"#Ra3@CpHf"%-=᝱0<Mg8 <,Yi543}J,!nAY"HYubל{^s^aޱgP8@nDF Dհ;R^tp/6N[Bn?RJkvpOX81ȵ;&= 7OaIE bELLlji{@,4jIӷÝ'Hfme.O¬1]@~;(9( 1kQk6$ʨ -L자fڰ3ۡ:Q-zNd۝VsG1:xZ-V]d`,3=) b1ALjc1Գ:@$=+3Ro@VYjDeQx<7I^ 4(2l|q?mDȺ!8T-09ju3mN;|1׮,];⨪qﮊMA(z Xzv'w !e:EnZWzBDZzgD7{/0,fSQI9? ]8)z)8Ey9.wVBYu¬~z 8Q\5Vl23 EKć3*ʰm;PyC c6["Dӂ FL]s㓈Jg3M,1/0`$}~]\] A={L7:ՕyɧwPAͥɹÒFXSč9=jgfց)~z<N?p}=ύ{SYT:6pg^sk2@"sZ_f5Q,dsvh P VҜY0d'wp$\2.bDunxZK!:]:>C:DNw ˈQXoߏ>\JD(Aɲ,eؑN N/fs@T/ix4nT4TflSټA^ \c|p\SM@x<ĕ ,pOB|$P}?udz ;GldU 8@UƢ In@TƈTcbggΗƳh, j X,Tk%NC~b s ɏL2;>y; k˰ ""W`IoNWZ `0EJ K#JreL޹y`O sRz'" t'2Qu8Bf8hȚ.5N4UJA(ӍX=ڲ*؝J:Wd! RlD`r"7:- }> iֈ8]yNEA9Ts׮7k5f AΩ1*5UX@dc񼯣d\qH?;5qv_d

:0%:VN# 9޸}N! l0~r ҫ167cmfCԄMY΁s"~=AFz?T7=7tL|ΐ!!}Ue*(((?v֖ Bu2.Z{ӨUN,zoCѮr;>ng.8A9|4{ {mb:16.[Mr^ D=%.PZk8M.dhZwqd%?U3ԟ( (~ EXyj]TѱBxZ?U qvCؐ@P`kSK[<?CVp+ތYiaػ'9+W= AjIQ=ow{NKxA  OEEF,4E}"ݕU] DLr ?flL®漬dw:ڟ˺Ky||7K6K؀ %m~-EDDDDD>=vPIy]56OttkJ@kb^a'g:;^IfY-/? ջ:a;X9ޚ<1Oif8NlDy7xw%;iGپ&RJF^:x<_)ȃ1/1 -I]-05OC6.=c]IJ"ؖ'NoGY|ۋ1wbb554 à=u i-N$;KxMi<ٝ]cv|NbxՐL_WQDDDDDDk/^{A;֑oq]-$mJsfl&vB|:?X3ocsG\>7ߧqԇhǪbFt}ƳxssXl"=bO1b/DAú&Xvl5Or\ݚwMZ$ŋaf)i1IVjG /W tβlywq\gxX~Uo,&Z;&gq@8'""""""?m{ sF(9s\>)SSĴgLu1Yk = cˉ0Łddb~nN]KlTLN'u1I!tRoJcww {zEua|xhǬȃc#pc{Rxhw,.\ʅ9aeg9![zæ?j7*,MuMUUi <ΓaGwwv0b }d۽`Bb8~f ҹpy ?xlc6f?퉏94^׀?v~|0_*y""`oy$$^~:?wgpl^:82 Ocݥ-?qI:n%,Ct9K Y c]K{:Β'e` 5bl/SUK <5Sq1pڹjayC ;61872fU+ xt36U!+Dv V]#^wJLzq{QM2rݾԅ2I>; x(1]Ә 2كA;{igHL^ưagk^q{lNq۪~ݻXX$z \1^fQv۳IC2' 7k"""""""ɛO4*5KNo2( 1rRR6-[ZĞBwwǪ$T,O]ҽ;vG?Fx t0n,p?_0Ч "6 ϰj d"3L8&TMLqѵ3tU1c U'_}jVH&Ȁ$woxm\u$=슭mx!""""""kׁݘD)p+>[$! ? cf@۩d}0T!r}rLvux%.^ʻ`޼p3VUq35rNZN\LBWŕK1V<0 W^DDDDDDOJ.~# +L7&u=ɍxRLեKyLǖ,N@PFu_>ouOROo?[IO9e+ƹ quL@DDY{i %yz6,?ōk9`yצS's]Z8籼gnXL;' wߍ^?UQU8A C?;AfvqvhJy]ҹܼ: QWbtlEU/^wOXw;zz\rd1PSSU#kzǚ@%fED\փwRko`]\svy"]w;zI 8i0okV3_w_R:yN&9_Ǧ {X%6p[_k{ljb,&c˅vsgfKy b(W3t$7鎫3usc،ǸJclyueBkकqiJ;`RY㘼^3N fl3N_,q˫8߽n2>lŦ+p%o|3,deq*ܾu3ORkk{cV ,lY~;]nv-b=jc8 udknxc-7OQbVDRahT Lʦ1\> }qj8DVӽ|{1)͝w4|$N.&{}&]?:㉃,[Fqll xB_]?嘽U5IJH{DDMFPT`C,̟ܸ:͓1[͝CW/Lv XؿۯrO`lz Xɀ2;ǁ7[z7 ڃ+`+Ts8՗-",o:)R(eZ?=oR{=ka莵lvuI;o)""rSn^V Tq#>c13^*7s{5ث=g||q*W}3Nɀ>)xH0aWkl EDVJțˌ^OُcVyP^j%gR?ZŅ\>O_ŋ/q'&K|"vzz]~.=A`eub&z|n|^o9\;0j#sډLm 7v'gN`0?{3Ǐ0ys6&b$dS2aw! yRK6.~Y:| vºM- aPN[I՗PDcѧ "-rӓ/Y/9\VndKv˶l4#\^ǒN*""Ĭȃ^+t Lo~(A < * Ip_w_ݓ܊5#w%:|"^I{[฾V"""""""Tvx UWY)7~ȩD!Ratc'{qBeOVeM<,h/RB<儾h""J̊< F0{bU*v" F9|?)|ր$qw{$&e. afac] }NG~8ewMZE3[&j?yh㘽'7uilfkN}}%Tcb34TVVή}YYzC+is ٤wSO^֧ "r 6Kgd'3ٙ#&n̄9qw3I%Pb[Wusn.~msW}~ \EDDDDDDLVMi_A1K3T8Ͽbq!$1Jg%>&y\RBeeٺv=Œxe}DDcVDDH /_K0 89ӆ"Ssӣ,dS?4A!4Vx;B\㡳lt^2R_anf)++&`j _~S_]UBw0J]cUU)[7ṴXOY>SM<Ŭ;j r`#{T_nK0{ M[Or{|wO.q88xZYC6 ;Xij pUBwٍ80۞BfZ h0߼ {ÖwX*cN癝M'i"QbK+vDzOaVIC)S͊O׏[DDDDDDD$s+0^`(\.L'e*S)WƖx0>^DDYa2 `w5wЦ oqһa`7IǓ`稪e60 +"""""""VC<0>ڥ)\l n5XGTPZ{Saڌ=FfY39>OcVl&<6͏?X'A;~ ЏSDDDDDDD O˻q̲"c5ӷ?13o%^# xZ6?7(޲5SDD_le/fawgf3c'H;cUg͆1vy%  8|Fpf5 u=ík''Ɗ5رYƖ8AhuU6?V0f?~UE]Eتҩgu9iBhœOag1ʓUJd#{c?՘rbم+\:]x3 }dl X8>R~$hc!`Wk]{dQ)[P<ۻ{(( (B1PRB u N2{ZkzKث٬d3Sj)p''ld))i>I9/o,O0$דaީڝI$|F`M&S$MB^oWBl}a5;Cէ6u0J6!<|(!$\tBmաfi] ˷?ng|y{I!ᬬ fˎ !a<⹬rƚS .z5}[.)|sGkpq@"wwH¸5m{qsxnz {!`s;؛ 6oLXDŽaoWN_}e /BŒ S}{ Ys!vq_>5ϢtabDb@U5Mb $[6 VSH™7sRDX|agpQ^=vzÆGۧg !yrn#,;6-a…"´t#a'Vui)(i+~#( jw޴e !U8p~{xpC8~QsaZVDu74I7BŒEVIqwq+rcܥq0!Q ۾Bo.{ψا_ Co CZ CZn GXF< ٽ洇qWm Rk<--ΌbD?cL8ۋav-W+$KgSE5. 'tqu-@Hdž/MCE a~)*.  7֦0E1amq)?$Lg]>(wM`/eb.>" ~p 7ͅFbFpt{ߓ&wywzMEi/91gB`ZJX:建'cVJgŎ"D##+p #CV:iKvdX"a} a0Ҕ n%\ɉckE*n|`nj"a@-F&spG۫sjZɲ_b.GF&MDXOcvrٵU5+F8sseI a O9ivVFXR&a̾2orƖq\0Gv^t9kwea'gIspoc.9HY$`0 eοUO[$W%Jp sfS$Dp^d`SiE`z0 Q"ќ9PޝUw|ovHHB! &&ATlX bEStS[wG.T,;-Zq)3JjS d# Y3ϽϹϽf, ~3Ϲ<3 W$W#zr)Aܗ"rYƩmJ-V.i\28SϻRp"Sp>tOZ"R"l v͓ԛ}IllAcE²uShH8xY㼜;6 FX.m\ -k[Q0/5_.gɖhJ5r)ZP)VÄÃS/ki;-BÄ!)+vZr9܊j!¢ϕ˾"l]/v>=W$,ƒ)PX O:NMv/XJxJQt.9Ex/_de;/+[%[}VUh'ՖKh#gvqPCm%GJs?XyM/#ABWY. '[>эEyjî  tit9r #{CʢI5m+kV#L28)*1*=e|թsqllW^Sҙ!K+d/\@%69zuxp/N^8]TO]<[%ͬbP)]"1rQu0ҹSrmu9[g9ELxng-Ֆ+NՁc`(+ϓa+?:a;X> $rXsa{t F +焬z(kAzY2U9ϻ~Tow ܧi`ƐM̟s$7bNN;_%$mZ7\{ $~$+sX"6xP6ڶ>͝z ?1W-P!wkI*yˑ4\T&]yss ;(mT:DgO?WVdU-mgŚ _TVW൏=ж}/lKo9}u#R4.o.q%+sn/rmIB|PHѨhO(tghku#R+bg|niZI o'2W+2ue1஡*b×f)q1S\e,Y昅%dbkD/ yZK{^W+Eȶl!Δv}k=q"_OT\<+{٥oKo;]Z`F1icPV>HˍXx>!Z.< FnY~,E01wvp]~FS/V]r)nom'AB "5Bϩjm1O_Tc]J<a_(R&>揨\f 9Ai@͘b.?W/?];/\y3kD<9%{ AB-A8U E%.BrKׄ=m;Zh>sRd͇;ꕧq8ҾH-Bw1|b$*ϖٲ[Ë:})zvY"I+khik5OՁtU&F89vszw[JYf'r˽}/bo-d('J7߯>q>y#z׆-7=3O&7f'[)[,B; )/o7bufOW#`E&|l>=$~wXȕ, ҩ׳nQcd 6!Nߧ'/2_G\ozxj/XJ1o9BI=DU|`[kN7]w^}^nWZLsHw_|H _{|}D{ƻR꿎-WV$.sSʣ" e5]v@">K$~vP(ChҪY(҆k?j|˴~)\f27w,p 1}zm諛=?ZLsXOEyF^Qb`JOɵ_wʪkBĢ#egh+N1s*Kw{Vcc~{ll >O{2?6P2lIcW|;77nM٭G:5Q7F-߭+>M/8A8efNJvBԗ6m)*1HWs|ùgvÖLgwy{p"mͳW={bUaIT(|(AB2g4/AG,aBxwv/?ZGliJQI2Vnui 7g.V:i=9Œѳ_Qt- (4#Mxz"\9%GhK_ѾN"dZ1(E,}ؾO[ @cŖOרg*ϵkAkm#+5Ԋ XJyxT{;N0g Zز.B{IY0qzi čPI)\/:>bvh]tXؼQeIc!CrQ!}tt;;(>X?4Xѱ+:sQQ]GwlյO[[_D뎛&,S̒I?ާν}ޱz tV͖"zn۳r>?|P!T>ƪj!tg()J?~v,4M,ӗBh>eTޗR{;a«; @Oݞ 56r*f<^P{;g.} /ZpF8'Tfp'6l4O[,ʥw=xY,DtOU?O M>O!}k<'m׮מ 䙭e]8P4Y{HA򿏎y2AB˞ѱguUj:$zyòazG'K߼]TqB;,6D[wۿ]{ѺYy|1<ֲ )=˱2Dhs?C yܻ7$E/+q~"XҞ_[oU_XrK7s~)Βу{n9xpr>l/{wmIU 9w8}SߞiiDIAGA<$F_@$%OcI^p|CTFA +>DintoN}ŭUtzjթڻUuNߵX[DDDDDDјq|22|ų?GڐٛWŷoݺaWp `!Eh@cvy@hq˾_vmbc>,h@ϒڿz&@,[}LQRa&"w00'OHIUKv^|ff?H?r EDDDDDDDD$dՙ7V;@g(XN!^U?egڭfĶp}x2 I;BC&;&[vaxb| zt*0,#4(h\؜fB5Hw/l Ϛp!G7o <#dw,TW|$ӷc 3WQPDDDDDDDDD ;Py5fr9".,λ9fLK$䧻q*RJFY-;%qcgXYUgՋ|$`&2C97"ph ÄE /)l01ҵQj@,i=f5X7aZ=pQPDDDDDDDD修<܆sP};yt a3" ˆ4os5 ڏۉxnl]fE8Wxrk\o{##h "Ȉ: R9?? ${kdhX,|45u#&;Z-Fw\o? K`  \y>Z6 """"""" j67lu<$˜ _jH%uF^yRҊsnE3䟆SWg.j 4 j1pI\yLئA~]'ZJ  +/K-F{^ASR}u Gq]ۏwڀǧp+qPTfywb9|ex^tF 0 s1~p wWq Nj5h)r43zBz@t幘N:ZY(_T H;Xu{2@tbd>y5F<SJ>X[h̄Gӣ/"""""""""[(b^ 38,12R k \D΃{fpWwSK_)!A4&2Ljͣ;k_]׉( G Uzc<<6o<27•'cuW[,c\ؚ!Z=;H J/g3nȢ8̹IÄ F޸A\i`䊗by 4py} MO|٭O(H(""""""""ɮy0܋릁#]4@xB31-@waCL׈iW?ᶋW/Z0#sӇ;'G؇߽| O*2~?q{vw}{gw5r|9D{ > X1`VHoq23/}1Dth@,d sD f:=5rEQPDDDDDDDD7}#-7 ~a=dfl3oXBZky]x8Nt*u"C~4`0ZfشF#"g{7GO_2֒!3Pk ̑i$>r^DfpK ,sB2:1Gֿ(yή #_:<agbf sЕ S#_שaDDDDDDDD$ ~v+=ω `$@YyULt!/sa*^Fg +]u} hLmh e`pC =68oB{@ >wt`y`8lYLm=޷ aC,9rށV /x/5L=wWnl*s18.O?lTOZ F@h.yjj """""""""ؗ1A+(g '++Ć "y n_! a^8θI=m맡a.eg d-\ (+UXjY!zw+#K9Qܸ}o< mi*wlp&w̆cɱ y0!ģO/ont7"Ӊ+?@|DM^,"gH'Fb޻oڅ ?'-kܲ~n. Sݸcx\y-E}>{yڹfjďvLEw[+7*ia0w9 E}!9uNa^7=20uQ}_֓c?md 7LN9_DDDDDDDD$9 EIj px >Ю@D üқk 1O6W W>؆e$%vؗ6d:/a{[ 2]Y,ْ`;8ﺧpˆaJ`0BY\Gq? |!.=ʁR4Q2V`@7ctkÉKq z%'YeOʑcgcs4x7Awf-]sp=0qX/wcg7&'DDDDDDDDD$9B -k1uِ;^)؇7(/Evi?|r6dF}zLW ( sึsO x7[̭ 1+R4sZ/olsn˼=i/scwg0:W}IԈ67.Fncv9St <߱',m~N\Z@YRB,;|,x>{(xfՍwӃ޶<]aHfYj_c^P%ǁЧc!UZ6HRk2rǤduVON^?M"""""""" Jpsf+aAȶ0զd2O]8Tu <ԊBX1YN(喇smqB[8q q\<4͝L%e xzV/uefɈ yOW61f;0[ã#s{~ 7 ]ׁn>Cֶs{p1=KaeN ֵ\Ӵ>&U|qlkåzpEh+[fY 1 .W/gR_geu D\x__QO3L\/{~7D͸ ;IDDDDDDDDABCyA%/BJQ-p]п6 L~yDDM`O˩ۺcȶl? , =DF-$!mү6 bz[D-$`\8e?~^ +^ m07Ca xOwcx~KY},%d Ԁ–XR)c؁6lL|yh3pDr^/]jYz-L |L/ /kn8_ҟ& EDDDDDDD ?넯 2~YͶg-^*,<޸ LS|h,s30&j-sY`5&2t^ꤚqt)]'c&EZ(W?WD0ට=g^6l`% naV Odx85ņ { ,-8~},`yG=̓#iH3~ O44ccKWAzttH.П( EDDDDDDD8@[xp)\eK:vQpX85ʌxQ`q^\v.k_ /]F"KʁȻ=S5x|le8TAG:*F|K>U|a~Ԉ}~^r 4s;d߅g !F Lc_}ye Y:y\D3/G8M/ 7c .yD(H("""""""r~\+> LdžRrlԉ\~tY0E3DY~6?v{|Tn˟ !`cl=4$'sBвĹm8'q`x .\߅@0 %,*G0?RwԿbs]?مjoUg a֢9Cber){1 OaxbclZ^z[k]|DyOM⛏ᰎ2.~^iqt>D+` ~'+{Yҩﲇ]f2C1ˎ]%Lh9㢙 :1%""""""" ȡ@,Pi*`x(4^?NKAΰX< ?(5[9%Kmż DHgBV 9GyPdBK[;M"lt]Wd}|/~+qҊ72=%3w}Ro%BIp[[~g s `BPq@o1KӸ}x.`yG+ZwOqܶs Up. Tp d(X M?/`+ݜ12_" zaskP=``_vB3?S""""""""  5/3 C1,n3S cj&;xeMѳl_SA1[آ2 c?3#eÉd3S/3 C-ۧp7w.g^z譔Q)­fť]eDx7m9Kn܉E-_ A%K^n᩽1OǸ{OⰮ2NjNjh-k 2>Տa<[Ӊ3WP)YqI >+.ܖۚ+f`&>Q2{@'<$^D%""""""" ȡd+ 91S>=^}f Go_T/,yn;{ scF#q3ZR _%t4gCRfɵq `f6"22f"3ݮP8'P~|*=(l!G<Ș<2gRWcsb|}8n=~3ʑ%wGfՀ'v0k3U Om+w p1pמ*6rT7^׆an*g[6/?Y 1_8fC=7[aK o>1rf鲏a(H("""""""rH6 ('fj>匍n׏Cu3pAAzw1 ?Xsm;>n3s<ȄBI7sՌ%ˉlh0Jj3f^Z͵s,Є{,1Lw%?~no~9<bПx.Y⸣5&gT S-ۧ}h|1ۍC\=+ 8<Κ⡋Jm0j~`Ή^5f6 i0wY0pPz*̆X[)B%%=22߿q(.؋^z[Aט, rVkI~sZnݍcsԙCdCD Ei"[xv^evxjOgkT{G/h!GeZ<);k`l.iK+xEi E2h .klq_2¿n0by1_sC:X\J~WO""""""""<Ĩ+es ,qҫ[|M8LF.9+2[׿讇O~gV` SKf*Pq t성ߖ#2 7ViofHjkPjD܋'&qƝTg 'RLl|7_rewy;`ބ1_}`ԣ ho~\^nX嶆pAU$ 8N8Ў~Ke3סa]1 m,4HmIs!z ?Q""""""""  qC.*ꢂ~H.}c+ߟ3 2?r?vrpVDoWmS6ZL]}N渀 [ٕb“e lY2`CCXdX?]KQyDk\-ń5l@oζV^#srs/}Dٍ%|3#, =765Cht}]a Ff7Gut8ĢL/C%w/Tq t Gva/& q|fc}xKxW!(zl-Xِ L"O""""";<{}LL}JB@H\qbd x16,5l|b|c/6 Xܘے@ @5g{_wu(:Yz!GQWYYU# !,]\: ]'x(:g$b0z(5fUW[ђ^ʰ n<;_C\yѠzee[OkQ$`VfݔH38kNp-m~+xHXD7RB  I/#s==c>u^荼ɛ1[h]mo *=-d>bWaBD1SE6 kSen+%2򱗙5gL~F(/`@e LecvKO: XsoqIy !B!B a!B!ƒi\/{ ѩ2O8<a1Oݪp8,);qz7ZJ?MR)ȗN:qf`@> z W$S&C0!p Nz 廒ȴ sv`'C/$zqWc˼i;\g֭n2f0^{+7p‰ +.:W^=y.!zKŞj+^[9 &8IYJ>~$_W__x#mȃU{S ɐ C3L'JO|~`0/8k3)$21=whfI|y>~׶re%G{\~dC].2c7 1ܮF%Dh(@YoY(0 kX0x.mo$߄V 3@l΋?O!B!B$ !B!Bx0-R?5ˆ*E9}l_=̿zCÕ?W̖6\p #2MIXJ0a3X%ooWPa6kYv%yx0-;|Ypݎh,$i)~E;8or^[JxlDOp~L/xsl`d+X=-ߜ>ͧ5O䱛W*p#s1߿`'7FUYeٳhLӉ[I)>~~lz~191 ΡDoZ⽷fv9sɶ+Cgv\VͲ]Q-Cn9'&_(\A_63rL(߃n-x1$9!qhKi !B!B a!B!ƒmL)A./?ħBP"g}fLωL}N@98j}؁7XJo@f5Gb4$HBf^>C#0h} E_+ΰ~'k|d $1kxy^`ve٫CZ,&Nw'Wxm3Ӽ mi+ I8g#~c~'kv7=nu W g+쀁9;޸Do(O}N}ߺvUt; &0Ree\B(n똼Ɠs3˛?o_hkvzL`CaD@$&gGyg%FBd5;4e% _R~ Ldzob|ⷞ8nHɠʴ[]! kT^E?9KgPU5 fe?L_ņeu~}`ӛG(Dh.;g)B!B!!B!Bv>*)k/o-lN/p}~mqLE0`)L|c}oZ(< g<(g->^씇 AA,D.^&Ϝ#݇7go=ξy 尢NHjm>t,?#t+GO#+@\{N2ES}i.cL 8k7T-h޹>xw̬#~~2$B!B!D0B!Ba2?W =5…ԦWl,.??vʾwxOk.$OYteI yت0֜1$L5>3`J~ BJiu̒A OU83L ȄL^\88^M c9I^L`!08Viz`ggogϟ`A7Kȟ_CfWx S|Ν ]#iF]Xy7L/t/;gM6Q=+߻+TpVۋNޖuU<25(>c 0H Qd4FC!B!"HB!B!֡KY/zeO~2-8DIy9cQo75م/(ɯj. T:/WcYb'pR$^$*z<&aIx^;m2ꊯRYTkk3]yp>z? 2mX3fz,$̠9<&I|X>KoK³hV3ͬp`֑6ϼ`C-@` o|ѽgVؽg89;Gx0CmC?7dW8gF@F/WC)voyZVfht%ư0B!B!!B!B @i @-?}<^ˮsY?9䵿lN\gCHKR)?ZPzY 7 -bpQ=!J} &pX WV[NsK]up@|pJg.xف.iS<}(xVy`G}O:Տbv3 cb(z|<-=yTM}xk˪kn-(aA$|V& aJ 𰞲 n~MޏqA~%aI`}fmi lH63⚔W QckE4?#\cno 32" Gwa'{ mf7 opo~&vcprF̞a^J|c 7# 49BW\}G;6sw}3+%7n0֦.يpU.r:y>} 2 ]%C!B!"HB!B!P1>,J0\F9?u>/hUC*J |>0 y(lq/gPo# 8c~<_9%a)a\y ` P.wd²Wּϲm;ujWn7F99o H 1x=lG`x/W o{f~_\V.~5{n?;^ 0F[5'z|.s0lf@˟S9Yo]^ꂍ0МHTcTJב֤w %̓B!B!"HB!B!T)9԰|3( }xU /V7ܽQ8%<4*TCࡾ\-k@J80)GI37/+ThQ˩61\ȄPve QOGlמ8Ƒ62܁+]y7 M'z,tW~m#-)[dfb(GN¢z9b,_<3vsױmU8N}g|3i{x%*CT 5oV $ʨ9AJsۗS2wx/8-C- M y)/P!B!B C!B!: v\?V5Uk B}eSs]zoXJ?ER 6lyc$k pR6fy/,oLl/yߙ~R~N*ά_yHpio2ng//_x53A/`_|aZƇ^W@S]z 8u2ܱa?4=c7 YQ}fTwߟר0vmC%si]=+B*/,)J7[c} \| ;FZ\]T IN h=aֳc^ч =DXX r;9c#e4H@>peҫ0B!B!!B!B) _~lc]73}PGd!}f]Y-.ފ@ʶ\jV =/'0LXUy} Tlcpޖm#-_aL~NP4sˉ);=g'N26, xZWBI~c!B!B$ !B!BxX 95B>&vY=kU+nzXW~fE}AK<3!+ 2o+ߩ,_?~-phyZ/ ͗|.~m ܃De0.2?K<y~Yx:`m7J w˩e^cwO6Ou;e=If;bf!g3c=.o${E\v8C-+/,^ V98χ9!~~/_.ދI{6.S$Ѵ:Bk}]iNSw1-+9㕿IAAkfcFB!B!B!B!<Xl@UXʎv&DgDWW-g#pyl@',W ylzV &?_ 85O@-(Q ,) NL 8_[-lNgȄ%n⻧x񖯞W4d7n A/ BY304 } gq2y6^wM,z`G9a9{s<(|¶a,gCGp~.kkOvx~x*h[؆UbS pgCQX3ˉ.Qh=w'{:ojv$7\ʕͿG``V1 )%Č!B!B$ !B!BxH0 9`lkV^{i\?|իoy-w ҽyk <yVz/o#$zIK 5$o$E&p)Of: Zm'3݁.`ʼn N&{?Uj8×/ʖXީaEX_<ëxm#m :bz>QTowCx7w a~X _ڴvnY͏oYoXFlY#Ư10$v]MLsiZC4CTc3@;~5G6ś~p61؜/TZ(YsBƥ0B!B!!B!B&f%T Kj[8Qr]>uSKc&}=zM⁻ʇ}6AA;WF$ag@qH ?ޏ+T|9^KK%a[Ǡe:X y"[yh~K?x?>zm y[*S! uI~3N:Y#n<^7ō4 eG<\ kv5;|3c^U^E2%*ᕇ|B]3tJ"}{D:2LTUm*M}BfnVURHB!B!AB!B!N-#r9lqyvBH[뫷i?:9q ޽g +5Wp420~U`xX626},Nc]#DFj<#(u8΃p Xh eģ+g𬽣x+͊J òs>m|p&~ lmT>Ƴ1I|axghr㛺l>{ 0"$+'Ypcu 0B隓0ms8B}f8\f 9Qg%Ţ!B!B$ !B!B71+aX}ZgIdD8cvǡۻ ,1fet/AjRj *zFÆ20PUH>.ߛe3fAD3kJL+lX1a^W{yY[s%^üizfw`yLB"##3w/bw_W=b=5#Mr}ͮxwg`Mg >ƽ{ĺqoWDUyfg;GX׮u0K&7G=FZF@wPEIZفmΞZCpt tEfp#g xdX)hfB5|fKE0B!B!!B!Bq gT4(M}To_mKo4c9 $'ecse$'L<;#_Z!ŒnFC顶$zN8H83vjB7 ` -LR~Oʗ26. 9,a_L`]'pdiIdFn}~xҎw >Zہ.}I} /?w-0Xn%wN-G7Ns o8⎻VLq)j &rמ ljqQf߅_&H&R*gl(,U|hYy)NS+%l0.U9cIwg}Z[A$ aXVM1+a!B!B C!B!ޝu>޻[RKjK`y'<x;0P@8́0$'Bⓛ8䆛pC !$p `y$Kekjz뒺w%uS|Vzn_=s?f$t"I3 |U+VVt¾#ߑ[+ƴbi _::ž{ T{$XN+ykƛV>Ď۳p**L%ˑW[U!FtS/Ȇx) 1-|')’ƚB i s9s9r kزBJHt*S9WM-f wUۺuJobN9Р4Ҋ @ Au]dv$xXpd>No^lAl‰/99oOw.Zƚ (W~< MX]eYb͛32bU*VnRQhU9ABҿFK4 -G7Zɺn*7̴9D| L1IvrfV@~7B"T PeS$]zc9s9s$t9s9{՘-i\פFxGI_,xV4w*ZuB@Q2ʹ #@:>,g1vMvܾ+m J*Ϟ5(X6 ՑsWB5m1T,Jj"q>)=!?T&۲_>*_ێtST5wrÇx~a]DT('y~㡃@)RZȎ}?1hEU!lr0rRӡy=#ǠIAN;(\6~?WJ$ϩ&U }s9s9 s9s9~E`,<('rĶZ˷r3|(Dj dPj1#1Y&X{L"j[}Ăwof}i(ڴ6-WXbX6HA+{&ai/*P"S-kAt9 }64F KPNmf]#Gx߭xY}u\ Įk)9 וC| uV8B8.n ]TE?/ 'wS bU5Q4xi6畾Z`UgEUIeYMj E('vֹg{\s:Hɼ&Ɇ><4m)C_%U%\h rt t4D%Ѩ  drTÂj2 s9s90Eed}\<}w_Il8h/{v)ln2M r R !9'OVԩ^y0[}zxttk^rEs9s9 s9s9^"01,g'>YʎdWқws߹O\ qػVt9BƧtQ.\뇹zM.ZX@ l|ll{{f}쪔5`oM݌O {rp6{䒡U] ryMD@ t=k1cfJ"jqI\-m*XM1B!h Z0 JY*Y9Ĵ"'G) A_9I"V `g os)!mh80Rम é5rmDDQIlv τrP.p(jB`adA)7Kv bōZ@ \Y "?'3>3`bU3W b;SRK^9s9s΃9s9s:0(PYr9Ծtۻ+~^k@- jֳ `"Hc*,XV/J Lai%ukYhƅJZX;P 0L: 0DISm,(`4JIe$HL'M)W  ;Ǜ:?m-j$"!ZGKA6;?£1/o`@)IYxLQLGXY.\$h4D($Mض]HP'<5vu'JN=DYDxwbǭܻ?~G&!V.]]Um3֐V .* Ui]['pL".C.(]ܞ,m9s9s$t9s9{uhts|F@rHӥQ4*k{@`Džd/Ul2NJ 4F,PemYu3).qj}9TV!Lm}Wm;o2L5|)V_,) FAԖ<.̉CI}H{,7|c7m_aU ޙ(EJB|I>Ҥ"uM=T`4J,_15]|AN魡~I&&N;f8\䲡N(h($3}B`]J:>ɏszxo'k\?L<U)Y{>#{0VƪΣK~,dq#M"9HiՈ/ms9s9ABs9sιW $)*<[>vgigZOYܴ3 Fb[[^`+ͅlcI+Er&dyeU+*D@z'1u߅txsvMZQ0.AM?C,)*A׶)XhŽZĉ}0Yg@+X8&u &]o)\O/3ٌ|,Q%aQ,hXӊ緎ꓺVee#'2AK}nɧ|G}¦^:5Cv3AMV# !> m`.cIp_~=IzEBs9s9:s9sν*MbRu֏SZoM* BZ0F B# ٹ,BIL>~Q-0h6~,>Iۓ\%\V!\.'~nb$M'$}0դ`>Ow-R)%2hV@I(ظn$&B.K;b;䃇xdud޴X=>*-ٱ&C -YSMޗM#Rwd?zbaMA(Os?1) X.ׯni͘nG*A Jij.V^4K ,rU7|q{SDgpc;=;G%mreYD$g}~ 2g:7(v.D9s9s$t9s9{ˀ_w>"h'@e"BpP> %" G 0JVIT J.X @r)Ǫ,Ttk6($AZ?X0Fhfݻ_|Fy+ #ޗ`iqY7Rtoj+*voG1q!!G)YmcM~?~x_ W6Wk7(,! ݱg_g&[|!>xf?ݵ6'Ηj0JJnfۑoĹ"cضB yNaEB0׆fTA`f20B`Eeƭ"y1='Ȃ'ꄫWEˠQ)d>;A!Aj ;{¾dR /L>@Q_9s9s΃9s9sMT 2lᩘ ))UЛ YGbw*rc%~rKJpcI1$Y7t( ;^.^`>J ><0L|,",0"6I+6Fb(PNĮtGxruV( TXlKI>(C>Jn8 6aGIIq fInyi+VurP5]4@ ?_@(}3A"̷Lz:vS 2A$yáךt  666a0"ON$\Ѓ 2t$FS63H%9s9s$t9s9_C~U|*i-HBaR`!> Xd9[kKp[SDMC@1&-eĘ >U-'Cg͞YEΤ;f\kϓe6n$4081b<&JBf.b(PXvFne!Ra.#_|j7nu O-UOHcn>};{6@ǥ`ToSg|^~v}7f?gO`bB+*IQ4a5:;xӚ.6Hksesf}oET,dJ#c?q8",UA6[ wPJ7[ǡ\߫s%,hiJ$t9s9 s9s9ܫHS_~x?,$@KM(b3\_}2 i$}/,ok{@$ w %bm(Ă֯,r#׫C[}byq  ǯ֎ܥBfKjIJr4*Ja.M ڸE$].Gg3>!~\oI\kl=o>4m{gy^Xhs&xJΩkgsŪR;~ JJd>U (ulpp'+U!D!1(dm7+'E_">]D%]E.Y\1MA_!}}qDq|E iuJ:s9sy9s9s[F3eH\8>_̂`K= p6&9KsI*ZgڑrIr:lt(z`*w RRM̙檮1UL%`4². ɐłމ 6\5”,Lx~j8x9~J6NP$J*S},}p#mBp0Wqhn1}WCr㛜 r*痞Ӝat>yOزΥlU@K5k5*P/.*;ap T&YPxbxzhmh4ʃlJ9E:+t:*'50ip4qM%}7K3ֽ<}ɗ߰]0H_G@ 䘂pF% nJ*F 3S};܋mn?l\zT")[Zmg*&rZ/= {LFGll!\(5&>r}:oCJZlł(z5Bs9s9:s9s⫃ 1An-!\^˪ [L4$̹CT5b/ ɴ  PbĈXBh ,iZXYlز5@XvƠ,ֿݦ$ԙL8~ vBBe*a>K,+PwLO#=U c>v6Su~o?+ƓxǦ*B^^вaҗwŧvL^S%|.h˞hmx)~Ag@hmlDɻ{E+*[Ǜ3:O_-eY6G>k-gﱠ^!\pjdy= AALIr CuRΣOMBJ)AˮE"aRՎq9s9 s9s9OVkC@5 1hzh$Q&DϣH IИT@$]*(jxQ|ώAULT@@b$,\h"P.Y`PLP CAk`i9hg *RR0k4Y(EK/leT J!f΃fC֍=|\8Ԡ iء=G?GGlrDs`WЊ}I:+_: {T_싴rpoHGlh) .Tё9t,yAr%arhYI#Y zȥ+-ˡ TE0[*[EiXlms9s9NUTmlᅧo'?G;0Ӷy^r4$õ !}Dq+,"%A倅B*ZUB06wA4((%fq|lStZd#SPG(Jn5{n\/]ms?æH ?, ~_>ɟl>u2.X^(K)>ٌwN~.ОJ,%5k")9b{F!>qĊ g^?k<7ֱ@c0׮Bu#e%LϛbS /JP_9s9s΃9s9so{^ 13DY E(,2:酂<)XZ0*mv5E K&T-&ʄ(]lCx8—a9t7`Qw =0BqE(%zjئ>gj{ܚI *e5&ތ`Rj.0}o?:@;zz׭B+VN8fQP)DnE>u_{M}5Ըb `MR@65;69 (S̑&7bK+_ !;*6Rv.DEw͐ݾ}a YA.ZvtcA({fw@wkȹ0رDR"ɯ#t9s9 s9s9ܿwPv->z KO-`yܒ5߸6ryi tWv@-,@f,l\@rB )(lLK&fbXYP5 bKa V̾+VڧzTS/ YEG95 BheHbX‘&`dLI@e>kՆ))rmAo EW҃((~Й3ă 7DkꁂQ}tIaVTi#,d_^KGH)jRʏ"_>_??+|AQbc|5:6oX+tW|~RdK}ےʒdu뇑z:sĻOC+ rV?UG*"&ѧ&ITN9(d#ɼ rb4Ʊs9s9 s9s9-5~m $1nC佈`A1QXM /2a7T$'??]й ]tkW!,"T&0ьSrU+|UAХWN|qssC/?zŚ,6ir<' @0;+<=7^k9o*ʟGrE|9^p  0Ec}iTwx9rي$, z(Ѩ  .TiSꠚEs9s9 s9s94>#7"M|@ I ]#R\*7* FN""򺃅xG8;9J^$a:QEb,' >pv]<BQEJobm\g;ڠgGgQgZ!0].=oElc.mSdiFG I+Ni`UB;Vql~zW ! `dkh=1Q!s|φ{rB91edO_~nǍ[JIJ&O1: z9kFEJjtYrINNʱm>CYV5*yM뻪ȵm:Yɡ!u @5VD#{/'+ꄫV"@-""zA8@`rr~,ZM:s9sy9s9sF_|+AYO ۡ$A3P\HMC*?I`yνN(p' e<H4A F)V,J+hN? aӦbB;:}νtl`p'L$*ĖXqb'UqDJJv)"ۢrLSkq} ֙3{z=ATMs}AH}}ia#WcM3g@("E I* D`:#6mL8(.AY);c#Lؤ;$DͱW=v Ȯ`q8(+ +*+KH;tCԿT:%nztۧ{6FX#t9s9 s9s9;wy߇QT?Zp-$g- 5h+PVzXl٤\?o#Rm , $  K(56(Ac 贈q? $#sY0byFz| X0kӌJbQQxE ,'6U8e%0_:x?lldfZO,ЈÁ// v0k@"\oeOP^fI'!c H%)WT^{vfmDT !@<|˿yuۧW8Kڎ') 򀯝]ʀhsdvMoo¦J~ا~!7N> Zk7V){=>A F@G>[ά1P"RZؒ^[s9s9 s9s9ށN{(0qK5옵@5g& ΀+i;@^^G,i ~sz>s<\A bLWEFF>ޅLLf2 lm|4 Ҫj659 W.*+i[xy0;cQ({kl9},yPP&[&7`eOm{U+_=Cy?&5Yqz?z#98Lh> F0 !+EZO=q;wǷOsT+Sxx.|]郣|j̶;ueGFaS6 9Y*L7߁g{(w=Lb$GnBnNP_uvgV, YbUTU39s9s$t9s9_GQmQuVa. %TQ@*QN~, \Mn O[3oe+T uAUrx#O>LɺPi[,yVSx6Z\|;(ӯCQVYt/Pl&$X+Z{ؚKmlh㳔\mȅZ}v}\EtzjA:s9s9;Lo 9s9眃wO (Aga}]giHU?|TcpZ ҐQH>ׅA"&X+aBƎ!ߙs9s9W$t9s9ѩ^:ZmD#Ib>Z.l$w9"@2ʚ'(mqP25MON1PFgg|?{k_+(4$e "HQb#^ \T %ϟY_3&3 Xi36ljjTRP1=\D(wv}6{Ӡ}yk*4.BmhHdݢ Ky}yX'Cn$o;7*sl>T"̀\;1 8(( ZZx0ia FxEBs9sιwUs9sν A dʍOشASTQEQ`\ =oS&hA_Ti/d]24Dv-k0Q<$ɓʌ}hB^ZD7ptvwaᖩM91, "@ [,%6?S^SAY4~tX͑k&m zz=>I2l6\E/@4mJaHs9s9U$t9s9ܻ~ׂc!DE6Z U+*T+G6dAxijk]صdW]yΚS*'(y =,pgmz,LX 2O #`"ldN 6~ֳuW۬ doMz{dnyiP4G05VhbpD(CYgӭ.K=V;O2@OиeiJ".A_APN)+Ƭ.?4CI[cEPL&C|0/^Yb`hm<#Up.o{C# ׌o ZA Qv`pxӂ*o3<(?\70Q{Z@ѓ  KEr$JЗj~ێGߓT#j"DR$t9s9{H_]p9s9ܻ*AM*EߣO} BRe. G/![ѧG9 (9ilA0aA߃@ib A,LW[Q$ =ڼP_OCQ>O܄\W>/%4P5;v56#u!IP?'KƱu` 'F` Jn>N#HZ LO6&wo_yi*XWDsdLdOs8 ũT[U+\ UAP$7-'0~|7WeBxs0=Cgk;p[-X  uH+\$, ')ӳLNd|9:]`'<[ !GGHxKFEB[ƨx9s9s+:s9sv uX% 5&VyI_˥6Be"A>qM-䔿r  { !B¦ebۑ] [/..P<hLuvn}^/VM!`a:U@tqH?RkV&~wzF\KŮ ieH7!MguZf:AL:NLO{"=}C{;_j z^z](@vɎx42Fapb#3%$jwbPN,yb%K[$Ll$ĨBn"Q*zeAic'sk&% \~I7jg"4ikckI$t9s9{Iw9s9sFXcw?pO_gbT._@Я\?aϊ;1 #!;z-ٱѴ*U3')yVt?ر2k+n^=P)VM5h=̪ڧoUBҺ"͠>XhS0::Aj=E}bBBF:tZlXWt{4x &B +?~3JDi6Mv%tOח0`zc ._?|Xs#H8h76]?d.O*!>z>eTH$CiO !WC;#-ˠ WA'#/%jCiHF5Ī*RLx9s9s"s9s9m:[ ̂i V</i6 WJWn{,rsTqmӪ']CH*]Ȯy/223=@g/XP/„cWH4~U jVlct@fצ ޯ !nqXb;+ۍ{r%H ooLO%Pũz̠47U'RNt;;ZBꂉbډ&+eFPJ8& rrxQ>;z&vLrh2!8Xow|YÐAB;@O-(X_zN=Hs9s9Α_]p9s9ܻ"4l|y6G?~ iM"?9Wxh }bV4f(W %@!2:Av ɱO]Yxa/ipN Xh 0ft>"qi EslhlU) R?wꃛk?Wu‡BZmj-jy=w?쟒9ץ "wo{_sO{\#%O^AڊXvwhܱ0݂ e̠s=I(@vl)Y9_D{em=#$s= ~rGrz%?gmM[mp&Z…~ R7 `[W#4q(Ua\3ڬgW`H|6v\9 ;z~c&z([n"R*vM_|.-^d+ϜoqVOT-6 I:"Hg&„BÔg_Z ǁG,dg%&f>fUB2DǒAT0aʁ*oIBfΣVHbaNWlb-Hܵ'`J-`M〡2{ڻ /=~3P*@v֪ D6.1xh]' dW< zR<7Y @2͂v;7Vxyi)kA7>796ՂkׂK~xvBnD_YDCL~f\=loQRetmS#z-jݢyJEַ4ABs9sιwt{9s9s*$Uր{R[wH4I*eIB;7Bv2ϲ'rVaIIUʞzl-#ipұҪӪRKcFl9Q%H8#vo}Ư,oׇ(n>~ $U -ڡyف*tO.T|\ 4,YO]NNv6+m,]P,:KgȑQȅ}aZ #H blRP-@X Ń9s9s$t9s9{[_V+)`s/f?l-Lh!Ų`X*JtA.D?HU<4x S^x (h4VZHlMIH~ ie6MߛAmߪʹZE/gㇺb[JARj3lHm`4dh&T p9BsaξVT/S<6vKڔmMN݁ L)ϯV oFFryO0Z;w6r=3=m $0@uƋI0mշ5_Bn[EAt`Za!R3],lHh0MǠ[R7Sf T"~v s9s9;D:w9s9s&w#| 0M6ks+_,xMqi ~ٮ+280gA4 jQV!M_JU$|k=kRZ$L6 LDDK%*RrlkPeԢF ȱQlZ^pFqZ_.(U0^9s9s+:s9sν=wѤƪ\X>/o⏿u/`a&I`O-F}.D~=5 K[sR ZHJE9Hۙdj>h? I}+a ilQ"~<[ "`A *!#H֕QPHeOK̳7'zIAc+|qY /lxnu=wh\n K=<4^ k;(<3K,JD@r͓G){RAmV$4 jJ|O4XHhj}5 ~>*UAj߂FVFU-sW0"$.묇~\@Ž6rt:e{gM"4U$4iY:s9sy9s9s$ĪՇ$uǭo!(lp/{yqU,$>% a0 q@r4Kjy2~ A8dc/l:u-@vw %{H/k`Că9s9s9s9sm  X@3{n|.2yj21űEEB&?aľteQμPMr*! e:SKصdW\,}2A%b6N%J}iD; * 6d-~%U e ?W{N< Vp5@s #pR*V=h! xַ*HZPf} bkCaEd$=Yx^wm$SI1"HIϧߍگv;OÕYe>!/P7@gOmU])?v<*IPn2av$2 ?yV$DFZQ{$yTB3ݒ*]6oRl sI(Q $)8(,Gs//KKP*h"WXĥhnq[4ܛQAE@Qj+:s9sνSs|s9s9nr7"M,Q, iL$CY+ە v|v@hm1y\8j6{1RyvBeLPKC9c#+=4cBz. l,IƷ0ܤ6`Ҷfφ.S_Mh k&f+)Dq|J4cѽ&DŽH&O4yiizZW>H4lGT0SixY@E@ WB#X-L !GF*AMIMQwj[;s9sy9s9sG2 $m- [i0τ`=@G(ʅ7.r`c ZDA3 6շ.?"cle)N/Ӱc2/ PIt[ؤDars;=#M-jWCI5ڿm7آ"aY[0MZo}_jk`z%m#;{ K  ќ)80tO i ך!HXKF0cCYmM<9ㅅ>K*9}DM>HJlQ? BRo=P8O3rA*PuG{kB$PU"I[;s9sνS.8s9s]$LaAj_&X % Gh0a0@(-D:Xx^Ǔ%UӠO@h`ǽ`s_Cv&h5-ȱ+')} FU5lKg?M[!cϒRj/3cFl3JÖ&d6{ޤZ٤m:n !IUtB:Oy7V!}O{Gc!%'.Q<;[S;;M#ۚ{f0Hi\lN7Oh.Wyi0P  HFu#qБz Z$8\^I=c([%f>:[܈5wmPQ[V s9s9"s9s9܏Z$(ԖVv}md \y; EMuYd@ xixmpXJ1kk?5EmN&Fbă,D%!i'{!$jqW_$"` } pa: e"<;^aٔip} [Tbjץ!iWIπ " ɳ@lBce:ߧǯ% W8 ޗOIe{K\@J9 ʹals"Ҡ~N(l,:Z;g.")R"EYeǑƆ<&m ~)hzu %@HQP[XKa[)˖d],R圳W9 \X{ލq" pw_^{ςuN.A? tHL v*  8צx#4?NЪ?6B!B!BBB!B!&m@߼ B z9YVKǣ; >d^=o<_DٽJwDUD\֫;F "UȡutM;j.c=o]e`vx 9GU;AYKtg: FO1}>uLCI4yR/:n њ{Y$ƻJ;I-7uc|M;g-kWHoH|Mn%HCR=3> +~m 014ɦ8>7߲3 j)b+#8>R|]UH\-rXq^3HÉ0:1fF 9w8*ž\ ]oe&$tGB+QL.| !B!B($$B!Bql؀rHU%1a7w:Fw.k{Mc“M@Xp|9UacϮ=sh)s1Wa[WoǴ LG q!C+ LNWzc1=d.\: K>G.9qrM0{9c1x{ qsp^=Ʌ΢^XrPW\AᕝBBOd!429 cG0/\}*0) 6 $DT\H8C q6&B!By3B!B!b*QHzX\S }0ꁂ\ʸ+\&?z ݪ[;yYc?O>WFC PzEYk__]|%Qr`䒸"IݙA/v@,(ip#L{!;g8LH+6/k̩%}kRĸ xi Ӊs7Jww" !B!B($$B!B9l9D 9ro0d| QH8ʥ? _1pѢ$as* LLM0(/|)`! SPgu'5I噳R$}(0稻UE>߀X??{xhnz:y܂fi|@i^γNs}Npe\SN>0W[Փ[}ND) eD .MMKB”K<>ɆE9^!wwT:+wlosńKoƲ~s1 !B!B޼@!B!1n,[+QW ]Ӵ&6@ݎǠ3D/`(gOtLbgY9Qx=އEwy[ 0Xu1gօ{K%̝fl);NXqgqmDq& k}=x|E6q_WLK1+[vRɺ0by^['@, $_3cZ=7=nNxj (_{pb:YH{`񛇹Pܑ¯ёB!B!MCOӑB!B!7PlkJϕ,:4!7P${aOa3X݅uv9t<9t(]1W`{CN݁1 rP5X ¹frehu7pI i~:w<`JMB﹯!`DZs[7M{d|4ڙx]:mO|]F$`H;}?}jx#."pmr~?Cέk IHwaQ0g0&Pq#Ȗ~HH!B!&"˷K!B!Bn&6Ɇ y%1a\"Н ЏA0uL^"lz=K Dž@a]Yڥꥈt.bP.) 9o==ftp*xLI"Lhr*gWđ,I7 5ZJ:U)_ >'KN![֭2)/]wZe0śжK{ 1k9\H\m޾ 0RH%4掄_,ޯ5t$$B!BB!B! .$ ³ v;Ŭ\֭‰Vn"P2l=Vh>PJ9(|,t(&;iL-hrH>-\&ytⓃp)=&6 ՜(Md+5}}m(o@XY%`y-2;6q3+=\3ѫkݥ0D})jixYJ9Qg؉0x,7JL]R?xcꎄ.\8;F70#!!B!BțXژBBB!B!TlB.Ri[3-*tt zn:J%L^wqSe5Eq^.?@+B1L_>U6x hv$M=bGw'( %U+΄A~-Yq"8qh怢>96JKHsy8bGg0n}sS7R7nkHEV/krO+bפYg1IEO߫%fl{=s#7  p B!B!B!B!8l° D@}@:PƘ&`Zw.za?05Y$1%0F/`/]eEHu2IdzǼܱ ),9|F7(R [CyHR3ٟ] FxmQ`rőhX܆į{<uNde?I8^:i95EFd=佥7X[ИܙS~M7E߻Dp3i] ߥ#!!B!Bț,/x B!B؄@x^*Xx?,=f(0Mlr\Jrߛ!^f"敖G#ws%m2&{5~̹4jtYvh~2MB*U(98:;KB0#GytZ;`CH.(2 Ԫx1sUw=U,d P^I]TS/gs(3s1!ѝ}ݩw c^^t  9hssTEH-#=|ABTڀ1C n%\Uܗ.HZ#,\T+t|\[N>7o6HX3̠WwQ1)  sۚOK"Xߟ@1 17P?KbnK'.H#!!B!BKB!B!BI"O^ITa_7\D*%_/w;`i P8!oc^ Y5Jh~?I0Zp;$b{9"$o%myw~Ezצ@來@B[9_ι5@^s}'\%vZT/mխaUߠ."yܒ1`>1?cͲBb G}|%sAC`f; B!B!t$$B!B9PBXWEt Kwcbr_zݪ Y>|1F Psmp3,rqDr& heAA@*!~1P59\0كyn ϗ;O~hNB!B!MByB!Bp8`p>Mcɬ-8)08.bPk,DZx{"B8v*&`_F,Tkhݵ>(1s8iZf}~o? .7QeEYu+vb&/{3p?`dP}|}r48Sm}"s{9y7LVBQ7?k!4[MI q߄Tdֺq ,ē"B!B!MFOёB!B!764TIEm(G߃ˠLzB3?X &L^*`(J 盵f᜵L4K ~N<>.\mKȰ@: W~w[\ "DCͤ}Hvg^ϐ<.+\+q/gs&1a[*痸^YkKaK7g@ܣ!D5T<~IM|2?_q,maHH!B!V +'9oB!B!7&!X:̼qxֺ.{qQ qQtDC~쵎7۾\wrQ_ ua/rSijKbIg?nۉqC)eɛw3偳糀΀xr͘ k r\s8O5FdC02c)c>h.ȴ,uݙO%&1,k'"B 罤q N џ($|̯'aG!!!B!BB!B!fT6[Wq B6G} Bnᎄ".˞A#ЕŃy|)fX*2W؀0\3&Ar/ 0 tL';!w?<9 B eq 6x/b^{0/cXWQv9& Mg qf^YCy$STE~maNt9vF;PY{J;ȩCSH.` !B!Bd[ B!B&T6 Ap.$pv 1mJ{~{=KOKOnؙHvrϝz "B 2_e_qu1ĝR-.?>}gg#_ӭ\gۙ, ee~MD101%^8~Fm!! N!!!B!BB!B!A!`sa5@(ԉ.\),uݑwpb`0y`EjvYsIF օ~9auWZ^?G|vn~huh \[;iMm_r lPΤ/ 9Нxy~vx<@9ܜk f"[*4 %aɀ#mMAbk|@ ' }BBc:B!B!_-B!B!fb*\P#ϪLh@I h#+_MR"NC.QH(UѐIPoL{ zg3]p%1[]sWw61ڎ)v6K Fkܗ}Dz !L Z>ϱ<SN:ʵUgN_Yp]Ҹ-2lZBߓJrDLPSH%9#!!B!B[B!B!7#a?PI:Gkݼep꣐-( hJ &,[?Qv^u4{EQ{"">D`@Q⢘c:N} ;Q쯗S^ noqsLLZ9Ǧ1rXmPsԐ_^[svI 9q/B>ɵ5ݝ.sxWO%k~ʸG]@ 9܄V69 f !B!BHH!B!($K b(vsr9y?eeFM(#@' {0yuӫb'1c+|>RNITNr0ںo=^;/躺͙I9Б 116 Yu@1n&|BLCgurf/0My6!ilg2뻇X7 U8"9S~/>_S_RgLr-$4,1!B!B_!r!B!r3 p ] ^ҝKt G9@4JzQt+OaWL psa&hJ ˰sϏC#kEHlj8y㇯""UpHt:t,;mSϳEtNwlsB7u甆yw5%64/;6IU#4ƚ Gº!j ?Ѕ:B!B!B!B!Lp\E'eC"b^ۯ,C<Qʷ_“M09^3\l>vc>\BRbLAD*`ˣɧ>\D?C"pc:A/' =Jzot^gwqG[1" ^m8EZ.BhY~,v0C # asʐ0Aa@{p#l'6Eȟw.vTQ̼ne1Q !"BD+E,+KFl;ll! )$6vBH7;\ ǽޙt_%""""""b躅 $ +zhЕuf_t[ăKPcG~6\SlUÉ1dr'я# \CW,Hhb5_`|}~+?CO+l+:\n}-5%%pynlKi$$?ki] ϵÉ}z瘾SÐY&Zl{rݺ`΁ ŇRcMkPXWP/&~%s `f1DHDDDDDDDĭ16ϥ;Cw$zTaþ 1xKgkMBY>'ki1[?WEټv꾈7M\޶RQRȟbl#q~OS'?,=K cWy{*^>f+^iZ<ץzr'׍}Ӝ[W=W}[(]m2_lI;DX$ӧkIjga}zoڧko~UjMYBw )649̶~2`Zc{%*r $$"""""""9--$ SωT۰y[@c_tW4NJ,zyN9 Ǽ~j4>8TÐ!ub^sSa{k?[p }Z8;<^B~ ]AAjY_u~ٶY^m{ ۩t (@)1^ nת+Ln껠lVÝ7Cꄧ{Ǩ/*8pmؔ>Mm!+۽h{lhkύAB"""""""" n Y ȭl-#;T=XܺPpQ0    ZAAAA>eVrpQQd*(KEYy/BRlAv /8;lC ؔE%˰-J47ΐrӷP+ ݧ%可l|nE?kpvBIî@Yg}aL2 @+Q(6pYs¶ـ`$tZ#V+AE!%C+:0C*.Z+ N EU"4V$$"""""""z%c +/HVG 2 ~U瑥^>oO*@`qpűEMǯm AB?7)%Vs !+]> ABề9ى|m}s @'0UHX%G~]0@p_)-s}6R_9 knlwtx> VfX -SUy_rǼSlkь& <32m} m A0F }>o|~q #;jnYīλ! 3T? a P :m{4fiۡ7񾽮ɶU 04$dm \_z16oۋc5 u׭"z5Bv@l8&Bо " "!э$o9 P` 6ǁ ++ypdVآyg4B6=Qdy#kg›o3m9kȓ0+S1{s_ {qm fyb6{_.xwƶWlA{Wdpۻ zoil mu蛶os07|-dnWfצ6{ P 6}U+h5 ǥ51Ӊ]4N[ZWR!wN?~$ZW[6vSk2KI-m 1HHDDDDDDDt sU$Th ֨}q̷Y6Ҡ$GH7v*鳄h@:CioURiCfl }M >g MNmc4ǘGv¡*?ૻ?_[1 QW 9v/]"Clu Tz~8-8UFp\vM{^px}Fϐ{Bⱡn_}m\~JāT+L !m 7w&~omc&XXu8~xc; ꍮZ;~Cަb&+T"쌖+,> 1HHDDDDDDDtomVڲЦ9M}Ws m%ΧY#`qu¥sQ1~nU$$3q}ʿ1?<=_ժEᵍpusɦ v\ LB$@PCkݡՀW+" m.L+1&j J~%G 6]/0(`47o`s=UIpn>W~~.Z_[Cb A9ӣo}h+I~=bJ4!+1HHDDDDDDDtW$"m%zW ^m"QpBkƐu&=4֤ѽr* ǵ;\N F@ CP.^vv,:nk mӍcGph-ۘI82pa+J-}}++'yzuVPRq^2T,{a zen~Mo9l_Z1] -oץď1‹~Bz3PanB@I_bu:W|'C:] T{VVcP$87Vt\ܗmkWxbPQPKoR>Oe{uWx $ Dy׷CcpfSJU:Q)G4w!D>g!T]?X,v/ v0HHDDDDDDD !+!H Qlc?NxkN %[Na~*eyo8qD:?uְ[t8L'oVg]Z_>Wy{yz^Еׯ.6r%Ń?Wo?~Vh@ f"!(TC/83'1¬P2(S8oLtf.L$X x0&WCcAB"""""""WN h~L*$d(X#lT|3`kԯq{b|= ~ S{+$* V] pmka| 5yֶ޴=ls[KC0N_mɻ֦WjQP*oy|ʊʆ^g.ut872| 6 oe6:¹u>sϐ }:ST jX=H*: $$"""""""z e$UҪz8i$t[ۂOBlbcm|Xf֎bַܶUBPa-Ƿ[8'Zu9[4~^- <ϯVF.?&~$Й/>)D"^0vAc-Lbl pw]i I[DcZkd~A$-7DDDDDDDD 2ihP. SMVm*_~}S-yd% cO8a?4wb  x:]<_; P  neM;8sr rIu_BDmT#C2z=%iʍ 8åf ҩx3xhwu6_;s'u-?E>[o8Dcr =PZ+%۶+ !DDDDDDDD ,eoT`M~GyFB:LTA|ɶސ|O]|5mϽ\LLjР0:qΜ܎n*]}gGaے9k j*t]=ţB0C0Ně4DsP-a=~ ﯅5f`pV"/c6&"""""""bURC}"QppR݂طm5K osي޾<30!7O3PqP0𰚡` 5x#xuL01Mn[7(*;+h+[5HW觹'/*}{X!+ S5p*{~p />AǢWҍ?]Fͫřm4s~^_ + i  kVSX{ҳN+!֫9CW6cp "` M=k-X_-MqCdoޒj: !DDDDDDDD Sx8o I.'IBοKq4Emʿ^2& dVdO f 1izvp&mnPp|{ZW׭kӾ6Ԓ]Ӝt+<+Ӏϗ;_mctu}SSU W۶~w»(b.yV$ +1HHDDDDDDD &>rL%NܔEj;ol"bOx/2WvPsObSS ~B6cx_ƏfCry_ BwV=\*:Y%/zM>3 "{Vgμ^+ NRh5TO^S+T!L+7ژAB"""""""WiE`1!z 0 A1i {PzhQC~}CG=^f;]IնZeI$nNc}ۼZҞȇ^8_ W_=֡Pϐ5+Rͮ{ypC !]{ 8o}E]ߍ?Kxy#>6>"RF8`H3HHDDDDDDDj\"""""""z Q>C\_ &' Z6_0|uD@o\4Zw?x_}$׬_Ѕy{۹4DÏe|N+m@W !~wEJ\<`.S5skxKw* )LZyUs8yl~Zв*|ǖ r~Td}k5mڇBE>_&ϭ5èEעL5 |.6T4+)=3~˯A>sO1j1)=DDDDDDDDQ/ثCDd>g6~d |U =~~ }+}Pɸ& <̠jֿ~y4*Iy&̖!4, , }Z8.%J}JaA/ol h~Lۓ9>4Nݴ3Ao Apʪؚ羼6O|/i"ܸ:EDDDDDDD !KL L'3 <&A938w(gp |6Re7҇N߼a,VH"oZW*|)ߤ[;)>C=^_;E: q!^X3JeUw\{4Vkᳱ5_ҝyׯ/a8{71=$$"""""""zWV(gHedzW1Їqcy CO/|"!QA[T~{&7H| ꦅJ !1HHDDDDDDD@fp"q ?V.q!uoyU¯=uTaaPt]Z`|ӸW*!9A};]- 5W0}˯K:$D|{cʄu+D+)VgfNݴ9`1%_zdۛ|r5k<$$"""""""zi6 @ 4Dx LSw$̀E;B};U2 RTˆҭkk!g ' 'U.QX+JuIy=S0(AC}:Mcn49;N^Fc_<{„ V=|:!s|?TQqRY@&h$Th$"(JP1/H|%1!H7Q AvؗRZ-}g''99'gmٲOd9s̙/爈(H("""""""8p%6f:1DC7s8;YTcm]̶m=0:27λq 0RmWgեr: b/._ړ>)Z ?f_|+ iFۀ+Xznr١W@1l;DDDDDDDd<2`Y݀ufY>g\cf?ZD\ M㟺FGނm`xݿYx!PYL6N9Qrx,~{XcxDc9H}Y0z/u/\h/y;{z~<KGp~7+׀`MYь""""""""ȓ%qp@X ,tkc^"ivV.*m(,OYBe%s##W׍*ϊB}ƕ?PYj@Wmx,mY8tacLp}y&eoX\txQNC.(H("""""""Ȍn=p >l 8!25b  X`{8>uÊ_.<|> s! &*BYT!OPalWlV ֗oMdg=ܘ?o#("ͮ,^OxXatP@!끳Y^> lcv`~""""""""3mcm-C9bLM Xv|]={$iЏrh-B euKg3fm\Y]Ey]ymζW8Py~rOxaLdϏGҶ`/Za0e`W.Xsؼ 1e]QPDDDDDDDdq9{4p;hJ W`=qf6 %[woM^^>g%ۗQ]/J΋)Da6dKrn2`Vc)_Mr~ۖ7 3ʵ”uGݵtl2)~yj|"]% EDDDDDDDNK2.+Cad$g }o#G!ȣ,?r0/d?s5`πAlkFUa8L_Tf㖅(H("""""""&a`sX|88xa & mzjy`ЉcN9J.^^!,mܯ+y2f?_}6K+ q?*k ˓6ta 1Xpyũ2i| lبoⰱSap#`_qz+?LЙy5خ<;WgJlrQegYZ~~c3r=L<U[k?x%_)w_ րf9{23~ 8,`'[Zp\2H("""""""r2p|wFXf  R[l6|Z' 2R )2~ڇ'۴LϒT)'AvdmK2+\/TS|)%B6J;Xa4뀆s  9,3'RG hFBS^N rle1 l 0 ?~o-2ˠu"ˎRO/Gv,q\eNʒqW]Z P]2{`ަΉ{w%*J ΀̀M]B=`~_&yQPDDDDDDDd|x4uo&_ZtWY`2,3YsX5e8Kk}y%8oz2% fm+#CK-ui;j:~S1r=v3e  yp9p p5p pewGCπm,Ȣ;UsO++ld+e~ba|lmq?;ߖ6g~V(7qƞK"q!T  0SL:ݓ/ˈ ߡ7_w;*.>P5 ~poWݾuAqbW7+mct+8 << s3++ʴy߿c!!۵E{O_)ݻBB #WJJ֛Jڠ\fcb|j=u2V 5^zrf8x&y3?#>QG'o(Nf}%+_pZRNUuV[m;@9-/ثKB^L.SlņS񢻰Ncϵ kO|7 s*qm_^}Aҽ+w5UC/OSiFJӵ˟Εd#~mm̀<y:JeLd{8f ml~E|;Jӿ'2e<w_ߔFũfq1Pd2S_M6 S;zJ_/^Nk{ 5}3=ٵ46'*v-K/z7fjϺFm_Tm~Q\+T4Wx"֛OBYE^s;ίyhs}c}2h?>#SRQгy\o_r_9,}Nh9T.[Y }7gs:^B1<Lj~Z'8O ~^ױwͲ+U_׬îpڅseד,[o>)䚇38$=6fu8F]rՍ]c  VىY8TɼI$?=;r9/"Yט75Hźɳ';K,?eBiz]gģlߔD31UYMk%ِ3ז5%BͰfLX'{$7͒=zmq IWV O|]i$\=Vn\MaBZ`fMs{vxՋkqI[R+Y_3ێxVr!N^8+c8F%8_پM=y:b{E[/v:nۤq19DngU~,qk/>E4==+qY7-iFU_^2qސuy%&I$aiN|.m&˫_Km~bܚ絧%.quu坻ص6 D9Mq $$K_"x&<?dˏ>[-h* EF=ӅDsZI:}ːboy- 55k=_ӏCw3C7{J0!،K^rdlIRRg:~]s͊`W@<icncf]1Yso7ג}B?O?YIee+O!<qCg=?ZW06 :5^,eܛRݸjBn=vo1Ǽd>\v龜1"6anfVEy079VOutU6$-5῟a~Ο T>>GN}{~Եހdo}sgW97׏稆 vam)uU,>SvRbi4EE5`" ) ƖX)3bv U*Ԗ "{py:7WӤsffIrΜ雉zNXxw kڵԷ8no7wk4vz\U͙窃{պGݹׁмEjӽb ;>1 nx!H[CQܡ E` v?z1t?߭xZ'ڴt&[}ou[mQ90/-8{i強 /DXԅ[V^+u`^ǩ|܅F+[li xix0*BQ[꡹q6K_|˕ګ1˵D^+uv5⻭u Y֟pgg}v_֚ \~>X}&QA>՟G;Rf_Rs|~6-um̫׸T(Asլ:9sITǤڇU&\z|j'&QAPǢZk"Dpb1O7UNQc붘7U9\[l3/nDM7 Az"W#Qf&|]ԉ]8,λk]H-k!Kccvgvc1z8卑u `Bu3/o'mz, o`? _xZsz,osL! Zc+y0dw=?T̝Izv}yyrK1o`? G}~h# szrpm:/B|CݳS(!j8#^_T>OϏ7{0' a3ǼI}$ıI8*j3 =r{aT-?WIknbmij];*c Uٵm}5}r?Sm|zC4H8QDN!ǏwjhLEWz-yl=v^rO__?Y•5?5-xL+. MӐ/?줍g;f$<sgNO*r듮z{c t=U;#u|셵{#ڡ֞: {:XԳwK=a3τnu8o2p*8jMb.DXb]ymEO<ݿyƟD}iQ[=)Li@碾-uܬo\uȖ^ksvkzjzuZ.Y>[}~O{E'$\.ηsC`]^uG[|~\7͗yҽ(O}rx#TUΨvi?o q$.R_9xoz$BP-)ևN]I}S+\msL/͑S{TAoxZӇ^6C=0mp:xG'AiZ q|;_v~n7o)j1LU_髿^~Mǫ`6k9ӍL^{,+B_ֻQ{]֟ڤ~hu~7p1 D=BׇUuno0Z[)ZU ӘRt}uE vK1Gێ[o ?jfԋ-Tbݴƨ3cCݳ)KÁ}bz>*W10e[|]]_{o{]{<yCJoժ z>]z֐6pj>.|:b"؅ꪱZr#J=_ywQGoaF{7pɈ|Q*UBW_Mǭy>+yb|/qsן;W=o w'|Ѿvn/X߸>궨բa8U}g~u? US\sϛH {wWo;~דjk6.Yz}ԋQ/m W}Kk_#lbsTzϻ3ں_s3}S[||x5~j嗆l;8jޛÄ:x~i8n=&1r|Z Ž̈)Xbܯ^[j; <χE]~׷ެv8 D!¨O ?y9uѾanY?:Bvюr/1y\E`0ۍS?4_usU{|{nI{a}RڗʮqT 4Hqp,('qjsN .."1wyd,.;~%<<޾_]QUS-v\Q^jLMg5X`8/(y;dg{CsaV{Z==:;`~I-!B&f2fZҽeORJj\1 9׹C*|lk煟眉TWb7t[Mw.fvo= \Yn`Y+;WWuIZVu5Vxss^Й97=;"U7i5Xwvۯnf[VG@wÄԪZskiYRQ$.u\]PrcwfE~!Ĝpܟ.Q_O=AZ:5:7@8D[euTDIzXM{<= z{guG,:tuz65[3-F PjjZ7kc~KVJEjDꎚqܵn{:{֪gTbY;㝝UwUUCU=^m}u7d cS-k-SH!5&U5ks]uMQ'ov^5(&n^7JR,lRE jcj%рMR%@>xnu8ӝ);ws>ԙyzafG^fQ.BKӳԪqZZM+iק-f]J7Byڳ Wj3Sgq$H 0_ƫu-.{v][e̖AY|4T ']~5\ [nR] l~u\{sq9ꭿ隝"r~7iwz뵍z_y~9gعc&0Pp{ :vu DzbA~mG?2tlyIN3g䵒pkUi#x=Ny9y:遗8dkv)~n˱(q#JSWS˨5C9r>O !,>Iΰxڪ®[^뙅I X"Y캙wi[Tk^-Kӟ4k vs$=z˽ pG-nwu˜wय़GSyU3s0'iSt \YZOm),ha;#T28ZdyD%i!*h;54TDihk&%Zڢ&]4A]}=gADu˹gХdK0مԃo'%G{o޽Pac $ʀ }Ot¬IHIv)r]l Zx=tQO6@ɧəjˤk-v7]NJ>Jvc/&ly]ǕMS: N^I (cdHl!t2ALk?'c{^Rw[0$p 9϶&%'דZg]$KY'#×ɑ=ںNn_|ߧQM*CdK,Ym+-Vcɷ;6}胃׏ߒYۭxy_el!TZꍪm;YZ$~l~ɩ{T߫wYWrg]7VKr.Yfn:QYz|{-{=Pr2Y>WV[}dN@v ۻR/AFrRo]~zw]!~Oe > (ku[J߮N{~W]v(8Hp;-͍BKKCSSCC[4MAICmE QAAA A]D]tRϻgE=<}+I$I$I$I$IP9+ svXguu8K5G^g!۬?rUɼBYyڎS}xVz.{e>kZ%I$I$I$I$I'(;cn<,ؖ󚢜{Qm }w4NOݡ[t.wFۗ]1szE7-RUg(U/^uV}Hu$I$I$I$ISSshI\$GxO= Zf@4$/;}OC93Ŝa1h4ϔJuϾ?٦?_0G鼿1j=8f[nV[ЮY=cН[չ{~:=I7Y\J4} 2CQq3wu7cuuv|QkuӪm׷g|(s`?.}yx~^BB@H !!ёxqj8h<~K@HҰsqysd_T`g\dO ^Gy}I~!ܳؿ vxv!j#GF s@TJ]ݣظ0֭ ?J߮o(ׇw%Tlxcx97~D8;ӎ(׷+ZZILs tG9gRtWBBO"ys<QXby)IGVHY XJffk~,͛@qOWUUzT];:n::^eQ=vF}}]Fv,gy $`)Ɏ} 30Ko2SQC44QL$]M:5gq $Ù"5jkX/ǚ5#orHRS41X,1==yck/EwF艘-R( Դ)#;X,LߊޞL+ysssq3 eKK9ĽicuJNŶB\ԒZMuHBgc]5[3ufYw01NF ǏBɆZ8lf؊OC| br _GOwۼ}4!F,j܏|6? 6U\7&Yc2d8Ri!#p?ED"*dBT@hpgU~ԉ/>~zh=SR,D$ IKp6u <Q.wqsqC]"B!B!B!B!$d-֥u0!ϟQ|yNf;Y<gb2-:/בML}v4eIF)^]SWL JdU4171GXA&}4zwL,הճ"VX,ƒ\ZtVgB흿kΙ'RwQƧWKKY- E( dQ6ADR aBP(0$a -#(L&C IB$V5֩64NYw?aJ0W^ /ߣXwH޳`9},>~so3=u4 $ECAGJe ŋZeHo-OBO/q^F! UQy.C o]d:ݎMxF>ׯ_ƍٱcS\o#*(( CuAipk/! ,o}L399NJHFHF***ᣲz:5k\VvL3gΊOMz 33*|VUU`50\xls▞?=uwcٿKqX,77OS%&&VǞ=…bN:-99CZĉ< 5f|5j̙H֭Kjac}ÏڵkpT (iuxO]f-//_>|8f{J!+4=̙UVvzÇbdժD=Ȓ $ڐPG^*/wp0Jr>}߮]qH׷ cwjeh<ֹsڮ۷}8FC>ݐB%bbšұcZmi8(5?MQOobhli?ԩX-}tBoQv{À_+.nƥ>w\)1v~ֶmi!abI~Bn?TɀoyVLe>w_ :zkhzHѣ ނo|}Xmz|X^߾o=&!aXr&S=6Ri(܏?ƲN CHhxc/cǍ1իBB0BB]νzZng:zah_ܺ!_{HaCo#:f91:ܹ"$ojWsΞH [gxRާ{ܲAzr㩭G B Y ^cW">555VU ωYaX$By5c:=X'NպJLw#'^ymk#W\֞\~x us(ϵYPU B¨ 52tk&$|ݩeW34>sbh?ZÇHH8bxVJqg# h9s|nk铜*OuuԫD>f-kִPUT}z a=ۃ5i BB0zBž0{t+֡CújP;[));۷kڴw sBqu\k]а0еʠOVX;vMMU!aV]Bfz~1t@>üG{3C_;n uGCUu@a܂Kj׮bF/?\|XӧN2+:A;%$ '$\rX˖GSHoFH{@9J9tߞ qq+te9{H**㦆xqI]i08wǾ_yo] ? #>sXIaṐK1^BB}xw $ '$ܳX'όPC?~Bu`xPCB۷W~J@Hh">Nx"A6m{sopYSS#u-yVO!v 뙶[ BB0zBœ\U!w6 vVAz8'I^^HHDի׉;,.(0boZK?97~NnMx <:g9L|IH";$ly ue0FVII)!!@H=!a|Z/_ 32, NY ꊌŧ֠3f|rsF"$<}~Ρŋ%b;!aԄ믏CBݒRb'=_GO!b%Y:71B!n;qg)))5QP{֩S_v]-Ztr հacB:[oʉX B ["555?P_vM-[{ k#pbh~V^'*!ѓJL(/W[9M b;}/UWf 33'$$ *$-!a755䊒PWd q˯$b0H DϝwCtF sD ^BB H嬬QyA1 B mw񧤤TW۴iP*[1$ԭq$'縄j]Μ9,$mqT7o̞H6lHcDzE.$㇆x?_3g΢`/))E =ĉ<}9=yysĭN:f3'$$ :$ԭ{5 5!t!]0v~^'bscϞ-Ycn EvENzl~~A$CB "6mO:cmL5ΎU"}o늌HM{ B¨ u_,[#hЈ+-mUCB|s<&p5jUF~&qb4]16?ǯn;VGG0$SeFlNk׮5(,,<+@>`s=CHFݜ,j#G{W Bˆmj yckGG'YfppL&&!99c*KK~4?TdEab`tNs eEe୰iP P'm #^<(&zl<;x}g7n1xl*>#,_xۅ kԧctbonffN(:96$[Yŵ&imw|ҍ%ާwlϦ+brR_nQ/eLmOR:=K2yx+BB༄5 Yntvɥ+ T,2=r~Yuju9Dqidc)!aѰ0f=јnujhkkdy>>9~@!$ljt|*{KHOe:N|CBݸ0[O`?Qڱ~/}>+g/AS unleQ{{gD^LfWOsqQKKiI$~-'8 kAt$Pdd =E7SINi3K?Yj Bi\s9p3Qxy7dlr|?nߣ4<qɹTH8663gͽ!3a Oܾ`BB;NDHAgKK˲+><Ţ%ܻeղOGENDVW 211e+*9ļVGŶu5PHh}QTCB꜒dmAk9CCDiDXT\"$ںމM&.,,^;^YY u\-뜙RV~/+C^]Gw}LH!ᑣFCMVHwvs6A&qjcvގYѨЅecz^W.ǼŌښW']X*^88qԀQ?yAvtwjHhcU(Jz'ǚnrm纭!]G71;>tbBsѓ0${ntGEY64<UZ=uZZ^!$b H3TV,+kp6I_Z%U$!P>D"QV֤]d|`pcc`uu+2#Y[O{sb|V55mTV |ށdGJ>ְ8ߴf>߬XQlM:} H7BKmցdȗ819kk9fpR933ŵ B!B!B!B!HpeD¯SU m[H^^x~~qHVC$0ߠ%"!"k+JgT1 <* =kTpg\<>IʍKIJh7 ruR"!\^]56\-a:/ɭJY%WVET`,̯y ׬Y`J C$ĨNz["v6:XOܴDBL~kذMD,[+*ȑ܀xFwA θsΑ~굑-Ǐɐ(l gp?D—ՉǼv qюIBլyo|ʔ$]fDFH AKBD8s^(@;-kjLJ&"Čuc6ik6s{Z3{wG"B!B!B!B!%fl䋄Vz Qi>P%MZHHi]kƭj)DBE;Gv=T$ѻH!8sC~=x3DC3H ^31V‘`(rfΜqYKe NxNzd=Z#m~m3k2ap)Ȩ6~V6珷h!ۑisX77Ƭr Ҏ}ִNfKwBeTE#P!B!B!B!B Zd"W.{@*DR"멧^v/nTp\u7H@F"mqiB$lҴ3h!njm1v`q6hiq-Bag!0hS f۷Ly gΜq@^$9/*-/"՚9c+f2f߈̑i-Iodv3gq$Kr(ME[W;JM9"mO:DB!B!B!B!B!C$|xHxg3"U}|ÌCKʊi%V3\h"% Jы)$Xu"۞=}WPPp-DB$@kߌP$ g}`Æ|O\'Ow@@``@~?K?qxhIv[lll1$Rk7 qJanY\֝Cs;ƍ(IȔbb>Nd<-mE[3I}h\~5m֞@AF0,P"B!B!B!B!!HR;*"3O}IG$Dp8ں^+q*$$gX{׸0`hHؽGz]>H6H>; 銄${"h-L$}X+ԨQߓ ɍsr:3fr5D½{܎5^[EcU3d9$P _[_ffо河c={Ƒ:u&|L"IwiHtǎwСCO׾}WgHCZ(Go"SYgJ[ yƢ8$2G2a4c7*=-,\ש< #16r}Fckժc}rk.Y[Q)'HQ{H(B轗г"B!BQl/> >+&!EoSD[22 /_`۶H]D$,[H Yd"04i.rߗqP"!◵wn)yU"ڵBm֢EvpR#cG@6o@bԶO㕊'Gd Gt 'KR,_U(AdHj&ߑ]$XiM|i!<=(s , 6m)V(P!{/gE!B!+vY) z N,_"s/H\7?HHܹs aHsrLC-XwnΜ0 8=z|%(E_Q6_套j3H4F a-lAn :?KaР"n=%K0Y

N$DZ I}*{!Ц85$O\˖ghU?6[K kjl9r~G{6ν$DZX01c.c,tg.P!;RwB!B!Ǻ BϊB]$G\U M$,{]\iT@Σm w祜ZխۢEBWlgٳ:w~Ǎ;K;[f]dk v"Nq.d h%kE*ۚ5rƮ]{\Æm7H쯟/z޾}g@CtرceY kQ5Fc/x`ff#]vN6#E'lڔެAK۷%"&f_dϳWbf0HڢI{$t_<]- 17w'\7U|:YLUYxsCvHgRm!W%QH(B{/t#ޑ !B!F~QJ7A$xNqэBqm/>Qh"a_ZՉHj&L  -,Q*V$$3DX$HWp=Oym~*-0 yy']vpR  q, Ԙ8qegƶm;/=ӧ] H H4dL8ZI3.2 rĈѮ9D;B-۶\Hn/9 mu961Yq7Z|v$U2 BBkNz;(M<-"mq/l1\v: .nqEZyQ0ͧiQV@=l_}gAچ>˔zq:7JNz .s:$ h ]&0NIK<7gӏ5޽4EaqF\ XYXYZ4>oKXhvZXh#DE8@L d}paC,>S*sR}\KQU^%Y|ՁZDr tɽ3TZԫg€ĖZUVaKj'pM5U͜]Ϳ gS hx06f0 .__,jDM#@ _  E"ԃTeNH&,R*tfNZh- oZ'uz**T Iל/ܚS9&@,?9jY]{UͨYWp T嫩T﮺u/v:H׳Q/rj֕uFYƵ`"Utm{Wqʴҡ!2mlmJ\hh]Mtʅ/6q3 b(L ߕ<ݳ9y{$I*&I 1 w/vkfwVg3~ϳy#/)&7'II$o< \lBQj xX]"K$H$IKa=LO`70°N5g? #b\dI"a$&9ܖgCpL$I.QE$I8S<~ae?q vN$I^i0&I9`;D 6F]{$IrHUjI${WmL!V汅}|{^9 -6&X+$II$y)0g7m\+JsX{{l/4IڌHbu ( ?3PA2hKA`".}Uͪ$y$F V,nv0%lc 3wM$iH$I[XbƘC=//a} 0eM$ $Ini@xGX‡!7 Q)荍!3'I4$L$ɍ,c knƐuF OKLlc|Go0I!a$ֱewo!_pC1=ca!o oagU:I!a$I61q?^3_qxyF:WGU:I4$L$wgmU_ '9b፰ UcOm$IR0Id).02qcnp/׺[;l@T'+Lxd""""*pKw䒥,.92VaFNa!6S2Ͼ+%BR)2,Fߕ~~5d3jvm!8yq+=kC6âlѥHۇH`- EDD{l,J9/r$aѧXF*.u]vS ڶ*?sj pB ۲Юe0ae3n \Xo5)ű ۚ{> ByDe'nh+lLQ5ǹ/ HX_Bk%ÝrKcYlD,8dCȲ\/dƬt;a8XֻrJWQcǜ-YP^fuᮇ{# }@by=on; £"""rFx7pA)ePλwF1 ȸPlH}y֥HS[2s@n#" #wE {yqյ@nkj e 0"ݲ)s{w5߭>>^%뇀 H^FymkٰL&exL7`j0+Q./i%x0nՓGec0䣁.GŒ.P՝rܖ)9j[}$u*'31mdCɗ^e^+h]f/i(F*hHXG Eö.s;|N}2!#mS,#@yW3J7ݵ w̌C x9 Ȇ 7)QPDDDJeW)¬`N.ǁY=rp;%H ?̆HwdP׋S kc22g(s0IGR$ XLQń;d7@c$O|/"""zo> """r<47-R  hqr6! e( ֖dHnTHXfc`5KenVW=8Fspld8׃e`aX-3ge1a!d\NnHU%:"1dr C>iBK\_AykGꋄE8C''銈\fwU)e7" 4e*w{J&fmCpAgwNS\6' 2 LJ<u[ml,c<;]3d 79Ę!˘ .΀7_׷PDDDT$HnZ86+Rsr17a(B"CzR(%!+x IJ̸GnL0k0P9X(`%jxv(DN={ܻaKs_{rRZ`N!p4c^ׯ1]T!P*`N /GeC0gVwLU( \+㉗)^8̕ypb1[6x!2ӐH ˱ n(f &U5łZS ~ 1²0dqk y6zvǐB{W7UϡBS\/Uײ6lv;?x7alkl8n  #zciԍ<:pۆ}(-]2fOS/4>|uc"a,1dZprr=ɂY_"s}+EDDDEBu\"a 匜GtAJ")<-SKkX"e+nJٝX0-%s[4u}bLǼPXe9<؅,rlˈtδCpRDDD^#%·? sCH8z(VHDDD䪊^$ٙŌEW >NV >]hͰ:R澯hS5RS[wP7_'VU6:nλ =vH yU& !@,a8`. [$,B"""r#8v])Zi|> πj˥DƻX]Ut˷PO!VvN>K|XĘ.^(T<_(f!$c`trsZ@9ۀ7~ϳ׀q/?Z1˖oEr.E3E#3懫F+(ilEx 9eר'/Rʃ!z=V?'@p  Q9uL~l*> _ EDDFnE­S R s)N"87c,xKc`酪]woQ_!VݮB 0ϕm 3Ęq P4B-w'HZ89A]q~mq@́?> d%'[f3چ$2)!j֩F. mv& !h;)'/*zb!N -LPLuLdpucYcЁONDDDT$}.K;lu8ٍ43Ǐs*v߅1KQ[Q:ԓc? ~UU"Tεmfq0y0OE4dI&"""@w %)W> Ek!Cw/|S)"""V"l.Es^o%5CΡ sHd3tw!ra5E=g]$usfp=!Wub*;:1# 0Ol'KMDDDT$=tߋg{yg  @J^oƖܗPw!< #4#Z}wK4׈U_ƸvwP0J5[7R9shB9W]s Z,9%neo>pu"~]w_>ʊwkMlJ6 c@#)FEx1&j> Iڦ.p-*;OI1dB88EwC9ܴT$<|N%"""*ط"afmfnd7 ʱ;DO44!e2pa&G1jY.軯LNU5ޥeU²"G{ ,cFa`G's> |]$"""7@x|(>< |.˺'.M> <ZiQ ܾE²[1s n)p^I)r7r}b$us2akua/u3. =9fBy1P""""\O'[p={(}l(> ťo>%Tv֒ nb2;v*7;Vu)R²22 m`n!d70-8y\y|ǵ ∈M(6w$༺=2Q}@l|pfU$w6! '{p,dlZ"DUqr1bUknvq&cHVLHRi[(`;$k,f"""r8I {.aQ{o""",VHwV;(C.aGrB<6RJ6Z9%;zKtWu*;-1dpBp?>7H Y-\@DDDa]a}x)=r$yO)p8.ލ3L- ][eŌ}T&hp~/醝Щ>YH)n9)rgJ]iQDDD&h2?Z\Ɯ ;oϳ7e7#evv9#8dʹ """r| x{w + ;;\YK."""HM!<}FvV%R*Fo~, yDauh.,kftMtO-p>SdbOLq dfmQF*"""*kAZYLsI^0ɫ7cmD.ΡD.TTrn_qmYa΍YZR6MbMGo3yE r2=gNLp'¼*U~Z6N"}8ڊ0}=L2RVֲ1dŝlcrKy:\"tߕ9z޻gsFZL6ncHY"/g΁ɍ $7K9XrM}o2RjfVէ½l e7s 9/{R w"WsNif0vXaݜq|gy8`]~f\2ƕ ko³QUWgMbne2`~3y"""r֥-'GYqSgp/P[IK,"""od$pv`o-g30+n~b'yDGƬf1zdqypW92sW{\}-CaWwӁ|$]1,0ͦ3G33|[KL|GVZ/S+j)TcvN|e6%ŠH]r~ j6@[;7FثCAp)+br&f`\b/;M5h'=UU _?wӡ\xV~v8*"""{s2׿ ~6_%"""FVvB[S/7c~y#sirʃ텹[X.dz?q 9df-757@sYඖdv~#ꦥn:ꦧ.9iGOp7ޑҏ-  EDD S">}R"'C3aER_師 9(tʫq\0[Ev0 l| 0v ˻>}6jo=CC)Wzm!@JcK@VnW-:2cC|3^xm$@T FG]c7gS֤spFӧ4x@InnI'ϾN'Z a#C݀\Uw$w6:7Ly]I٪'yZe椇HcddZ*R_]J;f8*_U'A0pևB%'-ǻ47w3R?qǜ4{v䕧÷⹻8""""vY4՟?#)Ure9GK򨎇_xTG[BJH֖cL7Rz*+$ñU1ư1C u |? TDDD6G]8Syl%)*U&6bCFkJ>]vȀw^hU w>iaԲ7W7- SEA'Hm' 9G<sw  |QPDDDn}ϾUX]iF GNA *!=mO!dp+wcׯY~€n.ʌ @MisgH9SPܱro=ɰ!"""r?{' <ĭo>G{;2#@WOܮ {cn7[{Ayc{hvNm)'>LFa4ۧgF3E^z= p6N9r]$ܝL;h9^slzr3r}$tzn(H("""3zuJ<[zt2R0cPs즲)90*3R)Tut);{p0c ȷ <Wo_(H=[k?,[$⏿uI=٠fmR}HUl{U]0h9z 85s6~iMW4ܻsf 6?'İ~3ٺBR:혓39Ep# ǞcuDDDDAB%ۨu0))GfmmFEl˂cNmv4`>c|a@gXўTCs}ΐR=CJɵ.7f⋈m링;wi(H=:k$1."""zr 'n$/H['^FN"L9푎G{=-8 MXzN71^u/̎3^w2f?No,HE폒s@:T[ɵn(H(""".?=z2pڵm0Ein`0'o_uO3Eqd;:=V TU}]FƣXCK_kC/ I+>s'CDDdk/O4znBl=e̸|5gǀ)"""7S=Guj/Rtu9JǣIrńM܁=Қ;uBۉw $^fTGX_{::PHqd^Cyxd"-zpxV[DDD$&屻xHSFBl7Ifdゔb {NoV4v;yc3|[sHy.>@jvdѰS??U/`Y&[)>ZiM \1Mh6~_$/_5&)į|L91Uzɦ'オ,9RNvYY!oqZ`mh}[=9C-Aqqh{sbeWnNӋor&kw7^VQ-""" M޸ 3hFVO/5$P[U]ed2PUx;Z!X&C{3m9w'kÇUszehd;z~d^xM  o]|I"""3D }q܄H ޒր~xk ?v%~^y] %ccбPY>z0ȋ{(c?L*2i'z~5Ǻ@h]ZhQPDDDnIaݸq,4/kHU")=.YdN{s:p3~Avpj3ZG;)bC1?;U"zo Pw6H>+$"""כ'hb6^2e2*@لqFo"}ӮwD|S7_;mQ bsHe@mNdt?O '<@8_,"""  _=^ VU/} `fq$$U0*gpӫ/Mqkq9fq{eNF9 w\qiFi7/ lJi{+4awh(HxyUO pX\Ova|a:5#y'߿2Ed*'\^WY0צj¨&馝޲`Լ)&;IeF@F{᥯Lًh?kB,"""  eW=`d|sNӝ42 02.7f>@{jV_* h z"U4X3U_\x u,Z?TDDd- Ge Jsǁ6sNe^z<+!߻4UՄ'wƬ)ڟ}1Rz|>B'|> ad}u4@jN& =fie";3{"""rCٹ^=c;0?Mc:D<VKad-A/wv`^ ̆Jd#NnR lk#?5'bRu1Nlכ*""i}p%Mds-[p^^Oc]ݸ{WڒRN87m_l Qz[|~v{f&4;!wTc84""" X662ќO363r6<ka!\%Ձ; u+UVPsZF]aR ósxV}P' GV$ټNŬwƿ @K'nJG~X9`]\DZpM#SB WR 9ޔQEPy7\`*C̀TlcؙFUI{0pkz""" hM 4 lXx78ԕkǨO" Zu "5 %[mfd`my~Q=> 5Pl-+3 |s _k#"""ו8T `iԸVyi9M3܂m4d*¥2gEr]NKzQEDDDABU3mp^uY#{-iF!'AȻ5bVV@'RfwlXŃ^&iL8].Eց>ބ@AZ`kW)@DK@#m*ZL'ȅ>8D/u93޲UX,>Tyժ8ރ 8F,8ƠXՋ*""" ȍjO#$6`ZM{*pk-1hV98MuzDDD jcӱp]bcnT@k1⋅[ƌ/B \6r۴7(H("""7ýhv8Z}.4[zyMp Cx7G"t8AU[ .Bph^3}#E2zSEDDn)_Њ(Hx gkȍb@b"!5=N7ٴNA0p"n0Dz*4 H]L4E<ҽE}XӃg:kzSEDDDABb3ژI҈_Ki'{nd .>ШUS!] Wq30 , i'18!:@x⽀ᄙk/%z$~wZ o |-${c*ѰKߨH0Ȕ@݃.|݀AU-$תIRyǀv{IEDDZPU l'&q un; |Q~,D|dV0s<,:foUPvjG'Nǵ"""L`Y=Oh>~Y.0+M]8[G&pJ'XS_]yʻd9HfgDbJ; L!f@00-/~ _ EDDfHnLrV!w ~YcK\Q%V6's'_0eqȏzC+)""?{{pɀu.WreÓKM}(ϸ(C-K `G @.@(/8iFѫʕ7\(`%g&v/{(];kCsoҍY)""" ȍ s"-wm\_8$9wp 'PEwr j \hnN,/9 1h3 ZH-@84`|g?76lm\XkO*WfsgP8+""E=cs"Py!~=vn`nncWXh); es C87g;avqrW ݮ""" x^-s!vtނ*-:IZy2fvFU|wg/C0@1 vjދg- w-sojEDDޗa>w ( #S;}t'ꚵɅ8fp'*""-vop 3zv4ؚ -M>|ŵ{ 4MfsuMp.m7ksADDdkNd nCwڰZx90qUgՓض;3`wherR2FG>;eoV,u d6]0k(H("""7G~l1N Uni@acrUVY`2`^AB5o9f=#Y`8w=2ҋ'1˾F~tY-M lrmߦm?ck:BShnރکe2te| u%T&Wfwܑ y ug}Q1ƘWee@Mqr:(RgӣO27ۙ4E iY辟=+jy#DA48ʰ-|pv1co$4c*^5qRq -ɤ[|/0-ͿLE#EYIf']f<DJ2'gwړi1Ɯ&½[47iM?+~ߟuEscI_H+faj&˽o)y5UϱfUU5qPU"D Rq̏cFBc1Ƽ}fql=P<V㏑8~vKm +:-Ah'V*h{;Nڀr(8)#+Z#tc1oi+bfR3e8 C`okE(QB˚z/cNHbpvmh(z]M gh zB ٓg:GPnhTwf۰'co6a ck"Pjz P_ ]s-{7K8??Mo|3_vۥ7c.|+"(Pޭe_]p"z^X[y /B2~?}N# a;d[d(6 EF3zbUُ^`O1cc1\5FqhfP2"Nfv;y|:D@iw-4ׁ sT#;_te7P#5Eܢg ) H3pWSj1ƜU/ٺz <|ˮya//i!5>;`sS#)cHx9 :MH'}T>?ؿ$54Ðv+MR {R^<"psWWRM3D 2۶c1Hh1ƘsZ,l: D\ɞg݉*Hb o #."PlA٥D87CD(u@V|vkA>: (ϫBŝh]iO1&WusyoC߱%f[ۀ\}@s?]zc1#+*'E /KzE}wƧ>ێH8NNA!^){` #X]8Q(^>[q-zPAInc1 1sιkL͟ ej"١fot.cΥT9svBR)McwRP߼{ꟿ737#%oauSH}}5t;/Qu^n{j}_i"J!cٚy ܗ^w- |x:-,"gGee7c.љ)a 1E(Q RVQq lNOإ7cOBT3 z˟^z58'S':>aP'ф0 )"D PtX= IU7fhy* : pBUkP NF)ȞBEШPa_p!HaUHD!(H$w={R1co$4c̹hF PxȜč_UF'FUȄwxmò)qlT$`ЕFPPvMKAtHг"86j±7]Ý)Ov.FewBA$jV;GE7zm}plֳC=c5J<|(0+^CƁdkNc1ƜϠBP:Z̵_h5i kƙ yPeb 7aj;4T /) ppi*u K( #OC=R "H_Owq [| .׋{&*#et̾tڭASJc1 1sΨ C(De 9N糇JZ:( R)?#K @Atp. S09 "T"ednp-4n wKH7KA@3^ Oo!t|" c)TwߥA(NDf;M搤ݣ}{R1Ƙv?p+"5` ^+i_*GOWgk1Ɯt(I{WN*ދ"Tġ(00YKJtGN80D@j.^fCs&w)bTj>K.I DJBIf92iVE}HYPḮR5fOvOR]|s[dY oT f 2{l͞Tc1X#1c-/^lī󏭼e@:PbGf*rhbe߆ O@QIf7'vI@B4tsXe[H?Bg ]Wc7Nd^DE(K@Q쿳XA o%]roj1Ɯ.4^HnIWW%$4/ o7㼶'v1Ƙ\3룚 PuRzW։]+Og/kqkT$}-pT,zCfo(£d"&\9&ƪ@HB7zТ ޥ64J_ɞl# ^vШ(!{Z_ 8)GVXP.1cc1weL ))bԜhgÎs~iDEH " *.Pp0UCO e`tNp"Գ7'hÃ|T lXh*ގ@ 94w6D@Rg%*@$-MqNӽ]p(UI@q:/E4s);x(t| ;ƁSyWc1?mQz@ZEݙ-]Crx*;6)bv(ymM٘Usa"t]ZD Y% =ӡԃ{p)T)Q`qfO@OgURy6<:A mV`t |BB=8)ɿ; *)Bʺ"w.S ɑ޵($݇N;b1ƘKP^ۀ K>OrH͏0[]Rc1SC=T]UQ%ָtxyX.o/( Q Һܩ䏴qSNGHۆZepyܡ#d2ϭ4<:ŕjsfODe@a#}Re䏬?B8xE?+j>NೈsJֈxkP{Q$tϸ-ml1{#1cαD@!C <\fkAơ;-܉rTz)~${]-{nhn сz>05 <[C!eD:,/JAqyTuJ:)nꔾZĉfnW弒7l*D$~]zc> vKi%r.i>pX#0|.1saЉB"c HV_/ZH/BEJw_UӠi2e ŁFXl C t$g!["4s0H/@k V$k:a@pUi6yqU[fNPTDxbc1Hh1ƘsN3WDRq7q)n)>M]S "c-o -RӚ]Dklza(*"7|ɞRc1 1s PDt}{N 1y9ĹHYb Ӹ*d*4*P(euM&"Whx8} Ƨfފ͸=k6tZTcY`ȣCB! tVD!8 *(脧|t;b89SH|IKvGj/ Qu=ccs2^ۭ#q.^ Cm; K5\j|n c1jfQ [G!Z Ax5[9:Nn#^?{a J-JE(v5eR9! V;vа]UnAN,C@J@*YN3RU*R8!u<0y<\8WniDz}0A e$:ŃӋvь1ccy;f.xPŹVB+(**S$UC=q}+(T (^TAYxlK ^" Zi.h{3:UX T#ڗ׊=!QG~i;*'(5^.HBzَ?x ERPzFBc1soΧfw #.]w3v[c1H3g؍ U#>I>ZD)YH!lj϶Ϸ(bI2&&8A6UPCI5zl wޮa0#-:UyA>6n`:/UT)?U䕵B!A)YIoH7H9{08=]@c1cy[w^6HS7t+q}v8DDٶ"eCI (UU(it@e3 9TCT=s J:-X 'Ax_S_#Ý?"Kp$nьL@B1;p0(֙[4cΑ=c.ݯ/&xn3Y Vy3i`n c1歧ۚP< (O$ξzum='Ub'T]AI9Ds4V\e6sp|V⡵ '@eh] iruk*C>2 fOBkbei ɞиoed@ٜ@*kPTlM"(NC+w5CDsm#ٷnOEH-}NhԳm%('`b &ww\RT߃n,gYg.R"'\" P$*(%8^ :$¡k*c] u@ 1M@[cykīǏwDP!qՔAӔqՔ<;ٌwkF[HT r __ |;HjNKc7{Varnr %t)#B (q O)POq'{Ѝ$D|4=Sd"ˁ85@ 4غM pqK̛p?q9p;>~eEE1Ƙd喓ٷOT=26({WQZˇڎU)h8#d?X&V$=FhIaJjQ(0s FFae7hitZՃuFJ>_)RLA&) y\&99]LLIYt$;U~⚧4c5c1mo;- x(8]&,݆(Bk0v\t*:XF.`B܉Sk "T$ͅQaiV`tF'@ntPLZbs)+BER)Qj +qA80^6N@/N#f.NNlAԃ,?Q޻Y{*1\$MOӜָ8O)M{X#'mP8g1m:5(!T#{nnx^q#QowY_fm-ՈKNځ;F2 oT ypBw5n =n]Fu#J+ fas^-X[X/Oe4(Y TLwtƉ"<*-NVut*UIЇkft[\l'^ԏ$s#{jO1c*v1f44~_vq%CAՃ=PZgYj.,D8bNI}Ҷ ].nP_)@IqJ qWIQo-`  hӣy9C?4/("{(_asdc1X#1cm#a8vMT t|8t֚\{L[Qz&LnLЩ:x]<%:8cTuN *),ޚ2AGz?@}}N1 YFI;"aP@,ׁnb^/#m n@Hl%c|x(qq0[RͲoDjY񰻝5E 8+ǾQ_% 1\`M.< |XґsA,|6+OWp,٭c1ƼF4.\o$DU4z2])nlQ~H82~%W9 C{d-BD3Ht$C's^;!id`@WB$pl2:+i%YdHAOh*J(BYO.zTl`MO ENG;Ut&A do {G둔eoA{)NUgqsSk܈p@[/skcFBc15&d(+FxtԟYiO;0e0> a!›fd< YO!"%&n!*g%mSg@U"P4&A[7⎴rrA|$}dBI5LD/FGA5S;{DZ#{hi REu^TSN:W u3ޗ7a& "H;WXu @So"sA5]|oӰ A܂R})!sҏ+WEBZCq>_\y5c]ֵOʥfw9Kc^,;>:unޚ(ԕe؂-r'Bd̋$ L 3ƒt s9獄9{ 'gJ0,`1L#jtO=<ӱ|U6 6.<4ɾF* ͉|h3]jaWj[ e i+D8$\Zxڍ&k쿪+Hu=]v#kMUχp+"$ 3';9#q][~"_&w^N9 ] :9so$$?Ob4"֒{|.Fa@h )X8Y[. Ⱦy|Tl [Ma޽i6ZVU:X7Ѽu~{5-ST.xWz DFª67|AX.1MJH,MMO+- ꍄ9FBs5W,fq0`0$љ֑2=f S RU`v@%2HdJ:(]N`k`4'BUvh= ֊Жkuq{ ]%6ek $3@hd=#=0 m@x W`4h1&$ Ua2lw-eD%3 Im=t鍄9G37e`ρڗݦ`֗G}/'r:F¦p¸B3`1TsHL[ƬLwgu&'X*zHBMTLaj ϸ%o^F6F`psNBfrl!:Mj&2zlV jV9"%U!$b)9hu+˃{X@xwl&#j$~Ƙ2%dDEDV/LLIV̼9sHsι-Eά QmaLa*k,`}9mvߚQ*`3[m4 KėMP&0a%w:V&4D( 0MgCfS=#wF 6d8AF|mD<3dw&Iw2@BKtፄ9އ̈́/|86?epܾi`ח|])oJ_RsHx@NZBA"(ET{FdZsRv-'zan [fM+Kl«  _?Ol yԮNιNvAF`}gEI +6Z(Vc-V!Y&C=L9sHsι^K.Ә$`֒MʅE*,Cl$4fa}Lxi ҸqðjɫwX=.YX;+%X_`!\F€pnE3U+IuߝsLJ䍄9އ̈́_>ׁ'`nY_ *l_~+s 7e_ZOHY <5 ` dJez FnYw/m^Ao6nY+?w'jDlC@(p 2ЉHFFD7S79FBsݵ~?ϾuLEMcĺµF ԬHv{&$}9UP֛Mdc{ M+7U+`֌όh~].h}>4dX5!\t!j0& +S)ôXGȿfaa sν 4 > 0U:X{h)_ w; Pi?sa}o_.:FFBF^[;}ɞ=(-;  @,BE@OIX}74L6f&«[}•!::9sBA9rSY{"R}xtz xO/pD2Tj hبܑQKd@/7͎J ZmFBsy#s9F~+~oC3<)ӘIX; Q^ =Eer6Wz+ge(!Wʐ:DV2~wГӤӳHyO\` !@Sw LV($@i,Ekg2 Wwz#sιq3ׁ27OEJۡpa?FHP)t9獄u#j¹e/l)m 9ӝE ````BEO}CHX+s0!㗢FHqmju:=CrRoـ5*" A窍HR @AaRj_thMcS/ptvlt鍄9{7d9{'H{J](_S^ l: kv`v]@zoXفJX ۛp.d}3p +42Jwq՚sojsE TWt "@2A"#ᵴuB9ٷwW}9nNlώ%_w[ Կث'O-n9O.gt?)]Ma;<*(Q@̠& ̈pv&`@Z50van mQХ\-}F2vwT7V٨s#]],2o AF|p jfaKb{D)5{瘍cg9 s9wHrR>4)FmQҰτ;K1h33x=7k j@=VdUX&»@vȕ!2(aaBFsmH5Fuq ˰j~[c6qD@"4XU24v c0"L(^!;e*Va'_OO{N[O$t9~Kȷ O$9Sz9  TKc&bml6fl`:dȕlq69)69i\W'Rgtͷuw o&2%9"."4s _/uGļ k'!-~"s9缑9sw]#axqp|aI)UIvzȓ'¥!}f DPr=:>C#Bácr1l:$ TX7 ἳ eqPFoȞ#qC"Gzhgܗew/p5=Z)=<34Wv9ħOY3'?y_ w;F"$  o8Y$7}Ŝsy#!MN7̲/1ϙ-"E9ZM^G jşg 4F|[Pj4:jH!Jz96Ay_ `{ RW`rgwr)K[/u9wj" fS?dSx#s9缑9swW#! 6o}rKEQ̬I\@=  }dh1P9 GHR եؼ#j*oD oKK{1akPٜ7ЅXw<&U鏖vi1/D2Mqбeo$t9w8 WdeBX_y3"DŽlM6(?ȃz#s9I9sQ‡I$`TE=e)~{ͨ @!lW W@U1B!fTao. = xjnV| 2α)$.EM¥R U)aR [kTJ&&<ğ=^^_9ܻ@عZO4> Y"j?𼯄U yW"J&Ŵs97jF (5GaBZ蟡#:5Eʧ)0@dVj?md.fsH V (yNFނg`c1uFڌLe5al AE':Sa3` ^C& `̂W<_;s s9w}S2J=! f%e\}` hhJOo-b3M% }%wTe!ƺ2`"^U^X_vnĤ CcF:CZq[+cc1ʧ H/`%)72D!`G׽9;@(W?~LJyݲB' Py 8Ks5OV76L`Q1 E+߲&ehz9'1}24Dz^wtޠ*!loPe^s Ed4"ޡ5k{lUWCYA[@K xiKh~j+g>HRCs9缑9s왷N(j`%HNJ pP都*(+>Mg\0{rp!N" ^"U cU -(f=]F|}D- 9`uY_8j7?5L L;rtE #a"f#^\Ssj"3 ~_;KBxhմwU_svFaD$DmU=:5ڀ;Kc詩kk)ɿN MoQ*,Ǟ ۆt9U@nǦ"ˉǻUNu¹!LZ=ŜGHOA Q9$@:6xzIc !{*[)t97:s=^Y_vN jdFH+6}bv,.Ep@>c)^,4'PR 3BFBӶ}[`s.>H`+p-8jh&#V=Z_Z~M0hL5z\BQAg>&v/.X{ԟ!)`1o(2so Z_{(71gw\g[ f&-`w:{˾s )-F@֖$as2+)>DvCl!6yKxmKWMY=p,]_2:\@u3 PC5Z" 7iUol_CvUI 4A(?4M]^Ŵi WZLP$H1s9N| s9w)g/}-"j3G0*+t EOȾNкX4 3Sv+o DnQÀʺo )$`~"~s(~ ζE2._hLi&1:S97 m'2Nuh=N:ե Q,jv!D~^1GE&2RRVd>jcTԨc]o-90FFYa$2+?K  `@G3vbOs9缑9swTs^1b`eMtTIZ6ý{n̦2;B:K5$&Nϑ]C9hS0&4K%^ LBV*oM e\&0@ \#jɰ AXF3e1>2" ,HI=*6Wj?dzrTc28yk3}d:眻B>p.%" {>-_ w#oo/~q 4e/sι Y넗מ # JKO:S~C Aټ2A"]Q NwcfIU)Pe!5kr@ Lf0AHjQ&h_4YPلC "TOV顖!3V>QǾA7Kt:s s9wGȅ^xc7P"b`EĢl4 `2Qvf=tɾN|y*VM[<& .Gf`eu*:,VCPlU1UF 6Dlߚ7pLZOΣ p}):@3Osι4 | U`W[j͞[pQ\J| `fލ,Nx8{?l~B:M!Iٽ;3tc mQ1@Ͱ^қ{߾&* 4M?"{_e)@5J9{ zT9i Y]Mn܁.h`-BERصqe*nnX=ғsX/rCPtge4XG L#ey΅ Ͽ۔,*" ^H?9FBsC`̀f Ŝ_Mɐ 0,L-P A kO!!f.n=ia4m1JTb =aJ zYف\ i"`'CnYKSߘGwRWA:N2= } 0D ҷY%Rb~J]?9h ~x۳ |oN˛&c뼙~Mo"{}8><|'8眻+3:800ݰ><&+PNR L0Bl 0S3,}`Sd[#l0~"fỌ` UcA m[u>ڡcn @Ƽz"΍kc*FCi6_e5ǺԢ:=Y֠!Y 9ꏈA04Z 2ʧfϞM$jACS2/-8sy#s9eI% E+"Is)`'2 V/<=Sxu63i +C==H $i,b4Ѡ~ | /sιMxu^T0|[WwQLC.1 (lY֊:Bzxd jMjk}i=&=2b?Šc0MحkͅU;n4lrBɦARK#,g { }gN(@llkvZ[K{uͨd6go6\9ᣘ=̈́Rivz ?(Q4oxe7:s s9 onR)ˈi`m# 5銪MVf9yP7]C osӲHчfɾLXPQ<. HXXk4 ý}&!H51_%B TRI=6U ,6j Tcjv f Ҍ̍$3ys"렧zUL-j~)A@LL(Q VkIx4"zC{{g^'9&s xn"j}C 1/Bc 0{B9 Q79眻[fi& 6=\(2TfR5!. u.@P\U]T5xkdm4." .ptKsRM&|-ňT̚o"Qz݌@T|<&ߤ i熄 CPd TTmn瀼T="Cu!l i vgѠ"Ϯl(<&{(f W~Os9缑9spf^iafٵ8HՀ*`\+v,L7Laaңoeo} (4tՈlT'>t-BuBsR!F56L뱞' =# Ԥi@/Lסb`44<(|=Ǝu5֫ͷ@}eAs1\?$[sJU& LRv!c(@!OsZ7> 9|ٛU~C>ipC 1P &Kܺ ov9AvFGPA{zsq2365@!ƐM!NqZBۇGfȞY!\i4f:ݪ,Ntb LYd>Zܚ*cn?# d 0Z ք*' kc1͂Od TDwx=҅o &`0LsӂP~x<띷 v1&_-Jb [A4NKĉlk/&d2c) .!4VW2&@h@ Ďu@Sb;"rT!cGP``BMry?`X&Ǐq[1/O9Q@u~}]~4569*0S D "Zksν] »ng* p,̡.[ LhBDîAJ 8\)sWԿy9kߍ>&!wc.45k"T41F0S@ģϻSu |Xeu9w'zΣD9L(`5Sc3 Xo(TUM!=@ٳkdϭn  &ayL ֎XBi޳v:G%{E~E+d.j ҜhX@͢NKm]U unk ";#9  D@ IS8:sO$t9/#C4p &YL1`Ph2a@Kir1ʪ*ưz Z?.7Kuxr Mxypao2I 0P%`aȫ *~g2& N8 1eka4 ޛȕg~{r_ŪbEVZݭQKjZh37[c06  3aF-ujzQ^\L2<þ8"Y*-2x"#}_yMIF̮c!RbI( ۋ +Űtһq+Dxe_Ls4#}6L3D3 !rnm^a2/ ,s |`ϗqx 0{FC͛(kE&[H4!APx] Hk3. ÊN|mQxF-SZR@]2La 8K3! 4by~Gh]"x;-Ov8g ~ךخY;F8 i6ςN.vqǍ8f @""*,`.)@ݶ)4 2pcd(g1X[lDL$"37_(b/*_|6_̃:43>i:Qs~vmH`wa" bLd*@:\  )sy&\tylMw{.0\c̘ԳjafHo>C+)jiwZ8΃3T2 I5 "PQ @d׼gYٖx;H^~6:Caf]bҊFVon@#~{Zg?Y+zg[D-֪txH|a%EOn\^6]RVJ&@rmmW Dj Xƀ!1{ t0w88n$tqΘEzPqjBfk0YDM4"BD]ƈ"H (4كkanB,.­=.nG;"`;FDnCD:# n2:f ^Ԣ@a Sv3AD9Ui at8\ŸD;<(Uܙ~wY_bیjt14#f#[ӍfIL _G wʽd28Ga矝?BL5`-RCm"L{ӱTXW !]S]L&piH.v{ 7FB)QkFy\@0*dkWw=XMħ/.wxtO\z[$묗9-f , `a@Bs{dm{0溨88n$tq p S`@Egl#D 8Q JY($$#HA,dLVe{#>.0^B{hVpv;XQc}}ć#23:a왥}3ٸktT5X)ϰ5j1N "B2>e Q1[!$#@0έ3H.^qbd9TpݗD7w1sy\+xhm5Y_`VuBCQ~cw7Ns<_l:8h L-8N7IPi` &!j RB[ @cYC+KR$0rcN봹壩B!ưV*"qHGSnB;}4#}}\,g\ŧx a¸-rL3aWuKm'##4v3! H'A88 q xx0 P77aKD@F2us *{9rJq ybxWއp+y-`f+.3wD|lVS`7z(efqn,[sXoP}n B0H0a@1LΚ-(bu"X)bXڥgp-qi~7%F \~ xϗѦo3WeyF7#J m=K03rg`(6EJ.V# }]`{5Tk^qǹ a<ٔ0I#Ck! t BKTB6"11yalo'rbC3]H[c(w EX0Щl=jA3s ,DhL&[Ic -VA"QNuzfQ'kܒREl FEw88 q糊`\R Xf10X,IĬ7g*+ Y@;p4L.hOQ i̇nNw,m-j8tn>@0cooN2Vi 4ie70K+VQF< `R!a=={)7tPBбV~sqd#D~~;:  {z$+MlأD[Єf"0 BRf|%i|x*e ܇euq0>f(F3 247 nXJH:H#,wj!_ QPPւMCe9uE3Y#lݬ&~ڈFz;4DY3!:b3nuq@z[&D#҅)#RaDĥjj,TD^"'88n$tq  I08Hyxz$@(,Nϙh@ж ò5SjyWAθ `iTUbk`qD+XX#`g@8; cfi?d9s+]@H8 4,2"D kS+0D3I0 I'zt \u8#׀90x|l^ܚ=z(go^E}ȑU4Yd$,W$$bV""~%JL~ x{g'חq!cvt3zZLhP4RqTN@H׊` m +$?sY'nl6?? 4S271l܄M``$Y`4q YG"S*jN?`/C, 9fE"9, En4 i.*T#J /8CWD(TECj+c iiH8!PCcǛ =~87UГ@֧̦ckevYY"fF/]zzh|K wHI׮{S`6yp&͐ƴ4 vnjǗ BL`ِ:*3QaT` aX%@9hxENwq7:8X`4W1{"ciT("`dTc#շaDnl=X5!P̔Yd<Č#Ec!gb;w_dЬ]630(/#=4P83V+o? ,+Us$PhfF]BHUtHPl-n@ }K"?wFo9|MO'@ .$$a`H܂Dfq!H$tpmr"!D,D:6kH'tЛƞFZg% _qMthư7•w7ބHFtQi^CUv*J:wh@_'2W/aLСtLTuwޚ84DB|r;t6ȏl( aU)Oqq#88"sPa ~$AiHMm#"`jRTD6Iѭ,~Rl Eg uP-86Z\zĺ'`oT4(V(3k{хB aHLQl(S*fL.,BR7^#!djw|q>~c|(u7>NgQ50,1"ƈD#]@CYpf xp͗q3[p`_fC 6 +J肤m#uDF#'+N!Zvv?Fj LaK ޺nwcwp"&v|loARjE-}uvgts}(0"k[w!! yfXgT4Tis $qq7:8`a׀_DD)IaVV'T2,A:7X*( UȄ0DONCF!$mظu/-CRaGξmXB'hV c: lAlXK`]k>7  {,ȆAl] WWA`7 q*`夹"/54p9ܗρ 8B}_)o$\M5 3j`1T,Am@RFt(6l"i2K-$ؒ^L 'o5JF9|& 9+`+ӡ2H xrxaH]$F{fD€!6V `4z^ ix.\KAh[\0xm˰ =ʹ׵`tҎ++co}!ҞK 5sH"*2= cv.颋88n$tqał9_&aA %*aY7"!(3xtp)9F^?|5A$-r\ tcAצ;7nx7Unf:A&ª8+[q#Ghg%!0rKP 4REʮ%yTվP d`+9:G F6P;Ҍ9|pvμx|J_ЎhF> {?pI,B'fhK4GQ n ň 3@R*I`fݼ-[W3=`8| v;~F,6ZiSϽlN֨h!餁΋P\i5fH몌t[ж`<>1ޅpmX]-~b kȅVZk9iFzGtg 4" $"b(ZҜ[9DJU#s(fY7"HOf 0Oqq#88!6(eX~7O[Bק(VpaDn Z_. EvbnٽE2"Ϧ*EkQhLx-X]I}ыf7a ܞ8krm6e(̄VewF m'݇+:eR ttn|zv-Ӭ<_Y\+M"gsHg?qzp;~go_Z3% IQck,?+̟< 0èhfv; 9I(Z,TB bb$30/AbtDsgS|ӗq/PΨN H$ȚRE-U׈T,[ ClܳFzN*[h a\z ~YR~BЙn\ 4Pe`!9Q2Сzk1Rς,1hHVF^K@)$cX`QiFAQQ! 88ㆧT;8ΣF#Na@ܞ c0#W%tX6k>zxJ=7xK3Yn`8$[v{y K'%@d}09 ZpH N! ucq,oyxƌb{n̓Us&j1i $"" d?Xeqy66ʭj1ǀK rǁu9ׁ;ǀ7}%0["m3]0پr;ю֑ZYb=Al"` vHU(Bu1n;{kd Q|1{ 1`Հl FA_xa, ?Y̭xb P782 d`'gZG[,~)d ABHdi;W!hz$ I-ri r5eK.j:$B5T_[oQϟZX5`tH{4V~YR5! f*EjA"f_2?ci,I9)IS )9:'ؗq硩@X#^Dz.MBi|Ȇ@X gJs3Wk>A袺Ҝ'튖H53gFpsyr-QP1 Z5U0lJĞz'Flat]:T!~BJHIq\23\aaX}( 3F͗_Mk`*_~I1iqǍ8|`Y`C`Vv@&w+FȏȊѴM߷ 3_j\7 ЪbIBP}#™ D)Ii^nw,x:gPU`Ž6L脺ݾq Pn1&BA9(v ƽk7 BUVMgsYaelumS"R,jv/.|WwJDyڰ0H"͆\'.˘B7 g <w aYy,^+|,bF5{D -[(Nx1P͢d ,^4(ﱓŢ $d"+[ :k阀HCh70{Bc/?*~rT+)0BXa,r͊.Y+20z3 ZՃƿ39ϟi1n"qՓ +b`oW`tRy$ . 21;閻 l%5Kh P1P^66㬃rƽuiiN'm[XL7,@1h|̄y-.@h~j~Hqz5cSGyP2]dѨmRM탲hӱ@>|Pc>pa&ZI0hww7ZU*B,h_ K?L@ obΤRHOOVf"Q ݬWq@hLwnvsR\xwς 1X8ӎ7s<C35V Ut,dM$~NR Xie6ߛO¨$@3@T(E9)BTe 3 ՟Ds;nr. (*^UrMǀWAK$VPV`J$Tk_@sO1xC߹wV{d@ '4c7&N27w^ s(餤0;}<%_iLf ,'_wcyvDuvpx$(`|q5Mi ~F Vzh/4ҘM\P ]kӃ?o~n[TY_P +: ȏg@i7g#颻i88n$tq9zlR A6+̲ͤm)bhm♗.˳j~ol9ɐ*1ӋGX *f=o~FIϜeGJ*Е{kq oVc477Z@ ڶQAXjQoe*&#!HX* l?l, 2훍^Tpy]!Q$q Rٲu߳E R Hb83H#"`؝ԃ?U9y6!`@# +i^CbYHi|n?HC(R@3&}6W]`!(|M޹x 7vٵ S`7 [k6nG`JF¶9=xzN]b~vBF  9rq A9__hg%-1+m3WqGD*k2N0t>G Jf̑ybdvHΑQDc7/1Y RiYDC$a~\&B Pl(#jre# PUj"Q1{U_Iq6^ EleQ1jP%Hg*!lߣmf C1 D4y;thQC}yd CU2vENR-tyN#tr=7d뎪'\hHml+Fm܄mO΍ΙW8sf:i#ѫomYDG/QzaPX2 Eq+:8S2+SHdJ{`if2+-<&žp )0Lg$TO m㯆ple!̀Y4D@ٷB2V>66֛VcCMX e@H FZ(6vh1ޞhަ #^8y񝍄PT,Te_0HgؖUϷv|Eq@8iSdOD󱾾) tpB)K;) P066>y # 8έèbu> U(* mf.4d(3]eKp85 c}TU쁅B+ f ;N,4)&Mhql;o'&oR ZBb1/ٽhm ٰJ㠠h͑#b2w7.z.q**J:H4[voy3X8װjcD:`lʊt Ʋpa0#nHׂb fEΑE@~"F/rHԙTqBNdT /@H[;LX? |&:Z@zxjI-uмMI}ͧ #!!;ןd2mClbKHl$Sh_%⇴= 蒮HB#}:f4W!ܼ d}P!@+tֽ۶],D Zsf7 u$Ԣ 'dJ#a|o>iRMH1/TX(;(H=tqH88ENa0O)`j2*e:zYfP_[=e]Es/RwWOLjE;l[k^u )  C4Pb&x!-X_+Aw/[\{&[L&Msdxx|z8V"VA]Ox,͎ d,bXI0_;xa).(=o_aP\50 P2 N*X6Ĵ̀_I#!1ٺJⱭN؀UvoZuP>̓ c>@BgܷKW+TDT `:ǐ[OqZdE[WC"fQ H8 _qDWq`!f/#='E["eE4ne4XT4鳹B[Z=o=EB2b D#F4{5u;m c_SBOCiFG<20G<^e@EKJ>rax٢3NW LV&FR1s 'x`aq0Z/8|,p_e\J, Yʓ+hO$6upַ?ayZ +ԺR@1bW7}!@0DQƉݤV<ūsYndͩ՛#FU%fց k7:ɟbt;vεvC *6.Wf!Pi3 Wtu~ ![etR{t0=讱P>. 4{ 6D؍e3y|\|?&euRns]D Jމ(4b$8BPj69:D"u~ ea1CgiUc@HF"07 ::7/-q"SeO6;*kTustzwa6 Hk&ݶP]Qh^KDc 4hP_jח ' QA7.qK@FC!e#F0HҐc$S&TЌ,ds?9qǍ8s_~ oe$UaF6Z]T܍+KB[>-k #מ *'qxv~V7/-3΁.P@ZQpoU=ق& 0` +{t+Ƙı?ZǶ[C94 L~0kzkB$H"}z,"32ݸkOwұ,sUԩtԲ@6 VfJ X!fog+W{x84}`LA2O|ߗt1N|Y>6?3&+g"-bMÓ d#qdͭN,JAAn\kmh[\[p ʵ@Y eQxnRK)8A< ff]-/|RdUwsQ޾q,V" )wd떷 P$0@P^} !t.HI.q#{olu 4Ѝy"H@8$M)JUvT%IE]!/N*$qb ڭn߅]PC@LnӠ̈nPT=u\ +Ɨ3P l"̼m+,=?3`>L&.3No}&֙(ӟjR 5 cX+CHZBh)Ć(jPYkA1o"׫"(Lc#;NS5@iFu 2wSoKZSi]'&¢2u˰7z=r Μe{\_pL(R o a㬓Hj0`ĎM])Q#ZQ5bIㅋV $ 6B`g sQrG$yAD=R  _L&d0d2|> C5DЁDQ"GBI= je!7AúrEh; O&2"XxHFuSTPh[ϟbCp}3%Gn'@)`zs~3B ѷAAμ+ &5".a{;ic\Ovi"ȆMZѶaF؎6t2uX ֆ*']L%5~*Vi5S?s4" g%Џ%hQ?LmoMpdG:;5w3|sߥ^zGDS"M ϥUԍLjA2P;o~^'oBB,_nUL, b#"(F=L5 alAOH6Zl{: |H3 n ,wzôZ004 OKGfD DbN,j\ X5̴ֹui ~`A_ ?sh$(0-KUAK0> X[V<*:֟^g <=K49;UA,(8m|=mX[ZxF*{V),%2[A`JF R C@Ͷh֍NH0(7GNd2LC:L&d^?PhC4֧q,)DkkyƠC9P(z7$2ϭ?Fj{g.p`2apX25m4w讷֣l;ʮ}!EVFOa^钠3B9\B 7Ϡ{q="hfXWV8ŜG"'Uw¨c /P6G4[C_a}4!nhv*͚A]SocT@ŕ˺' qluQr6*"DK(yz$Vü% 0_L&)Ss N壑Q;o?ktKZ)34n9DOW뭭%A\~~(~<1 1:.e~_D R0UG\ V M b/+lʼLٺ |x?PXG4`Bʫ]u6U{K&kU ΧnUʹS_ f1;vAJfkhv- e1RߠҫUqۧ@j"0r~wP0i[̉>sHgbtzvg tTg)5?353wh]hU~T+b_3qpJ*z &h)' R]42L& 3L&>PݎQ}!B ,ҽ'Y@@r O>- ~q fV-9~0^%$&H)/;AD7}x"dS*C~ 7Fޖ )|0`  N‰qePiø=JjF닗h|yJ,VqMiѝ>m UmYrUAb/ml.+=b")~PWn h1=$y9&~,A) ɏUm0teY<1Bb  2h5$ܜ'G[BI8 I|cnXdV,Nn$dQyV=>*' XLէ ZP1 SE R{ Emh>2 K\fΦdn ag{"2DVDiTp Lu%\|Xm!6GEh:QRw%J郭K=$SS@ŭ6gTى^)woc+\Tc 0K?X9c. 8ۆX gO>zE4̠1K!oE_ZxrY8^#]7t`݌>m>֖z *cTPWUbzX#نy|Au|jdc/4Ct),SH7ɳIHb&7%dN`.g2L&Kg2L&vbކH9!)P&Eٱ(: ASabV uUP0{ ;ۤѦ#G)ۨG-nNmjR>J%V&Pzhm6X NJ3 3`jnh<] IKqhZ5r\n!E: vg=۱7u^=;㰿s4CIVN1=Ǖ6h4+FMQ*PDT~t]@5y"r~bϷH diUc~m&T'F&LL1%3.~,q>R|27+pǿИ˼NF]~\3"4vSN-T1:6ƨ|BYb7J Fa&AyH3:nZ!Z^uѠ.;}D`pK$ ֯e`Ϩ;M{z[ 3`\&4N/F('eQ aZ"4 ĩ5pQr y e(thU|׳zvg.pԕerv-Z];t3a[},\8~NB-q%s6ACe-3sPШBo׺PU1Dq\!F^' WE.$nt ʠ"+mlL{t hO q5Ei7"bYMgUBaxV^"2.[we2_&L&so鱠&Y$>CQYclV^$(qbGV-Q6!B]KCaEhGv|?C+an[7t{PT# Ә.aCU& a]8? ky#4[pEt*%yr`J ĈhEڟ?OKӫ^}'-XJF`Q=6 qwq,-X?P[ RUl{qEY}EU뒺F``kpѶmp]cLN5PEԆ̆8VBLki7YUz<".4أ3Tͣs &/`EgIVNӞ05ݧ5Ulh4-Ea)7啥⑱<zLW'|+tQBqzgXWդ|"rOj( DYIpnIKO!FAk\/yך>q %|x6`ciNѣ4 -EFyF1erg+1$AB6BuӠZh>lX#h3jz$qzԛG}nfPME(_E5WD>Ni+ƕO " L>2 Os We2브<";"}"+4A&]Z6De!R}e*IOУ7da[uˠ8FCCUF~ŠW谱ޡY`[#툁N|ʈKgz5Y-ѨUVhA9Hݴq=:pC$4\'ub.ps~ ,%%=[#`w2 FHo\!Pu'\6BfѨhjČ+0 *'OЇ]vVc Sw[!ꔁ(xT!,D'M a Aρ\ɺh&d2Hd2 w  W a~*A8KE2Tѭ#MMŷOWgbe TYƒjz5l 0 67N[oqhٞk݁=Zn^RAME{R``*|5 @ . c[l   ӈ룱UWvÜjx19^{-> F9{kkqV.)ڝ[f{DQ(n1E/ɋb_} B?)|~P2-#hRn߉ϰ,FrX?̻@g<̵ 6P壘M;4;śG>Tv4Sp嗽#RPv(v;s)ۼX[2bn=qc8'د<;%w=Aye4PSDɡUkD S#߾U x>2י7.#d -AFZlfC BdJ4;ZZ BTBөj*-ߋP޴:(sE}p+k,T#lh`F[hnd{iaqرiBJV^ Y(T' xB {m4FEx:זP8ES`}zP)D Dgh%4WEN랥,S?bj[SC:S#WڸlEc3 ;PTD T|}tQyp$b@A!*k]TDm4iW L&0To:5L,$Vy(ΎސBqq7Q^0^(V[=Z0^x .Po~ mvm?`- e"\ u_tC|i#SLA,>a q|h@KzG]ZUA5zA P1=ˠ(Y#^Htyi m^7RkzY^ kKiut.ڶQ4j8}xzn ѝ?@Ihƈ_0CPQS1uDr"G"q. Y g27p (@v,棙>M˻;#95[^8:54(3Y7ubQ[K֮[!V[p8t_ vgk*\:;D{>+W8LVM9lZHѯ•UẙyӰc6ӑ`* /)M e'd,Ig.:g27_k"\f5)GA )R(bsE Du\(@:XZmgn#@=zo1l8^=%#`CiReó Ae2L&ٚ^{k-}WMASj\tW~D=z`ifZ+MOGֶFp:iwMۤn/pgh4Z| ؾ󚫠W':N[gNcw cjtRMˠXL!,RtUg"Zq"]㎓PBoF[k/$w})^y/huOڈfkDg$,Wo(?uO۟ D0P^r\XZOX:NIzrpHep4T, _̔ %-ԍ6 F-풍c0><8F-[cU^! LʼiM>|9g"d23 ,"sy1%lbɁ:q̱~+}ġPH:zջwzۮ-8#aUTAp[>m]КmwFu"׊ k.R<MYѩ;X 4;[R;`q9%̒!"$TJ6vvOJσHh /?O{t>NLH(R[#_{glsHxZ>4e̞! !cZ;,,O!(hNH p2W+>d20d2< [э2d`lI9xLNbǟBj귏3M$n|t "6Kܶ/APֆf 3Mo"lG5fAACK26']S䭂9Fa B`:>4 Tz'}Gv"ln'##i mq9G)`h.&|XHL S}ۉc›Dc&2?d_ўiWژd#ɾb_^< Y GXQ$a9Q*rRC%Dd= T])hg}l6e2ףQ^?壙tW$`@3'36?o)z^B\h@h"ZbE ܺh%.Q - +aGX81 ~ӌ gbFkj?n,mxL&̀IѢ*.bH-^Iu l:b IT&Z%a/ξO Q׽?%P aA[N#mO=QbC i];\.%gW*6| lPZ#MH+W'43jls,c qvH'GB#]m\P~`=ͣW8 aw<`jiGlT4aO_+7:*HZן'Cg"ytEz)\]U5[M?Ig1?d2(#棐d2&N&eV KtjbR0/5& B=-nCm@7ɋk!/R~f dHHwIfmq=HhakCgf涃)xJzrt@pж42hӠ IRLh\(Z9s:\J>?jcN91[E1$1+︲ƭ΀i۪h+xw3gfųK/ !WĂs*r;BLE枨[f"L9!. z?;n l Ϊ>T>D6> QZsg~`j}4fvbqYRN\w[B [q d F4v*Z+aZӱ5P׊y`?H1K?,1~ ,L@( 4bM2M8paګo S4O&`fJc|Q%SZOQko/H8w}P3#ie#Z.3u?x$hZ66fv@{k\S>v$O$IjituRo0lY@QATqAs9!t-Z z;PTay֗cBuTtNd$^ a;#;ȦXψcSߴo;$1~z= s]vQc^PLh~U1Я FA&d2Hd2.v`1Jl R% đAh0&jh593a0z I0IjFe3_>^Y,86Bc^?r_ Hކ32춸_aa|8Pu-DZXm 2)_xzYOP|S|MǹK,!` eiЦ]x,Qzl@Za,aY<{MgoE皼-,_e`t'&JXBL XBe BY)7*1yr`/ ).̻DX sg,>V&!d! lDOT%᪁6@օx]dH}94^/''7\PzہȁmKH*pol`$mt|8T5F¸Y ؾZ:1/C8 8]4^'*(cTpZ~6JF+VC [ӱL^]{i(A/@U3v'y/Ҟvpu*z#"bP/~sSDoGx&G3-G5lnRgHۓH;րm4#KW"5n]÷v47?TPK} X yP ׂ9ߣxfXm!r%ЧN~tyl1OL3%mGgC3N{a?P6֝0)mܴHH";~Ϯ XPH[m/Myrvd~ MQ$%lri㠏ik-ƘH?M$^G-f FJ&ٰI?Υ[P,ݿ}ߧY~{ qh=2D87qۦ,s|M5Ҡ BVfke{~i:薚fLH^(Lյxv fboۆme2-j-'^+kHت)JB|g߯Y?OAyF([WmIL}m~tjb::Ä)'|F!SlFd2OwQd2̻Q 0H`R-#o'D㾪,1 NXT޳HTYS_%ʉ6/-P$HJ0VѠ67ntୟbBAc"SaRk~l_ ,Q DCxY Y/!Y>t?='N/  ` 4~$>Ö/VO{Gnv{He)}FDN4{Om>i?2dbMv#^GKr3p| =zk۵3Aӻ.P8Sa_/݋@рm>$ 1Rm[p˱<,n$ 7"Bg~xX_&VEW*D8= &ٌ3Vt}% @(FP,Ĥˆ Ej JtSoJmXj7a߱恦2lYɅ1PP) wXgyA]M { tFu7}䗁DM^Sag潡ųN' $39a< ׏_ȬImhmgZW}PLj pH*m`tf٬i+R4}@toΉ" E~}x@R!@ꛡ` ztҼH7 h Un @jd2L f#a&dޕDv|3S` Eۆ(; ı bY7 O,)H LD:@ӈ€@l( ?EW_}${W([; AפrF½ތ[RRS cP2^+ 6D.0}r*%aR^ɭ&L6e b&Sa"|˺ԝ *lTڸd0:F^ɠ6>YSk fp m^2A;US^}RtΚ,F=:G\b##²B(2@zB#o~S;352VjKYQ:)#!'wkA-*Q B+ %u:U(t88NJ#OIuW5DIUVU-iFB MՆ+%6A rQ&drFL&dn\#r?jmȶe :Uĸ>R,&G݂O| 'NR# Ic-*%?#'77._$߫G3X_XpF‘ ҵ~E댄u46L(7tySP,9F+;FCffqX!(,- D:ba, ggH{نm@=r"Y٨Pj>C @2|WR= QC5'hSa;<ߛ PpDXF&*!EKٴɼ)p3׎%_ x&n |&G_~NնW_aY?[ŵSٔHSR E dAIIbCE`&DX[! SjA5> p;s.36s5^?|sf2J}A &0fjǭ3Ċ i;ٞ6H@HʶzDp#V "j>< ]a8j0 M?iJoP6$}{qf*L:3`a7@z7 w]h4қgN3 q=\u]&Ђ>H/jӞm7NlU[HΗ3+3?[`AJѹG4{( HbMk76.yG[TkI'd7L ƚf{f!L_Àj|*=,f]4d29#a&d27mDPܴ@,N SOoY4D#+.5QK2 7 F սKb?`)aHf+ Fq1ߘ[?pP0C e=jܴ,,쁢-+3jdP#Y #t bvka}VđHlSÚEGںL((kB#o<}fXtqŸB*s;s8]S@9EcQsDѷIYG瀕g'yCFcxO|37w?p;`OHpƹ=U@އ@[SsP֨n[@yM`J4hu(J3&J kƨķN=ߦJB,O(zÍ8m !PĬ!= cKC̍i( | x=L` z7DDItļd$!'|"s*[\Ć$:x"?:)z j7S"X\וl¨2pPLH= Z4354iS3%(_\/k#>:Yob`os6ntae `$hiuNS?dW]u㍄ WQS6 CՖ+WB q}3vd۪gl=|S3a&vH[QQ H%~F^Y`-ud2̻|2L&s#c@I@k<gG1I̱In\'X~$EiI6HĊhFŶY<|HZ%|.[O~V{:qhTP ~鄲^~M{A}a(,I]03;̜'qb:, ̔&.rvoảL`Zc!\8u?yN fKvXo$TD,f-ݑF DD%%D ޖDm,pɒ\sV] Nߗ`Fǁ8kǀSDFBvh04f3݉b@]*s_|L|`.mkꚵ59/\jG)-7yq9dELu!WIEŰ=R[ѴPLqQH5$O^>{37*NLơO ջAPSYVqaJ Aǰ~Y -sG=Ddp'D' YyAOMЯY;AmtR餃 ]Vna-wvfUHUK 3f/n*q W>L5Ҁ8i^~:o$Ӟh>غ(,E}zk?E&heHύd YB8ǒI 26O.el|g"6 i9tRn`.2L&L&ɼl{`K?& 00L0Ťe)j\QikW]eakm-oyZ{A+J%J"EHIHIL D 0{>kNS;ipv{7h%E^,:aZGh;`m}PMuQǩT E@('6w]G!qgoI3vM'ɤ`8h] [W6ޘ^!VP`2,X ֬=f,V@8^HŃ؁v܄e;čphT3m8( 69ſfiV]]SE=`eS)R ov q q>܃3^ѹ;X>xAn! @1& ㅧFZ(`Ģmw)=0b$Ov4(?'o>H1d\R Ƌe(0s_U7ް4@Cjj Wgfa\tTgSAd iイ~h>7Epd0__J~HF8Y|0Zk-鎄? ;n?,`Y6 c;wBTwea퉈)`abc)vMg,#31"׎Aa ?{$5P`⯈J剅 Em(~$䌳ǝpP7CKjF) ١z9 CPE#'e,M0@y˧H\υ0nvpu q;Mcz˛M5)jmw|]Z=Hb_Oo&k7= ZMn&Eo"_a֬Y>O. hLh = ~̮% 0 8 ! gۈLuIEqH-rhf4ngjᨡ(}5Vu5.~K➜Ds!EW\ (uZR}JN4r-7a >+i2X-`bc:P.ё܈΄У- 322222&!]$@jƖ A'&행8@RO |6M[эFDDiĥm؉z\f9M2#OCC)ds#$Ƌs IE (!G@`ꐜ~ƍ.̏՝H"q*lIwm>y8rPWP8(Jp( lEm D'H\&G wr[GƕV܊@5Y̺D&#{BZi+Iah*C94f#V$'W$1De)l݁Bq;nYǀ_KnQ+61p;U@6uE` "tԸ!!Y5Jt}R(J hPW|s,Lp.N <Űfc"x^4%<_Sþijq+;Jˋ>|<Gx()7xE㸄j6lEib#aq"Mm*7J[,R^6$h  O'V[Q 37l8w WŦvx/ԕk+m'ㅒvkodIP,4Ύ6 XVi*5,̵BVD * Y]Vb+meTw_a G3fWLLR7bBX #)n?{kȘۈ>q9 X ܝFFFaYEvoNH0,>P_(х$ U  SY;7AUm@:M q]wqܽTl8_3 ФlC)T 181^*Hr8; B\E, W4#9q!\ $E@SGBԠs{90:ڐ1 1ĕG5&7`Sʈsoy þ ~j+iiMLʖ,ZW–+]C֮_HDt">,-(̮`4YUZnt~v*JHGJ܇#O03I= GU[p=z҇~!ѕ  N]ڿEW>ЦbB},WUjD〚Bqc%¾;4F!ybtUtp${eddddh㌌c\lOu }N iRY雇o;$Y؏ xJEXX(K_;|<>&&ƅq{7[n K9|KI ZlR0iɱ!!ټg cZUCŘc XV^/‰ +bgbE/>}w~%ƆIӑd>d "XcXܻͻo Тi)^4Nn~|?+464lńFM,Ok.,n W3LFEPoރHtqZN\cAHhP/g*ڋm#xⵦo4&8l&bkZ/zԊ A$IQp4xdԊn!@cTRC:=:l`x+|E320F<(-!13^'cSL_hul#wW | v;R!<Dw40km"%H6IcЊ[qsrk~)\0#*ԮpVU0`zmjT@H>2L8Gc|Ìd`T1XL["Yrw|/PJ@"5b$OsتWK { @sX2ºQ{0bFG 1q%<Ux GW?W(#âZl^H,L;.CHhWb` Wlbf/FhpA>,:?y(є'w7$Bm)$F@">խxىo(E8SɸT3a+(L\rOrp&IuI?GǦD!Z ڡ(xb2֓ >C YT>{w~-͎T-G:5؅GD7B_U|=7]?lBU^+и͔eI0Ņj6 MT'>lo 5w+"FV^^wk G@䢋Hqj"9 h C٧;Ы(#JV[%;݉ }8&"wVĬoz|`Pe`O4"`.c.*!( JXKLK6xg!gN$XP#q6z*r'0 'H#`0eKlwƉ|˟Au?aKMZrl8XW">U;]ܣ:!Qp%7_yJDBb` d`m,F'$w駞&=fb8 MGb^cT䗌/AnENg|22RT=[bz?e -?؎º^̆+@/tBTDÎ QW%vt)./ jc|p|'~v)c}m5(z^UN"Չ.`B+A <'~/!ANxK+qFE@o: 6qg{8^h A%8ƏsI'ń3{_~[DQ#4Z{ٕ}J$jhגcդd2U IK?ɚ3, vBA 7%ɀ訒0p9sմ s@+\ӠK%LEm7s|k':XBf4SQpԶh z*c;? cP4[Vn.$nmb[XѠ!R6fľd dz3m$\Iŭw#`E(=g=u^ t~;_jQ Rp i~Na xш QM 8.;`ߧGGVD}6I{{68'UmW45#tEWJiMCW]#a(#B@x2쌗fNO嫖q+ <ݔElMVQXPuƜNqŋLؤлmz.=7BϪm"JH OK7R6VXdoD=&W Kf H"LJI=vbc`mHK /݆u[tx4i$d|rɸ%Pk^λp=˂0)C 鴭 P΅H 4A|I۪ZgAN9#L40"DX7v2S!aKH UWL#`wM.\/322220####㥊-܄(C}ZDUX+Єrj*k'A9%lidl]% A0Jz={5@Ҋ{?'-˛87v(Aù ރz!j2Iђbqdդ une!ˆb'tPCe թDSΓ^੣8+/?{_= U3֌VLhA`| ="V4 }Cw?8|-b7a3%uT 6Xj"hM9>jm A\?!yJ^H{Oq}qؗc3gxmJ|%32ZZ'!XN_Ho41>㫋q WpU/L7B$(nHbUZ#M: (b)`Q0/F7EGhR-bRDT"b w7<y/]A!3WRF3^FT&%DKđ/"Rw.ԸpmBS RNŊ {3I#_l[)-NR)@V28XW;xە  RPOuh9Q-lcq] u\ysq"g#]0OG4t Lq⇡;JzۣF'!)?M*RX{rxQ3nִ"ZO'9Mх1P\Q 41####𫿟BFFFFs9&F=UjZ1 SD-SU`,mM5u#8lխKHugą&Ԓ}ŝǯpxD<nW3![$u"TݶBBڶj [me׼ˮaLIQ!+nv+R?rl`|Z,!O B?g sΗ>K=99*31xæ-Z7Bʶt޷s{ه-|Z4 ё>Iz!5҈r6[_"싄}CY4 i &}<7bJ+:jMJpPK 39^\װtxIP-+~> |liB·)._9i3Q8(g7A1up#T8٢ڊ]&xX@$&qE1Ii0ĉ?E&'pP_|/ם#1U?r<aYPW@bNF0ݲuSZ"7yI[*DG-L`o bE@\?.&E%&E(} 4+wZ-*ZOb!$Ir3{?D7敫?d"6n&oBuHokxѢu^k_~k7@I P5b[t)6|[_ e#G^_ob8X3l] $) ŕڊcb jw=:GM57><ځDA^%X01)qڋ=B!}?+\69̪ q$)D1)5WboZ]9yь,$81܀ŀMI#|7D X0nkE1`xO[fjSH.MDXBsWMe1.OY^xx<<5p0_͌DH&5 tbǀ?\?]FZ؁oz@1Z Q(}cW4cP%y(}FM3T;1 aTDHL|TH=f9vԃ'-Un\G4Yrз4۹ggdtm;BXa˙wÑgD w`E؂I&T5e@C@ W*%@1ggU0Ndɡ&\,E,82-mEGns~`8 ^# q!hкqَUA;LL!^z+_w+W!GtTruN.#ҖVHSˑ֕灻fhZu!,ˆъq+ ,MRTقTѨRrӅ<6:*Lag[:-8҂PlMz-rG?*_r2J-p%[q=ׂo-nETi׺6-7Z2 ¦P7%_r^{+V X6=bltt)XQ Ik9~/FöКm)!V@J(H[}{N_[eXjCI6yđn"b/rGV3{&iF#'-Jй4[pW;>e!#!6yifUl޲3 Fi$Hoo2=temqђdvVDXZeNj~N#‘ }s~a`VWڸcpjH4fYS;dĐd`Àls :B0,7b4Σ^hn}@b3΀atCW4#UU7a x͏Oa4{w"3)W`&`\ۂv"SS_@*?cz(h65 POf y&P=rv7-"EZ Aw',.S""NU4枝5Wx8_܅BjPU*=$)i7TD8'~` ,A1}4Vl5=M'U_٘^@V DgBE'ۖ' |h! i\r+z6V<pv=`.Woֳt(pp0fFt@o$M-K%sh37X`IM3ـTm}M]aՏ¦6u~o,^f™r+oWD!-%: Mq=KJC.s=;#Y_ªǂ|e22µ3݄-.v3J)BcRo8|wK}0T֎*xlc1+tQv bᗨtSRZs;gnt<>iJtqlHV>vdV,'&O/LI?i\1ٹMڵ-~n$z*2.wf _Kp!K`o-$qդR>41[3U=R_nˇsh (@3M|MEzǙ0nQ5a\Q$,#nAkZ_sZՔs.=@ $u]}H`#ptiBBy1Xϖ~ :"38@/+"Q(n,RA]0\S#$$tH]_e?iy_S0Û!r)Wj.1O\gY 'k?6:[<]vŅ̬-Z*Q7*xP[AdX˯]}Ó*P)*#<ģ}b0aXOZt4v0l(Zw†h()W(b'z}-4?ov߾}A[_OI ~> +о".&%lh̸})POη6~{\mL؝ \322220#### kQRij3Ny $hZURif%,f"Q#V%8SlŘYKP* XӇ~Q&~:!Uۼ9B,QE+Afi$TJ Y0TU q_Ŧpy%2\yQʣ=C?2E1 UWi[L+ZND@Y6QD ޲4@5^<2ɼ^Asi3O+ő.&D_$ېbɍ3Wg49cE`[1ӣ~H"f:qTu1Łpx @X:Xpf_>yBI PPh!lpnx]8dU:QHڹja(Ihf6T9PP_ ˙sU0WHEFPh2+ T@3q!+cw8_.f p+f`|Xp*^KB`;0xV_YHx9C?pPv7U򸢾J\ q~VchA48mxZ|˗穰 z(x4ݲn&֚gc.ycD=;#L '? \t O+"n1ƫIT\:slyRE!IƉK0Ȓ,bp68%9~ڔnV! `?-Gk6 -~/rK)#JHUhk[;muHD׭FòhMl` #=ybc?ģ~3U!J)ʚrT3ִ@)"HI,Ve[W|h_󗖇S?˴E"d@6X#kX %иC6ݼ'\ jDajg*@5ؘc&$f@`E32222$*ddddd,vAσVV|Y6T=NW7LVLD}b ?iKHBBSĕ޸-Ə3VajDEi4uiǯ*Yi"_<ׯ\MgyA:nhG;ހo |STXU!ʣ숳j2hr7\p9>g>堭 a F-1ҒcH)qL&s7EW\hDgɻg~4~X@H aƩc#l S,j67Rޒix~!5b[㾍SkhÛ葰s|nc-Iuɝ4E[ &{/xFBk'}3,CLa/nA @\mqr\RN# m*T=o4 (ϕp܇e^O g!)mBJyMQ^ASejHJ*K?qa/VA{Z5ٕ &0,@W'0Dl奄oVӾ4' ؙdFƙ?,]HYjÏV' _C]ةq>"Ac {Sk%H\?7-= 2 Z8@OwdFƙ_44Aw$_Ɍp\S׭pPT0qɴ`%&Pz @s cH՜(V[l?OU!r})0 t;_EidQD r%~^M粭3Θ.HZt !XP/v֎ȍ-u]AHxPko\t}q`1~\Pu \)A;öZq! -EϑBBEvx4RZ/(>]m s',CAI@m6|JMf5=ӟfٿ +GO@[(0Dbl0 e Vݺ"FuSv^GXcP s|/WQշrڪM?HBnSCFtcLdG=sWpmIHYPq)#` BMEw@]{ p T#d ?c.8hgTLAK__'!&c}|P2>4шY5K $lhij[pa>>ɢ8 ! -iAՌ3%$\9-E& T/C`YO+(&7n&$RðI.) ͇ 쉂@ d[ߟsAյ}mm۶08՟8 Vkuю׵"ǭ-qӫoe6]/u9{w2w|/E+ lOڴŮT]uC (5zRXzOvn+?RB*mu>e$|iLj1=YI@> Px:N6آL &Z{H TϱCsz;cw⊆bP,FeKQЕOK(D$fHGߪ *=S MsU[ZK&JPFőp4b۸7TN%N%,4!6OӉ=߷;qEsWDW%nI2\Q`+$(5qv+5}p"TD !JT۷5Bq  #4WQxqT*G~-~<}hy~X -޶ b[r)S 5nkxS8W~s➅@oܫ|Ņ[.(oa U BUю׵;aǢ뢝_\v˸kY;^9~tCG9wɢf܍sB)8Q |iY6r)3B,qO\:X~&qڜ41,Iy8k64o ?&4**f{<Ĺ_s,ͪ;!]孄6θ&E 0ڍr^ͦ q6c90vaXBܰ,#9 ʦmw}z$jQ@H9f 2K|maYJ‚(:P)1WPeVDRGBGR`Ya*Mc/I-uP5-{Dosb"A{KiiY;8 je58m9 q6=ľHAlP痋/ WJ` ddNS/Ѯڹu.WPx-uWuP]ӊ "8R=ă:O 闹(CRȗ"V6yw LuKޭhEQ-`M x\9PXi-S-x `aڜwh!AIS Musy{+yߧeMȎ}Xr Q0z"sM,ysSezj ":𩪍Fx0Jm*sI#L*M9SbE"9TPwd*ν_6IwPA\w!VG&o^}CfWZy+(.T *oZQڶ6*3ab>Jνh^u-]xÑlܱ1ϮgऍD(b"!n"nOzBdqz%h'U-DAOؽǟأVՑXQAGD =\TIXR!!$LDd*X-ɽ3b}dBz =IC調gWq$׸?|t?>?c1eCHb"LOڕ&|+B"χpՍ5#O'&|ݫ/1V߬;˸Ūװ]t&G7/t/%\KCR TgwZ7>Xf]#h6lZuK`^>/BV@ӆ8Kk\a# F0!+TsgAFFFƳj/<@ڝ _‹ ꛝڌ5U+2t~r|oj_Ϫg+A,qs[Eq7LTZ|qnCQBkDnƘl1 c&!{jb:~1@I?sOxsWAF ff p#py6c,#'-Ӗpr3n_(I) pNGTB ({`E3#?h3drݬb..3Xw܈-=Yo1Y-h丈 \])L޸v}+VRpm &UhBuS MӦt .M򢱭u=h_|.z.|Vb\ž]ٵc;{ !: tA:`p0 CxđJB]u=O? ?∮V:tD~wQ>N=8j˟YAؚ8߾&OLb+N~8^} =ӈvTjĚVT8322220### LÍK8S}=%ڸ@cUqlD+ UOa&4qcooEtH*o B0Ա =9j6۶n6 {:H^9)mlBmJ7>|b<47MA;n2|K9ɠ"6i)Yο mĚukYn%+W^PB݇<9\!6 N!n82s*Z.9qq"J7TF s c,C^'v?(?hJ0zbIoCgz!c[FVA\{xh (!H_uEoEذBnS] lys>`& "W?HFYJbh~2o9IpB/fQ}3Q|j#D: 2Z OjHQm)/ mUM QƊsF:]V80c,rXG= C@21\]*# w !x0 |U3bWnu^r-hiaA㔉Fh"q!8eJb47}i.'0'%-k^E(fy w?_?7>wпIy3_N>p\p~[t =Tsܶ<;a"P]&\{2./b ^UkfYYBʑ}jO>0>+P<5-9RMbۡl^ kBL13aZb9zh_që q?4׸],&Z|k9b=ԉԠS4} R)o$$qr5ygJ!5VT^ӣ^ʿ222220###㥇 Pd5(t,a/2ř8UK>ć?I\Cr1!`f@JO=(2ٶ'ftx0ZxF{G䄿Ư7h9I!c"um/dh%v$Y@R ޻Xy*jR&גdC};oNރlb㹛Yq#ׯeX=9FUy8΁=޹'A0۶(C؊nV@ <@U"(Hǁ{`γ}w[juVkdd[``P!,3l3T2LP ed<ƀ)BU,Yd۷]O[o}O={t[nRs9 %9<xpng_}~ŵ\cQL^XXڶMx{[-GHwqJ]C1NT;1AHtdȒaHbm_u}`.G{t9!nWokTTBo==1{@8KMjjBsWSƤn}GSoHlt2-`w,Fb߾l_THw0GBiZT;oxm]y{QG%" ɮWcn] x s 7q+ڢx=lBQP;,cG(6$Bl0Fў(qƙy4$/h; ! (qp,t BFUb}NaI/? d[FoE /"-Sr|t/[lwvтŅ81a(NХ4FUDPu.s n&VMϮgy{غcme -.هrbnrp>V(m2ٱ,8҉0ϣyEĄMJ"V` 9Eĉ9Z5ꙗO4w< ?>w,-Aܬ]+ۚ}Nxxi/Bp}sAw"ͭ[ * vI(ŭ+~;2yp(s2Qx^r$t%߈CH-BŠ67Т,о5 1aHOո[Ι  F /T8R,8H ~΂&.V_ ku H1$`qۑt_b4s,pGztN[vޡWpj6DwkP@pK :InV8!rɕ] M:TՆiٶsvǦ[b05d00Ve8hh m+OS4fyi2#sGvL#J渍fhۄ:ɄH^bC&B2y\PDcP/v4vb?`}ٍC$Q@>2Y~=U[Ph#C`ryD1VL-C-( IhG7¼|hoTq!Jpap7B{DJzUH÷Ӆp[ -TQqmz3𣀇I?<=1-oC*p@STIڙN;T͇Bvf,$OQ0QMx$s:TM.ؒd#iÆ3 '%"{_\l/!:ꭨx~Ο Hm fAw^'BbC[&jBqq")bbb!;r4 @ 8nJ8 ,7+?򓬤hl> NuClܼ 4vgqǂrb& MTt݀$IR3Y>%A!e 6nUvf֯c8L کᠥ4 "rZHWV8q$eCt$ڔv8ivơd3; fBY&^'2jE 6 YcY<)O^#<HkӀjd0J;jߏqj)[ Z{EE/dPU{wm4 WO.hrU>fĕc}d[yagf"t(jQoEEEEV8{1WMmKU Ix$@~ygAN=VU꺆؆nqĘc7~NY?(O62'~[y 0@F``@mtFӎ#+ogyѮ SدvYDH&:HJdХL,6IvM&2QQa&4y<3nYgeqNcqMQQ ! @dqs V yWS&'U%kj@$(ض .&B4IJ?vdw }p!)WUJ!rƗ H78HDKmj (iI$l]af1AX `hS7M( ,Lj@5qIwoѕPSqȢ3#e'SqY1ޞ?_J,֧*$8; eYD80"62D~9ѕ$Zb'XUI)dO.6(F >o^QO?3D]FGBE>"6(T%F`pPi;߱2–~n)"E@OK@7`Eř4w($!CQ_|&^!pvJJ#.IiL7OST;m# A=ѨDB?#bOU BeBU83S?8,y3R֊3pn >][c@o6ͩgF^,&uRqxsv`SD3.E| ['&aCљy(tχxc%FBCHA wL/BKL}+ře"wk2X27x~vn[4rYuUArѴYHHNZi3 Jv'41a^>;&4Na*4sUEP+%r, P̉Pp`Oi;󬮃r^' V`ļYCڟf j"䅅:ĭKfŋMY0ѫt[z6zKx[Uㄴv$_QD{k@Q@"zgq18wcqA QlojF>:PZ }ni[Gb:B1ae+~ c2];[/z^~;r{)kAEot?m(4Y@HH3<]>s{.|7 PiL.͢AAWqC`0cXl6qfբ'Q45+y%A&$#rm&r E񮃊2(Mq8 #@7fY^:|s+i4H@7rU3/NjVY@ *1ۓ?6)''ODCUm W n *WQ Un8Tmty,\ͮNB Xًa%1a0_;pc|.g>h|=o Xٿ~ P/(| s!jڻnP9aɰz+hH:FǩFK섀n^HXD/HvMݻbxjv |^g2jP7onn$]R=N;Rp&Ҧ)mh(ˢ/` wh x$[Q"ޡP**4NǕU$_>v G~Fif]lneә'elXi?v é ר4b o*(JLv(@0AUVi E!)8BNr1TPVǓ&c( UD]E9e6 &BCX׀HGq"OCe;CJc=1Gl}'c.A7+w^+_fk2K ADmQPhׂ#7GĽ+Q\ ;~y9 BYk>߯ЗsڢFm*C0@!D}8!wV81A h ~x'ɢ@#Hz_#+ VۖE+yح=r(&Eն~0xht -tl-Q [NƷ'SLM |s/ޓ(bāf 8ɤ'rnjkIlv*DdEg,#4HPPs5.֮+["X4 Xri/ ǖ{[Y*@qq_w/q1Dd@7Dcq ~-PhGvxNۦQ@Bd}82ρ?uS6-="NҶ ŕE1 R} Yp+F<5>N˥ѷAhK+]FEEEYHXg0.dW؋Eݸ/gGv ҋ"q[6 ڲ%<)o+Ƌu"+Ҽڠ.+oQhS[#p/gĤcVyR3on[QIlɡiW^Ӟ:3ḿ]$օl">AD{[ߓnعp8IIr h`J&\4Zumͻj`ElIC mBUЄ9CLjZT3)&(Ј%r%rxKՎǗqsEeD8rJtFXh|>hכ &gBm lEī'/S7PFّ튞~dGlHk/E9'͑]V/7/#=m*=<[Ö+p#1f>Lr8T])V}.\S**>Ѷ7<ؽ]?Q0_vsNId!x▔VL#ϙCrjfȔYm)F4"X@/ɂ28‹hY9Dm?b7J9" xξ@q VWyѸN\`lF [\sp4 Kv{nԏHbC!鶩\yyLfeEb|S(ml]+zmf@+0T Yt O&4dB or[E/hCe , 2O:6 kZgq4^@gL<1,/-6=a״W0b$q#'ҹA3r!꾘G8\]+***JG?PQQQqa;nq RĘ|$<9?()ڲ,OI[O;VFrPU?I(N[m\ɽƁpɃ:6YIL1q&ĥuS=zKsHo'1~'kMO]uL9;;Iמ;x9W)yEt]`ܭ_e<Եs H1]MP)ɤWV Eh/mDx%9_&.GO~pEМ$ms[{H .z2-#`;!ʸ|^Hdد&) Qw(?Σ߅@)/n/*j5 X5ō.'81p5}xP$%D@NhTv>)A!VAqsggg샹)ϬS/g–3)HICf }U_!^)='$O 5п~)kԜ m>A N_ Afyb : WT#[ۀ+V9]7|it-ʙxɬMNSƊj~ёO$xz.v%R Bn\A__sI8(#j+v`]}sw h͟7hN^9]wWp'i|RЍÿ9od,vVI!ӎ{ozpscFr=:q"9Ó 7LExXƄlda8:˼a?'Vl|‹EFĶWE\z^_FD|ujDFdY {pD4 L #BĒbp ZhmQXiy RtbzL?诰VF/p=<5|8Z**~9D~PTdž1A዁_~i#m CJ(sn\JwBv?FQ0+qqX[\1좤.y~m {*8դ@s}Wt.h "A~|i{NgșQDQ(EaAn.GG~\2w27R ؋|m[T+kJ_}ol߬W=+SIEEEEu$ Iuh0q5Ј/ ĪJ/$xL" e kw{X- lk@4"s+SK/0~vξ{]+O*pES]BHDrMC5ȩx;} /΄,"973sk еr̻i]S!G:w!{h|Euv7XwG/_`ف:Q**^XH_"sy/o=1[y7vghcHi;!YDh^8;V ;t4?ILWM쌇ASCy Mo_Y@{}=s1Od O+4Eyqՠ/FiC5M_d_lWc1aR okщkbE1 }0c{y>Ļ'~d\DrdivC{9} i-߾Y׮~5*A~5+ע̖KkBYhikt/^%!ͰPˑƙOG DQ)q^O[QqZ("ܩQC;ۯοٷtpq˖/[ mK|9ѿ\y _`]ŔP`| 32 FRow) }0\ˌ?"T}BukV /X"g R4p#r]9ԧ3ZHX +***e=x /m^&gK!cm ^ sՊx KݔcM]sJ]*ō:"Jtd^Dtf48;-tI>C'\:6 ?2.pBJ$#qwvVi_q+EE_$]5!2YyXwN=Y/]@b3S4MgF#M'wS?_&6I4 _\4$8GB=^ȩr`fNɕ۪m~lCy8+zVu!r@@$5/#;Z:Oc5O,!$QrpB/+7=mBl>>cjyk!]m9/Hgk= tgp]_R}쫨x ׃[j( `b}_< O!T7VNĆ McАt z CHc& {tPm bԝBT<-OoMDy_^40U#?.:k>~+NV! dq֏?x̆8"HYa\i@^N%J( !R/'NX\r/6pc*g},րytb q׽ s:3TvΊ\K\tB 9fu{fAv0@bX픐"w[.|?+KJn_G5}~5amߑY*a& KLCisP:tts݈," ҋbs+2сƹZ%cx65-/O,,q`$2y4$1ݠ.^)صC GzA+z 9[cԈ 7 -b!7890bU58Z׏:GXPtȅg\03DDg\k DbIJ(gpmN |X***xz׀k&  o?coyF Hiٴ$^e#YL0$W) s0lf:X?@Z4QU`=/7[_nI+CY`mo VD^ 1!sz&c`([T,V,c]"c}{8PT)Ϛ#6njzM(( N# Bz:ǀC rm.g Й[;/KK!O`5zJK[ ?7G҅%Y73C8V}6n^􆡐UG,/ˁAs-# ۚ5'K"T]A bK3W9ܱ1ݦ֋]j;?b-8GÛK))Ovά~.;r0 B!-ȶi/EJ!ĢAoU0EUG8μB}+Wph(0W^****#aEEEE4mŃInOy蚜V vB46O*6O(ҝ(B’cez^ؾe[ W#P;0tk>m'~9>zkrxܾ#4bg*'#J~Cw nijRTZD;*hOk[&M[N0`Gҹ3u|ڵnçX7HH"x5O`2.ьZi[(5qttn.:EiD44D;(l8DG"})ה *q >dΝ82b(^6 ^ Jg#A'4RQ)Ǡ} ͵2p[ b&y!~}.7#Y6(8 ,%.;7P}쫨bsg '(Q7dA<8jTq<ES`fyMD mXLh}?o-ڍA0 NKMT ,,B曫N>PAZ|.!P***P HTmǵpzKL'e &6 ŀwݸ d~g~l=i)ɩq3b|EޖRZ|_.>/sAiۇ{Gxv ?qǛș^W޸i$Amc+ kQ5K:~&]>y^29'x8P+5p0ͰmSҎci׺zcfI iۆFаvQQס5rxywjF.lmX.Gw4 NF"͚1r LT4B= 2(ڟ9Øvmk!3&/*!^^cruM #?,`mRߣ U!&eY΍r\Hb qC\B⊊HXQQQQqh@/DBeOp }%A{Yv7dR)uj7&, 4DYxd-bɱ_׻CljTY`Ȑ~_@?i} {3K6)VՂ]\/|[#*(x8y^]aN2 fOt]dt:l:T1&]6akVtX,XLd)mQ@b31) t "}亭OEyz+/N:4Fq&s4 @L+zq ģ#R؇Xx5 n@j;f_߅Al "m(x2K($w (;Ѧ*?NfA* fAMp8}%x qL&Yyel↋ ۏeC!:\GE 1Eq&ϓu<>Y7fY]PlYT1]^ཪN <. v(9/#J8]!&Xb(gR@gH0t \f Ǝɯ\*KLZ0! p5vmUBkhWW|^#յ>EWc?(Ca%y79?-SK%޼cqU)% 3,3zcO_#'y9If;Ҁ j2" yZuJt3L3rv̰ttIL5#ڔyD#J',w,2Je[Rb ne+n&; z6"o'”~-mk݋8 sҸ5%6pY 1g)$4KoTN&11%?%r7 IOwAm~^YQ>Eх wP2EG#EPtSQQQkﮭPQQQc77n"}US(VDE>^P$L4cP @ !<9۬3IOƶ31VIB#mbmKe8,L}x-?)c6 >5zչ]i?j.U+G^U^9 tl J9`mj{^Q #2my";tn=8S\Dm ʔާb+}qtcY81QΫ{[;9Q:<mxq!7{AY4.;DTxODtMJqM9 @?/ xBcm8E֖{"QM]@4"NW딃 ~D^MZ?QDG78Ѡqp.ThvLZ(dCMSQPUv԰U۞ W\OI:L??!` Hz.t`b5x" 3/'t8K_f^n`%]J9~n'"F5MQP<7ML4-LM_08Y@Z:3m;b=j[dEN/Dy[xҢP7: \kez2k7X<}֥(G\U,rOݒr5nP{7ϗjnol8@B1%{բHXQQQQ &.7DH5)y!8#Ċa=:%˛K)أ$XBxq 1ۦIؼ86QV'L@đ/}&ݵ:<UTT<A-IQH2D:O`v [ewD~j,)V:$ 1#@7tٛdi24#Ehȷ=N$L ~~xMہgGO[@9;"{a38 b\c FxGy> Aqbτ. +****`\\4V^&i [GmKa~29Tt1KuCZ3^DOxOHŠe$U\bDG|b=NoaG]y@?a>]?/ij;N0 ;[W Nx0yػ͉,0|+'L2Yjd{B &l\$H-oqq]iKo|QBnoPL( u%FIӰ&H$i(|s5IY H~[ňɻ"+la*^DڄwZsm[pBWqiy{k%MQ=,A΄?\C?.,c_EEӁvd+sUkx [ \Ŷ\~٥]g2Uj7DŽ[-8 ˸'oNZsw|Tཊ\7/\jgB |^IOxjHٙ` +btU >o܆OPz_VKo21Z/RD۞7 ?$C?3_W޸]ỉUzI ݞx^ć5S80_#؈f{yQsXy.%}c~:q^gF:wDC+9l7m݅zʴƝY &hQ\&^"yzcBٕ]2T׻R `H`>Ft :Vػ!>] 2zFn/w ]p:$uC>I-I0:\ 7? >]***)h{= %ȩ_s ,n p5ߵH.Ơt<cs)Ln?.<tQwC[5-ޭ{Uv? z;H m^H/ ߾-P+/{'v=8XP3_x HBq17gtwmRbz ~= ѭ086z܍18çxȂq}*BŠEeT!"g驪y"97[z/u[GjJEvb|-.:"bl!z5Thu˺R'-Te[2؁iYt˷-S&j5¢tmAt3'NsAb' c7>. !6OX|qcC̶an<ZX Q)>ؗ7d G G<ף@*Ƨ\Pq]%!aѝ(c#8c6ڵ!Z`k,۲E!_ܯ辀6p_tDg3Bp"XG=$et! 0ɞ +Aapٟ#"Q=+bFY =[y/9x FȱH d':cPE{dVMcbAD^G#˻@~{~f73իn\Shmщp'p3̍<'A9z%rݷ|Z/.ex_NTpׂ{1'=в&&ςaLܴqT}?)5 m|n]eo*q8TC0#{!Zl:~If?dws=r](ˊfn[ܹj)oQb <%%hb*,3yi>6޴S_҅WCK(vQ7.0=C?p.~VTT<ېv9<"3p"7ǽ Qdnda]e(`7|3uQ'E{.7 0u)nKnd{h齷PY*\$,8No]8졟Sș>6j^w$O1' $)Fy&~G4Mx% aYg)Y-t,[:De) 3+ #̗ᔶzg1cA6=]Nx^=r& >(\bGx׽\ϭ2WY.mF.ᘉlW#Eaښ1ģ 4&8/ϭ3Gx_n _\_wGޘnw x^"ҝeh!ld}ꬨBŠ %^ 4}[ Q5-APO Qk'^"_b_Uy+gbtI- O̕#*Vh_48P\U-mh*J{ֽkMa d(a'd:_Wj7pėHQ"}Bn>VҀ!Ig((ARK.rW;x -WUVo'pS"46Kt4p׼s>peq.k" 1I5;*=BB,_¶HŪc7]aj+cq|1A-EtDQaD{-xJK}> /FM9_^a7Շ\[L>ȏ쯯8=.H74Bw>^>@Z*K#Q7.A4QPRr%qD~h߉V+SP%lGδcAΉ펏B?%6~3!9 iw.ՙo3ܫY MW4`!#$!$A6f8n1 J*ɟILH%v%TCm &fl3;sηWjժ[np%~>Y욶s)/T;06O\a;B^%Hc{dhcFl֫1gfƎņiq p$kW\lqk7 NDSq]p5'eN|=Sr#}_3u\a܇o:ڢXZo.&Gh9]zW -rؼWZ>> ?7Fh!ah<p%pg&hcm)JQ썉RȠE#$;ӤIDe1O#JS*]BJ0Gk*ٰcܪHaP$jW Z4P!V2ޞw}Oin=_v!=w$:qL]`>AF7sݮ!0 G=,Y+`¦-| dh- -knJ꾤v*^h\ZB^U-VGm+)bkLdiU(_Md+#V>hm"Bk/A:`*.jo݉a`?7Fh!ah<x*D#\smzA_ ^j\(:4&ըB9xHSr{<fė ܈M 9ʺedyh ku_n[U߽[c=ߖRX\5O)Tp."ž=^7#^Z1ֳ,hSaa1l%4rKdL;I!~/׋v6QIqԔB:5}U0M&vY{hiF |g^sܯSFm&~ڏurN$ ,rșa\6 L>4r!JkKAOgqx#,&pw &'GL| M݂F=On~S= 1# &QfR>HEM*PF8/ ʏʁ(` N@+վUE{M :B 7QL`˃o\ʁqOgkwmz;vnzw*-M 7G \p@uNO43J2Z##G gcȢabpO,`]`$ˊ:-}yF DӴvC ¬FkREb;rI`^WU3!,o(>~du2׺Tσ^!2`fխQKkwFh!ah<^p\J rh,$y*AE&vVf%rėD JJFW;H #H祎-|)e b`C=Be:bVكy֫.0{k[Ќ5ϐf*B-!$*IJOzs݆"~^m^:j#Een \2[^>Ha`ӔHl"4&z2A2MWs5r1Ӓ{H2#&:X6 3aZTIf4YDl[8}/.,N_] W5D_;K<kfb9m//w6kw_ SǗG31{.Z(ܠkꔑ)xE~TUYeD8%p3ydS$:{cALπڭ2 k*8sf$#*־v𢍿|m uk~fRi4Z!B`X2YiF̕>.s\ )k*YnH{AHlUD\)cc$GSac U\ DXHIJӷ$ ,y1l$",¹$?8iNu@~9MeLh{$#{du=n^Fi,!02VN>]!Xt6F Ftpp=%\ (*LjȅFMYDdH"N(7ll#rg6dWmRMt !I^g"ڽv`pckoJ.I*WtVDDG+aT\K ƅ$ɘafX!kg!9$a H<`lM(_ӯpϘl?'ynf\˿l Z,E5|h<Ąp+snN ['=w? <X4SjW ,0g0t4;R%clhq\o@#͚3_ÿf ^ۋyPm.rAhiV1Ҽ]ʒ EC QQZN),E8j}A" DՄP*dSQBڿl5뒍t\!D VdQƹq<QBĊ0>ff,"VHQI)LEl-j2<͈k`1ˎhJXS^(t ۨxU1:#Uf6&6Er΃5m#Wm6>s?z(b|25_x))c~8s$ިDczbF~.p)I9AT BÊlx))(]9}+{3-#{?) Zp if+~TuO|I&bf_-+z mY&^x"{GW4er8vu*̟1;`Fh!ah$q>f~1!b9M9Vr(I QA!R%f(AZiM ^D{Wd]ґdDJ_f+aGoJ1U8Dc37Y5}kƧcO[ԮYIL"L(j2@bO2, dDVYrF8"0ʢaJBdc6VF# ٷ *\* @P=q2/fE/Jq'&!qb;ϜDP'U:FDHH*DƽBV9%0|^`Qb#ʬ .SZĂ nhhI[$"m3G: $zM<46 Owݳ4z9+g{?4!TKI@$C'{(;Kal@%["L>d-?"$xCUh< K*Y♑Y'?i`7,o^,؍Ndx Y^7_'ocݬF ((|p;p>4&ܯFjN$($*$;J̢˞e<'AK>5DB͒0!b,ƙ檾y)jN{CwGNotEts/8kkL(NX\B>n"L)㗶a 3mM9: 2V3b>ۋn.'!cgTfL 5ȧ(]`sm'7)VqcA\obGMvA8>b^+wQM8B6R ]Z #[ 0'mP[[!yʓz/-e(WZfL3`P!8''1F茄F Zo64Ͻ 4l`mP ASU (K`meZ׻$X!041*RӉ@ݦd mWZ*Glwt{sׇ}9a ʽ=#d T($uEN!LҨ1!W%'[z/fLB#}/o9;GqZh#ժ"葋ޟrFu#1vJ#yM0I@hةأffVP 2)9Um%=qzL^1J%-#OD{b 0&4˃^ qޏ"pկ|FIg p 0BȠ;/.OXSM sg9sƼX}vFu q_G: `q2xY"4" 4LDO%78(T#HAzT|4ufqqhR'är;*@Ҝoon~_?c8l{<jmJh}:Z뛗W} O*DT BG9UBX9ĩ "HH(@2r(GtGb5F֊\,T,"d`ŗީb_,M-[붨[P䚁/7p+[̒kX^!}7rb+υ7ж(IFk`vųh4:#ah}21 t1mkZWJɦi+ 4YTDu[S2؅"$Z~)ȱ"g16^͇ę^ ]O 2.Jo,"ZUSd=SI5 {o-#6e3IXKW&AU-19vRAJ=CرE@[i*^]qolTrz-((n.+/gLrrGtXh/ ȯu:*8,,za҇ $K&xfu~_݇8`Fh!ahsL/W|Y܃oc;7|c{s%| T`UDȤ@"Ԭpp}A*urvDG`UDF:Ǒ.e-*rJ sYd'Ď񍴎E#r=mY׆ʨШ5LAZ; NjX HsJK5Ym >.ʕv2 [RP 5YEEFX5;%{k=3bcZwb[ًM|e/(Ϳ<~ڃ섟$㯁h46RTxY~A:0yl R\>!`ߏWPW] \\V|J{b>`Nvk4 `^EϿFYnl+LPTRbD5UB,M3(PIcYyJʨs_Ȼr]% *%d흁 bdKڸߜsK"*:U5O,u_<`,A>Pe#CU\9+dnP1gQXyI$"%E+eٱ=~%TC8+xª1Ėz^,YqNӧi1B^KǞ k^V&/X ;dpΚEJQAZDX\?/|:o#h4-$l4S u"ȟJnM%+XLRi1#GMbq,oUjQoj0'7 i0V12H 뎌:$FfBC}ˀW3O oW#dl<^(%# f"?j_Kvm*#Bb_V.B2Z=](xHxXǦ8?y;+qvx~g՗i+ .u3bBbY#w.{f̿,"z>UZ_-N گ w,h GĝDB[?9Y]*FHΪltP (UPs=^8t`|tP5'"BI3lQy~u@}fP1(:MG G*N:h4ZHh4\ bp2v}) T 0i>&rh4\}!`"-ŲVx6)TNzZjo bBm$]{t70{v}p|ȶ:`2Ė@Ed.mI:n B >U٫ȀtYh|r8@EJm&b)uU@2VԮCtVr^ ]<Ѩ|JK4je[}pl߇]Ne%,ʪEG Cv 2'."T㼏#ns6A\Ye{z!vfp(AZ7tYEӧEVƍFp{/tŌ "X >0&qp_`L8}Sl/ɮOc)̀a`R}c)zRpFxTME˿#l;?an kz\LFc 1wePP,S~0NP :uhXljָ":csZK"팥b^őh$N#O}͜ c8,]r/>HB H%ZZں ;졭XrgZ&6glV=Aso"WD3F`Y. $W us$?QtԨ:2@G[RlsZf^Ry3.Wg$TgZH$"e0 +X]^{J<)E!_W#6Ax=ՌH8<FF1E`{}b% v~l4Gsp.f~#fׂ g95 \jF/12f_p_FO7 /n2qî33W53f-dvmY=ȼDPIVaE&* 5$|h@l)bQ8:;'uoն罬/l\\ #*Ń6e :AT;v V' (QM (Ɠ@̀UHI.&-,9Iux8C#L`E9B*qq A{ 1$WlнaLc1-'hOJs'״Bmk&Z%رD\Q|Bv ;I}l+TPXxWX3:Am46|n,DlGiīXbqTPS1Aa+[Su"1cW${yQAe[,Ph$ 6.ut/xtd6Vg^v'UY@O.BD6V| F 0=gEhvLH?W{W5*6"&APQ'Ѧ\g ddZCѬohFRF*$DͮO-G$XUPɑ(g6IJXQF̓B&B:Qvh&ЌG*0uE CD\ؒMDJ(ՙ?lJ.)emlǚ*&$Z? PKH46DdC_7 | KSQru[gm~4=p5k0'g;.wbZ.ģ%k[lXXX0zeÍ+ PTC!y h,#Y!,|(nakD8+Dr!K-DU49vP;[{(k`ap΃dyIl2Lȡ"+| / ӾwR$e.[Pb(:G %D|sJY UZw(?3Y b:_h4pW׀]~L*,۰&5bzT0Fd0\[`,ł&m[`χFx> *uܟ\|rl&)QP!,!\\*U]>ƮJ"cRc_=C8 pk8qpXzTڠޏك'{__3=6_~{Oޱٽ)?YbBT+,yc..yi׶@> uW7-vjvͦ_ +\ ({M>k|:.#Q: Ŵ?ylUݬMC\iVĴm(y٨[Wפ8~c-dꯗ'\fTZY/fSjgs]8>0\[h4`-$l4O*\s3JM2/PrB@$I.vk4@MlPUO^~E. eÔ3]^-Xi#b~l~l륗|Y 10*bg}8L,Uh >P&8Q"GlFb)%ElQ>tL͒lW}BxyB@JiFj!Ԫ³mˈWAW!L8ئ"g v`r<-3 %9ńvч:I+ZDB8\_̨xRm! #Vs2G~el4z3..x*EE9.o& |l?l'?< C]h4k`70Qo,W ~j9A@81upcj1]`($ji%RYQIB#ht2f#g%$AqG}f?w%)z٥;=> $i\\+g`|*ձrQOm}-A 8y/eGchm  6ך 8%l?~?WZE;jqWjkeנ!Je*5"|kQU~_+8_F|Uv8XPY9 ;㈓ː-u^.cܐ$ `4q0[dh!ag$l4On.uĩ,cˁd/!}}ُԮT*edSyUj F-*8o.3N@Kh,b?f'Y{ϻ;\MPƢS6ZbP Ms+HA8D8L^RAl%B$L4#&[w( b)el'yKhkc,kL~|2LpkX-H$V8Zdտ&ja]K([eP"3KqI$k?*z9Y>**^efw l`-*i4Fh48GnC[CQ@ /TN/.w!$Px8FK DD΁8X٤'(y{̗:13̘RPFTXR@riJ*!Hʼnj,\v;9_ 3־}#~7rUr$&bBں5֑,py$fd)5.# 39㱵o!ZPV;@8vF8ɀ(EPęF4HuL !Q D<";TY)Uȋ)e;blctn(T< צT婪" '+&N-#8ocU˽gre'WrbKnB3NJªڽ&c>||).YKVXI=ؙرJ#\X[ŐhM,M.Epsq3٠R9L!L*$~Ӯi@rH)Tׇ epF$6nFDĄu7:>ژ"Z %lA ۴|:"ʤ dZgKFD@Yf/P]8NjS1Cw%9vhk~ɜMak+8&Ε!X QӋ"pH2-oYĥ!#CMb!$]UtzMJ\g9]z B C/O"D>K*r$PGc̄JBkTAȪ1If*fU(($vK`Xa IJ3 Uj\GU;Pa\g)}HFB ڬvgGV5+W4A(1|Ȃ[+-\8Fh4FqMdl-.=Nc܀N`YH+|(P{cpѠZ{>rXUdΨXB"qoh0C|(CWǒKMQQ(ݛ`p|ٙf?nnXb>@a oP9xVޅQoMH';kX*Qy .VT>Ǣʑp湽J&QH*'8KUuTʊ<+@d,M'Sߒi.,oHc\BQ3Bc{/(g}>#P$4ڦD_SίE [yhT *kT׮ǽyF F +0n9`Q,ut cHnEi)L1Aخ3DT6!)jYqʠ&K@h8!ihvB=>2|Ǝԡi:{IU-?i[^ߌ"$T( 谔uv}\5E6h?X:Zr-#㹬ļ>BչX`l->3sXFh4ZDx-:X\}]'Z0;G}W,GbB&f@u0B=@cu-Ǖy~ v` f$Q5mKԒ/gb͏~%k:;/vvpN+Ɠ-9nfJ fq@/ĭ.N%"U^99<8␵=s]9ʬu:Pչ,83c#Ќβ]9 l^h<2hp+ޱ-HjQINH@2 98fQ` 'P(JXVhFBy*)(!p0i=G7jJ8BA(A_|蚍;|_\GywUh41|s [c|><Ү"̐ 'TAe1 2QhB`1yя ʺCmFrQcH6Á2Y0;`cKh4FqZ׀%|g{~iμcuk;Bpd[*:$JFc1Y}:G1TĐ u&,xle뷜/cl7.>Vex?pzX\ avbn47 @k@V"nG8R΂?"\}bB @1ձd'@=OkfefF,cŸ;e[uH_FF&\k!5f!8%qYmDj;!YI4#ETQŮCPY,M#'ꪩ+qK٦AQ'KsZ~HѶj*3tϑ 6?v?|9`-$l4 Z5U:6Yt{9bsCȳ(jH`2 ! :i""IgR3gs)j}2}NAOu8Wh茄Fq]7 g6C 3pN^‹4$E0XA*Zj QlIn0]Z_Ʈ=G~ٜ3` Y}eh4VHO+rP 1l,S\7ϖJ&QiƐ6Ʊ*U9^imЇl@ "`>.jʏj;\i rc|iO?h<`Fg$l4K\sA/ҸX0dCȲd@s Bąc/cMSh9lؙ@i+YThCʓIBw3h%B}`V!NS/@evՃoRV|Ɲ/=~__8}tƩ l{(M R$R.$K2_E%ntN.d)kcQhxud:d$VǾvbV!~F1HP39#qPՒO;  ~3"n=f!27$~Q~XWB%:%sh&+6Q=+9* -5[0ÝRhqhpm_Qd/`* /LAE+XKAQ}Ҙ,2#c*e˃8Da+ʈ-3JYa)~fBH־ӑX1ݻs~ɥ_>?%h4` o"[)֝ "IEY%+c4 VC;}U7Fh41g7je+־г Pt$ga9 5?\eױ1.b(be:3D6`!n1Xm3[\ݷOw3,a wp{;_0oF>FI8S6¡&QIB<tC9d6HPx"R!Lh5jIȯ!XeWb/&pپ٧aDYDbLj&BӔK,}Yk4V~|7`i7}7qPBBV8FBNjD> M2ŲRPkryz.$LѵqT#(n.=c4Kcz&::XLw0;sFh4bT9D- 5oqbm=ˣ(^W&yrKw|.JJVE` RB3be ;&nmֿ͗‹߽xweb7n'N^sXUHX%({U{Z$p}woL\HVB<tP3BS/21Z"̏ hN^n E ohv8*ȌL94ҳDئH$3.RBN qɾӀod{ꮈzC&r! I8ga,MSN/n3hY/B$:T_×m:~>+퇋g@""w[x /=@  [xHp:+9%98\uIS-6Y4T6¹SG 7Y=~TNhNm.lSB@}X0/_rkvs3:[zS=B@ 2ƨxMvyv[7m/!ϓr@q@KKrR#HQqvs\+sz(MߎKe&t ; z_v @ PB9(D9q\ Qp$d/#A gsunmGRF('WD(rǺv2)S~M&IWQM:ԢoxäkʷޑW Z~L >Uwjrd$\vN TO‹#vl8o; F룣g̙0wk~ަ9B£>^T)?s3T$55"6b[_" ۀ@3/~ileQ?B;&;dpOzx#A =m~"x@ L2˜5Eȗj郊4͸ as3[=(Ǿ."9_µ\ N5 _?= ]@O)m޹CC@ hNyM9zBqKW׸0yʦ@g;|8f5Egg s{!6` FQ#G`Xe̙f͚3ŵ?|y)('M< 9˜ShdARfZD}a#>3~gof|{( UB$7űr)K;G'SW+؆(}?!@O@ B@ @5DF h`2 #O 'E}?T2 BxV%&"pf)/D=l;)&roU_TNrZzhY5Ol1컽[#`Oފځ {}ݳx3ӿ# CCēv5Þ 8hiiAL0qZc2fGۚ; rJXD%%w_Vz(|t)( 36 ]Ic }՟2}JulB52S[oe`~qriʊTQ.O@ @ dkI9CYWd"6wǻ`2?@OU๩qTzV}ņTܸ!%A/LlQЎ=[^fC~($Ob*r8sf쳎éTu7iųu5aӎ~:Xx pҥkVF2]e+{[ŭ90|/j@sm!1aj]9'y}Xo%.@|RSk{h5ʬД [>烩 UxTHh@ f`-lE^f! sH[~BDtbQ,^H/E@^\k=s~ 5MZ'AРałQڐ\ݽ먻(4.QŝwOƋ *l^x7O0@hi.S8I@Xf7p3>vj tv>"J}9֕VٱdkM"2߈1wJ$x!@6ь>xA>IF{%=m?{vWE;LPtttrn{O4rd{L`3's' Y17He}zJ]9c/"Fq=2O6z6= ,&=_P?O-c2 zN^9@k~,}"/xJ7 VC5ȧvjd?uvT9IȐRd"mܤt5'0`m5!ERs4H=Qጌ %̥L;Tlz Gމm/fNzEv=bk 9830dZ@/sOA8#Sw>vwN:Ytmj6&p_)ԧ.w^q6Ujp1F?=rMvpBBw&n';_Sbt@jze%i>Kk͘b3ZLL8K,$ND Zb) ޳6[""d+=CRD ᜍKbٖK9387osޘ3'$ !A .m 'yRDH`kf_r,ݤgxg+zXj.^^ztu !îL;nTĵsw})!%w(YwZdĹ>^D[I2z6gVg+BqhC Z"X-fvSP˜荐"yM,AN.<߬˓Duyլx9*A>KP Vdq6%v'!vw^8R+gzǜCvř6dQskws'Rc綪2~!$ O>߽.GO]nV|dϬB YXIaTfP^[rT^">-~ ?oECx,S?[K7Ic^:?'`YAȏ=ć, P} @w<-@Xƕp΀EWEFnQ6" f/-cKsӠ Ȳÿ~iW [HʸdU @$Ld^DIdQ<0鲞F-v/f->PJty(?m̏tK.&6Hlpwjjd$ V~\q%nߩ~GPH@i){Ĕ2'QIDC8=-آWK=_!}ŕ,;B n,]GO}r\_du &M8 mQFd{v^Z {i0!a x g ,T)|x5|=չ봓z\")ysA|`k W :([c_Cک>&<%g_A\v.CJOK,f/OgZW9uڗHsn[@-6(ڭjJ-D5|pa 3Gٵڄdz%bOqA 9S:ō?VGDXPO^~FWb&вGG~;gV3M1'ms'Rjm{-`T$ZR4 '":37adۯIT\N, !-/e F~gv:(laoXEU!F\U?_]_˵A#tX@%@ z9s$lݏE,C-h޶^HAlBlQ 20A6,~2RAD u,nxYK#",>нmt ͓](CfxmoX4eEb?E^1XQnU<. "1/_[% |FHPվw>Y Z}~ֆ>3|c)KVⓗMzpYJx ^400";"Bu ~qVl3PN#QN!0gD Kd3)3a&Dnbչvuo9?-V,.d'!!D<:ႉT):M[4?rwb(=H m-Lzo;6"`@R.YH*'50~8 vN8t| [I8㜳ǗO?Ǝyj{;S<_Oଯzl=F ƮL:gq :rݦVVWiƋXp7zHWг'4"!YP0y##5, R4H^T:;Dd!NhO|1/n /HnNoz1GIOHq F(mՓxU$vH $\ F@ xo"h2WhΉHHF,)Goܥ ,>sG?`*c8k=c6:Wo.7l-H0Q}sU{qƓ/6?zw;?'=@V|ˏ&kσ\x|K~N5*מ[Yg=a v ›qia-/H۶L OƩxqolNa8W+:gNL>-:?l3Aiـ֜pΝF}JܫC61uaJkKVOe^ԄtXz=~+m+|jkzƏ'e ؟ WQ Ҷqs=/̷.V񦥚ҍg=tF/V5\ $@G`* 'tz Vd[1oP݇fl~{_h ss<1B̢\ԦT6[(q6fg#lζ_>x~4>ISGh : = E75ʹ6|>/z@DF^(@4їk1d{nYPV +AǦPHarXf5G}gx -N%jG͑Wur!|=Te\˴ƺ*dwĘWThXwnAE2@">h7!ߝUH|+u $Fz(is:gyf1O]bd+>A!sA :lh=2㸉6611&&&X@X н$R(eN<}+#X:_5akF I~ծ\mƐ{,| k1s2LH&6GIx^ -1H?fISݏC  JlS}%Ֆh={]M Ur)]}ARX2fKD!!%9$} /{o‡)KW_ݮb´?HQ P;j6KO;5"/k۔k0x펊!\/i/,~8+ rɅ䓎C}wZG_ W\1n!)S3ʡ#P.#Sw}κ7>x :w $lb ak1OO><G^t8vepuǑ؞ưB{}Awj" gD\tYd<˨ķd_X;@̷ɳ4F]9^:Γٹ%- tJ:rr8IE>)l}=g^43hmkDvi6@x*ϥy.A,8pJh"ΥH[(l2:?_4TpŃV-&S(J⢤; l8]xIvl-Š =.VURR9~i۳XYpcTP "W Uu $I`[6fdVÆ]/"4X^xU,H4o<#a2,\~NDYtm6`?l<:vhG{s o]fm܀j z^HcҤ3,+䮻SO>ڶgPsϽd" ۀy(S!0W&Dqf8 l3Leg BKd{Lc$Y±HIR_?DJed}~ϓV 7,Qj9r̮IP1M$! "W 25@8FDDDDDDDDNsD$ k1A1sV 0n-+% qaTo%KB .e%/8eIPb8QAm[Ń@%n׷>W^UT=*M{ES+GD6|s]Ou7N@w oqLm ƥaOGslc}ƙ^X67"BsJCjqށD&P~{@3hDDDFDDZh v#D7y&' pـϰ0+( ѹFe.B!EsJ}b9 v9RDiQF:S.~s:41ɍI:ϵrRa[{RK_'u =2~ٿ5:L 6F. -, B,I p%IE$_|y8vAkc€aԨ1kVƏ~ 7x<{}qE~}ѹhvm8~- a}C+! dC[~1ctrOyEߟ WǼF_Nw ! ̲F:uzoSN9&}C?C_wzp,| Ki6¸ #9&ćbǰ~e:~L_yw$^~#w%קO<7L%g D*Хv'WRvC#ЪdҜ]2֯Q`ACPr>? 55x7Oue_xc6A6kaշƾk|o#ZkZg=?UƑ.m=[?~}Y2 pЁ✳Ov¾gy!(7pg>[~Ӭn֌_yhٲ|1ofv~ fs`];l=維Zv}Sc=p/{邭͑gIJSǑ9횝Q۟]ګRV{8 |{Cs00(H̯i\B<\*O= y,ݵСfNUX6t$\e]aX,HJ7x"f;ԋݘ(mwϤ7DIEg[$&.o^8ܹF(O> "T~x :~%[*8V9ώ gFAܪϋ/bۏuP8kd6 F@X`՟4| T|̎D8(QAyzXb5ĭ'J'KVªg1y.CEpHz=Sමu$LY[==f$@e鬴[~Q4m|P-oy)ܳ2!/'M+ɗ&xQW|[{:M"&k3_@#Nm*k>DɟLJ  qW m6.ƀc@NqmEcSqaDNFg3<;7xõ%ƑRl! J1+o7r9}q$o-uP[m~ϰ fl sy1I{ZՂx{igKK& SzDD $|(BDDD).IAT:a@) ?M $Z(* ( E4ĕ`K-BdBERzbƎz+ JrEkR=M*aiж(igfoGɥ'bióCOh0+I43kr힓($.8r|ͷcϱoa,"<0gI{*!xї矽38aJ.; UB3O> F>?;pv *|%o!/*cNEdf ZT]UTdX$F :pՑ$/X[R47<f%\nde٢~/t}碌s hڞ:L,~LKf:Pu=TiGDD!aDDFDD,`aoh).M "[K uKuՒ}Rħ[Tge m[3fVKߛ.l2D> YRեy i I!W_)z-BB}zn :+^B¿? eчo1cv;UTsMClР3p #Z#oĆ+$\h߮)| tČ}63Bؿߨ>|V][!Fhb 3\RkBb1r(uF3rxpeY :N~b}| 4腛~_9YHuڼ"BҞt 3hXcsH`pi#\$2ׄXrKc"B& LCms_}|mFFFį|\ߺ+GDgoY84c¨y+ Gc8hm3qD8MD+o#a)x9 .La]'⬳.aa12q?F #GΝ;.&+⎂s~1 'd8#sjcoWgJmDF;ljȨ/,*]/Ge96)krnvp}yM͖ ΃?ce-@*O" ` 4sM s&9n v62~hhϊXv] [҂)m0{g/ZV0l-I3NEMk2/"4(ec@ D,T~2ľO$Bt.ďuX.Wau`Ve~867{.'ui[]%'\Kʿ~(h "N4ᯌ?Oe[+O<~tϥ2cqSsMSsʘ5C%0lgl㈍أ؇Aڦ5b.*GBKaXk򸪰ߛU Ef,vlP mϰhOÏ\m6oXJ(O8/)(2ꀌYq#""0""E- ċ&li!P- [L[f}QyvHu.1g .CALQY >UП#H&(#^ā.g&Lk[{ۻU?E2a94Wh}#W:~Nu 4jiHb7591H08Ѻu+|r]X0eT\yL1w] pq?,?0,o (fΜN:jCMR!כe)ܨ׊|T n}^Ą~&u48&7I?'H,%\5)6Jlƙ'/ k09Ƞ9E/l(I9&Ԑنo|4B56,9$B _7lД~( ]^H|lT[C#8BˆyE芀0M'4U&[Pa&m09 0k0oEOJ#\&!;{4Sur~ ] |fD+(U;[@>p@MϮ1~?&n344}hA+7{cH r_A(4E)/6 98.&d}/3f/_#|9/ե*Gc_ֻQߠFe.<kڒIox['ءm u.M#g`V.Ez7X$iI ZdKdPFi,Ξ4"{ ?dc`Jb" )!}Lآ F6ؒ-I\#dĶLGӜ h2 U f^Mΐ=nx.uz(#񹍸RY]tj3(Ֆ_fu$ ܱC(;p#]J8]|L]Ssju`NCf#rޡH8R:XK ˦Am\y!a WGuu5,\{_`c^iЮ][h^d}6| 'Oݺw*+/>QD^4KmO|lׄP6>vxh߬,9Fك9ᆏ5>Zql%qM24Z5 ]X(Kc<g}ٳ`~ HgaJj[VQ8""" #""`(B! ӊl)#$.)gCKFy~x ɮ}-,GiFZ89R$@`B  D54^Ɓ"ՅFw,DTџ/^]}EI[V<{]nmS=8bXqgQE eQba'9z$tXP4L: &}Cǝ:ummڴY?yep\%fee%k*01h8*6m: %REx@vXqaDcλ?p)V2R;6)IA/nV}WP^"f&'؈0y_%IRb^9{淝A dm bC34T|pp,DlvL-Cv\ hz8"""""""",ݡBPeLqI.R: }jœᛸ+,.0 Zg5 ״WYn59ZȒN(SP`#Q)Crybu;+_ 66*O~q l>F#H[W0{pmU]غsIMX 8J gw7"Oro,R'~yOA@$Xyfn_zwjkj0ѽ[?oߎo^</q- آ>aW* ve:͒ޥd=PH,.q.~,3ewWբl0e5꒵6 μ+ϗtü1v̿!G _BBP js:'~VJ4JTLpwMՖ=ˈ($ E&w 8{_-gDHU([ 2J7M BkLؾMB/SI=|F-Y[Ӆ%N^&.r 1mtB[o{4UoLI;hMɜ:3>5,zRXqDe=RJU"8+EEjZ%:vh#ooYH謆-ذ|$,Ho;6#8 \9xq۹hժ~-V34Sg})ʇKZ-,k og]@`@`(4CelmvRb/xKw/f4wQeْ)20T[|w@{8Fm69A)dtS[Kߛaar4w7?6߇$'RLSieݷ^ N:""""""""l @ER[f>8@Hs+5W/Ub| mվ x-)["ԟДWO)+92駎+MH@b7XV,$L*_W>}iń9t:k֡}hX7Ng!;h0-gZo*q>Mby4m^z_=ml;4Et_|3.P0scYg-q qGOV[m_ [`; K TV΂(=նKF>&o[l5R] ,8;׍Ɏ35<)AA 0q.ULPȧ#3\el&B μt6gU~ nEGh$)"b 5 hX$ hKH"fv~VFJ$}oʓI k#Ȃ/IQW5>LSF~4]!{vD47!A.#DHѲOofn#h"zwG" 6,> ݏ iOr_TE N_IY"mM0If1? ȧC}f/ݻwOt4tdEo&"TWW’-DHD[CA@HJl(۵ڡ65^aƶ%NngF了l0k&J3ensD|xa#l%s>.e޲@BYٜ=(R9\U~(eLaa71z)(;ax-XF-BepۭWyTScq`ɂHa) |p\ &8#QR"YBД%"kL͉<7D<AH`ѠIc-ҵSR>^ɥH.ڀG($1$^¹b-4T!D2LD @iՙh %J@(d"BHmh=aDZx  4UU ̹ZO:@N(/ӊPHlMӼu }(@НI !ͳHlkJ>oȴ`V}eco|C[DFںLySy-L+s 5 cАjgkLTLz`9"´ekw>nIDHVC" !$(4RYߓ?q|,[Q$m4B$wK/=DFeﯽF>8f} :d6ĉkXBD$\ D9ąWƯ{cc Uf gߗn}q`f.%>k1W475[gkPl. csq ApܦEh޲}OU[i7> עcRҜзz79s ;T D:A<&F #"w$PqM8Dmb!nD ;@6L3YV86XnE}3Dy[_u- #[Zmi$-J]d >ߣE{Vn?] 凋xU~~P2uΚ(Z|UJl!IZr0D"Ξщ^SxC":E㒊q}Hǝ;wĒ/M,7ر=YgA?{GbZK_ye=:vh>Z vhL3[fT>ggΛA,gcY0>FץU&KW m6"mLgX <+yJhyEڼwx3vĉ=I7g)WK"PUVƪ~l${sDw3_屆cQl^Z@ ̌"""~+h߮)vii-[Yu{bDDDDg!lzĹ 4Y&FebwI/W{8qk5ⱔ)p\+ghl%i !.8| GU'$Bo>ݾHxJi>_Aۓz~9 huy*ny׭<[մ5.CyplX%@.sK|%ڵk} 12mwB|WTVڴirзO tڅi^z0roUrV[/&N?@s̡T6{ t&sXbtRBC2֦<qEMd-DwDlѸBrr:g];X+k6q`Rڻ5`9 J) a+}ΰձ519$]GA}JQNm@5acZU{ͼϯa.o̩f8bGDČD*!+ǘm3bLE FGJPV \uQjB5+W0$lhslr`Ǧ,ߝ6ѭ/RIT&<gQP@&jVs?V?6rD*гŝ3=~Kj"BfSFDs_flm^(@! X JKEr-*X<-;^}=:ԩCF6Q|A]tb:;h;y Tv=#г87MD"#}ȢqG3$\%)ڝ'v\ ;¤+6QeI.ceJn 4mb㄁"J] & D.;Rbb<)o 5,كD2o:}EB,bi/"@"Ml+#,m.TEDcMWN[Gv^:Ei }İe3<'vJDDD\X5. {!P yS-sǴPŁn.O"B\X-O#ĀnmJف[Ѻ2 34~6ąZ1/ZZHYZ P:7v3ffӚ~+j Z:J'$"t2Nme2) d4Mͽ^ć"XLG~ʖ={voh~;_}tEuuuY߀nݺ"૯&aw[W̮j~Qu_J|o|ނ.+axxԋ<,}0P!ჳvnyHA er <1&} ZQȄj|ꊯf,@JCcYغ=yU"~gYMD3 0ᇵO1bzNG" .<"L4iWX ;yg</RfP&KӎېUO<?w2wݗc ץ?{uOKO36faK m@eݓic/?'@dF4߶FC;Q= ]8""`cO)bܻᑑCqG`֌ETMP?j<[ZNP9mx< bܟh<-t+QM)c$F*Y@|(R.qņ C$G}bp]!~*G~M]㮩4wȾ"Lr㨩h-⌍\_`I>2Κ/P;?$}|a.Ks6l6B(믷w ʇXn>k dK ?-pl7XӇ Ďṉ,{k)8ز94ϟꅆg,6?p!وϾ0MmobPƁV)2Tsi5zsŒ$~ުα[jL5EQWM$:-(I8sh 7~ [Q64js@Crm8bbI]'+`$UxX!ncܯ6A{;l=ɠT@煎+A@$˂m,xy ,x;lw/UV[f6{*WDe /?;-PD{w}%.B1->_* `#R ;QPb~s2`?;AӵSW;O0 6QE3PCѸ0gtc Y^YkÝ`,,#ݯ>ZT|.s5͕ t0rBrVfS*+)4czD{;lSNG (.(t&vPDDDD/icܱ w9(eb ,(r~T[O(8üy#X ^Jg;T} ![Xԉʳn *ꚈЉ(8`a룬NY?? $;ߛ=f]U=JMnzST[hʷlIs9aif9>e'Kn@ݒ$'IcϳO1Ə@k9,x1t&u+jcM6xwQ.7k_[l2nz 0\q ;b0w0qjNLd{b{hP a139!C猅/{Ӯ{w{  /j!` JnUҹTҤ{sVmw\sWk?Ѿ<''vV6P$SꞠ(&|d]rQG6/Ĕ)Sm~ݢ9N;0 :vhw `W*[Dql9~IJ7qhժ%v'N=8{׍c2'51.Spe3#-XF\rb P&ZPtJ}\c(\0FD ?fo׶k\M@Pj{^Ic0=A혓 %д?LQH" $:{X P>%&nrH$Bn?f}g&FB H(B(4k0+%PyI2F^ɹ*[|,afϮue斍mʴ95WC^P f7tk>b֡}ޮ Htm4f7V[lQ֭[ 8וٳ\?lWttDG{iORұJ<$46k{0ɖQMNw#B  p #5k)ZlH&g%I |P]I |POh"<Ï[9sb ~ڢ$m6^>UPjhE#"0""bBu!&!ehN1&ExM {"e= d-p`'^ ac/NH@d / da,=e;>{߬ufT/OLZ_yx22zPD QFC'&nTlB#H<_2^~mQ]!)4EX$I DY+XT DH1/v:2&{7TQZL Lbg{n>0Iv(v ,qél75Wh松}`wgrkҤoP]]6X,VZָ33gD#NĨ'_A#jKmT/r2;rΏbPdK,e[.h(N +RmQhI4$13ZMlkΡm! AmB7oa0)knfqbT0!dbXm\hg@ [ŵuĒ79/|0u%eׁXg}Эǖqmlҡ?#UVö[E뮻z#"""}ao(tm$PܥY*qp4g){)9xо=|SQ+x8az,@uzne{PtCKugbAN\ ^7U_ δmغ˙.74[r&n:53{!‹"{}=G}Ne=m^0epYtep.H tcA2u֟KmZ<87 =| =o&8>K7h'Q :PK-.VBhΖXYyI;~90hZڊJ/F0\<^+gX.5^H#x>=pf@!p_o U%2!^]j,nAjt%RzDDFDDH6HlH+:M'jOvM@XF q=@S&ΌHɊMr܄11RѥnDrD a7!e@NUΓvN_l,կ{7+nk[4h]:дWI̺,\4QC>eQcUiYoBo# ~"> Kt#?4셫8a ,'4:=s6t\m'Gݓm R8:>㌁LBzKLD>a U :U˖-E 7,nD>_<0;L </9t!$suBE[(m (Q <z>0^ƘzOs+MPU+_j&7}a;# @TR:ϵi-VҾa!xg[:a'  e90 >5n*;1dp8`~#<)gc<̋d3Dv,c/'9u7)z{ofapWeXp o(XcU*;ywIo=8.%9Xs. ;ڹl,BsB# .X|b8k`qs xZCakc!$J/Oo.,ぅk Es1>v={4{7 ĝEVǹ $XU})yш($XH$ƀ +? `^sȎ#T]UgO+"POO.`0Q* œm Z/B\4'sih# 9H(">$\ELr_љVo'hVI>֪w2~y4)+aQ+V~wڨ2m= cYTؤ,κeQHVzkQEoaqefz&Mӣaȟf$][a{d|({;^x,}ⷆvɘ<{*_}U0z3wǮĉ/曆sNQw@9x'xSSv (̞_wYx'Ds̱:.@l&h޼wzqcj(A`n OvX*;GAI"{mMaQ>\EdX qhy}eg ҌЍ[7zLg7<+Չ=&nNɶ!WmX#Qȍy#,\(VAvmji:V% o" aE8K vo8GDy n;|4ow}-Z4",+.EO@X;W@) {ڙ2[1 ;8)۱x8B >{=.X((کRO|"Β-N&NmS{;U?Ņ2~28f+^n!8)>%#xד^˜1b]w|8Ѐ_œ[pWc$Xx?{'zi:+IXШ&{|W9] es,m%n v`~,iS0:U~v 6P&g93.~l-q/_GaϏlԞ  ~ 6K~4?[)KYҜ% -hEu#"0""FE IV7%Ҙ8,KyJm:5I^q)0‡ d<馼{l&XfG`k1k\pd^om4%$$$hc8Σ`f}u͈d-hhX#\;'*ZqB=iU"Eq䏂P%+lPݤQҔ_'l1F̳.F}}=op\v՘ xdzgq_Kܵ^ Em+Azke={v'ߑ#n$e)\v==NLc_‡<߾g}v@Fߑ >qe͚5E=Ѧu+,# r[ͷ ^KAм̴͋jd7) X"B;g)>v@ېI}ƔE]u78 1C#:Ě)dI"*mYTwf Ѣ.bX`1;lZ@rm[ 58GD4/'M{1cݗE[lEF1)""b&s+)5v7LF,a6]ul|ʅm "B"8.3Y5ecN˯H0惜y ce^'^:,ŷۜE(`"wNoޏ(!|}ϩyk?4n289 ]=4>gYT$3~Y& sv[AH8}{.cqSy׮]{ec7L"F_~nV=㷊Ï8W]u#f͚EUUUXne[eYZho?{$*D ' &]mL|/|eؕXwݵV-r‚ƌꫯa“ /Tvz=ԸI{ufUV{l\gLܠ,iOlW5lt"Z g C} Hs9Z)2Ըi$g/r=тP @;(@5QH񋠢bi@ Ζ"/R!%d`LG$.}ʈtbB6aG yrŕH!sgc6q,dQx!'b|jp'}Xʶ#g}*t&7犉SE-AڲfWG5D4i"Ӥ~ʋ&Y9g]hJC5 AA&[x\{qa'be˛]77dxfĹ^S5Ű~֢ 0=ʛ7oSM6O oF>^-,hއXИ:m:{B&pB:BHR5- :p]< &9dG3.BBs|׫RB~s٠ ݼP5nh ٖD9#ne]d/2z™M]>oqZh /zYvyA>]qyq_2,]w/<3;2etcQy.}lhYgv+wgGBg/]k>9o^z&Ko,2ɼ}ט[q=eٰ;fwt,;)'##fjxgz^yMjJdPYBm?vANjG-Dh6SƠUi6:ЦZ.ZCDҦ\LLwsu0O>9wϙۓhb\[;ɤ߭UcG{XDȋсօ l>TT Ԅ?²aVRPPab kaϦL.<TYZBEV&dieVB (|\#ka^ܞ V}٧w&c{~J䫍~{GKw߰gb1sNoƈ .$<Vق([gVu`"Ż9j=CcUhr-C÷_S%,-}x/=jXlM9KA++`s.jjei,S>l6GF.[X=[6]< TTh_\'e.SNx;q8/ "~!߫3׉"C#V6oB#cޒ|Se\}^v1|GbO2ٟc.(r&8nJrl3B#.嬋(wjkbǦ;d17Cyi]vs9uDy~LA-9\Ӓ{m\%=&=s *PI,(KӲ1DH #E pRGΌrtgBԤ-121Lsw&]́9Έ~sFHE\+ŞrRіhMRUa.{TD9ab3cz;x'ٌ[5덍†T7q6L2B:b :Mrjk y C*B} :zk B51%QsU[{*F59)wszRJ?R r+ElxW#9凗x6"]}S U_r^!/!x]y޸;2rQԋɔszBKējۦ{M>x/*sT"úf>b_ƀ06 FAQIq]aPXh-l^3**絽#gg#17 .$ {GGǀz 0<< gk} qiNo[܂@zy^1ff~X{O@@4ttʜEdT9(rcdyiw;}DFɞ_?XPeDM'*#>:1sԑ"WVx7dK#Wf0mZNݗőLrps9o-kv.駟^w/3rDkI>v㍷oScr;cG}26l|d7|{u?vu?LUĿ[- 7r{oQ;Q{]Umf̘YOE}~LS9kŕ6Y,9iOg;>wF@olӸi{`aJ)aC`>Sљ("R@#"O;eR~|'y9h< Ή72Ґgx(jGMyWEl\49j+p zxZ()PaKN}2SN9ɓ@X.] Ę,\X(_.X3C!AE!!S09XZc9X! aD40`uTcDdP,yD`wۿ:cw٣k -?6=vZ+<d4$<<_#("  P:P#&mH8"imC;Umm$G JfH5*G94LFOp`'(6sLs4E#?sDys̗s[.ٮ{Y4X0ӸЛZdyϨ:uc0rcdlp7.J Z*xGBF < ,2Qj F |urPE QI!1Rf,dltt/\r)rZ=<5u`(JPifAD"3 $( A5HwRPMH:iEm;ݶ{P!r(dH8`̻mMp@&f l%h}sC M6Q ߭6Ց%ݷC`!BP]ndbҎ1_4;{|sYL0ZPn[#83871B20<e pB̦]cp,/~Caqk cλ `@18Ct M&R32ﶍv4 0ՐN#!yS!͂CxK&b(bCP9HXSO=[~wޙ]-̦YM)&?ɕ1!%kb=T =kҔN?~/x8=%t)iLLN4WtHxƔ.i_j,q[ wNMtij͛usKL6[6n017Zd^g]?o0$2S6[h2D5c!DICd7W7DTn]e6yn_}6 6@o"-.j"4.JVuwQz]Su#'6[?a<"+EnkpPy!ByW" #538Qojn DɃTs!Ha4CsQD0R֎^&[Ar)rm"\%IQB(Ȳ7e2]0zcA @;mQBc}qpwu7 Pҩ2 V&jR{>@$LM 1dݶ3'. wBN(uMa&%@֭HX4ț&?~4ά1f$\فWs2@8@l}5n[7zǭMlUr0[i,̺lUeTw B;W$l1`&1dAJd@ 17xu㠬16E9PĖDCO&}+T)v-?SW;1|Ugy^On3vxɈ4/V,Wq?.]&DB嗀:`WC1Q)0C&]6P F sD¢ո/ckYBwnaB1!@H9 w w PAf1g ,H)HyvmGH]*7E@xf0I- u1_y,u ,W*ckQp.G.?Sjx#ico2 ިOf[Nl! :Zf [?VOLl4tmXƹ4&0f<08~‰x-emWizL:le1_<_唳` K'm4\lqPH 7 AJ͂.7H9L\(u Թi"ě 3<51:P:h ׸d[ kKL:>5򾖙ÞɓLHx)&*A}7C 2FBDNL9i+2+jֵI?,.KDBߜ2gR涙%jNXif R,i0jvgMr㤖2g6" y̓Y3ED-c5~: !vڊadwD|űd$W~/M粘 inPDHF(uɃY|/;sQUkAFLhAg`tB! A4f$›C1cSU8&:5I-:s_ّ32*$3p)p'HH$Mk˧سTN1֮*ոx[@us1cpa+.˴[谑pƌ611q3q)x_`:L~[6u 8lb$,dknbDH&$҄-\Tr8HV:|5ȦF.A jnfBrR!pST@c 1QYlJ5_s a#{Hef7目<99(hfZ7ZSBek k*M.onnn) :)o]}vqgx $,'u>nxkBwR!sGfBcnd e~Bݘ(j&5 :evjc5 f ࣾjFu5 /c!N&DjfB>\ܓ جD$yZ@DC%(?SN9唳%`,j Aw__̜̻m.\A0 " M>PN[((cwڊɔ7NwD 볓W[^ɱ[x¸sJ&@HYmv+(ny4Eq2H!܋h~6jO:,FB@q VxbbɚtBe7-kfYk2 &luddSq7(;޲B50V FxٰXq7@4JAK'.!d>,;\X!pxa, -V w+?8d ݠu㍷E}AcN֩^H Z{s[`$uȟvު=wk`dF[%wjj*ͷ6uoV8ifL{v )S?4h=؍̽ID+Y^;X()lp&:W5 !9-"7à6vb]ԲT'DHfqG.i1o%`&fK-2=nN=6T[,fk0QlܔLT(덍ofk4Zj2I_c5ygʟ͒8pw4Bq` tfܛ)֔f74!7pk !3 jɸ䡼ּΘANG#rC )@H&a4at>#{D\6`Z!Bխ3fw(sTX3Um-[h9SN9Kp=ra061vjJ(@w3"U)Į[!1r%r1CYkr Fe)A&C!5! Ͳ"郌8;|w|xxΧj7yp4FAd.VAVK- h0"1h,@V)/:3Ͽ˟ϒڸ_H̓ue,K3PCm ePn,wr1dB_o]s1A a۸א0j2vע$1j00w&+=b@2n"T!W۪72:,s`*r2.Ե UΒj$E}M`W_}âe$_| oF?!̞=;V}Ah㍷jɬWXw&~faz#HXN9g+'3(h xGBQ ueĨySaݶ҈d;3FMx a\usk4e@~S :DAܴǶS'[fx.NqGs[ aݛS LwZfBBs\VEG|uwVϤI->K<8\T͂rtK||Tse>uc`Lh !P(w0OaVGB  Gb$\4@HYc̯7.Be+ L9e:!Qa&cDpP"jTAr)~Uߤ/KJa؊CkL q;juO&}S bh:s70d,#faW#/F¢&~-f5`AiS=cUQwȐ˟bo$UER^ Nd)v C`LwݵAĮ[w[ACaH &:ynwj,cduD c8 CdNHִ>PEu?#GN[zGX[#a9f \*i5RNEiHgXifa6W>*댣 'Rmh I9wge&J 2m-j FB;>kut؋=p©γQr^ڶH58(s6X+ ]2f6W-c"į+F¢EȦ}i}#z y~iwg Ik)  Oyl[m :\8 )TB(SxG.y9 N3,T!cS ސ8УO$uƬ7loIF.*mURh$luy>^w٣fLфv5}0Sc^7iI'51SQg4:/xpRe !r4Ug6 B\o54^#aQ7Ny 6ز.a X-|Ԥk#'eL$KB@u mo-(j͛[Fk5@Q68ͱRP+e޼%X(dQQJ7# (HS!&~O&lu 6=tBDHSMMf$+ES^~*r)DdnZN"h(̺msjg P&k:Z² :1c]4ZI-#@1` qݵ QufAB0K;kI ҰZMݷwuo R7YG-j.1[gZc!vJ-겪CMc1EB'i^h{R{#a:z^xŶ0YƔ E띵k'˦~`iwcceaK7)HH& ,Ӊhͻir3Lh; A0 YT:8IHXN9yfѤp-< L9HZT55 ʼnGHXMR?GqRB ѕs0@67>aF|*;4Ɣ8q݆}Zs/Frq LThG}B! :մE*(G#,T0"<"oKeq}S:㨁 !m $GU+Ǟ}@s[2-tBZ| N.T4fœ0fj XFH\ Fr cRb[[,BDBc-voZc&@}sqRuM!tƖ|1;0$l4(b ާUN9S"? ) )kL&C^5Lr03` $ӻ@1q+@̂edW{ݻqC4J]Y,"CɄX#]ADzA}sK]VZ7˱? av;k!1*8ShZ ,9l)F#pW0wLc]G[,j YLׁjڴO<:ȱP˟Ւk$Y1F@nu%ȅ:L Ǹ@ uYVw #0Zt*gI7v`OZceSnPf*aǍ캕:@YB}}uxYyI bw2֮8Nz≧̱j'>cQO8ݟ}o?ޗxتy3'Hzߛ|sM9g̵Ǧ0YgM+FrʡORbSCEnI:cmV.J.nJࡔPa0M(ʚL#7gLSaSsuDbBPaķqOvԃ96rFfJM:ċ}b1uFjA!g H>u1'sޢ\xǻsQgl8i1A~> 4ϘZs|4cZBm]aR6*I ȍڶH$P)rpOD4 \kޝRl-lyM!Qac D͘)jCƜwcb&̛ d.t.k)j&t.jwzD棤:r[>< PZ ꃑ0i,?pSN9唳(&}"iH! Xi}`~UqBY$_ 7B*h0dɄ VgDe}}R-I` 䱗]~[-ezz:t7 Bbi$̮6v#A1ge20 55`ffBfa%iIȋcFBb k[ Vw I\71:neu⽡c^ |c-bvwPF2ג Au kWWy-uHaVCfA±TB|#y=2Pho8Nbdݍɤ )B1B1 ZE:?R^~8+g12zg~[[<\g‹פUiQk_۳mq :d }}qjNL%&$8&)|k_}N {nV;)SΒ[ěhOlQ=_#Io=wz5b1; ] /Hج?p2,kvo?Cx~vrN[b&gfNCŸ("9')֙S )-k#zcD7 & 5FТ˛F]ndԺIML;.7j-^wMQjfv>m0))(Z35hE)b%7\Yi |3ꈬ;EEE3iּ9Ż0QG5Zsrԍॾ4̃;+bb]بPܱ23 f܂:IhMYdAk|65B7NdBFX(sڷ(6*ר!L&$1 F$IFIV~+r)gQbu9=)ʊ(ﲪ@ P,byvAcuF'qoc`6РTs`h+@7]R0~'0 w @4>&9ƿ=:+{Վ>5wTz*`@.Y<Z1DȚ7f;# !30kh"`Խpa1N%,:g$t氌U0$ߘPbсu9лo="ռx[2_a]t aYZk41xF muG.!c  cw-DdLFm15@!7qU`plN.S G.\_B>|?ԵV`$L5,ӟٶ5y>Eئ}ߺO#aoUzˮveuuHɋú?+o>gzD{Wbvkᷮ0~?%":S,Ʊ ߆qs~U,'XiDFƶXdBq]1)mwpR͂ȍw:5Zq 7m0 Cm-㮊7g* ,oY OxϞ[xjbϷL?2lon4R`SaF䝖^?uP̈́!E`g3 !ljlx?EEE %od9:fjQlS MTQE+=TC2T&pml66+Q5rRԐkUǹ,>8)X)E6od9^.9q|4"}kKFހ 5ǼskKD0R7M(De!op):hf6Y;| -k b2:ŕfD͛PZ7yJ 쓵Y`0O5N$;O dflqom!7!$lԧo ET`[M7Fh<|ǛML u}1 SK)Q҂:R]~0+r)}aLlax2& eo4٤ŒP`!1ZcmN!4;Q<w C]h2X:Zc*/[il5t_&f¤G@uސVmoK0lo Lh`tw62!MBu[gv0̅Ww 9Cfipl' x[3ym^b&*5denWwͅ0wv2֬3:!YA1Y4hS猃vW5@57f Em+u[qL`Q5gp7HcFbkXbvuvrM*$072[CugxC\9F_[M;]̲VoI{W}}2v/&c! 7~}E7#!ʫz.o.|G#a9t@+sIrqHبrQYm eV 3Өs 1Sa@;%l485_ֲP``!_uZgC(w7 w=Yg/3}EfzOM0SN T Q}k3q !OKTДC<#I&kQ &k6>X,wo6#a?L7xa[3uSϺ EB.l .n"Fl FG:(L%Zrey3D4#aQQ[m}k6U2&5k-3:GkpPJ.ZD|_\j^K8T)*얖 :k_s5c3B>w7ʽD(fB"\4rHS@ m{KĐ6vcrR[m,b]H!w!mHv٧pr)r9Lk R3ֻngFD P u`x  ]i 4&RCD;dS %7X0ƚ݁rQ"Ix2^MJ;}3FLAF  4v(ˊb~Ycdb&(dq$h K=EEE 7MQʼ9Cl11 ƛ19bfa) cw$BY(LY4J( 9䫍2tBZCP&|1rD }U# :ni ԻO%.[.a4TS!VwVd0 8P Q I+DbRI]x,FY͞=[~XUT|-w{z 'O>]kޤ 6R~oA#`b!Ng/RJ{goϏ77馛n[FvۿqEѓ䛶HXN9MJ-FDC`6FCc|7NJ7gswkFjM6PO3 f0DT<fCpE )Kk9א*cBkI{~i5Zfl7PL5jb& -䥈ȕ2gB#]6D8(msH6M!D=H6.**ꌑP(e\(((jB&[ZBi&qy~1 䢑C ?PF릆kHT5o&{fqf)QPP!m+ ޅR`^ ;yHwN%JcDȷHn<e@6XFM#H[~+r)gA?̂ϘYuբFHF Fŷ]v1o P 1f9= y.+: 7n[ AHꈶpEHF ݶIgȻ9>kUwa/b]&]2ˆ!6(pL޼Ӷ9A PCnAMD22]o.[DYw-";q Li"QQQ ӶEPud![ie]GLZ_ `1eNHfAv桘G@!qPؚ0⍦AB/mE(H85}1:dkR-E] i0rZy˭1:ʬw(3QZD5EQcoh,\.{,:FB'Zϻ[t&a˯Q4l$ցCo & bߪmoMZ[T/R'<&>sk~/&5j?d$>N>yotaISLTب Ẍ5.F 2>S~j7G=쳧ٚlj|5ǛoC?ױ>9 ,]:iIӒnEHoM4iJҾIH>N[M4wܔbu3+eiYx)̂jtv `* )}3KԑS>06b +UFJfҥz}ny}WZ>k!S+Zd3=7P=:2P6zfq9Ě34S4(o06VHwQolB1Kpm&BX)%ZM:Ce1lqZz>fBI]X(n&\ӛLof $5 X(j9.ꑹ)5F έ-7`{6~:}54[0l`T3Xg 992RAD1>޺D)r-8nҹI&U{IH0"Pf+;Đ@ ]|f~Y--452cT<(]A;b1ǻM Ili+8@L&i:VO>~8.Ⱥj!&uԺjc(C#e` k=QAnǐthbcEEE i |:2`"rMust8(5!ܙ 1]`*726fqcaiuA!Qv]1°c}1j 0˃3ALޡ.ܼP <(Fp1 z@pw4 YHk0}OHY#>?d١ϘZ;a;)nwG8:KAnygvPuT<\q|)߯8bLu U\piuιȯv;^{ԩ46rǞz֍hĶ)]6S^5O;0֙;ov3]۟瞛^{{o#廻ᆵ51~0pl_]͸SϮ;ld%cfzxbmСSZZ<+cd2YgMkO1qs?-Fr:G{& J=7T4I%-WNXiBAL(kmr7 RL(ZT]ZL|55r X(l㵛M6P̂KMYinksQzԱө~h-3Վ~.@HàM.˜!m."K51Qg̡KoX?EEEH/F0(9|c.APoF*M,CD(ޑgVg@1DR궷 ʘoKR dB5}"oF_o+YEqh"mPZZc(c| 5Z)?SN9'͜c~ðk&еE!I߆խ8fΎ[鶅 ͅ2d!԰~AdaYCDMW3Nr/3caʯ9uɐ  @cwZTUinM=Ϛl8440 pL'iPr53 RV˘ uaD::0ئ2!Mq/F¢ ]Qk4Qa4@:2bk* 2fY@w{7mn$3&)C$Cj^"jLUrϙ Á06 fˆ>014Ymwa"[Md&R5"GT(ZvaQp&0,rBRlOH~ il{7~Mkq*Mk:of5~‰akHki̟d_;eYUGϕ3VЦy]#aLۤ֘t;⯱#_W_W7t sSㄱ~_W9=3f#a9I'==_LMSVK%ۣڛ&wcI6uŕ!aHe*!rkj֣qbaf6jV6 TLGHJ4nN=GGefҰ g&9!Dm2B#RD5vHfFkQA #J郶5!eiuYm\TT4=՛!Yi fJMfDuz5AgB 9#BfDƜl5Q|4Aek)7{46Zf19(@iy+ TX)I?L"kENP5ћ.a.BԼڶ@S50l=OSN9? [6 t.$ݓi% qҷya0a0"NLu&1L+!dṼɬ @ j{~]y706R@ƚ@.wn[|1X$@ 9`lE{o|̌NK0l٣f`•]G^ohT8u!cb2[1fvDWs.1>B1 Fۈ鰎Z_a4렑6.**꜑PVn( P1WPb8T0ܔ]u+ۖP@APGM:ky9`(3xfBDcj.lqB!A )dTQa 0fwCSzc-ɂ1@!rFDhro_5c0"TB^VɄq=l9e`p i$ O~re5d0uZ_Kmm:>XVUW\q t!uWgz<3_~j8~y ~ 딑pn~NN[%Ӧ]NL L9QsH[)}Qtzj S_Փ1qi=&Fe"}+Ivba~}~ lԛwk3R6PoP L9y XOD|u&B]&^⸩24Z\GlhR`z㮣/ܷ.oھ:j`T9RL|ԧќy wH05Bà Ylm*x3a hT&nPo`&pz~qEIyGlmM-CXxG7⫌))R3kJcCJH)ngA~*9iXàM% i3uQ9c֘&CJpQHة Qk-"| lo2&Bf6-]h9SabR>鲤d؇@ص@(B_ˡAD%5ux A=<%Ycow\Ћ+"ͅK n PHSPd5N!;< od=@1EA}"!A&SacP1DBd~!%e5@2 LlC\k,tˆn#8yﶺåutf̓ l=Gt[h Me#AjyPC0 ok* TB1HҀ[و61* X"$EBP`ʂbaEZVVڰI 9waNTaνo9#М1Fa 2[-CDCژjاN[` E jcm+{d:a8W-[+{KcG( Ba4v hWldA->U*";plG~@PU~1\#ԮviKU{[Թ{dxȹ ^Yjj\*[޻\y^@]_ϪZV&&]wc{N*sU1+ghwl6ublrQwߙ5|:[^- J6V̎ #uf Q \~u¤\A>!ϩ2 RWWׂEV~Xsܗjő l!?[pKЕSDxXpC9P5WD Mg$Ba]sl/1agHPXlM"¸ ޘPEBB͍7+:\3! ^\yaz.L͙?uO 8R`#eN Qks plaa sklR;c [ Qkޒ&&$$Bطq} =&!MiiO0`q@DD0{ܦ˷mћyP7m?V vM8=ƶԈI=@nmB]s{74:A1Ahc $ cl 7[cE7Z;c=+/n",zЬ 曵 XCqY-!l78fs3ڍS{0B3y0jJ{B/)$DG}>Rn1u\Xccbf<4l=(Y)E.jl;+{@'xhȍ!va`8mZyRk8k s㣨ZE_h|ӷ>3}3̔ܔD]Tۍd~ !krP->j,'%3QFEkTS^j|<4Hhh '8qҘ,oBR]:; ճQE,go'dB]n $:g4cDs *NIhIj&cdkY 4 3eI$'k]F}@}O)Oyӹ YذNjo=b EOc!fIKaګ7) 9epJeA|Va#9$ٻY$fn$c|ߓw{-5ͮi;5={ಀ^1Fu66;ŬVi\qBYe`,f8}V̈́`uHnqUg,%uaeXueqlЎpߜF_(ιCqKa[WX֯1y;+D3,.ny'4w~Fk͚i> V^^V|ro/Hr+ew5mr3!pQ5Ẍ́5PHB5 @q*ə>t񚪳d >jBrQ녏BiN-v1R#4XZ٨!0NL2R[N]a}A<%,E&BS3Foq!c`3,[} -OySy6N[kWqaX̃225 e:PSh:$ss1ژqPjen&(,[`YC>gϝ66~㋽/^p .B1gy\i'fo̡ac2oR |!Y5~rAKmMagW ێK@/G} Z2sщƤN^xxVzo25F'k:ڵMgT_o̻Sg۶miݺӰagv>nmnZo՟Y~eFB5 > ӈc5X08T 3Q7v!Db;!{1 ,jFQ+,DX&55P[1AY̰E˸FY|0(A!BԐ8dHf& '1 L[d8gЌد{ cJi^>c^V% Mr#E-L:+eOL30OBH1ࡒbܳyjA@/Zc&쓷<+mdm1G]xҳsw;M:0Q(zJy(jS#/TVԙ(M:ϧPtm)-Lt!E4(BdKW63Cyr8caFONz֪Q[I``>6 1 gg Ͽ75dC{^_l o<6 J'NK}%-[qF?r߹6湨r $yЕ4ߌڍ|猔R)OyʳnUm=wԬ=欼Z: QXB33 eX4hf: !8X~ykb& k@wy3!cC1=f}ɂIz mlqHH :N5@XY B1P5 & 1CSc]KyOayl]m<`H®FBװL}-O>ϥHxu7kW-KO=tz1;͌|WBkw0#nӄ?q~g@nͳv΍LhܦEO&Bgb 1DuT'Y*&D`=!E[`z]fW-{b1Wc|1K5Ndm`D( LW-[gFj Q2wpz@/Ռ5FBQLJȌA9=XkQm1`,NԐVj+?#aQQQ1'h{[sQOpy{hFLb,XFq=$LԕKlq #hcrѐ & J_-Z+u^JB5n+HXB0}ї'W/f>̝.E JC4 &>3L4Ԅ3՚ }ԘqEQgzg̅]i$l;xh1䝵?1[ +WMFHU#i裫blڌŖFŽG饗^fϞ_I[lsߋڊGylT4nvH8ܹ(όzekJQ;8!.XG3&' 3553DcfB0iI-1EkFAOpa*(e 2AdMox(TzȸEC=%R)K}).v#!ě\Fm$8+mu qZhHo%UwhpyS8 @m}0}_č PU5 S k6 ̈́s=꬙!Cܨh8ć4g">3w#:6B~ 0KjjˡXIK'7mM#j{Xasf1Gk#CM[8>Lv#!kfq̛ U=lt0F V7}W 7Oȷ餑:b 脑Pc4<Ft3#͛o4s_^6nrR!Z$"?/pvHݸ!5 &B.hAeV0oyrRgxo7vpqvHxҦ#"F7HxK13 gq֭oǷկ jj$5kfSG76?0#<ă^&Mif'O--~#q_?N kL5g䠚bQLj2ے5NSY*%6HqnB55YL* 3%θEr k̍fC3ū\,WC3XFhrIn%Ekkh|4 "8NWM0-.3qfd.[_w<)Oca)ll}BLcHC[1;YˉZ7m eQ]klyHkQ40h#CڻpK:cqߪ e?4_z}ibiЀeLc2MycC13 {1΀1lղkaq28faqbFB<-Ck}1zhcF]Q mcO(Fd$".x%DOFBjl5;{bՓ̙.;HhP0 ᝙ _,fc߾%s@&AMuP; }Hc":3P7❁2yJummj/1s7 ` ڹ;6kC9cj ̓-4 2꘽PjsQMo Ef4fJ&*Ő0dBZघ;k7޳wjA4'c4P8)oLha#^ʹ77:'FSZ5'G=T߹qP8)hrzzK<{- {ۑmCon)+&{1OgET(A4~fBf)۶ՍZM&BbpB̈́P!1ydItzy0sݳ <?uMeQjP58q `O NA2,>U ~((ҥ DAA$HHD@ vi"tQ5Yf9{B;f?797AI@'obkg\6t֚p PZ䶕`$t&uoHgmbRs57woim5vWINwyYqmoe멧n=n߯U&W_+κ[s[o7yQ;~z衇a?/b$՞x)| Swu7-W{Uy;߹B?rBk$TlGb>a`!Vdk4Jda.Ĩ34&< 3@0Dh,E=|ǣ; a4h 80̠p[G#+՛PP™zU!cq }Ft7BbǙ՚"ʣvBhQ 8k5j39\|4\ 3̃mZPXMjɞVj\TBc`b[*Nb_{MX䢞ҫ85kiS8ýGkuЍN[T舩;y\jaDŕ,'m{Uh-C0!{UdG5ޘ {HElaq#չc<";lsn綞-ͱ?;A^1 W@̄feSCT_ڠJGvPS(>&nHX5o7~b$\__lxi$! Ͽ{?C~VmG,_W/7n?}?8iZnC]"1E 7ᭀ^|~H(@gv|FB~wM N8K|=7Va!7FLjM_WͽPc3#VL:h\3oFZ5 .v6z/; uF`y:=YC>RY qRŀu''kU#h8~FSqpGt1|o4㌃ZYGOF`8xc*YduU.{I g_ve߆3 6y1ꢡCg`0νrc$Ԁ0AbDK|rO,R[o}? Rd&?gpGL% .}m~ϿZei$K57m$<唳 y,6[n v}b&Pk(Y Of \+\T IVn)$=7Oߥ8(i0V[Hً>}|ށ h  33b[ J<>h5y("X{QI="SHUZ f/X(z! Xm=rISGkܫ)i@yp4+_?Zk6pLti$OH^x?^(0{ETG}2sbz~%HMc %27Pn.=.*w 2L}~&y7вc6_o~؟0 {-e'#a(c XƩZ \ӵ۱A4!uTkZb,ANj@@ x3z"95jY=iV@XDvi5+k`e.  lUu0 |ߍ8z˴=*p. W (C4k濬#aF#LHW/[*HpQ0Q+7֕fĞ LgaM>U0  k4` 4M\B0&7;̓اP<ܭG.Ug뙙4r.yLsI>ju3yiO{_)c&YiP栵y3J,wu?n$c%f$Hs~/itY) <trw2?R'|V{99 x08a\(G^,l z7-hn"יQc0qij* s(#!'b+Ww#! =2<` ^h" ,! 3©sι?Fki$p;~TNK?nkyַ.Tb 8Lq2K/l*5]sS!{r+#oj˿?cɥ/&HJ bKl5Þ@/@O´/t6F/\:Sz#X➌Tc353o,UZJ%gE!{vc zP=Fֆهاi80Fp酙>33oߟL#o\̔^ .6.T(7j^pR3fRK+n,Ԫ3IYR-`àGg#'Z=J-2]o|D=>n㣯 ᶹ0z|]ߍ?a$pJ*HaDNaJL7Wm1Si09um1LϾXmѻKi6l`wJeF}'jƤ.'Xgѿ>aL䟥;T/ :ꤾ !z]f(D-fAq+a2 sd$h5 ,1 bI7bʖ2`>(@it{أR-Mj+Ľ&l8(fg+Fˆ2+o(,cy0AdM㲗F^̃1e JqeVe~>[Ѩ濸#aF#ᛄVtL+ 3%YhDi.}ui)/c}:&T})%hٛ&+ SarQ_]P=6} a7fA2P2 p-XU^6n 'WT=P6*ZsPً[ C2*.G"'}K#С˴=Go1yп۰(#C_q s7pX z_&->ퟑ9]X{43&ajd '$kX ׆LHv< wx&b˿W`pTh$,A [~ ?-i(L5j36еXhDCJ*6*.^sHh=Jl v^ >- 9L7Z#nifv&T#AGM!!X89N`^DuA1dEPKu04eq 9K@础coAܹLM̲_X#aNB1YBje,o*C`ܣIۨʴRޛҙ' Kca@45K9$K0u(`YYWW: %$c-hp + QTSf*L3=7J\ӶL,Dà iT3!{i iW(xc$lԨQc$A萢=ְ. .;33!Ko<ΙC#g@{둙Av2[n!~) \UF4?Ɗ?[#2DD ԝ_SU<80ώbD:_k`a8c u g%8[# %#4Eq&E4 uR㡵 8V-i̞ 䥕kXjZ+z\\Qf&sCu!H,48@j֬}S[|ofAjʞ>kH<4(kzqRiIFB.2Q)W;#-r.=h:kY5<_S 鳑B}H=I7/`fp]h0T1۵Ȗ_Kh jq%zOT&x9k2(4->S0xIgY}hmkg!](@K/ʯP#!nG$e:l' Ŕ-$H&PK,Ψ:qFBd$(:ULYk%0#@QeO 028o%yܱ@&PHH:nBՑ!yQfe\f9q˚B4#cʩ[cYkUMh_4E 5j g Fbo\~S|gzH86+T[EF:|Ы~oɇ5X.>0 0HD鋑P>i$qj57nw>G_O*\ЌzI3:, 4n|9wJ̕gEdbympL)wYg_#'Ԣs:o'4*.ېLn$Lu3!.&@=W)S\rj /fj|3V֖a=Tp5T琵ꔌCa(MyC!fcMsauؚ"tVJVτ;=u0XZPUr#!We\qe|'ZA\A/&x^*ᘦnKB?]k=ژgECVt2h M!ټuջ,>FBL{7 Q HX~Az'd$tHGş>b$|rz K/!`w#aW ^z5 hbD"ӐM`J* &A} (i7?t_/{ ]>4ByꜸM#!)>@ jphpkgc^sM UB 7(=HpL5Vj (iAM*ZR/n#DWTf_el7RzG0LL Fˆ6&jy^]bK!9lOPFFPF(F,KyZ=[ez< ^еj@>cU`0y(g Zh_p5̈́`r9v*m֧TA틒v'2bAkHf}.7Z"*).] YG-%+ža.[kOYԏ R=e_\EF:C Mj@  ۛPl\J7ͥPzݐ?p{` ?R|3>k0租~V+-IHD9bMGyRJqr.۝X,~GQ{u KW? w~1C29FX9&&Hl>h5MNe& a0y ՃLCM>d-}*ZDjMZsZuFDF c:Y$P [w9 چ3}qRd|Tg䢔M窱r3ֶTr3QEYSa tcaD*^ZMqbZzg.|<3CM]Ӯ%/AבB9Gw0XLF10fD HqsVj_'j}Fͽ=o[)a,r(擵cZ<3@XL 9$SMٻߩDK͠:rJ1Rq}DkX]ki"W,8zڇhc'#HXtnxÍ7x z]Ӯ7>|Hv-sϷa>[g-n$Su W^+->/zݴ A;`UX`%)g?Llqu6o?f̺PdwN^nd?~wH!Jd } fDo#DF+j7jީO eG-X20R\ ru0&dh҄G(V3kT71iWMZYޠXDZ` bDf b{[eV\s6:j¹j4:v gcפj 0 c=΢C=/HبQH8ۊ.zaC6<輍Pԑby!>vT&봡lFFB* U)j۫6>o">hHc 9t&^w=37fj=1Qo=(w*xg :J՞^"d-3 ZSvR[$bU\c,OF·ͷHߌi3f.h$.r z5}o$DRNn$Gc^9ٻ0o"CɛAԦ Rثg>XrweM}mmY;k$\F00RJuљ -י!쓙ƀ5{Eql. j>SZxV3B'^ʾsSwᥕk[9Ԣz֎>>Yzgoħ9{!H.jܔu8ccdB4 :?yn0L.jʁldJ3ҘuvCa9 =P7U>Yi Z cGc Z߇hciB_b$wنoz r )C\O#'x +~74 Hu],aP@Ku1/at\|͐Seg{9Y}7 g|Q'a|rϷϠ[K`dr:W(1Ew+>ZLhQ"PXeRi* >kAAa4,xh ZY0ga$C⣺Е$s i\j\kf&.ZzXLa4;+[])8k7#aV'>JW8i0bۋ6<<̈́LrC7=u WsqfBJ4vbW4G}I+Π1i"d`ǾMV:kp|AE`l=r~8xua$.X}J]ێL ҹW2 cXKo_ -#&n7%0Km<|[޾ HCWP1|8AKw~ e _F„|t#_(̡a80X@*o,/΋ٯ.}= 7v"a. k$OfM^S<; 4 ¼vSawHq˰}qV1)ᘭA_0}L03@VlV^㌹ԏZ3֔-q3aud0o [Uc,n(diTNeX%b\=ƒ0, ;2[a^(YB2JfA5Coii>0ҥnmHp9Z$fBǽSDaꊙgRfPPUw GʊqrLf:0ҀT`J!_ jժ0=g BY}EGZ ŀbBGq&>٨'%̘cI䠑RK&[ u搵+߅r `Mi(=ֈ,v5{R0SfbK5V٨j͹NAiLEqP}S[RITKd8S=Kw<89䐌Ӵ6eqX!c`Lˆqԑ߻z6~p a ԪXFŒ6^3ޘ@ wq]olSc̵}@(s kBa1AƺAsl8)[9s`F񌀬6f]dr/>`FyOE\@ az䑿 Jxև>,l"XFBM$BGD| ûvN 3>_6D(eELX{MO?7~F;"ig'x& FیK'8dNpq@̄.6q˕1P4 0fn*[* >hXc,Lu kXH40=W){/C-;"A &9Þ=ւdXC̄%1ǂaX!sGCk YW\ULq Gg<<3}E9eգΖPƸPfA4>V\frKg`F 2fq gb51C؂ VL|T}IA^S]Վ<0ӿL?47C8y/AkH{pO;SqH쥙=LnAk<4Vm̕xcz려^`%2ZMi;aTTu+'\i WR)+?pyV {)w*ozC#> 7'ǍE&d|4h&Đ(D!Lj\Sml̄1\?!!흑fq7$ZԍgrK~#!D.jKW(bڌP[ocGkg5`EX%F\4n+$f1{@s X[MNZ쓪JhL-P-0r"IG6%<<dKVo#=t.߉;,âC=f};wPˆP]ז ,#b< -FBPթ{go^|tGi_k`.뇡0XJMu8ZL@Xw/=c{{1fBA4;2`vXrVpkdcW b FBi#^5 P6r=2--Z{HkҤo 0޼+#=ZbUi֣>IHx{_P1-F2A @T?:ȓ35| ??&j4;9]6?E_Gi[@2ނX~f,p~EK؇ EqFauzaz4  uT(iywyJ , ّB(B`LSi {i" , !XT զp eqghc0FS10nTL{¹$a}ugX1ol=Y:/iiy|tdф6 Np)0rxc fi$$dBՕrЈ/Г73V(e ՇX̃L7;yb ]{w oDk/b(|ƸM$eϭ>g1'uadncQ.o߳ iYHAsTT,4u,BHASkFd9 }̈́b'fZ3z_l3)̃5㍡.wJ6-\)Wgsq8X悕Lρk V"ѐ<4k ^SO`$ؚyC!4J6B{*#IyfAO_\λ X!IEy$/s c9SaP}Hkl}칺rX٫GY %9)+F{ȅ&]ێt^f$L0Iۍ" !z0 Y d U[d!XẕCc<Ҙ, &HIW>ň AC= 5 FnŌG$ d&_ϺJ_&T҄?/ۭc91NL]߮^1MVE0Dܚxk?GyQ ٮˤ1~6v`fA]QST's ;`R UK``X@+׃*ӵH#Gvh430JPdm1I= HY?c` c!ajDn'L 2 Rz?fdnLղfu;R]fnP}Ts XHրecȴWz;PB~{yy50uܰ/E>\Jfֹǚ{ WFqkFBȌ4F:77?x {|/l3 'Kf:LlD(` Q =H`i(\+E.څj^&p {ysakP5E @U'&*UI!Xm/KKjd$0x`Lu%)`0wsϛ1FBiƀ֞¿H\[n* $ؿN#a z R5&'&0\  @pD&w]="{$$3-Ҏ7ߋ>Þs t>[πwV؇Ao/l~|^}˿Ow p#h&艋JlKm*P`urܫI0nT{j -qˠ\sRZR_SKm3c+q+2*Y1z 3إwz-VK}M:KU}L48kEcf7ھH<{P۾G/HcDe,dpii&lgj>w {i̚Jñ: si6b;w(FgƬ!#b_6,s:b;x+zW9c2dv" t-ܧP@g^\0,D36XfsLh (&`D뼣uv;La"i0l51n'd>37x˴y6AZƕ%J1s/ z!`S_* |˟ߛ4=ZʻN~O KdϽ{p`c=j}&M}{uݭor`C@!F4 @IPFfLʖ=dZ%:51Gu6`<&У>1A]~&&OX>![Hߗ7B Ǎ_!IL3 Vy4EA3 j)^LV'e{2{ Rmӵ9Lh (陵b=3 ǚk%#aY1`a&L#aD L 2hgZ Ƹ pL괭 L]4THP[1뼑\DȵٙC1 nyj3;niiH.a3r!. .;ZjYEZ&C/n-gq}JYkZ&A2Fb1UӇ;zfw:`}R1jJ0+kdMq䥬ѯ F1ϩRBX m\IoLlׄPF~m-Z' ܫB7AǾКcifåP| 櫿cHpe@߫FB׆;5Wp`]{= ^Y1~Ϻp!مOp{8H}ٟ__̊σWߨqR~$x~MT>7jgJ9si*D2nD &ApXq{aa`5^Yn/MH*bJ t1 0M1_ e "oP$-LՐ%[F1)}MK-Xڠ2ΘVSE=E5Vֵkיh*)9aj(Ue0zUN`Fи)|/䡐(QPF^BJsa|1dI-R-Ey4Xic PmZ䣪Xk7\yyzd_.Q3a=r?mB2Ϩ#2X(c#8Ɇs!߷_z6v~`{mx$B5@ӵQqN(1~ !e&AQ8c:34(!s2t-{xQR,S \1_|>XcBHEZ jZ ۾K Ƭڔ3r7 bsi{74@̈́-$jOƠ Qc%AÌi> 8u0 M `u "€`,`@E({eQy0,v8 FYwPf*(2Sa1aAmA:c3 Ag33=V0 V-"CLgjRO,anFBsȆ4O4O4ًN)W < .e y+(KJ6h-* /UXgZ 4Tࣶfz )M:lcfk`w }v>T7^k_́4jk1Sq 3N&X(y aϮTM5-6w4p)SgϣHwZ5.˶}~8W5/EʮX 75@0oWK NZxћ%45&kDwaR;âHw]a ۿhUKq+aLࣨ)KjMN*!cjAk;55%f̔~TvfT 4RZ\JDj߻DVBsU*y!jN:՗,x,艃F)-B܋g4r-g!@wУAFCՓP2)6^uq3!(cpii&lgRF0A{ZQp:"#33sLJvfR}Hcrє]o-8Ak2N۰u>C⦙֒{YڞRYN*7=(c իھmq9h=}bc%[>ӭ7.En[SV@ˬ\ԆIueӾ}<<7ol>/qaZc:)@0̅O.qJ{_: KyU(gTH).i,cc챦'uoT{&핗е}a B>`E ̈́i(wޓAEı ;ig=J~ .3 &ªszֲoh4OĄ̈́_eapxH*lE4 $c/Mਿ## G턃'^M:]^.˂ |Q]ċ|nmQ'pYn> %3V7PReAyPL+E֩{/?*qu A2XPb)THm{[ڦjU RJe=A44]U "cL ʞg-ژA ۼ}jv!W1<3(VH90M4 reM, )hiyK2U0ƙ$e E%<gpS9uA4P4` 7_ }gfmy*̈́ZXHVʞ3Ҍ5+ i,k7Zı.c 45DedM~*dz&Rr;P>&̄eh7J#Nڣpݫ N:~g"Xs6#E|sLi$԰uYNܦP=( 7&b2 ЗyP(kQcfgB+F1V2(n&Ԋ~ }7 f]f?gx48aA_~m>HKɶf\yLG#&BݡavWL]i"W#`߷^4^JnL)An <`+̈́}3 V jS nH7@k CadRDt@<3X~ Ҟ`,0i$pFL\Y;xcvU 9hiyK0i̚r5&JvH(~5(jɌi(D^Xkՠu \~DƇ];}{v50ӛpbO6|TuKJы(c\B_i-uI<H^Hi#}≧Z%Ejm5vW0 /<ˍ6IAkn D-/ux)֔qPR@됵i ࣶ⡾0RqPc0¸bM18D4h” LZ=㌱P5a)%L5CaRg==/95K7E]0}{ڣJk(;C/`Y}@/ _a2 (&UEmA @f/<eR'xdlSi\r#!zJ0 r٭SN=u{kxw=s| -dkiL'#a-CJA6UZ~q  K7C2a [m6*fB(keZ$ zwued,m\%0{Jp5V KCa$K#!V-#b3Ҙ{-ԔL4 Ÿĭ3y09P!W %nQmW&kСXnƬ I|jDCyyfZ>#^nX̞rq0̈́fj>t#W]1氵Hl=WQFmhcqQE)-8 ⡐v^VwЃ"٨4{QQ{0V335Zf3R4Is z' uqRTe: 3j5=I&u.*he:YhE}ou Z{ VP|txCy:W7魣251?+:GvjJ2bf4 ;apK EԱC20m̕A ]G}|MOogG,虃x Lu>Y.$(&+dMߡ3)c;=%{[9^ 5dB1F|Ji+z`P77ΘᆛZ^xo_z\K5S#޽X[Ms¸M2 y&o !{RmPL+j;N&YFǯ `2 gU {Et&d]`́RPHź>m^3+cX=.U7 M 5U۱ǚ^+b9^7Rä4Rx~F(ouc\@=e0 5Au(&cz4Za Qhii萢Eh[G>Z\?{1Q LsaPv(bb^=rO' UOdCvzl.RE&U1kK葋b:! <3̈́[WeatxNe4GC_ /aO [L3NbULTji,h숥tǿg6۸\xҵ'-o@Ƚ°g"XF5ac7 RnĹrtdPۑR1mkgqDv(8n6 tp  Ia(Fwdu3!H8ih]~UmF#<aFB(Ek7}~j2 ˤ-k0";jƽwM4 BD|NGq է 73F@@MSa(滦kUz0k71(̄b1<mg2ôPQ\GܹfIu(fB '-5y诿{S&0[Lp-(e]Ib:͂㭄uAkB1m0Qƛ_vu[O3szҕ_rFm"D#;nfXu&B =‚]Yb[07}g r\0lf<ރRmC- b;tC!{4 %4wMwo& | 0&PmUgh!Nت/j 2C*;oA#an'l#aڨPCdL- P(cur @:P2˚B1I,n%a*4$#,MԎzxGlM @Xg,o"Ĵ- Y ro30fn$-~Kb8Z3GU[3p8c1€f614,ई<.`_`gMX3ֆ\Llɐd6r;5b YRjܵoob_>cMگ>r`MXUma. 6{h0`mZLj? 'akRIT"ew5Dӵ ,I-4FlqpRbbd&XHn%Gj xT]= ]9ЪW`=[ Hn9{[6 R 2x㒸z0 "[;IЧ!PGWfBl!p,o8qka@ 15n[=@}W}Y0Lh%H-j(j3LB~Gq  ]<-_g4 p!YRLt 3a0o,)[Y @7óф֌mjbqcy C!X1 Ceu"J̃B]>@;XLaqpވcj/(4Lڗ-0(;-a R*N.jf͂<'x$ X@h#L]jAa a$T-z=PXc!3Tj %E2KqКh[!eC!.UMSc b6FA1E>%lGة"oHh9= [F66hcsRf:V\4Dk'6\z¶"U|m'o=X&c ";B0$L'ls/U[7eosln t GFsԩaLߎ@,i&Be[A3aD(hxV=1Nnu)[a4y6&mGoV5FŠ3愭0еfiD1 w͍4 N}0.zb`e0VΣD/y6{fa) p=ɿ-M Ȥ1mleyֆmkxci@A7n&tG]8oPV55Bw26 b;af~PSfeiLca2m$ֵܽĢ˓f{tq17zȺF(صiIP.`y;ٺ~39@HFZkQrQ:%&Hꙗ0X=pROzYpgny[ )HH)-f3#5 tI8CՈ<6;67nFVu|FBsP֌3=8̃\)Nc &4+i ]Paxq 仸~WzH\Sc>*pR0~cjO \TwIwѐƔh6 'eqRGa&,LUAd#8⟳Tak)X[Yr6C֧L&wrҤ[&=`u"_[KL'F[h 43[Wߙ)|%{gG>p ~Ma%(yda7p}Kf!Y±IC!$ 6:&D@Ƙl"{/o4 n(`b9YkFBߧ][Ֆmj6j$6B\d́ezsT}0w@tPPA1;yq0 PH7ui ,턌YӶ4 J XQ3X~[-e % 6HhH&q51K9ޘP -":T+cP L}% U6Bt?5V-oIےG@1 TBR@4 2fyvoMQ\X'"s;aB6ūwd_]~n硧ALq)Qz7V븢9d Zaı}?`yJ@hN?s6 ꮞXN 6 {#UroC!zByL27#E=x qTB`ԝ|t|7-=[JBo&~DPRՔ'\\  ʒqdEH0"ƒ)9iԺ2Ed9'_}]>#K-&kc^TH0)[>tsn~MrmƈfBC/}}& 0޼B&1#͂I28(7qeckmL9#&ka$Y =0AcOj#aڈ&B 9e[eM v=&k-1|&ce!X2F^Ij42C̈́ C-'nݧ0 HSJXƘxc:Y3gcVwXgUߧc,l"|jPwHȈFBN}qL wO"X[ %WsiFH_i$ AMR#aQFB(0L%sє[C`A3P]Al0Vר1XR[thXhV<4⍓VB S\HR%qR i&q8(zkR `,PqRT$}<ákD-FZ'ЂX*Lhc1,\h`@8)m=.0$r` M!X1Ҹ[^ s!]-ZID:%1Ցf(77Fl(c4"ð &B SC@FDl4J~L5I6PRu$P6L*#V5OqB1*&k ͼР,jz Re =C1Dx4h0Vw%Gcka)X3slCBX'muΚM41I=N$=YL Ŝp,'k%wyO!#:J8afˆ0 S Ӡ~ul&LX;M{‘pJ4m@1kk,(c8Nz̤_#=MGP.oL6Zo\FAH;>/|]כ/z@(aFB8ƙܢLʍqJ(( h#!9)jn&4#}Np;9.Z4Nj6TfB,5plwL۟?Vkލ6 Zb4&).Fakн!=Z"Ews uZNm:>V7J(H?#=a4a {yRa"T=LoQ0d>Z'z梌*Ol%ݽ.yLmbF*MG3^ -x7LRbzE3ANwpR ԦFBeSK^j_'My4 U'b (My߿6>a-=wL68i\ʚ0 ~MwfX&Cǘ0Θ&jGdPfyPwp di)[L)H?ZQ~C!Vkc G<н΄a%n#dtWYbdcy=u{`ld\%f%ŀda(Lc!ma"}tfBIL5Lc&mԓKӷՓӶ>9,8Jz1ݫ(+%4"CC8'xzb-aSᤈ36S0 I4~O`$@vT7P%z\Fq3ҏ5kP5^|ttb;S\s8^oPXMz[OO6K?} ]).d3X,0rZ5\2EFAݥ`n;[YHc Vg<,t4|9j=hg`#4 N5oNj.ʴKK ^K7Vm { Us3Lj;ꑙl4̅FԣG]3bsLBHm@ %i-џM}%Rn&$?أpD0Sc3a C,X}ZǑ".;S[HǦBUsi.qIGHuIVPF=C nZ'ELGDwwD.@_r֍}l]y Yt]TB4afc 7cbc0f[2%m %2LgI[ 8+%.S`*Tm!XCATBb <>,YI%A̱f6GŖHqA:[6U?81dz`Dqn'Z&Š{cca44&3e;`#̒CVRN:Eaehh:|;ހb׻,%+Gk[i:'ܑ_Mw 't8Fq6L95 8 ~͊6&,3 騷:1d2b#aU 6b ]j/340hV1#̓a>O!XgDvi#avxVYMJ~L̓GS>}}(7.&y,# f i,Z@LRHag0B7Lhf!C=+":DmI0ܽ2Ŧ_{۬u2u?%&*!X([$$)fS޻ƲfMk(իwyڧƾG1zDwj)i@Hz a ĩ:ը%A̱Fi֙⭃Àuj#a]4 v NƭVk^mzǸ{ 6uWb1y)S[O <"-ݛGNsd(VB1%Tb: 40v0SpLsEFkqB K1\-&aklTʈcRn$0U5Ma ̈́9OCYKa u 2jQɉ-Ht1dZK{zh= ߷=a6i mr:##㍹yP Sew߰fO[ο@ XƻULXQdsyT͈"pl\ $m2fBC1xE1q rl%,% P|r3@Z00 Nd-l=AS03P#,3s=7Z ,v\2 $0HmnKD@-tum`*sS0,DaB 5iSh;qv0]X.n1=Z}A/ g,BLZ6SY@YӶb3 K QD{$+ẍ́%n'I`XB3h`(Oٖ"C,>!){L eWKM<믿󴷼Y]dhW}^:c#apQ$TJNjJs Z[v+en:K/Aټ1'+ h5`NiЧL/ (L}Q48࣌:i&*~g:Q&B爕vq:hcIL EԽ09Pv4# N #jD7⡮Rg@GNTgm`Њ`:G -|ۮ>D}PLnHcQNb ;xc]S6rӠ{̄#CYiIsl-ٓGKbV$11u߇gYo>9A-3R~sOꋇ*e:'F\{:ڸuR鼷` Ƃdhf@(-y+g\0{|n>˛m",M=I+>{3aĬ4oDŽfca,,$3 I[!p SE@a`1 bٗpR1%<OJ{]޹_>!-왤sW;^ޛ4wJZM~WYWQb?XGI +B[( t5T^tAel) #-V%1Mh ;W&.ܸrƅ.1_nNNy 79;Yr}lMk_;ӻO?g?}q£xdWEH{jaʙIGV'd=:ʢj<}=L̟|ɑP+vO,їW]ʹת$=ݪK3y= [?L}yz>:>;'{UR=SJ}fz|%[I3wO^8_'|zognnԍֆ/<7Y@pR3RXd|u̯m{oXxo8˄a&*uAr*˃d%;cH=? Zո)y.Z1K-dR[G.:Ge.PnFHmMql`_ūۡ/ak?n;_:M>Z0'YRm0 2!+0 ekXF%/Kېrevò |@20K^2#{kPL>f|Uԩ`Ȭ|i$O}S5t^2|׽L=ۏPF[W[{Tʻ~\Rbf"3]wO+Oʃ2S\r~VOda꫖['fY5=RsrsM[_C==P̎cr2׷vDW.){vu}HkwSc!2jů:^腭xreC,ZߪD6WumTd'9s/0/ "[SY(V^ղNw|I9=s / r!>^zJh&r*P}fvd9*ौ18с׶AX,Աj|y#K٩aȗ ~ 8wɐbRx*ȁe@/ *c 9}jm0W%o0G@4}pm*?o|Ff7F/6.ok.Tt(U6v wm1^'3/AXgeBa%+\4D˄, v-  P3 Icܔ\k"S炠(B!><-v&j:ܔZ޸([f胇Kk. /|pѪH2^f<Բf %3+ 5bJSFរȊmL,5O37Jϥ;u,>̖5sT}pњS-QfE×\YifFb!=qЙ ZdCsS.4@˥dqxh/ ^fϡBhg:xh1.j\>G>(2!>Rl~EԘzBMIfw6txx;i7n&_WdubW^eӖre{M[ ! `<4⬱4KT<ᘿ[s $|eۊB ”ӓ(3?aLN`r^"Nm|yP=U^"O@3<=P rTb!@l,G]̗·傡X(L pf}a0DzGաX)<}p L- K],0yu2#>`݃s?CHH *₢Ӫ^^zAl.'眜BMEqR Po[@n:t;JJzN |g?gy^ϡo QC]rxF9@*Ҁ QLpLqz@F:ÀPeB ؠ E8tyPp Eoč(:a oBl*a~ ƈD޲ #'Tl: ˮbyPP,g=FhbgL,eic\yfh˨ɣxʺ  ڰEdׁ ڲc"!&i<\o1Txd oySϗ8+[`ɛ޿gTVm;3Wsʛ/x-^J4/xEB4srql+Dd #Ahbٚ2aA3RQ[f[h OuY(rk7zւ uIQrR/_zFekDV0Q1D(.Zy='F[flNZoAs~"z3N NF,E T9 3EB NAx}XhD 28dM 6J.vABO0:pmz%ɉ-[A֒,桲=ւ55Z^.9'Eݳ[K*(1'W՗űΆ ykKEڬtQ=0LbIh3k6qR_#d..Hᣓk 9Q%1r%B`B3=T(F:rj'o5PirtZFXFQ޵lM (-`W/\\"vo=A¡ˮ}U\dOEB0F/@卷<1 w_[0 (c3e8J3yy6$mA߄+q6Pu"eBjk0-;M6m/\'`d(Yl"gLqbXÄ7W , XV#8+I ÅؠEȑ  *m `+fͶn%ިͼ ÃC L^1jc waxPM+{mvmDǴY;ި%` bŢ Z=4Q3(`{ !Uoeɬd}1 1auk uL`FσԷ-X!PKÂ0vo~P6q4HXʡ,̓gm@/vLfo3.AX\$ "O8F$ZvVj6AAj T (oFZm=[o__3Uow͹5fPsd_g͞ӿq课0rkZ~%bcqQ#{j0s/ZfAj1SjI|fZ<[af{:틩܂3 lIoBMV^F%ppC#-P\""z( NQ%~pP)8i f5IG0S-^rz,/ .:&u ޒL7X)o 1(' zAgC:(5LppAQWNIl}KKHC!3Q#oJ"5TƲ3&FnKcz1DS˜6N}D*fgB5x(1/6/mS f::nayQro ͯY.%:zYCEK!u ꝭ^,Y/Q[CI{Zv]̳r ZTױd7Hs|~qD˃HC=8:V.ߞ  gK;2cco߼Mu(-ȉ(x~ {=o#O[mϹ Ũd,-l f O!X4-ZTo=7o58 S pix B̖Ǽ &MQ[4A3C2amaK&7_[eKM.8fK̗ lHFu}mFeπ H~ uXO<>ALop /-3P^?f=2;%/|۷s[&\vj< Nb-bu%j[eHN-EB[~-1TM>2#vޢ޻lg7`[g9Ej`PtK551iʸ\ͻ."ISEu0Pzۮ5^ `I,H-e%F%kr`H1<844Сhl@&Dwnya]\}Xz^A(5~(A9T#' a졪'+pp2ҍ%`i=QHN.9,H;F 6(mgAAݯB퍕Aɓ"]#L"EOB=b xrshMO<HKb ֡pSh V-f\$o/ =r.w0O8h^֏a0QާCU8)ܳ;}rE(W. !:y? \~X5~uU C$׾@Pa 16l|s;d@ g4x,;y0c2zquu-[cp-Vlʞùآ{aaџ پXWcHhP^ aa8N0V=(-@3 :,C1(8ݺ-["=nm̢YϡXެuNvHvD5Lp,rX !oڬ-@!} &"~M Q.w`ĕ15y%b10Hރk\*ƭNJ(jK@pL,jv>\8۬B.24ZȽQKd۠k}PCc=LX9::*GAB@XH} eF۵b)[yx,:Rڴ6ko P "0LeKZŖoT omឯa%z`,޴yKNq%@# !q\"X9Ä)A7 "RO퍓2 nm<|PzATu!jiTݗ {ᤰP Lɾ8yҧ򝹨ǻ,KF/߿BTCT]}D S3 Q CKIy|opO 6#%R!Bk 95h6^#gVʻ('lԑj-]Gbu yv/ a$S\Y%-_!d&J E%sE74+zR"&di<2˃QH5,8k=qQ 5AAɓ@a0SqT7_Ѭ%{㡅KC j0(=EEOÃ%'3]4v>5&5 #5~'#\??XiNr]%L.*}E[$+Yѓ?l <=o*ke!Y={>v=/7ZlԖb%r˖ppfavmDC ǖ _ 6(#*ʤe{c`W2r|C=26AiUK[A2﹅k_$ZXw@yH=Yae+k XFJ5$CyMH!Al_l`Fϐ7F m԰̖ƶ54P8߲E_j0}<9@0jzC&۴/їqnB@1"}bd@/!-[0 ! ake Ƥ !91-;"Җooi! %,[ba.]"D{1_#Ztї¦7m+7 6,[ڨ1ڪ7b=_*aU̍[lK۷h~M\YvDޗ Qm#[1%3. CU񡕐A'ȓ/|Vi3WFY.qBJۤġ;^ {ۆsYo8Ϡ *iV  ҜF1=b2Q/YGܤ\=g9DXQO.Sfj&UdfĒqfY( (<~EҒb* ?[߽? @/mov0,b/HŒ,d0z{F4hhq F ƨZ ڒ ͷly3"o!3G"LLW mѽ`Xo]KЌb6:W ٲ%P9Th8W}pDCbc˖#[l0=nFa\%,ʸziQ9K RtpFOÄc27FfesXۺ7cSP $m1@w\2x dEe e0A&ԗ]J0VčML =`Hpy+duy0joX,,u1z6 ͇ ABޢb &9`7os۶b\"&ιVAЇK+[@us1ϒIk'`pRXQxpnL;^2YL6ڃ&{y EXƕm -vmvmm6kr1Qr쌇&+|H;qJR >*6ʥ"9h+-chWh]= {ck\ܲ&<$V C !bkctra^f\N-JԱtj> jLӵz^.izG"'߉-hwN,tNC`,R57CX--=@V;P`QG8訉Z`+`\Շҟ-ZNJN 8FB7BM2Q1Bj4,HtPaM`Crki.h~.TSr\6גĹ~:6,qѮsbP .-D-WGaalǖzA %KDxŐᜓV}lo- O^q믭g6ltfu@Y\'|ѧ3.Î_OAYw Rcc[us90ZT},;ò^LF0 FMۮ=Thkx  Ր|m֘~l mnFBz- ܼ@!mެ/۵Qmq .0TH,!mB 484&x _}w9`3/WkP 3m -c gֲ6pX&AR46#EȒu$7aA" {|df:skDm[ /JψD1<8_mLHr᤮ѯ˃@<8hԇuʉHRbsRg|ԃ0R|Gr5ܳjsG"ҵG?,MJY9<84z7U. QKflM'ewϙtp~ƥQ?=PxWVԛxhS,9j *Mަ9+E|Âȗ eij>Z eqMobrlJYxh_%T5ThFZ"vV_ԨgQ#_X&{j^,X7zx`aqMQS"AZF?jo0P";T!ZF maK'l4vGDzjwAB1Gǟ_>vVj u1C-;4n={_dc+9?xӞx_x݈0P,6jc w QxKkc"7b%ºE ʉS@8{Kci`nNl;x(f{c2`U€e ,q6@2] іQc{$ɪ#m8lQެhcdAV!SkM[&8k0& a[||1luېA€dB8DnQ L!Bb^,|%B/Vu"FF=4<UeBEo&,@U,ْqA| #mN.SڸsuGZuB/Za7m[1iixH5KS^ qb1D@Ffeq̷"l:F_`GBrmؒeŕܲ}$ [ ,C/ 5r"=k"Dy+8[o˪=j>p޽ęF0!C,YJW/9ewб7|ہINB ̳P^"!l:mܱ(-(sѬ&m; ݳc uƖY3<4 e{ /BGNd,c{R"_Z&oI7%ʱ%zl]^ 9AR/Y߬~N+ S$o6v^}ѹ1J)'Hvy0"4_Fݧd0 'E\ S jpQ6JE.){c$ \tns\,jrɃPtDpшpS"aIBo vDH-Lz.-4 8ZFAcj}+1 N}AG KFH%O ama\9ED.~냶5F|X琘)DN-(xh.+| '-Z#1Tq[oj`r)eRoHQ_#L6** D+IuLB!-Rx(Zle‡\}y^y+b .V0շzZ;~3o/I ᦥ^&a0On,vh #9YC50h~:jG CK(zmYAA, AAPpl!k!|NZߥuZxG8F$qR n,k [vp JgM(@Θ<(5%2Dص%މq0k=@H[ZF⥽p]ࣝ{>b|4ẑ?ɓȣ.Y9\44L({c9ᣭer|ԑaBژ\6urӴ:N6ZrAB"C>!;XpP'Vz vZ'E^rS .VdzGFڼ@V-1RYG/VlNZlf<4hr5L4]\zZWyV^-⦣ -8'|4iå^.nuoyU}'fZyupiZÃZְ/;yڂHԃCܴѡ+=Y uoڽĹ=tþÃd{^ _o;;~pO03ooBB)iKaȁfki2ለˆ%ۺq+([Ԇd tpUvBroʺc[yf-=7Yd fdiB!ܦ#jm#!cQa P,z(@!Qz`ŀR' : z 70d6lQnV'6aew`)@Y0caq,+ cN-ZDo2Hh !:X9㛼V (fdmLk D?c6=D?b5;ͨ,;;cu+8 џ3o44źcj_޵#x [e1بAٖ-K["  (Fi;dh6mZz\ $/V- xK%y>1 7Vm0#UM۔ru8VuGCf@2oXFGU! /|sdcO?W ^u Mް{x U,.Zg`qp`w-aZ8;~z0?#3_·|GO.z!AhbE^,d0M(X(ÄȜ\}]tprPXePP T7Fj+cR[-xi0ш\ z:=|{ipRv_W陟AY{Kn>̓ȃ^^^NJ.[桼E\֓AB/[G? ؋ 6Z97 IGΘ#`6|׽.Nʭ9e.K4ژRׯHFM`~D1Rb'0%> mgl4l=DZ :eG艓u/ZXCaQ'BGU 5M)[Vs 'y`0j3QGƘHbW -QK]\&kBjqR ry0K{`0[jsp0x,{f`ũs˜*g%k(=X{)XbrnI٬> qӗN8Fn6.,tfo,T [QXj ٶ1vNM;7;lZ.}8yǵEChD޵h!TlTTKȜԋpShpS냖hꑋt0+ [czRr(pr5<4.<%Nh0ҊhFRF|m眕hmO !QҢQѥkiZ'R)/U a"!9Z&Lݜ@aE_# nՑX&oIBirp"1̔7fJ |(R uqpɣ?/{{V_o^baC:jQs\$e{G]} >)7lod#`@lPvHV@6ڈ7q[}P(y[LT9K~Kװѥ#8M7& C,R+ ̔wꐮxg8xcpj%i^pPұ*!}Ƣ5yQx(`H-kPҙr"Uof VNqp0{vn!qQʽE陑|t(ZjgÃk/PSK f5%phƘ[ήɛ7(X&tmPLa´7vW;9h #E0ս IuѕOѓ__r}tgu'_¥O S/,ՖmVi ǰ4d}}-أ`7/zs/ %6k=oaeb#gȐ@hD7nmCݳ"a@0zĖ7kplH u_Ɗxv5ҦvH:t,#bفc\(17ǪABCא`ȗc䍚 |Patd48Cihp*_"Jakm@ .^u7jYuP)kcjcHm1MoVBz/r4]%ۮ#l;73*q1mʦ(6"=yʼn1=P xkC3bӞUPƝ ʘ 4H]$OϠlyAAĖR  ɑcʥ]H&0F #S]ke1޶EԺ@ڦ#AY_!Ԩ dx0@KO::/ !5*بmZ F5 tm;`۵i[\9zvm&$q ңN e$pM:%vr 7fzemEvoaq o~nG앙w|]ow<^jfA 2@HяAH8YFQ"vsÅ TF"=5Θ[‚uEjo}P*z:(upY" j:[$-^;&Q CK[QX?V!0QXi\ k)YYe[㽰RxhT-+aAGexP{Pj-]{p0kIovngp79`hCb u.b>E"K-fR/ZҘɽh]OIbqʷBwc`(usOkzFAAYb8ᣪBs~C.#GNҜ cz&\FX'2H([R ay&ܴc=љ$$O.ӁBbgK =-]Ea(͗aҌ:ָ$XhGOW5<XJIzbpГw/_>wO{\~fMQwG;|ҡ!Bb8 Yf"ΣoXaO~ 3?]-m. FNl F.;L xQ1Đڦ#AH xS`6ܢgHf0%Š ޸{\hܶ xub O.ظEe98ZuBrmR@aDOag쫄 6_AAªSm;Jc vma ͱP Umac +*=eڴ]N(- l ך1@o9DWâx· yӖ,m[òFZd% ȁcĴ W-X۶`ެEDu䛬!۶dMmq|M vTK{lo (#6j$0Zdױ:aw ƸDHaYm;,Xs a+n$D&C`C"B;dq, 6paTY[AOiev\pi)6譝%8)C6Xle+u%o#O; CG??-1HX1y ˩em-X#qP"F:eBUMnJMOΙCK.\+I YG&T+'A+VO^.&Ry^& J.,d='EOÃCJ؃=[©eTݢ' +U%.7pb@\Z"jq\! ӅB G|Tb !JvKQ3uD I=8Zf590ZFkjgݫ\ #ET+8#0Rxh,ZK+/qԋA cѺDGӡ @Hy_ i f dڎ4٪%"28oaȖ ]Dm,%ШBz:l;خ7sBrxv-L"b8ϰ`$BQz%B) ƀa'C`C7l]ǥ]1kmo\y@bɁbd]4DȐ!}Wzqmq-/":&N`-i,}mҷ-cg˶"r8F[]# R7 S$׆-7n=D$^ +6Q^& @Fow u FNlh!Bm*!Gƭn zŲf86ȼ94@^_DLHoEuA0 R3(,ӆ-QmKLFb]B4z@/zW ;@ ΐ` y  %$A`YôQZ[;w#jٺ<EHȢ5-H{ƟsWɛuuo-,ZsˤE(Y(RR5|=#ÃB/j1587y&n*yIr0J}iͭ}u09)y8XOEcњ<}J-F@iUb#g};wpMN-io m>JN,wmW,iPGҽ}qRrxiå%Y*j:\\,T *n CO稑8lj{rpa;@aiP-1G%n6|};v.^/ N:39hp08]%-[W=rzvrI{=-Z/R#)zPu\ $@8x0UO( ƘpP /u`Ҙ m ?Elњd'W$GZ ^!BGM.JAWN*R5uQ{pF#n`br$BHz:8cZq1 J >ECjS:Tuj}tsbQkPaϣvR 2Dx XvB A K2XzM+}wsbPDB7( xFDiQu/Grm"BiP8}G D%B8{ "'n7edP°.ma`Fe{,"WU|6H +ܾ]ު%@67`YDrGl~{e[=9 =K~ !`1•Gwghz0&HF '@1 vH@[M +Rk0amc8VoFz[f!2ol_lrjm_" vm  C[WArsty 4i6miqg+r0džaɥ0 ܺC mo} ,soyv۷gDPY~LÂգBrGe}\1XԶ?.0F>D:x#[z `UB  U0߿+Yo=飇qsC2Wv<2 -qbIϱ`X.̯yy KO[FbB8dҌ[`.j\GXӶJ\==Ƙ=,8eʉ0ѨK%2`kw(jf -UCHlj3|KSKZ'Ejj[q.ZE3r é.F3z[ 4zSTdWKDHtzw~ϩ@ݽV( \uЋwɰވ$-c6 فma#_+oþ!m<\c;cr#_BX2,ӆ-=9aB /U+us]=2"QyrVpm8"%BuOL9LHZܾ’6mmò Ћ^o%`{ 5@ع"Â]ędP u`퍩VN,hƖEG  #mۦ1,2"`,Rll;cDz%emLDQkf`aB>:;cZ$_'Ԇ-59b %}Du20"؀|^GDJHM>l;ذ ̀]aݑz#,H E MK!u)/RG_-tC1pjYwF+3PF/Y˗ K#bs xOԀ0mن 8¿cC}3@bA¸2HB|^I5="jmzB~`3oO@fzdˆn^Uyti9:H eٚ%bCpQ8h-Yse7~xo/y[-N +ؼz@a\ FA~H\$c-T 䫃JmNJKժ' uuP..Ҕҧ/ӼKcR,̓ވu/甛2H(NZ}xh⠙'%O6E3PA=DHf.˄JIrq޶HԜQ+gkP YM\Qrj` 0Y=d3}0G=TZbQu,W7+7DCeo7aTlC\[椾<9ߜTl4'\'\tmiɝnZ^pQ]),:cDt1rѭ.-5Lr`=;wDiw %}&J4$L4sR=ʷGt 4,qlaxUQkf;c/9Y([࠼Z'{зŠҁG>%8h}|}{^rRWGc"ںټa1XoXs ч~m|Moa߫~+ Ũ7 ҧlö8zxEGuCKuEr ҘB21u+y=LHG׀(þcEB`̀  %9 H[/ mx !9% ҘȐalڲ#4k8[!z@,"92 KqM aڰy2 2J%9o{cf,Z˵5u>Ġùh{96KK(q0,UllksQ^/K.WK}0krEB1S_%q3#%z:k8(`B w bfʰ *&JiPzD_yIWmeL|~}r̼bI,R} 4.K6yCD,4"~Q]$RC\VÃZ9VµI$oClSX..Z-7jxhXNlǥm0Q =P N[BDsŜX1r`MKa-Oq Dr]&Vl8h F觝sÂ0DJN |T8 ӡ#XasQtekBqpА{`9FUӫ6r 쪡+ P _3=.G^ݓ4Xvhя{#7d#yI] 1sxƘ[D,+0ݤK;לyo;.""+cr6lu@0|vX9 <8[瀡-lrb+@deL 5 hk'5$a>,;AmVæC۶%)3 JU[=b}`LCe[5,/S$2=_ߑaP[p6ǽaP8#mDr ) ʾ#e|FBrjoޖ ȼi!fD -  wo΀d zKY ^XsJJAƛmZ i[9u\$Gq1r6lmkcW aB xpY |ޮla=$hmFh0& cYv)(\aۑ1BdXFZW _bBr6k=9,Biiy%,+Kh(-P fc('% p!Ԯ z1J uDcg9@ءg}S 8e׾"tarݣyꋱ+ŭ oaB T֧KGuԳts麯2LH_K=LCJ6\LuuG梽\߄Kղ9OC(zܚ/]?Y⛸HX. DG>ƻ ,8(y K4Qgɫ!o%z$; nʻ6F;Ca%Q YR arZpo= {, ESIK4ujJqPZ=sS-YKOJB m5E##\t ^:W !9zn:UyG2?b=x1)WdW҆΀ZՆɦ-m: 8va[wлȸDxp\<:9x+8@s &-=64T I]Zv`cЈt #e uЋbs]\>%kؕ77\`BtF#fmvoA,^ʹeAZlg@j[ UưSا ВUZk\OH᧲5"a.eXSKEj  mł5uZ~=@H^l5jjT(.زa!h^DzGb5<;eyhMdK7-^k<,ecL?ԃ_jF K-j/ZG 'DKDSwk [0QT5i\Zdqͻ^q~Y' Pl@*ڶaŴ5FE& =@M`!ofPXBj8 [d^ ٦.J48dd|+XV;,#UBshf0vT˺CvÞ@b]cq>DQ aK ҥBrS(aBziA}k[wPFܖV[v ޲<:FD|Ã7B$xF?!rB۶[ ƈ۶iׁژ`vUָD +gg Kٲ#=`sH!|O0Fm[c^^UYC04H^_&*pc\"T/}~bVUZUNm coF@ƀ7n+;Ļ ɮEBbɵQKQ$=@5.װz(Xm-1,7j A„b{ ĢӮ98H]"_,o[czҸA$@&ئQ34HjDjXf¶pMۉ\GMk@1ڴ(wZm=[gfzh z=TCCl!џSVOaS/*Fsˊ0aC#6ꍼ[Zrm!?xKH;`v8)`vrab9 !ޣu\^XWk4(jkɚ+n~邽qQ] 1D]7*>ӜP Gw&%pQzΰ7FR&TCR\&{0X9)C|jfjji[CJQh~,#BޚC.N S͙)KְfAx 3w^Θ94`ye`vnAY Ruq#55ŵ%zZ DBAC#X'71JdSem-[wK7MG8&Zjj_%$\]qa'CPBgT,Hkk+bsSn<:੡ 'qQ ˄ȋie\91៥UE椰Ъa..pV,[OUDqn?DIUO ~/c?<򕋮{߉+aB Y;; ƣq=i7ooZtc1۶w (6md',º"<<}k,GnŐ h+crj 6Q@LVKc4K5ҀaްVZC98CT#&0#fޠ%M¶i F U°3F1A†cVYchV!Yai,1PxkXu3<} f'K:m92I2pf}y5 Y\,QkVL@Fc "s7@(PЖ.UK?:<@eKwHB"޲7rQ+qoަe ܪ7[w5¶= =ȉlג&0m(A1mڪvm 0l=G0L,`&_ o8FF k8*" xRLl̀]~(޴iX&0x]i_{g,u$ ^ [f}~[P fz%skCܥ\ $3T'-FʢuѺDe btv>q7VDpRX).-ٯשC"$Z6DZ*.Xvآ37F R/ejrKPoaUi)6{cpkr54"/F0ҸL5oZF?qREGKǖA)5Q G1PhF CK-DX%7]-\oWę>h_&$GKәk/Xh]e^w'CFC+N[H՟ 0SyxH>.$&:4[/jM(Ä1 H/NX=(DqP-b!)tV7d[ITWx5-PܒN-Աd0DXofY(5=بl\\e߱9i+%lqRrk~F^wC!/U;`%/Y7C35-xh.]eBN]"\RrӼ>FK6gWvDb-|uCV>0~uv i%O|ٯ/w/{=cg۟}5\!ןz>U2av܎eG4yE.0@xٍ{}k*1 iXH>GMDg=N:z/z2"۵7 P {2]́A`-aR_Drc28^\ _97 *g@X7 GDCAB^bݏ\`Ä#j`XG ^e͈ èxt˶z aa}r:3[ lZwTn;c"OY Ш jY;mzߠYj  obϷpaS`kիX59CӪ Ԯ#6\sVHvDr:_q5++ѫhiЀv fV۵Hވ αheBuH0 XEG=,Feޢ-%c@X=mv,U޸-3.'%f1E`7Lqe{c1i%XF ]oq0hO $Zic\nY9ڥ.V<-9DXzQqʋrp{ۮ:^X(jFL4!z4?펃F|;`ITypQ]#4U}YW5BriIR+y{^ $WOԲ}--VSE[է=zpR 3-(ie\=rQ0QF.6ڋI= &GZKeLMhl >ysP>Q!uS!ᦰё7+m^ `i_L 7Zf*Vb%뒬~b=;u.c d0(TRN:aч !}S`WFCїÂ$}rjrT-CJa{\6'iAѧ|Ԍy.Yqjgы%: dx0.Q"޸m#Ieu`|C\X}(R"lTT-1FH\-f^V>_^ߟ ʡaZg|⣾ tC*,Io}n؎؝ݹ_Vq2-`b nDX5Ä#@sڰ]=˘۶ ^ S"a g06AY%,8-2}K(E`9@&,â8`68F +ylĈdRgFDai%jV Q+Q1HXb˃f#kyЕ aްzXAYC2m& <; apPL7[tMuyÂа{CڶM`0̛ d1ÃQ;l >9[/܃a Z44oR_Ti #oHaBxfmW/X4&ƣlQ#0]p}0kmZ[i˄џA1D@BjD3jA2 aİ@Ҫ@2z6^PzO7 lvyaָroUGF <,:%,B;&ы|K ,$ [%3}`_58%]|#NV'.\sѡ-ǖ!)-588EBZ,[jȸDxL6sySM4DE8Ek KrmQ&:}0.N.rj0!1C*R_ D7|0][*6/EpE&#cꋄD^[# #VMHT#@h`؁}O: ؃,KW]y+?''έlIWܺX_N Id4~Aخ| =пЩ}_sϫmdXPz>HC@Šڬm{űnĈ:ї]GJ`aۮeODޮza;Bhx֖˼a@!B$@2zLWs@; XƠ`ei<6&؛G~l Vʜ o18ÄE[Fxφ酀cD5.M: r֗'ŶmP Bu e(81*F/7k { FwM a2Deё*%@FϹp }{XCCeǞ MlQk΁’`@hy۶cHع];wm6N Q m@1-ށ_]5zzKEYv?8FL@MXcqLBr(&G@a3 9(8߮5$`5 m[j#jr 6b;!BK#g[+ 40̈l!=i\0̚\*<|<4Lf bBgGõeupy벛ƥ` GkeGkxp%kbbY-[#jxhIKDP-bA(, Ҙ➖%)-`ԃgPa[w<4 o9H0~6hњ2#{` ދ"x.Kupɱ!"aъfZ:2,Hl eoz;]YZ|L4{w#S }gGD/8),[!_$dpi:ڂpgq\8a>&EHҋkb8П\$̞y& c_'[y(zT]"҃Rq,^w-Ω51TH> 䨾FxW Z|CI֒5|K;cbrXjI^'@msީaEui,V"!5ZQ5Pkࣲ9-47kr->t:@(6gEz GKgBX xkA",\th-<4E_LT ײ35}VA]N ܴ(9jQ 9|Ãfapr0g$Z QciL'~QW߽{~eOˮ}%۷6l=c׼dU 1bö]˄8 [9~=WmdבmkL9HMþXe)03 [d@1D@,{&+G ! mf;&ښCqxt 9`Y2 ȸLaXe=j,> eaY1re!Hu^(CԊUd"ʚ[$kc@6lzFNa’9q~0{Vck6AJeBzHb]olbAO `-cŀèQn7\!qlaEv:@Qe86CU[=$Ơ6 m͡^tDn;y@0"}P90lb 5`,jʘV(y0Q۶P̛mcb ~mcŒa1rjuPa@2A蹶}1/}R$ ,fڼo1zl I|gXV^ $K΁`ں%gX0jbj5ea|dh"9̈%"*` >aY[ /O.VFH?bxP F:b4#ai#5guРyp^fC#F[#R+21`ᥰ`4h-?+}ZߨZn&J߃^֒uRahG+GmoKġXF(|]i_l\ 'V3 EQ 1JwV_6 ! vm!O;f([ҙzquA*%xhO`B#H6c0YaR=bPz94[ "jp\2#ek*9R=.JKf՟X#鄓.Z!5~.=Uw2MPaGYosoqJQHn-9<-D(9/}}Etazxpi"EMu,_H`(}4,NǛ[Yꛉ/-\SWNd:r_$dPtָ鉕ʵks98 ;&bfN$6GEMI=8k8.}og^^#ࠆ K u5 ._{`^a!]xܫv=¶u2l+( K0+Ն9I^<7lo  h[v`(_ \" 8vx<}߾+oof0aA[/L S94ŠqKЫj& K2!yB1 =zo1 " ",K+fKS*h;cQ@l`!۵lA.;x~aBhא"  140 C $oHֹ-'ÃKfmm:x-=\c19DbF[x ,i֗ ȽaKTB$ pV~tm ȵ@XӺCVk\! +"-pQB9}m dsuۢÐoT6l qGvƕVyAlg=0]%Ԇ-b|CMN-:Y@ (,cA0atM=,=PXʘ|]KxaXo=m-HFOÃ%z-gяBPlr\C|dٶ-yƃzCë[o0ҝ6Q)Ӽt*!<z8֥eG,\[dmP2Q4s/R oh E%kܓwj+zP +ҋ&JPDOݟ ʩjtڰ+_ $cVXbc,ckpɎv  x_w㧇n5B :[b$T44 cXq2!K 06>;cApo6̪7L `ؐ6+E.(FBYt`[Ь@3Mܶ c3]$<, \cAY/C Gak ѧZ :ʸ{_D_۶!ƞv%roP490,51 KDtHz> 06ԛJ "+UBy\zk0Fu:U} j0&yCy06 &ͮ$^C2oٖKim,`PaXnMl۵ ۳C5F&\ ,4zMt]q+0;iP:({Ӡ<ߖjI-R72868ĉv'Il$Be,TM|/S8L'Sq83U.y:O]g_$߮:UE:È/ XX![6m"s+`Q0z0uQ\L ^0[`nқ[۷n^uP[ly3,#^o5,Xi˶j]N螀y^۞Ω8;XK;o)waCA #}~\-:pp'/(n TF*.H+M5+-Iڥe?uSG ¸^j˄0ȹV3N:y]ZQ'wmN z 5^&:֌\tQ"MQD􉝫kb9XMauU//"H˄u0avqy"^Ua[vש yOkA"P( c۶{G6l}dD" a@2 VMQOVDܲҺCZxOmV\,:"ZXqio& #G4wA3չ]%Bc(&8r6 62٪B%G% z]\mq\u Xxxh=L,\YuX0R Ze1<@68#Kћ1D ,Ū'0&c2Ҳzmݱ   fp ddk üU뜚JM["*5BKX{ oVP̽InHF۵DGLH/N-["=(`H eg+fK+D "!&;"jA3d%@9J"okd  m,7emeo;c@1Ynђ +XMM-;¢oN5Ple1ЬswU~O fbcXk-[ !O~b\.'ۊޘ v6/85£g~W3o+58Xbɺ"&+zp|aGa߲4͠ tz5RCᠰOE^&1q=N-UL*!1x(9ulݢ Թ`e}N-}6,!޷/\G.(j3QzfJU(Wr({KpM-ri5PF5QRM-P`pPqRoh18H_|4[b/ָb|`sqPrn?ɑXiEiC7 Wrj" 6 ->1 e5eY >J:pl&JĺރR[nz$L7]"$6(6V!Yz8)˃ZJ=8xuW7 O* aj Rߺ8o^G~Wᾶo \w>zIOlö6] Q@Yw*!,nx6.6( kan]˯!=]PE c`F, Dr(-["P!$DfJ(-;VCԆddɡF^l׆%"f϶SK`Lo 8AXl ƪp,7i}ʊ>3^<ع?ܹU a_$qf˃0|t°4F]15BjrCbpQٱE\\TTÂb Im5`|4%IwhijPTAYW+j["J E\$V^qd{ZS%wR{ ư`D'vڃHg]aakl>aAV ]!̋:!L%kjy(,['\JN KK`X}qpfH18V_"7,[ǂ5wRUrX7)֋v~{pPyVB80Q  Q|eLC<ᥲ5&q > ABr)1?[\$aC-YOI᡾HH`a\%$`ናӂ55 59hQ'4Phzжj><Pn۷-͖I8,SND\\ /L@} V307U#],og2)by7]#ubs0HX"5Br@c ƈHQYۄ`ݳ.V 5BxmC2rm8VOڶ|탄NcWvQ12sKW3}q(\^J_2#F[/Zc}_ǥb1G,Z7mC+VMqkZ`!l]qwriٟyo~Mc׵pl)-`rOɥ"94r3R" J"{jzH  ԷmYaoy_\%%"z nB5\4*ITĽ~l-V+ĒlKD#2dq࢓.lu1yQHƣ`7-}|z ղ59ܓk`0R`0SD̳rc`$&JD ɣB@aXXH^.TV|tjڙWP᤼OaB(=bE]92u=ÃI C)= G9PHiR͎@, DX!BsM ^bityуwZ"dy/24H%ksR.oR.jᚡyO"/XG?hLx%Qrm!G₆Ka9 %1Q4"u,Uw<FfӷQNm6*NzC?iwipNzKuB_%pѯ+To HvCO{6 ׺⅟ۂ2u1lxsˈ_Ǟd{de۽Ba vAeB2,;?s/s}o윸qwÖc ˁ$d N-kCc$4$ *fU Jp,bR±BX=`0~ð2  ɁbM!ޗ[#zeԂ^]#z2#`oD g6"Xˀb1XH˃Kpm[A1zcAdCq Ӧz@0AB"92C͖m `ǰx9" bQ2bt˪#ku0 ƒcټͼǪ&W̋Pnڪ&_ KԷf-0o[=AWm{A#Y{pPeDvixpa!V[oƪ#c95 ̨}0XlڒkнUee+P&94LHmH"\m]<@Ci}}1r%a\v|=PV jZ@l9bV[lAHPoeakVQÄ =5=Ć޾7y=>8WQ(6*:1b jt8Х8uQq⢏͏^#s˅X!vpRĥϸ_ShV|t ;V aBަ!pk +I  %iឱz:o34uQ-yZH<H]KKSr`ro3dk hsK.W#ƽ%޴p=lT ;ؽ0FO6.\kE C/Ya7'%\v\/X3Lh`"G艁 vnCKmi Ma9QӣnZL&oRQX@j/&Jܮ-I0 fBvpҖr/aa'+0! Ck6jN!\weq[` 2'%/E'F/+D>HMN8(]W tzJɹłnHH>W wNn:^^2&Wڲڂ:%DrDxizǂ55Q.[F$L>Z0!o3$16u曘fDSFʥ%jP-U?W}՛xXʄa'K?ɠ`ƴ6 -Å|Q G~“7kވ=K7}/;6l=- J J/P ky !˄wPqT6ga{o~aaζ7Ä{dgeDzC,q:ĔuV9}bl"h-:= bJh+c;1ȵo`rÖzW2ghUONX"k:co^0F]QU dždGK j``6=A3z[l/#WRnJbC|`b<&zpaّÃM ٰ[["g뫃:ږkcr &-<@ M=`l=tp,;ԟ@]%DQl aQ"aD`X@ L1dX`iq0< BUAY=M )1w`w4H87]$spaml{cI@dDQ^%1Òh0 ~7Xߊu1}jQb1DhHuƴ@1ՀЀ0 9w7]"! ,޴QKڣwPrӖ\0 V޸eD]:8SK?Eqk!gJF~Zvp܁˗O]SNJm& %2TW gN g~mYC/5HGÄyHÂaq 'BcV>=tn1'%*"+KvmppR_#D6=;hZT-+y [ إvnnHǸR Q,U1ԑKaeLDyx0Qo,T -9 0Q>ro^(, ąrQxMB5Dh^ *:W]q)/a۵%8*5x팛m'csIycPc'%#8\Zf?G7D,1X F:St+GemLlˆff V=1S8(|Z5yN+򘫃&*n±E4t;Qp=THee,ɵCbVKHTo)(HKҫ< `FJmN 57%W_l4[T]uQ^&D NM\chf*>j">Z}`zO㕝1Tj +DacW4LYۭeނ$zڢ7-W#u뀋~\  5P^-+ >;Ã%6n?[ .y CuoOzRm>n7lk V֊]ai̶mŹF+i;۷lް-"ʸbƸF8Ww a ң (jQ3,8@Kڶ%[-Z[tko 2XH@8޺1@,EBQ}01=-W _Ժ>H۴ _1ڠ޶om`-C7f`FEB17D1=,^cAC S=bP b-ܪ{OO 'ʾXC5,K0#z !1::_˗[: So۲"'YA$IplupL y5Ќ6k[d!27ln@f&@s_ L ^b۶i&jX2,]P Zj+ X92# K {ʁ_aAWFd޺yVЬaAz74gm AՈ7A1 YW;!Ӱ{/f=Q"j$cd{#e% :&c8v`q;=="4uě][dm,mqp9/.*x߰EKoEk2@XjRs/4.UyɚRlsG/y[~7k%6&gkdxߒZN 4rb.ZGu=DCV_]4Fp{p7ZT+G普-([3h"R9hxP^i) WWȁ`7BK^\#D\$<#kzr¡Ozgucڰ}`1zԀذbpzi߁eG S^p/(v 9uɰC ]Gyo~Pl򦋄=a =1Yņ-Y(zP,6iemLM4 #eq0iq &ek[쎑``0 %˄@ \uu5#uBC1[[$oM0Fo+٪<EkH2!3s]"T=h,X Qtmi,D+GcH0{8Bqg個>N~58xy {"_2o nUuoHh}`׃eq~Q:-v`ٕS`:Ǯ/aF Y2,4k3넽aۛO7lbVӭ *U p{2bpP%ހ[rw8ע^XuTx9}'%1$0MڹPѠ ~aBΧ]J0fP M-@6 &hf(ֽ$z6jycaQ(5BZlZ2I2UBNaoܚZ"@@Hěy\Q_Ã4dVǶ`-+ui0l:-zgӶs/2&'288|@HN  dDDH^\$hFȉ1H[H޼]A2H 堠/*OFÃ\3\G_plBިח eP\ $0F| ypHh`[ڶ+cȀg rP,="0 iö80X\o,-<1HAB +!۶bvsߠ (FNP,-^昨 \1}\cQ"@#Gao6}ofk#ެ]Ge%©(>w3@x_ͅqeI~j}"7uGrl kctr6\Zn;uqao)u e ĩcб5V( [ K74-kK;gٺ v~i3ҫnF3LH fJlu spH׺LH&DM/hĐ5KZ#%nc>fڌ#&y.F,]kz.;u43],[S jtRw'v;M_!$`L^}gƐ0qfIu/*(A-hG =XJ<&*VJD".}zR% -yE3Q\cpRizDch7j &*ҋ:+b]HP)ZGm5`tR# N I#&\{PNk]%D/_C]\| v*N*%K &J/&ep=G x}=ߴ!5b+ %@@2mċ>/S^̻tPXـ\u>7}W˾a{w4{sQCagخ[c.V®ٶ-u^zt3ڰ=R 켓,(v[1 ǶR1`Yd7$#dcZ4PZef#C6m[˾bHFڲ6Qk3_# ,͛ <8hc84FpQca+cU;GKJыMې̀L15!9S۲H% #%# U価dsP Ƣ [_'U.([ze[@\aԈAd3x岫5x닟sǽt"L>ڱ^&6/}Ա%]{u13ui9(|X*|i0RZ*űoXux'/Qω +%g-W/sR/ZDpd0SQ%#5'渥Br &E榺DX}X(KÆfQaBo8HDGCnJRᶥӋ:$.%j${c-Vsq>Ej"0Qli^ePBjY''\rp\ƈz(9h%FFcq\sQ4C~g7<4.;KD4.-\࢙K=LXyamyZ"޶넺B}z#-[Jbaa BaEªlM/Y.ANH$gP>Zz@}$VJaUDl=@8e:y@,\֩caL 6  =_&\sQ_&7ENxLcZ-ig 6J*c"ڂdi/yڽ%8Bfhpx*=T⦎(4L(TN Z ͂b᚜Tl􀋞;o/2Ãd* y0;jwe\lt>~1>R핯;PK}P`i-׋IϮ缣YCc7(k{=h5c * ۮh1H삫^:ǰ2`E{T$.M1r@ cmz5a-X(eoJ&`RMl `&Lc @ 0KmB1bt(,`lkeAzi!Baʷ10)Eq˶ QKX&Kvu-(aA zY ~1`8uIVW> ̖h|g06D֣%{ʉ1 `+-ހcq6=[-fŦ-@,MK(衪x=@5{ustM^ozx`@$Q#6iD (F_Pl`syP`B.J7jF+KU51 aD]"lA9m 9xu.BH<" ɨaK-ujE?#9+lԎ}G+@X%@˃ [W :4M[]'\1zР̚ [00!5esL/٩pv;}ybX˃"jQ sMm!jb;?Jq' m\,.-E[h֪ǵFZl5ep+mrsd]{dq""vdh\"qqgO CöXIG`)W &oRG]P˂NnjZƼǂ5!©m]vѓ%8^/^,saNqbak:썥tV Joao^&> 4Hߵ<@!z4#3D@c:)Ltl İ`+rxi83@a`8LÄ--zPrVjZgdxP|7DUmkcXDx(pkCa-XYJR!Ž+EkR75,0TrɹE.-&"T.`kE 3\\uGz3s ♼A(obP^&oCh%k$V %@%\ELtjpO6jb* %X;txezVA(8&Hb}c-a볝_vkoS {ʂ2*^oz}׼AB@Y[^$dfD,dc ;?3@, 7 5\h8=gM| w꒷nזooQ#Y~C>o[[zhA}#Ql^e-j rqۡm۵F 3 ㍈Ys[@0";2Z[Z24k5v2v!A.zhPР@Y\nXFoD/X Zӓ1LdсUk Fb@F` acLtc,cpځ1?+MZHkњ \4 }+g~ ˞{N_|R1⢭6#Y.1L`aO]"2EgR^zUܓ=@-{LŠD+s3L؜_X<XiP_+7Ő;G54Yb隸($Z5o(hGx."zuܤب%G0VHX#oUN < ٺU.NžeH60 Q+jplfqpzˊ7A9sCaI|kyӖٛˆ4VF@1"^%\orQ`L aQx ̀\#Ys[lڒM @FZ"}`@ڪ!EBErmے -,;E]6[4P+m;4L'  m۰%nzzdkߵ @-|Zԥx$A2oܢe18Ar`X-KQ0jdP6Xtu/-; ˈˆ(֠,6n0%4Cuwb?Â1HMNj*fJ5y^{N~g>ڬc$,.\!Bx(l\Zc.cj/+㵙{.}ݻ =$@%ªU@y 8L7l A# AXwe۱ ڼX۶=v5z)2:$ku 0Fy0`Y@cDY#3bl"$`6+F|K_148V]ǰ ߦq~ѳ曒l:l;z70(x4.f8X1Emɨ= ߨG30u-c eBmF@XhyuEfT6&uGmA@lemqj]T- ED b롋ޤ^Zw~'@&6@3Q[>5,- bR- ,SDeqp_VDKҸjkQ#,#G@1R􉛶jf퀱18HOPw[xLN$i#[_\ϔzZԨ1H:jZ˅J/\r1V1Nj~hf~/)6nԌ6c =DXڽ>Hk7uk'R{.:$61Ұ6^ĵe'%2pGyPN.R{K2Q_$MVܔ%X%ᣪ[VrR-RzeX5Btޢ/Fʵŵ}R1R/WEemLrE@8<5(7zF[0Ԗf;c"zFrs{0PbPPqRd>9_KaA"bʢƈ%qTI`' #x7ѕf~Γ (HuUYd[QP&eסּR >v7n,=`228x [50}/, <5{ڃd - @ UB,,C ʸHxW|4bybK5p!V8yŹF9F@6oW]yh} [ҫ@;* !=5a@jÄa[̶-[Dc0jp,quEFodoL<\+ˁ:U FN8FBC1o,ӖW[֑9ʍ{7fo9LXت%Dh@7[1A2c\vcѣ# TA;rQ3@H$8¼JaBz<(*!V-qiZ"faݡB4bԊM[ 3H8~~ 5BYocփdڸ5 (aAܵ Xɦ#dH65Ð.fvVm#d1|:Pٜ%8۷.liq4`LCi۱޴uǼt 6DŖM귀b(dVİH-o"jN4&ѳ]y`2y '@oۯNqo)2zbuȃvE? [ouG{o\7 8cK ~ h-[᤽h/6#!¯UI0!IcѺފ6 u ^זKgrͩuE5TȲuۚJFX &Zb>+vnz߉Q8y(&,. /E;dk1 ޹9)wg=4q\ڋQ8(JNJlZC}|1<(>=j(}(tr/\KH-:pi'EԋE댷҃^O ?^rPjDԾJFNA8)Ty.-8/ ˷; 2+@aa=D?fx`bHL$ڢ@7ciBFOS4rjIS UK0ิ9ÄX'+cb,Ul4X ,Ax(=kQNJE-_*1=-(oHlT\?M:8C+ J!⢳ cܔ^҉\ڽ`HC8,\\t ߐDžB hMs=L \PbvA t҇}8r)\VOơ11=K0'+=;{ׯ*O V~sGT}QCdcyu t0t-y_ 4: e)h+re۶Նo?zYÄO@2,`˶krq{ϣ> N_kK bi@%@Ã=0]@AYǶ aC#7. ܻok㊆eC@2Y#0 U JU}aS#ݛ@Lٰmxʾyv츲@ZKqPd ɔJZǡپQ:|YF@a*6o2(/-imbi1@uu°ظeZ }q;UGɉ}X+vXAeb ΤٝG@K( Fv΃K;NW! |]_Vg,8vpºH 2HxE1R/{tז ʛIqoa"u%bW:]Z^FȒéࣽt͂uǪ)Nz%{KM <0}F>1@Ƞ#x44|7?y3zx|h̔ްQzQg47+(}|b0Nޗ";c/Xwly82+59L4GC4G-ś-WÅPr҅F0%򛃉.쎃Ɛ5,ȷxC⥾Fu1͎vo6J~\Px.Z1yYi VWhP9%Z9.0V,ZEիW B\5T+\6K֝K|x(0(X="SbXP=/\w)Uߒű\[H=GQ R3`!Q%gpP-C/D1 4r'@a FZYuFrx'VU !ٛJz:'o䡴5࠼kbpP%rᣭ`8%B_._fmu\EBKD[7/)y㵵p.8eqԒ|5DK88i[ $~E V\4搠[JϔyPJA'UBҹB|'Af!5$.J yƒ5\}_% a :bZ u<u udu^1J! +˨h@,;vPG_v~; a2r@lDMNEBH5o3epoarV,!jCudk xm(kb+a=C2[x0$Vao|J{-6kpژ ͨ~FwV (y4 * */: ɬc%(Kx&(:P,rj ZX_V5JH1:=b/ Fl1@ؑ@01@L̢Cڨq6ms8Pr@dQl.!b ¶EoR-  >"t=p u dAF.PaQC[zb/x}0w> }R \Sλ>{9?_X1_z;q3ƭ=F^.>a鑽B[AZ`pR[*%\%Zkd2pΩF(kca]E$ziWu^yCw4(YgypÃ8a!HÄ⣰T R\=A FWSk|=|xf_ lNzʘqm0Xams|q,YKm_oϝ;߾ӡ=2ZZ{K &?M>J.f ceÅCFM^JJE1@B%[,Xg AK⋄pZF .Z1$1j"y2Ү*{ B KX~Z[ ;cYGJLt\FxpR 63C jZ9BqSQB aJEy'"+^;c 10[`aBqҊݧ.?&ԃAaEm{&16#@5hX6:9 ࢱ-6*yB"u|υBS# Rk.JAµKֻXariI5 cŢu9aa9QűlQsP"@X-y0PEAUX}hpuӎ[L]eYRN-0P&$G9XX u!BP^|bG ?%5eBbpbkeyI !KǕam}Ko~?/{95ק5w8Kw \7 ;\Y?/} 뎆dckH 6n0Vm۸DؐXbpha3ް=;c\$<6m+2DHL{㎱umc=Tx [~;gzKA[O,;Ä1XH[PP_ 5<4PHT}k 4~nNMMoH ",% X8Xq0*D@ߪZ\$:40e;mq́_P!oN5Բ6Dm[h ҶccA][S؃ ܛy(f{c^Hkcy0rj1ڦCoȮCW a+8Fl1DiJXB2fDM]G 1DhHFŶCV@vcr ҧVnoZty6r0 6@ܴEuDrK[āhagL@15 ʨaɜS Uc(P!14 8k3 &\s uGdd[9.z11(H 4 [c_!D3<.70i_2q`˄D V/"oUfe2j fÄ'3}JIY6rmёYx:׈ݟiz|S ^\bsm)6|Ţu > k pn-bɈ_.-G~.#m.aE;b,(|rq,uub=P篼C7oQSC陕'<pQ `!}# R@%r9 +ӭe5T諄%-[ȩ=PK;%&C@  N-.*V [z.#5<}$KyKb^j9P˄Oޘ7#'=W عh=ԃ냫}ujmy{;"]'CJkqDU\W%jޢ.i`P}q+.G7,^#X(})=/_{jbI E%]'l37={^^!:ppUGUlry-#ŵ ;x=4Ch@,Yp,&rѺ"|8iTm>lkK\lѹO_}w߱'Cw|g`E]"\YbV:C#qm"jhDpyAS?ºy`0Z1Dc0#g{Xh /I.[ࡼFO,%j` R?4j`)\[ȑ"xz^&$upb"oAMEGDA37/ff>$+[SxZ{,Tn-rl4D72Qu.Y;64Vdourٚ94H`)4H1s; F<тF==gD 2@48X`%F%Wd0(=vk1*x(Q8(#O%'ka;OZcӋaBX(tWqå VKԺ6X,eN-[ņe»?qO>G?Pz'UoH:{۷^em8vroۖV]#"aǂdaQC- S lP NɆjX7lKq[$̘Ä\#HFݫ_gտoT  ?u;w{߱#om)h`Զ4(@ KMlF 4Df_3doheo6@0hy0}3dێج|Ql9LhƢGP{lPՈl;/ ۀc !}ljYSOOl]GZ0eFH̜b0Xk[do Cܪɦo=^(hFAG628x J|=[mVnVbNV0譯#+%B]Z F iprsCVl2d3,:تi0rY؛h`!YEQ 1<(L9DI@L@PL#Cb! v$')"j2mrA0mNg58Fbk@^+"[utN7m7[wU58\vu(_˃;R#A #ᘆ ɑV@2;f7l4D~XV _r`w|ja ҵP)9} V 94wsє[~Ej_/dW.q0\[ja½!o|?֥G֒u%¾HXG"dARԅ7Gw4#*IQ!x[nfzס{G_Żɔwkp]F;Lw7zGʽE\ q]y/Nnz۬Ly[.9)0Oب(bp^}ҽu,_bx0Y\gek9jmKKr;"&}8Tᡊ9F.FOKSGO, 69`0PٛHnJ"!qEl(yɮ-ak\>(9LUN-%; QzoߏN|'ķ_xuoqSYc=mq`0XCS{PauƘ| EՃBݹM}zv3XENxk 5TT=+g刁CC&LQa`k<8$..ʱ  cQ`Q%uiy+#qIn.PEިQ.Ya~<ѣAW6:9tDD-{czZ^\ ^8hUVXG'88醡̓jx`8n-bhXhhZtd梳MAV 2DH 5L1HmKcb.b'1"™E K6:<BB1SD/h2P>.,KFoFv:,"c }8)S2H..Jl4넑 zpO"V"3")%r/ςm[uTa-)9{ b:GdX˭kӕEM^ #%+ݍIb4vy'ƪcv-o5o-]'$G$'ϫ-;du޼ >pۋ*}gA+_kB'^߽k˾1r_vaq9ek}gi7o~a\$ȞGf۶@upϲlٲeGcxc ^< 15v%]%˄}ploo0Vy#?@v.|l>=o ox]{ÃU?~kc18X1=Ā ~ A"m(4$Ӱ`s 0Cѷme,<y V~s6!e{8,mcvzgv}u=cZ-L[kp1(;=æON9Hh[6@ $"ЌZР^&, 3< F#e8Z/akt`w|  Ē55@SㅗKˮ3cOeB+Eas6%8ii_"]67i}m5m^J׼s/n}߂'RC+H"b:-kOEPBL&JԠ%l[OnDЊ;\Tl ;c }MYfXK=L%k(}jxP92'$=N/!viK^('ՕBd!..1;X(b疱88v͛Zxqv/A3S[?[K+DžAdW^^-] ٨yo…q,e/W]vxNl_'8TE@%+]F};uKHa]WaB ֲ3FهEJvji#щ1Rf`y0Z`pPtj8hԈ~:ᩰQ?w1Ar1Ԓpԥx zNJLNaVmŮ{b~Zj=D-Zv/6meaٮ#ZJ(8F_KΈmGyc6kK7i/E1۶1@VLyE6n;ڞ<`,K6X=j`i659lG/썹8H1([VJ0@S\ RUZ|qI,aա [zcZ=0]%>bEσ/^kC1]ࠠ(-;F jv$([ wz(ٞAg1 K@2dM]P s`:z 8bxЗ üiKa}u0 êFD (!$soD bAOX|Ð ˨K\# @<[úG1XʲcPRcG"W{-6om۽ZV%V D; ~_!| b;t:[xzыA ⦼10Hv^{{6%XOcS>ٟ?Wp' lX-}p~ǖG ? a[Wek[pjθ8i_!X慸G'niZC߰J=^6*N 3nǖD矁_񹝫n!kN=y;>ҝ=@jFnI+7\D⤾5Ql`X̩ ~p?Q楼Z}ypɶdɸʲq/`lZ(i %!,WջdY.r5" i9K!&dIf~u>|Q2ssny&N׹>}u ʂu,'pi͏' Epȓ?w x7^?c V߭.\$L>$|2u04nk|1Ll"sjh 9dpQhF(6FXZX.FC_ԘaG]Ӗ1!E< 3.~`n<@GCGCfmĹE8i[,4a/rm$4JN%8-^`& /u>*,B l_"oZ&/Fe1PX9P۲5y-U#/V+F.aHZۂ &<*cpS ɩQUB9F :[j[.^*R_%^(oӡÖ;x/5-:4H|UBsfCŵpQ٨Ĕ;CM] :_KKGeuv:HHࢼT/hkm [:_3Qj0Qr0$"XK-N|L4qi~F*}[.Ĺx/Âcp0EOʆC0QDϖᠰPÅL59Q U6*LԹ jIp!ژ(]1Ra[0R_&LT[m&'urwFiBvd2D-*EBٲh,{rwozǖ6=qQB1yϒ} zbP /xusS߾=ic%ힲ`qCmۦr6߶]gt=.C1DEl:f0$[uJ.ǰ3> )n%$V ekڄbX(b:Pa?ؾ%c7ofzj!ymG 9 a!@4@X;=4FΘ: HVjy(0deeܵq+`L-G@&9P,zfi^)j٪ XLj(l_<VoQk˖oR;6@6m-֖2DݱYK "e Cʁ`m[78ւdz7kgѡXB/ ` Qq@=Su koB;}C@0FB3ouB$5̯fN-:l]Yu&Vt6Sӓ+*۬% }```̬gzp;|4#9 4ke&)-PkĕE{ne}87`D?kZ|4~_ ]:]4k}9xP p-X !1Da aȻR=N(j;Pk9*aBd僄ngL"a !}zD8'p 'QvЖ]pQgmqe^=na,^jd{"[c_$`M'՚qa.D(lS0RQ7%':#EPwXojPU}<Ȼ2r0H6@&0,ep{ּQ (3Kczarf5j :#1{0"RHF.q/>( uoR S;4 eBmaYer۸ݠXUBHX9@̠ 3r@L3' 4mی:$ v1 ]+vĞ1HD fe,Q;y1mZW}s\!G_.v-+.FN-}"P,ŀfԼ#w1jD!e!:hW !ȥ'0,diۂbtp"wѡ 'HMD᠈{\(" $Xo0FzG/{G}5_?{\qnX3Ll4)GcA䣡&! }ª|x.-GnJ> # q0#bњk8D_(n-dg8:?:yWb:^JkcKw}`n~ k1BшF^s}Aws.jX)٨1O[#,&|K}PwȗiSJNͺfc 39Gm,^#TY(=ԺH(,a\-Lz&̜/#m9l;<І!'okYKKu7饄 ]F}p>y0Zk1TrVz JV*rN=HTEBTE}p>O`K&cns C˃pSx(=jrSqQ([ZW8sЭ5=5<1D8cd(߅1ȗo62!~Ng`HyijNNsgѲ;n v/[S u{.> ѷKI.B9RD%q1߮ ,Z5@@whqpA޷QrL+"@,߲A:F U|g`^mvw !u%.XX u,;_ғ>u u9vqmCRbg~9$ y^e^H6q1b-{cZ:aDjĀ`}GOT`!ݲmEl:T[A}9<Ժ@Ą[\'4{c߮mqYs`0VFY3L^s%($!z] wbcVr-5lQg0]B2fV@Զ}뛶 e}0AlRa"Q7jžX6Hߚ1[ [ lfNHfÃկhl2Ͽ!:'m3R[',@ uɖgw#kޱddOQ736%PmCǿspd'B0D@.Z5ƽYFs254h[Xƽ%: \ypxH(>Ssiӗ}?DJ&Zn-6tpm>L}FSCCo]u]qv\ZQ #>=d,ڐ0RuhA.zTpS:XDޛۂ{Kغd탃Lu>JjYwaY#jskqJÃ&-aeԾP 3'"T66"tǖN+c.bu+w>`GUه M >.@ #-n*-GE:-Kmb""D0ӊBLmM9?m &Jԣ]&LQIe0s&=\싅GWoy 'gHPl"];+MU}\lqj3}&᤮.; ufڲ/Na]$Q[mL.ب]$ĭhwBGOBܴe߇,^|rN/Rc pG/]]%8Dn0Rx&B߇2$'V}Gyq=I[O]a;` 0ҍ[Hر}/7}0.}²=),ׄ-ֱ#c8E8iCbp0ޗwT/`0lզ-, ʸD1qmf/XnPk'Ć˿۬:nq(/e,kmրYu.+/^݃b^B9\87ml֊ؤ]`Ä` с7m"a$kWl[K 05RPPZr$!B&óXsgfᛷ-Р2<(,e/@!ч["@:ޑYwƼWeVYEd];rH(#gLu FٶABeB0llj~Xz1ho&dn[7 oe7|o)E\P\ꐀ18u11@\*  Ebojk:om@Wi, FM\}ؖZv-92ȶn0̡AŒSwHݺ7/nԙ (3y/lw`ʇ p>*cԢ&D2@hYS#vB2T}쌱䰍[r<w]2@( -JMd[nJF*X Cv5HmwpyſWΙbED(Ŀ9qupv L{ri9Ҳ]2@(K,WGbYF]lv.-2r/ {L4)H-N Q{/zïYu?|ekh^p{:PX,J%d`b]}ݑbQ,rQ=`R+'%oZf.jW .FQ(y"aJkZ}eHsc"j-ZLE 5c8)%kr0\N UN Ս(r>ڽ}wr0IYȩS ʛK T [\^&BҠqRjaMXϬbolN-2`h ײdm"6=(ե1Dɫ Đ Np{jzpS]KW]NP=;,d \ ͼ(}[Q6Dzxm-ABj1DՇ6"\T/bR!}g-ɂuAAޢn c 5Ѯ"(T& 32HH(j:֖\'4\BulR+ %`QAryFaB,R7h̋R`Z|c\4k&4^JMȖ<ͱ7 ''<!귯(k Q9ѷcšDP7R$۵"TmXFD|0% W?uc  8Sc`3Kc  a^朳u>۷/kl6ɊA٧n}4NXqXxm_up7lϸ Cs~s%c=+ "^eiZ c`i_M&z9}ehS1QQ?p7+BKV7pͽ8hYWBx(CGmV*|r'u{r7,tZ$1ܴJm0RMKag9y]LhMnK֚0,Z1}(|1$H%k_F-Dn.8sSzjgLm-0Q[.Ã!~1,`&8i|oVB]̔Xvo^ژBQ."j<썑^!$ QzpPaE:  IO.``26>@-9Z#7ZYJ0R>2ξ/]Kn8)=5CX-CBM+-:.v\̴j$!'ʩɑ,ThM4JN4c1Njsl71C2059^R肃V>9t[4wz*u.H}AA =DmN-0RtEᠦjsuЇ>j:Abix S>0ܔ>쓾h~,T}0>y`MAAr8hA8Tl5@8'HusV@/~я<(>@ :4CR ɷ]2} (tO Ljokn~h`ȑ>H}~ 3ۓ6^gwUIr% + (c0XF f[kRi1w7la;o?1D"/ێ6imJ.@j{1,=2|a_u1#gao!9o|۶e!@/dm[ci^R xwˎj2vF9߉xZ6n+:AB[CaBr a`Aeni\!Yվ]®uL uo"!jj20 [dAWA0.R#m(4 Q0>ڽipVPzuQemJX/"wR3`&@Ugϰ1M uKΘ7jKQ#c 3{chР'70=7-;&u/heT8&uca[amcmj@FϮ"dpFN^sbޡ5=aB Ͷ6n-) kaY歫~mP"b$*3dlۊep,#!7C TnՁm\ Ψ٨p cnAmÃ-)Dk c T.MO|nE 28=ouf4,R3,HK ^7mzVig3yS΁.6.Jmڷ`. :ꪱ& ֧oO69 Da0QXҭev>/]aHLim9\\फЏ߼fUEfDH߰΁}mZsY) Hj{75f 7c '1Ts$쳢Y{..pOQ5Zc yFepRja-aalV G5Sb;xiI6/^30HX)=>fЮ}:maAJKHZEl%ɩ:7oWZBwXENbql\T"ÅI/JÄҸNh1Dmn-bY+0P:9bf{l1E:7 3.J-[c\!|wFH #ըrfҠ ܝP6'%G f* )rhߘ1>5FnLxiE"^2Pne߈.jB[MZ2"[H.>Z+#(9\mq,kYr57%[6.JZبK0R4ZRكeB6͹%y)I"1>9@]h- RHS]~Sa#7d:<^?'ڀLlP`6ٖ-Pȶmh{3P񙡷my2 ږI؂"kޫQ}3]SeG]3v;b` 1dB 4 "B%aÄXcgolfE`O^#/K8ael,C5HX 6lQp , 6rx+ʈ^C]ʦ-fXF a2@1es$muܺJ(!߸= pfPL-uE9ÄGv }rc|`!۵H:~Qc9`S(,\o1b>TVicx YD`2sY7/ڴ|i^[)zM.; &91zĖv_'D390&1>P;aܮ6LZ%C;`ȉ]v,X#ג5Xǥ'NXrx*2'hXx,t;|ɚ:$ גsPWvˇs?q},˰1Θ&ؒ ؗa,+:C .ֽ8&)`n*; Q)aA6.ytZd wdF?5c8(}cܙR![Jtc/FRIa\ %`MN ru|dT[fnHyϛQrX8wj+m,V['1Rj,"6ND8Owh d9&^~31(5bu94ja>*B髵pш0W/j[/U{m\..JL4opШ3 VE BF'ÄI#RWZŹᤕO?ZT]PԺh]V҇RwXەB3G%#GM-L5*'roZ'oP}"Ve7Q{ѓKZƥŵaiL4>Zӳ!,Xklqk.:ֺL-\\KSju(j'C;37VbPʸ}Ї 3-&uN1PHnl\l&/Bx!uak50plAC-WH]y}.^` - JeZ! E=m{.w7lxqgDl׾p ]ǿf߽[4+5jرsPaq/{plzq0X9=HƖ-dj߱5!Y^YW:fkra,E]G2. @޽}\!BX߶pUXjţï\Āci|{3H#00qP쌩dz9 ŪoQA&$[ͻVmoLD3`Y{9CbA~۶`@5lց=@xr }6ț1cnclÃw }rDݼ>Xn94u"(4c l2bH Y $_XW  SHfbևqHY{{ ̶kɰ HA3,$ȴw 6lɉ%H϶j#eqFߴCݪ|'WF]lezwjY6(Ժk`fÄ2[Ӄ?/m* S#1}aO)UoH6tÞгYeܷ&Z(|D.G?Cs yrP>)Xs0{14FXu5Sui֌ӗЉAD؏ zd]Ä NI}kcQu:|M\'|[zl4+C0হl-\F*kcYGmZەB~}P(=Θ3%6\KARP"}"Z@\pO%:7% [2mFMϛl %51|ބQ"zrP"\R6*-N,RG-1Ѭ:EFZWlD]&ϾIsR8vNRK7/5_"d\TX)Q3$Xo7I*>yƘ\+MPDmFP۵26 ; Hg̴aNX63My\T&l zX˄6D(*.e0RX.($Kc9FWEttZjQr}p0s_#$fe7ՁB]f8T,G-ضh휔T{zj$ &)@H4O4NqPj֩tH0kzݬ 7ͨ!=㠞KKruPz࡝K/H^ݺ>HoQ;a:mvÊ#G0 ܼo[6@(iA?HW/5%TV=8P7C ;~؜88̏ñCXw" v bV;tv}²ܰ u 3μ #n [ ʘM~^!C@2 7q,ݲecK@F|;̪ ܺ˃DZtd.LlR77l[5 Pxkz_X "j`ɢFur1˛\dVH]o.f:7jU ӍZj}`aA*, 4A YX쎉lْYwٴ5kc"B[]ֲpkC}1*Xfۀ!Q4n1ubB\"B6hpLzepL6:jw"[۵!Jh5k6P ѓZub @38諀_bm,۵zqsV,%!DBź(ÅD.ʆ-!z3$HNMbU06lNͱouBbĮm=. f7@XzK޸RHAqڢ˄5,hƨCA˜=a.:6mj[HlҘwݺC,;D1Pdw`hzpgB3ZRY)[ɑS$\4dV!Xn-FQԃĭ`g{FvAeP6:~^c. vp Fxx 1<4s)Kՙg̅kcH& %Bh#\r.-'-ç ` &M>wkYD֘ek62EFaH:~;c0ݺXبt]Qb mM.>XhuȖW[fvl~CC+{Kbe,xOO$5jj" ? !FH-9hߝZաE/ =$|u0S} J+n֘HMKvx-LT#r6 -#EbrPz&cYMeµ\#$WM ,J,w5zvT3X7te[qҲ.6{c"B睮-~Px|+~6ƞ[K{hK+ /umH,XUµVjT(2S6ԗřy),a٢5 ,l EB_AjaڠqS*,P"zHQ [ᦩc yԾҾ M0o԰5npm;M cۭXZv7-jsj!WL9>. \{Z>x\"\JgA"}e @ ABM[ɩ^,~݆mܗ ~hǃB1JqouO|y։Kvj`檱#ͻ郷}gǎ:5 3o` r0 ef`k7lo< m r0YaP/[ 2ݼQk*b 2W/Xzb+X$"o (ڎBd a!7n5B7m0lYwtoي]6P6Dz=kPY+{7o=`7nY+ [jjhl9r@mwLt!۲UbL"~ayu2[V!A>_nA?W  (~EMMZ(ڮ8ƛ\ v-5Zl}M[Iupz@Yc`1o@0ɐ6@10z S#[6nKoʖ#ڮ˅| ۷6 H.zjheG vo:8Bٲ959K0rc@'jao;.; Xza+@ )(+j顃"i]KoZ[)́cDaѓw`6)W뛂_fq,j! @Ɔma2pcԾm˛0eu~D۬-`iol@,zֳA Y|cDɵf{6smZKlA1"PfW Eؽa+gzpl;.l JhK6DHDG-^Olg`rqlo &F= l-JA 2}7/nvp "카;"(48#ݙhpBY'ae<3]Z._#gXN>ZLt)J&Qaqm)c)$v^JnÄu]| &+Dqll :8֢Zʮ(EGN5'L T)@V F^!7:!Z\ACLXWj\ F_{ J8*$D?Wo iiòÆ 5BbʖCK@.ygHF݀dmKl| šm= u`ХW=?G?mNl~3S49w۽#/ ( ';[Sذ"!ٸMEP,[ !,Ӳ @6+Sڰ]?FN]g3zll90e„br{P?wJjr0L( MynܾbS'C m& ;l:"*8+(0k kȶk^!n0rj=f}hQn]"7F=2ڰU m %/J˄ɲ&b [)}ȕ 1>Aڪ\p 8 d !b6\ָCZ۷@04/`FiaAQ.@Y!qy=$o R*b0(4hC3m [oZ)^"o9SKc~7C̶j-W*(&*+Z"۵Hľ u!bhЮFk=ԸDhP^ ɶmA1$= 5XflңeO# `kpP360k]#_̪ÄgVް6y'% ;@!TD9"2KC+RÂPQyٓ/,*|k1&9l4EZƥdGJFglTjo̔wHkappelYV[c\ڇMHn145 `٠`5BDo,5le R,9 ՞P M֍B&!BqrA:X-&`SCwLrYOBUx>j-ԒrJO(=kDQT'[:g6E,W EUɛEGCl0j %8j̓ E>8Xoᤝ .p/wheȠA0a-}(xQ}GG^Wï Pz6m駚xz@ٷKǿ=_*h}ұν 26p{ɛ=oˋ';"g}@p,s`ٸe6X2FPaHOZw3Zn1Hò(,U5 a1ﺿذRiSn!b{m/.yG^݋?Ac S:@1R S VClnKB X"-Bz@1S2iҍ[enF:=`\^PV۵nAp pF^; CEn` xF rl24RjALE_6kUekL-ی>i^W V8 7| ;rKMPÞE" fpXÃ:$[@1w-S58Lƨ# GEHZ{U=Dh6lkr$0 +c@X (&GUk@ V_ _|ZD0FjaLnl:8kYwK˗S *5>thn M(Y#'$KݲaBJޘ7Q;+[_#zCt`0#P"yYhDc!z0R" Et& Q'om& !-yH[#[>p }0 _%̀Fb%yG"4F/ WCCx`2sqp6C C=(y{O?}͟Oycǿhw'.>7v|;朻ǎ:c9\8焕cG9a)|)sxsJs0,aB`Y`qW*8vJzgȉ+"<$Ea*[e "[y1u0F6 ~kG.\p鈻6.vBd~Їl@3z2L(۶́Xܼ5l}qjM[rj0"T(F۶CʐmڅŽ!BL˞Cb0tPa0@2 r0چi`XDr6haZCD-)(BdC&V)r<B38!`A,$&آ&߯ d k2 T B 1M۬٥B$L +_Bp5`hxy/j`-{cr@5ַb$d1<;DsѺpݫWA ^:ry\rѿd_'Ǝ fyċ׍>Ԝ75cGh q<%x(B[Kԡ̳[p=ܒeޒ1 d}?9c՟/H"a-YgL H]K$HD RHɑP%woAfmLژic[Do/[DEofcLm,I^JA 0Q4vʻ)nkV6ѕ}ب 8RS.trAA䃅E-N@! m-[ׂ5y.jM79) 7-W|7'_%t;c5S"yˈȆ ;,qDDEGs7-y69mٺ8)pRd y@.bS1:lmV|K >="=DM,&Åv}wjYV!=bȮvQDo DKއSZ}Xiܥ0&җ!BRh݃d#mT|w ~jy]!,L7^{F ~KҬ}m6G0 xuжnc0,AFtlX|Bǎ:Kdw[d uF tnw($þ#mӲtӗq)kà b0⊌ IJchM\dy[_z̮HFT8lC~#z:س#|& C0bU#z28= Qä0FBmpoL[*xSc ȱ/6XoF.r0&9ݦnz0hʐm;A \!DtۖțĬyh\'x8#WP_QKm2 f1e*bAMD²&:Z6l /Vm|uB("ŬVu_$|+(FOJ=e|vZ[̞dvD ` H(Hl: 5,٨7&G k 8s8f!B_"txPo 2ң) z]} kH@uk"Hۖ5HD`2Jo-ZzD aӢ+cd7o}HЯ*0#V\*#wW} $^Cfϑ9QWP-%euPZ{ͱ1dea=7mSf9}ěnD0̲CiېL .&G:0 @}rWT!0$篽|`pQ\7ltBj._^']V.փ=DI?9 w [SDL͜oG ~077 f=FC'os >zg 2@j[f FuBd$S <=xȉ Vl,XH["ktn-eo|~Q썅"[.F: _`CSJyPqyAcS !ÄDٰ4֞[F 1@Q9(!*.tkqfZyO'DvqPcJNMakpƒu J[`fsL +-&y6ܴhM60R};TdVo WhDب[#=DݱN*;%FͩҸ.R#Q5GƥBX "װRk8'5BlQ% =t2R!arcek Qb;ljɭ}Bjbsh᠈%(W K/wY[8GYF,]ȍGFںH;ÂDslQ@a2%B]!wVGN7\# i..Z|T ]Ԓ\rSh1Nިu][g0a6*4d9j,YBMڕBstYF-l߷˃QUBS3AemKc &HSfi FJb"X-YScy샄͹zɝV  M’CL5,y7l 5 <Fxn׺dkOO+C{gopB[c n]tE{ ̣)mt9;f}[u&$@'zpLt4ꁲs0 a$ ' aoAڸ Y.: {۰ @pLCF(km ᵩexX 1 }~l纑W~*سPV~/9(S@f7ށ` Ӂ’4`qw "zR]'M[~ Ȣ kP},; ѫ˃UɁebi,LQR!Ys۶:7lud:L+މbQ,̭:j]"\wdQ ɰ!zèe` C ~P<2 4(LfvnQ_o@/cџ _jPsHʺ"0aA-bU[+Cl"_rPbg2`hVm}t7n}떨fաyܮS;jr a-zF(>`"W8_ $6-uVs@2EOM'sz2*D@++j=y5AH-V ͆Kvb}۴7rm2$(CѫMH^B0ٸ%-[eRf1d^mۦCQg2D>@M[5Q ~x/6܋@$tN.S\ˡ},XW Ha?>߱}WC57#nѿ ~;`,[5F鑞>udo!B Yz\,YHgVLݥ+V|a+ 7d1kp)uAbQ88!c'-Ӂ_z(Sl3FKwy;>7=|՞y΅Q^ WD=B]$46 l(MEɳOQލv vXwI E[!AD3#睚,WK.'ό(Ã2>JKH=^QwhM{|@k>Hz<tVJw7B3WbrQU-ZG-lQ0QzpOA`L}'=}2R4ԡBԩ19:2Ppj;j[(nJmͽQ7 a!HxT2&93Q"#3IK "塞CEHa~V*&J/jNQݱ,]DoXiae<5OیT8id~0kHn\!wF}jԴ1VV*=HyS.c(/_ڜ8D襢G*lȅVoekĠ`-g팍x cө~>3x $ab`9/Ses.KCOme i-ۻ8a10!bXveK4l& `֏Xˋ)Ydy $ckNYܲ@2%J?/ޱxkО,E/b(EXaKW +/R}Gkoj7ʘڇE KM+c,`u]$KcD i aDԵiRPf4ЭZꒁ1r"o\#`!9-[b2 grKc4Bj&fڰA[  =.|0a1Q{v0UlF/ c$=Smx fW-_iW }:Enn,{t>*B#7bL.-m{m>3z ?5=qRgYoqoo=>87c0& 6ڝN-HH$ >n-IF~D N-G Ymlޒ1Nzڲ?qI#AȃfqH-Xbshyիȇ\"(n-%qlm7Ű`oz/4yrҗkw*wn!F4H#"[69%v,^KdX5XfJZx#X)5DkXOAnsZ&' 5^*j"(4% \,3JwF]B렡8 |-jqr5Q mnJލ 5cumќS.O#-E.!LxMDpP!ޱ62:aDzveZm\Y)KVH/`JSd<%ةɍ&$ 9H9i{p2c8X/"9 3-Eָ-80Q-%k tLuڗEp6'Z)~Z=ϺMfs࠶x-j`t988).Zuɚ> ":µDPu Z#EK */k'bS2<ܹz2u.^]YtZz|%lUOI:aw@aBu~#ݿEC葧ڢ0RYv6J팴بbVT^7Zbmy\5ɫePm:~ѻշkKnrH[lrY&9ث7 1f Y:..y~ʍ5U;>@ =?LXƻRiq=@Äy0A۶wUB,;xGvrhhyA›Pu  3NZOx-Ãٲ h1;jP!YJ,;*;Mw lx0(9bӡ,c-ޑ>8XZz $0 x |vuPj7dQ R 9Zݾ8"57۰ E$4"jLXv lVjpXFL Q%\[vX^vy7 ɩ5@P~SQ ,zbPpּ>oU+ V UG]#l,;D:0H]Gmy7{Ց7l;$"kaAL5Pf YEd1=AB&ÃfׁcUÄ&dpձ & *Ce_́a ulЀXs6ElRͱ_(k e pڰ7,; 4S8Fbg75<(,AqR03W!H03@ֶ ry^@2\! l5@YB`rCm4& }4ĉAٚATlNN թK_9k$4rx(=j$.Dyvj.j>J$O>0[? I_W{΁548S oԩ;F=_.wpIKd}1L8hXc^P2R\[&%n+>ZWCpҝp식qcENyą>5_qF,Xgd:(ÄS 2<J^Q\[^r |KED>N-[~cF^fw0Es#~vo.jr[c)4#<'Tm\Z%kbaDޝ\DX!8nqLNd gmD{pQ"./E*X a]YּEapQ%GH,[ӣ^Zuq!gDU>041ÂwS aBD_mZbBu5BjL-P!oDkzB_ĶAC㥪K jlkbFJ151 Ud|#taAa>R E!B5V]@%k"|F*^%$?uC-`1Vl $66Jx_e+v\Amлos`Ӟlf4h۷xms_?gqG_gͽrL!BA6nSضe:ٷ5NPQ eXe\&XvuܰK Tc0L/&$^1zcX| loPULqޞ"7r<3k6Bz0iTrL1@,d0"2(ڼE>PHN,e" \b>`*16ȷk)Lo F^-[^HlQu   Fڰ%_p>Q쌣֋ dpL+YԲU5=$ E]יwH@L.VQx'@̬ou z1ێ c襰1f1$(0w)b&wJ@A2ݼ^ Pf۵Q&WSÂSїZ.joa*Rt uÖ$ǦX,_$;@C3zfa9uI``9~!R F!Ag1C3][` * Z }$Yut_"zY8A"mۖa)ߺe=⤶f!@&8S c"zrsVeHlɑ s ae){o]$NNl``Z:<ڦ-bPР}504Bt@vmӃ?S6n_'Eeg7Z*: 'ARD_#dp0{>h]~G}~=?>J$AȉCFG?=գkK z| ᣩ5AۋraŒa1Ҳ5>%S: spȋ~GS'AB98'E5DX`cK2;C䥺d-.-sa8<4hd~wYSٗ+)x)=[$Fh9<4kr԰.vZL.bc,\Tl%~N޸@b9^)+|g}"IJ-,E`HlXrQ>^v\x):pY~}ƺT]滺3m.[w#cԨݭ ."8*TɉEkr5 }hW~{O +%j:@T"9|4Dr(91Q]rmAAk][0aɕjt=ͥC0Q԰PrhDjz0P DQvةxU–os0RAɉ%g5Z;e٨/`FAy.J[E飮aB"j9< OMݗu>L%loƺݖ y!YNPխw%;(++cYz!X-]dAwfiϳ2fj˄B⟶t$o F*vEg`PsBز9i!9!fH;~."!9geA skl9 }z@ $cp%?|=6rφ~c>x>CmݳcfoMr0M׾F8۷WřG^ͩ@1vKzm뎰8[ڶ=meq[Q1,c8lt/={WrAP26EEaKnklPAK7t?z5&WGY+`gm P !z^Q DaȆ#e0Y1զ1D ,r ̾dhՅBd6k/rԮþ@@h6Ƽ#ձYwl;ٺePYvelu3ef퍉:8}DX[ döM 8݆351 4pC=gV$y%Bd<֭ɀoʖm3"`)rMRbQvVGnQԦ+b)ٴEsXVmo2۬ q!z,[["6k[v"߸Z9fp.0kl0!}Q Z.۴{˄fA9baKN 7m6EMVy0bW hp,#-یV7k "7Kc Kkwг88oMG捭Zz֐Zs͆h0Ls蠧@L`#b)d7g$ }ĻlܶaoZ"ʣj69s1> GQ^#3R\["a*CH"TTy3 9kC^aIk+K,\h= S8J-lz``b_L.TiW_{o|Wd0҈Qg|~UqkZ^",Q#0aҸּLZTJN$G?ÄFCbu,jkLMn(\5TL(aBpM y*1lh"g>&6᧝.]֥ly\*!7N%kruV*qRjbaqT2[zД3S"ɋwCfi~ʘiCBݽEx(J !ҚBg~y0c[pk:5B9F0SXDmqЗU7rR8Έ"]+tkcRZkRǻ_%BXi2xGBxМ[,حtzRBͯb5wc+mszuv\!Ժ[ :DpOyZ(0ҪO2FꃅHx) 7c(<Ԙ(9\T:dAmXamd)re64H$7F}`!B(,֩ԗͱ%{`-9 ᥺.>0T|_|G-H-V7mPSu[f^.ZˮN]C2H ՒE? ז)]$$W[cbU? /rF-9C10{Ƿfi8E˼6g3 oܶ'u Ά߰` Ͳ$ ]~~~ޅ4۷z|4kDS'=w'鍊V<E̓}V/kLhԒg4ԡa>L蜔b5R1щg>Zo6,Hm ֍e̙hLԯ"G*JmwRra`0Q.w_ΞBϗVdPdÄ#ʢ64hT)A$|KE?"{50kݎ-*7ʻpk Tia6TVfKP\o"'"ksQ@X=aBunqVJ].-}KQ12.Jܹ`&}Fݱ0ЌQC`W aIaB闚0OgJ0R(5S{B %GB3> &gFu r(kx'=m`0E.N-Wv ' IO-^ K⪲h-yklԯft=ZYpmH|ABqm1g"shqV;Fk>Z}yAB X1ETZ'L)5,T/Ʋdm|ќY]ߤFBZoI GM 6M]-݃[r0b.r` QdX0 o7e3Fjam~ra\ȫ7}:?\?nM3;w>2bel0r]07~`n{?>kNtMao ypWoHvo(˫X[PB ŸJ[a;36l;{z}@~찓7dʰ3-[ݶ76kQ3ݲ:a yadvBޮ} 7lb9,xtRalخ˅& CM ,S@'۸HղP|^!s@Ot0֭ne܂cX@Y/|,Ӿ .[cמuV[6CeQ=ra_EBr_ e۵znF*HF/k$6"z LfmL^UD~Pm:Lت%Bb5(ز0PF1f{Qܮ@3ee@Kzq az57jiÄ\ʞ_:f1D$#/fb [涭2Dخm3zDݸZr^"Z۵伷6mC4b!!(wr"lHlv8w@0{ Ϻrg2<319/ƛCS 6leݾC@/c ژ:E4-BH_ C1$7v8x˺)d6H|C ܲ"70FD$SjჅ^%:`AƕBZum9uHrmÄlf:H-`,5wێ5>8#DFEƦ ڸuP8)ob`d!Lyn]kraD3_=C 7/ܻs`Ǿ`}s o^ʴ6=ÄOkKѾqma(&e?Lxֱ.y lr0Q(Q_fp01 +->CCgypQDO8*XC?u몑CF 3_i+,EM܇*aN;􌡶/bGKmZtkQ;cy;cxGdkcԨXr0N >kRqQ!h/%*'kȬkZ-6&j,5u_Ί>l(ÃEU¶->JPCYM̹%rax..G7._B3el \T(3D};mQ0bk|dZQ\4rT \-mI/# j޾@\4$ 4$FoGW'H,Rs>wkqРE>vji1Rɕ55ڙhF =㡖Sָb1\/EKElxQ6V+cxWZ&F58DD\Z")HpQ㣢|4{L;X R-5;ӌ>L7m._#jS@a Z.=bfu,/\E;vf*\ >juF4Ė1Q C/ a]!aB"\,1?`"ðĮ6nMlf\IΖ,5ܒܰ=??͞fe wlݳPCDC?zAeG?ŷ <:<uB=H8u,;Ю c6@HܸM0q2.r0Y٧lP@6l;s_̓7& !` `&#X ZCZ^5el\%4`g&a،{@,Eg:6pe7 aLexonږD`v%eaBd (C.b~/̮vcK#zmk Ԓ#EmLk@%’_$$ !,c[+( 惄ͺ. XyJ!  9(sˎdlV24h p;2R#g cSmа$P wŶK68X= WqP/ͯ3;cI8FL}VC1zbj@!R( 陥Dj Ajf! "H0L6pS+aB5-aqPE2"1oǤ"z+r@[es"7[h@/W|m`gt0me=߮ElV:̾CjQgV)za1$ eGDroC#`Dݲu@&` c ~m"_[e냂Dc@,EE5 N{.[lq7PZ֨oRTWRc3 G#6 %Gto {OqjWH{wKP\$LMR|` aZl}+ڒ$*å;vE}xPsSpܽp x_2(HDaBr7pd = @j wc %bKҏxm[DwYbR:D$i!dp,}paϢ.Umh \0&F˄D =`XukKo}tzD'66(FMN?"oprDH^Hͮa1Խax#U!gaՁm.-u2 2%So[c"@@1rAÃC eDt)K P#'@e0{.X8[ l<$15"m^ݬE?wuw+4+c7r(ұ z]*\ [fjgzгVaglZpQqjVA8=hpdч0! 9@8o?qӮ~y`ZF]>Gg] 3f7#;7WTyFOyo6Pa f.?wKM.jעmpElG ԰Q>6ǰPzb,9+˄!zԼ!e+nsРD+cKJy 14H.#c>8=jUrm0`a՗EkjrP[椼 4c_6N}2@X =ᥚFmh0kwsA6J_˵ȍ"eZ/j~ՕB"}`ƤW6[c_nA+G՟獾 R#;t!yҧGa]7O/1d߄{ lTa oC =Wة_#fclT m,_vV5~Jm $BqPd}b Geh0r5L aKn]5BunAQ ~k 9{\zE Ag60چB44HO $z3kTlC,)z0a1u`-7Z0SK"@ u[cpJgƲ5_ @a7$в$k-[8N"uW_LDϺ[9,3`V C[F^Wfp, lC[{yt5̮qPFY1z17uжo/yfO ˎ4:;2ET۰[v_$+twF6ncxqn: sS6mB4 8ش|QO]CagnvIlCa{]3agqV(|źwq VP:rP &R8@!10(&Ɉ ZV jt b;SKclFmy&1B.A1jr&2F@1ӈtxmVlbȬ9;dœ[ ET(@ +c}qf !.z7n~nH.0Lsj8p,d5Hl9lx6mfe쌁ga*إ=d ڌ& EMkcC2"BIds8&@2۰ 38(V$m UD-zn!%`Mnql[z۶zЁKy[zP@[r8nw426Fog$C/`fV:ˁmvXΈ6Xh@X_"Μmۂb2Hu{P SK6XS] g!dʀhȀE2g5Ыg f1-6mЌZ,e|BkmT] ! ÈuÂlVYlMzPb0rå0 4HԗS`+W1$(V"];.?ɥr៼Q#(tsKm8ocN2TMN.\JIp.[ 6|t"ik|GBq]$,[chH(x.-,? d0&!,ǖezho b}`WK>LfׇpMG20a2QuqzPm(D3> C㟶dMl_%\{0PYnXcKt aBgDrsqBl gsQ"c~u9SvH}pz]7'ueRDeqB`H\ABDx)Y~:#Uc|+ w%Naڸy3gy"8(7kQ#mZQ0Qqj Ւ59HmBQPX(59sKՑO҂~J=qѐ %>L֒yv[+%g!)eEȗ!6ڂlаLwsrq>* aDjkl,H.+BDfa\*{'? L$}gےB"+w+~jװ컽qpP[cr)}_N13- ٶŶ#/CmPnۆeq\"dvvٰ=8_""Pa\![d ʆO޴6ldD԰z×i=1$Âk>ߋύϒY+cJ fź/;䭠mےUlX0 :(M[WU&ظխZݨr!^+7 p ː~r@B"+^ ʶ mhrHf`aȶl3wJ!AJH@YD2^@/6oZ[e@L2[rc X/F>d-PLs3F2H(̭9'} 1zuXr߮K|/3w] ,~t9,+&00 NMzIc9ܮC1ށdː3giA"g۶ڴ 5VO^Vmz}&eiZ uqIJ@ a~@7K.tE.Ä f únb2T(Q,o8\Ä9H4c0' FEC[ {}\[sxvp)W;w󗂍K.Z+/M aȮ{ LTAPVҡ}M 泰ґ6>=gFLHݎ~0{% D]lAgH:yg|K$a5oԚµ B_~coY CKɋVACYݵLM.6DUهSK !}"26'uc ZlRR(v]Dݲ7;pQchKթ&+%MEB"ܘ)I=v-`J X)LCaH >mp(A˛6ރ}f.=/_w0aizP/YFLyc PfȸHH U/KX-@r%k}ƙ\o>3l-71p#eV!9[l:,Cfm%,C &ňo۪c.sY߭o٢-e /oPf]LxC@0hu=٦ԢSb5 h~Hn@Lj2P h1XH] B@(u_ƨ2bjb-lo(km@F90F4uL4XH?Xg0@34 ז-]lޮUH&@ 5, H-۶0jH|"-xHFN$8f*Fn}FeN +fR !52;cٶ UQ7mUK4/ FZU1BFHnC9y H϶l[ 0Fn mآű@1=(^/0,sԡ¶sP2ViolmHfVHlݢ#Emך sT6lC (#'KDc3uBdү7(Ka,;ءFXsd`s2`] \ D'7C?xG' 5.~#޴+yhrPDب=70ÍEEɋl难ԞCuBd4ߛ&0V>{Et=aB3&#jaCa3ThN- uIaICEQ۵ZePs W Xbȗ%| J_e=h 6J 7:@;L4.U{oFFz8rЭR!s 5e_-ѮkeI$G'uc.q{zKE FBo=נiņ520G0ި |p."1d`,e[ |E϶kSԮqE4hŐb mG5BzY oWy–uÂ}ۂd "~ ,!^KŐx/e9zam 02p(7E۴xgs0E6|EϤ`{v-u$xkl"0߶%gpY}~Ͽڶie՗1P}G}ꝼmEmQo^fabQV>@[fiі\% ) s{M_Z"9Zrf-%,j !b)(t@Y搬,9L+Rfa qm<ȩ`Ƞ |X0޲5  Y]1ՆfABX۴E]Ls٪=`XwT-3eB=ZLgS!۠!CH]#('0>LC1>$x$weud\Wbm,0~XF ۔2rMdAFYxotd^"!Q_#Hvٚ6HXcPvD  =d ?L{̇"'ypD}\VJl\lzL[=60Q鹥w|сO/gИ+F+9: cs_XNkH6Fq.\ ![=yuS_>sfq6*BY6f0! Sp7_g0$CYO`=2>1LeJCk?[f-6Ph,:TTc.ʒ5op">=81ScQKHɩ](4>*`hQs1nW4)#u8i'K(vPı%x1LTsɠ`4ɑ1S8hP8r6ӆKҳkm)ܭl(#=\\w,^#CCFQ-USKaoLDڂ(9t(C #m.\? 9XlɺX 7%]*,QeɺGMIJ^ =GR5˵E*M["ZʘyK07=\*!~;eJVmjeL4rcDr=G0Ue~J20(\T򪥧,Tkķ5,HQgCͫZ; FMr5 C):F J{냶pMtK9C-P}mECbel.-SeLkXiol1<"oqR.ڱpMݰ7H.~p4TQ[ qmњzлd6x,/3^xCh1xgpc+of,]uGe]̟>m՟OH~5cGyly& یmJێdqU„d\#d67mO+hv0>mc5Z102Dkbv=l{e/ڑ 7=aXԢd &$AD-j\%tf eX:PhV-o0ހa7a`ƭwlֆC-[6m F P& V.[oے[-e_,>MeBuXR&}mz_R av8書2$,3(14h A`mhc*Sڠ ;2[@\ $-o! t`[ml;B٣h,%@,: LbH7l,TQao3i&fl4l3Rڒu%(tj^ j%sm5,["&rek,SAᢨNAͱMk0cs:DD-TԖ3(Ä6H=bҎhNAN8m[;eԡo\;nڰ:B[v\$$FC r+D(5vh '˄͋/O۶,rbԭABekܼg`Ll"w~0v4 ̷]4;M;0vvK/e;}>2%[R8#;aO,p﷎/ΚNSfǎ:汣csasaqym;Bm۷5>9gvy/: %^P@TeX #'7ly66l/K8em1F离bp% w22PH}ֺ kw}MZ QZwv-95Kb2!B J-[$C6o!5˄z}"zHϷk5ԸLhѷmo6-+6(C5,U7qi0$ŪB2q|+Pi4y-|][ɰ ym :nuBjd>@":$yzbA0[ jڡDC>@iԼ XԺC qH oU6lbܪB@ !o1PH[mc:HQC6DHQ7k1-[[@!XSnv0Tuz5M[mΘIζdơʁa&'`Y DHQ13i ͈4hy3X&V,CR p̯fQ|S`Fyw ,8Xm"F@̀Y)$s`rPdbol5W#8=EΛMG,9ݷl#nCnil˖~y,X_5u>:wfl:m۷f}nqjINq&\FFe: 3+C?{[CbW[Cč3۸?L(T\D:hf Xh7y+-$t$C 7;esQ}/m>rdzI5v]"X}԰3>zRuB$=s&,M}m>,\+nc-O\&f-)]'U6:^K4VJ7D탃ru}y{ B[,U /U>Tw2X1 #]&9,=A`akL 9;XDB/UGJR0S 2KD4Z,K,f=Lo(m{ dY0Qߵ'CǦ;k[V0{;{W_ѷil1rjUŻm}Q(|wwcѿ~Xi kyŵ]\~ 9Gn`SW#nAA`HPFMEY7F^0zK|kln:? |axQ²nͧ$8٨p ~p6 !90:DmP,bbC64XMn!,;o i^ƨŶ3F;fAݺJp 0lumowW0hɑ]')$m[ꗵm6rjr0mJX%cPƛXgu_*[XVP̀n*0sJh,Â4XZ1d0DA@ƭ RXgzPmm0p&G6``,mr.[SHޘl; !*LM:F/r_#wۮ>j1j; |Х۷Ɉw@ƀ ^"Dz3H& +P!9}"ZtJͻ2W/bh*be7Jf kA1SmKò.(&ǻaYr:,<+20Hm jm;e B Yao Bb!A%:ڬ͆Cȁg]˃l0CͰ1޲f!űɶkQ3Wg~qp` - tu@aŔ3 Wğu&/RJͺؖZ-䨣%ՕYoq1k MNԃ?ig;΃q xGћppr_9 $hǝ~d>g/V{,GzhΓ7|DC0\$2<Խbeњ| \߷˃=F*7|ua|`4zrɻfeR>j ضl*6jyȘ_+ek)o:%j{wZ D^ 'B4tZ# ܔ\\Ek7%7^J-sX2R$D "irN%z`2p:;з!BMO;."DT EڂάXվXM0Y?E1\2Xx)915V9,M`vy~Ey#6 U(}sl6Wޑѩy~/ Ԯ"堒5/qGHkhnJDѣo2Q !9us0X'pPzXªCPEpQpPr-:v"}q:+El 756Z_ ^: \ SE᧨1HH\ ֙;Lh%B\$[xhڂjϗI-o˪AM'hybv8D$OFP!L2<ز 'Uuy0xcKBr`u a{ۖ3[S xAS}ð1dL:<(,N ="bbP9D6kDqEO#[z F-:2Nh&$w; ovfPLK F-5m_ f1jcC@U.]dV ,kmk m,j:c(P5B\"֍[cZqdvwj}5- EB;s #(ƀfk9|{Ltnэ)wmY*F[cFrk!c|og׿NQjoo=qzI*\E߁岾o?& >(S uPY(/Y_ _Q%b-]B";㈪6&D3DP͉Hͽyi(jqҊ>dX\ uw3e r/VGfml-G7!:貵\Qrރuf(o>CGեucPك}޸9D̍Az"[]5ɽ"҈ӵ66ʛ 9=H(жtz҂G8r])d0rJ=gzt-CltmqrQĐ!AB=EcOg->P()-:]VKBј246 >n sRcoRKKȝ\lPpsjEkKh6NN.pPo EM/69,y)}C D5R6CBkٛ{^Ng\%(=_&:;u`Ժx=?safy\n-h}}%kQ 7m F4G #m{cz0Rz0TU޲r0m}| ";<4מ=G9D蠌4>؋Tz|w $P³c·}ݾ<=vcvwC)fDlچclrMیtQl^wۮH9uFfac31|z@3?˟ⲋ 87aȇ o۲QKm[v}Kn]k`@3aba A﹝x & ,s`lӦ"WAb E96k"zM۶m`Uvv-9VU蛦f˄)jz]*}]&$SA,^c7m}h7$ p&&C^Q_on` F>,8 ѳ˃jk {,+]!|CYy6k3(}zekxZ6i FyIQB{oMV 30;7߉f1PݱV%Ԣ/Z  \zfuyk~MPxFmc.DX9-0 X1"9A1r#c>@F?rba۸FHD6F(•hvbyL_CZ'.VmFު[@L<خu{cdƀ0+cjgLDfs[2Hx ۴MIK_t`ŻbAm |xP|֡م;a fMZdYfg~ O ?{A߆* E2 pjFIQ"X){Y/zMNL4kz:|\}eƝK[n- 2Dppu_[.fxf?u烍2<ȢuWe:, 1LkZ Z'߸KQ#̷^8𛗭6=|p2Fzp{A_6.2$2Hd0{W^sPV*dM.JZn-^k6<8[{P/U/N %Ʋu/}*̔]\RG0%|`|~prEk_&GZM`)/USܺ!chm6e\#,\ig-6qo1cFX֢5}(y9HeV1Sc0RpRJH GN)'mfeL8 \\.um! ;15^ A}9)(ܔZG[v!j`64(+ 9j,X{^ b5}r^!yD~-V0a1 ;9(꛺4a6NZ9:ޓ%kj͘qRH ԮxG0OKךS7X遨x"5K yɹ(j]%tÅaJ]:8XaQ#slA'L-ÁZĶ>L4ja!F"7csN LTeBަ^>I/]+A`Wj5nںT2vzø4KCVD/]_';>8ZB$.@hy vo8d-Fo $__V ؇cO^TP|3ԷS$!`LY}7~n+|gw7l.OOHOB'X nmĺ#@@D#XvD+^8a{m jPqj8_c ~Eo;K[ `\348惄42!߉2_$!'d6pv]Q-}/bcK YR0Fܶ>۳ȠYm;cݠjz9m` #'bS<5TȈnm̛X*K.k0ձ@1z!zzжjF6- w (fXSwiQ'W&$}"0 űeGF7ݲ_H.RuTNTbAnṗ]$^[)X`jݡ7$۶fi\T{0{0r [zbgw߮mX+^k``Ukm:ZmJ  2!Y-˄Hjݸضu8nǡ {O`YXo 1L,jՁjAt9 J-_뚖2nm@ xw1 7PF޵i=aeᱨl"(gL.H-́F ŨuIm,d 18H܇ H$\9C1dRsP1y >%9qP- /%0arEkO6o"0,'=٦/]KKaKup^2̍&'EOVf:tL8pІ.zۊGg.^Gx/8ڒ,t|pCu3͈F5CV}iw(ÃYNZgڳZve{z5+R[.-D8OJ%',]j.6}TK e7]6~ꌴj>53KFdL 37+{0hƕwHn|ا3Жf>5 ;[RkraH[gk JSbk tVj6]өڗ=Fʛ:n2;csoaADKVT>0P0Զs }l;HJKP!yXn>< Dn^!DZZ9(u9;u>J-D!ޅQbMB CER[i=&n]#,ѷꙔjNmx1T.IҜaB>IɃsax͛Q?AD͛0SA}{-aBhX" & kcÄNd=PH7& :+EEqP}3nJRvV-hxjN^Z SH3uN $43Kf_,[&v00Ȇ _MI}ޙ *ک1dp-;*!,P{z=i\E,X}U(SHm[ݽGmc?S|n|Pd~0m:jx0,c6!zڿuĆcUw%6l7h Ǟ8"mꠋCpGavȵqK &Dreb.dXjWՒB`no&"eڰu(F.2H|_ V^skq [n'8< b8+KTy*m{!:|g_ x/K #VM;ʈ- Zf $3{* ɀf Qjg\9}۾EoRfi`5@ kau֬:xh&j JTfvٮ]ao1@_DZ7=` xsy_XڮM3B21%̶m1HB uAZ"/*"۴u-=hxC=JHζ]"gQ˶-yJsZlm7!r0 [zȶkcw , ߵ6mZaჃqː5,\ L!"2f2-&/E[@X>0h[&h}@jސObe#Llٮ]v1`XɠE Z,˄363?aϋxjHYN*M*]y0Q\f]ézf^ZG^yݶ#׾'YhrU͈``wEx<.=&;Urإ_ޜ4)˹8/F'k,=?.N1Q8)|Tx)k0տCpGr⣢H/~ 2l|6j-zyPʵE6Dh26NjZ8hsڹ(ѥ-԰SvHak_"lysJRuq%P;][4IM9Th|Thwᤈ7Y/aŠwo!7KcSK-lUHͱ%dÄ rd S83ь)f6[>V}dC=xF:vß:KdY3pgkcѻh}=l 9OC}![{p,ؼ'oYG KpP8r6Ccᡠ_+7Xy)dgڳOCヂ#EuDPgڳa(`L{]13îC@(z),Lj9AAc|u\%DM0ƕBj2"58&rd P(ÃԕwYBrȁcDٲC@/3eBٴ%:,;s\=`.`X_7̀`bQ=cm`y>E95prMbaYojMzT,;Q$+m${lזf ĀfU3(Hkl< ѣAD30H`!ߨ#SAª[=5_ $M30a @ (2ѷd]w~yik"lH.p%,rzŤ{/ejm035leX0r}rmg۵C%@aۖجe;1oHid!LIDCn!AXp6oɁdMHFj]?heo:艽qU^,#P荧6G$ÄpY scpbo [(.Pa{\HYiRQ2Ѧ˃ j8& ,!?4c`Ek!\f|r֯&  &#ŵǭuzDd>ZlT /s6I.’9CDޢFr.jUO6J.J0wp\w'9].H(.JD`RF-ȹh2,H,[PC62D832\\BQ5}HH͐.bK>,vb_LϸQ =[[aB)6n._[K#^-T+75 DVі!Yu¶1y{.7 ;jzLQ< RF5>5RKr}8XޛNJf2PQ4\. !1 !B;d&߾5@ZP,(@/ =f!Lc ,HV7b\k>l'?|=Ϻ{%  ˜A;#zt}~aGsvt~\sX÷} p,c!l1@[6l#O@ !qUmDm6UD@Y=kÝÏÏ eDO^mذaݚC.F*Hf̆ X]ԓYvjӖZ;@Xkذ:|Ӗ\3W6[@-P&ÁN Fm[vDZs((b~\,'xٕB-[1F ֘1޲ P+Y+Ѯ`Q@ڶk띺iAnaBdf=y.ƨ 3ImZ /rjaA4d)w@2qeBcm  $!@hCd0$="̭cʘ^  <#C35\6o\; ) kB&4(!cݲ ۨ=4˄[Nce`Hn}cPLl,|=٪0V7zjiLNY]vHFDloݒ,Z2p1 `+[- 籮ۖm. vPֶ7 &ohXbcK@0Ϻr1@8"&](<`oTEQ&wjމ(ꬋ"}[cb+ե\1PgܥoK0a׾/\md:@Npp{T\v?O{XNܣ~f!rh0c-['e\[ a9PK.1h  iiucP(Xi1`o+ G`&zXʂvJ XrrZ\[jm|I׼@!(]Z* Y;Qgu1Ъ]c$7ѷl*tVn-V; Pgm|+%'nZ zej5BDAAᦾd-Á"k==NHɑ]jj*lF/ENw1S2\]A&tNJn\:$d]\"!=FY2Rnl mJa6PaBC>ɣ_j;dN[u1*EHUN.,E-#K^lTrD-\.ɲ5rFJ~.Y\v\!<}ٺj*,Wg!A|8fN-F;7|#9wKtvƙ;u@͡bԾ\}Xx#R-Y#iS^ςuQX)= %G?Cyh ekcGO˽1 y x#@-E.BIyA͑#!r[#&pGp=L.T5He7)mX Y*\xfߢu'ZmDjF-[K!B?}.=AA? @^U~<6o a,kٱ?>ov֯s~h89}e_1쌳f{㐀2Cfkbpbvӟq@HcHv += 6_ ^OXoOf`.Hf伇dn#۲58&P,$Q; suuZonMM؇ =0 NQ !z p֦-!Bc~~=`ҫ!C@Xi۷ rPzQ[]ɨQEzup%SnmZH.0ĕA`Ye|sPVˡ\%$Ul(% 4l[i&WE]lIze Ȁc:LmF`LYr) fDIn#'1|;B꨷c9TdDި}(R`F/"M͚fh۶.p7-HfPL Zs ݲC!cbk\ҋa.߰Ebӑj %ª UGHp,).FdDfn[l[5ŒF`۷r}-[$Ќ&O S0_ m3ljjȠ #}%±]#fgL48TO£C B֒*Vmk?9r8 V|Td-SO5РJ%4-7~چH6 2LH>pp٢,ucgcQPq˗=oHw?rO;zGRlOF:/'h5fx"!|4sZX=d? NJ$A|>jM BuDeSW_sQZy)9g!afupnkwqkr;.>-ș)-}FmF*MޝjM냕a2Qak,[ XӇXqRIN-\3P`!rN Mmg}0"2(4I}wjg{ogTO.%E’ e:{DrBweɜ9u]ZjbOk0khPb*gFYNS }j)3S26ڸHN2c͕"j$D8)jXrѲ6&2dh%l Stmu [Jȝju/{ /V{ݵl hqj!Eҧ&ƒ }R5IH.>=DD ->JJ>AzDDVJ c2ʻ 5-DpSk-FʂL(4{cev~aK2D2n"cpR\U#a|-dL_#}b1.QQuk'"!fbp0ٰQ9H8\Jfl TTj&@s `9 AAͤ =s;ZP'ZI;/<V*cKwؿ>?s?;7g33gEӼ>s]w=GR9HX\!"!lܪcSl2@ybg,ilذ}ˍ狍q $l}o]&Wz> ??}{.~&zܸ!6<藍 "aѳi2  ̮ƻԍZ3@9A0яțWa Ṗ T AGР \= MaظNh5|Q[^2 [:8BcnAz +c FMDx'o]$ 2"G]e,ۈ)a.]Adkx'òcXG.S7 }rҘDވ6@۶fcgȩm(oeuy6XƼ]Ļsڶ5`|:6a!CSVm _4wب Ģ'Pqy㙟a¡ B+*!'ls>ze}\}\#^sxZ1ҶҘ%"1)\~CDR? _yJZeA7hGev>ϳn^ar/z{L4iT0Q7\FJ\ks0__:YhQ0FHOus6ݞl?ȁ:uЪm}<=0=D:0F`kZO !յ(\|ȐگZ0S qӡEXFBhoDBD-זF4>JnTr:,;ٻȇb_ =0b-[B -$fm,*,eM_l:X2@+8ֲe0#YvDm)bڐm}l۷ƈvPcm(2$,Em \#gCŲS!^E 0lxזB麶83EԮ?4HL>3 H zv0ЈI+X/_cK.`Wv*"asQW#ex RG.C++Sg-,Eg&J4 -Rq/e8PCY ( buFաh|SI/jQPaRj{0Sr.DZ <Ԯʛ-[/%@af:#ձ2$xiB"[6/Z U *M>*ֲ3F>\vo1ҋ"yccrYl""j ZPʸ[Sw^%tj_e{ϞRֽ۠(}hzPjHܹVzߺ %CKYi؇ݹk2``,]˲5XROsqQ+%oQF}Z'H=P=y `ة/Yw L[{,sQ(27/̔n o`cVAE']0oޘF/L|}Я@a(k" m[6W_?S"P=+~eBT ǵp;c{t`كÄޛ{;iz͡R{q#{y#~uj7 !إXupL;DF^۰Z!zyO'ǵꡑ/쩮/F}}}zR3eAZgO.U1u aƘ&6k{O/"z2V*oA2Q#D f=5Q6ha\#˄Q۽qv~Ab318۶2,$ 9nˡ,U؁XDd#66o#̀f28ܺu `DDk]:XXs@Y ܯc(&ݦ! ]biLrTL{)cdna6y]C&B>H(pL068[.amXyX7=cq opkM[`jgɀbfgL^LjHP܀=wTްh2Y^uaaK͛[;,K5kuxh` XV'^dr) [:`H +(7ڮ՛1z 4R [dHv&vlC1j}Vʭ& -inň~ \"[a•W 7PoC]G_ut%28!ʘZ{NݫW?1<yh1:Gfz#{,៽o;.e늼H& 'qkaA:ZÅXQǴaBEsьhhݒj/y&< fTzJB-<+:ThS & B\nR(.Ȯ"@hÃIK P1RaFM,JPjX4ge!ons 5H8_D~P٩pQ'uwC_Zq`C-0SaBl 'BM>4hn-MEMpx'2LH#%҃w9u{7T{[N# C ^SEGe6BDBG$=CHpQugOF.ȇ۶"c2XhP5&IZ 3'"e.ru̙XiNM&\X2Vp |k[ے]DD=[ӷ7aZ.-D+/ufʵA,KO֙fҪavЇۼԝ[J丶w֕#QTlFgmVL_yѡ)]z^MmU]kp)@{ ?aC 0ph:KoK$$zEz3O?拄 N@;#GÃ;B7\p,Yo0a[spk*X6HuR <{_/4cmaB6l`~d D.=}{Zv.Ћ\޷8 i@ X#mEIKEDSjρ6pF +wH6@0Kmlp.mVH]&4ݢ YN]2kcySèQw30H\ٮ50uH. NfmԼ # M[Լu  fPoΣ6m !6n}6== 6lep l#ր!,{u+ 9òdyKma]rrLdv@ȁ[@00-[jJܺCd[@f1Nˈ )0KEBc+^Yw7`YkpcY}V=ԥf~,;@ paH̾XkR(@0>Եq+ u d%ƵabԚf-mv3>HCό;sv[\t%_z-!extm,9(CV5QlQ˱%7KĔQeDW Äm. &68qQ8 .[μl:Լ@%l$ ׾lM$GpPkѺxhH Q/IfolCJw *Vw;sRQDmrb1ʫ*%;CHQjSc0bk:հ3O ubO6\4E@P Bu R6RCJ.] D3hl(="AŒECpQ]B.^M.1Dh+g` S:&w]HDGͱH upώ%ksh[cE[⻖1Qr5us \$orR<$}sm,Y+M.WaC=w4&Ghkp+U-C" GkGS̒%B_7E=ȯ/@b5߸[~gQAA'o Ã\Motxݿ}y K%ou2sWᣟWգߧF?SrуO.?!Bcܜ\!2QjWڸ=T(\ ڽdͷ)YVc28HV7-NJ9LȰ 'DluU8u["H}h0Ssd2\53ߚ|4%S;%ztKcWӃ:Zk[\Z*"-Z4E\"DNen)M@aKlR5,dxЖ4X"oQ`!UBYABCpR{0[{J =ry3"2+c# uzO4z%'|(> ek[v9;M60bև6 [VƢ|qRxOₛ"sp1nei 76H=AB"'Г ᥕ(}gAB\MݱX$T#-&ZߊCKGO\kȘQ$Å:@fjyK\M{DبH-+tx \= #aoQY(ѓk֓B2"l/]{9GſCT[|uL5D8Lup+Bf!&C PW.?/`PmSͫmaAlBe:+o:r%;0`(@L񷡧o~׬%wl*,;>ecqC =޼HJH$!#断7m"-[ aM~WD8h5R:)6l bP0gRQ2?x}:a/~ދ;P#%-Zr4A%۰Bp1Yx/hfWMìg28FuB"9 "! p[Qv-53h1ї^-cc#zs0FMN=d VB@Xvv-r8fˈqFXm"Fm dE_-6,3Mi @c a"̶CXmH"c}Kn[!nF2=e2mʦ'ŐtD`Zj[C wrɩ![tT|KY8 ZpL; ,ű1Bޫ`>ANBLHL0Ґ1"oHl; ѣ[)e ŨF߬be߯"!K +O3d6UL.RWŚCYDz)>Hm{cfaŢX7oVd7e|SQ Xk6w&W| 3Zmm9$ۈUŚ }Ԅem1$h ` 5]"%0$ C.Cgg sOeo6.J.#|T\4kzC ĥ\[|x7.hO.ZϽn  fJ =q'=>*M.;D|iƩ$>\#M/v-`EBz'{pRP(ltЬy':=}?>PpRL%(V3{cסqkom:d0;K%ڰ`B!yөEm"8hbmqg j2J?dÃ*A=򆍱 ?th* ۬8%T}~>*ƼI˩E N"ESxC /1.J$Aш]%t;Y3CoG1'ܷ%mv2ɉT d=Zҡ_as=(6zϏ:uuzew]pibi9>1y->w?*Xq^$7N dlF38c bi}'m_ll56 }ncqk {gǕ[Пzk.C@W7-9cZ៻ n?dv ;XD@1$wjmC58h yW]507N,k/DR.K9 a͋u0XhK˽RH8>HӆJxM\V9+eА+C6.jb֛?;;l4b˭ 660QQ&iʰ` Gv"}Bv+0Q˩ťb\e3m-V+/72V.Z.-ՇQ[B>TXk_V?)g"j-b+D J܏ S 0!}8qҨQjcMRpQ3. zKQdҵRF碞KpQ@Hmwg!btu3 !9),]w?4-d e+C⢕/MemE$GHD!K ygo{(pq0d zy*FZ qDJyS2߰sn=/?mΌ -P oKHm"!B@ $<,!Y(;2OK6}Z| N$i,뎞rŗ_6u!10Рk?7|ܖߺrk6 ٞ%3G|ƺ4{%_zٺ,Pܭ;!"̼Ӯ#Ab F04 [yУ##86ޥg 8fiM޸>}=-,s4 p (T(f@̦́C<!~"Y|ږm!流jQ ¨ ɐ! 6 YMc!ÖjS2HTHv(auBC)z5 (۷6DJ5RV0j=$V@DA"j6m;,S0^)v(ng,]%4XFl2rױns\4eThV{hї7Df T."b5p{]VǾi{|uqD}M[qB0F\ !/ Ū+pm;@ mVl; !`j Kik0#Fec !=d,+eBި]&닕1.:0Ṥ'|9s zoQP!o'0\ 1@ aQ%ϴD\Zn\"49E[rZy$HX 8)Ҟ/\ӓAU9Cmݰ}> Fm-6k5²:^@ )3Ec&{q( LJwEX޽gk*aP8ir!-̟\$C7~k%W[s/\9DoQ:Go~GQh2_v喾5wgҁ7\~A~b\qK0[׹1ʾ2KAj硕MͩŖ7E`4{ԝɵLuPM:4hKװNޭkr[&׺5tK֒Bɕo\[2SY?)l\'EN5nklSK2[Ӈ'uc$5jc*^ T:;ƶqRLH`"x(9Z&,V*wSI%k oB4>Lw"\P-Q60%S %u")ՀB">g:e,aA"ulG_僄ӥkdldpPْ5AB1&SEazTVǰF4.jD7FCGg*Wn-"3˗%/zOӊnk̔kYӛRqD塼BEkz=Y&ҳ HF򶽱.\1=[&z-g`J5VIG08 J 9ڶFlfDza•fqZ] eH̢H1eW U Pa?ƛ NMq<pi{d]?cX,7nsӶSmU9H(Zmն-p,m<3n\A5oa χPyJ#mˁ7pv " G֙z/߰iK<]p6ziW:,k܆;thFD !Bh~`2b /6,k|PM۔[v ߴ5Hmwd8#}궀` ͲQmŪ{#;WvЗXmG0s)(|Q $ASg}΁B$dÖhƨ˺7]@S6-ީvPfm,V HFoA^wKyޠp,"ʷz/8oa3LߔUXvxڮZ +ƛ }B$1d 3056j6j]-:M= 7j 8#ƈ\*4( |r*PZM$GmÄZa%G^ YʡX1rKc+F.p^Ӫ#-Pl|  @-[ sja6Hcnцf%c2h-y1 ^l;Ԛ#sٲ/5 `mpfv⟽ %k-67lakdƒcg?Eg^:S(HH>iŒ`p0cȜZғض4VNJ.T/VSapp-?RN??wr@KDC\[Bh ױh# s(wڒK0qkl&Ĺo?;Ͼsq3;Oz[gn? F e:5wunM}Nj-Y#zE}:ީax10IMc\$J gKHبո88);ZPRzDjiL.>THh u1R,RGM.ryH>EBjruhq6ʷ0P]&"_vf bWtN"1Rvwe=m.ր 4sʅBa"@ĝm(2זӳEka7h3'"a\\0Pwoqu,ZxS>J$>̳rlM.KյdݺL"|tÃrR Z(='5oD4F>LF6@HnZң(t^ 63]=gPX)}3-+^j1ȧdWnW %'"K+ 7r$ÄN.ȇ aFCB:uO\4{ce}"bp@8"}rjY/ZeÃ8Bwp7",ԗ5'CEE_(ҽmSpw xvnq׌ ʈ͋(޼aB, ABP1dp.{=%,4x𷮻r䠍 PB@CO'<.蓏,y>/n(K[ܺa»&6no1H-e<$SV4ش=|F^zM}kk6mftPY o9=6l9C Et7m 8Bw0 o 8$sG>8exP6kyh&E24(Å9A”;:֭e9$+pgl],kf$~:a=;c) Ӛ<$9j04LվH񍁱ڦ&7Բ4ذ4ٕB쌳6(&y ҋ\G~'` #شD2(ʈM(u] [RH bv۵Vӓ8|`Kd0k خMȉ2eD" 5[Lk(K.WspP5 ȩXrȸ辡߷A'M0]& -VZPؐsQM{5N6" Fբ\"8nk6b's9TߖSV_z#OXQh2QGSl~{›'Hϻ9{.iq=~osv%G58XZبcIT A\!YVc*Aȩ`n.,Q6,}ٚuYH'N-^'%sK 65AD9@胃'BF˚d:d9JAF(>ʷφFEҾL`o۶.>(Hnv G7Yw#ڕ~}بsSZ7%X ^yI\Ә鵇?oudrV:V*9H>LA^N>ͺ/1 Y؋^pŝ}ݷP8r}g.(8b ({ :a˹HQ;.OϿϹkIBavƕλkAl'rP0 })z1L|{Kw-]&L1$_v④VI `Zl2n 7Q#d/j[)tpmܐ17t[ 5:d٫ZXcӶj*EB*(ւceAM}*$G@268ր0s IP&9+z0"6͞-`SܾcmH15m:rD_/:kMoov&+U艀_42r!BXlR#a2,h*U=d>04^*s`2j7Ū{BM|k#GeB$v0B1߸!+bު=*.U} 'LzCbA-L5m6KFj[vV}Ch2YDٶU0f,D) #?Sz2E–1=D*$%Bt t6@X>@hoFOej;\8)5sTGD$(lyO& eRujZPDS1Rqkn.ZkĺX\ t\JQ Z\B!A5R5= s(4$l1bpL(S2'63\?bB?Zf a/ /=-~SR,e#jزqk \ٝ ơPe6čk/ۼn ˘F5TؿEb5i^#LH,AYlEŒW !۶bmK9@0dԍ!50<~CTyy>z;rZ1bmj붝3zЩ68{/ 52@( ˞lע6(HFz2@H4m[c!avPcK|c\ +q@/6q3̮C/Cz;  G\"Kaۡc&5DHP&B;̣4r`:$CQwHntURhYtD 1ضns u]%D:@(56epLbC4c UA1| 8ABjiv%- ڶi n2(r@6l#3Xoي1`,nu4e1z/ۮ%lRKʈǐ w]`-:Ƚ0fz1oʃ> ZN!BϔY+v xAA`:Qƾ=54(Zf`X7][aPD_v!`L % cjd6T*JgEs!eE`0R0QEk8(yҒ+Era:$ycɚZ昚H.<vj ׈ej(4ĻEB}#u&!Y6v*<ԥ9;]L#O]a@K3d^]0238zmR<*KakhV)  nC6h +7o֛oY%9P?xⱿL25c& o %B@Y2 s6`Y1 H@m_~ՍI Ɇ-b7\0rHl(X*/G [nRET[#֡_[mK6]p6zȊ:FC7r|!Q` ma˛ANP-3''9S-om[0txFh[m6kykmJK.fO%KCQe.PF۳&l6eL/28h ޘduA2@ 8̮by[y 0| u!byGɰ@Bcu5@ؐYPw3"dգ&*:=sQSZ a|mGri!5hF. _q6| & >JCp] *|t~*9%e:퍟vGϱ%n-(C9H|4 /"aѺH9ϻgyrΘ^zݧ =[>ɳq\<&jՃf-%씘+CcUqu梇W_ABXec5ާ{bwLSO֢5V>j ձxhC-Nvhvwsqi_#7݋싣GԗI5E䂚->H`2$Rr(=>hj^&*ԹTI0L(-Ä(̧GMuհMɥg\r@Xx:JWskA®76 U N6 6J.⵳Rz0R`H; \6qRpPe@Nƨ.*?%[d8Puk 5iklm8 Bu0֒G[&.ҧFQ_BmڥU;mʲPkgv68]no\WEاR-ꖽr%2!1QN\Zب|ӼG6jK5Fڰ3~Ѿw΅a ^K'uKcHh z~qKT ѯB2 _?%vȱ@L3; T .kn=p> ?c;O &T`z]}~amǃdXwqơk'l;Fxq{[s)&ʞ8ɭa_/9 3C2apވu}܁olN~ywsѿNk wy9$biZ\yC*,xB߾(2 [a軭1E,k& [kce*@-fo-)#O##h tWRybhKal-%,[F e"uXtXuj۸ڀ\)!c%jeoLeFAt!iʑlؒƀe;,SKc|팉Ő "jB(XЬޘڷnb !@@1WA6 :H'rW6~:^1Hoege,ZfwqЎ`9Hl4l4i=oh[.Hʢ.W11'-#_LP2}6|5ch-6뤛ϐ냽ZFzunZ냼Q{K !+-@akpp]3sT,SkKETÂ%Y_#L u'\t\"^̱A$Tz>u +5Fڱtoi/ck  "4&7e_9[͙xnoL^E"D0P[N!}3yLу{"(d'7&J 3 i bs #EUbP˄D[&C᧙w' H8%/Uٛ^, 64#[sy ?6ꂁCF3Xhj[++MsK7xFD8L{LnjD.Fgc-82Pc.z ^Mzkd& 5 gVǞ`B ?SBk=Q'([Vݿ8քeQ3TH;gƾ$C@H1@c¶v'`iۑJP6qp!7lW޵-Z@Yy#چ~8!U= w,L&`1P$ӁBcif=5kFr_ƺ4K䎀d/`>DX(}X2@=em%٦-}`L7eObm2(wSYwje ]G!@^$2kc*@̆N h*&ۈ:, q^(t@u{P$J deEF.*aa6<"D0 1LHr@w`FQA0Eߵmcnc9r^ji,`~^ZS`,;L z/kEɁ`v0{ #}J j.fV.1{Դ19Â*7@ @v|b Y6 L\) Q $ڪ; Cֳ̬#Yþ%B`X2ěƔ0vt`!=aQgVA^Ljkx޸crLm#YK^"QcaV'ke )e {e냅|޹k°RԝW -y ZXÄE8 Y E&'AwpnJ7zD=csz~M#OQe듉F#]?e|m4e? Es08l&#epۿ>7^r5Rt;Yxӹ#n~L:{oXi)?:;ׯ6#b6w [ .5G]|C`a]"\)snZ}76{YsuЇ aXAɵ&r6R.V&_먅fKMUeMJ +Z_䝾-UZ,mЮEyW;G;DhÄA=ry0r& R3y(-Yn]$kws9j<\mrL{sF*!S1jXL6L4&0Zh V^n-w9HnQz6LBa2PrZ׋Mk_uE $o9ȷoR +~*z]ÃDd-0Ҍ ,z gv#c~}\CjrdÃR5v2ݶ%/k4ޤ-;۵d0 ;cz B-\ݺU0anAfqخ% M[.ԡB6P惃cK7kLvhV۷DAT=`Z.˚H[+z " z/4} pȩݦ$۷ țA`yIlɉf:}GA15@̇ےoeˆ-xָR(C.j lݲ#dܶmYKb!m݁6}jdeheKd:@XLQ1LB@XӮw߬IO9?sKF- ?7#2XK0PEWq:"r7ηpe!QD-Trd-%NYΘ.; ;FI0m]guj>,4sKwcg} זXN61[tk !n-{Ēu.>I~ٿH0,]cӷzoHpGRo o9㋰Rh(̙%"̓\zV>`mwxs8fاQ0FNuqEkz {c)'2&j4n2S]&w%,z0v}$\^ڲ6s })9ܓ݃lZDvʲ5=&5*'E+%Ad/U@!=>fʻ-\G #OI@ :dpDujh$/5."a6'u[c}19urީ¸j4cɑ'W ykdTnJNfZU^ $hݺDjM1Lض7n-U $ Kub\Z2b٣o9 Eߋ jPykZk-s0Wب0R"$SuV36ƏbB ,ӫu)}+޲rQd Xeyc ܦdHY'|!lvl}▇}#aީohho}߬nٺ偓G>x{fp3aۑJ뎽" PÄypק^]^x;O@1k] <8w-M}#P>a_qz@Hj5&!€]wbQ@.ئ}/*լW/ &_:@Wg>_}  v[n!6m{-ˇg` m1yDdnk̛Yxt-Q0F vP\$$ ]"ȭ نm;wێEŒQD(DXux 5M2(Hm[V[w co =@3eV;'`|J{b]%"!o  (bakԢCp,e -'¢&-yp,PazaDeaYz` b mؚ.A3] k ɑ--u/"9ˆ M:@m6r0rj"r(V[D zEBM}}PԲm\Э[e@23$Р3\l0j@0}}xP: &l~ Emܺ ՛Aڬ%Zۢ卜h  :DgAB7fhۦUniLAP,c@㙟".\E0R򷞽0)faLAA[^u'/m;Зk+{sƯ%#M4/.o0RJPbk~EB\[B\%-l{Ըc5և_ϸϻg(.-'W;W/&_f+8c+n_LX|~NKx/\|k\#G'_as&ڶ=־pQ6'um`_C*,emWѣFEoPspVo(څ3< jPyk^$T>*KEb5}b]2ꃃ#EnqH(9EkgfO@/Лݺ÷m=`,CbHj"d}۶; 5Wf=Eo1޿ԪCp;f#Syv{'~] r[~nݞyg>y?_:(kcz|۰ G@ :um;Vs_jxPԶQ!oD#Zm'wX=d<ܻι[w#Gƨa]%-]ƐuLzЇ }mC3WaF0cnq|KM #"8FwZkoH3h@!ܶnSu -@ش6Z;p@a|#um"`JDFT(SKEjm2P`ڠ J\h UmGEr1ZcP썩Ef&$7{ fo eÄ32~m _[7b!5,<dLnsLݲ5I僅lҫ} 4#[fT;c Ծ;^`u[T 5C۵V,3PF_zM[:q #$Me [m-2rcqkp,DdpQ$C1uoz%vaL-;bbv{S%79/a7UY<\`]!Zaa[ux].cB; ́`Р2ٮL3?3??q\o[Q(\`~[n-˩o v,[@yȕf/9b{s+ǔ}– }LF[^,O=vc{1w[2Ҵ6=8z?8}bKn{`]'%kXql0KCP8i/3;ΑAqlBQJᦝT㔑cz~Z\tEo;ַ²rv9/M6X {lKX(q넯"oRxh'7bDDv5Xi[Q_+P%BLT(B #eX)kQPšE#[KDri7ag N 6(HNMtK㖕'ElgAS9 ZlKdhZz{K0Q&g9,8)yn_=wi& 1T:P`cinZUB[vP "U~?ܱ6J]KOWBH QUB46JEͮ"z#z0$.JBH ˾ؖykQ:-s⤺t]]"D# + ԍAPhKK;بI-:ax{pRdovPaGyEȋJt$b,TQkCBjT6P>TVofK`1 AAjCD0NM £X5@r@@@޸sm * ZL7k Q kEM Y2G/e bs\Q8ѷkͶjyA7p[m}%OUnW%׷\eQr7o ej`.ÂZfa[3`ncL[v7n-Y7ұSYN+ް πao3CK#u>*ܲlEY5-Gh- Ƕ2!yD n:|@Qcpm8ᶋl1DH>7 ˜?⾕+=306&jxs։3-{}(Aणư˯ ERR]"}.U6%/ g>MC/] BcL 0!=s=h2R1&:{:/; v *:eԯҧ."q>ɥ`,O %Iș)|CKuBq.ZjɍRzf.\ԇ '+7vvڋңKn^ZpRX6& 6'ܓ(". "x.WPa1PDTRk zql!$LB Uei,Q8(`HjTԤW 9X 64=6>^8_#D2@H4^ꂑne µ33-_OJBݬTjXud/}qES8[Dc2 59AdPLc"zzЀX-` EMObc@曶.QbK h aaFj=EBWE>c13SEG8\$ڂuI?X42@H4"=apІ1uHy(.38X*^./XJ_oe/3y?+\Թ%(v0d,f Ўk)uqgZ7'{ngn]y{Eww6`6@#U▽06Á7n_W!5{oY{o<1 ڣU9W*2@agL;d" DS  u⨵K;8ɞj+tP 89{Ϻw};]pDŽ/bL5ipaMekLO3ַP4Ba?[rSX iѺ߫!}-W}W"7M593;ev7]++eU}陋zjب[7űs78*5Bzb8v '!=B|4\ң חxxp(", ;5׈0S-_SMAK.-⢰PjzpkՂ5y0Q9HGۑ =ƀa/VKgG]\JPuᤊ}yÅ(irQ QrRrh !BG >& uPC1QcٚAC09FLE\\!o3uiRUC;נ:C 5<8&t, u3p7Σ$ 8#_qPB,#`w'ɀez>iw?tm\'$b]){C;5c+o'yqm `L,51 (Ԁ nx{6O>=q{O+ @Âie!qT ;lѹ! ɼa ZfyqQd# x6k``@!RfԂ` QXM((w1@.=H/jN^5g8V`k`y0_* ܺ#eg@2"ޮG^nv>KCkxUòV( `4fZ,;tPMl+JyB_ j`0j f=$ +/VMN5GZ c6l'VbCʞ!%zMEBuPDҧ|D Z rpy{$lt+"z=y0RqRDmcy/J>58HNDp l I~ ڲEK@lxK;&~DQM My0zEEkosZZMDKdMٹjb(cPtfVgy(9}!ŠNà DkAr'.jP ֖ӽ0 cQ9i GGLwxl6*K"+c](^HL...Dު~šL?(f~ⲵ Kg/nBaBr2XXʍW ]-s!C2m(@6b'K y6o+bSƏWS_7O|gj(Xퟭ|~ss\ @xlÅH,ldžWC\*@Vӕr=1/Rk6rC2L>q}n- fPf {6}feM VDHA0^yB2 μa1ҋaBoK@2j1)ٴe0zsVYL CUMma[\(0{H6էG\!ȁb*4$ 6  u6-.= \ }qM[oےG x#q j8F[`RA0 v@FU/-HKm.Az_q~RQ]"ࣱhMC9.QGS|.Թ] cE IaDK,e7 = T63Ԝ4{:.AŅ[EFK|`ABX) /[{:@!2#-Q[.WWM$G]ѡLGDIbBbpOa>ʕX,d{oD5X8R(fmaP 2UPx*u.}bQJL]ycFQScGK$\3/=hc_:P,5߶-H6ի_6G@]#m*a_6lG UЇwR=Oy{۸cu e xSyy橷j}v+>F]=OC] HkЦîC yC!1mmyuGK`lI?yͷhxpX@2X ,wa;۶ FvxPU{ 7 d9h3Kcr FM>cyвUu[tqag\u0r^ ix0d5BԶƼ ջVƩ(D9 `L|c,:lA@6X++G NU 7lQ@1oS&-꺡 G.! 208HK%SqPp,϶l616X0+,<b @ KcY63v+q(kz8ÃiYLnE.[ja{ #/g(l@ baKaBC1ިTKeeu10H.@ZC Ũ c_#DO E !j-[ ݿ\Bi0aj޳7,I\aA7eۡGd6Ӿ#uC,#mR[eHVd{Qq58a' ]%Xwh0ڒc[$0t8x^2ypPrq7r6Bxh^/]y}|K=H8x$tS=tMQL<8*Pw^Еv`#{^{7򑳓n]//\D7Lz))ltz啹/y<,y H{q "O Sfj6:*ՙΖCL58!Œ(uP\T 1H,%ީZR!1Ly>Zam[ 41\-%2THx1[uӯ88PyvEBk|S9ac\AB_$$'26T#Czo-Tq=_vYBRG_Ƚذ}RC=T_￑]p̃K189jkcmF/s`Xzƒ0#çyoC\w]6Kc14^ȩEԃeM:Wd+ڶU.8&@UcY M50(ݛ!1zQ{PPcdg\9Ws1| ͮ\uO-0=k5XMۉm\D(3b%v0TX kc Y֭8淆f(.N/Z1HHMBoҪڙ m6T(f޸*!}oNX c2aE ۾F=:lm FȈ! y!B-C2 sU5=ot}:"NLiA 8OlMvƂd萪M ªc67lUC=fK$C2"1YƭzZ3`0L۸c zXpŠ# BC~sc@D/zۖࠣFx;8.V5,V*MY)}"8l,K'%HWs;EM KMQp\ZpQjCJfefVNqD_&a²1^NaB JD >fhheR̐}^Ard+cY3D^5+ H\Lx6騚H_Xo dQ16n+&vP˄Ȇds8d*6mW ٺEYSId,G-MȫU taB$Y1lq^(Á޴, v$(уd[l:im6|WzLH$ B=0hc$shְ6ޤv!wV@1rńdw985ٮ@9̀ gF@!m( SpڛɆbH=&܊$D $V-oғ1,!P,,:R ĴAU®48^Տ-[+F˭[L M7ma qbK̐,KxapP &lbcL]i[8FσQXGھ]ܮب^0B [94l'`ٮc:Ll\ um){Ͻ.aidś\D5dH"ɷ־#;.ˋ'%g8p%.c}c8-\^:q)<#F[[eglxPrS0a/Z"_bҫ?p\J\ `]Wf K ypѨszf*;c 4ޓZ0d)A& CpM!}g'Eъak,fj^٨u] DV>Yhj0x9)C:cDrQS,Y A I6+eli<,N-Ko".. VHlFj )N񶎣G԰`+$9[ akea¨j3P Ri8k[cb I3{6'%Gb j-SlX\-W׀ z˶԰Pzk j_'$F.j雴0^4# Եs"案o8aR/[/hzrмt~P&J/\XN-CviiNJ,nͬƸ$f %*{,Pk`^XaiuLNT.٭Ə0X.e}|s.:_U=k@mj!\$0(@,Đ 5|#kűrX\$lv#{λ~|;>V<4rTOwt] #!ٮaS{9/ow6}AFA1C[u[w,Jh{e"yp{>8;~ݸf۶ryp~AA‚ZgQla2 95^ɦ-!m݆# o/"KP98~آ1 .J޴%/®ؐdyF%m[u&!Bo_"0%{DϹmYKC+1ʉu{YlgҘ@[΀_-wƴml:<8XҶ-+m]M F/[ñتz2H(m K:U,Ҹzp6ȼm=J5 tnm<;*$=b.W;C- 曝^+ro7޳qp)' z|u[cc5l:T0aKDC ÃQ3[B(Ãoד1x'JsxhES-ZCɻUI\4Trl!'"gJ[cr ҇RBFE`QG10Gu19ɒuJ[Ճ}MmQ.[chly 7 >4X)4P!8hGa5HjJaAbCOrNfPut]\&f|xQkgGyGmz=@QƇVD,YZvi"!}zԺFآ?D:).-C=@Zy(}]$$"8h"DUKkײ8Σ7':zP St[ep7-Xkb.(9k8i0`-&Ҙ7 {x86T5yއ|=$:UH q>xlk{v7|]{ {^|Ο܂c?#Wy|}s<۵940cubĀaY_PdM > w}WgepCެmP&h0 8 0Uǂ1knّ"`!qiKZ},,:G1zauL\3& HDaK-4ڸMɮpL,l: EXs,lRXc@FP(–#{)9K@VS8qoPf@17p2 S?@YجmXֵe,<"LXV}#:9-;![s!l׆I@/ 'lD"򦫄@Q2{ ##;K"0z `!Zs S#ꐡYjԳp,zԀceĴﰼin7FUFZv8Ʋ :(HF^Å8^bɧ̛lע^"DԂe(-" f0@YqN`p0m3s {ֿo[qpgx"aRyhk.=< |6Ֆg-.JND0Q8y:\: xBFe;>w}}׏ys9]:qΓ-=we﷾ͯ|/3ࢰQSͽ7nhY#PFQqR|4\-%gP%_ċ\I/{up棥A% -wD-^JdxP ֑kP=YZ^5a-?+N@c6 hJ}-[@CQwDH=PHD=\hrhStDr;򭗫bqܓ(^Ã#;OM..j՛ӥE=r_&,U<ָ"}[,u Xa3Rr ̝jr싃xGI梁BpΨp`!,QtFsK,[u(X9ʹe>8Hԛf,^˽[R\#B LczԂ͝ZVчj:hR9xǰQE]'Bj]!:-Rn.)Xhf-q,PRO&JΫN4\]tݵkE>UB5eCZ&/FJ$+K=QrjXkȽt %2(`3 8Yn^ŭY7J.2@x)fGL(£tB zБ)(keK ^ET]y9ޮE-[$@ e aòeoЬ wo] VlwV=m0wQ?QSGroWru%ˎmoݓe - ̠XK9[z͞SU=ظ#QV ְLp e-Keii 1[}G=fU?c_7O ɬګ>`Xw] p!m֪b$ šb eApQ[+ *S;vP Q. ň|[O [ b0ao,[x(,:=L8'8ÂJH/ !#oҏ^'`,"!B2!5۲FaUvP٠%GƖlh~6@V VD dk17k-+aj cXPyݛ2Yvɉe;HH_D$bԲXa`0D#`a.3"lA.j1ͶFG?AX}0u`NW =8H?lv@ QZ_Lam, ۵޲oºWf[qjU臥mKs+_$]n󓀰AB224ط9 -Z?i4k h*aսs b(Y$؃\K8l9wlssa5G|:ވ[ugZ(C,UeqpGu0hң{bH0Yiy#y?y=k>q^֕0apϰ7c AB-.`F-sQ-TOaVbQ3DH?9i.V { }Y#D5<8umL5Pʸ4z\Ek 8C EsKKqn 6'@a|SJnB/cχ y>5L43v/VTu ncyLN8iJ36-i FJM7 O/Ja-y-3R˜LĻXi+ocy_^&"5@hn-Z@H((u*h.XuBvƨV!vrz=Pzrot=14*D8ridM-zVJdPD޷X//[?1-DzP//^7 !9P(F*񆂓Io KC &/MwqeF ETfMxM$x)e`U(LuZ$) <@.AmzCڽ?_3G2#~qw.&m&ZɵEp7 L"ʡ9TH^\u\ԃi ql RqD(J5TXxfg\] -WwW T7rq/VӣO/K%phwR˃D K 1DSbZW 5XABѮz&96 FIAzԫ1Qvi59W5\z榓Ks@0˄vhŠH-g¹[ &^,[!AP( {h33j[GpR$&a 1_(43ECK]3dRfZ'kԋƫ¸0n !qbadMT.៕/,[KEC6=uI{a]L2+U۽%GDaQI-Ҷ2~*`@{z~М]Hhy{~0R3ҎKM[H,NF˃0UʡAE7q珝Xl4zZf暙l̷ ]LWӲ:C/r5:[v޴jP& cr [D߀0H,ĐMBw{6a:Ļ~{߳c;}R;gV{9%( lcTN݊6>50jr5u6x]=eo(VZs(*Mk `8&t>$ 5:Wcꊀo0 $ڴ |_o<< K ȩɶ [Aj Rmkrx6r[0#&C 4Pƀ\ Pm=@CذomkLlsА =w#֖ ȈA_O{`(Զg0j@X_n j8Fw@3o.$!5P(10ڢ]Wiw#UBXCg x&XϬKQƸs.t0ݳV ,3 Q' ^mP\ $Z4[r`{X.C2z@2oa &Hq\ }6nuy0{c*h6 9Jeϼ[>K "曶D1Cf[ֿ?e.wyC30(C+vi1#+. l+u &?=qf;9-u_kIj=/oUdaKQ;gcxiߧ;8^B!9F͛?+ {UKe-^KUQdM;=08Lݱ.Ec5E # kopGsqB,Nl "aЪe`E !3NjfذQłD۵QDzZ*ON U\H8%'-JHW^N^J^❼ZQ'7ͫ䈺HIV8}}08)qpޘb{zfҹK>yxsK 7^&BP!'|jaoEkPI-DiÄ;xJmm6ưREr(Q@a(1^FxiF6ǭph&-M0RDoL\mNzv.^n.JλzJz#qPLFj9^JÄTPD{m;YB8ɲu:H|y~=9 돾SOg~}qbڨ7e۶yvڶ [ & B Io͓/͕S/;ϽB` eQ,7lUD"Yhd | #>1MچfP(=E@ p@2"P 8Ff(/V/"z>"=nM@YAa {k Q6@h倡;;a`V Gk zE/޴[tC%e۶݋A &۷^EhȰ8l٨͜XĶ#j b0/"-@1QB16nZK ŀ_Q7Md/& mѹyVǽQkێA]"C1D8`٢U[3 Pz ņQ o' 0ԮCb떡k f۵Ҙ1 FD,oa0̃@LYx]C~K73(C/CGo d0˄ƨ}pniw iֿoE'xhJhזk^Αc}Ќ{VDD=Xh0S=Tup7__:ꤻ?/_w|+?`l1]$;\ x2\'%썧Dr.# ^j6Z<}z}'5l?G~r {C sK Ԗݧ^R;=kB<õEǼH+*W=B9d:32.M\[rr a*+"Eq GK׈97^^Mf\"zpPzpPkVZ}-ȉhejkAѪJKtFxDE&yB^rn. 7zS-WQ!,U5ew,_$4k1,;` QaGrI eԶ;HMo@-0r`XZwhöj%w]%Da 8! ,3c ʢ cb eѧ|e @F\$P ^c>ٸՆ-}oW㸍{~?aAB ckAkKo['_(|#0!cȃ u*xs ҒurRjQDՇI]=Rh+fVurS_T90O1R] |!a,eG݌`D; !oJgÃQO~:T&o|2i0dF:塭|l4GԲ5y L'e0Ka9M޸Xı%.-j{S <%N}Q>J2a0QzS̉p\98hC=\.w`:v0Sg-'MiQrgek?$](\K5L8/#Ң0F@L 8vƲ-^3`XF\DrجĒ '` \4 Ãھ1L"G1@J@6zw}_~ϯlw|om DX"o jsv ͈]!t/-;doqK\[Ͷnmw˃ӭ[[u88 7Uo@/R͈(f ¢AA԰[z][jc6 K  %4`X2"5X۵efDu H/mu>۰bڴ ըhM6jcà xa®"%BDofՁQ |Ȁ]C6&z!iPm;9Y;1VP&k!dxv-p(`"a$udhrqpɮÄdE/TyKA"T_ChXlU$Zfw G'[cC ̦C+v,rCzoqFrC1KVlaixpD@0)q<¥,3b@/έ,1KǛ.Fn0qb Ҹ yK>j-^қ.ZO/*"hH-5| c(0.UB] \XVM5%!gVN~ж5.astB,UࡼY<,=N jz{͝\.(o^~J4&63m&Zߋ !9چ'^‘"!z) AX=(5ʷinoLdx0㚙Vm==o@ -` ☘G?nc%.hF_y:. FB!bS FxF\۵!mVD1XyYzzڬ]K5(C fS^E]ܴCw+_q( Az[޶Uƥ_mc<cWau6oɲ ucesˎe [ ۮMicLbX6ǝŅBYt([CiAQd+ش́BC*<|Y& Dd{u 5Bz z:`*V,58Hw^$- ^ºCɇtpn 6@\{۵ 6K@@Fy+;cEh[Q I ]B۸NWB_%q@Ȼ-Q9 C -oBK 0&eѵnQ|i0# ˺gPaY^%|2p Y:l(yXu|vh:HVƊKAm. -;@EM$OkcF ܊fS18H2athP09S @cxK(v~yӯx-oAkصmAڽ/҂"D)?4Csє9/R>L봻.aɚX'9i3RhMx(jzB^K| fjF*kc\4h}ekh$KKGo٭]=G^N:2NT{xP'^P[K#қ\XkD]1a'&CGJSda: *aX/1ѼN? .CBcÃZ|ekDF*!rq)&4H9y40Ht`z;Z Zu.ZDzuʛűK(H|TK14 ŠK#*kDEEN=-3zOV`(}Vm+c,l͛j˗QsuIr czfo ,ѣo>rx!q$<5)od^-sٚgtpCKYSB8)yb#K@6țf抣IPՒ ԃʏY3o pl :q.xӇΑq袇le\y/VT Jp]SkP۵Xx`a\ @>eB`X_(bQQO -yAAamAoEj}î3dְܾmsl`6߮@BzP}K$ʁAoS϶mui0!YĈCէ7"&Mb@4Rq}-)6@-Cѓ}G##o8UwKV-~Ed^Zv$(3aWҖ-oa6.P!o1ròް_90,!9-oc% 6qyU_[s4*|͆ mmlHQnV-@VL7}mJ޸v 5b R#.j WCLӾXVMa`ZVc[) cmV-uC1}89_%#6mk5Bz⨾ ` ,HN?7m1YuPqp vqO=VCU"!Bńc%c{*ñesbpЙsK..#?;O&lKcqQsq^'lZ5y(RR0ӏV`qLVܴY(JPߚpdA,IS{Uu,WFvǼk>ڽ7O<;+r?+d%=L^SV $T^qHFtK}&?P`aݣM˃JfqLD6 #%G>[K CZa0Q CfMĢ넓‰s˶Ã0Sh0U?E_Apg ׈zGڢ넕.4ZHEu 5'..rmi'/Z{k-gl4 HƠ!qG9УF U-L*1JɾXpPsU’Zүq+U;GS6jm׿/p3bb %)ud[Ct$aBo U_x(,:5[ *' Fb0 @֐L ́Y@[%GCkV5P؃(aON{gb8;g~u?qfÄ@cٚE1䈺;EZu(QJe [QArlg6ڮu-Br$klŦm ʺ@l&^$*a&mK @03Gmk`S/ò;êw|;BX%y+UM.A3rR[ԽY[QԈ9K:DDU[yP_"$Jdd@ ц51˄*-;ȱ4`_* lvO̾ bbHbXk1TH,:40Cm4F޸͡AԲ9iz ɐ kp 8&HPֶ +@3-olӖ-z5b` fKcLplE$KxfێkUOl Ĩ[/rjÃLY*,6"!JHL`̰ ;%0,tmSk`0gp\vQC;րe[ֿ? :]tVDZl]kk _=[\XN[b`XO`5Vz!LtRoY.:b2S[DyFzЌe$L5 Հa)%l.ky(=:"9aAsGeͭh*!5\tH5,!^nU!x)ߎ<\T<4sltnZ*>9np`S Q1ltbo lL!xhQ'}h~Ӌ(:ܭZaDKEx[̛"eeLM84VsP|C-%5L8rěJ/H 4z\[íeĴ<cQ/b<0?˃8w1Q]%l&*.tp&x(<3[lu Kc l(ceeR,ۈS @Es`di%6jP:y)qb>JDsFZ"G>zL׿/‹XCWhÖz0a pvU~bh63`ʭ[X0Խ !Ã%5!B "սQK:ިu8lF18({9(ؽ3mK@1W@3D9&W:?*8Kq׫< [j[#mE ĈwAIaAY-K:a>qT>$Lc4 C-Umǐ UNMڂ^ "aoeYf<ȻiGBòTjpGm0< @M³$_e1 # %z#j Yvƨ %HVB hpp# !o1T8l۶4ݰ5+g6omiܽ*f KD(ɶ#j](|kʪ|яتUQ}0lɑf  %<. 'y:<87lʲ,j@ܜͭ[6l ӶU19}MVcAGcIe F`i Vfljz$(+c/xЧfȰa2{l-H aՆdF Nڳ(}q z`/;ro [cP"6pO.rP-mcW -qjfIcx^PY`D.*ԭLۉCu‘#'}iQ][*os\+/;ϼ`f~vpjbHZZ艗V'-= ({c"9ӌI?hs[b k#KKcN-+F/Bx'="3{-}\aqWK,aOy̵eKu2QX1=8;eZ-ii"RXISfٳ1K,VW FZ=ۥd&<< zK)~SPr-^c_lN 梑O>H8uhoffrrAf虡AAxrɺ<4{KNY&28ʘ,\>J@35 ImmkY/iz%?]Hh3ʹ܂ۢ"a &3M&9NwуsVnvmls|VrQg._/f>x[KV|G3ʵ%% qkf}?辗B` U%|n8&$BuLC!ov950m JjDA„f9fV !9P,ZXw a~ ֻ`QJɪ#بo}!ȯ~k>6O<;dְE}ϼw~&da6@=ز V6ulP [r ά;*n0r04W0̖G@2 ` lV۸"a/eiѐ nջ-2 6D9 %/2`Cú=[tw J083'9,meB k@#u:ÄS;cbcammo] 9o@/7naWyO.{"mQN8jD 3,EAN Y U6}p5r D? dp#bzpypK%t0A:^[ Ц[e[5W 1uΟb` b'C2FF54Yֿ>npWzж*U-㹃0!,esfQG.-b6zhIᢒRj GBH`UnF\=CHDg-ao7-iw1ҥB/[ۥ%/z_W?y…gj~^+{%OzZK|3[vMɧ@r][[@Ѕk^R쌑cpH.![pX&a.[heV*kcqS3Sب+vIZ6{HNmY"qQ4g2ȲusCz[XF<(^hK l,ByhQd.:zPEkbi|m>jc44&waAӹW #>{7rn 6|`m2a2QÃJ5Bώ^1)N5@ع5-Vތ..f2.E꘸`wzz"!53]d~=u!ί<@Xz vǗw UB@ Fdc1Cʱ8daAi۶DMwx#zi6XB6lߗ +6# D$1w]iW>8;oߵ^e0FfQc;j1EH]WQKO iЌ4@XfL׿/a]C4t06 4$_w390jrCaD]cyG ƣg+c /ɺC52N;c"]xQ0+بձl:ahbs\}4V+woj.r]0}eP@LmmKl!EBrDHm|㶣;bԀ"-рy_lu/@(6Dy2jl^DzaہG]p-[r "zB0S>H`r_'do4DھM8Fn \ wD l6ACñR/oƭdÖ 1qŠaK a VDyD ܊]CQ19 0Ҷ8!Y^ u5XkmbiLy2Y-: aѱlZqЗdlߖe=?6$$|Qw 0L!MG L⭥- ƞci떜:`deew\5( [bZtu[N(ێY仩-:ذM`[I Q udqK;b0$ӆmɠwbg^}[?z C+20 Ǝڽ#}k^XkPl4]yxh{D^}-pDᢙXcK|pNjx)3\ ɩ;Y>+!™q*7f梕XK ӝ%R.TL O8+rPeBŐJ0PY.xMUOx]`N`lg=  `MYih!C}}{c8}r'9qt LIsB=D8"=u0GB8)FCbRțh90H-kc9Lڸ0PYK9 !Br+'/abl.KS.ꈒʠ { 8Р*!=Xh}C[KRw\rhAaKE2䦭$uϐSKPr(bO-͇ Y yչTMlF:Y0DF#"zb,Zs;cjgErn[V [hRBl.-%.? >**Gho\ZV椲88hz%E]8b%9B"y^b;X7q |BT|;dCZK|c^@,;e}3Za87,4835BC1ñ5ñga_[d80@+y0 XCظ8P!uGB嫄% b6-:Sx Bof @ Nl:\`̊U#k0jW0.ƀfʘCD*18ek¥EhE fszV X)Qש`Cљ{ >ʻ, FO YS9)xiKW Y6'jtH (a[ýŜJlΣ(,.~NE/m yѮ=8bD60R+9/9G(=(y^hyPǡ93E-pRrx(W=H(3w-Б?wj1os\fP-|2#`N:x%5,-ђ,S9n֒/&7v^q:5FrgeBABj.A5@H/s XKsT|Ӄ2O;c+biLP>F2%7'%ġ5YֿG (.E2$;bՕ.^[ֿ{6=.5&Q# C``87dM9`mucXyu۪bI`,zM!W5Agw΋]x\2716xe$lע[ !=x Ys& m;V#{015P + ȉfe}`̶ŭ['e=!@GN]oDm[ P ?: S(X,6nO-6UGv˾ba=HH°+y%m6lQ\$`@1`9'P6x닄~Ejb!@HofQ9<({ٖ-XB =cxP0LÄ!10"nFMWZa~#ʲcQ %@XGe0#6&J d_5GEƘ|"sP7j{ÄhjuLmP7ed@ިű/;~[[ \o[ֿٝ` R۽e.hEZ^qa^&T EpPipS.L^JT?= 9::)t(-D !B40^ \l,s"<\-d]y봻.Kae.zOyn({P+hb51\Fea<$OP-~ d5B/_?N25t\jLՃ=4H-6jL--\wuBsx.|r$f!QZS/b`$I. ' Լ!CrPjX'썉rqaB ҃s =|4h>pѨ=0(v BTj/ڸc:c\&nUA,ƌ4j[[˄Ƚg2u`=(藨Ұ8F>xܓ1 3,󖭇gP]Lkcl3D6džbisLn Br,94H(K㎫t%4}r2C@.VN =A_VYr,XxÀc*ֶ-񙪷 BĻ ̪ͭ6< &XDu}`F4$6 l{  Ppzb|#0t}Paѓ74tEf-1PHwh/0LW ,[wCAm$Kf@<d/cH0ALipأ]">c7nC&Kʗ.bc{ 9ֿo[>/.w,r"zVX`9PxU_8.:b RR琠qEj]'ݳKKZB5V#eª[vh7j'Ärd9!BjymK=Ҍ> ԢuSIx==/z˛7wV_vv`5<'ѥ$SK 6F鋗jU/z2qno.J$2 UCK#%EBQMmm "\Ɩ1T=,Ԗa0KХ!z2 DGᡨjQxh?;/B췩b(у& ڥw%eB\\f^+Μ[x777VG /fgot; я:R3Ҕ{aBaF863/mu _59f/^Q]$dH-o^lٺԲ;y7,ai2Qz-8(5 MCǻ(=jQPy:Y)af!R#hvg˅a{ RW.[fN،=8h:a qqωFte:Pf_'=aA"bxHFDlڪÃV^+a(o}Ä`lc;k@Y1ob7 PC#uaiKbH}X8\ Q; KHf @2bXz %3Xoڎ-wDRj-_vbg9h ~u?yҁϬtpp}O;.zpP1Q Jޗ ui0k59l4h 6-{VyZE a☼JU0VsΉzkypVܔ$,łuꗚ0X锋hHUM+Ʋ3%k+B}МtImg˄K0`q+ ibĶ1 .-vm>ÃK] .j{2]% zȬXJ X1,T6=sKc5Ã*A<St9F..bClM~ QaED;P@`׈7ɜÂQC<8(FX sf̩eBީ=dhG׾H&ƽxp9Ã䪵tm>\4Xh)z@#%w4O;-fz3ɰЉ4DH-N bc[$~]eȧp$lg- 7m0!Y`[ms۶  !@Ã#W]4#YgΖm65.FmZwP\Ūƶ˄Gh%;c@Wg'Ϲu/[o?DH$;paBr =X0DQW3&vXx(/ &@F ʺ#l9 ,UGTm ĀdUD cmA޺.:`,-[ic,!VQ[(c@3E019CџA0ʃ|!dVvƾ<((ZHH"aEL۷kٮCc18ٮe%9xJ y0 XxZ`.RciLr70]#ߓ_qw_OAp̗ =Ppk'6PߝgN\[F#Vz91uz Fzd[|Q˶Að;^Xp`(#`pSzFAя7xѺ M5+-Q'͡A++:&Qh~tpINJ`hv|Ϲ~[+q1x}uU AJ@y44N|K/D&4d6*N*s`n-%I Cr0ᤡ(/:rj:Yӡ%R!´9ex0k/]'>YBzD$[}PыaHjjYEDVÃH\ %\[z0!}.VOlTy)ENJX)}"SE +gzpQBzjD/QhgkAgxNCPMjjrbhtݒ{xhAoC:Xo>Eї1=jzmz'q_khD=0Â[94Xy_#,V\ʲ[Z3o&1uC=aE2 aktd/8c؀L ˦6ǥ-2xϭz9P=lF`L[[SGƭ;zx~ Fs/@V"̷!8vvr/ƖyOynٸW6m PEA !mqL-[ @Dh&(FN-۪UBFU%Phk q p !bX9PLbNh;cՈ:}M[K V9lr!Gm "]";` 4<ZX!C NQFb bZ9|ZW-vaPH4-QI`Pj!|F(FA(^oX2ل~z^e?m$i ՀjXRmcВ$MfdWf2tĴLkl VMӂn J"nMBB+>sp{m4ܜM3s]µ[dLQZZn %G2L:$4+`s5(x"`a)] WN؂&%ঋ h}K7qPUxuq(G#EXf0KmV*XgrmjzX Lԋ0Ѩa8qȃԹurPDI ~G$^.RDee|4),TtA\&vBp\3I_DpR3Q/Y\&ʡi3R ңFGM̫+  ֘"CUw?b >nFJ%k"l;I᧥WʱNJkі +eh 6(7g h1Lh@f1PxC2 xyڲ~%(k%[c9DM",%zBoG\d Llblӑ=6jvmӋ 3 NӦl@oq1z%y<7kG.P6dgԹMX'b! ǨQ..U.+㪕# uòب SֶmlNa(dvDY )mچe#כ-ٮ^R^#D Ae!@FMy6߶lw>‡k{`X}à eBͨ:k "/Ebp&06"91B!1<$6Լ}ǥQռelyHP}ǡͶmQʀ_eC3,diܠLm!{c"hcԠ ,- QY\$M۶Ą_]òNcѧ&ZaՏ$$jpQLcĆ`Q`cKPw"}@Wlג>=`w PԺJ(`6[ 4Cqa7`۶nzG018(yӶ⁡=+Xow`aE?ub0B>Z5YIE|qί&힖KhmKcZ"5>9ܔHHG-xhKCiP_h=/\ݘvw=0&$.,Kf c~E``'{Np\G %‰(V^"$Gvp*^Jf>uJ$hABd;މ?Fb*5 u|TGN?X(:l"kr:o^ltGgvkDSN;?Kqh[)90pQ"<^%~jFPJ=H`%(/24$xkS'4Dhc$u7_"t0H.R|TWa\LW^nT̴765t7WٶðlmKeԑGx"m<# `Uo@/ěŐ@؈Y!o}WӮ##` X!Ao"jYDĪCÅk !y13b[#ghѻ1$8{m@@Qt0kYw(&yGd4HX^l |Uqngm[Θ>>+l3F`&wDoliV2b^R 06 l{m@1[105ߠѳeJ0V!mR34H0,;бϿgnSMfoE,M-;|˭[ gP 긯m" e=ip ۮ#,٨&ې m91 m]L aZscE}8c5jX&[crjm"b==m*jhPcdQ8Úc2<苄 j rR#bxp%( vaxeGE_"<`q &m2Đ X❺+A`Xd0,}m۪gczKcK=L>G7n}{h0 oEU ,1,:W8[oȢۆ>`D! VG/;`,\EE٥eIʱ6&`8wnK1L'ͅRR>ᣰNrXiXzlԶưQh^yvWl_7'sӿX3m;tP',jmj6y'E C'POkcjm^j( E dvژZy²ɈHCC;8c#pv}ߥ?غCe(kEeoK"Gڼ =_%^D]!$%891ѥ @F]mGfmo\bp!]4͗-xCʷn/s7Y xh $[ _~I# a -Fύ[]AcH905=Pӵ.˃՛Z^ƈ^sSaAj֘|4o}0Jo4TH`GK z +EF _{g~g빯=k-_DFٱѫ8wkpmIj_'l>J?\\zfeoHLCİ7^ #[Kx Ekc˨u0aBkekTԽth)5-`Rz|\;%%}jF*hD !W F/=;r?S_ÄdݜpaO!b,]O xfrhMG-^lWQpҾN(7k|M.:(2+RAB;Ƙ> 6+\&/gupRYh f*FU#`N-|-VԑU*OZdHC[Y3ETݽ="Wy,Z7c'F^}1`: A${p0á~#ة9[vg7R{z6HXW1[soc 8Wfߛkp vJϯ cT }ֹW8u46l][odomKv2 U]K1"`7_",kpɲdxcx0,< `! YG Ãhh wvsvoNj7bqyWWZ 'V%Y;*P,dޮ1=`&`iK@ÃF/u}0:ʸkuy0rM[I ؼ {n eid@0XXv䨼|r/g5 |o߻Oqɫw Bdk ĈS#d=}1'CQB0 zbDmL5L85U7" P, %$$eoa2my &Z۵@˃D YV@/˄.v-+-CKix^1Y X @۷`M/4Py 6-1%r" Hv}B ԖĮX B |`?Q0m[5BlwbT\tϏpjŖ=H Fϟ/DU*D jPCы x㽮zM쌃&q6ZyFaArƏt/ʘ۵o`#PC jýe|~c.zKW.lc8hAi`54`.}nJ.HHkT9#5CQ>x#Nv⡼?D# }b # 97s[,WG -yhZ}+Z[P)5.jbx apR[]xǿ͟Mz}8\:3P ,yˡQ;[PaddPsJ_qHadEƥvqkz \zfD9`XKּeX0/X Q`M.Ϲ8.bqlIB]#$͜Zl] EkQqSQR<|TtIuÃM XOTO1`(Y[+TÃ-/c{xP,Z/E V-Qk-_Dltnk,$t>@9_"uZueoi3/(vn12WKw[O\<>}Y*YKĂbA)Ya꡼J(60o0*.mjkC۷"a@F^q&1G/mz"!91rs=>_zK' 5$krWG_!O.c ۶ uXJH=c F- (9uB;ZUW@X-O!BYK?hotjyրL p73ZK޲5{rE’IK? ڸ-;|܃DvO?긘ogJǀ^A K8֗w#` 5:&-=3@H8F$co(Wqֲ1 XF?,.ܗ cGKG|Ƕ.z aЪc)oG55,Tu+YZ]7'LTҲu$-Vuъ|[uɽՃ}6#ÃQGڃ{~o<sw>_9Z\dcDY# EEbZ?uj V:afvƮG2W3В !&EkZF\|Iឈ)9<+asLde2%Bߊ[5%x@apd($ɲu~+[v>g˞; ,4'E3+cb V-{cGv`AE-^;7#Bᤧ$,qPF($[ 5%Aם{ڃԾP`DJoIgK*yz#-p ܴ%kuB-W'n2=idCzjd=NMwBNO=촴@lr C@26$HN5`Lg~qп8_94a/|m[~j`g0{v g'x`>T_"<ޤԒ坿2sd۷"@@e7!>ކ^Q'2x&` aBlڳd;k9 |AAA6g˧uBΨy-:M[UL 2 Yxblג۳VJ@F4h 믧>~MaY$, Y%үs1g:W5 LsbG틄!>0"l&|'iaB0a°֟'sjZi9e I[=u  `Vm6 #2VK3ņ-9)ؤleQˆ-dP܆ b*b6s)P 9@/Л-L9cPpǵ ֭4chІ۸zYO91LrP C{O-iN-̋5KN.(-~1#=qsW.X6 T2epQ\kԻqуqgBeOlT]9)hF u62JFQ)8a1Qi\)=3{$tCq@%C2P胃Pr8BF~oaa%9_F? B = $'MpmN#%'#. :Ų55wRLu^\zwՙ}{44@܈f"J"b MPffS$&Y+[T2&Ng2Nq͗#:yxE:)e9G@x BSvlȯYPm.FdЦB}n}HH?O]myP (}ZHDHڟ9+3(0!ӮGOaD1;lT/DhrPv䤰Pr̳+-QPn jEm3!93g,|뜔M^ S3f%#G ]s Q#)ZA( ^Jfцa!S~d;&]]Ϛ>_cKA/c:qK^m lE?}o=r? `_\tΛv h&f147ޑO&o}!R8&B$Ћ\[ʠLd 4HD"-qpB2b-טy(r;m\<6pB1˜3׍Dm$I[TGLܚYHHt(;4!;q(fm#z.dňM0`̶lDzyҘ!õiS!)[NӶa"iM 8V1bc$[5[ ОNG_{ $ojHfSȦm }3!PL}@g&WrzqOu.bXӵd<&o@3u젖I[jz&kʉ[ Y1=sly3( Ժi Ѧ1F$<(9 jCa~i>gwFX-\lZ9)Rà9-"ӫa}l4{XwSuajD] +^'|Tr7j^=qR\l98hC2\m*R7f(.ʛLX3ZQ !}xJ٨EayPhTe-9%/ y3. ܥ)f$o}'F*=磦4> 6 7E=l޸<4o$3\Sb$曔Qˁ3ՐSQCɵN}VAUǰPBS3m9T6 {S %[rQrDCsRb&F D԰ЌGi 'u|C!A\i&\75l6yй(R "HhFA$C:pmf)Ȯ ?uL4`)ʢrCS7:?匔tlT k>kL o/)ې>qkq50l$#뽡f6~j?Nmؽ`ϛ4E_{>qK߁X0{ UPL:$>IڢrÔ_ QS/&je3~)Z`O$ 9 tGB34H_Sk(`LDL6U&B*(V(P, үL6y[2reYoD5_5|>rBW̓{Ԛ(QE<b䛖촱m J8N@4<$0} _ XS[.䅡Ќzd[zЄiaa)`v8h1hMjIQ #}J1 Z^ [G_.D?G< 3fJfB4aNMZ>2F*uu؍Xi" fzjrdM~ZOݴF®{#OғIZHvPx> Kr7,:wZ[_MYp. >i[=k7XV Ϩv\X1a"Up^VB;A͛6uC!Y-0i[rj@'mc$DLz `wxq#=j1[d2mwp扛o\MVf~]ehSQqؾA0]f,,d [cej0[*S!FA^s0r 1l#k`1r"ȑ`j$<XfB2dHBU|S2fBȑ1Hl#WR#0= [BBr19 ,|iOv;#kz@0NK>8Ph ,圱 S:I+}S0s@4=L äN3ɌZwo+ rOڹdBKf;F®#}ڇ1R[VZl DՉc'\t]=w{5ޮ|dwM~E"m$4jlT`#oQIH8[ַD5Fˆf,"kHHnc }5*EД KR+BE#YN3DQ+uvjzB_jMiPd՚ 7%Ƞ5q԰QLv8{[F/?\]Y 2& :x mjaDn&B7jaf(t!oE[=o ^1{AaMQy#hD䀹Q7jj w'U&J߰y07@HMRGu蚷I &j,ZEIJKA-CS '-HC ]|+(o|4"* pRj^1w% ^JJC0ҼB(|R7a j-GaJN:4XML&B<̄o26lMO(ڃ/̴ d#!pLOx8$#G9Lu2j>C2y{10m}yeޖ_ⴱ)I7:'h_H+X1iX8d, r"p Q 9P\tf¡ZOI2^!Ym(aʤ(2IN cb|iZ"N3K" bSPAX(}3}se K/y@2rh3`ŢO="fPoDdEy7ؒܐF1S9u;#&j&j֧h,圱0HH?D 1ě>A`7@X-@1րY8H>Lm!!RX7(r8%獉2;afBD=aD7t2Iᙝ4h pSGm̈́a 3&r0[  .y>iЈ&?oĀcoiH__7vuFBب_f䤘#da/dE7ꙣf3|u-z;.FDT2QgȶZRrR>a #%O~j0 Zn&V0*#!>5W>9uZKNou n0Sqr%rPr50r8 .2t5&B>,EV>z7n\NSk/M uu-z斝~EgS.}&A=s # UNaD.D'S5jrQ1d gAӠ a-"H.t42`rSa|K8Vu: cBb0% C!({z˜:FAލN!,X }R+;-.7}!7b4l K-6J B"^l^jf SHQ1dms0R!sQzMaKE)LD5Pr9]Ld#[L+*]!9҃b$$q_u#aWHx%y0,rQcQg;R1DMxMy `iq_7u]$i[@0%T3-2 B@bׄQ˼I1j=ѳI5€cz`wzvp2'G6e+@3dTF"ʴD lSgayn-Ԉ'yPf-xg.^sot5ao+TNvˆl;$L1';񐑰Ɍ&j|E,,+h}aMfoDl,t`'] t (+k`:ekV5Yz>az;at@Q1q }ePcD͗=Lv׍]]FB  5?̅D2Z X:}g %waӯ#e:3CbDCAb19Q 9p,U0j &iӷ !oZP"+kf@3%z}c:ԱOth40HX':xӔ2tLrkB%<۩{}{ڿY Jp^(z:YkӶCFȑ1al$U:FC N-!'owT# sdS|C] ym2a@2*K`5#cV{&m#hF?A2a@2򇚼Zϑ9a[HYyXrTE]o$t Bmǘ= Tͪ n"D'#'7r8m{WcKw]_-\TLڷJ!kFόMxL=az%rwRXr3m܇=@e▨Be E7p,x Q $Z16uKz~S7}005)=i^'Hp7ʠD@H Y3RCpOrb*8z3OCvv=SAkbSrd=} ZZ-~iyFZDJlhW[b JJ}z~XOuD7m0Oq̂6d[`q!5RuJϛw{qŢ153FT2goژ)MMZێ^~2h\`E Fȩc>1Z!) Z6:d&$̈́b Zc}rQQGK-Ԙ A4 @6G.Pc(VNэ:@]FzKM^0j5Y.ܔ<}lOrPJj fNTB[2P(vXLPrTQr3Ֆ"ᡪzKi.L+9lIx/ ܂1RGn{גLk-D佃 -V;3F®ѧ`ĭ2ddi$4H&9l #&&̛ycwl=dGO.|WNS ';$d-\t>Yӵ@qj&T0F0FC@hSS 6(Ӊ[z2L^>̦k鑣y÷qQ󦪧l8xH[S;W->p~W}K}GlzջeQ'o 0V98w 3[M1Us &'i]FE4qӴ&wO٢!@Xeh"Fʭ:ik=b9m #GiQoO"S~'nS/m>g<3V1ɭW2͑0 Z3Z]3@u9Y+g;f|O c"9شmy!uӠHFp\B Z= LJ06HHr9Ѵ}[Hλ1Rh! T̃#.0~`:cHW[R%i}w׍]]HBWdH &8clKL#_+߶xSuo^~Ed !Q&i \#SCb,t(&gb$7&BLgD(yu9J`VN:$oe$o1%w} !ak0Nk[@35&B@wtЍc3wse۔n%y8_,,|w1a|̒sB<i.x)$LW ';FVSPⰁNc'9rVb(Lۢ_@<2z-R`&Ǧ2=A7")b!} QԊZj^D 6x7&Pi&T8fyl!Li}9l 0#JHmԙGJ05,%CZ;Wp֘e+LgA31Pf*MKf:F®GH'uCꬱ ZS#7fD.H+7pV^zp5_\t?>k[T7T&3%wFJi0)lAةPPPzԡ"1F/Nj3BGAB?z"zCD8j}8r̄:duHZ1J^IfB6᣼Bj"jާOLywog=a$Sa( Ei}!e:hm y#N ]k[#5;nlj,(uJ#ڛ0Q(Q̃KyieGR)N(<imC/Ԛ;#EsI8q !j?mkliЍpQլ9`-Ixh~̈́E᡼Ab۠ ^I[z o.g1=b;m0ӕL0QɉF -̴ ƻd\:aQ&l1 VA2FX(7ETآhE36rfro[{dr̄Hj`lUF-Ӷ-yzʶfL)ccaa&y#$B1my> ѣ/+n*Ny4BFB1f7FHm,4 1Q"&18NuՋY kua'0 s fP Z_̄&_D1T-Q6G$m!?${ط f-w!s'nuXQn+,ny+LiMq COvyn0 ry`L֒Sa!kHf;B2mkɩhSzUO:0Lc ! E.}4b+!AU@7yXnQP YF;cLpK'n5Mn(dv}.?ah[LWZ[qڸ;jŖzS9kLFµמ0k=/\u[‹^A5FFAQCE iCFDyO{MDbF.|2dRP#X(yycga!1 LL [kM^ i -2A̾p҈q40QD@5,4zb(G! \#̆vapODMjZ"<Q+7 n\` eغ m#P M0UiJațg{;NQR(MpYc;F®o239cz Ǩ# xS(g;ȥ#5Z [}.pb_l~LL@2̄Եq^}ژ75*$S 8RX 9@̈́3̈́"ˉ[0 BHX1] ѷ3QMtօaŨ2eQgL^Mڢx`|\O'u3!/1}kc.\xڿKxסoxO{&[\k+65,| 5ѣέ^8cf(Id\M2+ozẊZ_[s P&20FiN'٩}D2j, ),#cOvMњfBFE=e ]n!$ 9 C@1Wa"&Aj,">M֒e9d.,m`giPk;mL= 12d{7Mw׍]]ߎP4) ޢuTiC!ȩo:w`u_\tvޙ\ S!VgC0QFr(BE兖&@C.ބEE1u !ҋ.'E?KN^R.ު|4If : SsEelQ Mu2Prd]`b$JL):3F®Gd#!:"~sPrVNwHLfX,̓2rfon?Ż.(Ɣ-|4 0<^ԼcTF3][UM2]+SQS FBL2]-@P \>hu%`XP'Qى&gɉM@xO kS[ܪ5RF;iLoLƻC2,˩/uωɲWfVⓓ~1{;p9rS؀e>]K(=a9M9BüS(@W0 բ%-[d;ȣ/z;^Dar 7VB1 \tqD;@Z?qloi[T C@0BȩcPF=ⴱ0@hy8 S0S E^Nڪ_mZ@/b>FB3 _My\G8H>s.olA1V:)Oَ%M :F®oFB;k:o(#x7gNJ--{\k(, hO_} ڷ^d a|S3,Ts~8DmT̄H 1p䥥F*oQb0OzZpuBC Tz{}ژ审Q;a&-᧢ΓD)[a0kAkrj}8)5lQhӳ Zi.=u={]yyWMuw:v6JgB"CbS!y2B[,e̓H6+D;o& -Uo'rZP ϔшr<{<&EB[qЇbD(TBQԈ6Aɥۚ2t] FB7fL!upE$71>XY˵#a6FJ.Q&'ŇV 3qa"GVcLiYPOKDpSgIyO~9:} 'u3qzI#:3F®oFBbaD6M}el4 ,s9!F,\ͅ;aJ&_v܂}l /e6XU06 8 e!FȻP`OxƀbKs!}kre/m9o6YP*&k^@2̄ ҈ ;$aŦB;AaKPulN#I3q06b1fBd6Br1a"=]Rc C䶉p+aa| w1sOlmKaS#HZy`__u#aW׷}#..>|-R@hZV eofB} `7;7<}ۯ5.:p?yοuUU7EXH{}`vXi %tBrh%eMbLFjoKVFA72.Z @7 Tg?z>p5ɝjO$}G{җZ.DD^p'Ht&E>#2PQ렵 oA&:y0R;K-Hqԍo;~1hM]sSr5-IQ!o`FBpR.O+V*L`\8dH9a p;Ҙ)3=ɊqEK 琋?{q al\>Ϋ-c5  5zsS|IOykVR <"F`H"ӯ%z.a5yPA2XyJɑ1z ,|icM]e(Iឨ䣪)?_&FE]^׃[ CF8RdוamI6ÌWZLOrN3ipj0ozEY)ԼY7-0QD?9 @%2#PIKF"i$ ˵bŏLMw}|+|泓.=YvsH{ar2: K8J09p )SǼe,8ĉcl ^{e>5/VcB3;k\p8 ӷ6RW:AN 0`"D̘%O89&3 J7& 6^+OɾOi%3O޼kꭻ '狋@ 50C2elM|i bӵQ3S!56%$1ȟD5C!:>i\1g~#Tf¨k#L#I Y X2j@,F@xwc!|'=`^TC1bn)l5ov#ߢ.d@̄FB9ё ӠOj;p Ǣo1:aDcU\6-Ģ tI?"L{%Wn$DQ RgAkQVjDQJɑ6T"b ^k7|vz9 [5CENg^MYЙRTI%jpЬcrғf4 &iN 3SJnGJKZKŨ>S A#yCB+7(jD]'Sye+x 7tɲc~s4=OLy;疋K63GwqcǰqR(=8(o2d-EA?]L_L2`Oyicދ&`j̄OCTm:b:TD]\k1Ty)՘a٣&/8H&wcҧr×UC5ҫNGM.B3qe c䢭O"J] .g;FCI~J-󒋚2P4&%o!< cpQg+#7 kCa0Ӆ`_u#a׃['woL~Wwbݿ|d۶'/zk&}&/=:%\{N/Mob΍B̓w 0 'k8F,@.;y\M s3!O]t:8mgGD=uL!C01fw#1X 4C; CHN CLԪxfB␙Р}Vᘉ~n$l3+9FicDmA1s)o-9r{)Mgdɳnvx=b:Eu-YE?=i ' cGȫzr0N-P7:C6} S;#$HI ,dmEtt-W5aЌu'vc(܌ MP"Dj#@2 }* 5^@ a"$LL0Ь cm(4iNzȉcMRB́QHD7;u/4uG ]N*kPq[}goѮ0 br LV~:7ioE|g v#!w}Cv|Z&'uUlicrR"9Թ(.yk>{MAc&r sdOB`K k-"zGUjTFg1FMdc'kE턱FBɍvS0Ьp:#WYJSa*RZP! C!=a7nEi \(eNZ]lqEk*=T86ZV*y2R̃uC}w(o9}SFe([(LThmZdEٰDCDF(T)rnJ.FBRK/5=(7)B1uĬ#/dBen,4fj*X}[:ퟖ}LPm>ZglV/^>5QzoAc%vX`wXPQDXco؍IL=Xc,1FE=sw\Y{0ܗ93ks.?^ͪ_61ScI!5B1+EHs/f/r.K35{≧|$;9sImMw]A٢ϛoeHpHw}w̙؟;mo\:bB21DxLv[ 0L(@,kjH@APY듉?97}^s̕U/KAu !QH yߑiP`zvw&2+r`qƾЄ;Nd8cH 5{)HV.P`uCa:! y f$c9|!1ҍqm#- 1u( k ZYItͳN?Ugj*GUx_'L8P/t;A2MA0HwԐC0;ї0qw0  DKB-p u0mcga ˡœEMwfJlZ3u`lHFr&Q {b(Ҹ(X'oe3! B1HS[@0퐉[{GA52b jwlOddZLD-k,wL$xƆBQe}e50E@> TSlڴN{?ai.THh #eq XFO>C׼qI.׻ rCסk1&IGޚJ_W5zޡd,jo;CL}ZwMC!}L,HH=)MAPYXc7)Qn'Qr~|QJKS};P5TX(zb,$^J#'&fVE:E{`RL%5.lgҞڂSR[Їii"gq Fq`0B{ {l&2#_-jݔ?wR12'uFJBNq᭄?d;'] U(n8MnV[+CU(Rf ;ޑtUlHtO ~5]>m[<#m6P1@<ߕLFB@oLHKb>kz;:1 #! 9gP0&.7Q'elPc9$'ݤ'* ~~B~*Yk'00Hև2Xd5Ol"ܠ 0NjOz< +e$;Ul*mۻrFBR`,mը5:+-,HLBP7qS!mD>K!j P 88cTCA1 MjO՚xje`(DzE Fc4yco?Dfn~JMQe $UTxx0.#+v]a$\F.vbnٍ7-$#;g +mC: X V #to!+/t!vvZvhC )@ ^Al 6w.?ߒpRgojG>!<I]> %GاBqrMuPH̔YHIcjHd'?}3]eò6?6%cjkUY.ڬ{IB;!gL!8h0iP3{ykpP<V*=d!]szJb1\M ՘gHkޟ*,8w(qOQ|K@٨ jᦒ肻Q !an4tQ7InB>J5@c1&Qϙ) S 葡di-zg"E`hF!e(dw-^xSZ Ӊ>jlԈcDxU3oh|Txhd&aL(‚OFB1ofA>۞z;F¥h$۲/Mn$4ߒ-\xŰ\߂9ܲw2#~n{*b$4) @Dv@d*m Yo%4qTP`NM[ph&Iu͚#GD-0zZCkf!)\ 1-$ 8  #Qkd 44FBL }b7 ՁpGH5ld֧hW=4QŠjͺ,RW㩕g-?hGEq M@4ONjctF U PL`mb(SZp:#%.Au4p N@[=Q&;-`ud(k;1X}7I^sqMFNJ2պ:zd)rї,9&%T~Ua܋J1(Ty}Q1wOMHD]qfA1*]w0R\; L,2 R qP?QC2pLO5<P5(p3R̀X)+3;0?e6*Pc#F Y EB6*`TGb Q;#ܔ̅0OJuȚ5w FApSl&$#!j2a5 [1 YY^+;%qLdx00WvՂd]Wd#2A؟WHԫ}/?3muk$(A@3ik2 Oᙃ21(-3'k]{FB&D3acb$$(FrPV"&pчd |N k5i;J°Uڎms2}ZoS]ߧ5]Ӷ0wPNG PC# Gw) 5Xcp1 ;\'eV{ᅗFB)E~?2a OGjKn$CJcC _eY_ Ns ;#eP5zsLj5?=J^(xqqwJp8iFM&˜p5z`HԸSA\9)E+ )qb 8)DC5K.4|M ak>l UL LJ_N&5Z[HcF"p/q1Ǹ{G5qdG8MGzv?LRlG[@EE=B2QKw-[ L"C/fx MkA`R8L3!z@zu<Z X8FQƲPQ3:hJ Zm|uuul5ΪlG~o4^8C7 $>2 'msp(Ƨ wB3c12@1!hLآGӶ*Atӈc@NM8c x&̈́wb[G+ Z'mӉ31Q+A;ԣ;A16y OE:h'`Lt,06)3-16;EՌks <IM P6F;0P(4'[Lx#ژ"]M$76A{툋ui1ẑ>z8M1Q2T,d$L"& yfl)'DT(Nm"lTS)HXFBE,{a$\ ?GuJvCg]w-6e[k*/Ќ̄{ SlqOO1Ɵd^k]tDXc$Z5COHc:Jh;!dl4Y=˔[x6`l2ԈO֚<2P@1VXVjvй;U7bfޫ$icveϧ[Whm-5a @M8Ԁb`D (uXM@_2eBa蕋Nֺjd49p&Ӷ8( &pMb;p!j.<{) wB}0-ǤmL%MaTG ӡa$Ѥ-@.1ƨ3ODb(pL,HcN 8]:P٩nW55a"DfBd'n:' S[ V Lo<>PMVoôFGm`qRYAQ􈉒w^(7^K1Ë́p9?^g9~P!gsm[%̬fLeh4i $|gm&&`:L(|4ja D"&j,t#}e軈ʝ7Ҡ5`a  `a /uDP)g\Y5D'sм pPcf,}If:F`Cc3! XqRpk20Rj Nm4a ! 5渃j$ 650ڽPI5=W8ߝZM -@fҟՙ ]33&;%R)HXQ#ĉK0.=/; ٣%r2sZGch'020ܭ@30HLAlA1`N[QC}|ࢪjqwίmAMϮ7@2b3!NHFxh1 7 6BC2 AN Lk:͂*P`jNu+!j1ҶB >)c HS/VyZq?8塞fe+ZIpUM]h#! !d^,ĵ )fsLL":߁Oڢ&Bc2u^`& [!885mLS>mE ?̄YBjHCDxT-=fvZH BM2I;>!q0ch=tȀ̍`d.,3=@D{ `Lh ` w02YFa68uwՂ<528L6K_І))HX9#W__31HXaxбg=zJI#aX|̙ǟVGIJKh.hu)>K8h΍j3' X(jGqu?jVn-'S5aAx$@0bc!zI ᠸ{SiJLc ށBN@h 7P9%6wd D?3'`n&tQ1i`5sR:QQm1vpVQf崬..o\Զ&K@ttEC\ZhZGT,/pO ly+!Ll8N<7ANkwؒjbNK q5jS&D|TYk: jY)'8 S=#EH(zBQi )d}8PFB,;YP[ C1Q =#FF*"^ƸSGѐ.s[ LSCC5g7pRHcS炙OF¥f$<=cϫh,Rbܸiߒ=܋'|K٭ޙqƬUAѿyWd=hF]{lw60*uv}C6z57fC+O>>o{|M0nt`f ` i)Cc;PT(9d3!`'m!˝;jE521{GQtgh"CC>Si?"Z2i]lgz!3?m  PhFA-Gv8Lt1CpjOj6B ܩ6 `IT L!B9Qbx&qt&Tո (cd$ 7 YOlD?08!@3qg O(S8Sal*Ԙ2/ 2e+od  e?yj˪so"BTCY|+{gþHؽVG﷈,oN_dog~?fW^y]va'Y[장~Hh)-4dm٫5H'4~i1P !aIi{΄*=jTVAԐ$#'}Y:d pcbnv :co!AkO;^$|R#aʢ{H!H# 3чR[ЃrqHq/D;adN̓.D`2dM&BL3$=oMATm}E|h*0%T5tZIӷt5؄wLyZ:p-C}DQ8ȜX)' 裖8cQ'7ӍJQ$=a{cԏ#a$>LPKP2 8(0FB=N5 `5x'8 E< nS5B' N&Ai1>A6z=pP5*GijgXKf Jq&B0|:h-V*FI PufqZe8Ded6݃)0j%9I5$8&rs q"}֧oy&B)4!NQd l!Э>m]@ wZ6鵫¼"ٻfFT t`'g]y`iW]V:YWo0215##:tLy2-6DDuIj5zZ{/DSC:p&B%X2m+pLbu]>j [R]ՍNPX \ 1('`q:#!Z(؎$-zі$"B2Ǹ K=2j)` ߢg1@4bag?jDt[2&ʱP̅T:$TЅ))H, _{ 5zONe

HoIͫθ7Lt-V)R.z鞩cx0.u#W\K^,~.mxXnއu[cz8&Q #a2wyO?W~NwGyr9#iƙ[nFp]n$ [봭15T@,@ 51H "HC,cPzC^i9WQk P00h~d!12h K'8[6 x4ijPCx_>51fP D`L̆djY?ZQðavji SIӴs$}nUڌ,8k=;?w|1N.$w>20 9XAdwԓ,A e2k'v(,S3!Lp(K\(LpRḵ) 0;Kױ7`DM2S@H`Z6I$,pG-{vT 1  }bgO2(B&\ھ{`{<uIZ5^Axx #d$l6'W@f{}.7آK|Ƕo֬9ue$ DXK _3mY4d#a|io|؀XwF!'B E-B?S_q7ʝG,UDO$FCD 7uFj3QNӍB*MrPzMB8`9)пXc- #;a>捄b"$6waj ޒD5,qPY)pXfw+u~y'Wh.vPSQ.f zM R1plI}Ji=fHMu+!dУoH=evE/Jt!y9IBL'zn0cDEF{$H/uwzR xH([ %{P!k96-a1ڣW'\0RP1O ι).7=&h5( EWQ@H<i+ A| 3u&J5$܋[8ڸkLx #7:l(@fPIw6cyY~#k!E]76AgDh{!馅1]jMß։0+;Z򈑓,rfSͻv !,c_s^̏8ӤAN4h„R!#!Q0GA_,{5uPMS ̓8c9 84X@G:-Ƥ;xvLA'l!8#>ekwi̱ Y{D@dI\G"@f' Vkq [! i5ޏ &m" DQ2ipOjjb+v<5YNSƃ+VeMA?dʎ6q XL`xORj@0fc4KA7C1~|Opjk1}Oӷ p'`Mߞ@@L[<fA f)L#;xzTm u5&N0 upL"Is\D:.1#Ӡ1qjl)ҘAmœxϽ(":ӦꂻjaߨuahԠ Ssq 0(ב񍦴pl5NBcz'u->Es II(x'qReͱywf.D. &cLiNfLQ4"qw5P:Lk?pmw>} ;5c}l̘|c#  Gۻ|z_oYgFLeIաt-&;7;M)$'/B7;2ԐDxD={LӤ͠riA5x3! p .*[jA10I\1x14&9Ҿ̂b z{`ӸcI\ A6RXDuKI$@`YN?;~])PrY-nVDʺT֬JA3l wu!SN9MNHj5Cj 0LF@H ":phĴZ8d-,`d,> &BaNbv ̅ N)(Z`Y: y0'%58[Vŝ)j^2}A1BcJJ 48eiVB 8t¤UgAjsEy`+a$OOFeH vX}o~?́ GNtC)X UW_ ׄQ^&NnCױ6.5'{B_l'Rהarn&4YwբlX( FGM$In탨&hl1$}QHH@lXc4VEl߶.JuR`f N*}el$C^wHSZL0UٷtN ŝ9 mdx0.E#n&\[}YJeQ q̅EkDwIw .`S Ax&Uo6 O\/ ywiH(_6u͍-_[֙&Xn#xL(EA1E'!Ƹ gVa~V!&gZn`%ärjŨ#`q K ^#946y]0&5")Eyn$4@u4`l'$1/Eezdhs!j8Yww =7q{_T7; Bwꃉd)#  );{@HPEfBd.3Eͬ<]zdxȖUSbJtCaIJ1i(OF:5Lg3g^`Q~ASδIsk`˯1d * V=~&w/#P.e)YDocS` as0-z"0hm֫뮻-qsuHGu=1M}5ҝLmwbL٢O=HAjDoxz^c 0'O<沪saPd>c^xӡP ZśPeZ -"˖BH;@`X(e`D.Gv-i0L@1c7=!ެ$YmN=VTۭnVi=̀{:~/2;` @1mi|Nښ6i0xc_Mu,' cj.4!`#!mL=d( 1C[ =A0I1r pD-zgj&2R Yl zmp 0";E䐘c&pcFӷ ;`#0H&ny- '4U `:M2]+FBo& n%+AOOa$̀'Zș3ϯM:1ܔ3ɓgnFZ$o#w޵l=5U$~}&ޙ?`ȟ1w~H(,RlRhd| #g-v7ں͆ sͲ[n/9Ub#a4hI-ܢfBS[ pQJH^BFT[Зe8%X'5 (j;£-qѯmq έuɁ'm|>KB_mJ!kl}Hcx/T6x7mF㎚h꣆p''XM .xAqϳP"&Bc?5)- x:xAYdf,٦_״x[='2LvtZ6*+݈D9 Hqv'zUC॑$NL;9XQcZb@Hi0NkJS6&tOS;CR:T (o!WVT%Ʃw8<<48Ʃ>l  1x)NNk̈́v| s!EXi'T#Ԟe!DVfPͅpvU󣀏ʽ #]`3I̴x0VHḑ#;SE lb?t0H W(sXF'Sc9Xc_bdpʴ-NPlU߱!B1&aA xx #a%Ky뭷vط}'=sΥ}=~>d*@w^'\FB) RsMsA7*`s/d_|+b$jXG`GYFuZbI0n$tꧦXMJH,rB~:Cmp5N)F;M$8!)#Z6Eͅ&g`5oĐ5N 'f .;Ni>qPPz`10 P NxV 7;NIt (a n w&̴Ĭ$--zγ rOj>1Ӷ"kؚq;kpQWh,ĝzj8%Ҙj?tkC>`-wyZ(wFqRl1rkւڤ-HG(cb N=bEj$DhB -Lqw6mLB).Q j4,y1b [(dw(%xUM).;duLx #ra$LS6{! bOMƨѓ4)J|GuL0=ʫub$}+6xg{?ck 66mP ɀaE6mK uy&e5N ǠR ՐNrQ2MD՞FOb l(l ;'l2I[VKBcH&}` w'îҍp괭j7-sY G1;cߚCnpYЬfץї 资ԹYVv;a~1tlU4a3Bq Š| a2iT4CLIac$a&8àzly weP;w L_,ÉZҞ0E?Qз Lٚ1c(f?juЄ;2@m!$p&q),cϑ8FBcf?ukMꑴDFB5&)$ԤS*B= hӚfn.q 9d0Q8Fe\}&6[ Q* hc2 3d[XH12\sTSQ&X*X rFE7k: ^XYf:,kj73Rͣ)ffeh~o4^0OlcqGϹ(Bz甁l5x)jS`hNqu{nDŌq0l1zj( 5' <86wEq-Pe (դ߃C]}5 UlTc!ysT9)%GR2TBKl!dNI!k4&. Mu-3[=35qd1ӚOFHhx2ոqט3g|3mͭAj˖J>߰閭6KJv;8on ,M)q>`-?W)#1;z做&%&B1(8FF)(C ~Ʊw`@2&hB1xqsR\G9'ݾYsz'^pd EKıѓt@(&!f& FB2r|:cpW3P;X2fBbk[bK:#.HQU ?kY) WÎ~aReYO6|ѴA@N%mDfB2dZ@0'`&A5cB; QC`i\k3@Z: ar& p%YAe Ii #5Ʃ (#aʴ  7iNe:qӁӧi-p aP80H@  ߘq0 wdmY5NUs~uY_YPM^ÂOOFHzgg#.h:7oO}mRL:1}L\n7KBZZM;ߗEYٙ7Yu5VDU}*GX3QSYA$JqDrQ܉FȬjցJͼv .H\Ӝ\GXEׄ0LHʙBL "RatzLJ,Bzn"t'OqMlYpXcYFLB\Fo3wPsv1L?3X|Prіi͘Cg,|41OBS5Rvzq&OQgF¾}OJ=nvs. Gٿݜ]s͍6۬uhgtkSuZl j3 r 84JOӴ}q\Gy0PXGVhm }oXo8QPnLWkȎ`}`3t}[Php; DLL0 7B(0 A/a'oŸj%ʪ]gw}Zu/ZnM-W}]v ؋!'l7c%l'ZUAP 5KM_dԻ2i 6B.&Fc: &0 {<ȵkUHqz08v {:'bx1c4z%j:zKFz,_մxm'8h✐l(8c4T /勞A?u By' gb jIjavKt )Up5 }B6JJ KZpWC@IF23!Q88QǃԓM`x(1ҷvw.JF&Z$(jSQN8)N!{ I`A$6Y09;ECFHt(f3-)KH=Nr|nMŐL>_IqS}~.Ќ3Г?lȐq^ᄍفt[Mv0@@2q́$8IehcSIqbqop)ܓnh)p 5m$|G(c &5I&B3!IMaH2qM-Nal$DF &BZ2zSjvab-u\֢:xVnFB10g j2y./3E-=U0iq0 {7JtG)Xr! 4Xk3z-D̷ )[;Ak\*N}b~WpPAX DyA;qs%ywb;ML`LJqP#@f59imf-\B3昴 '5*@OO,KF??RZqx\Ve?ic?_g˛%8,٤~N|,z^{l޼+wo䣈6ưZI̅ EMAOi -;xc1'sRc#;Ne;sQԋ̄,|49chZ|n 86*5 u P@ț wIq^cȌ_N\bAkFB2Ҁ5sR|544;x rQAd^ :H43֓(N0O:xhMxc椸ywJw5bz^]ZR$In.遃jZ 6Be^⽉"Mj$DRrSElْ)YpӁ3Z33U8&BmLx #d$,!&hs2]Og#VBqq'klߩi='!7]S[2SpP5ޣ%މԲj6po5ifE C#@L@8h'}krrQ<b 0 5Ɲ,Cu[% PD#C!o*M~w0v#g:1C֛\S0rRRNeh4ɈScDE=&&`}S;! w:;jRxl$!!HQb3ak0EZЇdZPjak\CuCKy:Dq\k;)3_,[ P іB2Bo܃ztV b"cj$T6B #1g{/*逸ߧQ>fJ %vdΜblb ro$d!MA5Nb7^>2LܪP~$b*%pRapMQ~?cj ;G6ϫ{"i<$fB:e+!zXn4YA;)[9hhҖj|fA(BSߑ|L̄0BY[p6f J‘vuOZKYMVn1쫚ߤhc}af.@ ,H)[x(mЗ{`DqiЌn}}6PX)[;"LR]n!C0~B 'IPﴡP#:4X'mQ~u 4AQ}}03!tAQId&^{F? /sOJ}=~5t  i ꫯRϧ~flyE6 8(j́E!D( qN2P8ҘjavG"~ !܉F$pP1q0Rf6>4r̪PLx)x5Y)$fB=yTY)jSdd8otкMTA5G -i !'ة~nZ*m5nH^$3]˴.\rʶ@*Kҩ0%ttyN>4Bn,!lNsqFy)38@q'Vʧ)*<(|Bb&!lHHMLda M;(J  Obj5;# `ƨu6ʑ&]A,5㠝j*kDXcKL& \0Ւ G]-%ߏmbklT4GI-TxxV#zo}@uu7L)9lpōP?Ǝf3+u0&Hvbc{%kt1zBHD0*(cEɁ@$Ssam[ 5}HmK {M),HfBN,c%ﰌ"<,#Hs!O괭}[I;{17: CM΁ׁVb&V$kɤӒJUZnu[#u뙬4tŢ[ڍsCgT*֘pE4QK`Z;PGcEA%+e$8#H"&S*9pQ3ag+Nw1SdxD W98mL,)Oqm,[ 04vQRp 5m$X&q*|CD(FAa8ý\n)ͅaNҦ[k7o Lj1QL:U!))Y^ak^y$~>_|wM9 UnbLifVIAzK܂hc;Q֐o­8QSAK;y+AvCC!8e;!o{eZ`JstbM_>[R˙BڝыL%!RX)R|OMlcHǐiZ]/Mjׁl9)KS]M3v 3\yϧ,Q wu!N:}3L 687y(SxCa&ԁC2*7ʼnl} O⭄e9֘)N=1{0l5Cn5ңjH[dܔ]sj T*9)CP w愖RQ2T̓i̓MD;6x\` (n&lK`0}(jaYD ]+fLg-&5A X]L4xxV #a<oZDq3W^y.w>7x/3UHi#;ġi3s6&. 4}8bl.T z&0?xc#{`,m'ޡ $aFCl$ivIکsE Ue<'208FAd PN[ 98Tsq at ߨU.aҧ; զk_t fM[Ld0O*(CMwN$Cd"DD1=ޘ⌃ch8E>iZ&n[;7}2Ҕ"e$(B& `2ԸT(F-T80àD̈́ 4C ƒ'PF[qO5٪j5WmVAP̃"H(lU/))'? z;lϤmf 0d?m.oW^Pճܹe1wy ciBgکjJ)r{8L mb߅bJָOBY(N V?;4,rOJ{96R1 X4@( .$<2MoЧT Ԉc 6FFB9VV Skfe LAqޫfWn0mAY H?.?ZNE ?xǁPH?lsR0$aJc h0|-I-FqL5&FBJgAbNA]ԃ)}K!Qf`tjSt+sRw5&&BXca"$g>dSh#>*iK!xl#>jaa q1'@苉)m qӺk&f FJ&XsmP8tO m$ܵA2Z.N"?!/iMt><8ϫٳ/]FBPl&3f mjdOϐ$#&oe.3|BS8v(O6Bs `4qLY -:[oCuU2}?LzQW||1$GGL|[ ϓ݁K"`AGq((bHM< xt$se :WUfu @}~y' vd?h;j>a3n[Sk"HLrԱ4h `}DG xV!aVP>o'T M觞 Hc N `5>d >dZk:uS- ̼:QTqs1z1#:Ɂz8K7Bv׭c HH'jY L2҄K;V]t:0ywRtV#%+xxxV\#j»{'I1_z9ɐ^卄c@qoo$#a@3!O;l(cwVJ\u!NpR.2 jO̅Ic! }FAkԸ;Y _T=d2'U.>v>qiҾ2QSEIXwM9ژ٧Pk,Go';RK%YyFfk8_ ȒvVi5R-됙FgO)}B e:HoqJI.u0d4dL%Lu/?>X);8)EӆB1ʆ@(B#axCa,TjACQC$lE֨ct%v<\4hd*䓢*[ 4&.^; {hx(N"ޘ5q^L{|FױFJ]jޏ̴xxVx#!Cү/\( b6~H#m7!sϽXy#a,}ͻr7z\+ 43Qd0QTD=2,5-Nd]NLݢƽQLi#LJ? l}R#9>mbL6Ψw_&B/|#[HH(`,4L:0CM 4SF uV#IH54&-&mg6*Zթ#jά3W+wH˞7!m$=d^41ldP&lT@F15ZOB1@FpTQLG DSx3;aN c@u3zRc6B5jOOԺDHFBG1b.$8-o ĉp+g9Cm =?8f NKb:ݮ;N6B܃ ۶I /))pϽ.-ܱi*K$x .|g c#f7_6* -F9%; YFPP[0(5nr!'(NFl({L:LtǙгO֤7m3ijm XBc2 6'X()3LgwOm; fNX(jHH5{AeSd Y)NPpRwn5q7ꊅvw{\>e;MϪ[a2AqízAoLTk2Kւ4dM Ec9DM5 ,4u}55X7'wPxcԣ =Ti5D\FBd&=} Q++5֩<ٷE5$`#!1R!l{'1ƺE55zr1D4fi4Go:ۮ;3%F*Y)\&A_S<2W3zdUy2 v~InK3txϥ_lY1n]1upq'B7 &BmM~0qwEEj(,gʷPAj.fB(0;6I/նmL0 6~ ̃4yK5DPL)pLLAtG!S Em44q+Saam]OQǑ7i(%Uڌm}gAuY/ouZ }:W Hțqb EwPFB5Z!6 B.RӠ⭄adHYsZ6/&mKM@.r <:Чc$L2C-=-2wV8=C@Q(DUbt@& wpLꔭ6O@L#±70M7+c";P+$Ԥ/)) b [4ݰӨѓy7-1}eHxͷ喽_sPf l$q猔(kFLR!1Pm%w:ș(qS|2Bxh)Z^fQ~ O[n }&Dw梚ڂڄgbae'MIIAu$ŸvkS3:O#hҴGu~n\J3}6kL3m=^w0R3 ̄k f5X)( 6J o48Hg ,Jf݄0PmrJ!k{zF*Zlj1jjk"B6&!Dw`;5R&>J -8Qlߡ;'m"]l$$ѡФ4HT3SIjA;NekB`i)/)ڮ' !!!@ !jCѧX(> T M$!!EEQgA鈀(" zc9Y9gN=xq~o5~_ҟu#,Z"~ڵaPxc@C(Y M[@g]@ Bǰ'uPoMuOBA1-0A!LMe|}{/Ois|e'Dp {` =1Pqb1b2qhBO";s{Wϼ@tđ'x6'#O~T祗:\T`y!k5jjbԚ~JpѠu5 Zch8aFӍM>VٿMQhi>yqո(0m?Q€&n$fX&JKs7,)4fи'G33kb5E0d#P'NfI Cx03]/'f:~>m5jc`n$ՌH="c!njePD CA,*7>'N⥨5YMqrM2xi2Tf,NMՒ["6SY(j:- R[̈́2|Ԥ,BX픁jP3CnJֵ6\ޡy⼁sLw1pM$Dk0Ӟ~~X#!t&M:>eWK1eSHe@LD}1̈́IPטh ʁQ waID@DATj;m$hXK~8pu%6wb?`j)zQ/fws0tis$&w:e+SA'A2!d^A^h{}5k1 &mQaP7 q,2`|jTc;` aϬǠlx`&;@A3Y-uSLc:oYP 0FplpMIQz37{aV5C+W5̃q$ap+apTRW}~' ][o36q߾a {w_N6?/1Ν3$t1/Ǻ w.鿿7dn׿Uя~ǎ60VgC]X) RHqxH:l `}Pb&dN*(, | R[ `OdzkKS}E* u6A~*ũfBFTPJ0ш\Fe !N !g8TS b#Jɐ5R\kr jz/b8lTpQg 79N /-0ࢣykn D:  $7F ݃(c$;7CZKl"+؂lı@p0Ta"=Pv.&0BEHc/ C"4H/[gPӭUwk(NlEhd zdRNW~~l$\g_^?c"~w_jヌT"m 7>ߨlX&V,=jF=ی=SyY#O{AMo_̍?Lz#!@Yck` TXq)Z`b*BH'.cwgn1&B7\Ill?j۾:j18=b8i` $co&$a{CsF` xgw1w>y@81NH̄ cum]dS߶ lwf1p/OyfPAwN0̴v Hxl"Z3-3fC1i#b$v9 $Q(#< @2@k^֏Ax+$,b}QQ\|J0^#۟b{vڬ˅+"GSLYt. m- HgVGfA~*#մ MEd($QǺPusPMmqu9i)\tRDb2V j郃BIUilr=>v&9%3a $1dD-,48v.j=I2| s!tejqn o;z1rk{bHfP{L_Ѽ'H(('z2t YSrlP cvJՌ1ӹh\P(,|gq1o!k<]7:m`kgÉ&B5i&xis"àߩoM*塺0Jla#!P^J!܉ҝ d(4Q tVuN|(M=IuϪ 3u.R(F8pHfO~;uh[)g0[/;69&y=寋o{WrGc?)^ym7W٠FB@_⩧~g[۾n&ߓ>AwklJ}+4# Q|F@ |EL;(c ` Zꐉ[2@1Ǜ4'ƾ 0Bu{K U = B ~bv׸%Q1ANM5G $É0Z@Lͅ0{OӶ8hXֽuiZҢ`ꡞC;C:j'^Wl{ZXOڟ Ti C2YDh L-cTW`AlA2 )S Y4&5A35z; 0O'E I1FB`xb`f Lג/LC1|+  [DpPW N}U2FVB?!c藌0F@S \xND$(VņI[_O~l$\#v|k#?.=k׮>\U؟騣OJ,ҟC~7j[m5.xGn ŝwރI6Îm$hcMjQFqwFjz56`X& ̈́zGMp5QuL\w`yIx(NJltge˛4my_8<1p͵2Rc}'AG3!ށ}ҩqC6BF0Ea$ iw7/5 ]$3IKqvoP⢯ԋm۲hyw2D~SE ԛ>w~^{7АusRDLT[7i1QqQn`mE;Ax&މ0!kᤤ 8J('s!1R-6B~'tBn $;BO ZdrQ;iZ)X*4|wgS6sQPImAτq1Q4#)KUVܶ`Țje5ԍgf' ]L.N9eJ>I6"o ~^+ "nh#]-^}뿷0;: FBLۚ@7r,0O'A2;;N3DZB6]$|'0,)02]͂!| p]F(w[:u25r{S8&7'naxcAb蓡  ?V ɩp [ -Nl&$3 ˫si2YTkkn/z W'f?/le+p O LAC0닁ЅzbjAPKaXirBL a1RPRG 1z/2F'lqf=1Q8о!6VpSo<A¬L@1FH'ULӥƐNXY~{@q5 cL'?O~>AQ TͿG>r171m-4v\#W?>fLFGa$ 8 V{XC胝ZMI!(Ed}?o\S 0HoZBgcc>`mhẗ́ׄ\?{ \a(E_k5K dNjR&jMnSX)zl$. WSb``$;PgC]6CAl"1ǟF²\t鋍g>"7,A$%dqd i3z2{;k$`ZD`b i`$$>&BEn$$ zj$48;'lNfl^18MGqp3!޳$E][J;pQFXDȌT@uZ6uH qQ˻;)֘S\PzO5&BR5[c5LϺj3&8%5L;gf' Ɂoͳ VMu7%LԖ2}/5l8k֒ⷿiKE 㟽%xq2`% o{pL7iLB ,;C0bd&,em|=.-w8 Ӷ X"<V!W߸㜯7  VVp cT-΍vרc|X&A%87l|:wN%3pJL&ɔmhj]\iOmBW[oga<ֿ~vYuag?`m'om$ NҘqAܹ>3a$?%{3b A3fd$DM`2I~m $;tb&D$4)FB9&#!{03dQ >E1]T-bEwSb$D:PLgɔP'p@c8fWVke@pi[b_O~l$|cJ^ ǠH%TkB2dslރ8w \~o$8;}aPօ'|KsAo}:47EWlhq_ ׆1b'na$P&qMw ,Ǜ 팀ĭ 0S [bj C/2r#$XjH#;Ơc1Bej"`c;#X˨/[YA?P@fB 'lM'Ai 񩓶0L;&&hcES\k UBhBX P1Ԑ'?O~p#!L= ~ßI`&碁yqBd"{IQkZZxCIuLJFu#L&BVS Q jP52CUNJڙ)<(تam|'^*ܓzAZE;oܔhEqRMjCֳ=G(6ƻT.csR>5Ŵk܂32nM'?(F¬THP,dLHc{zb4cf`LF@L{o'jָdӍm̒~pk(R5Cn?ˇWP =9#Ip%` <:4N cQ$?zC29>=7BHBp8smH#!Թy?y(ER/m˲=ɰb7[Q? oڳ}| `hDLMVa3c;H(/PvH4U˵L .6 ڝE m! މP !O '>xߥ)q&l; |ɦBg8Yjd8`YHԋ{M,L z6 -;4S@:iѐ7DBR봭1zAlNI=/'?Ϧ0fF+6fFsҘUXuC6Bb"!kQq8x qgN3R{Bujo>ak.Op!&=-KW4\tجow>HZ&B1JЄkVӠ8Ujԡk9 ^T%8'](ޣO5 n|TQjl$,w ͉Ďq헷'dojߐ:2ٟFBe:` #!j)iri ^Z8v-y} 5R0Tnt!Bc{Ty2RVᣁi`58]AQb NW0tMAQTrR墨@yjL(lTa;Ըg^5W#!NCm,T O^4r; AqR5pLd#aVF6FPL"u !Ev$Xcd%e~2tRDwaüE ·06moPV0nu_k5K\ac0PkkTDZ;! i[T (L܊("`Zc;ޏ[ 7:.}qGBDv{=W!~f:05;x`_'7vBY֓bm$R "3v@D(B(f  L6 0`Ƃ²I[~qyI Yd0T-36°GrwH^y5i+q#q7-KLvBe8v@fgpٵ+n\D$C]I)JO~d#aV֦3=/O8fF I4H V㎓hk qqdZ ݷ X$0wPR\NԶC cݔxexIl;NWe\S"DH5DFBY)Q5:8klR x>Nc {Q3#phf<^-w<H2 k(tC'|gHqHM!ptZZ^urJLLȢ^HNabL{e8s''}mKK\ҷkhЍV{j zBkE_x(%'i,{1051QJfAG=Yt!vm]Ӕ:1:K $P+vN==.K7hco&D'l.T#㭄,77*6F씆@HA&ex_P%qR/HȒAk9D=#˜zF0 @2RQ:w9U;PesSx!AJxcBؼ^#l$!kHz%I4Ls/Z]Lƛ 5X1I_O~0+k  "3aqd5i[hL~j;VY [eУ:pZLJɖBdƴjR;iд'K8=[jFA1XˠjPMۊ$keo,LĐ 2}듴VEFB1HXO5/[ۭuM}̀y} ÆV/cW광L$LjvBR =5-8ӷa$wIטS e!jm)d 30ʔ- %#a D[#H ar0|*c'nUaR(,R(}5BXPZ">H@>} FO?rd 4Xla*d Oj̿'?Hym$( \بrx#aAkn#585N8Yj"q >wBq:+E߁bnj}u>[x׃mņBb5DԤk @G4Qa&NbA9TMv: 6Ol# ))R F ^:SR'^g$)$CfxwUe&BĖ ]b곩P72Cd 9j 8cZq4h y(GNsw2 E'Ԏ566_O~0+k36`,A`&oѐ"E=OϢ' 8Xc9Þ!c=?I?bFu6eKQL&dy'u 7{;񉘺$Dv544U;hVmQTd zfB1?! )KPli[6_[yCi:6nh}?/}sѣ߬m5j o$$@8ɀj/Lg"ӠI6&"2rU:%`{jrZL8Cr 餭@h}R`*jH"; I ;10(C7C`k c!z,5RfxPj ZQߣ9 akLL`4DC*}q{w3 FFBMdacwN6O~d#aVi$kaC!$b.옍L}0Qb`5ދyw>0'qR;N'$ P9)Dqg&=7a\|y}$[Y8b7;t`8Q C՘cP8v!b"Ԅ8zIBT lTz0 VB.KƗM/=o ͳnOT̓+8p/[YGf:헽GI=i7z̃BHy %X) )8ZwQӲ)-YxsRRbCѣ{m,R. l&TEMb,a!$54Bj6 NOI-CqFpMH-N[ OԦh Ee# O?(1ӝ3 Ԃ;42gu' 6hc`׀az_d tF lP$JE]7b54IA@Pȧ3C\ԩm̻}u)^S0vf:R";d;!h1c7Y3#!.aTx #8(I]+yNڽ󄳯Uw-}@}\U o@)zYRH^Ss0᫯ڈ L;`L~ҤϵPw[b~  Ia=hCDHX ` $C Oڎ;LN6BA^'nOvq]Dp߹=IP`iVpŠ R@OD-x/\Xm'jḦ́ǩpzK?3f854!d,b$O'?O~0+k4qOW¬7 :;Ox(I)}Be&!hlD-RV#uy߽Ql MiԖN_цsoM\_8K)oUMU wF*FCo"k5൰< 8twKo]zvV>U `j;Q̍k 9$S)$K=H` !9qiMCd^d#WEO5ke}fɦO46^; 3ޣeу'@Mc$i[Դk_G VwPF=1^9T<xj"oLnG^0bLRPrS!3?7zDcSe<tD1106jgh0}QtIl'lŭ+1= . H#=5['?F¬W3;88SvJRLԥ443P끇d#!3R!ItQCal&qP[#`Y5u 'ke:ui-3/E۾˖U]m|U! ZM}aAM<:Mu3!QщZc; Ӡl)VJlTe WkQ#xrхO$>:q=K.I &dd E@L=Z<_e{#a{pT6JfB,Hw8cMakB2l &j=/SFZj մ2.g,֨u=ᡨM{w q11PǛM?G} Y)Hyl&䖖lfcW5. -]d*}Yk;5\xInQj$椮y~l$Lj"S@01D#à!0|l"d #qt$L4ƒ- QCt/Gv$mb '}7 L߃?sj|1Gww &Lc:4Ҿ t1";Tt0s(ZbqwڵiPewkp~^gA !޹eDrTogtq[Lf>wTj:bxc30 18(˜޳;zNLעZa wPAvĭ1q+fAd!@Lzl$,a"bsz1(> %Mj*YNP#:6Em$9 P;<9\<;tBN=f$ &pL$ApǤ/'?O6feu~ ;z&# P-e$ yƃ]?Tz1dwN^ZPCn*QPP8wX:V!QC}wH㋭Z\Hk[>۽\'gI&)d7;ɢ߸Lz۸ %7;((TOjq-F e^{ܢbƲ8)jF㤚ب 'B;ʐuJIG #: OlT̓PHapQRK1ᰵFk-'lD}c#GC"XhrRFH=lD+e2RMpSƺpKS5G#h)  1(]z8a$X(J aIH )Z!z@173H Asp,f&BgPd 'jM|GM,:e0 'jHB11o%䞊c(36 .P 2] L+g~{} uy8lLR;?O~򓍄YY/$CאD5PL؂8c/XF1\㮃M>e4T;R>|Al0)I-HcM~ E &Bܙ2' פٗKn8{q9u:xqzft}-I"̈́\=6;kLFBlt `:e6!sY4%F^'g&Cxh2qvimQ+TFBMړbD&=0RNlC2Q>h; >h-q0vBl $nЇqcQCG)-x/N !~7  y#rRxg`, PMFqtS5DI-v'#a}Hd583=q973S=\:d--1#5F%m'?F¬a$ab&wwbm%5C&e Sdb,DL5:PFr3!$,Fd!N@ý'hsnm__Gyl`Me֪Ip`0 &j]'u !vF Dx Bf m 5cɯF'f54Db-bO3×?0`W@ t-qWC_= i7D),ӻb9RDq C iPJ XAf2D7Bq1uvCb@1e~&Eqi1j$Te0p)\H!3*2cx/[^YuulO1j $S4(s'?F¬m|F]6ب9Ak1"Kj! X 'YLl$(b#"0Tg4p6\OeKE|7|58氦S_++C!猔̓kHh0BtP_}5 i;!1QFJK;Cr%lr6ں=]?.ږNē-D=Ϩ/_E?`W_T|8PHMR'j7JpQ:i6rnj̈́Υ=X;o|N!v i}p(,}bxZ7 #54)65lT\ENb!En&E ;P)R^i0ݣk4FGi403'?HՁDtNeqԱ zuY4XQ &B{:Zj/? Yb@ڤ 84`,4w,B5w,3v9[f]w0d΍s<,]<1QĤ s0QN ;5 rQ0eæ]Zvc^I{b(@7 aI'?O6feuhc ZCࡁQ TG-8{t&*T%b6*D|5DBljDAq̓GlۚLqi.:nMIl"xcb\z=cԁO?y[[jwrMI!pRDoֺM)9n\K>I:p.z|I}i‡(utgI9ES[Y)Ť1 DrHcc ki:k>I-V`uZ(Q@(-8!pO<$0U4}/uy)FG}S9ӓ#dvjSz1Qd}6 eNgh\HU5ED}fO~0+c O#у,&k'0}IFB2RMQb.$ ),#0/ g:1(頞1LZ5$q8&BmjDXpҴ-}Qv]D9ýj4C0Rd)K+2:66BJ0lTR:?O~򓍄YY~#IF8EOe{10RHr}v jVF]ַ; _6wF5waA8cT ]tnqvS߶Ks֙ O0 %&jF;Чm|T2pQgh#!yCi++u⃖P:yEׁG.|r2B҂DfB̓2p=kzP{-QAj́bFqjb&=qnswk/B35b&uʿ'?Hel$6 F_"xc'r(EE!Y`F$8wBENQKrK n E6*LVB-DN3V0vu\ՆQso4#LFB(GCࠨm`0DO8)-;6 3y,dLB- 7;-}qm\['^h()e6~EL{OyN<ںҷ}NDwPMJB=AE.)->h~CͼJrS%Yl&؜7윘\ڄZx(@KR+;?O6feu`u[p:Nma&̂qz0{ {u &lōai+FyNLOa8BR8;|1#f,i=/2o!4ˆƒvz@36 c6ϛ>_kE0r NLek#y ^-}ӊ~)FaAg,99hn1`ܗ7~ ŠG uLVdpƐ 8!J"脉Pp }09 ڷJ1j Ed̂$8~ZLTc!M*÷V $tN i̧A,B5wJ qA| UV~k:  =F'T{֠XsR:?O~򓍄YY[<8(%+EO[XsP9I˖Bldi?2kQbZ( qrJK4xo(XB#aGeZLIHE cw>ᒏ5uwYbn}+* DhHB]:%Xdݤ֔ؒNqPA0̄`2hmHumYޓZ7.g%@=扙.,z 6&.i2H[>JA1lm2j=ȇ-d*^=Q1Zυ~Ifآ^2q֗8IcƉ(c@aXFI405d FtV*TP9) :1B#!sQ&Cw@h'zJP?pz}ׂL!JpI"% 4?O6femer vYUB8_NlvAKbc!MRtG g_ Q0`FڬW?CasAoJ Nj>c+ ѯ7M1]j͍b$ :d;!Gv@&Si[dNe(cOJG` &T"8o84#LAC$!Bok <[ dF=2ƝLiPN)Ƙk5;8V@à 4MD#P[*~mlT{HȆЄIt~' hGLj33#嚆Lc|_+% 8}[LZnT)Z+3' kd уj1&P cwW6ή=iд=u3x[$ޘjMp DcMNZ{8h=5I\PC8R'hI)Mn }F_Ygf:=1mTNˑI`XHak5=h1h \r: Hc1| V*`ָ&B-8C.0PpTZyCNFBMk7zgfJAe,w8(YZw&1 jqC+16Hj{AkU4 E-r#!yeôCT1F[ i̽Z-4TMr4;P:d&6v|щs~!JqOλ7jhcIs1 r1[Xx).`+%fkb:͜#aRd]h1+-Qec6֑NNt&|4ݏH8ōHh!V:7ZmT `J DHKUFa" #!Ci-t€&SMj$e9 Ew,״33ֻh0zӇi" l({R[p).LQFXEIl c58i Ч3K[<'Kq2f?3'?[*$dYYE]wyK̈́K'բλ3LsƊy*o̓h!vh1Դ}>Qt(dq102$+)j3d _zFWH{@3^Y=L˪za) 'vhږc< FvAM* s r:6Z=my□]L0M^b0lv8por̀ŀ]QW^w˦q{1xoVL`1m?(v5<] #!zrBH;v[I[޻il0(wd,2g( 'u 5LofIV3b!|3u !s /e.tD&B.Ôo| $JkM`5`S ]KUͅ4h=rbQwЅ'5\wk#D]APRe'8x(j(B5z _|٤EJ\nBKTI*-nue=JKSVi;Is*3f"JlĦ<&Bl$<wHiz_DsQPM Y`:t{ajK |')tJ1z`C࢚B,w2;z>xm'1n9s~ӀgKsz9( '!X)o%jz>*<4s6;S0 Rj y%tl.0.⏖2wm0ᰃR̴GEQWoV~b1z︿wZR_/a&65&*fBR޻q'j,4875 7c!Qr PܝBGx Zi-$Vy'Icv NJgF%>jAgg,w6'i p8&BNsZLi !DtК{yjKi)) O~g6ntp0̓~f9,#c̤ٗ1LwbDFC.dՁIq4q %8d%5 n1 {b̄j"fBA:3q\B3{gl*kNW* V.:p fB~Q,5f3l $8̍4XՈ6pN[igӦP ;h}}D/=ͮ 7=M2Aˑ" g$䘎=x3! ~r}{AA)|$9'pLX(c >DL{G 3(Z KH[(áta~0&4NI[&Ҹe%#5֞0eB<@&AI [*}qTe댃l$;O~'? }W^j$ eq|!bLqГ[TkL|TzEeZ!k9E-8wC&<}ppc,^b6B8|{A0RR.9)jx0QHy)8RNI0^:pK[P&$ Lt'?O~q 㒦>L5󢹕NH*blD0QFxxt^T0:P~AW0pJ̃*8waD4#ba˿1̃ (Mc8'u?$'?O~:vnd=i K [.̄МwN P5j塦jhXpPa#GyZQƚrfJ<~aPꘓVeVb&wry56O4n.[\X$NpA-"5d< Է;XiGGq8Af[j85NcZbl[0zE/+3ټ02u5b [QPL{6ot`S!ȠuB Y4yZo$d#q7!)59L5Ac΂jgGy8Ҙn&d,5P4-$pR|/TOH)N'VfBDtκdʕߜksҽ̓8M'u?4'?2p't΍ j"'Efu04ޙG]WRc$SUD́0Eqx-2JhP& JeN$$B;<~P[Vl}:N@}k=Flc|̃P0]adӠSpo%Է Ik+̄,e D`,ٛkgZLFS?/6ֽa{WSS_gt`Yd2e;!z7G 8c@2!l'D &@CZ;m_cק?Ecfk_.<<5-|O17߫b$ HcB5LVvpfp@Ll{`&i[ $c=شT#` LJtS(0frHf['m1MF$>]" d5n5w0zfB \|ZdtO*Мvkb0Dw4,C>O>K6&SӽPoML!|_sW{b_6BH=MhSD( Cm-QqzFGMm!ib`ǦA +U{Fv &³Vd`OaY-Z)5N\Kny7EBRKAkl!tYPkN(u+HcbFKRC'uokJhb vwc7Q3eTH󟍝o|'MNCS`$hp5' (اjhco7-Bf޶g5޷|ZbڢT\420R􈉒B`0̈́;IiA-fB~>J=Is.v '] Ƙ}|snD_bQ_w}3 .J| K!g& bO>O>/Mpvx]Kq &7jj3zkw]EA<]+ `qHfGτN֊00 wG3 LDuHM LYh"[sԱ  ։[5 ưLSSpM#SLxx\~D NCҘZfBZ􍡘71eO>!kUBpQIkw.M,P^Bx(cO*7u&fBt!PL(IQ#Bޙ u`+!qRc}R7:?uVuǽ64w\AKwBIHqˠ5h؂:J8( `{6 3!)̄WHU]w'Ǵ)oy"m(ayÚ#3]Qu?3w?,8gkuȮBGPL46 $D(֨)%5̄:FY15olD:,o*+Ejn%d un*7ab ABO"g l&$`RLiEτ:2jrRNmHcԸGM|49jwņM=tߣ'0ŭ-F=Ӣ xnҨ/O>3N\S@dk4iZ u{HP g6YߡXEMSMoEӸd*Lb 0i(ژ锭߱Ѵ-jX'X@ tծ x0 mkuoc䎣: 2aAl7j/lS1;Q34Pк<x rcyP?J؅v)1N"2 lvB(o@Q~B`Or1  @3|q͊b;(HlMlxc Qs\ސw,q}S I X諉BOaj}kQaܦPm#48 B>O>8H«Ca1N &7W,J3 0聅ZPD! Q&FۄwPi  eCa˭' Bl"\j桾h c)3D EV( h!qQ P$Fjo2VP!T83Jp6jn!ift7:; ox)E(D}Jn:Zk^ S{13$HHBaj$hcHZ ~/LT!|'|4t\a+ U` h͝;JKq$ʸVB@1}K1n 7El$j7z oc|C cw620=#`Mٚ8X$@}Zbʀ,@ȱ8&Ed MB @)]?@g H MB/O>O>$ t3!P&24tǚČD N .o1⻘ J&7PE`PnX-\+%+58#ŃղߨZg=㦶+Ya;8MHy:,'DG rZ ʝ 8.eI(/D(+HUd⯾ f:'{s&L}RhcMk!Vj >pe.6чAP)IUࡸcCNoIq7j  J1Q:jҊvB2L=|\Ѕ7j&2o2`Ԭ b)ΘA!TF5ژjQyPV1 ǂ+U &-4|'|8kL0M^Gv+k M;K[<(cS!3B7<d+!j6V`@ @Z}D^"vB0 13oρ@{1`jYwf+nI&WreiKYH@,0Հ`b2IodoSkNIݿXl[yȄUDGSU6/g'X'u[xE፭Wl5@ (b aԩ[e^Cj$ 筄{^eIjc`Tb!/5r'j3i[)֘a` TEs.ts1A1&#9 [ zy_b:cA$]eRiǃs`4t+!wq#ܤO>O>x萤}+)X)X);%vfKK`>d-È$i705ntag#3s6mL=H)n$֐2Re&how~GFAbd&$#!j|jpR5{&d,mIjԺpb3%ǒN6*B\&&o48FK|qXc(x4pnbtO.3!еjJ8;ix|'|翂 ]A2Sg E&BMN"l"$HVa! @2i!51N[ Eklhc{l#C/ߖ@mDͅt! 6cٍzsu4"0""!#rջ03EnLMW#!$QvhcȁvD5t]̹5Hମusy?MБmGܘUMByO"Vt[ovAB MdTsa@j$sQl"$22 M:e Q0[72K7@NQOXFAԮY&ZyP̈́:iӶøX뇆̓T; a7!L}M,=~; C_`ne9a!E_t) q ؤA/O>O>YyFߡFBo%dغrKW&h[6a0i-%8H,zQUdY&Io"s/Z !/<%FjҍIG6Zho탨&5!'|'|gG&- 5C |wܵ~"`Q)D5  =c5Nۢ hږLz b7^*Dt3w5mp &B-5ik>BldpW3HAfBDQ+p@bF7:mވ;>jfl1leoOW6M}cy4ߤhT-~ŧW@(T|%iaЄi\ oL&kd( ߢxc/VOޘeP =/ԣ;@MMr!N6B A0 RKlAѴuc@Օ5]@Du8( 88V EvpQc](W?o|EbvPDyvrRm~>O>O>g%zl%t!x)3SD4棝Eo%։$e#EχDQ-u<| 51`5,lvBl![hG qz !2 lT8))tSV?R8xT֟閔r 42ROm7Xȹhbz ~'[?tKko@㢍rg6&X}f: 3…?=O|2SbxPhAk夐HQ'ŭ2 EIAQԚ4QZ D,QۙGC2>*CpQFC]&.*`ҰJ{㤺G M[k:a еk#LM2l-L*5O>O>1NtvH`Ln Q:Z 2ܸQ-n("HBmat▿ N6&M,@+q2eF ̷zd90 C[0ۄ4~ŷ ?{CH H&!C$L#hzX3!{ͮ7<7Yӄ5iuYcWgi)^ ~KUg}_(75U/33 k<7У;(#ӠFtPFfA4wH  shxb)E (Z{]oxV{ fjtFvhıX0 LM4HпfP>Lb0 IϤj"leji `$(Ɔ“qAABc3_'|'|y\6 OIw =X#95Da;W%~hc37$\mLQ$p밵JcH0R1J䱋yB8'}  [I-XP!!NMµyz鵧^ieV߮=}%7>%hO 4` -\KD E>)O 8.:1qёqs*l]*1֓?LOz3PIࢼLBGMT̈́oQ1lI.J] D_,<473P5֡k1|M-o%N #!@񦴖`Yo7F̓-j-8'@x}5KS[ )8 oH oBRfQm!dRc>O>s lh["3!$Hj T3]xcDt[{ul>@Xq et˶A0;.olA 7 8C/48c6&t3 mѡQpro$<wu'oitϋIz'j(ܨi[PФ5OҢ5 CM&^yECKgym նn-ܦ`1<; &e3%U dJ?c쏔bRF{<8q'jl{0/ci[H[$2}/7DHӴ\#nh@b&dC!߄Fx7C1[LC.|gH!}ehږb $z LڲȎ6O)}b)vWcmK2O>O>ApÒ΂nLP R'.zmsoPx  j<=pO1 5~ .~ڂ|{Gi)SD[ l$4dop`:D_̓tSPzb7RlLjܧ'.zf;+ER%;.BP-0V4B;զu^Bdj~ݮkwnI\thk虻^z#[{;O0 D7m"d3!-c [ ZkbKf*XivM:@|b; |[d6Bwp@J=!d70znPomm=홆~pP%PMU19 o1a@"h6/LcOF./׏]4`T?qcyhAʇOݖS,/j-9E|T7cg#&ݜ̃0FaJWݸX"#0 ;`z6#vo$nC31 zAf51-2F(b;9,ч4jem(<轩7U0266&,I0B b@qI_'|'|򩒡pbb"C!)nMFn]֗XAbK0N.*E0ro3+EoV Z1h)P-KcJ"&JרXh7jvן7\;e>27^C!mc,[n0ѾZ!k6F 5LDj'n㢭66gOkUf.zS2j./]{( ^=5g\30 j1z7wO!#" 4x ;Ոc'x)e#! PTw4p-<sQ2*Ck5FB&#rP}K18ھ|Ggr&JFBg&z›TXhškLHB0SD|:.ilfO>O g)dʖ',4BL ^IT880^ UEjcI&l5AXwA vB}z"PFӷtZ3woB,>]ZO =/m±7 ^3`4aS!z0&nQMxF )8S3k<ᨎU2XlrMP03m|qLJM(X5a0̠Zk٪ϸsQ.YiӸUg.B9ҭ0j1$&Å&姺z7aIH(RZb𚾥\З-,cR5ؿ+7S8q{:z0xo4|T ) BpNm"!k#a0d .l$liji *ś0tLҐ|'|i(<,(LrvJM ǧm pfAS(#X EFB7vI1$ !7 -ad*L}쐭S`H&V@&10 Z5v ocMd2ĆB9u6ܞпSWo7 (B_xcЩ @C3| - Cf$Vni i -!Cz>Cn۪ L %SbU[|,Erl)}]`",熵nZ6% ˥o0ԀdW3a8a ("HFo@0Dd*D`b( 3!1ElY>mK^&k{Z_A/X) neyT %9-Cb(b-]Mq ŠcF翔O>O>'N8"i 6[ rw/M"3 ২ |Ը~3 as!jQ7Ta.dq1ا `Pco8(;(l$4e8sOԸEkհ`m^Lxx#D7G2Po[f2'U1'mrG|JSFC̈́B1khcIiIBA.0PxņI[?1'1SfU]j& F濰O>O>JCak2^D)(c݉u 6]$SaAB:Y@8L0/b9 !yVNڞ>}P)DcH}<1̈́ hֿEL֠kwy̵OBlDfҊgStnb 7L Q͠C3pca͂_ڽ-8W/Lh21v 6k'oNU 4YtF(*0CNUac?"9n-Mͫ=CλleP nZ⌽ۿ|ٛI[°J` D}_E0:$#ӡ@16 #֛Eu;bÊ@+4-EG28f= $:eRPF ,LGJz 餭 U<]ۚT"O>O>ϟNM JJm"F\oX+J?tQ_-xXV> yOr8%}5ֽ4r.jߙ]|;!tZL࢔o0S;JbKO;o`x0kOi=gj& 7*2ڭnd!m{Pͅ8y$dQ6j\}Dx-Lv=l3.,wnf-&Ap@Ƶɍ2EKxf b:p7&Adq,`Dk1Dxp|Gne&!{771 :Y[4˜l3JxYȭpFR}w>O>O>vA.JZ$f ;8qΤ"BTF"4 􂭃xS{J k[3SQl*<ozH4}ho f`c|CYRu;!HjϾiiㄕf:c5[Sı ŭ7=qѯ78mj^78.8qMJhPx؄5~tnUwLGm̔xiJcZ/k Ԛ(m"dEApPHx)5(2⍁kH6F:̈́>\7zHi/ $=ԓGS߇%Xީ(c>-]b T>}0ԷPS\е0ڽ2Uoi>O>sH0{]RgpDZM׻zb=&o 29,;* gclBLny3!zaob 0 ›O֢-PL/2Ld- LH#x&&B] x{MT_xY7-D̄l(5Dԭo'4g~@̈́\Wn:HxMՂMb4R-#|T5a LŶzzZ?HTmoC:ț A1eV CFh ᓶ: @Kᘘ &0uumrfA~T5h a7m53QI[ 3Tfҝ-0z HFB{[=/ixv>O>O>uc2:Jnэ8i,$jOMlD LcF)!pP>zJCJIi 9 1/աk0A|LxRS!)0nvNJBpQXőiXSlM&働W4}Ek :AkBE&Buq?n4k.:5=a1WUٺUf?)O8t13f*4b13}i7~egsg><;'4T i#>yB냇CqV>\ԅ0R1cQEuc6 ^J X͂Hc1\])AF[ׄe.SڛJu0Ӆ` YXYs忈O>O>/CȤHF[w@wi8P͂Za7 'o7e 턺nиA2uK7c2iLDb$)[DYc!jusf=q%?E_4xA324 *5FBմmO64i1!fBSøl$,&3%ӟ*1kɔXU2'mK`MNzy'?_Ձ۵zxIS]c)Z} #|c(# fAvBzi7VEAYn02cc!de5jeAX#H7Oْ0"gn} f7jRh&Ԉ-Jj'|'|Ed(̃uCa$"5:1CpQ%Ź(dwQCx ;$E(z4yG=='~  PፔqƛuB1Ǥ{nAЂ\ن#;>6h%0 j1j =PS;y: Zg01+:P3run;a]73J_3xb[(3]XO6}oH"a&LHk5ؤI.5P뉑h5hV 3!)DO> Ӓ"0pLn2;*mR/( "A wi#!j&me52cKnL1 q),Xc&HpL#;Z1 B{M`L< +|[ [u.sVa7Es_!:7 3hQ,}}gkn~qdo_(0ph@m$~FBΘ~Qfq)⣪0l삇#-M_G&2f{c#>30g@S FHk9`XqX([M;X-<6DH7m!4ypB23f(&ƈ#ϑ$=6% Zc<$#fa&BԐ7YO>"G%--R<%InSWi}hsLR3P6Iz UCx+eɠ5~G FBz i U4Hu/ƨMr>Bb.ěMBn0-C5q/ qQ?nÎ4c57 ^tTo& #!Kw }v'vb&0bΆ$.Z7a261C>e3L=xağMFBpQG!|CƠujι R1!|#`/T$2DME!ϡ x}gqj n\Cu0hTYqLCy3!zxFl ě̄चܢ-l"d#R+Q v J{rX)ܮb>D4)3|'|E}I+7DLoJZSڴ,Bܐ[oSQ- [ &hف71!qTd Y2Yk=1op$ޘ": 20aԩxV S%]a\D#׽f:/ecBDn &l`,ԍj&wnoT#el&thf eE5| W fPmFk U>joyf PX!sm/?.x9 7Hc}07>$ʘ"+m'":VHA}!NwWu#!L{fB2{ 8fFŸ)[}bSQ47; S8饻? BaHI/O>O>̄V“ӽ>Hkub]u3E5zO#ol&Դhb ݐl$!8* kFloA5$L \(XMcxؚ"ѓ}&S0v)H:p]ۚƭva.ڲuo^U$XB o(Zj5NKEY7M:hm\tE #"LV~Ly^+2=]'f;x#!ֈcNuq1q %RHi-tK2`-}zo4we&|3ahdNJ9j~'$ZG=JX"88!kx$"`d( Mz#q i߫v0㍙&UHnyJyimGefO>O> MI-K@YNPyw.Sq[i{(! +2lԨc Ph {o_ fI8ژX,0R= P3CAeaف> q7Fo;e˶?+ '_Ͻ2d.BM_loMR,6.)?jNxǮIl@6Z|F:HxQUa_63liQƅbmsw acU#! CA7PfBc^{_Ydv2ox 8 04fuM6h}'n)mya.:iգ/0QHQab \'q|PCp鮳*2~0nLh*7Hֶl$ ԺUf?)O8tÌ(3}f_Ki١зj1 )j2T2֞sQXcxl4)}㢐@6& lTX(Qx2Q{fB.!No o&[͂TkQ2XSeeX)jalVc'śx)'㌽|'|l(lN0V@²NK0v|6Jӵx#7 6vۡAPy,!br;bhF oHɔL ݏc[7V9aF@@ m8cy.d r@ 5Lcb$,i[8fSɡٵ)"a|3_%3%U f`-1SbCǭƘفs 9wm$d30-=1d eaB3i!hc i&¤G71h5An#Tpo`ʖ{@:uAhizj*$8&u @oH٥yqp 7UHxbA/O>O> . "21Q{,m&Td<УoD3S{[ mGc19) Bx Re\;*7eSsZ n U6]4=fB\tD3=l9`LMX*XW2x- CO\WP8yY~|W6l@ژUb̴e'ˇO&Cph]Hx TMCM[gB0Q5zVtZ͂";!k6:' ۩g䖹&B| xh5&E%\T̅l $V  w$6Bj$D?Jpjb2F*a Lb"k0)Q=K`5$Ic33'|'|kEq"2fBg] t1qK i#!z}m -ӷ\A" wE-n'8P"u+!Q㦘cce+! Cak~\SWpǨ_R7Ӕm*Nj4FWMk3S7=8N8\7aKHxKE3񄯔j0CNaЂϖGM<` c^rgS\mr!` 'mMP0 Ilq0}PP(0,fP ["@ź06FO7n&, &lQC'kpKs@ )ژT{f $`Lߨ(#j_'|'|`ى.xaXsQ(:KﻴC0 C!{4L&CոCUZk5 'աkeQ-Q`v/ -VBTSzK8)c̒lPaq [?K'z07ސ_Dt'(#B]0VͤNx)CZzƗE O?I3}:1ǫ;t#v5_Wt:֘4j{SWeZ0 I0S[DAh^B`Lf>5*\54DPh}1o,썋$pa 7Pyk^qcqa nᾣJ{|QLbmHH8iZfO>@f[@2bjՐl"4>ba*\3`1!&1$ıRKNFjU(&lu3nԈcN֢3dfX\ LVI2O>O>u*i-qQoZb>j0ҕ]Dm">I-`&A8X<) Wkx)g%NM%70QBh7zo2R㚸 R[MDGmt=0ӑzٌ=9/H0KH $' ~H1Ս&v-@,b0lk_Ϯ0I4zB`l"Z [ (pb:0q_b:[(6 e O#)3B|;M"(xW2 8 E<=woV J`c9XkLޚŎKO>O>O>%9Pv@7Եu"#-`HA~Cc`Poo1/UV \T BM0FH|=0P$w54Hhc627N{zJa' ݟR^>_sp5sQ>%ͅ9` kJoйZVpm'45}Qy~e#7}x'1ӟ'P]fU @p c(wk=?&K'naPktFw@yL fߥ^߁,]뜆>$&gf}e;rXLb<LA146W4H ^JFB8P 6{/ʓMu#9c6} +l#;0 Ru j9&0&$P oQ̱IYI\1Ia1W`iq|73&h>t{yF{_&jS/3u`vGNId D=5b#!II5/O>O>ӫpR⟗I1n5O>} $-#HA;%7jd]M.I0 ☎$vBP Y7C1%!zd&CnTpQLHTP;,=aw(XcJAо餭tո78-m8m|pǨF \`b{̄b$j&uvH u;ᐖr݄/ #>aؼ NǪ +O>O>̈́]<4jQPue]DP( 07?f&j 9V n郉 hoV[u >3R5 R+3[Yi`&zHBI{Wma.:fO^iccr5sR06Q1kvUE.u?n'4.^%i$֧BZ>k6U䦣wTc#ݐn$aj{A%Ak1x Hj Ҁ ın ;[\LhBL9Xk2Q m joj0pMb"o(nák7%-f {ݞJ|d` j6 'O>O>7%*i-&mHcLڭB56 , N(1ǐ $i7c9Sa`ĨE k6#p|rqb$ @̄7C1@2у]mZcap6v7kl0 FB3f ov383!F~Ӕ'v~M:43h(Nr oL8 /-ױg3N}O>hC:{5A%EL%^gyi{.Db D|'jHlkS7; 2[Vn*AvBpQL(,ֳ=Mm-tpо٨`nu޺>%7Rㄕ՞yÕj$0i->hzb#auOw3=/3]Q|:f~0ggWHq2 ZmY,bLfsK#& Րkx(LMuz.n&Bߒڂ8OXkfF TRtQ ,'J{^rDϝ Cd&tVsR5¹I_x'|'|,AsEwL,M`e g `o[$=1 ;j{.l Ԛ  {&c$`DLʛkMid`L" ;yK;F 88u_\|d;!`0<`$wM݆U?~ƭIֶC !FBQo @ly?)O8Ua-s?Z>uC𪤫=7tǛ}SCλle`f [ 5P_Ac˔-%8#ңBMpgLQ*c30&f @XPf"3U& Fh{ j7i۾ؼh8h=4 ւjGGcfzf?09Itu cZ7> !2oB€5q(iIq+j aDY 6r DfBsݨM̂ڙ(n ]yRQEoᦉuZ-&*7˙n+!{jxM=t1S礢VB5Ĥ1/O>O>:;'%vl&8vv({^]{зiý'%L6x{- )[P0B~=`*` 0,;DOJ|odb4DIz0B11 ZOwO>O>U5tUi-Zc+RxcMk}WiP1E Y('(nR16i}6 Ba1o%:Lq[H5(G+EAk0z-Cب Cm7 }c YS]soK_lM]ջb<̈́d Ao܉H\کh€^W7.Hh&e&$6J&B⣴w7QƔʉ-3 yY=fBkl$r)/e3!aCLw8eZ6{^7 &B{U͕+W\r<°02VPFB֖p.Zyc<ӄ ӓ)X&uVF&Cu+!PO@ěl$wo"czzBL줥 # Mt-_4HX0.DFP)543iR1;b$luup@9f ʼnZl|o+^_o:8w1 >cMr-0B5 =Pe!Xg[ hP &Bx C{'zE/0a/˔-C0DP"HưLLS*yh]vXc4ip̥plLԁ\rʕ+W\ZjW QuFHkAO-Ҥ(lj N@tj{y(N(k(yPEFC$ HQ\ ] 0(w7VV\4Ga$q1zOqA NZ/ӿ+V>M`4x--g$T huy?+0=h]sNЧ~2BNǦ̄6^c^d5_x"3})[[M?yb!58HC͸'T!3K%& d0ִ\49| M~M.{8c?u!BqgNq'^n'1Ңi+>{4P9I'C!DfBaGEp͕+W\rjyp5²-2+ d[w|SN4]+MMDx`z1;qn#L45&0;1dS<SfBvqP7BQq"γΓ.eM :uk i`kΦsGnqoR[yk.0 l$T f];"xֲV4iUaՈ~K=nĦ+5c޵oummSd @]X&Pb9͍x@Szi1MRπ =17N.2yc4KkE:s#!`&h3 YEC/nytta5qP6`$$ ð͕+W\rʕոh=QLԵC/j\49d 6ʽR|jE9E49jF,̂;N11,7yЃ (ce6&xGOc_BRKjj I-_pwID.Aam7i 'zhZSEYoUƌ9hI8w°% Cc^ᠾ7/->3puove0@hr3nRI* [lTZXj/ѐ5zIq!.*)8(qR0PdR&)#Hr^"M75'7_4$=IR2B7.TL_9Y]5 j&d#+W\rUaPa7Uz㌪+|"҈c?aDI< BRx0c1TLJ1`ӶNiPfo f;OhctjdJ( L<pI_⊁󞩤x#kn<P,'jߧQy?lj{a k#aφ.n u@L&j m吝gԍdycdu+!` fB;u=/z#@FJCׁw7Bb$$-z)H!c#! ɴ7WVDoj((c²ۇNSA_$#!F8(C4W\rʕ+W6240 9e0QqRVmd`אa|O5R^jR^Jv&RZHHR.J|[ 1&$Nil4`x3'UaPH׉Ig"e\'VmaVx?tpufL(C\mlF0`b,vqeE#a+2UеuˮGЍGqGOA} ! h;zl#$6JA{.8@o``i y1l$. ;Q|c5D.b ^*L>*<Ծkqz{2A:5=ޅBr_|֗OkӉ-qQ fzB}rʕ+W\mg }_F͉i[L^fBE(s% `ޓD7 =ɆB6C09NRjD&XD"<xC! p(qs1Kc;Lݷ+n5͒Y_ňyd06%L~ ط-1R*8KWV͌qKZH!C{Lcˌ?tؚ7z~oT.|%#wXwLO5==}0,mlj䔭Ic<3sxFn(MPhƐ ʸWӠ .m Yj X֡l"TٝN;+l|aVB')љ+W\rʕ+W'I1TK-9eNa齗0JLkr X(K`d9ՔDܱ Ya(o%{L3;$|9di3SHI.*mwVo.Ɲy Kpz~\2ie3a 6 ceUP~ Q=E[MUG=ѪL!#3̴?4d]#3v g0#((-Hނwacp'ZQ~)T(\L:xɍj*R#ޅ qMSE,oMtqs~l8YM%MsR8R;!@dajD?<2A+W\rF+NU!!cPHm#IDy-qHQq'OL&owH%Xo- (3P zeX=1SP3ׁwj(D 쬦60-l9]U0Z4kqSe1E{S*z ꌄݏx({'QϼwXa60 N9cɬgn$h Eyh\TxcM Loj t1[!o tNޤc;p g }j!ޒFBo>bN썧i O0 0C w<=67n 6-z蠨MFudʕ+W\r~Tx.qF+-2\]\GݏM B[ Z/C&NLݹjzw& pS U90ӄwO,0S.%Xy( 'zH6Jj˄-Ytk:N\lD5n"D#aЀe(1Wߗ2*5Ued$Af¢߿L[Hhl-b*` %MkdP{/I7qpIh>l̓f(-F^{THޢN^Z&BWׁoM|<Bs1SW .ͣ#3=8QMkl=Np9&s4W\rʕk/ʪM)#! 4m]oꫀe4E77]i`LM%cFu] ^k.Ƙӧn9zibƸ YN8;@])IAai7ib(Th2#yڢzKu(u W'^ pȺ=1йu01.)#vN6Zxki6sPL@EMx1..d2D7P(B3p9 ],Ho$|Kas,@&aKdGrxﺕmã wE6$ 1,;1OTe\rʕ+W\{y5$QƢbfBhѶG>dg*pמY(N'u:% }"E(.J'y N0Pޝ ^(Gx;  qMKԱP{SVS)/R`.{jm7}90 Pq Uٵ+:my#'[6x䓡s$3Ujߞ5?>nSFB76)x3鿳l'tM"5o;ѓBͥ㤔"D)㍉H.5nggw4oBHͅJqj7&BF\T ak, m|x$)Qn"A>ꝙi\rʕ+ZEP6 qBdix 8F$EwLA6!f0 Nbӷc a ei0fom\6B6ڝmY[ } w>M/sSrGי8fB&7 eǼI`OISմP{4shswONð.%°.3BA- iwKHh-4 {0wh, (k̦A@1C4k@M" =16&OQeiwW-/|;13D5 Ќ Y (KFu01r0Pz!c^#1 NMj;A2cCrʕ+W\rՆ#fDa;a:Xx!k&r1TMMX(~CL.|'3wwOcBiZHHa&ԁ(a;%хMHj#|'#aH8)i\ū[2=x;`aӣe#a[Seֱ·`5.:=rћ?}FߊL':t:7]'-/F\aԕ[Kc^.H$fj3NL!2]Iw6*[!6%,T&C_AlT'k1Nz^*;% dw5ʛMY*qw!eE2LxӠ'7:QZ $&BF4W\rʕP%2}4ڹ.ڊa3Xc` ᷸ (@ xb`(F%6Bx־ ;pΒ털Ӥ ѧvB[DK +{qପ'e͠I[Eyu8dI>+J1Yejw2r޺pշq7/F {ftp@jDr0 0,C)f- ^c_lv#!O4Dsl1$B`ULO`Q 8##![πHe pMPXJd&<3 Rt|g!M4]+nL2~S`3JW6qfT`2ژߡDLrʕ+W\r}j̄eQ'GD8#-mZ5މd&M4t`oESi-&g֢еD+3oCXZ3Q8))NMn̈́-Qi 'EY)cH*'T9ݫY* \>I6~dK0U䯕f"Ί\ti  [b̴u~!߯܇-b"< =?c^hH ^pRj 6:7%s ) `2oप"aj5z7dFb>*o>J |4Eb%8!!Ԍie 嬔MR Tn#TVj=BXʕ+W\r} E3Q(u!I߶7#!mjE 4[.<46iZSsqc!W7\~1@iZ]q#1; ob 7MBdԨvB(xco}tFDZ o[)ũݗO\}9`Y#(poRYPuFITsn(waܛ S)\r0 cC?Y#aՑaJa慪Phԕ-m HB1̄j .l,d;"31 -2{#S! No]z( 'kSOC/w3KlǤ۞[j#:Kh)k4.[c1W\rʕ+WOPqL@e6zE}2SzG޹ rZ zl"A5[PhZK {qPM|5N ɰu#࢐ 9[ o>5]f>/{]"-Cayy{D=>#b "3ѢK'5~ZH[H !7N =BB1$nJ8((ԙ(u#0S4LAD):ǐ;LMdLpR~/ *rc1JR (R?'Z)0H`t*̈́v:8!+W\r7$ S% u+!ma'GheL:!aPHHBJ5z-z@3/&B@`/ndhqG1HF BOTdV P [aP\&;|HCoVeݴugS^}քcOX.2~g`u2 R7gv: >6JXtsna‡äk&m^2 :fiw {f<`0acuMn-0 r,j$Xct1l!{70M}4ox'{H0RF-`e o4$ JvP2Kc:$9%JCwS# ;͂IBqS&O>+W\rʕ+gP/r㩃PxȚ_WhxS\NN~y wf0,HH_kQtG]C44K29B@:epd=ZBTuLFB8&8w@w7qa١p s"̃8!L(Lb5ãrʕ+W\r}h‚cpV +Yܕ?BYc7;քat)3cP=B)Qjl*T6M;ߤ7O(Jhw1ꐵ uSpQܕ-My:?}J޳k\]v:3F½FS\Q58+L 'NU3B!}a >f8 !tVFυEf:%Lh <=tx{\.(i?,lLKy e #%V1?oH'2RqP9)1uӠ U݉bS!Dqo^{z楐4E& ?; 4 'M%( 5v{a-/!XpQ1+W\rYڍeS"06&j >Y,caSx' dyP"w~#w@9wf8< pL#Q-n"à,b_R0Pcr e,Sٽ%w51e>4iݦ97&^>n^HIpfi8y??oMx=lfk4nh4n^L0mio'Y: ZHiR C0L#9{׆iu^)QWzRӛ Ǽh?Gi#8&n"$C/,db IILCjhc3;m D$Bo%H8f3!eOk{Bu{ ^Dcd,L( yvƪ!ugFAD[ H鄭u@#0W\rʕ+Wϼ 5~ýkNrqJ4*e',Vhٯw 67 5xQ7&~VCKȱsrQ a(1'tqǓ=n]rXv aN.:uE/m&ԇʁEE=]6 fzO8,&3]Z=e?ᨫ>< MEa*#k2MMDUGD>*BΩ.IqṞRP7RJII(Nmwej UVjPR[[_8P#6ޥ[UxW#!ff+W\rʕ˫nAQ6m\DeEa6 59%`j K5LtOT-xF0Lap `L7z/c@h;2a!Y:Crp&q{PDŠc!o&m; 6Q>.3\*8+6?Nַݸ]q G.n"|&,ZHOaaʌ W4 >S$L7M}0D~ya[nYr_|;~*^H4'O.fU?68x88J1޿PuC- 릣8nj$(01Bx A1ƓaNw=C2AAi\zw@S )XkzZ0}oj,̈́<]14q{ӒO-lM OM 6z?rʕ+W\rU`.5JKImIQ6*'ɸP-7e!NPu;8(݉&L'uE%ſ)7n.{ak;$\UT7v*,jw(8ޢfm<c/6"W Dn7~KYq[uÅ,Jo(JB57??F.E_ }),u.&7rW_ScRFgw VX8Ϣ"RLt 3aanzza n"|??u|O %wOjSZ8l#^*=DA׻otN >*B0Q8Ak|GiQdC3%iP o8wl$c;n̆"1L3%V #!NMEU?sʕ+W\rY'mMܦM`"4#k$ژd;l(PH" $eM:d#!u[ E; Dl@7c@ [%HI1òAa jw^X1hގF Vбʁ+Ԛaኧ%;6"foGG#ᖒRQa@XzqpaUnYqDOHI[ ~=aO:=+({[8i3a0@cS %1'kHpVB; fB&̈́ROiZzֿNvF2XHP82 vh>\rʕ+W\r5Ш$Jyd6楞Rܵcy(5.o:d0&7vT̂xKb( )')SFκRtt`  IB ! 5޻"EuΜf99{f+7|T8:P̃k^au=k.*-#W:oH; ?&$Caȿi\W]twh1pJESLB5zLZE;~Y\S Is\t墔ࢫi|s/RFB"3ni>YDfV5a4J/-0۟;cgp?HȼTqQ^k{NNTM&1Cŕ:&lh QGbqW 1JbpQ^e,'5]Jm79 e٩]DzTb 7_gVv(9Z|'*!ꙩ/_|˗P4tGdC8%Z++>"|3b:cEhH1 aeP4g2i(mRC_" BH&B/6{+X*%8pWP3V1,c$go14@'8NoyY@zms)1g?y(='%3_BFVl9h^zgJ727a>x%z?@744Ng@ڶZR&ar慄vP|FEqtO?-y@0Dx:5j0읳myvv8Ot~q)_d$,{k wC0;t`/({b0 Bw-aPtԊamtI n/e{#(KY|v1}m`Ȃa`&duX7FqF`"ő݌w|˗/_| ^i8}F1ɄCa+rRY> d,ވ*{4qlJ!rSm&C13({4U |UHX0RbFZ7M/t.:jHMd-]ri EobE_C<O7~:aV1ǿ.y9ZZ~rً,DsPJ6EhR 3y }u6z,b=JE@ܴdj}e DF&0 7*F +eCȞe:A0:DAe, r|sNoq35w0WgfY)&4(,nF r#彊6q/ȝ;]jQ }ȳECOpѺFCϗ/_|׷g ̞D E%,4 Di eˤBׄBc0W^@H3](m腐L|B4 c޳ʴP1 z:!u0` pH0u/A0jpW~u;'. ?Cgu&Uw0v]YƸwVUѲFj,>Fy M3QBʛv._@j 3Q43rfR2z; BҙsҕoYScjUx2f捻-;5t6ﶙnl;iqaHSoHM +ht'[NuxARm,¨P( hqrfz!F C!;Ex&1pIl|7^$gXЁ߹10 VenP@3DO="ꮈGԦA1B-J2˗/_|Wh35Lm0RY~<}(ON(\>H14X^SB'3kA&.gJl&B1'YL BgFdm&6*M)+.PCB_E Md.끧˄& ͟ree[\tfj0u[@ I7m9fEH\_ʷMg.JB3Rz=?2~rыrf]7э3B4Lo9u)w:; =]o*Ga"L#TQ8Юm|2 )# f1K fkys i-*E P(B޻"Z$\T(f,arVi-C BkZ$@ӵjv2R12+e;" 6(=sR^5ydFŸԗ/_|WM.[e&[ y5J2hR @[I,0 0@AJ0#;`J!x8e"y!h#L$+Fw@D,bw,[Y{e|⏓Qs_wKz4:SW8v_bʚF I%N 稸-(yÀc vZh-bYQ&Z [hJ5fܼRZX WXc(<;.#0gi hJ30ZaMaصMgP Z:@ʚrw [zZ{؞h$|;i1S{9{ {uL[eV7Zs#:ɝ=aP2 kw VhVNP 2B9C4NA2^Bb3wXv8яa쭞Ta"U؝F6_|˗/_|R;6:rF*{lsQ1 *fn .ܱƃd;&* c̲VrlT3U.`K)k3"1* Crf-}_:՗-EcU?Kh25LESs%gn4E+7SL ?Fg {b.:{wWQ%4vZ ? x_;m 6&K#[g=F |+6O?su}1aP(B0 @LV+c0@9d5© 3;ULzS! ݵrg7V1&*p0cz$kz&3-dppnW[@T(-*=A޶Z-;ygAIٛ)1*WpqUlpVZf)5gm,FNS4>KSi4bT 5RP`5  빗n{#>G^@nHZp{IF00"UfB\qb;`Ba:CӖϺVF>DiX'b׭tZ;j P&#|̃6f~Lj{v@WVc0x\D#͗/_|˗/_qu-CJbHcjv1Q~&B˽VXcϮ9˞Ϙ"Sc}\'*f* ײg)N*.j\IA`*Flhw(hgᢼ*=U͢? 9Q s]&loъlRᢉY(<]~Ϫː.*^O 3SNr_NkЧ56\TQjvM[Oӓ7*zur9ya9we~,O'1N$5s%>`_]~+n 6K HEbj P^27R\t5rѻn,S>we d Ϩ]yY:⎫c, ~)g^w{BMֲsRH[`'m& f(Nݍ?|˗/_|}?j#*ņB0:Mi 0v³{B!q^˜fx݁1TȫY9HEw86FC gJ u'H(,nZf]]̫񪔰O.)7*dp8jX9bg&Zx(aa gdiw|Y6xo37Rz *Wo՛-.^Kepf ÏC+֜%e'iq9F AA-n f7N7 uw`g[]jZ-|HE_˞ Sx]*Xu15vv*Bc@P  L ;B̈́jXqB!a:!K@vrN[5 :[Sz2TBe|˗/_| &Yy"!4Ys5D\NȬTBfn*|).,Lk043Q+J{fjZ!JX3O\(pPǙB(: ƌT)@õY.Oɳ7K\nx*{3ֹ%-yKӒ'isdY({P _oWFnACREljK^A)?xFf?504x|j~JG[i|Zz$+*$fzctL3m13g'BDB+b.Tl[x/fA梛!Pb&kM6WZ1R&S302+Z(SELHNG+F Se>jfMm`{aVHnq2Ruj`˗/_|CM(ln@H#gg-C1=N%pzDV%O%TV: # 2D 7y(gTdVo`$@L.`$d{a|f1(o`!@29v3+60=V̞Pw|f+.PmAwMh,6MZe58 37YۭYp6BcS5<ǀƒtӜ,8+.LKhVON)oFL:'5g'N~F kձD?1ڶs kCM;W|14OjoLD~q z#*{{޳` ]»VC3 r@3MrLZb ak$pL Ɋ1ԪW(.\ CiP 9fhpAJȂZ63!w>ft/_|˗/_~@.UD(TUJ0Rh*d1˩-BaR!e*!RqR;E՝B=N Mز<Ԯ\I-"Da"![j1Qf<(꯹0O`|'Z*.V|{^ٺ߬ΡQTYEîGIY(-1 #qQaEY.JKZἅ+mu5U"kjlLgInhcWd1um(䳚@4o]OLp3u'$"1j황/_|˗u4@lQ5%@!4K2 FBs|Ǹ"C0ƫt^1uVwվ)(2 ]34b@g0 }~,à 1X+VfBbS ]̄vuo<TyJXf%(&u`U;IEGh7l:KKMG7 vж2SI6 URWl,9s;!s ߡR"qIC1B1u:ie`b<ݶ*# ~KY9c@&BBOA1@O:Y':/_|˗/_.#.-"eY$ JThv5]3M4oa@,hʜ" @b6*E^x[iVܩku4kcɄBGaUB. 4Y0Re$)JofBYU䍭,!sцөMߩХ4p8ᢆ{k(|מ D -:Ew.ZEWX.J ePX^[3a^~)n>Fmޡ'hI9 3 :6j@xmh(PVOȬx Y9,0U`tܺ:39̄8@m9g/ii@(\.qǁHLC^ɤc hFJZZr>鱥P5~5-Y aM>C]=,|M~A-z ߿ctuOkߗ] Z> Z2 0erDx(pF(g鴅[A`^:oy鄝ae|' C;@A&I"n7X@l2h+tm˗/_|׏Rh2PqXcQ뉆QB1D(jl-%ԙԂS,`&ZԽy#4_x)&  AނY4;+~W   Uc@b.(S]҆ :M`.6Ul&g.1{1]$:M M۬ 1oF;b+-^VBs/33e~pCmn oDͺm 33=fj_Z4»v[+kYQfXBKc5Pr/-voqZ6 c6B5 pB5wF(A0rL(fAT'^!ؙqƼ34`8{(K%ʘG`H%ly{!L3f/_|˗#arP,ܬV|k0]]nw0&B3!C2bxS{0<; p'orn 0h6@{55nѓuz$ϭ0/ pi`:>$5:͒ ʺ$@6#e%2K7h٘=oX7psT\yʞ3>RBY6 LcXJzZq^S##ᰗcIҰ¦?FVX[w$M:TuMTlI^5 }cFb(xY^ޭ$,4VBW׭]!CIE1vdﲡa$ AY'e x@&orEvW,1cHe٫GyREb9qی?|˗/_|#䢷V5&k2(ҊW$("#og(+w(f*EH}k( -+u1 &9)*B#GOc3{>CõfW2gpVqg׈&DXMN\tI5ZGIY)`'eqHx>pًRtRrP|z-*B W/t=nb.-*s{*fөi3ӎLtwn"lzcW?_6(,6Z)3!HgpR`҈-{fFI.juL"dDp'M&l5eeF qƓH(TA*Zٮhn~Vjwl w3'U께2'EBFes[?|˗/_|Y7ɢM"=1fn%X\c5rǠ bYz2+L!C齚Fȑl ԑfQCX]M@XqrLuښtL"}SjY45WRJukvaH]mzJbY4{Qq\mZ4XhJHLpї-EfBT7T\,nvM$i+L%DɄB ا⢠-Zhm%).AF-L(HM);>'P[BıR1~8#^oXS.:[ ohwQ.?bR.pѭ.2\tEۖ.^X8k!ʝ?7^mBC_ɦӊ)'9jM5wM4w +lquxпR 33@׷1W>C-#6ZkxdY%J(S{#!F&).|T[vs"1bܱ9ORLuTgfvcܻM(aD1XSG16]3?M^%#EYh s {Zu1`˗/_|Q3KPfaHh2I,s!J|ad!d4d(Adr;${akWebT X Bd͂L%ݑ|f8vЂ<B/4Z520,zbVO.).}3E%VPƬ5 &lDGjVʜz[zƆS)!)/`&5qYK7"sgoNGݿæ{'>#mėtc7jx<&\cNq]+J)V9 H0v2 @1PFBm 0FРֈ8( ϸ˖e|L27Vk|Q8&{<S a!1aQ;D,y @8@Eo̫C?1j4˗/_|O5̈́=QQΌ4rQff=  Cu0R0 0ed3/h&&*XE|oBURj&*{YqP6 7QQnM6 4ZۦKӳ#CkL3,_EQ3iRF燤՘J7<1<32f۩A.\QotOi-<9=c3EYzIP  Gͻ#XM-tɾY Ur |ԬB{"7'jkF1z5fF T *%5zNGLبZ,5eʗ/_|TCa^a+by/Z1!  0oPx_vw_ W?dn[0*#! T`fd @jϫހ-4DhtŔ§붏_YAW m8nm:-6IZ2pCaPƜ4cz\A +7S|j1,1k͜Tc5jL<=?"I}ϥh1:E_a-Pa[$G_P햙0QQ~ eH&A鼅8ce,&wq[7uv SB6Dh% TBk!u\9 O$DiӠ62YwFxOD1aO?|˗/_|?P%6Z4B`9+-g6:>"RJ(h4,Aǔs{& xc0q2!QirV*wZb@rv9(SB]X0T 6^1ٺwĭ#0Sa]׌6MZeH񅖋.\!(-\ Mͳ\0Th⍗՛ޡQ+h<݊'n~mR.8*FC rD4P׌D-L1 txiQlc~SM" PHae y{Hn^YFr`gIb6jS!PL((S4 (K݅HY( =JR39̴0RwõN$t7\yP?|˗/_|(@:Dw$8t*#a`M69TCh&@,TB:{0 D`L̃"k$=YgTLLFs FHcg]4$SoI|6HWuˮ" !|5Zc 4K0֡"zgT-ںmڱ,*=L7J[BRƲOXTɳ7kE$:SB2kKF]ehYEp.ZdqiUp՝;?,:b[^Iڒ:3Fc &є236/vܙiUt}X1~]UWL TAOpQ4s|i,`,`آ4\wgNʍ&w%&C0n[9CLIs "xW]Q} ` < CX|wZ/6"FBP۬/6С -fF3DӍgo}JGzN%oҞhӔ; -L(2RLpQ{fǗ/_|˗Kg 0JvA2O#b"{`M5kHuPLC6Z#eխA߁fB^yϒs{+.[cdjoa>aЬbj pݵ8Wm FB2ng0ѸE go͔bhJ"z٣Զt4%J`H]O 50 k(\4>^Ppm;TMk(fkwzz\AsV䘥 ,4#y%TNO.ֽvM=mO|DG#,0ۈ/gEn_H5T&B4Q?5M$)f1 0y u FBW6m(cxb|fA2gbfU{6Q 3(%ge(65Cļ?(=bZȪ sQ3#Ɨ/_|˗/_9`k=Y VtTV` Lo{@ِDAfH # AdHQL3R6(\T)%a1g1lmRe.P o6N4ĸ:͒irvzLAgi}0(:rփ!Y?8#<5TN7yQ.hfՏNv&¦17 `$N5` {7f~ -HXhFe/flHlgcFjBP(a"$||"]i.FS:D`KQcq̴˗/_|WxMF\B<#(c!b"DU5Bd8Q+1Xe2j7찅=Ug-FuPV;{{1:w[0S<.qa9;i4p͚2r6RR*]N-W hDb)4rbJJU۟Ӳɏu'i3k9UxȀÔ>{/E%C/ #aDZ̚ )1+ɕط߾+_S_P5PNK2n7Z=vv1 RL21 P :` K;lԻq:!wAG e"e,v";޸V㡧&BN&.[QrdO!r !W+1 D?etѕ/_|˗/_|l4FA0`^TXǚhHFBއ(i +Q5(R5Мw,`g&lin*{䢊bqCܹSZZ(K`*T.ݒ:-? H(f^?͠0^C]#i7N?0rӚg,}g8IP.Z-ںmڱ,.:krؙ| _L錘T2fyEL8'b14Y+*?PRe,d)#apjzb< )7+eE#g2Lj 3 MA3irʘr=>kOphcS:%foJJZE+Wo'^6֙y4.^]B{o,Qyy1*U Ц"3Zfﻍ,TΊFBõV/".!ea2 Q}fnnŚ2mM- 0TX12uJ =pRygtmD8sywL8Ϙը˗/_|wYez3 H:m,Lʲ*^+;rPWlڣ``̾;`l!;lݴ4 p rgHkYMg0ߪ UG E0kֺ5z  n/ھ]*|,;BymqjZM,kK#30٘ hxzqTMK\CE Ԃu[g3Q\8!RMâmZzf1zpCa]EGeZ.:arj0jE&ً,]mڼ\P.rQ*Z~rMHI4˂'3WҘ)4hVտ@ewL:t5R~ӤP37ev*+QB#Q1Y8SԢwh*t7Y˪ (4a2ٳAZXEc2 XKM T-h T4(3 bwXaIq!Q4YyP]pzŗ/_|˗]o4P2Eq\!ʪ^^ !u(c9P W`c28&FCg;4PM@Juʪ:oa B/sWd=uen߰5UԘE`.Dik(&&M[h@,zqxM@I4xνK:/tI:tà,2q>!@ AZN1D<'aF|I>>ä0i75jk6 bG[QDz_0Jw*mk@L,<8:nAŰ+ACD {7V8=Ю(@( kݱ0Дs6$3l i!R?F|˗/_|NEEd-A%IzE` ZsR4 IZRm(cLho|gfԴA~&* %T]FA`,l  kg*Ԯk"7nBFְy }u8E9;s_jh7^nd(=r2zᢛMk&oѩ3V ƳةshLN>u)o"k*z5{XXt}X&^ "mclQbi 40C  )p&sl`!X`L![egctۺWUGs=(cr0^mW(9)  "5jot˗/_|˗/_?8h4}1tMty)~èpǂsL/HȜT)R~^*NrB1ώ%BWR+_<q!,|ꖋ*։S 3uM!3L#Y}a2e> `@atq˗/_|ͮ0a`Xt5 Av0s 9dž]D(FByAst֢Кyc:$NZg|l]A+cn1Y!"Vc v{ܫ^X2n%mMZg{MoCъoҒ#pA37lYU"g,qQ4ph y=jl05ݴYp}{jiWqLǏVqa}G Úu@7N;o Ba7Fgu7RKԹpyA`,Sq%HuF:m0(w*X|=, hc*h&oZAgy0&-)%wExOZ=b'\A-7H+G4t˗/_|eT.z 8S 8CfVY.Nl1NJr#pSh,Ǻњ82 DBlV 2 IfD\(+X8Rh /]m3?K? 较 ]|rќfh\rMihrQr/ĘJ[[vk'NxЙL)yh-ڔYS1_q;g] 3yfmy0퍄bge$D1#w= w*CKQ XM(htBY9lA]<Ȏ+,}Ku^8p MJO~Ֆ`&ڸm*;wh;ΞRm1MZl 444,N'J" =h~:}s V?C;K%G蕱l"q~eaX!6 + k}5u6]tRu@ &:<]nU% ^TP]QV Z 1q7vʞw!C!CV7 wQ`QWl $z/=v;a]"z<,&Bc(x,c6jd˗/_|eESfM2JQJ6EH(Ԋ~i{fڽ(v[M1R'u6x13L"TMCsUH|f* "5q1PW_0ɲ0h9z/zzc\ )ND)E@開NKF%ҋ̡**,9jL_X.bi}=Tgf\s4:f'\lէZa3niaq !<]~lVpDB9[Afp}7 eLB5#U&A4\֎=̄Ny;Vh"9;qeN+cfw4afHx)b$|Ш˗/_|׏2V44Ed fFx8X2+D8*@b8P& (cs! c/i H(,cj"bUԱeWC3TxEҧk?$֘d8FڭshH >#?h'kޢǭpBwlFJJ[EӤi4jl.Lh4rbBkNZhVM*=lM/O)ĂðFѿoaì/)w[c&k:,Ln_ Vx`-3gD#HceF|{AlPco Q(1bƟD 9!% aF?,|˗/_|G27`D!'n($@|@L(`(Ne1V3PXD FBøc4jN&:"3O1 }Y1)Fi,: v% 3^02Eyᅫrђc<5{eѱ%4qB4GK!N\4rф̭TYurSoN*OЛ'?VFgfۈ/fn ]׌iotX}c」( ml ^EHw1# Ԑ(!D qqqnr'q߭ŀ{?k=װ>NmN}9( mF-.6'eiT+$aB|/o"dfJ<ԕ&8BZ%^*53S`bO'UC63i-'ρLCߤPT*JR=!,;m\E/.ʂehQ6eK $(3D1}V@1+*ccu 04xFm!(}Kaa.:Ͽbcˆ㐻x]Ä~o|}/8{Oacː,BZ>Oޅd3̜n=bG9г|x"w?kD. CGG`A8mMqʶBgwwgBIr3 B_WLý8lӴuV޲88L}lyWbȰN."b0qj* },Q2ij&Y(=gڄ{ A0a6a]>?dfZ_հkf~C Nk :9c)O 5sRc{Кx*[rQi^ yE ~*뀵yP3K3Ž[}+llq}P٢d=Pzs'b eW>}2SJRT*?L~|cAYZc޳.Iܡք-;"0ޘtfMݢ io I h„.)ts` N@Z~sBE}b2>/}GQAu Wݞt* ]7~tMے/.#WŬf;{ugXƴ-f<Ԝ [kCםDE%u{r뭄m-d 5c1\'ZZ=f~0P Bi9`݃l5 JRT* Z NӶIiw5q+Ä.FE=eS,+;WGŤB_ \_Dmxס7Z Y|W55-̅a2X[+!!Nї?qf~ {>Soar| K׶·ˮ}~W׾{ݴ[Nfd-`ע3~Xkzuusd "]VcPF0@ٽCDBcYc^22 %UFF ,wI({ȳH=W{3cZ~ };:DRT*JRT?斟Gs1'(\T{_X;K)caԺG[FDi Ac״Cfy^CͯW23ABnk1T&+Q)8AYi|T u2D(A<"Ã8g3eF*9*1P^yZT㞞.UǼsnpI,Gfz|-i/7^ʷELU*JRTF86@e !yguH+HHЌō 9ܚ{[ yE@0 Tflf$ˤPF﬩[ump4k݄AΊ7>6}ػ$dg V65n F%ə0)2"c !jVXfJهÐ _+8{_[ `lE)o~;C7Pq&j_n]se_~_n2>)|5y:c0Vv``f;k[xE8kX9R :˘A=#⽼PyV2bV] l!A6bm^0 ^Zkt/_ɓ{%ݏmuHP&k:-=@RT*JR~t!E!zB-12b.|ΟԮ7o%^o V{И*v:73븹XBwd2ffڭqorX[drS |Zޕ|]f•[ai|%N 躢E:\o~<>P񠡉0c描 !3hLy^/ߖ:2ӿ^D>Ʒegnppa3gN~„?9HHaB'evCmF*X)oLB> 2#m5 cPpT> 4d-޻JbC V*(>KV+7Y[tǂJRT*J;nQbQZȊ(3^S|u09yƴ1^B`b@J8duЮ7B3 PL?MZM7Yݼ%7j uǗC`d3--me !6CֺPM3m^~?>K>SSEɎ Q ;qw Wki oh߷zCUn9s21'0E^kk9AæfLNAutN{1mki ɛȢXNڷ9 `\e,&k;Wq` 'gs5aB3(rGJRT*JRÄM'F[a +y¹("kٽFBzf. -欀B(TkosR g棼p6:g*l40TSK✱ :yCf8FL :%jq ePZ9O**eP<9l{hrk+6Bf*yKnXrE?|_G*5?ssń}ě S>135A\ntaʃ@AB⠂fAB!k٘=tm1Q> ꍧB9-\9(hW㙩0wQY឵Z}\ZDͱ4~}ART*JR9K=Lܺ@"k3d4,ә]hJcךw dMP<!k:mTA!S}v`ĵF4a]qwDCFJdaSa /L_.)s1YP7@!;ט֐ɾ~M 7F<3c=}F28c0vOaҀ輥[`Q\4Շ\t){srѪ a?֖fX/fzG\bUc̴!>Bbߛy"aSE.똛[ygv\zZA^PZ݆قk+0(bpO)Q"$ɡBB⢴:vamܪE{ 3ǑV{E_ PT*JRTBîGǍgYB>}Ca8 8Tȓvp&oiYZ3[a~@aUv{a*y&O;K.a'  wV[=.A0|b:L̃ 7eeXwV&H=^SB?.sSal43OKѓaĄ50tj8 .Cn` wny0p6G jwZvsB>m/t a7p׫ Qпvn5;7mgο7;kE^i/$#[=[N a3ZL%c8&\c<(LH{cXϴ'Pgݑ^&@O+1 uGߍzJRT*JR [!o 76*(>3V4&B .?%`5y!lҹ`,4&9@H{\sL{?/{0(hBb?S\|'~.:bRᢳn݅u{MqF E_s0ᇟ|yv7r/`┬%7}vZ[pu<Ŝ_tw~~ 3dQc\/f_?+:T f} 6~!E -kk9~ 7+Qԟs=K \s9`hP N*,Ziq+!eq,Q J.Jv$zGYԍy/@ߩTRT*JR'P=8p!z cc r+Ea<}K -k=bs1eKӵK!u Ix`  -ŵb,o\D__q1|#n^ wӛWxDApNQ&ɇȘBX5K+aU^H> '`Ce]5{Jd̉Y´ka,0'&èI 0l| X-g{,cc Z-޴ح@Zžݲ}_.>k'Dhg x#"Dށ^lHH 7ok0ت77*QY0Qb"0H|FvkrP6L?#*%|2 3>o67`ʐ)>IrᾩrE{ YihE.j,C.:u$1\tci/]"L#˔`X>>pс#u!c.ZpEpC= 2+n\t0ӿ]vsL|>dcG#ӒjP( ܂[r͊:dN 5T{+L(8uNjϰU0dl2%Xw%TaHY{ N38{͸**&߱Wl@z ì(L#3@!Bd;@Xs&1 bx8οՁgM㙚 mX&%,5dbn{3 0!U^ ڕm\yiវrhAYVtnñWꏹJRT*JRp;a2ϟcD0`qXrnn\t S̓ALpQωZ7 X]sXآ)B63F}CP`?t]J-.poFł!Hn 0P\tj2.:\tz;pQH9 k׿ ۫ޮ3HwxŻov,6dEqpQ^ERh3 dW޺ߢ]pViSqYh?"aB|xXHjhAqfs1tCq8 `rؚM|&Z\#?٩@}hov=?a?7卄"zJRT*Ju>+"d8ƫ4 %n*N#E&x#9hOl 3y䐠!OؚAӈ8>! 8fu=& apPQ|@\VXXK,e`\3{albY*#q^K/H]`Q5\sW\rK%sVr\=wW.{@8Rq !yeXf@qm7f7) 7J^ݖ>dFB`e] (9Zζy ɕ}䴭q7t+VT*JRT*UW!$=@H&f wd'`=rUXg"L(Xij,ÃD3%aB1T{ 4%yX9LhXs'akRڳ zc/ovJRT*J@  s,+gy+ ƙ11F3,Ab S-w@ƫmkVV&/Y|nCo~o >]Y+)DpĦV{r8e.L<z Xw<`TgAdt!,X^vAJ7qO!)R2* #{en2XP+`?P`uΦ7u0qf: '%`Hru+:?]R'$jq&0LNJ_9Wܚa{ o$)$h 2NbygcP0ބ_7f]Y+=gDg[ ᙨ;ߍre5:r֜sh'i͞V39Y[œa„Vbd nn?*JRT*J 2=-7\h1~~4~!kSk=N^\i,ve3 l]pR\eJ݂L[cM17lA5ah_wuFHrKar Bw&. " [ai|%Jه!=8 o+3tFY KVo4֋\tEbk sѱS ź8;^F,g{,`p}jWfxΣ2?.63m?urқ~е=l=Sfv%Y9̊nvO֢Ё)OfV2U2HA eձt.rȚh{ FHe; =^pRZ㊻x)3OHU*JRT*Յf!ڐLـWdΊw !3B 񴭜 wfCYv`0¿ P 2<r6/DxYq݁6ﰺ#5to`1k%8F{r3!_1<ѫ0`"s;ȱpb5A*dꎳa;.n/(KN-̵հ6{ 5c Ray|(܌s)40l|pƬ)Pv৭ F,%ׯExş.C] nzHhFHD^5~jXa<X>ЅM3ᆰC$=a0W2  *cf$ ~W̆canEN_MWT࠸P2Z)@k%#RT*JRT ECuuY]8DqJ'5`Buv1Z|yhmƴ\o'\Njƛ.k !>M `x( ~1sX.Zt?,pc曛 [C"_m(s `.rх+fa֢s‡h:?ѓnT?}o$$0fi5g_A)Oɜ k=>13-}dzωx&7ǹs]<˰AXVBݜpOfϱvp0z 2l,QVT*JRT*E 6GwC/>E--Ɨ,UhV1fBZcwP< e[ %O5tSC(,h-.}޼}}c2'ŕu J avɆ/<3AQ 0t@0t|* 6u;^P?{AC1S W YEEW.ZbhTm.:߇(e0fSw 4w 7O}]J$`f:a̴Eܷ#^g'_p#!kZС)OɊ`-r 7zKڦHjho!iBHY0ma@8f>J{XTӳ}NBzΓf%+(%&|}`T*JRTآ ᳁arӶ9P7ٳrc_򔭘5f`F d=  [z2]Kg#$2wӇ}as ww5ͬ(ko'*7&i6Bܛ`Hofܜ&D~WØ `9kBXukp"wc"Aƣuap??yL0-k'dywBrVK,$g XwanLD:u{yA2k%;..a]A@,@%/. vC烮͍n/ $D6' M ]QԮNh~CN)-٭io%a.Zܽحژ'k(d &A9Tu,j:h֓qϺLp-B:@lcbewG߆bJRT*JR}O-卄VSKn%$>ʖ=A8&#N̈́l+D(ʷ 6{[Q>xmR!JjlRe4y7Vvu4=~y#a,.&.Vs \ #8&ʅ 7%[`pbDo>9A HsQ>':;&̀qR˃7M{iH>Xԋt湘iw~QisNgFήlĭxNgE Mv6 ɥI$Eձ 8hQepb(0:m5<)šFтڭ-GZa—зJRT*JWށpl;$c&9L(,%;g;GQ}?LЌ@RhUtaLT; ~;\m3,# [zO1ya8p+wZJNaBF~?+HX\~ *`ԔwRx? `R*l: _ ! 7`^- 9U$!-sI.wj=bX_ mxp̄xa5jq_1\qBk6PPz.)-W}s1'h{^x |?UÕLO3|fb&e i~sv?DX.5}٣ݕQxVԭX0q (sdX1^Wnzwɢ-P(dDxU*JRT*J/(lB"b yl?Ì4pQBzG@"9XTkpPÂbRb8[pE;lÆCfz` s7.ZeX_# ] S1c0pt"2,?:YbV#5\}[UAJvH0\.18],xiO^=Y&`6Ep L1LOBs8tWŏ7?#qzFB7&--3;7}$crQ?DX.RXadńN~8k13QZwh&t5ƸLޡ#$g(MWm̴`r%p rPP -(T*JRT%hϠV [vcGyV!8F [A.?MӺU!‚\s K]G~qXO VMgz}6Y1 \A ^qwAzlQ KâMG?8%*pll8 Uo߄/Ci+PZ"A^!\Cƃ* HH)䴭+L1,ZU+6 6+ʛWSP_0LҖ˿hv*v\gu_-HhWu!AJTA! 9e@aY9Pzs^.32d|b$% ZBQi,n(4(o,fBat#!=/*ƒb xg1ecRT*JRTA.(:J Y-EiFX0R$4{s>  Tk,zGA ^ E0P7[#DC 3doiمi|xN fBLTY3Ak9 %wğnu<62\tXw [ /`AEO͆B&4rlo5dslE!)_w1~.:z·YQ>5, Sx`ӛWSfk^z_hWI}[0۟s (  Ѽ7'5d|#a3)Dh٥hȬx[!2ɞI]Jc RP*\D{u٨7<|lfv1 iOAd^(QJ{bvd2L0R!VT*JRT'źWv;io i?5ǼAy W1^vgi[A[7(/CUjw;/0`„h6$cw)HإO@8wC L 8/NNpؘEPOTTy{Pس M'e(,9i/ƀ3@`V YvA"5I[`MVSly]m/ȀZLwP0髣~M{rNm; |_1˭Z̀3Hxg׏P1BhVɸÜW6>#Ԣ )P:8fwg-vV6˝gzSH8jc :3sMZ`+dTef &ȤpO_Cд ݫEURT*JRT\RtOX [+% N&(MRC )@HϖV.\BrE3=Wk0aa3H9k yLL(x6#!9󒡪-(){p޼//e9\v'$dE1Phꎑb3<PWݞVW?.͏Z#Eu_H(+55=Pn?YlcYQ+@V[e<>(>j],8qn mFLT i7J׳y2-f:bVBڋksëRT*JR}W6B4AB41ޓD1qt!OC2rҖW [ no%. {yMĚ>[♟ۃj> 0!1"=5H8~H̬25LHȨq3ﰕ|M%{5G?Ï4A£? +ciغuTto:Oz؀3o~_nHͨ Sll_çl'?va`ؕs[r~s]N?#^2Bݭϼ%>a8M{$hAB #SпUi-x_H,(0!﷢w?ԗ)\+<(+1P L-Df0;2@0a0&&o=wCURT*JRTf둋n Ľ4] 6Ok)?-6aFiO -=Ek0s3=Uَ s 7TꘞMhςFec 3R*^ e;=0vF.&NkBEA '؉D@.ZH\8ly2Mqhven2s;2XgkHoO2=nT &(:.nLgֿʹۼ>Z[n=棶R[ZdCd* .MMpQcKfVtov{vBdձ32T Wt&jlrP ¶r2 "U&;!cRT*JR=W|t7{*KP˳񋳥NNX5h`݆cP(lDpWPYjhN &oabwu>@XiZo.>-+Lu˓?r=󿿳'qY3&xSy EMG[~aB;C,*g\r60,hA1"|STT*JRT* ) Es+eeLgs= Ule*{אHy׭qRmlVYFCrGrh-٧sA+U椵\$c*ĥVBֆqэŇ`Vt1 A0hNᢆlݳm"ܳᢛEo:9ݍkd섄rHHAn#I|Eo d_b-|fگnfa̷pd/wG|nFB·9Y=~)X2*Ѱ{x19ܐS1cgJBPT N* bLexnsfu@f5@ckFB"|}T*JRT턗! e1JcYqL+fefMng>4[Gm {,%ӳglBi/o֘ 1)ۦy嚺bV-ɬuFNš7ӵ0pf2>t V0᪔<wîmqMo O˯}o; | (G|iYͱ`w~<JN=orv'(,9ݏk B}0hh./`°8wn.&Pvݲsۗ(e`eY? TAAG,kߜ2+|zM4ikY2 %0 l68kdR'mӞcMZ|v KGRRT*JRT?@OAB6WTZ9bꎉMIyZ es =4E[8gvZ%tRL3TAc6g{­M^̍>eN*„CF 6f^:kqN=+ ExA´{aBz>h5 s~a’-f# "5 .w~ [G\M(E'$ppѼ `dd] [aӌ [-&@xU=[Z_Wߵ1̴32iQ̈́GѓV>_Qq[ s+D7Zx M6"'9Anm1ނ{ޔ~$wl!pq+!Y5ǒJe=+'}aE ErZdf }T*JRT 7JXsYk,!BzV, y0YN1q>a+b#t\ސv>_Vރf_!@X7a=eo'm 3δ-= Izͱ@Pmk̍"dW9S*ay>sCኤ:Rs|Z3| cB7`ρz'P 8?whfm8~ӳ[^>ҲW4;Ӹ'qMG̒]BwV_llЀX}pJ Y rN]ug.JbUiO!A Ac4M{>_ݙ מס1(*{EߐS5[^DH ӵVЪ1&s115^SgX 3栠43y3!0r/^t#aTT*JRT*Տތa‰\i\kd!B2qţBzI9T6 ;AkgoVjlFE3urmsx24cdCCa•aUy(&D2VW}W6GΙ[8T{zpR%u6z Ƿr *j5x<'<(jLrY/~]7=rn|0+HKܓ9)sQ2 yzɑއH~yl rK y'o-^ʌ"Th퉋 РcfgmE{ 9Q?3"eqjc:cFFꏦJRT*Jvs2X#n#tЬeΆQx@3P:`EVP@=qIn1A#dhhpq?H7rh6{@!C^Hz[/b-%Öm(8j;ƛ ae=/o0UcMiؾmX:]m߁/jin+|Ä'N}||PU}v~ө0%e@c]]+a]Uv;Lt˓?5,@ӶTmt_ױoףO p?.Yܗ-wߙ]~MxrZZ!I!3m)2+ʼê6!Ѳ"AB0!lzAnpAe)[hi/,CRRT*JRh0 ittݐh5BeMxVZcY!!rֆd,Z׽链Sf{ }}Ԭxћ25/A/g|!󸞣׾VQޮ%f"LjXT %  d}8n Ʀe m?zN@6fB*;fE.#PuJr ;߁o:6#{~CBN (0P筳k5{KO! ;S5F.s .zg6qt5wu]*kZC#ܚ؅ v +@(g$጑x`?(xGfe'6snl :\<󴭄bLS;xG@5=!BQil?v@@sRT*JRT* axy"؂uy%DX&oYj.r[ű46g35*g'r"vƭh!s/!dfno V2/Y)yk_ } *OBv]n.v^X⑋ƥp!I vNAcI+^2VO =} tVEO`|י|lo)$. 뎋’(<08 %,k83m>$?nmu2PH{rsLd o~cN!5ݑQߔ(a(ܦ{yr_"E@1ZeȐ@D,>m]rg7N%G(gDm5`Wz 3"LLoj>2FplICy VB"<^$ބkK&PXV&T턛N;X{&|rs䳯 8:>=ُ>˰ڍ\ӀoSm\r-? nx 8lPB{ʩ* kٹ_*h0^7(4HYUm`̬vqnioe&<2g;=1gc'&5\!nfֱ6pL:Ve$d(ޓ)O"UA쐠̬@ߢ?v*JRT*JR֖[ q/lJȬTQdϊ (P(k`>dj^NW:oV5y;\x4Dȫ4w|&VGfЛbRpܸU,Ua|nXP Z."ҰR."Lʬh0\* \޽]0\LCd'qPHuǻT EfA;v8$tÌ OoCWn/CPigdL#Ad\Q*-(ZbPRT*JR x!]ABޗNB;KF#(&ji%e 2#|+*l4 `@8^#g!^w6 E/ceJwaٞ[cǞw-{jއ8 gn'|Ͼq󳛊O8\ =7eo0w@J0|p۳oS_ԶX̔ 蚓(ͰA"!9thSZcza2z%t'j; ~)[w3:dZcsQA0 ZlC#Lp-CCo#ptcST*JRT*\TbvB⺗Clκ{$sCEН2C%iDȦg լ5rQlmvHq%9"oi7_k怠"ܔ,[sHɡwƽ];H8tE3|ۑ.Of(4\46-.*odr9dbf>e(Z!M[^7\|Cع]Ewy6\c.~g_gK_ſ]&,+ B8oWܘU{ 2Sw&3ٶ3+឵xiiѰ7;c6LhvWjnh ڿ7>g[N/(TJcZ4еt3Ǖ<̴ې[8C֢q?t[t#ST*JRT@/ AߏK" t+!A2 :(lMUہS= ԤoFۼ00x|fPI n jUwq]jGn; !MMz0,sSO1/F?Rap5Gyo,Jv0)e>j/7 [Äf?/gӇ|ش3ir1>a\4ݻp5rթ5N@Uu(Du:L2%h .Zx(.j莪p> x|aG|i5>rn.<\X#G'73=kkКCIs梼Pdb[ݚި{8i0݂g6:TNV"u,3Vaxef)=q\|QrQqqFۙv¯Zwln"WXCu ͪj[ u`Jy@T[LbHLR95@!Q'!d5CĒB+JhgZ Κۮt #o'o#c#j 4=Iܻ^<9ͽw KˀR\A-2fxUGw{>eRv!8LL;4+8ΰz ^pLzPc`)@- rMwXpu]]U L"\$ 9 ~P( BP( rKJ/uas.:k"UKg#TZX:Eҭ | wO)5R6:E&Mڎu.||osјzG_EwE+>q:n$\M׷!=\`9<$,t$ ha+Ii`!I;'I[ ѺK4L.'W_;2tئ??8,7䑏f:}'޿ fziN6J)gb1Rk Yk *f35TBf5h8`bGGW!gN*qS@hΘ:p]Biwf9HABijVs .s?BfBP( BP> lxks˘DbB2XIa+@2k3'~ ,+9YGBBI'̰-fnfu\rȸbwXs[4ZdÄcO |\-@_d AT| o^q)uJ=g'xb5BjRՓ. BP( wl0xR1`/{q;W{h$t*!a xhPrpR!ۤh=h%Gٯ ܩ)8-YhPzEi~,o]Js톜RGZAPy傽~Z_9V_d" *86i+ɱ TmXD8;FRԺ:p=IamxM3CZYjkF8oqL~k ֍G^:໹~M}8Ÿl^c̦jp['vOu>LgL0U7S6h{Hv6n]RZ/I@L;@ȿG SuV .sdڵƲg# BP( B9L8 ] 9)LKp- ə*5}Y1Z(ɛYd~y(5PMO33a:r̞QR8\plW\t4t~| _/8[[>=*hPvVMքI&ߚA6FȺM6W*ڛOĕe`r5Tdg7cIbl$ [@/zͯsGWOɉmno8"O 3Xe N;[S=R!$xAPS]ݺ8ڰR7A00;Pmβe(FÂL3L`Y\$],Ws@$\2BP( BP(ip(x˄!B8˯^>X(:E8k/X eg1Lr{ w_?pnM-y *!mRK,,9 'Yma-wp.\zɮrQ[߼_~wf;\4ht|IJ\Tӹd΢wã)]F^ ޸bE $'5g6ZC*AªKd^o7G3>f߹CS"ZN'Rj5ȯ Nftkkig6wccBbG%nx-PiMq,R >:[x~/fTb2+ծ5^(~p>9pqBP( BP#Pcp(d<4(㠬k.ަ_*UxU"Fs+k;AegY9LrA 3 *!ԑ{,~~y f-g9 BGj^= G^ͩƳڶˎƳ:ufgS;dĪIIdʭP, Г$0D6Y n"2ȼe8:V Sk=hQo%$Kjp]p$:E䙷~yz°5=<, 5DYeں>+&z?n N=p'…ycTU<4?ZrKL-b`N1Κmcti !Lvfw ǚ<?8( BP( BW\epm_&uZ/ z~.h ۄ W {-;CLE37gZVw[SvdzJ^?oTg <zfSo}\LK9h_if.E[s;'Zr($CR0:d[cp \4lK\tt"SZOBk3IfWN2BxHUV̸29SfW Tfթ=B Až7 3[㯟@#40x-^z0> (Yix~E\Kf*4SN_! ?F( BP( uA l+߲͡\AƋrpn9%2 71$حXOcEx`v$% *=NApY~G&,T(7Rzޒ6sxe;M-]靚 e\ˍ-^,I^f\4d@r:6m.j/wӺ㯸hu㕟eic)IlIW_ e4D`"%CB#dEC#8J7]1EEKiݱTIljRGm$=A,YICz.]Wb̴LLym6祉TC oOKc9`[ is|yK;{sru⽅Q_fPomt7Y#+֩nc*tql&oo&rɞb,A^u`P᫕=¦'5{,w$C4wvtՕ  aabyPLI9\-4x|^'טKEa)SI-m9DX-B2P!˧E+ j;TP( BP( ,ZXoqE.Zcס&uȁ9Rx{8Y`y'Fvt>Ӧ1N y^R̔Bc B:8V٭P3pd~θ~LXr0)\p^r⌃q\ Rn[H4 {d}!W\tC* SvYI(ٺ;rdT@b=A i'J*k3=3ܕjk :cX`RpPkZf[KK'oo+f|ʯj/VsQϒr}9<Be,R gr:O BP( B}Wx}[|PްS<ˁB0؂P5*3aӖ01lwn]cZpY9f!B8dZuÃt~u{U(t[!@<8*uI[,PoH́T`Ƽ5ZiK:L:׶^v4t~ز6*^"d΢wYC%F^we# dւ4+CMz<'d-?%ONls/ Y(?x֙&8s6 ĤJc8'R׮ `XSaKLCQ_vbwz%%T{qPڬet%P,YCeBXb1yuM>4<(z0%8cS7Ep?!AP( BP((Jc~x؂e*+Y*s B`j}3J` @X:=TLST&*NvEq;HEr T.j-w\4Q@](loq3&k+I4\.P.& J&M$E7mgXdo\1M>FJr .i6'] S# tLŻ50S *c0b`Qxfom,p',V [x O NqF⣚֚5 &2>2k.W8'u]kd( BP( `L JurxMRL ^%ԨzA0Ct>y 3@&=s4K(gh C~2z|Z)fo֯ݶiӾ$D3fh7⍙?c,lKpմW9TUP򫚳NB)GщAaW%˷7go@Np>dA<0p6gIy{{xhF'ϼ} -0eS.|ȸcb !16jUtPreG~;hC>>O _M1}'2Br kE(6E]Tm,L*Ä;3N@/RuuˁD`@P( BP(& ֣cҳ&iH=<(9wÁFީ!T2}[z'FgcM-B Lu!eV ;=v]osP5er69ْ_.kCݱ^{So; W!(vB*Eɪ` 4P5lޑMY:yZ\e +}C|L2d±Zn:8i+^4PJoҢBͿYdCRXc op>S9St)կ&/w--ҫl T\_)ܙ9|ʵƮY)q`OaAP( BP0@6] !kDȧ(L<~;< e0&B3אW XhZ2G9ˌc=c _UM0boTAB™Nf'3vc ^·S.'W\Ec~Ͷ[2ws& yvF5 ">md*^Pcܬ[yޗtdͧM.`'3U〗vh0Q&WL}‚%lPu|jK `'3 KK׼ޘMnE`0N)GJBNfX R/EsW }BP( Bm/`l4MaBupfA0!s]L7[lVؤfaƸ}(.NT xCFCSݿy>[,j=7Ŭ۰jݶ}M'c_tgqz#cY@ؖ߶ap+g) b,L5Y1  S‚l'P`$BH#UzI`z068MQ+C0qÖ2f^A-e\B0>hZkXKB *V*Jim" .h RZPl1icF4S1H͕݋ zH)[=lgn`X,bX,lS[Ba<+'5Ycs\(@Xc~;a58c|_ҁkiLhљ3Sq(Sko%ykkŽJ؏<:z F^ Ba4*rxo<_lj}Yh LW?pf$PqR[bgbwݒ Kf:x=?jME+v 9(|qК)F1Q䨎梡q(ɥxa$Օy5K^Kz9AX,bX,V+N³^ ;LSXIMlSkee(ރN$^{0(ݛe8qk-楿@U^Y?+p"> o&W=ۃ#GGg's'o1Q;'dd?:|獽\27d:G΅tz5Ws+3 "rvI5fli*@a1pSFqQ(|FB|?`?6%[=ܑ C`ns7RF*]CHPck!/o=a]ɞ eE-VC]ƒ ,H*&m~cВ@ Ã(S=]m p"Bb2]*Tg f  bEas/< a7J/=bX,bX_ =FB聉Z56JĬZ500D\[k (o$TU&Z95u#-EErw0PU oH Q^6S\,e͍Z˟b&RTTT PĂݨQfηl,=^FQ~>k}|yZ'oyKv M.4Bk @t MB.66Ź(X晖&kt7_^go,Ԛ: C7V !Q0\b~w{P[qL@~rM Ơ L7gJAAA|?c"Ƹ+; 1րL5%l 3F4Xy"!X`as BrXWM^lbcB„oZ=F8!Zf}jx55NzN ayЫcMgvk>+9|@813nm-DĪ궅8 uf0iכZhQI$e~nn~ c aU~;_  *yRgJ :lY^Ձ*ԋ>AAAAx%]" -gQ 8G++qEbk H'A`Ppp oo1ҹONZ35 jU4XaB^XL-H/ѿ-zbrpl͂TWXi{Er v _ZHphu8c3c)4A=M*k [ 8hϫŝ B: ]nb~k_moq׍8|RhfwG_;˻Mvj}pucwXa( ` &ފcۃ̠4  bYgl c-}   ֖j;)rB=6FuR P $9v%49mbIdj:h]XmxY6<}Q*6 $%dFhLCtPJuBQaBbZSAkՕ+UPML6EXy~忦HyL[gZf0t"T${LoE2t[Zhbosuqh3qP03~)w/mJ̲AAAA5.b&LR׭M&;^A&Qk_&$ ow^PK]CZi~W*];iww^|GqrNkkʵgwy半jbx|w.tcf/X S qO&]z ΍/n<@x\f- Z3 qg\=ZAA7Fbooo^=GEh:j!L7XׁÂD jo^;lu;ˆJNaqBgʚ.IcPb>AAAAH_7L)^'[[tkp0j-,*D=c.4QrSB>7:Zh {^9sPhhYjBFLɱe09[y0*&"KSkjū՛݊<˿?x\/43yv~3mwCӵ-g oAY=Z3t{Q.6߫6vj~D:O%!{}M&  a;g:K# _m<LWӇ   8W뎯dt C&$BTP-s*g* t؂clc"V˝ l; MvNAw/c{Z驽os?ħDӃc;1f-kVL*XsܬeAϲv޾K.Ohfۇ- fACVBU_xZ!6IAS1גlY~ !fY{MȻ>e{Czu׹L߿Dlk<"M D(/** lmncc|Nlkw~><==o.RswłɄ B4 wZ !ە!G 5FgiNUD3%   ~*&@OfRZ! 3k{UW4F^+^a waq q298(CxsEW9w3c}.qgY|Bk=xZM? <׼7:1kCWGuq Vr|syMreǽ#6'16BfarAdio]f՞.f|cz_;7>g20 DBS u` rwy5(KZqM9(8`uCp k/}    }ۘB4B#O!lJ["2B!/3Q (LAAA&tSbЦ'* rwy ~߹dÛnmႻB,5mK;LibwP\/E_8p{^}IMu-A␨FC jy䑎a=[kQosDzu\}~3Qt yTjfBgLec~dgee#%c5~To"‚Yoo~E{3t,jI7Z4`AAA?/0=,vB8zZ?ĺcU>`IMV JB*29i8?W՟ڜOSZdzvO}۞[^Rvvze^XܳG 2}خ`@W8v`&MwtƆ8 ܡ[8K],;m! 6ܡ);gBx A`3ִvf٣LG    (iF(*5쎛Ap6ױ_5OI|Q(3Zm̫ªcEpl>sB'^we>뻞;s٪Ł"> F[[Bu'8|Haϡ+ h汭- cki{ $B8=v{gliyOp3w{ L䕢қlm + A zg JABx>)[3]Kh   bcipF;N[X,̩CL2F`!O BFqp u{9鳫i.7}|,a)mCA3BF) !En#g=TM2˽n-UK|P]Hž(‚ ] fqt*G|R/aBSneFe    0ƌy+0dL2V{U`my78L M!@~Pf+_LJ<5slCsdx7k?rjsv!ξK@`W KK7jպfwGF5>I-qo}MY 㒻kJc8 ]@ٳ tc~U 9N5+L0=I] „A~ƒa1 cM2p0.%i "1&z]&cKAAAD'E{3ABʍ D>)`{K~L$ ?mr)@Mע 8ok#{pF]|oma03w7ϝ|ţ^}}bghkOZg_~Rxr~HXL{*ap$ʶԲY4A=gknQݠZպ ڲf5 ~3mC汭- mCB  >2i,8CP\ Y-mC Q5} *RseaJwq |ׄƒB2Z*ƒO,t}\   侨[9XV`,Z00ФN]ܠu6w;FlUCղu ʶIXOM! ġA8CorSAzn  k"~c^u1o[ -R {B\O*,ipJޖtQ !O:W L/AAAqa`cѪ>˒1^,js~:jYp0xG wQgUFfRJ\9OOLؒp*׼ձ%XO~eoWNn9W u !1$i„݇[ LڙI;c] V}HaATqhg`A [ס h1Ldޙc;cPxLi 0A\ԅ>AAAA\@3Mf„"IMl$.BXi !BhF7iűvw[V1_T/b0l9wm8xV{87>xqs.kI';T?YQR,MF5,Q59~߫o"ko0@I jXm,~Cb=Z'2ϴ]G w&q|ϻ.q{0_pY .[` DfߡUIfR蚂& ( i1:!֛}@   „63GEPc)ZԂx1L%θZJ~$IʏXƕ|>%-YuWK޲gN=Y'wھ^{;tkNBG)?ZZʐ ?5䏊@$N2gvϸ aB?IJQ5  B,iga !7u3,7]fkݪ~T;3%   ~ a®ʹdFQ%s <"T2׆+4[TᥳB+ }tRPLż$Wh9T.X=^RBj[Ng62Zw.(sŽG jLl A²M|peՖg>oZ]ls=m+~o8[105JAuқZ, 1U(6lx5!p]8LfןHt1}4   E`ԟ(@h*3I婄&隿)5Y7}O! #[['4'4J0-vfڪ&2_45sKK&EͶ'O<j7N'|zᵗc{QIGZUbBeqݞq\y]7ݧyR5jM/ZDE~)8(@ )3~82>AAA/ חi$S,7ŐO(v vaB^fAai:oc`} 9&*a&Q'4um \K3dk+|Gpbʆm[M'[זmdŧBi{N#|? ,aXk[3 K^BW8qe"7@qTq;c^+:,gCA9p3Vl(;Ap&$cPw@t5}$   6Z  k\gHfk8s_:@IYq'Å 䉢 zB"xhE1dr(,ەn9^wp*Ǹ5Sj3{}4I9^\Q#mg*\={=ӃZlmgM_;[w}e<;)|FH u+ Zc;L&D¥3t?LA04 yRUXc5*AAA@SL Z1ݓ ճ壑9` ~-&d =#Gǧu-IrEeR+TNͮ{/!y̆\ӎV[&wi&Km4dik BNº.wM_3k|Rupl!J.a!4߱!&V (8D3JnRcLS*Iw,!>i2ML]HAAA/zti1R "2TP/ZJ~)KaBύһ썺=*oYqv49Vm)x&9ԍ/z/zzk+߻VS4\g A¶sxõ vei/öX>pޠ 0(KHF@Vqt:x_ |ѹz ֒3 }4   L5g @k9BfZcˊVr*&+qb1.g!9@(4B>7̠.0=HP̊d+ΐߜl+QbRzgI[Z3Z]gZw?sR[P00(BL`JTc5.>MMHP3?p [^EK?] af]\W / [wO}g28zT$CFT踕;mM2L2.L0a)+)SA ,la&AAA?(k#'3%yЈ]dOR GiZU a+ lobg6Sݯ0=HSw`_ !L!:4&^M/"`28mlʄVw !>˛ZsJ$Fqopԏ}$   0a71WvN[tFkl S2? Aye1dA]d c0>mJP̆QMai$K+`,kq֖O{8FVHhiv3Lj؛E5jfXBbYkZ^[T-HxZc@ai`~8AAMNq?ϾWvo%‚\BaB4PZ~|FBkrI a"!ܹgdc,l]sLt }   `<(ƚ D(HM\dHYi$ZY PAϞqAtJt+RbWRIښmpOXBK.D^)FlnCsk5'8[ܮZb^'1][[)H g?X-wm .7ɿy&k^af{Ja1#~KF   j~LDBlL%bAd `Ʉ8X$J%s !ý%6.UM4a1{Y9 6DXSETQ}^'IמlsZZ ǞX'cTxp~2IB35VF3T# YL0]CB   (a34BP$i!6d6X=CI(-L2I84($izi56(2+,޵$!9&tv *w?6=YKՂ5jfEȲIY|"{Jal\Ymq"UVKDP8X?:6]tIΪn)̒VÛt 0U&S5SSNׅh1b䉄s$y~/n#   Ea/}Q9H*̭*c/ABMR"c ͛|즘\gsEs+Kʨ(1es[zVS[igkPhF|QwhZhm49YeIkF&oABF8ۃ}rlѶh:ͫK{j)xxS xR:ީDYjwVs**E;f^)n^CSnaJ?   f  !β/ 7zҜ-|QcS]n{V^́R7`vrfj)ި;PG\m^FqԿl}>+ો36;7_\2|@hÁzcBA ܔ-Bw*I%3E S3    :3f5TB|x 䩄,!J*cuFZ4yPf 3!GoYWF_ZY{" ɵٹ65[Aw@ VVl9h)&~2_7&.U 8'GD%&,níSJ԰jʦ(OHG&[IAA_g1a :A Ƙd*P02a!20!ed±LAAAAj1Ɓ$Tn{G*5PPDS q7j.}BRO| ksؕ[T#TH(M֕ N7B oHA% {bg?`;4*W?M.LWmbS Ǟ u…l쑂O ;ZqbkKL3_t! Mkyv~2AAAď ^42oXAS lo,PW/`&g04a&d"@፫{xp|cAذ8khr],9%U嵍ֻG%?.|%4,F X/ a|r'I)hAAAq.1i^adzG nP=U/4r-ur]nj`VoFݱQm}JpVUiLs+3ژԹu/'&|$LH(%p$0}$ a %mj9̲¢jPAB9>ў,1 TRgwS X`$B9J;Ӈ    gqPxMז %5Y[gRv,4Ѡs"'l4B{=šFmU3M8JoEE' ԭOm++w.Mz!G$Ҹ#$4:w{s Tn42S4ZͲ42 -_ gqړ@+e!Ao~)4`Cõ'oTT'_oq !x*{Ju>C'I?@8iAAAO  nJ" hTH%|dr_!V7tv(]6oΪ9.)ȴ5x5[ ~l'[^Rc`( ނZ0#rJ cS>AlKa"ʱh(.TSOm/w-rjPԯ&)4 0¼@[ف+6hw0-pV{Ygl3>NAAAA?!ڮô|QzI{8 ]GBKckdo茪ffL]?/0ل;`r -hsbպb O84]-HAȤ}Y0~DBjA6G= O a|u-v.euGe]pA[7$K_{R)ƒH1&d^ 2~ԟ}p    :M]$M#y'*&kh%qdGx B҂|-7e.ryro0'nyI{F$.d6$f=-y F탄Dt^&f=\aoABe^{χZ&"WUo{Z$lyUo"!H'bYnFp֟Ruaƺ3O*O$D6A3ԓ>FAAAљwe˴T bw gvKRcl=%,mL1Ys#e$L0w墂՟Nݶ(0+6+.q"3#}p' CL0db-}d    :!n,08) AxFaB*a4T\^ 7^s `-%nxm`ig'2m9^`[dmx(Hn q OA„,> aOAl9Fg5 G:7ZYt"jEM FeyE"{qg: IRC겕:o]gl[Rl*;5}ǘ AAAAWLc -M8@( M$d˲ajNbxGw@+9xg6=QoAˆYM  `J;QukHqU(Chű䗊r"!x|}xSlg:@ zYm3C?{gU۶qL3bގ˜qih8/ABȾ=UY*@HҀ" j\Z[E]V[_ubR;9߽e4pNpv Ie $S…m[>>ͳ7O\(5$B.|Gå9:H^$| 3EBJ'5J$|n /J1RYw4%E96IsxocDL$dP>9jI6r"8zџPRҕݨ8'UR~SG};%P>Y*gY*Ʉs7&fr_HH=pyec "glBк㧔Y*MΔQO%85 ~N钵"*)w!˃̡:S.MK25DN$4I )B4*ȔVk;w! hqtX'9DB=H"Db wHޮ@Vs+VߤoiJ0(E@޸C8{џQT7dB5/[)ܗ&k%^/VSgq|瘟'Kܲ5dG FŧƆHDBI$c:P +;{߇&GDA~SgjC4&a,/wU HmFPn_*WϹ(I(SJ2רU9nqC?υGYspZmzM`(0c-;lrxws m۫;zKVT[EƧxP˞&bL+;,K5+LE$S 萫}*|ItDأL$ MwD%Pl])V_wX-"Bї^V1|;l1 E9,.|,#HlD$LI )Dk=>Z,[DL">QY(L^jы*|>z")?/0QRXaPiY PyvFh٫EH vT1 "#EU3*w ώ }OdҲCZmѩ[DAVP`uWv ZjoQx"GcHxMlt *gzneyPH'c{ōۻ(/3C/zeɄTB9hԋ։$/^ wH ǥN(~ȳhT$sJ$ɩ40#]S4EWE¥ _Hc[uԟ~?bIyH9E^s̗3kMԙKתDȑ;Rwϋ>r!;UΧv*Ry2֘Ob? 9~ XEB|**Aqegj*iZa>{n40>aD$˯N +]}qegBVrЭ'LpW  Q}Vw?X…@hN*p96r)kP:4SBU(diPl ܍VnrL1&5Ϛ"K$~Z$~7Yt ƣWЎR!R8J$\UH:%%kUuwQKJy2H*Ƈ i3Mr_RgbsK܉BA_ 3!^LFBJ[$>hܑnEEWCF<;c[7 zaq,yץ{-zo~B?I'#"!Dі"au41I(,%aFY<Zml]E[|EG{3BK[Z(3ŭ\g(W+2ݳH$|&@$$"!M$F?j]1Ueu.Oδ #Mpae&9מX!~r:h[0cUS$EM,bvܑR~TImd(u[ ;Gg 3OUT-VnR> eDlҺv"ajY!(:D+<>3 :u=F%^$|>:> f=/(*uh @eTB>Dsiܮ]LOߐP40;QU&/XYJɄt^VH- / SU$t5)+=x-}zc嗹NZG\I),.0EˆFz䜪5zIEzӚvCLt8_t4"񀉄M7eAE$6Lsgj'w,3r&esD2*ʸSB< =3*NCIe GD#$UD¢S"aMCqY;(>CE!W" C"7B:,X"W[6fP*_J0蹔M3lғZjO7WV~O2S H%e"UD 7v UziyM'HbF=h:8qK"&&/^k\No4:Gm-Ey) Lȓ L\/,Ƴ8J)4}@(%Bz"B$L 3J2"9eu;ӊ*]TWi$8mU#)+-<6sƩi+[J8!G^idP K&`:$!KʊcN(CB$q~#uGEgAVK"!M$iH"сMnIEBHh!~L,E}FGH3껟:SI93NTzW¨G)/(&w%T̴(ƔɱHxJ$LsԼQ{tDlgֶ__!~=%-G6>dJ1.HS\\",cHj܋5x!J/z*$^Z!D-D#$~ؘHN96T \DL'eZJ_4f[D5'B ~IvEcŒH~Ok|gHj'(iqn-Z3WQ5q3G@(m&r3 pK $:ZʄӜ+Y$Y$|'P$,-7t|fyEYYHx4``.,')QJ1\ e-k/uu8M0;HR\VW:"am׳ }0DO/E´I}Db9m.\q\/wQ Q-vzOw"a]}3J3UM$\(0!@$\deM9kfegPԅ>lߑ jckPZmgm8^<+)O OjcHE^DtZcJ&T_w"]'8:LQݿ{ 3+'y"Y`0AI2f@>YE;¤5\yyOߓ(%K{u˷9f;UG5auF,y*Y ntHK#"0' [ʊN¼2leΛˬ|1<10m]O=Kmܐg7LޛL--w𱵫UHt=5fYmApz=o*Dћ1a|s YF.+I`ZJ%aji$ӿx7=sv嵉( [DFPƅ+ Н" u#tc(m}I-RӌLҚǤIf&dE ahQi| dq/93czwOcQBhڸdl!i}b^Up2FB8*oT^TeH 7Haܰ8dZEn c*مG=l>a7!@ؕ)*1zbײFs.{+vÜy؜~ΧҋkO7G-3Du!xB7etRLvkpɸe, {U6U05 ]U516MD6bwNhݿ%/+S&FRcc_6SyW^? x|s&eld&9IaZW~jnrjIOsQRrR:!Lz+5J("j.7X]ʢJwo\u=v{xda'("lvy}}^ @%Dr!3$dHƱ}qT$B|?ծ*Uڧ_~:Dg.|y6TBFU$XZE؋vbW/s~/Xg\]Ç,QmVW6}ŗ_ ?"""igE|\p3ʧ+)C2ٮZZ͗Ұve8nֳcI vQ@lNG/kg|4$rdZtݘ$q^N"6Kf/>^Ɍ̕cW7Au\np߹!8 AQ@ P {,-/5' D2@R;p\p<3 nOy训*xW1V)3T._QbZnG*Ҹs#/1oUm}(̜-|QO$J6kicSݯM~%DDDDtyv˼/}Q %I6L@X:izis3+ cQqAԶEUΏ}:?1Q:W].Xu""""""""< ox"{A&ŷrW굵fqDї OKTMj/4SI7(v?1jSZ uܷؗzuxufd֗|fpD\_ *FGxNx"D77痯̜v^d&ťi$}E5 """6Zsdl_xkLSR5Y읤5 +H XppQh*"PYk㋋%yOˢyKC%﹜'6pp@dwM73X:-/l֫[yi73q|b$jG/jfKtty /ў./+$zQ;yF?hXCӊLL2Ca0X_DpФϢ4ibHd7˹+#BNW`/i ơMDDDl$$"""ڟ.o@N` I0ˆWb \|R⁉/"Ygg8/#4y~;2V= Q[4C7u1.p[g׽3'= *Yh0qO7 >)9 2y"` T\ɉ)[vCHuBzoB)d1䩯F ?4hklm.oXg"""b#!Yri'2ۅBإ W6>pهD$o0 HpSWTt{.ϰJ]vY&]Ku@Rϋ 1@ lW&y3$݃@$\l~vC\xv.ϱDB"""yjk\pha)O7:͜2~wvbMc*Wڭ  تbh3VovVm%"""6}4yBMNM sҨoSE]O0*}˹N ч(>C&ؿsP_Ҵ"pd| LtRڍ|i=V'^δvDhd#5;Jt̟ػ&(߷IhZDK^!Mw`>} ͎E5lpLC#Sii@i)""":XDDDlY/Xyi%q2 0*ǜ ,t9,8&V>.Pxy0Mt3>l$88$bNim*"PDDD9G0 \74( |4;y@NH<>+DDDDDDDDD&w)gN+SnOp<@غQhoF=7fy <>Q!dcyz298A,:n -Yi!dbXycؘE3wv[j"""""""""0 X+trn/$[\s{ڔY֝`N~8b~W憜|dNDDDTH("""LR<q 綷wRy'Ntзp0 MSp8C[{oIvoܾvK[~օV=GPIb:k.n?ٻ&0 w'1 6jV^{Kzkp…qME&̜Lg- 99 sɗo^{ՕpQs^XFYVï>Ēd \ p}<~0xGKwOFDDDDDDDDU?P~Y;`0; qD a(1-. Q?Hn %ub x#![ iffPIGyԀàؓi`iרfjbg5 LmjM&mSC ժCՙIH9TPҔ) """""""9?i7$TwĪO$"L#̈7RiYQSCTTu2;AάvlnVrQa*r!'/]>zKmԠ?@$-N3[(in^uvQe[3tDBmIS8r~wMDQǿLDFD,Kqҧy܋˾ }BwF5ZQ"-Iی3(B&PLg3'4M}vfJ|n\im!vj+Sϩw9ϣf5UIׯO,<˭ӱCP0"7+ieŘ]\J!iaKUuFcW*G]}dS)VbiT7(*k%B< K1Īw#$?T Pf;+C7]-SL~r(&C׿NF ^CQS0Xy!QDR.j8ϳZv.a1;aBg4}MvlѨj-%8|^oZ"$"""HG@DDD]Ff, c`:W4ȟe5(.FFn>xfz^gWeJNN\;&3烚r" , BH+++>*x@RuӍ0>1hpn1qu{| pX @Hu{bG[A~@HB$ w$?36r @#!@b7XV[3ǟI&d%k%c&ɘ##I*Z[K{5K(wDL gdԯ$Z{JK} @#!O)F/TɻHt~54VUÏ4jY7n4~Ҋu]>s#RBNdƍDMj1ڎƓ  $ 9mV#iuPTzz~oa:P0xZΟEX^^Q0bH~>utxԦQ=K/Y|,ǙS fg|#ZZ3auuMԩBeee]Kr{}NH RS|݉?#<<g3fZX aCT&gp㈈DDD "4㩘2mJfhNNpwSڐCbF }>a~:ƺ6 z*U*#(hڶa'='c'.YI:|&M d 2 {"""Gڝ;OJ/A_M17V]; <\jU~9:]rsEKP~>jVQiDlqtt<ז8~nD^ C;;#G`VZ%KVZ:b߾8y2MD-+¨rtn,q"!WA[ ݎ].. Y+{rni70ft$lY:;;`$nX< kR>ryyy@iU~+^ر=;+cDDDHHDDDD^dý dDYQ^IE~~>ZQ;zqG 3|)׮?'pQڶFN}qPx&Ar^aDt1JLOFw׎4"""b#!=V.ؘEؓ 1b1nLjZ6DkFVIlkK?'.Jff7g(քƮs}0^ϿKG[ d"~=W"!>a!30fToqSμaϬ~Y>KC0wS%X&CmgjZ챗d\9// ׯgBʪ!5ͱWЭ̘qa߀rz{τri&$"""b1L4}mJP ÚuDC6O>_8+VA̙spj 1vZl!nNݻw7~?YNT%E>C>Q)?qq0eZ0`8/$88fBI8Z+:vm \;!_`)6m Jʘ2u$ /!e7]`&ܿAՅw$G'L(͛Bbmm!"""N$$"""&cѩ&K`>LMM@L۲9+кuKDX *[Sk+Nۆc&’WLj_TJnXKQ$tEV)ejR u\qT8#)RSğ=.+~K*d\lO7{E *_|^i1\h1]䌍0kH 2 gbb[j"""N$$"""*^:ٸ=ztEQp]TZƵĔAI~݋HT,BBB8lm!#"!z,&թS[Q͑''̜@Slݚ{H4@ ;s;Tߢxܵ:B4͘6_~}sѣHH؅e"q"RN&bРIA(KkƬĭ|Dѣ{Q*o]ń q8H4M2-QbEe _:u3f.‰PHK݋upTj=k76mnV4ŢB E ߅iK[\( d2<Ɇ ;{ -²q7ԨG ]w' |@pwOPjVMS7l&=`Y_CkW$'@qcKۆ ˡDxexzF]3G6V0=p2\D:wƗCqrF ֨%CY^>Y3$$@Ѱ){CEt""""""""*U-pN̚h",Q-0|h֍Ba+Nځ!>%6JwFqrmllۺ:M1m۶=1:e5a\_d8H%K}>=ьy:-QL($!Wz5wDyFn+r"""6;< #غwD8!'N?w |`ո+F utW\ 3P"ĺ Ν{!7f̐c<|DO.*juG -(x$1t/=ˁT*B4i{Śx$Eٵ;]z͒5 1jThKY}.6V$ճѥ {ᅯJe CFQ{q#ϋv1|hDohbSNSEz^R%=L2wTb%Qx1OjEWcǶ(VV !wir"""b12*UIZYJh*}'rM =߇յ3tuu!IZlס@_~ ={`&6}{cgJjH\$*ãg4ɝ;Y0=(J*xqWY] +tA-= +H)N9/ ZjE ˗/,QDDDTCKK Y|D\Fdݻ@ܢ.+W,VX'"C٫311MrP#QTd9&B""""""""RI7{R4th"TZ2gnah",h;|8rzuEq&O !y^^SZp;v#r~D~&lQƿ]eׅ}["Wϛs@'L<K ;Q)V'Q6\8WFºujy̬6oލ:p(g!#~?e-Z4͛؉+Yz򦭭 MRZ}̓SЮ}/(zí 3CPPoO7dž7ej$o߾C ۀj '{fMCH>9+Q{O(YY פIChw@1ʕHH؍|$1>99(+amm(7!>+Kc89~ƍVQPܰ547l5Ҿ>/4×HMUUon3flm@Lr\[kyZ4p49T9(Ly:::%&4onuyPV{y.ׁx4*U҃:Y[["88OC;vODDDl$$"""@YS[+<̓:XXԃܓ'OFBKF07MF5kBٳK~؍?޽Eu_qpIay"O!RQ#*QV3i:tF&TXi(&Ya FPH^enw9sA<; q' zGZ!PzrXzɀt~;D!*,,%ZT}TkjzRRV!̩\W V||4HHpb#<,Y06艈$$"""zZh@ BqiF 7;~jW…s {$5DuuF4) 3pu ,,k3 {a?ɤ!_Pޢ .>!_ QI%XR'()}rSڰg0=v][PjrR -9pppL8G XDDD ookL>ca"RNNNP'`8-}z} jkFeUz߅㝋EӦAvܹ WjUaذ!ŏAB""""""""d8 * 2ɄJ]#,q]]]pttċ!#}Gb 黐Nڙ_oDO)>[.ܻ׌_@? KRGE,|""" NWShyQ]œG@ vt%%8i}dvrY[5cdW  app  Vz=axL!kiySg&LPT˜AXz O wػ0]u=-k{ (gƍ 9[jaэSo(88ǃ۷m Ck2_Ϧ}RcW z:<| k}[_>AvOV܏!rss, =ٕ+ftvW  ɚ:~#GcJ߄Y`D\2>sتءf}V >}$$"""de@Gw hpiֲ /3&mvbg~^^ ) H&ihX ػެTT %DJ X`vx`YĤ4.yo6y? /Z:aC 7`-_"YDDD =$3 sttDF|ػ3WPYYѢų"<>RFĆ̛;7Ɵ5 HwODDDDDDDD! SS3DF%G@ vڊ^r3f6\T{q 3J`-ʪQdd AB"""]4|L_v O4hlDŭF( [2a\{T} ~/9;XrDDD7u,z""""""""ItEžE:  S^Zڀ~GW *+Se9)E ߳$$"""z-9hiyYPP֯[{gQttt@遝9[ԤC<JB M*ߨŌ`+֯'[QnA8wX_]rEODDDDDDDDUW@4ixd NC4)qt]E%OKq#Ct·4~!һ?yP>=ß8_6۷%]ln 2/=M $GٚƏsD'""b!!5b¥hjjC)8ybm>B}, 3Eo[Nhc)p"ƒ%󑗷(+ك3و16ҡ9'JoXb͚$iU 1-S=GI5#ׯ+%ZP[SS+1IL\/0y<<%^ BCa,ZjР8ۦ۞Ûqp.]pq g=z< $n2fDbcI/7aUSr/< lm.-ܹ!>e4OzKhΞ{>_bi'fqqi\ Qxt.[}:gO&4E]G䡡O(qJKP?:XjCRHp-#]=x(vAZZcc̐&믮Gh4 amm7ofo"vQWC?ON~䍍㼴1 i~cikڶ匶75awz?OrcU׭cN1m+n~k+N%p8D"xjj69~ݒ}'2>gXSsR*o"]}ϸ TwlQ^xq_hf]q=[(ht(@K4wk!4LpVH(J!p.=XŶEۡK46lӧ\ri4QYy ~{y{iT;w^10$,X333٤oэ!!71$\X,7 V6wvx!7X~[vkӹuzbHr;{lR:=CBЭ)?slRgKX n={U PT֮y(.<CB|46>IvV1@QٸH뻨%,:7vI=qd٦_ fggKVUģFRi4/OETV6MQVVISSƾ}-1*( "CBe^,֕+Rs*]۟GDM͊X077o XobbIy.(/JwUQUUVƓۚ&O=J0$_F2L ĹGGTP0>ͨ[u8p]"*MG&'blqzFY@AŸ6=pJy۔jo]9s.wS(B~TWMh L\&,CB ͧ'E@!*Q!!`H+"y0 _TK֟PPtR_D2e^1oIENDB`icingadb-1.3.0/doc/images/icingadb-web.png000066400000000000000000014755101477347223700203430ustar00rootroot00000000000000PNG  IHDR 7eiCCPiccxڕлkSI*-Z R;VHKr')R\ׂmп@WYEΊ.Z )B CԌZ,v?.ëkmc&6aVW ̯O0e9^E8u>nL(|ATL}KeRGwqeGE*Vs#\q)Ze9YEg1㒎PkS즺y =UXUU^{SK s[8=v$yF+oڣ} uëw9[ TZ{&! ?SM1Wc_g) pHYs  yIDATxka* (mYD*eۂcК[sMb,*ښ*&j + Vh/MjL,˲ܖ2ͭ3N3v1i<{9쒓L|>3yN6zIo>;=vZ%S=ވt(X_rتXa۲o ԼXC, vMѧ2vslQlqj}flW)V (S7xYwܶWo%ތ=+eE/(tt]„J:wbNl93?mȒcI 9F*\!=г =ԽЛiY_lPuiqJR]l/ ~[ܓ>Sm ctG)G=KzhUz;*fn+؜i<Ol^OO`cx99%T{k)D蝱=m=;=iaԟ .)}{Ҍ#}DA^ۓFq|P5cs؂/8+J7n&^|Ќ.ΞU3^U3N'o?t(\=][{z'g:+jzӶX/8OdѴo?컦mw_+ P!O?+i ӛV9}|4筍?~Wxgй)گ?qJ9w ޝ'y74={(}}SW63O[@H+E&^\|Ɏ>3S:ZS|(]_\ƞb]OO$5=\ݡҭ72ؓWS*.S&V7Ɔ+|I?-s @[N SON:maGwd~(--=9O1{V78}96Cm;kWoXz\;a•۲7r'^ibujckbu]Cp @3_LthS #on /ےڷ43*5VL'lc[ۦ;в 7 7Å U}\Tڷ"75)@`~J=2 @;+yZJ;tjØm;|(6=oPő6~{bZ 7>{ե6lA{sn_9>GXz[no3U*DŽ'L]ǃ(vwgOwk){tg(m淇vKO׾S=gOG'LYwЀ[o/u9 ~}=ʖn.#P?.f{5piʞ4U- @֧^CyW @)ϭk|`Z_ngwg;Ɵ%C+{tyޒFbP}Ǟ¦g㧬W @zˡn9l98-4;fb o3~_8:v{4~[׿MIg>;CcGv'n ;*go7ԦhC^[OOYm:6magvCP+2{˞;F"˱##PG[bS=H@R-f4|,O/o>а%4d#P>Xk S89CPlL&}n5#|nc9OG+ps^ƟxƎ@LOHW @awk6s'?7 e᧠ o(W?T o@ yak8/ӎ.gɴ:On+gefJ]z@̚0t棯~FCPY|Aknu-~p)@z5 9DS;yuKO:{a~瘿Sm+ntz{'wISРcHnk ̬O7ؓ"\liϑFM|x΋!~Oѧp),fwuσSZà%maX[F]6gIg*IO;uص*++=Hϲ#m@ Ɇr$lAҪStR"8Uk[ZXFZVJ 69I YĘ)&bdo S8px}{"`5sa~d;@Sr#O E=K?f~4gḑ"Pn{&7ow>oG3?}Sb~?XؓR)1[;ySݳ+h7VL s9џ]&[YE/IG\]u9?\؝OizG3RhRZy?mO~mt};:ݠo~m$^U߲bF(?6=>Shv? SV/e"isi܄it.?,Ul~} = E ?́-Gs󔿩Iy b)i ȳ? @nėnq*E o'y<~ d@j֍?=cS*κ%м3P:sz?Y~5~jMtM*( @rx",sw)iS"OhϿjwW?W3}>o>rN*vU37wǬMck @z6"揾=Gٚ S6s[׿=KǦqG^#gfuznܟ]O~^@2 @Snrν Y웦&TP~@_X&Y7H0)k&@Lz6dS1-DVo*(GQftϴ揌Ͼe*$ y|캷cc[6 @oQ͟?EX?[}l;>m @SGvjG&P"Y<䆜|w5aRIoX~+3ҏ@zJ~Qfa)x{G&O~d6o??qYط^7skܸ#R4s-]bG@UϾU ElIn5?QH > }4{3L(p]nWjHZ1Svǘ+4i~@*OG~4B}lɳo h'Q3A__QzjmSGV6&x"IM.y? Ph͟)Tk4LlA^OoLOmY)E<~7+kݘ@>+ecZv:@ꅵPWiL'O}kF[?޻?'O"⏜-3׷Wnħ}+Ȃk"M̃R[@vRoTONmMlL5E~o(%-ɷPmu̵6 ?^R=ќGOLso~(15%7>^mxv@2xtMS)oO4/PnnuM??O<ɋf'.} ?Gso5@O?c&Oo43q͋?~dx-<:@_\,"P|MHj9H{js"?? 0D*cAi(=F?wlz[?^) 8/8hʾSq#>*?6s9:@qr8aOȁwdd%bFPf2ho @ ?RG~+7/s F}蓫o/ +Nll1?"z6z6dfG@O*FHM}{z'ߤN%7 )RMxup2?RGsYUhCx/s5}'Ï9o6sI|S-Y\[ 0 (~TPi 9z|맘 ?<@F}KAξϊ/7tnGm VY/D36c 6'mt܈O\[ݟf}c*Z:<-9EVR1sou[_yͿ94}syG?O4{>7ࣙIEDJ @YOzGݿ!(1;nїkH3@dT_.܋oG @gy:x7r_gdxW;ٷo72> @5eϚgO2.(Y}\(HmhʣO (8fLFf qw+'}M߉ Ep*7djG&⏦oՅ3WngWP~,Eo䎒ASrP~l{HJD Eȁ5Y @%Zqzm}|+ZtkG3~om齟0طf&IS߻x-@E4+讼%Wݿ\xw7 @R'jkOj'mhFG3*EٷǟfyG.b7g7QT ".#(~'"\RkU<&n#n/]P?2?O ۃo2sMvz~G7}?d*ϟic8qobMERZToڜ?bvd[@fbGL,w@lC*Ol۫nѝϹ s7ʶ%,mux@^)LmYLoto($L}M0A={˽SξiJEc!Xڛ$1eco2LG[@53kXkuϸ?tͬmv OON1h[< 8HG.._=b6HGsEMsAO=6}(( Xşڇvup'^kl @? E?bO?Ə}=m>y[?RS'vf9K ~v7@> @ ??un==|S3M @~M qz5f[?ο>?) 3;wg/ٝ 7i A)#o^򜕅G''oR(0K8%]n ܀Sz`G^Mme!~D*V @5~8fF'~^yM|67R>9U-E[^t?kw\Io4.m OPxM34?GsPŬO[O }gp;tܒٷ2shl#'ঙml٨c@AOA^4 Ys?۲m}5w5@?^ p~73u7=-9w͟RP ~GZQNьO-S'>,Od_^E _ls+>~V1>BP4ҭPk =_1n[~4P[)rϨ3o|rCgW$3#0>qwdM@AҔz'ovi_Hѧšr9=KCg @9&}Lo8ېMOy7n! @RHfNNXذݸuⵏSH Od#*E[>Z'A^f>/:z7|(h*{XyH6qm1o;W0[R.HFXXYV{;Bn9Sre5咲`L8"}g9if`+z??!=< 8%+j'.i)Z;CڍAeewiVީQ䏜?ZȍV-Is? ?,~rk׾q=S .Nek=Ϥ',}R3_l@{q!@O͐I ΀J59_tMT3h@jOdG׈^~hj,~OYQ⇧]ɥgi?,~WwXŏ3SO}QeÊ@dOYnSHpd,7 R^VJ(2‡PzBBmѹ4vg*Mk%$AQo/>|Iߊx?{?,oӼ.???Y7̭~ \K E-ⷒc\, H \bUT̴vFi*h_ke?;q\cǙv U$[  \7(=A99ȅ;=9{={qsޜb{}  H3%  \ o7  Hnvo|o?aH@cŏTF{Av (_i34 X:UED]YRKH-*z_\O݊ /|@4y"~LU8pU;ΉSl) 4-|w8m5񪰢AAA /9x W02AA.vu\w˲#GZGiW>~dOzP䲃4.(h3V Bs죹hʎ#T0;g?t9{F䏢4ȟh79o3g#բ%[;1s.uĝ@"D1"%XM7'GAABx|  rNaP4&ot8:'OjԇzczfO dDAe[(=~ZR{]LK$GòG 'G΂9-\G?),Jh $bƩ/7Q;f[+A\r?sv  ?1-dhdOh׏ u׏ҽׯeWN#򇫒?Cacŏf5~   r!j,G2>  IE۳W ?. d:D7"} 7@\XyFfsWW)|/Jw{g_n]/yh̦VBy/<\?\~2lV%|gGAV(GnK*gqo e웫' >XuAAAں79 AN@;۽-m @.2GǾi_.=?"7E\ޟUG zŏ&Gp><[a\c-~,Ku)!;>R? Wf<4\?!  f`HH  n" e^fD\k_Ճ"@Jojע' nFkBxmnAO$2wc~>Sdnb $!m'g`ŏ&jO!ET09_}o5i1@[f%i֮,q{>=Ns~1?_]QYUOS;BϬm+f}"ȞTAHP'+{qwoLŏa@~:zE?@%~s%?IAAi+ $3S  N"TG|@"QHI F QFeRc߸J'~H~n;COyz8 6@Txĝ>RF\[@oOLA#flP 7>sZޜC o5RG豷's#h#U#ՒG =-?sTKgPQ?a| DAAA@|!AA.Dff'#zHj28~?=cdhhC)knpF0 +r^1zrAZU!=Vןd %qln^ǐ4qNQ('Th7%GE @?Z)&HuhЫf?R߫Yh.='\'   ]@{#)BA:Ef,˟\bvP@G|S{t! Gq1&b1$7Hď{cr³DZ~N(*cZ,e.iPK JwoA#*S4zS+rc+07yTT+}瘥L2!ߦ+#G kQߤ'@-P,?n  T-4?q{?Ο~^2tz~+Q"/|l ?)@#AAAQ W͹( A6,|ܒAx\k*Ql͒jp}k'}E^vϑǏt Vp" g*4 N sQ>r@y4Lo}X<~G#g%"FcLM@v8nc'hԫ ԭKMV'Jwhi:FmMЕ b"~\ܺ EaM3]UȰGK 󇑚b2Vď H/J|`G:`ŏü8Rƾyq acl̇\o/'AAAG$\7袉CӵL HۋSh8H{&KU%zЏwܧPCPבץ^%Hr# T`sǕlFd<h:Uq5 *#ެWHɟe GA:l{ 2UƾE->qJ=CcgkWG Vc߾T]Gh{Gy)_ڒĕU[ӘG+PV0"|\zeREo9Zٮp h +J!&+4V (Iy^dOߴ"_N  H7G˙ A6 pa!g!2q\W})}ڇIuׯP)}z{!uHɶa[̚"#+ dEH @ ?gRߌzyAP((P|Q7''kr=u7Gw15"SE]R{q zm?-9NUR ;4x^,T7< nc[%[ dН?e1ErT?젽? -?n?zOHW:nWsf٣%z&AA9o! Ap2CpU%zl'-2x>C'8&K~:[eMz12.2A;dcng:^IJWH PR7AJz !TxSoн)E#5Ru)43@Q%\@n$Mg6Qe!z#f@НCŏ)frN\DnZ "2@Sk)ďTv1pZe>Mc-4)Gؐ7>M eU_P  H7+ A VtPRd%\!V^[[XR,sgBEOsל@z%ّY4ȴm$φ4@[+. 2 9v]*H{<?5gďx=,qawiGG4`JL&T5$}>*kM-zzt@,@@L?Z另CxPET%S)]@@~#g?=   hJ#\Xb_K(g}[=y-}=-bB^KW>9wt|cYiG֤zhtmK 'U䏳H#@oHP(w0"|%{Sui6%f ?^6=A Wƿ ~41H k[kRIoܓ;iځftЗ1]@H ;; ӳ[>u,lD0# 2%~4~T&kO&H{JM"}Uu޹Cez^~1M*cP皋_R  HDƵ? L -m}]ѷUgBL?5qL>dz,LrEhKYśI#⇫ǔ|񺁤+Pn;AF!@SjP4Hw(hKi:rܪ;!vN?>JOY /'xcW*qZ;AwGZu#QbgEa$;SOO_k0#Fm7?n9G}Xf+uԥtNB?J9XX9BΟo  8#e{E~ $/~4#h*~A!  r> a7wcnb A..l%!Eg6؏jܯ![ݗ9kq>M I>uH"գ&n:UXM\J O 5NP@3]"2 ?"d@R ?y@wGNQ?6*[{蚒8]?=A7̌Ӎ z=.'?Y<~Z]!m=LfĽ@ŏ_]VzڐX=%EZ[kwwbn{ߴbw\:HO>HO?R}8ؑoJ @sX#U=? ƾ-:oZhDWK AAAY 72]?tb.a.err$鞾ݕtN?>[f?~g rG[hy-u^G~~~:YM:(BދdzȄꆬ C F @~d? !%ߴ:}~Go'Y) \Kז&hX@Y4+@',nHPb:>#H?%Fֲl&=% $~@f\!Ind5EuZ}|c#6MуWPI.)ѭ,/w;hrBGQ@GUg2cѸ;lzH܇^ңߤZ.?AA90x^/NO7ӗ H J_\bR)gD5L E%9P#@(zLG9d𺴄qF/Vа8I 3tCy;pЭs<'~JY2'~O_NϧPvPʌ[ˬ3<=Ǽ.= S Y7K&gV)f?^D7謻~ƿI-w#ǢvQ(ct(` >@HJH5tu7 N̒)Xy#AAiKHt#NLWWDeL/{Z ulNJA" wȇNJPtT^d"C;aq>>G?yյ5sWp pZ{772vݳY/;:#~ VJ7PWl (X0XdWT$b;LU'~bj>=Oو?=Gi@q- rOѣ @^˭B1?"!) Ϣ֏]Vjwyhؼ8Yd8#-q_@fg AOhi$wt-?|OO2+?L߲ Joo ?R1QGwEw3v<%ߴ2}~I!  Җp_LO'3|Ӈ1.gF0@ qpĉ~z-Y܂Dp>K+Z_w9[R?-X<y~mA٭{@r8yd[ K !D@>h* +A'}D(Q{ Ɏy;y?kkv)8'6,u3|X gW]pO&(h^*ʟ?~o92an> 7@W>cOw *[W?(wϝqGP$J| _a+9)@%!s)~\YX>?v?R|+lHG zM qmmU@Չ)PEQeNM̀MMmW۬)z^>u6m*.666/(J&!vۀ9fdb lorCC1&Oh#`7Wg=(1`Gug~0keC^bY`(,7Q~ e 3!P0`lU`(_(;{&,N9GD) EQEQ d"'}',m,)L 6ܶFmS(8H !b0a .WX @TsLD?w~&ڷ|b\9|/pFsߢmD `la'R'2ٺ+11lzI8b !{mďY1~7q0 61ok)L7fa*3˿ _x ޳eC0tȽ,a 7AG)ȴzWŎJ+v+mNey@9Wn<3=g,>WFo)|=\,=ES^ "kzC0w>1_5-wX3ІnU?Bh =⣧61oa1WBscθ>\mƄe>؍_tfRƶ5s}EK;qcg䠢<,協@TPWt>%!?ϑ =o,e$a~Q<) EQEQS6[ϟvϰ+Hd3`̦kFUEyUӐ*%ǴamYZ,&ۘŹYl,yEd5cGi߱G(~J$~d }&쎋% q>< (Wi$Tt9H\YP\ș76gulp) 4s)Fk+ vH¹˰j )j8:aƘi0n9Q *'<2js놝0*(I'q羪ć7`i%MÆI\pjz`c o2nso DN5 0DEQBP! 1a834 mc%`ިE((ʩ{e t$&5:fI)9fEr^O、(io{mztVdE04M"$B@ H[1#D ]R$VC} yO/^PNH"8Ɛ?I׮(8w\aBPL()?%e?>n܃csa9U$srB#eLbo8>2ow,++?}1;_3UDv w՛{qY}Xܙ=6f`J/G2RYA`E8w\"DDPaJD 3aS$^P؊,#,Tp\,56 ! ճ}HսD4)ʫ?(*t8B8Il:].|^tL9s,mnr\ίn3eG^Q^T \jsm:cσ*0+-/-TeT"r]LqO\9_|%%Do YI͜I/^1Av-?|[r rI^Fԟ|$f4 #* Zl_=춹ΠiU}8&YcDeP1"Ex-Ad8G"{9S3_疍xYS؟X$e, 1p1'5&<*?&#" L!#2!K1oݏ_soįՋw] z,Z9Cxnڴ^:mX?؆4Dd0Ysc`'q\=w1n7:(ہ q )'p-N5%\-at." (Ig✓#R>Hʟu" f~Wip((/>nvW_J3E9i'9''Zm.l*/Y-}=FB.ccqٶ{GO%w5Ez80.B0( (pP&rSh A^PrWMV.щ25ಢ3q 9$R\gё o | +vb2˦ $suOtIw``IR@((/mNǫsЫ?0+]ؼæDm>efwGPC.%5l's)$ؘ%e\!BXX@?Sd;5_9y$J;!'{ #R!]> CM 'ERp\‘ zd oA>%?ȏU3L2d`jˠP9|ۊv[L>uN,Jǣ#Gxxw3[B)!0::+@Rb쯢d Z׃3K0THr l&g²]T%P9>09eNdAh> E((ʋAf W He`3h|f5eww:d6'K2YGHN}EĒ_,LEI싴Ml(M=~ļbw@B댅8a!8?#촹(+X&22# n!=BĪ38jX5zAmMy*}MWu\xKr0a0`Ocnx8ekpn?a+dFƸ*!c%,J@DXJN`l.+NmǯŠJT^b1m)22`q59r[U>-QS)FfW$9 (*EQEQ^e~%vo G6!CD}QNZ'"KJ_aWY|F;/^R(pɲz?Um aӐ$f̏u+&R|5=xCB㈘1j؞ &JJ0 .&3*BRܺg1.Zց.DOɄԔ^\yiU#v9Ebh?RZܶ2vRuD} ?HQT)(I܏: E$,XLy mR6e3l+'HM.J}=XBD+uq9f!`۟k|qb9Hܣ  />A0Q؏RpR qQP|aʀuV !W )Ck8gi~E+|U !sjPn2`ܻ7@/qK H&@!R {|1zn0ct+pYqVQC͂8.nf:n=ɹ W2 ITAP+a07AD4/5 ο#Z9"(?V SnPTߪQ@(('K,i+,{ lf@<3ZW\nӉ6U4|ωh96hU@fEuLϸ",KLT Ŷ-8CQ!%ǗM$ =܃To\ aB\Px$C06fc IC ׎` sa– *bb_BrT x.3j!ز/h9H'`θGcv6_t{{f(= S!_>feX{d]ߍk.XM}%07$ ͥV͡qŚnTکp.X O\1f}U XUv;Q#ĥ: -.JJƸPPH h߼1QbP ZQT)(`M;i 0tIW(걟%%RHo~BkluCmn hMm>fFjֈj{"‡ZTeEe"}Ѕ]۷l7r(|Oue^EE rq!Yy.YyIz{Ih#~=fAL(H,? N{6X7/lKFk +c`yH (;P>w]: 0kwd4tؑ1p '6ἡ$BGXvmyD|#9rm#@%v$o_ 3 pS7%LJJP\8+Y08/ HQT)(ϐ ,esx^xZƗRxSm@k6ߵ mnZmի ΜMIl ѥ$Vm0lI.8K?Rg䋐-y /~?DI5!"KJ(eQ/<k;_" \xX:s ,HH,'*~ݾ7>1/e ! /jj1@<=^eMvqiGPKK櫂JD ,v3J94o>3߃AnQkrp;Vg dt&aYHXhAm9Hp7*o !%iDQ?c22pHQT)(䏔!qR4ie'3aqI)HQNmC6g.\`E6_צcN ݽ~δ[m)ͬr7h/Y%*c>-_?M"9#:pmdI H$+{~jWـY%-;ȽO&54?5ڛ}hq^Kmػ7_ܙ&".EntIadx |>t0ݣ)p$=I*z+i¶l(.9K j6W3~b{S=+X݅hH V# VU M2&율3o]݁׾qIh/,;WVT00;dS\bI$&E7: uYREQ{p[Jxoz7ߗr@d2 ۀ 1ۃ㙱0`0`lPF(Kws:k>__R-}KաRWsu뮽=f 2 a3R5% qdFnDZSRa4LJ[/0giv;weuj1$4 Ä^Q uٵ)1Fqڋ@Og#ְݱ .Ahx@w _`c.z.\@A\@l#9uA"T׼UԌ?JmtDrH6mG,B Ep=P@bK<+'uc;>1j'9P-}EY7l BqjK7K u 0jrU!F|D4wp Wn+B 6騭;֮NB2X^ ?n׍m}8v}!YF9fw)q-dS:ǁzw6sUQ^&㬀i3ni]FB"rMGPE%p[Ob)"QtKg >^xşJu"jXGA35dKRq'9p ?-6q~qVtie2ytyض4m}`Di7^:6$sn7j?aF,qk~t9"Ί?K߶.<1X07n/]Ȁ /(:NnI "S ߺG8'S٩vb" 9rfB<;=y4"l?YZ87a*Q/Hxp@̶14B͍3()\-xC()_Zj#6DCW_\;>Ͻx--PpyxdFRr[|:55lEivmP ضi.[?ݷzءR>&ΥNw8: ˇa`CA7=uIKjf!A/Yu0 N\"/+}\~6W^r=H/<<<<<<<<~aBiƄF&v(VPǰBGdi4Mi9zc aӕce$Lz-l]slZKҌIYkBi#H yM!![ǡ) 5iD\{o>g,~ g[q'֝s~pݱ _cw#dDz:d 5z2w]kZXb>sXUy7N8W/Q*c\'[r(М9wwkK6!k-ebCv>֙ohI{#q[7-="n䳵΍qd $.ܾ9?=m= MEhcfY M^ZS3v.P e?c E1^Dm4bv vp?6s^rrM~>@(s䴗RcQJhIV"d !^A/V)5z,-~*o^x\0jX|ü5bJ 8=k9|#&L8'O3.{-nrFܔȐ"uS M6ٕ8CJ${ld̔n> |y[R"K _ͦs@F+4&ږBݴ]bS 1"P<ϑoU,𓆗6-VxP;NYdXwǝ Qr{qJc^Ɂ-vOU ߼Mk)o"iv{lI鐑"N}!Czm. %"Gq8pmb2=pE32+]6 ŀCvO /#s+X mc Q3#5E=X 5gc"cl=?6S+ӓ4wpRC(0>~T5mi$wϗTo=VP  ) Ec]JmC̹8{8[yDI! (B=u([$9K+Ж y˻<<?eCxi``ٺ\&҄[!\o As%hHt|9lD -]ȱ}u|i\' u}NxhhGqd zxzlc6r\JPq_ Pjn)ͫH8j맠/LBI篃:f(!K#7gw EC=)@vxxx1aOaQHDpDr!u(0Ed('XǜfEq HTDm+-Ɯa%᰹n4bᘤ>hۙ>>MIӿ^Y/ZuIA ABJDT *iG [,qŭc*n8+OcǪy<ex:lHxI~?`C6aݱ7 _aiPKz+O4R7>0RʥObiK]s(2=6d)eCR\r9fh3%j8 <75#( ܱh  ۪Gl09fA,3p|w_t?}|up ݻ=9xu=5=G;' ad7qY:Gic9q >lxDDv>ĺ*p|Gqt)5{1V : 0=1&B`8/j(L?PB{PVY w*hS/Zj@_iCzW{Ŏ$[y P$ۼ?E~#S)!4PV:bJ\-)[uYے+Sl*PT R * ES mk 6:U!B( Ȕ A)wM)Fє0e#&0[ŔȈ4 ֜ ˍkJR d$ॆX49Іnx]D.u5,96\6 &s 7t-afXp)Bp;Im!9J9!G)ȶ)m/ζbJEbgŸhO( 5DB,Bl^7='̰-$"z?ٽW{ o?r >uZ\i^ zs@Dq mІznG3/\߿gMę6 ḑkYkJx3N;;B_'`1(lm۪sO<[g%{544^ۗ"0@-[O͏(>yk/&ɜ:nhw-pToEF$w@=CEm}FςgBcXN%f'2$> <<czJBBEӵ"5L5QDQL&b)#Eah7b;7Lðd$n4j5T݊J(T)X* (("<@yPEwp=J0< {ȸ\8z2eQfRGP c H@-5hҌ'S ~F f <?莊˭# yN&)72t }َ;+seTowb a/qU}l2?͆ډJ$S8G+ļ "O;/ѽpR$O\35сD/x"d p2QGi|7O™ qxE|%mufs|kDkCAC0m"}ɓ oipK܋cvcC +b @䘂N|!F+[uC"g;x/xo 4TzD ӞCPgذGMǟ. =:@p^X=<<<<<<<<'0~hي Z)% Oi9Q ?ԖACQ٘fT@x.@*(AnʈstrPsY1EІ`_􄑢F/AO pRz<̈́2< 0T莛 ?nxag5 oxaXAgFIMz?u#/]K)/Bl6$YAĉ3D FJH4Rɺm !zB j3 bE6z(|yP{)镇YHd0!yʱ9ux/+|,qD. 0Ƣ]e1x&ql?_~:;Rr m3eFlh7G7 1El H7D86rkzQ.z׉׷@pRms#i `5 E?S:vED[J7p3caֹ| >{5UW@L//wegM=%O" }-ۗpL/f?*֐<̑k_507@Y)H35Ub.n<_BC[Tх{i P:k/vYZj3%@@9) Iuι  wٻ\FF IΟHqUi^bpD.ܛ/AQ-CT[( * g%`"E eJ)@L4\ 9`+%b hl4g(J ?N; eO{’w ?g kj_7?mZ,冁s/ -V L62A$Psرe_v~x>,.7.C'&BOK$+ڼ` ;+bgqk@S3xX_7V$HI팉BBPI⾛Wc.0 ^rNqBD[f{?tpIGXrnGތ tǞ[jB[5z{9Dž݁t @1Bhh)4K[mUrCwKyu1 ЗO7 A/^uuX5uҗM">P$FI~ 2"ZH!E*ÿUD!Ҡ}E\.!ȜR6 #C=ǔVj\   l&kiA-P\<\ Ukh2'J E8H)І+; ^n ;/"c C?>+ .7TR{rE -YPp훋TE2sJwoȞKA mN4ZuʒD7{8'_uT 69ȉ~`I#U7鎳saXrKD<U5lu܃:[urtu} YV7П];߸tЃozaλfGVTkEtY+Q: Z!|ϲ\@#>Ģ9\ʥo(|+iAxz E@Fl׬"¯ <&fNjo'Ci~OsUu{N2ltCA^u & ra:v }% 0Sݖu8)pyޑV}Gy4~}ӆ7nIk+? G-d uK?|xon:[8!#D_}`s z }?QqMG!"G`JنpIaأ5@C IM=\•j, Ce$;E9 r]YoF/ ޵ (&y}F[y~m{DTDoty#1NDȜ|$7́O U+P{Xj&!4uFfP!k+ [} Pi4ˈ-AuO+66^IV ДQD(+u&ʤiJ=f6;'R8}OgZf#c9f_UaF݆=k\@lHyukN4޾C3KODR cxD4 ; #":$CfK-I;fk1hNX熽>iukv"5П5 E@lz.rG&P-ɐa=KPg)8CLaX1^}|%6cmo}*$(ɜKF->w~^ |eCPP$EՁy8is/޻_܋?>q mVJ wݣ刍3֯Qx Հ2%;~Ch3dsU1q캵f5Ϧ9*;Km(_tYp}&$h]у@b1Y39}UΙ5n;CVb/yxxxD 'fkڱPP+Қ1 qtL<^y!L!󄂀rOh7VY!Z{R JĽP3(j5ņ+a@Kx|P ?ól6->/5 c{ _m9zs' 3Q>.ImL mI[\E~{_"!ޅpwo"VIR&N1)k+ zQ@ЖQn˶M+|$oC(t='^qh"1cW/t! aMi!.)^fp%C7$ԌO<ӿ0˜q[6㷍[BINnrS LDkk[&pxW7u|5xk0XQ3'rfzwҚ BյM^0\ P¥6@9>>e@L;.WNĜ/ciX T(5 &oI,"m͌?W>P!Cm;;d)R$9#J2Ǔ ڻTR{ʔh cS1(V bXmL0IþE0lnBw-) aey0}ȊrcxDdO @6ox([9oJ^4aïcdjtlj4|aJHfK^ӻz "|YWZ Fb&s"04x]a>d $XFmBSUP(W֣͆ LgTI  cR*wyo!U#bm8bv0.iYnh<@ܶ(h\QM &+)8䘆d n'厛{#[>$.؉?dQp-rPv'sK'O  @^N-Bu}hX@t* g+{{?y(cv<<_fjeDC^SxKO%FU6TVYru EWOwV46(4xr9Љg&Cx+6tG6|ȯiï~p 1lVw{a> gIy]dc?&@gE! 9nRgr[&<׎;&jC001B޳ ry2(_QK)ЫCv:׏dь>LQp?pӤۃ,یn3m CY7;'hA8tA-;QX\rR[ԡGƸ>sN= uVgL0ɅW銑jO²a9Jf-:TsCnQ"uSk!\~!f^r> דcx<{! @Z,b̈́&hn1U<~qD`hCXWP[R;K{ ^5TCZO گⓆ ?exaqo{ ܵ?(fHGCVq])@a"@QB1=U~q{C2"H-b|/)\M(XP X 6bre#fM?cgȡШ\)m<3oi [T~~;@m\atXָm+ѻ*L.ݸ(vVu{.ƢAއ5\@1 HyQA;8Gh=FHC(t@*uU9׍óM@4ugʊy 1?S+eҤŚńXo魡/Јs$e l+#(T)a`H:,[N:,hW ,c9nks=| "P6fÿYƄ( zma3bXI 俦 /3;~:j~h ?nx!gi0<3 ?W O{|%՛XA C'0Ll(+htC(;A! 9>c<@f\jŷOp#& 3& 7Nn%)^PY/CVm|H{tkS\f$ڍK"YZ^ o3ƅiϕ8ڜg޳w.ߏx^wH?8k}X̝ܰߺr?.>C' aOEz?ڽ:"qC8kmdݻmU)޸XiR!fMAFRlCw ;Pg%m'׀ZdlTc? ³0w/l}Py2(V<<G_ [wBfO^ 7_wkVCr^7L2O_0Q&gX$a}o>q7ZDOt $H3k`%b|܌f#8a0V\(rHs;B"[!=PyDdž( 7[07eL( ֶ//_vBkr`玲*wzz }t3݀MT7Pp PT6!ٲ'rxHTf8PR߽PbIfWb Ui_{8P![{P O #fJm^!Zp{H,cH2,|@".+[tI1mٖN Bp)IG c[UA)B6 4v(~ ?e0tGdž4ׯ dM9tǸ/p/7T5e!lZ;bynoIч.7H#!@hc{\ •d  H^\@)!xd&n>@@e 麧pnҺ=WBah\}(ߨ@(9' Q묐{?0u"^z.||#-))j8:;LBSSFdS8z53VAl,:Sb]v,]s|o /ЋSGˉH͊qpA5\gY`h%E0`!?GBӓl}7Ly~^8}a6  uxS(rs EL{'<<<<<<<<ogX)?;BV.׏EW4eC'j#(7P*4@1't a\dd C>ܹ,%8NI?ׯWRΙsZ:puY[D c4 JPpeq.1 GX!<Ò_Ï~vF/s!0C!. %HKZ(I.#o߹ȵ!͠8r [`>CȂNr($仧{͖:m/M©K#9/O#nL#`Mʙܸl ']"O}^=_^?gy ؾ6/;ڏ6r-ǔ w 4?=&7K7Hs= @Ā1 -䝌Ĩs2K<<8bHÆ05bv^@2R@#!hŽ#" N@1eĤqJE?i+t 1tzTB,D  %0A[HkЌx? {; ?g%(D?ݭ,+ 25CH9RX˿oSČv8҃x^}X%e !X'͖͏C𫮎lcrteHIE.P?W< I?&w "OQ 5ϓr],W#D\=_+*29!&>p>#/]+mN$ڷkoόG@9ܻ /QP3bc`IGPy%5pA\<%%tVwZ¥9ni5%pB$ם:͟ בlS/ԩ#@5\G+@1S踞" .ׇT7NR:$N @315Bd_PZ9'rOރbi}W'bPh,,Y€-#Ğ(dŠz9@MYR!'[Qϰ-\J=~%!Gex5o.uL:o_4WEo~p7𵆿f/Sl7Xv܉:pn2̓2f_s>R 8cI g?R`P\c9O|}{JvֆNQ?޻j#CB"0ҵ P ]#J:!O%8 4 9Nvg!Q4XVbwFk؍o?;{ 5:tE`GqX8_1KN! o+6=u*C44a8e6}Ⱦf {B~p!HvwWBc5ݵ]z+8iJ>OA݉]+V9{H-(8=ȈsM%l6gӈ~oBU^4`HQo6BP*@dgDm2ؖ;<<paZhVZuzK qL Hl,C 5S׏L/W[BGI( S"QqKrrf$BX)"iĚi0ύڱF~o/( ۆG5r' +n/^J7z OF+|" 7pKjw'B>1^|ubZnZ_ pF:s@ 9D%m J)wI2ɱ).%څbXmyRkzp=7("='pS9X$p qr" ,Ƴ%Sk~"^ݘmK׏^J!\t}wI֝m]sgpxv0hU1s9Oý~K^k 3x app(-  +۶n]qd-U_"y"ΝQ (j _;2t#ķ$NzZЦ)8̅HǷu-ќ)s [ {h o.&Ũ%.[H!lA،B) P2[Z/Z *5s1+,X= 9R2\o\@h9(ffbq`T|@~s<s~1,;冡_g%6Us:~^`XKĠg_{ $vȸ}!ڜ1wWI~(hHpc@8jwmʺ_\>\@9%/E]ўT{6K5@~` { nn<ɱ % zP.:-L0l{؍"R u0=}T^8r")?|Con/e|%ͽ <ÁnuT_h#7L;qȚ"~!)tt$#ؚnn3c)b=^A)PIf}Ŝl)Mnjg:&*N*#Pxl9w!Yu(RLJg}l,*a80Xr RFHrb+upQGK~sŽt uLU=87͊&b&ZQxk hMVR84e3@7X.vt44ɀN)”F/B BĕD2o &iG8uU6=Nh@V bZ}1DĆ1+fFpqlo*uU:7& [~h^jEZ!(|60ߋXH +mT6Nzl]'eA-#C;υblU p~5B9I$^!׆H"r/2tt 7f9@ԭH`Uf ,-S9LXnd_qzfEŚd<bC.h%A`cÐUP \[+Nȇ%c,::O @8hr1ir =Zה[Hӹ~0HD,ŀ Do:+ PM8 jjP A(@S RoSHǔ)~/ { 7; gYG >'1gM/Cw1/j/cC|rh*l()' \g+r sV\IXGA:vтRNJvBMB7W遛ف؅c".o!\9R 8s uTҎ)bC}]ˮ]2ddkײv=VܨdR`=NK&Bm&!UvX=ԪVV(5fAQ#-br%|.=5G{f&NpBH']2}i  E5A !]jDKx3*x~W}g,Z3Zsz2: Fu8/ O<[M^}`9O[x~@e;ʸL;~ |A )Ν0} &ztf7d.5M8g;<<TvN 4VCIe ɵ8"CS! &4c~Q" j U_=!PV2g2%'"Ņx}jeJkA`R`F=Ĭ ?ݽ.Fxd>`x"CԆ0x37;>G٣D30͡b)ל9(5Î/.±itCL*rL e\}<>kU 8|M YW:A-6bn)^L)B1pέP[Vs^-rYv\duw"o.*c[}&7ԡ/>j! V%Gܣ&d堬 xxx@X`9WIMɚF|B@HB6JHg%BxXA0(*pEOWwD tPԋւJauN>fZ -緹t7+nwr"l@-y @ ` )) XPq)>F6& (C˱bGݧe \$p_ ~~> afe4TL6IoVzCii(A)YAX+KvUN?Tn4CZE8l _E_[G x(_jXsC_64 ‹eX6N''9DNp9tsTXjA6/ +aNv/vY8l*jˎD n@mNk*\8NRGJPCݷhD΍b!HAHM}m>{߭\Ba- ! r}Eڻ,*F}B}?= hnB%@qVRN3tw> >{~AsI:8DBW{K8o}>`-}pp;k =P)8cJ@V":\B4\ H'p?J d3u8h,#r?!bGQ5].T<ʷj9ֆ5{><<<<<<<<+vS Ȑ& ŽZtJOL])s}-==0ZA!2a8i%2 t=JJ0i@b~e8R-AlgmxA$e̊SWW+ WVEBx^ct+XlHx@m(#OKHQ{A/"غ b{n%XD7{c;qeA)J t&J)z⺘GGoDȰw#F>'svw}jR ̑YeaC}{>@>&q͊:=ۄ׃ h#ڱ?O75`P8=oيi#@ A Fgk1YMxPqoJȲ|N_û߷u޼}Eu-YU74pk7"HdH5 .AAM<Tx|߳}$xO (< >z S>̱B,~Fw/yxxxxxxxz3V~^g!Eq, l6j-Y=ZGp+8 f&=U:g~p 1g /+`V`܁1| >ş>RINH -f8BPr"Ы&~Af8+ .wQxQvBf'h !E£C .(rkĒVj3󇄳EM e8W?<rd?…&GcCٵ}d2{N(9'I0*D@m,xZzku޾獂JAZy,_}]Bau+ [!RN Ι~eØ)؜T&$*\kjƯ2( PcqZ\4_e5_+`mO`CO vEȝgmAp:@U'!txF0\HAMAiQ@<.C؋@^芅Fn; 0`&Nr'ESO"ãYD<&Tc9s"= ^yK O9Lz4$\"&. FLpidEG\{#X)~V?%'tGhx' +$`Z<t@IJG[jq6sČC?WSq[8%(;Aa mA ui9jE'q]szй6ڽwNEbݵuaޤ#GK}sX[q@y<'6kudh)& X%uҼelGx|kd\=o3xzQ#Z{ (6 *:BtQL \k7"{(a"n-:"k\`Do>J9Jܼ9YrE5bǞܵ⌑ n9G y)&退# 0E{b{ݙ!M @F >Hb>_;꣑hK/y#"8mOÿy珇<<<<<<<= ?=La\!%`M:חZ p=8Pj6yaȂ~(G(veބ( ǔC*uHQ&gDM],\s/3Z!lج3 tǭ6,O #O22e!H6|a p-cytWgsJ2tZ uqa~g#AW2vEX"$t;^  ΁DYMmX 8g=m`5ˌÐ)8&HC#7ڱ[v D@"O뼽tBs(aq\lqC:dH0c%4K \v>Ծ=Nԩx-o،`م{!`P2zsQ71ˑ?ݿjĄ=E|1 "ѯ%1%H $'&`-5h2^b_1njAB "䀅.Y߅P|V Q$@!;ܸKktOtq`辣J8Yt%H1IU C%J13o|A2ʴ|Q4 _gi1`&YA(Q).ObC)kT{\ RD*Ag *,؀4PP`N  u){B?#şM~5}݆7_AVm㞩oA0_`.$\$£;]q8ҫ~m'?‰6~/\ ®_:o97G¡IO.+g+_inD 2bBq0᣷ǫNa%Hw 9! ٮ;=xh)2"P?^=nuqKָu'^-f]I챰H>DΡ\86},erVHㆀB." {8x=KDe@3%O}uHW9$\_Ev  @oH͸ZЬFL ^k J?ʔ & O;⾌ TTG60tG>Έ@->UpT_g3`z6\X4 z<`_4܃7|{ 79k<@!@^KȐpU2mCpX ;N97?gLr|bL= J:gB;JګBկ: ʼ`2Z[_.,"$S NꨍȾַt{ҭLbNZٶ_bvsd #d20f$D!Q= /Щ(EE`Cj3z`_{@S5a' ͛fIFQ}:,2^F֙jo :v9@8P3WçGQwN-# VN_4gY/✱ FJ ȐzݟyB'fOAA[{[ :Pr i(9l{ S\|\<,*e MA^uL/4*fMe U82["PQUK -bK zxϳܣ @C5=[Opp:&G-pu޹ # k ?# XtGqY{<3N[Bwlialhá#3=*Ɇ9ӌ;|s!lhq4!ZpPػNPEBk7uBt4мa&Szz޲#dA r%{'z@嗬C6@ lr8$ɕ1^n !c-}(uJ0$u4Hήe|s2\S»A}Et 7Y1._Î(4(1O !఻E{kЗ5DbBE:z xb#hC@ #cDŹ3lgA~\%[Ht̽ I@^ol-0+A$: E~h:A_7H?(g3|@ L"0 Zp: xC)hޏЫOo(+а(4 z<"?U8:˰!Ƒ k8"ҹ")0A̮yXbڝ'3cLЍm'9onnZANn!~1 g nK: _u5˯}po RAs4]h׆-3":bcR/DqldXer `9'Aya t59"OR c#K# sz޶GAEzb"JœNQPy OfQ`'WK Ѓt8"sr[$$gޏ#ԱJ=H,%K+b#ex^ xs`Lֱ1bvUXJGm?n@6N-}$x2 WNz 9oWvyġV|1L<J:.e: XK*nmz~D3*WMFPx8(7Sj&PS`BSNDo->${ /G僻^< p_fbOcwx5|b>~v(E#IO.uqc6QiSU3#h YPGIQbH 3j()5# 8FHhyv3৖;dz4±=q6a }33@ p7<xA`#mSliZY S;A!``+[ǂ4D^gx$x`V(b"X(2F+ Q @yVRavb0 /AW F1i f觌>l ?-XDhgŞ:2bE|&1߱A%wQDPTERo}w#{>MPt^F~I If$feQ6R4S43F/;&ovq0YںH -vvZ;fDRtnvI/ha$JtPBg5@!*7mB};6 MTԩ~h7Kjt<Brh H#7PۆJ J!0izxO-/.Ϟ3$ n: -|F;'DڿY4t[v A?.4yȱ}[f@;r+]s)01a9Р{|=W`1t>x<8p`6X@Cj5F =h QxfӚZA$Hܣ ZP?lZ+1mtMBy56d`v['7O",HUMkr}H6z#7șS L+1waLjVDo*2s1_Myv~wdPR% 7 $Ry91l;ZnNh AMY?Y(=#[Z?`g&qw7my 9~y5턪 c޷!HxWc6ڄ&+s*o r jƗ6oG)ܴ#M2vHXdXh|ьq.3SGyL&ʏCrl+UCҝZr Dja I6Mh@ ӨBҍ1#)c1(+`y`[fox<x<Y'42,f@@KQbdFvd䍐XiW(H4SBmVB''ؚD !3=~s._1zQycF_6jFYu<#z1Ѩ3"B0j&k.97;?z۵}Ow1F^?RVqQI0%a^cFFF׿ 44kn4ӧ[ӳ9+U<:k(\77]t/ ~$ɟߞJ?z3ʚ 1oDߍ%#yWu(\k='SvJ%{NTlԉA@gnR$ ӝ]wpDQ }h"c HSh~|dfrD}BYps85k?L8hƈg*哸$RQ}m&̡U<kjC#S$ÐcC0YIM rgM-Cdy4 cPB=(*Yx &{0Ǯ]fN >s֣x<Y/L`F"-08IhRimQQlOٷ`:H + ͵Bh(d&dI?F? g6`0sFeFg z"FXS3z5V 4q5rA`ix(64O|+/~'5O~_܍(Hڞ 1V`>AWcTȔQܿ/* jDoy/֝@ @  gBAzp.)2zFsAE4\7iiTl0;I `(ak#u%5 ˈ m予&я_`6oi~4;sw0ˍ[U/L(g5CYTk k6`胻$9@osip˙:BdQYDLai v#8I^yR.~E|h=_:oAQTbq <hiۇ*.(g\IgLBꮈ4q3Qg<3]hVl޸a{hKij8,ut55\[*?;<)<oy<񬇀4 .q3:H @͜LP>Ƌ]P0^lee ;KK`VǑ ea0m1 zbf>eiy f}Ț[Ge"6 L/şm8$W]t o3A#5v3173>"ey L\_jynz?s/zCʸ'}0|ɓq $"()5~/ؒrf5UFI.bFkV߃LQ'CIp0ko(H&Db Rett Z^֚VQ>E1A +*Zm}ƳO<6mF@-ݼjCU 냈ZDfDM.FY?$ fP9538 vu$Z 8r~ҘT מܰ2mxz_t-H ZPYO D x<YF)tuBts bV`h(o24XwD@k<@* $28C-lCFW =6F_E'y7Q9W]><=Vρ.0}Ğ2ֿ -q(3(H9P?1Rvo`ӥ AsiL!0)g4zTڞ6!zû^P$F , ˈ"@#aeO]c(%Lvq=Ru>G⌣~S"T$alrFeF +;_΍h pf! Ujە"15/.ūX~qVlaT Ù:{gӈh:3uL{vBm '@[iZ9t؎͛A!byAVh'1# \7S"kE Qh3mfwn41Sƪ&_ /@v|p `3zF`4i7w^..]Pʉ^Q~ Ҭe5xxx<+LFq^~di+I>pPrZ1^05bj2"y$x1(͵Uv[GoP_` hW$1w`{ = ڐ=deE2E3HQVں[&GhVpM"ݜo, fgl$ Qe7"z?L1ږ6GC/@>n%aB'wgue~-[N0# Yma&2T1i䚻 NIs5IoC$\Efkd'ĮͿ ?3Z.1xHe^)tDԁG:<>0+E}hwM!z-q$KPE]Qq3h$t*wCs"V#o+z{1.4?$+8ws})6$4]dKT5(7XW]cm uө*IVFLEͥlaȥcyb-m3}v]+k$MY?żϼ{"~ƣGc\-wz] mUXk9'Mi ɽ%"?1燥^Px玹d-F3ƴ1dpL 6'^>  }fsD_;Մ|k s}pjΝuxDŵ~R>Re:x IW&rLtP3ؼO8԰f,Vba*>ڟ)LCZ, '@x55Sν`kр>s ݯ}SAl) -;w>'"Lޗm]ցaa'J4 @ HD1QJ;%qf1-y%(4\~>kH:v/`bXJ,lKמZ{jn;=9QAP}Vx~'A$-[#f :g 2 wF@jpяoMWEDTq2;&-#gj:¿{b]_97nJq92\btsm|d[Bcs!TskM\^F| `~ "CiD*" l;MXQ링Z-wQ{ B@ @x<"TlneҬh +hrSm= *UN;9+ZCc) XcIfJ:~7](`eM9;)k~}?O[FħCv1dy׍1T{y2op "H>ݔsCY 5kLFD$ $%=W 0zO ;]hFY$,Sb> ^}S>$݁h'54DZ*͋9P6ǘ?Ju1])$>e_ge K<X;8N4v\; (0M7N#ЧL͛Pytkߏ{)$k14f@P=3t2$ّM#a|X2Ccl^c3iГK\>Q70*ͳ4Y  ƣ#E;N}C2zGExp |iH#+&z}Err}rCD`҆sUxx<Soj6ǐdd6z:Dl^GV//H-/`]Ĥh\LA$CH8C@՛7m47V z<5FwZ#) &4z5.+Y VxC~ہu?Ͼ4̈$3?!%DwL!k5*FAнoOA]EQ6b껨Ä(UE7\ׯ4Y{mEz"cFKfCrr}$Rʵe)?a#-#zko0_`jtĴa+_u|\'OydcٚfhE/D^0i(:wDCe;A:L!yl.4=\;\2!>S4p{ Kv+^3F1Lȧ׋%dĘ@4}\ϑzaJ GP7n{ SZ {f24,35 ӽto!I.Y3$SеL6 >,?5tnĞfM<oy<|KKgV0  ZIP3Y_>  X :9l:8t(FׂکAz 4?5g=Gm̪>ntԯ=cɦS̘{V}кlvժƮm+X`#Ip ;n$,BrT^36]C }d?_ l̠z#S&\2gSLw~ˆ7FaP^w1,ӿ ܫJ2Yw ' a4R8&R9 ͎gt 7԰}(0; f"YWuf!ُs; ď/B3 z $źǬs>DN+mKO;lVL9#r殈!\q׸7~<oy<zybH"F< wJ p@}8/'f`qny5$$95zV `V`,iνt?l0nqgFlFk亢)dMQFeܼ " ةvۏh='L=\Ͻ+OAb|$o7O610~dLS38[?-~%ul [z` (U%EZ|/AFX䵂@_4~FʊP9&^}ckq7IVi h44u-wRC(oT߳jpd MSuo9kÐ#zc.^ i4BΤyL hD3Q\7]EoGdH8"̈́bη1)(„3CLA05r;:|* ]2z40Yq s Ղ=t()d}g2GމOxx<g" ]3S3Ch(2$:by/dZ]Jtr_)Un|a$pdB aOwl\׌n40Fg5_A=j {4s5x_o=.D1{=8 Dzt㌖|Fu.@ Dߌҟ&+#_EC{?&329l_?dԒ"lg Ҷ"&HEҬICH!PDͥPu5"H@v*ap>1Tk 5!8ٴ3: KG^nj=#) $p<ݯJљ3Qm[SSG>J΂m:ۡvye%C5ៜ3sG#̮c_ ̭]$ aLUf4 `I&+P7l]1 TrooS-@2R]>Ԃ}^^K ,c8]<[eirs݈Uox<oy<v{'5h` %B("XYX)]@@SnZ2Xtu K_CUï2mgчsF1Z+i}c0(PGfLd%`*:d:2A_/M3S*SDڔlkg|V~jj'жLb/<ν }/bD=t\` 7L?JI単ǂ#dvv H`J[B,&$)e8E<=/13q*JPN6ZuŹ3phG;Z1!b cF!#}AHcT~r'm#yzYXtxzvYx%J!©V^ŝ-qZHhw c >?pX!Hlʶc75ysiz7H6!?~hXC[J%{4X~Ըx<:J̪d7kTrlT+X]^g0<2 S 脠5OvvHsZ[G+s`@\ڨ?=:_3d~h74Fh_A燎yO,3iF?g4GΌB+Êp0VV#HK/ HQ@X>>#z1~~+HeK>:ɁoN__L$dX[1CcڎaT"J,vwƌ/Heےv5'bo'gH\;5`Ed9%:oV"a>Qx5hI3^++bqEDOU'\)u}Z_yvt pMP1tUdMV`L{w!pFEs/>ڀK$31$/,ug/Zl35qCWb*]~[J>݂t tԛf[jh3g# Ӈ[s1nj3@ׇbI\dDVۛ@7<x<1T\܂0d@ZDsX[f-5ɨ64$T qZ`VPHX*UE5P [YJӛO續etMu#67|=燛藍~ܨ^ B '2%k7~JHVހO~0dDEu~9jl;* mӼ)[v^EϡWuKkG #6ʘ #ǦLKU\y yK"a(!מ욳0kTy9c(%ƋjGs&RonFc@*?f0s5+h E&D\0 N D5 m*TUTrZ[\}F?h3I`P35Tnށ @Cjͥ=R ӽ4o[ꐣJO Da ǫ4ԐI4p"mK=MHv ĩ4x?"y`f_^mC!+6QxF^C1t)`, 7x 9`ZɢDYIM>sBkίx< ;*xBhV4؎DWsO#j@|Q{K!+X]K7#vRۇc_ٳ3HHْ$A2Ft`|R g,EoF%΂ck yȅ>o7~l4WdH (zKncubLlүTZWĵWxw=ws  Ҧ(8k!F Й>V)H܏ԳTk¤HK DU   tobZI9CJr/s*g Eb׷=NpL$Fq(ѷRbL ;(M6o>$^׃ #%͌dChzeҹRPwԶ[k"d ^Df1fjk21FMOƮzLoL뉼:L$xkH#v}X9 Kͽ5Ƌ@IV`w}PdXu p Ff]Uz:F#* 9*"*S`5(jr0sǛ >yxx<SD?7>1aZjo pEJo҇ ᜋbx"2hd [5,KaS`KZ.Py6#"(ŀ@D &B:@ ZAF>1W949tZ{Ɓ/.w ݴ۷&=3#ٿ!yn)=!x{v"{x qTEq]J!^ &;O#y~HĠ]4zF`*s713 6} ca3i1P-<x<3 gn8/914܁M F(&Dq#p섾|y8-sh80>u4 jYf%NVYIxQEebn',*3sQBm@Z]va t)a $om88~YL=>1hx^ՄFxaj E\I.D+a-etEnA&`l3t67zHn,׏2wʣ98F4fQ] йyi:AH.P-+%#fM4[WΉ@mZk^sEb dVܜ\rr5+_mL.F x^#5Q]NGBUt?6W7vֶV00R'ylN Nxħb&θf*rG 56V[8er}+ oX^%k_{KEut22Gy<x<)%coE' O'َ`59Nί˧"`)JRpc4 /h؃];{=9#,4",3 A3Yrp głoڌh+jUF`R @?cqTj(A!T3lXn5:yPh24lƎxad-WMU3B;0 ?rίZq4D% $ K@㌆p=eI7П.I]a{Χxx<ǃr>vttd͑ K&ݤ"i<^᪊ϭ@odM.cSo& WC&Y/lau}􊑑EZ[vԿ1i;)B[Z@s@zFPb"ZR&tHN<@3{Q"VJ'u \cM"܄ׁ&6ߘ$<}5iFٕa KCAdI>pU_玢h:cĵAid4Y՗m*Fo>G(XuU]֜x#C Du8K'H/ `gaD,]]2D+K%p Ҧ1k]r^KohFa֎j,A@ Z2s1M@7<xE:C'~Im4@̊ǫT(0}U͑3RÁ0E 6@k(Sd~1{=Nv|D@ I=G'yǶN'kqArs:Ih=Nu5G42O_B1G$l}q%TßFn0(`b5_kr}P=# FF&\oV,h /DMqgp&ÈX;FH1qO)sfB_0U\|-Ԏ}2+[m?}lAEՓՃ0s`יBe)D,{kH Y"F0hbt=z#:C2Fyj8+(jWϤJQmA ptlж玐k]lP=@ ;-Mi M [UZɽ( jW)NDh&@r?rn݆@{%]s+bhM_h3׈rW쁏xx<37 Mtxz5H&Eq*jT`F($ՠ7{911GI #I3 I6RL هflMX?j)gPG:Ni{jgI@L'05аFΠ *rdA.b}(cˑ14(JHDY M}F0!-2yct4Ado<ІQhJ[OiG> O/wp"b{`͜or#i(]0 PȩU,Wfx7< 'BKq12)jec+h7 +Axu4WDz:JJF< d*U`bˀ.-is FDsM0d*JwHTo?XfomLXSF] }{z] &D'gCD0W1C7Tl aax<ڝPF)\II*7WI:ݏTs:oH@$S͉4uJkA?XCE7&0QDMr},+ZҽC8`KePFkLpP=ۦ/TmbDnb~J%u3hLMx I*|cjc5HL QvU's]<1D+5L\P]0D3p>$eJ`p7<x<Ϻ @`VC[ՎuOԣIi& lTK o!*lTS+.0{ 8vd7\^;#@d)^VZGA>\5[M%\Ġc'@'OJ{(A-|`3{2<ԽlEJ7 Kc}*7~F~Gi}菽x !v5]VaNF9a kBA_D )3|z螒O'z BsJn@rs03JP&M7dr||@W2h0u59T@[db_l rf\88@x<ߊ0`EVq۽b3Or]m{uA-&Ȍ m К?3Q ̞N\ @J ӵsmK-4׀SGz@J kRP1ۗn['gF'p|1!#0RX2)B4cW]h{cFyy$8okDg$oi#NEx"{c"_q\N}7\jȞtnR 핸^VD]׷wy$!eYd_}wN̟ (5Ht ,p шD}L /b4E ,l*_fa#i}VW:d"; 8gRr$A>xx<+ }!"#!*UJ6.64o߈5 v HOj>Ft2{V4qQȥCp8tz+ @R @>9 vcѱ.//Bl>̐D!t4[+M(Pi?a*2~f~i`f>eF asE#TE8cPE8bA?B n<(é6F!ԡE.\ Zɵ[~͟ae[N.#f 1R_G#y (9މdq@uö39J3(;l=sW KTJ綪>_ aJ)*^Cp6OJʮgj)Ș{zzؑW>;|#ayĬ`XQr $GQMA򾨠ݱGC8&1CK> ;A_hQTVsE3r6aGE~#}BE䢖:z2PQh}#y҈)~ @x<&Zut~Vꙅ) 2"jB!H\8d§<J`I^lCA2ruh6 avn{{GF{ PD: 84) ) u 5LܷT3 B3Q䲙#hLxX F_6z=]D7 ݡ-Y#}݀ %q˱FX>DuGA؁7@(ْWf? ?'25^Lgmk gW3g`PDOXKL3Gsm~W{K:Z'N>.)ܔH!E ԿL-q^玟4z&wN4*I6 xY-6UWӿ %l'BE:+6y3y&kz6]dr󧸯v'EX,RW@7<xAc%i % Őt&PPAk1::W_-`'n71p9oJ$tf+F`hg  e͞NAw Z-&i :ֆ늿u#+*iѽ󵄱(sݔx9DȾy8ZNް}GxuF etQy<)̩"^*IEuTw HzL44^@Wɧ TY+-"SD DPe7Ame lK#9lv"F€srNJ\5#XH38_jQ0( ,VOTojÒYq#p#%$KirFJ"K^/k~]W~NΎc H#\WtˠJ`aB$8l?"|u60yemK ͟seůp$|s ^xx<3yx1mlLB0L׎r gy$Cm>0JE%PG^;xU$f:01-_FOchN oiPAgPs1ȬΖR M ع " zc$, y/KfE3ur\ YdUHʍgq9;4׫1o\  .4]J&`vmy~=GAs{meE?7F{֦%DZ\j5:4kVO,+#[\na D"§xNrL}HfqPN\(oaQWZ>x<H.ݸ<9 }dt!5~9lә@F`Z I8"į:@ԒK A;#jz<H+aNFʏ~ I8 P4zr&4M62RI#8DaWr5;o$5FrS !]m10s֒qb0Lv@=3tR_iGaӶl8jtq[|`c R@P- w"^|[\DP.VșP. (xԎ@M@ n-ҕȤҨZrS!a_rV^Va.ڗmpșg)vCD85Ν+mzHG+2#D;]l f $KM|$4hұ4`<54^k~݀""#h*hHFtӾF.rC ྷpAS1*ݿǍ_֧k/ G·m7<oy< wux:G,timVG: eM /"!I$\Kǐ\<9֤Gp*`zsQAʦXZ0*՞TAD&ki63y°qjs3{:nu2DAH@]s_|ڃjC=`R`pn~ }g]bU'oC.ьxag0oHi44RҘ"r}%jt 7BmVfǡpkD=sL&6w[Eno#8H38? }`7Dj;%IzN.cPj1I㠒}oJ)z1#ƒ7rn,"tC֑ [E%V>B$zjxZjMQ+ *$E fŦSV l",((M0bQ4IȀXR!x<g=FaPOEÇaysm? K!+hF8- DmaVLlPBj53,fAV*[OqėAlɩ5&PbTj +}|k@3MQc蕤\&SGZm}q&t52t}лQ]݋PZ:c6jCgpzKssK3b4"z%1!3R.1PF7LltUxQ?K׌Aõ|#!E)aZ$Kti.$ΫeB[^p@X1NM@Ҷ}`nb#͍7s`;/aHE5F6H̵c;gԉIdz<\=jΙ% &G9 ?Yױi_/X~X\^k!m p1i3J*7E@7dT ӭOmC_ uٞ*@@7<xgjgʦնÈPэEK##4"p鉍Tz=lx@=FPrx4bOے]RF*d %(21^w"5ɟΫploKb=AoA2WAGv"D z^X~9|6m #bDOo{a?`H?[>?;>NjtzxuڙlN cH{2>ٙBr-TrKs 9[GMvrߓH 4`yY2kߜG<3_?FԠSz<TVO=CcaX$:Fp u ZJ=![h7נ@m$cEMKUG@VrEj똡ʈm+\/}Q4~dMkAߪ|1BBrzͫ?/ɛ@!xQD((IL$dvg݁v*tVP ;a6Uu>zxk øHf8݇e4'Xeq<Z}0[|ن;ܕf|-|4BߔN^Jg Q9DKYݻ Lg?= -E< Vk^ IgHyHBʨkJH64u?BN9{}}&W%'-U-Y-.|TZP@JE2\'P^N&RbeETATmADUE2d 0 0^8<]H1\E~uuns3u"0]d ֿ|t[pC!1߂dPH@@oPd;'@%ҭ1ͣ/|d:WoP CT#* E D8@Zdn 4nּ )a\H& det?!?/b6%(Br:F oU+_,PKy fՋ($rSw5H7PsUXrGcsE'^i ̟t5=IDlE$F<#*F]:)x~SsX[7q9*^YrfK2'*yB_K).Ix:KMt6"HqDT?`֏ 0d0 01X B b펬O[ʡ3$K9LLEp?&W {#_ž{fM-w޷g03 &RD1DNqUq'q9%v]YrMd\rےH !A2}}OS}: ,Xͳ}B0t CG{m[J/xԷ_*6A 1W# 9쩩-`5ixYl6jǠHvQJ3?z)=&y"gO?3̽M"Ap5+]FbˬB}MAy=ρKIK꫿Nvgsڑ9$B#${lIw9 |@!y~>|Dž +Ң&,LcX$Zy8'O0v "2u$PgM}m,N'{5)d1;/bQИI(ܵ'ǯwPOܽDTޟP<ĵ@?s3?kYd2Yd2L&@u- MOFՀ"Z%V [4eitМK2hwZPQ !]_K:Gk#+оA{fZ/ 7hO`n٭m`oZ;c6 Y)9}pi*\!n->bsD)L0'<7J"FBH|8’}S /wO?!L歔ŻsF8wqķ鮥&kfa3Eeǂ]~S 0`ߥF:mGGPQ+um0Q ȃoAZKZ/؋c_9Q"J:Dq9{GD"B!%̓(QHRJ3@\g @u&MevF+2nr9E B]\ 4b$hJ A a\L&L&d2dk MS<& VX-P.* vy=YZ@Ad]^bǘKOo k#_R\ic<}sAW+C4`-BexhjX =0N4`v7v1k IckB W^gqž~4C|d2> =݇"S#I$M(h;Bu1h):٦K4OK&Vԕ>ECVp,R'_Kg Hed[O'GTEC<4" Dw6;&'%)+~A$q"?9gtL(ҰpT-1@ a"zNvFbd7qs粄]qXX8?ޖPp!iA)\WO;ԝn.d(d2k.FC)umB5/Ui|B>vՄP[%0A}5xzsiNScs}_z<џƞ^X^Xpv`63[:~/ A hcU62nYj¢?o>`4 &^drT ' EX1|[Q#bE@ѧ<=D$w>O}s5>h'ߖFt q>9?qep?nfѢpx5OC 3pH|;%:a=A\cbR<<^٤Ww u ,B\r YQ/dIXTQ;#sxכqa+EskQ@8u"P4Obz vSz' @L& @L&d^h COPB\5/}2 =U\îH 4TxUbV̭x|W}ҁ`'\;Pn=C4RśFS0c@LGJ=GۇҢumedG7G'9vh'yAc n?L-/Lf  6[hAPc(rͲn/Q_Zow>H nL4D"K8P.{@L+0@e|w 墉wӨ842'pWRDFBQR>oO:ŗ=tR.ȵ= '؜6s^c /d#;I (lځ'I*HPw*A(d(d2$ɕ~ōSG%;b8M#گW 3} A,؈+#Z= N¨4lN]? Ǐ\P~e[P|N4 إo2_XZ%K{ /~xwIR3dŧ(GpFD¤/ 7sN} ?-]ޠI2P E祁W8Xܫ܂2/I~2-mU^ӇO#K#'3BF(Abu_F3ƯSI Yb7r>a?IK:zUT܉TъLl)O0y%4!D8@7O4g|#"PRh@L& @L&d^/hc(} }P a)樰rFʪg"_[H{G9tp#z #7.!j"&וBgs4,aFr;7`~+1`@FP~qsm /E#2ۤ)*KA'nذl) }M /|(H3~P?L[Z!$Y0ґ!cOqq9~ޥi/?&|XL\ DuzȏC$"<$U{ ES{I)xP"L$F6rhh.(+(_ߗ\92A:\=~s]P}/ # C #h\ +#x;c4P&P&d2QON1XN LqJiϝ8'KG:\{9tj eՃ?Fmq xe5ȨoP\a*XWi+G4s{;Hq%@X!"ʁğq'w20OVR V2L2L&ɼPWU-;6mY meGy2_<ԊG"P?HH `P'Π@"{۝ ?n7]-ob/a].߿l&[;۲3FJѳzx~7zIYW7D&0@[G%HAqx7LNߏ+~X/5`rZ~@ BC'im—w4%sa2rb}Iq- CL|!'X#{E4`J*ON"'tHt xx8 @dd2Lu['FwJ؅;]Sdl).P<TAJAe @k[(˩h~!j+Nz "F\ ƀJ<꼀@";Ae v!Hv^* +H_ܪ[I(-8;HyˀF&VBBg9z$pvf1s~ pL7m&?I,jL̅[f E!?S^oCW ;?̤ R-[©o>_8€VHE! WϏ_cqvc# %ۄ(X|PE ĜISBP? :-"uęs?3NR?.'Q 'IRpd2Yd2L&:@.6[ v"BYoe~,ӯA;Pk"';9G 9 Wn5zGEȴP|myyHK )jECأ=ZnnDj^:ʊ b gW֛>x'!ńųn"M|U` L%\7Mc9 qHLu?Xz~w (ʈΧ;:BKKM- ᘌcLpEL'0/XY$WN4> N"go?.PVsm"^LTQ "NR, B.!h]/.xs"{"6sQ=g=7N$J @dn($@:DRRDPdd2L^Y~S7(PVѸ9~} O: dh)E.4 F>-6l=yPmݕ.>ѓ_u| a4z=G@ 707&ecew@:˝W OX}0BEk0b EbJ"C=BqUK'fd2V H]p(^)(}'wC9> #B6{AQcH(Hm;tr/t r E\GA:ݿ:L7,J'~L/'&!0Q!T'lkED$$&jID=uϕɓ?$I\{tbP@23ǭ ' 2!#"̆9x"bJ"᫩BDJJ{Osk2L2L&ɼPcϜP :5MS߼p`gC?wSA4_ޢ(0*ky=BPYJ y8ra0cP s d\cZѧEp0ͨ*zG]GztMlKoiEWqէj"FQľĵ=~Np%pw~x!3̷F1]W'A6bmT;N~ v;o};/4BL(u÷A'~{G;n,}N4tTEB|Y5t$BI2XJ-$D`ux#I l!M87~i7Rfҡ&ID++( 3BE GpD~\f;TI?1QIv} ;2L2L&ɼ>P˫N* (ٴlm9Ĺ gz}VeHE٩)?2@a_0y txȇ><>Uoy#NŞI 2ȝ:4ӟtvf'V\B谳eqUP-^ׯplX>3wR&B EJň jDq(9g)rL&@`2K1?t>nL6?E{iVH$^KȬMq/\AY( d-3J(i[9yq)F-$ߵc`E{| .y$#Mu}~n$Fyl҈ bDk*Cs8uCEqEH;~4 @L& @L&d^ȅ~>$VbZ6N}0"@.֐ahS*:o+[ ˇ?Ƿ v`ogZN{PŬ5 mF7@sn>OW`gsڥT=Mv67YXޣt210w:W&YYl ^O :i`?L^R,M(~#"s((tek[s~]tԻt3%?(Lױ#ҭ;BOc?T2|x\*RC_[#ќ8q玍Z1J<=Mcw<1X+TeR ~wS6E Gnvx7w/(j3R㉴un8zmQ֯Ah,x^ոk7TXxch8!|_|>\CPiFK};G$/w"qNhp?dd2L3rgC;}Zx*{s vv;z#,rȰs;ܺf%4o_j7 Ad,,. oͰnNZd"&SgmxM|m`]~b][V ombBG) 8=z7!(wdz'#d2) ټcFmT);ÀL6~b-1 yyEwDF8yOlHW~};ܝsH h[cb_W5V e0Tm7ZUō1&s\Ui&%Ua1ƶ~UuhM1յISP'oD۲WMk2ƺ9UAX1P‘ "bSZpN' qpj!"z^`߄Ynn$OYNx% @L& @L&dAׯbL&{;^`doGpp',~6S'}C E0|@ :=D 3AX7  sFnZ x~dd4O<3oMmuumm100ȠgKrh]=gVx\[4wd2|C Q}.A.4|dC8 'JEpΠK'"ǎ@L& @L&dQhQUk(~r]Ѩ`4(vJS3/9 sXϯQ|eu*Z2yaN7 7 XKUA!9x`{mٶeu)syyy5"ބ9| uQ׏G 4Q)kX "` W |+L^ߚkXF!*V6F9+{'DvElF]ȷ&3LfHED Y_+3$4I_[|9{\BaGŢ%-g?2'͐vIPϤ11sB S7#ޡdQЊ%u-'%Ft%T7^(U5S6n___(PiKڶ;SPí;)s^J*$ IJ !{91$X3G=K(&pq^|; @L& @L&dM O~1(~sرM&#a<FC'Tpŕ) v8,,qP/ĬAh ]*-\Xu[RwE>Hq ^Lbp='aVyi8np ":{X"\R{;?b \s5 x9b4`j*ۧ-A]q~L&)D>2K  Io0 D ; ĕ0kka@ ĤP1B/n8 s9 FPzbg돿ꙣ;cNM+<>5BciEFi)GV9:eE+Յ}º.-­]ޤKqBXD#ŜƓb?;,EP5aK!0h 4)h`!}0Oy6s u5-X\[;gLct!wn^~?ƙL&sza08@E0GYKu@$n5~4v͗lA uu51]oiKy&&ĝI'ChROEAI"1dR84kD(L3KvtJ,.^ٴu# ۢ'RjR۾$P͋?:dP&P&d2{C^ܸcEfмg&O@{;aC; -BaqXX䠘1gnQ<C46RG{3.R:c3O"t`9.˃V)^npH( >yTSh@sۋ?rKlm_hXXrn1w&o\lp5&Id2\h@$ rDrJwt%P!t^  7_7D?<ɐnxrzECZco('8Gj}w^hGi,U 7=DN%(s2&i.k7ߟ0׏ ׶K gdںX0߷,-4IW#vmI2~l,PP?|# il AVK?"ɼ@~S@U:.ŪqblV^iOÖY L-\D$Epp 㱴[L Mcn5m 1|ۿQ rbPxD"~>֞Ĝ>1/7LJ" oԀ'vs}P&yҏ滐d2L&މV XT~U=lԵ0 W.nh' 3D @(g~> st]A"A1:AmD{z ɴQF a kN2ģo0`_Ğ[޷=5ۛq>-/~_/GÇFPyX Bx]ɕL&9 rW Ca. E9a\]\4zxg{\U0*6+kκ.'%:"qp߳{KDcy~H~9`4+X74sQzqD,U~B|*N %}"NsMN%M$|QȰ7(V z\mBYYphyBU?呈)um8.@pGP_U4}j?]Ǡ߂_uO( @LMa L&db9<;&Z8HQ~˺ @@n``8xEzCG>n1bT**DOS|ysyO4HOgEO<2(zh+20DA Tym`ؤ"Շ<`lyheDxݩ'p&` =Aivj׿!߼1,_ϛQ "BH phYKV1d2gǯt =AD]@3u)1a.!kХŬJ4دϘ+]^9}/=,TحI9Z[LjCUceҔTEmǦdy8?aqβ0_3ӸHǸ2A2LH" GP0k$!yv+vE`߁e-ie٧, F`:oqʐK]<&%&$hkj |q:&! Z-4}"]BGҹ|]d(d2̽IpDUz|2η%Ucr4MC wK 9PłŵuKN*8(=xzrc68Rvb_I7meXvGL~ `G5ŭۇD(*Fn6oׯ7ns?ՠ(3LU/uLKP %9aq;Z;`Z?Qc.pu7wl/[j>p,8tavSϟX ׇqs%w6+*@nJ4 PN{Ś1>Ęvh>-zCEJO7+L IAi̝7Z !<} tD0~_ VWŹM]]\sM|.m0D92L&9s3$ `m2|X !,-L56wVZߞCR;ǽNk6CP6M?(TU|/ׁሄ|3tUhl%"?9\&L&d2o.pXE\;z9JsÞ0+ۮ zaN^+AP ~գ fȨAṋVjKvj4V+ssK}| ܾzJG0^x2rcd ~cqi0X%[ /~0ؓ0kܶO}+8n|ܥX[%/\`wP`q)QmzU6pАyK@\H瑉 *32C!1Mx8dJ=lg뱹GDю*m:8!ݣ*x0~t/8GitV MSRP!|녹ğ,e2,e2L&y0(G9'S橷j$MHo#a22gкJƃo{S<<3N8쌰p]Vpx=="0aZd܀kjX,ѥ|+Kj{ S?"~Õ Mk)~9 7PŤ9;Ͻ\Sy}x~x2ZnUL0j@ݒ^`셣ye%$ Prc,ʹ GO15X ]m#?e|%,km^ek oGP ^{w~ 7v!/"Fp:#jI0oL&O /8aTQ'ܼaf DOfxn]Pљu~׀|T.߹sIB*!گ6} n amk/b0.)Ҩh-(MӖ"JYX8'w) 1GIThc|=BY? K 6)M­iڕo'!-iwP%ַ*ѶA' x&UvZ'^?$T]PVmqxA+9\&P&d27 =BĠxϬ/l5j7\V3>Pݳ d4[ 6a4۩8w⫁ A~+IGNJ~'P !0m)>H(u@:#qu*8 v6_l7Y9[h+mHf 1cM`L& @Й"CćCyE@ܽ/g|fBPGdrc#^C뿹x? +/1^~LE#u=py#_;x ZyU- #i.[ʦ}x};Te4XB R<&ᦉ:I őfqdknT$]G3!+́ckK\@ĻT_,Gc1$ܟWI B) BDfxd2Yd2L&ư C(QšD-L@/qSxT4-U&߻ ]zn,N)*앜}(KG9~j @U +9\{~8&3m h 0;<~!nYv7o1??5l`gc9/fUUO. yK<@ ^Q|88@-n2ډd2!<]!F<;]EE";R\r $ާ0 U_n:0Be41o>wQ^4Z ah8 V;L󁋗5\_{sѤFM$DF8s| gP R 4!r'7(.!6'`/JG&~Z>ʜ'ʈo1ߟB/_I> h"#"9$^IP&?w!d2o-=̳q@R4u,=^>E/GzakPongNPUB t*P_v+ȂuS!(Z3-ChЭw zJqLm 3o({7my"-yN> ? j<GC- ?/L& @#]%ǣ捋 9AH8#n(:D> ۼ ?s÷w;"* d窵/rsc)Lhl0Ƕx![F N,N'$J JAD&L."ᤉE?>_]$D9nܕ%E#(rO.0׀J(Va<6gW`CGz}V8~C# m rV|k0؃f6ݶ 1Ax`ON~۲v6U @h{cť|cn˯5 FLA?V: Ճ<8"[0d2'p h 8B(cf 9:F?b-~ ^ȋs O CReŗ^x"rRڗZB7[.xh0\,11 4*8"Sb]<< }lՓB$!`E$_'R.,^1/i``Ķۤ(L#< .a ǓYbOW'egS{mUe"" u bsvm p)VzJW7a: 7m`gn]a{re |oK[vh"Ulk," -*]R<0Z{Zc@4yH*bD0Q2d2@A-^ُm@jp @@\)n]TVğ7.ͼsO/6yʡ6\]kA1biqfw6 &~n-&9טdE JO!$=.2m8wr=ySGhln.P[m ]¯|=FLƱ I_phPJqT?L&d2L&zp"LAgm GJ30w~ <@^'J>;=(|+BP sh8~_ D 6+R ğN(8~ ?\Mbw~/ .ʕۏU=}se8udw>|8H{DnΫw_pD gArI⺢y$=I_'$΃D!ڝ>_Q}D: eQZP O>rvP'x.E\t8_w#;2Ld2L5zXӠ)P~`o813[ձWptYA0-f@s BX\W+i)P ڑpUz}7UO5@(:^Ü=>-Iw*CNşT oӟm-dWVƺ7"3=4=c DDhQ:r*/n:g)|k@W_$R Riy:a88#t0[)5g?P (O@.^OݳؿlOz\j,z{yƍ>hyKjʹ7! Iu$y~s!%Je Y*/8֍n8BQ-(4:/EquV]6u`uCFC w\BGizm!<~8rZ=0ĸR:;خ;qFRXcIAh޾|:@B@&JPMx* L&: H\ЅFeo 5 OG |XqN13Z^9WX-ԅP |yyh!rǏ!R !p$IȽr&^|@Ax$k:OPȈCr٪Kav" m-ү 5_4_Yd2Yd2L&Zp8 j+]͋>^!/+h;U )Tw k<>yI{;u+mlqqNԂU#@xm𹾥%vԍ)@,wA({Po~ݦz2-fZ`<7[|;!s_3\%m{{7_.Q mKDTǏ|}!5"A(8AԔ >Њ8:6&d2F!<躀5h \1O<! 3Jx"O}LRDQʢ™p%vMImx%My#3/Cxnq$3 lFE<=*~n-q¤V>UZ *Jjiać}~e:_#B48d2Yd2L&e8AD:P D !zUw MSH-A-N,2oѕqsT X -Dt ($Ĥp\ΤXz=$qLWuLy+z/=H.t\QnLAVVG'/ӯw6.=Q y @ _L& @L&d *', 604h#"(ڝ@\< P|qhsT ;vl ۿ>Tl 47Cx?93\BaFD؀r\շw⏀)f.2ȕg 7XLU#')4.]@5|(}.ԕ` l{Y&6BN7O&W7¼B ȏ-E;׿vƹ im('os~.Zce+l aXu&kJ 9FLO}ºMB׏@1ų#tkg"z-,EYٚ|tzM @ "z#|6؅/uմ?5[8yd2: O (t1.EEH\0^ B]@[?߼ {sEPB;wxd='HӤ%.uCI"7bJΦəDb$|ݓrȽO{_6vŪP0r_> oj-PDro_L&;2L&ɼyGx磀D A^Ӹn@L[N ]\@@-ƀ4!{X-x/Q@! XuyTDo#gvr9>P& H` ֗ƿv1='ͱ<#*ݩE`D_# we>uB#$ ۧ酓D̝X" E,\JL.dęL2L&ɼ9"{Q,x2\CmXx(W@\^jkceGᅳ %֊l\: AsgE̵1H\uP-p>o-%,`z4^VUDX_-c"l\T `|nyqD J4fR[J&7N`JKѲ1 m/ IPM!jT埨 8Uc?nDE\ݞ7aTݝ/#zvgOij} un@-~⏞b2C[.P&d2Ϣi@4KB.tQEb!Cq@i+]5Qex@ &S/Ks{w;(8o{[P[߼ AµCI Gf%d2ZLFMG/#`\)YZ O*UcQz ʘk)J)ԍ;:<$z_ETU'%$HJR``+2ɼ> @!ÄyP c>|8MܹcVyv}NwIq -6<>%IMZJPInK~&b%>b+%uh uqOrVsU7ԧKܠԏ &d:%/. [.>,d2L&s?TVx@h7tCZ='%J6hUec#(6ε)f ޲lPX 8A e ACߔ.Ȯl\ O+'/ phDGm7ck/0ԒIQPtjS*."6V8fZ s8tLjB^mH ld27PhP1(OP?A܊ѹwQZE+{t+-Pt : a#&ƃ` `.VopHkFukl_dnC6Tk%Vx M ˃@gZAK AS*n_L _49)? 7!+.<ˤڄBln &1$4s'miAD'> /, ǘ&fv:NqD>euw/GK;qB7 ?):by"` x:e2&G>g!d2냠 C W"\:9ȍ[5 6"|~Jٳ{ݵ0i RvCaS0nqMqx_mI@B],a@ S[wְy . c|O€"K 5T_WLA{K6\ߤ۫*.T]6&]@8+ E c%[vx xD\Х嘀 "ͲG.>U2 (y 7\/u"Eѥ 3S)n f8"B2p5.XDLƛIzwFS6MDąs u 񈤠㥬 18wcxߏt"3ԏGuߧb~!e2.&OA&d2T4SՄI<cj'yp[(R,wlmY)u=L޷{W+%X鸱 xFEO7m!Cn]U8wzY "y `©as`:eEP~|M`w/v"}b>vEQD&ugWUcc1EMo,̵Hz!vƣwU#Xbd27,[_G7/ NAߐ0E M a?GP6:t1V7s H_% a Kx|"s^O(~4 wCxLƯHL^br?0<ɵ㧹B6şL&L&d%mTGmMwm"DtմR;#0uK} xR67Ū-TUܳoVa:f4GL>{K%(^X.^xq,NLS*Ja{vϙSp򅩠bϷ}\1  O^Vd~SE[V<0FDau|ϡmqŽ6@dT<}fxE M|QN(|)>{!tuT|?A@_LD~Ss$71K=An ?,p@D-P-LЗXP$R: i1s !@ ҈pɇBWZTMsGlA(qB0MMGwps) ZA /L&ce2L&sm0wDQ|K)ު`*Wm61^1Rc4DQ[FÂLݿ Jng/{by_sr@M$Ů޳.\nd d0#}nP4xlWޣz21P3\pKtjV[)K78= H,sNƽ*1&`Eu(]@|f2Axp AqO[q(1m)?.Oa_D\"K\GB+-I1 җ?b~[A6$Mpe_( >g2(d2k˲ Tg1DЪFbą"߇G ;cM |ܪ~aqQw:eEU;p*Jcwcn~C-1 bcQ?H`שuU˔=˰8>31 |pGsa95xi@bKU>7g_3nԡ孢UZ-KkKgWvQTő.m?!+ @BpE׏cPo?KDJ,(#`+8\@>-c?lr0r x"X(!`}(88@0%!/-i$n> s6;y15"@E1M&y"7p匱7Ŋ |'K[*d L&dXZ[; 8*rS C185Ƭ`l3*5Okp`9yZVT^tz5ݞݮ)ZPs'WW%"u]/ؿz 5ܹ9q/D}B4tnTZx'}DͯL&s?ŵ? -xg`.T P=xx&*,gBA/c]9<_""֥a `#/IY }L ڐȉ^cx#~D\X\p|? qIinV3J6Cfd2_ eL&dvH ,rBg?i/R\K# o)䅠A}yfcUUUiT ]][`bOe\bw-0} On V?<"Z0Zsr5v'mKA&C{5hM".υ snY#e:cDa>lm%PCqÂ"P (O>W=Ƃ>Aʼn1^ Xve%?LVD\ 0GxTpyT60/L&s 8q c܊,К)>y xhʔUK''u&RBC,N'±me4*c,IDt)RMbMB f#Q+rΦ5qIsݠ is@瀿 s7 8 /d2)d2L 1z'_U<C I#4ncxH귴q @ȓ-o]CwVC 0[i޵o4וOm7` ( 0n+J kpE8@@nЭ:|νm(K( (Zy(\P`-s#ZA7?yܚc9W?WPkboC+P)".\~Dk`OcKXAyeg?;oxoD$ hTi`X4PK> d2WS\x[Hb) '3 E2L8~8#|{Upf‡fºx<%6gaK?q'h/)Ԃr;'p'm{E2Ld2L@d HK/ܦ4\&%~L)y?( uğϨ9_"V޹w`Qpj_-НcHaWڌʼnM\D*ŏ ?k6+ڿwHؕO*HvCeY1>fOud`sc̹j?noo_g pvǀ=+5`kZ(,;nsf{=1Tڒ6+Ef_hҋB ܅挺]G(CT_ޙL0.naƃ^Ɣ" ([hB}f,O#nmE qθr:)r󍶒!5^$.$\抠? ˛qFrgmG@hL&xd2Yd2L@d82Fܞ MaȻR "B f!o;䙍E*-b-w\2E| ~o]ku+8? EIꇗwS~RRZgU~åMޘ捁V{*:ӴSPO`;ε^(Zb9A^MŞcd\hdYQc{#._U/Xͷq"U!E (^ϟ>U@hY#z+nC$j?WڑKDqG"-;/G3.~+/UiMS^#xډ@hn .⢎.b2)cQe69bs7BA$1/6!ht"A rB`_,aW31s \L&P&d2X-6;k*b sfF|G '/7R'5nVAS%P pX#V[ ɰVylPCQ*U!(@]l37)8,7(Sԧz- PuM1HPQA7B~; PU ]䕀2ƂY_kd \VȺ["W,=P>y=-Tc8wBUs;( VTl @ۛ~EDUt*i m\^W!h$%x0^?K;@u0/L& %ڽ7MORL ࿰]_`FNRAM(FxQBOD,MXшUF ,I*FO~iˡpl 4Gξbbu6BN}`O8j'%d#ȳd2G~`#bLlFD틈qA>R.LBфx64q9Hs67qIFqD7v/)qb1E@G [%dd2̵b87F]:)qM@X!~\Cq@Q#riR-xl&cd$NqY uF,X @+w{ǼܧkV "ݕG|@ ǧ)< /nf}yu0~Ό y 1"Sޣ+m99p!JZ1 ԕelO\MWִ:JV'i#⟟\ecؓ<G_ÝCAaoG/&D8 a?^8DZ8X 1zn@LJ|x8[syff3T߫!@)QYw5c?5-lܝ'&Db8D%0&ݟ'.PIpP:FO|$9V8''IDAB ~`Gڂ0h7{~ x1U2L(KL&d^#&(4\L G !W #PK0܏k-ic]?"Hcΐ=[ ĕMk ܍0 XZq;v7/R~<T)^1Jqr]iڸ]isnc Dzㅥ#. YW9=xuj#[9@ @PCu{WmUSi'iX: na _ޔ/P^^Yq>߃IG_.vXGqǕX.4^ 4C~~g2|l+ pP0%ބXe=;BwfiqDݞ֧qwm +&2qcJ\Ј+0|ݥy!.h$Q-#-/yM D?WEsm9L&@L&\ h ֬q†"^HfZO,|l;R.s3hX5Th_2)롇سV@,y'/UE_EGk{_I06 (b aVsj0Ύix.|\Gsזȋ?"3åkϟW+SoݹYMdS/WϪs'hب?*4O3q=ՏT5r#^o7e2̵ o~PG Pv~rY8?ަD&aӬ؄` ˕H+N>aYDzhRVDyٓ Y\UzO!#Y2L(d2LDVP@ʚqu*S|}ܥ;~$b 3,eT 7p꬟z`ˆh#^NXb1PP\Z7[ųK{a~Hɷz^w⹍6 (e~٩..'A;mL󴧛]]iJeWv0F. >CF(_/~] S랖osɋ@7nkCRwCEg..~A%L"!"a*17.f赑1<^Qz`0d2Wsd P: X{iB#m9'&*|FI>&%D;x5̑`~ldN51a+SJ{@ @wK&d(d2+CX9j;즨kԨOlqZ(ш'xP-AAQ|I.Qh`1̵&mDQbRgP[xB[⭀j*m>-it{SR+u`䐳wOֵ@>#hS1?﹐m3x_;2 jǝ#r9E&R\ﲊm&AS Y*|yl )I8d"YLwE'tzSWh ]C_-[ѕwv8߄tg?M*\ .4 xso B͵eQDg<Ďh2ZPh ㅹ`>׋ TK8X` ~* ?#F>kwU@1Dq#f&+Ll$ɐFq8܆lyX!c?@"XFv{6GT QЁolukvGY " yHv I.%8|(C{1;IϬAr!X5׋˩A"' zyp'?$H 7Q1;zLv[47) 5i6708?>OTfGr(7" P~TTTT@rt:B&lxP,å{|2遵*E9|˄}JC@<c2c- Dzr'sO6"+#z8 | `cumPEEEEE8D'@P@A1D&ko?tOYo_ǑCׇG.'dAQ"&3&Er!(9D%A=(\;bHR&t={vz%l!7 /1ty{-σ^3(r VmJO=kׯHfBR(cH2GIf:(XGr(ּq;҆@Cnɓr9+/R2riW[z 8  iDΫYA0 XMfd- qWOP04h`w11dP_Cy![ţ|_47)w<&?U9^5Ȫ/M0h]Z*****TQQQQQSK h]9q"I0[O4#iGp~~ DX E>oPzaJjM~UE\?5Tr8|#mz Oþp$Įx" .mfB(67{[{1֟X[pܠd?'}rǕHGRR$ Ȕ&k f1=Scď{~#aH`6e_"])'+ k?PEEEERgWG*x!T E" VV1J _LHACA/S",/6cx-OUdo]Z*****TQQQQQ1@db7ڃ8D6rědRD WFyXy0jjS爂 ށ0IN[ZgFKi$"qf`>;0Ҝ $c*lS蕢S{^: #7:dno̔"=0AO-zr=/p`:\ۛ vѿO#xՎuK4NHAi5|e?")b4p蔓"S(y؜j%Z!m}M_Z?\^e:Yp****P4\Zhf@X^ƇŝKtFpS8zH2!<)qbS)յ@_HPGA3}d )[dŅō$Jƫ*7sn6]ס,yfŅjdW*5 T+tQ.$ef,lk֦^PLXM d@UA=\| cAp#K ٢SdG(G#p`{[n] W`usH^3M"./™ki#%IC\;l#"&,K,#j8kвF-eZ.12xy]')˭$CAzTQQQ} ͢I:.> <A)!G LCPO)R/G*\#CѸ~J*~LH8+. 씸/~9| H%sCSPQQQQFC( GH Y=s&%rfi Q.c FH !"O .vXV.p|YDN.7P0%xY$5p0Ic$ؑ3ej"! v'v\3 rkmBGGA/:Ba'ywv .|!{,. 2hwFϙ瞡iCfO=Bـd"McfA$`J<{-+,׋ X3v.͟F7:XAAmDdrՃDEEE_DR>1l24&̩`J4V&Rt>dr1˳%FsҸ:gp#T@gGUUTTTT I X #>"( L@f;hw=vmxV*,t_3GEALVaYX:apPi !1B8{zPAyy8 \>k #}4F$?Fdx3Ag4mO;ilmP8\捨k\@-usy 6y7#dax%UwD݀ȺGɛeTZWTTTGiʟO ʫ>|m지$ԕTHd?#=|)y5ط}h\/^^ϻsn$@iLQ'uﲢ@_0H% {2go!GFp1$BE3=UZNrd&`זӗE<!C}\Z'i8pHE%-X8gk~y8<<^ͥƓnH)Mg>D츶2M;G-S5"&f@0 Ψ igĄˮIⱺ ތbqzC1C$B.8,y#DKK a~^}\ !)N\l:-YpXBT0FH.ޕ#0+k\_~LQ\"eODʹk|ƛQu}PEEEE;D$@94&<" ^dmZ# "X^ QSh>#JV>CO@3syv .WK't9Cf4M4=Ϟ㍏1H BGpk ylnpEx)8\8 ׯll6HwD &'_T?LLgf2QMu63k|(41厢xDbU:,">"s9W^Θ2 Y=[PCFƒj>n >$(ɯbheCר#>j)(wJU (eq ~v_J ;;ցi& {Ai[uyPEEEE3R:p?I,eYϙFHȇo_63a y<6c-q\IxY bv(fA%Ʌlo̽%!J;i(:N펼a#&.3 DP`:\:?'iXǯLi[~n-^R@s׹rRG;1o$kay1ɜLKI"A+odH|2SpCܠXHqdi[gа|~X3#)pJHk檤\) 0J7-(X4"/kGy Jc0#jb*ߗ].U C= (qC @_ZͺTTTTTIH.`j'#ZO>BI6caNoÈ##xUAbs6]3*kGPuѩZwkx(WLe5m4mOds`dO\jG>f:ͽ딧}f(l'E܎)b1lmn7ϬEZZlՐșKD"tDq& sw|$PG ()p >rܯWjJnr=ˬ ii@74S6U9A<$3"K7&8~y&%¥skr;rO:G"<[ ԉ ]2 gSU똪+fR./7[0"̠̝ 0dzQzirP%)8čyO@X:$?1q@HZXZ#;dѠ=)86""⾾o?XCvaYGjn,#rTPEEEE%*****>ߐQ# vAձjċUeLȸ/!Г4wěP L9T-tdYkK e?z($,\[@PF|{v NjϮgd21@$ ls"!2:Yӣ&Ca /QЂu+lqJ>Fɲfhڲ ;2ƽGl^A 'Ӕ=z`A|4r FCoVOQ"\fĄ.-ޟN"i-ׂRdNAE 6"ΑHn с~@ܸf⬯7r?Ğ+umxeOY byo Qr@w)r#_MY)l6T#6<61U-#L~2?ƛzrydhEn0~Hlo5lockx˛Fw6&}+ݎS,t pӰ>(6`c V [D䇵pcL,-wL!ӳ3fV 358g^q2G/sHb#uyOk=L#/,zc!K;y"H0.GB^byU^% گ#hꫨ|~?p6ڃK l{xSuxʈɔ> iL,w,-ϙ.L:jI׾w?ra//K:FhJ}Dyaϟ`dc GCTU{Am|Vj`le^ؚm}u`~ VTT|@׿ w:wG~ e{# {/X =bahnrv^kdQyN ۱6OO L]PA]?*PU@x"'#?lYڑ7uYE"al6^$7^7iYoXōޕvsIb63[ܬϾGMGit c|& I&+oO'zDb9!d#>pbD "n]7vbO G ws/ȇGdti ӞӬiZ݉O @L]|j3<9{ wo{߳1~a'k@TuoBCu!1dB#AF(9jۑAQ=uTg\fk[{V!%( u 7q!nO-*_b%x0ݨ}]qI%藁O8yA?n., u*****n6zh0?H{< F԰6xmC47-Gi7pCVk+NQ)j D$ T<ɤs8?mhS7w$|.Fl'f[N0%T<{4  S94r'v O,:Ȟ$23sWg_~3fgQMve2iw??m>_RuA݂SZ0H/ï1c[C=捘s1")M[AV&YQQz֖Imsn,  HA cƧ"%QXď6dJ-) p>F$8bQ oׁb PZ !idɑ? Ldo&&PO_j7{[?F8D?BM9R&5YXSaO[;a\X=HQ'~pkNNyN٪xD#zD6P]***^XzP55@l+`iWKKḥF e VHH.9xR+-+n\X2CWUCBH=^6iCŏ'rߠ <TVAl&ܔlk;;/qk^bɠvCz vH!~<)k\!)  mCXS#e_>"PA3xՕA3, $@/ Ifs>KueSB*;oY!<+ k+zXpkx}QL^|7Ml$ ɂ H'(8iEE<]Q8K_*S>|lN*ujOx8.K(ӒXSVnTNDy.n<`A]Q*****TQQQQqp h ύDhN v#bԑI'OpXJ_dV#5"T[y: ~9_{ФSTA 4B/9F]e?A |ۏ1Y^kn ![?˵++39_Gi[%5f2VWo?5/=0rne퇺LÑ97;,uca V-RD*KDt tS<'qO9ܧ b񄳝 /$@W+**nMhž2>M{T|-0!Y_ bn9oP1!vJ>  ˊs"yefs|qy7Q!ŀe@XHEEEūodPor? wq!gb (J=[PrdY47hͤ\4\Nvu E{&O$=GhS)HH,\P%@f"n/{9u27 ̓pa}\O>OvmdOG6F4'5ӴCܛ}pZG~u/@M:Oe)P0Ŭ3+?w@[a]THrdk#~r^}(V `հOg{^JH @^øIDЗϛx+k۽J%h,B%O;&5ϣ4ح}07L.BMһߋ=OF ᗀZWJUTTTTX>JȤg (x>F̎'gzL#`uJ/vlq]J 3sC?]ܜyHM%2~}q;L|ٛQ3џh_}ɧCL&-,yw0l@ ȎSwػ?Ǘ/q+tD7Qځ@;>&eoPsj'/e@FMKiFŠ"-~=;Վ4fHLFǗa$~!=Ia/5~6φ\= U@YFؗBK}~[#%OѴ!TDꕂ +LV% v -+3Un2 ( b}{ դkEEEE%*****n>Fv枈|_eڦy' 'qc-@ߎn,GCOȍOݵkE{7z/yp1 P"h0ApL o{MIb\ E_NJO3FL5͐FIxog]9>}*J!LX}C'-{6 Ϗ6 b*a7R>.mk%Ft!^Aݜ70/^] ZMTQQړ@Als]L©=-:+ 3v}#,v >}}#Ͳ%]P/eصk@ggϓuPEEEE4?쌻ˇ?}VNi&&$p~c=.}XPpF(lUМL!Kd&3 爱O޷zgzvf>Zٚs'o 2 P#ˊ `{&|gn'_q'NL fʵ+6t^\as}QHJjt }f 5&@YD|8'Lh(ۛ3}__}Ꝡ"bvɘo?w3G LƕTyuЈ9$ Y|4La~. 6]+N-h?x (~`q!~5 *JT&cuP\,;Я_¹"QlrR%O2?cgg*UGJQQQQqBEEEEp #~06"?YO֨ٸE3P~5l|Z{< \F?+9p>1)$ R(J 5ٗ2ӃAs#Klz"Q^ <> 'XwbDPb#M2!ȵ7J֌agYԇ)-s:0_ 5?"FIԿ |![w_ L&&wXiʗ}y1lW3m뭜k{;F䏀%q Y?U@[#('AۀX Kt+X+;[!"٦H䜀U@2*Sy2N 6gvuOSEXUmm (84xK,Yr*j ^P90eB?(Du =|o,K|>bkҙM<O]bksN!@%%5C= 8O2bH2i2$?s/^'ҋݛo4K\{!="s$WeI,S=1 z)dB@+F-`9R ϩ ֚wJ/f\'_7?5xi8"ǣߧ · lq=~cO%KKk,lV`x GAБq̀Oա qO;_.-OX\Ջz2n87F9D&@k''؆+i';m2X'G6FO+8a 5̻{̾ <x,R9}'(w7P/YdO& oxw=pw,3 g9{.s+F옢 i 92hcʟçI91h)?ўMn_yl~`)8@{eH>lCq=$s9-Xq4P\dEl(%>vhSQ$>zV,롽x2MqA P 8(+J>col뿢&oodAp5$ 8)W\4yeB](/P7`,r~<1v w- ט/ظ̤/h/וq o aerH 8|+ͣY_[!bo)eGV;~^_݋pn#<#}$䂙BPA-ZƓ=Ƭ^ k[cݓ?A2 e$[Z22瀗x ߕĪcEL.. +IVT,w_L|7 #<([QQQQ C)Љ#{C)+,47o;uuWތ'Jf"+0(<>˻M_b#~LeP_ܸyffT>^@5@#{'qeN[&&ՙYANz>@Yz]P&r؏CӁ >.lr5yp'dxp; R$T[6 |lMJʣ`ďշkc.r)|=M|p7ߪPEEEQ dyʉtK l+mz15P:¢KKDC\ *6nDnM{u3T[>8&pOPٿ(DnIZ?0yb_𑽈 g:+C>wRNYy~!9^PL YiRda:y9LLB&&D3&ikg{gsc|'XWz:"d§Gr(2䧝,|i49v u|U= I Z~wks+::wburTA@QD<Kc"@%4%8")\h֛Ww' N0pi.'#$9bߨ6TTT;dr0 do-S#Rp'ϏF$Kp8PDGd{<?/`Uȟ?qL)}.]s鯨PEEEEū$pJte"KG"pCFc͙%Sim\G ;P6zc?AoZBOPFAaԵ=߾tmv؅TN^CZ!ƒߴݷ{ls *Tɤ ]/d?1YMc$PECs&FaS1fP_5?)1@@Hr>}ƩL>!5>;rU ĕG+!,#Fr  VN`؅EJ,jx(+=)t|YXDROB3KekfQ}U&A ։\]4D;u`QQQqcIw~-S\ Q[o_O@RC~)||bO/U*|z?n^V^O}EEEE%*****^1(iAL7ʈM&rxor.t3씝1Kƭ!qDͨ糵yye+9&Sψqv5"ZeuL[ҹ͇Ei,4[]jwo /!)?<413qyn23EK&r|Sk!Ȣ{VaMa&IФ>1GGzG &5g-QhdPs.%rX0OSRPiy(^Mccj7g 9e5 bCY Շ^E8e$]"BH;04̀5VTTT@>ST "*? p A1L@Y^W6lc ( $C4 ߖ/Nj-G PT E{ ?xp X R+(B @Ew7}A,@ս Y|y]91nH` 0?^egn\}t2?6x$ ?tۋIk(:!bP R =]NDN ? 90@r^Ģ_ %9Pc 0??2S`"{DɰѲ쳇Oo+[r 6\A+Xk>X#ݩh?"MdZ:U}ZSٚ1\lsXPI ,<3_SSxXt?~C 3f>,maNud(tfډ 7,RN&1/yijeG,i,='~:}ڏ]>:wfwi2曆nb>` %wxwowߒ;(P質GSt?B#~r`!(e'.2Fn SdX|C9؃$%E bˋ|j>Ͽx[sN@>gW3K8k|r5rf̌`@̵%AF-N(97d t3~f6D\s2঻?ǮM*1I0ç(:Yܨ1$gL-B xíL-o"(T;\@i+P&vZ6$nbɟN@,7x>xeh 9ěs%"O\h1 u=>/"9j 'y,~<k˙V -_!<d} N/OP&}|x(6Ou&YV;m'@>=}ՉOu ~xp0"!XT !vzY;Ӑ\c!!do@s5f _\hO,a<_Hxb>,aK`}&C#i??***^}h雁?LUDއu@ 3w4+);z+r>{ }pMI$C03yȬ zT{$O?OuEEEE%*****^"r  7@ PPD\䲣9m|;9ocY{ʼ,֨ȍ+R$YXc*A>$Ł.-73_,ʄT-=}RO,mbtoU 71LjwK:yɤ Gj;,|t@Vd!#LjЮ{DZJB0O.}495??z`xds||gOJkzJyk>_v4Kh݉/xǨ/n~%&@Gme D}3,(mldwY\ |tHOW{~r(8EQKko!ǏwҊ0NwIHԕ/" EpBATO i>^Su****^؇r; lS+Aox-JǛbJOX^%`gFnpp>g2IOw/r=#K`J"K@*&$rZܤh&vD%%=bMī$C,Ҧihp ݽIulh8d8̛S_ě-/HޙXvUg[U]SWW]e7'&B&I PSAJE(< Q"(BHyH)0:`cbhUGRT^X u%T\ 8W nU)ذ`,e5Z?;Q{!O@+ {iv n=.6o=^(mS 4" 9׬srt><O䠢{ǮN v+,F+!&:?g%%8d(6NuNA[ u"(V3qK/4%yQ6tmbsfe>I"'eb#F"YNI^8;yi)]ses"I6v)O'|{V\[sG woG@iu^.. cƨa]ҋ7\NKGi:.BM l{ÿ+ߊS*$4x J+Pk~JrDW@ (h =;𔕃+wC&YfA30r"`NT*RT*pȜt.J,*8æ|$o/.{d sO6¬Y}{X1P5h_O;VFQ(XQg?p2CƯ]5Gh]Уi?|=VUЭ8b/˃-][% aχ, = 4u >h;~ri>No3ˌu%}}j{N[/m#1}*ߨOYf4Cp[}$:,C6Ĺ~Faʡ1D"m/Kho#&V&.QT/}xx0%ArN&<~U($mnLR:"b^CЬ< @GW)c`hɚeͯ[ؿp;bK3`+ }HIRB C3Y.{ P6 0CrqoNvuY JI#Sy=?>z>ͬ6/vR (7k7YDMUHĻ b'C/ `"*^4.V9Th)1 C@CiWB?FϛJr[^d!hJ c,?߬Wqr/pT 9M`tYPF_DT*J*Jm3;3OGe..^4d8"NѼJOV&(rsPO!Eo^0 ?*4yã.'%o/^C)@APz#ܔ.p=DǸS+bAbDOH2"$' O {}i*2ĸIsbcz2iDQz4:CYT%TvA=gZ~||w> d=)0pp-caޟӱE D#)ScBP\)H8AV}}@cRU=1/%\? /D YX[5/BR}(|((2)Լ8Pko5DBUJ9MkN@ ZT*UT*k:0ܷk%&s[1٭\PX>t~b%B!|S0NBj` ^X.aEhHL^<6zہX^PueOOaYOϱ.Y׉b2Iز.2WԚ\93m(xij#^Z(n1}|?"9Kx>=9(VSP ^~l}[\p˩8S|Xo'Y?,1oG>V܉z(Eڝ#ʺ*nO ?Sn=5/GRy}tL>& mi |j݋9CNhl5x6fsTT*J*JZaXF3py#RHt]2v][|6s\ _;-Z(V!P${mws7fL:7s廓;|ȷ5hלH\74Źrޣγ.۬"cn]- UA=gWdZq&'>Z>=>Er>1A~Ccu"N9ح:ie*`NS]%{;sDpN޾[2~A &J\=)z쇺<C!;X7q6vMUʆ.KPX* B'V&yoY.{ 8U5z̀MrY|>Ʒ7u xT뗠͉p3;o7g|c0_ t9Uj\\xy7v4kx1ێs0/ ҉ [ޛ('o)Pl3u($n߉<[m4Okj\1[5/BR}zh+2wЕ\o>L''@xAy12 t$5M_ ϗ"jHJRPRYnCO{!b(>?sC{v1ehp}0 pBPH&_yTa".۬i2G7ODL^?5գѼwDi`ͻM'c7O@4Ѧ,sӲ($۲((#!TX %CDлb(X$cnP.l%̫zirkÒsAC̑H$t5x-&l{;# N3\}^`݉DMN  8fg;-/߮/deQ$fI$FbJ'cQ "ב6{N5U*O]x$_.AKyx/g2Hpޕג0A  h-gW/wJR!*J 7A/@o7u5S‹>>DSo8L#(_?nHxezEa{IX?K[|]\et.LX~`|ϸQq$ݯLe@9_M@X(\ٴ!3Ŭ0+{2K@2LGG&PM*+U:˞n^;yݼ#۷ ]oo8+ ->bڇ{MC"ըko *H px/xpT1"`j\q׷"UQ5 ?\"4tzxO]:XX@"S}rz􁻁_f(p4E^+hP@hc~`Rg~us 浇_gAzLWo?TRU*J*J@Bu UTr/V x^q<wAґ"x݅?rOO iCṖ!2*ZHg_9j9?zPFv'ٙW>C1)koqطNBUQڳ0]&tێl" Qt=m۽'H *;>Kj* DSV sGL[ XgH!2? \9W67;\'CQhjhT)PL'2h=D0 #NJ g@>z֙F츲o/u dHER#F4rDa/b 8>p03_*ȃ ˯ύ5eQO-I2ߘ@"$>j: $AEk5KDc2z;-O|x߷5:pp?Mr<{ # #cbYaJ`? KDUMbpyDxΛ*j2f28  N1~ډ'z@#':~_s{'*-PxL|~{!u3,' BPPP(. }}j1ɧztP5"U@}NnxUAQzL{r+{.^AWجܑ^ζ q_8pg/z- }%UqwG?KyQ.s~%ʌUrQ.'uJNj|y!V[#ߑ(x>Ϩc􌐒z71th_k ~WCO=?~Ӂi\).LZk"Wn?@.y`y3諀@IOUf8d goR\Mrp /1y  XI`On:`BL+9[viC M-s5F BBP\ \8)g+\z%|mxs޺c TIԍՔԴ]8GJ2(y7QFOhZ|'A^Ji4S a_St'H1n@ QvJi V/?רA:.@֩S7/&I23:&Hd!SZ"`u@ڢck{r(ki#ˉ\DBR%M?AǁP8s/ܘT_V7'˼_X:?1!''3)0+kk{n2yN?8y0#G `.>BPPP(|PӿaTȴѼ j֮$[!'dFZn)IҐ,g^R|\ N ]aiK4`/X۸쥓20:pckL©\6C{|`8}{RKB!bN-O(o(vNdCjf2sR%Nb:fښ;Ԅ Et,(c:T $U'ˇ h9=UU*\}BQn%<'6oJv&?o;gXpF?p[ 1^ 9|` L MnSi}wY>jps:}1l%lOsf2sGv |p;w, " Bƅ]Zd\ IDbJF',o傘yQ(h4Q\+3B/O# }Wb剷?go@Enp#睜g~)>W{hݥd$_X/XGܐꗾU(Zqo% pN}n!ODd<$ȳ81Ͼds>HiTpzLLtr19Eh))>F 0y7i2 %~@}6W9A+oJ1>q2OM܏WZB nǛ_·0')ΎZ}`޴ _x gڶG,r2Wi\s9w0cѕDa6L}ia6;=-̂Aȕ,'a BBPx{ك 66 R`wj1R QŹ=_E`K_K#Kp^i월80sM&Ua'Zls+/n}]^ xC#B[%W\+)xj{n0i aڇ*Y!RQqߪ$Qfb\{fE/rp޳Tpyf-9>-RzJΌfiyPr$"fmI|z zcJld5&\:&ro.UI͙(O'YpZ`P{ 1iÆAM( ?#(8l՟ki \};yO|D} rN !l uӧ dq"^N?ۜV ]Fl;\ uX|"fVV~1OmC=ωy oh>)% P(* w p ̽9TgCU >Yb+ cd@eJ}6 qװ^A:=wL'9G^FzBBPI[..(tg0C+yCg Jl `W{g}.YNHhO4:`g;<:9{+qnc`wco7;Hj?l#3"Px(玎%`23J@ %ƨc/Q@^Wxe`l[~2%+D%T`2>B:rRKQRkUGBQx{#XQxq/_o'w@1}Ћ DXԈatX{"zgFVIi7VWUyjlKlDҗqLJ@jo^ҹDv9]c_#e;!$ZtXHO21( 9?$ߓKY,++Px޺ >NwkJ=OWMOrc]-E}F]z"Z_+ P( LX0p1R%O}:iN.y(*|yՏ]URuch%***hy-1%Yl, O{g?7QWGϿo#:D-ci5A`'5|YB(Fee$#?mipA}"ZYh!>@F:*A\Tjm3 G CT_6}~aoM|~/-ڣV n{x7*LE?:-.5UwW t;lןy{pR\G1t1pegv'Gcf=Z |X[Q=BP BP(.AV[?1O<a4e|6~G%dX3o>e]s[f _$X&'f8nJool|O޾ʜU:pC~7Qb[Ω/RCefWxEa.MB a$e,,VMl;f{0(Z*%!Dse]nӔW̕9xW=A]SBR 1s|D{,1d&tH\䎎%$}u˸|E: $] @Ñ}Cǧ+k`ܢʮ&;[V=%cW(+gc"B R49p ppwh'ReE gǁzjtD~tG- E ¹#PN>]{&'1Kk`+ ^A\`8 j$WxDdU^u$A9;#?|߼vmyxڱ/{S*yxU\#)~U,?VSN0B!q~KJ.N(coh+T (U !mZQd%d"l*e ;dcAZ0ovB+9j8syDtUsP|Oc7ߏAXhNv|HHJ ^v&!rk]   K?pp#>n@Ȣu`7 Nv=t1ە~P(T( ց#@%$5eE)CtIGe4#NMypqnԲuѡ`}Xם_o/^oǷ/>|}xc4 $c}n  ?LY=TF\є[P*bH*픂yBBPM"L%r! 3%xE?:Β <$`w!P%B3EO`օ=@ x8O0QHfmF_c!sN)W'_[I |>O PXr9XJBᴃ]|xP(T( gKmIpr|r\hBUkieYup3(K  蚾)(2ޤl*чOlgS7?=ecpDңrsxUe~ģh^PQ1Fg)U ܄ 4Pm=kPG)3&Dd.J⚤jz劭}`E2@#wot_3`Rv&0ҹGv֙| kK5{ɩ:E' K Wyrlx1%Xz{&$2ZkN?P?o+c 1JV(|(X3~ XY7{z Bpa?ƥ&, eJ(\}AEREP>CwI'z*ꘗ$Ҷ'bCqIUDv F]NƷrx:8_MGL`s9Z+c F3ꍙI %#h(ω=qd1N2_5PV*IRk%:!}b.Á!%ޱ\B$WWw=RYQ }Xg1 Q S` De;#-b'#R}q̴u.RiGP7)Gq\b钖rhBwQ}RP sD)kϹ,pM\ K?Sek\mTGLu=KMP(h"n?bx BP BP8s(l U$]Mшv=,OyHu\@'I-DO PvJ4-&HHa;t_6 qp]zށ0ܒi(!\F:gO[&4*R |8"=<_]W(JT( g0~EZ@"IjĽ=uL/&Vv7S),N5c29ب~|gY!kݜXjQO1Nqelc7: } ޺c Z 7ku#'*yn=`qOz'Of:$L.vюS"qdc,'nj/ʪVXu>:I dqp<^3s]P#b|)+2՗p= MD[OxUcaQ..BljgH*Ö(9ĬCL'T)Q,09=,36U 9H\ 죏'Csi~R}ǫ ™?T(Z 81.1, $ A:)zpLvy3vL!toZN.VQy桤~=(T^Z?ϔ- #Q&ALʩ[jx' |g[Gz1t儥4T()cS=}8so('IE #qL/OλҮN;NR)ᵰ'xߦJ>=d‹ z.ۻ/Dw1u> !Qz$99ͣ"b_|I=P닫$Vj^ńo H9b_!ک?+ g9f(}n_>NN_oP(T( .k!,G~: oPDb[H N/(ȫ `$QG#ڝ8V~"Um?7߀>cl= |}O;MDb͸_q00SQOk??rlYPS 6-ct-6D󶩂*#)'U9|J /pv?o_8)~9pGI,h+X /V JW( >vcv|||_- ]HIQ&$R3'?x)o@QrR~6iOJ h~0: ;e 6H%FgqY @X( }J^pBP BP \ T yύO+14r IˁerAYҀD9ۮ`hCKJ%XP+wg?7y9~w_mP@3!xH!˜$% tr,SQT6gP¥Dꦀm%3PM, u;j8ܨfG#T8S?7{VB Sj%ׂBp@]P(dA`@ɒJ<蹧h-Ot2L`rߓMiyŲ9ApoU׃1iPLGhY(؛[<6gǭGߖBPX8՜b$SdRQĵU~bvouFZ##r\ۡ)9BMoU)k:@!2Rh؉E(A+apN`/5ZiBP BPxppl$<5 ^yn}M]gHF $H,&5TrKxa8qG?RV:Q}2(2[5yZZUE49<*Y*9 |>?-[pNR,[' B) B.(y6$kNM-ԏ! .m~ icJ'?to*\7#β~BZ))A>13o+Vzi/^N>|c{˗8K E K?neIzLQ *(sF1)+Mb59FB˧vM H%}~Wd13륤y¢}9eBjAu9 l/p`_}p#p-`qBUbïeZ(* w0%;'(I+-'nkb r@Y',KŦ Tb-u7CW!2SjMR>rK4TEbz.J?S>|N|_n|c T( f7HdSAIDix2Eߧw?zE[1U=nk=sd׮NwIY(?Х,[g ‡*P(X9 YUKRB mQBݞݯ_۹`Y/I'~9(|y kSۯeCYG?ӎAWkC6}ElpY % P(,nT_fH_Q8``Q`fCGYM:tt Rԓ&]X{6h#k#\kqD3eOܚo"*e4Hvpl бEd{/"&31?NV __bBR  a 5} 0 xP,?@lm70=L 5Ptvj+[։]W { >6'g, E s&An+Ĉ$ HAZˉ~%O 32H ':)}\ukUV¿{{"Zr =z;hQw)T? @4%.O1׏edO煝\#P: \\~ꍤcOTZ;T nxxzP(?1 |4'=X]W(* H!݈Gr\4uEW\OHHCyQ^%(a,5B(HAEjDЪ6-ԦEԲ\U ~-lZ98̓;jly3s|CY~ͩgkɄ'/gwFd8o⅜}RjɼzʵF 37O)9ԲZ+~~@.b?gGG{{+si S?"8w,Pķə)Hje& ݝE7 SR'X=ŏTs-*)\ J%9HRM"nNzbxsՕI =Oghݒbk XvsȚ0BЄ0ņpϼ`rZlRg 0ˆk`y җēһ!ہd\Dnְ-7ZL[&gB8v$|#O۷Mm>.~Tڀ0_s{^VN}DD,~<=xX8a @k][q_Gw.vn@Hw$EsBq h%c{H:HՍMzENH1m:+<:!8jPE wVF %NZplvsIiQp2IM:-?vv9:gS["%Lx=CHM"[޸_XHCr>X Y4Y+>M& B&Tkoʧ>;wVd!V؈~y̧Zb|bq ѱ;(׹;djN?E/FY=YQ>O j$ʗI(KIz(A !ߍܙ{V s5{13{}~s{ڵru`lډ_GK͈=P"/UEQxAx´wh^ϵWK+ hrQU5$)hb ?RVx [b~^=^:Fa. @ x8F" \s%x\/旻Q%'kLC cg Q']6dxYi57|pm.=CWHcV>=q ^ OyutT+`I (2B ply!D,/9f .Bh/n6WIq!e!KW#VBH cu^9Ϣb<Q2g5E#E (PAP X1fQ$_c^SЂQKAxi#+HA++t-/ jKbgNM-jKέLZo:U+nqقo/.#@m4vg֞KQ+1l 峉'{ㅗŋֻq^EQZy;;w " ܹ2ayQ*' @J &19}$#ژMD)Y\-MC7B';Zg>OkNڟ,hj,vzY8(   B `ӄ*Ks=R@w=Xh|/|K~,_^SSz'~<7)yl=rUb9}wr7ohC.u/> j5Vn"(JlcMיYm{.&=4>>24o=7'M{;#8>4)`o.8 =c1n;>{)Pv (A9@0S1a߃ex:zh eD{'tIOҔX~Oh+oB 8|x?&30^|~H~MD`f~P'淪r ۗ!{eʎvʽ$^y71վMF?ϫBއeQ6B{e^ C lp$! `"zkeMjɊjuB}=0K/( x w53vw.V^!~ "M߱R ~M> OhٱVܼxgՂRx2VDP̜eZc{O J58PB e8$z>Q"wY@B5J&2i蜀  5(ctݩq9_@̫:Y@~މ ؆hNAp(iֿlFRA/uEB RQIz@K}vs{ ,ǢBSk%N/??'A?mFʾQT\U+A%o>]/KBUSǴIb<>;6*H[zDD,!blQ#jĂ%OQc4K4**"} "j4HD!4¾};s;.* {<3w3̝={-k۟oS} _ҧ&⏖䖭rڑݧVvmڄusa'g!)ѽ/Fw]pLU^ШaqU}96S:םI:{։IWj6MJ8rX?.<z.OLS^yG_M<=>l,[%+V$Nii)[-p=XWDSAp "DXIh Ԝ_0aEvWBl:>ME|C$潨&:ĵ$pU.ltr!{bib6㹗1|(=f "MÁơE@65@u6_?jFY#Q͙S-Qɾ1>'*H 㼐X4QZ}TZo湰 `@nIs{>_ќWvn^gS$gO{s_ @) .,vmgݑ¢Eyg{XDڵk9(51Wgͣs19li.ڛ?͐CӤqcu|~s/K b̘G9K?;'90ۜkxGXt-[ كq&駟ǝzf^[:L3v +jŅ|7wE׃~l87K Z 5 =ְPs6WCsz\Sa"y< @@ P((Ⴂ)T`]h@ @ ](C L2TQo/ fodȲ@,(z\}Sx+f9Ғrjuf[<kJ%7gE)"ͷ*Uڼ^jlȊQvҭ.\ %),% ~~[;5bMٙvrۭcԔWp&|Pon ufdRN9\:vl[+hĻ{=_@ØEl bd#otT03G_є+AHO''[caԪ<.\̂())m۲s6l؀8>ÏN=3u3;ql+6#]kwhN\O5Ի~& :^@̼??28y@F'=5g:6Qc '[^U|s @O(6dxZ*@ jC1 ىkiPNv {BȄW]Ķp!$CVțT(m[n7Leav}clKWnպ2Fr+u}7Ά3P-pp^ze{-?C׵^CܽݚCfHqh taDӼI=WްYTd@mCXQ(9& - T3:$_=4C4JW{TG|,#aԄv#n6]6y< @@ PG tE`uh@ @ 1֠-Ar/ øbAb`-G֓#@s@?-)䰆 kqI~kJW!O119/"P!}#ˮBc]CE¼3n)HPkȸY:mܤZ^3@@n:鄷ɻ`Ĉ_ydQRR@yy&Y>p 9 q9眖 [K{<^}\}<xC⻝ SwPvk W)4|o IP/D HGЦM+5jX5/:|rh -@Wjy_@.4A  vC# R=אfr8??nIܹevԫ ϸ>ɳnjru;:&0(֬Yw!rѲe 6:6wH+/`Ej_jDl'XY!* qC|ROq|tsg(>It"r.6@$y$ɝ3G3goAMɳsrw@mB) m\\(%hVz_MSl\vӉ'imٳGv?ff}rȑGMy1ӴW]&|8bp::$>_R|7p;_x§y ߴdNa'2SU(HB$s UJ܏E1*`E.+ s!\Dvepc[ +W,[ܧyfXvֆRXs_ȦFD((MFb=w'G3Ϻ:QiD+84C#N]+8A*:tb[+:Fc颏9!l9nЂ"n}O?Po}b㻟 ~ pGe$ nClYkו3!QzF <38=ztKl,+xMTHq^xp󾿬>!R@$ A u t-v>Lw=aAXoWnVZbǗ,AĩgVzxOascl]= 9^+ ɡ81DIhn S jo,jVz3J-%WbϲIk|kȥw f~ݳ _"Πmߊ&CĊ+ln"ò]LظyӨ 6ئI ߅sw8wy?z/pOU.g=OV-\|(28WGly9u |%9GT%&DB!ngW<4װEM\+0>@="Sԯ:\N$%/JǮ6&ܮ rqՃ" wB0#9w#w_ŞV]zc NX " (j&jlZdRQ^ҥ˪+WF,\"r?K{w](,6NӦ@Dyy9?nh`#NyR!IaWDpxE9I#8HEZw>ox<\ ~|_ņ|Tx1}D%@q{&lR@f?ϤB͢PU.%CO區~@[cƾbTNmȐ!bp͵c6껭UGLeРę>]-">f}"6@W`w"4a <VHKDvi6FX.Eɰ]DFA1~Ȯw 3Mf #at#0d: a qH"+Ѧ"xT_{|fbPl[N5Jڡ䱏DQWp&T DQfFrw]]K.O|G.hb$4U%g74\I̜, :K<˗Ԝvʡwޙ'$I2`(мaG^&0̜F.@f_B\93!DnP X/+XF4Z6&bBYL<ھ|wuuhj".d$ޕcS2|R KV&&V".]N 공b×iҤKQqQ¼=䝜; ~ӹL27=z 6h޲O)6t_brqnh(H31#DR}\lޭ(KPPBJn@cRt/Y!vR]qPu.DfIF}>ƆuƱ„S['$H(dbŷw rϷjUjHcO3#QJ|5%{b` @'f͗DT[;ݩ-؟8wy?W=MmٱG*/.ܴ=G17vDaBg@Cطf̜ aQ7o>q7ߖm5N;nM+D][_:cɧ_cKa^vՔ n qޟC] ށN|@};؝ q p~tLY4+ްpz;][DR]9.((c6F^Vǵ3.8}l<~[g@Ihpo#ibc ٣Oռgߌ4M`R5߃zyUH1Pj9:Bwf 0Ë:%Ko{$®=4jOGcР~w_;e1JjʡL>p?Iź| a/+C(lɈҘ*"ƋM;2#7W5>l.cEU$q|1BE{;>idY{!;o-;ÓAV!K3Fp4~lmKV_܂5%FkDќTd'pbcϭX]mv"شnA|RHbzGLX6xoQU>"Zؖ S['sӱcw6eԄK.>~}qƙ0tع[];s7ѨQCv5u` cսLl~0)T{hbf$Y5Acr i '49AmGp7Hf6jBY\ykCz9|do'ܳ.eQ?Ues`|[ŝ&Y1J>~oqdn|P rWPşJUf ԞZs;x'l΋,Z*3_=9;TWW',+^ŷN]KSajCѣD{UB˯80O?eK]+J-,:tQjVK[2ܜsBETVl͋?@%aǩn _vVX,RDϋ Sގ:d]QҾ{ Z>J UvX N 4+R tlx{#@=fO<@G^@w)TNe_$kD"閶تtzvUz9o9vbBzGzhc[M鮣BY\\^WYXHw>gm &ۉhі?{h%_ٵzG8AXvSJN ЍVpʀrr:-2zʪ#noq]RP)P |.Sj'!d]eu$obi7ܰPҟ)9' |tUU%Yz=]ϨsZᇟ)͗Ltᢥ)Ӭ?+z mGC3ٗ:w͚>&~zܣ>{7x3 ,8?q֯-?{f4SmƿۑN%%5w|-+Z˺z͗ Y $P ȀFy1g9I#  zPSG"qQɂYG\1rۚHV|emN_rCy E+>G>\#9J z$ ! 0{#E u[PO  {^z≟~"1u{&1D:D|2WGΐ#d #Ї%5A t칅=V#{A H$&QR&QGZX{.ճT $m i RAHy@gy~{9L}=QYFz'eޣ?H?O : 'mʢ=w4o=wQ!0EA3I}=,-?#9YÀ(YO?ۆP3 h,s|-+EϮH5iأ"dN^I0>*7>\"\@sXY'鞂?@<l͙Kرܬ8$.zaE[9~d/PRT>,#5~, =X/Qw?裄sΙ MX})!D2VwrРa|| ~Я~TұS;5 ., 9` q.jA=|&9Ceuy\=h@Ǻ}~=?6ڽX'j' D]qę ?upImIjŸ=Hxw"Y"/hK/oc7/w-ܹowX<.Z5;IJoH~eR݂A,]%?ӯ}YzSO=KΔ;9P2:Qo7YPX6>;IdazU3Ms}5 %}III%K"W\qW\h)!ӕb?<$~9jn'-ν5BɵQN Ⱥ~'x@n :  }sŸi7)sȆ6nOY}fdvou =몦Z#pkOTo[<T'oWux(Tzh>oRA? = _c? vL`'[8d\AC" ꄺj`D3}ڿar @U[7Ǜ[ckt><m {@ ½u9pN8 @fκ4Sr_ a =.=;H^z5MÇn,-ܮO>u~+^_ȶcpVu!QUKDz#J,._-К0DEζuHmrqW\qղ:ERc(՛D"(RH: CH`u 5 6@>:]t;rBMhn]gܦ.sn3G\pC?Hi dCwr\ u< ;}4>{rA'LKsGOIB/j :_Ps>(yᅗ~K z!c~?&~(0JH jhpPߑ;)07飠CuzxojCCU9K7}{Mxq]O8, Aê+'RiDwuC*LYihʻgL4wjNdH 5^#FLAE >Ǫ|#~$zl2  `uX H~ı57:"%5-8W\qW\قGX 'p ){ ߑ;1бH?sX="=G-cHmεS2{:¶'^}x@[n\(`@HA!PG ĀL¹K?>D%u֛hu uha''[ۙ@9Ћ- NOyJ}1H1˺u(#:3j;>nZN$z+;\{cBn|[Qof@4Tu&  RЇ!I, rzCAx?B.r@0Ȃ[A>t@p+8s@G @~r{qr rBDQlΪn-Hm@SLK"%4[=S\o xAuBj#G5=;׷!>ȟxE4kyn7yr==v}:YCC& OolGoC|q+8Sڐv#m*wqW\qŕ[1AЇI*d`b, # ǀU3~&PC!q䍀<#w.GExoO ?r 3.9zӽRsQw- ѹܞ+ d>vƏݻ?<-r# }Xp". 9`ΞQA BΤHIՐk| sOQѷi>S y?eC nqfڐ5+y!zz}"h.8QK.rc%zg̚}i@--IpՒyqW\qŕ #hӓ??κuHB Їo H[=޸~TM}͞y?)@gۼVo*wr(t'O9?ԟCNj+Q;} i:ζoppy?4؁,쁒eݩ[C"IBǀ[r;dzQ|Aԓ=yPooQ&><X'hwrʮ#zEf@gG߄? Gq51. ~!?IN2u@Ny۾ BȶyCy@p=K.su+8޳\pއۇp!{3 ǂ WA>N \.QC ήR" sH M:T^$+@:8n^z+@9R,c\v5ӿU9%zGsT#No~>urr=\00 Z|55ߵ-"0 3 |E+{$P;}6p@${\. Bc/[}cC A96 .'Ǒ ԁ㇣m{$ |,"=A4gRvo4f\phؚ9> 4c9'9DPSB lZ|J8OL,*я~ƛ >wϯ1X:]s k ]Ĭq\ϣGǘ\?-\mVSrdl_ 3yzaq= p/HmXԃ45:.W\qW\p!Gd!ݻڽd`;*%@;T }|^~[g(#{ yG!h\pcn3d?Tו0KVq[O8G7#;Gr nUHΑ , H>(*<PTv?\,(v-AL|^74.o  9=B!H8$e>`%QOs )(!~Ps|{PQ: @  j gh'5W7VX8kDmѺQd|64 RAH_)P+[¼@-p\D41M^x)}뭷0[}hcJj9?k!u9Lu~tޣ7{>3h+Z!~NM;,JTϭq@@%LÁz(4W\q=W Уu@/B#{ uq ~|m߰?.W-mw`֏H GN :D^ѻorbelU[לӋop@o\zCmxj><<!G8. A(pfR|^6Qt䖀A7p^@fVp\7pGuRA yVpVrH cp i$yjyZId)VrpPȺa@s, 3Uݭ:E Rz'"RASH=dE%]ٚϦi :}8ϩz6'ҿ4Z]3D.N/ vzSPJn> 94ǏRFŁI'pUz@qW\qmgkR1Οy@bȷCDk n(:\? t("v8k; 9"rs z@ D\|dojW,=#+N tc$PQB>CܼOjh tY6E 3y@>@ 9@ݱ{A7ji$Btf[lǀH>:*"#<͡c!1G[]@ { 9P7³}l Pΐcp,$ҐG~pu3ˇk HԜ(B 8~$w@ܺ{ 8|rDgTIjERҐ$u* u[nW,yN2 L~*=)=F-³xV8eOzH;t v Zo|mC|,5^Z*'.s IDj_,+kS?I} }$ YHr @!=T]wÌثsM* :,䱲Ǟy?n'ͥ<7S `GB8pǸD@*9ڿm-GGԝ-࢚C \л[<>>7n 9q |n-q9T r7 Rl7+;~Q!:$u   qԕm8!i?#WQ#r]$'ͨwjRAv+P@^z =~@+6T-r7@ocy@wu\/v_Ӆ} )Sf?5>k$jyY{|"j =4RcvݞEø+6f%:{@ l7}^ A-5U& A21u 0m$Zϭǂ8cGQQ6p {#Q! AB὆?@io?ZBxNvT^| ɷFD/<%NmHus8l]d?G9w 45FEޙ?6 C! < ~ ncP!JMdQH.3~l7׏D0Gj^jr+m 쑫vo!D ~\5 [Cq\@>)l*:+kICIE"j}wpW6ad׿ԽIf\PM\gTϳjշ6ɵ (5jbvqW[B>J;v}E?Ɔ@/JE/޶?~TB@sEŸ+ZZ9] ڼ$s-cھa/g6p˶zSn ~Y >eǸG?"fYsFfӾjVyĢٷvސC `^!G">F| ȶwq@ .jРurZ$wV|7 H pȴ pY@A" !7?rB]p'q7#j qX513Q^Y u>>!u@Ng9>|r \GմnvTu.6dЉ/Ɋ ñsi6j!"@[2G#a|l*uڬ<]M{ G|c^|Bu뗿M:|Hyh~S"jYsr< j46TI.'ɠI%EƸ+Z7Y>Aa'@Fr7[7:=?TN᠅.7<μ:}{tݠ r;~VKAN{ϲ ܦ.sn3ǔCZqceO@N׏f Z9Efj { '0 (蝘pd6Uwo Og;H+3G B ;9TW sA" c!@뷐H9};$5{HC wt u=.r;9@|"(w OhӸ^2b7e|΄]^FUExi56ytsׂ ws?.=WƋ\J8WXvo} cCTYt y&We"d- r,\я~p:F[|1+~ Ϟ,ix!r Bkfھəd?vo!jNVpșDIΒ0H>ѹ?vDA[ }ڎ.ӧdnu']3g( ~z,AM{@G]`W )#..ʊy>|I򷿽LdaB=s:;Ꞇ?. Ps \A:C.9@@?n"j  #d A60<ǞY'gm6{Dic\ !u6jƗ*vK@gJF3+U5}ˢJ#j.~}ـH@=V,=<1z M}w)Vr8uwAۤam8DSNkjk.cd1$Ww|ή= B. 8$S@7ڃ49I&W\q3==BupБ\z(, zpcrk6p;} [\}$ R5H sD[+9<'3X=lХË) `nD+7zRH"ε8[E95z (Ћ CQ@:Cky@At@ [#A<"dY; hZ npk8~C-$ LfP7&G|F@~pùHy?~OIڽ^ջUvwvUU )9vk> *  @ "?cu9zv3g]>Գ{Ԯ[ ½'|(!DvXTaja'@c@=@G?A {Ay@$xrLt Q|$=Q!\ѷwr*;tvw)5[nH>ȓe?IMU5ڿq rX@Î ?APTTT3 >($`g$O @.}#=l璜fgI]E#A`Bn>7R{ 򶁳s³G@ȫ\sIA_>]: Jtܦ+;V_MG~Lo5-XPk@дi}>/ǞHWA#(Ӽ 4  EKS,8VŜ+V-8ViW]u=9lHS,_ֵKo <??^WgnEiGaА!_MAVSwѢu'y;w4BK^@Ko˳~㟳[>>Mu%IXv/RW\q՜*H i#'  {wX@QuM"Iqqhj!wTIccA8 umOvp3&enֹvjqtm=aۿPGcAad!@$? <]}$hha/\g}-|I>WNO@2 Ԭ gUMu ZC1u;rrsFPxŧتk~j2:/ةjo@:5FZX O18xtqg_|n(3kfj Swz9뾶y]w BJn?ANg~ ocC=A"`@g;fB?Ap<&84~B 1 YA. 9 ǴCnrOX y?8s PQy@\8G H| AIs!0cCwޛČs~j+T ,>mV#. `&H yu!' ;"U3f\­|Y~7lx!7LO>Ȯ1c&~mmkf}z3cha:qb-{ v{kٸAsKNv!UUq;3 iMZK0iQ=.}~&Mب;H sv{eyɓ _߈9lq=^I_~U3Y?M#HJICH j//bW\qŕ- u}$[O{!𠦡b:VpأB?ȵXrr r5}SG"f?ȥާ%'Vvń{9fy?<+能nhA3Cs0SP57R+C3>}LޓYY d?29Ar@ ? tPnYDpHr pk8 r5sf]?,a?@?aCśDHO>aU|<G4gTfSk mKrAsԖ#h6dr|&AmC:)hg|13⊫u%^Lڎ@ґHG"!H*\?[zWՑ@ rz~l.5'b)cuM_7U7 nOX;.Wܶ:k3꺁E z`i ; y uԔ|s#Ay\ 150(|t<: wRw,r]A6Y׏jyv>,m7­t=d]>*u M6ND9ھ!'mi胺@Vp:yvomvêd?N-WE@p>k;~pjcjK#ژ4ƋRy"_A,*!u\\q׆ 7T RQsIIǐv! )'`Ӎ4AQB {Mcj @~d#⬮ ] !| Nj8l\m  s8$"k H0޶*0;p(YO?*GPԂÇ$ c ?^lՔp- Gvho' u)8rނu'R ,rB }}-50@B$ўM r#cN@$;GXjTr/Wt:|* *i6A55sKTT@HҗW\qIO)iՒ mٌৄWq@)|Tq p׺ܢ3 {|+;uAB!P5J^LYM\o zQG8B`.!VH;DpH$)$كh` 7c pY%uPܱ. A| zc)r!䡽>a"A|fAn(= $p! ʥYf Al=,;y=r@ ?$8FmUC>4gJԊ%?*Zf`/?C\ DՊųfW%** k# ^ ^\qW܃4f(j"ӑN_B40Hd[!AAqH]-d/g.ck>(G@ DΑЙ(G"N9d{dtɪ>eQMu}IGLZnI '}VpP\Xzl^szd/nIrb# @QQQM@.Cuz޺(= B{CTP@QMC|g4^G}F|n"ZH#IIFM&+3i,)# $tlIgoRP܏# u@Gt~G"Խ-Vp{fu A }f@ fF P:G= @ݛ!꺅A1VvyWf\>??9?P%ܺșvgR9 L.Y@QQQ՛+M3Hwp8}$@n^I#2g`̶3 HIiRwmެ,{)܋-pGj !8~m{r*_ۥavOv 3TIA  3n {uDi W6֢9!}y?&**?Fd(RW\qjp㐎#Ն$?wv-+97-ମjB+81 ~Pw<;ڼaO#5, ÇGd]@@ugPP>ȋg֯+ѣ6;~vyߋO. Guؚ?B,m=<48[A-ΰ#1G~$'!*pQQQ9m{8 mՙ@ 8PA" *ܟ0qݬ q ѹ;v8d@ J\v ?>yhyvQuU+1X:]{|.IMiqn"DJ *$Ԧ7|VeW`8o~'k|FEEԔ7MIH%ً+Zjp݈&iECFӁԇ]? xXI; r, ;8CT !@Hjn !, } ZB=9)(A/_Ů ' [ {Q@]=ɳ~,Q9r2pʞr$CH@} @ Fjꠖ[h Tku:fSSѵj`Ⱥ|5At} ~X?Ҏ?r;kTJC+Wޕ]+^VTaTT@M}r[hRQIg.ˬmV';ozˏ-A73Dp{ AK@do3Z-~$sr8} ! BA$WͶ{k{ҒC*Ng=C G"" |Ǟ@<1}faB u G8b: @ Tީgo=8#oN J/պ@].`j??z> @rܭސ0p *kfD3稡  |l;8( uq_>*USC gvCk6GLۼջO0ݰ@T !}G PAK8FT]yuixۓO>|9񹋊_ܓ4d+_!%.dcP3ڞ Dޣ? Ѯ~] |DvpHM ?"@>gA 8ZAݭߔ#_8s!~9'f:dY$Ҡk* :}Y9  =g]B;ԽP3h}w08)гɟwIn? ةyر%:$ooں]o~ޜ׾CX6rs:DG- R{wgvr!wD{&N $tm=CN@c,豒:5D ;,W\LG|3{meYTv:tڮ>k&w>  9@c֎T4TPfnZqo?B?M,*EEEԒa% "$%4t8,>{qf1i_R-)UJ<(jcq$ۿa/w,Q5@? (SK8csO@d!@2H {xl^34 ;nj25hhn)3 &Z;9־===5,CyA\*­2:D9أf0({ z= \6=n7<|D!:b?KO>37QQ}inE:dT5/8>{qΤ7Rc)wYE `vxg5${o7D+xA#)@@.#wQ9 { G8]:ᕝjj3]Ǘaur D\Ǻ'3Yὅ=D{]?M hם {8Z^+JڔvA{=&|~}a?kF~ru' z[ɸS\}?ʺ$K1& ͜uf:Iu 2mtͺ{$b/B ;9(Dw7$2Gjȱ|3@H%!@@r]ǹzp@fDy=5c뷮ءz7ԌVZcuu*έܑ\=y@3 ٫o wT u'@EEEEE=i)ɨ 3W\qm1#JJ65 uG^uBA;81KԎ@+5-\(r / Qgހ Po>'{ph!dAu G>rf_qa柹εSx Ǚb!3r:p ZP1v.5MG5|O훒U2xtK 8r ?l[V'$9S6+V>393Sg%_s(I@uzR?sAo6$G%C;9!z>VWaN@`>܃HE3ԑ(p=cu, O+8 {.}Xin@o.Hs9zg,ݒoڮَ_sD^G䙐ѝ]_ѥjH u~ \ @!3Fu6l7UB *Hm"hpԋTEJ2Dً+6 KICIHɦꦴu huHѺ \ g7l7p7 q3Vp oPӰǶ~q!*lߊGWf?Tח \0U}=GqfE% wrp`pmYd[qRG"\A$\K;9?Û cCM@Ef@V,]zS~w{y:)+|ޫkytK|>G&;209} mSO+8A칑'n\? ; xT;8@`P?`@<sgm@rwHҳL=ٞfsi&mĎ! {Xs :G5d| UW(****M2ҡ$iL!W\_}@7U5w|Ճ  {9s5'A9#u9t/i珉nr]Ps =*_g .ū wbeI:|9gW/qAv`Ϲ j;?V!fH G8@{ :έ#|۞ɾL:i@;M=d̘I,vd 1F_!3|d¹Uc OpW@V4c>gՠA>ŅyCz s - ܃GrHq vPs =(<'|~{dƏC3_c&C' t Z#q.sHuxAMMUױr*eɸMը^5; !!'rh珊pcs\G3 ʊFUG&RQSI=3W\qm}0ǓU/=oOPm,A{`Q/ Q!ZjrHљ݈HZ *@5ңIe 4i8cx2Co ^|@^8]w݋yjŊ;O2sm7J5 -_h5(:r]>p?l7cqph0$5= 0A. ~\G׏ʝGG^sai׏̙̓3\}~j3Xku@~>훳@V|@;UAu1 P6e{7@&N9矟Mkc n+WII+82Y;"܃ Y=Z_Ē:r}c@vp#pGr`H;ocr"qs*v;?Nu鑋(N~:~$.쑋?u~< }CmgA>s Ur<\@-nnfUt\ʍ7V4}g9 /~>F4U_lUCێ;(3`3 ̓L*(@wC7SPDԈ8ሢh *58f2&1&q6~hŐgOuuκnP]k{Ϲ^WjsC)8ywy7粒+tٶ{?R_-}YgX>MGDOoltvܱu8-_|4M#?樓 Uθ x{`9Xsƚ1˿yz5(ܡKwop |YЇ lAP ALCXdЇ"9 } ?a\p90n+=oFEEEE5ST%Jr0ѷՋ#86ZfGW5gtӁAo>!trDJ)`D޷N' aZõx5ZѳerZ0X&΁zGQ}O>9+5aPQ:}X9aCe\k5f nX ͘1/W?X,L|nrѧ }N!C@ヌg=1}7ަ:}\\8?N'y S9r|"z7; E./`ney/RǍ7 }d՝/h`/Q̝谂NVe%mH?D,9oZ~nqAG#:m>كzMzy9'xS+o.~q!X ~|Ft0;cud?;XClPQqn-4!B[8(ǂ<L| p"b J; 1s3Uҵj)6!'#ᆵ>kkI>2kC0߫HAVn c!Q* J+=eiQQQQ} 扒W/8T!(:;B}\9W 0n P`blc' }sh/|1A! Ɇ;3EdJӅw+jrsOjql:k( iĘ9V9OCA:>@\s_ }(U`H9t9̢pl9k KvoP[-@[\Hr.sm [wރ>qzgSY9_&8{2˳>oP^#h,d˷Y >UzO>wO%=9/ ScsI>wq9(W` '/OExn컼\Kx jL2pfm?cb+ {Zrnm@o<г֠G{E\* z2ot1{^@P?VBoٷVl[f63ƵU@@~l8KYbG8*5֘uQ,fX|Ú'!O%95]!^8ccVtR;u%mv}}!Q}9o 9ㇱUٹǩ; ( %w\=srfMkyAP9EC^!P~\~Da<f'ƀ88:~dMgb:c`*ס1@螺uzuNCCqν0!`QC y!AG ljC$ @HGnCSή/jlx#,+K:5(贩pՂ#89㌪d\"幩sTr0aSQ1oݷA4^z57ܰCΩE$qO9t9s.{y 䒫.GCI1x1A(׀(ŸY5#bLĵ=Cݚh[?F?>c3Dcǖ#! 9|KApP1a *ǵ}xq1;ZUeYY53N-ݫr@&Y k(#Ck]':,sG!;Asvp''KEEEEE LQS'W.8h6*aΆIAE1W!bN9|`B' a5dUy8?llK{Q y&B. SWɹVl}#O[θ{ @AO2p> 3p= D6*A V5 q@'*:qXٞ:^x<|=9H6yʌTSOJ̽0kZn]?i#\Ys@ā:y,D ,Ђ[N-,|T^J!ϲs5܄=S{ %y{߻;cρ z-_~ VqÆ >V[Ev!G@ dgB!p<ž>@t8 1gO䛒(****oн~jQCEEeGMӬoVe97@;<=Xۘye a0Ǜe\Ĝ h !uX@;`~Ͼgɱr`^ sK7ܕϏq:ؘ׏!t`9 y:[P/ sX7-Gأ>  ̄)aNBsM hڧ'w#^qiO!=?S lgyず .J4Y@TÓǾ/ˣO˵Jˣ:NO% {ΘNNsGO?ԲH=נG8g[v̾J_|. z)wU7NC ,rG@ٷ6e̱ 5!B;{ʾQg Gà#yΐ'Ø б. ;Cㄜv N)96W-x-. ?p>ab:I% ! 11Rp\@QQQQ}ÿdLQ/Qx#iѴkAKbOY ׀5&ΟpAe( z3{AĘdzt7 9΋Ň'7-})-^חXs R{YPhg#H;{טិ[1t+O@Dȃ">K d׌e;rc UGҞH+z̷wk+BЫ襗~}^>+Gpy#.:7:8VIYdzd8Oŵ(='|*gΓj˭y3{̞sʋk Y^>i`D#bvwƾZ16ΔžaPʿ- ᚥ8GA#*ǙnCxyT?y] {Azs< txfIthcc ~tP',( Cõd?9(:"#ﺝh(ɩE+Gq4XhNT֔ ^2٥@R/%lalr8ͫ5Ї";sv? kk5vgw~٭\>89r&% =@A D׏R-\@<?. TGYõA< XdLlA@rF@52iY@rCF@k֬E?9a>>}F$~?Wk~0MFqۦlyz…z,YrY|ȑCJt8r+6}砾F{gޤ禹6m{ '"{hc ,icVm=8}( a,?A] q2ph9?A= 46bϘ (s?-GVoS݌晛GJTУO ǻve8?ee' JAĜ3DY ͋PfH¹:;z͙k< ȂuN k[P1fS1As}{r^uɠE5'Nq,?r\[&speA ~ֹG9ҘЇCBUms0fj@h!8Ck@OK !bF7h Bn{Ϥ_ΗcEtdo!/qdk8tyjȐ'RpEJ!wuѧ%xM蘒=H zn݆<5w"]y B@=Va,p0 석>apVb`'vLL  rJA7+)ü-=`0:$:}2G'ޢl~r(ݳs t(<ףc{r֏W%9yͭ=j]C@ `u (? q_- 1&Bo{`Z,!r5>ܬԡqJQ{,Ԡ'#vݷwI8q@p븲ipRn>$}O~|kAs2t'!__4oEV%|1NKB .J>븾<8CM= {wr4?v=?mj%=Ѥ(ǖ^@t6pyrQKHp ALĒooV wNJ?Ti7ON" {a-W{e6-'PԯRo)B }Rqٵ>($|T9`73r AD m ;6߯{~=W_g+l1{d8fS\ ;0txc;Β/vAG@qlh-:RTyzqGEE|y=ot0Sb^A alqp8AT0sV7[nY2MeUnpk͔'~T7*|9B {)uNm ]3Ї9V%\}yOq8ҭIzeX&y7Q?_O{{dS]>:@xmDXKa{AhĈO>Ǿ-?d\+p)qfWXqGf76WzMV*hdaOM( gLy@A7PA@nO3M72C~?ϦTn >{pGsWU-Qqc K!Py]k>kɧ?³>_X++OsOz:VAAsgs?AF/d/qKijm_`$86;&|±;+Gq`H6eWyY]6r9?"'B9[C0fbN c aŜnyՃvw]Ռև^v0\C@] "v Wp3% 0o@g9(wBΠ%( ~ZZYB=!]M#AcP7P j{4~+=Rb>@LE.O@r}70z L/H<+\sS+yI,^װ'O+heˮO&HQxNp"7:>+] ;C0ȪJoE$k=zB*9,{p{C^Ǖ|.UwFA)6ɣԞܐK=n z}g}c>HznI)7Mzdxbu)X%#Hᱍ ?meރ{~ B\NmMN;~ڪaݧ@ <=-خmN8>@?>nέWoWߌ,T'aoĐ;8Ͼv=' ȭqؖ@yD֌V?,Pyrk+J#HTg璂Ww>BQ!x3B1cg<^>X<\e[+WYe+ ȗ"+6uu.$};^8fZ4D4'•v>IVǔ˯{ Hf ю 1k]?=~`&Qeߌ'',+vRy^u;5#~8+f%, YBTRryۇ9T8'ۇ9;CXę9 }p4@?e}pB2q?6.zg7fɺu>Gt-(KV%$P1p`O5/%@6(d^Ӧl*cO@5e0y~p_DXC8uk w(sX}.f:!DtPt0V'PsF_ ̢4SUYsZM>7SK:UzQ?FtL0~ Ɓo  3!c.5sļu>@8~owV^C >cz~m$|Q7IH,S`P~p^;_X|I|*L$_(ȗ2.z )m[gqW_K'r=Öe߼|1~ق \ #`]cu|IϊrKDК f~BՋ#o?]DFVYm?[?x=|2pn'"聐#Q \rp ^#eDvwb[z> bgCzcBpmJaB Tի/*f>,gE$9Ƅγ/Pj\}k}}80pLHG?aac_܀owH-Ln6_r>1eƐ$7k*oa,#Ɂ3 [ >܋[oSQ g9 wA-@<Ԯdƌy/#pk3B' 8|\3r+Yk+)'ᢑkW\c=f ӊm$GR:\[Y.{ mqrʍ;wVc Ɓ?֦r/ܺB׏q!}R=~3ច=vMSRoN;@y'A2k9g7>^~8$kǯA?eeT=sߣɳ7W'}llK!(B˼q_r!w`05 1֐zLf @S氠ç /6cBY.@U=|iqH%j|Z/oӹ _~@ҷzugJ_~eA>3 /M Rz]dY@8"@zGyOh@q4}-EDIN-\q|3h/:%“U9%.<}lo6Oy=Q<{g~l9x P7˵uU3rOoyJIBL=0geAYq DqO @elWyq@kx X09 !h!PAm7juJڟ/ld!f[|\.s:dur&TRY9H8B樀[kc4AO:- Dcp=:!_7O. qM1GgHQ %X-(U 20kp\ҩj/qLjq n~t)+]-|l`N暪1~?@ĵ z<`'( {&oÎa j7 /+pX^7pȹ1g`8p%ѕ!p/t64/Boqѧٟ~/_$ '_*XK(^@VxȜ kJr|]%_8U=$_J@yw.JrjmrqFG`5{Tu0"9[8^=?=}T98aU{seLC/."B  b u(\Ɛ)W_f(֑q~@<sv" "p 0GxAAzsڼ3ou6i77#3}O@ʖ} #(*c yȸC rp=X[q_ThQ=n6Qm@DXr~W_ Y#Ǟ:»Wx?JaOnJK)43}g)s PX2hJ} RNq7gxzv-O)H_CU欘.^k ޘ+5k7F/=dV6$nr?x]=pI)Zo|] )z_/),~\ËGX|[zf/:TYzqGh&Bovr s8 X  s0oJ0smʼ O[{vI/qfѽC"~,yc',8o oye*C-|=C)׏vxJq@ ^(D參=M],1&C $7F518hlDӎy[Mr ~[sܷ@G~GlA)O~{@9v$ϵv؜oP~G?1dPq>=>?)\3rdͶU,Y^ %ݫv}~`]T?{Wqf*TM R#8} !vBw58O6^Q(=JXakH'8Ux*>BϝCj4ߔ/iDo{@<,ezq5s ) ~gA;+g;RR7AW~ߑ ۃg+v]{Nza6_IaK#_s7GǦpL4$ED-Ջ#ޢ"F}i7;]s6ߐ \` |\bp?oսdTTkNlq֍}~$oNK<ļu A~Cq5!BP؉1^YCub vB 1@!B x(!}*O"L˿sΜx][@Mx= uV[# HDØBL">6.|8|Ο0džAt@,Avs 0r(wqn~œ-vXeoJY3J vaON!%9 Ug='( "!ڔzÚR)sQ[ YoDGn$Ν2,H/<7mGS,eɧg]H)ȹ="<6UkJ97Jo5&1#.:2_![OvyJz!][暛j(:ԞB:[̽ގ>+{9O=w,W=IE,nx.騮Iz#8yQNPzsga;qC: Ȑ|5o&)o\&x<(dٲAFkҸ }\p7O/ 2puXcc \0(@ w8sͲpx@v?ZBg=jMbjd?P 93g49lNS?qP3ΐوg`bq@U 8kc&Qk=5vPsMq1/h36q~@p|K!ڭk:S+{(իT%܊)fҫݵz zȀ 7P֏{.a#pC&0+opy:tZ^!huq]:)=@S |S@KJ$98ptQSE[+Gvhh~QVc gY8'2ACy?CR"A~ f" s3n_ǜIٶ3[xf 8~ЇCz9 3{( D؃>=AP&'#2{uB\S } 1 (Š mb:CID1 x6@V@0".n~?<1q)g>>Pƾ.F)7O "1 +O_ ξr![7 {E_zo1ʕ y8 jӶGgF0H܀7+OC9<7$k?xP寿VT`PԎ=@p68ık' dժp yz* A ;Y1sÞ} ,yd׶c"Qsk nك8pysr睷ľ3t1kxRC W"[U(:DT^qlz;fF>>gj3n?!c'B pVb_% lٷsoYc[r~t^ii6i8UMĜ Ğ?6BКl0 )Ocg(|r { ,Zr. ƌ5#&\^g98 Ӂk hӔ6I 3$=@a悮 Q ْo@X\>PdA!G޺}晝SK:W C<.o>e{{aB ( yT*g=\CeĶ?<p0{"~SSF@׍,*3Bo7Ph(8tTyĭ\(CG^zY r%|1{7nR@'A$^n/oqXIs[iK _Is8BnEx/0&!0;zͷ3us ʯE-:j3(gزm(g]APN"jrKGb/h!TKˡL{ 1w݅F(rX2%.;%95VErq4bD5ʷuNSb=g "sGkqΊ~e{=9kߦdE-S@pp|@u?A>]=!} <ȗ#o}{>`/D^+X: 4vHqcO9H94u̧I3<}$ /=#{?PD"B?,7QajW`ORiNJ!'n,F$o 'l з}Rp#傓=.j I ű)cn-:@4Gd W/8s/QeQQ߅2~  0k)Qz^8|99o*/߼fe/:~]@^=Cı. Au?'E?JY{X@f:1a}'zLb?{EEE5jg?~-=O>8;C63Aٲ ([^SN \v9-%X-$C  akoN\0[nOay}{u*FCs S@("a>al?Prp=+]*ލM=%6i8$\ ))}=M x}0n @;ʰ!+)/hT3p&{^J?k !y |#=7kf PЄ !we"6BAɡty{Iߟ4/*W1wUY)86%95C%^8h?TD5J%VADcc>ӽKGw9(oAdc:~8h^OXTGO8N Eȃ9c1o\?"&8x=rA g0h*=^胵=#fW?wc3d{2p8rQ![tzonӫ[~?e_|>? ˮ HbKپ4K@_!D<Ɩg$LY8NO7pI/ cS =JzVO.7@=u %J]y "xyGQS+G 8$‰Rid*@ODc 2?&r\sFnvU!8@ }lL8 zl Ϙ' }\̾?א$AP6"ۼ)gA!3DC? HǶ[f1r PTTT]P;@VFi7̈'ǘ}DBt ^@=?VaCc;C*&sF7&Xg ~xQk77?qVe;V \Ѷqz^UӇrpg˾8 u aac( gpM(c|N a e  X k xX r]u^s`Uiz>P@|~̖"c"4n>>O(quSaRnLwv'  ܡlL˾!0(&챠1'܁~k*w-ktqx?=qb !. gQ 7q 󇮠TAa@=8+%Lr@Rp8{Aΐ^<D uc <3K@0a"$nOA#!!qovm? O -L??6Oõsd>0Ywg:~$J]JMmNYa-F B&Bdb >t?&Ѡ"б렂}WeC ŒH, k m{T@۝?C{(7?Sp^,! ?N%DR\xݺu6>|P[x@j͚(W蝔q<@[x?}q*W0 8qz8#=é#{xʹ= 0Ɲ7A,c$Hbp. pʂ-6rxDpmYא#ݿ>g*ݗJt(ɩD{+GuC;5g2@9VRn}~vky, 8"?\s_Qk. AL{Xs6k2q[`M! :يAȭE-B1pN,~@EEE@]')S 8g~8sz)IciO >tq`Nȸ u2(G8؃NVCۗY^gvc[ } ~D\ =(y;zΟ1"A8}g.BA㾊 JKQõ_t5\f Cy£>Yxͷ]5(m~ Ϻ'7 :v>@I*@)ܸF/[ *wy>7őg&ЇG J L}9X=Ӆ+9?.',kW̆תHp B"Xt [WtL6S|}P[=cޫy/#{SR{,&b6\ju)gnuދ+B8=xmx-` &%r߅A%0H%E{$~={=ޟM6 ٚ j\qz#6ZlX 0k'ZzaJY|]g۹ԦKFqx]?ZC7 qߗi[EO?8}JYXL8N y@y}/a߾7N=|ɭꟑhړlgMC3wȜ;gNBo5Ծ3.pѠV~hzk/.Gheh_ - nyc_0s[бܴ {c`~0<G׼ 3#n P+!'p jU CV!z>B-7P[Դ!dzYnU|z"jA>w#FЇyCDsx<=zs{~=) >^k q+;m|lϿG{t7 ݷl@gs4j!Qݟ'q긨e[ )BAM*zέhE w"`GaO77N]};<x]Ch]Pw_w`t[p׾o?`D~C/\>&d\7AM#o.^vq:A1'?Bz&'@H`ڀpCT)! FԸ~,qOPx,We OԴ.,R) 7+b乮KtF^Y }|Fz'ܩkP2'P.>>#:yӡ7\;?.{ّ;~=LBP ~z Pޫ\?D\>'s'A(r~<M>f7A>ON}'/N^?sW|m'?}ɭ4Gu׿VoOMM ASmS_(rk|o~3 J4Nmhy=b!N?/sÏ3|jn~p|ȵ&gRSN׽EnzD>& 0(=z(@́@D>|C. [cܴ7po~4q,N&r-֫PK+\j7DfCɉnDO/_o?B! A^ a,:q<C9u :~.x.}YQG:} I/wu "HK'g?,OϽ]ӸyPKExQv| Pg1BHn>|%H b՛p}r@9Nw 'nk7w_ߓW]455Ծ]]thS-~o4sOh:zCV@(. OcX;o[ }فЇyPx7=!!>pm x*D4Ek߲>1QOw4t\cyJT#59*}ڡZV!q^Cdyty芵zy5w-2#/ZGsZLqȷ/[˗uYJZ-sF8t5D7u吇{׉ˇZ{jj1O<_}O>lj_V!;=\뵯-l P4|c&v P9coGV! >@ 5b~XF:A M\A'uo?%= > 130Hrj A)U{ A. g1?hc `OS6=$ r)q 'S;D0T z"0(@'?phqV+q4]`H {PHާRC/jbQ$H?@ z$@~sӦOL=+;-kfM}?":"`NݣOt9}? ~'= 8f?xMbyá; HCN-k{o;}?O˿Ǔw;555Ծ):E:XtcѦ@剫ӫGhz%5:9xdžvT T;7m}:xˏ<0y+=? H^Sr.rAѭ@\@BGJn@!@w&Q }T]"Ǒ9Ik9]-z~'zEoE }:3K 8$*YP'buS{G<"A'u%rsH E`8}BGp:But[? ; r}Eok<]Gs Cl=v:Arts]z.۪8P }|F- Y K@IP>߼IA zz2'SDoX. )3< }5Ǐ?{r0xϟ>yrf-ijj}A{>[4.n\roykz9{t_\\vcZ@(?{@K|ޅGz{}-w. $`zIBG?ԪU(\=E>Sk $h͛ԩ -WT$J?&jcD#8Dzruo3 "^ }! X5oß_;|CWnygil{>2Y}JTOv){@=rɣo+)bSl \ ?!"C wx>j+j -zhS,:r;z_|v2֫/9iB>&?HH>zgzv-z AA bs :DODO9}>Z惡DCN )#M$9q9GYG~([ '.=] P!"TGG\@Iku(QKpH[:$GsjSrr (YLϋAi?hx ~ c5J־QN bf 'P7pGaP%';?bۚz{(we0(kr\>p0WSnlƧ~ny…? yf9~gQAO[7ҨjASS}:}Pz{\.VRC.$[@ 55555Ծ3m-zGёA[ۯ׾mʼn+Ws@ z?R w{>\&@('RDq$`9";VKΜ}f\>#3$~ M VYM,o "s-\ \Գˇw3?^qYEw$vrXMtMP}& ?(?M׺{ ױn b0>e27GM[¯v[zh})GWt(TV=+uQ}&;@#ሙG1S%~};;Rb z>;;YfhDy aBz|Z>y?* SCou^x"u=CpH.wdM'\c@:~rI>k@G?FP}3ˑ:~C bշ~;= 1E`Ej{}M־Nb'>+1B 较==b@z35 '7{(ϩɁ>B]Q}C])pͻoxcЇ6G j7jY..\Ѡ>[r;ȵZ+xWA zvpJN5N,'&=6y{ӺaC`OX Os׏5$+ނp*8`Pa+t E{cF-nrb'?=?3*_VGQ9#:'r7 @&r돼Лw~+ރtg $PHvXWjrO HAaWǏP(vBADqxHYiwBME7o~s4rvk#_88yjy`|[AOɹTrS{'PYv[Y;'掌{@8 =ބk޴־:G- ~zZF;RMGz7\ ;SyZӯ@O{OπCX`?DmfoY{z}C!?=չn@kLHn"g-\|:@>{ȉN-^|"ޏ y_=r? }re9򄮠+Xg XL}+X&=u NfI?y ?9!Scv= V!@G5PGAz<B=\> ||ǔ!@3\>w,\:>9{oO<>3]j3z'_I)A|tpEA!p&q!>VYɥϪ7"L i+j_hhCEo)~M_9; 94`ԑ[͓GM\Ǣ $,znz/oySwV4Oo:Ƿw9}c{@&oT!F7jGO$O[@H}O kd1O%+s\eq{91ѳh=f=3>J]@r BVkPrG"anoE !.;. z"g1\ǜς 9Ctx3p)aνDnb=\{y>3z< 1֨Gy- HXtr#+t9=!Ѥ.ɁAD Bsy6c?^D[o=| Qs@D1egrg2Ըy97pw;Vu3Gߨ&'7Dkjjjj};&>Z4EW_}g9BSO60r`H;[WVJg˖ s-*䰇wz: _o7GfPퟪ5(`@j#o2A!>7t׬CIoT̨; obçsO )>uθ nˤ !@yN""#7 FIrcd>zg5CrHy!2P }dL9 (fJT  !?ԏ$ }&Az qѷ #@!ؑup A*yp HAO긨%5q㍂^p=5G ? ~(Y}qekxǪ7Q8"]Fwsfz)`GbHN 1u3&ˉ!/Gћ??5o/#ЇG?}'g]fsj#sأzѫo*@@?إo;2:8C@&>~ȁA'bƚ8`P'^;!?׿!`jiYf9ֈm V- zVfܧjjjjj}34\t[LV~hz{/ ^1O}{mM,Nq*}'SguXn92oĽ;)=Cx)c@sqqY x'}`8}ʌ78zrJ)I`Pox~`QRǏ"fM~p@ (Y*33UNLzB)ш{@zQ ־Q[Cu we8Zი!ݟJ fZ׿Q+BA z'[FJֽ vQP ȕB q x zT BfVY5rYG 쩡8{<;ܱ91s8(M'W~ Dc }|]؞>2c9=OKtD,ꁨ;@8Tz'@N?:S7 d .UO~PSSSS@k_)M<:T>R4x5s.|?v|gdh=[g[,# O>L<.)=߸k |nk_ޮ:z;?|k򍺨&q7dy{ȁ:p!np̀?"=CD@$ѻ@z:I\? Ny1_}"n.ؓ弍 :虘z"vxKD~,}Yz}>귍C Vq(rQyh;.`x_]`NC* H*+PG@(?y9G\?2C tub[" jCm u<z`PSSSS@k_>U4詇_}'7`̉T^WuO@!@GqZ=rP޶mǾ .<{k))?HAk߀Z#8E x<\?֓}>x~*HГX] ] EHFEVU9rbG/A9#9ndÇCޏW%ycQC @yGD]0ȣ(s#Dp9f^D 1 >ty|q @ y<>h yzYqpS")!L P7A֍@ CCp~A 8DLd'Az%jjjjj}A'uOю˵53sOm^Zjp5kF %@[fr 8qh6d2+ ,ȁα ~;h%4_Y}L3 3z~#":6K G{ x\ލ3VL@5IІ P-ÜZ :,G}:#Bߢ? ,֕o'wF{}:Za\RUo!?^+ "b!SWZ|y+9LjxYh#=Ɂ?zGy)-( VZ}za9==7!^7!M = B7~g^5sdnZ11$5oA!nҍR}r b.@dc=r\ԡ?hoQY9N9j_hhCGU4~olзݞ۶槿y4s;}cm|-;?#s):vzLR qri 7SɗG4٣=/pM?u XD#2AQ珿#n ﹳpQW"W"ϥ+ހBD- ވk<"@:6|H3qwArz |ON/ur}8uO)ةz;X.q :>mN珉@DSj;0(]ÇAn,D[?@@U ?V. {[Ч9ܱ" :}L"="AH@yp[ nx$_ ۈ'A@VصnC׎O>ᱽ߾+>@q?G5`9Q*0!'"qHL}.n#HW C(y}ov=Ή{K\Ǚuj,'" *tjA h{o zj膢Mkk+gGMEwj3.WYkAX9#{tq@1 9rɜ?L6/+B{;.?uLc)Z(uGHaј8Vyɡ}>w<𡖾 %"\־Qc3" S@|#\@U-C2\?qATp! 9ޔUb&>o .7 @PV3 y?9&|Gp{<2sQ pjω!O?;>k9=7 8?[\7>9{o1glom~ݾ.O@(py?>ַ!B)9OF -)u n&`OMkQ }Ah?jX!?"UxgGljC>6b5OS[Dݺl[MޣGlY#[Pfq}kߙ.,b{Q(~2x ~v7[ǮZI/tN|l> /?>U*7L|[%gYP>;@rAvw$>4C9~XWG>t,"f H@zj=#.݃!Z'zԈi.@ p@"rg"ASu{(@ݮ\}<79uoDQך A NGρ=5) r'w Hs?US8~d\%R,Uo:>Ժ 7ѵo . w*:׵o&n1@Z+ RgPϵo+u!HV9Ioݽ sVNuncaJtcZ?H@z x+:?hX޵:~ȑ7-$'+X 2hs7cѝ=L@ X)u }wy^fAi(5Gk\@O~zksQ׾}gThhSw~NhзGC-쿘s'gW]?L\m ʜ&Z43z~䬂cEӦ3:lsK#o}f?D$.>>0pXA@+^o|>H[Kyx:kj?#`2+7PD'<"z(r $GV,'^V!"5Gbp PSd3O1{xG/*<>zN)zE?tPU @ h$0Wo!8~ӚRgu"u=o 5=u(n M<69vwqyNGUM=G %dݛ(79n H#=eGE9 %+rBn Ga }ޖZ>&N%Cգu2=J4wBCN!6gPAk_׾3jHT+E[گ׾Wj'5"w{_\ AW ?84c. @}+*ڴr~ܝ?[wr:>i9#']G}eyM-> )51ZG, 񃼮gwQM{j.e|B ؃h-w珂  (dRXR ~(ph{rDGkE~28TDmuYrucyt0<nj<5aQg3ru+!OY#7z;D?DD. ^'Bպ7qX$Ny"𓻀.qysu'Zo9jqN="?nvcO49~πP0* ]5Gjsyµ}k_tAч=X/׾W+nn(z"tA` vO M{js̀O?|s5p~,<42[lٵPNuoc.=}@ uH1Y bC u!?qYC?~$N ' ^֕>=TjC:87r/. ϬH3@GC.u~{>Qz,x>EHP.`~a'h-NEP~B!7j<]\XAydUpD!zGzDDOyb%W>59`(D\h.QQ Cns<*D|-Ntz 295=x" r 4rf/,]x=<:@B X9)frG Pp QY&nb^Hboz9PpY-0HGk"C'Q|*~| >Ԁ b.="?V?k }k_wK>_4ʹ_}g>ԵιKB] 7y͟jN&?wyg=>䫫,wc*J8_[ϺɃ+>_P}=*qYNΏBD5}`AU2' ڈ kߐ(}upݎyyWCA\?>=>V7NUr H$@VoDԿԵEAE׿BwqH 䡮@o:Wr#w=OsKaw&}Uf A>Mt#(Â@9) O7  kpǢAr3j@Z+<HkngNqI?vyGO7Wnyʷ>?^[N=$=q}YzD:P>@G\Ç<>yr\? hoƬZrc̣`[XA6$2(wKzbD :@Q}k_Τ@7 zEگ׾8~.)P?&Uo}VuOn,.D:`3v3?]|Nd7rOYVrgdu>7ЧQQ }|=oUS1pC,,z2O֯@?!suo(Z8PBD9:> D(}[!yS8!􍮀 pǤ@WO&+Br 7 ̸ # y>Ho9JA@  s}@8{ s]G ~] zz ˑ@rU7+=?^{?ChG{DaFWE[|U }NLB}y'rx$C?rxg֫(pzb"ټ Rd uo&@x|Jl[: ~ȉ3SQo"V bQun׾}g+zOrѠ(~uLf]V&׉@Xnt? .wT@}/rUD 1JkvhzZ.#S~=~G>YWԝn`E .d wr|#6uf{ˆ<Ґ"!7Pj. 0(XmQE 5` C\? lnP}y2@zǁc!uҺL:a}Up 9LO~\"c\@ C41:, cs=7*97L{!g\k5XFpI ]@=pbeoYFѫozGQq>xv\9@T;?ޢ? He.  o@J8C >C]9(\fu% A |=jM>ok׾}g (XѠ)rEscśGԹnpML\䴁k Org|` }\?p :8wq@&sm-kYn ]_{)O TrR{qR7jQгM= 6wo< uA@" 8}LP}TsjuXߡETj]f=.!Aw0Gj tD8\@ Xm f%]rP|2cֽ!`Q8D]|ޏ՞W@=?\]?[@3HB*{ֿ) 1Sy$3<9A3I xM }C 98LLz&uwwPwph1CqFQWi8 D. ?Sأ pk_׾3m.׽ zhEc;Ϧ(E nh:gt`e.^S֯_~O~cy`;J Yn[?/;sОC@>&R /5}>3I Ojq@{t;JN$wIB!?!a5^"O݈wcE3"wb%S*ڔ!@|}jh=SD W5\ X_VEuP4rWP[ ׾};@9E+ԡ[ڿqŸ[:PY]s͞3sdqkv\Rxq) 看bn|X. Tj*8w|drn??ֽn}*Tb'ZrYNfxDu[@=>CqYA ]F$>]@Hu*} ::O-QS["};V㹉\@oq>_!X%pg@bLW(wLuS-H.>"q= "oD )"O@nxA>^A].]gQ| 0HT!}8vQCm ; &7}dYeB/31Z 8{QGDapYx QB8M5+rУZ|;@&:}pwȣ7}pHj"#9uxgEvCHg8}oV#G uQX]?y"jk׾}g*)tѠ>_tiΆ;Ӷmt[~rw`|FaOZ7`3)PKR"@EJ| 9<͟5=*?3_|M MkP tr=Ga@|fsd5'T 9PAQD+d5(GzG׻~@=6"W*N!?uɋ BC? {U {?1v~DoD+?W9`HvE^~"O Dߪ蔚$p0?!kэ2#2[ A@-Z ;= bK!uwB'>\]?}$Gu%zkoH^G-\?7|7ԱfE.!ةA#2wC!d (d5] PƢhO?XQ׼Y? #0H{>s@} B *Oأ+rD ֽ3 3Njz}0Y Z}kߙhhCG~hzgTȓ.w;km?@=7oOZ<رu~ ٶ5yN3$N @8 NF'nx؎ٕ-ij%>û-XVtsCq:Nj!~5-ukQ#8K |LRpü<窷<|0.f{L ##\=] ψcd[ "wTz[? 7w|Y4J5Ծ};@S4詹}7fs>VtZ??Yq:tdCkvv`t@PN?_w~y 7р2YЧ~V{s ֽst~ 2cgr ;}z? v4{=.>0pЧz!!5.dֽoޏB!=&W!hśs#5+õo|pX}7P`'ykCCx f{J8o}ި?zL8{TrC|pP4;^q0  Г"pӈM@ :rWgCnˇwf:8?g7x[6?"#97b0s[:?rlx[ A2C 8#0(}CH\>mO{#v\ |RȃA~Z}k .*zhS]~/z+`ƍ;To BswONZ7p}jmKfns}bA^X?hǣWfN w-nKB#qV7~T@Y9 w ?{5 YFDKW|#wr{@t>{?AsPϕoCR LpuMn`#Oab AP/e U1U~'=u[cI]>.={93@y>VG1[]FEY xh4 cQj9r$ $@7 ڥ5G|-f0\>3QOVGW?)ȁ jIr|B^z<҃OL=w={Fp@1cu'!1DW!@7Py.gH[@Du~:nv@&*!7U9pd9pb9=Tjc5`aWOyKM?7QsY'sY/GkbODzj_׾AhS_ ~6+28 GOb8BSW<;Qhp^SiA?L\m YmjrgK&w**r>~ a4[]v׽;#ÓGW1c h6OJn@Є;BL=@d0Cyx(^W9,׻?8u(٨GgD(D]@9h7 uq H -{DS"v@@ "!3`JAgbnObv'pMWdQz2  j8b"uH_@&>3C\>J8RWO8רR- @DKּ'@DxʄgZC)F@@;?=AP_Bhd'f~vtC9>Uav(sH78{@ @EkY\WY:Dz&q( Rwި sy5@Y4w}>p'zcwSG}O,`9Uf?@{(p[ ׾};@H;ϠЖtmTwuW-fw(nܼ6[`˾OKp+ X>=xY7F \æ#!}!@%^GyIA2Q}]!@P&@UpusP #.HSHz9>kTd! n>\!`}u}@Dr͟ qC #ux>uЇ-ix@LOrSb y!u~&jzz9V_tQ{)qCUpYmFa:AS\q3 ??Dfh fJppޓ?}\V7%7;KO}`vyl{e x#(rGr:8 G?(*7}Cq}&';q;d3`H xm+7fE =*@HV$'Y;~|}@ GEcG=>A>̻@HO? P= 4 >pj_׾) hG@h/?hpus毴H5sO1K;/nwh_/§ {7˺o}] i Y~W N"n!?_P?c4>qx֩-Ӄh| )qg_(ri9u3 qx?}Pֿy>\@L9 sw~#F8dM C_A::wFCpo==m!xqHΜp-rEsY:Y4UGʉϵS; a9A*H׽QzFl H7صV.sWN/3=w-;wl\b:y=`DS|&'r ޏ! Rgiݽ{ \oУfV \?H)һ?:wT̊;@")pڷv0>+B vdohAЇj_׾1 h_CETt~9g蚡Aw8.N|';Ia{#\@%up'p i @z4 b՛D=8XfB #R?@>}bj_+kz}G?|[4 Јȃ'^ Q|]&XfB.'P5 CD>G3b?A9W!Pq 99OCH?8Wy1DS|KoAC׏&eHV:@׏B }+µ}k_04\tKѡAf9; _;\Rt~p ~;P>7%s4Tz O0l8oC4A s9NǝlE?_X!~}bqY^Gۺ êU3sϱ5O 8A2׏ɜ@E֛8\oQKOU ?7~q`GTIB!f#y <U G$y?7`5X[@yy"c9. QDPH!H8 ˉ&ADqyH_?&ɉx? Hnu9QAX'|}lNtC9 }$(? ;@IW?u>WCH;5pH9G@@ Xtf:\?}{tC A?&u1 B![mlKּ,? !1C|g#91A$P@7p`V77P׾LAEu3E)UtLݺ!$y;@3맟{uOW~omba#ŎK^=>?:JyW| w}cmɝ? @EXg@3O yPkG?&W";Y T;t7mF]@RN@k: b 0\1R)V덠H>!`HuM #`' ~x>@N=2/y8{J\? Go~P75 'APwGOB/p(..?V[!$Z{!W$28g" {$(}No k<"izwރwm`rA'\?&P_Yrtd=\>Mԩ;(u6#sqߐ㧚Gd$;?H'W }*3ú7Y nqr&wE^(7뇙,GGMU3Vʷ0OP % \%MuAk_׾3M}hS_(r,9wrn#!7~U*pv\R:7 N&}Ju5~08gpά_|ǠO)=2ֿq n83R֙kyCe~3cr7D 82tO0أs[ӳ\ֽ˩Eݷ3Tz't$<"z fx$Ĭ?I{@O=]8@GMC] yaP3HaXru:p >O}<gD. ؛C1Z zʷ8_y =rȓAPj=*f8׸b:q @ àR[D?R|c}<!O6bܵ|=}W5>>J> z{LH`QCZ!飒@x'u' vxs:H/:#CyRO"o,;:q㇚ }Ae[FvwO?Q1Sy?ԩzQxҜG??3ot׾LAW=R4詏M_e|l-p7 r nFP7~WQfp7 %O i@[;oswhV ǹz^3_{1]nЧ;y  |.L*ΟFi/>k?@ pR/9Z?tʃu^:3Or0 2%@(Zj?y4~M&w 4@( q>C[@ %wδˮ:uoI*IK r2,$&c[؎g'ȸ4Ui 4 x!$Lǁߠ~ձ{߽vog:GWֳtJE- Po;xn+kDTr8Cp:|En:? kD^CX@3ωBP!PH`O}ȹ㹮@ zȉ診V"Ahof#ߊyA |'R=)o;@HPwgnsn?kgw}CHW1AU> ؃pQx}Dt'r@0k߉H? Y-ш;(@g0sQ:#.X'=jֿ h2g {Jr珸|ҵo IzԢ2OlB]zڵpk_׾ n0͘z tiwbs h`M"ֿpSg F[?kU9E91(s]n\L+Mk}޲?R[slٖZ\rяzKwž.`<R_qup|O@mECXڷ>8. >] @}qΡo`n?]@%-B+pkz?e}sq!?DqD0ONyYk<VT{$JHw㻨="<"f*DD SB@g(@Hk6UoHw@:Nѥ~vӓoy+`HpzY@-G]2yOER SL9|Bzp "+"đZog }C2=ìrk8ϥ]l^vgy=eWG$~ڟ =ѧ?sb+o!ֹH=k w~BDUǏ0/=B9-IZ7}uu7j=Zw;@ QA[Ծ};@"ӽ^Cm7]ajoà~b՛z?(<C>ʅ 8ө+U;fѲ;Ur? {ֽZw'O-ik??qd (nޏY~^qN_0yYmsUUq#x̺~"??; |c.@dqٶ}ݻýi,:PXV{l;~C!" {@ x=r׿(8 $'9'rb|#'eD4Q{ՃQBedգ7\@A׻o5*w5p!zsv%CM(!''jQx>)B" ׀uE7Pz8<@*@&RDOnpb)SHבSsbbϤt\tl7юa(sSݓR^> >jCC>/AQ' L3~*o|q0kViO}d^ypыH_k_׾mP_3i9qqy#Huz9^j9;ͮY0w)s\ZyY\Vd=5a Pw{/9rA 珯 S@qOD>MgԠ9{ Vc^Dw .w'dpм;zcdΓ{MW!?̢N\@-"=qx& Qyw.?TA X<PּIn1"2R) S=]z.z =r!H- ]@D (kOt\$z RSB1+Bu>{'zE6KW~  豹[?q3A.j!`PyX FuX|S&CyhNlt8D?cG@c=GI"O7?kw%S{FvoުYpQTZW +7T'P ^/q! GN :wE/@'qHoe `1Ty׾i/jQ!wx|x5D qԈoԀfSS@@z }1\PC^z:q.G[Ծ};@%oz ߜ=7LY?t\;"'k=8s)5Qw2sS:}MM\߇㤁*@ V|@og77\BdurAM=f͵tkotǁϪ]~(@E\?&[9u8Aas(z??jvBv)!w{cyDfM#pgMEz8jSOU7꬧y*Y9R$*8zɸ\>`'5pmA@M@ E rUɹCCؓ}cV@E|:?)[@@A{"=1'@I u! 8<7@z (!XCOH=9){[]P\@QoX;?(τ}KGrj?!O H@z玮A}ͻyuDOk<[ "\W彺oQ[@uo̥''=q|t[D;D̵O}(o!)Qv?O\>yoDf8~T ~|=+($p O8$by~G@u أG?^3ŷ@Q1Wgu;@nDqhpSGZԾ};m |FS̮ͦUuz}No4:|J1F?8zޮoPeb1rʴbO{ |JsL2~3Лx(ֿ]Xg_WVqϬه lcpfd!? \0d5p}.kqGמ|;k7 y[@xP>k> 8Tw$$9sqPKD7!ּop `Gg9CҙJ@pUZ׿  OD$N 8ҕoH?䍀8}/k 's#O̴y3kQ!C.+}Kn|CME>* Q!?ҏZ?(:~Q@^X5GoD9Tn4u<. DON :8>(? >O6tS__p:EL)IxG#wv) B2& T TB ?(zX j*F4S N!G?Q# > R!n!Y浂 {gsf r@O"Y !iC̜>5dC :׾}:Ӵk)Ӻ?6>W꺷*:~L7׾Q٭G^otl L{ԁ -.xrm:'g A w 9P1,r'PeApx ȡE+&@ [ ϜԝQ= @мp̏?.YX֗9б8- K `^6\?5  MDr*+w){@Uo{duxb}k"(DM Qz8,W@Ԁ ]g#< 5=?9rۇEO> x7bȌ܀ u:Ü\T@tz=H`}upMɁODJQ ǔz!>ܤGzzՕo801vc˦hxgj)ɡ} `h rqCs裫ܯ*=J|NHPV!@y~QAp# Hfe7ʌoc5| Q!PHjI/_G^Aw~&GSwuѫ¡F GE_?O\{|@k_׾ 6}k?7:Ϩ9s9bN AԀrPl cӽ~Ek^6l[oꔁ sc(zdo7_Ws;.;bS w]#?M#h ?~pb5W¬|7zwMG;~F\ q~Y׳ dr3Ϝ?cKwY-qz΃}rhVY:\@(A|CO\?̀>>}f9!~,d[HA"oԵ8>丁d}0HՃ|'s (DǏ@17 {@gNz{qS @WR@GpyL]?Z}r77d[I'P.\>ԉ?.$߈G\>Բ:>_(! Db%\\ODTRJP䫸L]@QWGAOW@ !p[,Rs>oG.!g.w~vvG籧V* ҙ"xbЇBj"ʝ@Kw>QGtSSBY-:vӼ=2ĝГ=*?lFL3;:8rW5P(@P~3\>y7*upc9k[ W~M@~Yu! g ־)٬] ׾}; PtiPV6sxAPQ@ OS'бՇ>ݻZ'k̅O~xJM挕 gԘ0@(ֿ9 )@78dw-},Zndg͋E`.Ϙv̉p+,r  .;tu۽=ݛ-Zy[* r&f- D]>%QnHNB $ZW \QL yG`Q P-Vw9fɪ7rB! p\ G@z9,wg?bpb{@r7wON.&f >!uΗZ?8|'u4\G? :r ' DӇ@ĐD qxA H}1x$N;I~M ӕq|4W<pxpíszɽ獭ن7zև޷:=k@o9:"=SCω 1D^@T*Sؓ"U]'(D Q~f'>9 qZz(ue߼0cY1 JKg@@r'jqCD [-H|Vg91P uVOqԮk_׾ hti@3Mçgu}zK @, y.'|OU^8CP tA5 [bnrNi/?;@? q:+Мh94AꣽяǢCP6׏7+>hwoyۧ;xC{ō{w| oTȓ"6'N+w?zGr?SC]vfr'RؓC^Iz?}F Ob8~!Ѥߤ& !J_bUxKz~&W+H]?%rJ> ):r(`3>}`дǴfGE  p{ԑ5p"Bͩ]*8>>^#yDYMDr #n`ǣԀ jSFvXÃwC@|p]}M {k`BbxD^=f) SB8AZD>{d3O[H=W̤R ׏DB[D@] 3r O|;crE/=@CT#K||PS,ԵXN?8"חq }ki6z Ŵ?Ld}Sp<)#Їo<;dz{SylSS='1&g{7i@p,5̢}N|.4 | \8O@'VX4ӗ2Xoъ݃3po:Ꮓ  (a)\@=`Ŵ{kѥS{:ӝuCw7tg#w}'P>0wGAY=|2I]@.rCdQ5N^P AP#KR~5VPAkJ=??y>9B u|5eba'q͹{PrE ?y@ySD=JED]5n )Z@ڋ~=B:'O*GrB8~$K: C @5{3s\G>>C#qf+#OhM D"k""zRǏŸe^C. =*C3D/?DֿoQxAf) qE YN yP's@PH`P M@OKɕC=:z3c~ @+b[}|L䬀,<Ukq k"QqUԾ};@oz g _G | }>9 B^RGޢ>;v_cy,<W3}бw5xpWΜ",7hs"Tq@r㲻Cr:}׏cfCAg<(!-,2 JA l;ljۇ54t>s t&}s߱;v >( A#b`uPr}#J8{r(߬&w$~<盂͓=?4 p1\>!?)X&O\@Q Dip WCG7uP'8?&AԲ.@8K"4DO\AW+I8<@y~NC<>C=?jrj*߈b^8{T̶zQe% aq2D??hӗ-FgԎ o zJЇko7DX\{<񞋞JY}.')!C_?Xˇ\{@b!ңf=<; 3PO{_#>}ym9b\&Π\!82P|5৹pr0'f)\<`Pj_׾Nkƴ lݦ?T5 za՛DeCyoz:_{>ih:Hz>ڏsk֮{*mڟҵpv猓'gcfr{u'+[^8s mSC~k~1 [w R>tps}L1c=]WY7o?~IܱZ街>5t:r==YL:_uW% p,@e㇞Q>! :r('Aՙ}o<""`ր"zu>ΏP'"}ֽ?ԀY.~#g \- C)=p~p7X梮B'א |ȁ 5p(rztш CMO PAMAsQM{~~>(YG$Ϥ飘7kJ=A @ ] jO׾Acvz 3Qi۸9!9VM>=YWի;w=}B{yݽus3/7 󎊻fX{lj`%oBAoZ[|z`t͋~藺v;.5_n?: e|zߐ9f{WuMpJuow)wPm@ rj7X#*3r@<2OM~YA!*\? 95'rD-'YF !h_]?䅛?|yX =Yx󇜚~tFZG#N"(] !q,r9߼yD 1CO?tc6[j> |:3j7g\7-  xR~57=Gu!{ȫ7~sk،Mnܼ^8{+b#5:q+Ho2xnz.>ɉ$#N?>;@ >>Nuыj\@*W* jԈ x 2 Cs!P{^\g{?ڏUoz)h_`P7rJg|@W5.jO [ Ծ}; ADz57M{Ŧl XWq=\v^I#{[Pg֣C{޹Ņp-ZozkoGV^S 813p?@WR/ .-4Zb9ޢ'ug99b껂,7H|3ͭ Og׽xgrLgΞɝ?[ +~}}cr3_ Y#WO`'byD#@(γ?D PbM*j(z5G Oqҙ@z5p?C}N ru? G,;~93u  3ԙMDdP9 ?x\\\?OD=䚦:HA=+rYG> 8}N`!r#p(|[ΟД OeЧM5ҍ\7C }?4a9s;_Yy} QAO:yN?+̐u-{?.4' Ծ};AZS6j3pl GOr]=jC/>z'Gȯ6v6~[ jY>oaN@V^ޥWelAe;z.|ݠ>[60dYl$uX׿cbc\Lo7?T106Ki{o{{}c' WwqY 班Nbۂsf=w߶Ί=B8 ޛ]ve狯o?| _{uܣڃzbnUrW5(Ýr+A|'w؃(QCo]D+@g1;7 ̣C򈈚?ZsC.Ɂ> Y\A=kT x 4TI>iz0(8N78Z]|= !5@ v k|V.+n5(鹘7@4_ Cs\@icypb׎-zY655v3x!/xS?g'fCfzG z Tdڃ'Rgpw}C35pՈp(y"|C }g@~E1?!jqp'ź;DQͥ7GlPS?p*=(\T'>^ ׾}16h1hvt ޜkFF$ (jֽ 8s:D_`PD8om>cpgG7G =پ>|z}9Tҵpg€{{S{cofi0d9y.. ?)2:ֿqޢ'g;?Ek^0ɣ;@~Dn'̜>"H@'nt|z[~꬘6Y lt&qYN4tgWu7x۰kMxpbxM߹cn < Ar@ju,=D ooj9@R$Q`P@䀛k(=*5 cÝ.H;^SC.~!I$g@麷JIzA f~J5y@@"fpop xYN{cnҕo?!1TL8D;R?ܩP쐣SH!"^;@YأysP#ᏺ,&:p3Ndʷ8]oJ;?3kO-(>E(yYшA:uDDp&"]&=@9u*8HUoȡ5Ij\BP'Y渢.;=* Wd SA@ 4;ZckɩPGN_r<. J{ Db rYFֽyH|IV1e৅Ak_׾-6o56g`* 21+B$ހ?3;-5 'HODUEGk\Q{c!#*9/b]Og"{:yezb՛@!Eꔝ?ߢHC~ >H?&8ݹ67?FWm4|Oou G)>1HO rG@POԬ|ODH:~Ak>]VL#y 0J@ yb੅@ [@ 4~Cܑ;@o" *8\8g7bfsqx@k_׾?R%Sj:-A#. f^H>Riy`Cv~~L}LLPC-o-\Ws9Ys@"Zb(,2` Ӣ_K G@.>p7Do;?ckl鞽wzxbOΟ]>. @7ga>| @PsY̩٭?7;Ƚ Гn9Sw8Br ɔ r@PD"x:xH0B:8">Ul-k@jњ !@'zK?GkW}k_HA:ӔPLggB<:5sB&@G "Zo=r8^M~ MQrlso9ʇK5 L+`ϒ+elXدuM|_ ~ ,2'>?&=s@GN ֿro͠U[W?95lnች~@@86|'Hh<ϽzáM+;OupHBo&U<?yz5. IzD8<_ ,".C=k[?A'|xUg一CC.=xP@D@ Q`% @5e'WE*?}fɭQKta3;Zȉ x@V̑:85b \O}WpҺ #P#JY+G>cҩW| .] r@ySCO]?(?z^[y"L<tOSzh7| Yb<GA6=79߼ c tIo>-}& @P@ @v5[3|ŁGL<~E5+ӇYr>V$g ɽqޏYsC]sG{Zd=<;&<ԃ +Pd= 1rzGroL?Pk 84OJ5o ]8= `QAVOAs=uCEGAO98졶\AQ\#"?5N ~)}#GM`'D;>Q$Yk<|e3FgԎ w<vBwQ#ؓCiO]?PoPkO'$ (=!\NO!PD+3A'Gg }jV񽀞}==z3A@  $ЏnDND[7j`O@uoRgN <~v&"g[Av\׾ezko.[ U~2 \g8~ү@ rk[?(z{_4|A<>@k_N-Zs`P,3?-{vh ^?W, _[@cpA~gnҩ/x/77ovX=:4@wpy/>|ف _~Sħ=<5p@p%@1^~"6W|5 8ΟuzpP+!GtN>D] 5upHWyN ѣj/UD$Gv,X|CjᏮxuD.n:D G} W}"'BԺ di]F]U8{3'CDGČZßF ?Eu>y8tї[?=pEx>lyDy8oܳvlb3z{}>*>z(TR);}FF(*@:OIz~">`sAgm&ߺ(Ч u[RR)"FIr8)r, k ;@| nj(Rޏ֩rɑb#R_ }=KC ;@Uc}k_Z45S1x3$otiP~ۡN'x}ˇ$5Mǯy5<};ooaĎCgn3gעɟ,=[E=?_yLNwhF\`ЩxYeǕ%{_.źb½je7ٟl}wɤ%FY2ңs|M0WGjql ~>̹AkF.}~ߜkMG>0>aLyq"fS7SN޼@.+ ?XC~ek~+l>e_>连itG{* wgMʙ/o1wå7UO&P}#2poM?P{ގio7oIM?0ϛ}c. gL> ە3Y{os$Xu_uߟy%Vs6 OUN>\0z*.Y>Yn+G@wrr{0?"ud(;2{Μ?$⿚cylV2?&3˽L&KKe%$L 푇#RoTݣ942F0GrU6ܙÿYT)8et3AUn:?Y@v\FŲp&GAY?zk'ƿZ㧳:묳l6y7[zdH!"c#e/K cj=VfFm {#@90cI$TS 676h<2*?>Y+o_΍W0u̕_v2ylhOWI=Fub>5@O% TG,7kMJir^4{:CWYʤ~7,Zz>WWPG1lg'ӵE7N6ۣn:묳\+ n棃oj4B‰cxR#[0?9Ȗ'u BH@o6{=LQ.|*MT8B|d&N=W&s@>Ãl?dȃ>Zp799 K>K{d> *K{ayuأcN:XcR֞ Īƚ,QظAKvL3X?uYgu2=f|3"A,8i`Caœ $efΙ͝YSoYRB,<[VZދh٭|gܺ1)lts΢^Y# oW1U% PJoLEA5u=SwTZGߤ&I~-'ղݬ~ɵT) Bew rHġLOCf?xد T*˳̀zPapf:묳:7 SXA9LD4Lr4I'{| %Wcl'L,L98^U`ƑK+zǺXnMϬE'HJϷ~`:6b} ٷ$rbWӗ~ 6sC+!hOn:C5`w8}95eޤ][EcJ$שmg0q;fn^:묳:s'| { <+}[?6EL4hH gcx`+9dJ =76?\aE+k[/|g%F=RavI w*1Iôse<@ޮԼRif7c !¼9 nwIN!q4;X(%CAUg U`.ѠD_P_䳀NkskRSk;ޗ^=o/_q:묳:7c5~pnv6k%LY>BRi\x \=9.Թ<y Z}!rb@T"ELߕ8Vy5~yTC/dy *,%?̜5 NA`+rA]fn sg̥:\\mMqHsDuWd:묳:L~}{f$#!B@iv$xs =w8yv?{t ɀ#w DI4:W̡^nt{Hؿ5yzumJq9+p2zG}3@ygu7Lzitvç*bTIKOĹt(G#Wq4cA>d_ pZFrn [H&@譫C.m,s <ҧHJ{6E9=fp#}?@F# =P/+I @Yg)yw+-yPJ wY)0S>G Iw[/ 9B?]uYgu ,$wgGf4\ [`]Pckq|r׎CDȬl>yܷmM"R;Gql<3q%qa SX =2w8{\Jrچ=OMV9"&.Mc}pKs r8H?"p[X'ݝ篠0_yz;QsA-@yS(ܔdDxqB)R C-Wir}:Rb>(UڏJBr*6.|lUJ:aupeH_+L$Nܯ:묳~m?g=Q3-@${naw8>0e "&fEz~I%5p NT/^d9|sSo`un}5`Oe=/{goKY9/ ?aPASHdP&-g$(Ro\QUk@cb4x eeLP(*UvPi1/䣵.QJ]~hʇ#T2zi<韗%TPqC,ЦRxDFi2-';z.r%Uiۡ_KȂKsPUސ Cktkd׀ Q>yu2FO<&\rQfOϾ/ gtp'hrQ?RZ@~uqǸ~75o])࿓z#x1Q?ӱ4iߧø'Af,yDv#A42#e.~VswiUS:2Լm}:}Fz\mvoj*(7[`#Ǹxf$+(X/edm}wQ6\ vOguYgϣ> ` ypE ?l6_=hRa![I:aԏV9DivbDth>‘뫌5!T`ilp l228 ROr1+ԲIW{>c;nG85߸xhPPia7ثMJRhc@ou&"lcQN>ղ Ry6TrbIr)hbqUum6#%n! ٣DGK-Ò`SվSWs082(Z]KxgξƛX 1$/k${lHn~;0MP&&''>\q݉|RcJj9 <o4ϣ!cc xOOi=VnNcbŠ"2`DxƱ"&SFץDYZWFHeK 3܍}R_(28:rԗ(Ӿi( uAX:TߒB&- `-?0hqMuϋfa pNh<h$̩a;r:P:묳_H ,rK:AdDa5,L5/<{PDrge?=~<~6z:%tɖJs//TX͍FlSX3X_8Kbe}S&6d?@"E h,qc+mLcyfWnmJ!*y8@l@;~K+}?`\\R7]9uyʑO<uo?/Z Q&'Ǡր3?TLq)d|5L&H")zǾ;`A@bs% {);r}yw$ V 4oD$R&qu/zNJEz+-^Ysc,*)l(ouq^@3ق<:K2xg,X:V$(J~rc*CG6 ݾ}Ox%2,F x.hr~ $WLlq_GX1 p`]0y -b,@،d~\r[OtYgu7q2?W2h!d1~j"v:GЊ x;}:˖Hn4ts{X-lXN.,qhb]*cG6ڸT)pB4Zx_3(VȦcPR2ʞ wC&g&IZnҸ>|Ҁ@?\=W7𼓭~<\Awy|tGFoͽ9o/.0_,v~סoxr& *5b9.>^OQrl72 Aw6L) ,GCeȍ:1=VYl8쌓oS07'v;=GRnJq)Q4NN~fp}MK3;w׋euT(vk1UA͹!DEQGiH/aVOz/z P(Y,PB(dK72HIZw-|SHN_VpQgI=YaL'`?q^#ai`[j=\.`]0'`Q.UP@Y|?^۳OW?JRpۧ˚qm]jΐuo|y@_q(s69b6gTtt"COoW|l%O78^ܝ \guYg.O>` | h1dN«SW<}YN…_ Go!tt;l~!s*U*kGN~#~T֖G{X]5~8s^ VڙDtF&N "k'Ⱦ#S嘔cL P!ի f'KsY9$PnpOFS&Ji\\Yh.kj_rq=u K|fR+7GG6D,+ ''ρ(}tWp:SO1O}Tȕ2e@m$}23`cW|,D.zuq1}@[ؓEAwe;/H|=Hv9*QoFl[ˬ KFO`[zc?NXGd= & щ~R64˂WK kq&xg8EH$l eܱ?pqG1sR|tozvz ^'n7mؒ e-]0(lY/l ukd l``*o+46;e䇌[@ הj$`.dޜ} S}>ַx^VYX:_%ษ}8Wҽ_ʰRrAqgMTI@:묳A(U_#6=N6zbM#áZϹ@‹bQ0! ҋ皯;mϓ/;P?@{Cͭ_ =ө ݣ@7_{iSXofsGn Gr1'* (qOXḄS0_V l]ȽM3+N9x6nRӫݔ*U`JhzU˓4y?tx+vGrO`s<˞Ʃ TVfn?ZyhI1u#e;%;O$4 -75]9VjG26|PF~8bQc`tu=1"-J”8Dcȝ(BC9;lX5y~aJXr%#>fȻR'V@bSϙ8_L6 d?~eR x9,?_dS&bL?44$`?w!S}9`T5T*Vnpz@q|ceE쟂d>NOA`\guYgocgG|Pv|7 6-+hg=1|pB8iF.Z!^[nshPU:Jn?zBY_L(ʙsea8;#G6ݾqr<1:'OC07@( WJ##hmI[WQ6lrB#W3ѨԠ=dL2cm}9g0 i;?_A$2L@G?j;\*!;vwI!;}E';I6YguISξ OBl1A~@tmú;x} }J!4uZDx5L??wՃ(%_ëo9:ĩbF-~^kma*;׶^2vvد "`Nv}6RUꋯ드AƷeȷ/Lcy[M;y>hʸ#%Ja۔R2R)VC:ʢdָk˷qOG*Z<~E|AŎQ:+~havvڀeeXǞr3=Y THo<%m_-IZ(%mޓ&e$>Rvo>i8h[U-e}C(YDR0 v*蠎pGR@^Ε1XY8Dpc_, 'Oc%Ig?;f_XVU&m082~Xi%_#F*O{`Ð<[&7#i犯&͂M ;;usZ*H!Sْ+;lI`?Aǂ1LX1#Rq 5RRPUp!bCy3M9[:K_jY炄N} /Rݜ z(0 !p~3YˎYguG;{8˦?PGNmw0i@'ERвH@NM h=G$p{Ќ:r9`*_e~3i=4zk쫽59<; hT!?(FH= s錷7@ٹi,oãfD"s~@,v}sϖ36Gjq`~Q篍?r|90L =4V ͝`q"bd˸TP;2.6+ ߉u>V.}Clxև@>k_P9*=@lZ440q>7c[Il9"CfFXԡ}cfQZ_srYO= LLV2F.20 [C%.HЛpڼM[0>wKG =Y1CQdd002?A?je4(VH6P}Y7WTp[GYxA{~T Nxhȍ&fzr_0 xA: 0 *Y(7Jyi2Ǭx{}m2]YѣK?ff`p $-$=#=-YguYiOE߇c@q e:&<6Gg$#pfu4귃'r|,5~|e׎y O*)](g6$1h]ֻWw|m<ol\yv/_֛;C7 }vI\F@) Q(a*yye*0M~~THZ*%UvA*NyA*pźC-oaN_d{I&OhaJmgXom^ht\DY,3 &AB L h*I e(A}FgQ~^ =qsDd!u`0SG,y4U=,Hds 3:(>$u:wD(K td+DR4rV.*nFRI>@05d?{jφ(|L~2$rC07J1t?1ݼܹ5#dwrtc5O Ɗ'Z*Q+^o'G13XyFn] 5^|Fu:2ey\&P,\XØVQjc$pTCԓ^ǧ\N\S L)Ծroj̎ƾF={oGit>~8D!DwL:묳~E*Gl#_C0pxԗT[Gzv~Oq،w7tv#F)Ak-7NrI/Q =^# |b'/BE6ZkٗM<ڿG6ټwfsK'0{f֩ ʹUZ7JUm@o\>IѣWpv9fdSQN=J>l!ZMGWϿ{K 27hN˛lꄰ0?GAa,lnYI2!a@oyD'|=T3{Ꜧt\L >{ʑ*B,H\HQ}}eϳΖӜtZZFZ,mnZXNſ<}H Dz}Y>' )Ҋv߶M=lrkA4H@vڗh%}\0uB7;`Ft˶:ŭSp̖w)b_J4' oG0- f8B &GjUI;4 dWH\mNyVC,/,:|ϰ/ 0nbMFAp[]SWCIYx;:jpOP.Zs8 :gFrb㕦`RX*,3e14hm8Vۣ烟J8J' @uYgMwT*ٳs M-xɐJE Sm<zf^R@W@2jzQqď)4^1dIZ,}GP6;iJ*yr}ﮤۄ 4rKdASrJ-GK˹F~F[>sD" '%QX|rgOfw4}zu$:&ܿxi Xd`r˾"QUr嶎 8pf+s{`zOjLR,d1*a䇮ZN]@Ԇ7G>ԕR.j8G:ŹbT!<2<4/y' r& V'xA$Y'@cg`:E>V?Z&7/ll1|P>](!y4_<>'2c_ 8޲|cH{PD_-Ms>,Tc<.J@ #RΑ2ƑԋСyA?tKL*JCnN:g>1~`V_Jw6/ 2xaxaMɥNo>˾Q@eS\o1%3jk9_%L>gi?Hi|G߸N:묳:?jhg13;=mzBnTVp맷;S-O)kJ I"0ȉIztlK玥Kt;/@x,7(я?J=˽ԟ?f4}2{&˂ rF޺}cf+s[86ZKo >\4m/wKYAz\\&Y,#h޶Pr=z~ԵSVɷd|hɮc'gNsJvp|V6oytTz ETm1X(Wu X}.#`Hslj;uNg:˄!^DuWqD:eyb*M1%S`=*mI S };y)q[߶}*%sq(y=@ !L# 2ΓI)~.`n5҅Z"tA*U8xGP2;OguYg"gx?N]e)l1XaQ|x:3'A$0I""]>7.jLGO/nFQ\F[Jyxt3_KK-RM``@L(VzG_O[I9UJU@0קd遀cm߽l豋|P#W)=c˧pcLaйuMqH*-1.NY~8hy2;ƛId)L#~b 9 &!KN|UֳghHY'QODz:&BI| xGio 0佢>$w6K#s \SVߵG8Z|[ƍl&P2:``'Ző̱$ٮCTInۜT\b$c<<>sA)CtS{<+^lb>.^5?){IL>(l'+c,e+*_ζT)*kĐa>쾒]Di7Y~nN AxV[&>sD}e\[JK^>)Z,2yfG2. ncvfn_| ܘ&y~baro> AP Tv( gG)rfϝzlxtyۉt~ OʹG_G?9|dl M%mRJ+ dE?c\uΛyۍlDŽ/9QMʹgtZ$5e2wY)}uf9I (%.YN }:7,?;i͊.|98$mi蘑4%'!ӸR 㘼鶴 T769'| RN5 1Dרo T mwo#WkΚk GFvo ==ƾYn*k?rqq}#fqd;d:o+w.Zx.bS0\biaO.Η1 : _U6ƖbgM{W[);;F2Z? *H/^`Pzh)uky͒ciTc|iSj݄C >RuYguv> %[B)XEJXRM ƣO7[SCȌ2/]zzJRmYTǎ_^@Be 7q|G8ی=4NnlՔsՕ[i0vY®J+77$)v{kGG1x,:cTTFn_ZO3{rn `f`Ac$tK{7p\ :} g<'4>Xs8\i;=&s_yܐo0 r:7t+l*c8BnNQ?1x#,k ,YPS ygǩAYgu=~]gިy~~ 74ky:%?*>lw %FՆp\~M4XѺ@Yz_ƃTR{`6ol{tUl'7Ԁ1_Ge][:>ulo9,?tεktPD<:&y~u@WOakqq}=D;-EcXߧWrAp$I>,r+|bv t|, 0 $LJѾZ9=J* 0˸DZ*I TF)2a]J_ٰF@W%+۹o90=#mL,9Ķc`eDs/r%^tݱ/gjg]1mHS*CVyOnD!kŝd94m)Y$Мdotd2X 춎hQƩ5-dh\2yG3Ρϸ6xW<1s[ّVw&x0aq-DYguٯ*6/KDkt[LڒRX\wm fx!ٛC'&l DmEX7/x-#rdϕ {] i~8;u#ܼ^X?~< [SS{(e.)oc82hύ>y5;1hC?pk˧ӕU w9Fʼ6fj5R:|k { I¨fqԱb-q!BE. LoO%waV,eG 2=U'9>RK#0d휸 @a r}7yN-}~$2*w1cfs Sˎy2H:N~Zwγq25B"`UPpo(BB"Ε ^<9ZyThtdzpH"ȬҒ :5_ TMܼ4o%u&kA[IY0WaẌܖyDR?Y1{lS i^M?xf.C\O57$fW?b7K:οUF3s&\Gi|ue)~SC `dyꀟ:묳x02?ݷ mC5", )<4rp`$ wI-4?,Y^s1.]\-?tiS2Tm.³X[.meU 7n%l9kQ-(6>H}{{K?} X^VdN'NWoA=٥O_l/[*6cC?_ _gO:} XA)zU _ƌR'9R,|Sz(i(ml 7cc[IPIcu_x#>rZD, ;/TĞCerhc ts}WuI  CMJ㱸m95\@I3[S'D1yT"%cQY1_1S@S,\B`XKM&ԇAgng%u5ˑzmp1>!.y;*!:A?]L<4p=I54A^~)w9?A`iqCA de# s;7T\1@cފ*b\E1)? HK>GNxzı̝{:묳#*͗v׷p} fp@Dm7BGc{?dz}sy[ <~Ǐ~*FtH+_É4N3SF[/=ƣwÖn?v?i_> ^&L#WN-lB# 4͞aIo9<{F;[*.>J9<;J5^͏Ѕa܇Ik< 3pm*af LO 4e)bG.yHgu=pzxb)#e9:5$Ƚp$ >.\OLZcoRng:~(8Ĥma'v饎}ղoYD'{mE2vzț3YEXtx 7aH0(>mС=#c橚욀6}Mr@wB>ơWlq@V-ئbšd3߅ZlG鏠1n0"?xqQ]p5$t@q  O&Uǐg!.O*#2 1[ t%RklGdO$`c6c`h$.l-4-捇"鬳:?k> qk9,Kc4+]]1Ckzlz=q@"LHw8HMbKJׇ3KG_OJRKHYuѻ_Mgftb]xXnlB޼s~~9|b#m֚*ƴ(ѿ1aTO,I='˅֞ wq46F rM[}˷'5z=53{jjw@0@;Җwr|i'ȾOXgݓ\*Cb.pV\-)V 7ޮs~fs}Xq :JTe`}L* dl33q8ޓZ06I'/wt x,VO_&?XLe>kIxcq:&;exyC(%i٭VP7NIV6Wta_NO"f#Z]dT! }.EOJ+'*ˤ,MmrlLN_9o兒y>_}처nPCF(s%H]٬d Pa 42~Xl%&J= ؆ FPNAESc%")(??5Ƒl#|5*WFz_x7N`'ϰ5eJ6ԉWɅmnSW <ڿڸqngx% =J_zn;9TKݓJ3.TF43zlǣO{=Gn_^ޜ٥C}՗~ݢxSd 9<}G4Y3~V=GvJS9hx0< BŲvG/i~Pt,@^>jܑ5R >76}$JN %:d>e͔Q|iTR,0cvjK9{1{FHt Y&Sf'ԥÔ[vov * pxԱi#ӌ1:TӖ'-@S"Tf(f:k f;/年s3& %Vgd%7Q1YB|2_[)+É0}?}O`9l_xy1Iv?6gFjzLPO|/IW#y(\d.nh)׍8[ԩ϶ hRpH`mRmH TfFJ^+bX@OK%Ok<`@O}?~8ZW2.MHׁE%U88uWJT7k9^^w&n9X /UAz<swH[G$EbN*{f|;>X; ; iOW1Cۗ$ߺ5 6ɓe A G߃)%O$.h2YyLV%(o:2X$X/x9Z<5』fMt0NLT:L3$WbB2~j0'˸j?ptw鬳:?jhgjWA hkFj@RG)<[8d&"&g*/tns҅5IL3?@/9VMeĈկ_ęS@cL:Hhj~4a2f0*c:8MS2?֫OEdTGݍWKÏ}.?te(lIjzݗFeRI%RRj*~A*efiOyߑhTOB0a\ ujĦ Lq- \5Y*t}H[az2rܐm+&' $SCn JQ:b#ccyҴ\rb,0 ysKKø?_i|{3ciMUCcKԗctT]_Bg^)Ĕ-瘶O|JL͹'sR-!Qn?"S4 jk 0> ԥaY\0Dӟ_l/bxJ}%/["eɶ s $ڡ!\g?܄ǭLsol8m?uYgEg2~B;ߦT3@yH>\ez3#ў7N)`9JϽ(PO[`<=$n4B[#=k=T_=6P8^ȵW T{ TJ gǿM$'e}oϸ]F7}v/_.g$%(O}^(]d :eϯI^`GEd<7j0zD<^%(|py~tӠ!)?޿\iLLy!=Ygu]~~3m k`_pAtgN4)S&gfxÙFMmb3%Hcv뫧0QRJ*.'}+e}n6yi܋X^_ehmTVO ۶B r8dղ?C㏑j}ᅟ ?}01F}׶fra3l^: /|̳[EzVNL=߱F9Z:*@SR'8i#l#'Rg>G dr"](9ƶ(/?)FN}ä-- Rq;h Bjӱ3ۀqrƜ4rQVHOrm*31chZ[j~^)@A) HK]\M$}7T}NXܸ0m`ϊ!)ŚBi9v$VM~SyX8o?Z*HIꃞJ.51s |,Mꙶ]:묳:K:?s~;asPGMc8]@vQ맶}zIN o!}\fbPԼxk D,z9tHe3:tM"FDiWs/TRU'vyk0?̙*#נQte̡ggoyQ}1|~7sぴ=1;D}h7 [7w=*zM}̏~70X=C*FSduR#"5kZLp'K% d?^h?ƒ9f{Z+[n9n|Gr]u}Qˆ27) 4?"x3)/ÓtYǩ.gxxDz--H]VGJcٷ<P6Ro$vv,ex|f>K=v}Uf-f+8($T7e9K0HT>GcVe{~<9L xo;@ A*g 3͵B rqw¶~#(QA@E ;a,٧>ؚ9j??MY8~s֫S!h9sX-DOn]J>@X$ ?pCUctYguv=b|=7p"n=h%}g#4cO"pƁ^?6F(vgn~˷ Iך3o̞*Vsevᆻ;&ބ Ro<DF{>'g4M~kG]0?rͥ`>\k^pj[|O47wր?OFI?Xَ3Vv9ʪ6uJ\E/VmtZDk:mӱn&m@`m>bYL,P͢gyǶ?Mhs?=fYfZ3dL{NbG36Ȳi@N\5wf%2dZ[ KMx䑶XYGmƐ<é.}x/ϦI TBDvרfq!E t& fdm lK1=!D2NVRwSr3X#缊RA1t4͏FL9o8X6^쎩l #fN<}Hz,Y98gq?@(K~UY.g,C&Kd1S V9~:묳:Oo8YĖ%?jLt 4ٚk ulnqߙzBtub_Xک4B?/ ?r9<7 N6/]Ф.dY]0 @Me[eM2?ӭOz$Ŋ K[/ߜZgsf4O,2观~v abG|+N#b;Et6wwq];AT$Kϒb+Sl8~R>YXKX۱%SbQDbDQYm&v4oz3A&¡;5M [&$aIBb0qmA"|f!$c_`(X6 ^~*Sx~GbX@Y\|WӶx<x +lhT]zdN6Qv ,Htfaٔ'I4Svf,Ye8 ZϕNbJ^_YVV!.ٞ  ֱF78X?v)Ȝ -Yu{hF-$Na&%KSEEm@,gΡ1NqL?APoĪ)l:ŎfB&i)_϶?Êğ/D7u:-mqB-o$;F q3'mT^k怐'/<}tu}C;_v٭GΏziL@6}TzW4fa=PQyק~7AMPu=4Oe PXCe涖C龿7l^WWNْZ:0ui®RGOTg A u}l?8]Vzj05#1ۣ]܅~(&Is-;$e[V1f09Zf%c 1hՌ!',XN%3vsltS7 ~I'H:4&IY]}ui[#E#Y0. ŚS` H$\kcǒW$1!\RJՀK/QOׯԌ$qw<~_207 h _v { I{@cv,dپ{Z;m^ rO @cP6o1yq_a1OaI`)GOl8룜Tj >;JP%K{|Ltܐ #R-uMTZ*nt?n\žIqix1[OmFY<h sM#ǐ%qXYCU}Gֱ@Jˁڬ!*"W@ܗ7ШxKGӵ;xJ0Tw}ŷtj-u~N\rʩB(nȿyS (@ 0 W$%En<[}nGnD: ['|';7, G|T jֿc2XdidUx_XS-{Am`*iU\9H>S4Od]-f 8Z%yFZZJb0Q8 UڻIj0 VPt##ߗJ9ZH5OR.̇F[HI'8/X!؏Kb]aP-a?DnJ"a&J Ñ$`EԸa픮M4]ȗa uwdX{ kgmֺfJS8DV[cl nep f\`t@p' 1?@4~P]mSxWer=I]%d$+?ڕf)Lsb-u3~< $gaWT{(``3/'?2#k6h6 IO qla|@ F0CӺj³AC~NoF{|v|ͷ \^ڑ6Ewv}l6/zK/Tna@QlW\w\B $r'|q$?l𼀪3{wX6 d{ @d>~r+󃥻rW_p_Əw#!S@?%4?/tT6MW$LёB}m$'Kl綒dheK7* H%c9},:ʵBH9:QN7n.H8 7m%/dɑ0 !|%GK1 cl!v(m8j?bd%/ T΄f0y~&Iw(_BzS'XzRƈUޘ1냐 a"ZBYv_$}>I$-m)Js?EmX784"wm䮙I>6 f!CĘf6}Ct 0ʅ`y锸JҲQlNqimO>?y)kκf*_oι[/ ~ܴ"S,i؈uPnh6ڸGOY_0f/J]LXAJNc;t͟m3LB. y:-"sUXWo^:9z\D <>6}ag{Bޠ ӯMv\Ps+Oڜ6E:R@E-\O<{r7<ư懇wHII''f_X:NGFu^`} ?oPҟ M XFj\X2.I`Q͖Atԏ/u{0 ꌎ0%m*]s =lw ə((,[W$(M*ƑCB}Ҹ I 46 4K`mRmڍMo9A+m'^6|.pU ' =le!H>'ra Jn,N'*@̱v۾>-#%fwd߉$"(y&@갉(m.qvV2T>{8 5FA K`t5 h0Rfz WGGAU%O?&9|et!Ve-NJ|U֮48^xaUdx*Im4+F$wS'~IѾ]I7'G Fb|D )kO܌/ݎ>cEXA{D +tx#'7}-״ I'[01Tt˽1nh6ڸG8fq+^C}H((X·{ T=0 ;5/oqڎnl)*,8qrV}|W˳[ύqîE$h* P_ᄔx\ '>Qo7BB,kS5pkt^ӭ @l:zzcToa S:.^9w#Ovn#PжRvB';t@7yq:Qc%Y#C܉e+T@\@15om2rA.!w 5't*{ dR ֤6ж2C eD@|Eyžv˜"$$lA).[AcmmaLfo9k@0FgEB1߶EˡU4Yf Y8E{NbB!O{Yߝ>q׎'|]*c&e4KPPgfMhi'O2WN[QZU%Ӈ#jio@'^@PCˠP{Yj|Xvr?Ur!6җܟ.|w".* QS(o go.rqG>Tav>VNdmF_E#?2eQ! ^'GX۽[kMf:)+?J14rPW.ͣrH9( جwSkL͛c=L:ҿN&OHgI #w1zcK;C ~\6Εty 9 s@Wg_Y, &J :&` tޫNY zᗏ6>{UX&;I/ %Dw ofJ+v-,ѥTf9 JQj2 ܶ-_UrTy*&xiF܎t?me|EY'zٞfxLpmfفXFK` D$A&/ _n /">O {x>+$pڻH:m@I*g+I`Er}~s(yrc"ba,fz0Wyv`ힿ+zAy5ND,Bѵ#)v2X4_Y$(AGn)?wuAW% ndvG=)涭?f@ $ƫ~b$,0rX[6h6!ha̡Y w|O+) HE C2vaf"&<2%e6髣t:Ig|uH?ˈU<7N>ԹsaLzu߸rsnpFF2ia@RW>Yz. # ֤R맗;<ƹ 6𡹷?{#Ž+Z ~ )f/gKE9ZWZ`Q;XʛṾIldeH82̈́$ (gI iG~BO",֕vnPn~$Jۘ9i>[iQrL7bQ#'la?T@=/,r8zD{dd џI#I4t$P,Y 7Y 'P@ Q̒W S\\k>c򐶲. [=˰wQvȓ7S=t3!Ơ`Y&gO7gMk\SN1[,JxeWe`P 9tLTb CL$~W ʀЪw1ɑWl"M-w >?C;N9O{k6h?A4 ^p{"VVĉ>eh8–-ݷ出Ftk;N$|ZK>PŴ8~YT6`WY_~?;҇$ZNhB<7u{p&T_MЇ2uGFz60>ؿ-Uѩ5q+W 㾍 Lwť3u;`-1O@4,mJۥ7|Q\F~$sui,]ꏳoM]Ql'yiQ( %4DmnH'?ʶ슒1HzIPS9$$!k%" Y+ ^+T>O;G~' Ht6 bP6a&+hR=]lm!^J 2/gBWN3qp@6!,A)_3l3i\7@7b e0cM7Kz2>5# ~@s*vPNEzVzމ,pl,dBuxK241{0ki@{r.?gAi HѲbr%5|NTѮuJR?J9m`8:6O} t$e,K& ]smӤN?J0v3||*1W>wPqVQ|QQpB (y'w>O'10&Hivb ڼ;0o 6m"g]a3 >y׆$Ll{ cf-iKDdvA]Z'GlEW/:>,2 wdiVhTIrX`Sf{8V6h{t|OF{o'GJ&-$0dӽ!VcaW񠓫Ÿ:"f4'%Fo}bTwNS}`>7 Kf,{!.+R27&zߺR] 4=2}vtSYN̟r0;6W DLPƒ8aZ}}ݟ}p2 S@^WvTTW*@I4Qq~[&4L*Jo45*&dĠSTr_ꈓmtx%prVBډnC9䴍Yֆ4Nx28V~۶_E@Z.zG=-0mMjvؗc*V}.ѻQlj;B7S1bU;s)Q=q4vn# Ƥ$?_>MCE[J;2j?֯`P3]2\d @PN΂@pjd Əf&]ujTDm!On#Q?T`~nTj VkЖyCˋr1[ W>n<0+hHJqn| ^ їjaEUj[>qr:&_q4OmFysvYۻ)(fq) m`+9MAs;6hTAr7ZI(C]Z:&]tsh)!Zx;?uSBwޠ?R҆4m=߸z. <.>2[ygwxΈ[ BG8Ra=/ysډT 2P _;q:/LG2&]ul:FՔ؊I5Wp+q̝eT#؈ݯlov)*rl$\@|?zv]qCv vb92 i2{ΓQrDI&<3o  0l6iUZ~$O(%>yw#!3wxF;7ܷD ﰼsl~9Ԗ7x|݂ w`qd zxq Ғocqh|ڬEL alnay1(ڧ՝7}M%U53`?EO5xZMɔ t-8>>{b;/gB! kOtH^?tsO+Fm=~xQ4\{>}.+@Dr*9G{:C3ju;E>b.IiO>@RĢdVO'4fm=g~ XsZӋd1E[{rJ ↓-o)C>GhoapAٟr%k̠b}8 )]7 @0m`jF_oQ:6}Fm=~)'Vs>nZ8 I2>b>G?W{yB7($7m$@WX-uim<N)@JysmU4XjDRgZW#v~uksnx /@R(omhYNpibŽ߿H5đgz7_<ѓ tP co$Q5(6HˊOG4%dr eݲ' i\r'CRt)vXjM%o'0Q~mUs - %{HOk6~${R[$hKB>@ZG6stž|W$qbO3x ڃ,`?#P۾ozOPW:R۵Ӝt[ZzDI9`l|fMۿ KC`a1Z{k6h?<`~`ۋWDǐ@+=vN֘Չ-G-[B&$lZ@v~͋dN@F/]>y2FXp_u. Y:'U٫y3ҥ~V(uȟ|T"[yB{V!5ch6$ש_}x2 z{><.ntx,$>O` ၧ`<4ﯱOPA\  6fI ȴ6%fPB$].12{)n7G wD lI-)9ˬR=,^"h,¬Za@QF̤!o[N t Gڦ.LjB'ɯ =Sh`mI} t_{h&#%Ɉ &@DTO(ɦZ4goaJiS.*0S;s"F}h_uzӼKH@ܾۙk¶?WUa!A/Eh]: e@91w#R2ͥ*5+"*;mO>NU&@'8ą > $&'`)G4ւmh6ڸJ{ۅfqȽ]n^ 59'4pk 5q`:LMT0Ȋ*U,F֐- VF8_`$F-bjlI׍Z[(wQ$׏MT|J3yo`ИI*WINVh`qiu7WoXI ze鍯8~M ͋v^+!~6#9bo) y_Q{]YmҐJ\$fEu"yʢ$oךׇ@05B$&'(nIP Ӕ_ =W_nj'a9y,~HJ~ 76x Yo3"ymKQxq`Ue,όATJPv+,ӬA8rRL4OS vN+xLSddh P Uǀp)ڨb01Q"]Sq٭TWsVf\u7Ƥǜ?h3AN) lEx1i diA ck] LJ@mcqDqI^@`{ct5nhS+Fm=~<~4Ƨ4[+S2pTXZf9C'zH "/#5:Tݟ^/qUv~:ӍBN)'q]Ju>`S皌qƁon/r̺U P*Gb=h+L?2za֏͖Ҁ Y"f[N8HS3 *-68d>?6EFm=~&< *1CE -w8* 0'-p [Q-O(G`s 1{}z=QC˕ՠۻ\/O^URuFp;KեлϜl۔\imw^ZA-eҀDPGRϭvh_#?B-3%]2JG ;&W['~-=I!%ƕ.~Bjk^^ 8os<6@n[0MErumW*͂uDU89loDfʄ UK Diץىeǔmw|J$#|LLvj&Y$D_l D; >qjъ#¾D$WpKfFBM% IVfO+ ߋ%s,jb5Rg9`dD6EE|@ B&,ƥ7'"9{CyM9eJ 9.Q ?@UxrtTb}qa  I 0$Uo.EUs>>vZ—o"O YXMGFmqq_0fsq{[w@ZKHsQfeazf'3*B Ġ$3k˨SA]`KRZBFZi#OVt )rz*PȋP<tUb05ωMƷ»B^> ,3!x89SwN]}(x쿱&͖׵yιBU:o ؀(Jl$Hyp"b&~ oT=h읗w|bN >޼f v=zIϱa3szuhl;ϯ, _[ :${KiZ7~urR`}^ں /7#$pxx<2[&3;Tgi3DXx7HOc;+retnx͓>յ{^_bdMl'Tj:i\Ď0V[]nĩq0CPm\-ט3ZE'Ff'DTqR. &bN[hU[Щ%ihhJ"RL,BĜ .yv.m0#ј/=b 1Z+{R  &;}L0¢ɨro=zch7| z(I3ď\fo&#[M'AWpsbYjwG'xܤUtᤨ؎`)DjbWy&50WndefVA@0$vhH5V` 3HIc?#6rj d!\kfc-i'39}P(F*O`J=&iW,{$F|d=jl-g ~JW~ <~{R<Ȃ-0)b:KrKlNЂIR.R (% 6>pXGI3VRZKBl􊡲Ռpè/1_eݱ&gۇ.֣G=gcVz vS'B! 'ä!>Vp*CWiVZ| ͒;S&_6۷/h0Q(ݓW?퉕O| 6ЉvowOA0UFsn #?yv 1ްvۍo' =HAu8Sg)z:mjGў3#yR*) Q:)&GEDzɲHEyjŷTT3ܯx+ xF}L&[Hf鱓="xj1A{|S\"HwHH4+yqxnMVIӾ[3Ua>ꆤtU PEfXf^{R+i3j:S /fO(u{KQ-mbl0Ae^uΜwFYSي;ݥ؎f33~;S$>(Ok Ǥ`qzyM'0JS 7Bw,\. zu, /lq)DQEt[=zdœ mq[@4 ۈy_+mݱS-ۇRjBFxh]3x>:C@٫/ 29qe8$A 4&K ;p'&v>Ext_:ۺ_N1CՅ..aQBMi%[t+jfuMJ=6V翻ɷZ4LQܑt u?eeX}uնQeD`σ8WWtԙop}e( )Km-mlЩG0[€her6%PGK([MH 7-5aZNzH@B9F~  `/l7?2h~dUKbc &ni*/0kݳ4OTQq~ۋTP/R|TP@' T73V\ a=QW`/=G:6t;,u^i=z a_pmx^ޯfglܤhBekWqө!dV],Y@䁫&O/7VU_Ҹh˾0a /˾m;+gzy6aK<W">b'% `L@"Ȍ4 '~BŅz󗏣!|j0zz oQ l)B;%G" %ez_E@t!m7;wg,BI@풀1~<x(|u5>(yYr;)Qky;?*?P"|Oɵp(scbPpÊk NN=\l0Z;xHLIUr|Qc.G'C쏘.G;>"@F X]=#,e@'.ìeSkߟv8SLTn8Y\*<97u_a.6@34 2 0NW.*ϒv*W} Z܂{sYV1ǘҊ)[19ÉsS,n }~zѣ&?;| w}`v d)W%;z,28|(Oeʺ`J|3;P >40YQ>SLIbC83V1IO xKֲ|_5irK7̾[ut'o~51[DYZT^i{e2'Be̲*"O(*!*Hc둁ss~E68N*=e:&@ʸHƏgNJ bJca}CYcVH RR+RӱH b. $I_sb)ǮMӄˀq6ZLEe, &\mAH1I9_ Dd=g*EˌVzG=zl3 :Fz v3p8k5`cb)?2TT&¥ .N j~ F|ɒ h@Ry]'%C$x &Ic1/o|ωS{r^^Ff fff:$  Ɗk$^8ꙶלdln MLkߕF 6KfX2 `2NmK1 @GAҗ:L lN&זxuSNkXH\6]X!IYpY/j1% ?m #`a@c&rPABLc_*P p: NrTN, b6W&^!101J E VzЬ0E>/ uΦ XtE *!h=A˖؉I 7l9*H,[{O*ٯXh1SdƗ^?+3*cE))N*E#IC eT9>tZ0vq JѣG{coc?{cN-HL:Gc=.<%Zυ 1Y<<)o OֱP%P1'eSf -/:y@/HZg=(*BuqGyDQPu?঍ء8L@zo")dcXnQ.R@廒QKh% I$tT* @ɏ $9& 5 f)`1f4)b( }Tq^Fm`73)vVIbӣG=6 |glE>}Jo-@r,~ 0D*qd ՙO̹ŭ8~;4xT:tqC'U8-K/$Y'b)V]zV.tU!'k> J^9Ycm?qtrlu\DC=v_K$ rJUe&1 .q B˨C-% W%aif {2D.RmbQ]*:/ cahOZ~T9 .o"UuiI&b @k.Ar*%{ L6YFn; i`#|w&]6RȮB‘1 %\{134t1uLIh2>\-̠gYQ^^W!zj@q@!(as.5e.JB0+uޚ5#~NAvLC 5ƾb >ڋSSlByDw \T~>aVlp<:[>rzѣ&?'|~œszu   %!3ݓڑc]{-ʼnjҩSG#^yqdǠD_3=䊋!hZKxJu: ]cҳRPYҵ=;?sP&cE^0td砯@gr=1֯e*éMy }[O>v+>xqs_0E2d87E3Ķh {YE4) qUQ{hAeu"I%ДNHm$C/!5:+5`4HzH)dtn$֐wDќ +7TS^d6Ai@ݷtB-ꂾ+nu]YKtkS '!<& .H։*(ԅ+R˼ ۠ (a%gX$WxBlg^G?SRV3c{7nJ={kнcQpcN`Ρu]zѣoY~u>E 8ꭰ1`GgF+71$d#WD$c4/H/4[,v<)j/P,j0p$+jߙjD ~A"FxbvN Jc_ vuu'bܵgݷva4 cd5[EU*І5S'eiBK#5BKI:P8E> 32&5a+"6Yʊ= T%!Qܞ+O:HpW n쮑+dJ&FgQci H"g:Ar@[x/ e4`7&jS%ކD.Ǧ[/عvL CTkw[&=EpV&:=QbLҺFRF$'ߝ۬`Q2FI:Vl/;>ylg-oF\ҩe6A3JXep*m%GV|."׾Sgش5Ft:Yጦ13I.T:@s0\~aP$5q}h\TLkURR1Ȫ3ad 49bpqGۼ+!I:R5k;WzHM)`ĽbYT{kLi1c6PIPȆˆqA 4\B{%Jo+ڂCm)0+&j2K)7!1;ij[{h9Z  7p~R>Xzq3P 7o쑱|<_s}؜Mqϊ&{lnb2=~ڗG=zls܄zccq g$y^Uޕm7^3l ~tń%tRfs^scWQ*^ KFȦK69AI4-dm`QJ/α;Xb,w Ͻ}C>-{Z_bq2R`v\)(knnme{jcqtiQϳEri*L=SM/n?IrN }$΃Uu(vUJih!|jv9p!'WD(J&*% 8n)c}GISڦ\XQ[Ix;ky,@EçXDOh ik|wu9S;8sCs4YVR 1|hڳʳk,䙐!G>>|]/'nR&Pz.C_X|=O(j&s筚I0U7 D.;fku_较Bq$.$EYA1-XbMN5`Kzѣ&?;ozuP,np)=Ps>ez!fÈ7_cS%o%YM5ǒ`פ/=lJZУa2'{GgmqN 7&'o$^쫬D`v_57!|q݇.|K!hPhS)h7BL\?vM 7p1:u[R$w-nhG$'WERq0jख!g4F̰u( N;zl*a~Q5˿utkSwI26960l&79XyR*3~)-A qC"K*| ,n@lIˬԄ̤:e3E3&+%23* F?P: SE\o#,'|zrSLJqǬɴ(oU.iq.ԑ.Ԡ,6vBORɣd0 $#QZ井Z,D%ϱ _ RLG tJHrВ5&| 8|nkM>Nizѣ&?`79Ro9 3 HL C6oK8zn%n [ rIIeDe~٤)#ӫYBqy).Љ.>]Y#;%uFWWxSဏ7||˧[VbB;ݽV$*Y^tK2͆E ATFRz*m Ehb PP %n>"v% HV~L/2e$J ԕvnrnLhke Q>~Ut/Jaۮ0кB6s;{e3S=aAoLZ2flQ@B #ڄyI?&i mn4 `G@Uɂfa W(ϰvK4hRbTvR[2\3/0Rue< &g)w+$xtm2'Ěj_ ԙUqh5s喻&8rbԔ_3T~WU4H=z/8x<[3z7fᾕ^2<3OڸWq̀a0^0e緰ʋ Z3$IC82! !FM6KRd07,@c c0ٶ5e'P{2#%&g޲o^t-ݺ?94vHZ[C 8 %\#ehB FfÑPQBR>\m @4ð`CTT\-QDP}hd}<+RwϓZ4֔>ck!1Fd}( US}/ BE;&l+g7>7^+|h ' ^ Aj7Ia2uh%`ǧYcu?q?5j= ЙbqZOQb+YQ a0fM-:Faŧ@']߇[ iY'ZSͧ>?–|!Q%uzѣ&?|GW|Ϻ iza0 8`e;5$2= 5ڃHH b4iŵMl MIڌ?-hzӡـBRQ5C.}_)_}#d?qFRNdN 5'm(fN5E5%c^RGF!V?ԳCc2˨1>}u<4=V:C̕1R?m^b (|~ƞѣG23q:F?}z Vx )T`<\–e='AKKZ""#I<7DVLd ҍ/ 3r4ʗ7jJUZk_?ydzle܂myv'w_!SEZ5Q(Gex$'6 Oҟ‹,q-@bZIӛUGAKX}}y,i"`dJ,N^7& I`3bQv(n$e-k/11C[mLJ@zF5&]rL›%>yw #hzT)&.Ȁ۪5)5?F\+fons KOdvm .A´̒Bc}%%?'#'>D:]F=(`\{qa:Y8k>)ȷͿł)NeC%@'`n& 50l7MuU`ѣGM<}hG|:;/p!S;M(cij DII(NT ߱wLp)x^XfJOgѣGM~n?gzu;8=K.p r{]s 1΅\PSAw~ td 2j/M/<#')]I<='-.uVs_|oFw +W!|6\[Ƌ+|V~I6]ZwZQK,~Y$B8?݂SN1]hT6M&N:e$1]gԡߐ54ֹ70RePgiZM ̦YIPU2@0w}p̥* dj9}~~1R֭ ԍ˿:-(ǹˆ]H@#ؚe\ 9/NeID.Pg"h MBlUb<k摁=R3x_:9L3 ͼNJ1,pb s7? &m+b! "/Kɼ8|p [ўف}~B=zg O%Ա{~٨f~6 O-O d _þC3N, JoRT[-}2LVM]$ b-'|}כ$:UEN9 `PNٽxN 1[٩1I{1IT+QNY`aQEY?)G @QyīVGӸ\HN/!6fA0Meu8|$`XJcՕ<ߑ:T`\H dHk㾅eLPE;%.C}oSm(MݓGK6L^J3#r QHâp 1ɌpM$E/Q/Zs_Y DTaS}X]i؄i <] MEaJV\>Pq>kf̘?;wbdm&ۇcJ8͝9A>R&g+KuCSB,~f8Z>eͿ/n]‘kؾkN!vG&c{M.ENSf ff %P$%")!@Hb.>)E ,\Llf i)w2ې= A3Ӕ&tOҹ谓{#y }6稁pȁd/:%:74g.nsK&3G&IڑYi=z _pmx^0kov $|_^Žӆٌ7Tx{FR]/lVrhm^@NՂP `hZ]弮r KK _{[ 0ჭO?1(` Ҡd'nh .nTsid.DEbLfQ$ԉ.:r@X0+Y+1}I`'P|$Xyoo^<:yݶ;׳O|bO G}:eUro)@" Tu25G')cW~c4n$M] 8Kd)_WdR]o'KL 6 are~L č 1@u/=^jºLJ H&}4dvP3*R<[] B3`izO_cOQ\BMDV@8}GNN849'hrOKѣGM~np5{"lpBw 70  Iìh~=:T$aY`INd;f!4/L.޵g=ED4w  Ok;%HIȯtB4Sa[i`A%"&k،鐟y:Q,GdyD%lCG@:'K@…]l80fxUVƅK[6F0S*Q_V<ʏ48*?4`P6L0ݝV@M]58mLW\y% }.$H )Icߢ.k|.,8FchF(.BA K= t1c\a˶lkvZ>?=zcIԱڣ@ =-x}H$¥Mx,*y}p-l:] /|k3~e8Q{)3dF%˄S$Eh$MB53IlyRy FI^cllH$-6y;be&BI^x34A:F 2m]6-O W]viBe.|hZ׀ 6]We~]f1mHAL TIOD_54O"r84fkZ38h oVZyAiI\?p1Y{AF?K#F. !,=pxIpE*id5i6 wXwN直"Õ&S_+Al@ `;DzYQVEt{:"GHZ>$l {g 2#i,u#=zI>?wc;6z Pz'Tԅ1-))^'QZ 6,'afP>N= YI)nn:_ "D-$%4ī ij`b!RȗPWmǽX'cjG]qݞezM$ P Uv@O"eVCByimX }F,:V/tW1AI&fᵧ: TQ!C=>tg*Fy4[&iB )%Yux>ObmXod:c0gMm8?b:xmiED?vLk\jvd2li: ߍ>@%5?'F?^/,ūp b2^[^VX=zc#Yz=:=~C= hy28 /nMŅz'~eX·z/أE&{͸6ڄH0b1@ -MQ ^yоۼR-ĸ{e)$nX"J/:/1OyyzDr_i[wۊ߀<|9}lt<w %bE &!v+f|r# ?LhZ5nP @,QLjCuӕ9,b\, RpqWQiF<\ Fm "(/BJa:%@fլXO+α9ɓ}K;?&/KfZ"0{w GIn0=3Sh{[o=zch猟{ iuGwD$ye\cL~EMdw{_53wo.߈-V?vޕ߿%hcU 8E˽IB>Pm_'kPPzDHH*s xw]o^].%- ߋ$g(G15+F@O< <emy[<ُ^{vraeA:Oc!-yrH9YS =~yIDLB-EXlC ђdFp]"c8Ā7O8̲$./V &}!ilL]9O,!,S5e 4ÀT|x|!=H'뺯(>w)k{A;gؾs@5\{́ѣGwν u{``uGwϿ\\%Uksz]S5 w>4lyt{_kh`eN]:Ɯ볔VX۸ᶜ^HVKb$m3[J%<\mY戗/%Y.QM ]%[Lͨܧmd-fM [k'h< i;\)n2~R78):^-p(RS7Q 8jH#-kI┥L Zum"h>@ ȡoxuq _k(6+{Dxr<KLXDRsyFqO`ec0Mch{&"K$ѿ o{4hY ;?D|"ܺpG&{` ]G=zl"s{F<[^ף@c@2JfLI$YG<$"^땕?=߰e,U }>xtQI!6%SY8SRE9w,!s>W `1#A{h*bFlfDHj ek2͸iP0'| VVďn_+[o[~7"kМ, pJ قHT JPPE[įi,*O:|!eJwγI;1P J-Abi٦ZRl;p#D4. z;/^,ښjPuߑ~v@ʮa ['$SbSE&W_92'J[~a2Ip+{ѣ&?| Ks'{Pz<ϿHИв_fsD:_p֯y3onY//_9Xqv۾p)L')! kF9WQ89ߣk(i,3^bQJzq%uI8XNTyX=O 7( )&:=(ٛrz6WLxn[὏ZvOZ,Iz7 iB/'?H?i&5`? :VPJO(qd-Z0gt/W X2R b.h&mO!!$ ^\t{U^QA NG}iv ~ cFvRW̢:w=6p R>o,8g>_Դ9 *4u)É[fX:| aУG=663g]G:ԣ{I z3L^MȗMRf?xCvye·N/_~k0cCW߁v6㇖Q"R`m"M 9X8'XgS,JU33J3omВ;,_Ɨ\=@Ey 0mL 1Ioo^=I?-}CMH}N, WӦ} -+Rr@uYm?f  caG ͮ8'%PdfrѬGwض&2}Kgp?lA\1~߂2: vG.+6 [ӉE]V4{Ij_|@(=G`'ɲ@R؞'XW˗5D>I\J`)*#:柅%>.o7Χp.N^9 `A(rsS=p盪(" TPq3xh\?u=zIp#qroP1=@If$Z ewxZ=l<[ϼypx|#_>K" &:qG'Փ: ?*SJs2'cʮ$*#GN9YLΏA5x;xbh$əڍ;LHcFX% >KI0@]pJ,Ԁ7?1yGmͷunm;tgO0GJE*1MEz!Vi9RFۓ OΘ;/V(*_Z3wǵC2Rg0]iP|cE*9`hHmC| I|GF"iBű fV3l=:~?IISGR<>rmjۂ #,&AC< Y6nyz7au]u=zIϾ9smz=:=~Pm|4ʐUҬ F/|ۇ׮i^?>,̺Nfhy)ΫJ1@y ӣG=6 Yi0%;|[-أ@KgQɿT KɊ`P??<ﰫiՕ߿޵;o|f{V>QZl]4xP*%qb10]q^#-kEr6x^Iw%w$֯E1bBk4)TRA@mlG - #;|?]0d |BnDωVOSvm"gfϟr!g=_>;]~ba=4ơcF6`s #ԮՍ!mKSyAJQ(, Mo+4jhɎ!!q򻖩 ~`$ )䕯 쾔۾c3=5OOѣGM~ !mh˽{t@=z/P} ʲ(ޭ>pNA Xmᯞ8>ym_.K+  H܊H)z>>^Nez=QмkAah$j+3$יKj8*R9)yE<~c>@ҼݨT^7a/6xNs(|f޺+%h/AOa8NDⳍ)? _3! R,RSK…VYKW2BXC,d, -O-b0pœ%hj719T@y\4Zw@u)ব-tB8L't/1 FbF yBw * pl=3L&v0k fףG=69 -u/>H۰ ߓa0J *YdKRw]h8i^-Ͼ}+mu|1lzc.uՕI"V"T9+vĄFE<6w)WTAiI8$jE2a&uu {JIfsv ' oV}'ޣX{oq ޫOX?Y;2HJSt!}k$WT'}JKI p!H &P`-a(0_1 a#k{bAmb!j̨AA $}H t\&f(-=͞ʷC!d_ELN3t-U$9VĽCwnN1װӥc~ac))u:?3 i,%KG=zl=Zo{PzmSSr.^|k['aܯ#*e<:"IF0(mF"0>&cgX:۫wo3G_`5lTNىaxM\^M.@Yet2 ~1p`H'"ːS/8 Hϟ8OXH^zY@u1rE1ݳ1vޣlۍ]>8_][W|\{VƅK^5]\IϿѹ9LR@zcqt=u(RoP r b =cy~Bލ Db %(P+ߘ գP',ԧitM({ :`j{byHF)' P^Og7qِ,4/0`-A۠.WRLR0JJOk@;4ܝs,JxNr[sYѣGwOU;G:xg Wqmp~LS^|e\ 7>o649-'U%~hGIGM.5ҝ w-V$I9.Xj-p =tSZ˳#*h3)WXkI;mjv(N̛"^}סvuC42uk ~K+`vۏ&"V\[ޫ .ݼ˟?$ ҒF߅sԺQ`]#6T)<1iԲpr-,h(p1Y޳u"Hm0U2Qz>/6RY.y$&~|Z67ź;I@<@ƶuvкjŒaSȽ`/w+ ̶fC Yv ҶhA( zlm?2Sf ˱ӣG=6 ؉[G:7~av܍;utzgΜ'kX]gDeq\+aKk̐oN NP,;p']F|\NKW}E ڭ"u -5ǂEJW(<QBY*TT ~;8888)S`XYj@.^<AkD'y8h¯} ze6." ˄ٿT f˟&€ )WUaW@+!Sʑ-G)[>꾅~i1esJQ̈5䙈B?"J̅#cBR0eOYʞj ?díʐZtz#Ej9̷V;KE"BLa陇]"5YDP De[ a 2_J*{>gd9Rp͛/_IfڐfϪ$o@߷mB# rlp>?-D쓎 GaG 4tp#Z'~=\xzFG}Pm0 زe+~꒍@<)UUU|1ko3!gNg0wbBA21(LyBDhˎluR>".~y]lU⠊Y>jMh[a@uP|; 98+gM6fD<_` |(ĥ`HHkQhx pu',T, ]aP IE"73-pljCCxhP=ǰ́dFT} ê*-!ehi{rrq7HD1ҶDx<,I)9 ܇PF]< 51grs :Drه;c'G(ɳfiK{{Ȓ%Eˇ6|e *:sX p8/&oeBQKr?iY5HFD99D IrϋѾ4"l>?Ippppph1!`=G9 f?=x~p/8}⋏mhy+--F4EA\'t z2N9%<}Ġ\4dFheq"\ GxI2%|r;VI5nq %km󼦺&#@ؘt,& l~e_lNH߫սCj*h4fVli ԯU&#UL i359h Z%mi2HY? 0Uұ$/ ܦii X۷TXoTԦrF^xv,JH#h!sVV&[I2d{GL^ d)WfV;8888S`X _sp#:_a/=Dct ܹGểW'@ԳG1:sO hI8 m@pʋ#FiӿƟ}pǥdPfvA nh/wMĜs6KrKQ[Vd7oC}׀3Sgv[gT9 ]BFڛLEu`kpE0BA!ej2CXq͕ւzB"_ImL*+y֛)$n|w$8!ųGd$ "/ :\b"Ee(:QO K>GW@haXXşc &K)}3eNߧ<@tRa%W%Jl~3hD`jZ`0G1٦V/ B@/ hg)-e,IyM*eRIBRRKeM'IV 1kgT򥣱Qd~8^J6:5*U*dߝ0!"'m!Uӷ ꝟC ?0 N@jvcOC8rp<-LeoۆŲ퐛m[6p޹?܆+EXl:t(UW݄SF7߃nz p@&PKP@=gSH.!ƒ3%jִ|jKC>3;n2m se 6VG[<9LW++CƠX?̫NvG+械u@m7ԡzG[9w}0le<)_>3>d7d)+K#l-?>٦ ~>l6Zjx ZdE!sPX$4EĀFXHW bn:/Yc$xzĜ9qg'nD 7]rU /l3  (ΓGY A__ 迿-Ĕ^+nEg̊,<`'g%ߨ̀2yUFfvXe#1&o@d"Xv`2lCChoN ?CkP)VBNYἶؙm|Tt41'LAO}P, l~.O33e AX&yE`"{8,Il_t9hlST  {V[Wc3յE_o,*;Gr瀟L~=C' Жbsx1rK$k=&ʰdN+dςp -T~YYyL0@Zs:w"gxqizppppph=1*  `=G9h B\ry{;|G2><ۣW@ H֭U>%O-D !pdR&sn=K8y]5q@3lC 7G]6 #^]r`]WS PpfMb-D% sE86˙fn(0ٹHdQ%2%DЦ6!C<&CЋZ(pGa.@]dƦ/C+!\E@+vVT5?E?4붑 cI) dG8 f؄dBQy&+r^SaSݔI,qȔ25Pu8_2j+ERZv/vy93֛G *QPhvA~p {oEm"Jg'Y8 hA95?2Yʏ'lC 3D:tг9yю8mO 8&`!up#v)gt'}= Ro' n*lJ̝3f{_>yXnj ye|>s@2ee /1ZX\;ֵ3tذa#֯߈cOޤ'зo/w>HmڴK.9ƻ3= |Ǡ!ǶJ}:&_ ebfg)$w t(!RgkJ>킔peiӵCT}D6$435d i}MgdLa 6G> H f÷ԆiG"M d,PbJ=MvL Rɴa0;FL Dx+Dvw5[uEb(]lm=l;|pXBx@iC 'd2HA _ MD%gr>6 '*' X&(ŞiO CC'tX^Tv/ -xSP^R[| rmL"XHAN}efQ]G>AB+](3F Dމ@\Řކ>T/`u)[0R_J[AQpqT9ɒO҅Q8@>sq5 GrWi4J;AŸ1z(BBCC\_Lids~~~ ѽ{WH}ӧu݅ޙ5[@~k/c{ޭ=|x˃λN N7'?9zGtܹ 0bPW'6n?qG^r@g@/C쇾28d;hrD۶`X42O%=B 7P) "^rv/o$  }/AP$عAeL*e6iSYM$9Caj7F)&eP{rmA*>QbVVo4"h (A(HvE7jJTGkAGԆdeľ֙2 MH###@|!TiauF/ghABҮ8Ƨk?ݯC`K0 $|Ғ1_2+gySi% Hzc;_&m 4^?_K? s re-I8y[e獆ئPHrhiRH ;88888SpiU]zkq''Ź6zhs h׮-bҤpιWaMX,g=јyGݏmy^@cFs=6m-znKS~1Y&xqG+~s}ÇGG}]p{K]"OLb9ē2tt yoAպ~[$:aoumO:ОJz͉+Bau2 h_1CoeePObG҄Gk,4d,M>v?FLe!'m^V⒀. #!55xkVSI]VBE@kf2~Z}ի6%GGҋ#G*…_cuYAD[ťX,P%xйs9̙x2[1#CRt(+EϞQPm=|LO:O=A\!@$;7W#9sW ,f\y卸޿ t|t,q}- ng`G26deD$l,bWбPurHx, XzI~H&A(fWHtxAFɳy[z‰3O#Zbd)NջEf U#TYDmRJAQS?4d_}%o-naL,]J k"){/%yi6>8X'A6_eLRN}YN_km,ڞU9#0)?ZI0d/}+.3N EN'L 9x6U[2B'@J(DJB~-y@1M2JfDo)q3ϜnC`GgD78"~"F@v$|Ktp#vyk5MX~:l~=_E~>IX wxcpm6hO1]_2sbV44 7xE#dHC4ɨ/] mpGA~~>ƌ=ט"//q$6l ½\ /9^~e<~|o%f|/crZL#2 ZVȞIdKE^($-A~OzHcuU/@E5%Hk_ ؙA0f?kRTF`(( \6bda%xa3=3"_oJح} D޺X5զx%ѵ- ^> ᇌdT͛Z!Ԥ:L)tKهv/RyAf 2N&g_aQpttOoH`!LNvҞ giHfY%d{Auf(;(R ͸l!d _MS( j?xv,+#)qSRU[֡2oG,Wr @qpppph!g7c!Lglu ]*) ]tN#e &|TK1`Ƞ ԩ[}ޜ8C~55-?oד癧{C3@fGhSTƁYW`Ad}݂~+Ծ]>::t(klߘ<7p%2@,b4|`(Q f@6|ƶ`m(lvk}ҋ^a6W%-Fer=;s?쏉_[VaGcuKN_&L:pLSpMW ֭ǡcN&3oд@}[:h@LHj|0r6v\Kٳ;dLdQc) oO a{YٌKH&mᨮ g ,7VLy/ ƀ3W࡯|D =C2_lm _N꺜KxTBHS}Ύ}1Š2%Y-`%3ta8 d0Y=4##tN )B,#L64'Z1B9 oF_%8B~ܠRpk;T~[mQ"m? v,,?zG--l_SSV@4a1hqOZ lYn"H>Rj%+ b>tAYKA g"f i9?P<[L/jme<\ LϏ1ɐ N s C|˻'"hRu` }hs";ЭoXtI88888#j `S@͉)S>űǝg #8Єn^W0̜ѵk4aܸ˦ ҅yI\xѝ+n!Oq='oy4;,o'x0k =BHIy< @ 7abLLFdtĽrT^h~Ua{x5 B9(JG)[> C+ cJDC H,lN}g(: #$O%9fbڟ,V!$Q\c&$˰d^)Li !@W㓍TDb-qےk! HE3OBMXRAT Ҫ l\7P]]#АBP< OO qϽ@OO<4 >*ƥ}ڵmFiL@VZa{Yvz(K/>w+L}& _~.N:X,Y ?ylۖ30KPLr2^ ː1C3W!fxKF/7T ?෋\1զyXf >pZM 52 DwE謶a*t71odJwt$L}UBT* Sv 9M\=Hou|~ zgc@z#{+ZHmMu͙?d9Hb))DQenB >h@4@1>J26 H5g AI>: !b/ϐ~0AZ̏Yږ"9 w}YX`A-X`hPi;8888a#`=G 'x_q7?}8Єif`~?C6sq ~oEw \ٸdx xY?{+N8Z=2eL6I\rN9ǍP7oE_cEy^#xm/2pSkgE҆nX  Cil~ BK% Vw2Uu<Ri`V. G I@[`i].EdD1GYQ(wD^Oގ Cl3wbA"C?.18k}cUUJ碕ӱ*C(н@گR۪Z9ފ©AA܇R[lR]2'NAGYx=h79;LO0Ya&CH^$Sk0Vْ UD&~[}=LJ6!F5k*IyE, IhVD$g'e Ro$/T-ѱkЈЁuOi`M\988h#?5b(bb("0>|o2du:[e]A [ ~~xO$6~[8_ ?vM~ KfiЩZi(<'~@9q@[#%8)CPb1{fo?K`g28 į E4lX & }ʹA|l?df?(ܤ*MΙ/t`Hħ0  3dw6#D(%{' bq?=Kmh{}7,GϏ:N4s~ -@8p vi|W% c=? 6O>y999hy_G{}2jKZ٠#GQư'6%wy}3@ƄG0jHpxws`@FYTQN`*LEE; j؃,)@SX|c5őOUےmޘط|frM vB('#:ͶTܸYa^\֊1r}hVK͂d@@A⚼u{Uh%x\wPaʹh-hzC쳆1%QȞǺ9%t}ֿ$Qj{*? H"i_,b\ DB F<,/y?ܗNLeie-@TAۄm s S}EJd&BھcPP5ʘc|yrfϳݨL!F"MQ9lt\74pPY7Zf^u>?-@xc'.L0 @AG ݆xR rT =}͉+VGCf *+{ \p9'<-@ tw_`:u:}xבLi@c lg<)HN@QĎ+@r@PGәd*-Bt!]g.={MoϘHIXБS.>2-{1)Hgjbu)&oaNeVIm< Uo[m52! RbO$ZN j`tdt"o+߶ =H#]&#-&{!bɓN@ ^{%{A8ڽ!JȳOLWQӌ\gTc?&O7Q OR17Ze3#CyaO8,K` Zi` ~-&j@Wرd0f}K4ēOŋỠ|_s| {D. <#[ }Z @.쳎Ǹq1t cVo3`T-4l \fg@A2}_Kr=r@:=* -\b5 ^mr♉xp,Ft_dfN5[|IB_XP gPYi[9ųwD1)-D.c"7Seh% 7?nS |=Cu  r(dq/@H?n2eۣ]@.+3ġ϶9&Yz$xv| %w@} f-rv_#(droyed`[*~^Mpz2I$CbxsD YUfP)88888?}`GHtpp<t1as/:X1vh4-=Ƥw~&W=lqI⩧jW: c=hkK@}/F䘲A#pF,gBP &c1%JrP!D&, ~jH!SKZd)8} ~>VnM0eA ,̉AAPJD=/lڃQ P h xT୬E]3TmVhx z7mU!,DkA{;>m8d!<%( JnyPpz>8ˠЖ`OeЦ7fP]1/ gx| ylzI?߆gS0e,7e3^SVbH!~<忤e7@\z, VfV-kKr*S8hF|} S*:~IТ)_GLe_5>Gwm}I h$ tSIQA<(*Mߙ #D=C+˔*&Snڦ>&V RB^ ^$ǽoZy#QQ듕S{]˺_[2< P9j~6H m? DG67-0Y34C)Hǎle9>%CƲemB #(ccLEU 9vTnW=ǕL{i̡eJ:{!0J;Eyʲ5} &~O`X ` :p<8Wxw!7>wqC^K/=M:u:;4dwV+@2茉Cii p7{=(!!Ƞ}xp0LӦh@HfDm~by>NJaHlOS5ZWtDhO%R=b!=y0B)N1E{ePYE&|K7B҂;>]3ڊ/$PFI>#2iuTB-6F!\XPv6h_zZB{}_޿ 'o(H$cyv*#9iόo Bfhfn?t My2<8A L&U`,cL0B];m#eHmCsYR)y*BD"r"el()ب3FT*!׏3bE!'w1Pro lL3~! ` ݻ S|G +<&lڴ{1+WW9q޹?܆&X =zl1'>{2$+Oō7\&<3pr@#,gOqjWk thޖG{Nh%r}~r:ro&;9t2ESQt&J8 Q02qIQs@\  J}en7}R 1# EyRڄ>yyyh©^|A1=ګO@&Ds%8t0T$shHm ֆȍz˷B ˽_dUh|<<{~Qtu3S}VC-h!-H~=TҕTJ0z5X A, Ye F +@V~ʼޫ7VjꊕF-pw ]ͨ7 뗠 o- I*(3F!f<Hy|_.kh%.R"'X N94OC #ڗ:NYda17etR5-C@T}įKBA({#mlƬT}ǖr :m٣=F7ߴ̦K%".1*V< >q<{ܙUI~F1l;7wUtZ!Ӈ]xޑk{3'Ѱ,0zSmm(g62nrVA&Hy ѡK\t`|~hķPкH`dDt0@7ZoX@?Yd2QO} +#;gE8+1ùYetO 1 hڴ((:薛.}0EDHK/ޅc&yExwv 3O_ [܅({uO!Gl^2Z[=[۴EzYFkaF%G3N=:'ֲކR mfu_!A΢25vۑsčIeO`1FNؑZc'"o&JlWk/jBd5fPĽHTC߼$Px^44/yKM泭2Ht_0xᡲ)>qiGy<1b޲˼|I1{@"eڳ4Y@* \/6nJfm2 K\;öCkms~g'ehz6ٷ?<ڳLjd tRZ#n}>?" mj]a'"{ DO)vn$7C:#! 37.988@ ;? N>^6m?۞n9眀;O?}G 8Spb(+ݎ;99_(,,/#yǀX,%~ф3 V@ !- #iӑi!7A`m%]3X#|<"J O_.2ePU,FЖĞe3t jq>{9g2Yr_kxl55 hR] (oSt.&D\ R7 ̍@h7pDښҹhx|N ?^nj͍e{Å`@[jg~!Gla6Y0KDle\$'' ZlA''$lp F33JA*HB ++ZW!} Ĕ1#L21[ ׵Cy]`gL΀&HF.P98p3?Aq>?3@4ٓD ,໻G^F's٨rHe_{cDoۆa{E qǦMxR,\5֬^eܩйs9rs)yu ݻǻ＀u)Xklٲ{@}ѧwOSfC=O<NmX^Hx3gƊ+l*,Y Щ**:BN]n)van6 9k2 D>XIg*K .!=C$x9Crv<@Te]Bs7 V`A}]ly._=`A {W=PD|e!5d z[N[3fNjvK@/Ieڐ\NuPB Ҧhr@)->i17ⱜN%`Pf0/Cd21 HfkǽldO4ʐ1E3?qq"Q4 X_OBe9{BȌ7 ;;C~7bU.P&!;Y^nCuZ+X]ʄ-ĸẖ`e ]dE2#Q~C#h[ /;BaqF#wB d"v#xWurP3@G'2}]p;$C | bGq& vVCe$=~3/⬟߈^l6jNO2rv/2N9vm !a=`gԂ 96 7*͠_@d#dK&u@ b <K*5 B\0?~Dy 2dAwWfgjvc $!c# eYf:B:4nvF@2Rudu-QBnJPN{[Ѱ~1NFn ZZ!-ؘSXS!  j3b%%~.ך˲!%y9چfگ2S1Yv2VO }7hZkx9{'g/yF$!9>Q~?`$I BAG`WhX2yI㟱-9<.&@Cھ(KByBa/[b@>ii:7Z9|O1noץ6*q؅Q&~z#6f'~w Bqo2kvx(֭p)q_/~%TA3n8#Gquw^;vt3@$vi䓏>P( Xj5}YsӨKÐ "&8#H`82u ֐×Y Eԟ}`Ͱ(oqU~ ?b9B]#K(i5,M Ԯ(U!]IQ3 fe2yTH$m?]¥a̜?\D-vCol:@"_ EPsO VDfMFÆ-ѡ¶k󊇶 y  ܈ B5{)'~c#)0'F$S6`Bl6^#SR!ΛqXaRA&.zmUg&;D }u0H#:q^vr5[g&5gzB= SD*;:d-m(Cqp"cE+mnI"#~:)Vv "}]F=rJKyLs2rSԗ>9k9 N8~?6&y1 @?:j_1l|#֧'wX$ܚ5kr\ǿ{cQ A!6l؄eVW&_ D~? #V׀/eS;xp]N1?L"Nd#mDb$xvu]'F,V"~ O\|'ԥ=Q= y`ZW}r.ʒ c4?xJ4vFDg gs137hjB1K< Ey1|ֻJB'脥C T)C9VuHkK؄/_ &t~n)] ET& HrmCfqݴ@Y'"vWS_-h(w"EnnnhQczB^m6'kM=LƉ=ԁwa 3q+r6fV&F>s+acYhXgRv-Ĕ#g$M!X2m$n'/ f' ~hI@F D#d p;8ecڑOξ>&~܀JO;@H" `lvᰓ;: xWur.#mNP@,MKMcTg-JҬaֈe JR@µﰏXNX[]GʺBZ8a\ 6=2L*P@*GH0bGD#;k,򀒇]vQMqoIf^b!,PɚHޫO%>‹N߸[罇dƖIFuZf@,zVhK oD dZ3QM$EKʎHH $o(˫)~,˲ֹ.wUiLWw P=C2#h$A~D]]]wuVf6x܈qH{;}Ob\cEGQwxe\!™Iq?$uH_@!y=}/!{plA"ۏ#ECJRuq]-}]<Йߕ٨@#Pq>?0¥ۈen_Ec W-q<`0 !#"dOW@œm\'戡Y6vDDbDH.R(J bA s#^=,tvj,NMkH,dQIl~$Rm6qMʭm%ld9Dn!d$lN?w&s;奪eÛ#G3KeWV}~Z7>f :;:@;gefp ?RpM}& 4 R_*$g)/$7]Qܩ$DeQF$$%+G|YU΅6:#m)~R̈4qV= |M<e ޭ!ڑU)1!P`}%x^=B< E]? +Cj0dPS!Lh1T>y(22DShI*G"1f9&٬Bl)Y)E%DB)mdTu .~qǛS ~[\<'(|TJPɸ 7 @\e>z}G@r;Y)Y.6'GjY{wo MA<[vU* lT?rfL>t$ji2i''wc`P +y{?{xYڡw :>gq˅*Q3t )aYh*,o'PC'+SpL(;Xr8vRuğWXе˰O L^m"@v^-37l)0bx,|@F O/`F{zVvT<#BA3xCfxɯ"dZDRʼxv'K*.SZVmv$& DL/eb>`yU>%D}b߫<&?@.gKsI-?:* M؋:V…_ k7[Y5nF@y%ꕕAď>^*:>ُT:/%"PDR{&XJ/ED>;RҖFhI'ASq?F!w-U:c|g 4)HDxuEjy8N0(  QdgF+= ,$wX( ݹ5[?42`x* Cd%=8y+VktGq%)KBVpRCM0X^%LxFiRaW,1]J^B4^K!2cp0/:c "&-Q/Tp˲,'N z0{hEKxhnneVI|><~%p?ȯ/89QE}iQ-hXRO{D7C۹誅0 J>=ˈ?б Fd00:5cץ?|f&<%b D AZpHo6%CP \]z͆Phj{} %zT$H0WCĜrP, J`6UC+=#Ky;]Zr%l#}+LVh~:>Ϧ\o;٫TOA&UGåtU\!17TO ק5 Eʈ>TˊT!O:pLj 'Ju=͛$1!ϒ%pmL=M3tIW85 6Ki~m՚cg*p_\ā`Ϗ% P3C @xc: # G IRCJ2xM6MQBHI:Vf *=*$7BQ)ϡt4I?\<\Z|yYqxK>tN<ߏmNUtZ8!diGM1J!J5P?cN0I8"6Ji1Yl&F i}[`ὟY>?K5{n/J+Y*/TNM*dmRA=]&+r9!<x cHWhyyiA rUD]"qV1Go9N#0$A0F8zmkHS#o*!YB 4#[蚅 `{sp|l32`x &$I\t5O8)&STZGB*I~E1b,[iWB(>o.\ZUn ?:N;>AJJ:F/3~ɞ~&Dm'#Trlk}6m{1ĞR#=UZ pl|SOR | ÇKx]s/s 6ұɛCg&R*ذ`:/%wu}A"#^Aa',gK֎i.ZQT1%UMG޺!&b%E Uغ|B1⸬%.H τ ?!v,hz)`.BkH͝KJ5喔NI׸B}~2 p4W|T??yWG۸d0d@Gg;tcc mV3qZ @ q`܊ xt;Y6sJAI.V!NV:eXRJT1ܘ,YҟBZ:}fgߡ".\ iVɳՓv\K[)bsD02}"$ IҺYZjװ HCy싨:GYgᅧ+Jhj3OV s'ң`Ī' z:VD> "tblO`5FS6˦2+#BiĈxͱXP Cx<6HXZH}RT]TW$;ŠG;=]HYI2FXM{HT7Z4i| _Y)-o k/X Fd0l!M>V xwF6t eJ:h~9 @J wÁ@1{߆lyӒ1"M*|es]QDRv]ĝ&axzjES &AKxƃ&󔞫oBȷ1z? ~NԚv@M@y|*cf4/Ʀ,Vgh껧q%]FiHmH"Yڑ^q8˿ĄIuN)1'U]7EI44^6h7%D?)3Lqg}尺E3K{&ѽk:'T`b[It q+mq!3oi_hZ($ަQ [: # -GLS$LC T(A&9'"Ӏ pG$hݥ >Ω*7J+_:\kw@C?=|r0NtI4AK eY)>`xM0ĻY =l.w$|;k-,\׏b2< xJ,3o}B:2z>xԪD$2*Czt ]$X=L"L.Gm,ςx RCH^mK )DWc" ԸG$!rFQpbN@K@gPb\vD3<^Gr| u& z[+Opȟ1Ɩ `BH  N^We0d`!J &Jl).Fa8%F Yr=)A%!Ր/W$C$1k$B(\&NlZ4rWM^kQQ7zONωƅ:1dF쑗?*DbAJJx*I.R 1R-K8ٖ|Q{[iseyT H=eԶƃ`_y-Qm0\t;ζՙal2cӘ8p.-:K d^hÑ:@|1-)D ON6VJqٯ㱑7 Z<y%Te` 5#R `TO$OTs4i}nR X UU F9i"oʬAcKǃ{/1pt#e|{/k]Sgf,[- #I_@1ES F2;z>߹hRT%N@j'X(i!~ .;uI((RZE3|P6F|}5p"\ҏNGoy'=btY&@~ʇڇ6T ˂2Rv̊. 4C@*yl*{VJ#SW"`3GeljO@ʟ_Bo]sqP|ξ^QG|cp[DF 4Q# D{KT4Rw{pEiCq.Tc@J{Z :ỈbINm0;L;0RL -Rq9i2W$/Nv)hFچH;,x?فb[ # F Ȏ9U927ug8'1;{\yf}P/EVK9 Z:W}<˒Z#B X.nU*?Drc<0ޡy}f\eThSl60cKCqDH;]CB=H-[ @)p'1r H5t^{/p rc mI ?x:uqQ=OL+:x$#ZR/2+V@"L"Z]#:¾?<^^Q@>ϔMio?vꈧLtm1EG}4M"DiAe_H g-, =| xBg0d0`X?fh^jpBx"h854V$3tō| )I^>H)F 8IZ`n+M;Q,NNڮ¦.aZ L|?? &6 iTq14{\#!p嗞~a 9)=x z÷#dFA{MY+(K/cd=qLPs3t'P餽 é<"c l E L$8|Z$WBʟ8Zl ' Ce_Gʐ FYk`xMs7;8J(0?e=Q1e4A̭yv3+Ww  LAmY1\蟒R3>IB?xMP~HY6ӡ'/XIJDKv޹su@6\'' .CwJTS5J0(~ ރ_NW fr?Puz?6 GE>6.M=A/T1us`tWqܫQ:6fD"LUcxG3%'?A^LcT!N#(%3y(A$ʑiCv3:G( ]A b!dDlJM8pG;NO21[$O "ٶoy;~'A36ħ\~AGɳ H)F!.|V .Һ K,Tgb/Fby,^xfO=FZTBwyY&<o52v*k$Pf*L  O`2abk -@@=qUWJ<2fp=H?vLAb$GL%0y=>Dc&u'F AT5q8|5iBG"+>?H5<`П/, v>?{Q sK:`ha|p qlgj I:$u)B760/#N?Q2qPd3"|˶$_~Ey( H{\ڔ({Uy!V 1l'Na 13B0*G)($9'YnX ;<0)(s>TžCu+\F(ԩMcxȟ#EP>W޴q`00?( wn? %|Sd1DcT,a,DuB)ɕv$ĹNL(M6% ka5>SQ0^f#$/Bġdr,O[_x-f TM{g&_~i5 1ty+}@x]HQ*6i&]yT@si 6Icϡ ytp\=BR$ / m3 2p `~S < ZWYʔ\ff@ ޻pBn}^3FAqYZ̭4$*&Kl'DʋWfϺoWv?6֔}Ma%+X{9 s AM$tʣ3}LB >ɛX7&)MBe8%&Em|͛W@J!2ҵ/m*H8}UzU$1uGĸ(shJf,jt^d]QW\49|k"s)--cdRQb5RJFfzC~̋PKjC I<@isz_'y+ "T!8oSrKRǒ+'G?Y @f!x_Nh %.J̣V_x$+*ãwʌ_-&ImR8C˞D?J#̣W,C4H7iZIg4˺t-ۋ|p;gaps|bNfQ>u+#ou"jġQ x>U @{ΈϺ۽xDQNzH[F |^;>?;)p@etSpI U2gxATGV}zc@cz/}1 r * Z yƒ! Wcb| +Fɘ3*߉LD!c$NpR%_0Q种_l%L#bYpeI),}oGk(WRt?|%0<k0`p_P5,Gq`0d0 83;ځ$@Ĉz.1,eu iD^DΤBDKD=MxNʐ@`CeY_#706 ɲQIl%Q`b7_.Tr$ ;ݧ_=Fu/cav5@[V 6_@g/#skO@Z޸65>N{s֒@jO<ٷŭ|sCM-ݛ.3eGEIp[u%+|'?xp^QI$dL:SJҕ*4 AbI7IT SJ)&%ʲk_*@V=ƉA$@x"2!':{w8|JĻ'Jܧ~g!! :iagrVPۜY A_uPeەD4@^2 YUrŭQ~@qJd2$/G i|v"9F)ƦmZj'1nr=JeFv 9.t2;B'tB=O] 8&tlDRc%<uʙ !$w7? E˜cSGB{cŏʙ {Vz/|(bb$)k}8} `3< E° Zy:^8E`zG\ͫ%4[41Lh=O_" |QjeȐDTH-FKzAɒ/e}|CO77K7 M@ة#*j *$*{%rZ6^3,~%Ǹ -NNg+J%O X9'i`_VzS|tmLAN O^KPI7فN=t@Kz Kø92԰P H$'PDqߢxԻ/n AHyKH%xswAcJA>0\wd2XcЯX,y"*(H,S%̬ro4^F'I|&%"԰# yC%8ܒ2~O &8rJ̯'o$<9`x }g0|S,  ,B1 EK>`` 0H8 ,Q%&R Cc-+I^< 5zN$0SN)T$ ٟ7<R:^g$k'e^fps*\K򽓹,r@ꧪtlG-HE^*AR:~0 Y8q?1+%?[:HEG7qR:Ց'OY|IК^܉+[',@P֞=t0GHUH@H)%@ + ߜ 6dAqd9XE<P,'}tOC8ds;v<)w+r(` 7,/ {!Bd_ I} &gj[ޭ(ˉeoxD'E~oa0];Q W<`0d0R!˜̀s=FHJ+FHÚWU+g؆'ĺ` (Z]IZMѲ;|'FEɢƋHBȭ|{";{}tR}Iwu.F77w^@5&~~A#jz٣!%܇an9ۃ-m ;8<:Sp|}~t_>[7[;zcԥwjqApAU9/G'%TuԮg9*ߏ'Q"vTZgJ"舏( CH!+%t s([?zZ}Wy~) B(NCMRBqvTJ ;E0L hMI%bA'`kIhSL Hl98M $PݯbּߖOнgN <-zdBݯܷq~& WʑxT\B"5ywa [eteﰙHԧDZ>?zw}/*(Dbѵ>yOV.ǀ .8)$L$srGgư"dEpL5J:r!o/'~b|X$ E~e%`n # ÃRa"@@𶤴6J%G9h̑_gYK/DND\p2+IǷ<I6Ώt5zy_kLlz%peDη]?]z_hAzG%}ֻE~P/t򫷞NZ8*CJHE;6“ǣ2赖p< wQZwϣ@Ojcm?R))ʋ$̖HYGT,#gS({YI}V*EaV䑐AGO9 'b c?Nr E~5!"fGixãϭ|J֍3hPT ;>C-z^PSa&I']Q#}$JNO#:;Ȳ3LQ$Q5hZ׭sd=MK=_w9szV*dUX=tx(>P;"y(X '}65FqjT5LĐ 2n w[7-b%/E"φP ^ H}`?{~84T@ض>@"J{q*h/ Qp*?.HJziOJqw=dm'ˎAb'fڋT;NfgË2my!^5Qr\k/&>uSw@y) Z3 KDQz}Tv$<2_ YnuޥJdHZ@i-E} Ӽuy]lzњ=m{gw/O x(e!m!˾9(p.ŇzZ:6XCNn 2 s(8< 7RoM:"Ŭ!|}G/^0ìchT@tQ)?QE} JAqP+/ֳ놭+ %~٢a许/Y4t4|xWTG^2@aEAb ! vc ՠDH"M-J#xM+7ݎ@AZrjyYY쀭{sCIEeQڃC"g GE%ŸTd) . G^˼ 'x6;gG9|Q^.hQy3|gA7;}iUp oǔ/D9̟v{'dVg^7{,*CS|||~χT@\񑚏QҟP>Oyms~Li&iE=Ec,ZH2y .c@2^lەb:*Ւr['0g>?V ﳧ>~aԢa.YsC+X '~c`xC`($~i3|C=yPo4QmhV84JG@n'.sI;hy:ZkR8qB: Py8&0bG#ֲ@wv ݧ_=3}WFz"9٤tD 8?nOIiYZlάBODVV;|~Vn{zܺ-O]==qiGU5eRD29= R6o_`"!%K刕sB:k XDm3.M1v$ĴIJYhA($4ՏJNҚ7EYC ah?ַqm@~v BZk7z+[D EчN~b*x {-߲(` PslEFXBcRSr^?.cL[GWz@p< 1ŌɣCsh-B,1 l4ëҏNǝz+;2hP/SeWs 0J~<( "InigY+uW^6|'c7SgӴVaȵjA|_(<<H%BChߓ\I;AZD!02B$64.a}hLZXG$l?Ϗ*]<ݲ/$8z*\P Y` ~{WYD EK޹}F?roP !֓ ) V(c umIZ^BcRrep[3gx.?\v8OBe^.[O>qbFy7>UT). s YC@1߽ۮT~|Dcp lл9FA@#g@¥Dk!(9.`G)N.oƒ,P(.YUӚ@秙Fg]t.xqMg?-*;gryr 5gv!NL#hSؚAVxbٸG*d"HKx լbA< $!(@(,"c"=^";qHcvyN%[GZJ)ZPxϏNy %!V\\Y-IL(9?pz`0`0;P/486vVmw\[B̬VB&D0%2]Qxč%P:7.iʿi*,~MiG(A?`QM{sWn<,vw|-+H?t/ &ŘR>Au˵cKxq_w$(1yC;‡}d\ KSX1\g_W>EDSoQE'+B+d]H113#Kz4_(W:ԶQ#W֫`6t7..xsEC;I/Bm) E]?* ``0~8+P Y,G']M"{aG*Y" +:0MP( LVwp ^,#iG/ 6uH'X[JeOwޝ}uQontywzr׸Q-ܧVQ@b).K͕">Vު?Pߺu O&ňQUqc'%I)E\.?_(Wlr_ "tzIRf\j'tgv䂉Hu#IZ ,]AJ—z~/<ÿwpHriP))S;v f NQBdCAqWP1\5AA UWjp[z}~zM~ !}r&gPՏ14HZj4@+.`Np@yH].]cE$_mx,Dh,ʐI 52HUq 8iC!<$?5a^>=qId5}Րjި+XO~. &'/>ZIiO[g؅b yW oQ0 hdYs6JEԆp 'i$;xԄ 'CGPI#$RN4P’fFGYy~vx+Zz<3]%C b*  ެT^vn)~V%9)/H?"pXWLJ[$B$˹I =;0ă{ǐ|C{KsJefE90#>CNuc`E!^!{X~tx^{fKڑ T˂e(ԣ icAgI|X,Χ 8>pbM,I/tO=;{X.@K $L|PB̰,FؤdZaE(V8Bii; AR$]}WO_YUVg?ս=3=yWU7?r-1'Ig_ `%E"ӽ/Rpp2>׻@ @w3n?k / GgBa)Vznɉ"0B]=r!"vCAFx?Ia܄`\:7]Ƶ7`cJmVnYl`"uy9tm2D/ۅ Dd~KVN f ,m_FD+Y A!M&E|W @͙:6!Y WހGĦ~#9=%:mIw ~Co2h4oJêk֏Kq񁕍d^F/<.MAa>HI\ -#vL;#F3t;`))[+iѽ]ÕpQBb($`ğDO |@?9oQ_,M b pp%р7+VI >\[7 3v*dpr972Ӟ;ӽ]a)qVx'4?/~sQ1T@~~b*9cm|}4Kca5u7ްKEwf>Pp!L/g+G$* xjrkN)~ @J[>g mWaJ?\"&ʏrWPOZ@5e(m}-3.1Q JdyǏ{!,=|AW)oUldeCg^sZ-`%඄D-$L?-z>PԾ =r~t/r~y7H@m0ټښ}c"V_{vgyAN k+\8܃f=S2!(pM}%όbs~$OQjՕoq:x8 r:F'@X)օ"JQgQ* Ge;7KD4ݍڣ>H09;7Զucr~Bv p3 "^FA `n$$.~v Q ) A [L!iݠ+Dq)Zd\r |Cm+K#woFl ﮄ6Cmy \b&t#SZnKPlwoÒNMhjSݵ̈́ {g:ڟ\|X.:KR:0CuVbGӅxyyFj- BjNԡ":Ǩ.F6&jcQg'r-\-7', HsC. T5~ř!~# l=y-`M1,@}GHjqEFK϶kF #сMw/cHP2֑:/"~Z>|C`cN#GAa6忸KPL(pxmH11k.+y-\ߝ<ݑøi;WS. GܟN刟[N_xL 򝨀O]͂V> LrD?RN 8!Wj&iQi<-;ZMa'n{O;PY8~kU?r~K{vI!HdNR[ei^vx :@v`FtfV]l[XErGXRnQȴIᇞ{`})Xh1m=>Z/iO>/kPk|].OE8r_%)' ?o[)YK/B<(A.1R;DOq?? |3! A A a 6B!E>ʟ|KDTf0lS #;gu}.rmY~Azvҧt5!!KU_OX5: nDduHeI9E}Wi*t?38q W>@g,;9h}u )W)eۺiFtPkfu滝C²t'Y| mB*=̱С:~;ȔqލJB^1˙`uyED﮴?\M: ؾfq&`ar|@ѵhyeJ П1x J DMkX(h-3(Ąm?\ϝ7gq *sخ-]>R.5Xlh5GuvH rbo&|B,NJ'UӠx]Af^-f1 EB3|YTfH8BxA p*WPG݅h! 0ϵ*t1<{? ? ~Bwh쇀7{8BD Ic IM, .{s9-:v>ۦiaupƓĦiϕ!u r,%>5恗}|O6'P@t#>6\%ێ pP7TV"эn/^͂,Q>$J45ZH+*V .c Thdz~9q.)"[ʱ@I,N>3] X)͕[ދGfbR&ܽ½Rh/Cohzeho}}e;ğbmkScGDLJEaD9 S?בv/xdT?Jk긵2ߠ >j|t'#藃X8 `s;ܸ]DbzftSkEnhgA3:fcscM&6`x쪐cnaJ,GjY#k 먀Q;5=/}9($]JBJ Ӊ@$@!(abNT)lp$H5%{blr{摩(j6p! ?hCB}z9j!.,;R,zx?-1ד웿5IeMiu4]cTus]aΟqS,TE9,@ @6skopw<Y\G.#ɕ?(sE%/٦! 8mr~.E (=LB ƘcayMLMbbeE c`F2@iau8Bݙ \-4qn;<߀h,$* d[nU̻_ GW @V)[ rM4c]]A. oVnd-gW) -dʣ&n&nU}hm+~Zؚ{X&)N(hđ}WsAU|\q=>CRC[l]Bqxϣ\sGX@r}/ƶcb78Ԇ+!'KsQ}IT6@ɼQ2Fס+BJ@Jefޏ9+F44Qp<@ pa<b3܂c]$Bryv@!Zghpk0W7gx˽t\?f CԎf#L`mlf;6 :ח'g<*ײyT@';wG$AaArH,+YH#Hjs "(MD14ҵ0\yZ{SJHѫ_kar2W>!iZù}hfo =?!b!IM!$; $Pfx%JH4oX#}XY|8xOFR])t'Xm@O|F+1X|Z; |;K@ `G(UD AP34[@q>o)B3̠ s¸qh@֖pA1:.o[2'{eNHqE!nCfL`qA B|OTM_ʞ\vr Х9L $ģQ̀A|,j!+-11v|xW~9?<1w9yrqH\o61\#c;cD/:@8Dxc{FpB~a.ͦl6Ғ$‘AMZ>In@)W 7^pgm{G٘)L _í~&ۃJ_} `)m.~2!p$ie! 2mo֋B]_I?`xX @ F> !faw\4Z!KW)Oҳ%>0 @p34pI<)Mhcsۆg W|c ^ m&3Y\!T)go~|jWs/9!"Օ1TR>,@Zʢ[ M`bn6*a*}x7]#ͥ'Q'1OQS9bۈ)yո`r~ΆOE (v8 @8yFfL?N"'i4rG\@G.9b9FR|ٓXO@` @Q  ݵO a%LJKs!ֳsgxX5/@ @ p#!fDRqjU %DA;kn4w>dڸ54w*ǥ@{ n.$x^VI!hGF1|]*[)P9 ^6<#"BSj]RoS _j\RY}{/=+pDVf?Ţ)fC*?(!.~T҄1Hء.B2VNO}V@@*Ρ˨9n| Sɍ@gF.bq^_~?)(;awQcCs 6fA݊~H.׀@?r-3B `%؄Yv sQDۘc(P ?pYtPcf;F"h#Ѱix󁤶A@А?Y^nwO;i&*@ShV0\zx9?-4> 7qi܇[?^Vr‡  dDEyp;Ԁ'jAu/O\?;_yꙟS$ Aㅟ6KR8U5E\69 B|wq HO)TM;‡.6pǍ6cبMy : "n N"zN;>̙)ƞ5Lw[Pr-3E;:6(R֮Qv*,I\0πt $306$Q+B8-ڗΝ4lӻ_3 OНDw  09a4RTeG !/ǽG10 !hԹZI=l:`9{,ު?2h=1E>mq6b]qcdޤM!%{в+i~d43;)7O Aځtޥ{@؁M>ZCvElބ@HաdDΞCy?3rHPl!5PW)` MZ͙èU^p@pf !B?)7 K$4dA\ %<0SfSC[Sn/GEG$q%Fm8ۣVyB4gsKy0mQ!!CP+>;fD~i־yFt$ =;RR'؉:V{u|| @)g~9dp8p?X^{f$L#Fw ?B*wF}n6IkIst~6>1,z2Zgpo SNqgVS10k`&E/}(SX@m}fLE?FRh_]X 9?7w1B 7Pڹ{ZuT/%cvn P*5Ql dTV%a"^Oȯn-Z~c C[%l,\ˠG(HZ@"u \ $lϭB:̰cֳ ]Qi}~绤U4Eކ^3YCOA> 躼NM.^|wj~v?&uw[ԩUYd\Aӟ??4^~.0J4(a8a0GPn/@o 4!lWzLh>7Ƀ53?"OBe#hm|ٝ?#rm`5&D2i&K`DS=;frp츪]K}G+ 'S=IAmsG`B MJX0!UK \ y ͞Ok65=hwCWPn)ͦLם~J똜*&Pvw2bhT 2zb i\xhT {7B@ P  j]܎)$tg@ĵdDfִ4*Ux;~'<2yV;9fQG2?^q}?{9LNw ם4+ԾrPڣ"MT Omh!)?988ZRsz8{fk.^xigf.M4a4K+ib0np^o]v}z*B`LbtW.hW1'Ghz2ǭ9Sgc@pfL,4J{p )@]"cӻlHLyӮp&F,5FbYx4BϧX0n͈ҖN$)@?E2HWRFЖ?GM{ fB<w<6f'$BH6l1Bahे>z=9@072 C6.³9@<}c+^GjߑaǬbi~HY֤O?;wDؿp`2]cZ>Ҳ/!;s8|hkkxk 7P7 10 YspRaH+o"]ޢٓ[q+q4-ʙ7Ph~q pmG{2b`iT.xq9l[@|,.暩І 'tD" D^\a)ԏ2!yv{{ͷEةx2: (,^A.v=JcF@T+>"CڣZQnT3˯~@Q+rc?&# 1)+D$O; V{Lڬ3 A579ng#кf&1ldA ܡCn >Ei>J{Au0od\.Suh(+f 5od VzKv?tW0Fxk|'d'ݏ h!: ܿ9t4B05̅>P3[@ 9x*z.Ν/1j/I܈wN]Ź] S40BzɹҩIh}~4Fkcʜ/&#HZD&Z(Ֆ p1s㨍gtK￴5оUS. mտ{)ZasVn7HGv|k,:ew-%ĞX|9w Mqx*e|fW[kn_k[~w_ZМ}ylGT60bRRiw4QDu ?d=IH*F}l!AJDCTͪPkZLDі6t$O @AO 8SO3M R (n'Ai!D6Bade)(w}pgw}^ < ZN Tm2t8\g}e9ڴv)?ǝ4^cT- 窡geDaHueW'HM*J5Ơeɉc?0i, hG)r8BKvkEe7}Zڛi?QsXd, p}z= G,49YUkP~*~؍[Ә#Hړ!u96kLtο ~-?Pv+k$[h"b؜24]'h#QLb$!xC1m۷9?YtkwjzBqvm4olWq.{ ?_xh> $ڻ?9m>T+1!/2d! C1Hs 낌i}sZN GwJAk~?uGj;)ĹT} @U?j·7ۅ#b 4Ky @5G3}Dq2rlq1]=sslg#GY8BO֦` Qg  >ˏok%= ;Ш- /;&t $~ػk ~Z,i#0Y:h4B?Bs==@r!=\QC''¾J7 /_Bo ;!.O!#ױcUq݄@Ιo!c>6;BU^5Ji2+z>/ r֊? `7q\ @ g8 @ PIǡuZp܁ H&*0i(cy\<"A,h/YM[߽ n)-m3Mmh_-ӣR!M "~R 'ŵ j@mts^h$h6)Q4 h8J=s1vv7Ji\pJ٪ᩧr2~o( eyڣѨbPE }hYOylp3Z3<+j+aVѹ.T:5 ,s'=">ݗ /oUvס(K(]} *Wנ,^*6S8+Y)TB|-ŭZk}]AB8,@%Ы]h}xKj*/A@#k0Nh-uLLP#?XF!Qƴͺ f4%7PEbَ;żr)p T^9!Llt2nZ0O4PU_j@@Na> !@B9p)W!Ѽ-wgV rs<u;߂q7<0!:Hȵ+sh 8%VYv#>H ѫ3 lG|1[_^r5]~"Wj7kn.F*f- /WtsҬc;AzscgQoּ_G9?Y|, wsq=LZ[Q*ur!EbLiQ\P*B<*U!# <%Lj;E[y-a$~jj58}6F? Ϙ~2nM  F 7v';̹Qig'`'|FM} XBrR;|rh$nѣimZ ~ g :nxY@_?r4'xh~BPqnj_C%55qVGFBP)),/Dt^JbU)qmi u;k,- }Ž#,SxsX+dFo.%gͰ+ ?@29掇!DmKs~݋FY~e.fllɳFs .xq =\HG­0i=V94=m:5㶘}@ڴRIMO-vkS0mҝcZ_kGha|A+υ<4O?< >sQ ݏ!O:Jf<xd9F4R$DXi&,9>|ecS$y  N*T} @A@5^V74w:Mq ZO $?TVo"Q U)χricg`701GNnHu 8~5x=WEE6KCmlΟɟm w ?%uCN a]}?>%qD VuV8<@ `ޕW]\s$tH8퓒"GǬ_w(2:4_r#V* A Զ\iIt D\JyPVp v9Z*| Sj|LjGm  DžZkY!!A| ^gAJPtBf,_iOKiJÕA^jӝhۚCNhypd_< ayGQ ݇PqY4Ou1J%8FԊZQ.F`b^@Q^.ֳ!F W,>vM7<ˋݍ#GEQ~WUP ӟ"燣 ˧_`ʖbGw+ܾr䇑Xup?|6sC-3f{U.v:kحAkx2<+дvvS% p&ƧZ$zr}&Ġ3+ Y;P (SP7!#vr&6I(2G{gIL4 pviCJv/(3~VQi BC܈>샐wuLIbC43Dm#GFJ(Qh]蒳G@!Jڕ D"6 HB# ttiT?F?. ƹHDco(ozFE$|%K;t\vǎ 7?"46{[x'Y1Z[깷VUQko",M ғk~AF-EW|>!s1}iC~e3cFmS7=~/"17ƾ#m$RD[p @~J @g:!vF)hyvtVr(J}#|#쐛 9 :ڈ@{6/SvBNc 7P'뮠ZHp2.M4jU&&ƛtqR]8thv*5l?{!\6Mr~|깷1XB# hѦ !@ql7P©o ,<@ YNaw͝Lڸ G'!IP6y?TM#FJG))KƔwק!@"arqъI"~Wk!0eH@D P Bj8 9hqBv!"P\hw[^> Pʠ1eK+ / K6ΏОY.Bʿq4?X -ARœbax$0Sn (O4 G.IiC ] 왭Fd[q!%|;8!g5DK ЙTS7i(-Uѽ|l1h]<lk3gv\*m @T*& iy GEq~}`H΄+uKcR购r*IL".$XY:~hO(8r_S3-sL~qq E~ϥ@ 5(A}НPt*Ѧօ# fV7Fd!ESPQk%UU92.ͤ*ij9\yH*VC**9d:G`x*q'X)v%|@ 8@ 1& 14&ZeD4t iɥnW}.݇ʶIˤxI::nI{iu5}mk;+ՠç[ {j/-PFP |AP ( 7.l2SM@>],ѹ^sFn^\Zva QtJ"AIr:3_#ȬVR?> $:2x3|@p_,c#j$YD설R4_rBQhcmp~Ka/\'X&h= K&;@*V Ͷg6Av\mq8φE/I֖rmR*CTPqz{ӟۏ nw:pHF<ĕ o{ gv1~OweO-FِML_nO?<Sr9L(,5Ϧl俖@U㪹N 8Ԍ-mKh^Ӱ)?]qA]mVq>MǸ~(lRz _Hޕ+ ؖ @)I1;f~i=SeH(S|ʕ\Ԛ#rO2t)ַT9u<2Ro~F 4赊rx:'79NslixR ;_  @`p<\t𔁣u,.){ֶ(RM-}㷜/V鞢vO0x~ wl*ۤyq+Gx)'J~\J&xiyZjlJJ is:> X 8y;r{ќA4 $f0C@D*௱Ics /ͣ24w,\LYc/.ٺG*dXF{1צ}\ڍ=kVϞ@ E\FQ'm K>*h]?U)'/='4\(mHZʯmrN+lid r$)vBk:]/oS () D9F :HV15r!w- Hp~o*f{]\`a@f>yd=h&Qlqtrs\]κp5zvI}=*W5gY9݅݁8/zz*XY^D8qz-_v+N,O/= qWk,vM?Z`L֜8KHػN  Nۂi}tBP̮=\DrCپl5>rAeK-e &^{s` QÝ=P[2* [/ݏul) ߳u~@\BܚEҞLڷARU8#qʬg_bKğc0r64غŴ.9e6!l5pMdf-'/fd* ј9m,0 *ev,8u0l,BI!an 3ִzMB㟉CQo4*}"z\3&lo0%?ˤB>\-@* ,@|4ͥ>3F VR)nNhS!G?5 =*T]S@/}rx~3L̝0ODy?QtppB (!# c+qh6$Wvۢkg{ Wnh4KChma,(2@γ=H GVҤd!`8p0@ũVҫ] ? 4fo~?g޾vڸWzxG'Tg[|unrwWS\;1L;'GQ&%ZFN`~ 2pFN+/ ~-寲2p\tm&p8hH!v+c眛 ==@0(99\qUࡁ\XD 3;{ 71ǯ>ˎVU)AOZYr%&Qa;^;$E`;n|ݿ4p8`/~ZgϯaN3.\9{ŽGww!^|*91V:C{ {ўoi6lN/`M A K}ɝBK( Ƅ ?rl6|zyyYǮ`Le,ۃۂhs.Ҙc;sn 5УYj~Dv5fT^(49??0E:ʐFA }{=t n0Ҹιyٽ܋C&<V| )\(WqpNStĠóϿ{W8t(jZ1֗2 {+a)@l2K"UܛT2Ӝo\FXĩH'YXpWnwFr!}9_ v^Р}#uCb% Dy!.ǘ?48I6?B @߲A$}'=f{{z̎[7{knopIDy?!(YR$@QEyػ[w}3e؊Ψx=3{xUYYYY^׷?wqKR!=+E,'qT,h &OH1B ڔZgLj'{ [I_#RpQM$6f (xVA@A_o9y{x|8|:(:a t -l㹻{3dliExgC>CB"F2e<*Č||P5"Pߟ} |:(uPY_Gr0h\;4q=h[{גcvbɪh5t`IC5:k}B9"PCU)3Dp1\Y꓇Be/r͔A?#3,/A^uʾٌ+D8xy}a+o`|m W6X[qxO{;A)b}T8$=A4eeGhI ;Yڃ;]bmuϺ\H[w]. &a,=.pl67W+vx7"CLNM8cd?g["qә9zJD&}PwWZ)8*@q*(Q"E@+HtR =6gր|*(Q"la?a%|3r=3/! HyCD;?4px<|_Gx>یv\5X7m !m̏I!vfފ?ME;i2]c349F {T?u^UVN.?V&a6SɁxϞ 9ׯsR"MS``>&a2?]py^σxn7޽C'gH&+ٳ=G '1Hx$jx<`Y/r}y~+oAU@+`t T5{l=v別r9y?>9+JP#@Ѐ~CIiQSY1 k}Æq:ҡ|m[,nhNˡ-fƍj*efin+".?`_׿Ot!G{7#R/PH Q J~slm:0eA4dB u5%hpޝ =oe Rf+ x<>x>}PBEJ8KT+n0g"*#"Zͅa恺 f(E5988F}1[͛nH8UFA|TzAIyy+{Ma?EÜ߽^lcr g-n,IA)zMJG`Ȯ8nga?KgWorfNN+ϑE4}Lg UJd7(S~`wD@GSs׺Sg C,g~oh7M RbY+4zrF {l644Vs]|s󇹎Hq]?nGvFH"׭gn=م'1,[Ϊ[je" py@*mbWA)>)D kW ^U$LD ]m_1DрkńӨ T]Ж@ n@ @5x>]PAT6OSj pg9"k4" Am7'yA-BoT`>4bPor\ThȔ#-UנnҊb-6IqL'2`ח//ާpx+,/ 2 2t8o{=6{=ِ=s{|rzv;,j;?C3NZ/޽F{8RW6.S XG[ t*h0.l7+lǝQ@ P..0 A]pc+1)yzx<ևxwLM7(nji>u]qU/^SjA"M.wnAn'cr!p7[ۛV%_`Ieޮ?<;/_,E #2Mt#/)|%Aa ";ʘi e 5. An"J* s0pcoOk APQ?Pkvz<<s0 8JM[>l@rB9}QM»9m>*ZʌTJ̪T]r[\=v0VHcK"S%fUAh: {hv??<0.uwLESSN߹VӜa3I!tI-,j/޽ȃ;?ͅ;gpljsش6ub^n@qYY;HQ te-{(C%#BaC5d]ܼiN,^4u*uAf^(UgktQ nn|EL&GcFfNr ,gɊ?kZ3;1?|#/޷ydP{+1(/>KRP!(Mt ²At"BI'5"[T`L-asZ1P7%z<gJ(x<!:fA)WDhɡFh;\a)=CL#-}aV T}prXHLC8UoV8 BP#^V;2/{TFX R*v.8J3>KDԱKn-Q,r*aJy^w=:DmM߻R|nWwoO޿;rH89}ulљ HZ|yIJpr,KåǍR'ع8N 6a7@p4cŎKI ndh}F;B#iFu|Do'1'AB} "3 0$>b`bZ D") aaZֈ ̼u0m\n8B`8/aHDZA@* @ 4P{@lQ>Rz<wy<"@A >|4ZaKȊ=)ZZWڸn.t\mpTf1" R7{1s*[w;PGrC=A%_=j @B#+1{$IhZt=|mX] A+2gE3"sB~Ϋr}eAtFG ;n?ѮI>AVV@Dv@^+fKDf86EԺspu7JS8JuwWcrE<^rsR5RQuu(?d`Ǯ˨>}|Ja`慂2+?ڻl>gNҚ:g] Y|6tGtΧ PA aA A2Q]>F(K{ rXj2.L{3Pĺ,9rD;8D@Msxx<{Jvߢ NNQMhNzUWuCAalcSaÝn6:+p5<˃qk. 'eDX8 d.,,6yX;$8NhZt Iq4L;v'񾽻RzK|x0 Jl<շ"X׏V0how)<< }ݮ|+WR~=ytUK0 rQi\ks48I"Ԩ|q9H%63cUgF ;Ԏ!Ϫx>=Lpp- ._xfjw#c |֑bHQ B}D D&Z袜FiSJB(KeR"11*0TE|:r(E4-׏m5k]۷h~4m}"L ӟi)DA]~APQݚ̡=x>(参p2 rR9CCSdNtG4+4" Aؖ$}hmҰFSS%7"N )efs2&GY'Z-NlvMӡJHZmEĴn'{5Ѣ4+xQaqi?5a7 ۥ.2\y"]m~D3ov&0S-Ƣs>2ƄX1YI/=qT[zahD|:z]dT8ڱ鲍g0u5"R?]Ig{(f8a7|_ƣe'lfpYWCWWl'5*]@ݱn)ۭ nKGP+8?Q:/{ P_gM~Ѣ|,o) V ]NýI01y;T>M(dJ%/p!DQ["Bn}-{bxUlXS luYM]l Pnt3,ՔjQ'PoC89p8v{Ymlg9xh7nW8?e ( {Н #""`EFɰ]`B 3 צTq[/6 wKLYWWEؿM(qap?44#"Po/0_"9{՟s;x<"PG}(g05DCbm_yxsxJ#$۔nh&79)R7Mz\'q* ?}}(W2˭ Dp$^PkL>2i'!ְܶkLG$v);R1ā}{QPZ oxp0RǁgKsL]fH "&"thWr +긒 u&@s8}i~֍pqG,51 kaWejk? um @;g\h)Cnwt;t;mZI8iF* >5˞1V| cE.4y"/(]h]G{g > ~,fy"7bGG@kE#NlǎqiM̐L @%V?A5`lTB3iDv>?o6 ΠZVham uyvm [qfq(ӸC'v ;@pX{so @4 N(94 @dE65Ӛ> -9&[E)KYuMDhB0n7ҳ6e@I>[*a(Ѧ*?:#j Ԩ+"f?rgxx<-v!#ۈ)q8*AM E\?Ըbp$;& Qjl c}4\"S/"G,fO2ժ>mr|7r Zt:]:6nDŽkP˄$| {tb0?=6n<'g!E |~ r3q0-h%n@3Ep5rSC L;QaȆ4qB6p{)eΫdwx!ܯ fg1Ov=of/"=*fkF iTuTb*Nʊ]BscֹG;/0澽)a]2) W$ۼ`ş!/vXO3O_ʹ7F:Dm0~1Yo{J@b.KktDן ꌋHP\230 d;UELјqmkRvdu⿛u@d㴻m: C[x<3xXܞdxR~q? >@:G |f;F(2j[n+6d6ܛqEHr^6{6v d%@9&Tχ#4RA*B6p_BQlx</y<Ij (v.\R+ ȋu>)m77,7wU?` ^o#m'YVq__8yAe8="͏#L> ugb+1KNvJPGPhO?s7s'!hf9EFk*(jCwq~ɋ\Dn|H.賭JUA n6()!14~  "*  Xx<^x<g 80 bӮ;ihN@ۭ2LZ :f ,j̶365m}#_lC e>${|@)k闹JWG8tg@?}|9*K_% b Ei!*8yp`.nN8@.H3M7#YPҐzInٷf&+ W@罝Q*Mf&T'2SN=jA0U惴e-{`x80p|3"a#+')$T u.t!##UEmiRf&pa4 xu?GU`4D7?=jpO2VAaA((1mD4M|+|pp [kTd 3_ 57]f?]߆le@-`f9F҃ [@fx>̣}@m7 h -fš:UyεѸ#H hEu؁YNؑN 1d9~^e*z_'#uXL=.y=sM 8VůppoaZ9w2XID8V#B;Ez]Hsd6ty) HbNޥqܰo:[+|pvH8>ԝ=+Odlݧ`:RrET%$^rTBk.@Z#EޥgO /:h3FzFo^v]Wt[56vw t8IhFm\̊qVx> uӸ6Ku0 YAai)#s!~tn! ڈ(kG܊6H]`]*RVRYW9{@`q.q()G?}b3U 0 .mk{x=<dzM#])©{nA & R7#0 gO ]T+ڃTݟZuf|AC Fv!1AN3Uj xןsO @菂xn] ǁqjlPY608R9 t6]FC?ԇA 0ULE&* > P\?bbW'2A&;ֺ.Z_[}N@<ȏ=@Z /~\ee sh WT"KsNLcs3-E$Qh]g8aPhM Sb wy/d?z 'P n0Xyjgy~PyF{ {1.@Nqs'LdM߄7N7$kj>Lɲ5B:yj7%o!vHp^ȡ`]&mdE?@Ofb~ 63Ё._ qW/ ' _kst_Ν Q4PaX]39biB)( t9?YNEN"*Hs)ey7#a'<:KG (u6ø=N4aPii܃_%jcpYhAT=/Qk _l86j؛K2J Wit @sQM2Onۖ GGm8{m?CO0x>?Я&:ݸrC mК:BŽذngl"C)y~( e;Df:lb`0sQ庥0s֊R*lA"0y8Bj;wn]-5?Rv{<ϽEx0!Jb96nqrܜ I2K5nsi(eLPeNuz8ml։-HdAa? `v4 ϏSo!l}e)+#86I~'bl~L33rz!ZRQ,GFX -(D$ItڈnMLj$nPAЊ#4߱#(_yH>GP(D+nP5CSR{7˼>SG)Fku+ԑmpǰ<3=amг DҖ5,(?PiRtců%*Qɽ@8ҽP+¨@!qkSL= @A׳ç<cu5Ь/0χ^x<3JA2[ m^eټ<5ͧ5ARm `#ذ APf*SHb*ST=ei>eCyP)pJ_ޑUFE [ 6kd 87 {~OkPEx vVp@Lq(19e"tՅ|%#"9ݺ&QnErρ='9{A˗>Ϗ|:~m s=,?f>?ɇ. = NP*$w֧Ȅ?r!yr"fZh̲$'кJ'r Y1JP!*OadarN~ RJ!K`k l:zN* ׁ*+x</y<Pjsi**T@dE(M3Ln~hlgyC.KSvmYM/baqLF00W} <~z/  z1/t.C^|*]7Ba'Lǿ/su`nw^?wnCs\J We0ddYAh4qJag;W2^y#jt7 HֻaҍCĝ &"a`o=Ŋ@c{:+l^;gܑ@7ƃTz43UM n`p3<@`J=SxR+X)UֽfEKA1UMO>>A֑X\ad<Y4 X&?6Ezu%sIJ1;WNηs\1Dy"VEYbP6ԛ|:XqĘvO(2( P:v6xlC/N:q?1*W&I_ZTyn돂x>)b6:KCIk S٧OrY$cZ Ao,1 yV />4; R#2vm`TH%+R~D>m$ӧv n,iZkO;Qoc1m ;? 81S ;FD\_xp7޼Dڬ ҂ T֚2_P1rpf', b=L26D NН(no'7|wtlr! 8T%P;zAYLE'8 Rl[VSFZ! 'WO5akD11ǽ3qgt~6|_CxzЏ&";p6QwReH#pudE# UJ3A"P_}@ ZGE- L̶P%>J}H}$pޖyXg[(<3q 8j:e`8졵`mj6+4=\7ܛi#~ծ\$>,Թ&jtYp"A8R1i<cj]2ލڻYL"RN+i0Vy\=;;6ŏ|gXZr..\ే績>4drįSj([ / oD7L!9אF$-f& `D6]mf :Ez<qs!)=!Dd#]=4Xz 7T\ԙ!l"H&q{'ƋHn5utE)L;ql E164"Ng H5ΐ|)JgzQGɌ -o8BaKfɮS˯ooS oz޿x<^x<,J8G?aᆃ!J5E{svEqFte'wx>;Une={T)N3wY L ^Vo~yMlr|0j1~8ʙjs$s`;/w1zmCMShͩc3c݈#vQ^^-3Ν]f׮v)zIE>N)g^br;w ~>v6sv0y~M.; 6プN_xCRҮAMm0y}8X "2Z@lq6tE;}JCknwKaވ}'f9p^× \ KxΎc Wsz^eU K.Epi$GvcJ?Sr|Cڝ1DS괄#'n _|"+B갹E3n,˜@3~uNfDY|tf]^Xr-B)~7~3ghFE=$Qk3ls>ݠheﯝ`nm PiEa;Tg5$m /E)h1bh޶UvEWq'["1Tw&Ѐf;\6x~H@ q^1Nϖ䢂-XYg>qB3>m06q(ZV (@PdH"Dp Jfl 9 { ty\DgljBe?A` &'GD흼 xH@i0ј*527$2`8\Ckq7}ƊCۡ G,"ݐ-&Q>\ 4PPj-— vQM`b5 7fx@AOy<' c[!xuׅNS+Ő$V ,'3<+=dYy5rnAVb{4`2Yv {}0 h1jT29bj2Zʾ=c;ʜ@g/Wٻ0faONs˸zME=ǥXUK{/>cv n4;VbX+12,_\cJ' &ܖk1g E2/()n7dz%= ,8kpɋtpLm\ sDu T-1UkT UWP` eڸ~GAA),ׁx<K(x<^d} y HMwM^2Ɔr%)m#:cW]ћrL SnSXΞ>,pF#߂r3SSOH1 ֆQdyNYĺFP /|IuH~VYrp8_], S;X7& CCab,&Nb6{E IL5mB9|`W޺1 ^}:_x`gRi;7n^wC jJ~#z#Rcחj>ѺЌqI.M>:Uzu8X *M@s-- dZ~F&qEj:E˶6t݃=&XB$NZT)9Z+Y1<[D o. P|BH\,-Ks[u$Ln#LA:xn)*K[ lRl)yH1`7H)(ߪxx<8 P`iKnwTCHU4w4%owFkw%1SM]#D(@΢縜HpVfsmcuhhGA+Aō~? M$spQɕ9ndiN+I~~f'LLef ImT&[ SA j3Lu{'peSMnG N?[ Fnlwa Y{OX:OSIvv7-u Rw,B3:kШ\x>: ZE\˾WzaM5 @: (D?݀rlw;6mwWy<$&;1?w(5>Djyme6'7 .k/8ne7fBmA" 8k ɂlɳw@o X7x<Qx<ϽNc(5koR,yҶu)4b:49"ʩ]6nX-I<هXkɊ\ .+YZ'וO|XݡՊiq kW7ҴtQ9iC'&B5RzUzÐ$i>:T>;er):c(n')B$$ILoPiǴ1~^NwcV8?5?=K6y_Nrmy?|{$Ϗ%]_bw6[8yjhRL'KH])qN<TC5IOG(6Aav~]@qD]'P*a["%+x<??%91Lov,"ym^MHC2M;)a5'nU9 aYLɫ:hτtS)vʍ uy%~ϟ xn)::j^WiuB*~v 7 {vGj5ל#/ji LZ!f \-QbCj'쓚UN-|nji;2V+VQ:KVQ TikBq82?x?f~:e|x =4G+ KPQ2M52'PY.LNP(fvf?gjEodoK+43ߠ=g{ Vs%|=S6a\8fi*NkP6hXa,dzxEb+4L^,rs5kDe¡6=&[w|ey<ϭ@8߹? v_?[@Dpu3ݸv|QH͵ Ɣ w:&A֡V]hS'F)L.JdA6$o!@ so˿⏂x>k1P N[70M08[ ZG<n\،EޑtE&=>,^MH<3-ݸIcvt.NvE+VEͼszК,?9&mh-_x Q] ˆGK'#VDB vDNv+bbWEӻ:t!c o]2O[\MpmLOYY'lm%)AKJ":#֨i3R!sضFq^0˴ô9Xp$h/moߩ?= @-(u qQn[p#Q h- oޫJ%z#?p1$VpC}Zd/`wqHZ oΌ/;r"Nnw̧M;iTaׯov\eyv9y,7N1M" "8"+Ǧi'e hbZa*Khl,a0(Kё[u=lsS.&4e5Q nZysEQe8~exgs|eqJJK븗 LNACaq,ېܮ{GGW^.\Z >Xqh]^!3DJ,]~B)PtODQ0SA(UB@ DT@c BMhC"N>@#sUuT" TQ JO}>Kf$x?͍ʫY{<x<f8t'Fk8E EJ7wT:N`kFrwDP=pd1ӁzvGUS};Gcǣp73~GTmݥin}Ut._./z*8)A)Ov7jBtQ7iYlQHP^9MnXjKGP & GZ־tq}|s3 wXڜ&(",hu ðoc("4= vX)r@t+}K`@ RZJ y q Wi=3Q[+)j1=ϧ_N!jucH"Rٝӌ{'CXܢ;h x@Nل/"o/S /y5FAl5sG(źk TUر"$ƶy̴mʹ2Ӳ5 `SbC @m# ŧQ$"ĉ~xӟso+^x<(E=J՛er@`z=d0X%ϴ]n&tYиB\E}8%A@^l-uV)*Rqd<ڢoM?e1 6,^PjtLXNG:j%BQڵ^ꕍ_} w~D?/E02N"0,U6y]e0 K7_cwg8r顕E-E 䪐<F,@!Z\F_LfU&%ك[*U{ ?M2 V;w0R9e|rm;|,n~x!Os 5nSO9úg-,ei4^DNL`0uV1NYG`=XQ+yGeRwL5='~PN, x<^x<d8]/[珝lǎ"ߠ@4c#rc, )S=%i%ʉ`(!]6~qQ ׵/ߝOB %X9 |=iwHZm:V)uZI.x ×w$w bqS:C9a C}d ;F>{w((MHRWh1Ԅ|3ٰ<6^@ffCv"[|W*#P Kg +I=x. !˺#i*x<~?Ue;@q"$ ou  - 2n4.S'6e%H dG pCQuy ڌC5]Kx</y<s/0p Z/+Yj(n]$yBos}@Sum:VYi~5`v(y'-2;gdv7v' he5BF?/ϴ≉Nti9:ΠV¯/v[Rr c:mE$DdmrnܼɁ>I$mDҗ* b뽓WߐvHt\ZsXe-ZO'ǂ8BRo?1)@D}J5?bӬ#pv!fI8i0~T%એx<,!'^̜C?twri~߿Yj;wr'%j_mzU5 H^8N# A F2H< q0Ό{=ӋZVZK%J%T9Pu۔HJ(:K-֭_=ss.!3yJȁHPq}5R ;| 9!$(·C>DR|VeKWҧ-h_\^g1Xd1I"i]_H RMJ"pcT3s!n|~W+B߮ =N^ɩ\|KZz:t7Ueee'f;D$ -aӿAT^ޓK >M[\HX+_2']N@yWG(ohELhQo4xcQXH_x@ : "PV".E @_l5 1Ƙ;Q! JA U; aՕ%|@#2|aWB { @dق,jRyIŗًZqDs!JqR3#7hh5T5jfYVmXz__A,{ohp(= $;^x5a1 C~8'ez[@m\>T\PuD\K?GB"*1N‡:>Xr98㫒Tq+s@*ޯ,5Ƙ cFQ=2)8zÙ,_dmy<;`~ Zd |߀J69-e@yєve0+wfFF>^IyR7pO'?n杽|q>N^خ46Mߩs~ֲշ\XU"D7GrE–o!tx~=:*oTGK.@(h"o%ӀŸ?Rž0ھԶQ8ٹ=8636c'TtA^o]d>4ǹ]5]DhW?.(#vu\D|+B498/*s >Tu p$8y/;@A!G0 `7oPN57[X3o 8˿1! o!RGU^H ;e\ Z) (9yL _#c@Ǣ f~W%WN>Pşwǁd y ?Dڳc^0c詁GdR'z|%u+A40 [N$¹@a5̺EF ! ɧ9~Ӥ(3Ѷf+hG>YqYT/JĦ=6k6={r]Θg/P]+6kghU$%aY-%30lγ+(ʭ)X8<)!Dk1$6(MTuK5{7ƘCt J0!?pMzb;-@8Թ )\p -e 6p>0EPr>AUQACxdp@+VUHcn$}dA5јVŶ+[D]ZVbYM[N~ɗ&#O$ wnZK_vPƙ:󃶳W]:NU J.v.UO#ffJgтgP4no? "#>|JaP9ȶLj6n< og/sׅ@;@?^ hxx HC]o-<Wꂷ .yP". ?$oFծoKN@/3ɀ ,4ƘZ1SbH|PR`?f-Ns:yVP2'^*uJXm0i-\ʫltibiF?sܶ_};\T+8TӤe G|40Av6?ujvQWXv6!I摣 [|eYJA/VŗQa0nL?N}M*> BA۷: W&ndMZF3JRc8'2fg¼4V$AHɢ\ =HXSU^M$$e$8($Z݇ogKATVmo'J/R|OU- DϗT]4Z# Y/%{7Ƙ/Km 1HhP~xh98X<\*A樆m *! rE{6|Ey(U@}~H *𪈼 d|Nd*ȷ@w  ?.ٳcch r ۽ !07*IyY[l}|C^e?>pN T+pt]ˆ*ѵw[>Xhwfɏ?l~|r]],Wq@junǧ?@mm"J*tWi/^eʙ[;GRwbWk{%QN)Y++œ"^r(z}8u>,?C ꟠͛\3@eQmR4k's$ 2|<2E\g1Xd1|MGZɠ!J'.2>)%3E( )Σ0`I8H"_c[<,L ?fٵ+nue(DDmA* Oyfr?n C[HnX?1 JD/i'"`['qו$V t})t&EUϟҠ& $%BJ<Ϧ)[w$f 4 \r{6Ƙ/?T5 ~(CցE t{r|У8.ߪM*z|juUҿP,3Bۨ~N ,G#@T`j2cR@c1;ٍ0E3%6r'uX1?U?~:?W*?KӧkOS텵¹>rnwI*յK˫s۴xW3==nIđ'ewRQW~vϕuIqi֛@(o3RFAgHb (p~ys4vӲP ?9S1U %O%UiDLZo l)e}9`^1+@xW/Gb`poMP-׽^$QBU?Uwãm(>uVq$z"PtNA9_M7)k^c1ca "@/A7X' p<ףn:9 HqA)m0hn8gA6_጗p:%?`t{Qbєyh*bNw宕&Ǯ;yLvnR'rqnU$l w?ӻ3k O<spVaz.*>v3ű7h*.VbKb?h!s@,.}=ٜHdl?Z+[dz9ǖsJ ?Gm|04h>QXVIޜZŜ<1Ÿp8,˱1|C_pxǰj|@h> [Nq.(W֋ˠg~\tG7)\Aҫߖ֬sy Z6zmڳc|^0c~;-Ѓ xfap^q-L+:QښKQ|EjZE6p@8?>E3Ev~kIwhg0ĵZDOUΞZ@fJo|ۈ-U8wYIljSҊb;Fٕw~3\"YDywX__9][@U}3z:Q4ţ}o~(.k.ꌈWՏUn|' `¹1pʞEcECf 'S(hoJ3::YT$U|+9B" lOoXVMT ZEyh*rٵՑ$޴͖_c_V{mk36'riN)'N9וz]xp7ٶIYkY>s+TAJZ Pt\{.BD r@4cU 8sAM AjTO뗙ܒ}(IZ!n)tdk1Ƈ@}sxC&eNh:(u. }s  ET;ndF5-EdXv6O.?c1_{cu"]LD!!nwY]gm%CU !)ZnU> žrF^k8NjJZatcNFiֺj2.zɫWf$ZF]kwOg_}kn J,-XQ885tN&2̐H;Ov竃Cz*OO:?g PoELhm$@ pXYc1%!P1g$O@|p,65Z EOo.Ƿ9γL [WC@( ( }|%]_6a#㣈D&.pUc17>| DArHwxXnUUWSͫTS^UTn\hۊU6H[]|r"($p 6N ,ٳcl1cn1B$)#p?{βEVsk}`;T 4?ɯniH5B5ki-VT>;w"ھ1,kk+6௿'f=([nn.W+^o%>*ʢB ChE.gG^2 c9 [A;J~ހU6m%SCEA.'g/cnF@m5b!ZC]{wM#@D9ր'n3Ƙcl!G(s2/qXo CT C*`ݵ MVfkfEقnI"JQGHr_pnFGGnrEAh*Q{+()= ,0FV|=5AH +T˪X& u =V&v%Ԇ<7\pK1Ƙo{!BhdDJ >/ i$p{ vc@c|n+l" o3ӑ!~۵9VWs >A9aT(X{n|_H##:hIޔJYIҤ%iJ%Ml|6H("43p$I 7'.pB (S*/Wv&#d>rG0 ]7h9~[eT+#vjݪnC[ri1fOx8}bԍ @a]T@G6R<<$H )Hoh1|c1Ū)P CYAe?P Kt; ۃKY]R3\rӾ2;w7MFFFjRKBe* jJReK &{wSW>͟?STI&;Yg0(Ǣ3{eMpbZ繩DRyaZ2 (<$CW Op=pGc1~"Hp#m-8V | N]ǿ Dxߝ^]h1*1Ƙk8D 9A^N˕vX_MD@f ~ev$jZA4MW jk GZᑇ&er'LmDQPo4t:UuGOG*?M "RPQr,a<ԀYqj(Zyt|rit jt`챱Y@-n~"Hzn=6#+᳀~fcß}Eܘ_RD01-b[|) [*' sNsd1&$S2cn#AفH@@l֏ B%IPT(PO3݅[j5Ңhvչx<4-*tdOc7^Si4tͪj,--h49{ 7#MSzsɜ❷/\  ( C1)@z|0\sQWGW:RaXo괿No[>ܶbvRk\!B 9m/c6L۽x~ЈPXXv@?Ng2h$AjCC [ ~1X 8c1nh a !@ =RvY޹6ˋf+>)"20*ʶgׯmO5덨VI9/t4M(MSylflݶ$V{A~*J/9s47c?pz/篴) G?FQP*?M%OeXRBc:ʫמ{anK|8Ҫ9*CҊ`Fk[jg'1Ƙ ?U3@pk@N<< QUn` o^ZpXcUc1w&`BI $ ~}2Kt_.?mu*U WmuGґVKI=^Nt٬k-S "^ʕAP5B9q#9p7YY=+?amcq+U򤬲[EKXw寷=Kh_5yYV97[~V:D_t5uU%3Z['C$[cbj dP\j/ucn2"yhrc^QnAw+6`hYk$Li_R>+Pף'A>c,2cn@56p߅J". +&N{kkvQ !UxARs[Эzdբh^1 㘧. <9w +++<'3K\:0;wSfu-+:2fqC cU&*lRDN9}_v2' ]I~65zE`)ϯ?#9-NgvqS*lg$N >hq.c@s+ w 0pf°(\\2B2 lJoV4FV8\DJZ]Xg1Ƙ @c1$ x@SZT?ӌ9:#ʫ ):mpga|p^OZ##uF:kA?;v kkk={ʟjsg)EQ}S[977UN}/O4֎"jՄ,Z5Ӎ(FG<|oJjee_J/ Aq#γ_{@Tyź,+ C(8Ov5۔vѾ THozonf Jބ*X_2,+ jh&>F %Qo-8 qسcUc1_=#F a9_{'[]d2Y XnG / rouڳhRZ=IPU._ȉt0:: ~&&&YͲO_zv薎DW֣R(gl(YE4"cKhe7Qz9>YDb>goLH#]w7ۿ=Goh7ʃ-ɇHW7pʕ`fm]er8Q v:6.71Ƙ ?/ܘnq`oqQ|Q} QT-Am()Rz2`U rE3( @ %1G U|(%HT>QVJ# -K8أcAc1؏PA TAPT7:k@(B@r Z} OdKH&j5p ^OM%<oOWXG9 >ڣc@c)! i044ȟX]VXY솳0dB~A$ڏlcjZKZ38עi޼|L}sl* G|Wt+kG]pfJ*(ii Zh+s ZvVcd|M4v{3gt{ ?xm92+8 ( j W;I|@*?gUo& +o8k5|x  (w8уT+}B|?v,E@w\c,2cFT08  cp* s H\{s8`lo뾽46 Z,/juv/;t^7Pt"i">v/fP*XdU+[rn.\{_t-Ko̪ly|<=0VwDLnc6 9ue]J 2 LjO@]8G(|c`M ׀9輵5s/^0c~cx"CΕ!߹CćDsWɳU?%?_fݻ;$ᥙO@H}J*\t/;G۔DR;|`~S - pS*\d: ùƵyE34$r%"cŸCܘW=& |0@8a@JrxR,րek@qbXG1 1E$-C S+ט˝ʻzxȞ6ksdK߇<4M(r&߳oj ws>C +d@U2>:T_^?d{&vc'tXڿy׀@^j1l \?1E{ zoԁ,Nu eOd/bf_0% 1%A xAȣ *#aCXk0ߛ)%C?}n&w_!AN4]ko HI@l,jGŗw?p3JD iPoJZӷGEB(Q?} WNϒc@S < õ7-0ٻλ9sٙmvv옘8 RhE*P"E+B J$*Q!@C I\Hحډ۱]o쵽뙝۷jGs4Nb{^֣yY3:Z|J ""<@'=A0&Y*3>5D'SBP8A*q)fFXZ7pIcůk/lk4K k2'(eu,eJZ8GDDG-]#=2S#""" DDD p@ K0 pt>ɖ)O-Q}w/W ),e87[^ep a^[}[2l &sl1(E$rBOwҶy!@ K_O_zCsz6 Hwx 6pE@"""~cD`f~X.# 11]fp$:r03}c.'9rq*;-3ݗu30HlkeL[UgwOfr_{fE%CDD1Zj_~'MYUPDDDȵr$ `$,4w¸zY2Ƙmbo&[p\jUX%XIR\uz3:p037 ę<88Nrf-$Lذ[&)K9ӓCYn:A s,>6/޾G\c[jJ:ுWUAQ$"""Tx8>Gr1O@_c}," zfl@,fviV맛Z%.ԫQCq>40=>*Qm4=z Df|dj}-wMR:`]à0f>5P[_xi;5T@ s g]DžR<Ĥ{< 4TEQ$"""Ee 8mŒ G'0 ',L)FƋ%g93G޽pl]&33v'Q q Y,FW5hq`UR~gj6i! P 3l{(N(eW[.U{_= O" 2 Eqqޝr'fR:uŦ1h]h|1ߓ\n17zKD,:""^~E:rtthZ0fmEKu25];q4W]<3{jj+bXVכ zmz-b% aC581L?YHxY>O5~bS{8 "" 3}@tM9Y򉈈 YjSHb$!H3Fj828+1f3UԪ:/c-\```Çߥ h4قd~8AEnFF-TNׁ]""mWUI`N-'"""eaP-V=k*|?ӓ?"3V`]/ x mxd(+h5-[v`$J[(c͚inDl|Qs va?'ڂ33c`8ÖNYu Ǥp,px˵'1̓ny~ BDco=GDDDjuxm "pCнoQ(0܈38Sp js#I>]0C73AqȾf B)כ/wyo4 Fg{_B8{"6nglDܘ"\< p 2^M<ܧY""K%:UoU>p"""571;3>Ar_p40#壇EGLTt  p"#zͣ۷b7@o_f13U* 6(i6U@6!|>K6 7̞Lte2{(2l,?8HاɻӝљӮfv5;, |pD y OPUDDDD|T1߄S03R6i[oтiQ,1Q~cۦ&fap03C7ɥcm2C}K^W3\"snvep8`.lX 88pV n`sxUDDDDKGp@}典sc0EbɑYּx~['ߪ[2K>-h7Ʀʄhg]AL!#6@THxOG(;o#{' ySm3}<>%q""> DxLcQ$"""+!0Ȍp E1 Sm |V~򮻉HCh9 f^YY;?gYns? '(Eව}DDn\g",|"""HDDDnE1c$d]сx&';Ic@0_^7IL}|)@uoj O 7&P&E_Ψ|"""HDDDnu$YZ`=L @nzt9\Opί^KK^W^V&8H#GMk\UߙL[^.ŽH/ iJ@W.\. BmBIbfcn )N=?y8%x*6nf7&G<̋I,OrED+kP+:UBmUJ/2 ^Xzj߼[EAxޭw6Ƨt[kxfED<WXl/Ӽ7$YhHcjP%bBX3ՌbFV~_W QpCT!# ›x:;0"\۸K_DDD8=RʎRZPӾZ35~;9Lیڶu< ҳXqZ-6qn/``5;2".e^)""""Χ02gaAP*Io{0?ԶNvƃ?L֒hd:q~{{#_}y`)vTLš'7-xMW6xw("""`ۿo\W΋q;oJ+"ZT ( 6l$PQ  P%`P i'i^Hc~}T<36#̝3<::yt*fw[ aVS!6櫵[?ϩw^z.fWnόM󳳕JS"F3gf'3{wtjrSr~m}uPo4Z.VոOͮ'y`GS@aZ.DD= |Hp h+|"""( 49goZ9̨Td+\>c$7 E=*ӋťWY}xzfYg((306 "P]]\* ciq3^]Y(/ǝёtjrZ lcpm/&wYk$M`{;8k`2pB'"""J< p8ֿn 2chPL0`j+k.әJ6kq;R~q8.5/rO~sc ]5<39:M#wyfɵ:  ]2l6ByɥY_ݗNtfƻ,Yk@1p*NgHK<gGp@Q 8,1;~}]F_2z-f7S T^aHYd ft艣lן,-hũ1׬`Xs@LW  `di%u)-"{3s༒?"""ȧ \ejϟB/d9BTc N,yg$0n ~91y]1%%^^v+|"9xȒl7J|v3o໣CeF, Nuwicasx;dQ mslf9(a}9yC6;-JkAd뫩ldwwwZOlm8hu045i xxx9} x NMy#w`BQHDDD>Ś\fi p>|QA3mfz 낔FvWZh6} !#X=s. R~/Bjpa߷M䀊pbp :ei`\D<x$k4GL8VL s2os~9m;=hfފ_BeV%"LϊyF]@ \Vr$^)|"s/.?UGDDDD y8Ձ+50z[ ͙\%_M;0=R5vvB}q0}1K:(i`a+s]b\ i޷"[-L1U`'"#$ PSDDDDTNDDD~+8W;̞v,ys$18/tڵj+,ƾ{3ݳUa옐҈~@J!H ; ,@+1`0B M\7d9{I}pxy9}rg{?OYO_3WZd2g TaXu,nּ'~x/afg4Mq+xCl7x)Ն VMR*ʱrlZYcXX.m74@QebMF3 v \8k ,>LeEs8wX&'v]ͯ8m4mP@S]Ze}f{oRwC\5Î5'_D /"cjxHcYA2 4V)Q4TQkv_z&J.>a\x԰ǭ("""U4(te@W:ztU @ьZ2b:nY! -oS>P w {q[/"x}D>%""""REDD(k=H,'G@iÏ(ڿ;kTA̞b$^i m" 6?՟X`e') EN#ʢ1Kv'g.X,E"azycO)-x;34xIxӚL׀q'e)J=9o?&(JCR.MukѸٹ51ٺeִjSujˤnPsj (NE2_@ PQ_Ǐ,Hqw!z$}wsp?QMQ!0*,1@MHWg'XGyuT j=> wWWh{]Mdx :\a9rvw"US7.$ΈWr~ׁ]E@M@) X L%0Y@9ģw11Ng %%e\.*PDDDD[NZ ӌ1\ւwӬcj `|]X0Z3#;Sb@J("0xX`| $*gNjn.-k41R@"""2r8[_|b2@ε^g|L_WhQ /@6(ſOwT> P0,P[%O㕗c?ȚՋb~m_['""HDDDdົ{8z4k8d 1ރ@3|ۑ.Z@W=HoKi^OD|_!Å+;VXƍ>dx^WYYMgg}EGOd{o6Əa(c˖X^|q=V=o εk7k`޼2yrt7Av cLpmBnvv9v+UZL_ ,z P EWP804FyJ𮀾&7ukbʥL6ޖ-[GiXyںJ!""!"" $$ c)I>JFi.wKV)ئ !3LK'Eb>jkv'c|~ޢ*>HV3@pfy@ 0[?x ?Q MˌKٶoۂI[ϟ'"" ;q</_e1d^7nӷꢲ F#*jӧOGfbׂ *.Sjjhmz`OO/{Xpo=DŽpQ[D󴴴kь\m!X L` T"#f hQDz]dg'%%Ielj}u5[b֬zh"""sn799套±cgy :Kjqoz:;#''[-Z^,~c8'8q>eezBk-466./tN04Jau2?OR $i@Eƫ|"#}oT E^{z[nABgkƌ멧{|니 yPtLv=8B* z۹1! +:G.f'{lW\RMkq ¿ "`'2,V 8*%6o~ޢ6Xlvƿ_9Byi g<$?d_v6<3?/' ;6=[{&uǽ?3ol]O?$Nl@\䧒~0?fdB+ǵ!Il8%^#>({g, J( ʬ.pD-!C 6ݴV^ƶk{Dtgއ&Yॣa6m[34С%  DѺL$WkPc[G'a]u}q>nbl݇]>Fl4^\?_ Fp8qVs++F /H$Dkb+jzJ~oK]$V_P(,;[    q}IEJd.lnA lk;W VӏL Eeۛ 2LI&XlP ifJeC9n(x8n8م4q "JHB $o*PR3$څ)NXteB1*?VetFl^Xy:lljlxs9[*4Iڌ=R-rsQoV4*,,=|Ӽ)*-kTWmF˯APb⥪PMIYXSx{C$GE <H{=]Z}~]ph< |BYA^q莑{^|Nb, ht!wI>sH8a= %c\lx'NڿAyvL2i)*t=^~[.w,-} yTRRUVJƭtHjmN=3^8tMh|E}ET]]Oac6%si|~}x 4=|>X._˾ :]ûDΊPi)ى9q}o'?"yO>Bml_$۟(g* !dXl47w)=F&W#}fNZOձ9WT˝OvC_!$ L߳,;.9%K/,|}jQw}:vH<_h &u8E؞lAS,jEu&:r0l}+k 3iEӫ['(%@Y9籎@xHeR%( 㡛! ̠M-"\UD)) @тwe;!&pZHAq((~0+ u2GvsϹw3=b[xwtB"w-[# .`^49 A~_|~bvg] y{| 0+qyϡ>5qmzj319W 3"B!@G'](Gi^yH띮\@Ξ˾1:` } DmoXOնg~4>l1o@i8G{Ky7f< *q'yrs,zNR+:Ա4{u2LjblB!B@G&Sy*[FYe`A??ω)M26԰~it/]o/h/`j ނ5eP0 r GX8 5{bkV۞Pt ٢Gy.]"TUUV,_7J %Pm:e{{A\XXof5-Ar@N>yl\a<B!B"j|7pP.DЩ?|W/;7W쏜$M B~@MИ 1xXބrh}8m9E/J̬ eGrKKu]@{OHTQƉ"VJ"Edr)`4り4+ ILAcP6"12pr0l3ǁ//7f}?vs{8{N UUc0w9LFOGY{iB!B hHOr$>ɜ)3JxJϟЉ#m톆{5{z^jqfg<(b1/9w$kjc47?b} B!BDW$EI@RAF{~PL1!$,9]סC|r0-P‰6vlCC njq"9~Q|0223r,wZ۸IUZz>_hm--F08AB!Bhz:$Ւ ·dveU0=m Bt~֑[ %$UT\&m`FF^p$wCPR COHRP U jo__nCޓժDsRy2Z!E ̰قJȜ?~Sűت{70Oվ\llsjjP* ˉob$@]YYu\g1rO1|=mi)jXL"B!d䠬 VW-2/|dp2),%H6tŧGgm/TA@yh \KTQ j)4l BH"D!PfѢ](*-Jq# md[ ŒYo.(o]1wR@\”S 7b80p\הߐF(7(&NqIp e !B! )Mpݩ1 )bECnh _&!'es5hrz4z5戜m{Ls3by^7LiW{z7k &M:͜J'KՅ@˴mjZ,%66~q-;6w++_yqzG1mhg&H!B!dI7?tF#rN =odX}*AS9!b>h r*@},@40?.)B3Ǚe{PrDL ^{yKlXZ8(H%hvqSTz2T\Ҡf0b9bg8DdH(KC8Cfo ܬF~M3'JB!B@,s| />LJ&ZF&6(,2hrDawm\) (EMhrz݂.h3CS3UV<P`gPϽxyޙXUq<.Qk%4tK[mZ `BqطY :l(0,"A2lR0lP 5æSo|fΜ;wνÃo {}]y[ Zr] ,X=fuU@'Ό=m>5X~ A2y𖛛G8:7Yw{A%Ɇj4ʌ#Lij$I$I$IR* bT럗dW g>֯/,,|8l,#[cOse&U9s#*sX| #5ҀxԨIf},yrd-~[ϛ0-{8a,Pnܸ͙OIÇO J#D.m@;sm=l<%S1ic^& -5oB:ZcR5j7~5&I)w1xpuq :s(u&fӦ=o__\w$I$I$IR /((7M0Ү}YuQ,lnؒS?g) +Ҷs1hr#[|_KB~X;f " y -#]nQI@~?]j0b>r]䱈;|boD*cS &ֵ?9? 6n,] ʺΝ{1@,[n)rN>lS{$I$I$IDņ fvέ@W^㟡L/-,hgCDQyܦ,&~뭕NI4N6ZZj7FPj4۪tۨ5rYAOh&0ʽY?w>+%1{w 6[DZSN@ buĽo3f3رZc5;"((Y{.d͇f0h٭ܻ$$I$I$IR zZ@gD9/4iYhy_>Ͳ$ьE&Rr .e!csxy-Y_QV 2,ZeFV?(i-dP_5g5'41π(I@(g @s k 06 ׁebv12g9} +_kǾ)JXu  v{ukkw@x~:NOZMq(lCe9M{$K$+W6WH$I$I$)C sBk>$Y׭]ԭv0d/p|m8;Cs [?\ {63v3GI@\cDZJj Z9)zhxx< ~HyLi@~TvWk4h5o]{YCL}A f1i]_'Jqy>s0kD #+ L>e.$I$I$IR& d8ked ^5WΘ)xz&b(cQ"suud F"SoR0x'=O?Z@̺hԨ3\`&r̚ި% 輼uǰ?dOIJm1^ `DZ8h5vCւYVy9ԾCof%ynJou1@ crqy$I$I$IR px@ߥ()_Mă' ,\,+Uѧ@ ?<`IPz ? '-zRn gZ@6lBysQ:7ogԩscٲUN/蠟Vߙh x ~+NYeW<,3rD @aML HaRtaa1B^1WH@$I$I$IwfI*RћȺUkd~6F8TM+~}u'?xc(3JCoYxxzH)N?7ã}Z@U7{z;'f|Az m;#[/c9hiEhv18p6mZ98?پ]s9|b m,S F_Gf3][=(~'c) f;%KΜf#ccqfŊ5 a e k;`yt,ٙ\׽{^6A~ I$I$I$rJd7<#χ *A5%.bAJR:ӳi,wzhwPz??I)׆Gӭoj>taNd㰟N4+ ׭5Oǎtz`em9'he>y0ӿme MȂG=z @E_j} m7X3 I$I$I@aF8˿{ڴ׬{ 򲲌>c̬'6%N.%N]p_ `y v9޵*)92qV݌=D9<6WIw {5rw~eRo3O_fT2?K5{y JPv*Y,NOJd:E@\ğyy!,^;n*?׮݌Ova/90qRj w];q0`Dd@~&族5z$ pePbY,(Fx3m籞w.oʔ&?ٳ߬YS3C~,jz^U96f$i39ڵxNœ'1.,תՔ%ly۠tK0 .5Rp]͜9 2o9c73 ((>j=C6lcs &U'^$D[| & _@ I$I$IT@hj@HbĨGc_st܏τ,֠i p(ac q /@-5l<=~G'%|n k,eXH$I$I$)Pnn5eS =9 &^9׌vodA8X\-v nJRE* pJ .jZ`@pjh!^NCo<7G&2(n=/ u4 (/;aShO20J+CB@yc{J?ˏ(~gj_W|%!ju5Oߓe$ҢF@5@vW}h|Q2CJ]NW9! 7atF|S ojtV}D -n܌dm-ђ^Lah2kT7dM@{ ߢW?z˯o{PT:EQ B@u@=croM!xė@.򶶊V_xV|69hjU#RMR+=tflү< 9c 墲!! @U8ob 7QQ_^jO'JϿ7uW󬩉 ۺ z?@IߥDаrA:~+Jnd|iQ%]r@z#Y=}H^&<(c2Wtfra*tDAw/QpY%S/* ? L'{%5_Zwj|$A>xهVUq,*#- ?ILJ͌e-6en=0QI$!k.pVtc]v -#/޳ys·yM:UꟘ oW[[JI% eg$7{ !Y!tl,Lc@@+  h }ںun>Ъk󿺺. V;IJz.(?M366f}{(1_ϔIKcY&Y,yR)ɒLg@@< ]]KSX[csn*jH͝Īr%g{uRkuL%+j?FJJ\W$9!5Y2ߌ[sNQrrͥK_es"4ii9CeJ{?vk@.n9齔VjK arZEvTDŽ .^ۢc!<ȼG12K~*< 1!0o fJJ͂"]G_fddԋHS:u=1; WcǾ @Nzh**F%b'jj>ݟ螴s熴IG/z/ K99F̚5̦o]>09k|"$xy/r#izD!! / l9}Prr-&u}O,7.~8imA'{t={FsO k:;Ϛ~ $lI8G9OMIsQr'" &4]hUɺ7Ņڱڭd>kzz~rr*ʤaO*e]CUAǢI+Ve^ w,ֿ̰Q̙SXX26&IB W29?( %s9!Qd'oFQ>Af Ln:ϓi;rtwѿ&~J~nsZUWHMͶ3<*ZZVIJUCڳS~fsϬkX @` wn-g%NIVv/.jgd>;" E\kZך7?TTkl0"$essٻ3%˖tٻتEļ)=O]hhM_uc&5i5֞;kI,5lg4 卪_{˾}v?.Vٰ'Κ^Yݏ_e=NE-^5U~Mx7'3{Rlg2u^=3Ҫ'U 3I2oyWP}L} NxpNz2ʞN\<˩Tv˵mԚ 0?6 @ywY#BGZvR4N3oz"ʞIs9 @jtѢJ~>sȑ2 113GtKItsv){FLRtx?}. fПHN3J7Rho-0 ~:4haaږJe[۟%T*{(0阮X|ͷMxwҮT*[I~~z$ʞO 5\24o~72ѾcDoZRPZ\oҷL~5]:]Pvݏ?oϾ(_}ucOT*۞\m;ӵiwmG]i`j6޷ubЩѣ-&1RlKrǽT*{4rTg||[ @oJ$ޱrGuLҥ.H[Z~)Dǿ}ǼGeppO9L jGi]*Nפ6YO5Tl8ݔ0I21Ƃx*=ou+T*'y`dt`*mJmpөTd:+ $2vti8F3o17mLiiJ$D+}T*ۙ2<H0Jҹ]2ɏ{ {`db"iYڙJei=.H[Sl[ZH>5i$Ӝ>v?$3m:3mJe-=ti(+$3yz6Kg׽(mOi'L e+))隴;FӺ44|ҖT*{!-vf;h* s ں= 0 { rowsDeleted = uint64(i) } return err }, retry.Retryable, backoff.NewExponentialWithJitter(1*time.Millisecond, 1*time.Second), db.GetDefaultRetrySettings(), ) if err != nil { return 0, err } counter.Add(rowsDeleted) for _, onSuccess := range onSuccess { if err := onSuccess(ctx, make([]struct{}, rowsDeleted)); err != nil { return 0, err } } if rowsDeleted < count { break } } return counter.Total(), nil } // build assembles the cleanup statement for the specified database driver with the given limit. func (stmt *CleanupStmt) build(driverName string, limit uint64) string { switch driverName { case database.MySQL: return fmt.Sprintf(`DELETE FROM %[1]s WHERE environment_id = :environment_id AND %[2]s < :time ORDER BY %[2]s LIMIT %[3]d`, stmt.Table, stmt.Column, limit) case database.PostgreSQL: return fmt.Sprintf(`WITH rows AS ( SELECT %[1]s FROM %[2]s WHERE environment_id = :environment_id AND %[3]s < :time ORDER BY %[3]s LIMIT %[4]d ) DELETE FROM %[2]s WHERE %[1]s IN (SELECT %[1]s FROM rows)`, stmt.PK, stmt.Table, stmt.Column, limit) default: panic(fmt.Sprintf("invalid database type %s", driverName)) } } type cleanupWhere struct { EnvironmentId types.Binary Time types.UnixMilli } icingadb-1.3.0/pkg/icingadb/delta.go000066400000000000000000000067301477347223700172420ustar00rootroot00000000000000package icingadb import ( "context" "fmt" "github.com/google/go-cmp/cmp" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/logging" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/common" "github.com/icinga/icingadb/pkg/contracts" "go.uber.org/zap" "time" ) // Delta calculates the delta of actual and desired entities, and stores which entities need to be created, updated, and deleted. type Delta struct { Create EntitiesById Update EntitiesById Delete EntitiesById Subject *common.SyncSubject done chan error logger *logging.Logger } // NewDelta creates a new Delta and starts calculating it. The caller must ensure // that no duplicate entities are sent to the same stream. func NewDelta(ctx context.Context, actual, desired <-chan database.Entity, subject *common.SyncSubject, logger *logging.Logger) *Delta { delta := &Delta{ Subject: subject, done: make(chan error, 1), logger: logger, } go delta.run(ctx, actual, desired) return delta } // Wait waits for the delta calculation to complete and returns an error, if any. func (delta *Delta) Wait() error { return <-delta.done } func (delta *Delta) run(ctx context.Context, actualCh, desiredCh <-chan database.Entity) { defer close(delta.done) start := time.Now() var endActual, endDesired time.Time var numActual, numDesired uint64 actual := EntitiesById{} // only read from actualCh (so far) desired := EntitiesById{} // only read from desiredCh (so far) var update EntitiesById if delta.Subject.WithChecksum() { update = EntitiesById{} // read from actualCh and desiredCh with mismatching checksums } for actualCh != nil || desiredCh != nil { select { case actualValue, ok := <-actualCh: if !ok { endActual = time.Now() actualCh = nil // Done reading all actual entities, disable this case. break } numActual++ id := actualValue.ID().String() if desiredValue, ok := desired[id]; ok { delete(desired, id) if update != nil && !checksumsMatch(actualValue, desiredValue) { update[id] = desiredValue } } else { actual[id] = actualValue } case desiredValue, ok := <-desiredCh: if !ok { endDesired = time.Now() desiredCh = nil // Done reading all desired entities, disable this case. break } numDesired++ id := desiredValue.ID().String() if actualValue, ok := actual[id]; ok { delete(actual, id) if update != nil && !checksumsMatch(actualValue, desiredValue) { update[id] = desiredValue } } else { desired[id] = desiredValue } case <-ctx.Done(): delta.done <- ctx.Err() return } } delta.Create = desired delta.Update = update delta.Delete = actual delta.logger.Debugw(fmt.Sprintf("Finished %s delta", types.Name(delta.Subject.Entity())), zap.String("subject", types.Name(delta.Subject.Entity())), zap.Duration("time_total", time.Since(start)), zap.Duration("time_actual", endActual.Sub(start)), zap.Duration("time_desired", endDesired.Sub(start)), zap.Uint64("num_actual", numActual), zap.Uint64("num_desired", numDesired), zap.Int("create", len(delta.Create)), zap.Int("update", len(delta.Update)), zap.Int("delete", len(delta.Delete))) } // checksumsMatch returns whether the checksums of two entities are the same. // Both entities must implement contracts.Checksumer. func checksumsMatch(a, b database.Entity) bool { return cmp.Equal(a.(contracts.Checksumer).Checksum(), b.(contracts.Checksumer).Checksum()) } icingadb-1.3.0/pkg/icingadb/delta_test.go000066400000000000000000000174761477347223700203120ustar00rootroot00000000000000package icingadb import ( "context" "encoding/binary" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/logging" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/common" "github.com/icinga/icingadb/pkg/contracts" v1 "github.com/icinga/icingadb/pkg/icingadb/v1" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zapcore" "go.uber.org/zap/zaptest" "strconv" "sync" "testing" "time" ) func TestDelta(t *testing.T) { type TestData struct { Name string // name for the sub-test Actual, Desired uint64 // checksum to send to actual/desired Create, Update, Delete uint64 // checksum that must be in the corresponding map (if != 0) } tests := []TestData{{ Name: "Empty", }, { Name: "Create", Desired: 0x1111111111111111, Create: 0x1111111111111111, }, { Name: "Update", Actual: 0x1111111111111111, Desired: 0x2222222222222222, Update: 0x2222222222222222, }, { Name: "Delete", Actual: 0x1111111111111111, Delete: 0x1111111111111111, }, { Name: "Keep", Actual: 0x1111111111111111, Desired: 0x1111111111111111, }} makeEndpoint := func(id, checksum uint64) *v1.Endpoint { e := new(v1.Endpoint) e.Id = testDeltaMakeIdOrChecksum(id) e.PropertiesChecksum = testDeltaMakeIdOrChecksum(checksum) return e } // Send the entities to the actual and desired channels in different ordering to catch bugs in the implementation // that only show depending on the order in which actual and desired values are processed for an ID. type SendOrder struct { Name string Send func(id uint64, test TestData, chActual, chDesired chan<- database.Entity) } sendOrders := []SendOrder{{ Name: "ActualFirst", Send: func(id uint64, test TestData, chActual, chDesired chan<- database.Entity) { if test.Actual != 0 { chActual <- makeEndpoint(id, test.Actual) } if test.Desired != 0 { chDesired <- makeEndpoint(id, test.Desired) } }, }, { Name: "DesiredFirst", Send: func(id uint64, test TestData, chActual, chDesired chan<- database.Entity) { if test.Desired != 0 { chDesired <- makeEndpoint(id, test.Desired) } if test.Actual != 0 { chActual <- makeEndpoint(id, test.Actual) } }, }} for _, test := range tests { t.Run(test.Name, func(t *testing.T) { for _, sendOrder := range sendOrders { t.Run(sendOrder.Name, func(t *testing.T) { id := uint64(0x42) chActual := make(chan database.Entity) chDesired := make(chan database.Entity) subject := common.NewSyncSubject(v1.NewEndpoint) logger := logging.NewLogger(zaptest.NewLogger(t).Sugar(), time.Second) go func() { sendOrder.Send(id, test, chActual, chDesired) close(chActual) close(chDesired) }() delta := NewDelta(context.Background(), chActual, chDesired, subject, logger) err := delta.Wait() require.NoError(t, err, "delta should finish without error") _, ok := <-chActual require.False(t, ok, "chActual should have been closed") _, ok = <-chDesired require.False(t, ok, "chDesired should have been closed") testDeltaVerifyResult(t, "Create", testDeltaMakeExpectedMap(id, test.Create), delta.Create) testDeltaVerifyResult(t, "Update", testDeltaMakeExpectedMap(id, test.Update), delta.Update) testDeltaVerifyResult(t, "Delete", testDeltaMakeExpectedMap(id, test.Delete), delta.Delete) }) } }) } t.Run("Combined", func(t *testing.T) { chActual := make(chan database.Entity) chDesired := make(chan database.Entity) subject := common.NewSyncSubject(v1.NewEndpoint) logger := logging.NewLogger(zaptest.NewLogger(t).Sugar(), time.Second) expectedCreate := make(map[uint64]uint64) expectedUpdate := make(map[uint64]uint64) expectedDelete := make(map[uint64]uint64) nextId := uint64(1) var wg sync.WaitGroup for _, test := range tests { test := test for _, sendOrder := range sendOrders { sendOrder := sendOrder id := nextId nextId++ // Log ID mapping to allow easier debugging in case of failures. t.Logf("ID=%d(%s) Test=%s SendOrder=%s", id, testDeltaMakeIdOrChecksum(id).String(), test.Name, sendOrder.Name) wg.Add(1) go func() { defer wg.Done() sendOrder.Send(id, test, chActual, chDesired) }() if test.Create != 0 { expectedCreate[id] = test.Create } if test.Update != 0 { expectedUpdate[id] = test.Update } if test.Delete != 0 { expectedDelete[id] = test.Delete } } } go func() { wg.Wait() close(chActual) close(chDesired) }() delta := NewDelta(context.Background(), chActual, chDesired, subject, logger) err := delta.Wait() require.NoError(t, err, "delta should finish without error") _, ok := <-chActual require.False(t, ok, "chActual should have been closed") _, ok = <-chDesired require.False(t, ok, "chDesired should have been closed") testDeltaVerifyResult(t, "Create", expectedCreate, delta.Create) testDeltaVerifyResult(t, "Update", expectedUpdate, delta.Update) testDeltaVerifyResult(t, "Delete", expectedDelete, delta.Delete) }) } func testDeltaMakeIdOrChecksum(i uint64) types.Binary { b := make([]byte, 20) binary.BigEndian.PutUint64(b, i) return b } func testDeltaMakeExpectedMap(id uint64, checksum uint64) map[uint64]uint64 { if checksum == 0 { return nil } else { return map[uint64]uint64{ id: checksum, } } } func testDeltaVerifyResult(t *testing.T, name string, expected map[uint64]uint64, got EntitiesById) { for id, checksum := range expected { idKey := testDeltaMakeIdOrChecksum(id).String() if assert.Containsf(t, got, idKey, "%s: should contain %s", name, idKey) { expectedChecksum := testDeltaMakeIdOrChecksum(checksum).String() gotChecksum := got[idKey].(contracts.Checksumer).Checksum().String() assert.Equalf(t, expectedChecksum, gotChecksum, "%s: %s should match checksum", name, idKey) delete(got, idKey) } } for id := range got { assert.Failf(t, "unexpected element", "%s: should not contain %s", name, id) } } func BenchmarkDelta(b *testing.B) { for n := uint64(1 << 10); n <= 1<<20; n <<= 1 { b.Run(strconv.FormatUint(n, 10), func(b *testing.B) { benchmarkDelta(b, n) }) } } func benchmarkDelta(b *testing.B, numEntities uint64) { chActual := make([]chan database.Entity, b.N) chDesired := make([]chan database.Entity, b.N) for i := 0; i < b.N; i++ { chActual[i] = make(chan database.Entity, numEntities) chDesired[i] = make(chan database.Entity, numEntities) } makeEndpoint := func(id1, id2, checksum uint64) *v1.Endpoint { e := new(v1.Endpoint) e.Id = make([]byte, 20) binary.BigEndian.PutUint64(e.Id[0:], id1) binary.BigEndian.PutUint64(e.Id[8:], id2) e.PropertiesChecksum = make([]byte, 20) binary.BigEndian.PutUint64(e.PropertiesChecksum, checksum) return e } for i := uint64(0); i < numEntities; i++ { // each iteration writes exactly one entity to each channel var eActual, eDesired database.Entity switch i % 3 { case 0: // distinct IDs eActual = makeEndpoint(1, i, i) eDesired = makeEndpoint(2, i, i) case 1: // same ID, same checksum e := makeEndpoint(3, i, i) eActual = e eDesired = e case 2: // same ID, different checksum eActual = makeEndpoint(4, i, i) eDesired = makeEndpoint(4, i, i+1) } for _, ch := range chActual { ch <- eActual } for _, ch := range chDesired { ch <- eDesired } } for i := 0; i < b.N; i++ { close(chActual[i]) close(chDesired[i]) } subject := common.NewSyncSubject(v1.NewEndpoint) // logger := zaptest.NewLogger(b).Sugar() logger := logging.NewLogger(zap.New(zapcore.NewTee()).Sugar(), time.Second) b.ResetTimer() for i := 0; i < b.N; i++ { d := NewDelta(context.Background(), chActual[i], chDesired[i], subject, logger) err := d.Wait() assert.NoError(b, err, "delta should not fail") } } icingadb-1.3.0/pkg/icingadb/dump_signals.go000066400000000000000000000104001477347223700206230ustar00rootroot00000000000000package icingadb import ( "context" "github.com/icinga/icinga-go-library/logging" "github.com/icinga/icinga-go-library/redis" "github.com/pkg/errors" "go.uber.org/zap" "sync" ) // DumpSignals reads dump signals from a Redis stream via Listen. // Dump-done signals are passed on via Done channels, while InProgress must be checked for dump-wip signals. type DumpSignals struct { redis *redis.Client logger *logging.Logger mutex sync.Mutex doneCh map[string]chan struct{} allDoneCh chan struct{} inProgressCh chan struct{} } // NewDumpSignals returns new DumpSignals. func NewDumpSignals(redis *redis.Client, logger *logging.Logger) *DumpSignals { return &DumpSignals{ redis: redis, logger: logger, doneCh: make(map[string]chan struct{}), inProgressCh: make(chan struct{}), } } // Listen starts listening for dump signals in the icinga:dump Redis stream. When a done signal is received, this is // signaled via the channels returned from the Done function. // // If a wip signal is received after a done signal was passed on via the Done function, this is signaled via the // InProgress function and this function returns with err == nil. In this case, all other signals are invalidated. // It is up to the caller to pass on this information, for example by cancelling derived contexts. // // This function may only be called once for each DumpSignals object. To listen for a new iteration of dump signals, a new // DumpSignals instance must be created. func (s *DumpSignals) Listen(ctx context.Context) error { // Closing a channel twice results in a panic. This function takes a chan struct{} and closes it unless it is // already closed. In this case it just does nothing. This function assumes that the channel is never written to // and that there are no concurrent attempts to close the channel. safeClose := func(ch chan struct{}) { select { case <-ch: // Reading from a closed channel returns immediately, therefore don't close it again. default: close(ch) } } lastStreamId := "0-0" anyDoneSent := false for { if err := ctx.Err(); err != nil { return errors.Wrap(err, "can't listen for dump signals") } streams, err := s.redis.XReadUntilResult(ctx, &redis.XReadArgs{ Streams: []string{"icinga:dump", lastStreamId}, }) if err != nil { return errors.Wrap(err, "can't read dump signals") } for _, entry := range streams[0].Messages { lastStreamId = entry.ID key := entry.Values["key"].(string) done := entry.Values["state"].(string) == "done" s.logger.Debugw("Received dump signal from Redis", zap.String("key", key), zap.Bool("done", done)) if done { if key == "*" { if s.allDoneCh == nil { s.mutex.Lock() // Set s.allDoneCh to signal for all future listeners that we've received an all-done signal. s.allDoneCh = make(chan struct{}) close(s.allDoneCh) // Notify all existing listeners. for _, ch := range s.doneCh { safeClose(ch) } s.mutex.Unlock() } } else { s.mutex.Lock() if ch, ok := s.doneCh[key]; ok { safeClose(ch) } s.mutex.Unlock() } anyDoneSent = true } else if anyDoneSent { // Received a wip signal after handing out any done signal via one of the channels returned by Done, // signal that a new dump is in progress. This treats every state=wip as if it has key=*, which is the // only key for which state=wip is currently sent by Icinga 2. close(s.inProgressCh) return nil } } } } // Done returns a channel that is closed when the given key receives a done dump signal. func (s *DumpSignals) Done(key string) <-chan struct{} { s.mutex.Lock() defer s.mutex.Unlock() if s.allDoneCh != nil { // An all done-signal was already received, don't care about individual key anymore. return s.allDoneCh } else if ch, ok := s.doneCh[key]; ok { // Return existing wait channel for this key. return ch } else { // First request for this key, create new wait channel. ch = make(chan struct{}) s.doneCh[key] = ch return ch } } // InProgress returns a channel that is closed when a new dump is in progress after done signals were sent to channels // returned by Done. func (s *DumpSignals) InProgress() <-chan struct{} { return s.inProgressCh } icingadb-1.3.0/pkg/icingadb/entitiesbyid.go000066400000000000000000000016411477347223700206410ustar00rootroot00000000000000package icingadb import ( "context" "github.com/icinga/icinga-go-library/database" ) // EntitiesById is a map of key-contracts.Entity pairs. type EntitiesById map[string]database.Entity // Keys returns the keys. func (ebi EntitiesById) Keys() []string { keys := make([]string, 0, len(ebi)) for k := range ebi { keys = append(keys, k) } return keys } // IDs returns the contracts.ID of the entities. func (ebi EntitiesById) IDs() []interface{} { ids := make([]interface{}, 0, len(ebi)) for _, v := range ebi { ids = append(ids, v.(database.IDer).ID()) } return ids } // Entities streams the entities on a returned channel. func (ebi EntitiesById) Entities(ctx context.Context) <-chan database.Entity { entities := make(chan database.Entity) go func() { defer close(entities) for _, v := range ebi { select { case <-ctx.Done(): return case entities <- v: } } }() return entities } icingadb-1.3.0/pkg/icingadb/ha.go000066400000000000000000000467521477347223700165510ustar00rootroot00000000000000package icingadb import ( "bytes" "context" "database/sql" "encoding/hex" "github.com/google/uuid" "github.com/icinga/icinga-go-library/backoff" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/logging" "github.com/icinga/icinga-go-library/retry" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icinga-go-library/utils" v1 "github.com/icinga/icingadb/pkg/icingadb/v1" "github.com/icinga/icingadb/pkg/icingaredis" icingaredisv1 "github.com/icinga/icingadb/pkg/icingaredis/v1" "github.com/pkg/errors" "go.uber.org/zap" "sync" "sync/atomic" "time" ) // peerTimeout defines the timeout for HA heartbeats, being used to detect absent nodes. // // Because this timeout relies on icingaredis.Timeout, it is icingaredis.Timeout plus a short grace period. const peerTimeout = icingaredis.Timeout + 5*time.Second type haState struct { responsibleTsMilli int64 responsible bool otherResponsible bool } // HA provides high availability and indicates whether a Takeover or Handover must be made. type HA struct { state atomic.Pointer[haState] ctx context.Context cancelCtx context.CancelFunc instanceId types.Binary db *database.DB environmentMu sync.Mutex environment *v1.Environment heartbeat *icingaredis.Heartbeat logger *logging.Logger responsible bool handover chan string takeover chan string done chan struct{} errOnce sync.Once errMu sync.Mutex err error } // NewHA returns a new HA and starts the controller loop. func NewHA(ctx context.Context, db *database.DB, heartbeat *icingaredis.Heartbeat, logger *logging.Logger) *HA { ctx, cancelCtx := context.WithCancel(ctx) instanceId := uuid.New() ha := &HA{ ctx: ctx, cancelCtx: cancelCtx, instanceId: instanceId[:], db: db, heartbeat: heartbeat, logger: logger, handover: make(chan string), takeover: make(chan string), done: make(chan struct{}), } ha.state.Store(&haState{}) go ha.controller() return ha } // Close shuts h down. func (h *HA) Close(ctx context.Context) error { // Cancel ctx. h.cancelCtx() // Wait until the controller loop ended. <-h.Done() // Remove our instance from the database. h.removeInstance(ctx) // And return an error, if any. return h.Err() } // Done returns a channel that's closed when the HA controller loop ended. func (h *HA) Done() <-chan struct{} { return h.done } // Environment returns the current environment. func (h *HA) Environment() *v1.Environment { h.environmentMu.Lock() defer h.environmentMu.Unlock() return h.environment } // Err returns an error if Done has been closed and there is an error. Otherwise returns nil. func (h *HA) Err() error { h.errMu.Lock() defer h.errMu.Unlock() return h.err } // Handover returns a channel with which handovers and their reasons are signaled. func (h *HA) Handover() chan string { return h.handover } // Takeover returns a channel with which takeovers and their reasons are signaled. func (h *HA) Takeover() chan string { return h.takeover } // State returns the status quo. func (h *HA) State() (responsibleTsMilli int64, responsible, otherResponsible bool) { state := h.state.Load() return state.responsibleTsMilli, state.responsible, state.otherResponsible } func (h *HA) abort(err error) { h.errOnce.Do(func() { h.errMu.Lock() h.err = errors.Wrap(err, "HA aborted") h.errMu.Unlock() h.cancelCtx() }) } // controller loop. func (h *HA) controller() { defer close(h.done) h.logger.Debugw("Starting HA", zap.String("instance_id", hex.EncodeToString(h.instanceId))) oldInstancesRemoved := false // Suppress recurring log messages in the realize method to be only logged this often. routineLogTicker := time.NewTicker(5 * time.Minute) defer routineLogTicker.Stop() shouldLogRoutineEvents := true // The retry logic in HA is twofold: // // 1) Updating or inserting the instance row based on the current heartbeat must be done within the heartbeat's // expiration time. Therefore, we use a deadline ctx to retry.WithBackoff() in realize() which expires earlier // than our default timeout. // 2) Since we do not want to exit before our default timeout expires, we have to repeat step 1 until it does. retryTimeout := time.NewTimer(retry.DefaultTimeout) defer retryTimeout.Stop() for { select { case <-retryTimeout.C: h.abort(errors.New("retry deadline exceeded")) case m := <-h.heartbeat.Events(): if m != nil { now := time.Now() t, err := m.Stats().Time() if err != nil { h.abort(err) } tt := t.Time() if tt.After(now.Add(1 * time.Second)) { h.logger.Warnw("Received heartbeat from the future", zap.Time("time", tt)) } if tt.Before(now.Add(-1 * peerTimeout)) { h.logger.Errorw("Received heartbeat from the past", zap.Time("time", tt)) h.signalHandover("received heartbeat from the past") h.realizeLostHeartbeat() // Reset retry timeout so that the next iterations have the full amount of time available again. retry.ResetTimeout(retryTimeout, retry.DefaultTimeout) continue } s, err := m.Stats().IcingaStatus() if err != nil { h.abort(err) } envId, err := m.EnvironmentID() if err != nil { h.abort(err) } if h.environment == nil || !bytes.Equal(h.environment.Id, envId) { if h.environment != nil { h.logger.Fatalw("Environment changed unexpectedly", zap.String("current", h.environment.Id.String()), zap.String("new", envId.String())) } h.environmentMu.Lock() h.environment = &v1.Environment{ EntityWithoutChecksum: v1.EntityWithoutChecksum{IdMeta: v1.IdMeta{ Id: envId, }}, Name: types.MakeString(envId.String()), } h.environmentMu.Unlock() } select { case <-routineLogTicker.C: shouldLogRoutineEvents = true default: } // Ensure that updating/inserting the instance row is completed by the current heartbeat's expiry time. realizeCtx, cancelRealizeCtx := context.WithDeadline(h.ctx, m.ExpiryTime()) err = h.realize(realizeCtx, s, envId, shouldLogRoutineEvents) cancelRealizeCtx() if errors.Is(err, context.DeadlineExceeded) { h.signalHandover("instance update/insert deadline exceeded heartbeat expiry time") // Instance insert/update was not completed by the expiration time of the current heartbeat. // Pass control back to the loop to try again with the next heartbeat, // or exit the loop when the retry timeout has expired. Therefore, // retry timeout is **not** reset here so that retries continue until the timeout has expired. continue } if err != nil { h.abort(err) } if !oldInstancesRemoved { go h.removeOldInstances(s, envId) oldInstancesRemoved = true } shouldLogRoutineEvents = false } else { h.logger.Error("Lost heartbeat") h.signalHandover("lost heartbeat") h.realizeLostHeartbeat() } // Reset retry timeout so that the next iterations have the full amount of time available again. // Don't be surprised by the location of the code, // as it is obvious that the timer is also reset after an error that ends the loop anyway. // But this is the best place to catch all scenarios where the timeout needs to be reset. // And since HA needs quite a bit of refactoring anyway to e.g. return immediately after calling h.abort(), // it's fine to have it here for now. retry.ResetTimeout(retryTimeout, retry.DefaultTimeout) case <-h.heartbeat.Done(): if err := h.heartbeat.Err(); err != nil { h.abort(err) } case <-h.ctx.Done(): return } } } // realize a HA cycle triggered by a heartbeat event. // // The context passed is expected to have a deadline, otherwise the method will panic. This deadline is strictly // enforced to abort the realization logic the moment the context expires. // // shouldLogRoutineEvents indicates if recurrent events should be logged. // // The internal, retryable function always fetches the last received heartbeat's timestamp instead of reusing the one // from the calling controller loop. Doing so results in inserting a more accurate timestamp if a retry happens. func (h *HA) realize( ctx context.Context, s *icingaredisv1.IcingaStatus, envId types.Binary, shouldLogRoutineEvents bool, ) error { var ( takeover string otherResponsible bool ) if _, ok := ctx.Deadline(); !ok { panic("can't use context w/o deadline in realize()") } err := retry.WithBackoff( ctx, func(ctx context.Context) error { takeover = "" otherResponsible = false isoLvl := sql.LevelSerializable if h.db.DriverName() == database.MySQL { // The RDBMS may actually be a Percona XtraDB Cluster which doesn't support serializable // transactions, but only their equivalent SELECT ... LOCK IN SHARE MODE. // See https://dev.mysql.com/doc/refman/8.4/en/innodb-transaction-isolation-levels.html#isolevel_serializable isoLvl = sql.LevelRepeatableRead } tx, errBegin := h.db.BeginTxx(ctx, &sql.TxOptions{Isolation: isoLvl}) if errBegin != nil { return errors.Wrap(errBegin, "can't start transaction") } defer func() { _ = tx.Rollback() }() // In order to reduce the deadlocks on both sides, it is necessary to obtain an exclusive lock // on the selected rows. This can be achieved by utilising the SELECT ... FOR UPDATE command. // Nevertheless, deadlocks may still occur, when the "icingadb_instance" table is empty, i.e. when // there's no available row to be locked exclusively. // // Note that even without the ... FOR UPDATE lock clause, this shouldn't cause a deadlock on PostgreSQL. // Instead, it triggers a read/write serialization failure when attempting to commit the transaction. query := h.db.Rebind("SELECT id, heartbeat FROM icingadb_instance " + "WHERE environment_id = ? AND responsible = ? AND id <> ? FOR UPDATE") instance := &v1.IcingadbInstance{} errQuery := tx.QueryRowxContext(ctx, query, envId, "y", h.instanceId).StructScan(instance) switch { case errQuery == nil: fields := []any{ zap.String("instance_id", instance.Id.String()), zap.String("environment", envId.String()), zap.Time("heartbeat", instance.Heartbeat.Time()), zap.Duration("heartbeat_age", time.Since(instance.Heartbeat.Time())), } if instance.Heartbeat.Time().Before(time.Now().Add(-1 * peerTimeout)) { takeover = "other instance's heartbeat has expired" h.logger.Debugw("Preparing to take over HA as other instance's heartbeat has expired", fields...) } else { otherResponsible = true if shouldLogRoutineEvents { h.logger.Infow("Another instance is active", fields...) } } case errors.Is(errQuery, sql.ErrNoRows): fields := []any{ zap.String("instance_id", h.instanceId.String()), zap.String("environment", envId.String())} if !h.responsible { takeover = "no other instance is active" h.logger.Debugw("Preparing to take over HA as no instance is active", fields...) } else if h.responsible && shouldLogRoutineEvents { h.logger.Debugw("Continuing being the active instance", fields...) } default: return database.CantPerformQuery(errQuery, query) } i := v1.IcingadbInstance{ EntityWithoutChecksum: v1.EntityWithoutChecksum{ IdMeta: v1.IdMeta{ Id: h.instanceId, }, }, EnvironmentMeta: v1.EnvironmentMeta{ EnvironmentId: envId, }, Heartbeat: types.UnixMilli(time.UnixMilli(h.heartbeat.LastMessageTime())), Responsible: types.Bool{Bool: takeover != "" || h.responsible, Valid: true}, EndpointId: s.EndpointId, Icinga2Version: s.Version, Icinga2StartTime: s.ProgramStart, Icinga2NotificationsEnabled: s.NotificationsEnabled, Icinga2ActiveServiceChecksEnabled: s.ActiveServiceChecksEnabled, Icinga2ActiveHostChecksEnabled: s.ActiveHostChecksEnabled, Icinga2EventHandlersEnabled: s.EventHandlersEnabled, Icinga2FlapDetectionEnabled: s.FlapDetectionEnabled, Icinga2PerformanceDataEnabled: s.PerformanceDataEnabled, } stmt, _ := h.db.BuildUpsertStmt(i) if _, err := tx.NamedExecContext(ctx, stmt, i); err != nil { return database.CantPerformQuery(err, stmt) } if takeover != "" { stmt := h.db.Rebind("UPDATE icingadb_instance SET responsible = ? WHERE environment_id = ? AND id <> ?") if _, err := tx.ExecContext(ctx, stmt, "n", envId, h.instanceId); err != nil { return database.CantPerformQuery(err, stmt) } // Insert the environment after each heartbeat takeover if it does not already exist in the database // as the environment may have changed, although this is likely to happen very rarely. stmt, _ = h.db.BuildInsertIgnoreStmt(h.environment) if _, err := tx.NamedExecContext(ctx, stmt, h.environment); err != nil { return database.CantPerformQuery(err, stmt) } } // In general, cancellation does not work for COMMIT and ROLLBACK. Some database drivers may support a // context-based abort, but only if the DBMS allows it. This was also discussed in the initial issue about // context support to Go's sql package: https://github.com/golang/go/issues/15123#issuecomment-245882486 // // This paragraph is implementation knowledge, not covered by the API specification. Go's sql.Tx.Commit() - // which is not being overridden by sqlx.Tx - performs a preflight check on the context before handing over // to the driver's Commit() method. Drivers may behave differently. For example, the used // github.com/go-sql-driver/mysql package calls its internal exec() method with a COMMIT query, writing and // reading packets without honoring the context. // // In a nutshell, one cannot expect a Tx.Commit() call to be covered by the transaction context. For this // reason, the following Commit() call has been moved to its own goroutine, which communicates back via a // channel selected along with the context. If the context ends before Commit(), this retryable function // returns with a non-retryable error. // // However, while the COMMIT continues in the background, it may still succeed. In this case, the state of // the database does not match the state of Icinga DB, specifically the database says that this instance is // active while this instance thinks otherwise. Fortunately, this mismatch is not critical because when this // function is re-entered, the initial SELECT query would be empty for this Icinga DB node and imply the // presence of another active instance for the other node. Effectively, this could result in a single HA // cycle with no active node. Afterwards, either this instance takes over due to the false impression that // no other node is active, or the other instances does so as the inserted heartbeat has already expired. // Not great, not terrible. commitErrCh := make(chan error, 1) go func() { commitErrCh <- tx.Commit() }() select { case err := <-commitErrCh: if err != nil { return errors.Wrap(err, "can't commit transaction") } case <-ctx.Done(): return ctx.Err() } return nil }, retry.Retryable, backoff.NewExponentialWithJitter(256*time.Millisecond, 3*time.Second), retry.Settings{ // Intentionally no timeout is set, as we use a context with a deadline. OnRetryableError: func(_ time.Duration, attempt uint64, err, lastErr error) { if lastErr == nil || err.Error() != lastErr.Error() { log := h.logger.Debugw if attempt > 3 { log = h.logger.Infow } log("Can't update or insert instance. Retrying", zap.Error(err)) } }, OnSuccess: func(elapsed time.Duration, attempt uint64, lastErr error) { if attempt > 1 { log := h.logger.Debugw if attempt > 4 { // We log errors with severity info starting from the fourth attempt, (see above) // so we need to log success with severity info from the fifth attempt. log = h.logger.Infow } log("Instance updated/inserted successfully after error", zap.Duration("after", elapsed), zap.Uint64("attempts", attempt), zap.NamedError("recovered_error", lastErr)) } }, }, ) if err != nil { return err } if takeover != "" { h.signalTakeover(takeover) } else if otherResponsible { if state := h.state.Load(); state.responsible { h.logger.Error("Other instance is responsible while this node itself is responsible, dropping responsibility") h.signalHandover("other instance is responsible as well") // h.signalHandover will update h.state } if state := h.state.Load(); !state.otherResponsible { // Dereference pointer to create a copy of the value it points to. // Ensures that any modifications do not directly affect the original data unless explicitly stored back. newState := *state newState.otherResponsible = true h.state.Store(&newState) } } return nil } // realizeLostHeartbeat updates "responsible = n" for this HA into the database. func (h *HA) realizeLostHeartbeat() { stmt := h.db.Rebind("UPDATE icingadb_instance SET responsible = ? WHERE id = ?") if _, err := h.db.ExecContext(h.ctx, stmt, "n", h.instanceId); err != nil && !utils.IsContextCanceled(err) { h.logger.Warnw("Can't update instance", zap.Error(database.CantPerformQuery(err, stmt))) } } func (h *HA) removeInstance(ctx context.Context) { h.logger.Debugw("Removing our row from icingadb_instance", zap.String("instance_id", hex.EncodeToString(h.instanceId))) // Intentionally not using h.ctx here as it's already cancelled. query := h.db.Rebind("DELETE FROM icingadb_instance WHERE id = ?") _, err := h.db.ExecContext(ctx, query, h.instanceId) if err != nil { h.logger.Warnw("Could not remove instance from database", zap.Error(err), zap.String("query", query)) } } func (h *HA) removeOldInstances(s *icingaredisv1.IcingaStatus, envId types.Binary) { select { case <-h.ctx.Done(): return case <-time.After(peerTimeout): query := h.db.Rebind("DELETE FROM icingadb_instance " + "WHERE id <> ? AND environment_id = ? AND endpoint_id = ? AND heartbeat < ?") heartbeat := types.UnixMilli(time.Now().Add(-1 * peerTimeout)) result, err := h.db.ExecContext(h.ctx, query, h.instanceId, envId, s.EndpointId, heartbeat) if err != nil { h.logger.Errorw("Can't remove rows of old instances", zap.Error(err), zap.String("query", query), zap.String("id", h.instanceId.String()), zap.String("environment_id", envId.String()), zap.String("endpoint_id", s.EndpointId.String()), zap.Time("heartbeat", heartbeat.Time())) return } affected, err := result.RowsAffected() if err != nil { h.logger.Errorw("Can't get number of removed old instances", zap.Error(err)) return } h.logger.Debugf("Removed %d old instances", affected) } } // signalHandover gives up HA.responsible and notifies the HA.Handover chan. func (h *HA) signalHandover(reason string) { if h.responsible { h.state.Store(&haState{ responsibleTsMilli: time.Now().UnixMilli(), responsible: false, otherResponsible: false, }) select { case h.handover <- reason: h.responsible = false case <-h.ctx.Done(): // Noop } } } // signalTakeover claims HA.responsible and notifies the HA.Takeover chan. func (h *HA) signalTakeover(reason string) { if !h.responsible { h.state.Store(&haState{ responsibleTsMilli: time.Now().UnixMilli(), responsible: true, otherResponsible: false, }) select { case h.takeover <- reason: h.responsible = true case <-h.ctx.Done(): // Noop } } } icingadb-1.3.0/pkg/icingadb/history/000077500000000000000000000000001477347223700173155ustar00rootroot00000000000000icingadb-1.3.0/pkg/icingadb/history/retention.go000066400000000000000000000144301477347223700216550ustar00rootroot00000000000000package history import ( "context" "fmt" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/logging" "github.com/icinga/icinga-go-library/periodic" "github.com/icinga/icingadb/pkg/icingadb" v1 "github.com/icinga/icingadb/pkg/icingadb/v1" "github.com/icinga/icingadb/pkg/icingaredis/telemetry" "github.com/pkg/errors" "go.uber.org/zap" "strconv" "strings" "time" ) type RetentionType int const ( RetentionHistory RetentionType = iota RetentionSla ) type retentionStatement struct { icingadb.CleanupStmt RetentionType Category string } // RetentionStatements maps history categories with corresponding cleanup statements. var RetentionStatements = []retentionStatement{{ RetentionType: RetentionHistory, Category: "acknowledgement", CleanupStmt: icingadb.CleanupStmt{ Table: "acknowledgement_history", PK: "id", Column: "clear_time", }, }, { RetentionType: RetentionHistory, Category: "comment", CleanupStmt: icingadb.CleanupStmt{ Table: "comment_history", PK: "comment_id", Column: "remove_time", }, }, { RetentionType: RetentionHistory, Category: "downtime", CleanupStmt: icingadb.CleanupStmt{ Table: "downtime_history", PK: "downtime_id", Column: "end_time", }, }, { RetentionType: RetentionHistory, Category: "flapping", CleanupStmt: icingadb.CleanupStmt{ Table: "flapping_history", PK: "id", Column: "end_time", }, }, { RetentionType: RetentionHistory, Category: "notification", CleanupStmt: icingadb.CleanupStmt{ Table: "notification_history", PK: "id", Column: "send_time", }, }, { RetentionType: RetentionHistory, Category: "state", CleanupStmt: icingadb.CleanupStmt{ Table: "state_history", PK: "id", Column: "event_time", }, }, { RetentionType: RetentionSla, Category: "sla_downtime", CleanupStmt: icingadb.CleanupStmt{ Table: "sla_history_downtime", PK: "downtime_id", Column: "downtime_end", }, }, { RetentionType: RetentionSla, Category: "sla_state", CleanupStmt: icingadb.CleanupStmt{ Table: "sla_history_state", PK: "id", Column: "event_time", }, }} // RetentionOptions defines the non-default mapping of history categories with their retention period in days. type RetentionOptions map[string]uint16 // UnmarshalText implements [encoding.TextUnmarshaler] to allow RetentionOptions to be parsed by env. // // This custom TextUnmarshaler is necessary as - for the moment - env does not support map[T]encoding.TextUnmarshaler. // After got merged and a new env release was drafted, this method can be // removed. func (o *RetentionOptions) UnmarshalText(text []byte) error { optionsMap := make(map[string]uint16) for _, pair := range strings.Split(string(text), ",") { key, value, found := strings.Cut(pair, ":") if !found { return fmt.Errorf("entry %q cannot be unmarshalled as a history-category:retention-period pair", pair) } days, err := strconv.ParseUint(value, 10, 16) if err != nil { return fmt.Errorf("failed to parse %q as a uint16 retention period in days: %v", value, err) } optionsMap[key] = uint16(days) } *o = optionsMap return nil } // UnmarshalYAML implements yaml.InterfaceUnmarshaler to allow RetentionOptions to be parsed go-yaml. func (o *RetentionOptions) UnmarshalYAML(unmarshal func(any) error) error { optionsMap := make(map[string]uint16) if err := unmarshal(&optionsMap); err != nil { return err } *o = optionsMap return nil } // Validate checks constraints in the supplied retention options and // returns an error if they are violated. func (o *RetentionOptions) Validate() error { allowedCategories := make(map[string]struct{}) for _, stmt := range RetentionStatements { if stmt.RetentionType == RetentionHistory { allowedCategories[stmt.Category] = struct{}{} } } for category := range *o { if _, ok := allowedCategories[category]; !ok { return errors.Errorf("invalid key %s for history retention", category) } } return nil } // Retention deletes rows from history tables that exceed their configured retention period. type Retention struct { db *database.DB logger *logging.Logger historyDays uint16 slaDays uint16 interval time.Duration count uint64 options RetentionOptions } // NewRetention returns a new Retention. func NewRetention( db *database.DB, historyDays, slaDays uint16, interval time.Duration, count uint64, options RetentionOptions, logger *logging.Logger, ) *Retention { return &Retention{ db: db, logger: logger, historyDays: historyDays, slaDays: slaDays, interval: interval, count: count, options: options, } } // Start starts the retention. func (r *Retention) Start(ctx context.Context) error { ctx, cancelCtx := context.WithCancel(ctx) defer cancelCtx() e, ok := v1.EnvironmentFromContext(ctx) if !ok { return errors.New("can't get environment from context") } errs := make(chan error, 1) for _, stmt := range RetentionStatements { var days uint16 switch stmt.RetentionType { case RetentionHistory: if d, ok := r.options[stmt.Category]; ok { days = d } else { days = r.historyDays } case RetentionSla: days = r.slaDays } if days < 1 { r.logger.Debugf("Skipping history retention for category %s", stmt.Category) continue } r.logger.Debugw( fmt.Sprintf("Starting history retention for category %s", stmt.Category), zap.Uint64("count", r.count), zap.Duration("interval", r.interval), zap.Uint16("retention-days", days), ) stmt := stmt periodic.Start(ctx, r.interval, func(tick periodic.Tick) { olderThan := tick.Time.AddDate(0, 0, -int(days)) r.logger.Debugf("Cleaning up historical data for category %s from table %s older than %s", stmt.Category, stmt.Table, olderThan) deleted, err := stmt.CleanupOlderThan( ctx, r.db, e.Id, r.count, olderThan, database.OnSuccessIncrement[struct{}](&telemetry.Stats.HistoryCleanup), ) if err != nil { select { case errs <- err: case <-ctx.Done(): } return } if deleted > 0 { r.logger.Infof("Removed %d old %s history items", deleted, stmt.Category) } }, periodic.Immediate()) } select { case err := <-errs: return err case <-ctx.Done(): return ctx.Err() } } icingadb-1.3.0/pkg/icingadb/history/sla.go000066400000000000000000000015341477347223700204260ustar00rootroot00000000000000package history import ( "github.com/icinga/icinga-go-library/redis" "github.com/icinga/icinga-go-library/structify" "github.com/icinga/icingadb/pkg/contracts" "github.com/icinga/icingadb/pkg/icingadb/types" "github.com/icinga/icingadb/pkg/icingadb/v1/history" "reflect" ) var slaStateStructify = structify.MakeMapStructifier( reflect.TypeOf((*history.SlaHistoryState)(nil)).Elem(), "json", contracts.SafeInit) func stateHistoryToSlaEntity(entry redis.XMessage) ([]history.UpserterEntity, error) { slaStateInterface, err := slaStateStructify(entry.Values) if err != nil { return nil, err } slaState := slaStateInterface.(*history.SlaHistoryState) if slaState.StateType != types.StateHard { // only hard state changes are relevant for SLA history, discard all others return nil, nil } return []history.UpserterEntity{slaState}, nil } icingadb-1.3.0/pkg/icingadb/history/sync.go000066400000000000000000000314641477347223700206300ustar00rootroot00000000000000package history import ( "context" "github.com/icinga/icinga-go-library/com" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/logging" "github.com/icinga/icinga-go-library/periodic" "github.com/icinga/icinga-go-library/redis" "github.com/icinga/icinga-go-library/structify" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icinga-go-library/utils" "github.com/icinga/icingadb/pkg/contracts" v1types "github.com/icinga/icingadb/pkg/icingadb/v1" v1 "github.com/icinga/icingadb/pkg/icingadb/v1/history" "github.com/icinga/icingadb/pkg/icingaredis/telemetry" "github.com/pkg/errors" "golang.org/x/sync/errgroup" "reflect" "sync" ) // Sync specifies the source and destination of a history sync. type Sync struct { db *database.DB redis *redis.Client logger *logging.Logger } // NewSync creates a new Sync. func NewSync(db *database.DB, redis *redis.Client, logger *logging.Logger) *Sync { return &Sync{ db: db, redis: redis, logger: logger, } } // Sync synchronizes Redis history streams from s.redis to s.db and deletes the original data on success. func (s Sync) Sync(ctx context.Context) error { g, ctx := errgroup.WithContext(ctx) for key, pipeline := range syncPipelines { key := key pipeline := pipeline s.logger.Debugf("Starting %s history sync", key) // The pipeline consists of n+2 stages connected sequentially using n+1 channels of type chan redis.XMessage, // where n = len(pipeline), i.e. the number of actual sync stages. So the resulting pipeline looks like this: // // readFromRedis() Reads from redis and sends the history entries to the next stage // ↓ ch[0] // pipeline[0]() First actual sync stage, receives history items from the previous stage, syncs them // and once completed, sends them off to the next stage. // ↓ ch[1] // ... There may be a different number of pipeline stages in between. // ↓ ch[n-1] // pipeline[n-1]() Last actual sync stage, once it's done, sends the history item to the final stage. // ↓ ch[n] // deleteFromRedis() After all stages have processed a message successfully, this final stage deletes // the history entry from the Redis stream as it is now persisted in the database. // // Each history entry is processed by at most one stage at each time. Each state must forward the entry after // it has processed it, even if the stage itself does not do anything with this specific entry. It should only // forward the entry after it has completed its own sync so that later stages can rely on previous stages being // executed successfully. ch := make([]chan redis.XMessage, len(pipeline)+1) for i := range ch { if i == 0 { // Make the first channel buffered so that all items of one read iteration fit into the channel. // This allows starting the next Redis XREAD right after the previous one has finished. ch[i] = make(chan redis.XMessage, s.redis.Options.XReadCount) } else { ch[i] = make(chan redis.XMessage) } } g.Go(func() error { return s.readFromRedis(ctx, key, ch[0]) }) for i, stage := range pipeline { i := i stage := stage g.Go(func() error { return stage(ctx, s, key, ch[i], ch[i+1]) }) } g.Go(func() error { return s.deleteFromRedis(ctx, key, ch[len(pipeline)]) }) } return g.Wait() } // readFromRedis is the first stage of the history sync pipeline. It reads the history stream from Redis // and feeds the history entries into the next stage. func (s Sync) readFromRedis(ctx context.Context, key string, output chan<- redis.XMessage) error { defer close(output) xra := &redis.XReadArgs{ Streams: []string{"icinga:history:stream:" + key, "0-0"}, Count: int64(s.redis.Options.XReadCount), } for { streams, err := s.redis.XReadUntilResult(ctx, xra) if err != nil { return errors.Wrap(err, "can't read history") } for _, stream := range streams { for _, message := range stream.Messages { xra.Streams[1] = message.ID select { case output <- message: case <-ctx.Done(): return ctx.Err() } } } } } // deleteFromRedis is the last stage of the history sync pipeline. It receives history entries from the second to last // pipeline stage and then deletes the stream entry from Redis as all pipeline stages successfully processed the entry. func (s Sync) deleteFromRedis(ctx context.Context, key string, input <-chan redis.XMessage) error { var counter com.Counter defer periodic.Start(ctx, s.logger.Interval(), func(_ periodic.Tick) { if count := counter.Reset(); count > 0 { s.logger.Infof("Synced %d %s history items", count, key) } }).Stop() bulks := com.Bulk(ctx, input, s.redis.Options.HScanCount, com.NeverSplit[redis.XMessage]) stream := "icinga:history:stream:" + key for { select { case bulk, ok := <-bulks: if !ok { return nil } ids := make([]string, len(bulk)) for i := range bulk { ids[i] = bulk[i].ID } cmd := s.redis.XDel(ctx, stream, ids...) if _, err := cmd.Result(); err != nil { return redis.WrapCmdErr(cmd) } counter.Add(uint64(len(ids))) telemetry.Stats.History.Add(uint64(len(ids))) case <-ctx.Done(): return ctx.Err() } } } // stageFunc is a function type that represents a sync pipeline stage. It is called with a context (it should stop // once that context is canceled), the Sync instance (for access to Redis, SQL database, logging), the key (information // about which pipeline this function is running in, i.e. "notification"), an in channel for the stage to read history // events from and an out channel to forward history entries to after processing them successfully. A stage function // is supposed to forward each message from in to out, even if the event is not relevant for the current stage. On // error conditions, the message must not be forwarded to the next stage so that the event is not deleted from Redis // and can be processed at a later time. type stageFunc func(ctx context.Context, s Sync, key string, in <-chan redis.XMessage, out chan<- redis.XMessage) error // writeOneEntityStage creates a stageFunc from a pointer to a struct implementing the v1.UpserterEntity interface. // For each history event it receives, it parses that event into a new instance of that entity type and writes it to // the database. It writes exactly one entity to the database for each history event. func writeOneEntityStage(structPtr interface{}) stageFunc { structifier := structify.MakeMapStructifier( reflect.TypeOf(structPtr).Elem(), "json", contracts.SafeInit) return writeMultiEntityStage(func(entry redis.XMessage) ([]v1.UpserterEntity, error) { ptr, err := structifier(entry.Values) if err != nil { return nil, errors.Wrapf(err, "can't structify values %#v", entry.Values) } return []v1.UpserterEntity{ptr.(v1.UpserterEntity)}, nil }) } // writeMultiEntityStage creates a stageFunc from a function that takes a history event as an input and returns a // (potentially empty) slice of v1.UpserterEntity instances that it then inserts into the database. func writeMultiEntityStage(entryToEntities func(entry redis.XMessage) ([]v1.UpserterEntity, error)) stageFunc { return func(ctx context.Context, s Sync, key string, in <-chan redis.XMessage, out chan<- redis.XMessage) error { type State struct { Message redis.XMessage // Original event from Redis. Pending int // Number of pending entities. When reaching 0, the message is forwarded to out. } bufSize := s.db.Options.MaxPlaceholdersPerStatement insert := make(chan database.Entity, bufSize) // Events sent to the database for insertion. inserted := make(chan database.Entity) // Events returned by the database after successful insertion. skipped := make(chan redis.XMessage) // Events skipping insert/inserted (no entities generated). state := make(map[database.Entity]*State) // Shared state between all entities created by one event. var stateMu sync.Mutex // Synchronizes concurrent access to state. g, ctx := errgroup.WithContext(ctx) g.Go(func() error { defer close(insert) defer close(skipped) for { select { case e, ok := <-in: if !ok { return nil } entities, err := entryToEntities(e) if err != nil { return err } if len(entities) == 0 { skipped <- e } else { st := &State{ Message: e, Pending: len(entities), } stateMu.Lock() for _, entity := range entities { state[entity] = st } stateMu.Unlock() for _, entity := range entities { select { case insert <- entity: case <-ctx.Done(): return ctx.Err() } } } case <-ctx.Done(): return ctx.Err() } } }) g.Go(func() error { defer close(inserted) return s.db.UpsertStreamed(ctx, insert, database.OnSuccessSendTo[database.Entity](inserted)) }) g.Go(func() error { defer close(out) for { select { case e, ok := <-inserted: if !ok { return nil } stateMu.Lock() st := state[e] delete(state, e) stateMu.Unlock() st.Pending-- if st.Pending == 0 { select { case out <- st.Message: case <-ctx.Done(): return ctx.Err() } } case m, ok := <-skipped: if !ok { return nil } select { case out <- m: case <-ctx.Done(): return ctx.Err() } case <-ctx.Done(): return ctx.Err() } } }) return g.Wait() } } // userNotificationStage is a specialized stageFunc that populates the user_notification_history table. It is executed // on the notification history stream and uses the users_notified_ids attribute to create an entry in the // user_notification_history relation table for each user ID. func userNotificationStage(ctx context.Context, s Sync, key string, in <-chan redis.XMessage, out chan<- redis.XMessage) error { type NotificationHistory struct { Id types.Binary `structify:"id"` EnvironmentId types.Binary `structify:"environment_id"` EndpointId types.Binary `structify:"endpoint_id"` UserIds types.String `structify:"users_notified_ids"` } structifier := structify.MakeMapStructifier( reflect.TypeOf((*NotificationHistory)(nil)).Elem(), "structify", contracts.SafeInit) return writeMultiEntityStage(func(entry redis.XMessage) ([]v1.UpserterEntity, error) { rawNotificationHistory, err := structifier(entry.Values) if err != nil { return nil, err } notificationHistory := rawNotificationHistory.(*NotificationHistory) if !notificationHistory.UserIds.Valid { return nil, nil } var users []types.Binary err = types.UnmarshalJSON([]byte(notificationHistory.UserIds.String), &users) if err != nil { return nil, err } var userNotifications []v1.UpserterEntity for _, user := range users { userNotifications = append(userNotifications, &v1.UserNotificationHistory{ EntityWithoutChecksum: v1types.EntityWithoutChecksum{ IdMeta: v1types.IdMeta{ Id: utils.Checksum(append(append([]byte(nil), notificationHistory.Id...), user...)), }, }, EnvironmentMeta: v1types.EnvironmentMeta{ EnvironmentId: notificationHistory.EnvironmentId, }, NotificationHistoryId: notificationHistory.Id, UserId: user, }) } return userNotifications, nil })(ctx, s, key, in, out) } var syncPipelines = map[string][]stageFunc{ "notification": { writeOneEntityStage((*v1.NotificationHistory)(nil)), // notification_history userNotificationStage, // user_notification_history (depends on notification_history) writeOneEntityStage((*v1.HistoryNotification)(nil)), // history (depends on notification_history) }, "state": { writeOneEntityStage((*v1.StateHistory)(nil)), // state_history writeOneEntityStage((*v1.HistoryState)(nil)), // history (depends on state_history) writeMultiEntityStage(stateHistoryToSlaEntity), // sla_history_state }, "downtime": { writeOneEntityStage((*v1.DowntimeHistory)(nil)), // downtime_history writeOneEntityStage((*v1.HistoryDowntime)(nil)), // history (depends on downtime_history) writeOneEntityStage((*v1.SlaHistoryDowntime)(nil)), // sla_history_downtime }, "comment": { writeOneEntityStage((*v1.CommentHistory)(nil)), // comment_history writeOneEntityStage((*v1.HistoryComment)(nil)), // history (depends on comment_history) }, "flapping": { writeOneEntityStage((*v1.FlappingHistory)(nil)), // flapping_history writeOneEntityStage((*v1.HistoryFlapping)(nil)), // history (depends on flapping_history) }, "acknowledgement": { writeOneEntityStage((*v1.AcknowledgementHistory)(nil)), // acknowledgement_history writeOneEntityStage((*v1.HistoryAck)(nil)), // history (depends on acknowledgement_history) }, } icingadb-1.3.0/pkg/icingadb/overdue/000077500000000000000000000000001477347223700172655ustar00rootroot00000000000000icingadb-1.3.0/pkg/icingadb/overdue/get_overdues.lua000066400000000000000000000016111477347223700224620ustar00rootroot00000000000000-- get_overdues.lua takes the following KEYS: -- * either icinga:nextupdate:host or icinga:nextupdate:service -- * either icingadb:overdue:host or icingadb:overdue:service -- * a random one -- -- It takes the following ARGV: -- * the current date and time as *nix timestamp float in seconds -- -- It returns the following: -- * overdue monitored objects not yet marked overdue -- * not overdue monitored objects not yet unmarked overdue local icingaNextupdate = KEYS[1] local icingadbOverdue = KEYS[2] local tempOverdue = KEYS[3] local now = ARGV[1] redis.call('DEL', tempOverdue) local zrbs = redis.call('ZRANGEBYSCORE', icingaNextupdate, '-inf', '(' .. now) for i = 1, #zrbs do redis.call('SADD', tempOverdue, zrbs[i]) end zrbs = nil local res = { redis.call('SDIFF', tempOverdue, icingadbOverdue), redis.call('SDIFF', icingadbOverdue, tempOverdue) } redis.call('DEL', tempOverdue) return res icingadb-1.3.0/pkg/icingadb/overdue/sync.go000066400000000000000000000143311477347223700205720ustar00rootroot00000000000000package overdue import ( "context" _ "embed" "fmt" "github.com/google/uuid" "github.com/icinga/icinga-go-library/com" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/logging" "github.com/icinga/icinga-go-library/periodic" "github.com/icinga/icinga-go-library/redis" "github.com/icinga/icingadb/pkg/icingadb/v1" "github.com/icinga/icingadb/pkg/icingadb/v1/overdue" "github.com/icinga/icingadb/pkg/icingaredis/telemetry" "github.com/pkg/errors" "golang.org/x/sync/errgroup" "regexp" "strconv" "strings" "time" ) // Sync specifies the source and destination of an overdue sync. type Sync struct { db *database.DB redis *redis.Client logger *logging.Logger } // NewSync creates a new Sync. func NewSync(db *database.DB, redis *redis.Client, logger *logging.Logger) *Sync { return &Sync{ db: db, redis: redis, logger: logger, } } // factory abstracts overdue.NewHostState and overdue.NewServiceState. type factory = func(id string, overdue bool) (database.Entity, error) // Sync synchronizes Redis overdue sets from s.redis to s.db. func (s Sync) Sync(ctx context.Context) error { { g, ctx := errgroup.WithContext(ctx) g.Go(func() error { return s.initSync(ctx, "host") }) g.Go(func() error { return s.initSync(ctx, "service") }) if err := g.Wait(); err != nil { return errors.Wrap(err, "can't sync overdue indicators") } } g, ctx := errgroup.WithContext(ctx) var hostCounter com.Counter defer s.log(ctx, "host", &hostCounter).Stop() var serviceCounter com.Counter defer s.log(ctx, "service", &serviceCounter).Stop() g.Go(func() error { return s.sync(ctx, "host", overdue.NewHostState, &hostCounter) }) g.Go(func() error { return s.sync(ctx, "service", overdue.NewServiceState, &serviceCounter) }) return g.Wait() } // initSync initializes icingadb:overdue:objectType from the database. func (s Sync) initSync(ctx context.Context, objectType string) error { s.logger.Debugf("Refreshing already synced %s overdue indicators", objectType) start := time.Now() var rows []v1.IdMeta query := fmt.Sprintf("SELECT id FROM %s_state WHERE is_overdue='y'", objectType) if err := s.db.SelectContext(ctx, &rows, query); err != nil { return database.CantPerformQuery(err, query) } _, err := s.redis.Pipelined(ctx, func(pipe redis.Pipeliner) error { key := "icingadb:overdue:" + objectType pipe.Del(ctx, key) var ids []interface{} for _, row := range rows { ids = append(ids, row.Id.String()) if len(ids) == 100 { pipe.SAdd(ctx, key, ids...) ids = nil } } if len(ids) > 0 { pipe.SAdd(ctx, key, ids...) } return nil }) if err == nil { s.logger.Debugf( "Refreshing %d already synced %s overdue indicators took %s", len(rows), objectType, time.Since(start), ) } else { err = errors.Wrap(err, "can't execute Redis pipeline") } return err } // log periodically logs sync's workload. func (s Sync) log(ctx context.Context, objectType string, counter *com.Counter) periodic.Stopper { return periodic.Start(ctx, s.logger.Interval(), func(_ periodic.Tick) { if count := counter.Reset(); count > 0 { s.logger.Infof("Synced %d %s overdue indicators", count, objectType) } }) } //go:embed get_overdues.lua var getOverduesLua string var luaGetOverdues = redis.NewScript(strings.TrimSpace( regexp.MustCompile(`(?m)^--.*?$`).ReplaceAllString(getOverduesLua, ""), )) // sync synchronizes Redis overdue sets from s.redis to s.db for objectType. func (s Sync) sync(ctx context.Context, objectType string, factory factory, counter *com.Counter) error { s.logger.Debugf("Syncing %s overdue indicators", objectType) keys := [3]string{"icinga:nextupdate:" + objectType, "icingadb:overdue:" + objectType, ""} if rand, err := uuid.NewRandom(); err == nil { keys[2] = rand.String() } else { return errors.Wrap(err, "can't create random UUID") } const period = 2 * time.Second periodically := time.NewTicker(period) defer periodically.Stop() for { select { case <-ctx.Done(): return ctx.Err() case <-periodically.C: overdues, err := luaGetOverdues.Run( ctx, s.redis, keys[:], strconv.FormatInt(time.Now().Unix(), 10), ).Result() if err != nil { return errors.Wrap(err, "can't execute Redis script") } root := overdues.([]interface{}) g, ctx := errgroup.WithContext(ctx) g.Go(func() error { return s.updateOverdue(ctx, objectType, factory, counter, root[0].([]interface{}), true) }) g.Go(func() error { return s.updateOverdue(ctx, objectType, factory, counter, root[1].([]interface{}), false) }) if err := g.Wait(); err != nil { return errors.Wrap(err, "can't update overdue indicators") } // For the case that syncing has taken some time, delay the next sync. periodically.Reset(period) select { case <-periodically.C: // Clean up periodically.C after reset... default: // ... unless it's already clean. } } } } // updateOverdue sets objectType_state#is_overdue for ids to overdue // and updates icingadb:overdue:objectType respectively. func (s Sync) updateOverdue( ctx context.Context, objectType string, factory factory, counter *com.Counter, ids []interface{}, overdue bool, ) error { if len(ids) < 1 { return nil } if err := s.updateDb(ctx, factory, ids, overdue); err != nil { return errors.Wrap(err, "can't update overdue indicators") } counter.Add(uint64(len(ids))) telemetry.Stats.Overdue.Add(uint64(len(ids))) var op func(ctx context.Context, key string, members ...interface{}) *redis.IntCmd if overdue { op = s.redis.SAdd } else { op = s.redis.SRem } _, err := op(ctx, "icingadb:overdue:"+objectType, ids...).Result() return err } // updateDb sets objectType_state#is_overdue for ids to overdue. func (s Sync) updateDb(ctx context.Context, factory factory, ids []interface{}, overdue bool) error { g, ctx := errgroup.WithContext(ctx) ch := make(chan database.Entity, 1<<10) g.Go(func() error { defer close(ch) for _, id := range ids { e, err := factory(id.(string), overdue) if err != nil { return errors.Wrap(err, "can't create entity") } select { case <-ctx.Done(): return ctx.Err() case ch <- e: } } return nil }) g.Go(func() error { return s.db.UpdateStreamed(ctx, ch) }) return g.Wait() } icingadb-1.3.0/pkg/icingadb/runtime_updates.go000066400000000000000000000264261477347223700213650ustar00rootroot00000000000000package icingadb import ( "context" "fmt" "github.com/icinga/icinga-go-library/com" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/logging" "github.com/icinga/icinga-go-library/periodic" "github.com/icinga/icinga-go-library/redis" "github.com/icinga/icinga-go-library/strcase" "github.com/icinga/icinga-go-library/structify" "github.com/icinga/icingadb/pkg/common" "github.com/icinga/icingadb/pkg/contracts" v1 "github.com/icinga/icingadb/pkg/icingadb/v1" "github.com/icinga/icingadb/pkg/icingaredis/telemetry" "github.com/pkg/errors" "go.uber.org/zap" "golang.org/x/sync/errgroup" "golang.org/x/sync/semaphore" "reflect" "strconv" "strings" "sync" ) // RuntimeUpdates specifies the source and destination of runtime updates. type RuntimeUpdates struct { db *database.DB redis *redis.Client logger *logging.Logger } // NewRuntimeUpdates creates a new RuntimeUpdates. func NewRuntimeUpdates(db *database.DB, redis *redis.Client, logger *logging.Logger) *RuntimeUpdates { return &RuntimeUpdates{ db: db, redis: redis, logger: logger, } } // ClearStreams returns the stream key to ID mapping of the runtime update streams // for later use in Sync and clears the streams themselves. func (r *RuntimeUpdates) ClearStreams(ctx context.Context) (config, state redis.Streams, err error) { config = redis.Streams{"icinga:runtime": "0-0"} state = redis.Streams{"icinga:runtime:state": "0-0"} var keys []string for _, streams := range [...]redis.Streams{config, state} { for key := range streams { keys = append(keys, key) } } err = redis.WrapCmdErr(r.redis.Del(ctx, keys...)) return } // Sync synchronizes runtime update streams from s.redis to s.db and deletes the original data on success. // Note that Sync must be only be called configuration synchronization has been completed. // allowParallel allows synchronizing out of order (not FIFO). func (r *RuntimeUpdates) Sync( ctx context.Context, factoryFuncs []database.EntityFactoryFunc, streams redis.Streams, allowParallel bool, ) error { g, ctx := errgroup.WithContext(ctx) updateMessagesByKey := make(map[string]chan<- redis.XMessage) for _, factoryFunc := range factoryFuncs { s := common.NewSyncSubject(factoryFunc) stat := getCounterForEntity(s.Entity()) updateMessages := make(chan redis.XMessage, r.redis.Options.XReadCount) upsertEntities := make(chan database.Entity, r.redis.Options.XReadCount) deleteIds := make(chan interface{}, r.redis.Options.XReadCount) var upsertedFifo chan database.Entity var deletedFifo chan interface{} var upsertCount int var deleteCount int upsertStmt, upsertPlaceholders := r.db.BuildUpsertStmt(s.Entity()) if !allowParallel { upsertedFifo = make(chan database.Entity, 1) deletedFifo = make(chan interface{}, 1) upsertCount = 1 deleteCount = 1 } else { upsertCount = r.db.BatchSizeByPlaceholders(upsertPlaceholders) deleteCount = r.db.Options.MaxPlaceholdersPerStatement } updateMessagesByKey[fmt.Sprintf("icinga:%s", strcase.Delimited(s.Name(), ':'))] = updateMessages r.logger.Debugf("Syncing runtime updates of %s", s.Name()) g.Go(structifyStream( ctx, updateMessages, upsertEntities, upsertedFifo, deleteIds, deletedFifo, structify.MakeMapStructifier( reflect.TypeOf(s.Entity()).Elem(), "json", contracts.SafeInit), )) g.Go(func() error { var counter com.Counter defer periodic.Start(ctx, r.logger.Interval(), func(_ periodic.Tick) { if count := counter.Reset(); count > 0 { r.logger.Infof("Upserted %d %s items", count, s.Name()) } }).Stop() // Updates must be executed in order, ensure this by using a semaphore with maximum 1. sem := semaphore.NewWeighted(1) onSuccess := []database.OnSuccess[database.Entity]{ database.OnSuccessIncrement[database.Entity](&counter), database.OnSuccessIncrement[database.Entity](stat), } if !allowParallel { onSuccess = append(onSuccess, database.OnSuccessSendTo(upsertedFifo)) } return r.db.NamedBulkExec( ctx, upsertStmt, upsertCount, sem, upsertEntities, database.SplitOnDupId[database.Entity], onSuccess..., ) }) g.Go(func() error { var counter com.Counter defer periodic.Start(ctx, r.logger.Interval(), func(_ periodic.Tick) { if count := counter.Reset(); count > 0 { r.logger.Infof("Deleted %d %s items", count, s.Name()) } }).Stop() sem := r.db.GetSemaphoreForTable(database.TableName(s.Entity())) onSuccess := []database.OnSuccess[any]{database.OnSuccessIncrement[any](&counter), database.OnSuccessIncrement[any](stat)} if !allowParallel { onSuccess = append(onSuccess, database.OnSuccessSendTo(deletedFifo)) } return r.db.BulkExec(ctx, r.db.BuildDeleteStmt(s.Entity()), deleteCount, sem, deleteIds, onSuccess...) }) } // customvar and customvar_flat sync. { updateMessages := make(chan redis.XMessage, r.redis.Options.XReadCount) upsertEntities := make(chan database.Entity, r.redis.Options.XReadCount) deleteIds := make(chan interface{}, r.redis.Options.XReadCount) cv := common.NewSyncSubject(v1.NewCustomvar) cvFlat := common.NewSyncSubject(v1.NewCustomvarFlat) r.logger.Debug("Syncing runtime updates of " + cv.Name()) r.logger.Debug("Syncing runtime updates of " + cvFlat.Name()) updateMessagesByKey["icinga:"+strcase.Delimited(cv.Name(), ':')] = updateMessages g.Go(structifyStream( ctx, updateMessages, upsertEntities, nil, deleteIds, nil, structify.MakeMapStructifier( reflect.TypeOf(cv.Entity()).Elem(), "json", contracts.SafeInit), )) customvars, flatCustomvars, errs := v1.ExpandCustomvars(ctx, upsertEntities) com.ErrgroupReceive(g, errs) cvStmt, cvPlaceholders := r.db.BuildUpsertStmt(cv.Entity()) cvCount := r.db.BatchSizeByPlaceholders(cvPlaceholders) g.Go(func() error { var counter com.Counter defer periodic.Start(ctx, r.logger.Interval(), func(_ periodic.Tick) { if count := counter.Reset(); count > 0 { r.logger.Infof("Upserted %d %s items", count, cv.Name()) } }).Stop() // Updates must be executed in order, ensure this by using a semaphore with maximum 1. sem := semaphore.NewWeighted(1) return r.db.NamedBulkExec( ctx, cvStmt, cvCount, sem, customvars, database.SplitOnDupId[database.Entity], database.OnSuccessIncrement[database.Entity](&counter), database.OnSuccessIncrement[database.Entity](&telemetry.Stats.Config), ) }) cvFlatStmt, cvFlatPlaceholders := r.db.BuildUpsertStmt(cvFlat.Entity()) cvFlatCount := r.db.BatchSizeByPlaceholders(cvFlatPlaceholders) g.Go(func() error { var counter com.Counter defer periodic.Start(ctx, r.logger.Interval(), func(_ periodic.Tick) { if count := counter.Reset(); count > 0 { r.logger.Infof("Upserted %d %s items", count, cvFlat.Name()) } }).Stop() // Updates must be executed in order, ensure this by using a semaphore with maximum 1. sem := semaphore.NewWeighted(1) return r.db.NamedBulkExec( ctx, cvFlatStmt, cvFlatCount, sem, flatCustomvars, database.SplitOnDupId[database.Entity], database.OnSuccessIncrement[database.Entity](&counter), database.OnSuccessIncrement[database.Entity](&telemetry.Stats.Config), ) }) g.Go(func() error { var once sync.Once for { select { case _, ok := <-deleteIds: if !ok { return nil } // Icinga 2 does not send custom var delete events. once.Do(func() { r.logger.DPanic("received unexpected custom var delete event") }) case <-ctx.Done(): return ctx.Err() } } }) } g.Go(r.xRead(ctx, updateMessagesByKey, streams)) return g.Wait() } // xRead reads from the runtime update streams and sends the data to the corresponding updateMessages channel. // The updateMessages channel is determined by a "redis_key" on each redis message. func (r *RuntimeUpdates) xRead(ctx context.Context, updateMessagesByKey map[string]chan<- redis.XMessage, streams redis.Streams) func() error { return func() error { defer func() { for _, updateMessages := range updateMessagesByKey { close(updateMessages) } }() for { rs, err := r.redis.XReadUntilResult(ctx, &redis.XReadArgs{ Streams: streams.Option(), Count: int64(r.redis.Options.XReadCount), }) if err != nil { return errors.Wrap(err, "can't read runtime updates") } pipe := r.redis.Pipeline() for _, stream := range rs { var id string for _, message := range stream.Messages { id = message.ID redisKey := message.Values["redis_key"] if redisKey == nil { return errors.Errorf("stream message missing 'redis_key' key: %v", message.Values) } updateMessages := updateMessagesByKey[redisKey.(string)] if updateMessages == nil { return errors.Errorf("no object type for redis key %s found", redisKey) } select { case updateMessages <- message: case <-ctx.Done(): return ctx.Err() } } tsAndSerial := strings.Split(id, "-") if s, err := strconv.ParseUint(tsAndSerial[1], 10, 64); err == nil { tsAndSerial[1] = strconv.FormatUint(s+1, 10) } pipe.XTrimMinIDApprox(ctx, stream.Stream, strings.Join(tsAndSerial, "-"), 0) streams[stream.Stream] = id } if cmds, err := pipe.Exec(ctx); err != nil { r.logger.Errorw("Can't execute Redis pipeline", zap.Error(errors.WithStack(err))) } else { for _, cmd := range cmds { if cmd.Err() != nil { r.logger.Errorw("Can't trim runtime updates stream", zap.Error(redis.WrapCmdErr(cmd))) } } } } } } // structifyStream gets Redis stream messages (redis.XMessage) via the updateMessages channel and converts // those messages into Icinga DB entities (contracts.Entity) using the provided structifier. // Converted entities are inserted into the upsertEntities or deleteIds channel depending on the "runtime_type" message field. func structifyStream( ctx context.Context, updateMessages <-chan redis.XMessage, upsertEntities chan<- database.Entity, upserted <-chan database.Entity, deleteIds chan<- any, deleted <-chan any, structifier structify.MapStructifier, ) func() error { if upserted == nil { ch := make(chan database.Entity) close(ch) upserted = ch } if deleted == nil { ch := make(chan any) close(ch) deleted = ch } return func() error { defer func() { close(upsertEntities) close(deleteIds) }() for { select { case message, ok := <-updateMessages: if !ok { return nil } ptr, err := structifier(message.Values) if err != nil { return errors.Wrapf(err, "can't structify values %#v", message.Values) } entity := ptr.(database.Entity) runtimeType := message.Values["runtime_type"] if runtimeType == nil { return errors.Errorf("stream message missing 'runtime_type' key: %v", message.Values) } if runtimeType == "upsert" { select { case upsertEntities <- entity: case <-ctx.Done(): return ctx.Err() } select { case <-upserted: case <-ctx.Done(): return ctx.Err() } } else if runtimeType == "delete" { select { case deleteIds <- entity.ID(): case <-ctx.Done(): return ctx.Err() } select { case <-deleted: case <-ctx.Done(): return ctx.Err() } } else { return errors.Errorf("invalid runtime type: %s", runtimeType) } case <-ctx.Done(): return ctx.Err() } } } } icingadb-1.3.0/pkg/icingadb/schema.go000066400000000000000000000100031477347223700173750ustar00rootroot00000000000000package icingadb import ( "context" stderrors "errors" "fmt" "github.com/icinga/icinga-go-library/backoff" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/retry" "github.com/jmoiron/sqlx" "github.com/pkg/errors" "os" "path" "time" ) const ( expectedMysqlSchemaVersion = 6 expectedPostgresSchemaVersion = 4 ) // ErrSchemaNotExists implies that no Icinga DB schema has been imported. var ErrSchemaNotExists = stderrors.New("no database schema exists") // ErrSchemaMismatch implies an unexpected schema version, most likely after Icinga DB was updated but the database // missed the schema upgrade. var ErrSchemaMismatch = stderrors.New("unexpected database schema version") // CheckSchema verifies the correct database schema is present. // // This function returns the following error types, possibly wrapped: // - If no schema exists, the error returned is ErrSchemaNotExists. // - If the schema version does not match the expected version, the error returned is ErrSchemaMismatch. // - Otherwise, the original error is returned, for example in case of general database problems. func CheckSchema(ctx context.Context, db *database.DB) error { var expectedDbSchemaVersion uint16 switch db.DriverName() { case database.MySQL: expectedDbSchemaVersion = expectedMysqlSchemaVersion case database.PostgreSQL: expectedDbSchemaVersion = expectedPostgresSchemaVersion default: return errors.Errorf("unsupported database driver %q", db.DriverName()) } if hasSchemaTable, err := db.HasTable(ctx, "icingadb_schema"); err != nil { return errors.Wrap(err, "can't verify existence of database schema table") } else if !hasSchemaTable { return ErrSchemaNotExists } var version uint16 err := retry.WithBackoff( ctx, func(ctx context.Context) error { query := "SELECT version FROM icingadb_schema ORDER BY id DESC LIMIT 1" if err := db.QueryRowxContext(ctx, query).Scan(&version); err != nil { return database.CantPerformQuery(err, query) } return nil }, retry.Retryable, backoff.NewExponentialWithJitter(128*time.Millisecond, 1*time.Minute), db.GetDefaultRetrySettings()) if err != nil { return errors.Wrap(err, "can't check database schema version") } if version != expectedDbSchemaVersion { // Since these error messages are trivial and mostly caused by users, we don't need // to print a stack trace here. However, since errors.Errorf() does this automatically, // we need to use fmt instead. return fmt.Errorf("%w: v%d (expected v%d), please make sure you have applied all database"+ " migrations after upgrading Icinga DB", ErrSchemaMismatch, version, expectedDbSchemaVersion, ) } return nil } // ImportSchema performs an initial schema import in the db. // // This function assumes that no schema exists. So it should only be called after a prior CheckSchema call. func ImportSchema( ctx context.Context, db *database.DB, databaseSchemaDir string, ) error { var schemaFileDirPart string switch db.DriverName() { case database.MySQL: schemaFileDirPart = "mysql" case database.PostgreSQL: schemaFileDirPart = "pgsql" default: return errors.Errorf("unsupported database driver %q", db.DriverName()) } schemaFile := path.Join(databaseSchemaDir, schemaFileDirPart, "schema.sql") schema, err := os.ReadFile(schemaFile) // #nosec G304 -- path is constructed from "trusted" command line user input if err != nil { return errors.Wrapf(err, "can't open schema file %q", schemaFile) } queries := []string{string(schema)} if db.DriverName() == database.MySQL { // MySQL/MariaDB requires the schema to be imported on a statement by statement basis. queries = database.MysqlSplitStatements(string(schema)) } return errors.Wrapf(db.ExecTx(ctx, func(ctx context.Context, tx *sqlx.Tx) error { for _, query := range queries { if _, err := tx.ExecContext(ctx, query); err != nil { return errors.Wrap(database.CantPerformQuery(err, query), "can't perform schema import") } } return nil }), "can't import database schema from %q", schemaFile) } icingadb-1.3.0/pkg/icingadb/scoped_entity.go000066400000000000000000000013711477347223700210160ustar00rootroot00000000000000package icingadb import ( "github.com/icinga/icinga-go-library/database" ) // ScopedEntity combines an entity and a scope that specifies // the WHERE conditions that entities of the // enclosed entity type must satisfy in order to be SELECTed. type ScopedEntity struct { database.Entity scope interface{} } // Scope implements the contracts.Scoper interface. func (e ScopedEntity) Scope() interface{} { return e.scope } // TableName implements the contracts.TableNamer interface. func (e ScopedEntity) TableName() string { return database.TableName(e.Entity) } // NewScopedEntity returns a new ScopedEntity. func NewScopedEntity(entity database.Entity, scope interface{}) *ScopedEntity { return &ScopedEntity{ Entity: entity, scope: scope, } } icingadb-1.3.0/pkg/icingadb/sync.go000066400000000000000000000161371477347223700171270ustar00rootroot00000000000000package icingadb import ( "context" "fmt" "github.com/icinga/icinga-go-library/com" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/logging" "github.com/icinga/icinga-go-library/redis" "github.com/icinga/icinga-go-library/strcase" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/common" v1 "github.com/icinga/icingadb/pkg/icingadb/v1" "github.com/icinga/icingadb/pkg/icingaredis" "github.com/icinga/icingadb/pkg/icingaredis/telemetry" "github.com/pkg/errors" "go.uber.org/zap" "golang.org/x/sync/errgroup" "runtime" "time" ) // Sync implements a rendezvous point for Icinga DB and Redis to synchronize their entities. type Sync struct { db *database.DB redis *redis.Client logger *logging.Logger } // NewSync returns a new Sync. func NewSync(db *database.DB, redis *redis.Client, logger *logging.Logger) *Sync { return &Sync{ db: db, redis: redis, logger: logger, } } // SyncAfterDump waits for a config dump to finish (using the dump parameter) and then starts a sync for the given // sync subject using the Sync function. func (s Sync) SyncAfterDump(ctx context.Context, subject *common.SyncSubject, dump *DumpSignals) error { typeName := types.Name(subject.Entity()) key := "icinga:" + strcase.Delimited(typeName, ':') startTime := time.Now() logTicker := time.NewTicker(s.logger.Interval()) defer logTicker.Stop() loggedWaiting := false for { select { case <-logTicker.C: s.logger.Infow("Waiting for dump done signal", zap.String("type", typeName), zap.String("key", key), zap.Duration("duration", time.Since(startTime))) loggedWaiting = true case <-dump.Done(key): logFn := s.logger.Debugw if loggedWaiting { logFn = s.logger.Infow } logFn("Starting sync", zap.String("type", typeName), zap.String("key", key), zap.Duration("waited", time.Since(startTime))) return s.Sync(ctx, subject) case <-ctx.Done(): return ctx.Err() } } } // Sync synchronizes entities between Icinga DB and Redis created with the specified sync subject. // This function does not respect dump signals. For this, use SyncAfterDump. func (s Sync) Sync(ctx context.Context, subject *common.SyncSubject) error { g, ctx := errgroup.WithContext(ctx) desired, redisErrs := icingaredis.YieldAll(ctx, s.redis, subject) // Let errors from Redis cancel our group. com.ErrgroupReceive(g, redisErrs) e, ok := v1.EnvironmentFromContext(ctx) if !ok { return errors.New("can't get environment from context") } actual, dbErrs := s.db.YieldAll( ctx, subject.FactoryForDelta(), s.db.BuildSelectStmt(NewScopedEntity(subject.Entity(), e.Meta()), subject.Entity().Fingerprint()), e.Meta(), ) // Let errors from DB cancel our group. com.ErrgroupReceive(g, dbErrs) g.Go(func() error { return s.ApplyDelta(ctx, NewDelta(ctx, actual, desired, subject, s.logger)) }) return g.Wait() } // ApplyDelta applies all changes from Delta to the database. func (s Sync) ApplyDelta(ctx context.Context, delta *Delta) error { if err := delta.Wait(); err != nil { return errors.Wrap(err, "can't calculate delta") } g, ctx := errgroup.WithContext(ctx) stat := getCounterForEntity(delta.Subject.Entity()) // Create if len(delta.Create) > 0 { s.logger.Infof("Inserting %d items of type %s", len(delta.Create), strcase.Delimited(types.Name(delta.Subject.Entity()), ' ')) var entities <-chan database.Entity if delta.Subject.WithChecksum() { pairs, errs := s.redis.HMYield( ctx, fmt.Sprintf("icinga:%s", strcase.Delimited(types.Name(delta.Subject.Entity()), ':')), delta.Create.Keys()...) // Let errors from Redis cancel our group. com.ErrgroupReceive(g, errs) entitiesWithoutChecksum, errs := icingaredis.CreateEntities(ctx, delta.Subject.Factory(), pairs, runtime.NumCPU()) // Let errors from CreateEntities cancel our group. com.ErrgroupReceive(g, errs) entities, errs = icingaredis.SetChecksums(ctx, entitiesWithoutChecksum, delta.Create, runtime.NumCPU()) // Let errors from SetChecksums cancel our group. com.ErrgroupReceive(g, errs) } else { entities = delta.Create.Entities(ctx) } g.Go(func() error { return s.db.CreateStreamed(ctx, entities, database.OnSuccessIncrement[database.Entity](stat)) }) } // Update if len(delta.Update) > 0 { s.logger.Infof("Updating %d items of type %s", len(delta.Update), strcase.Delimited(types.Name(delta.Subject.Entity()), ' ')) pairs, errs := s.redis.HMYield( ctx, fmt.Sprintf("icinga:%s", strcase.Delimited(types.Name(delta.Subject.Entity()), ':')), delta.Update.Keys()...) // Let errors from Redis cancel our group. com.ErrgroupReceive(g, errs) entitiesWithoutChecksum, errs := icingaredis.CreateEntities(ctx, delta.Subject.Factory(), pairs, runtime.NumCPU()) // Let errors from CreateEntities cancel our group. com.ErrgroupReceive(g, errs) entities, errs := icingaredis.SetChecksums(ctx, entitiesWithoutChecksum, delta.Update, runtime.NumCPU()) // Let errors from SetChecksums cancel our group. com.ErrgroupReceive(g, errs) g.Go(func() error { // Using upsert here on purpose as this is the fastest way to do bulk updates. // However, there is a risk that errors in the sync implementation could silently insert new rows. return s.db.UpsertStreamed(ctx, entities, database.OnSuccessIncrement[database.Entity](stat)) }) } // Delete if len(delta.Delete) > 0 { s.logger.Infof("Deleting %d items of type %s", len(delta.Delete), strcase.Delimited(types.Name(delta.Subject.Entity()), ' ')) g.Go(func() error { return s.db.Delete(ctx, delta.Subject.Entity(), delta.Delete.IDs(), database.OnSuccessIncrement[any](stat)) }) } return g.Wait() } // SyncCustomvars synchronizes customvar and customvar_flat. func (s Sync) SyncCustomvars(ctx context.Context) error { e, ok := v1.EnvironmentFromContext(ctx) if !ok { return errors.New("can't get environment from context") } g, ctx := errgroup.WithContext(ctx) cv := common.NewSyncSubject(v1.NewCustomvar) cvs, errs := icingaredis.YieldAll(ctx, s.redis, cv) com.ErrgroupReceive(g, errs) desiredCvs, desiredFlatCvs, errs := v1.ExpandCustomvars(ctx, cvs) com.ErrgroupReceive(g, errs) actualCvs, errs := s.db.YieldAll( ctx, cv.FactoryForDelta(), s.db.BuildSelectStmt(NewScopedEntity(cv.Entity(), e.Meta()), cv.Entity().Fingerprint()), e.Meta(), ) com.ErrgroupReceive(g, errs) g.Go(func() error { return s.ApplyDelta(ctx, NewDelta(ctx, actualCvs, desiredCvs, cv, s.logger)) }) flatCv := common.NewSyncSubject(v1.NewCustomvarFlat) actualFlatCvs, errs := s.db.YieldAll( ctx, flatCv.FactoryForDelta(), s.db.BuildSelectStmt(NewScopedEntity(flatCv.Entity(), e.Meta()), flatCv.Entity().Fingerprint()), e.Meta(), ) com.ErrgroupReceive(g, errs) g.Go(func() error { return s.ApplyDelta(ctx, NewDelta(ctx, actualFlatCvs, desiredFlatCvs, flatCv, s.logger)) }) return g.Wait() } // getCounterForEntity returns the appropriate counter (config/state) from telemetry.Stats for e. func getCounterForEntity(e database.Entity) *com.Counter { switch e.(type) { case *v1.HostState, *v1.ServiceState: return &telemetry.Stats.State default: return &telemetry.Stats.Config } } icingadb-1.3.0/pkg/icingadb/types/000077500000000000000000000000001477347223700167605ustar00rootroot00000000000000icingadb-1.3.0/pkg/icingadb/types/acknowledgement_state.go000066400000000000000000000031611477347223700236570ustar00rootroot00000000000000package types import ( "database/sql/driver" "encoding" "encoding/json" "github.com/icinga/icinga-go-library/types" "github.com/pkg/errors" ) // AcknowledgementState specifies an acknowledgement state (yes, no, sticky). type AcknowledgementState uint8 // UnmarshalText implements the encoding.TextUnmarshaler interface. func (as *AcknowledgementState) UnmarshalText(text []byte) error { return as.UnmarshalJSON(text) } // UnmarshalJSON implements the json.Unmarshaler interface. func (as *AcknowledgementState) UnmarshalJSON(data []byte) error { var i uint8 if err := types.UnmarshalJSON(data, &i); err != nil { return err } a := AcknowledgementState(i) if _, ok := acknowledgementStates[a]; !ok { return badAcknowledgementState(data) } *as = a return nil } // Value implements the driver.Valuer interface. func (as AcknowledgementState) Value() (driver.Value, error) { if v, ok := acknowledgementStates[as]; ok { return v, nil } else { return nil, badAcknowledgementState(as) } } // badAcknowledgementState returns an error about a syntactically, but not semantically valid AcknowledgementState. func badAcknowledgementState(s interface{}) error { return errors.Errorf("bad acknowledgement state: %#v", s) } // acknowledgementStates maps all valid AcknowledgementState values to their SQL representation. var acknowledgementStates = map[AcknowledgementState]string{ 0: "n", 1: "y", 2: "sticky", } // Assert interface compliance. var ( _ encoding.TextUnmarshaler = (*AcknowledgementState)(nil) _ json.Unmarshaler = (*AcknowledgementState)(nil) _ driver.Valuer = AcknowledgementState(0) ) icingadb-1.3.0/pkg/icingadb/types/comment_type.go000066400000000000000000000026351477347223700220200ustar00rootroot00000000000000package types import ( "database/sql/driver" "encoding" "encoding/json" "github.com/icinga/icinga-go-library/types" "github.com/pkg/errors" ) // CommentType specifies a comment's origin's kind. type CommentType uint8 // UnmarshalJSON implements the json.Unmarshaler interface. func (ct *CommentType) UnmarshalJSON(data []byte) error { var i uint8 if err := types.UnmarshalJSON(data, &i); err != nil { return err } c := CommentType(i) if _, ok := commentTypes[c]; !ok { return badCommentType(data) } *ct = c return nil } // UnmarshalText implements the encoding.TextUnmarshaler interface. func (ct *CommentType) UnmarshalText(text []byte) error { return ct.UnmarshalJSON(text) } // Value implements the driver.Valuer interface. func (ct CommentType) Value() (driver.Value, error) { if v, ok := commentTypes[ct]; ok { return v, nil } else { return nil, badCommentType(ct) } } // badCommentType returns an error about a syntactically, but not semantically valid CommentType. func badCommentType(t interface{}) error { return errors.Errorf("bad comment type: %#v", t) } // commentTypes maps all valid CommentType values to their SQL representation. var commentTypes = map[CommentType]string{ 1: "comment", 4: "ack", } // Assert interface compliance. var ( _ json.Unmarshaler = (*CommentType)(nil) _ encoding.TextUnmarshaler = (*CommentType)(nil) _ driver.Valuer = CommentType(0) ) icingadb-1.3.0/pkg/icingadb/types/notification_states.go000066400000000000000000000037201477347223700233620ustar00rootroot00000000000000package types import ( "database/sql/driver" "encoding" "encoding/json" "github.com/icinga/icinga-go-library/types" "github.com/pkg/errors" ) // NotificationStates specifies the set of states a notification may be sent for. type NotificationStates uint8 // UnmarshalJSON implements the json.Unmarshaler interface. func (nst *NotificationStates) UnmarshalJSON(data []byte) error { var states []string if err := types.UnmarshalJSON(data, &states); err != nil { return err } var n NotificationStates for _, state := range states { if v, ok := notificationStateNames[state]; ok { n |= v } else { return badNotificationStates(states) } } *nst = n return nil } // UnmarshalText implements the encoding.TextUnmarshaler interface. func (nst *NotificationStates) UnmarshalText(text []byte) error { return nst.UnmarshalJSON(text) } // Value implements the driver.Valuer interface. func (nst NotificationStates) Value() (driver.Value, error) { if nst&^allNotificationStates == 0 { return int64(nst), nil } else { return nil, badNotificationStates(nst) } } // badNotificationStates returns an error about syntactically, but not semantically valid NotificationStates. func badNotificationStates(s interface{}) error { return errors.Errorf("bad notification states: %#v", s) } // notificationStateNames maps all valid NotificationStates values to their SQL representation. var notificationStateNames = map[string]NotificationStates{ "OK": 1, "Warning": 2, "Critical": 4, "Unknown": 8, "Up": 16, "Down": 32, } // allNotificationStates is the largest valid NotificationStates value. var allNotificationStates = func() NotificationStates { var nt NotificationStates for _, v := range notificationStateNames { nt |= v } return nt }() // Assert interface compliance. var ( _ json.Unmarshaler = (*NotificationStates)(nil) _ encoding.TextUnmarshaler = (*NotificationStates)(nil) _ driver.Valuer = NotificationStates(0) ) icingadb-1.3.0/pkg/icingadb/types/notification_type.go000066400000000000000000000027451477347223700230460ustar00rootroot00000000000000package types import ( "database/sql/driver" "encoding" "github.com/pkg/errors" "strconv" ) // NotificationType specifies the reason of a sent notification. type NotificationType uint16 // UnmarshalText implements the encoding.TextUnmarshaler interface. func (nt *NotificationType) UnmarshalText(text []byte) error { s := string(text) i, err := strconv.ParseUint(s, 10, 16) if err != nil { return errors.Wrapf(err, "can't parse %q into uint16", s) } n := NotificationType(i) if _, ok := notificationTypes[n]; !ok { return badNotificationType(s) } *nt = n return nil } // Value implements the driver.Valuer interface. func (nt NotificationType) Value() (driver.Value, error) { if v, ok := notificationTypes[nt]; ok { return v, nil } else { return nil, badNotificationType(nt) } } // badNotificationType returns an error about a syntactically, but not semantically valid NotificationType. func badNotificationType(t interface{}) error { return errors.Errorf("bad notification type: %#v", t) } // notificationTypes maps all valid NotificationType values to their SQL representation. var notificationTypes = map[NotificationType]string{ 1: "downtime_start", 2: "downtime_end", 4: "downtime_removed", 8: "custom", 16: "acknowledgement", 32: "problem", 64: "recovery", 128: "flapping_start", 256: "flapping_end", } // Assert interface compliance. var ( _ encoding.TextUnmarshaler = (*NotificationType)(nil) _ driver.Valuer = NotificationType(0) ) icingadb-1.3.0/pkg/icingadb/types/notification_types.go000066400000000000000000000040251477347223700232220ustar00rootroot00000000000000package types import ( "database/sql/driver" "encoding" "encoding/json" "github.com/icinga/icinga-go-library/types" "github.com/pkg/errors" ) // NotificationTypes specifies the set of reasons a notification may be sent for. type NotificationTypes uint16 // UnmarshalJSON implements the json.Unmarshaler interface. func (nt *NotificationTypes) UnmarshalJSON(data []byte) error { var names []string if err := types.UnmarshalJSON(data, &names); err != nil { return err } var v NotificationTypes for _, name := range names { if i, ok := notificationTypeMap[name]; ok { v |= i } else { return badNotificationTypes(nt) } } *nt = v return nil } // UnmarshalText implements the encoding.TextUnmarshaler interface. func (nt *NotificationTypes) UnmarshalText(text []byte) error { return nt.UnmarshalJSON(text) } // Value implements the driver.Valuer interface. func (nt NotificationTypes) Value() (driver.Value, error) { if nt&^allNotificationTypes == 0 { return int64(nt), nil } else { return nil, badNotificationTypes(nt) } } // badNotificationTypes returns an error about syntactically, but not semantically valid NotificationTypes. func badNotificationTypes(t interface{}) error { return errors.Errorf("bad notification types: %#v", t) } // notificationTypeMap maps all valid NotificationTypes values to their SQL representation. var notificationTypeMap = map[string]NotificationTypes{ "DowntimeStart": 1, "DowntimeEnd": 2, "DowntimeRemoved": 4, "Custom": 8, "Acknowledgement": 16, "Problem": 32, "Recovery": 64, "FlappingStart": 128, "FlappingEnd": 256, } // allNotificationTypes is the largest valid NotificationTypes value. var allNotificationTypes = func() NotificationTypes { var all NotificationTypes for _, i := range notificationTypeMap { all |= i } return all }() // Assert interface compliance. var ( _ json.Unmarshaler = (*NotificationTypes)(nil) _ encoding.TextUnmarshaler = (*NotificationTypes)(nil) _ driver.Valuer = NotificationTypes(0) ) icingadb-1.3.0/pkg/icingadb/types/state_type.go000066400000000000000000000026721477347223700214770ustar00rootroot00000000000000package types import ( "database/sql/driver" "encoding" "encoding/json" "github.com/icinga/icinga-go-library/types" "github.com/pkg/errors" ) // StateType specifies a state's hardness. type StateType uint8 // UnmarshalText implements the encoding.TextUnmarshaler interface. func (st *StateType) UnmarshalText(text []byte) error { return st.UnmarshalJSON(text) } // UnmarshalJSON implements the json.Unmarshaler interface. func (st *StateType) UnmarshalJSON(data []byte) error { var i uint8 if err := types.UnmarshalJSON(data, &i); err != nil { return err } s := StateType(i) if _, ok := stateTypes[s]; !ok { return badStateType(data) } *st = s return nil } // Value implements the driver.Valuer interface. func (st StateType) Value() (driver.Value, error) { if v, ok := stateTypes[st]; ok { return v, nil } else { return nil, badStateType(st) } } // badStateType returns and error about a syntactically, but not semantically valid StateType. func badStateType(t interface{}) error { return errors.Errorf("bad state type: %#v", t) } const ( StateSoft = StateType(0) StateHard = StateType(1) ) // stateTypes maps all valid StateType values to their SQL representation. var stateTypes = map[StateType]string{ StateSoft: "soft", StateHard: "hard", } // Assert interface compliance. var ( _ encoding.TextUnmarshaler = (*StateType)(nil) _ json.Unmarshaler = (*StateType)(nil) _ driver.Valuer = StateType(0) ) icingadb-1.3.0/pkg/icingadb/v1/000077500000000000000000000000001477347223700161425ustar00rootroot00000000000000icingadb-1.3.0/pkg/icingadb/v1/checkable.go000066400000000000000000000041351477347223700203750ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/contracts" ) type Checkable struct { EntityWithChecksum `json:",inline"` EnvironmentMeta `json:",inline"` NameCiMeta `json:",inline"` ActionUrlId types.Binary `json:"action_url_id"` ActiveChecksEnabled types.Bool `json:"active_checks_enabled"` CheckInterval float64 `json:"check_interval"` CheckTimeperiodName string `json:"check_timeperiod_name"` CheckTimeperiodId types.Binary `json:"check_timeperiod_id"` CheckRetryInterval float64 `json:"check_retry_interval"` CheckTimeout float64 `json:"check_timeout"` CheckcommandName string `json:"checkcommand_name"` CheckcommandId types.Binary `json:"checkcommand_id"` CommandEndpointName string `json:"command_endpoint_name"` CommandEndpointId types.Binary `json:"command_endpoint_id"` DisplayName string `json:"display_name"` EventHandlerEnabled types.Bool `json:"event_handler_enabled"` EventcommandName string `json:"eventcommand_name"` EventcommandId types.Binary `json:"eventcommand_id"` FlappingEnabled types.Bool `json:"flapping_enabled"` FlappingThresholdHigh float64 `json:"flapping_threshold_high"` FlappingThresholdLow float64 `json:"flapping_threshold_low"` IconImageAlt string `json:"icon_image_alt"` IconImageId types.Binary `json:"icon_image_id"` IsVolatile types.Bool `json:"is_volatile"` MaxCheckAttempts uint32 `json:"max_check_attempts"` Notes string `json:"notes"` NotesUrlId types.Binary `json:"notes_url_id"` NotificationsEnabled types.Bool `json:"notifications_enabled"` PassiveChecksEnabled types.Bool `json:"passive_checks_enabled"` PerfdataEnabled types.Bool `json:"perfdata_enabled"` ZoneName string `json:"zone_name"` ZoneId types.Binary `json:"zone_id"` } // Assert interface compliance. var ( _ contracts.Initer = (*Checkable)(nil) ) icingadb-1.3.0/pkg/icingadb/v1/command.go000066400000000000000000000101441477347223700201070ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/contracts" ) type Command struct { EntityWithChecksum `json:",inline"` EnvironmentMeta `json:",inline"` NameCiMeta `json:",inline"` ZoneId types.Binary `json:"zone_id"` Command string `json:"command"` Timeout uint32 `json:"timeout"` } type CommandArgument struct { EntityWithChecksum `json:",inline"` EnvironmentMeta `json:",inline"` ArgumentKey string `json:"argument_key"` ArgumentValue types.String `json:"value"` ArgumentOrder types.Int `json:"order"` Description types.String `json:"description"` ArgumentKeyOverride types.String `json:"key"` RepeatKey types.Bool `json:"repeat_key"` Required types.Bool `json:"required"` SetIf types.String `json:"set_if"` Separator types.String `json:"separator"` SkipKey types.Bool `json:"skip_key"` } // Init implements the contracts.Initer interface. func (ca *CommandArgument) Init() { ca.RepeatKey = types.Bool{ Bool: true, Valid: true, } ca.Required = types.Bool{ Bool: false, Valid: true, } ca.SkipKey = types.Bool{ Bool: false, Valid: true, } } type CommandEnvvar struct { EntityWithChecksum `json:",inline"` EnvironmentMeta `json:",inline"` EnvvarKey string `json:"envvar_key"` EnvvarValue string `json:"value"` } type Checkcommand struct { Command `json:",inline"` } type CheckcommandArgument struct { CommandArgument `json:",inline"` CheckcommandId types.Binary `json:"checkcommand_id"` } type CheckcommandEnvvar struct { CommandEnvvar `json:",inline"` CheckcommandId types.Binary `json:"checkcommand_id"` } type CheckcommandCustomvar struct { CustomvarMeta `json:",inline"` CheckcommandId types.Binary `json:"checkcommand_id"` } type Eventcommand struct { Command `json:",inline"` } type EventcommandArgument struct { CommandArgument `json:",inline"` EventcommandId types.Binary `json:"eventcommand_id"` } type EventcommandEnvvar struct { CommandEnvvar `json:",inline"` EventcommandId types.Binary `json:"eventcommand_id"` } type EventcommandCustomvar struct { CustomvarMeta `json:",inline"` EventcommandId types.Binary `json:"eventcommand_id"` } type Notificationcommand struct { Command `json:",inline"` } type NotificationcommandArgument struct { CommandArgument `json:",inline"` NotificationcommandId types.Binary `json:"notificationcommand_id"` } type NotificationcommandEnvvar struct { CommandEnvvar `json:",inline"` NotificationcommandId types.Binary `json:"notificationcommand_id"` } type NotificationcommandCustomvar struct { CustomvarMeta `json:",inline"` NotificationcommandId types.Binary `json:"notificationcommand_id"` } func NewCheckcommand() database.Entity { return &Checkcommand{} } func NewCheckcommandArgument() database.Entity { return &CheckcommandArgument{} } func NewCheckcommandEnvvar() database.Entity { return &CheckcommandEnvvar{} } func NewCheckcommandCustomvar() database.Entity { return &CheckcommandCustomvar{} } func NewEventcommand() database.Entity { return &Eventcommand{} } func NewEventcommandArgument() database.Entity { return &EventcommandArgument{} } func NewEventcommandEnvvar() database.Entity { return &EventcommandEnvvar{} } func NewEventcommandCustomvar() database.Entity { return &EventcommandCustomvar{} } func NewNotificationcommand() database.Entity { return &Notificationcommand{} } func NewNotificationcommandArgument() database.Entity { return &NotificationcommandArgument{} } func NewNotificationcommandEnvvar() database.Entity { return &NotificationcommandEnvvar{} } func NewNotificationcommandCustomvar() database.Entity { return &NotificationcommandCustomvar{} } // Assert interface compliance. var ( _ contracts.Initer = (*Command)(nil) _ contracts.Initer = (*CommandArgument)(nil) _ contracts.Initer = (*Checkcommand)(nil) _ contracts.Initer = (*Eventcommand)(nil) _ contracts.Initer = (*Notificationcommand)(nil) ) icingadb-1.3.0/pkg/icingadb/v1/comment.go000066400000000000000000000020771477347223700201410ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" icingadbTypes "github.com/icinga/icingadb/pkg/icingadb/types" ) type Comment struct { EntityWithChecksum `json:",inline"` EnvironmentMeta `json:",inline"` NameMeta `json:",inline"` ObjectType string `json:"object_type"` HostId types.Binary `json:"host_id"` ServiceId types.Binary `json:"service_id"` Author string `json:"author"` Text string `json:"text"` EntryType icingadbTypes.CommentType `json:"entry_type"` EntryTime types.UnixMilli `json:"entry_time"` IsPersistent types.Bool `json:"is_persistent"` IsSticky types.Bool `json:"is_sticky"` ExpireTime types.UnixMilli `json:"expire_time"` ZoneId types.Binary `json:"zone_id"` } func NewComment() database.Entity { return &Comment{} } icingadb-1.3.0/pkg/icingadb/v1/customvar.go000066400000000000000000000077741477347223700205330ustar00rootroot00000000000000package v1 import ( "context" "github.com/icinga/icinga-go-library/com" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/flatten" "github.com/icinga/icinga-go-library/objectpacker" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icinga-go-library/utils" "golang.org/x/sync/errgroup" "runtime" ) type Customvar struct { EntityWithoutChecksum `json:",inline"` EnvironmentMeta `json:",inline"` NameMeta `json:",inline"` Value string `json:"value"` } type CustomvarFlat struct { CustomvarMeta `json:",inline"` Flatname string `json:"flatname"` FlatnameChecksum types.Binary `json:"flatname_checksum"` Flatvalue types.String `json:"flatvalue"` } func NewCustomvar() database.Entity { return &Customvar{} } func NewCustomvarFlat() database.Entity { return &CustomvarFlat{} } // ExpandCustomvars streams custom variables from a provided channel and returns three channels, // the first providing the unmodified custom variable read from the input channel, // the second channel providing the corresponding resolved flat custom variables, // and the third channel providing an error, if any. func ExpandCustomvars( ctx context.Context, cvs <-chan database.Entity, ) (customvars, flatCustomvars <-chan database.Entity, errs <-chan error) { g, ctx := errgroup.WithContext(ctx) // Multiplex cvs to use them both for customvar and customvar_flat. var forward chan database.Entity customvars, forward = multiplexCvs(ctx, g, cvs) flatCustomvars = flattenCustomvars(ctx, g, forward) errs = com.WaitAsync(g) return } // multiplexCvs streams custom variables from a provided channel and // forwards each custom variable to the two returned output channels. func multiplexCvs( ctx context.Context, g *errgroup.Group, cvs <-chan database.Entity, ) (customvars1, customvars2 chan database.Entity) { customvars1 = make(chan database.Entity) customvars2 = make(chan database.Entity) g.Go(func() error { defer close(customvars1) defer close(customvars2) for { select { case cv, ok := <-cvs: if !ok { return nil } select { case customvars1 <- cv: case <-ctx.Done(): return ctx.Err() } select { case customvars2 <- cv: case <-ctx.Done(): return ctx.Err() } case <-ctx.Done(): return ctx.Err() } } }) return } // flattenCustomvars creates and yields flat custom variables from the provided custom variables. func flattenCustomvars(ctx context.Context, g *errgroup.Group, cvs <-chan database.Entity) (flatCustomvars chan database.Entity) { flatCustomvars = make(chan database.Entity) g.Go(func() error { defer close(flatCustomvars) g, ctx := errgroup.WithContext(ctx) for i := 0; i < runtime.NumCPU(); i++ { g.Go(func() error { for entity := range cvs { var value interface{} customvar := entity.(*Customvar) if err := types.UnmarshalJSON([]byte(customvar.Value), &value); err != nil { return err } flattened := flatten.Flatten(value, customvar.Name) for flatname, flatvalue := range flattened { var fv interface{} if flatvalue.Valid { fv = flatvalue.String } select { case flatCustomvars <- &CustomvarFlat{ CustomvarMeta: CustomvarMeta{ EntityWithoutChecksum: EntityWithoutChecksum{ IdMeta: IdMeta{ // TODO(el): Schema comment is wrong. // Without customvar.Id we would produce duplicate keys here. Id: utils.Checksum(objectpacker.MustPackSlice(customvar.EnvironmentId, customvar.Id, flatname, fv)), }, }, EnvironmentMeta: EnvironmentMeta{ EnvironmentId: customvar.EnvironmentId, }, CustomvarId: customvar.Id, }, Flatname: flatname, FlatnameChecksum: utils.Checksum(flatname), Flatvalue: flatvalue, }: case <-ctx.Done(): return ctx.Err() } } } return nil }) } return g.Wait() }) return } icingadb-1.3.0/pkg/icingadb/v1/downtime.go000066400000000000000000000025731477347223700203260ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" ) type Downtime struct { EntityWithChecksum `json:",inline"` EnvironmentMeta `json:",inline"` NameMeta `json:",inline"` TriggeredById types.Binary `json:"triggered_by_id"` ParentId types.Binary `json:"parent_id"` ObjectType string `json:"object_type"` HostId types.Binary `json:"host_id"` ServiceId types.Binary `json:"service_id"` Author string `json:"author"` Comment string `json:"comment"` EntryTime types.UnixMilli `json:"entry_time"` ScheduledStartTime types.UnixMilli `json:"scheduled_start_time"` ScheduledEndTime types.UnixMilli `json:"scheduled_end_time"` ScheduledDuration uint64 `json:"scheduled_duration"` IsFlexible types.Bool `json:"is_flexible"` FlexibleDuration uint64 `json:"flexible_duration"` IsInEffect types.Bool `json:"is_in_effect"` StartTime types.UnixMilli `json:"start_time"` EndTime types.UnixMilli `json:"end_time"` Duration uint64 `json:"duration"` ScheduledBy types.String `json:"scheduled_by"` ZoneId types.Binary `json:"zone_id"` } func NewDowntime() database.Entity { return &Downtime{} } icingadb-1.3.0/pkg/icingadb/v1/endpoint.go000066400000000000000000000015331477347223700203130ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/contracts" ) type Endpoint struct { EntityWithChecksum `json:",inline"` EnvironmentMeta `json:",inline"` NameCiMeta `json:",inline"` ZoneId types.Binary `json:"zone_id"` } type Zone struct { EntityWithChecksum `json:",inline"` EnvironmentMeta `json:",inline"` NameCiMeta `json:",inline"` IsGlobal types.Bool `json:"is_global"` ParentId types.Binary `json:"parent_id"` Depth uint8 `json:"depth"` } func NewEndpoint() database.Entity { return &Endpoint{} } func NewZone() database.Entity { return &Zone{} } // Assert interface compliance. var ( _ contracts.Initer = (*Endpoint)(nil) _ contracts.Initer = (*Zone)(nil) ) icingadb-1.3.0/pkg/icingadb/v1/entity.go000066400000000000000000000013541477347223700200100ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/database" ) // EntityWithoutChecksum represents entities without a checksum. type EntityWithoutChecksum struct { IdMeta `json:",inline"` } // Fingerprint implements the contracts.Fingerprinter interface. func (e EntityWithoutChecksum) Fingerprint() database.Fingerprinter { return e } // EntityWithChecksum represents entities with a checksum. type EntityWithChecksum struct { EntityWithoutChecksum `json:",inline"` ChecksumMeta `json:",inline"` } // Fingerprint implements the contracts.Fingerprinter interface. func (e EntityWithChecksum) Fingerprint() database.Fingerprinter { return e } func NewEntityWithChecksum() database.Entity { return &EntityWithChecksum{} } icingadb-1.3.0/pkg/icingadb/v1/environment.go000066400000000000000000000021301477347223700210310ustar00rootroot00000000000000package v1 import ( "context" "github.com/icinga/icinga-go-library/types" ) type Environment struct { EntityWithoutChecksum `json:",inline"` Name types.String `json:"name"` } // NewContext returns a new Context that carries this Environment as value. func (e *Environment) NewContext(parent context.Context) context.Context { return context.WithValue(parent, environmentContextKey, e) } // Meta returns the EnvironmentMeta for this Environment. func (e *Environment) Meta() *EnvironmentMeta { return &EnvironmentMeta{EnvironmentId: e.Id} } // EnvironmentFromContext returns the Environment value stored in ctx, if any: // // e, ok := EnvironmentFromContext(ctx) // if !ok { // // Error handling. // } func EnvironmentFromContext(ctx context.Context) (*Environment, bool) { e, ok := ctx.Value(environmentContextKey).(*Environment) return e, ok } // environmentContextKey is the key for Environment values in contexts. // It's not exported, so callers use Environment.NewContext and EnvironmentFromContext // instead of using that key directly. var environmentContextKey contextKey icingadb-1.3.0/pkg/icingadb/v1/environment_test.go000066400000000000000000000024301477347223700220730ustar00rootroot00000000000000package v1 import ( "context" "github.com/icinga/icinga-go-library/types" "github.com/stretchr/testify/require" "testing" "time" ) func TestEnvironment_NewContext(t *testing.T) { deadline := time.Now().Add(time.Minute) parent, cancel := context.WithDeadline(context.Background(), deadline) defer cancel() actual, ok := (*Environment)(nil).NewContext(parent).Deadline() require.True(t, ok) require.Equal(t, deadline, actual) } func TestEnvironmentFromContext(t *testing.T) { subtests := []struct { name string input context.Context output *Environment ok bool }{ { name: "background", input: context.Background(), }, { name: "nil", input: (*Environment)(nil).NewContext(context.Background()), ok: true, }, { name: "empty", input: (&Environment{}).NewContext(context.Background()), output: &Environment{}, ok: true, }, { name: "named", input: (&Environment{Name: types.MakeString("foobar")}).NewContext(context.Background()), output: &Environment{Name: types.MakeString("foobar")}, ok: true, }, } for _, st := range subtests { t.Run(st.name, func(t *testing.T) { actual, ok := EnvironmentFromContext(st.input) require.Equal(t, st.output, actual) require.Equal(t, st.ok, ok) }) } } icingadb-1.3.0/pkg/icingadb/v1/history/000077500000000000000000000000001477347223700176435ustar00rootroot00000000000000icingadb-1.3.0/pkg/icingadb/v1/history/ack.go000066400000000000000000000045741477347223700207420ustar00rootroot00000000000000package history import ( "database/sql/driver" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/contracts" "github.com/icinga/icingadb/pkg/icingadb/v1" ) type AckHistoryUpserter struct { ClearTime types.UnixMilli `json:"clear_time"` ClearedBy types.String `json:"cleared_by"` } // Upsert implements the contracts.Upserter interface. func (ahu *AckHistoryUpserter) Upsert() interface{} { return ahu } type AcknowledgementHistory struct { v1.EntityWithoutChecksum `json:",inline"` HistoryTableMeta `json:",inline"` AckHistoryUpserter `json:",inline"` SetTime types.UnixMilli `json:"set_time"` Author types.String `json:"author"` Comment types.String `json:"comment"` ExpireTime types.UnixMilli `json:"expire_time"` IsPersistent types.Bool `json:"is_persistent"` IsSticky types.Bool `json:"is_sticky"` } type HistoryAck struct { HistoryMeta `json:",inline"` AcknowledgementHistoryId types.Binary `json:"id"` // Idea: read SetTime and ClearTime from Redis and let EventTime decide which of them to write to MySQL. // So EventTime doesn't have to be read from Redis (json:"-") // and the others don't have to be written to MySQL (db:"-"). SetTime types.UnixMilli `json:"set_time" db:"-"` ClearTime types.UnixMilli `json:"clear_time" db:"-"` EventTime AckEventTime `json:"-"` } // Init implements the contracts.Initer interface. func (h *HistoryAck) Init() { h.EventTime.History = h } // TableName implements the contracts.TableNamer interface. func (*HistoryAck) TableName() string { return "history" } type AckEventTime struct { History *HistoryAck `db:"-"` } // Value implements the driver.Valuer interface. // Supports SQL NULL. func (et AckEventTime) Value() (driver.Value, error) { if et.History == nil { return nil, nil } switch et.History.EventType { case "ack_set": return et.History.SetTime.Value() case "ack_clear": return et.History.ClearTime.Value() default: return nil, nil } } // Assert interface compliance. var ( _ UpserterEntity = (*AcknowledgementHistory)(nil) _ contracts.Initer = (*HistoryAck)(nil) _ database.TableNamer = (*HistoryAck)(nil) _ UpserterEntity = (*HistoryAck)(nil) _ driver.Valuer = AckEventTime{} ) icingadb-1.3.0/pkg/icingadb/v1/history/comment.go000066400000000000000000000071371477347223700216440ustar00rootroot00000000000000package history import ( "database/sql/driver" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/contracts" icingadbTypes "github.com/icinga/icingadb/pkg/icingadb/types" ) type CommentHistoryEntity struct { CommentId types.Binary `json:"comment_id"` } // Fingerprint implements part of the contracts.Entity interface. func (che CommentHistoryEntity) Fingerprint() database.Fingerprinter { return che } // ID implements part of the contracts.Entity interface. func (che CommentHistoryEntity) ID() database.ID { return che.CommentId } // SetID implements part of the contracts.Entity interface. func (che *CommentHistoryEntity) SetID(id database.ID) { che.CommentId = id.(types.Binary) } type CommentHistoryUpserter struct { RemovedBy types.String `json:"removed_by"` RemoveTime types.UnixMilli `json:"remove_time"` HasBeenRemoved types.Bool `json:"has_been_removed"` } // Upsert implements the contracts.Upserter interface. func (chu *CommentHistoryUpserter) Upsert() interface{} { return chu } type CommentHistory struct { CommentHistoryEntity `json:",inline"` HistoryTableMeta `json:",inline"` CommentHistoryUpserter `json:",inline"` EntryTime types.UnixMilli `json:"entry_time"` Author string `json:"author"` Comment string `json:"comment"` EntryType icingadbTypes.CommentType `json:"entry_type"` IsPersistent types.Bool `json:"is_persistent"` IsSticky types.Bool `json:"is_sticky"` ExpireTime types.UnixMilli `json:"expire_time"` } // Init implements the contracts.Initer interface. func (ch *CommentHistory) Init() { ch.HasBeenRemoved = types.Bool{ Bool: false, Valid: true, } } type HistoryComment struct { HistoryMeta `json:",inline"` CommentHistoryId types.Binary `json:"comment_id"` // Idea: read EntryTime, RemoveTime and ExpireTime from Redis // and let EventTime decide which of them to write to MySQL. // So EventTime doesn't have to be read from Redis (json:"-") // and the others don't have to be written to MySQL (db:"-"). EntryTime types.UnixMilli `json:"entry_time" db:"-"` RemoveTime types.UnixMilli `json:"remove_time" db:"-"` ExpireTime types.UnixMilli `json:"expire_time" db:"-"` EventTime CommentEventTime `json:"-"` } // Init implements the contracts.Initer interface. func (h *HistoryComment) Init() { h.EventTime.History = h } // TableName implements the contracts.TableNamer interface. func (*HistoryComment) TableName() string { return "history" } type CommentEventTime struct { History *HistoryComment `db:"-"` } // Value implements the driver.Valuer interface. // Supports SQL NULL. func (et CommentEventTime) Value() (driver.Value, error) { if et.History == nil { return nil, nil } switch et.History.EventType { case "comment_add": return et.History.EntryTime.Value() case "comment_remove": v, err := et.History.RemoveTime.Value() if err == nil && v == nil { return et.History.ExpireTime.Value() } return v, err default: return nil, nil } } // Assert interface compliance. var ( _ database.Entity = (*CommentHistoryEntity)(nil) _ database.Upserter = (*CommentHistoryUpserter)(nil) _ contracts.Initer = (*CommentHistory)(nil) _ UpserterEntity = (*CommentHistory)(nil) _ contracts.Initer = (*HistoryComment)(nil) _ database.TableNamer = (*HistoryComment)(nil) _ UpserterEntity = (*HistoryComment)(nil) _ driver.Valuer = CommentEventTime{} ) icingadb-1.3.0/pkg/icingadb/v1/history/downtime.go000066400000000000000000000122431477347223700220220ustar00rootroot00000000000000package history import ( "database/sql/driver" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/contracts" ) type DowntimeHistoryEntity struct { DowntimeId types.Binary `json:"downtime_id"` } // Fingerprint implements part of the contracts.Entity interface. func (dhe DowntimeHistoryEntity) Fingerprint() database.Fingerprinter { return dhe } // ID implements part of the contracts.Entity interface. func (dhe DowntimeHistoryEntity) ID() database.ID { return dhe.DowntimeId } // SetID implements part of the contracts.Entity interface. func (dhe *DowntimeHistoryEntity) SetID(id database.ID) { dhe.DowntimeId = id.(types.Binary) } type DowntimeHistoryUpserter struct { CancelledBy types.String `json:"cancelled_by"` HasBeenCancelled types.Bool `json:"has_been_cancelled"` CancelTime types.UnixMilli `json:"cancel_time"` } // Upsert implements the contracts.Upserter interface. func (dhu *DowntimeHistoryUpserter) Upsert() interface{} { return dhu } type DowntimeHistory struct { DowntimeHistoryEntity `json:",inline"` HistoryTableMeta `json:",inline"` DowntimeHistoryUpserter `json:",inline"` TriggeredById types.Binary `json:"triggered_by_id"` ParentId types.Binary `json:"parent_id"` EntryTime types.UnixMilli `json:"entry_time"` Author string `json:"author"` Comment string `json:"comment"` IsFlexible types.Bool `json:"is_flexible"` FlexibleDuration uint64 `json:"flexible_duration"` ScheduledStartTime types.UnixMilli `json:"scheduled_start_time"` ScheduledEndTime types.UnixMilli `json:"scheduled_end_time"` StartTime types.UnixMilli `json:"start_time"` EndTime types.UnixMilli `json:"end_time"` ScheduledBy types.String `json:"scheduled_by"` TriggerTime types.UnixMilli `json:"trigger_time"` } type HistoryDowntime struct { HistoryMeta `json:",inline"` DowntimeHistoryId types.Binary `json:"downtime_id"` // Idea: read StartTime, CancelTime, EndTime and HasBeenCancelled from Redis // and let EventTime decide based on HasBeenCancelled which of the others to write to MySQL. // So EventTime doesn't have to be read from Redis (json:"-") // and the others don't have to be written to MySQL (db:"-"). StartTime types.UnixMilli `json:"start_time" db:"-"` CancelTime types.UnixMilli `json:"cancel_time" db:"-"` EndTime types.UnixMilli `json:"end_time" db:"-"` HasBeenCancelled types.Bool `json:"has_been_cancelled" db:"-"` EventTime DowntimeEventTime `json:"-"` } // Init implements the contracts.Initer interface. func (h *HistoryDowntime) Init() { h.EventTime.History = h } // TableName implements the contracts.TableNamer interface. func (*HistoryDowntime) TableName() string { return "history" } type SlaHistoryDowntime struct { DowntimeHistoryEntity `json:",inline"` HistoryTableMeta `json:",inline"` SlaHistoryDowntimeUpserter `json:",inline"` DowntimeStart types.UnixMilli `json:"start_time"` HasBeenCancelled types.Bool `json:"has_been_cancelled" db:"-"` CancelTime types.UnixMilli `json:"cancel_time" db:"-"` EndTime types.UnixMilli `json:"end_time" db:"-"` } // Init implements the contracts.Initer interface. func (s *SlaHistoryDowntime) Init() { s.DowntimeEnd.History = s } type SlaHistoryDowntimeUpserter struct { DowntimeEnd SlaDowntimeEndTime `json:"-"` } // Upsert implements the contracts.Upserter interface. func (h *SlaHistoryDowntimeUpserter) Upsert() interface{} { return h } type DowntimeEventTime struct { History *HistoryDowntime `db:"-"` } // Value implements the driver.Valuer interface. // Supports SQL NULL. func (et DowntimeEventTime) Value() (driver.Value, error) { if et.History == nil { return nil, nil } switch et.History.EventType { case "downtime_start": return et.History.StartTime.Value() case "downtime_end": if !et.History.HasBeenCancelled.Valid { return nil, nil } if et.History.HasBeenCancelled.Bool { return et.History.CancelTime.Value() } else { return et.History.EndTime.Value() } default: return nil, nil } } type SlaDowntimeEndTime struct { History *SlaHistoryDowntime `db:"-"` } // Value implements the driver.Valuer interface. func (et SlaDowntimeEndTime) Value() (driver.Value, error) { if et.History.HasBeenCancelled.Valid && et.History.HasBeenCancelled.Bool { return et.History.CancelTime.Value() } else { return et.History.EndTime.Value() } } // Assert interface compliance. var ( _ database.Entity = (*DowntimeHistoryEntity)(nil) _ database.Upserter = (*DowntimeHistoryUpserter)(nil) _ UpserterEntity = (*DowntimeHistory)(nil) _ contracts.Initer = (*HistoryDowntime)(nil) _ database.TableNamer = (*HistoryDowntime)(nil) _ UpserterEntity = (*HistoryDowntime)(nil) _ contracts.Initer = (*SlaHistoryDowntime)(nil) _ UpserterEntity = (*SlaHistoryDowntime)(nil) _ driver.Valuer = DowntimeEventTime{} _ driver.Valuer = SlaDowntimeEndTime{} ) icingadb-1.3.0/pkg/icingadb/v1/history/downtime_test.go000066400000000000000000000066301477347223700230640ustar00rootroot00000000000000package history import ( "database/sql/driver" "github.com/icinga/icinga-go-library/types" "github.com/stretchr/testify/require" "testing" "time" ) func TestDowntimeEventTime_Value(t *testing.T) { start := types.UnixMilli(time.Unix(23, 320000000)) cancel := types.UnixMilli(time.Unix(42, 240000000)) end := types.UnixMilli(time.Unix(1337, 733100000)) f := types.Bool{Bool: false, Valid: true} T := types.Bool{Bool: true, Valid: true} subtests := []struct { name string input *HistoryDowntime output driver.Value }{ {name: "nil-history"}, {name: "bad-event-type", input: &HistoryDowntime{ HistoryMeta: HistoryMeta{EventType: "bad"}, StartTime: start, CancelTime: cancel, EndTime: end, HasBeenCancelled: T, }}, {name: "start", output: int64(23320), input: &HistoryDowntime{ HistoryMeta: HistoryMeta{EventType: "downtime_start"}, StartTime: start, CancelTime: cancel, EndTime: end, HasBeenCancelled: T, }}, {name: "has-been-cancelled-nil", input: &HistoryDowntime{ HistoryMeta: HistoryMeta{EventType: "downtime_end"}, StartTime: start, CancelTime: cancel, EndTime: end, }}, {name: "has-been-cancelled", output: int64(42240), input: &HistoryDowntime{ HistoryMeta: HistoryMeta{EventType: "downtime_end"}, StartTime: start, CancelTime: cancel, EndTime: end, HasBeenCancelled: T, }}, {name: "end", output: int64(1337733), input: &HistoryDowntime{ HistoryMeta: HistoryMeta{EventType: "downtime_end"}, StartTime: start, CancelTime: cancel, EndTime: end, HasBeenCancelled: f, }}, {name: "start-nil", input: &HistoryDowntime{ HistoryMeta: HistoryMeta{EventType: "downtime_start"}, CancelTime: cancel, EndTime: end, HasBeenCancelled: T, }}, {name: "cancel-time-nil", input: &HistoryDowntime{ HistoryMeta: HistoryMeta{EventType: "downtime_end"}, StartTime: start, EndTime: end, HasBeenCancelled: T, }}, {name: "end-nil", input: &HistoryDowntime{ HistoryMeta: HistoryMeta{EventType: "downtime_end"}, StartTime: start, CancelTime: cancel, HasBeenCancelled: f, }}, } for _, st := range subtests { t.Run(st.name, func(t *testing.T) { v, err := (DowntimeEventTime{History: st.input}).Value() require.NoError(t, err) require.Equal(t, st.output, v) }) } } func TestSlaDowntimeEndTime_Value(t *testing.T) { cancel := types.UnixMilli(time.Unix(42, 240000000)) end := types.UnixMilli(time.Unix(1337, 733100000)) f := types.Bool{Bool: false, Valid: true} T := types.Bool{Bool: true, Valid: true} subtests := []struct { name string cancelled types.Bool cancelTime types.UnixMilli endTime types.UnixMilli output driver.Value }{ {name: "nil", cancelTime: cancel, endTime: end, output: int64(1337733)}, {name: "invalid", cancelled: types.Bool{Bool: true}, cancelTime: cancel, endTime: end, output: int64(1337733)}, {name: "false", cancelled: f, cancelTime: cancel, endTime: end, output: int64(1337733)}, {name: "true", cancelled: T, cancelTime: cancel, endTime: end, output: int64(42240)}, {name: "false-nil", cancelled: f, cancelTime: cancel}, {name: "true-nil", cancelled: T, endTime: end}, } for _, st := range subtests { t.Run(st.name, func(t *testing.T) { v, err := (SlaDowntimeEndTime{History: &SlaHistoryDowntime{ HasBeenCancelled: st.cancelled, CancelTime: st.cancelTime, EndTime: st.endTime, }}).Value() require.NoError(t, err) require.Equal(t, st.output, v) }) } } icingadb-1.3.0/pkg/icingadb/v1/history/flapping.go000066400000000000000000000045751477347223700220050ustar00rootroot00000000000000package history import ( "database/sql/driver" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/contracts" "github.com/icinga/icingadb/pkg/icingadb/v1" ) type FlappingHistoryUpserter struct { EndTime types.UnixMilli `json:"end_time"` PercentStateChangeEnd types.Float `json:"percent_state_change_end"` FlappingThresholdLow float32 `json:"flapping_threshold_low"` FlappingThresholdHigh float32 `json:"flapping_threshold_high"` } // Upsert implements the contracts.Upserter interface. func (fhu *FlappingHistoryUpserter) Upsert() interface{} { return fhu } type FlappingHistory struct { v1.EntityWithoutChecksum `json:",inline"` HistoryTableMeta `json:",inline"` FlappingHistoryUpserter `json:",inline"` StartTime types.UnixMilli `json:"start_time"` PercentStateChangeStart types.Float `json:"percent_state_change_start"` } type HistoryFlapping struct { HistoryMeta `json:",inline"` FlappingHistoryId types.Binary `json:"id"` // Idea: read StartTime and EndTime from Redis and let EventTime decide which of them to write to MySQL. // So EventTime doesn't have to be read from Redis (json:"-") // and the others don't have to be written to MySQL (db:"-"). StartTime types.UnixMilli `json:"start_time" db:"-"` EndTime types.UnixMilli `json:"end_time" db:"-"` EventTime FlappingEventTime `json:"-"` } // Init implements the contracts.Initer interface. func (h *HistoryFlapping) Init() { h.EventTime.History = h } // TableName implements the contracts.TableNamer interface. func (*HistoryFlapping) TableName() string { return "history" } type FlappingEventTime struct { History *HistoryFlapping `db:"-"` } // Value implements the driver.Valuer interface. // Supports SQL NULL. func (et FlappingEventTime) Value() (driver.Value, error) { if et.History == nil { return nil, nil } switch et.History.EventType { case "flapping_start": return et.History.StartTime.Value() case "flapping_end": return et.History.EndTime.Value() default: return nil, nil } } // Assert interface compliance. var ( _ UpserterEntity = (*FlappingHistory)(nil) _ contracts.Initer = (*HistoryFlapping)(nil) _ database.TableNamer = (*HistoryFlapping)(nil) _ UpserterEntity = (*HistoryFlapping)(nil) _ driver.Valuer = FlappingEventTime{} ) icingadb-1.3.0/pkg/icingadb/v1/history/flapping_test.go000066400000000000000000000024661477347223700230410ustar00rootroot00000000000000package history import ( "database/sql/driver" "github.com/icinga/icinga-go-library/types" "github.com/stretchr/testify/require" "testing" "time" ) func TestFlappingEventTime_Value(t *testing.T) { s := types.UnixMilli(time.Unix(12, 345000000)) e := types.UnixMilli(time.Unix(67, 890000000)) subtests := []struct { name string input *HistoryFlapping output driver.Value }{ {name: "nil-history"}, { name: "bad-event-type", input: &HistoryFlapping{HistoryMeta: HistoryMeta{EventType: "bad"}, StartTime: s, EndTime: e}, }, { name: "start", input: &HistoryFlapping{HistoryMeta: HistoryMeta{EventType: "flapping_start"}, StartTime: s, EndTime: e}, output: int64(12345), }, { name: "end", input: &HistoryFlapping{HistoryMeta: HistoryMeta{EventType: "flapping_end"}, StartTime: s, EndTime: e}, output: int64(67890), }, { name: "start-nil", input: &HistoryFlapping{HistoryMeta: HistoryMeta{EventType: "flapping_start"}, EndTime: e}, }, { name: "end-nil", input: &HistoryFlapping{HistoryMeta: HistoryMeta{EventType: "flapping_end"}, StartTime: s}, }, } for _, st := range subtests { t.Run(st.name, func(t *testing.T) { v, err := (FlappingEventTime{History: st.input}).Value() require.NoError(t, err) require.Equal(t, st.output, v) }) } } icingadb-1.3.0/pkg/icingadb/v1/history/meta.go000066400000000000000000000045671477347223700211340ustar00rootroot00000000000000package history import ( "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/icingadb/v1" ) // UpserterEntity provides upsert for entities. type UpserterEntity interface { database.Upserter database.Entity } // HistoryTableEntity is embedded by every concrete history type that has its own table. type HistoryTableEntity struct { v1.EntityWithoutChecksum `json:",inline"` } // Upsert implements the contracts.Upserter interface. // Update only the Id (effectively nothing). func (hte HistoryTableEntity) Upsert() interface{} { return hte } // HistoryEntity is embedded by every concrete history type. type HistoryEntity struct { Id types.Binary `json:"event_id"` } // Fingerprint implements part of the contracts.Entity interface. func (he HistoryEntity) Fingerprint() database.Fingerprinter { return he } // ID implements part of the contracts.Entity interface. func (he HistoryEntity) ID() database.ID { return he.Id } // SetID implements part of the contracts.Entity interface. func (he *HistoryEntity) SetID(id database.ID) { he.Id = id.(types.Binary) } // Upsert implements the contracts.Upserter interface. // Update only the Id (effectively nothing). func (he HistoryEntity) Upsert() interface{} { return he } // HistoryTableMeta is embedded by every concrete history type that has its own table. type HistoryTableMeta struct { EnvironmentId types.Binary `json:"environment_id"` EndpointId types.Binary `json:"endpoint_id"` ObjectType string `json:"object_type"` HostId types.Binary `json:"host_id"` ServiceId types.Binary `json:"service_id"` } // HistoryMeta is embedded by every concrete history type that belongs to the history table. type HistoryMeta struct { HistoryEntity `json:",inline"` EnvironmentId types.Binary `json:"environment_id"` EndpointId types.Binary `json:"endpoint_id"` ObjectType string `json:"object_type"` HostId types.Binary `json:"host_id"` ServiceId types.Binary `json:"service_id"` EventType string `json:"event_type"` } // Assert interface compliance. var ( _ database.Entity = (*HistoryTableEntity)(nil) _ database.Upserter = HistoryTableEntity{} _ database.Entity = (*HistoryEntity)(nil) _ database.Upserter = HistoryEntity{} _ database.Entity = (*HistoryMeta)(nil) _ database.Upserter = (*HistoryMeta)(nil) ) icingadb-1.3.0/pkg/icingadb/v1/history/notification.go000066400000000000000000000034161477347223700226640ustar00rootroot00000000000000package history import ( "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" icingadbTypes "github.com/icinga/icingadb/pkg/icingadb/types" v1 "github.com/icinga/icingadb/pkg/icingadb/v1" ) type NotificationHistory struct { HistoryTableEntity `json:",inline"` HistoryTableMeta `json:",inline"` NotificationId types.Binary `json:"notification_id"` Type icingadbTypes.NotificationType `json:"type"` SendTime types.UnixMilli `json:"send_time"` State uint8 `json:"state"` PreviousHardState uint8 `json:"previous_hard_state"` Author string `json:"author"` Text types.String `json:"text"` UsersNotified uint16 `json:"users_notified"` } type UserNotificationHistory struct { v1.EntityWithoutChecksum `json:",inline"` v1.EnvironmentMeta `json:",inline"` NotificationHistoryId types.Binary `json:"notification_history_id"` UserId types.Binary `json:"user_id"` } func (u *UserNotificationHistory) Upsert() interface{} { return u } type HistoryNotification struct { HistoryMeta `json:",inline"` NotificationHistoryId types.Binary `json:"id"` EventTime types.UnixMilli `json:"send_time"` } // TableName implements the contracts.TableNamer interface. func (*HistoryNotification) TableName() string { return "history" } // Assert interface compliance. var ( _ UpserterEntity = (*NotificationHistory)(nil) _ UpserterEntity = (*UserNotificationHistory)(nil) _ database.TableNamer = (*HistoryNotification)(nil) _ UpserterEntity = (*HistoryNotification)(nil) ) icingadb-1.3.0/pkg/icingadb/v1/history/state.go000066400000000000000000000036741477347223700213240ustar00rootroot00000000000000package history import ( "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" icingadbTypes "github.com/icinga/icingadb/pkg/icingadb/types" ) type StateHistory struct { HistoryTableEntity `json:",inline"` HistoryTableMeta `json:",inline"` EventTime types.UnixMilli `json:"event_time"` StateType icingadbTypes.StateType `json:"state_type"` SoftState uint8 `json:"soft_state"` HardState uint8 `json:"hard_state"` PreviousSoftState uint8 `json:"previous_soft_state"` PreviousHardState uint8 `json:"previous_hard_state"` CheckAttempt uint32 `json:"check_attempt"` Output types.String `json:"output"` LongOutput types.String `json:"long_output"` MaxCheckAttempts uint32 `json:"max_check_attempts"` CheckSource types.String `json:"check_source"` SchedulingSource types.String `json:"scheduling_source"` } type HistoryState struct { HistoryMeta `json:",inline"` StateHistoryId types.Binary `json:"id"` EventTime types.UnixMilli `json:"event_time"` } // TableName implements the contracts.TableNamer interface. func (*HistoryState) TableName() string { return "history" } type SlaHistoryState struct { HistoryTableEntity `json:",inline"` HistoryTableMeta `json:",inline"` EventTime types.UnixMilli `json:"event_time"` StateType icingadbTypes.StateType `json:"state_type" db:"-"` HardState uint8 `json:"hard_state"` PreviousHardState uint8 `json:"previous_hard_state"` } // Assert interface compliance. var ( _ UpserterEntity = (*StateHistory)(nil) _ database.TableNamer = (*HistoryState)(nil) _ UpserterEntity = (*HistoryState)(nil) _ UpserterEntity = (*SlaHistoryState)(nil) ) icingadb-1.3.0/pkg/icingadb/v1/host.go000066400000000000000000000043431477347223700174520ustar00rootroot00000000000000package v1 import ( "database/sql/driver" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/contracts" "net" ) type Host struct { Checkable `json:",inline"` Address string `json:"address"` Address6 string `json:"address6"` AddressBin AddressBin `json:"-"` Address6Bin Address6Bin `json:"-"` } // Init implements the contracts.Initer interface. func (h *Host) Init() { h.Checkable.Init() h.AddressBin.Host = h h.Address6Bin.Host = h } type AddressBin struct { Host *Host `db:"-"` } // Value implements the driver.Valuer interface. func (ab AddressBin) Value() (driver.Value, error) { if ab.Host == nil { return nil, nil } if ip := net.ParseIP(ab.Host.Address).To4(); ip == nil { return nil, nil } else { return []byte(ip), nil } } type Address6Bin struct { Host *Host `db:"-"` } // Value implements the driver.Valuer interface. func (ab Address6Bin) Value() (driver.Value, error) { if ab.Host == nil { return nil, nil } if ip := net.ParseIP(ab.Host.Address6); ip == nil { return nil, nil } else { return []byte(ip), nil } } type HostCustomvar struct { CustomvarMeta `json:",inline"` HostId types.Binary `json:"host_id"` } type HostState struct { State `json:",inline"` HostId types.Binary `json:"host_id"` } type Hostgroup struct { GroupMeta `json:",inline"` } type HostgroupCustomvar struct { CustomvarMeta `json:",inline"` HostgroupId types.Binary `json:"hostgroup_id"` } type HostgroupMember struct { MemberMeta `json:",inline"` HostId types.Binary `json:"host_id"` HostgroupId types.Binary `json:"hostgroup_id"` } func NewHost() database.Entity { return &Host{} } func NewHostCustomvar() database.Entity { return &HostCustomvar{} } func NewHostState() database.Entity { return &HostState{} } func NewHostgroup() database.Entity { return &Hostgroup{} } func NewHostgroupCustomvar() database.Entity { return &HostgroupCustomvar{} } func NewHostgroupMember() database.Entity { return &HostgroupMember{} } // Assert interface compliance. var ( _ contracts.Initer = (*Host)(nil) _ driver.Valuer = AddressBin{} _ driver.Valuer = Address6Bin{} _ contracts.Initer = (*Hostgroup)(nil) ) icingadb-1.3.0/pkg/icingadb/v1/host_test.go000066400000000000000000000027131477347223700205100ustar00rootroot00000000000000package v1 import ( "database/sql/driver" "github.com/stretchr/testify/require" "testing" ) func TestAddressBin_Value(t *testing.T) { subtests := []struct { name string input *Host output driver.Value }{ {name: "nil-host"}, {name: "invalid-address", input: &Host{Address: "invalid"}}, {name: "IPv6", input: &Host{Address: "2001:db8::"}}, {name: "IPv4", input: &Host{Address: "192.0.2.0"}, output: []byte{192, 0, 2, 0}}, {name: "ffff-IPv4", input: &Host{Address: "::ffff:192.0.2.0"}, output: []byte{192, 0, 2, 0}}, } for _, st := range subtests { t.Run(st.name, func(t *testing.T) { v, err := (AddressBin{Host: st.input}).Value() require.NoError(t, err) require.Equal(t, st.output, v) }) } } func TestAddress6Bin_Value(t *testing.T) { ffff192020 := []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 192, 0, 2, 0} subtests := []struct { name string input *Host output driver.Value }{ {name: "nil-host"}, {name: "invalid-address", input: &Host{Address: "invalid"}}, {"IPv6", &Host{Address6: "2001:db8::"}, []byte{32, 1, 13, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {name: "IPv4", input: &Host{Address6: "192.0.2.0"}, output: ffff192020}, {name: "ffff-IPv4", input: &Host{Address6: "::ffff:192.0.2.0"}, output: ffff192020}, } for _, st := range subtests { t.Run(st.name, func(t *testing.T) { v, err := (Address6Bin{Host: st.input}).Value() require.NoError(t, err) require.Equal(t, st.output, v) }) } } icingadb-1.3.0/pkg/icingadb/v1/icingadb_instance.go000066400000000000000000000021551477347223700221200ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/types" ) type IcingadbInstance struct { EntityWithoutChecksum `json:",inline"` EnvironmentMeta `json:",inline"` EndpointId types.Binary `json:"endpoint_id"` Heartbeat types.UnixMilli `json:"heartbeat"` Responsible types.Bool `json:"responsible"` Icinga2Version string `json:"icinga2_version"` Icinga2StartTime types.UnixMilli `json:"icinga2_start_time"` Icinga2NotificationsEnabled types.Bool `json:"icinga2_notifications_enabled"` Icinga2ActiveServiceChecksEnabled types.Bool `json:"icinga2_active_service_checks_enabled"` Icinga2ActiveHostChecksEnabled types.Bool `json:"icinga2_active_host_checks_enabled"` Icinga2EventHandlersEnabled types.Bool `json:"icinga2_event_handlers_enabled"` Icinga2FlapDetectionEnabled types.Bool `json:"icinga2_flap_detection_enabled"` Icinga2PerformanceDataEnabled types.Bool `json:"icinga2_performance_data_enabled"` } icingadb-1.3.0/pkg/icingadb/v1/meta.go000066400000000000000000000046201477347223700174210ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/contracts" ) // ChecksumMeta is embedded by every type with a checksum. type ChecksumMeta struct { PropertiesChecksum types.Binary `json:"checksum"` } // Checksum implements part of the contracts.Checksumer interface. func (m ChecksumMeta) Checksum() contracts.Checksum { return m.PropertiesChecksum } // SetChecksum implements part of the contracts.Checksumer interface. func (m *ChecksumMeta) SetChecksum(checksum contracts.Checksum) { m.PropertiesChecksum = checksum.(types.Binary) } // EnvironmentMeta is embedded by every type which belongs to an environment. type EnvironmentMeta struct { EnvironmentId types.Binary `json:"environment_id"` } // IdMeta is embedded by every type Icinga DB should synchronize. type IdMeta struct { Id types.Binary `json:"id"` } // ID implements part of the contracts.IDer interface. func (m IdMeta) ID() database.ID { return m.Id } // SetID implements part of the contracts.IDer interface. func (m *IdMeta) SetID(id database.ID) { m.Id = id.(types.Binary) } // NameMeta is embedded by every type with a name. type NameMeta struct { Name string `json:"name"` NameChecksum types.Binary `json:"name_checksum"` } // NameCiMeta is embedded by every type with a case insensitive name. type NameCiMeta struct { NameMeta `json:",inline"` NameCi *string `json:"-"` } // Init implements the contracts.Initer interface. func (n *NameCiMeta) Init() { n.NameCi = &n.Name } // CustomvarMeta is embedded by every type with custom variables. type CustomvarMeta struct { EntityWithoutChecksum `json:",inline"` EnvironmentMeta `json:",inline"` CustomvarId types.Binary `json:"customvar_id"` } // GroupMeta is embedded by every type that represents a specific group. type GroupMeta struct { EntityWithChecksum `json:",inline"` EnvironmentMeta `json:",inline"` NameCiMeta `json:",inline"` DisplayName string `json:"display_name"` ZoneId types.Binary `json:"zone_id"` } // MemberMeta is embedded by every type that represents members of a specific group. type MemberMeta struct { EntityWithoutChecksum `json:",inline"` EnvironmentMeta `json:",inline"` } // Assert interface compliance. var ( _ contracts.Initer = (*NameCiMeta)(nil) _ contracts.Initer = (*GroupMeta)(nil) ) icingadb-1.3.0/pkg/icingadb/v1/notification.go000066400000000000000000000047211477347223700211630ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/contracts" icingadbTypes "github.com/icinga/icingadb/pkg/icingadb/types" ) type Notification struct { EntityWithChecksum `json:",inline"` EnvironmentMeta `json:",inline"` NameCiMeta `json:",inline"` HostId types.Binary `json:"host_id"` ServiceId types.Binary `json:"service_id"` NotificationcommandId types.Binary `json:"notificationcommand_id"` TimesBegin types.Int `json:"times_begin"` TimesEnd types.Int `json:"times_end"` NotificationInterval uint32 `json:"notification_interval"` TimeperiodId types.Binary `json:"timeperiod_id"` States icingadbTypes.NotificationStates `json:"states"` Types icingadbTypes.NotificationTypes `json:"types"` ZoneId types.Binary `json:"zone_id"` } type NotificationUser struct { EntityWithoutChecksum `json:",inline"` EnvironmentMeta `json:",inline"` NotificationId types.Binary `json:"notification_id"` UserId types.Binary `json:"user_id"` } type NotificationUsergroup struct { EntityWithoutChecksum `json:",inline"` EnvironmentMeta `json:",inline"` NotificationId types.Binary `json:"notification_id"` UsergroupId types.Binary `json:"usergroup_id"` } type NotificationRecipient struct { EntityWithoutChecksum `json:",inline"` EnvironmentMeta `json:",inline"` NotificationId types.Binary `json:"notification_id"` UserId types.Binary `json:"user_id"` UsergroupId types.Binary `json:"usergroup_id"` } type NotificationCustomvar struct { CustomvarMeta `json:",inline"` NotificationId types.Binary `json:"notification_id"` } func NewNotification() database.Entity { return &Notification{} } func NewNotificationUser() database.Entity { return &NotificationUser{} } func NewNotificationUsergroup() database.Entity { return &NotificationUsergroup{} } func NewNotificationRecipient() database.Entity { return &NotificationRecipient{} } func NewNotificationCustomvar() database.Entity { return &NotificationCustomvar{} } // Assert interface compliance. var ( _ contracts.Initer = (*Notification)(nil) ) icingadb-1.3.0/pkg/icingadb/v1/overdue/000077500000000000000000000000001477347223700176135ustar00rootroot00000000000000icingadb-1.3.0/pkg/icingadb/v1/overdue/host.go000066400000000000000000000010351477347223700211160ustar00rootroot00000000000000package overdue import ( "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" v1 "github.com/icinga/icingadb/pkg/icingadb/v1" ) type HostState struct { v1.EntityWithoutChecksum IsOverdue types.Bool `json:"is_overdue"` } func NewHostState(id string, overdue bool) (database.Entity, error) { hs := &HostState{IsOverdue: types.Bool{ Bool: overdue, Valid: true, }} return hs, hs.Id.UnmarshalText([]byte(id)) } // Assert interface compliance. var ( _ database.Entity = (*HostState)(nil) ) icingadb-1.3.0/pkg/icingadb/v1/overdue/service.go000066400000000000000000000010511477347223700215770ustar00rootroot00000000000000package overdue import ( "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" v1 "github.com/icinga/icingadb/pkg/icingadb/v1" ) type ServiceState struct { v1.EntityWithoutChecksum IsOverdue types.Bool `json:"is_overdue"` } func NewServiceState(id string, overdue bool) (database.Entity, error) { hs := &ServiceState{IsOverdue: types.Bool{ Bool: overdue, Valid: true, }} return hs, hs.Id.UnmarshalText([]byte(id)) } // Assert interface compliance. var ( _ database.Entity = (*ServiceState)(nil) ) icingadb-1.3.0/pkg/icingadb/v1/service.go000066400000000000000000000026211477347223700201320ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/contracts" ) type Service struct { Checkable `json:",inline"` HostId types.Binary `json:"host_id"` } type ServiceCustomvar struct { CustomvarMeta `json:",inline"` ServiceId types.Binary `json:"service_id"` } type ServiceState struct { State `json:",inline"` ServiceId types.Binary `json:"service_id"` HostId types.Binary `json:"host_id"` } type Servicegroup struct { GroupMeta `json:",inline"` } type ServicegroupCustomvar struct { CustomvarMeta `json:",inline"` ServicegroupId types.Binary `json:"servicegroup_id"` } type ServicegroupMember struct { MemberMeta `json:",inline"` ServiceId types.Binary `json:"service_id"` ServicegroupId types.Binary `json:"servicegroup_id"` } func NewService() database.Entity { return &Service{} } func NewServiceCustomvar() database.Entity { return &ServiceCustomvar{} } func NewServiceState() database.Entity { return &ServiceState{} } func NewServicegroup() database.Entity { return &Servicegroup{} } func NewServicegroupCustomvar() database.Entity { return &ServicegroupCustomvar{} } func NewServicegroupMember() database.Entity { return &ServicegroupMember{} } // Assert interface compliance. var ( _ contracts.Initer = (*Service)(nil) _ contracts.Initer = (*Servicegroup)(nil) ) icingadb-1.3.0/pkg/icingadb/v1/state.go000066400000000000000000000052361477347223700176170ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/types" icingadbTypes "github.com/icinga/icingadb/pkg/icingadb/types" ) type State struct { EntityWithChecksum `json:",inline"` EnvironmentMeta `json:",inline"` AcknowledgementCommentId types.Binary `json:"acknowledgement_comment_id"` LastCommentId types.Binary `json:"last_comment_id"` CheckAttempt uint32 `json:"check_attempt"` CheckCommandline types.String `json:"check_commandline"` CheckSource types.String `json:"check_source"` SchedulingSource types.String `json:"scheduling_source"` ExecutionTime float64 `json:"execution_time"` HardState uint8 `json:"hard_state"` InDowntime types.Bool `json:"in_downtime"` IsAcknowledged icingadbTypes.AcknowledgementState `json:"is_acknowledged"` IsFlapping types.Bool `json:"is_flapping"` IsHandled types.Bool `json:"is_handled"` IsProblem types.Bool `json:"is_problem"` IsReachable types.Bool `json:"is_reachable"` LastStateChange types.UnixMilli `json:"last_state_change"` LastUpdate types.UnixMilli `json:"last_update"` Latency float64 `json:"latency"` LongOutput types.String `json:"long_output"` NextCheck types.UnixMilli `json:"next_check"` NextUpdate types.UnixMilli `json:"next_update"` Output types.String `json:"output"` PerformanceData types.String `json:"performance_data"` NormalizedPerformanceData types.String `json:"normalized_performance_data"` PreviousSoftState uint8 `json:"previous_soft_state"` PreviousHardState uint8 `json:"previous_hard_state"` Severity uint16 `json:"severity"` SoftState uint8 `json:"soft_state"` StateType icingadbTypes.StateType `json:"state_type"` CheckTimeout float64 `json:"check_timeout"` } icingadb-1.3.0/pkg/icingadb/v1/timeperiod.go000066400000000000000000000034501477347223700206340ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/contracts" ) type Timeperiod struct { EntityWithChecksum `json:",inline"` EnvironmentMeta `json:",inline"` NameCiMeta `json:",inline"` DisplayName string `json:"display_name"` PreferIncludes types.Bool `json:"prefer_includes"` ZoneId types.Binary `json:"zone_id"` } type TimeperiodRange struct { EntityWithoutChecksum `json:",inline"` EnvironmentMeta `json:",inline"` TimeperiodId types.Binary `json:"timeperiod_id"` RangeKey string `json:"range_key"` RangeValue string `json:"range_value"` } type TimeperiodOverrideInclude struct { EntityWithoutChecksum `json:",inline"` EnvironmentMeta `json:",inline"` TimeperiodId types.Binary `json:"timeperiod_id"` OverrideId types.Binary `json:"include_id"` } type TimeperiodOverrideExclude struct { EntityWithoutChecksum `json:",inline"` EnvironmentMeta `json:",inline"` TimeperiodId types.Binary `json:"timeperiod_id"` OverrideId types.Binary `json:"exclude_id"` } type TimeperiodCustomvar struct { CustomvarMeta `json:",inline"` TimeperiodId types.Binary `json:"timeperiod_id"` } func NewTimeperiod() database.Entity { return &Timeperiod{} } func NewTimeperiodRange() database.Entity { return &TimeperiodRange{} } func NewTimeperiodOverrideInclude() database.Entity { return &TimeperiodOverrideInclude{} } func NewTimeperiodOverrideExclude() database.Entity { return &TimeperiodOverrideExclude{} } func NewTimeperiodCustomvar() database.Entity { return &TimeperiodCustomvar{} } // Assert interface compliance. var ( _ contracts.Initer = (*Timeperiod)(nil) ) icingadb-1.3.0/pkg/icingadb/v1/url.go000066400000000000000000000013241477347223700172730ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/database" ) type ActionUrl struct { EntityWithoutChecksum `json:",inline"` EnvironmentMeta `json:",inline"` ActionUrl string `json:"action_url"` } type NotesUrl struct { EntityWithoutChecksum `json:",inline"` EnvironmentMeta `json:",inline"` NotesUrl string `json:"notes_url"` } type IconImage struct { EntityWithoutChecksum `json:",inline"` EnvironmentMeta `json:",inline"` IconImage string `json:"icon_image"` } func NewActionUrl() database.Entity { return &ActionUrl{} } func NewNotesUrl() database.Entity { return &NotesUrl{} } func NewIconImage() database.Entity { return &IconImage{} } icingadb-1.3.0/pkg/icingadb/v1/user.go000066400000000000000000000034651477347223700174570ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/contracts" icingadbTypes "github.com/icinga/icingadb/pkg/icingadb/types" ) type User struct { EntityWithChecksum `json:",inline"` EnvironmentMeta `json:",inline"` NameCiMeta `json:",inline"` DisplayName string `json:"display_name"` Email string `json:"email"` Pager string `json:"pager"` NotificationsEnabled types.Bool `json:"notifications_enabled"` TimeperiodId types.Binary `json:"timeperiod_id"` States icingadbTypes.NotificationStates `json:"states"` Types icingadbTypes.NotificationTypes `json:"types"` ZoneId types.Binary `json:"zone_id"` } type UserCustomvar struct { CustomvarMeta `json:",inline"` UserId types.Binary `json:"user_id"` } type Usergroup struct { GroupMeta `json:",inline"` } type UsergroupCustomvar struct { CustomvarMeta `json:",inline"` UsergroupId types.Binary `json:"usergroup_id"` } type UsergroupMember struct { MemberMeta `json:",inline"` UserId types.Binary `json:"user_id"` UsergroupId types.Binary `json:"usergroup_id"` } func NewUser() database.Entity { return &User{} } func NewUserCustomvar() database.Entity { return &UserCustomvar{} } func NewUsergroup() database.Entity { return &Usergroup{} } func NewUsergroupCustomvar() database.Entity { return &UsergroupCustomvar{} } func NewUsergroupMember() database.Entity { return &UsergroupMember{} } // Assert interface compliance. var ( _ contracts.Initer = (*User)(nil) _ contracts.Initer = (*Usergroup)(nil) ) icingadb-1.3.0/pkg/icingadb/v1/v1.go000066400000000000000000000024331477347223700170210ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/database" ) var StateFactories = []database.EntityFactoryFunc{NewHostState, NewServiceState} var ConfigFactories = []database.EntityFactoryFunc{ NewActionUrl, NewCheckcommand, NewCheckcommandArgument, NewCheckcommandCustomvar, NewCheckcommandEnvvar, NewComment, NewDowntime, NewEndpoint, NewEventcommand, NewEventcommandArgument, NewEventcommandCustomvar, NewEventcommandEnvvar, NewHost, NewHostCustomvar, NewHostgroup, NewHostgroupCustomvar, NewHostgroupMember, NewIconImage, NewNotesUrl, NewNotification, NewNotificationcommand, NewNotificationcommandArgument, NewNotificationcommandCustomvar, NewNotificationcommandEnvvar, NewNotificationCustomvar, NewNotificationRecipient, NewNotificationUser, NewNotificationUsergroup, NewService, NewServiceCustomvar, NewServicegroup, NewServicegroupCustomvar, NewServicegroupMember, NewTimeperiod, NewTimeperiodCustomvar, NewTimeperiodOverrideExclude, NewTimeperiodOverrideInclude, NewTimeperiodRange, NewUser, NewUserCustomvar, NewUsergroup, NewUsergroupCustomvar, NewUsergroupMember, NewZone, } // contextKey is an unexported type for context keys defined in this package. // This prevents collisions with keys defined in other packages. type contextKey int icingadb-1.3.0/pkg/icingaredis/000077500000000000000000000000001477347223700163355ustar00rootroot00000000000000icingadb-1.3.0/pkg/icingaredis/heartbeat.go000066400000000000000000000140771477347223700206340ustar00rootroot00000000000000package icingaredis import ( "context" "github.com/icinga/icinga-go-library/logging" "github.com/icinga/icinga-go-library/redis" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icinga-go-library/utils" v1 "github.com/icinga/icingadb/pkg/icingaredis/v1" "github.com/pkg/errors" "go.uber.org/zap" "golang.org/x/sync/errgroup" "sync" "sync/atomic" "time" ) // Timeout defines how long a heartbeat may be absent if a heartbeat has already been received. // After this time, a heartbeat loss is propagated. const Timeout = time.Minute // Heartbeat periodically reads heartbeats from a Redis stream and signals in Beat channels when they are received. // Also signals on if the heartbeat is Lost. type Heartbeat struct { active bool events chan *HeartbeatMessage lastReceivedMs atomic.Int64 lastMessageMs atomic.Int64 cancelCtx context.CancelFunc client *redis.Client done chan struct{} errMu sync.Mutex err error logger *logging.Logger } // NewHeartbeat returns a new Heartbeat and starts the heartbeat controller loop. func NewHeartbeat(ctx context.Context, client *redis.Client, logger *logging.Logger) *Heartbeat { ctx, cancelCtx := context.WithCancel(ctx) heartbeat := &Heartbeat{ events: make(chan *HeartbeatMessage, 1), cancelCtx: cancelCtx, client: client, done: make(chan struct{}), logger: logger, } go heartbeat.controller(ctx) return heartbeat } // Events returns a channel that is sent to on heartbeat events. // // A non-nil pointer signals that a heartbeat was received from Icinga 2 whereas a nil pointer signals a heartbeat loss. func (h *Heartbeat) Events() <-chan *HeartbeatMessage { return h.events } // LastReceived returns the last heartbeat's receive time in ms. func (h *Heartbeat) LastReceived() int64 { return h.lastReceivedMs.Load() } // LastMessageTime returns the last message's time in ms. func (h *Heartbeat) LastMessageTime() int64 { return h.lastMessageMs.Load() } // Close stops the heartbeat controller loop, waits for it to finish, and returns an error if any. // Implements the io.Closer interface. func (h *Heartbeat) Close() error { h.cancelCtx() <-h.Done() return h.Err() } // Done returns a channel that will be closed when the heartbeat controller loop has ended. func (h *Heartbeat) Done() <-chan struct{} { return h.done } // Err returns an error if Done has been closed and there is an error. Otherwise returns nil. func (h *Heartbeat) Err() error { h.errMu.Lock() defer h.errMu.Unlock() return h.err } // controller loop. func (h *Heartbeat) controller(ctx context.Context) { defer close(h.done) messages := make(chan *HeartbeatMessage) defer close(messages) g, ctx := errgroup.WithContext(ctx) // Message producer loop. g.Go(func() error { // We expect heartbeats every second but only read them every 3 seconds. throttle := time.NewTicker(3 * time.Second) defer throttle.Stop() for id := "$"; ; { streams, err := h.client.XReadUntilResult(ctx, &redis.XReadArgs{ Streams: []string{"icinga:stats", id}, }) if err != nil { return errors.Wrap(err, "can't read Icinga heartbeat") } m := &HeartbeatMessage{ received: time.Now(), stats: streams[0].Messages[0].Values, } select { case messages <- m: case <-ctx.Done(): return ctx.Err() } id = streams[0].Messages[0].ID <-throttle.C } }) // State loop. g.Go(func() error { for { select { case m := <-messages: if !h.active { envId, err := m.EnvironmentID() if err != nil { return err } h.logger.Infow("Received Icinga heartbeat", zap.String("environment", envId.String())) h.active = true } h.lastReceivedMs.Store(m.received.UnixMilli()) statsT, err := m.stats.Time() if err != nil { h.logger.Warnw("Received Icinga heartbeat with invalid stats time", zap.Error(err)) h.lastMessageMs.Store(0) } else { h.lastMessageMs.Store(statsT.Time().UnixMilli()) } h.sendEvent(m) case <-time.After(Timeout): if h.active { h.logger.Warnw("Lost Icinga heartbeat", zap.Duration("timeout", Timeout)) h.sendEvent(nil) h.active = false } else { h.logger.Warn("Waiting for Icinga heartbeat") } h.lastReceivedMs.Store(0) h.lastMessageMs.Store(0) case <-ctx.Done(): return ctx.Err() } } }) // Since the goroutines of the group actually run endlessly, // we wait here forever, unless an error occurs. if err := g.Wait(); err != nil && !utils.IsContextCanceled(err) { // Do not propagate any context-canceled errors here, // as this is to be expected when calling Close or // when the parent context is canceled. h.setError(err) } } func (h *Heartbeat) setError(err error) { h.errMu.Lock() defer h.errMu.Unlock() h.err = errors.Wrap(err, "heartbeat failed") } func (h *Heartbeat) sendEvent(m *HeartbeatMessage) { // Remove any not yet delivered event select { case old := <-h.events: if old != nil { kv := []any{zap.Time("previous", old.received)} if m != nil { kv = append(kv, zap.Time("current", m.received)) } h.logger.Debugw("Previous heartbeat not read from channel", kv...) } else { h.logger.Debug("Previous heartbeat loss event not read from channel") } default: } h.events <- m } // HeartbeatMessage represents a heartbeat received from Icinga 2 together with a timestamp when it was received. type HeartbeatMessage struct { received time.Time stats v1.StatsMessage } // Stats returns the underlying heartbeat message from the icinga:stats stream. func (m *HeartbeatMessage) Stats() *v1.StatsMessage { return &m.stats } // EnvironmentID returns the Icinga DB environment ID stored in the heartbeat message. func (m *HeartbeatMessage) EnvironmentID() (types.Binary, error) { var id types.Binary err := types.UnmarshalJSON([]byte(m.stats["icingadb_environment"].(string)), &id) if err != nil { return nil, err } return id, nil } // ExpiryTime returns the timestamp when the heartbeat expires. func (m *HeartbeatMessage) ExpiryTime() time.Time { return m.received.Add(Timeout) } icingadb-1.3.0/pkg/icingaredis/telemetry/000077500000000000000000000000001477347223700203475ustar00rootroot00000000000000icingadb-1.3.0/pkg/icingaredis/telemetry/heartbeat.go000066400000000000000000000132261477347223700226410ustar00rootroot00000000000000package telemetry import ( "context" "fmt" "github.com/icinga/icinga-go-library/logging" "github.com/icinga/icinga-go-library/periodic" "github.com/icinga/icinga-go-library/redis" "github.com/icinga/icinga-go-library/utils" "github.com/icinga/icingadb/internal" "github.com/icinga/icingadb/pkg/icingaredis" "github.com/pkg/errors" "go.uber.org/zap" "regexp" "runtime/metrics" "strconv" "strings" "sync" "sync/atomic" "time" ) // ha represents icingadb.HA to avoid import cycles. type ha interface { State() (weResponsibleMilli int64, weResponsible, otherResponsible bool) } type SuccessfulSync struct { FinishMilli int64 DurationMilli int64 } // currentDbConnErr stores ongoing errors from database connections. var currentDbConnErr struct { mu sync.Mutex message string sinceMilli int64 } // UpdateCurrentDbConnErr updates the current error information stored in currentDbConnErr. func UpdateCurrentDbConnErr(err error) { now := time.Now().UnixMilli() currentDbConnErr.mu.Lock() defer currentDbConnErr.mu.Unlock() if currentDbConnErr.sinceMilli >= now { // Already updated with a more recent error, ignore this one. return } message := "" if err != nil { message = err.Error() } if currentDbConnErr.message == message { // Error stayed the same, no update needed, keeping the old timestamp. return } if currentDbConnErr.message == "" || message == "" { // Either first error or recovery from an error, update timestamp. currentDbConnErr.sinceMilli = now } currentDbConnErr.message = message } // GetCurrentDbConnErr returns the last error message (or the empty string if not in an error state) and a timestamp in // milliseconds of the last change from OK to error or from error to OK. func GetCurrentDbConnErr() (string, int64) { currentDbConnErr.mu.Lock() defer currentDbConnErr.mu.Unlock() return currentDbConnErr.message, currentDbConnErr.sinceMilli } // OngoingSyncStartMilli is to be updated by the main() function. var OngoingSyncStartMilli atomic.Int64 var boolToStr = map[bool]string{false: "0", true: "1"} var startTime = time.Now().UnixMilli() // StartHeartbeat periodically writes heartbeats to Redis for being monitored by Icinga 2. // It returns an atomic pointer to SuccessfulSync, // which contains synchronisation statistics that the caller should update. func StartHeartbeat( ctx context.Context, client *redis.Client, logger *logging.Logger, ha ha, heartbeat *icingaredis.Heartbeat, ) *atomic.Pointer[SuccessfulSync] { var syncStats atomic.Pointer[SuccessfulSync] syncStats.Store(&SuccessfulSync{}) goMetrics := NewGoMetrics() const interval = time.Second var lastErr string var silenceUntil time.Time periodic.Start(ctx, interval, func(tick periodic.Tick) { heartbeat := heartbeat.LastReceived() responsibleTsMilli, responsible, otherResponsible := ha.State() ongoingSyncStart := OngoingSyncStartMilli.Load() lastSync := syncStats.Load() dbConnErr, dbConnErrSinceMilli := GetCurrentDbConnErr() now := time.Now() values := map[string]string{ "version": internal.Version.Version, "time": strconv.FormatInt(now.UnixMilli(), 10), "start-time": strconv.FormatInt(startTime, 10), "error": dbConnErr, "error-since": strconv.FormatInt(dbConnErrSinceMilli, 10), "performance-data": goMetrics.PerformanceData(), "last-heartbeat-received": strconv.FormatInt(heartbeat, 10), "ha-responsible": boolToStr[responsible], "ha-responsible-ts": strconv.FormatInt(responsibleTsMilli, 10), "ha-other-responsible": boolToStr[otherResponsible], "sync-ongoing-since": strconv.FormatInt(ongoingSyncStart, 10), "sync-success-finish": strconv.FormatInt(lastSync.FinishMilli, 10), "sync-success-duration": strconv.FormatInt(lastSync.DurationMilli, 10), } ctx, cancel := context.WithDeadline(ctx, tick.Time.Add(interval)) defer cancel() cmd := client.XAdd(ctx, &redis.XAddArgs{ Stream: "icingadb:telemetry:heartbeat", MaxLen: 1, Values: values, }) if err := cmd.Err(); err != nil && !utils.IsContextCanceled(err) && !errors.Is(err, context.DeadlineExceeded) { logw := logger.Debugw currentErr := err.Error() if currentErr != lastErr || now.After(silenceUntil) { logw = logger.Warnw lastErr = currentErr silenceUntil = now.Add(time.Minute) } logw("Can't update own heartbeat", zap.Error(redis.WrapCmdErr(cmd))) } else { lastErr = "" silenceUntil = time.Time{} } }) return &syncStats } type goMetrics struct { names []string units []string samples []metrics.Sample } func NewGoMetrics() *goMetrics { m := &goMetrics{} forbiddenRe := regexp.MustCompile(`\W`) for _, d := range metrics.All() { switch d.Kind { case metrics.KindUint64, metrics.KindFloat64: name := "go_" + strings.TrimLeft(forbiddenRe.ReplaceAllString(d.Name, "_"), "_") unit := "" if strings.HasSuffix(d.Name, ":bytes") { unit = "B" } else if strings.HasSuffix(d.Name, ":seconds") { unit = "s" } else if d.Cumulative { unit = "c" } m.names = append(m.names, name) m.units = append(m.units, unit) m.samples = append(m.samples, metrics.Sample{Name: d.Name}) } } return m } func (g *goMetrics) PerformanceData() string { metrics.Read(g.samples) var buf strings.Builder for i, sample := range g.samples { if i > 0 { buf.WriteByte(' ') } switch sample.Value.Kind() { case metrics.KindUint64: _, _ = fmt.Fprintf(&buf, "%s=%d%s", g.names[i], sample.Value.Uint64(), g.units[i]) case metrics.KindFloat64: _, _ = fmt.Fprintf(&buf, "%s=%f%s", g.names[i], sample.Value.Float64(), g.units[i]) } } return buf.String() } icingadb-1.3.0/pkg/icingaredis/telemetry/stats.go000066400000000000000000000026251477347223700220410ustar00rootroot00000000000000package telemetry import ( "context" "github.com/icinga/icinga-go-library/com" "github.com/icinga/icinga-go-library/logging" "github.com/icinga/icinga-go-library/periodic" "github.com/icinga/icinga-go-library/redis" "github.com/icinga/icinga-go-library/utils" "go.uber.org/zap" "strconv" "time" ) var Stats struct { // Config & co. are to be increased by the T sync once for every T object synced. Config, State, History, Overdue, HistoryCleanup com.Counter } // WriteStats periodically forwards Stats to Redis for being monitored by Icinga 2. func WriteStats(ctx context.Context, client *redis.Client, logger *logging.Logger) { counters := map[string]*com.Counter{ "config_sync": &Stats.Config, "state_sync": &Stats.State, "history_sync": &Stats.History, "overdue_sync": &Stats.Overdue, "history_cleanup": &Stats.HistoryCleanup, } periodic.Start(ctx, time.Second, func(_ periodic.Tick) { var data []string for kind, counter := range counters { if cnt := counter.Reset(); cnt > 0 { data = append(data, kind, strconv.FormatUint(cnt, 10)) } } if data != nil { cmd := client.XAdd(ctx, &redis.XAddArgs{ Stream: "icingadb:telemetry:stats", MaxLen: 15 * 60, Approx: true, Values: data, }) if err := cmd.Err(); err != nil && !utils.IsContextCanceled(err) { logger.Warnw("Can't update own stats", zap.Error(redis.WrapCmdErr(cmd))) } } }) } icingadb-1.3.0/pkg/icingaredis/utils.go000066400000000000000000000067201477347223700200310ustar00rootroot00000000000000package icingaredis import ( "context" "github.com/icinga/icinga-go-library/com" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/redis" "github.com/icinga/icinga-go-library/strcase" "github.com/icinga/icinga-go-library/types" "github.com/icinga/icingadb/pkg/common" "github.com/icinga/icingadb/pkg/contracts" "github.com/pkg/errors" "golang.org/x/sync/errgroup" "runtime" ) // CreateEntities streams and creates entities from the // given Redis field value pairs using the specified factory function, // and streams them on a returned channel. func CreateEntities(ctx context.Context, factoryFunc database.EntityFactoryFunc, pairs <-chan redis.HPair, concurrent int) (<-chan database.Entity, <-chan error) { entities := make(chan database.Entity) g, ctx := errgroup.WithContext(ctx) g.Go(func() error { defer close(entities) g, ctx := errgroup.WithContext(ctx) for i := 0; i < concurrent; i++ { g.Go(func() error { for { select { case pair, ok := <-pairs: if !ok { return nil } var id types.Binary if err := id.UnmarshalText([]byte(pair.Field)); err != nil { return errors.Wrapf(err, "can't create ID from value %#v", pair.Field) } e := factoryFunc() if err := types.UnmarshalJSON([]byte(pair.Value), e); err != nil { return err } e.SetID(id) select { case entities <- e: case <-ctx.Done(): return ctx.Err() } case <-ctx.Done(): return ctx.Err() } } }) } return g.Wait() }) return entities, com.WaitAsync(g) } // SetChecksums concurrently streams from the given entities and // sets their checksums using the specified map and // streams the results on a returned channel. func SetChecksums(ctx context.Context, entities <-chan database.Entity, checksums map[string]database.Entity, concurrent int) (<-chan database.Entity, <-chan error) { entitiesWithChecksum := make(chan database.Entity) g, ctx := errgroup.WithContext(ctx) g.Go(func() error { defer close(entitiesWithChecksum) g, ctx := errgroup.WithContext(ctx) for i := 0; i < concurrent; i++ { g.Go(func() error { for { select { case entity, ok := <-entities: if !ok { return nil } if checksumer, ok := checksums[entity.ID().String()]; ok { entity.(contracts.Checksumer).SetChecksum(checksumer.(contracts.Checksumer).Checksum()) } else { return errors.Errorf("no checksum for %#v", entity) } select { case entitiesWithChecksum <- entity: case <-ctx.Done(): return ctx.Err() } case <-ctx.Done(): return ctx.Err() } } }) } return g.Wait() }) return entitiesWithChecksum, com.WaitAsync(g) } // YieldAll yields all entities from Redis that belong to the specified SyncSubject. func YieldAll(ctx context.Context, c *redis.Client, subject *common.SyncSubject) (<-chan database.Entity, <-chan error) { key := strcase.Delimited(types.Name(subject.Entity()), ':') if subject.WithChecksum() { key = "icinga:checksum:" + key } else { key = "icinga:" + key } pairs, errs := c.HYield(ctx, key) g, ctx := errgroup.WithContext(ctx) // Let errors from HYield cancel the group. com.ErrgroupReceive(g, errs) desired, errs := CreateEntities(ctx, subject.FactoryForDelta(), pairs, runtime.NumCPU()) // Let errors from CreateEntities cancel the group. com.ErrgroupReceive(g, errs) return desired, com.WaitAsync(g) } icingadb-1.3.0/pkg/icingaredis/utils_test.go000066400000000000000000000074451477347223700210750ustar00rootroot00000000000000package icingaredis import ( "context" "github.com/icinga/icinga-go-library/database" "github.com/icinga/icinga-go-library/redis" "github.com/icinga/icingadb/pkg/icingadb/v1" "github.com/stretchr/testify/require" "testing" "time" ) type testEntity struct { v1.EntityWithoutChecksum `json:",inline"` Data int `json:"data"` } func newTestEntity(data int, id ...byte) *testEntity { return &testEntity{ EntityWithoutChecksum: v1.EntityWithoutChecksum{ IdMeta: v1.IdMeta{Id: id}, }, Data: data, } } func factoryFunc() database.Entity { return &testEntity{} } func TestCreateEntities(t *testing.T) { subtests := []struct { name string pairs []redis.HPair concurrent int error bool output []database.Entity }{ {"empty", nil, 1, false, nil}, {"kerr", []redis.HPair{{Field: "172", Value: `{"data":1337}`}}, 1, true, nil}, {"verr", []redis.HPair{{Field: "172a", Value: `{"data":1337`}}, 1, true, nil}, {"one", []redis.HPair{{Field: "172a", Value: `{"data":1337}`}}, 1, false, []database.Entity{ newTestEntity(1337, 23, 42), }}, { "two", []redis.HPair{{Field: "17", Value: `{"data":2038}`}, {Field: "2a", Value: `{"data":777}`}}, 1, false, []database.Entity{newTestEntity(2038, 23), newTestEntity(777, 42)}, }, {"concurrent", []redis.HPair{{Field: "172a", Value: `{"data":1337}`}}, 10, false, []database.Entity{ newTestEntity(1337, 23, 42), }}, { "ok_and_err", []redis.HPair{ {Field: "17", Value: `{"data":2038}`}, {Field: "172", Value: `{"data":1337}`}, {Field: "2a", Value: `{"data":777}`}, }, 1, true, []database.Entity{ newTestEntity(2038, 23), }, }, } latencies := []struct { name string latency time.Duration }{ {"instantly", 0}, {"1us", time.Microsecond}, {"20ms", 20 * time.Millisecond}, } for _, st := range subtests { t.Run(st.name, func(t *testing.T) { for _, l := range latencies { t.Run(l.name, func(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() input := make(chan redis.HPair, 1) go func() { defer close(input) for _, v := range st.pairs { if l.latency > 0 { select { case <-time.After(l.latency): case <-ctx.Done(): return } } select { case input <- v: case <-ctx.Done(): return } } }() entities, errors := CreateEntities(ctx, factoryFunc, input, st.concurrent) require.NotNil(t, entities, "entities channel should not be nil") require.NotNil(t, errors, "errors channel should not be nil") for i, expected := range st.output { errs := errors if st.error && i == len(st.output)-1 { errs = nil } select { case actual, ok := <-entities: require.True(t, ok, "entities channel should not be closed, yet") require.Equal(t, expected, actual) case <-errs: require.Fail(t, "errors channel should not be ready (yet)") case <-time.After(time.Second): require.Fail(t, "entities channel should not block") } } if st.error { select { case err, ok := <-errors: require.True(t, ok, "errors channel should not be closed, yet") require.Error(t, err) case <-time.After(time.Second): require.Fail(t, "errors channel should not block") } } select { case _, ok := <-entities: require.False(t, ok, "entities channel should be closed") case <-time.After(time.Second): require.Fail(t, "entities channel should not block") } select { case _, ok := <-errors: require.False(t, ok, "errors channel should be closed") case <-time.After(time.Second): require.Fail(t, "errors channel should not block") } }) } }) } } icingadb-1.3.0/pkg/icingaredis/v1/000077500000000000000000000000001477347223700166635ustar00rootroot00000000000000icingadb-1.3.0/pkg/icingaredis/v1/icinga_status.go000066400000000000000000000017451477347223700220560ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/types" ) // IcingaStatus defines Icinga status information. type IcingaStatus struct { // Note: Icinga2Environment is not related to the environment_id used throughout Icinga DB. Icinga2Environment string `json:"environment"` NodeName string `json:"node_name"` Version string `json:"version"` ProgramStart types.UnixMilli `json:"program_start"` EndpointId types.Binary `json:"endpoint_id"` NotificationsEnabled types.Bool `json:"enable_notifications"` ActiveServiceChecksEnabled types.Bool `json:"enable_service_checks"` ActiveHostChecksEnabled types.Bool `json:"enable_host_checks"` EventHandlersEnabled types.Bool `json:"enable_event_handlers"` FlapDetectionEnabled types.Bool `json:"enable_flapping"` PerformanceDataEnabled types.Bool `json:"enable_perfdata"` } icingadb-1.3.0/pkg/icingaredis/v1/stats_message.go000066400000000000000000000024621477347223700220600ustar00rootroot00000000000000package v1 import ( "github.com/icinga/icinga-go-library/types" "github.com/pkg/errors" ) // StatsMessage represents a message from the Redis stream icinga:stats. type StatsMessage map[string]interface{} // Raw returns the key-value pairs of the message. func (m StatsMessage) Raw() map[string]interface{} { return m } // IcingaStatus extracts Icinga status information from the message into IcingaStatus and returns it. func (m StatsMessage) IcingaStatus() (*IcingaStatus, error) { if s, ok := m["IcingaApplication"].(string); ok { var envelope struct { Status struct { IcingaApplication struct { IcingaStatus `json:"app"` } `json:"icingaapplication"` } `json:"status"` } if err := types.UnmarshalJSON([]byte(s), &envelope); err != nil { return nil, err } return &envelope.Status.IcingaApplication.IcingaStatus, nil } return nil, errors.Errorf(`bad message %#v. "IcingaApplication" missing`, m) } // Time extracts the timestamp of the message into types.UnixMilli and returns it. func (m StatsMessage) Time() (*types.UnixMilli, error) { if s, ok := m["timestamp"].(string); ok { var t types.UnixMilli if err := types.UnmarshalJSON([]byte(s), &t); err != nil { return nil, err } return &t, nil } return nil, errors.Errorf(`bad message %#v. "timestamp" missing`, m) } icingadb-1.3.0/schema/000077500000000000000000000000001477347223700145335ustar00rootroot00000000000000icingadb-1.3.0/schema/mysql/000077500000000000000000000000001477347223700157005ustar00rootroot00000000000000icingadb-1.3.0/schema/mysql/schema.sql000066400000000000000000001670021477347223700176670ustar00rootroot00000000000000-- IcingaDB | (c) 2019 Icinga GmbH | GPLv2+ SET SESSION sql_mode = 'STRICT_ALL_TABLES,NO_ENGINE_SUBSTITUTION'; SET SESSION innodb_strict_mode = 1; DROP FUNCTION IF EXISTS get_sla_ok_percent; DELIMITER // CREATE FUNCTION get_sla_ok_percent( in_host_id binary(20), in_service_id binary(20), in_start_time bigint unsigned, in_end_time bigint unsigned ) RETURNS decimal(7, 4) READS SQL DATA BEGIN DECLARE result decimal(7, 4); DECLARE row_event_time bigint unsigned; DECLARE row_event_type enum('state_change', 'downtime_start', 'downtime_end', 'end'); DECLARE row_event_prio int; DECLARE row_hard_state tinyint unsigned; DECLARE row_previous_hard_state tinyint unsigned; DECLARE last_event_time bigint unsigned; DECLARE last_hard_state tinyint unsigned; DECLARE active_downtimes int unsigned; DECLARE problem_time bigint unsigned; DECLARE total_time bigint unsigned; DECLARE done int; DECLARE cur CURSOR FOR ( -- all downtime_start events before the end of the SLA interval -- for downtimes that overlap the SLA interval in any way SELECT GREATEST(downtime_start, in_start_time) AS event_time, 'downtime_start' AS event_type, 1 AS event_prio, NULL AS hard_state, NULL AS previous_hard_state FROM sla_history_downtime d WHERE d.host_id = in_host_id AND ((in_service_id IS NULL AND d.service_id IS NULL) OR d.service_id = in_service_id) AND d.downtime_start < in_end_time AND d.downtime_end >= in_start_time ) UNION ALL ( -- all downtime_end events before the end of the SLA interval -- for downtimes that overlap the SLA interval in any way SELECT downtime_end AS event_time, 'downtime_end' AS event_type, 2 AS event_prio, NULL AS hard_state, NULL AS previous_hard_state FROM sla_history_downtime d WHERE d.host_id = in_host_id AND ((in_service_id IS NULL AND d.service_id IS NULL) OR d.service_id = in_service_id) AND d.downtime_start < in_end_time AND d.downtime_end >= in_start_time AND d.downtime_end < in_end_time ) UNION ALL ( -- all state events strictly in interval SELECT event_time, 'state_change' AS event_type, 0 AS event_prio, hard_state, previous_hard_state FROM sla_history_state s WHERE s.host_id = in_host_id AND ((in_service_id IS NULL AND s.service_id IS NULL) OR s.service_id = in_service_id) AND s.event_time > in_start_time AND s.event_time < in_end_time ) UNION ALL ( -- end event to keep loop simple, values are not used SELECT in_end_time AS event_time, 'end' AS event_type, 3 AS event_prio, NULL AS hard_state, NULL AS previous_hard_state ) ORDER BY event_time, event_prio; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; IF in_end_time <= in_start_time THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'end time must be greater than start time'; END IF; -- Use the latest event at or before the beginning of the SLA interval as the initial state. SELECT hard_state INTO last_hard_state FROM sla_history_state s WHERE s.host_id = in_host_id AND ((in_service_id IS NULL AND s.service_id IS NULL) OR s.service_id = in_service_id) AND s.event_time <= in_start_time ORDER BY s.event_time DESC LIMIT 1; -- If this does not exist, use the previous state from the first event after the beginning of the SLA interval. IF last_hard_state IS NULL THEN SELECT previous_hard_state INTO last_hard_state FROM sla_history_state s WHERE s.host_id = in_host_id AND ((in_service_id IS NULL AND s.service_id IS NULL) OR s.service_id = in_service_id) AND s.event_time > in_start_time ORDER BY s.event_time ASC LIMIT 1; END IF; -- If this also does not exist, use the current host/service state. IF last_hard_state IS NULL THEN IF in_service_id IS NULL THEN SELECT hard_state INTO last_hard_state FROM host_state s WHERE s.host_id = in_host_id; ELSE SELECT hard_state INTO last_hard_state FROM service_state s WHERE s.host_id = in_host_id AND s.service_id = in_service_id; END IF; END IF; IF last_hard_state IS NULL THEN SET last_hard_state = 0; END IF; SET problem_time = 0; SET total_time = in_end_time - in_start_time; SET last_event_time = in_start_time; SET active_downtimes = 0; SET done = 0; OPEN cur; read_loop: LOOP FETCH cur INTO row_event_time, row_event_type, row_event_prio, row_hard_state, row_previous_hard_state; IF done THEN LEAVE read_loop; END IF; IF row_previous_hard_state = 99 THEN SET total_time = total_time - (row_event_time - last_event_time); ELSEIF ((in_service_id IS NULL AND last_hard_state > 0) OR (in_service_id IS NOT NULL AND last_hard_state > 1)) AND last_hard_state != 99 AND active_downtimes = 0 THEN SET problem_time = problem_time + row_event_time - last_event_time; END IF; SET last_event_time = row_event_time; IF row_event_type = 'state_change' THEN SET last_hard_state = row_hard_state; ELSEIF row_event_type = 'downtime_start' THEN SET active_downtimes = active_downtimes + 1; ELSEIF row_event_type = 'downtime_end' THEN SET active_downtimes = active_downtimes - 1; END IF; END LOOP; CLOSE cur; SET result = 100 * (total_time - problem_time) / total_time; RETURN result; END// DELIMITER ; CREATE TABLE host ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', environment_id binary(20) NOT NULL COMMENT 'environment.id', name_checksum binary(20) NOT NULL COMMENT 'sha1(name)', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', name varchar(255) NOT NULL, name_ci varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, display_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, address varchar(255) NOT NULL, address6 varchar(255) NOT NULL, address_bin binary(4) DEFAULT NULL, address6_bin binary(16) DEFAULT NULL, checkcommand_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'checkcommand.name', checkcommand_id binary(20) NOT NULL COMMENT 'checkcommand.id', max_check_attempts int unsigned NOT NULL, check_timeperiod_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'timeperiod.name', check_timeperiod_id binary(20) DEFAULT NULL COMMENT 'timeperiod.id', check_timeout int unsigned DEFAULT NULL, check_interval int unsigned NOT NULL, check_retry_interval int unsigned NOT NULL, active_checks_enabled enum('n', 'y') NOT NULL, passive_checks_enabled enum('n', 'y') NOT NULL, event_handler_enabled enum('n', 'y') NOT NULL, notifications_enabled enum('n', 'y') NOT NULL, flapping_enabled enum('n', 'y') NOT NULL, flapping_threshold_low float NOT NULL, flapping_threshold_high float NOT NULL, perfdata_enabled enum('n', 'y') NOT NULL, eventcommand_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'eventcommand.name', eventcommand_id binary(20) DEFAULT NULL COMMENT 'eventcommand.id', is_volatile enum('n', 'y') NOT NULL, action_url_id binary(20) DEFAULT NULL COMMENT 'action_url.id', notes_url_id binary(20) DEFAULT NULL COMMENT 'notes_url.id', notes text NOT NULL, icon_image_id binary(20) DEFAULT NULL COMMENT 'icon_image.id', icon_image_alt text NOT NULL, zone_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'zone.name', zone_id binary(20) DEFAULT NULL COMMENT 'zone.id', command_endpoint_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'endpoint.name', command_endpoint_id binary(20) DEFAULT NULL COMMENT 'endpoint.id', PRIMARY KEY (id), KEY idx_action_url_checksum (action_url_id) COMMENT 'cleanup', KEY idx_notes_url_checksum (notes_url_id) COMMENT 'cleanup', KEY idx_icon_image_checksum (icon_image_id) COMMENT 'cleanup', INDEX idx_host_display_name (display_name) COMMENT 'Host list filtered/ordered by display_name', INDEX idx_host_name_ci (name_ci) COMMENT 'Host list filtered using quick search', INDEX idx_host_name (name) COMMENT 'Host list filtered/ordered by name; Host detail filter' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE hostgroup ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', environment_id binary(20) NOT NULL COMMENT 'environment.id', name_checksum binary(20) NOT NULL COMMENT 'sha1(name)', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', name varchar(255) NOT NULL, name_ci varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, display_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, zone_id binary(20) DEFAULT NULL COMMENT 'zone.id', PRIMARY KEY (id), INDEX idx_hostgroup_display_name (display_name) COMMENT 'Hostgroup list filtered/ordered by display_name', INDEX idx_hostgroup_name_ci (name_ci) COMMENT 'Hostgroup list filtered using quick search', INDEX idx_hostgroup_name (name) COMMENT 'Host/service/host group list filtered by host group name; Hostgroup detail filter' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE hostgroup_member ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + host_id + hostgroup_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', host_id binary(20) NOT NULL COMMENT 'host.id', hostgroup_id binary(20) NOT NULL COMMENT 'hostgroup.id', PRIMARY KEY (id), INDEX idx_hostgroup_member_host_id (host_id, hostgroup_id), INDEX idx_hostgroup_member_hostgroup_id (hostgroup_id, host_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE host_customvar ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + host_id + customvar_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', host_id binary(20) NOT NULL COMMENT 'host.id', customvar_id binary(20) NOT NULL COMMENT 'customvar.id', PRIMARY KEY (id), INDEX idx_host_customvar_host_id (host_id, customvar_id), INDEX idx_host_customvar_customvar_id (customvar_id, host_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE hostgroup_customvar ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + hostgroup_id + customvar_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', hostgroup_id binary(20) NOT NULL COMMENT 'hostgroup.id', customvar_id binary(20) NOT NULL COMMENT 'customvar.id', PRIMARY KEY (id), INDEX idx_hostgroup_customvar_hostgroup_id (hostgroup_id, customvar_id), INDEX idx_hostgroup_customvar_customvar_id (customvar_id, hostgroup_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE host_state ( id binary(20) NOT NULL COMMENT 'host.id', host_id binary(20) NOT NULL COMMENT 'host.id', environment_id binary(20) NOT NULL COMMENT 'environment.id', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', state_type enum('hard', 'soft') NOT NULL, soft_state tinyint unsigned NOT NULL, hard_state tinyint unsigned NOT NULL, previous_soft_state tinyint unsigned NOT NULL, previous_hard_state tinyint unsigned NOT NULL, check_attempt int unsigned NOT NULL, severity smallint unsigned NOT NULL, output longtext DEFAULT NULL, long_output longtext DEFAULT NULL, performance_data longtext DEFAULT NULL, normalized_performance_data longtext DEFAULT NULL, check_commandline text DEFAULT NULL, is_problem enum('n', 'y') NOT NULL, is_handled enum('n', 'y') NOT NULL, is_reachable enum('n', 'y') NOT NULL, is_flapping enum('n', 'y') NOT NULL, is_overdue enum('n', 'y') NOT NULL, is_acknowledged enum('n', 'y', 'sticky') NOT NULL, acknowledgement_comment_id binary(20) DEFAULT NULL COMMENT 'comment.id', last_comment_id binary(20) DEFAULT NULL COMMENT 'comment.id', in_downtime enum('n', 'y') NOT NULL, execution_time int unsigned DEFAULT NULL, latency int unsigned DEFAULT NULL, check_timeout int unsigned DEFAULT NULL, check_source text DEFAULT NULL, scheduling_source text DEFAULT NULL, last_update bigint unsigned DEFAULT NULL, last_state_change bigint unsigned NOT NULL, next_check bigint unsigned NOT NULL, next_update bigint unsigned NOT NULL, PRIMARY KEY (id), UNIQUE INDEX idx_host_state_host_id (host_id), INDEX idx_host_state_is_problem (is_problem, severity) COMMENT 'Host list filtered by is_problem ordered by severity', INDEX idx_host_state_severity (severity) COMMENT 'Host list filtered/ordered by severity', INDEX idx_host_state_soft_state (soft_state, last_state_change) COMMENT 'Host list filtered/ordered by soft_state; recently recovered filter', INDEX idx_host_state_last_state_change (last_state_change) COMMENT 'Host list filtered/ordered by last_state_change' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE service ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', environment_id binary(20) NOT NULL COMMENT 'environment.id', name_checksum binary(20) NOT NULL COMMENT 'sha1(name)', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', host_id binary(20) NOT NULL COMMENT 'sha1(host.id)', name varchar(255) NOT NULL, name_ci varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, display_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, checkcommand_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'checkcommand.name', checkcommand_id binary(20) NOT NULL COMMENT 'checkcommand.id', max_check_attempts int unsigned NOT NULL, check_timeperiod_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'timeperiod.name', check_timeperiod_id binary(20) DEFAULT NULL COMMENT 'timeperiod.id', check_timeout int unsigned DEFAULT NULL, check_interval int unsigned NOT NULL, check_retry_interval int unsigned NOT NULL, active_checks_enabled enum('n', 'y') NOT NULL, passive_checks_enabled enum('n', 'y') NOT NULL, event_handler_enabled enum('n', 'y') NOT NULL, notifications_enabled enum('n', 'y') NOT NULL, flapping_enabled enum('n', 'y') NOT NULL, flapping_threshold_low float NOT NULL, flapping_threshold_high float NOT NULL, perfdata_enabled enum('n', 'y') NOT NULL, eventcommand_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'eventcommand.name', eventcommand_id binary(20) DEFAULT NULL COMMENT 'eventcommand.id', is_volatile enum('n', 'y') NOT NULL, action_url_id binary(20) DEFAULT NULL COMMENT 'action_url.id', notes_url_id binary(20) DEFAULT NULL COMMENT 'notes_url.id', notes text NOT NULL, icon_image_id binary(20) DEFAULT NULL COMMENT 'icon_image.id', icon_image_alt text NOT NULL, zone_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'zone.name', zone_id binary(20) DEFAULT NULL COMMENT 'zone.id', command_endpoint_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'endpoint.name', command_endpoint_id binary(20) DEFAULT NULL COMMENT 'endpoint.id', PRIMARY KEY (id), INDEX idx_service_display_name (display_name) COMMENT 'Service list filtered/ordered by display_name', INDEX idx_service_host_id (host_id, display_name) COMMENT 'Service list filtered by host and ordered by display_name', INDEX idx_service_name_ci (name_ci) COMMENT 'Service list filtered using quick search', INDEX idx_service_name (name) COMMENT 'Service list filtered/ordered by name; Service detail filter' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE servicegroup ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', environment_id binary(20) NOT NULL COMMENT 'environment.id', name_checksum binary(20) NOT NULL COMMENT 'sha1(name)', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', name varchar(255) NOT NULL, name_ci varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, display_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, zone_id binary(20) DEFAULT NULL COMMENT 'zone.id', PRIMARY KEY (id), INDEX idx_servicegroup_display_name (display_name) COMMENT 'Servicegroup list filtered/ordered by display_name', INDEX idx_servicegroup_name_ci (name_ci) COMMENT 'Servicegroup list filtered using quick search', INDEX idx_servicegroup_name (name) COMMENT 'Host/service/service group list filtered by service group name; Servicegroup detail filter' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE servicegroup_member ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + servicegroup_id + service_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', service_id binary(20) NOT NULL COMMENT 'service.id', servicegroup_id binary(20) NOT NULL COMMENT 'servicegroup.id', PRIMARY KEY (id), INDEX idx_servicegroup_member_service_id (service_id, servicegroup_id), INDEX idx_servicegroup_member_servicegroup_id (servicegroup_id, service_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE service_customvar ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + service_id + customvar_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', service_id binary(20) NOT NULL COMMENT 'service.id', customvar_id binary(20) NOT NULL COMMENT 'customvar.id', PRIMARY KEY (id), INDEX idx_service_customvar_service_id (service_id, customvar_id), INDEX idx_service_customvar_customvar_id (customvar_id, service_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE servicegroup_customvar ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + servicegroup_id + customvar_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', servicegroup_id binary(20) NOT NULL COMMENT 'servicegroup.id', customvar_id binary(20) NOT NULL COMMENT 'customvar.id', PRIMARY KEY (id), INDEX idx_servicegroup_customvar_servicegroup_id (servicegroup_id, customvar_id), INDEX idx_servicegroup_customvar_customvar_id (customvar_id, servicegroup_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE service_state ( id binary(20) NOT NULL COMMENT 'service.id', host_id binary(20) NOT NULL COMMENT 'host.id', service_id binary(20) NOT NULL COMMENT 'service.id', environment_id binary(20) NOT NULL COMMENT 'environment.id', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', state_type enum('hard', 'soft') NOT NULL, soft_state tinyint unsigned NOT NULL, hard_state tinyint unsigned NOT NULL, previous_soft_state tinyint unsigned NOT NULL, previous_hard_state tinyint unsigned NOT NULL, check_attempt int unsigned NOT NULL, severity smallint unsigned NOT NULL, output longtext DEFAULT NULL, long_output longtext DEFAULT NULL, performance_data longtext DEFAULT NULL, normalized_performance_data longtext DEFAULT NULL, check_commandline text DEFAULT NULL, is_problem enum('n', 'y') NOT NULL, is_handled enum('n', 'y') NOT NULL, is_reachable enum('n', 'y') NOT NULL, is_flapping enum('n', 'y') NOT NULL, is_overdue enum('n', 'y') NOT NULL, is_acknowledged enum('n', 'y', 'sticky') NOT NULL, acknowledgement_comment_id binary(20) DEFAULT NULL COMMENT 'comment.id', last_comment_id binary(20) DEFAULT NULL COMMENT 'comment.id', in_downtime enum('n', 'y') NOT NULL, execution_time int unsigned DEFAULT NULL, latency int unsigned DEFAULT NULL, check_timeout int unsigned DEFAULT NULL, check_source text DEFAULT NULL, scheduling_source text DEFAULT NULL, last_update bigint unsigned DEFAULT NULL, last_state_change bigint unsigned NOT NULL, next_check bigint unsigned NOT NULL, next_update bigint unsigned NOT NULL, PRIMARY KEY (id), UNIQUE INDEX idx_service_state_service_id (service_id), INDEX idx_service_state_is_problem (is_problem, severity) COMMENT 'Service list filtered by is_problem ordered by severity', INDEX idx_service_state_severity (severity) COMMENT 'Service list filtered/ordered by severity', INDEX idx_service_state_soft_state (soft_state, last_state_change) COMMENT 'Service list filtered/ordered by soft_state; recently recovered filter', INDEX idx_service_state_last_state_change (last_state_change) COMMENT 'Service list filtered/ordered by last_state_change' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE endpoint ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', environment_id binary(20) NOT NULL COMMENT 'environment.id', name_checksum binary(20) NOT NULL COMMENT 'sha1(name)', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', name varchar(255) NOT NULL, name_ci varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, zone_id binary(20) NOT NULL COMMENT 'zone.id', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE environment ( id binary(20) NOT NULL COMMENT 'sha1(Icinga CA public key)', name varchar(255) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE icingadb_instance ( id binary(16) NOT NULL COMMENT 'UUIDv4', environment_id binary(20) NOT NULL COMMENT 'environment.id', endpoint_id binary(20) DEFAULT NULL COMMENT 'endpoint.id', heartbeat bigint unsigned NOT NULL COMMENT '*nix timestamp', responsible enum('n', 'y') NOT NULL, icinga2_version varchar(255) NOT NULL, icinga2_start_time bigint unsigned NOT NULL, icinga2_notifications_enabled enum('n', 'y') NOT NULL, icinga2_active_service_checks_enabled enum('n', 'y') NOT NULL, icinga2_active_host_checks_enabled enum('n', 'y') NOT NULL, icinga2_event_handlers_enabled enum('n', 'y') NOT NULL, icinga2_flap_detection_enabled enum('n', 'y') NOT NULL, icinga2_performance_data_enabled enum('n', 'y') NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE checkcommand ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + type + name)', environment_id binary(20) NOT NULL COMMENT 'env.id', zone_id binary(20) DEFAULT NULL COMMENT 'zone.id', name_checksum binary(20) NOT NULL COMMENT 'sha1(name)', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', name varchar(255) NOT NULL, name_ci varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, command text NOT NULL, timeout int unsigned NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE checkcommand_argument ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + checkcommand_id + argument_key)', environment_id binary(20) NOT NULL COMMENT 'env.id', checkcommand_id binary(20) NOT NULL COMMENT 'checkcommand.id', argument_key varchar(255) NOT NULL, properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', argument_value text DEFAULT NULL, argument_order smallint DEFAULT NULL, description text DEFAULT NULL, argument_key_override varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, repeat_key enum('n', 'y') NOT NULL, required enum('n', 'y') NOT NULL, set_if varchar(255) DEFAULT NULL, `separator` varchar(255) DEFAULT NULL, skip_key enum('n', 'y') NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE checkcommand_envvar ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + checkcommand_id + envvar_key)', environment_id binary(20) NOT NULL COMMENT 'env.id', checkcommand_id binary(20) NOT NULL COMMENT 'checkcommand.id', envvar_key varchar(255) NOT NULL, properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', envvar_value text NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE checkcommand_customvar ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + checkcommand_id + customvar_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', checkcommand_id binary(20) NOT NULL COMMENT 'checkcommand.id', customvar_id binary(20) NOT NULL COMMENT 'customvar.id', PRIMARY KEY (id), INDEX idx_checkcommand_customvar_checkcommand_id (checkcommand_id, customvar_id), INDEX idx_checkcommand_customvar_customvar_id (customvar_id, checkcommand_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE eventcommand ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + type + name)', environment_id binary(20) NOT NULL COMMENT 'env.id', zone_id binary(20) DEFAULT NULL COMMENT 'zone.id', name_checksum binary(20) NOT NULL COMMENT 'sha1(name)', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', name varchar(255) NOT NULL, name_ci varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, command text NOT NULL, timeout smallint unsigned NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE eventcommand_argument ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + eventcommand_id + argument_key)', environment_id binary(20) NOT NULL COMMENT 'env.id', eventcommand_id binary(20) NOT NULL COMMENT 'eventcommand.id', argument_key varchar(255) NOT NULL, properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', argument_value text DEFAULT NULL, argument_order smallint DEFAULT NULL, description text DEFAULT NULL, argument_key_override varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, repeat_key enum('n', 'y') NOT NULL, required enum('n', 'y') NOT NULL, set_if varchar(255) DEFAULT NULL, `separator` varchar(255) DEFAULT NULL, skip_key enum('n', 'y') NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE eventcommand_envvar ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + eventcommand_id + envvar_key)', environment_id binary(20) NOT NULL COMMENT 'env.id', eventcommand_id binary(20) NOT NULL COMMENT 'eventcommand.id', envvar_key varchar(255) NOT NULL, properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', envvar_value text NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE eventcommand_customvar ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + eventcommand_id + customvar_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', eventcommand_id binary(20) NOT NULL COMMENT 'eventcommand.id', customvar_id binary(20) NOT NULL COMMENT 'customvar.id', PRIMARY KEY (id), INDEX idx_eventcommand_customvar_eventcommand_id (eventcommand_id, customvar_id), INDEX idx_eventcommand_customvar_customvar_id (customvar_id, eventcommand_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE notificationcommand ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + type + name)', environment_id binary(20) NOT NULL COMMENT 'env.id', zone_id binary(20) DEFAULT NULL COMMENT 'zone.id', name_checksum binary(20) NOT NULL COMMENT 'sha1(name)', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', name varchar(255) NOT NULL, name_ci varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, command text NOT NULL, timeout smallint unsigned NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE notificationcommand_argument ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + notificationcommand_id + argument_key)', environment_id binary(20) NOT NULL COMMENT 'env.id', notificationcommand_id binary(20) NOT NULL COMMENT 'notificationcommand.id', argument_key varchar(255) NOT NULL, properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', argument_value text DEFAULT NULL, argument_order smallint DEFAULT NULL, description text DEFAULT NULL, argument_key_override varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, repeat_key enum('n', 'y') NOT NULL, required enum('n', 'y') NOT NULL, set_if varchar(255) DEFAULT NULL, `separator` varchar(255) DEFAULT NULL, skip_key enum('n', 'y') NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE notificationcommand_envvar ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + notificationcommand_id + envvar_key)', environment_id binary(20) NOT NULL COMMENT 'env.id', notificationcommand_id binary(20) NOT NULL COMMENT 'notificationcommand.id', envvar_key varchar(255) NOT NULL, properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', envvar_value text NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE notificationcommand_customvar ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + notificationcommand_id + customvar_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', notificationcommand_id binary(20) NOT NULL COMMENT 'notificationcommand.id', customvar_id binary(20) NOT NULL COMMENT 'customvar.id', PRIMARY KEY (id), INDEX idx_notificationcommand_customvar_notificationcommand_id (notificationcommand_id, customvar_id), INDEX idx_notificationcommand_customvar_customvar_id (customvar_id, notificationcommand_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE comment ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', environment_id binary(20) NOT NULL COMMENT 'environment.id', object_type enum('host', 'service') NOT NULL, host_id binary(20) NOT NULL COMMENT 'host.id', service_id binary(20) DEFAULT NULL COMMENT 'service.id', name_checksum binary(20) NOT NULL COMMENT 'sha1(name)', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', name varchar(548) NOT NULL COMMENT '255+1+255+1+36, i.e. "host.name!service.name!UUID"', author varchar(255) NOT NULL COLLATE utf8mb4_unicode_ci, text text NOT NULL, entry_type enum('comment','ack') NOT NULL, entry_time bigint unsigned NOT NULL, is_persistent enum('n', 'y') NOT NULL, is_sticky enum('n', 'y') NOT NULL, expire_time bigint unsigned DEFAULT NULL, zone_id binary(20) DEFAULT NULL COMMENT 'zone.id', PRIMARY KEY (id), INDEX idx_comment_name (name) COMMENT 'Comment detail filter', INDEX idx_comment_entry_time (entry_time) COMMENT 'Comment list fileted/ordered by entry_time', INDEX idx_comment_author (author) COMMENT 'Comment list filtered/ordered by author', INDEX idx_comment_expire_time (expire_time) COMMENT 'Comment list filtered/ordered by expire_time' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE downtime ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', environment_id binary(20) NOT NULL COMMENT 'environment.id', triggered_by_id binary(20) DEFAULT NULL COMMENT 'The ID of the downtime that triggered this downtime. This is set when creating downtimes on a host or service higher up in the dependency chain using the "child_option" "DowntimeTriggeredChildren" and can also be set manually via the API.', parent_id binary(20) DEFAULT NULL COMMENT 'For service downtimes, the ID of the host downtime that created this downtime by using the "all_services" flag of the schedule-downtime API.', object_type enum('host', 'service') NOT NULL, host_id binary(20) NOT NULL COMMENT 'host.id', service_id binary(20) DEFAULT NULL COMMENT 'service.id', name_checksum binary(20) NOT NULL COMMENT 'sha1(name)', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', name varchar(548) NOT NULL COMMENT '255+1+255+1+36, i.e. "host.name!service.name!UUID"', author varchar(255) NOT NULL COLLATE utf8mb4_unicode_ci, comment text NOT NULL, entry_time bigint unsigned NOT NULL, scheduled_start_time bigint unsigned NOT NULL, scheduled_end_time bigint unsigned NOT NULL, scheduled_duration bigint unsigned NOT NULL, is_flexible enum('n', 'y') NOT NULL, flexible_duration bigint unsigned NOT NULL, is_in_effect enum('n', 'y') NOT NULL, start_time bigint unsigned DEFAULT NULL COMMENT 'Time when the host went into a problem state during the downtimes timeframe', end_time bigint unsigned DEFAULT NULL COMMENT 'Problem state assumed: scheduled_end_time if fixed, start_time + flexible_duration otherwise', duration bigint unsigned NOT NULL COMMENT 'Duration of the downtime: When the downtime is flexible, this is the same as flexible_duration otherwise scheduled_duration', scheduled_by varchar(767) DEFAULT NULL COMMENT 'Name of the ScheduledDowntime which created this Downtime. 255+1+255+1+255, i.e. "host.name!service.name!scheduled-downtime-name"', zone_id binary(20) DEFAULT NULL COMMENT 'zone.id', PRIMARY KEY (id), INDEX idx_downtime_is_in_effect (is_in_effect, start_time) COMMENT 'Downtime list filtered/ordered by severity', INDEX idx_downtime_name (name) COMMENT 'Downtime detail filter', INDEX idx_downtime_entry_time (entry_time) COMMENT 'Downtime list filtered/ordered by entry_time', INDEX idx_downtime_start_time (start_time) COMMENT 'Downtime list filtered/ordered by start_time', INDEX idx_downtime_end_time (end_time) COMMENT 'Downtime list filtered/ordered by end_time', INDEX idx_downtime_scheduled_start_time (scheduled_start_time) COMMENT 'Downtime list filtered/ordered by scheduled_start_time', INDEX idx_downtime_scheduled_end_time (scheduled_end_time) COMMENT 'Downtime list filtered/ordered by scheduled_end_time', INDEX idx_downtime_author (author) COMMENT 'Downtime list filtered/ordered by author', INDEX idx_downtime_duration (duration) COMMENT 'Downtime list filtered/ordered by duration' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE notification ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', environment_id binary(20) NOT NULL COMMENT 'environment.id', name_checksum binary(20) NOT NULL COMMENT 'sha1(name)', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', name varchar(767) NOT NULL COMMENT '255+1+255+1+255, i.e. "host.name!service.name!notification.name"', name_ci varchar(767) COLLATE utf8mb4_unicode_ci NOT NULL, host_id binary(20) NOT NULL COMMENT 'host.id', service_id binary(20) DEFAULT NULL COMMENT 'service.id', notificationcommand_id binary(20) NOT NULL COMMENT 'notificationcommand.id', times_begin int unsigned DEFAULT NULL, times_end int unsigned DEFAULT NULL, notification_interval int unsigned NOT NULL, timeperiod_id binary(20) DEFAULT NULL COMMENT 'timeperiod.id', states tinyint unsigned NOT NULL, types smallint unsigned NOT NULL, zone_id binary(20) DEFAULT NULL COMMENT 'zone.id', PRIMARY KEY (id), INDEX idx_notification_host_id (host_id), INDEX idx_notification_service_id (service_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE notification_user ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + notification_id + user_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', notification_id binary(20) NOT NULL COMMENT 'notification.id', user_id binary(20) NOT NULL COMMENT 'user.id', PRIMARY KEY (id), INDEX idx_notification_user_user_id (user_id, notification_id), INDEX idx_notification_user_notification_id (notification_id, user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE notification_usergroup ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + notification_id + usergroup_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', notification_id binary(20) NOT NULL COMMENT 'notification.id', usergroup_id binary(20) NOT NULL COMMENT 'usergroup.id', PRIMARY KEY (id), INDEX idx_notification_usergroup_usergroup_id (usergroup_id, notification_id), INDEX idx_notification_usergroup_notification_id (notification_id, usergroup_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE notification_recipient ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + notification_id + (user_id | usergroup_id))', environment_id binary(20) NOT NULL COMMENT 'environment.id', notification_id binary(20) NOT NULL COMMENT 'notification.id', user_id binary(20) NULL COMMENT 'user.id', usergroup_id binary(20) NULL COMMENT 'usergroup.id', PRIMARY KEY (id), INDEX idx_notification_recipient_user_id (user_id, notification_id), INDEX idx_notification_recipient_notification_id_user (notification_id, user_id), INDEX idx_notification_recipient_usergroup_id (usergroup_id, notification_id), INDEX idx_notification_recipient_notification_id_usergroup (notification_id, usergroup_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE notification_customvar ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + notification_id + customvar_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', notification_id binary(20) NOT NULL COMMENT 'notification.id', customvar_id binary(20) NOT NULL COMMENT 'customvar.id', PRIMARY KEY (id), INDEX idx_notification_customvar_notification_id (notification_id, customvar_id), INDEX idx_notification_customvar_customvar_id (customvar_id, notification_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE icon_image ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + icon_image)', environment_id binary(20) NOT NULL COMMENT 'environment.id', icon_image text COLLATE utf8mb4_unicode_ci NOT NULL, PRIMARY KEY (id), KEY idx_icon_image (icon_image(255)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE action_url ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + action_url)', environment_id binary(20) NOT NULL COMMENT 'environment.id', action_url text COLLATE utf8mb4_unicode_ci NOT NULL, PRIMARY KEY (id), KEY idx_action_url (action_url(255)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE notes_url ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + notes_url)', environment_id binary(20) NOT NULL COMMENT 'environment.id', notes_url text COLLATE utf8mb4_unicode_ci NOT NULL, PRIMARY KEY (id), KEY idx_notes_url (notes_url(255)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE timeperiod ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', environment_id binary(20) NOT NULL COMMENT 'env.id', name_checksum binary(20) NOT NULL COMMENT 'sha1(name)', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', name varchar(255) NOT NULL, name_ci varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, display_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, prefer_includes enum('n', 'y') NOT NULL, zone_id binary(20) DEFAULT NULL COMMENT 'zone.id', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE timeperiod_range ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + range_id + timeperiod_id)', environment_id binary(20) NOT NULL COMMENT 'env.id', timeperiod_id binary(20) NOT NULL COMMENT 'timeperiod.id', range_key varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, range_value text NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE timeperiod_override_include ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + include_id + timeperiod_id)', environment_id binary(20) NOT NULL COMMENT 'env.id', timeperiod_id binary(20) NOT NULL COMMENT 'timeperiod.id', override_id binary(20) NOT NULL COMMENT 'timeperiod.id', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE timeperiod_override_exclude ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + exclude_id + timeperiod_id)', environment_id binary(20) NOT NULL COMMENT 'env.id', timeperiod_id binary(20) NOT NULL COMMENT 'timeperiod.id', override_id binary(20) NOT NULL COMMENT 'timeperiod.id', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE timeperiod_customvar ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + timeperiod_id + customvar_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', timeperiod_id binary(20) NOT NULL COMMENT 'timeperiod.id', customvar_id binary(20) NOT NULL COMMENT 'customvar.id', PRIMARY KEY (id), INDEX idx_timeperiod_customvar_timeperiod_id (timeperiod_id, customvar_id), INDEX idx_timeperiod_customvar_customvar_id (customvar_id, timeperiod_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE customvar ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + name + value)', environment_id binary(20) NOT NULL COMMENT 'environment.id', name_checksum binary(20) NOT NULL COMMENT 'sha1(name)', name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, value text NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE customvar_flat ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + flatname + flatvalue)', environment_id binary(20) NOT NULL COMMENT 'environment.id', customvar_id binary(20) NOT NULL COMMENT 'sha1(customvar.id)', flatname_checksum binary(20) NOT NULL COMMENT 'sha1(flatname after conversion)', flatname varchar(512) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Path converted with `.` and `[ ]`', flatvalue text DEFAULT NULL, PRIMARY KEY (id), INDEX idx_customvar_flat_customvar_id (customvar_id), INDEX idx_customvar_flat_flatname_flatvalue (flatname, flatvalue(255)) COMMENT 'Lists filtered by custom variable' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE user ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', environment_id binary(20) NOT NULL COMMENT 'environment.id', name_checksum binary(20) NOT NULL COMMENT 'sha1(name)', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', name varchar(255) NOT NULL, name_ci varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, display_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, email varchar(255) NOT NULL, pager varchar(255) NOT NULL, notifications_enabled enum('n', 'y') NOT NULL, timeperiod_id binary(20) DEFAULT NULL COMMENT 'timeperiod.id', states tinyint unsigned NOT NULL, types smallint unsigned NOT NULL, zone_id binary(20) DEFAULT NULL COMMENT 'zone.id', PRIMARY KEY (id), INDEX idx_user_display_name (display_name) COMMENT 'User list filtered/ordered by display_name', INDEX idx_user_name_ci (name_ci) COMMENT 'User list filtered using quick search', INDEX idx_user_name (name) COMMENT 'User list filtered/ordered by name; User detail filter' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE usergroup ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', environment_id binary(20) NOT NULL COMMENT 'environment.id', name_checksum binary(20) NOT NULL COMMENT 'sha1(name)', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', name varchar(255) NOT NULL, name_ci varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, display_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, zone_id binary(20) DEFAULT NULL COMMENT 'zone.id', PRIMARY KEY (id), INDEX idx_usergroup_display_name (display_name) COMMENT 'Usergroup list filtered/ordered by display_name', INDEX idx_usergroup_name_ci (name_ci) COMMENT 'Usergroup list filtered using quick search', INDEX idx_usergroup_name (name) COMMENT 'Usergroup list filtered/ordered by name; Usergroup detail filter' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE usergroup_member ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + usergroup_id + user_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', user_id binary(20) NOT NULL COMMENT 'user.id', usergroup_id binary(20) NOT NULL COMMENT 'usergroup.id', PRIMARY KEY (id), INDEX idx_usergroup_member_user_id (user_id, usergroup_id), INDEX idx_usergroup_member_usergroup_id (usergroup_id, user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE user_customvar ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + user_id + customvar_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', user_id binary(20) NOT NULL COMMENT 'user.id', customvar_id binary(20) NOT NULL COMMENT 'customvar.id', PRIMARY KEY (id), INDEX idx_user_customvar_user_id (user_id, customvar_id), INDEX idx_user_customvar_customvar_id (customvar_id, user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE usergroup_customvar ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + usergroup_id + customvar_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', usergroup_id binary(20) NOT NULL COMMENT 'usergroup.id', customvar_id binary(20) NOT NULL COMMENT 'customvar.id', PRIMARY KEY (id), INDEX idx_usergroup_customvar_usergroup_id (usergroup_id, customvar_id), INDEX idx_usergroup_customvar_customvar_id (customvar_id, usergroup_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE zone ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', environment_id binary(20) NOT NULL COMMENT 'environment.id', name_checksum binary(20) NOT NULL COMMENT 'sha1(name)', properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)', name varchar(255) NOT NULL, name_ci varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, is_global enum('n', 'y') NOT NULL, parent_id binary(20) DEFAULT NULL COMMENT 'zone.id', depth tinyint unsigned NOT NULL, PRIMARY KEY (id), UNIQUE INDEX idx_environment_id_id (environment_id, id), INDEX idx_zone_parent_id (parent_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE notification_history ( id binary(20) NOT NULL COMMENT 'sha1(environment.name + notification.name + type + send_time)', environment_id binary(20) NOT NULL COMMENT 'environment.id', endpoint_id binary(20) DEFAULT NULL COMMENT 'endpoint.id', object_type enum('host', 'service') NOT NULL, host_id binary(20) NOT NULL COMMENT 'host.id', service_id binary(20) DEFAULT NULL COMMENT 'service.id', notification_id binary(20) NOT NULL COMMENT 'notification.id', type enum('downtime_start', 'downtime_end', 'downtime_removed', 'custom', 'acknowledgement', 'problem', 'recovery', 'flapping_start', 'flapping_end') NOT NULL, send_time bigint unsigned NOT NULL, state tinyint unsigned NOT NULL, previous_hard_state tinyint unsigned NOT NULL, author text NOT NULL, `text` longtext NOT NULL, users_notified smallint unsigned NOT NULL, PRIMARY KEY (id), INDEX idx_notification_history_send_time (send_time DESC) COMMENT 'Notification list filtered/ordered by send_time', INDEX idx_notification_history_env_send_time (environment_id, send_time) COMMENT 'Filter for history retention' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE user_notification_history ( id binary(20) NOT NULL COMMENT 'sha1(notification_history_id + user_id)', environment_id binary(20) NOT NULL COMMENT 'environment.id', notification_history_id binary(20) NOT NULL COMMENT 'UUID notification_history.id', user_id binary(20) NOT NULL COMMENT 'user.id', PRIMARY KEY (id), CONSTRAINT fk_user_notification_history_notification_history FOREIGN KEY (notification_history_id) REFERENCES notification_history (id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE state_history ( id binary(20) NOT NULL COMMENT 'sha1(environment.name + host|service.name + event_time)', environment_id binary(20) NOT NULL COMMENT 'environment.id', endpoint_id binary(20) DEFAULT NULL COMMENT 'endpoint.id', object_type enum('host', 'service') NOT NULL, host_id binary(20) NOT NULL COMMENT 'host.id', service_id binary(20) DEFAULT NULL COMMENT 'service.id', event_time bigint unsigned NOT NULL, state_type enum('hard', 'soft') NOT NULL, soft_state tinyint unsigned NOT NULL, hard_state tinyint unsigned NOT NULL, previous_soft_state tinyint unsigned NOT NULL, previous_hard_state tinyint unsigned NOT NULL, check_attempt int unsigned NOT NULL, -- may be a tinyint unsigned, see https://icinga.com/docs/icinga-db/latest/doc/04-Upgrading/#upgrading-to-icinga-db-v112 output longtext DEFAULT NULL, long_output longtext DEFAULT NULL, max_check_attempts int unsigned NOT NULL, check_source text DEFAULT NULL, scheduling_source text DEFAULT NULL, PRIMARY KEY (id), INDEX idx_state_history_env_event_time (environment_id, event_time) COMMENT 'Filter for history retention' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE downtime_history ( downtime_id binary(20) NOT NULL COMMENT 'downtime.id', environment_id binary(20) NOT NULL COMMENT 'environment.id', endpoint_id binary(20) DEFAULT NULL COMMENT 'endpoint.id', triggered_by_id binary(20) DEFAULT NULL COMMENT 'The ID of the downtime that triggered this downtime. This is set when creating downtimes on a host or service higher up in the dependency chain using the "child_option" "DowntimeTriggeredChildren" and can also be set manually via the API.', parent_id binary(20) DEFAULT NULL COMMENT 'For service downtimes, the ID of the host downtime that created this downtime by using the "all_services" flag of the schedule-downtime API.', object_type enum('host', 'service') NOT NULL, host_id binary(20) NOT NULL COMMENT 'host.id', service_id binary(20) DEFAULT NULL COMMENT 'service.id', entry_time bigint unsigned NOT NULL, author varchar(255) NOT NULL COLLATE utf8mb4_unicode_ci, cancelled_by varchar(255) DEFAULT NULL COLLATE utf8mb4_unicode_ci, comment text NOT NULL, is_flexible enum('n', 'y') NOT NULL, flexible_duration bigint unsigned NOT NULL, scheduled_start_time bigint unsigned NOT NULL, scheduled_end_time bigint unsigned NOT NULL, start_time bigint unsigned NOT NULL COMMENT 'Time when the host went into a problem state during the downtimes timeframe', end_time bigint unsigned NOT NULL COMMENT 'Problem state assumed: scheduled_end_time if fixed, start_time + duration otherwise', scheduled_by varchar(767) DEFAULT NULL COMMENT 'Name of the ScheduledDowntime which created this Downtime. 255+1+255+1+255, i.e. "host.name!service.name!scheduled-downtime-name"', has_been_cancelled enum('n', 'y') NOT NULL, trigger_time bigint unsigned NOT NULL, cancel_time bigint unsigned DEFAULT NULL, PRIMARY KEY (downtime_id), INDEX idx_downtime_history_env_end_time (environment_id, end_time) COMMENT 'Filter for history retention' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE comment_history ( comment_id binary(20) NOT NULL COMMENT 'comment.id', environment_id binary(20) NOT NULL COMMENT 'environment.id', endpoint_id binary(20) DEFAULT NULL COMMENT 'endpoint.id', object_type enum('host', 'service') NOT NULL, host_id binary(20) NOT NULL COMMENT 'host.id', service_id binary(20) DEFAULT NULL COMMENT 'service.id', entry_time bigint unsigned NOT NULL, author varchar(255) NOT NULL COLLATE utf8mb4_unicode_ci, removed_by varchar(255) DEFAULT NULL COLLATE utf8mb4_unicode_ci, comment text NOT NULL, entry_type enum('comment','ack') NOT NULL, is_persistent enum('n', 'y') NOT NULL, is_sticky enum('n', 'y') NOT NULL, expire_time bigint unsigned DEFAULT NULL, remove_time bigint unsigned DEFAULT NULL, has_been_removed enum('n', 'y') NOT NULL, PRIMARY KEY (comment_id), INDEX idx_comment_history_env_remove_time (environment_id, remove_time) COMMENT 'Filter for history retention' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE flapping_history ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + "Host"|"Service" + host|service.name + start_time)', environment_id binary(20) NOT NULL COMMENT 'environment.id', endpoint_id binary(20) DEFAULT NULL COMMENT 'endpoint.id', object_type enum('host', 'service') NOT NULL, host_id binary(20) NOT NULL COMMENT 'host.id', service_id binary(20) DEFAULT NULL COMMENT 'service.id', start_time bigint unsigned NOT NULL, end_time bigint unsigned DEFAULT NULL, percent_state_change_start float DEFAULT NULL, percent_state_change_end float DEFAULT NULL, flapping_threshold_low float NOT NULL, flapping_threshold_high float NOT NULL, PRIMARY KEY (id), INDEX idx_flapping_history_env_end_time (environment_id, end_time) COMMENT 'Filter for history retention' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE acknowledgement_history ( id binary(20) NOT NULL COMMENT 'sha1(environment.id + "Host"|"Service" + host|service.name + set_time)', environment_id binary(20) NOT NULL COMMENT 'environment.id', endpoint_id binary(20) DEFAULT NULL COMMENT 'endpoint.id', object_type enum('host', 'service') NOT NULL, host_id binary(20) NOT NULL COMMENT 'host.id', service_id binary(20) DEFAULT NULL COMMENT 'service.id', set_time bigint unsigned NOT NULL, clear_time bigint unsigned DEFAULT NULL, author varchar(255) DEFAULT NULL COLLATE utf8mb4_unicode_ci COMMENT 'NULL if ack_set event happened before Icinga DB history recording', cleared_by varchar(255) DEFAULT NULL COLLATE utf8mb4_unicode_ci, comment text DEFAULT NULL COMMENT 'NULL if ack_set event happened before Icinga DB history recording', expire_time bigint unsigned DEFAULT NULL, is_sticky enum('n', 'y') DEFAULT NULL COMMENT 'NULL if ack_set event happened before Icinga DB history recording', is_persistent enum('n', 'y') DEFAULT NULL COMMENT 'NULL if ack_set event happened before Icinga DB history recording', PRIMARY KEY (id), INDEX idx_acknowledgement_history_env_clear_time (environment_id, clear_time) COMMENT 'Filter for history retention' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE history ( id binary(20) NOT NULL COMMENT 'sha1(environment.name + event_type + x...) given that sha1(environment.name + x...) = *_history_id', environment_id binary(20) NOT NULL COMMENT 'environment.id', endpoint_id binary(20) DEFAULT NULL COMMENT 'endpoint.id', object_type enum('host', 'service') NOT NULL, host_id binary(20) NOT NULL COMMENT 'host.id', service_id binary(20) DEFAULT NULL COMMENT 'service.id', notification_history_id binary(20) DEFAULT NULL COMMENT 'notification_history.id', state_history_id binary(20) DEFAULT NULL COMMENT 'state_history.id', downtime_history_id binary(20) DEFAULT NULL COMMENT 'downtime_history.downtime_id', comment_history_id binary(20) DEFAULT NULL COMMENT 'comment_history.comment_id', flapping_history_id binary(20) DEFAULT NULL COMMENT 'flapping_history.id', acknowledgement_history_id binary(20) DEFAULT NULL COMMENT 'acknowledgement_history.id', -- The enum values are ordered in a way that event_type provides a meaningful sort order for history entries with -- the same event_time. state_change comes first as it can cause many of the other events like trigger downtimes, -- remove acknowledgements and send notifications. Similarly, notification comes last as any other event can result -- in a notification. End events sort before the corresponding start events as any ack/comment/downtime/flapping -- period should last for more than a millisecond, therefore, the old period ends first and then the new one starts. -- The remaining types are sorted by impact and cause: comments are informative, flapping is automatic and changes -- mechanics, downtimes are semi-automatic, require user action (or configuration) and change mechanics, acks are pure -- user actions and change mechanics. event_type enum('state_change', 'ack_clear', 'downtime_end', 'flapping_end', 'comment_remove', 'comment_add', 'flapping_start', 'downtime_start', 'ack_set', 'notification') NOT NULL, event_time bigint unsigned NOT NULL, PRIMARY KEY (id), CONSTRAINT fk_history_acknowledgement_history FOREIGN KEY (acknowledgement_history_id) REFERENCES acknowledgement_history (id) ON DELETE CASCADE, CONSTRAINT fk_history_comment_history FOREIGN KEY (comment_history_id) REFERENCES comment_history (comment_id) ON DELETE CASCADE, CONSTRAINT fk_history_downtime_history FOREIGN KEY (downtime_history_id) REFERENCES downtime_history (downtime_id) ON DELETE CASCADE, CONSTRAINT fk_history_flapping_history FOREIGN KEY (flapping_history_id) REFERENCES flapping_history (id) ON DELETE CASCADE, CONSTRAINT fk_history_notification_history FOREIGN KEY (notification_history_id) REFERENCES notification_history (id) ON DELETE CASCADE, CONSTRAINT fk_history_state_history FOREIGN KEY (state_history_id) REFERENCES state_history (id) ON DELETE CASCADE, INDEX idx_history_event_time_event_type (event_time, event_type) COMMENT 'History filtered/ordered by event_time/event_type', INDEX idx_history_acknowledgement (acknowledgement_history_id), INDEX idx_history_comment (comment_history_id), INDEX idx_history_downtime (downtime_history_id), INDEX idx_history_flapping (flapping_history_id), INDEX idx_history_notification (notification_history_id), INDEX idx_history_state (state_history_id), INDEX idx_history_host_service_id (host_id, service_id, event_time) COMMENT 'Host/service history detail filter' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE sla_history_state ( id binary(20) NOT NULL COMMENT 'state_history.id (may reference already deleted rows)', environment_id binary(20) NOT NULL COMMENT 'environment.id', endpoint_id binary(20) DEFAULT NULL COMMENT 'endpoint.id', object_type enum('host', 'service') NOT NULL, host_id binary(20) NOT NULL COMMENT 'host.id', service_id binary(20) DEFAULT NULL COMMENT 'service.id', event_time bigint unsigned NOT NULL COMMENT 'unix timestamp the event occurred', hard_state TINYINT UNSIGNED NOT NULL COMMENT 'hard state after this event', previous_hard_state TINYINT UNSIGNED NOT NULL COMMENT 'hard state before this event', PRIMARY KEY (id), INDEX idx_sla_history_state_event (host_id, service_id, event_time) COMMENT 'Filter for calculating the sla reports', INDEX idx_sla_history_state_env_event_time (environment_id, event_time) COMMENT 'Filter for sla history retention' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE sla_history_downtime ( environment_id binary(20) NOT NULL COMMENT 'environment.id', endpoint_id binary(20) DEFAULT NULL COMMENT 'endpoint.id', object_type enum('host', 'service') NOT NULL, host_id binary(20) NOT NULL COMMENT 'host.id', service_id binary(20) DEFAULT NULL COMMENT 'service.id', downtime_id binary(20) NOT NULL COMMENT 'downtime.id (may reference already deleted rows)', downtime_start BIGINT UNSIGNED NOT NULL COMMENT 'start time of the downtime', downtime_end BIGINT UNSIGNED NOT NULL COMMENT 'end time of the downtime', PRIMARY KEY (downtime_id), INDEX idx_sla_history_downtime_event (host_id, service_id, downtime_start, downtime_end) COMMENT 'Filter for calculating the sla reports', INDEX idx_sla_history_downtime_env_downtime_end (environment_id, downtime_end) COMMENT 'Filter for sla history retention' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; CREATE TABLE icingadb_schema ( id int unsigned NOT NULL AUTO_INCREMENT, version smallint unsigned NOT NULL, timestamp bigint unsigned NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; INSERT INTO icingadb_schema (version, timestamp) VALUES (6, UNIX_TIMESTAMP() * 1000); icingadb-1.3.0/schema/mysql/upgrades/000077500000000000000000000000001477347223700175125ustar00rootroot00000000000000icingadb-1.3.0/schema/mysql/upgrades/1.0.0-rc2.sql000066400000000000000000000674671477347223700213770ustar00rootroot00000000000000ALTER TABLE host_state DROP PRIMARY KEY; ALTER TABLE host_state ADD COLUMN id binary(20) NOT NULL COMMENT 'host.id' FIRST; UPDATE host_state SET id = host_id; ALTER TABLE host_state ADD PRIMARY KEY (id); ALTER TABLE host_state ADD COLUMN properties_checksum binary(20) AFTER environment_id; UPDATE host_state SET properties_checksum = 0; ALTER TABLE host_state MODIFY COLUMN properties_checksum binary(20) COMMENT 'sha1(all properties)' NOT NULL; ALTER TABLE host_state ADD UNIQUE INDEX idx_host_state_host_id (host_id); ALTER TABLE service_state DROP PRIMARY KEY; ALTER TABLE service_state ADD COLUMN id binary(20) NOT NULL COMMENT 'service.id' FIRST; UPDATE service_state SET id = service_id; ALTER TABLE service_state ADD PRIMARY KEY (id); ALTER TABLE service_state ADD COLUMN properties_checksum binary(20) AFTER environment_id; UPDATE service_state SET properties_checksum = 0; ALTER TABLE service_state MODIFY COLUMN properties_checksum binary(20) COMMENT 'sha1(all properties)' NOT NULL; ALTER TABLE service_state ADD UNIQUE INDEX idx_service_state_service_id (service_id); ALTER TABLE downtime ADD COLUMN parent_id binary(20) COMMENT 'For service downtimes, the ID of the host downtime that created this downtime by using the "all_services" flag of the schedule-downtime API.' AFTER triggered_by_id, MODIFY COLUMN triggered_by_id binary(20) COMMENT 'The ID of the downtime that triggered this downtime. This is set when creating downtimes on a host or service higher up in the dependency chain using the "child_option" "DowntimeTriggeredChildren" and can also be set manually via the API.'; ALTER TABLE downtime_history ADD COLUMN parent_id binary(20) COMMENT 'For service downtimes, the ID of the host downtime that created this downtime by using the "all_services" flag of the schedule-downtime API.' AFTER triggered_by_id, MODIFY COLUMN triggered_by_id binary(20) COMMENT 'The ID of the downtime that triggered this downtime. This is set when creating downtimes on a host or service higher up in the dependency chain using the "child_option" "DowntimeTriggeredChildren" and can also be set manually via the API.'; ALTER TABLE checkcommand_argument MODIFY COLUMN argument_order smallint DEFAULT NULL; ALTER TABLE eventcommand_argument MODIFY COLUMN argument_order smallint DEFAULT NULL; ALTER TABLE notificationcommand_argument MODIFY COLUMN argument_order smallint DEFAULT NULL; ALTER TABLE acknowledgement_history MODIFY COLUMN id binary(20) NOT NULL COMMENT 'sha1(environment.name + "Host"|"Service" + host|service.name + set_time)'; ALTER TABLE flapping_history MODIFY COLUMN id binary(20) NOT NULL COMMENT 'sha1(environment.name + "Host"|"Service" + host|service.name + start_time)'; ALTER TABLE host ADD INDEX idx_host_name_ci (name_ci) COMMENT 'Host list filtered using quick search'; ALTER TABLE service ADD INDEX idx_service_name_ci (name_ci) COMMENT 'Service list filtered using quick search'; ALTER TABLE user ADD INDEX idx_user_name_ci (name_ci) COMMENT 'User list filtered using quick search'; ALTER TABLE user ADD INDEX idx_user_name (name) COMMENT 'User list filtered/ordered by name; User detail filter'; ALTER TABLE usergroup ADD INDEX `idx_usergroup_display_name` (`display_name`) COMMENT 'Usergroup list filtered/ordered by display_name'; ALTER TABLE usergroup ADD INDEX idx_usergroup_name_ci (name_ci) COMMENT 'Usergroup list filtered using quick search'; ALTER TABLE usergroup ADD INDEX idx_usergroup_name (name) COMMENT 'Usergroup list filtered/ordered by name; Usergroup detail filter'; ALTER TABLE hostgroup_customvar ADD INDEX idx_hostgroup_customvar_hostgroup_id (hostgroup_id, customvar_id), ADD INDEX idx_hostgroup_customvar_customvar_id (customvar_id, hostgroup_id); ALTER TABLE servicegroup_customvar ADD INDEX idx_servicegroup_customvar_servicegroup_id (servicegroup_id, customvar_id), ADD INDEX idx_servicegroup_customvar_customvar_id (customvar_id, servicegroup_id); ALTER TABLE checkcommand_customvar ADD INDEX idx_checkcommand_customvar_command_id (command_id, customvar_id), ADD INDEX idx_checkcommand_customvar_customvar_id (customvar_id, command_id); ALTER TABLE eventcommand_customvar ADD INDEX idx_eventcommand_customvar_command_id (command_id, customvar_id), ADD INDEX idx_eventcommand_customvar_customvar_id (customvar_id, command_id); ALTER TABLE notificationcommand_customvar ADD INDEX idx_notificationcommand_customvar_command_id (command_id, customvar_id), ADD INDEX idx_notificationcommand_customvar_customvar_id (customvar_id, command_id); ALTER TABLE notification_customvar ADD INDEX idx_notification_customvar_notification_id (notification_id, customvar_id), ADD INDEX idx_notification_customvar_customvar_id (customvar_id, notification_id); ALTER TABLE timeperiod_customvar ADD INDEX idx_timeperiod_customvar_timeperiod_id (timeperiod_id, customvar_id), ADD INDEX idx_timeperiod_customvar_customvar_id (customvar_id, timeperiod_id); ALTER TABLE user_customvar ADD INDEX idx_user_customvar_user_id (user_id, customvar_id), ADD INDEX idx_user_customvar_customvar_id (customvar_id, user_id); ALTER TABLE usergroup_customvar ADD INDEX idx_usergroup_customvar_usergroup_id (usergroup_id, customvar_id), ADD INDEX idx_usergroup_customvar_customvar_id (customvar_id, usergroup_id); ALTER TABLE host MODIFY active_checks_enabled enum('n','y') NOT NULL, MODIFY passive_checks_enabled enum('n','y') NOT NULL, MODIFY event_handler_enabled enum('n','y') NOT NULL, MODIFY notifications_enabled enum('n','y') NOT NULL, MODIFY flapping_enabled enum('n','y') NOT NULL, MODIFY perfdata_enabled enum('n','y') NOT NULL, MODIFY is_volatile enum('n','y') NOT NULL; ALTER TABLE host_state ADD COLUMN normalized_performance_data longtext DEFAULT NULL AFTER performance_data, ADD COLUMN last_comment_id binary(20) DEFAULT NULL COMMENT 'comment.id' AFTER acknowledgement_comment_id, ADD COLUMN scheduling_source text DEFAULT NULL AFTER check_source, MODIFY is_problem enum('n','y') NOT NULL, MODIFY is_handled enum('n','y') NOT NULL, MODIFY is_reachable enum('n','y') NOT NULL, MODIFY is_flapping enum('n','y') NOT NULL, MODIFY is_overdue enum('n','y') NOT NULL, MODIFY is_acknowledged enum('n','y','sticky') NOT NULL, MODIFY in_downtime enum('n','y') NOT NULL; ALTER TABLE service MODIFY active_checks_enabled enum('n','y') NOT NULL, MODIFY passive_checks_enabled enum('n','y') NOT NULL, MODIFY event_handler_enabled enum('n','y') NOT NULL, MODIFY notifications_enabled enum('n','y') NOT NULL, MODIFY flapping_enabled enum('n','y') NOT NULL, MODIFY perfdata_enabled enum('n','y') NOT NULL, MODIFY is_volatile enum('n','y') NOT NULL; ALTER TABLE service_state ADD COLUMN normalized_performance_data longtext DEFAULT NULL AFTER performance_data, ADD COLUMN last_comment_id binary(20) DEFAULT NULL COMMENT 'comment.id' AFTER acknowledgement_comment_id, ADD COLUMN scheduling_source text DEFAULT NULL AFTER check_source, MODIFY is_problem enum('n','y') NOT NULL, MODIFY is_handled enum('n','y') NOT NULL, MODIFY is_reachable enum('n','y') NOT NULL, MODIFY is_flapping enum('n','y') NOT NULL, MODIFY is_overdue enum('n','y') NOT NULL, MODIFY is_acknowledged enum('n','y','sticky') NOT NULL, MODIFY in_downtime enum('n','y') NOT NULL; ALTER TABLE icingadb_instance MODIFY responsible enum('n','y') NOT NULL, MODIFY icinga2_notifications_enabled enum('n','y') NOT NULL, MODIFY icinga2_active_service_checks_enabled enum('n','y') NOT NULL, MODIFY icinga2_active_host_checks_enabled enum('n','y') NOT NULL, MODIFY icinga2_event_handlers_enabled enum('n','y') NOT NULL, MODIFY icinga2_flap_detection_enabled enum('n','y') NOT NULL, MODIFY icinga2_performance_data_enabled enum('n','y') NOT NULL; ALTER TABLE checkcommand_argument MODIFY repeat_key enum('n','y') NOT NULL, MODIFY required enum('n','y') NOT NULL, MODIFY skip_key enum('n','y') NOT NULL; ALTER TABLE eventcommand_argument MODIFY repeat_key enum('n','y') NOT NULL, MODIFY required enum('n','y') NOT NULL, MODIFY skip_key enum('n','y') NOT NULL; ALTER TABLE notificationcommand_argument MODIFY repeat_key enum('n','y') NOT NULL, MODIFY required enum('n','y') NOT NULL, MODIFY skip_key enum('n','y') NOT NULL; ALTER TABLE comment MODIFY name varchar(548) NOT NULL COMMENT '255+1+255+1+36, i.e. "host.name!service.name!UUID"', MODIFY is_persistent enum('n','y') NOT NULL, MODIFY is_sticky enum('n','y') NOT NULL; ALTER TABLE downtime ADD COLUMN scheduled_by varchar(767) DEFAULT NULL COMMENT 'Name of the ScheduledDowntime which created this Downtime. 255+1+255+1+255, i.e. "host.name!service.name!scheduled-downtime-name"' AFTER end_time, MODIFY name varchar(548) NOT NULL COMMENT '255+1+255+1+36, i.e. "host.name!service.name!UUID"', MODIFY is_flexible enum('n','y') NOT NULL, MODIFY is_in_effect enum('n','y') NOT NULL; ALTER TABLE timeperiod MODIFY prefer_includes enum('n','y') NOT NULL; ALTER TABLE user MODIFY notifications_enabled enum('n','y') NOT NULL; ALTER TABLE zone MODIFY is_global enum('n','y') NOT NULL; ALTER TABLE downtime_history ADD COLUMN scheduled_by varchar(767) DEFAULT NULL COMMENT 'Name of the ScheduledDowntime which created this Downtime. 255+1+255+1+255, i.e. "host.name!service.name!scheduled-downtime-name"' AFTER end_time, MODIFY is_flexible enum('n','y') NOT NULL, MODIFY has_been_cancelled enum('n','y') NOT NULL; ALTER TABLE comment_history MODIFY is_persistent enum('n','y') NOT NULL, MODIFY is_sticky enum('n','y') NOT NULL, MODIFY has_been_removed enum('n','y') NOT NULL; ALTER TABLE acknowledgement_history MODIFY author varchar(255) DEFAULT NULL COLLATE utf8mb4_unicode_ci COMMENT 'NULL if ack_set event happened before Icinga DB history recording', MODIFY comment text DEFAULT NULL COMMENT 'NULL if ack_set event happened before Icinga DB history recording', MODIFY is_sticky enum('n','y') DEFAULT NULL COMMENT 'NULL if ack_set event happened before Icinga DB history recording', MODIFY is_persistent enum('n','y') DEFAULT NULL COMMENT 'NULL if ack_set event happened before Icinga DB history recording'; INSERT INTO icingadb_schema (version, timestamp) VALUES (2, UNIX_TIMESTAMP() * 1000); ALTER TABLE host_state MODIFY output longtext DEFAULT NULL, MODIFY long_output longtext DEFAULT NULL, MODIFY performance_data longtext DEFAULT NULL; ALTER TABLE state_history ADD COLUMN scheduling_source text DEFAULT NULL AFTER check_source, MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.name + host|service.name + event_time)', MODIFY output longtext DEFAULT NULL, MODIFY long_output longtext DEFAULT NULL; ALTER TABLE service_state MODIFY output longtext DEFAULT NULL, MODIFY long_output longtext DEFAULT NULL, MODIFY performance_data longtext DEFAULT NULL; ALTER TABLE notification_history MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.name + notification.name + type + send_time)'; ALTER TABLE user_notification_history MODIFY id binary(20) NOT NULL COMMENT 'sha1(notification_history_id + user_id)', MODIFY notification_history_id binary(20) NOT NULL COMMENT 'UUID notification_history.id'; ALTER TABLE history MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.name + event_type + x...) given that sha1(environment.name + x...) = *_history_id', MODIFY notification_history_id binary(20) DEFAULT NULL COMMENT 'notification_history.id', MODIFY state_history_id binary(20) DEFAULT NULL COMMENT 'state_history.id', ADD CONSTRAINT fk_history_acknowledgement_history FOREIGN KEY (acknowledgement_history_id) REFERENCES acknowledgement_history (id) ON DELETE CASCADE, ADD CONSTRAINT fk_history_comment_history FOREIGN KEY (comment_history_id) REFERENCES comment_history (comment_id) ON DELETE CASCADE, ADD CONSTRAINT fk_history_downtime_history FOREIGN KEY (downtime_history_id) REFERENCES downtime_history (downtime_id) ON DELETE CASCADE, ADD CONSTRAINT fk_history_flapping_history FOREIGN KEY (flapping_history_id) REFERENCES flapping_history (id) ON DELETE CASCADE, ADD CONSTRAINT fk_history_notification_history FOREIGN KEY (notification_history_id) REFERENCES notification_history (id) ON DELETE CASCADE, ADD CONSTRAINT fk_history_state_history FOREIGN KEY (state_history_id) REFERENCES state_history (id) ON DELETE CASCADE; ALTER TABLE user_notification_history ADD CONSTRAINT fk_user_notification_history_notification_history FOREIGN KEY (notification_history_id) REFERENCES notification_history (id) ON DELETE CASCADE; ALTER TABLE host MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE hostgroup MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE hostgroup_member MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + host_id + hostgroup_id)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE host_customvar MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + host_id + customvar_id)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE hostgroup_customvar MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + hostgroup_id + customvar_id)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE host_state MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE service MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE servicegroup MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE servicegroup_member MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + servicegroup_id + service_id)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE service_customvar MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + service_id + customvar_id)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE servicegroup_customvar MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + servicegroup_id + customvar_id)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE service_state MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE endpoint MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE environment MODIFY id binary(20) NOT NULL COMMENT 'sha1(Icinga CA public key)'; ALTER TABLE checkcommand MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + type + name)'; ALTER TABLE checkcommand_argument MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + command_id + argument_key)'; ALTER TABLE checkcommand_envvar MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + command_id + envvar_key)'; ALTER TABLE checkcommand_customvar MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + command_id + customvar_id)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE eventcommand MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + type + name)'; ALTER TABLE eventcommand_argument MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + command_id + argument_key)'; ALTER TABLE eventcommand_envvar MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + command_id + envvar_key)'; ALTER TABLE eventcommand_customvar MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + command_id + customvar_id)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE notificationcommand MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + type + name)'; ALTER TABLE notificationcommand_argument MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + command_id + argument_key)'; ALTER TABLE notificationcommand_envvar MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + command_id + envvar_key)'; ALTER TABLE notificationcommand_customvar MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + command_id + customvar_id)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE comment MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)'; ALTER TABLE downtime MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)'; ALTER TABLE notification MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE notification_user MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + notification_id + user_id)'; ALTER TABLE notification_usergroup MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + notification_id + usergroup_id)'; ALTER TABLE notification_recipient MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + notification_id + (user_id | usergroup_id))'; ALTER TABLE notification_customvar MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + notification_id + customvar_id)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE icon_image MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE action_url MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE notes_url MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE timeperiod MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)'; ALTER TABLE timeperiod_range MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + range_id + timeperiod_id)'; ALTER TABLE timeperiod_override_include MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + include_id + timeperiod_id)'; ALTER TABLE timeperiod_override_exclude MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + exclude_id + timeperiod_id)'; ALTER TABLE timeperiod_customvar MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + timeperiod_id + customvar_id)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE customvar MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + name + value)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE customvar_flat MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + flatname + flatvalue)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE user MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE usergroup MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE usergroup_member MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + usergroup_id + user_id)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE user_customvar MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + user_id + customvar_id)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE usergroup_customvar MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + usergroup_id + customvar_id)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE zone MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + name)', MODIFY environment_id binary(20) NOT NULL COMMENT 'environment.id'; ALTER TABLE flapping_history MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + "Host"|"Service" + host|service.name + start_time)'; ALTER TABLE acknowledgement_history MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + "Host"|"Service" + host|service.name + set_time)'; /* * Schema changes after https://github.com/Icinga/icingadb/pull/403: */ ALTER TABLE checkcommand_customvar DROP INDEX idx_checkcommand_customvar_command_id, DROP INDEX idx_checkcommand_customvar_customvar_id; ALTER TABLE eventcommand_customvar DROP INDEX idx_eventcommand_customvar_command_id, DROP INDEX idx_eventcommand_customvar_customvar_id; ALTER TABLE notificationcommand_customvar DROP INDEX idx_notificationcommand_customvar_command_id, DROP INDEX idx_notificationcommand_customvar_customvar_id; ALTER TABLE notification RENAME COLUMN command_id TO notificationcommand_id; ALTER TABLE notification MODIFY notificationcommand_id binary(20) NOT NULL COMMENT 'notificationcommand.id'; ALTER TABLE checkcommand_argument RENAME COLUMN command_id TO checkcommand_id; ALTER TABLE checkcommand_argument MODIFY checkcommand_id binary(20) NOT NULL COMMENT 'checkcommand.id', MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + checkcommand_id + argument_key)'; ALTER TABLE checkcommand_envvar RENAME COLUMN command_id TO checkcommand_id; ALTER TABLE checkcommand_envvar MODIFY checkcommand_id binary(20) NOT NULL COMMENT 'checkcommand.id', MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + checkcommand_id + envvar_key)'; ALTER TABLE checkcommand_customvar RENAME COLUMN command_id TO checkcommand_id; ALTER TABLE checkcommand_customvar MODIFY checkcommand_id binary(20) NOT NULL COMMENT 'checkcommand.id', MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + checkcommand_id + customvar_id)'; ALTER TABLE eventcommand_argument RENAME COLUMN command_id TO eventcommand_id; ALTER TABLE eventcommand_argument MODIFY eventcommand_id binary(20) NOT NULL COMMENT 'eventcommand.id', MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + eventcommand_id + argument_key)'; ALTER TABLE eventcommand_envvar RENAME COLUMN command_id TO eventcommand_id; ALTER TABLE eventcommand_envvar MODIFY eventcommand_id binary(20) NOT NULL COMMENT 'eventcommand.id', MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + eventcommand_id + envvar_key)'; ALTER TABLE eventcommand_customvar RENAME COLUMN command_id TO eventcommand_id; ALTER TABLE eventcommand_customvar MODIFY eventcommand_id binary(20) NOT NULL COMMENT 'eventcommand.id', MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + eventcommand_id + customvar_id)'; ALTER TABLE notificationcommand_argument RENAME COLUMN command_id TO notificationcommand_id; ALTER TABLE notificationcommand_argument MODIFY notificationcommand_id binary(20) NOT NULL COMMENT 'notificationcommand.id', MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + notificationcommand_id + argument_key)'; ALTER TABLE notificationcommand_envvar RENAME COLUMN command_id TO notificationcommand_id; ALTER TABLE notificationcommand_envvar MODIFY notificationcommand_id binary(20) NOT NULL COMMENT 'notificationcommand.id', MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + notificationcommand_id + envvar_key)'; ALTER TABLE notificationcommand_customvar RENAME COLUMN command_id TO notificationcommand_id; ALTER TABLE notificationcommand_customvar MODIFY notificationcommand_id binary(20) NOT NULL COMMENT 'notificationcommand.id', MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + notificationcommand_id + customvar_id)'; ALTER TABLE checkcommand_customvar ADD INDEX idx_checkcommand_customvar_checkcommand_id (checkcommand_id, customvar_id), ADD INDEX idx_checkcommand_customvar_customvar_id (customvar_id, checkcommand_id); ALTER TABLE eventcommand_customvar ADD INDEX idx_eventcommand_customvar_eventcommand_id (eventcommand_id, customvar_id), ADD INDEX idx_eventcommand_customvar_customvar_id (customvar_id, eventcommand_id); ALTER TABLE notificationcommand_customvar ADD INDEX idx_notificationcommand_customvar_notificationcommand_id (notificationcommand_id, customvar_id), ADD INDEX idx_notificationcommand_customvar_customvar_id (customvar_id, notificationcommand_id); ALTER TABLE downtime ADD COLUMN scheduled_duration bigint unsigned NOT NULL AFTER scheduled_end_time, ADD COLUMN duration bigint unsigned NOT NULL COMMENT 'Duration of the downtime: When the downtime is flexible, this is the same as flexible_duration otherwise scheduled_duration' AFTER end_time, MODIFY COLUMN flexible_duration bigint unsigned NOT NULL AFTER is_flexible; UPDATE downtime SET scheduled_duration = scheduled_end_time - scheduled_start_time, duration = (CASE WHEN is_flexible = 'y' THEN flexible_duration ELSE scheduled_end_time - scheduled_start_time END) WHERE scheduled_duration = 0; ALTER TABLE service_state ADD COLUMN host_id binary(20) NOT NULL COMMENT 'host.id' AFTER id; UPDATE service_state INNER JOIN service ON service.id = service_state.service_id SET service_state.host_id = service.host_id WHERE service_state.host_id = REPEAT('\0', 20); ALTER TABLE comment ADD INDEX idx_comment_author (author) COMMENT 'Comment list filtered/ordered by author', ADD INDEX idx_comment_expire_time (expire_time) COMMENT 'Comment list filtered/ordered by expire_time'; ALTER TABLE downtime ADD INDEX idx_downtime_entry_time (entry_time) COMMENT 'Downtime list filtered/ordered by entry_time', ADD INDEX idx_downtime_start_time (start_time) COMMENT 'Downtime list filtered/ordered by start_time', ADD INDEX idx_downtime_end_time (end_time) COMMENT 'Downtime list filtered/ordered by end_time', ADD INDEX idx_downtime_scheduled_start_time (scheduled_start_time) COMMENT 'Downtime list filtered/ordered by scheduled_start_time', ADD INDEX idx_downtime_scheduled_end_time (scheduled_end_time) COMMENT 'Downtime list filtered/ordered by scheduled_end_time', ADD INDEX idx_downtime_author (author) COMMENT 'Downtime list filtered/ordered by author', ADD INDEX idx_downtime_duration (duration) COMMENT 'Downtime list filtered/ordered by duration'; ALTER TABLE service_state ADD INDEX idx_service_state_is_problem (is_problem, severity) COMMENT 'Service list filtered by is_problem ordered by severity', ADD INDEX idx_service_state_severity (severity) COMMENT 'Service list filtered/ordered by severity', ADD INDEX idx_service_state_soft_state (soft_state, last_state_change) COMMENT 'Service list filtered/ordered by soft_state; recently recovered filter', ADD INDEX idx_service_state_last_state_change (last_state_change) COMMENT 'Service list filtered/ordered by last_state_change'; ALTER TABLE host_state ADD INDEX idx_host_state_is_problem (is_problem, severity) COMMENT 'Host list filtered by is_problem ordered by severity', ADD INDEX idx_host_state_severity (severity) COMMENT 'Host list filtered/ordered by severity', ADD INDEX idx_host_state_soft_state (soft_state, last_state_change) COMMENT 'Host list filtered/ordered by soft_state; recently recovered filter', ADD INDEX idx_host_state_last_state_change (last_state_change) COMMENT 'Host list filtered/ordered by last_state_change'; ALTER TABLE hostgroup ADD INDEX idx_hostroup_name (name) COMMENT 'Host/service/host group list filtered by host group name'; ALTER TABLE servicegroup ADD INDEX idx_servicegroup_name (name) COMMENT 'Host/service/service group list filtered by service group name'; ALTER TABLE notification DROP INDEX idx_host_id, DROP INDEX idx_service_id, ADD INDEX idx_notification_host_id (host_id), ADD INDEX idx_notification_service_id (service_id); ALTER TABLE zone DROP INDEX idx_parent_id, ADD INDEX idx_zone_parent_id (parent_id); ALTER TABLE history ADD INDEX idx_history_host_service_id (host_id, service_id, event_time) COMMENT 'Host/service history detail filter'; ALTER TABLE notification_history DROP INDEX idx_notification_history_event_time, ADD INDEX idx_notification_history_send_time (send_time) COMMENT 'Notification list filtered/ordered by send_time'; icingadb-1.3.0/schema/mysql/upgrades/1.0.0.sql000066400000000000000000000274771477347223700207100ustar00rootroot00000000000000DROP FUNCTION IF EXISTS get_sla_ok_percent; DELIMITER // CREATE FUNCTION get_sla_ok_percent( in_host_id binary(20), in_service_id binary(20), in_start_time bigint unsigned, in_end_time bigint unsigned ) RETURNS decimal(7, 4) READS SQL DATA BEGIN DECLARE result decimal(7, 4); DECLARE row_event_time bigint unsigned; DECLARE row_event_type enum('state_change', 'downtime_start', 'downtime_end', 'end'); DECLARE row_event_prio int; DECLARE row_hard_state tinyint unsigned; DECLARE row_previous_hard_state tinyint unsigned; DECLARE last_event_time bigint unsigned; DECLARE last_hard_state tinyint unsigned; DECLARE active_downtimes int unsigned; DECLARE problem_time bigint unsigned; DECLARE total_time bigint unsigned; DECLARE done int; DECLARE cur CURSOR FOR ( -- all downtime_start events before the end of the SLA interval -- for downtimes that overlap the SLA interval in any way SELECT GREATEST(downtime_start, in_start_time) AS event_time, 'downtime_start' AS event_type, 1 AS event_prio, NULL AS hard_state, NULL AS previous_hard_state FROM sla_history_downtime d WHERE d.host_id = in_host_id AND ((in_service_id IS NULL AND d.service_id IS NULL) OR d.service_id = in_service_id) AND d.downtime_start < in_end_time AND d.downtime_end >= in_start_time ) UNION ALL ( -- all downtime_end events before the end of the SLA interval -- for downtimes that overlap the SLA interval in any way SELECT downtime_end AS event_time, 'downtime_end' AS event_type, 2 AS event_prio, NULL AS hard_state, NULL AS previous_hard_state FROM sla_history_downtime d WHERE d.host_id = in_host_id AND ((in_service_id IS NULL AND d.service_id IS NULL) OR d.service_id = in_service_id) AND d.downtime_start < in_end_time AND d.downtime_end >= in_start_time AND d.downtime_end < in_end_time ) UNION ALL ( -- all state events strictly in interval SELECT event_time, 'state_change' AS event_type, 0 AS event_prio, hard_state, previous_hard_state FROM sla_history_state s WHERE s.host_id = in_host_id AND ((in_service_id IS NULL AND s.service_id IS NULL) OR s.service_id = in_service_id) AND s.event_time > in_start_time AND s.event_time < in_end_time ) UNION ALL ( -- end event to keep loop simple, values are not used SELECT in_end_time AS event_time, 'end' AS event_type, 3 AS event_prio, NULL AS hard_state, NULL AS previous_hard_state ) ORDER BY event_time, event_prio; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; IF in_end_time <= in_start_time THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'end time must be greater than start time'; END IF; -- Use the latest event at or before the beginning of the SLA interval as the initial state. SELECT hard_state INTO last_hard_state FROM sla_history_state s WHERE s.host_id = in_host_id AND ((in_service_id IS NULL AND s.service_id IS NULL) OR s.service_id = in_service_id) AND s.event_time <= in_start_time ORDER BY s.event_time DESC LIMIT 1; -- If this does not exist, use the previous state from the first event after the beginning of the SLA interval. IF last_hard_state IS NULL THEN SELECT previous_hard_state INTO last_hard_state FROM sla_history_state s WHERE s.host_id = in_host_id AND ((in_service_id IS NULL AND s.service_id IS NULL) OR s.service_id = in_service_id) AND s.event_time > in_start_time ORDER BY s.event_time ASC LIMIT 1; END IF; -- If this also does not exist, use the current host/service state. IF last_hard_state IS NULL THEN IF in_service_id IS NULL THEN SELECT hard_state INTO last_hard_state FROM host_state s WHERE s.host_id = in_host_id; ELSE SELECT hard_state INTO last_hard_state FROM service_state s WHERE s.host_id = in_host_id AND s.service_id = in_service_id; END IF; END IF; IF last_hard_state IS NULL THEN SET last_hard_state = 0; END IF; SET problem_time = 0; SET total_time = in_end_time - in_start_time; SET last_event_time = in_start_time; SET active_downtimes = 0; SET done = 0; OPEN cur; read_loop: LOOP FETCH cur INTO row_event_time, row_event_type, row_event_prio, row_hard_state, row_previous_hard_state; IF done THEN LEAVE read_loop; END IF; IF row_previous_hard_state = 99 THEN SET total_time = total_time - (row_event_time - last_event_time); ELSEIF ((in_service_id IS NULL AND last_hard_state > 0) OR (in_service_id IS NOT NULL AND last_hard_state > 1)) AND last_hard_state != 99 AND active_downtimes = 0 THEN SET problem_time = problem_time + row_event_time - last_event_time; END IF; SET last_event_time = row_event_time; IF row_event_type = 'state_change' THEN SET last_hard_state = row_hard_state; ELSEIF row_event_type = 'downtime_start' THEN SET active_downtimes = active_downtimes + 1; ELSEIF row_event_type = 'downtime_end' THEN SET active_downtimes = active_downtimes - 1; END IF; END LOOP; CLOSE cur; SET result = 100 * (total_time - problem_time) / total_time; RETURN result; END// DELIMITER ; ALTER TABLE hostgroup DROP INDEX idx_hostroup_name, ADD INDEX idx_hostgroup_name (name) COMMENT 'Host/service/host group list filtered by host group name'; ALTER TABLE notification_history MODIFY `text` longtext NOT NULL; ALTER TABLE host_state ADD COLUMN previous_soft_state tinyint unsigned NOT NULL AFTER hard_state, CHANGE attempt check_attempt tinyint unsigned NOT NULL, CHANGE timeout check_timeout int unsigned DEFAULT NULL; ALTER TABLE service_state ADD COLUMN previous_soft_state tinyint unsigned NOT NULL AFTER hard_state, CHANGE attempt check_attempt tinyint unsigned NOT NULL, CHANGE timeout check_timeout int unsigned DEFAULT NULL; ALTER TABLE checkcommand_argument ADD COLUMN `separator` varchar(255) DEFAULT NULL AFTER set_if; ALTER TABLE eventcommand_argument ADD COLUMN `separator` varchar(255) DEFAULT NULL AFTER set_if; ALTER TABLE notificationcommand_argument ADD COLUMN `separator` varchar(255) DEFAULT NULL AFTER set_if; ALTER TABLE notification_history ADD INDEX idx_notification_history_env_send_time (environment_id, send_time) COMMENT 'Filter for history retention'; ALTER TABLE acknowledgement_history ADD INDEX idx_acknowledgement_history_env_clear_time (environment_id, clear_time) COMMENT 'Filter for history retention'; ALTER TABLE comment_history ADD INDEX idx_comment_history_env_remove_time (environment_id, remove_time) COMMENT 'Filter for history retention'; ALTER TABLE downtime_history ADD INDEX idx_downtime_history_env_end_time (environment_id, end_time) COMMENT 'Filter for history retention'; ALTER TABLE flapping_history ADD INDEX idx_flapping_history_env_end_time (environment_id, end_time) COMMENT 'Filter for history retention'; ALTER TABLE state_history ADD INDEX idx_state_history_env_event_time (environment_id, event_time) COMMENT 'Filter for history retention', CHANGE attempt check_attempt tinyint unsigned NOT NULL; ALTER TABLE icon_image DROP PRIMARY KEY, MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + icon_image)', ADD PRIMARY KEY (id); ALTER TABLE action_url DROP PRIMARY KEY, MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + action_url)', ADD PRIMARY KEY (id); ALTER TABLE notes_url DROP PRIMARY KEY, MODIFY id binary(20) NOT NULL COMMENT 'sha1(environment.id + notes_url)', ADD PRIMARY KEY (id); ALTER TABLE customvar MODIFY name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL; ALTER TABLE customvar_flat MODIFY flatname varchar(512) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Path converted with `.` and `[ ]`'; ALTER TABLE host CHANGE checkcommand checkcommand_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'checkcommand.name', CHANGE check_timeperiod check_timeperiod_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'timeperiod.name', CHANGE eventcommand eventcommand_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'eventcommand.name', CHANGE zone zone_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'zone.name', CHANGE command_endpoint command_endpoint_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'endpoint.name'; ALTER TABLE service CHANGE checkcommand checkcommand_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'checkcommand.name', CHANGE check_timeperiod check_timeperiod_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'timeperiod.name', CHANGE eventcommand eventcommand_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'eventcommand.name', CHANGE zone zone_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'zone.name', CHANGE command_endpoint command_endpoint_name varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'endpoint.name'; CREATE TABLE sla_history_state ( id binary(20) NOT NULL COMMENT 'state_history.id (may reference already deleted rows)', environment_id binary(20) NOT NULL COMMENT 'environment.id', endpoint_id binary(20) DEFAULT NULL COMMENT 'endpoint.id', object_type enum('host', 'service') NOT NULL, host_id binary(20) NOT NULL COMMENT 'host.id', service_id binary(20) DEFAULT NULL COMMENT 'service.id', event_time bigint unsigned NOT NULL COMMENT 'unix timestamp the event occurred', hard_state TINYINT UNSIGNED NOT NULL COMMENT 'hard state after this event', previous_hard_state TINYINT UNSIGNED NOT NULL COMMENT 'hard state before this event', PRIMARY KEY (id), INDEX idx_sla_history_state_event (host_id, service_id, event_time) COMMENT 'Filter for calculating the sla reports', INDEX idx_sla_history_state_env_event_time (environment_id, event_time) COMMENT 'Filter for sla history retention' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; INSERT INTO sla_history_state (id, environment_id, endpoint_id, object_type, host_id, service_id, event_time, hard_state, previous_hard_state) SELECT id, environment_id, endpoint_id, object_type, host_id, service_id, event_time, hard_state, previous_hard_state FROM state_history WHERE state_type = 'hard' ON DUPLICATE KEY UPDATE sla_history_state.id = sla_history_state.id; CREATE TABLE sla_history_downtime ( environment_id binary(20) NOT NULL COMMENT 'environment.id', endpoint_id binary(20) DEFAULT NULL COMMENT 'endpoint.id', object_type enum('host', 'service') NOT NULL, host_id binary(20) NOT NULL COMMENT 'host.id', service_id binary(20) DEFAULT NULL COMMENT 'service.id', downtime_id binary(20) NOT NULL COMMENT 'downtime.id (may reference already deleted rows)', downtime_start BIGINT UNSIGNED NOT NULL COMMENT 'start time of the downtime', downtime_end BIGINT UNSIGNED NOT NULL COMMENT 'end time of the downtime', PRIMARY KEY (downtime_id), INDEX idx_sla_history_downtime_event (host_id, service_id, downtime_start, downtime_end) COMMENT 'Filter for calculating the sla reports', INDEX idx_sla_history_downtime_env_downtime_end (environment_id, downtime_end) COMMENT 'Filter for sla history retention' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC; INSERT INTO sla_history_downtime (environment_id, endpoint_id, object_type, host_id, service_id, downtime_id, downtime_start, downtime_end) SELECT environment_id, endpoint_id, object_type, host_id, service_id, downtime_id, start_time AS downtime_start, IF(has_been_cancelled = 'y', cancel_time, end_time) AS downtime_end FROM downtime_history ON DUPLICATE KEY UPDATE sla_history_downtime.downtime_id = sla_history_downtime.downtime_id; INSERT INTO icingadb_schema (version, TIMESTAMP) VALUES (3, UNIX_TIMESTAMP() * 1000); icingadb-1.3.0/schema/mysql/upgrades/1.1.1.sql000066400000000000000000000047461477347223700207040ustar00rootroot00000000000000ALTER TABLE notification MODIFY COLUMN name varchar(767) NOT NULL COMMENT '255+1+255+1+255, i.e. "host.name!service.name!notification.name"', MODIFY COLUMN name_ci varchar(767) COLLATE utf8mb4_unicode_ci NOT NULL; ALTER TABLE customvar_flat MODIFY COLUMN flatvalue text DEFAULT NULL; ALTER TABLE customvar_flat ADD INDEX idx_customvar_flat_flatname_flatvalue (flatname, flatvalue(255)) COMMENT 'Lists filtered by custom variable'; ALTER TABLE hostgroup ADD INDEX idx_hostgroup_display_name (display_name) COMMENT 'Hostgroup list filtered/ordered by display_name', ADD INDEX idx_hostgroup_name_ci (name_ci) COMMENT 'Hostgroup list filtered using quick search', DROP INDEX idx_hostgroup_name, ADD INDEX idx_hostgroup_name (name) COMMENT 'Host/service/host group list filtered by host group name; Hostgroup detail filter'; ALTER TABLE servicegroup ADD INDEX idx_servicegroup_display_name (display_name) COMMENT 'Servicegroup list filtered/ordered by display_name', ADD INDEX idx_servicegroup_name_ci (name_ci) COMMENT 'Servicegroup list filtered using quick search', DROP INDEX idx_servicegroup_name, ADD INDEX idx_servicegroup_name (name) COMMENT 'Host/service/service group list filtered by service group name; Servicegroup detail filter'; -- The following sequence of statements changes the type of history.event_type like the following statement would: -- -- ALTER TABLE history MODIFY event_type enum('state_change', 'ack_clear', 'downtime_end', 'flapping_end', 'comment_remove', 'comment_add', 'flapping_start', 'downtime_start', 'ack_set', 'notification') NOT NULL; -- -- It's just much faster to add a second column, copy the column using an UPDATE statement and then replace the -- old column with the one just generated. Table locking ensures that no other connection inserts data in the meantime. LOCK TABLES history WRITE; ALTER TABLE history ADD COLUMN event_type_new enum('state_change', 'ack_clear', 'downtime_end', 'flapping_end', 'comment_remove', 'comment_add', 'flapping_start', 'downtime_start', 'ack_set', 'notification') NOT NULL AFTER event_type; UPDATE history SET event_type_new = event_type; ALTER TABLE history DROP COLUMN event_type, CHANGE COLUMN event_type_new event_type enum('state_change', 'ack_clear', 'downtime_end', 'flapping_end', 'comment_remove', 'comment_add', 'flapping_start', 'downtime_start', 'ack_set', 'notification') NOT NULL; UNLOCK TABLES; INSERT INTO icingadb_schema (version, timestamp) VALUES (4, UNIX_TIMESTAMP() * 1000); icingadb-1.3.0/schema/mysql/upgrades/1.2.0.sql000066400000000000000000000014241477347223700206720ustar00rootroot00000000000000UPDATE icingadb_schema SET timestamp = UNIX_TIMESTAMP(timestamp / 1000) * 1000 WHERE timestamp > 20000000000000000; ALTER TABLE history ADD INDEX idx_history_event_time_event_type (event_time, event_type) COMMENT 'History filtered/ordered by event_time/event_type'; ALTER TABLE history DROP INDEX idx_history_event_time; ALTER TABLE host_state MODIFY COLUMN check_attempt int unsigned NOT NULL; ALTER TABLE service_state MODIFY COLUMN check_attempt int unsigned NOT NULL; ALTER TABLE state_history MODIFY COLUMN check_attempt tinyint unsigned NOT NULL COMMENT 'optional schema upgrade not applied yet, see https://icinga.com/docs/icinga-db/latest/doc/04-Upgrading/#upgrading-to-icinga-db-v112'; INSERT INTO icingadb_schema (version, timestamp) VALUES (5, UNIX_TIMESTAMP() * 1000); icingadb-1.3.0/schema/mysql/upgrades/1.2.1.sql000066400000000000000000000027311477347223700206750ustar00rootroot00000000000000ALTER TABLE host MODIFY COLUMN icon_image_alt TEXT NOT NULL; ALTER TABLE service MODIFY COLUMN icon_image_alt TEXT NOT NULL; ALTER TABLE endpoint MODIFY COLUMN properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)'; ALTER TABLE comment MODIFY COLUMN properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)'; ALTER TABLE notification MODIFY COLUMN properties_checksum binary(20) NOT NULL COMMENT 'sha1(all properties)'; ALTER TABLE timeperiod_range MODIFY COLUMN range_value text NOT NULL; ALTER TABLE checkcommand_argument MODIFY COLUMN argument_key varchar(255) NOT NULL; ALTER TABLE checkcommand_argument MODIFY COLUMN argument_key_override varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL; ALTER TABLE eventcommand_argument MODIFY COLUMN argument_key varchar(255) NOT NULL; ALTER TABLE eventcommand_argument MODIFY COLUMN argument_key_override varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL; ALTER TABLE notificationcommand_argument MODIFY COLUMN argument_key varchar(255) NOT NULL; ALTER TABLE notificationcommand_argument MODIFY COLUMN argument_key_override varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL; ALTER TABLE checkcommand_envvar MODIFY COLUMN envvar_key varchar(255) NOT NULL; ALTER TABLE eventcommand_envvar MODIFY COLUMN envvar_key varchar(255) NOT NULL; ALTER TABLE notificationcommand_envvar MODIFY COLUMN envvar_key varchar(255) NOT NULL; INSERT INTO icingadb_schema (version, timestamp) VALUES (6, UNIX_TIMESTAMP() * 1000); icingadb-1.3.0/schema/mysql/upgrades/optional/000077500000000000000000000000001477347223700213375ustar00rootroot00000000000000icingadb-1.3.0/schema/mysql/upgrades/optional/1.2.0-history.sql000066400000000000000000000001151477347223700242120ustar00rootroot00000000000000ALTER TABLE state_history MODIFY COLUMN check_attempt int unsigned NOT NULL; icingadb-1.3.0/schema/pgsql/000077500000000000000000000000001477347223700156615ustar00rootroot00000000000000icingadb-1.3.0/schema/pgsql/schema.sql000066400000000000000000002735721477347223700176620ustar00rootroot00000000000000-- Icinga DB | (c) 2021 Icinga GmbH | GPLv2+ -- Postgres in Docker: ensure CITEXT columns are available during schema import. DB user is a superuser and can do this unconditionally. -- Everything else: assert CITEXT columns are available during schema import. DB user isn't the superuser and can do this only if it's a no-op (`NOTICE: extension "citext" already exists, skipping`), i.e. if CITEXT columns are already available. CREATE EXTENSION IF NOT EXISTS citext; CREATE DOMAIN bytea20 AS bytea CONSTRAINT exactly_20_bytes_long CHECK ( VALUE IS NULL OR octet_length(VALUE) = 20 ); CREATE DOMAIN bytea16 AS bytea CONSTRAINT exactly_16_bytes_long CHECK ( VALUE IS NULL OR octet_length(VALUE) = 16 ); CREATE DOMAIN bytea4 AS bytea CONSTRAINT exactly_4_bytes_long CHECK ( VALUE IS NULL OR octet_length(VALUE) = 4 ); CREATE DOMAIN biguint AS bigint CONSTRAINT positive CHECK ( VALUE IS NULL OR 0 <= VALUE ); CREATE DOMAIN uint AS bigint CONSTRAINT between_0_and_4294967295 CHECK ( VALUE IS NULL OR VALUE BETWEEN 0 AND 4294967295 ); CREATE DOMAIN smalluint AS int CONSTRAINT between_0_and_65535 CHECK ( VALUE IS NULL OR VALUE BETWEEN 0 AND 65535 ); CREATE DOMAIN tinyuint AS smallint CONSTRAINT between_0_and_255 CHECK ( VALUE IS NULL OR VALUE BETWEEN 0 AND 255 ); CREATE TYPE boolenum AS ENUM ( 'n', 'y' ); CREATE TYPE acked AS ENUM ( 'n', 'y', 'sticky' ); CREATE TYPE state_type AS ENUM ( 'hard', 'soft' ); CREATE TYPE checkable_type AS ENUM ( 'host', 'service' ); CREATE TYPE comment_type AS ENUM ( 'comment', 'ack' ); CREATE TYPE notification_type AS ENUM ( 'downtime_start', 'downtime_end', 'downtime_removed', 'custom', 'acknowledgement', 'problem', 'recovery', 'flapping_start', 'flapping_end' ); -- The enum values are ordered in a way that event_type provides a meaningful sort order for history entries with -- the same event_time. state_change comes first as it can cause many of the other events like trigger downtimes, -- remove acknowledgements and send notifications. Similarly, notification comes last as any other event can result -- in a notification. End events sort before the corresponding start events as any ack/comment/downtime/flapping -- period should last for more than a millisecond, therefore, the old period ends first and then the new one starts. -- The remaining types are sorted by impact and cause: comments are informative, flapping is automatic and changes -- mechanics, downtimes are semi-automatic, require user action (or configuration) and change mechanics, acks are pure -- user actions and change mechanics. CREATE TYPE history_type AS ENUM ( 'state_change', 'ack_clear', 'downtime_end', 'flapping_end', 'comment_remove', 'comment_add', 'flapping_start', 'downtime_start', 'ack_set', 'notification' ); CREATE OR REPLACE FUNCTION get_sla_ok_percent( in_host_id bytea20, in_service_id bytea20, in_start_time biguint, in_end_time biguint ) RETURNS decimal(7, 4) LANGUAGE plpgsql STABLE PARALLEL RESTRICTED AS $$ DECLARE last_event_time biguint := in_start_time; last_hard_state tinyuint; active_downtimes uint := 0; problem_time biguint := 0; total_time biguint; row record; BEGIN IF in_end_time <= in_start_time THEN RAISE 'end time must be greater than start time'; END IF; total_time := in_end_time - in_start_time; -- Use the latest event at or before the beginning of the SLA interval as the initial state. SELECT hard_state INTO last_hard_state FROM sla_history_state s WHERE s.host_id = in_host_id AND ((in_service_id IS NULL AND s.service_id IS NULL) OR s.service_id = in_service_id) AND s.event_time <= in_start_time ORDER BY s.event_time DESC LIMIT 1; -- If this does not exist, use the previous state from the first event after the beginning of the SLA interval. IF last_hard_state IS NULL THEN SELECT previous_hard_state INTO last_hard_state FROM sla_history_state s WHERE s.host_id = in_host_id AND ((in_service_id IS NULL AND s.service_id IS NULL) OR s.service_id = in_service_id) AND s.event_time > in_start_time ORDER BY s.event_time ASC LIMIT 1; END IF; -- If this also does not exist, use the current host/service state. IF last_hard_state IS NULL THEN IF in_service_id IS NULL THEN SELECT hard_state INTO last_hard_state FROM host_state s WHERE s.host_id = in_host_id; ELSE SELECT hard_state INTO last_hard_state FROM service_state s WHERE s.host_id = in_host_id AND s.service_id = in_service_id; END IF; END IF; IF last_hard_state IS NULL THEN last_hard_state := 0; END IF; FOR row IN ( -- all downtime_start events before the end of the SLA interval -- for downtimes that overlap the SLA interval in any way SELECT GREATEST(downtime_start, in_start_time) AS event_time, 'downtime_start' AS event_type, 1 AS event_prio, NULL::tinyuint AS hard_state, NULL::tinyuint AS previous_hard_state FROM sla_history_downtime d WHERE d.host_id = in_host_id AND ((in_service_id IS NULL AND d.service_id IS NULL) OR d.service_id = in_service_id) AND d.downtime_start < in_end_time AND d.downtime_end >= in_start_time ) UNION ALL ( -- all downtime_end events before the end of the SLA interval -- for downtimes that overlap the SLA interval in any way SELECT downtime_end AS event_time, 'downtime_end' AS event_type, 2 AS event_prio, NULL::tinyuint AS hard_state, NULL::tinyuint AS previous_hard_state FROM sla_history_downtime d WHERE d.host_id = in_host_id AND ((in_service_id IS NULL AND d.service_id IS NULL) OR d.service_id = in_service_id) AND d.downtime_start < in_end_time AND d.downtime_end >= in_start_time AND d.downtime_end < in_end_time ) UNION ALL ( -- all state events strictly in interval SELECT event_time, 'state_change' AS event_type, 0 AS event_prio, hard_state, previous_hard_state FROM sla_history_state s WHERE s.host_id = in_host_id AND ((in_service_id IS NULL AND s.service_id IS NULL) OR s.service_id = in_service_id) AND s.event_time > in_start_time AND s.event_time < in_end_time ) UNION ALL ( -- end event to keep loop simple, values are not used SELECT in_end_time AS event_time, 'end' AS event_type, 3 AS event_prio, NULL::tinyuint AS hard_state, NULL::tinyuint AS previous_hard_state ) ORDER BY event_time, event_prio LOOP IF row.previous_hard_state = 99 THEN total_time := total_time - (row.event_time - last_event_time); ELSEIF ((in_service_id IS NULL AND last_hard_state > 0) OR (in_service_id IS NOT NULL AND last_hard_state > 1)) AND last_hard_state != 99 AND active_downtimes = 0 THEN problem_time := problem_time + row.event_time - last_event_time; END IF; last_event_time := row.event_time; IF row.event_type = 'state_change' THEN last_hard_state := row.hard_state; ELSEIF row.event_type = 'downtime_start' THEN active_downtimes := active_downtimes + 1; ELSEIF row.event_type = 'downtime_end' THEN active_downtimes := active_downtimes - 1; END IF; END LOOP; RETURN (100 * (total_time - problem_time)::decimal / total_time)::decimal(7, 4); END; $$; /* At the moment Icinga DB Web doesn't know the column types, so it sends SQL queries with LIKE operators for all suggestions in the search bar, which fails for numeric and enum types on PostgreSQL. To support this, the LIKE operator (internally translated to ~~) is overloaded. Note that this is only a temporary solution until Icinga DB Web provides column type support. */ CREATE OR REPLACE FUNCTION anynonarrayliketext(anynonarray, text) RETURNS bool LANGUAGE plpgsql IMMUTABLE PARALLEL SAFE AS $$ BEGIN RETURN $1::TEXT LIKE $2; END; $$; CREATE OPERATOR ~~ (LEFTARG=anynonarray, RIGHTARG=text, PROCEDURE=anynonarrayliketext); CREATE TABLE host ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, name_checksum bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, name varchar(255) NOT NULL, name_ci citext NOT NULL, display_name citext NOT NULL, address varchar(255) NOT NULL, address6 varchar(255) NOT NULL, address_bin bytea4 DEFAULT NULL, address6_bin bytea16 DEFAULT NULL, checkcommand_name citext NOT NULL, checkcommand_id bytea20 NOT NULL, max_check_attempts uint NOT NULL, check_timeperiod_name citext NOT NULL, check_timeperiod_id bytea20 DEFAULT NULL, check_timeout uint DEFAULT NULL, check_interval uint NOT NULL, check_retry_interval uint NOT NULL, active_checks_enabled boolenum NOT NULL DEFAULT 'n', passive_checks_enabled boolenum NOT NULL DEFAULT 'n', event_handler_enabled boolenum NOT NULL DEFAULT 'n', notifications_enabled boolenum NOT NULL DEFAULT 'n', flapping_enabled boolenum NOT NULL DEFAULT 'n', flapping_threshold_low float NOT NULL, flapping_threshold_high float NOT NULL, perfdata_enabled boolenum NOT NULL DEFAULT 'n', eventcommand_name citext NOT NULL, eventcommand_id bytea20 DEFAULT NULL, is_volatile boolenum NOT NULL DEFAULT 'n', action_url_id bytea20 DEFAULT NULL, notes_url_id bytea20 DEFAULT NULL, notes text NOT NULL, icon_image_id bytea20 DEFAULT NULL, icon_image_alt text NOT NULL, zone_name citext NOT NULL, zone_id bytea20 DEFAULT NULL, command_endpoint_name citext NOT NULL, command_endpoint_id bytea20 DEFAULT NULL, CONSTRAINT pk_host PRIMARY KEY (id) ); ALTER TABLE host ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE host ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE host ALTER COLUMN name_checksum SET STORAGE PLAIN; ALTER TABLE host ALTER COLUMN properties_checksum SET STORAGE PLAIN; ALTER TABLE host ALTER COLUMN address_bin SET STORAGE PLAIN; ALTER TABLE host ALTER COLUMN address6_bin SET STORAGE PLAIN; ALTER TABLE host ALTER COLUMN checkcommand_id SET STORAGE PLAIN; ALTER TABLE host ALTER COLUMN check_timeperiod_id SET STORAGE PLAIN; ALTER TABLE host ALTER COLUMN eventcommand_id SET STORAGE PLAIN; ALTER TABLE host ALTER COLUMN action_url_id SET STORAGE PLAIN; ALTER TABLE host ALTER COLUMN notes_url_id SET STORAGE PLAIN; ALTER TABLE host ALTER COLUMN icon_image_id SET STORAGE PLAIN; ALTER TABLE host ALTER COLUMN zone_id SET STORAGE PLAIN; ALTER TABLE host ALTER COLUMN command_endpoint_id SET STORAGE PLAIN; CREATE INDEX idx_action_url_checksum ON host(action_url_id); CREATE INDEX idx_notes_url_checksum ON host(notes_url_id); CREATE INDEX idx_icon_image_checksum ON host(icon_image_id); CREATE INDEX idx_host_display_name ON host(display_name); CREATE INDEX idx_host_name_ci ON host(name_ci); CREATE INDEX idx_host_name ON host(name); COMMENT ON COLUMN host.id IS 'sha1(environment.id + name)'; COMMENT ON COLUMN host.environment_id IS 'environment.id'; COMMENT ON COLUMN host.name_checksum IS 'sha1(name)'; COMMENT ON COLUMN host.properties_checksum IS 'sha1(all properties)'; COMMENT ON COLUMN host.checkcommand_name IS 'checkcommand.name'; COMMENT ON COLUMN host.checkcommand_id IS 'checkcommand.id'; COMMENT ON COLUMN host.check_timeperiod_name IS 'timeperiod.name'; COMMENT ON COLUMN host.check_timeperiod_id IS 'timeperiod.id'; COMMENT ON COLUMN host.eventcommand_name IS 'eventcommand.name'; COMMENT ON COLUMN host.eventcommand_id IS 'eventcommand.id'; COMMENT ON COLUMN host.action_url_id IS 'action_url.id'; COMMENT ON COLUMN host.notes_url_id IS 'notes_url.id'; COMMENT ON COLUMN host.icon_image_id IS 'icon_image.id'; COMMENT ON COLUMN host.zone_name IS 'zone.name'; COMMENT ON COLUMN host.zone_id IS 'zone.id'; COMMENT ON COLUMN host.command_endpoint_name IS 'endpoint.name'; COMMENT ON COLUMN host.command_endpoint_id IS 'endpoint.id'; COMMENT ON INDEX idx_action_url_checksum IS 'cleanup'; COMMENT ON INDEX idx_notes_url_checksum IS 'cleanup'; COMMENT ON INDEX idx_icon_image_checksum IS 'cleanup'; COMMENT ON INDEX idx_host_display_name IS 'Host list filtered/ordered by display_name'; COMMENT ON INDEX idx_host_name_ci IS 'Host list filtered using quick search'; COMMENT ON INDEX idx_host_name IS 'Host list filtered/ordered by name; Host detail filter'; CREATE TABLE hostgroup ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, name_checksum bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, name varchar(255) NOT NULL, name_ci citext NOT NULL, display_name citext NOT NULL, zone_id bytea20 DEFAULT NULL, CONSTRAINT pk_hostgroup PRIMARY KEY (id) ); ALTER TABLE hostgroup ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE hostgroup ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE hostgroup ALTER COLUMN name_checksum SET STORAGE PLAIN; ALTER TABLE hostgroup ALTER COLUMN properties_checksum SET STORAGE PLAIN; ALTER TABLE hostgroup ALTER COLUMN zone_id SET STORAGE PLAIN; CREATE INDEX idx_hostgroup_display_name ON hostgroup(display_name); CREATE INDEX idx_hostgroup_name_ci ON hostgroup(name_ci); CREATE INDEX idx_hostgroup_name ON hostgroup(name); COMMENT ON COLUMN hostgroup.id IS 'sha1(environment.id + name)'; COMMENT ON COLUMN hostgroup.environment_id IS 'environment.id'; COMMENT ON COLUMN hostgroup.name_checksum IS 'sha1(name)'; COMMENT ON COLUMN hostgroup.properties_checksum IS 'sha1(all properties)'; COMMENT ON COLUMN hostgroup.zone_id IS 'zone.id'; COMMENT ON INDEX idx_hostgroup_display_name IS 'Hostgroup list filtered/ordered by display_name'; COMMENT ON INDEX idx_hostgroup_name_ci IS 'Hostgroup list filtered using quick search'; COMMENT ON INDEX idx_hostgroup_name IS 'Host/service/host group list filtered by host group name; Hostgroup detail filter'; CREATE TABLE hostgroup_member ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, host_id bytea20 NOT NULL, hostgroup_id bytea20 NOT NULL, CONSTRAINT pk_hostgroup_member PRIMARY KEY (id) ); ALTER TABLE hostgroup_member ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE hostgroup_member ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE hostgroup_member ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE hostgroup_member ALTER COLUMN hostgroup_id SET STORAGE PLAIN; CREATE INDEX idx_hostgroup_member_host_id ON hostgroup_member(host_id, hostgroup_id); CREATE INDEX idx_hostgroup_member_hostgroup_id ON hostgroup_member(hostgroup_id, host_id); COMMENT ON COLUMN hostgroup_member.id IS 'sha1(environment.id + host_id + hostgroup_id)'; COMMENT ON COLUMN hostgroup_member.environment_id IS 'environment.id'; COMMENT ON COLUMN hostgroup_member.host_id IS 'host.id'; COMMENT ON COLUMN hostgroup_member.hostgroup_id IS 'hostgroup.id'; CREATE TABLE host_customvar ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, host_id bytea20 NOT NULL, customvar_id bytea20 NOT NULL, CONSTRAINT pk_host_customvar PRIMARY KEY (id) ); ALTER TABLE host_customvar ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE host_customvar ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE host_customvar ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE host_customvar ALTER COLUMN customvar_id SET STORAGE PLAIN; CREATE INDEX idx_host_customvar_host_id ON host_customvar(host_id, customvar_id); CREATE INDEX idx_host_customvar_customvar_id ON host_customvar(customvar_id, host_id); COMMENT ON COLUMN host_customvar.id IS 'sha1(environment.id + host_id + customvar_id)'; COMMENT ON COLUMN host_customvar.environment_id IS 'environment.id'; COMMENT ON COLUMN host_customvar.host_id IS 'host.id'; COMMENT ON COLUMN host_customvar.customvar_id IS 'customvar.id'; CREATE TABLE hostgroup_customvar ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, hostgroup_id bytea20 NOT NULL, customvar_id bytea20 NOT NULL, CONSTRAINT pk_hostgroup_customvar PRIMARY KEY (id) ); ALTER TABLE hostgroup_customvar ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE hostgroup_customvar ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE hostgroup_customvar ALTER COLUMN hostgroup_id SET STORAGE PLAIN; ALTER TABLE hostgroup_customvar ALTER COLUMN customvar_id SET STORAGE PLAIN; CREATE INDEX idx_hostgroup_customvar_hostgroup_id ON hostgroup_customvar(hostgroup_id, customvar_id); CREATE INDEX idx_hostgroup_customvar_customvar_id ON hostgroup_customvar(customvar_id, hostgroup_id); COMMENT ON COLUMN hostgroup_customvar.id IS 'sha1(environment.id + hostgroup_id + customvar_id)'; COMMENT ON COLUMN hostgroup_customvar.environment_id IS 'environment.id'; COMMENT ON COLUMN hostgroup_customvar.hostgroup_id IS 'hostgroup.id'; COMMENT ON COLUMN hostgroup_customvar.customvar_id IS 'customvar.id'; CREATE TABLE host_state ( id bytea20 NOT NULL, host_id bytea20 NOT NULL, environment_id bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, state_type state_type NOT NULL DEFAULT 'hard', soft_state tinyuint NOT NULL, hard_state tinyuint NOT NULL, previous_soft_state tinyuint NOT NULL, previous_hard_state tinyuint NOT NULL, check_attempt uint NOT NULL, severity smalluint NOT NULL, output text DEFAULT NULL, long_output text DEFAULT NULL, performance_data text DEFAULT NULL, normalized_performance_data text DEFAULT NULL, check_commandline text DEFAULT NULL, is_problem boolenum NOT NULL DEFAULT 'n', is_handled boolenum NOT NULL DEFAULT 'n', is_reachable boolenum NOT NULL DEFAULT 'n', is_flapping boolenum NOT NULL DEFAULT 'n', is_overdue boolenum NOT NULL DEFAULT 'n', is_acknowledged acked NOT NULL DEFAULT 'n', acknowledgement_comment_id bytea20 DEFAULT NULL, last_comment_id bytea20 DEFAULT NULL, in_downtime boolenum NOT NULL DEFAULT 'n', execution_time uint DEFAULT NULL, latency uint DEFAULT NULL, check_timeout uint DEFAULT NULL, check_source text DEFAULT NULL, scheduling_source text DEFAULT NULL, last_update biguint DEFAULT NULL, last_state_change biguint NOT NULL, next_check biguint NOT NULL, next_update biguint NOT NULL, CONSTRAINT pk_host_state PRIMARY KEY (id) ); ALTER TABLE host_state ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE host_state ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE host_state ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE host_state ALTER COLUMN properties_checksum SET STORAGE PLAIN; ALTER TABLE host_state ALTER COLUMN acknowledgement_comment_id SET STORAGE PLAIN; ALTER TABLE host_state ALTER COLUMN last_comment_id SET STORAGE PLAIN; CREATE UNIQUE INDEX idx_host_state_host_id ON host_state(host_id); CREATE INDEX idx_host_state_is_problem ON host_state(is_problem, severity); CREATE INDEX idx_host_state_severity ON host_state(severity); CREATE INDEX idx_host_state_soft_state ON host_state(soft_state, last_state_change); CREATE INDEX idx_host_state_last_state_change ON host_state(last_state_change); COMMENT ON COLUMN host_state.id IS 'host.id'; COMMENT ON COLUMN host_state.host_id IS 'host.id'; COMMENT ON COLUMN host_state.environment_id IS 'environment.id'; COMMENT ON COLUMN host_state.properties_checksum IS 'sha1(all properties)'; COMMENT ON COLUMN host_state.acknowledgement_comment_id IS 'comment.id'; COMMENT ON COLUMN host_state.last_comment_id IS 'comment.id'; COMMENT ON INDEX idx_host_state_is_problem IS 'Host list filtered by is_problem ordered by severity'; COMMENT ON INDEX idx_host_state_severity IS 'Host list filtered/ordered by severity'; COMMENT ON INDEX idx_host_state_soft_state IS 'Host list filtered/ordered by soft_state; recently recovered filter'; COMMENT ON INDEX idx_host_state_last_state_change IS 'Host list filtered/ordered by last_state_change'; CREATE TABLE service ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, name_checksum bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, host_id bytea20 NOT NULL, name varchar(255) NOT NULL, name_ci citext NOT NULL, display_name citext NOT NULL, checkcommand_name citext NOT NULL, checkcommand_id bytea20 NOT NULL, max_check_attempts uint NOT NULL, check_timeperiod_name citext NOT NULL, check_timeperiod_id bytea20 DEFAULT NULL, check_timeout uint DEFAULT NULL, check_interval uint NOT NULL, check_retry_interval uint NOT NULL, active_checks_enabled boolenum NOT NULL DEFAULT 'n', passive_checks_enabled boolenum NOT NULL DEFAULT 'n', event_handler_enabled boolenum NOT NULL DEFAULT 'n', notifications_enabled boolenum NOT NULL DEFAULT 'n', flapping_enabled boolenum NOT NULL DEFAULT 'n', flapping_threshold_low float NOT NULL, flapping_threshold_high float NOT NULL, perfdata_enabled boolenum NOT NULL DEFAULT 'n', eventcommand_name citext NOT NULL, eventcommand_id bytea20 DEFAULT NULL, is_volatile boolenum NOT NULL DEFAULT 'n', action_url_id bytea20 DEFAULT NULL, notes_url_id bytea20 DEFAULT NULL, notes text NOT NULL, icon_image_id bytea20 DEFAULT NULL, icon_image_alt text NOT NULL, zone_name citext NOT NULL, zone_id bytea20 DEFAULT NULL, command_endpoint_name citext NOT NULL, command_endpoint_id bytea20 DEFAULT NULL, CONSTRAINT pk_service PRIMARY KEY (id) ); ALTER TABLE service ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE service ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE service ALTER COLUMN name_checksum SET STORAGE PLAIN; ALTER TABLE service ALTER COLUMN properties_checksum SET STORAGE PLAIN; ALTER TABLE service ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE service ALTER COLUMN checkcommand_id SET STORAGE PLAIN; ALTER TABLE service ALTER COLUMN check_timeperiod_id SET STORAGE PLAIN; ALTER TABLE service ALTER COLUMN eventcommand_id SET STORAGE PLAIN; ALTER TABLE service ALTER COLUMN action_url_id SET STORAGE PLAIN; ALTER TABLE service ALTER COLUMN notes_url_id SET STORAGE PLAIN; ALTER TABLE service ALTER COLUMN icon_image_id SET STORAGE PLAIN; ALTER TABLE service ALTER COLUMN zone_id SET STORAGE PLAIN; ALTER TABLE service ALTER COLUMN command_endpoint_id SET STORAGE PLAIN; CREATE INDEX idx_service_display_name ON service(display_name); CREATE INDEX idx_service_host_id ON service(host_id, display_name); CREATE INDEX idx_service_name_ci ON service(name_ci); CREATE INDEX idx_service_name ON service(name); COMMENT ON COLUMN service.id IS 'sha1(environment.id + name)'; COMMENT ON COLUMN service.environment_id IS 'environment.id'; COMMENT ON COLUMN service.name_checksum IS 'sha1(name)'; COMMENT ON COLUMN service.properties_checksum IS 'sha1(all properties)'; COMMENT ON COLUMN service.host_id IS 'sha1(host.id)'; COMMENT ON COLUMN service.checkcommand_name IS 'checkcommand.name'; COMMENT ON COLUMN service.checkcommand_id IS 'checkcommand.id'; COMMENT ON COLUMN service.check_timeperiod_name IS 'timeperiod.name'; COMMENT ON COLUMN service.check_timeperiod_id IS 'timeperiod.id'; COMMENT ON COLUMN service.eventcommand_name IS 'eventcommand.name'; COMMENT ON COLUMN service.eventcommand_id IS 'eventcommand.id'; COMMENT ON COLUMN service.action_url_id IS 'action_url.id'; COMMENT ON COLUMN service.notes_url_id IS 'notes_url.id'; COMMENT ON COLUMN service.icon_image_id IS 'icon_image.id'; COMMENT ON COLUMN service.zone_name IS 'zone.name'; COMMENT ON COLUMN service.zone_id IS 'zone.id'; COMMENT ON COLUMN service.command_endpoint_name IS 'endpoint.name'; COMMENT ON COLUMN service.command_endpoint_id IS 'endpoint.id'; COMMENT ON INDEX idx_service_display_name IS 'Service list filtered/ordered by display_name'; COMMENT ON INDEX idx_service_host_id IS 'Service list filtered by host and ordered by display_name'; COMMENT ON INDEX idx_service_name_ci IS 'Service list filtered using quick search'; COMMENT ON INDEX idx_service_name IS 'Service list filtered/ordered by name; Service detail filter'; CREATE TABLE servicegroup ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, name_checksum bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, name varchar(255) NOT NULL, name_ci citext NOT NULL, display_name citext NOT NULL, zone_id bytea20 DEFAULT NULL, CONSTRAINT pk_servicegroup PRIMARY KEY (id) ); ALTER TABLE servicegroup ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE servicegroup ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE servicegroup ALTER COLUMN name_checksum SET STORAGE PLAIN; ALTER TABLE servicegroup ALTER COLUMN properties_checksum SET STORAGE PLAIN; ALTER TABLE servicegroup ALTER COLUMN zone_id SET STORAGE PLAIN; COMMENT ON COLUMN servicegroup.id IS 'sha1(environment.id + name)'; COMMENT ON COLUMN servicegroup.environment_id IS 'environment.id'; COMMENT ON COLUMN servicegroup.name_checksum IS 'sha1(name)'; COMMENT ON COLUMN servicegroup.properties_checksum IS 'sha1(all properties)'; COMMENT ON COLUMN servicegroup.zone_id IS 'zone.id'; CREATE INDEX idx_servicegroup_display_name ON servicegroup(display_name); CREATE INDEX idx_servicegroup_name_ci ON servicegroup(name_ci); CREATE INDEX idx_servicegroup_name ON servicegroup(name); COMMENT ON INDEX idx_servicegroup_display_name IS 'Servicegroup list filtered/ordered by display_name'; COMMENT ON INDEX idx_servicegroup_name_ci IS 'Servicegroup list filtered using quick search'; COMMENT ON INDEX idx_servicegroup_name IS 'Host/service/service group list filtered by service group name; Servicegroup detail filter'; CREATE TABLE servicegroup_member ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, service_id bytea20 NOT NULL, servicegroup_id bytea20 NOT NULL, CONSTRAINT pk_servicegroup_member PRIMARY KEY (id) ); ALTER TABLE servicegroup_member ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE servicegroup_member ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE servicegroup_member ALTER COLUMN service_id SET STORAGE PLAIN; ALTER TABLE servicegroup_member ALTER COLUMN servicegroup_id SET STORAGE PLAIN; CREATE INDEX idx_servicegroup_member_service_id ON servicegroup_member(service_id, servicegroup_id); CREATE INDEX idx_servicegroup_member_servicegroup_id ON servicegroup_member(servicegroup_id, service_id); COMMENT ON COLUMN servicegroup_member.id IS 'sha1(environment.id + servicegroup_id + service_id)'; COMMENT ON COLUMN servicegroup_member.environment_id IS 'environment.id'; COMMENT ON COLUMN servicegroup_member.service_id IS 'service.id'; COMMENT ON COLUMN servicegroup_member.servicegroup_id IS 'servicegroup.id'; CREATE TABLE service_customvar ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, service_id bytea20 NOT NULL, customvar_id bytea20 NOT NULL, CONSTRAINT pk_service_customvar PRIMARY KEY (id) ); ALTER TABLE service_customvar ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE service_customvar ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE service_customvar ALTER COLUMN service_id SET STORAGE PLAIN; ALTER TABLE service_customvar ALTER COLUMN customvar_id SET STORAGE PLAIN; CREATE INDEX idx_service_customvar_service_id ON service_customvar(service_id, customvar_id); CREATE INDEX idx_service_customvar_customvar_id ON service_customvar(customvar_id, service_id); COMMENT ON COLUMN service_customvar.id IS 'sha1(environment.id + service_id + customvar_id)'; COMMENT ON COLUMN service_customvar.environment_id IS 'environment.id'; COMMENT ON COLUMN service_customvar.service_id IS 'service.id'; COMMENT ON COLUMN service_customvar.customvar_id IS 'customvar.id'; CREATE TABLE servicegroup_customvar ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, servicegroup_id bytea20 NOT NULL, customvar_id bytea20 NOT NULL, CONSTRAINT pk_servicegroup_customvar PRIMARY KEY (id) ); ALTER TABLE servicegroup_customvar ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE servicegroup_customvar ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE servicegroup_customvar ALTER COLUMN servicegroup_id SET STORAGE PLAIN; ALTER TABLE servicegroup_customvar ALTER COLUMN customvar_id SET STORAGE PLAIN; CREATE INDEX idx_servicegroup_customvar_servicegroup_id ON servicegroup_customvar(servicegroup_id, customvar_id); CREATE INDEX idx_servicegroup_customvar_customvar_id ON servicegroup_customvar(customvar_id, servicegroup_id); COMMENT ON COLUMN servicegroup_customvar.id IS 'sha1(environment.id + servicegroup_id + customvar_id)'; COMMENT ON COLUMN servicegroup_customvar.environment_id IS 'environment.id'; COMMENT ON COLUMN servicegroup_customvar.servicegroup_id IS 'servicegroup.id'; COMMENT ON COLUMN servicegroup_customvar.customvar_id IS 'customvar.id'; CREATE TABLE service_state ( id bytea20 NOT NULL, host_id bytea20 NOT NULL, service_id bytea20 NOT NULL, environment_id bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, state_type state_type NOT NULL DEFAULT 'hard', soft_state tinyuint NOT NULL, hard_state tinyuint NOT NULL, previous_soft_state tinyuint NOT NULL, previous_hard_state tinyuint NOT NULL, check_attempt uint NOT NULL, severity smalluint NOT NULL, output text DEFAULT NULL, long_output text DEFAULT NULL, performance_data text DEFAULT NULL, normalized_performance_data text DEFAULT NULL, check_commandline text DEFAULT NULL, is_problem boolenum NOT NULL DEFAULT 'n', is_handled boolenum NOT NULL DEFAULT 'n', is_reachable boolenum NOT NULL DEFAULT 'n', is_flapping boolenum NOT NULL DEFAULT 'n', is_overdue boolenum NOT NULL DEFAULT 'n', is_acknowledged acked NOT NULL DEFAULT 'n', acknowledgement_comment_id bytea20 DEFAULT NULL, last_comment_id bytea20 DEFAULT NULL, in_downtime boolenum NOT NULL DEFAULT 'n', execution_time uint DEFAULT NULL, latency uint DEFAULT NULL, check_timeout uint DEFAULT NULL, check_source text DEFAULT NULL, scheduling_source text DEFAULT NULL, last_update biguint DEFAULT NULL, last_state_change biguint NOT NULL, next_check biguint NOT NULL, next_update biguint NOT NULL, CONSTRAINT pk_service_state PRIMARY KEY (id) ); ALTER TABLE service_state ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE service_state ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE service_state ALTER COLUMN service_id SET STORAGE PLAIN; ALTER TABLE service_state ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE service_state ALTER COLUMN properties_checksum SET STORAGE PLAIN; ALTER TABLE service_state ALTER COLUMN acknowledgement_comment_id SET STORAGE PLAIN; ALTER TABLE service_state ALTER COLUMN last_comment_id SET STORAGE PLAIN; CREATE UNIQUE INDEX idx_service_state_service_id ON service_state(service_id); CREATE INDEX idx_service_state_is_problem ON service_state(is_problem, severity); CREATE INDEX idx_service_state_severity ON service_state(severity); CREATE INDEX idx_service_state_soft_state ON service_state(soft_state, last_state_change); CREATE INDEX idx_service_state_last_state_change ON service_state(last_state_change); COMMENT ON COLUMN service_state.id IS 'service.id'; COMMENT ON COLUMN service_state.host_id IS 'host.id'; COMMENT ON COLUMN service_state.service_id IS 'service.id'; COMMENT ON COLUMN service_state.environment_id IS 'environment.id'; COMMENT ON COLUMN service_state.properties_checksum IS 'sha1(all properties)'; COMMENT ON COLUMN service_state.acknowledgement_comment_id IS 'comment.id'; COMMENT ON COLUMN service_state.last_comment_id IS 'comment.id'; COMMENT ON INDEX idx_service_state_is_problem IS 'Service list filtered by is_problem ordered by severity'; COMMENT ON INDEX idx_service_state_severity IS 'Service list filtered/ordered by severity'; COMMENT ON INDEX idx_service_state_soft_state IS 'Service list filtered/ordered by soft_state; recently recovered filter'; COMMENT ON INDEX idx_service_state_last_state_change IS 'Service list filtered/ordered by last_state_change'; CREATE TABLE endpoint ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, name_checksum bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, name varchar(255) NOT NULL, name_ci citext NOT NULL, zone_id bytea20 NOT NULL, CONSTRAINT pk_endpoint PRIMARY KEY (id) ); ALTER TABLE endpoint ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE endpoint ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE endpoint ALTER COLUMN name_checksum SET STORAGE PLAIN; ALTER TABLE endpoint ALTER COLUMN properties_checksum SET STORAGE PLAIN; ALTER TABLE endpoint ALTER COLUMN zone_id SET STORAGE PLAIN; COMMENT ON COLUMN endpoint.id IS 'sha1(environment.id + name)'; COMMENT ON COLUMN endpoint.environment_id IS 'environment.id'; COMMENT ON COLUMN endpoint.name_checksum IS 'sha1(name)'; COMMENT ON COLUMN endpoint.properties_checksum IS 'sha1(all properties)'; COMMENT ON COLUMN endpoint.zone_id IS 'zone.id'; CREATE TABLE environment ( id bytea20 NOT NULL, name varchar(255) NOT NULL, CONSTRAINT pk_environment PRIMARY KEY (id) ); ALTER TABLE environment ALTER COLUMN id SET STORAGE PLAIN; COMMENT ON COLUMN environment.id IS 'sha1(Icinga CA public key)'; CREATE TABLE icingadb_instance ( id bytea16 NOT NULL, environment_id bytea20 NOT NULL, endpoint_id bytea20 DEFAULT NULL, heartbeat biguint NOT NULL, responsible boolenum NOT NULL DEFAULT 'n', icinga2_version varchar(255) NOT NULL, icinga2_start_time biguint NOT NULL, icinga2_notifications_enabled boolenum NOT NULL DEFAULT 'n', icinga2_active_service_checks_enabled boolenum NOT NULL DEFAULT 'n', icinga2_active_host_checks_enabled boolenum NOT NULL DEFAULT 'n', icinga2_event_handlers_enabled boolenum NOT NULL DEFAULT 'n', icinga2_flap_detection_enabled boolenum NOT NULL DEFAULT 'n', icinga2_performance_data_enabled boolenum NOT NULL DEFAULT 'n', CONSTRAINT pk_icingadb_instance PRIMARY KEY (id) ); ALTER TABLE icingadb_instance ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE icingadb_instance ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE icingadb_instance ALTER COLUMN endpoint_id SET STORAGE PLAIN; COMMENT ON COLUMN icingadb_instance.id IS 'UUIDv4'; COMMENT ON COLUMN icingadb_instance.environment_id IS 'environment.id'; COMMENT ON COLUMN icingadb_instance.endpoint_id IS 'endpoint.id'; COMMENT ON COLUMN icingadb_instance.heartbeat IS '*nix timestamp'; CREATE TABLE checkcommand ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, zone_id bytea20 DEFAULT NULL, name_checksum bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, name varchar(255) NOT NULL, name_ci citext NOT NULL, command text NOT NULL, timeout uint NOT NULL, CONSTRAINT pk_checkcommand PRIMARY KEY (id) ); ALTER TABLE checkcommand ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE checkcommand ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE checkcommand ALTER COLUMN zone_id SET STORAGE PLAIN; ALTER TABLE checkcommand ALTER COLUMN name_checksum SET STORAGE PLAIN; ALTER TABLE checkcommand ALTER COLUMN properties_checksum SET STORAGE PLAIN; COMMENT ON COLUMN checkcommand.id IS 'sha1(environment.id + type + name)'; COMMENT ON COLUMN checkcommand.environment_id IS 'env.id'; COMMENT ON COLUMN checkcommand.zone_id IS 'zone.id'; COMMENT ON COLUMN checkcommand.name_checksum IS 'sha1(name)'; COMMENT ON COLUMN checkcommand.properties_checksum IS 'sha1(all properties)'; CREATE TABLE checkcommand_argument ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, checkcommand_id bytea20 NOT NULL, argument_key varchar(255) NOT NULL, properties_checksum bytea20 NOT NULL, argument_value text DEFAULT NULL, argument_order smallint DEFAULT NULL, description text DEFAULT NULL, argument_key_override citext DEFAULT NULL, repeat_key boolenum NOT NULL DEFAULT 'n', required boolenum NOT NULL DEFAULT 'n', set_if varchar(255) DEFAULT NULL, separator varchar(255) DEFAULT NULL, skip_key boolenum NOT NULL DEFAULT 'n', CONSTRAINT pk_checkcommand_argument PRIMARY KEY (id) ); ALTER TABLE checkcommand_argument ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE checkcommand_argument ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE checkcommand_argument ALTER COLUMN checkcommand_id SET STORAGE PLAIN; ALTER TABLE checkcommand_argument ALTER COLUMN properties_checksum SET STORAGE PLAIN; COMMENT ON COLUMN checkcommand_argument.id IS 'sha1(environment.id + checkcommand_id + argument_key)'; COMMENT ON COLUMN checkcommand_argument.environment_id IS 'env.id'; COMMENT ON COLUMN checkcommand_argument.checkcommand_id IS 'checkcommand.id'; COMMENT ON COLUMN checkcommand_argument.properties_checksum IS 'sha1(all properties)'; CREATE TABLE checkcommand_envvar ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, checkcommand_id bytea20 NOT NULL, envvar_key varchar(255) NOT NULL, properties_checksum bytea20 NOT NULL, envvar_value text NOT NULL, CONSTRAINT pk_checkcommand_envvar PRIMARY KEY (id) ); ALTER TABLE checkcommand_envvar ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE checkcommand_envvar ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE checkcommand_envvar ALTER COLUMN checkcommand_id SET STORAGE PLAIN; ALTER TABLE checkcommand_envvar ALTER COLUMN properties_checksum SET STORAGE PLAIN; COMMENT ON COLUMN checkcommand_envvar.id IS 'sha1(environment.id + checkcommand_id + envvar_key)'; COMMENT ON COLUMN checkcommand_envvar.environment_id IS 'env.id'; COMMENT ON COLUMN checkcommand_envvar.checkcommand_id IS 'checkcommand.id'; COMMENT ON COLUMN checkcommand_envvar.properties_checksum IS 'sha1(all properties)'; CREATE TABLE checkcommand_customvar ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, checkcommand_id bytea20 NOT NULL, customvar_id bytea20 NOT NULL, CONSTRAINT pk_checkcommand_customvar PRIMARY KEY (id) ); ALTER TABLE checkcommand_customvar ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE checkcommand_customvar ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE checkcommand_customvar ALTER COLUMN checkcommand_id SET STORAGE PLAIN; ALTER TABLE checkcommand_customvar ALTER COLUMN customvar_id SET STORAGE PLAIN; CREATE INDEX idx_checkcommand_customvar_checkcommand_id ON checkcommand_customvar(checkcommand_id, customvar_id); CREATE INDEX idx_checkcommand_customvar_customvar_id ON checkcommand_customvar(customvar_id, checkcommand_id); COMMENT ON COLUMN checkcommand_customvar.id IS 'sha1(environment.id + checkcommand_id + customvar_id)'; COMMENT ON COLUMN checkcommand_customvar.environment_id IS 'environment.id'; COMMENT ON COLUMN checkcommand_customvar.checkcommand_id IS 'checkcommand.id'; COMMENT ON COLUMN checkcommand_customvar.customvar_id IS 'customvar.id'; CREATE TABLE eventcommand ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, zone_id bytea20 DEFAULT NULL, name_checksum bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, name varchar(255) NOT NULL, name_ci citext NOT NULL, command text NOT NULL, timeout smalluint NOT NULL, CONSTRAINT pk_eventcommand PRIMARY KEY (id) ); ALTER TABLE eventcommand ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE eventcommand ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE eventcommand ALTER COLUMN zone_id SET STORAGE PLAIN; ALTER TABLE eventcommand ALTER COLUMN name_checksum SET STORAGE PLAIN; ALTER TABLE eventcommand ALTER COLUMN properties_checksum SET STORAGE PLAIN; COMMENT ON COLUMN eventcommand.id IS 'sha1(environment.id + type + name)'; COMMENT ON COLUMN eventcommand.environment_id IS 'env.id'; COMMENT ON COLUMN eventcommand.zone_id IS 'zone.id'; COMMENT ON COLUMN eventcommand.name_checksum IS 'sha1(name)'; COMMENT ON COLUMN eventcommand.properties_checksum IS 'sha1(all properties)'; CREATE TABLE eventcommand_argument ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, eventcommand_id bytea20 NOT NULL, argument_key varchar(255) NOT NULL, properties_checksum bytea20 NOT NULL, argument_value text DEFAULT NULL, argument_order smallint DEFAULT NULL, description text DEFAULT NULL, argument_key_override citext DEFAULT NULL, repeat_key boolenum NOT NULL DEFAULT 'n', required boolenum NOT NULL DEFAULT 'n', set_if varchar(255) DEFAULT NULL, separator varchar(255) DEFAULT NULL, skip_key boolenum NOT NULL DEFAULT 'n', CONSTRAINT pk_eventcommand_argument PRIMARY KEY (id) ); ALTER TABLE eventcommand_argument ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE eventcommand_argument ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE eventcommand_argument ALTER COLUMN eventcommand_id SET STORAGE PLAIN; ALTER TABLE eventcommand_argument ALTER COLUMN properties_checksum SET STORAGE PLAIN; COMMENT ON COLUMN eventcommand_argument.id IS 'sha1(environment.id + eventcommand_id + argument_key)'; COMMENT ON COLUMN eventcommand_argument.environment_id IS 'env.id'; COMMENT ON COLUMN eventcommand_argument.eventcommand_id IS 'eventcommand.id'; COMMENT ON COLUMN eventcommand_argument.properties_checksum IS 'sha1(all properties)'; CREATE TABLE eventcommand_envvar ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, eventcommand_id bytea20 NOT NULL, envvar_key varchar(255) NOT NULL, properties_checksum bytea20 NOT NULL, envvar_value text NOT NULL, CONSTRAINT pk_eventcommand_envvar PRIMARY KEY (id) ); ALTER TABLE eventcommand_envvar ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE eventcommand_envvar ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE eventcommand_envvar ALTER COLUMN eventcommand_id SET STORAGE PLAIN; ALTER TABLE eventcommand_envvar ALTER COLUMN properties_checksum SET STORAGE PLAIN; COMMENT ON COLUMN eventcommand_envvar.id IS 'sha1(environment.id + eventcommand_id + envvar_key)'; COMMENT ON COLUMN eventcommand_envvar.environment_id IS 'env.id'; COMMENT ON COLUMN eventcommand_envvar.eventcommand_id IS 'eventcommand.id'; COMMENT ON COLUMN eventcommand_envvar.properties_checksum IS 'sha1(all properties)'; CREATE TABLE eventcommand_customvar ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, eventcommand_id bytea20 NOT NULL, customvar_id bytea20 NOT NULL, CONSTRAINT pk_eventcommand_customvar PRIMARY KEY (id) ); ALTER TABLE eventcommand_customvar ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE eventcommand_customvar ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE eventcommand_customvar ALTER COLUMN eventcommand_id SET STORAGE PLAIN; ALTER TABLE eventcommand_customvar ALTER COLUMN customvar_id SET STORAGE PLAIN; CREATE INDEX idx_eventcommand_customvar_eventcommand_id ON eventcommand_customvar(eventcommand_id, customvar_id); CREATE INDEX idx_eventcommand_customvar_customvar_id ON eventcommand_customvar(customvar_id, eventcommand_id); COMMENT ON COLUMN eventcommand_customvar.id IS 'sha1(environment.id + eventcommand_id + customvar_id)'; COMMENT ON COLUMN eventcommand_customvar.environment_id IS 'environment.id'; COMMENT ON COLUMN eventcommand_customvar.eventcommand_id IS 'eventcommand.id'; COMMENT ON COLUMN eventcommand_customvar.customvar_id IS 'customvar.id'; CREATE TABLE notificationcommand ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, zone_id bytea20 DEFAULT NULL, name_checksum bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, name varchar(255) NOT NULL, name_ci citext NOT NULL, command text NOT NULL, timeout smalluint NOT NULL, CONSTRAINT pk_notificationcommand PRIMARY KEY (id) ); ALTER TABLE notificationcommand ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE notificationcommand ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE notificationcommand ALTER COLUMN zone_id SET STORAGE PLAIN; ALTER TABLE notificationcommand ALTER COLUMN name_checksum SET STORAGE PLAIN; ALTER TABLE notificationcommand ALTER COLUMN properties_checksum SET STORAGE PLAIN; COMMENT ON COLUMN notificationcommand.id IS 'sha1(environment.id + type + name)'; COMMENT ON COLUMN notificationcommand.environment_id IS 'env.id'; COMMENT ON COLUMN notificationcommand.zone_id IS 'zone.id'; COMMENT ON COLUMN notificationcommand.name_checksum IS 'sha1(name)'; COMMENT ON COLUMN notificationcommand.properties_checksum IS 'sha1(all properties)'; CREATE TABLE notificationcommand_argument ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, notificationcommand_id bytea20 NOT NULL, argument_key varchar(255) NOT NULL, properties_checksum bytea20 NOT NULL, argument_value text DEFAULT NULL, argument_order smallint DEFAULT NULL, description text DEFAULT NULL, argument_key_override citext DEFAULT NULL, repeat_key boolenum NOT NULL DEFAULT 'n', required boolenum NOT NULL DEFAULT 'n', set_if varchar(255) DEFAULT NULL, separator varchar(255) DEFAULT NULL, skip_key boolenum NOT NULL DEFAULT 'n', CONSTRAINT pk_notificationcommand_argument PRIMARY KEY (id) ); ALTER TABLE notificationcommand_argument ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE notificationcommand_argument ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE notificationcommand_argument ALTER COLUMN notificationcommand_id SET STORAGE PLAIN; ALTER TABLE notificationcommand_argument ALTER COLUMN properties_checksum SET STORAGE PLAIN; COMMENT ON COLUMN notificationcommand_argument.id IS 'sha1(environment.id + notificationcommand_id + argument_key)'; COMMENT ON COLUMN notificationcommand_argument.environment_id IS 'env.id'; COMMENT ON COLUMN notificationcommand_argument.notificationcommand_id IS 'notificationcommand.id'; COMMENT ON COLUMN notificationcommand_argument.properties_checksum IS 'sha1(all properties)'; CREATE TABLE notificationcommand_envvar ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, notificationcommand_id bytea20 NOT NULL, envvar_key varchar(255) NOT NULL, properties_checksum bytea20 NOT NULL, envvar_value text NOT NULL, CONSTRAINT pk_notificationcommand_envvar PRIMARY KEY (id) ); ALTER TABLE notificationcommand_envvar ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE notificationcommand_envvar ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE notificationcommand_envvar ALTER COLUMN notificationcommand_id SET STORAGE PLAIN; ALTER TABLE notificationcommand_envvar ALTER COLUMN properties_checksum SET STORAGE PLAIN; COMMENT ON COLUMN notificationcommand_envvar.id IS 'sha1(environment.id + notificationcommand_id + envvar_key)'; COMMENT ON COLUMN notificationcommand_envvar.environment_id IS 'env.id'; COMMENT ON COLUMN notificationcommand_envvar.notificationcommand_id IS 'notificationcommand.id'; COMMENT ON COLUMN notificationcommand_envvar.properties_checksum IS 'sha1(all properties)'; CREATE TABLE notificationcommand_customvar ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, notificationcommand_id bytea20 NOT NULL, customvar_id bytea20 NOT NULL, CONSTRAINT pk_notificationcommand_customvar PRIMARY KEY (id) ); ALTER TABLE notificationcommand_customvar ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE notificationcommand_customvar ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE notificationcommand_customvar ALTER COLUMN notificationcommand_id SET STORAGE PLAIN; ALTER TABLE notificationcommand_customvar ALTER COLUMN customvar_id SET STORAGE PLAIN; CREATE INDEX idx_notificationcommand_customvar_notificationcommand_id ON notificationcommand_customvar(notificationcommand_id, customvar_id); CREATE INDEX idx_notificationcommand_customvar_customvar_id ON notificationcommand_customvar(customvar_id, notificationcommand_id); COMMENT ON COLUMN notificationcommand_customvar.id IS 'sha1(environment.id + notificationcommand_id + customvar_id)'; COMMENT ON COLUMN notificationcommand_customvar.environment_id IS 'environment.id'; COMMENT ON COLUMN notificationcommand_customvar.notificationcommand_id IS 'notificationcommand.id'; COMMENT ON COLUMN notificationcommand_customvar.customvar_id IS 'customvar.id'; CREATE TABLE comment ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, object_type checkable_type NOT NULL DEFAULT 'host', host_id bytea20 NOT NULL, service_id bytea20 DEFAULT NULL, name_checksum bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, name varchar(548) NOT NULL, author citext NOT NULL, text text NOT NULL, entry_type comment_type NOT NULL DEFAULT 'comment', entry_time biguint NOT NULL, is_persistent boolenum NOT NULL DEFAULT 'n', is_sticky boolenum NOT NULL DEFAULT 'n', expire_time biguint DEFAULT NULL, zone_id bytea20 DEFAULT NULL, CONSTRAINT pk_comment PRIMARY KEY (id) ); ALTER TABLE comment ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE comment ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE comment ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE comment ALTER COLUMN service_id SET STORAGE PLAIN; ALTER TABLE comment ALTER COLUMN name_checksum SET STORAGE PLAIN; ALTER TABLE comment ALTER COLUMN properties_checksum SET STORAGE PLAIN; ALTER TABLE comment ALTER COLUMN zone_id SET STORAGE PLAIN; CREATE INDEX idx_comment_name ON comment(name); CREATE INDEX idx_comment_entry_time ON comment(entry_time); CREATE INDEX idx_comment_author ON comment(author); CREATE INDEX idx_comment_expire_time ON comment(expire_time); COMMENT ON COLUMN comment.id IS 'sha1(environment.id + name)'; COMMENT ON COLUMN comment.environment_id IS 'environment.id'; COMMENT ON COLUMN comment.host_id IS 'host.id'; COMMENT ON COLUMN comment.service_id IS 'service.id'; COMMENT ON COLUMN comment.name_checksum IS 'sha1(name)'; COMMENT ON COLUMN comment.properties_checksum IS 'sha1(all properties)'; COMMENT ON COLUMN comment.name IS '255+1+255+1+36, i.e. "host.name!service.name!UUID"'; COMMENT ON COLUMN comment.zone_id IS 'zone.id'; COMMENT ON INDEX idx_comment_name IS 'Comment detail filter'; COMMENT ON INDEX idx_comment_entry_time IS 'Comment list fileted/ordered by entry_time'; COMMENT ON INDEX idx_comment_author IS 'Comment list filtered/ordered by author'; COMMENT ON INDEX idx_comment_expire_time IS 'Comment list filtered/ordered by expire_time'; CREATE TABLE downtime ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, triggered_by_id bytea20 DEFAULT NULL, parent_id bytea20 DEFAULT NULL, object_type checkable_type NOT NULL DEFAULT 'host', host_id bytea20 NOT NULL, service_id bytea20 DEFAULT NULL, name_checksum bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, name varchar(548) NOT NULL, author citext NOT NULL, comment text NOT NULL, entry_time biguint NOT NULL, scheduled_start_time biguint NOT NULL, scheduled_end_time biguint NOT NULL, scheduled_duration biguint NOT NULL, is_flexible boolenum NOT NULL DEFAULT 'n', flexible_duration biguint NOT NULL, is_in_effect boolenum NOT NULL DEFAULT 'n', start_time biguint DEFAULT NULL, end_time biguint DEFAULT NULL, duration biguint NOT NULL, scheduled_by varchar(767) DEFAULT NULL, zone_id bytea20 DEFAULT NULL, CONSTRAINT pk_downtime PRIMARY KEY (id) ); ALTER TABLE downtime ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE downtime ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE downtime ALTER COLUMN triggered_by_id SET STORAGE PLAIN; ALTER TABLE downtime ALTER COLUMN parent_id SET STORAGE PLAIN; ALTER TABLE downtime ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE downtime ALTER COLUMN service_id SET STORAGE PLAIN; ALTER TABLE downtime ALTER COLUMN name_checksum SET STORAGE PLAIN; ALTER TABLE downtime ALTER COLUMN properties_checksum SET STORAGE PLAIN; ALTER TABLE downtime ALTER COLUMN zone_id SET STORAGE PLAIN; CREATE INDEX idx_downtime_is_in_effect ON downtime(is_in_effect, start_time); CREATE INDEX idx_downtime_name ON downtime(name); CREATE INDEX idx_downtime_entry_time ON downtime(entry_time); CREATE INDEX idx_downtime_start_time ON downtime(start_time); CREATE INDEX idx_downtime_end_time ON downtime(end_time); CREATE INDEX idx_downtime_scheduled_start_time ON downtime(scheduled_start_time); CREATE INDEX idx_downtime_scheduled_end_time ON downtime(scheduled_end_time); CREATE INDEX idx_downtime_author ON downtime(author); CREATE INDEX idx_downtime_duration ON downtime(duration); COMMENT ON COLUMN downtime.id IS 'sha1(environment.id + name)'; COMMENT ON COLUMN downtime.environment_id IS 'environment.id'; COMMENT ON COLUMN downtime.triggered_by_id IS 'The ID of the downtime that triggered this downtime. This is set when creating downtimes on a host or service higher up in the dependency chain using the "child_option" "DowntimeTriggeredChildren" and can also be set manually via the API.'; COMMENT ON COLUMN downtime.parent_id IS 'For service downtimes, the ID of the host downtime that created this downtime by using the "all_services" flag of the schedule-downtime API.'; COMMENT ON COLUMN downtime.host_id IS 'host.id'; COMMENT ON COLUMN downtime.service_id IS 'service.id'; COMMENT ON COLUMN downtime.name_checksum IS 'sha1(name)'; COMMENT ON COLUMN downtime.name IS '255+1+255+1+36, i.e. "host.name!service.name!UUID"'; COMMENT ON COLUMN downtime.properties_checksum IS 'sha1(all properties)'; COMMENT ON COLUMN downtime.start_time IS 'Time when the host went into a problem state during the downtimes timeframe'; COMMENT ON COLUMN downtime.end_time IS 'Problem state assumed: scheduled_end_time if fixed, start_time + flexible_duration otherwise'; COMMENT ON COLUMN downtime.duration IS 'Duration of the downtime: When the downtime is flexible, this is the same as flexible_duration otherwise scheduled_duration'; COMMENT ON COLUMN downtime.scheduled_by IS 'Name of the ScheduledDowntime which created this Downtime. 255+1+255+1+255, i.e. "host.name!service.name!scheduled-downtime-name"'; COMMENT ON COLUMN downtime.zone_id IS 'zone.id'; COMMENT ON INDEX idx_downtime_is_in_effect IS 'Downtime list filtered/ordered by severity'; COMMENT ON INDEX idx_downtime_name IS 'Downtime detail filter'; COMMENT ON INDEX idx_downtime_entry_time IS 'Downtime list filtered/ordered by entry_time'; COMMENT ON INDEX idx_downtime_start_time IS 'Downtime list filtered/ordered by start_time'; COMMENT ON INDEX idx_downtime_end_time IS 'Downtime list filtered/ordered by end_time'; COMMENT ON INDEX idx_downtime_scheduled_start_time IS 'Downtime list filtered/ordered by scheduled_start_time'; COMMENT ON INDEX idx_downtime_scheduled_end_time IS 'Downtime list filtered/ordered by scheduled_end_time'; COMMENT ON INDEX idx_downtime_author IS 'Downtime list filtered/ordered by author'; COMMENT ON INDEX idx_downtime_duration IS 'Downtime list filtered/ordered by duration'; CREATE TABLE notification ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, name_checksum bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, name varchar(767) NOT NULL, name_ci citext NOT NULL, host_id bytea20 NOT NULL, service_id bytea20 DEFAULT NULL, notificationcommand_id bytea20 NOT NULL, times_begin uint DEFAULT NULL, times_end uint DEFAULT NULL, notification_interval uint NOT NULL, timeperiod_id bytea20 DEFAULT NULL, states tinyuint NOT NULL, types smalluint NOT NULL, zone_id bytea20 DEFAULT NULL, CONSTRAINT pk_notification PRIMARY KEY (id) ); ALTER TABLE notification ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE notification ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE notification ALTER COLUMN name_checksum SET STORAGE PLAIN; ALTER TABLE notification ALTER COLUMN properties_checksum SET STORAGE PLAIN; ALTER TABLE notification ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE notification ALTER COLUMN service_id SET STORAGE PLAIN; ALTER TABLE notification ALTER COLUMN notificationcommand_id SET STORAGE PLAIN; ALTER TABLE notification ALTER COLUMN timeperiod_id SET STORAGE PLAIN; ALTER TABLE notification ALTER COLUMN zone_id SET STORAGE PLAIN; CREATE INDEX idx_notification_host_id ON notification(host_id); CREATE INDEX idx_notification_service_id ON notification(service_id); COMMENT ON COLUMN notification.id IS 'sha1(environment.id + name)'; COMMENT ON COLUMN notification.environment_id IS 'environment.id'; COMMENT ON COLUMN notification.name_checksum IS 'sha1(name)'; COMMENT ON COLUMN notification.properties_checksum IS 'sha1(all properties)'; COMMENT ON COLUMN notification.name IS '255+1+255+1+255, i.e. "host.name!service.name!notification.name"'; COMMENT ON COLUMN notification.host_id IS 'host.id'; COMMENT ON COLUMN notification.service_id IS 'service.id'; COMMENT ON COLUMN notification.notificationcommand_id IS 'command.id'; COMMENT ON COLUMN notification.timeperiod_id IS 'timeperiod.id'; COMMENT ON COLUMN notification.zone_id IS 'zone.id'; CREATE TABLE notification_user ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, notification_id bytea20 NOT NULL, user_id bytea20 NOT NULL, CONSTRAINT pk_notification_user PRIMARY KEY (id) ); ALTER TABLE notification_user ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE notification_user ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE notification_user ALTER COLUMN notification_id SET STORAGE PLAIN; ALTER TABLE notification_user ALTER COLUMN user_id SET STORAGE PLAIN; CREATE INDEX idx_notification_user_user_id ON notification_user(user_id, notification_id); CREATE INDEX idx_notification_user_notification_id ON notification_user(notification_id, user_id); COMMENT ON COLUMN notification_user.id IS 'sha1(environment.id + notification_id + user_id)'; COMMENT ON COLUMN notification_user.environment_id IS 'environment.id'; COMMENT ON COLUMN notification_user.notification_id IS 'notification.id'; COMMENT ON COLUMN notification_user.user_id IS 'user.id'; CREATE TABLE notification_usergroup ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, notification_id bytea20 NOT NULL, usergroup_id bytea20 NOT NULL, CONSTRAINT pk_notification_usergroup PRIMARY KEY (id) ); ALTER TABLE notification_usergroup ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE notification_usergroup ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE notification_usergroup ALTER COLUMN notification_id SET STORAGE PLAIN; ALTER TABLE notification_usergroup ALTER COLUMN usergroup_id SET STORAGE PLAIN; CREATE INDEX idx_notification_usergroup_usergroup_id ON notification_usergroup(usergroup_id, notification_id); CREATE INDEX idx_notification_usergroup_notification_id ON notification_usergroup(notification_id, usergroup_id); COMMENT ON COLUMN notification_usergroup.id IS 'sha1(environment.id + notification_id + usergroup_id)'; COMMENT ON COLUMN notification_usergroup.environment_id IS 'environment.id'; COMMENT ON COLUMN notification_usergroup.notification_id IS 'notification.id'; COMMENT ON COLUMN notification_usergroup.usergroup_id IS 'usergroup.id'; CREATE TABLE notification_recipient ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, notification_id bytea20 NOT NULL, user_id bytea20 NULL, usergroup_id bytea20 NULL, CONSTRAINT pk_notification_recipient PRIMARY KEY (id) ); ALTER TABLE notification_recipient ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE notification_recipient ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE notification_recipient ALTER COLUMN notification_id SET STORAGE PLAIN; ALTER TABLE notification_recipient ALTER COLUMN user_id SET STORAGE PLAIN; ALTER TABLE notification_recipient ALTER COLUMN usergroup_id SET STORAGE PLAIN; CREATE INDEX idx_notification_recipient_user_id ON notification_recipient(user_id, notification_id); CREATE INDEX idx_notification_recipient_notification_id_user ON notification_recipient(notification_id, user_id); CREATE INDEX idx_notification_recipient_usergroup_id ON notification_recipient(usergroup_id, notification_id); CREATE INDEX idx_notification_recipient_notification_id_usergroup ON notification_recipient(notification_id, usergroup_id); COMMENT ON COLUMN notification_recipient.id IS 'sha1(environment.id + notification_id + (user_id | usergroup_id))'; COMMENT ON COLUMN notification_recipient.environment_id IS 'environment.id'; COMMENT ON COLUMN notification_recipient.notification_id IS 'notification.id'; COMMENT ON COLUMN notification_recipient.user_id IS 'user.id'; COMMENT ON COLUMN notification_recipient.usergroup_id IS 'usergroup.id'; CREATE TABLE notification_customvar ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, notification_id bytea20 NOT NULL, customvar_id bytea20 NOT NULL, CONSTRAINT pk_notification_customvar PRIMARY KEY (id) ); ALTER TABLE notification_customvar ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE notification_customvar ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE notification_customvar ALTER COLUMN notification_id SET STORAGE PLAIN; ALTER TABLE notification_customvar ALTER COLUMN customvar_id SET STORAGE PLAIN; CREATE INDEX idx_notification_customvar_notification_id ON notification_customvar(notification_id, customvar_id); CREATE INDEX idx_notification_customvar_customvar_id ON notification_customvar(customvar_id, notification_id); COMMENT ON COLUMN notification_customvar.id IS 'sha1(environment.id + notification_id + customvar_id)'; COMMENT ON COLUMN notification_customvar.environment_id IS 'environment.id'; COMMENT ON COLUMN notification_customvar.notification_id IS 'notification.id'; COMMENT ON COLUMN notification_customvar.customvar_id IS 'customvar.id'; CREATE TABLE icon_image ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, icon_image citext NOT NULL, CONSTRAINT pk_icon_image PRIMARY KEY (id) ); ALTER TABLE icon_image ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE icon_image ALTER COLUMN environment_id SET STORAGE PLAIN; CREATE INDEX idx_icon_image ON icon_image(icon_image); COMMENT ON COLUMN icon_image.id IS 'sha1(environment.id + icon_image)'; COMMENT ON COLUMN icon_image.environment_id IS 'environment.id'; CREATE TABLE action_url ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, action_url citext NOT NULL, CONSTRAINT pk_action_url PRIMARY KEY (id) ); ALTER TABLE action_url ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE action_url ALTER COLUMN environment_id SET STORAGE PLAIN; CREATE INDEX idx_action_url ON action_url(action_url); COMMENT ON COLUMN action_url.id IS 'sha1(environment.id + action_url)'; COMMENT ON COLUMN action_url.environment_id IS 'environment.id'; CREATE TABLE notes_url ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, notes_url citext NOT NULL, CONSTRAINT pk_notes_url PRIMARY KEY (id) ); ALTER TABLE notes_url ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE notes_url ALTER COLUMN environment_id SET STORAGE PLAIN; CREATE INDEX idx_notes_url ON notes_url(notes_url); COMMENT ON COLUMN notes_url.id IS 'sha1(environment.id + notes_url)'; COMMENT ON COLUMN notes_url.environment_id IS 'environment.id'; CREATE TABLE timeperiod ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, name_checksum bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, name varchar(255) NOT NULL, name_ci citext NOT NULL, display_name citext NOT NULL, prefer_includes boolenum NOT NULL DEFAULT 'n', zone_id bytea20 DEFAULT NULL, CONSTRAINT pk_timeperiod PRIMARY KEY (id) ); ALTER TABLE timeperiod ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE timeperiod ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE timeperiod ALTER COLUMN name_checksum SET STORAGE PLAIN; ALTER TABLE timeperiod ALTER COLUMN properties_checksum SET STORAGE PLAIN; ALTER TABLE timeperiod ALTER COLUMN zone_id SET STORAGE PLAIN; COMMENT ON COLUMN timeperiod.id IS 'sha1(environment.id + name)'; COMMENT ON COLUMN timeperiod.environment_id IS 'env.id'; COMMENT ON COLUMN timeperiod.name_checksum IS 'sha1(name)'; COMMENT ON COLUMN timeperiod.properties_checksum IS 'sha1(all properties)'; COMMENT ON COLUMN timeperiod.zone_id IS 'zone.id'; CREATE TABLE timeperiod_range ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, timeperiod_id bytea20 NOT NULL, range_key citext NOT NULL, range_value text NOT NULL, CONSTRAINT pk_timeperiod_range PRIMARY KEY (id) ); ALTER TABLE timeperiod_range ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE timeperiod_range ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE timeperiod_range ALTER COLUMN timeperiod_id SET STORAGE PLAIN; COMMENT ON COLUMN timeperiod_range.id IS 'sha1(environment.id + range_id + timeperiod_id)'; COMMENT ON COLUMN timeperiod_range.environment_id IS 'env.id'; COMMENT ON COLUMN timeperiod_range.timeperiod_id IS 'timeperiod.id'; CREATE TABLE timeperiod_override_include ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, timeperiod_id bytea20 NOT NULL, override_id bytea20 NOT NULL, CONSTRAINT pk_timeperiod_override_include PRIMARY KEY (id) ); ALTER TABLE timeperiod_override_include ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE timeperiod_override_include ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE timeperiod_override_include ALTER COLUMN timeperiod_id SET STORAGE PLAIN; ALTER TABLE timeperiod_override_include ALTER COLUMN override_id SET STORAGE PLAIN; COMMENT ON COLUMN timeperiod_override_include.id IS 'sha1(environment.id + include_id + timeperiod_id)'; COMMENT ON COLUMN timeperiod_override_include.environment_id IS 'env.id'; COMMENT ON COLUMN timeperiod_override_include.timeperiod_id IS 'timeperiod.id'; COMMENT ON COLUMN timeperiod_override_include.override_id IS 'timeperiod.id'; CREATE TABLE timeperiod_override_exclude ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, timeperiod_id bytea20 NOT NULL, override_id bytea20 NOT NULL, CONSTRAINT pk_timeperiod_override_exclude PRIMARY KEY (id) ); ALTER TABLE timeperiod_override_exclude ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE timeperiod_override_exclude ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE timeperiod_override_exclude ALTER COLUMN timeperiod_id SET STORAGE PLAIN; ALTER TABLE timeperiod_override_exclude ALTER COLUMN override_id SET STORAGE PLAIN; COMMENT ON COLUMN timeperiod_override_exclude.id IS 'sha1(environment.id + exclude_id + timeperiod_id)'; COMMENT ON COLUMN timeperiod_override_exclude.environment_id IS 'env.id'; COMMENT ON COLUMN timeperiod_override_exclude.timeperiod_id IS 'timeperiod.id'; COMMENT ON COLUMN timeperiod_override_exclude.override_id IS 'timeperiod.id'; CREATE TABLE timeperiod_customvar ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, timeperiod_id bytea20 NOT NULL, customvar_id bytea20 NOT NULL, CONSTRAINT pk_timeperiod_customvar PRIMARY KEY (id) ); ALTER TABLE timeperiod_customvar ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE timeperiod_customvar ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE timeperiod_customvar ALTER COLUMN timeperiod_id SET STORAGE PLAIN; ALTER TABLE timeperiod_customvar ALTER COLUMN customvar_id SET STORAGE PLAIN; CREATE INDEX idx_timeperiod_customvar_timeperiod_id ON timeperiod_customvar(timeperiod_id, customvar_id); CREATE INDEX idx_timeperiod_customvar_customvar_id ON timeperiod_customvar(customvar_id, timeperiod_id); COMMENT ON COLUMN timeperiod_customvar.id IS 'sha1(environment.id + timeperiod_id + customvar_id)'; COMMENT ON COLUMN timeperiod_customvar.environment_id IS 'environment.id'; COMMENT ON COLUMN timeperiod_customvar.timeperiod_id IS 'timeperiod.id'; COMMENT ON COLUMN timeperiod_customvar.customvar_id IS 'customvar.id'; CREATE TABLE customvar ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, name_checksum bytea20 NOT NULL, name citext NOT NULL, value text NOT NULL, CONSTRAINT pk_customvar PRIMARY KEY (id) ); ALTER TABLE customvar ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE customvar ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE customvar ALTER COLUMN name_checksum SET STORAGE PLAIN; COMMENT ON COLUMN customvar.id IS 'sha1(environment.id + name + value)'; COMMENT ON COLUMN customvar.environment_id IS 'environment.id'; COMMENT ON COLUMN customvar.name_checksum IS 'sha1(name)'; CREATE TABLE customvar_flat ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, customvar_id bytea20 NOT NULL, flatname_checksum bytea20 NOT NULL, flatname citext NOT NULL, flatvalue text DEFAULT NULL, CONSTRAINT pk_customvar_flat PRIMARY KEY (id) ); ALTER TABLE customvar_flat ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE customvar_flat ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE customvar_flat ALTER COLUMN customvar_id SET STORAGE PLAIN; ALTER TABLE customvar_flat ALTER COLUMN flatname_checksum SET STORAGE PLAIN; CREATE INDEX idx_customvar_flat_customvar_id ON customvar_flat(customvar_id); CREATE INDEX idx_customvar_flat_flatname_flatvalue ON customvar_flat(flatname, flatvalue); COMMENT ON COLUMN customvar_flat.id IS 'sha1(environment.id + flatname + flatvalue)'; COMMENT ON COLUMN customvar_flat.environment_id IS 'environment.id'; COMMENT ON COLUMN customvar_flat.customvar_id IS 'sha1(customvar.id)'; COMMENT ON COLUMN customvar_flat.flatname_checksum IS 'sha1(flatname after conversion)'; COMMENT ON COLUMN customvar_flat.flatname IS 'Path converted with `.` and `[ ]`'; COMMENT ON INDEX idx_customvar_flat_flatname_flatvalue IS 'Lists filtered by custom variable'; CREATE TABLE "user" ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, name_checksum bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, name varchar(255) NOT NULL, name_ci citext NOT NULL, display_name citext NOT NULL, email varchar(255) NOT NULL, pager varchar(255) NOT NULL, notifications_enabled boolenum NOT NULL DEFAULT 'n', timeperiod_id bytea20 DEFAULT NULL, states tinyuint NOT NULL, types smalluint NOT NULL, zone_id bytea20 DEFAULT NULL, CONSTRAINT pk_user PRIMARY KEY (id) ); ALTER TABLE "user" ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE "user" ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE "user" ALTER COLUMN name_checksum SET STORAGE PLAIN; ALTER TABLE "user" ALTER COLUMN properties_checksum SET STORAGE PLAIN; ALTER TABLE "user" ALTER COLUMN timeperiod_id SET STORAGE PLAIN; ALTER TABLE "user" ALTER COLUMN zone_id SET STORAGE PLAIN; CREATE INDEX idx_user_display_name ON "user"(display_name); CREATE INDEX idx_user_name_ci ON "user"(name_ci); CREATE INDEX idx_user_name ON "user"(name); COMMENT ON COLUMN "user".id IS 'sha1(environment.id + name)'; COMMENT ON COLUMN "user".environment_id IS 'environment.id'; COMMENT ON COLUMN "user".name_checksum IS 'sha1(name)'; COMMENT ON COLUMN "user".properties_checksum IS 'sha1(all properties)'; COMMENT ON COLUMN "user".timeperiod_id IS 'timeperiod.id'; COMMENT ON COLUMN "user".zone_id IS 'zone.id'; COMMENT ON INDEX idx_user_display_name IS 'User list filtered/ordered by display_name'; COMMENT ON INDEX idx_user_name_ci IS 'User list filtered using quick search'; COMMENT ON INDEX idx_user_name IS 'User list filtered/ordered by name; User detail filter'; CREATE TABLE usergroup ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, name_checksum bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, name varchar(255) NOT NULL, name_ci citext NOT NULL, display_name citext NOT NULL, zone_id bytea20 DEFAULT NULL, CONSTRAINT pk_usergroup PRIMARY KEY (id) ); ALTER TABLE usergroup ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE usergroup ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE usergroup ALTER COLUMN name_checksum SET STORAGE PLAIN; ALTER TABLE usergroup ALTER COLUMN properties_checksum SET STORAGE PLAIN; ALTER TABLE usergroup ALTER COLUMN zone_id SET STORAGE PLAIN; CREATE INDEX idx_usergroup_display_name ON usergroup(display_name); CREATE INDEX idx_usergroup_name_ci ON usergroup(name_ci); CREATE INDEX idx_usergroup_name ON usergroup(name); COMMENT ON COLUMN usergroup.id IS 'sha1(environment.id + name)'; COMMENT ON COLUMN usergroup.environment_id IS 'environment.id'; COMMENT ON COLUMN usergroup.name_checksum IS 'sha1(name)'; COMMENT ON COLUMN usergroup.properties_checksum IS 'sha1(all properties)'; COMMENT ON COLUMN usergroup.zone_id IS 'zone.id'; COMMENT ON INDEX idx_usergroup_display_name IS 'Usergroup list filtered/ordered by display_name'; COMMENT ON INDEX idx_usergroup_name_ci IS 'Usergroup list filtered using quick search'; COMMENT ON INDEX idx_usergroup_name IS 'Usergroup list filtered/ordered by name; User detail filter'; CREATE TABLE usergroup_member ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, user_id bytea20 NOT NULL, usergroup_id bytea20 NOT NULL, CONSTRAINT pk_usergroup_member PRIMARY KEY (id) ); ALTER TABLE usergroup_member ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE usergroup_member ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE usergroup_member ALTER COLUMN user_id SET STORAGE PLAIN; ALTER TABLE usergroup_member ALTER COLUMN usergroup_id SET STORAGE PLAIN; CREATE INDEX idx_usergroup_member_user_id ON usergroup_member(user_id, usergroup_id); CREATE INDEX idx_usergroup_member_usergroup_id ON usergroup_member(usergroup_id, user_id); COMMENT ON COLUMN usergroup_member.id IS 'sha1(environment.id + usergroup_id + user_id)'; COMMENT ON COLUMN usergroup_member.environment_id IS 'environment.id'; COMMENT ON COLUMN usergroup_member.user_id IS 'user.id'; COMMENT ON COLUMN usergroup_member.usergroup_id IS 'usergroup.id'; CREATE TABLE user_customvar ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, user_id bytea20 NOT NULL, customvar_id bytea20 NOT NULL, CONSTRAINT pk_user_customvar PRIMARY KEY (id) ); ALTER TABLE user_customvar ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE user_customvar ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE user_customvar ALTER COLUMN user_id SET STORAGE PLAIN; ALTER TABLE user_customvar ALTER COLUMN customvar_id SET STORAGE PLAIN; CREATE INDEX idx_user_customvar_user_id ON user_customvar(user_id, customvar_id); CREATE INDEX idx_user_customvar_customvar_id ON user_customvar(customvar_id, user_id); COMMENT ON COLUMN user_customvar.id IS 'sha1(environment.id + user_id + customvar_id)'; COMMENT ON COLUMN user_customvar.environment_id IS 'environment.id'; COMMENT ON COLUMN user_customvar.user_id IS 'user.id'; COMMENT ON COLUMN user_customvar.customvar_id IS 'customvar.id'; CREATE TABLE usergroup_customvar ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, usergroup_id bytea20 NOT NULL, customvar_id bytea20 NOT NULL, CONSTRAINT pk_usergroup_customvar PRIMARY KEY (id) ); ALTER TABLE usergroup_customvar ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE usergroup_customvar ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE usergroup_customvar ALTER COLUMN usergroup_id SET STORAGE PLAIN; ALTER TABLE usergroup_customvar ALTER COLUMN customvar_id SET STORAGE PLAIN; CREATE INDEX idx_usergroup_customvar_usergroup_id ON usergroup_customvar(usergroup_id, customvar_id); CREATE INDEX idx_usergroup_customvar_customvar_id ON usergroup_customvar(customvar_id, usergroup_id); COMMENT ON COLUMN usergroup_customvar.id IS 'sha1(environment.id + usergroup_id + customvar_id)'; COMMENT ON COLUMN usergroup_customvar.environment_id IS 'environment.id'; COMMENT ON COLUMN usergroup_customvar.usergroup_id IS 'usergroup.id'; COMMENT ON COLUMN usergroup_customvar.customvar_id IS 'customvar.id'; CREATE TABLE zone ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, name_checksum bytea20 NOT NULL, properties_checksum bytea20 NOT NULL, name varchar(255) NOT NULL, name_ci citext NOT NULL, is_global boolenum NOT NULL DEFAULT 'n', parent_id bytea20 DEFAULT NULL, depth tinyuint NOT NULL, CONSTRAINT pk_zone PRIMARY KEY (id) ); ALTER TABLE zone ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE zone ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE zone ALTER COLUMN name_checksum SET STORAGE PLAIN; ALTER TABLE zone ALTER COLUMN properties_checksum SET STORAGE PLAIN; ALTER TABLE zone ALTER COLUMN parent_id SET STORAGE PLAIN; CREATE UNIQUE INDEX idx_environment_id_id ON zone(environment_id, id); CREATE INDEX idx_zone_parent_id ON zone(parent_id); COMMENT ON COLUMN zone.id IS 'sha1(environment.id + name)'; COMMENT ON COLUMN zone.environment_id IS 'environment.id'; COMMENT ON COLUMN zone.name_checksum IS 'sha1(name)'; COMMENT ON COLUMN zone.properties_checksum IS 'sha1(all properties)'; COMMENT ON COLUMN zone.parent_id IS 'zone.id'; CREATE TABLE notification_history ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, endpoint_id bytea20 DEFAULT NULL, object_type checkable_type NOT NULL DEFAULT 'host', host_id bytea20 NOT NULL, service_id bytea20 DEFAULT NULL, notification_id bytea20 NOT NULL, type notification_type NOT NULL DEFAULT 'downtime_start', send_time biguint NOT NULL, state tinyuint NOT NULL, previous_hard_state tinyuint NOT NULL, author text NOT NULL, "text" text NOT NULL, users_notified smalluint NOT NULL, CONSTRAINT pk_notification_history PRIMARY KEY (id) ); ALTER TABLE notification_history ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE notification_history ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE notification_history ALTER COLUMN endpoint_id SET STORAGE PLAIN; ALTER TABLE notification_history ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE notification_history ALTER COLUMN service_id SET STORAGE PLAIN; ALTER TABLE notification_history ALTER COLUMN notification_id SET STORAGE PLAIN; CREATE INDEX idx_notification_history_send_time ON notification_history(send_time DESC); CREATE INDEX idx_notification_history_env_send_time ON notification_history(environment_id, send_time); COMMENT ON COLUMN notification_history.id IS 'sha1(environment.name + notification.name + type + send_time)'; COMMENT ON COLUMN notification_history.environment_id IS 'environment.id'; COMMENT ON COLUMN notification_history.endpoint_id IS 'endpoint.id'; COMMENT ON COLUMN notification_history.host_id IS 'host.id'; COMMENT ON COLUMN notification_history.service_id IS 'service.id'; COMMENT ON COLUMN notification_history.notification_id IS 'notification.id'; COMMENT ON INDEX idx_notification_history_send_time IS 'Notification list filtered/ordered by send_time'; COMMENT ON INDEX idx_notification_history_env_send_time IS 'Filter for history retention'; CREATE TABLE user_notification_history ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, notification_history_id bytea20 NOT NULL, user_id bytea20 NOT NULL, CONSTRAINT pk_user_notification_history PRIMARY KEY (id), CONSTRAINT fk_user_notification_history_notification_history FOREIGN KEY (notification_history_id) REFERENCES notification_history (id) ON DELETE CASCADE ); ALTER TABLE user_notification_history ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE user_notification_history ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE user_notification_history ALTER COLUMN notification_history_id SET STORAGE PLAIN; ALTER TABLE user_notification_history ALTER COLUMN user_id SET STORAGE PLAIN; COMMENT ON COLUMN user_notification_history.id IS 'sha1(notification_history_id + user_id)'; COMMENT ON COLUMN user_notification_history.environment_id IS 'environment.id'; COMMENT ON COLUMN user_notification_history.notification_history_id IS 'UUID notification_history.id'; COMMENT ON COLUMN user_notification_history.user_id IS 'user.id'; CREATE TABLE state_history ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, endpoint_id bytea20 DEFAULT NULL, object_type checkable_type NOT NULL DEFAULT 'host', host_id bytea20 NOT NULL, service_id bytea20 DEFAULT NULL, event_time biguint NOT NULL, state_type state_type NOT NULL DEFAULT 'hard', soft_state tinyuint NOT NULL, hard_state tinyuint NOT NULL, previous_soft_state tinyuint NOT NULL, previous_hard_state tinyuint NOT NULL, check_attempt uint NOT NULL, -- may be a tinyuint, see https://icinga.com/docs/icinga-db/latest/doc/04-Upgrading/#upgrading-to-icinga-db-v112 output text DEFAULT NULL, long_output text DEFAULT NULL, max_check_attempts uint NOT NULL, check_source text DEFAULT NULL, scheduling_source text DEFAULT NULL, CONSTRAINT pk_state_history PRIMARY KEY (id) ); ALTER TABLE state_history ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE state_history ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE state_history ALTER COLUMN endpoint_id SET STORAGE PLAIN; ALTER TABLE state_history ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE state_history ALTER COLUMN service_id SET STORAGE PLAIN; CREATE INDEX idx_state_history_env_event_time ON state_history(environment_id, event_time); COMMENT ON COLUMN state_history.id IS 'sha1(environment.name + host|service.name + event_time)'; COMMENT ON COLUMN state_history.environment_id IS 'environment.id'; COMMENT ON COLUMN state_history.endpoint_id IS 'endpoint.id'; COMMENT ON COLUMN state_history.host_id IS 'host.id'; COMMENT ON COLUMN state_history.service_id IS 'service.id'; COMMENT ON INDEX idx_state_history_env_event_time IS 'Filter for history retention'; CREATE TABLE downtime_history ( downtime_id bytea20 NOT NULL, environment_id bytea20 NOT NULL, endpoint_id bytea20 DEFAULT NULL, triggered_by_id bytea20 DEFAULT NULL, parent_id bytea20 DEFAULT NULL, object_type checkable_type NOT NULL DEFAULT 'host', host_id bytea20 NOT NULL, service_id bytea20 DEFAULT NULL, entry_time biguint NOT NULL, author citext NOT NULL, cancelled_by citext DEFAULT NULL, comment text NOT NULL, is_flexible boolenum NOT NULL DEFAULT 'n', flexible_duration biguint NOT NULL, scheduled_start_time biguint NOT NULL, scheduled_end_time biguint NOT NULL, start_time biguint NOT NULL, end_time biguint NOT NULL, scheduled_by varchar(767) DEFAULT NULL, has_been_cancelled boolenum NOT NULL DEFAULT 'n', trigger_time biguint NOT NULL, cancel_time biguint DEFAULT NULL, CONSTRAINT pk_downtime_history PRIMARY KEY (downtime_id) ); ALTER TABLE downtime_history ALTER COLUMN downtime_id SET STORAGE PLAIN; ALTER TABLE downtime_history ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE downtime_history ALTER COLUMN endpoint_id SET STORAGE PLAIN; ALTER TABLE downtime_history ALTER COLUMN triggered_by_id SET STORAGE PLAIN; ALTER TABLE downtime_history ALTER COLUMN parent_id SET STORAGE PLAIN; ALTER TABLE downtime_history ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE downtime_history ALTER COLUMN service_id SET STORAGE PLAIN; CREATE INDEX idx_downtime_history_env_end_time ON downtime_history(environment_id, end_time); COMMENT ON COLUMN downtime_history.downtime_id IS 'downtime.id'; COMMENT ON COLUMN downtime_history.environment_id IS 'environment.id'; COMMENT ON COLUMN downtime_history.endpoint_id IS 'endpoint.id'; COMMENT ON COLUMN downtime_history.triggered_by_id IS 'The ID of the downtime that triggered this downtime. This is set when creating downtimes on a host or service higher up in the dependency chain using the "child_option" "DowntimeTriggeredChildren" and can also be set manually via the API.'; COMMENT ON COLUMN downtime_history.parent_id IS 'For service downtimes, the ID of the host downtime that created this downtime by using the "all_services" flag of the schedule-downtime API.'; COMMENT ON COLUMN downtime_history.host_id IS 'host.id'; COMMENT ON COLUMN downtime_history.service_id IS 'service.id'; COMMENT ON COLUMN downtime_history.start_time IS 'Time when the host went into a problem state during the downtimes timeframe'; COMMENT ON COLUMN downtime_history.end_time IS 'Problem state assumed: scheduled_end_time if fixed, start_time + duration otherwise'; COMMENT ON COLUMN downtime_history.scheduled_by IS 'Name of the ScheduledDowntime which created this Downtime. 255+1+255+1+255, i.e. "host.name!service.name!scheduled-downtime-name"'; COMMENT ON INDEX idx_downtime_history_env_end_time IS 'Filter for history retention'; CREATE TABLE comment_history ( comment_id bytea20 NOT NULL, environment_id bytea20 NOT NULL, endpoint_id bytea20 DEFAULT NULL, object_type checkable_type NOT NULL DEFAULT 'host', host_id bytea20 NOT NULL, service_id bytea20 DEFAULT NULL, entry_time biguint NOT NULL, author citext NOT NULL, removed_by citext DEFAULT NULL, comment text NOT NULL, entry_type comment_type NOT NULL DEFAULT 'comment', is_persistent boolenum NOT NULL DEFAULT 'n', is_sticky boolenum NOT NULL DEFAULT 'n', expire_time biguint DEFAULT NULL, remove_time biguint DEFAULT NULL, has_been_removed boolenum NOT NULL DEFAULT 'n', CONSTRAINT pk_comment_history PRIMARY KEY (comment_id) ); ALTER TABLE comment_history ALTER COLUMN comment_id SET STORAGE PLAIN; ALTER TABLE comment_history ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE comment_history ALTER COLUMN endpoint_id SET STORAGE PLAIN; ALTER TABLE comment_history ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE comment_history ALTER COLUMN service_id SET STORAGE PLAIN; CREATE INDEX idx_comment_history_env_remove_time ON comment_history(environment_id, remove_time); COMMENT ON COLUMN comment_history.comment_id IS 'comment.id'; COMMENT ON COLUMN comment_history.environment_id IS 'environment.id'; COMMENT ON COLUMN comment_history.endpoint_id IS 'endpoint.id'; COMMENT ON COLUMN comment_history.host_id IS 'host.id'; COMMENT ON COLUMN comment_history.service_id IS 'service.id'; COMMENT ON INDEX idx_comment_history_env_remove_time IS 'Filter for history retention'; CREATE TABLE flapping_history ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, endpoint_id bytea20 DEFAULT NULL, object_type checkable_type NOT NULL DEFAULT 'host', host_id bytea20 NOT NULL, service_id bytea20 DEFAULT NULL, start_time biguint NOT NULL, end_time biguint DEFAULT NULL, percent_state_change_start float DEFAULT NULL, percent_state_change_end float DEFAULT NULL, flapping_threshold_low float NOT NULL, flapping_threshold_high float NOT NULL, CONSTRAINT pk_flapping_history PRIMARY KEY (id) ); ALTER TABLE flapping_history ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE flapping_history ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE flapping_history ALTER COLUMN endpoint_id SET STORAGE PLAIN; ALTER TABLE flapping_history ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE flapping_history ALTER COLUMN service_id SET STORAGE PLAIN; CREATE INDEX idx_flapping_history_env_end_time ON flapping_history(environment_id, end_time); COMMENT ON COLUMN flapping_history.id IS 'sha1(environment.id + "Host"|"Service" + host|service.name + start_time)'; COMMENT ON COLUMN flapping_history.environment_id IS 'environment.id'; COMMENT ON COLUMN flapping_history.endpoint_id IS 'endpoint.id'; COMMENT ON COLUMN flapping_history.host_id IS 'host.id'; COMMENT ON COLUMN flapping_history.service_id IS 'service.id'; COMMENT ON INDEX idx_flapping_history_env_end_time IS 'Filter for history retention'; CREATE TABLE acknowledgement_history ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, endpoint_id bytea20 DEFAULT NULL, object_type checkable_type NOT NULL DEFAULT 'host', host_id bytea20 NOT NULL, service_id bytea20 DEFAULT NULL, set_time biguint NOT NULL, clear_time biguint DEFAULT NULL, author citext DEFAULT NULL, cleared_by citext DEFAULT NULL, comment text DEFAULT NULL, expire_time biguint DEFAULT NULL, is_sticky boolenum DEFAULT NULL, is_persistent boolenum DEFAULT NULL, CONSTRAINT pk_acknowledgement_history PRIMARY KEY (id) ); ALTER TABLE acknowledgement_history ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE acknowledgement_history ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE acknowledgement_history ALTER COLUMN endpoint_id SET STORAGE PLAIN; ALTER TABLE acknowledgement_history ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE acknowledgement_history ALTER COLUMN service_id SET STORAGE PLAIN; CREATE INDEX idx_acknowledgement_history_env_clear_time ON acknowledgement_history(environment_id, clear_time); COMMENT ON COLUMN acknowledgement_history.id IS 'sha1(environment.id + "Host"|"Service" + host|service.name + set_time)'; COMMENT ON COLUMN acknowledgement_history.environment_id IS 'environment.id'; COMMENT ON COLUMN acknowledgement_history.endpoint_id IS 'endpoint.id'; COMMENT ON COLUMN acknowledgement_history.host_id IS 'host.id'; COMMENT ON COLUMN acknowledgement_history.service_id IS 'service.id'; COMMENT ON COLUMN acknowledgement_history.author IS 'NULL if ack_set event happened before Icinga DB history recording'; COMMENT ON COLUMN acknowledgement_history.comment IS 'NULL if ack_set event happened before Icinga DB history recording'; COMMENT ON COLUMN acknowledgement_history.is_sticky IS 'NULL if ack_set event happened before Icinga DB history recording'; COMMENT ON COLUMN acknowledgement_history.is_persistent IS 'NULL if ack_set event happened before Icinga DB history recording'; COMMENT ON INDEX idx_acknowledgement_history_env_clear_time IS 'Filter for history retention'; CREATE TABLE history ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, endpoint_id bytea20 DEFAULT NULL, object_type checkable_type NOT NULL DEFAULT 'host', host_id bytea20 NOT NULL, service_id bytea20 DEFAULT NULL, notification_history_id bytea20 DEFAULT NULL, state_history_id bytea20 DEFAULT NULL, downtime_history_id bytea20 DEFAULT NULL, comment_history_id bytea20 DEFAULT NULL, flapping_history_id bytea20 DEFAULT NULL, acknowledgement_history_id bytea20 DEFAULT NULL, event_type history_type NOT NULL DEFAULT 'state_change', event_time biguint NOT NULL, CONSTRAINT pk_history PRIMARY KEY (id), CONSTRAINT fk_history_acknowledgement_history FOREIGN KEY (acknowledgement_history_id) REFERENCES acknowledgement_history (id) ON DELETE CASCADE, CONSTRAINT fk_history_comment_history FOREIGN KEY (comment_history_id) REFERENCES comment_history (comment_id) ON DELETE CASCADE, CONSTRAINT fk_history_downtime_history FOREIGN KEY (downtime_history_id) REFERENCES downtime_history (downtime_id) ON DELETE CASCADE, CONSTRAINT fk_history_flapping_history FOREIGN KEY (flapping_history_id) REFERENCES flapping_history (id) ON DELETE CASCADE, CONSTRAINT fk_history_notification_history FOREIGN KEY (notification_history_id) REFERENCES notification_history (id) ON DELETE CASCADE, CONSTRAINT fk_history_state_history FOREIGN KEY (state_history_id) REFERENCES state_history (id) ON DELETE CASCADE ); ALTER TABLE history ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE history ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE history ALTER COLUMN endpoint_id SET STORAGE PLAIN; ALTER TABLE history ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE history ALTER COLUMN service_id SET STORAGE PLAIN; ALTER TABLE history ALTER COLUMN notification_history_id SET STORAGE PLAIN; ALTER TABLE history ALTER COLUMN state_history_id SET STORAGE PLAIN; ALTER TABLE history ALTER COLUMN downtime_history_id SET STORAGE PLAIN; ALTER TABLE history ALTER COLUMN comment_history_id SET STORAGE PLAIN; ALTER TABLE history ALTER COLUMN flapping_history_id SET STORAGE PLAIN; ALTER TABLE history ALTER COLUMN acknowledgement_history_id SET STORAGE PLAIN; CREATE INDEX idx_history_event_time_event_type ON history(event_time, event_type); CREATE INDEX idx_history_acknowledgement ON history(acknowledgement_history_id); CREATE INDEX idx_history_comment ON history(comment_history_id); CREATE INDEX idx_history_downtime ON history(downtime_history_id); CREATE INDEX idx_history_flapping ON history(flapping_history_id); CREATE INDEX idx_history_notification ON history(notification_history_id); CREATE INDEX idx_history_state ON history(state_history_id); CREATE INDEX idx_history_host_service_id ON history(host_id, service_id, event_time); COMMENT ON COLUMN history.id IS 'sha1(environment.name + event_type + x...) given that sha1(environment.name + x...) = *_history_id'; COMMENT ON COLUMN history.environment_id IS 'environment.id'; COMMENT ON COLUMN history.endpoint_id IS 'endpoint.id'; COMMENT ON COLUMN history.host_id IS 'host.id'; COMMENT ON COLUMN history.service_id IS 'service.id'; COMMENT ON COLUMN history.notification_history_id IS 'notification_history.id'; COMMENT ON COLUMN history.state_history_id IS 'state_history.id'; COMMENT ON COLUMN history.downtime_history_id IS 'downtime_history.downtime_id'; COMMENT ON COLUMN history.comment_history_id IS 'comment_history.comment_id'; COMMENT ON COLUMN history.flapping_history_id IS 'flapping_history.id'; COMMENT ON COLUMN history.acknowledgement_history_id IS 'acknowledgement_history.id'; COMMENT ON INDEX idx_history_event_time_event_type IS 'History filtered/ordered by event_time/event_type'; COMMENT ON INDEX idx_history_host_service_id IS 'Host/service history detail filter'; CREATE TABLE sla_history_state ( id bytea20 NOT NULL, environment_id bytea20 NOT NULL, endpoint_id bytea20 DEFAULT NULL, object_type checkable_type NOT NULL, host_id bytea20 NOT NULL, service_id bytea20 DEFAULT NULL, event_time biguint NOT NULL, hard_state tinyuint NOT NULL, previous_hard_state tinyuint NOT NULL, CONSTRAINT pk_sla_history_state PRIMARY KEY (id) ); ALTER TABLE sla_history_state ALTER COLUMN id SET STORAGE PLAIN; ALTER TABLE sla_history_state ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE sla_history_state ALTER COLUMN endpoint_id SET STORAGE PLAIN; ALTER TABLE sla_history_state ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE sla_history_state ALTER COLUMN service_id SET STORAGE PLAIN; CREATE INDEX idx_sla_history_state_event ON sla_history_state(host_id, service_id, event_time); CREATE INDEX idx_sla_history_state_env_event_time ON sla_history_state (environment_id, event_time); COMMENT ON COLUMN sla_history_state.id IS 'state_history.id (may reference already deleted rows)'; COMMENT ON COLUMN sla_history_state.environment_id IS 'environment.id'; COMMENT ON COLUMN sla_history_state.endpoint_id IS 'endpoint.id'; COMMENT ON COLUMN sla_history_state.host_id IS 'host.id'; COMMENT ON COLUMN sla_history_state.service_id IS 'service.id'; COMMENT ON COLUMN sla_history_state.event_time IS 'unix timestamp the event occurred'; COMMENT ON COLUMN sla_history_state.hard_state IS 'hard state after this event'; COMMENT ON COLUMN sla_history_state.previous_hard_state IS 'hard state before this event'; COMMENT ON INDEX idx_sla_history_state_event IS 'Filter for calculating the sla reports'; COMMENT ON INDEX idx_sla_history_state_env_event_time IS 'Filter for history retention'; CREATE TABLE sla_history_downtime ( environment_id bytea20 NOT NULL, endpoint_id bytea20 DEFAULT NULL, object_type checkable_type NOT NULL, host_id bytea20 NOT NULL, service_id bytea20 DEFAULT NULL, downtime_id bytea20 NOT NULL, downtime_start biguint NOT NULL, downtime_end biguint NOT NULL, CONSTRAINT pk_sla_history_downtime PRIMARY KEY (downtime_id) ); ALTER TABLE sla_history_downtime ALTER COLUMN environment_id SET STORAGE PLAIN; ALTER TABLE sla_history_downtime ALTER COLUMN endpoint_id SET STORAGE PLAIN; ALTER TABLE sla_history_downtime ALTER COLUMN host_id SET STORAGE PLAIN; ALTER TABLE sla_history_downtime ALTER COLUMN service_id SET STORAGE PLAIN; ALTER TABLE sla_history_downtime ALTER COLUMN downtime_id SET STORAGE PLAIN; CREATE INDEX idx_sla_history_downtime_event ON sla_history_downtime(host_id, service_id, downtime_start, downtime_end); CREATE INDEX idx_sla_history_downtime_env_downtime_end ON sla_history_downtime (environment_id, downtime_end); COMMENT ON INDEX idx_sla_history_downtime_event IS 'Filter for calculating the sla reports'; COMMENT ON INDEX idx_sla_history_downtime_env_downtime_end IS 'Filter for sla history retention'; COMMENT ON COLUMN sla_history_downtime.environment_id IS 'environment.id'; COMMENT ON COLUMN sla_history_downtime.endpoint_id IS 'endpoint.id'; COMMENT ON COLUMN sla_history_downtime.host_id IS 'host.id'; COMMENT ON COLUMN sla_history_downtime.service_id IS 'service.id'; COMMENT ON COLUMN sla_history_downtime.downtime_id IS 'downtime.id (may reference already deleted rows)'; COMMENT ON COLUMN sla_history_downtime.downtime_start IS 'start time of the downtime'; COMMENT ON COLUMN sla_history_downtime.downtime_end IS 'end time of the downtime'; CREATE SEQUENCE icingadb_schema_id_seq; CREATE TABLE icingadb_schema ( id uint NOT NULL DEFAULT nextval('icingadb_schema_id_seq'), version smalluint NOT NULL, timestamp biguint NOT NULL, CONSTRAINT pk_icingadb_schema PRIMARY KEY (id) ); ALTER SEQUENCE icingadb_schema_id_seq OWNED BY icingadb_schema.id; INSERT INTO icingadb_schema (version, timestamp) VALUES (4, extract(epoch from now()) * 1000); icingadb-1.3.0/schema/pgsql/upgrades/000077500000000000000000000000001477347223700174735ustar00rootroot00000000000000icingadb-1.3.0/schema/pgsql/upgrades/1.1.1.sql000066400000000000000000000035731477347223700206620ustar00rootroot00000000000000ALTER TABLE notification ALTER COLUMN name TYPE varchar(767); COMMENT ON COLUMN notification.name IS '255+1+255+1+255, i.e. "host.name!service.name!notification.name"'; ALTER TABLE customvar_flat ALTER COLUMN flatvalue DROP NOT NULL; CREATE INDEX idx_customvar_flat_flatname_flatvalue ON customvar_flat(flatname, flatvalue); COMMENT ON INDEX idx_customvar_flat_flatname_flatvalue IS 'Lists filtered by custom variable'; CREATE INDEX idx_hostgroup_display_name ON hostgroup(display_name); CREATE INDEX idx_hostgroup_name_ci ON hostgroup(name_ci); COMMENT ON INDEX idx_hostgroup_display_name IS 'Hostgroup list filtered/ordered by display_name'; COMMENT ON INDEX idx_hostgroup_name_ci IS 'Hostgroup list filtered using quick search'; COMMENT ON INDEX idx_hostgroup_name IS 'Host/service/host group list filtered by host group name; Hostgroup detail filter'; CREATE INDEX idx_servicegroup_display_name ON servicegroup(display_name); CREATE INDEX idx_servicegroup_name_ci ON servicegroup(name_ci); COMMENT ON INDEX idx_servicegroup_display_name IS 'Servicegroup list filtered/ordered by display_name'; COMMENT ON INDEX idx_servicegroup_name_ci IS 'Servicegroup list filtered using quick search'; COMMENT ON INDEX idx_servicegroup_name IS 'Host/service/service group list filtered by service group name; Servicegroup detail filter'; ALTER TYPE history_type RENAME TO history_type_old; CREATE TYPE history_type AS ENUM ( 'state_change', 'ack_clear', 'downtime_end', 'flapping_end', 'comment_remove', 'comment_add', 'flapping_start', 'downtime_start', 'ack_set', 'notification' ); ALTER TABLE history ALTER COLUMN event_type DROP DEFAULT, ALTER COLUMN event_type TYPE history_type USING event_type::text::history_type, ALTER COLUMN event_type SET DEFAULT 'state_change'::history_type; DROP TYPE history_type_old; INSERT INTO icingadb_schema (version, timestamp) VALUES (2, extract(epoch from now()) * 1000); icingadb-1.3.0/schema/pgsql/upgrades/1.2.0.sql000066400000000000000000000123461477347223700206600ustar00rootroot00000000000000CREATE OR REPLACE FUNCTION get_sla_ok_percent( in_host_id bytea20, in_service_id bytea20, in_start_time biguint, in_end_time biguint ) RETURNS decimal(7, 4) LANGUAGE plpgsql STABLE PARALLEL RESTRICTED AS $$ DECLARE last_event_time biguint := in_start_time; last_hard_state tinyuint; active_downtimes uint := 0; problem_time biguint := 0; total_time biguint; row record; BEGIN IF in_end_time <= in_start_time THEN RAISE 'end time must be greater than start time'; END IF; total_time := in_end_time - in_start_time; -- Use the latest event at or before the beginning of the SLA interval as the initial state. SELECT hard_state INTO last_hard_state FROM sla_history_state s WHERE s.host_id = in_host_id AND ((in_service_id IS NULL AND s.service_id IS NULL) OR s.service_id = in_service_id) AND s.event_time <= in_start_time ORDER BY s.event_time DESC LIMIT 1; -- If this does not exist, use the previous state from the first event after the beginning of the SLA interval. IF last_hard_state IS NULL THEN SELECT previous_hard_state INTO last_hard_state FROM sla_history_state s WHERE s.host_id = in_host_id AND ((in_service_id IS NULL AND s.service_id IS NULL) OR s.service_id = in_service_id) AND s.event_time > in_start_time ORDER BY s.event_time ASC LIMIT 1; END IF; -- If this also does not exist, use the current host/service state. IF last_hard_state IS NULL THEN IF in_service_id IS NULL THEN SELECT hard_state INTO last_hard_state FROM host_state s WHERE s.host_id = in_host_id; ELSE SELECT hard_state INTO last_hard_state FROM service_state s WHERE s.host_id = in_host_id AND s.service_id = in_service_id; END IF; END IF; IF last_hard_state IS NULL THEN last_hard_state := 0; END IF; FOR row IN ( -- all downtime_start events before the end of the SLA interval -- for downtimes that overlap the SLA interval in any way SELECT GREATEST(downtime_start, in_start_time) AS event_time, 'downtime_start' AS event_type, 1 AS event_prio, NULL::tinyuint AS hard_state, NULL::tinyuint AS previous_hard_state FROM sla_history_downtime d WHERE d.host_id = in_host_id AND ((in_service_id IS NULL AND d.service_id IS NULL) OR d.service_id = in_service_id) AND d.downtime_start < in_end_time AND d.downtime_end >= in_start_time ) UNION ALL ( -- all downtime_end events before the end of the SLA interval -- for downtimes that overlap the SLA interval in any way SELECT downtime_end AS event_time, 'downtime_end' AS event_type, 2 AS event_prio, NULL::tinyuint AS hard_state, NULL::tinyuint AS previous_hard_state FROM sla_history_downtime d WHERE d.host_id = in_host_id AND ((in_service_id IS NULL AND d.service_id IS NULL) OR d.service_id = in_service_id) AND d.downtime_start < in_end_time AND d.downtime_end >= in_start_time AND d.downtime_end < in_end_time ) UNION ALL ( -- all state events strictly in interval SELECT event_time, 'state_change' AS event_type, 0 AS event_prio, hard_state, previous_hard_state FROM sla_history_state s WHERE s.host_id = in_host_id AND ((in_service_id IS NULL AND s.service_id IS NULL) OR s.service_id = in_service_id) AND s.event_time > in_start_time AND s.event_time < in_end_time ) UNION ALL ( -- end event to keep loop simple, values are not used SELECT in_end_time AS event_time, 'end' AS event_type, 3 AS event_prio, NULL::tinyuint AS hard_state, NULL::tinyuint AS previous_hard_state ) ORDER BY event_time, event_prio LOOP IF row.previous_hard_state = 99 THEN total_time := total_time - (row.event_time - last_event_time); ELSEIF ((in_service_id IS NULL AND last_hard_state > 0) OR (in_service_id IS NOT NULL AND last_hard_state > 1)) AND last_hard_state != 99 AND active_downtimes = 0 THEN problem_time := problem_time + row.event_time - last_event_time; END IF; last_event_time := row.event_time; IF row.event_type = 'state_change' THEN last_hard_state := row.hard_state; ELSEIF row.event_type = 'downtime_start' THEN active_downtimes := active_downtimes + 1; ELSEIF row.event_type = 'downtime_end' THEN active_downtimes := active_downtimes - 1; END IF; END LOOP; RETURN (100 * (total_time - problem_time)::decimal / total_time)::decimal(7, 4); END; $$; CREATE INDEX CONCURRENTLY idx_history_event_time_event_type ON history(event_time, event_type); COMMENT ON INDEX idx_history_event_time_event_type IS 'History filtered/ordered by event_time/event_type'; DROP INDEX idx_history_event_time; ALTER TABLE host_state ALTER COLUMN check_attempt TYPE uint; ALTER TABLE service_state ALTER COLUMN check_attempt TYPE uint; COMMENT ON COLUMN state_history.check_attempt IS 'optional schema upgrade not applied yet, see https://icinga.com/docs/icinga-db/latest/doc/04-Upgrading/#upgrading-to-icinga-db-v112'; INSERT INTO icingadb_schema (version, timestamp) VALUES (3, extract(epoch from now()) * 1000); icingadb-1.3.0/schema/pgsql/upgrades/1.2.1.sql000066400000000000000000000017271477347223700206620ustar00rootroot00000000000000ALTER TABLE host ALTER COLUMN icon_image_alt TYPE text; ALTER TABLE service ALTER COLUMN icon_image_alt TYPE text; COMMENT ON COLUMN endpoint.properties_checksum IS 'sha1(all properties)'; COMMENT ON COLUMN comment.properties_checksum IS 'sha1(all properties)'; COMMENT ON COLUMN notification.properties_checksum IS 'sha1(all properties)'; ALTER TABLE timeperiod_range ALTER COLUMN range_value TYPE text; ALTER TABLE checkcommand_argument ALTER COLUMN argument_key TYPE varchar(255); ALTER TABLE eventcommand_argument ALTER COLUMN argument_key TYPE varchar(255); ALTER TABLE notificationcommand_argument ALTER COLUMN argument_key TYPE varchar(255); ALTER TABLE checkcommand_envvar ALTER COLUMN envvar_key TYPE varchar(255); ALTER TABLE eventcommand_envvar ALTER COLUMN envvar_key TYPE varchar(255); ALTER TABLE notificationcommand_envvar ALTER COLUMN envvar_key TYPE varchar(255); INSERT INTO icingadb_schema (version, timestamp) VALUES (4, extract(epoch from now()) * 1000); icingadb-1.3.0/schema/pgsql/upgrades/optional/000077500000000000000000000000001477347223700213205ustar00rootroot00000000000000icingadb-1.3.0/schema/pgsql/upgrades/optional/1.2-0-history.sql000066400000000000000000000001701477347223700241730ustar00rootroot00000000000000ALTER TABLE state_history ALTER COLUMN check_attempt TYPE uint; COMMENT ON COLUMN state_history.check_attempt IS NULL; icingadb-1.3.0/tests/000077500000000000000000000000001477347223700144355ustar00rootroot00000000000000icingadb-1.3.0/tests/cleanup_and_retention_test.go000066400000000000000000000135621477347223700223720ustar00rootroot00000000000000package icingadb_test import ( "encoding/binary" "fmt" "github.com/goccy/go-yaml" "github.com/icinga/icinga-testing/services" "github.com/icinga/icinga-testing/utils/eventually" "github.com/icinga/icingadb/tests/internal/utils" "github.com/jmoiron/sqlx" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "strings" "testing" "time" ) func TestCleanupAndRetention(t *testing.T) { r := it.RedisServerT(t) i := it.Icinga2NodeT(t, "master") i.EnableIcingaDb(r) i.Reload() rdb := getDatabase(t) db, err := sqlx.Open(rdb.Driver(), rdb.DSN()) require.NoError(t, err, "connecting to SQL database shouldn't fail") t.Cleanup(func() { _ = db.Close() }) reten := retention{ HistoryDays: 7, SlaDays: 30, Options: map[string]int{ "acknowledgement": 0, // No cleanup. "comment": 1, "downtime": 2, // notification and state default to 7. }, } daysForCategory := func(category string) int { if strings.HasPrefix(category, "sla_") { return reten.SlaDays } else if d, ok := reten.Options[category]; ok { return d } else { return reten.HistoryDays } } envId := utils.GetEnvironmentIdFromRedis(t, r) otherEnvId := append([]byte(nil), envId...) otherEnvId[0]++ rowsToDelete := 10000 rowsToSpare := 1000 rowsInOtherEnv := 1000 for category, stmt := range retentionStatements { err := dropNotNullColumns(db, stmt) assert.NoError(t, err) retentionDays := daysForCategory(category) start := time.Now().AddDate(0, 0, -retentionDays) startMilli := start.UnixMilli() type row struct { Env []byte Id []byte Time int64 } nextId := 1 getId := func() []byte { id := make([]byte, 20) binary.LittleEndian.PutUint64(id, uint64(nextId)) nextId++ return id } values := make([]row, 0, rowsToDelete+rowsToSpare+rowsInOtherEnv) for j := 0; j < rowsToDelete; j++ { values = append(values, row{envId, getId(), startMilli - int64(j)}) } for j := 0; j < rowsToSpare; j++ { values = append(values, row{envId, getId(), startMilli + (2 * time.Minute).Milliseconds() + int64(j)}) } for j := 0; j < rowsInOtherEnv; j++ { values = append(values, row{otherEnvId, getId(), startMilli - int64(j)}) } _, err = db.NamedExec(fmt.Sprintf(`INSERT INTO %s (environment_id, %s, %s) VALUES (:env, :id, :time)`, stmt.Table, stmt.PK, stmt.Column), values) require.NoError(t, err) } waitForDumpDoneSignal(t, r, 20*time.Second, 100*time.Millisecond) config, err := yaml.Marshal(struct { Retention retention `yaml:"retention"` }{reten}) assert.NoError(t, err) it.IcingaDbInstanceT(t, r, rdb, services.WithIcingaDbConfig(string(config))) eventually.Assert(t, func(t require.TestingT) { for category, stmt := range retentionStatements { retentionDays := daysForCategory(category) threshold := time.Now().AddDate(0, 0, -retentionDays) thresholdMilli := threshold.UnixMilli() var rowsLeft int err := db.QueryRow( db.Rebind(fmt.Sprintf(`SELECT COUNT(*) FROM %s WHERE environment_id = ? AND %s < ?`, stmt.Table, stmt.Column)), envId, thresholdMilli, ).Scan(&rowsLeft) assert.NoError(t, err) var rowsSpared int err = db.QueryRow( db.Rebind(fmt.Sprintf(`SELECT COUNT(*) FROM %s WHERE environment_id = ? AND %s >= ?`, stmt.Table, stmt.Column)), envId, thresholdMilli, ).Scan(&rowsSpared) assert.NoError(t, err) if retentionDays == 0 { // No cleanup. assert.Equal(t, rowsToDelete+rowsToSpare, rowsLeft+rowsSpared, "all rows should still be there for %s", category) } else { assert.Equal(t, 0, rowsLeft, "rows left in retention period for %s", category) assert.Equal(t, rowsToSpare, rowsSpared, "rows spared for %s", category) } var rowsSparedOtherEnv int err = db.QueryRow( db.Rebind(fmt.Sprintf(`SELECT COUNT(*) FROM %s WHERE environment_id <> ?`, stmt.Table)), envId, ).Scan(&rowsSparedOtherEnv) assert.NoError(t, err) assert.Equal(t, rowsInOtherEnv, rowsSparedOtherEnv, "should not delete rows in other environment for %s", category) } }, time.Minute, time.Second) } type cleanupStmt struct { Table string PK string Column string } type retention struct { HistoryDays int `yaml:"history-days"` SlaDays int `yaml:"sla-days"` Options map[string]int `yaml:"options"` } var retentionStatements = map[string]cleanupStmt{ "acknowledgement": { Table: "acknowledgement_history", PK: "id", Column: "clear_time", }, "comment": { Table: "comment_history", PK: "comment_id", Column: "remove_time", }, "downtime": { Table: "downtime_history", PK: "downtime_id", Column: "end_time", }, "flapping": { Table: "flapping_history", PK: "id", Column: "end_time", }, "notification": { Table: "notification_history", PK: "id", Column: "send_time", }, "state": { Table: "state_history", PK: "id", Column: "event_time", }, "sla_downtime": { Table: "sla_history_downtime", PK: "downtime_id", Column: "downtime_end", }, "sla_state": { Table: "sla_history_state", PK: "id", Column: "event_time", }, } // dropNotNullColumns drops all columns with a NOT NULL constraint that are not // relevant to testing to simplify the insertion of test fixtures. func dropNotNullColumns(db *sqlx.DB, stmt cleanupStmt) error { var schema string switch db.DriverName() { case "mysql": schema = `SCHEMA()` case "postgres": schema = `CURRENT_SCHEMA()` } var cols []string err := db.Select(&cols, db.Rebind(fmt.Sprintf(` SELECT column_name FROM information_schema.columns WHERE table_schema = %s AND table_name = ? AND column_name NOT IN (?, ?, ?) AND is_nullable = ?`, schema)), stmt.Table, "environment_id", stmt.PK, stmt.Column, "NO") if err != nil { return err } for i := range cols { if _, err := db.Exec(fmt.Sprintf(`ALTER TABLE %s DROP COLUMN %s`, stmt.Table, cols[i])); err != nil { return err } } return nil } icingadb-1.3.0/tests/environment_test.go000066400000000000000000000070451477347223700203750ustar00rootroot00000000000000package icingadb_test import ( "encoding/hex" "encoding/json" "github.com/icinga/icinga-testing/services" "github.com/icinga/icinga-testing/utils/eventually" "github.com/jmoiron/sqlx" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "golang.org/x/sync/errgroup" "sort" "testing" "time" ) func TestMultipleEnvironments(t *testing.T) { rdb := getDatabase(t) numEnvs := 3 icinga2Instances := make([]services.Icinga2, numEnvs) // Start numEnvs icinga2 instances with an icingadb instance each, all writing to the same SQL database. var g errgroup.Group for i := range icinga2Instances { i := i g.Go(func() error { r := it.RedisServerT(t) icinga2Instances[i] = it.Icinga2NodeT(t, "master") icinga2Instances[i].EnableIcingaDb(r) icinga2Instances[i].Reload() it.IcingaDbInstanceT(t, r, rdb) return nil }) } _ = g.Wait() // Query the IcingaDB environment_id from each icinga2 instance. var expectedEnvs []string for _, instance := range icinga2Instances { res, err := instance.ApiClient().GetJson("/v1/objects/icingadbs") require.NoError(t, err, "requesting IcingaDB objects from API should succeed") var objects ObjectsIcingaDBsResponse err = json.NewDecoder(res.Body).Decode(&objects) require.NoError(t, err, "requesting IcingaDB objects from API should succeed") require.NotEmpty(t, objects.Results, "API response should return an IcingaDB object") expectedEnvs = append(expectedEnvs, objects.Results[0].Attrs.EnvironmentId) } sort.Strings(expectedEnvs) for i := 0; i < len(expectedEnvs)-1; i++ { require.NotEqual(t, expectedEnvs[i], expectedEnvs[i+1], "all environment IDs should be distinct") } db, err := sqlx.Open(rdb.Driver(), rdb.DSN()) require.NoError(t, err, "SQL database open") t.Cleanup(func() { _ = db.Close() }) t.Run("Table", func(t *testing.T) { t.Parallel() eventually.Assert(t, func(t require.TestingT) { var query string switch rdb.Driver() { case "mysql": query = "SELECT LOWER(HEX(id)), name FROM environment ORDER BY id" case "postgres": query = "SELECT LOWER(ENCODE(id, 'hex')), name FROM environment ORDER BY id" default: panic("unknown database driver") } rows, err := db.Query(query) require.NoError(t, err, "SQL query") defer rows.Close() var gotEnvs []string for rows.Next() { var id, name string err := rows.Scan(&id, &name) require.NoError(t, err, "SQL scan") require.Equal(t, id, name, "name should be initialized to the environment id") gotEnvs = append(gotEnvs, id) } require.Equal(t, expectedEnvs, gotEnvs, "each environment should be present in the environments table") }, 20*time.Second, 250*time.Millisecond) }) t.Run("HA", func(t *testing.T) { t.Parallel() eventually.Assert(t, func(t require.TestingT) { rows, err := db.Query("SELECT environment_id, COUNT(*) FROM icingadb_instance WHERE responsible = 'y' GROUP BY environment_id") require.NoError(t, err, "SQL query") defer rows.Close() numRows := 0 for rows.Next() { var env []byte var count int err := rows.Scan(&env, &count) require.NoError(t, err, "SQL scan") assert.LessOrEqualf(t, count, 1, "environment %s must have at most one active instance", hex.EncodeToString(env)) numRows++ } require.Equal(t, numEnvs, numRows, "each environment should have one active instance") }, 20*time.Second, 250*time.Millisecond) }) } type ObjectsIcingaDBsResponse struct { Results []struct { Attrs struct { EnvironmentId string `json:"environment_id"` } `json:"attrs"` } `json:"results"` } icingadb-1.3.0/tests/go.mod000066400000000000000000000043701477347223700155470ustar00rootroot00000000000000module github.com/icinga/icingadb/tests go 1.23.0 require ( github.com/go-sql-driver/mysql v1.9.1 github.com/goccy/go-yaml v1.12.0 github.com/google/uuid v1.6.0 github.com/icinga/icinga-testing v0.0.0-20240322142451-494ccd6d03e8 github.com/jmoiron/sqlx v1.4.0 github.com/lib/pq v1.10.9 github.com/redis/go-redis/v9 v9.7.3 github.com/stretchr/testify v1.10.0 go.uber.org/zap v1.27.0 golang.org/x/exp v0.0.0-20221012112151-59b0eab1532e golang.org/x/sync v0.12.0 ) require ( filippo.io/edwards25519 v1.1.0 // indirect github.com/Icinga/go-libs v0.0.0-20220420130327-ef58ad52edd8 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/distribution/reference v0.5.0 // indirect github.com/docker/docker v25.0.6+incompatible // indirect github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/fatih/color v1.10.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/mattn/go-colorable v0.1.8 // indirect github.com/mattn/go-isatty v0.0.12 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc5 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect go.opentelemetry.io/otel v1.28.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0 // indirect go.opentelemetry.io/otel/metric v1.28.0 // indirect go.opentelemetry.io/otel/sdk v1.28.0 // indirect go.opentelemetry.io/otel/trace v1.28.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/net v0.36.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/tools v0.16.1 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) icingadb-1.3.0/tests/go.sum000066400000000000000000000645171477347223700156050ustar00rootroot00000000000000filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Icinga/go-libs v0.0.0-20220420130327-ef58ad52edd8 h1:hG4Y/LPERK9i+P8/jnYlq9PeDd9deIkwEWOIimDU3uk= github.com/Icinga/go-libs v0.0.0-20220420130327-ef58ad52edd8/go.mod h1:xlgU55MKs/vIg1fMlAEBSrslahYayZNwjXvf3w1dvyA= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v25.0.6+incompatible h1:5cPwbwriIcsua2REJe8HqQV+6WlWc1byg2QSXzBxBGg= github.com/docker/docker v25.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= github.com/go-sql-driver/mysql v1.9.1 h1:FrjNGn/BsJQjVRuSa8CBrM5BWA9BWoXXat3KrtSb/iI= github.com/go-sql-driver/mysql v1.9.1/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= github.com/goccy/go-yaml v1.12.0 h1:/1WHjnMsI1dlIBQutrvSMGZRQufVO3asrHfTwfACoPM= github.com/goccy/go-yaml v1.12.0/go.mod h1:wKnAMd44+9JAAnGQpWVEgBzGt3YuTaQ4uXoHvE4m7WU= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= github.com/icinga/icinga-testing v0.0.0-20240322142451-494ccd6d03e8 h1:PI+39IY1BjN24JC3B6Jy0rhwm3hqC4SnQFxbZjXOaHk= github.com/icinga/icinga-testing v0.0.0-20240322142451-494ccd6d03e8/go.mod h1:xjNiwePgnSVKJWPG/iFG7pNOibU/OWp01Zdl08o+EeI= github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= github.com/jmoiron/sqlx v1.4.0/go.mod h1:ZrZ7UsYB/weZdl2Bxg6jCRO9c3YHl8r3ahlKmRT4JLY= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus= github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae h1:O4SWKdcHVCvYqyDV+9CJA1fcDN2L11Bule0iFy3YlAI= github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI= github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/redis/go-redis/v9 v9.5.1/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M= github.com/redis/go-redis/v9 v9.7.3 h1:YpPyAayJV+XErNsatSElgRZZVCwXX9QzkKYNvO7x0wM= github.com/redis/go-redis/v9 v9.7.3/go.mod h1:bGUrSggJ9X9GUmZpZNEOQKaANxSGgOEBRltRTZHSvrA= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0 h1:j9+03ymgYhPKmeXGk5Zu+cIZOlVzd9Zv7QIiyItjFBU= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0/go.mod h1:Y5+XiUG4Emn1hTfciPzGPJaSI+RpDts6BnCIir0SLqk= go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= golang.org/x/exp v0.0.0-20221012112151-59b0eab1532e h1:/SJUJZl3kz7J5GzAx5lgaKvqKGd4OfzshwDMr6YJCC4= golang.org/x/exp v0.0.0-20221012112151-59b0eab1532e/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA= golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 h1:0+ozOGcrp+Y8Aq8TLNN2Aliibms5LEzsq99ZZmAGYm0= google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094/go.mod h1:fJ/e3If/Q67Mj99hin0hMhiNyCRmt6BQ2aWIJshUSJw= google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 h1:BwIjyKYGsK9dMCBOorzRri8MQwmi7mT9rGHsCEinZkA= google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY= gotest.tools/v3 v3.5.0/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= icingadb-1.3.0/tests/history_bench_test.go000066400000000000000000000064751477347223700206770ustar00rootroot00000000000000package icingadb_test import ( "context" "fmt" "github.com/google/uuid" "github.com/icinga/icinga-testing/utils" "github.com/jmoiron/sqlx" "github.com/redis/go-redis/v9" "github.com/stretchr/testify/require" "strconv" "testing" "time" ) func BenchmarkHistory(b *testing.B) { for _, numComments := range []int64{100_000, 200_000} { b.Run(fmt.Sprintf("%d-Comments", numComments), func(b *testing.B) { b.StopTimer() for i := 0; i < b.N; i++ { benchmarkHistory(b, numComments) } }) } } func benchmarkHistory(b *testing.B, numComments int64) { rdb := getDatabase(b) r := it.RedisServer() defer r.Cleanup() n := it.Icinga2Node("master") defer n.Cleanup() n.EnableIcingaDb(r) err := n.Reload() require.NoError(b, err, "icinga2 should reload without error") db, err := sqlx.Connect(rdb.Driver(), rdb.DSN()) require.NoError(b, err, "connecting to database") defer func() { _ = db.Close() }() redisClient := r.Open() defer func() { _ = redisClient.Close() }() client := n.ApiClient() hostname := utils.UniqueName(b, "host") client.CreateHost(b, hostname, map[string]interface{}{ "attrs": map[string]interface{}{ "enable_active_checks": false, "enable_passive_checks": true, "check_command": "dummy", }, }) baseTime := time.Now().Add(time.Duration(-numComments) * time.Second) for i := int64(0); i < numComments; i++ { redisClient.XAdd(context.Background(), &redis.XAddArgs{ Stream: "icinga:history:stream:comment", Values: map[string]string{ "comment_id": utils.RandomString(32), "environment_id": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "host_id": "05d7e9c12104a1e8851a871d2f78e25b8c3d9eae", "entry_time": strconv.FormatInt(baseTime.Add(time.Duration(i)*time.Second).UnixMilli(), 10), "author": utils.RandomString(8), "comment": utils.RandomString(8), "entry_type": "1", "is_persistent": "0", "is_sticky": "0", "event_id": uuid.New().String(), "event_type": "comment_add", "object_type": "service", "service_id": "98fe4a1696c4804c75ff5c0e76f1e79ef855c634", "endpoint_id": "05d7e9c12104a1e8851a871d2f78e25b8c3d9eae", }, }) } pendingCount := func() int64 { result, err := redisClient.XInfoStream(context.Background(), "icinga:history:stream:comment").Result() require.NoError(b, err, "XINFO should not fail") return result.Length } writtenCount := func() int64 { var count int64 err := db.Get(&count, "SELECT COUNT(*) FROM comment_history") require.NoError(b, err, "SELECT COUNT(*) should not fail") return count } lastPending := pendingCount() b.Logf("current stream length: %d", lastPending) b.StartTimer() idb := it.IcingaDbInstance(r, rdb) defer idb.Cleanup() ticker := time.NewTicker(5 * time.Millisecond) defer ticker.Stop() logTicker := time.NewTicker(1 * time.Second) defer logTicker.Stop() timeout := time.NewTicker(5 * time.Minute) defer timeout.Stop() loop: for { select { case <-ticker.C: if pendingCount() == 0 && writtenCount() >= numComments { break loop } case <-logTicker.C: if p := pendingCount(); p > 0 { b.Logf("last second: %d, pending: %d", lastPending-p, p) lastPending = p } else { logTicker.Stop() } case <-timeout.C: b.Fatal("did not drain stream in time") } } b.StopTimer() } icingadb-1.3.0/tests/history_test.go000066400000000000000000000714611477347223700175350ustar00rootroot00000000000000package icingadb_test import ( "bytes" "context" _ "embed" "encoding/json" "fmt" "github.com/icinga/icinga-testing/services" "github.com/icinga/icinga-testing/utils" "github.com/icinga/icinga-testing/utils/eventually" "github.com/icinga/icinga-testing/utils/pki" "github.com/jmoiron/sqlx" "github.com/redis/go-redis/v9" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/zap" "io" "math" "net/http" "sort" "strconv" "testing" "text/template" "time" ) //go:embed history_test_zones.conf var historyZonesConfRaw string var historyZonesConfTemplate = template.Must(template.New("zones.conf").Parse(historyZonesConfRaw)) func TestHistory(t *testing.T) { t.Run("SingleNode", func(t *testing.T) { testHistory(t, 1) }) t.Run("HA", func(t *testing.T) { testHistory(t, 2) }) } func testHistory(t *testing.T, numNodes int) { rdb := getDatabase(t) ca, err := pki.NewCA() require.NoError(t, err, "generating a CA should succeed") type Node struct { Name string Icinga2 services.Icinga2 IcingaClient *utils.Icinga2Client // Redis server and client for the instance used by the Icinga DB process. Redis services.RedisServer RedisClient *redis.Client // Second Redis server and client to verify the consistency of the history streams in a HA setup. // There is no Icinga DB process reading from this Redis so history events are not removed there. ConsistencyRedis services.RedisServer ConsistencyRedisClient *redis.Client } nodes := make([]*Node, numNodes) for i := range nodes { name := fmt.Sprintf("master-%d", i) redisServer := it.RedisServerT(t) consistencyRedisServer := it.RedisServerT(t) icinga := it.Icinga2NodeT(t, name) nodes[i] = &Node{ Name: name, Icinga2: icinga, IcingaClient: icinga.ApiClient(), Redis: redisServer, RedisClient: redisServer.Open(), ConsistencyRedis: consistencyRedisServer, ConsistencyRedisClient: consistencyRedisServer.Open(), } } zonesConf := bytes.NewBuffer(nil) err = historyZonesConfTemplate.Execute(zonesConf, nodes) require.NoError(t, err, "failed to render zones.conf") for _, n := range nodes { cert, err := ca.NewCertificate(n.Name) require.NoError(t, err, "generating cert for %q should succeed", n.Name) n.Icinga2.WriteConfig("etc/icinga2/zones.conf", zonesConf.Bytes()) n.Icinga2.WriteConfig("etc/icinga2/features-available/api.conf", []byte(` object ApiListener "api" { accept_config = true accept_commands = true } `)) n.Icinga2.WriteConfig("var/lib/icinga2/certs/ca.crt", ca.CertificateToPem()) n.Icinga2.WriteConfig("var/lib/icinga2/certs/"+n.Name+".crt", cert.CertificateToPem()) n.Icinga2.WriteConfig("var/lib/icinga2/certs/"+n.Name+".key", cert.KeyToPem()) n.Icinga2.EnableIcingaDb(n.Redis) n.Icinga2.EnableIcingaDb(n.ConsistencyRedis) err = n.Icinga2.Reload() require.NoError(t, err, "icinga2 should reload without error") it.IcingaDbInstanceT(t, n.Redis, rdb) { n := n t.Cleanup(func() { _ = n.RedisClient.Close() _ = n.ConsistencyRedisClient.Close() }) } } testConsistency := func(t *testing.T, stream string) { if numNodes > 1 { t.Run("Consistency", func(t *testing.T) { var clients []*redis.Client for _, node := range nodes { clients = append(clients, node.ConsistencyRedisClient) } assertStreamConsistency(t, clients, stream) }) } } eventually.Require(t, func(t require.TestingT) { for i, ni := range nodes { for j, nj := range nodes { if i != j { response, err := ni.IcingaClient.GetJson("/v1/objects/endpoints/" + nj.Name) require.NoErrorf(t, err, "fetching endpoint %q from %q should not fail", nj.Name, ni.Name) require.Equalf(t, 200, response.StatusCode, "fetching endpoint %q from %q should not fail", nj.Name, ni.Name) var endpoints ObjectsEndpointsResponse err = json.NewDecoder(response.Body).Decode(&endpoints) require.NoErrorf(t, err, "parsing response from %q for endpoint %q should not fail", ni.Name, nj.Name) require.NotEmptyf(t, endpoints.Results, "response from %q for endpoint %q should contain a result", ni.Name, nj.Name) assert.Truef(t, endpoints.Results[0].Attrs.Connected, "endpoint %q should be connected to %q", nj.Name, ni.Name) } } } }, 15*time.Second, 200*time.Millisecond) db, err := sqlx.Connect(rdb.Driver(), rdb.DSN()) require.NoError(t, err, "connecting to database") t.Cleanup(func() { _ = db.Close() }) client := nodes[0].IcingaClient t.Run("Acknowledgement", func(t *testing.T) { const stream = "icinga:history:stream:acknowledgement" hostname := utils.UniqueName(t, "host") client.CreateHost(t, hostname, map[string]interface{}{ "attrs": map[string]interface{}{ "enable_active_checks": false, "enable_passive_checks": true, "check_command": "dummy", "max_check_attempts": 1, }, }) processCheckResult(t, client, hostname, 1) author := utils.RandomString(8) comment := utils.RandomString(8) req, err := json.Marshal(ActionsAcknowledgeProblemRequest{ Type: "Host", Filter: fmt.Sprintf(`host.name==%q`, hostname), Author: author, Comment: comment, }) ackTime := time.Now() require.NoError(t, err, "marshal request") response, err := client.PostJson("/v1/actions/acknowledge-problem", bytes.NewBuffer(req)) require.NoError(t, err, "acknowledge-problem") require.Equal(t, 200, response.StatusCode, "acknowledge-problem") var ackResponse ActionsAcknowledgeProblemResponse err = json.NewDecoder(response.Body).Decode(&ackResponse) require.NoError(t, err, "decode acknowledge-problem response") require.Equal(t, 1, len(ackResponse.Results), "acknowledge-problem should return 1 result") require.Equal(t, http.StatusOK, ackResponse.Results[0].Code, "acknowledge-problem result should have OK status") for _, n := range nodes { assertEventuallyDrained(t, n.RedisClient, stream) } eventually.Assert(t, func(t require.TestingT) { type Row struct { Author string `db:"author"` Comment string `db:"comment"` } var rows []Row err = db.Select(&rows, db.Rebind("SELECT a.author, a.comment FROM history h"+ " JOIN host ON host.id = h.host_id"+ " JOIN acknowledgement_history a ON a.id = h.acknowledgement_history_id"+ " WHERE host.name = ? AND ? < h.event_time AND h.event_time < ?"), hostname, ackTime.Add(-time.Second).UnixMilli(), ackTime.Add(time.Second).UnixMilli()) require.NoError(t, err, "select acknowledgement_history") require.Equal(t, 1, len(rows), "there should be exactly one acknowledgement history entry") assert.Equal(t, author, rows[0].Author, "acknowledgement author should match") assert.Equal(t, comment, rows[0].Comment, "acknowledgement comment should match") }, 5*time.Second, 200*time.Millisecond) testConsistency(t, stream) }) t.Run("Comment", func(t *testing.T) { const stream = "icinga:history:stream:comment" type HistoryEvent struct { Type string `db:"event_type"` Author string `db:"author"` Comment string `db:"comment"` RemovedBy *string `db:"removed_by"` } hostname := utils.UniqueName(t, "host") client.CreateHost(t, hostname, map[string]interface{}{ "attrs": map[string]interface{}{ "enable_active_checks": false, "enable_passive_checks": true, "check_command": "dummy", }, }) author := utils.RandomString(8) comment := utils.RandomString(8) req, err := json.Marshal(ActionsAddCommentRequest{ Type: "Host", Filter: fmt.Sprintf(`host.name==%q`, hostname), Author: author, Comment: comment, }) require.NoError(t, err, "marshal request") response, err := client.PostJson("/v1/actions/add-comment", bytes.NewBuffer(req)) require.NoError(t, err, "add-comment") require.Equal(t, 200, response.StatusCode, "add-comment") var addResponse ActionsAddCommentResponse err = json.NewDecoder(response.Body).Decode(&addResponse) require.NoError(t, err, "decode add-comment response") require.Equal(t, 1, len(addResponse.Results), "add-comment should return 1 result") require.Equal(t, http.StatusOK, addResponse.Results[0].Code, "add-comment result should have OK status") commentName := addResponse.Results[0].Name // Ensure that downtime events have distinct timestamps in millisecond resolution. time.Sleep(10 * time.Millisecond) removedBy := utils.RandomString(8) req, err = json.Marshal(ActionsRemoveCommentRequest{ Comment: commentName, Author: removedBy, }) require.NoError(t, err, "marshal remove-comment request") response, err = client.PostJson("/v1/actions/remove-comment", bytes.NewBuffer(req)) require.NoError(t, err, "remove-comment") require.Equal(t, 200, response.StatusCode, "remove-comment") expected := []HistoryEvent{ {Type: "comment_add", Author: author, Comment: comment, RemovedBy: &removedBy}, {Type: "comment_remove", Author: author, Comment: comment, RemovedBy: &removedBy}, } if !testing.Short() { // Ensure that downtime events have distinct timestamps in millisecond resolution. time.Sleep(10 * time.Millisecond) expireAuthor := utils.RandomString(8) expireComment := utils.RandomString(8) expireDelay := time.Second req, err = json.Marshal(ActionsAddCommentRequest{ Type: "Host", Filter: fmt.Sprintf(`host.name==%q`, hostname), Author: expireAuthor, Comment: expireComment, Expiry: float64(time.Now().Add(expireDelay).UnixMilli()) / 1000, }) require.NoError(t, err, "marshal request") response, err = client.PostJson("/v1/actions/add-comment", bytes.NewBuffer(req)) require.NoError(t, err, "add-comment") require.Equal(t, 200, response.StatusCode, "add-comment") // Icinga only expires comments every 60 seconds, so wait this long after the expiry time. time.Sleep(expireDelay + 60*time.Second) expected = append(expected, HistoryEvent{Type: "comment_add", Author: expireAuthor, Comment: expireComment}, HistoryEvent{Type: "comment_remove", Author: expireAuthor, Comment: expireComment}, ) } for _, n := range nodes { assertEventuallyDrained(t, n.RedisClient, stream) } eventually.Assert(t, func(t require.TestingT) { var rows []HistoryEvent err = db.Select(&rows, db.Rebind("SELECT h.event_type, c.author, c.comment, c.removed_by"+ " FROM history h"+ " JOIN comment_history c ON c.comment_id = h.comment_history_id"+ " JOIN host ON host.id = c.host_id WHERE host.name = ?"+ " ORDER BY h.event_time"), hostname) require.NoError(t, err, "select comment_history") assert.Equal(t, expected, rows, "comment history should match") }, 5*time.Second, 200*time.Millisecond) testConsistency(t, stream) if testing.Short() { t.Skip("skipped comment expiry test") } }) t.Run("Downtime", func(t *testing.T) { const stream = "icinga:history:stream:downtime" type HistoryEvent struct { Event string `db:"event_type"` Author string `db:"author"` Comment string `db:"comment"` Cancelled string `db:"has_been_cancelled"` } hostname := utils.UniqueName(t, "host") client.CreateHost(t, hostname, map[string]interface{}{ "attrs": map[string]interface{}{ "enable_active_checks": false, "enable_flapping": true, "enable_passive_checks": true, "check_command": "dummy", }, }) downtimeStart := time.Now() author := utils.RandomString(8) comment := utils.RandomString(8) req, err := json.Marshal(ActionsScheduleDowntimeRequest{ Type: "Host", Filter: fmt.Sprintf(`host.name==%q`, hostname), StartTime: downtimeStart.Unix(), EndTime: downtimeStart.Add(time.Hour).Unix(), Fixed: true, Author: author, Comment: comment, }) require.NoError(t, err, "marshal request") response, err := client.PostJson("/v1/actions/schedule-downtime", bytes.NewBuffer(req)) require.NoError(t, err, "schedule-downtime") require.Equal(t, 200, response.StatusCode, "schedule-downtime") var scheduleResponse ActionsScheduleDowntimeResponse err = json.NewDecoder(response.Body).Decode(&scheduleResponse) require.NoError(t, err, "decode schedule-downtime response") require.Equal(t, 1, len(scheduleResponse.Results), "schedule-downtime should return 1 result") require.Equal(t, http.StatusOK, scheduleResponse.Results[0].Code, "schedule-downtime result should have OK status") downtimeName := scheduleResponse.Results[0].Name // Ensure that downtime events have distinct timestamps in millisecond resolution. time.Sleep(10 * time.Millisecond) req, err = json.Marshal(ActionsRemoveDowntimeRequest{ Downtime: downtimeName, Author: utils.RandomString(8), }) require.NoError(t, err, "marshal remove-downtime request") response, err = client.PostJson("/v1/actions/remove-downtime", bytes.NewBuffer(req)) require.NoError(t, err, "remove-downtime") require.Equal(t, 200, response.StatusCode, "remove-downtime") downtimeEnd := time.Now() expected := []HistoryEvent{ {Event: "downtime_start", Author: author, Comment: comment, Cancelled: "y"}, {Event: "downtime_end", Author: author, Comment: comment, Cancelled: "y"}, } if !testing.Short() { // Ensure that downtime events have distinct timestamps in second resolution (for start time). time.Sleep(time.Second) expireStart := time.Now() expireAuthor := utils.RandomString(8) expireComment := utils.RandomString(8) req, err := json.Marshal(ActionsScheduleDowntimeRequest{ Type: "Host", Filter: fmt.Sprintf(`host.name==%q`, hostname), StartTime: expireStart.Unix(), EndTime: expireStart.Add(time.Second).Unix(), Fixed: true, Author: expireAuthor, Comment: expireComment, }) require.NoError(t, err, "marshal request") response, err := client.PostJson("/v1/actions/schedule-downtime", bytes.NewBuffer(req)) require.NoError(t, err, "schedule-downtime") require.Equal(t, 200, response.StatusCode, "schedule-downtime") var scheduleResponse ActionsScheduleDowntimeResponse err = json.NewDecoder(response.Body).Decode(&scheduleResponse) require.NoError(t, err, "decode schedule-downtime response") require.Equal(t, 1, len(scheduleResponse.Results), "schedule-downtime should return 1 result") require.Equal(t, http.StatusOK, scheduleResponse.Results[0].Code, "schedule-downtime result should have OK status") // Icinga only expires downtimes every 60 seconds, so wait this long in addition to the downtime duration. time.Sleep(60*time.Second + 1*time.Second) expected = append(expected, HistoryEvent{Event: "downtime_start", Author: expireAuthor, Comment: expireComment, Cancelled: "n"}, HistoryEvent{Event: "downtime_end", Author: expireAuthor, Comment: expireComment, Cancelled: "n"}, ) downtimeEnd = time.Now() } for _, n := range nodes { assertEventuallyDrained(t, n.RedisClient, stream) } if !eventually.Assert(t, func(t require.TestingT) { var got []HistoryEvent err = db.Select(&got, db.Rebind("SELECT h.event_type, d.author, d.comment, d.has_been_cancelled"+ " FROM history h"+ " JOIN host ON host.id = h.host_id"+ // Joining downtime_history checks that events are written to it. " JOIN downtime_history d ON d.downtime_id = h.downtime_history_id"+ " WHERE host.name = ? AND ? < h.event_time AND h.event_time < ?"+ " ORDER BY h.event_time"), hostname, downtimeStart.Add(-time.Second).UnixMilli(), downtimeEnd.Add(time.Second).UnixMilli()) require.NoError(t, err, "select downtime_history") assert.Equal(t, expected, got, "downtime history should match expected result") }, 5*time.Second, 200*time.Millisecond) { t.Logf("\n%s", utils.MustT(t).String(utils.PrettySelect(db, db.Rebind( "SELECT h.event_time, h.event_type FROM history h"+ " JOIN host ON host.id = h.host_id"+ " LEFT JOIN downtime_history d ON d.downtime_id = h.downtime_history_id"+ " WHERE host.name = ?"+ " ORDER BY h.event_time"), hostname))) } testConsistency(t, stream) if testing.Short() { t.Skip("skipped expiring downtime") } }) t.Run("Flapping", func(t *testing.T) { const stream = "icinga:history:stream:flapping" hostname := utils.UniqueName(t, "host") client.CreateHost(t, hostname, map[string]interface{}{ "attrs": map[string]interface{}{ "enable_active_checks": false, "enable_flapping": true, "enable_passive_checks": true, "check_command": "dummy", }, }) timeBefore := time.Now() for i := 0; i < 10; i++ { processCheckResult(t, client, hostname, 0) processCheckResult(t, client, hostname, 1) } for i := 0; i < 20; i++ { processCheckResult(t, client, hostname, 0) } timeAfter := time.Now() for _, n := range nodes { assertEventuallyDrained(t, n.RedisClient, stream) } eventually.Assert(t, func(t require.TestingT) { var rows []string err = db.Select(&rows, db.Rebind("SELECT h.event_type FROM history h"+ " JOIN host ON host.id = h.host_id"+ // Joining flapping_history checks that events are written to it. " JOIN flapping_history f ON f.id = h.flapping_history_id"+ " WHERE host.name = ? AND ? < h.event_time AND h.event_time < ?"+ " ORDER BY h.event_time"), hostname, timeBefore.Add(-time.Second).UnixMilli(), timeAfter.Add(time.Second).UnixMilli()) require.NoError(t, err, "select flapping_history") require.Equal(t, []string{"flapping_start", "flapping_end"}, rows, "flapping history should match expected result") }, 5*time.Second, 200*time.Millisecond) testConsistency(t, stream) }) t.Run("Notification", func(t *testing.T) { const stream = "icinga:history:stream:notification" hostname := utils.UniqueName(t, "host") client.CreateHost(t, hostname, map[string]interface{}{ "attrs": map[string]interface{}{ "enable_active_checks": false, "enable_flapping": true, "enable_passive_checks": true, "check_command": "dummy", "max_check_attempts": 1, }, }) users := make([]string, 5) for i := range users { users[i] = utils.UniqueName(t, "user") client.CreateObject(t, "users", users[i], nil) } // Sort users so that the SQL query can use ORDER BY and the resulting slices can just be compared for equality. sort.Slice(users, func(i, j int) bool { return users[i] < users[j] }) command := utils.UniqueName(t, "notificationcommand") client.CreateObject(t, "notificationcommands", command, map[string]interface{}{ "attrs": map[string]interface{}{ "command": []string{"true"}, }, }) notification := utils.UniqueName(t, "notification") client.CreateObject(t, "notifications", hostname+"!"+notification, map[string]interface{}{ "attrs": map[string]interface{}{ "users": users, "command": command, }, }) type Notification struct { Type string `db:"type"` User string `db:"username"` } var expected []Notification timeBefore := time.Now() processCheckResult(t, client, hostname, 1) for _, u := range users { expected = append(expected, Notification{Type: "problem", User: u}) } processCheckResult(t, client, hostname, 0) for _, u := range users { expected = append(expected, Notification{Type: "recovery", User: u}) } timeAfter := time.Now() for _, n := range nodes { assertEventuallyDrained(t, n.RedisClient, stream) } eventually.Assert(t, func(t require.TestingT) { var rows []Notification err = db.Select(&rows, db.Rebind("SELECT n.type, COALESCE(u.name, '') AS username FROM history h"+ " JOIN host ON host.id = h.host_id"+ " JOIN notification_history n ON n.id = h.notification_history_id"+ " LEFT JOIN user_notification_history un ON un.notification_history_id = n.id"+ ` LEFT JOIN "user" u ON u.id = un.user_id`+ " WHERE host.name = ? AND ? < h.event_time AND h.event_time < ?"+ " ORDER BY h.event_time, username"), hostname, timeBefore.Add(-time.Second).UnixMilli(), timeAfter.Add(time.Second).UnixMilli()) require.NoError(t, err, "select notification_history") require.Equal(t, expected, rows, "notification history should match expected result") }, 5*time.Second, 200*time.Millisecond) testConsistency(t, stream) }) t.Run("State", func(t *testing.T) { const stream = "icinga:history:stream:state" hostname := utils.UniqueName(t, "host") client.CreateHost(t, hostname, map[string]interface{}{ "attrs": map[string]interface{}{ "enable_active_checks": false, "enable_passive_checks": true, "check_command": "dummy", "max_check_attempts": 2, }, }) type State struct { Type string `db:"state_type"` Soft int `db:"soft_state"` Hard int `db:"hard_state"` } var expected []State timeBefore := time.Now() processCheckResult(t, client, hostname, 0) // UNKNOWN -> UP (hard) expected = append(expected, State{Type: "hard", Soft: 0, Hard: 0}) processCheckResult(t, client, hostname, 1) // -> DOWN (soft) expected = append(expected, State{Type: "soft", Soft: 1, Hard: 0}) processCheckResult(t, client, hostname, 1) // -> DOWN (hard) expected = append(expected, State{Type: "hard", Soft: 1, Hard: 1}) processCheckResult(t, client, hostname, 1) // -> DOWN processCheckResult(t, client, hostname, 0) // -> UP (hard) expected = append(expected, State{Type: "hard", Soft: 0, Hard: 0}) processCheckResult(t, client, hostname, 1) // -> DOWN (soft) expected = append(expected, State{Type: "soft", Soft: 1, Hard: 0}) processCheckResult(t, client, hostname, 0) // -> UP (hard) expected = append(expected, State{Type: "hard", Soft: 0, Hard: 0}) processCheckResult(t, client, hostname, 0) // -> UP processCheckResult(t, client, hostname, 1) // -> down (soft) expected = append(expected, State{Type: "soft", Soft: 1, Hard: 0}) processCheckResult(t, client, hostname, 1) // -> DOWN (hard) expected = append(expected, State{Type: "hard", Soft: 1, Hard: 1}) processCheckResult(t, client, hostname, 0) // -> UP (hard) expected = append(expected, State{Type: "hard", Soft: 0, Hard: 0}) timeAfter := time.Now() for _, n := range nodes { assertEventuallyDrained(t, n.RedisClient, stream) } eventually.Assert(t, func(t require.TestingT) { var rows []State err = db.Select(&rows, db.Rebind("SELECT s.state_type, s.soft_state, s.hard_state FROM history h"+ " JOIN host ON host.id = h.host_id JOIN state_history s ON s.id = h.state_history_id"+ " WHERE host.name = ? AND ? < h.event_time AND h.event_time < ?"+ " ORDER BY h.event_time"), hostname, timeBefore.Add(-time.Second).UnixMilli(), timeAfter.Add(time.Second).UnixMilli()) require.NoError(t, err, "select state_history") require.Equal(t, expected, rows, "state history does not match expected result") }, 5*time.Second, 200*time.Millisecond) testConsistency(t, stream) }) } func assertEventuallyDrained(t testing.TB, redis *redis.Client, stream string) { eventually.Assert(t, func(t require.TestingT) { result, err := redis.XRange(context.Background(), stream, "-", "+").Result() require.NoError(t, err, "reading %s should not fail", stream) assert.Empty(t, result, "%s should eventually be drained", stream) }, 5*time.Second, 10*time.Millisecond) } func assertStreamConsistency(t testing.TB, clients []*redis.Client, stream string) { messages := make([][]map[string]interface{}, len(clients)) for i, c := range clients { xmessages, err := c.XRange(context.Background(), stream, "-", "+").Result() require.NoError(t, err, "reading %s should not fail", stream) assert.NotEmpty(t, xmessages, "%s should not be empty on the Redis server %d", stream, i) // Convert []XMessage into a slice of just the values. The IDs are generated by the Redis server based // on the time the entry was written to the stream, so these IDs are expected to differ. ms := make([]map[string]interface{}, 0, len(xmessages)) for _, xmessage := range xmessages { values := xmessage.Values // Delete endpoint_id as this is supposed to differ between both history streams as each endpoint // writes its own ID into the stream. delete(values, "endpoint_id") // users_notified_ids represents a set, so order does not matter, sort for the comparison later. if idsJson, ok := values["users_notified_ids"]; ok { var ids []string err := json.Unmarshal([]byte(idsJson.(string)), &ids) require.NoError(t, err, "if users_notified_ids is present, it must be a JSON list of strings") sort.Strings(ids) values["users_notified_ids"] = ids } ms = append(ms, values) } sort.Slice(ms, func(i, j int) bool { eventTime := func(v map[string]interface{}) uint64 { s, ok := v["event_time"].(string) if !ok { return 0 } u, err := strconv.ParseUint(s, 10, 64) if err != nil { return 0 } return u } sortKey := func(v map[string]interface{}) string { return fmt.Sprintf("%020d-%s", eventTime(v), v["event_id"]) } return sortKey(ms[i]) < sortKey(ms[j]) }) messages[i] = ms } for i := 0; i < len(messages)-1; i++ { assert.Equal(t, messages[i], messages[i+1], "%s should be equal on both Redis servers", stream) } } func processCheckResult(t *testing.T, client *utils.Icinga2Client, hostname string, status int) time.Time { // Ensure that check results have distinct timestamps in millisecond resolution. time.Sleep(10 * time.Millisecond) output := utils.RandomString(8) reqBody, err := json.Marshal(ActionsProcessCheckResultRequest{ Type: "Host", Filter: fmt.Sprintf(`host.name==%q`, hostname), ExitStatus: status, PluginOutput: output, }) require.NoError(t, err, "marshal request") response, err := client.PostJson("/v1/actions/process-check-result", bytes.NewBuffer(reqBody)) require.NoError(t, err, "process-check-result") if !assert.Equal(t, 200, response.StatusCode, "process-check-result") { body, err := io.ReadAll(response.Body) require.NoError(t, err, "reading process-check-result response") it.Logger(t).Error("process-check-result", zap.ByteString("api-response", body)) t.FailNow() } response, err = client.GetJson("/v1/objects/hosts/" + hostname) require.NoError(t, err, "get host: request") require.Equal(t, 200, response.StatusCode, "get host: request") var hosts ObjectsHostsResponse err = json.NewDecoder(response.Body).Decode(&hosts) require.NoError(t, err, "get host: parse response") require.Equal(t, 1, len(hosts.Results), "there must be one host in the response") host := hosts.Results[0] require.Equal(t, output, host.Attrs.LastCheckResult.Output, "last check result should be visible in host object") require.Equal(t, status, host.Attrs.State, "state should match check result") sec, nsec := math.Modf(host.Attrs.LastCheckResult.ExecutionEnd) return time.Unix(int64(sec), int64(nsec*1e9)) } type ActionsAcknowledgeProblemRequest struct { Type string `json:"type"` Filter string `json:"filter"` Author string `json:"author"` Comment string `json:"comment"` } type ActionsAcknowledgeProblemResponse struct { Results []struct { Code int `json:"code"` Status string `json:"status"` } `json:"results"` } type ActionsAddCommentRequest struct { Type string `json:"type"` Filter string `json:"filter"` Author string `json:"author"` Comment string `json:"comment"` Expiry float64 `json:"expiry"` } type ActionsAddCommentResponse struct { Results []struct { Code int `json:"code"` LegacyId int `json:"legacy_id"` Name string `json:"name"` Status string `json:"status"` } `json:"results"` } type ActionsRemoveCommentRequest struct { Comment string `json:"comment"` Author string `json:"author"` } type ActionsProcessCheckResultRequest struct { Type string `json:"type"` Filter string `json:"filter"` ExitStatus int `json:"exit_status"` PluginOutput string `json:"plugin_output"` } type ActionsRemoveDowntimeRequest struct { Downtime string `json:"downtime"` Author string `json:"author"` } type ActionsScheduleDowntimeRequest struct { Type string `json:"type"` Filter string `json:"filter"` StartTime int64 `json:"start_time"` EndTime int64 `json:"end_time"` Fixed bool `json:"fixed"` Duration float64 `json:"duration"` Author string `json:"author"` Comment string `json:"comment"` } type ActionsScheduleDowntimeResponse struct { Results []struct { Code int `json:"code"` Name string `json:"name"` Status string `json:"status"` } `json:"results"` } type ObjectsHostsResponse struct { Results []struct { Attrs struct { State int `json:"state"` StateType int `json:"state_type"` LastCheckResult struct { ExecutionEnd float64 `json:"execution_end"` ExitStatus int `json:"exit_status"` Output string `json:"output"` } `json:"last_check_result"` LastHardState int `json:"last_hard_state"` LastHardStateChange float64 `json:"last_hard_state_change"` LastState int `json:"last_state"` } `json:"attrs"` } `json:"results"` } type ObjectsEndpointsResponse struct { Results []struct { Name string `json:"name"` Attrs struct { Connected bool `json:"connected"` } `json:"attrs"` } `json:"results"` } icingadb-1.3.0/tests/history_test_zones.conf000066400000000000000000000004401477347223700212600ustar00rootroot00000000000000{{range .}} object Endpoint "{{.Name}}" { host = "{{.Icinga2.Host}}" port = "{{.Icinga2.Port}}" } {{end}} object Zone "master" { endpoints = [ {{range .}} "{{.Name}}", {{end}} ] } object Zone "global-templates" { global = true } object Zone "director-global" { global = true } icingadb-1.3.0/tests/instance_test.go000066400000000000000000000002231477347223700176240ustar00rootroot00000000000000package icingadb import "testing" func TestInstance(t *testing.T) { // TODO(jb): perform some checks on the icingadb_instance table t.Skip() } icingadb-1.3.0/tests/internal/000077500000000000000000000000001477347223700162515ustar00rootroot00000000000000icingadb-1.3.0/tests/internal/utils/000077500000000000000000000000001477347223700174115ustar00rootroot00000000000000icingadb-1.3.0/tests/internal/utils/database.go000066400000000000000000000011021477347223700214760ustar00rootroot00000000000000package utils import ( "fmt" "github.com/icinga/icinga-testing" "github.com/icinga/icinga-testing/services" "os" "strings" "testing" ) func GetDatabase(it *icingatesting.IT, t testing.TB) services.RelationalDatabase { k := "ICINGADB_TESTS_DATABASE_TYPE" v := strings.ToLower(os.Getenv(k)) var rdb services.RelationalDatabase switch v { case "mysql": rdb = it.MysqlDatabaseT(t) case "pgsql": rdb = it.PostgresqlDatabaseT(t) default: panic(fmt.Sprintf(`unknown database in %s environment variable: %q (must be "mysql" or "pgsql")`, k, v)) } return rdb } icingadb-1.3.0/tests/internal/utils/redis.go000066400000000000000000000021761477347223700210540ustar00rootroot00000000000000package utils import ( "context" "encoding/hex" "encoding/json" "github.com/icinga/icinga-testing/services" "github.com/redis/go-redis/v9" "github.com/stretchr/testify/require" "testing" "time" ) func GetEnvironmentIdFromRedis(t *testing.T, r services.RedisServer) []byte { conn := r.Open() defer conn.Close() heartbeat, err := conn.XRead(context.Background(), &redis.XReadArgs{ Streams: []string{"icinga:stats", "0"}, Count: 1, Block: 10 * time.Second, }).Result() require.NoError(t, err, "reading from icinga:stats failed") require.NotEmpty(t, heartbeat, "response contains no streams") require.NotEmpty(t, heartbeat[0].Messages, "response contains no messages") require.Contains(t, heartbeat[0].Messages[0].Values, "icingadb_environment", "icinga:stats message misses icingadb_environment") var envIdHex string err = json.Unmarshal([]byte(heartbeat[0].Messages[0].Values["icingadb_environment"].(string)), &envIdHex) require.NoError(t, err, "cannot parse environment ID as a JSON string") envId, err := hex.DecodeString(envIdHex) require.NoError(t, err, "environment ID is not a hex string") return envId } icingadb-1.3.0/tests/internal/utils/slice.go000066400000000000000000000015701477347223700210420ustar00rootroot00000000000000package utils import ( "fmt" "reflect" ) // AnySliceToInterfaceSlice takes a slice of type []T for any T and returns a slice of type []interface{} containing // the same elements, somewhat like casting []T to []interface{}. func AnySliceToInterfaceSlice(in interface{}) []interface{} { v := reflect.ValueOf(in) if v.Kind() != reflect.Slice { panic(fmt.Errorf("AnySliceToInterfaceSlice() called on %T instead of a slice type", in)) } out := make([]interface{}, v.Len()) for i := 0; i < v.Len(); i++ { out[i] = v.Index(i).Interface() } return out } func SliceSubsets(in ...string) [][]string { result := make([][]string, 0, 1< 0 { require.Greater(t, host.Attrs.LastHardStateChange, stateChanges[len(stateChanges)-1].Time, "last_hard_state_change_time of host should have changed") } stateChanges = append(stateChanges, StateChange{ Time: host.Attrs.LastHardStateChange, State: exitStatus, }) } else { require.NotEmpty(t, stateChanges, "there should be a hard state change prior to a soft one") require.Equal(t, stateChanges[len(stateChanges)-1].Time, host.Attrs.LastHardStateChange, "check result should not lead to a hard state change, i.e. last_hard_state_change should not change") } return &hosts } processCheckResult(0, true) // hard (UNKNOWN -> UP) processCheckResult(1, false) // soft processCheckResult(1, false) // soft processCheckResult(1, true) // hard (UP -> DOWN) processCheckResult(1, false) // hard processCheckResult(0, true) // hard (DOWN -> UP) processCheckResult(0, false) // hard assert.Equal(t, 3, len(stateChanges), "there should be three hard state changes") db, err := sqlx.Connect(rdb.Driver(), rdb.DSN()) require.NoError(t, err, "connecting to database") defer func() { _ = db.Close() }() type Row struct { Time int64 `db:"event_time"` State int `db:"hard_state"` } eventually.Assert(t, func(t require.TestingT) { var rows []Row err = db.Select(&rows, db.Rebind("SELECT s.event_time, s.hard_state FROM sla_history_state s "+ "JOIN host ON host.id = s.host_id WHERE host.name = ? ORDER BY event_time ASC"), hostname) require.NoError(t, err, "select sla_history_state") assert.Equal(t, len(stateChanges), len(rows), "number of sla_history_state entries") for i := range rows { assert.WithinDuration(t, time.UnixMilli(int64(stateChanges[i].Time*1000)), time.UnixMilli(rows[i].Time), time.Millisecond, "event time should match state change time") assert.Equal(t, stateChanges[i].State, rows[i].State, "hard state should match") } }, 5*time.Second, 200*time.Millisecond) redis := r.Open() defer func() { _ = redis.Close() }() logger := it.Logger(t) logger.Debug("redis state history", zap.Bool("before", true)) eventually.Assert(t, func(t require.TestingT) { result, err := redis.XRange(context.Background(), "icinga:history:stream:state", "-", "+").Result() require.NoError(t, err, "reading state history stream should not fail") logger.Debug("redis state history", zap.Any("values", result)) assert.Empty(t, result, "redis state history stream should be drained") }, 5*time.Second, 10*time.Millisecond) logger.Debug("redis state history", zap.Bool("after", true)) }) t.Run("DowntimeEvents", func(t *testing.T) { t.Parallel() type Options struct { Fixed bool // Whether to schedule a fixed or flexible downtime. Cancel bool // Whether to cancel the downtime or let it expire. } downtimeTest := func(t *testing.T, o Options) { hostname := utils.UniqueName(t, "host") client.CreateHost(t, hostname, map[string]interface{}{ "attrs": map[string]interface{}{ "enable_active_checks": false, "enable_passive_checks": true, "check_command": "dummy", "max_check_attempts": 1, }, }) processCheckResult := func(status int) time.Time { output := utils.RandomString(8) reqBody, err := json.Marshal(ActionsProcessCheckResultRequest{ Type: "Host", Filter: fmt.Sprintf(`host.name==%q`, hostname), ExitStatus: status, PluginOutput: output, }) require.NoError(t, err, "marshal request") response, err := client.PostJson("/v1/actions/process-check-result", bytes.NewBuffer(reqBody)) require.NoError(t, err, "process-check-result") require.Equal(t, 200, response.StatusCode, "process-check-result") response, err = client.GetJson("/v1/objects/hosts/" + hostname) require.NoError(t, err, "get host: request") require.Equal(t, 200, response.StatusCode, "get host: request") var hosts ObjectsHostsResponse err = json.NewDecoder(response.Body).Decode(&hosts) require.NoError(t, err, "get host: parse response") require.Equal(t, 1, len(hosts.Results), "there must be one host in the response") host := hosts.Results[0] require.Equal(t, output, host.Attrs.LastCheckResult.Output, "last check result should be visible in host object") require.Equal(t, 1, host.Attrs.StateType, "host should be in hard state") require.Equal(t, status, host.Attrs.State, "state should match check result") sec, nsec := math.Modf(host.Attrs.LastCheckResult.ExecutionEnd) return time.Unix(int64(sec), int64(nsec*1e9)) } // Ensure that host is in UP state. processCheckResult(0) refTime := time.Now().Truncate(time.Second) // Schedule the downtime start in the past so that we would notice if Icinga 2/DB would // use the current time somewhere where we expect the scheduled start time. downtimeStart := refTime.Add(-1 * time.Hour) var downtimeEnd time.Time if o.Cancel || !o.Fixed { // Downtimes we will cancel can expire long in the future as we don't have to wait for it. // Same for flexible downtimes as for these, we don't have to wait until the scheduled end but only // for their duration. downtimeEnd = refTime.Add(1 * time.Hour) } else { // Let all other downtimes expire soon (fixed downtimes where we wait for expiry). downtimeEnd = refTime.Add(5 * time.Second) } var duration time.Duration if !o.Fixed { duration = 10 * time.Second } req, err := json.Marshal(ActionsScheduleDowntimeRequest{ Type: "Host", Filter: fmt.Sprintf(`host.name==%q`, hostname), StartTime: downtimeStart.Unix(), EndTime: downtimeEnd.Unix(), Fixed: o.Fixed, Duration: duration.Seconds(), Author: utils.RandomString(8), Comment: utils.RandomString(8), }) require.NoError(t, err, "marshal request") response, err := client.PostJson("/v1/actions/schedule-downtime", bytes.NewBuffer(req)) require.NoError(t, err, "schedule-downtime") require.Equal(t, 200, response.StatusCode, "schedule-downtime") var scheduleResponse ActionsScheduleDowntimeResponse err = json.NewDecoder(response.Body).Decode(&scheduleResponse) require.NoError(t, err, "decode schedule-downtime response") require.Equal(t, 1, len(scheduleResponse.Results), "schedule-downtime should return 1 result") require.Equal(t, http.StatusOK, scheduleResponse.Results[0].Code, "schedule-downtime should return 1 result") downtimeName := scheduleResponse.Results[0].Name type Row struct { Start int64 `db:"downtime_start"` End int64 `db:"downtime_end"` } db, err := sqlx.Connect(rdb.Driver(), rdb.DSN()) require.NoError(t, err, "connecting to database") defer func() { _ = db.Close() }() if !o.Fixed { // Give Icinga 2 and Icinga DB some time that if they would generate an SLA history event in error, // they have a chance to do so before we check for its absence. time.Sleep(10 * time.Second) var count int err = db.Get(&count, db.Rebind("SELECT COUNT(*) FROM sla_history_downtime s "+ "JOIN host ON host.id = s.host_id WHERE host.name = ?"), hostname) require.NoError(t, err, "select sla_history_state") assert.Zero(t, count, "there should be no event in sla_history_downtime when scheduling a flexible downtime on an UP host") } // Bring host into DOWN state. criticalTime := processCheckResult(1) eventually.Assert(t, func(t require.TestingT) { var rows []Row err = db.Select(&rows, db.Rebind("SELECT s.downtime_start, s.downtime_end FROM sla_history_downtime s "+ "JOIN host ON host.id = s.host_id WHERE host.name = ?"), hostname) require.NoError(t, err, "select sla_history_state") require.Equal(t, 1, len(rows), "there should be exactly one sla_history_downtime row") if o.Fixed { assert.Equal(t, downtimeStart, time.UnixMilli(rows[0].Start), "downtime_start should match scheduled start time") assert.Equal(t, downtimeEnd, time.UnixMilli(rows[0].End), "downtime_end should match scheduled end time") } else { assert.WithinDuration(t, criticalTime, time.UnixMilli(rows[0].Start), time.Second, "downtime_start should match time of host state change") assert.Equal(t, duration, time.UnixMilli(rows[0].End).Sub(time.UnixMilli(rows[0].Start)), "downtime_end - downtime_start duration should match scheduled duration") } }, 5*time.Second, 200*time.Millisecond) redis := r.Open() defer func() { _ = redis.Close() }() eventually.Assert(t, func(t require.TestingT) { result, err := redis.XRange(context.Background(), "icinga:history:stream:downtime", "-", "+").Result() require.NoError(t, err, "reading downtime history stream should not fail") assert.Empty(t, result, "redis downtime history stream should be drained") }, 5*time.Second, 10*time.Millisecond) if o.Cancel { req, err = json.Marshal(ActionsRemoveDowntimeRequest{ Downtime: downtimeName, }) require.NoError(t, err, "marshal remove-downtime request") response, err = client.PostJson("/v1/actions/remove-downtime", bytes.NewBuffer(req)) require.NoError(t, err, "remove-downtime") require.Equal(t, 200, response.StatusCode, "remove-downtime") } downtimeCancel := time.Now() if !o.Cancel { // Wait for downtime to expire + a few extra seconds. The row should not be updated, give // enough time to have a chance catching if Icinga DB updates it nonetheless. if !o.Fixed { time.Sleep(duration + 5*time.Second) } else { d := time.Until(downtimeEnd) + 5*time.Second require.Less(t, d, time.Minute, "bug in tests: don't wait too long") time.Sleep(d) } } eventually.Assert(t, func(t require.TestingT) { var rows []Row err = db.Select(&rows, db.Rebind("SELECT s.downtime_start, s.downtime_end FROM sla_history_downtime s "+ "JOIN host ON host.id = s.host_id WHERE host.name = ?"), hostname) require.NoError(t, err, "select sla_history_state") require.Equal(t, 1, len(rows), "there should be exactly one sla_history_downtime row") if o.Fixed { assert.Equal(t, downtimeStart, time.UnixMilli(rows[0].Start), "downtime_start should match scheduled start") } else { assert.WithinDuration(t, criticalTime, time.UnixMilli(rows[0].Start), time.Second, "downtime_start should match critical time") } if o.Cancel { // Allow more delta for the end time after cancel as we did not choose the exact time. assert.WithinDuration(t, downtimeCancel, time.UnixMilli(rows[0].End), time.Second, "downtime_end should match cancel time") } else if o.Fixed { assert.Equal(t, downtimeEnd, time.UnixMilli(rows[0].End), "downtime_start should match scheduled end") } else { assert.Equal(t, duration, time.UnixMilli(rows[0].End).Sub(time.UnixMilli(rows[0].Start)), "downtime_end - downtime_start duration should match scheduled duration") } }, 5*time.Second, 200*time.Millisecond) eventually.Assert(t, func(t require.TestingT) { result, err := redis.XRange(context.Background(), "icinga:history:stream:downtime", "-", "+").Result() require.NoError(t, err, "reading downtime history stream should not fail") assert.Empty(t, result, "redis downtime history stream should be drained") }, 5*time.Second, 10*time.Millisecond) } t.Run("Fixed", func(t *testing.T) { t.Parallel() t.Run("Cancel", func(t *testing.T) { t.Parallel() downtimeTest(t, Options{Fixed: true, Cancel: true}) }) t.Run("Expire", func(t *testing.T) { t.Parallel() downtimeTest(t, Options{Fixed: true, Cancel: false}) }) }) t.Run("Flexible", func(t *testing.T) { t.Parallel() t.Run("Cancel", func(t *testing.T) { t.Parallel() downtimeTest(t, Options{Fixed: false, Cancel: true}) }) t.Run("Expire", func(t *testing.T) { t.Parallel() downtimeTest(t, Options{Fixed: false, Cancel: false}) }) }) }) } icingadb-1.3.0/tests/sql/000077500000000000000000000000001477347223700152345ustar00rootroot00000000000000icingadb-1.3.0/tests/sql/main_test.go000066400000000000000000000006521477347223700175510ustar00rootroot00000000000000package sql_test import ( "github.com/icinga/icinga-testing" "github.com/icinga/icinga-testing/services" "github.com/icinga/icingadb/tests/internal/utils" "testing" ) var it *icingatesting.IT func TestMain(m *testing.M) { it = icingatesting.NewIT() defer it.Cleanup() m.Run() } func getDatabase(t testing.TB) services.RelationalDatabase { rdb := utils.GetDatabase(it, t) rdb.ImportIcingaDbSchema() return rdb } icingadb-1.3.0/tests/sql/sla_test.go000066400000000000000000000334021477347223700174030ustar00rootroot00000000000000package sql_test import ( "crypto/rand" "database/sql/driver" "fmt" "github.com/go-sql-driver/mysql" "github.com/jmoiron/sqlx" "github.com/lib/pq" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "testing" ) func TestSla(t *testing.T) { rdb := getDatabase(t) db, err := sqlx.Open(rdb.Driver(), rdb.DSN()) require.NoError(t, err, "connect to database") type TestData struct { Name string Events []SlaHistoryEvent Start uint64 End uint64 Expected float64 } tests := []TestData{{ Name: "EmptyHistory", // Empty history implies no previous problem state, therefore SLA should be 100% Events: nil, Start: 1000, End: 2000, Expected: 100.0, }, { Name: "MultipleStateChanges", // Some flapping, test that all changes are considered. Events: []SlaHistoryEvent{ &State{Time: 1000, State: 2, PreviousState: 99}, // -10% &State{Time: 1100, State: 0, PreviousState: 2}, &State{Time: 1300, State: 2, PreviousState: 0}, // -10% &State{Time: 1400, State: 0, PreviousState: 2}, &State{Time: 1600, State: 2, PreviousState: 0}, // -10% &State{Time: 1700, State: 0, PreviousState: 2}, &State{Time: 1900, State: 2, PreviousState: 0}, // -10% }, Start: 1000, End: 2000, Expected: 60.0, }, { Name: "MultipleStateChangesDecimalsOddNumbers", // Test flapping again, also that calculations are rounded correctly including decimal places. Events: []SlaHistoryEvent{ &State{Time: 1000, State: 2, PreviousState: 99}, // -2.3% &State{Time: 1023, State: 0, PreviousState: 2}, &State{Time: 1100, State: 2, PreviousState: 0}, // -14.2% &State{Time: 1242, State: 0, PreviousState: 2}, &State{Time: 1300, State: 2, PreviousState: 0}, // -0.7% &State{Time: 1307, State: 0, PreviousState: 2}, &State{Time: 1400, State: 2, PreviousState: 0}, // -26.6% &State{Time: 1666, State: 0, PreviousState: 2}, }, Start: 1000, End: 2000, Expected: 56.2, }, { Name: "MultipleStateChangesDecimalsFractionOneThird", // Test decimal representation of a fraction including precision and scale. Events: []SlaHistoryEvent{ &State{Time: 1000, State: 2, PreviousState: 99}, // -33.3..% &State{Time: 1100, State: 0, PreviousState: 2}, }, Start: 1000, End: 1300, Expected: 66.6667, }, { Name: "MultipleStateChangesDecimalsFractionSeventhPart", // Test decimal representation of a fraction including precision and scale. Events: []SlaHistoryEvent{ &State{Time: 1000, State: 2, PreviousState: 99}, // -85.7142..% &State{Time: 1600, State: 0, PreviousState: 2}, }, Start: 1000, End: 1700, Expected: 14.2857, }, { Name: "OverlappingDowntimesAndProblems", // SLA should be 90%: // 1000..1100: OK, no downtime // 1100..1200: OK, in downtime // 1200..1300: CRITICAL, in downtime // 1300..1400: CRITICAL, no downtime (only period counting for SLA, -10%) // 1400..1500: CRITICAL, in downtime // 1500..1600: OK, in downtime // 1600..2000: OK, no downtime Events: []SlaHistoryEvent{ &Downtime{Start: 1100, End: 1300}, &Downtime{Start: 1400, End: 1600}, &State{Time: 1200, State: 2, PreviousState: 0}, &State{Time: 1500, State: 0, PreviousState: 2}, }, Start: 1000, End: 2000, Expected: 90.0, }, { Name: "CriticalBeforeInterval", // If there is no event within the SLA interval, the last state from before the interval should be used. Events: []SlaHistoryEvent{ &State{Time: 0, State: 2, PreviousState: 99}, }, Start: 1000, End: 2000, Expected: 0.0, }, { Name: "CriticalBeforeIntervalWithDowntime", // State change and downtime start from before the SLA interval should be considered if still relevant. Events: []SlaHistoryEvent{ &State{Time: 800, State: 2, PreviousState: 99}, &Downtime{Start: 600, End: 1800}, }, Start: 1000, End: 2000, Expected: 80.0, }, { Name: "CriticalBeforeIntervalWithOverlappingDowntimes", // Test that overlapping downtimes are properly accounted for. Events: []SlaHistoryEvent{ &State{Time: 800, State: 2, PreviousState: 99}, &Downtime{Start: 600, End: 1000}, &Downtime{Start: 800, End: 1200}, &Downtime{Start: 1000, End: 1400}, // Everything except 1400-1600 is covered by downtimes, -20% &Downtime{Start: 1600, End: 2000}, &Downtime{Start: 1800, End: 2200}, }, Start: 1000, End: 2000, Expected: 80.0, }, { Name: "FallbackToPreviousState", // If there is no state event from before the SLA interval, the previous hard state from the first event // after the beginning of the SLA interval should be used as the initial state. Events: []SlaHistoryEvent{ &State{Time: 1200, State: 0, PreviousState: 2}, }, Start: 1000, End: 2000, Expected: 80.0, }, { Name: "FallbackToCurrentState", // If there are no state history events, the current state of the checkable should be used. Events: []SlaHistoryEvent{ &CurrentState{State: 2}, }, Start: 1000, End: 2000, Expected: 0.0, }, { Name: "PreferInitialStateFromBeforeOverLaterState", // The previous_hard_state should only be used as a fallback when there is no event from before the // SLA interval. Therefore, the latter should be preferred if there is conflicting information. Events: []SlaHistoryEvent{ &State{Time: 800, State: 2, PreviousState: 99}, &State{Time: 1200, State: 0, PreviousState: 0}, }, Start: 1000, End: 2000, Expected: 80.0, }, { Name: "PreferInitialStateFromBeforeOverCurrentState", // The current state should only be used as a fallback when there is no state history event. // Therefore, the latter should be preferred if there is conflicting information. Events: []SlaHistoryEvent{ &State{Time: 800, State: 2, PreviousState: 99}, &CurrentState{State: 0}, }, Start: 1000, End: 2000, Expected: 0.0, }, { Name: "PreferLaterStateOverCurrentState", // The current state should only be used as a fallback when there is no state history event. // Therefore, the latter should be preferred if there is conflicting information. Events: []SlaHistoryEvent{ &State{Time: 1200, State: 0, PreviousState: 2}, &CurrentState{State: 2}, }, Start: 1000, End: 2000, Expected: 80.0, }, { Name: "InitialUnknownReducesTotalTime", Events: []SlaHistoryEvent{ &State{Time: 1500, State: 2, PreviousState: 99}, &State{Time: 1700, State: 0, PreviousState: 2}, &CurrentState{State: 0}, }, Start: 1000, End: 2000, Expected: 60, }, { Name: "IntermediateUnknownReducesTotalTime", Events: []SlaHistoryEvent{ &State{Time: 1000, State: 0, PreviousState: 2}, &State{Time: 1100, State: 2, PreviousState: 0}, &State{Time: 1600, State: 0, PreviousState: 99}, &State{Time: 1800, State: 2, PreviousState: 0}, &CurrentState{State: 0}, }, Start: 1000, End: 2000, Expected: 60, }} for _, test := range tests { t.Run(test.Name, func(t *testing.T) { testSla(t, db, test.Events, test.Start, test.End, test.Expected, "unexpected SLA value") }) } t.Run("Invalid", func(t *testing.T) { m := SlaHistoryMeta{ EnvironmentId: make([]byte, 20), EndpointId: make([]byte, 20), ObjectType: "host", HostId: make([]byte, 20), } checkErr := func(t *testing.T, err error) { require.Error(t, err, "SLA function should return an error") switch d := db.DriverName(); d { case "mysql": var mysqlErr *mysql.MySQLError require.ErrorAs(t, err, &mysqlErr, "SLA function should return a MySQL error") // https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_signal_exception assert.Equal(t, uint16(1644), mysqlErr.Number, "MySQL error should be ER_SIGNAL_EXCEPTION") assert.Equal(t, "end time must be greater than start time", mysqlErr.Message, "MySQL error should contain custom message") case "postgres": var pqErr *pq.Error require.ErrorAs(t, err, &pqErr, "SLA function should return a PostgreSQL error") assert.Equal(t, pq.ErrorCode("P0001"), pqErr.Code, "MySQL error should be ER_SIGNAL_EXCEPTION") assert.Equal(t, "end time must be greater than start time", pqErr.Message, "PostgreSQL error should contain custom message") default: panic(fmt.Sprintf("unknown database driver %q", d)) } } t.Run("ZeroDuration", func(t *testing.T) { _, err := execSqlSlaFunc(db, &m, 1000, 1000) checkErr(t, err) }) t.Run("NegativeDuration", func(t *testing.T) { _, err := execSqlSlaFunc(db, &m, 2000, 1000) checkErr(t, err) }) }) } func execSqlSlaFunc(db *sqlx.DB, m *SlaHistoryMeta, start uint64, end uint64) (float64, error) { var result float64 err := db.Get(&result, db.Rebind("SELECT get_sla_ok_percent(?, ?, ?, ?)"), m.HostId, m.ServiceId, start, end) return result, err } func testSla(t *testing.T, db *sqlx.DB, events []SlaHistoryEvent, start uint64, end uint64, expected float64, msg string) { t.Run("Host", func(t *testing.T) { testSlaWithObjectType(t, db, events, false, start, end, expected, msg) }) t.Run("Service", func(t *testing.T) { testSlaWithObjectType(t, db, events, true, start, end, expected, msg) }) } func testSlaWithObjectType(t *testing.T, db *sqlx.DB, events []SlaHistoryEvent, service bool, start uint64, end uint64, expected float64, msg string, ) { makeId := func() []byte { id := make([]byte, 20) _, err := rand.Read(id) require.NoError(t, err, "generating random id failed") return id } meta := SlaHistoryMeta{ EnvironmentId: makeId(), EndpointId: makeId(), HostId: makeId(), } if service { meta.ObjectType = "service" meta.ServiceId = makeId() } else { meta.ObjectType = "host" } for _, event := range events { err := event.WriteSlaEventToDatabase(db, &meta) require.NoErrorf(t, err, "Inserting SLA history for %#v failed", event) } r, err := execSqlSlaFunc(db, &meta, start, end) require.NoError(t, err, "SLA query should not fail") assert.Equal(t, expected, r, msg) } type SlaHistoryMeta struct { EnvironmentId NullableBytes `db:"environment_id"` EndpointId NullableBytes `db:"endpoint_id"` ObjectType string `db:"object_type"` HostId NullableBytes `db:"host_id"` ServiceId NullableBytes `db:"service_id"` } type SlaHistoryEvent interface { WriteSlaEventToDatabase(db *sqlx.DB, m *SlaHistoryMeta) error } type State struct { Time uint64 State uint8 PreviousState uint8 } var _ SlaHistoryEvent = (*State)(nil) func (s *State) WriteSlaEventToDatabase(db *sqlx.DB, m *SlaHistoryMeta) error { type values struct { *SlaHistoryMeta Id []byte `db:"id"` EventTime uint64 `db:"event_time"` HardState uint8 `db:"hard_state"` PreviousHardState uint8 `db:"previous_hard_state"` } id := make([]byte, 20) _, err := rand.Read(id) if err != nil { return err } _, err = db.NamedExec("INSERT INTO sla_history_state"+ " (id, environment_id, endpoint_id, object_type, host_id, service_id, event_time, hard_state, previous_hard_state)"+ " VALUES (:id, :environment_id, :endpoint_id, :object_type, :host_id, :service_id, :event_time, :hard_state, :previous_hard_state)", &values{ SlaHistoryMeta: m, Id: id[:], EventTime: s.Time, HardState: s.State, PreviousHardState: s.PreviousState, }) return err } type CurrentState struct { State uint8 } func (c *CurrentState) WriteSlaEventToDatabase(db *sqlx.DB, m *SlaHistoryMeta) error { type values struct { *SlaHistoryMeta State uint8 `db:"state"` PropertiesChecksum NullableBytes `db:"properties_checksum"` } v := values{ SlaHistoryMeta: m, State: c.State, PropertiesChecksum: make([]byte, 20), } if len(m.ServiceId) == 0 { _, err := db.NamedExec("INSERT INTO host_state"+ " (id, host_id, environment_id, properties_checksum, soft_state, previous_soft_state,"+ " hard_state, previous_hard_state, check_attempt, severity, last_state_change, next_check, next_update)"+ " VALUES (:host_id, :host_id, :environment_id, :properties_checksum, :state, :state, :state, :state, 0, 0, 0, 0, 0)", &v) return err } else { _, err := db.NamedExec("INSERT INTO service_state"+ " (id, host_id, service_id, environment_id, properties_checksum, soft_state, previous_soft_state,"+ " hard_state, previous_hard_state, check_attempt, severity, last_state_change, next_check, next_update)"+ " VALUES (:service_id, :host_id, :service_id, :environment_id, :properties_checksum, :state, :state, :state, :state, 0, 0, 0, 0, 0)", &v) return err } } var _ SlaHistoryEvent = (*CurrentState)(nil) type Downtime struct { Start uint64 End uint64 } var _ SlaHistoryEvent = (*Downtime)(nil) type slaHistoryDowntime struct { *SlaHistoryMeta DowntimeId []byte `db:"downtime_id"` DowntimeStart uint64 `db:"downtime_start"` DowntimeEnd uint64 `db:"downtime_end"` } func (d *Downtime) WriteSlaEventToDatabase(db *sqlx.DB, m *SlaHistoryMeta) error { downtimeId := make([]byte, 20) _, err := rand.Read(downtimeId) if err != nil { return err } _, err = db.NamedExec("INSERT INTO sla_history_downtime"+ " (environment_id, endpoint_id, object_type, host_id, service_id, downtime_id, downtime_start, downtime_end)"+ " VALUES (:environment_id, :endpoint_id, :object_type, :host_id,"+ " :service_id, :downtime_id, :downtime_start, :downtime_end)", &slaHistoryDowntime{ SlaHistoryMeta: m, DowntimeId: downtimeId[:], DowntimeStart: d.Start, DowntimeEnd: d.End, }) return err } // NullableBytes allows writing to binary columns in a database with support for NULL. type NullableBytes []byte // Value implements the database/sql/driver.Valuer interface. func (b NullableBytes) Value() (driver.Value, error) { if b != nil { return []byte(b), nil } // any(nil) is treated as NULL in contrast to []byte(nil) which is a non-NULL byte sequence of length 0. return nil, nil } icingadb-1.3.0/tests/state_sync_test.go000066400000000000000000000003461477347223700202020ustar00rootroot00000000000000package icingadb_test import "testing" func TestStateSync(t *testing.T) { // TODO(jb): add tests t.Run("Host", func(t *testing.T) { t.Parallel(); t.Skip() }) t.Run("Service", func(t *testing.T) { t.Parallel(); t.Skip() }) } icingadb-1.3.0/tools/000077500000000000000000000000001477347223700144335ustar00rootroot00000000000000icingadb-1.3.0/tools/dev_update_schema.sh000077500000000000000000000013041477347223700204300ustar00rootroot00000000000000#!/bin/bash set -e set -o pipefail cd "$(dirname "$0")" BASEDIR=".." test "$1" = '-f' || ( echo "Run '$0' -f to DROP ALL ICINGADB TABLES and re-create them using the current schema" false ) set -x ( mysql -uroot -e 'SHOW TABLES\G' icingadb

"1u ҚsSGqmԶ@;ݡ~NC8zQ?d s]d5.C[M Ķ~=y}f;/ ȭN=wx<^x< qqDJjNl@GɎ ! DTƗ7뼶p'qd MAL5[(@|AzvA~`-ڻ [t+!aS^Yk;t$2};A!y?N:zE`=]l10/}sMs{>pY1?^xQp(j'{KjRD3RT')yu^ޠ.ՎTQLc04 L@|n@-:$1R'"뗓HYو.@Amkf}E>A9ۧW8k(5f0R`h,T6)Aeͦ=uW"? &"dOЬ룘̶|9TUqұ U4S5䅋Gell!q_h mM B`$356j`HQ&\Om<(734f)P'U5zoZ F 3%-5(0Z-o̓QF<}Uɥ1A:Ψ;n[ Tq΂61gK,|>@R^~OFQv'pYtB j"uQ0kְ JDPa-\vDzvsbv. 6T-a^(W9] ʵ#8dX;d=e WKOw0ci[Ѻ<[ 3CP &^ЎEVىNj3kocan7˨{</z<;K{RX?~g].1[##@3י4ҨZiZ(D * Zt67Ԛ;{lp bd%%>R!:]uƠ@cv (QnRؿ&>t:لnRX|DplaNSv1^. zˊc#ކATu%Me=tR4*dAui+Eo\x<(lM Kْ`E ~z<ʹ =V{v2"CIl,svt%}WޙN#miFU59I3఩ F^IZtJ|XRvz;.rDžk߇ ؼN+b0Wb }77)`Ѝ}z,+NH0VXy~ga\b$lKܭjKy"ϿgW]À˕=||lCxz"kefU`#k6k,].٬ެQb=t\Zn`^oAк!P+`mn{uI~!b cW[b]/#( 61UͦE.ǘYxKE݆(0b6XxchpR¹TPk *z$b11?x~|i"Z$e@:.:N}C?m+ȖB-?D.(rpOs˨=? &BVP=)T94868*MXގ[M_& j蝍K7+uFbvIS6sFFG `>d ZhNö:B b`XbtB buN )˯e.r2ա~_&wJ,.#( iBJf-%W:+:]D¬<{m8۠842fE}5Tl rjpji<詹aNN4{QlA LpRRщ8jT44w:ڄ^ RYA"!ʨ1e|Ym3$ؽD^Y/S F0bZm@ה䅕S*XAޒ9k?T :>N:K ڬ!2>ateO(~l{<[r"s~z<[>z2{^MSƭd՗*BUB5*=i-GSq F|+Pt5N>x+Ϭ#ԁ6 MXKN¶9%Z(8aXM*Ƿz)Wt:+\<*f9wwvrw'XD w<}ܻ㢩3*!3 o^tH ~Y1ji`[0OubP w9y~s`#:U/q=jp`-vWV2vffzsNPN9I{NLQMOk&P-XPP@*+`n. 7`@${ .A}:s!:= %~VAh3,{fʘZObك gv~m:Q`UQ&֘Saȝ q^AnׁK~6=k-Eoxn esw:='Ȧ)8&ؤ`t,=lv)B*@Y'g7jThg6ܠ qmWQ4cX _'|r,=e⇚CZ"Jɽrk*6X PYa?@z Cy@@f ۈÒưtZ Jop+CQ6աVSʕ疏IUDKP3P8.I} nQ*;Kx0xI?$lXf69=~n+)'$jC1rt]:*k'v.];1&^!m7~M˱JO1};d22,ݷ ZXYhz2ֻԦ0[ٴ5ya"*g/]s zG}xۙ3Zͯ{l!&n~1#zΗx<^x<j$u$ b*NJ :15m1R)F?)SPO]^cocA鴯Vy٬P/1Ԛ0;AX-JlF?jIUЙVBgL&?Iz.c KbaiQl՜d\{q5Œ3d.:Qָgsڭyjfo(̖1ZkWAy?DFZ+N`}֠`Z@(:yc H r.<[.> T~z}ĻsCSpOsS) 0x1@Os[@mrDaEq;΄c}BSImhy.y~ݭ0]S^"fl1{QkKK8nk[Az%iWwt*jf" &YPvJaHXlzm趡 f=vk*} :e<2@8v0BV+h@j#WɅ/SktF1[Fr.sҪ[Ԓl/K:LH坦GVU1þPi` _ s glg#T^yoΌG4N@?V(#¯&xAbzT6@ 8v( h&m#cXd&!޸xn(x i` Q-^Pn5?=M3ٚCixn AvȽs Y8$NhY@gS)5#?`'Gv۝5: +t%5*V9*)m-Xᷖ^"΄l Wn ZFGD1VHS'ǜ"qqMnSGCM;؃ut}0D@_7EپںjZJe},>$o,\s =j^GL^GɮLtbLI鹋@<OςyQ=H&б^EB 恻XS Ɖ#7BQ$W_UdmqA? zC"Yۮ }h, 6&M5<= vg{Z8pcA˂zx¬Mx6 @`"ﭡW[* 5X]f1Qa f˳7"jP/x-X@c]~~jyЂhj@`ll?3Qc'fEAo\x<7My51lzRHҋk׸I0xO WV@ƭXXq0)"`V/qKKzJm@QB+??-OiR PJgn1Z,+ {Wsƾӓʞ=)S`p XA<f=E1!HoRq_$U+="!]%㷾6p>4HTƽn@UISךq^]106ys_]B:RXFQHk2S 55:vg B5GI n'' `Z3-2dR"oJ?h=X󛠚FM bÓU&̸nC5`ύSݥ*X~ցoxn/)rxOsoÁF睡3JJ~U&;$Q]Zpϯd]!S.HՏjfw=I ~Ht;J]}1~h&k(a PRǗ  `Oh-T Cz-~R\bj3-{]QFʎ r"0XޣREIl9&-6volk{^BQ<ϻEgEATjdDXDܸAdDUI%uiM1Ӎ =m,;&CF 1J<` Tckau6Vaf;4aMS6 BǤ1 VA(Γe[N+B-ck@ ^aK6 Z.(Aj @I$#eFT ]݆Qgf( HΠȾ#sԸ~";QbSt'41(𘫫RQv[OA-:8G&&H^gzռ~G4, Qa vCFb^ xa| K8=:{:IpcD.JIU Hy.:=>fR%\B˜NSbG E38ch"e(M8ߙ,B] \"dzeǍ,Mˋ @Zi;ݎ-E:N_mlF tG5cMcOz ".C+[62 ?z͵ǩ;K2RBK!A'Xzj}i1SJ6R11ĺ=s+"&{n<4SV ,($Iyk9?-Y<%ƹ| xOvK'AB5ۙEI"$6w^ѡ8+ZbOv!!d+,֘p_9SZtn 65 vP\b9YB/B!?LV8UX]5q-q,mx;AWFju0trKN =lάlA{M72rjfičAPlrN<KՋxaDB 2((|91T EIoX =|+(4lZ?JME24(0eez>C?TePR4+12IgMRɸ)vڃn H?K/鉔*ub&(S7akB@&BV2ƃkdz?ߢRݤR˖˳\eRjs 6e6z$hLP8MS4dP0bW5'+̖4ٚ}{S{<OQi?=- E`یzs=~~A9 -OM~7:L* @1RfG؏ YMHK<]uǺIn4w}/19nf-@Vͬ%ر*Y#K},w Rn:3%S;ǴYzؼlr/_ OsdS*Eõx(ߜ5w{=PwMB0$su ON=PUtlƺb:⛗lLFЌ{LJU <-f}Ĭi4@jƀ0ʔ%&|yI_f|j- b&beW/2 &N;݋" x I ~@]vq/bDVmpZz7qk=@sB7LhIM[<ߡR^m=0 OڧTa)5ʷ^P hEw7SCAG~6W- BlUeK93f_[ĝ=EU`+'f'ךoLy<8?x<'cs_½({1e\b<5 Vk+&.xݘ4'f31$7L;މ;1ﭻu!!NH]׮ RjÜ[?APѳ0>ꨳ `nM'^ @ LF ĠtZi0u@ƀKy?RKek.ڀJu@(F=&=jH~>xx."bwޥ;1ͬzpcN3v-e1Ys;'P= [A V@ NNQRġ\-Fbl:4l akԹ]i-f ݟ- jN55vJW[x⮓Lp֜M\l 4g' @cJ@L,\"o&g^ֻ{0.cRL@y卅ow@w oRk9:6y O]-`GOz%SDQܰھx0x-}E[ 1 ҮhΘdBdn 7!I* -^_L+ z¼$R?8'w86In] Omُ*ebzkImAu U(U\J27iAk:22Iͦ)Ύ匇:|)6) >J4hKeRD.ZV13zWկjoeWjQՕUrݜ`(皽f3j\77?Yc9 l|Lf:~6<ۂǀPx<*Erco~ ;<̍D ;XGĎc/B(Ԗa\o۩ nSfwuf]:~KzS|LLvr63nZSP# HZsX7~Kkl/uiR< ߎZ_"A{ӯK#3;\URIhJCi`Alcƍ1w/wӧ{݃f6B B@I&<9tNX"2딪Y+r>q<{?{?[Կ/B%'*ԗ8y I/ A`lFFƿ$k C=Մ$ʈ@!ԉ@j8sۭl騍quc%z|iN}uRؑϠ__(N.и/d/-\tE hH̪_OV#Pa|S( 0f $l3`cj(D9톄Ǒ}y;(MPUPvk(ʑ)Gz\}h=#2KDEpOH0&c/B㘿'gSC=N@ve e7Qv}!gHz_qjg5?K,?0}r?"e'|lK#vVKDAue`_sUQtW9$nx`F~)qڵIR˖ٌ' 'xPu1YDO`EZ#ڐ6[h8m"eF|JqohsEXb ~dӅhO[faXP2藮l7pu7diD}z;GIW5_O#i @!a$!)qKȁfdlor0ݩ&j%[V6Ȗ(?է}XjVXnnw#dgHZ75 DD7kkV- q:,иg3^}yqV^5x-po9yy|,qp[*#0Xb6D ͔H)>OqH'q (BܖFECW}k/idžȏ2_WCIɩKHop4 joW"S%ER 1AjHqlq+$:rZ5?֗NЛXR&&N.}/eI"FQ˗U}sP@榩'Iy"P-\I]\N}~ &͜fz9CYs^`.edddb6##fDDhPBbI (ƲىQ2I3c"T?xŨw߼vX `0(hjC=0YE[14$_z\~!ee DJQ6mvR{ź6E4Qt'@$Ctn0i!wx ~p刔&Q( O;\?vhч.5,`f?14*ǿ(DQj(l`BL`-;k6e3d 3SԘB8ܳGY67ᾨV?EA$2N()1>iA4sg"̘k*i~DP ^FFF&f322{QdeT_V@5bi YTBZ3$GɹS/fтom\z`\YFEHҎrHu(Ws5Wl,b"t&kZm3뻑aq-23Rųw؃waYO>Јh*'SY(br1oQ58rח|t8Ikf\=2n#yV%rU@+Hpm)c~3^".#g ),8+p:Rܓ'#%x+@ũcy2RBv%#ʾƥh X c4!Pn[kLׂ$5gmJʺZL}+UtYs}u8 bA=(`Pw dŊ_|\,[9I'"5Q# $Ƚۿ2d\&"Zb߸ {֣7"fc,b;Z?aM7N j#[؇) K1~ߘ)=NKCyM>&!$]YfqϿɣcꤨR(_Z6d#kDd&P4N5*<1\ܜx!1öPP*,h#cX>OЮ(.ݣntmw,`?tH]{;C}dˎ>#c"by񧫿M0xԿ ,>UٚԸ4 3.k3ۤ")c$y5\SHibQ=!nj_!x+p8+p7p)ܝ'#%eyv \@Չ2NeK@[_SB)dƄ올HDdn ` ^ 74an= 6ԍ ڦ.Q4e7+o%6mYGQ C:ݤmJ;$\Iۣ>StSm,w_alkT ғvO>U厷 !|˷/o/e j-ncԦElYH룤ml`e>Nkj` V-?1{ugFAqEƿ(?yxe̽03p(^F_@7_ÓNb3Y<,#d?2,Ub)OV[#Uz Ԕ$ccgLHV YH̪T9qvyW!4Ї2*﫨͗ȥ\ɒe=R: p{lp/I<}0l<ؽ.}@5ىz_ᾢP1kQLڷ^gP։!ο(ť"%:htB6ߡ؇:֥5>Ys7͊NmOQ؈NIU%cMXx cK~'8֝9݄,$gxŸf"3M ~^V kAB=p<Ƞ2:#vHj>t׿VmZ):h"UN"cĠa,}{SըJYɚ^,L"F1aϳT怽z(lw&B>ʆE!"A(Oo(s-$>%j jh"f}Av|9Hi^ʣW793>#ek7;{:KYBnD:Dm_g o G,KcH۠iٴTGPY2ͯ/=aT#~.݂)z48r^EC=(u{\tL/P#]I}{wRV UkOʖuY:'F)){?9Nm?I}`D:RP~@g)8 eddٌXbz`"& τiq#pUv d_ۮ Ej/oێeDR5׏Dd潗c4И,ZGgGl6Kq-[,qFxCW!7ؑ9٣<~OYn5΀h({ͰJGȖ1w׳_=u_gr։Oךh $Q4ɰYF Du(iوy uO2{TFFxr]d"DnSx.-+OF=5sy82Bvp!{lmnaަ)%,qPՐkK%TsrmfkZxr oA C)g)U.p%J^ť^J3$HO?3Vӂ,Zpз<~2Pefbb)퐌5F)K) ̞8X|![ʄ'f,nH8K,uې D̈=B*maTP40%BHDz8ן6*TF2TeݯF)wB` _$7sTkvf΂FĬ'|^R>hH}Q^%kPlS gƆ#c_#i1\׼ 6 :2+~S$abB]XcҌٰS֭=~BJIs5g<gn'ہ;ddddd I֒L f 6Rr6_X?6UJ}_=enJ5qCXKc͕`@k]jΦs-)ءė::2`P d3j+ON.YǍym\‚x})F0_c3{ւmnFDSԃQ[QAbEWs/J;rfdlݷ8:ǡynv~q0eiG(;֔ 5}-(D@zvmGHC%b]! C" &K⟧ QW4F Fq*#"HO،3Ȑ[]M ,p7`8OIddd]y82~ޘ_otzq6\@m;Q&BD۝KG~X[մ$Ǜ^,Ti>\rf5`8QYHKDRAWU7^dq pٱcgx ?"d+^ ]`{jȺ#BY6_<^|b⋃Na6w{YX7? @tMOZ w\?SHJ(})<_֌sdskAMvh$VckHvP۞YZQ_.}; HȈ Ʋ{ofÆ baB,Ca:hD4GR+U 'YJvrm$ako怽b8MR67ao9qVw]?ȯL^໹A1Kv-"ۀ,HQS9CT ~^N)4k|hpz#nò:lU?F8 ַrRj`+aA-C2e:UZɍƋ }iZ9~to3<1[ΗR [W;֫QJ9QS(h),bՔ=X~ዋ@I[%wm$nlHtF:zn^2eI&j$=6=JWE6 zUfY1U x9 +3f322>,|B/26V $V9v`UEȟʭƟ9F5>g=m˘0ñJ fk&hsQ5ZiumOE}ֆ&ћ\ŵZοh=E)0wٻsi '0"Ǝ[!jp}UCY*Ebᶟ.G=W} .m)AVDV㐦CgsR I 4O.Tx]~Pu#d"TNt3gǁhfd.RBsonBsxdCJGqv)%ew|*KIY'$&gӐn_MJF6uO;B= zW8Wg>"}] z=Wfz.`A[KP. NyK^«XjqPE0ȁCس J3$S?CbֺgK@9bSJާSf& tW HuBRx>$-R1'ge(D5%U" yE}18ɿ8;P\z`kZI}P^Q Z.,![So0w|?4ͰppFIˋ~WY"`W/|q76[V%`k*XFIXzƄ)| )z˸9 Yv "¿=8˾]{c>܈X5LWQ4&jE#Xo+댄aZ.C4ax/;/~tc!\Xf XCVJJKm$Mv)eE52 D'1ϐvg񸿵?{$fudop x"fFY~>'#:B;vw{Pepl \\R`lu6qhS(\@ q8[%S)Q`\a7QvUwu=ڬo׿u\i=EQm l#w7 d 吤i\}_wz8_s#ݱ;dQ :2) Ʃ5luο2lY_ jXO ?-ˀ@-v|q~/MgHOPGkJ[%9Zku}+iBOrAU| ٌ/\:x'ZR1/t:oT_gdQDPD2;XIZ%x \2;?$s W=V',=@lw}Y߽r7K.6@ 1å՞uf U[ऍ}SKVvӅ,_+WtR(+ gwc#'g,A f%rq9ޠpBn9et'dѣU^ށҋ#ruo*\c6ON4<]\n( s?3fa7RC,ٔ^EIB^±<uR\s.b<g@nI3AS.OeLe$p8-Wfz+rMB?qєM,\+ޝJN.L=V˞ܴ//ebr9/XbkC)X`Pl]:dreWaZW_ǎv=};v~|!vm8yul( KB1 w*d"YZes{'QބJà, VK}*>H(Hmc Bh{rľ }%Q@K_t' f;_㌌kfdeXmZfl,(i"Vk@&]KtDzR3kBH$AԉշFE;jͶ_߹e/Sp'8yhAf(#>"Q`m QʵY~+֬aɲTUE+(ҵpheXxr?1ǁ޿c,~qŅiB)KŨ#_!Q'cݹbtr("GOmxrWiX bgmj#:^TOqdWrdoFdQB,ꍍKbϻHh@0>[x;4܃,~-Lȕ[Up(C\͌s ~>'#ŕoqX |?`"p/1QY^>>j$r%7\gvJsf̆~ u¹&M835F2;G䯌HY}B*dl܏q~r+"GQ=3221p=ʖ(-I񲥱fg(mVoӟqD[JƄn ziph#-q6o:rbݵ7eRLPYuoO3/7oSKVOf`$zAaGha14(|]=kM1j`-uTP1+ZỦ "M$ve펁Ϡu"0p(F(H㇋}rKרY]O7\+;Oq*m H*)"ڇHz'$aQ޴b|4X9a0CJ,sqqnGsfx2/fF9;ⷀ;dd({^{<1?E9" }**]lm>ծdkJ*6闩 }D8h[pBzc%]2SO=fz|?f fC[^[Λ*6V Z痺pcB=#CX 1F&8oFVWRM(*(+^4J8`~v#gٻkԈ9>S:?JERcE-"E.Pw>ޱI_.MKZk;Е yZq.x* f1q:zFtHpjh{w4F9˿gq&f32^0k;cDV_ԇ'_t5R*q W mUz_{5œ'Pj]P@e^dbO!Vk[@ Mj PA[Z>"p,4>sVVG)1l "S#Bvd,VWפ`L"4;od,b3 2FGpfǡ|ξFֵtzV,TƸ۠F?eKGt ѳalA/>t 1aPFWV}2sA#TqqcG' ew8񙎬ÓqNb3}g'{<' Y W!TXgvg [ͦ),DdVXW=X!-mgtJǼmj*@?_9Op?E1ʺ] ͆k' pRD&\(q%e6B]/`m1"ik5j'g׺E2jAT`xCJ`XG6>ݘ@Ul؎˄m(JFtt(v'eQ#v.)e\>[hn3eZȂҕl!mk̦>i;HRb^S,l|4QKm|$T9|xlLdMF{ VUOȸٳ!dXBZ2|?}KewziHlFTWT72\ RW]:|^Fgw6=d>TGDS *`8>;fՀ`kj8!" pnͨ5Hau=Yz`Z(&95>9쬈2!)8F8-$ mzoD .%>;لM"!0|>4[ a%ySϿ-Y1:>:`F9O'O8q+3pȟKP4ΒHTi)B) H 2t* m٫Yn_b/F):}) H,Z僇/9O#o2ʒjV# p/tY!k޴~{ 'o<UQPS! D-VoQ+JD 6 rOճDԵuD R@GލX3lp@9:sSVO.E qVt9w_'t̷ϛP폒2`Z Dno"I0lŗTC ӗM&8< pO y9l/gddb6##܈:et _8⚭ɋ_~|Hw$Y~n"WO񘗵QzR$;/kvy{?(G c%x;˟4[׿af.|I7N L=4U TˀU'O#i jn]I3j 3gqLq e #j`tL@sv@|"OFF5^ 83wz!dW܀ @ٞ- -ΟO7F 5QD 6Y6 * )aخ8v0HU͞9 ̫8.Aˆɜgo:?KzJ?yVk~JDU%U ;WAD XH1#]=!+_O[R{NL,VU?duuuAJ$ח<BձL@YNZ^LM{,9eVC|BӬxENQ{;1~E8頴Um9z8ߕ|:BFע\{Q/"M%ٱ ؈HD$M|ԥ"):GKm1qڮڝ !Y|]NܹfDY(46~Ү ǣxy̲0D\8I^0W095ZAV " >hϖG" 8R(Ah\癇\\B-~n84: 4DNfvJhr##gfdd| խ$ NFt9@%,jdjT>] X!h4+Jz]mTS[T{sя@7xt+zg>,i6Vٷ8^7zW +eO6׮ܧ,, GY@[EHRXP|E"8uy'g.3s`z;[ 3vw/5~Ow ݟFws( =Uۢ<%2D6&!A>ue%މ {u F*$w֐0͒kO2сG>'###fv|?y67 VCXhg N%G mxJ^a_5!ǚ*pYam,J/6$f-@W}e)矦??eŎL36,$m9a֮O6Z[7,/1b\=Yܽa9]LwuG:YbD1u1cy/0E%$x/, v)޸ئ5O/3Ol0Η.BШnqL؇uo3` 9Nz$JZ[@,t^C!&; n[aA|2ׄFtu?K9KR_(IA \O|;nȠH2OFF)x33C|71߼e9$!0$=KH`(?j'EBʪd"*VJ_?]?:mveˌ{[]-zU4UؚL>^_Y{Ü7ell [( GvQ\٧ ~jyG7Ǐ_R밺, ě(qB\u)֗? 0ۺK^W|}j- /@p4ixX08=<_i>3]JYwI0F:O(kvKMxYʣ2g@l@H3hHZēDH%JRhT.6!Rt>1y@%~eTHi'EyV鉯9.1PaΞ?ŷnU5QiN%jP>C>WȀT}cUT AUBɑfI!w]^bNWV󺺚g1@5hCcBIsDNifrMXV >p ?gBjWZvshLלIyjL =?#HSzae,CJZ|6,Z% z)!m@&ϥ;8˞}'0 |5gddd&)> E n~(838ugu%! &`*ڙl3m͘>U4%T!Q}'gc;]]~fT(kR ʕ _9OI*`ݏ""}vf9+LUU~uec7O-9 e5%WDpC10}yzv]s|9"zST à>cW-v㄀95#Y7$d <>e: .gemw\'ۃӋRjz||v+*TJ%"R0 C9ڞ! Bj|Jģk5]ٿ6Qhbuˆ4]6ɞ a ӂ=-1kG"##ρ#`jB|Ʋ<!xa"kN~ǘZ igw?#6Twm#C7hmG?QPtjU=(ט=z9y>R XA*q[ĝ'x PwN@- 阌G<e|}py G:@T;爈 %dbSz֐%#H߿ӑEqCd@I425|S r8!Rc$ltl\`'dL+nׯ qذֳhFFF8seО$dxL&nKЏ\,H˜lW@|OG9ivmJ@3C BwGOY'O  qt}+rc d(Do@mێ4YZ-Rґ U "-H+HmE3#v947ӧV2[mnR6&g}Bph($-%/ݪc>B 3EVQHc1m]NFUn_SDԇ7J})sh:&`U,?gZ&єFDQ혶:)2V=i͒4{ ! OvfY#= dOۏ50Zeiw0è@(Mcd`)b7\&r}݄a6̰2-`"IoJ\vfar:XY0ql7I"OAg쌗N3OCUR#5Pn7GkWGRȂH')`N?%ACBTߓz|mfD Hi! E a AKCKHLdn%<Ҭ nh,$9"}ڥvM|gz:$Cwn) H$_H]gv:C t~L|u?lgdt ɣT!rGQF!b شewh'dPcI.9L1ƐFr}U]{gͿGb TX߾鳺\DDi'jZ$xI~ _@^;h2&YdVH#khtFuZ0(*b b sP1-0%tRRv5UvVF"#ыg 蠋u9ƐfFcHd~wH]9YPRك8&@)5,]l1Ρggǧcm T/*!e\2y222H]K1YG81 0pܕΟ"[HIDҚ-ҝ Y^>Υ^*'Lbj֣CNHJ3I9Wv$OvWOPWxĿFWx7/+DD—$V} _[MNE`!yb;Ҝ`RoֹMw:I'$I '$ IPķ 8:OkJgFQ3Xe9S <#<"`@BN4SVo- Jq}{oiG]Ĵ,`3Xic摟F=YHNy*,V]PTє6N8hҐDSJܘe+\zv *)Q@#uX*=8ȕ6<\ߐlȻ~\5и# F#Yѱjq&F;bnvȎ(00㡮ЇUV24uaoh)=BAP>M (Lr(2<|o=v7*d_3`I߼ӞK5iLN+4%d9`!֓grdg܇c0Gy@YrIybӰ`|;utIIx1Xƿ{onrXuxHnFo}.odg#E$k-JhJ~40Hy,%9ZXͱx[z R{&i㭎ɏxꓻ )_X|-\sQ2mi Th!/xrYv9괦j)%sØQyNc^u밠Xu kvFvu2pǎ^-D0QcXEߪ rsͻcbq$]Y,yҺNf=Yw=kAп]::lGjf\ ؇d>CU7d ETE%LI.~7]Ȥ!i "iao =7O {oX장o[c0HN:̭pһ7Y/aSPPEmM\e{\0){J쥑L.&Q_GxK^M,:* cTqވ6cq =]?od,y*D'$niwzC=X6)D7W{ѱ!c' }Z0voOIGǪ< b<BˣFnLgX,%;B򌸊`"2ܼ=BcXҖbeQ xA+c SދaP[ m3QD̵2sE`"G+AN_b٠ph%T=뮃9$7`]%wvt6;dUD_J@/WŚA,+{6 k;bH֔4NE6dC 3labP`lYc'o3i˪J`)"6QU7JEZDq z] 'ݢ\9L$ x&d ;~p<ӮT;7N "#޲%mH5LҪAvg|}}SZJ|1k;98}PӃ l;C^gcJH^اOۻqGǪT`W}k1W<8%Kfcs6EVPD.Udݦ(}ze|lHjə[z>凗O9X>兔OLst$(0](?KtrObآ؜6@D%=ysWR]O~%VBqZ#!&CW}g1'.83:54еMdptttbd0z˚f,@eGu,]qG+"@{sU5 W XNjT|kl]_LHcj=HV%\Ƹ)QIZ?WYK5+uu$@P6 ٜЏ}XD6TiG0W&YIB],!{H\yo>O0}:V{=@0}ԧ[JP)YlҰ [v4%p lFyYEKӷ?pݱ|+VO³'5hL\29K]Dğ%PM쭚E4-i?5: u6$UC'IĈF-L\vnq㆕ת% 9OJ}0akO~5:DJ,dIY?-\q DIP@ߊC{0'qW)Jn-EUD9 .!;x8++㤇ҿ t|_|OGGIxx_--6v-o**>yG!u_$d i ݜ"" dS;Ý#H>yeN~ >dnR )>S,yJvj\4WRB17@QfZfl|o'언V-8T`SysKv;~*ƧyBd"#=RP(! w_KܽYY{ƮoډU"8u|4F}+uttbdɹ&PJD'\'u9WI@ݩajgXR(?V5+= ;m~]Go@Ѐ8P.X7w+']w"K]#hqdJ`٬87ֿݪ}]DL6 ,COG8+9,l"}{ @-KɼpAhlKrz)OUṕ1X\CF-߀T{zqGǪ$}:`8!uϧmc3.t^t8NQ.e )"f'0;gGÛ٦S>ط4k8k7N;|عt>--H#L2UFLs.Թ GqpPp7̈@& hm&Jnc%i^)xƒ# l^!NX~w]/_V.a'r|oxK:Xӧe.f(l z,'%IAwR͎\)XDibܼ +=OX>SH>S3e<;U|".}QX9U'= }:u '::$.rY{}k\X r1bbC帔/:nBdi[ؘ{H5Ԅ SOs-\l}P;K\G)cmRg^"^%Uі 6WVd7r1X@sIP"hՍ@^t7щَG[GMLh<.@dnm˽)6a{"iU1M}W IٱxW- zsE sD`MAo/@QykgY%NmJ 0^W;u-$rC\XƤʱ>cwOcdX3?lbGF5%;Sp:99g s[Ջ 8'.| Ӂ%i-wg)x٪^w9w#ppqycW.Ѡ.X#D`Tg|FYΧ䲻h撫91B#(֯O9a\FdpdbH'*WUutv?"n&O9SގS&]8Z:4,<Ԉ)]E*l?"iDSg0VP#k3Y ((.=oIL;uyHOò+]0H9T7[%:F:"bR)X ܩߪsH>9;炙 n@tIa x2TxMEHΔWhms5tjZ e~L}ॲцM޹/NMU~ d6;R6+wM njNg2<^ Y0AP@DS扻Ais%x=K򡷐jES-$ *9B닪}7noAcK%y-%Kb>>FGDwC.]"I%{ں+cUt L{OEGǪ:`BkʓjؐJBOS*H9&RgE&~ @4غ{Yy,rL#[?~ReSn8u=mIcUxlژI `M;9e9fd\ ;V{n!RLm a"!3Bүz0inhmڹPY"Շ_+lGvO`֑1.vu4e-",QACEÙ\.kHnl7 !S}ɓr<hCO3gl e`^HjࠍY/<9ާN`&+3ȀW%oMHBǮ_$YsN³Һv~&T)nD+uЧ~"+2].+yQ׼ {\=]ϧ@ׅYs ZhKd#DnJ2+јxA45cv:z^8b+) A `97snt| YӉk&"ܲl1זns^8d'NFY*絤0ur$DǴT ,kqru&YA%hZRY5%A ȆP6&>1~켘F4^ѱjdҽdWM?g}*::V = O.ٳ\fC B9HDd1)q&Dq9Sʷs 4ߝ E[}L3{KL}X>e)c>;K BQ>XafSv}~Yf>ӹQQߨ( HО)?>1$P%5pL02/TPDȒmFx"%=-)[+̵A|dy `6$g9֤iY[E',?)@wt,}SƩ>E UuJDԑ Bvҁ+jU*qAas~L@Hͯ{h;LexGpѦIC$SG=^낎U9 2 YւHq&+ .Īr7)oX.W̖b*b8 v].`HVm̶;Q>1gW-Uz9,AU[Y诞fWEţL>k1^. ]vU%jSwvt \1z N {'!;;^GZ2w,_\ : 9jd*(4.'Dzf]!-"5c^v>ߢ!c uYjFлĶK _u9>bX>ȑrgUDr01z JY#N snϬD(۶_?}/E=hl³~O9\AQql 7Au_1U! 8 YU3YxhD6ƾ°ώՏ׌|fV];B}դ ϬjixR¯% t+2T@@wW:o$4 U6HylIpKǡǭd7SG 6{$dп;:V s$]ߧb/;:V pzKO@|ꄉi,a0:)Drc OD19+x՜u] VIPՈ|A_D2+xXvz&~KO9m z>esaLje2kg&RY^ec2zE]hWke57FBL&;{Xr7Gvu29%Th,禓,(`gƎ]Yu1zo[Z7=r(&t}h ttَc53mH~/a~iD `7elQ :θUa 94pIvmE-Tu·/ΟKmxugϻR`FR2fCl2Y*(c " :!I&3ғ}=ٿ5#fy`QhlEjWP"yX.N r _[^ rHږCttOc*VK A,wnG}rb̏`wtLXx|OEGǪǂ81(O^쵔Oƨ5bP[E":3"qڸJh9"UqJi" -\0 ʧa“GNO#y\BBԺ)jI1>mj9]86.K5r 4NpϦ3JE^#k/*p4KߓXjwH,}r4v6JsUm؜3{BX1yN e؃ {,@GG'f;:,6ّ-JķlCnYX'mkrA>z>#cC)aYR,?J 8}};^:>zAGvE^7԰H8:gC,i*P]<{qPW2Yk<1&g]]u.1UySN3^Kę:B"D|m;D j2˕41w˥A"'2 b-IZN8pPϤrO]|ٟ:0>W|G(o;}x Ttt LƉG<̀^9)bVڱq:i_3NEl]C,qK$! Dvi>M*bĐ;)7^L  ;%Cr PC0-Oʘœ.+w\r!>U5GbU5f$}-b!e5Υkg-r?3SqWl@'sΝPՌXrm."v76f"DKdہ@𛝘XX\LEԭD`iIyOנ/ZK\TBl3"[>j؍Lϵũw]C?,uh@rֺ?iۛtmޘH:}D3zAV66[ܩ~Y~ؕtT5mu Cv37DLv`A9&&R-!fzR΃ JrWc$"mCpWv}?9*H|sxF2nmIc>G+}ӡ-~~+cWF5ő}[Unt8vv_~u4c8Rj!wrGT1$PVX+i8aIcS{{*4TK[9F)g/bQwI%77s)l96Ff!4 Rns;K"NvM wq4S"ȥik!nޥg7Te6NXQTn)Y(mS[%MCJcΟSL⫦ [ `N_ "BvI< TlC#,,)F^H}qfN:d 5c־=**w\5yמ/;X>Yc>%VҦ ؎t+k?Zi}Zi EX+I\5"]JݙHq.Vfd&Ǚ5c_a{k6&JF *ܩDx?d.%"!;ع⿣Z:S!?+[bRk jw$,wHu0>L{R_ת2kG\֘7]N+m}_s>YfErf"wn:f2<T P-q7279y2QjI9yBb`2ٯL5!BeH#Ӻ ,[[n k]LPK Uv mYU;dZB؀؀JIK*Ip4wT2cuIhy=e;<wXux*pN >Ho"۠.V YΏPǬ%YV٪qrc?&ikcm06P\]aZYk;HJ^$ L0-cƬpHS+qE(M0BLEH`wwZ\H"s90 d-!$/sXԅ' /!Οvm'%;9o''苕@oS(/EǁE Ш@Էccut@p^&/wE旅y_ӑ:~ N8k,ct H*<އA;u~DvI C o8zĺIM7f"oTC)ͻ2BIN4HYUFsj=޸TlDUpt fR0:Bv@թIpԮ6w#>:{Ttt:Lx7K^DBt@V$ ByM6V`@ҿT6Ccn-rDvԙwoS 7ѱ|-X7Y"oI!$ݖbc#`[0O&Y0LQ*<lIr'1[8g-ַ5FN}T14id3M+(Of;{ N,Iɏ1X1{(Je4ޤ@W)2 5*Ƨ ƿaC0K8 ;}:V3z'\$m#'A6h՗‘Q"fC"FLiB-o8DnY rGenh@3:sP=4 ~[6"K; sCSLoI#SeJp]1to5Bߌ\,; ׶ \[@)ChuXW}ؐO13>v׭JONĬ|:?Bc$cU1.As=WH .L~>>}::V-6xE{x}:ţ9͌%e.voC Rq.Bg@6lW0"W;jI&{L).,ptic+ɧ2csfdXAFsP)9`VPb8ө)%e%)g#'r(7XIDS$nR,Kk\\Aɭ'j8l  #3F|pqHm:w )ΝT$O6놽f9"S}"T8ܷkc}:V#d$c0q#D;B[.q(?f@D,}Ie*^Zh(J;*""wM}&?+h^z˫v4NHN^@sjm*7Z*C͌9,Xa~"4cu$=r$&s\58.*DL'-Ar"N6k : y88a(`t)8 |W8mꭜGye-[a&s:'839HTO"DsK\x?iHOCGǪn'x7}+Dhy: Pa5ykE-ũ\1+ rHY3ζ'I>Sqgv)מK7ߝktb~7d7|X,bh͸q}'_mV` sn.2 #cɺ$rT͜δ)waӎ8 8\d̤<(B9__\j{2 Пzo*y~Kc|+ RWoCD8%G`o:V3&t: Vp1IUoֈ{J E7=O1/Q+/JDj=+ `"%؀B=ֻi?&K S7ϣSA,4V`8pgqkyVUVAđ>d*z~$dP!D [B[gzL^[I2^Lxރ&C4 {hHC*k/׸~bNUbY0 ׺VΎ2$(~i<T@BԵc5VhijL;$Ȧ3|DHgǵ: `f , Lݵx?g{Gɹ%+rSс{5cUc;0㬱ktn /ŀLBU)Qd -Ȓ81I-;P7L dcEfΘ=g_c_v>)~\ٽn^8G2 <kYRK֜T=YCHd(:Ό`j\+"T}~kdYG=W{Ou{fwUY}k51@630D_3>i .|(>{;db9Cs5)M1nčj* 1 U"4GȖ"Wy焔Lk F.oѥ;:j)Tc䏙Byգrt aJ,aBՒ\һ+wʮoADG m'jk>z.9sf+=h2Q]ok<^*;I5)@TE>Vx[d\F]u+m+// ;Mw5cyj1?T¹XPGy&f/8(]U6Nn~mwj*gDk f:IC'z^e͇3&1޿;:z|ѧ?3}::f<5+,*.*\-d2JiJ R)P9$q%38fLb+2}6Sֿ.xf'S\:NM(Lt7p=,?GD;5M01tة kmm,.Y_]ƀ*N[t5.͝{ =(dѽN>BC0-ƈ}Q^YM@cq>sMAS\FѸX\ڇh@">3K@^Vwvt<0D[d-I}L ")]sVF" %PŪ#ˑj;w= f;},~ϛ~_,<]˦ͿX;1=,B'W|Gx~f>5,vD]Ip<.!Qyqug  RA<")ZrݲIN>>]ӡ0Sv!!NU!KCʒׯQ^ӕL2."wAQuPR^nIo&ek -DGTf&M{Kߔ>PUO.XX1SĎ\`s|ѱ]~OCڸl$\XX `3Іxc+=5 sl2bLRcX[(`).Q3b4FZκ@/XJ).`P.~ϥG)7-?r)PjGP*o!Tr*BIrc- 9,Sk=}AL,+9*2swך+sLL;4@XBkn,|1Q'FH"njZM8"ugV׉HLچiwYz<І2gny3U6;guӡu Q'߸5T4u9ϱرPGQu }M+"5d+2|~+clO-j4^LZc6R0&bQ *qEoP<>\[$=K}a%ؿ;:4>}:4tt9<~=9> R P}DfatV Uh=r.]۹Gg!NϴK&JM IP7Y>:]Y>)Lݹ+ȧݱ|ʫ勀\qp> Hʼ5i 9NW{l\ }X\yZV0zvذue&-i T22:Rx׼`rV1=oUPQ;H Q| \eah 4Zf^S)pתk7ǰ z%cQb tb-}:NF-WC,GM`@6މvB75iDEu$#]~.LiCF8ܽ۷t3=ІNo}p 䍈9&os?AMlӆ84sHΘe jN5x\ 4  Nʅdr6Y*s$~>$9Ϫ~*˴&c)iDd:X^&b4t~UldjNy`s )<0<vi|7ظ>Aʜ+xO XӸ4ts.OEGǚ-: `.!de̤lc23[.Τ5)l $cNH3'CJ#/Jb{ӷΧLȮ7nI+F,qfq4ϿiSdPz R{ZƁ?)ø{\L!j /.V j3`Ρ\y Els?XjH;,ϣN0k5P{ؑ_(F>3j0X>墵iQY8_%t:r|%N+%4F]lSk?"8pLM{~?J`twvC NOr>QL,6oӦC+Ŀ}::,fG[g]`BYc>%QP,P*\$e(URxq[Qs\1{ҵ~10T-f槧yϋdS:?ӦCD2r2%C"\|!/ Dy*6dnR1$S K LNڵyeRu'{5ߞŽ˝+YFωJ,X؁xl,*ﺉ Y36, WIdI` $DlP1H&SP&2iL"3nv(@r{d,ݟk!8p H 1]@ Big' 0ؖwTs KsFݘS53uͫ,0ݹ'nH}G5*8Կ;:f|dNltOCGGW7!d'\ &BB]~!LEd-?C(]ՍAHRhqWh,$B2~,'e,7c.}`ՓDݍBBd@vv@#r+Za?]:`wU ?&qnJ,\\%0![d9R T3^oAL% lSU"os.#* ,[{ܧݨZJt?%YQOr*-h[Bd VOBd\\tK2 ڱĄE%r;" OPV Y[ UBV m<؏O|-^3w/^q;1qȇUcuosrYgg>V7ՙGO̒H|1ےjr/B~-fFc8@ω2h`(g $zE6c$W%KV$T[aLTK0g3ec1פ>O 4h4t7cj9DKІM]t(8ڷk[jw8, `vΐzYqsf4ܮ#=c"-My 6ݔ+#eu"L~OS=6v6-mSt-8W̱6Hcɹ|N۰h 1%&.kgNEn쬞DsCkDi'6la)mz%@&0`C䡂A &fWw>>^(YsdA_7D\/r>L 1r/4Ԙn"5sr_i^wQa3ۑm`jTemhV26\׍?79d,qeaInpÒDTA)ZHRbښhxcKwqUydw i$'?&u$PW+r{{pѱ_Lt ^ }::: !{<ؚ;Ϟ[`l AS3)4 Kwݏ,ojc7XsNuG)o`J `='}R9Z7 !OI-5njJ;Pc6n0`E2%)Գ6VUKbAo*bR0S-ͭ?jퟔ\н^#(fUǘ" svyl\x{ZȺEʟ({ ԜњsJhc K6ij\YmOR8vَ.eѱrp% O^ꤤ7|p/AC>5nX֖e. ? n=@>/L̼ )8 (T>7n{n9j6ѦȓXړqP\"6B&6+qaOCh, \椎8Pbg19BiB*/ *BQ{ _qݿ vžwk8@g@M ̥8V>W3 Ȃ2?rb{fzo9./3q~OCGGܯ]<P4%-..YV} Kܪ`+dBy&/L˧|,+ȧsmo3klǥO3.aaOezDlKo(PտTKS@VQbu.*t'=.T%;.ʗ5MXmNAr։A]C~z*~ |Zd tHu?zMyWi6 cVasٵH=ĝvw@`}gщَ6@1ނ 侀T,z1o8l%Dc%I3"*(obowLVa?{Mg&3'd=f~%c$r*gW&p6I[rRDRfݹнh>5\ؒfRIƝ&@%s$]Ns"f]xVur6̪ # D-cPk ~U%٣9]#EGǪ4KLt ^ }::4!;x U dcp&785-K,±,4fdM21]?yb.x5tf^sX9u$Ms*Թ*N)alY8 \LqkTdtciKaH=cm,kbxwNu.)c I9"ưt8q>ˇ Oagf B|~Y20kK3[ L}2' >k| rf "uٸ.vY$ce- DB1D!VUn&VOy|bU %XڰD&`_-Zp,{kk՗H9h$1Ok:2ׇ>"< A]&JY9g3\f%8V8[w8̛|"ZQ͙vu&ZyW D <<<2BuТI7[('Լ:wXKr3L0*>G~%3!E/&'3=DFDHlȒ0H^L--upBZnae'{C?e)7jK-f\/4dq%RRآE$t9&Ozl !R3'eĝSC :(  /gKER7biwi25\QԼX=/&!a䟑mNN|ǰ<>^#T>q~ Ȋ$6pGҒ""ACayw]ʸcc+k!86K R l&t{/>&D2S1SGBЊݘYHX8i0ŽgMݾþ6tjعM[xw`e$*{m41aH4B\{$"J릞S "s\L4*I5UK\A)og")lž|Avf$E*PXwQ.6 ɭωJXT4΃s>Vb:Uc3ɣG}B ͫ]c-5sL8Ѝy@tَ[?[/>'Emn3ѱz1opmq$“X80NC? _U4T\KqA᛫9兴mE,6ž)W(mݏR)Oۑ m9FcHSGM*uu̒Jyp6: arΉ&d?:&"9F%r s*{{|6glc{v85lBpk*)Q!PUJzph QE ցBB R! '|"`l3xwhҚ=cKϼ~ֳ{h#lBƶ ܉-9ҝKPV׹U8i!ƎY_BռW1 c /kQr#SY;YW,w!9$}Y/k)0G>džx1BI?'WZRJ$«!DbzWٖ  $ zoLωךrxS>2=rhsu羻µƯ!\۬(K^#PDw,3 0)gCS!Ց%lY2c-d`su w)Jl_hh9?m5u=wTx42aj #2CAS뼙<Ġsx~( 9Iq/C6$ ^J. b='o}c6>JcI ;Z[[5UDYwxnGں4t mޜ=Ƚ2Ci*&Қ&2ϯy <YqaUr*Ʀ2iΝV}@hxa:J`XE#glr`!h:6)`^BUb'~7,2|m lj@z_e[8ٷܰF (2b*LHnHJNN^!6M^G$&Ǎj"9ylE nU7:fccLxa[V%A?-iEy}47*/c!-Ee$1cQv0iOR)K9aZ,~O9x*gOywwT@|V ~8u)?ԓJB8Qg?++_q3l$GOe^ OWOTe$[i#C9I$e]Lv'bP_wPJKSw: _ &fMWYiH59@~t21 E9O%)ր{Zϖ#Nd`tQ*%] I9M@UP UTeQ{Bㇾ4فgiI0fb`Łn_竔 {O(j %c>>SG9 B*Js8Dr؍k(riS޴-+ `v(,(ޟ_duT 8>w%i#ъܫ=q + ˏrݩ} yືnv^31M6͍'g3K,<"@ \j]Otc`AW#Zs!mBɩHj)[0;׵{Ibcwfcucr&S{TnK|w{͖"HZ]8WGI?!6$&!D80VEyy!(^ f,CUaM}=wADËW_w^9L*C1#orQQn4- "n)ѡ*7*}h6f$F WF<3_e)pJbI=R*HʢkģvoH*)AbaAm&AqxaDb6}ʧ\~W]߷XS>S.Fhs&J$$/u(i$=v%2lC DyޘIk!j|*8^ ,o~;%iջ׎x &%ŜK(IrYhj<1`,ۍ s޵/zZT(FQ?$sd =o1"IIxQ[8fanEWѫ+"g$AdIyxCa$xv$``{O͹0Gv}_>ڥBڞ;_qɮ $!P=AARW !LЅG-UwCcM =[e NpÖW97q畕4ٜF>N]Qگd21DPzc彍3d,rC^/;IwmQ c1n4wAe}s#Ra灭}I yq;."bV=z_3fd etL?)c6Q|nI% ƃ/:q$&ޘ_iD5/"' qZ̩O<|ʯ<| 痟kbL1˵ůt1+,FmȱdUC^%](r/ձ`F Xvܲp] ].>dBc: 3aQPˍyV~QMe#OT;Yk7~+ؾ]xcfy)Uܨ: T2&zkp3[f $I$TY JTYuedx˟ʠGSr*=* }C$t;&Ozji \z qAd#E61(VwF˰(I(x{:ʜGA!0Gl&F`{T>埔ybG=>:Q hͩY:^KR91w2AR<y=8aU4XQPˎן)8Ȓ aRJ.?婟OP^@Β$K̈4 y&"<0Y4+_WfTHL#mlxar]./NZK;?XH~kZ1ּo0Mk?[);Ky WH).79nUS'JW2$T< ! JKI)ι9Vkk7\qkpWA7ND= ?$3=~L$?m\ >^ZZ^JEr'caQjU4gTJ˿h9 ! xŎ|T!g~%$ޞ 1ek(77\ Lͥ5r!?{vh )oW};]>7ZW3VU~ n 7E <28c\IH*! t?BXMffugZ67t9dɷ+/;}F+f0$Ln_.VmJ}ڠ2֊cC 2zHC6/ y@` T/\JJCxd2) 3ɼ~3S7 + ٥Y\ߛ$o| (kLY$I>pw5+kA5p1#:!_\OVPS/SBdž GJ'#ܘ؜V>;m8wrEܪReNޫ&_&jR6KXm|(Eş!G1\ cC3xS| )O| ՚H$3v),TPTYڜ xds*  FFW`u%e8tuO; :J1![Ȥ ,P1m]N) ]ƹ=6o|[3&a\֋WDC͗N#-I-ug^?BN9554p~gI'rbXD bvynVkTE슒BauHF&B#<[7%N? RHci9o72w4'W?+2nub޻S[ߏ+; i+mn~/$S)?NVV|H*B($KG1o^'1LYA|Aʢz0o #KY+[lePʍ/)-C.pNo̒̌ 8}WЌ/y n@ts|xG`Ĉ'_^uMzH* ;mEw~ d,~!MPxϡhdj U(=aC zPN%R ߕqC''M4_uς~n6d M|DZ S,Fp10|?_YI:v'o33 ylLkF)7KP bv`lL*zBoa[mic/fO]txתP.Gɱ  ܸ."=|k>xhsibV+P)q1>k [Pˈ`5bRo‚ #Aѷ1EDVcu1O'3$;cZ%jg{ONN]h`1VKF!++[k G̣1ƑڼaWCБa@17˵b9='`Wlr~z+?SNokCAD7&}1NS0{gZ;)P)/y .%s(7TIz1"(ՓiddrFXX䦌Yt#cb Sz{'1[}/<|1;]V>]tkiglnty[OQr>%;=Ž5IZH~Gzo'":D@3*#W~ϞQ>Щ|ʇOSNrK%)uzBH=%)yY 1xe(gĜ\Rh֠V8%#Z!y=7%_e!d\3ĸ>y?a"MŝE.q,\7!qhdɦ4@Ѩ)PэmwO#\sO]PЌ5M+ 6c>ʹ:E;;f6?;8)?0 ( W4f_)2R)ɋM:2)!7=WSrIBR#b%y?ndHQ8lNQ}ON.w]I#nnObp<QCnؼ?Όt}ɤ95eTHA cCG QC9;%yUęI%,T |XĕN**@q{ݓ>e\ CRq=9=ԭMV-$`nmHO'%7$bk.bIKRdtv7T_jN| 5$2U4M\xbB1/_tVC82v2q*k!%[< iX-5_a&$ dd@,{6I53"Ą㝹>YG%yxA=@u*D +r)5C O+OM b$d3lRWޥ`W?JlhKzlOl2^ Bn}s_t9cc40䃤rP+T) KRUK)VrC [6LA#m~ ɘ{ztxfDMOe~ǵ_4)o?`mH+oVƠ,+~df9zs.ܬlz 1LdM#X _+gB %HルiU2c[i n+h;%j7uy% KoiL*K ^F>1H3.()3թoJ>Has<~7P0ªO#n}#)q࢔v`$fy?zŨxc.E+kRD[9:f^@|*%eNgɓz 18:ƽv%ow~}:)ET:+w!ߐsFƸ(;Cr&˸~WޕtM1IjoE01Y0D̩$x͒aW-Y* CĬno$]<1}tCq M┓hL7_g6$%; |S,k8<BVs-Qv_,HmtmI-,p7oPE*↎&I,+XIɊP\?^0..xE?nza `g=ʑ]w?wHk .wn]iso+#|>kҍ'&'. \gVϘ;p0%i>Zp ~D<2p A8gDv: Y 10X\j=Zpaި{ ,ki=>j%ZH "%[EHPތD'7*-ٺBn]$BqHfGxqb`Y)cygcLKsn1;0ygM[%G |\QX%0/}9e'ѩΎԮ.=}Yq6 @ d8o)(PHpMD2s1QE`51!m5b.z𖕯gO󾋟D>*F+#J):~_ӉLX_j_32CP!C9!H|"yAOp]3 Ls-A_K'wxSސ?%cSl^K֎ew%3H]Pf5OBd:}&5i^:cN-އrY f\gI8J;NR˝8*9 *[R9!i{1;6I-gt8".II7J:=Ol^c?ߘPc !i6H ^rel=H{_+;7 {AztG~"Js]+$*-l|@tj:ᾑjeDxeD"mKnw6ع@O,.+l#ٕT!O ^ ؐKJx $FRrU–GQ+C4n<[;X opHѧ-ĊbbƳ)oб\ <7$g7svĘ)JU1H OI-Iw̱-$UnQ*BG@H" Ëَ%IP% 0>K4V,fL'%Z@\Snٿ>%p2F߄Na܊WI ;f6JdE ]v@N~>vB7dPSj4L*? [)ekʐn~9~D?`MC21"X=Y4^qJ_{"?_O5y!=<2H/qΓc(^ ౶=fwZr;fI[jrёs':L0*:.i;A<'IzxJҿkRoRE5biɞiP 9$S Tj*}`Tt*!9:"RngΑK?ЯMO<(U}t}eFΈemP:rU$I5`Ȍ`0N%q 1Q$:̛ L fROMAu-jQ@)c M`gs:,w%Qa<$ʟMր4B n(b x~PMۗPH[H`~MlE#y|._xey^;urA@k=?蚥tI $fĬC,6uЗ4o"\V"gEفl%>$IZӳÎgU`ӗI WNJqrXD bv!<=oyܻOEҫ:T9E70w;|S9h 5UM1]aJ7czw}yX;~l[ÏH{_T\lz "6~جWxb'^GJCKjTp\Hk# Ks~-.<+} ]U\{_HOH$"Ћ҄0,UZR/e-( " E# MhBH$kgzrkvݗ@{/{}͚k ڗɌlHk!rln̝7A] MW`*efoI*d |,X I[UVV(rYN9+Ɏpq6{Zpymd YiPUTB4kՇ)'Ox CuC:|AƷ57"ئvp8sZBXL;66h"Mmd%frg*Xj+>&29 1gӻP,i9qY H\dd$ߺJ\m.u>vquZER^K@}lo9jg^̘Ugeuv {K_N[YS8px_E&ABNԣJYo};&ZG!]ܳf^ϣxJUddddTF\zsB9" +% UJ$i:W"gI|,KȆy/̉ބj_lKÜB<WZs̺ynEGHN"h&$95m:a'e4J6U$Mi\,ct:T. ntW\q{NFFFFD̲_+k`0[6iCn;/*ysƬ;XU4&6@}kDsӹ#)Zڮf90Vvy-sopbɌn ~ԛgNi N6)Hj$ >~G!y {vVP<gm<=OvNddddD,ɢPYvIVP\e:IZYNOW=s|SEeS>TIx?)!}Lfl* 1?:j 62xaͲYbUz|ҥIPY١\ EccxxE(IhU:w#K/?9co tY&-eXU[ 9,)jTLYTR # &iML$|R<wk*ͷ+@`؂U{K@o -C TZ.$`eJ4ȷUW]ܣ ua @n}ݯiCSҌ#F W "&)// 7YG bx(^&f3*3{_0Hސt4Qw2aDA8<]zJ9|~S2XOnzND˖db6####"fO=ny$/irJp\ʒ$_c*V6&#D\\@B,R٧KU .Z_\EF034/|в@ksS8| OV 3E޷S_ƼFN}3& pA.'ZG}eM{t'DUFhC@,,$ԍJU)ne,WgUݱ]R0}+߹W5IȎVK$!cL6Dtrxj~*+-TdiE[H+>qҺ9&[nzDjfMrZ_w&f3U`C-ϴݤUZicN[su-(˓È8qai5 `JXxhO۽8x&F}K[ow' gb6###3ӎ[>G,C;T3lJjX@>Uڂt%pq=r-V@PIX+d4+y93HV lL9K~5Ucx lA?Jqp4, z[mIt0!OUQeDUY7۸ݪM } u2L) hBDJLfddd$f3cB;An rHL ʄ4S)+Ns6UYzެ)Xٌ1%w08&@|+HT{2FT4\% CvΥձP1Y+bq|OR3_gL̨ 0 ,$LHBGl$5l6 18`z*(4DٶwC'G=G:~V-zןVwNlFFF[_8gzzby9KHe=^id8L\joPV*.5 sUMfT{!H h=;g,v뾳=z*dv".sJ?ĕȢr @↩moj!1X>xΏ[',])8@&!A"fI\9AX(+=<5[qdse yW޾n#iL$C54Q@ĒN}v!e+NvO_"{WA9eY}~`eI?\ٌ y31KB ')KzysYhkW2sjeOb3A^g/&>a+V.ܙ4NfB͛ [147BaRHT*lZi])fa^ $ۘll6xJ?D\š"yl⻗~#22222IE8zRpєj%b7&gkcOXKtv -96GCNu(:kFK*+ CnSYhI~xFg]/{ܦbS{uKڇ,_`IY꣪b6,eR1jO)!(s2)%k3bY@ȦK,Kڅ })b?me+a9&{ #Q| ` o.2&1Xgn;zgYx֦h=P!Pkl5h0C!f+–PfOޗ64V5/)c,W˅i7? T7YH Qő%f8 JZ.@RiL^v˪xZ<ʊCRƹb6###*fRY7jJR)6 안A${LY47FadD~Ӆeeyz?~^I䡡z7bDIeC7^@˜`Ly*́%| ]ׯ8ۭ;&6VW4OZ\IM`$% CLfdddPJY &K99J'x:+}>,CPu,{~ R[AFJ~o|x;Nlڴ|6njg`s-w.Ew/9V\dCb럸e`Gcۤ;lC} Z U_6*4D 2[Jbe%#\@BK ))C@[@/>o^q(&je 1\V=@&f3vtlOT#/*h Jv^'w fK?:{S5EْZ;O9}(r̨)^5du#EyJQ` +VNR/7MƑG_ܝ;%c\z&Z4AjHjOa?ñtMYα aOYjXqJ=hC |&>B DRL"Wg6|/HFA@ L $S#}ؼG\xPlL8*G9f)C;SJP@I76sXj7=J )c2^JKo^ .X '?9~[o8n1 x5k&P.?W_>c[/oeb6#cG{Y’R읞\EX#% K@bIY_һ?I {M{f64s!ӛ;s"@'ݼIU5 DaZLLTx߆T$k:B%H_KV7;6n ÷S2EbW5n k{`]IP/R- ٌY%ΪJv/?^ln['-N*lMp}f%;(RE㧏mI `XB *AV핖2>}qذa#~Oz#.4)pᅟŷ} ^Nl-x챕8aC曯Z ,|{21ii_EJ$"9,.aO1 t&Ul3+?zԷ5k^? ysw.0A@vÍ_WK|D"٥ْչ͌Qjp6"B^#A٠ RՐ&%q,l^s_UbJVHXRo6_m%e> b@-3Dd=Kl^}DsP܇CPw5SU49ޫW<vh1dpT7y9v!p&Nzxp[gR6P$✪/xPdB-.Ϥn;}W;[@2\),ndd;~=_QS&7`)"9/vNr/Hk}Qj9smƌi4t睍IzOyso=c'4ˈcp$yGB4,rD1-KS+H 1܂%U6NdZTLl#)\IY8-,OqlLsQݘj owHousٗ 9,_[KǮK= "T%Aq 'Ί0D q=nV7HUΙDnM9|/ P M+ h X'ȈgEsN Iw6~`Ͻ+_ ˮ.蟆oW<@eYgN8c&C2&Hཇ$M=]ygy ⶴS!LM ,ARR2dIM lCkǛ 󭈣9lĜSK{"\?IY[5Jr! h\dy]oL;b}|q%&L<>ZU"65q#[TbcRa]Z2*X@&꣡ASJSԢlC(\A=MW8XD!cGnw=c 4}o}ܦTP;T$XbYcHj]OXĹG8[w~'?U8kf ~sd71 0=\ ,dBV$ ˉE-!iS"5E=aQn88 I,t > p[$[,oeV^9 4T%R8l&UMV js hW\dutO"qc`6& J?[g!e a(?YW@\ a-2 oa*_PrXlV;C[x͹@="%-Ȥlv'e q7"TM#]wYUqT7{w]?xn,tp<ʼn9d0n ʭ[Dվ d ?NxF? w%X?÷}+yTʀEw޹80Fɉ=*\) @Ǹ[ 4E_vn$BP[5:66abQE,WmS'MԨYXsJ l{}j4! Dמmo@WncsQkd p|ƒh,{o K ~VףּKw3[m٪ &CeNؙ3y믿~m)L}:Dcc!GGJ@H^',nJMR1?E =΅66VBl$lc4/!c:F%xyis \+ cxț3s.aIMnE-&$ZV\Ha=X+Y`.am'{U4jiCii#D:B(K2,^h/+43 JjaAD@jg ۴hQ84sԀ7\r=w8{ߧ|O\ %bje*X%Q*CR^i0+;C*D|? 򜕲AP7A[sFBDb%g]jIc:W̺q,ӄZEܟDU/qptKS6l6ѲaϢFvJBhh4QS?z p46"Oc5 ei%TI< IH-(j$ l 9)I.[FrHIVZL) )hIN^>J!<<2F7J'gcЈ I!85'0 zs^sNŮWS6 9EOyo/rX VyGOx.~e_QX5>|6;!;3,`smmD3L~{@0@˖:*5q}hP4̧va\x6a߇dX~̾2#\SNVU@":^($9;Ee8ۆ;q$47Ih2Vxn]lJ8SjfR4gwcPqk#7OHvԅ+-WbpyȄ5sԯ~8xU!~Og(TgX_Epp=Q =Rg٪Ygjs;;ϨeBT9fH(\^ɯ'J, D2MX)t]6m,wNjz]2K7 CJǸppyܮ] M~9S2LLP22dL&Bʥ"d]BuIePJQI*Sw<{:ՏY묽k~Yɸqn]{܅MNDfډ`5XE"aSYq;2LBH3D9hmB2mj8M"b_kM6[_[Qfda ).3ο;L:D^AckL=x{$4Y$6~Ӡ"X)[)t._w+h~Uֿ(6oeK~nj' ʚc"ɝ^vy?/4ע6]Hqx~?\ L>VeD\gȶ*PꞆhdnbbS~!ٱ&LJ a qv5й,":_:x폫g0FZqbVYDK+#SHW!E 1dtb)uڤ}M6Rp"28rntEO0eh&4'ccнs1b(ġC4 TtU>$[bbx*yk'[>0a  ?s缏:p>wvHԩon…S˱FjQP\QngB}b0{ֻ8h=HTٵ׮7#k֬`-PjiݺM0ϸOBr>9U~32-6'ס L2$0$Ku6ү|WJ< CW5uO -XoT%KEBD9ͨ-0 T#<|!ک{>ze[|I縎$)+6bS?5lT'_8s,ղw\n;J&l~_Ȱّ&E"=A6;`.Ef k-asl<l=ɰ~5eOo3mOoUƦ?Z_Y. b9VՐT&pR4 3֭-9ٺ)3$t@EФQG'…rwϦ6kcȰr R=V!́\YeLnjm0dp;Ԭ^ 4g~knO6_PvwP T{ɡ=ST6=۲&uɢN6A[dkysT ~^lysFCѣ{o~@A H%58 k? Vt>{Z SC iQJ1e)^'4M{nhmzQ"JuE4 6LJx%=,OKy BILiJJBsU"%ۘ`;/bY0ET {X2GV; acˎFjhYO.ܬ'sOc=iZrlp:T8,;CSPq&_2 \4'$lq,O)Q@>^\?AѢ 9sI)TbUŅru'}yӧbG6rq/y͛f;7%W?.efDZC"U<m[/+PyQ:nѢ\ umj/?24ڵgn ^{m%rzlY1~^5I,hlIGJp@ի $·PaI5c@2 $8–igO<,q=!#v]W}0@x$3y|-F%M> j53֎k/`ݺň_DKu8.LoӼ66M|u͙U0Z5U9y,2_vGOx~){}{)o[Gc„7A籟63ac6xk0rpnl(Ӧv̙=yO-6P"G={֓=bʹT1C޺e6Ν݋+R[۷o~dr'[Dro|>ΞK[dky!XlvZ9=D{ ]G~1sDo 1VOslڴ6m׎8c kܩ+~G{v-Dr}ʥCط/O>Iu^}e /Uhϵ|WhsiNCKIex.ҮJ?D/TR=,IC)Q ]1 6AtJur2;7ACt~0!@$`YyJ|āt- ]5MJnil>Xcǯ2Ly"t(zsך9BSIM-Z䬌bOVzIBA,)K aᢵٯ'$Cc΍(\ oʕ3g1ڶ2EGnqaAJؾ}<At림qg'ȑ#˃.`7e,n@z~%ץ[nayxS?)Z+6`BΜ1PJE$l\Bɓ-x25V5j6Ð!#q& wҪUL<ػmT%kg=3[^m̙bbL7ߌED/`׮|WGvOx(oJXFᯏã6BQxv דB1~\߱4xT6]^=I%7he7h[-q6!9Y@RnHu%Zik.dJfA.0)͒ޞ1Bjc <»_"zXT*?߬LPR )9#E2ِL8U`b6+:BKzJJŠ]4VJ͊?5t| | t>;HLiȂ,dlI[hXHz¼ ? {h?HuMH[exgSm E EKvyѣ5'ͷ3DH$&~`9ؒ%?G6~`Iev( JH,_6^"2ԩɃyV⡇J`ذ40:uʖkg[W>kIIc_ޛ'_@ǎ0x{Xj_?s7mLMMTH] ݰa3ʖoQoΡ\9g]O`OPqE=YP( Q牮6.-ZO"{Y:$7Yj3{{v>gᣕѨIovp_"& ]8vWm'A/_/ROLV˕)wA})D8$>!dVlLm/ JO,/ŀ(z,>[0-tm`Rֽ4 3#'#Wr5kr.;KC@bŊu PpL)uu܄UÎ; OzXRúx/$&~Fb?= 1h"FW޽ rchҤ#Ǝ}mժEYRZ9gHhժ)ġy^c쾑'JG$ٕ(Q -psr1rH9R2$HUֲw7b|cC%%c,Y.]NڸΝGtTeOX"x@L6l,= 6.s)wԨA~{-[bcgĵL417a2}/D?`̍J鲺\lv9d|Ȫ 2P=?ItI Hya>Vw$d\RVOt:9.#% TP7 JgAy 6̒*#$KLU'Ni~"<` a׶TmHlIT 殅I^/iɕ~1uv +fWYp^*/M" `dcwyL dD8&v;CavکєdOwK؆_FYҙ<:&f៽DOAbsF>Iaz"k=+qܾ EBݺ!-^eq8}N5r"!x.rp `,}C>{sŋq9N1&-z|f/dv],H#FBe>X lKKt~-F5j8q;(TF7 B]M[AB§/6xp/xu;Pb3LR;|3zGvQcȟ?5o/ŎGpf:9{C>߸SjXMץk 8&em^7|XOGb3 jwƬ9i޵N^ @Z-zR*1qk퓅 zNY6 @ڧ@|*qhr*(-'F-W 6i'LC#r"˜n$K,%uft#>rm7~w3/aHA[,* ]zgq{pڍ[9#NKJ/ (m62 pr=tц oFѤH-ɽ OmYzvo!#Y؄v%A:/[xEn!oLWZT/DpZ#ѽ [^Lբ+W/}ו4(i3ڼ3z8|~g!|ᥗzrw@Q0y|& j|"ӧ/B ˶?|EҤ4vl{O(29fpg(]į_x2sDEU/w7|e+M2q/B%H m=Y#N d.JP%f%d+V;kfc 8SsFK:ͤWy4ymTz`ǿN3w .5̈WÒ\l-bV7\k;bAp~Cn8xǎ/6%~͚5D cϗ[,BOf3w.ԩB*+dIG9m,u6%DˈG+"38<5 իWj6/{}3$' vIԯ[N&WV#9ߏkt?'8){8Ky-qs_=*@bUMJ( OsZ<"NZrSE˯1bAmUf=Ml*gbX+C$τ|EŁ\8# 0LӼL@)zְ"HM­ q\9AQВHL|-IYfgpI:1H !\EJB:h/ѫF7qLm#B6&WhiP]iؐwEʊ\vMuC&87 nN ΅d+Un -%<3)tP8Y {ňiߴ)nÞ22K<7uZq`ԡE0˕fUu1,+ h^HgnPEF~=z5j<%pȏXU*W~˗{VZ'׭O di9O!ǔvذ 4Qiiix"4>ƒYY1tH(ОOvԏVR ,BH˱_yXѲZ6qG޲)u[HfMJjY>1v6|ep$=SjjdfǦQtU-$shA I_\m[5xiHյ6{r$MYͦ{d[k&,館dnZ)Z3!!9O&n`e!^ڒ7eC/EzְY\t&e2¹L'9SvO?0 dFJF>n3N) l, %Lx2#Q.X\dKֳnZ@r]ϏC&@dd&O K.ʒ˝BbVԩpeW&KfHw#""н{4%`RUg﹵;4*hPED0.qŘI4yęq&c0:*.q (QDv١3s{[Tu6Mw9nսu}l2hۭRtuZsd;PCmmE?fBMu|P-4/-(]- Xet49"5eelUl?~Ҁ 2EFo7z)ms| !fi IpZoQ\^tQD8f$de)-_ 6heejއ4, rI| ˜?OrIbrEVy ISR}/4^ ֣zhؿfH?OIbzLjOLeh 8g˅> x$̙^rʔmn"AZ0&}{^|TQ$r5xiBђ 35mq`$)v KS~y?Oiҟn:?eY> A9 Ύe+Ά:3k)?-Κz\d-ۆ (nj' G+xm&lro={xA&lݺ]2o}y|c8x ` ۿaÇd;}Mv o*^ 96L+A9ړr|}싰}+4<$DD, -oRX Z&iFCq#e4¯eY#"GiUT>՟,󳱒o<-?eZdߠuECҒMɸ3 ^BWj;Qأk.II)o !U<|)?Q>EE%{R EC7`1c-הGg·=dc Wl  dZmW!TwNM"-\"8V!Ll8Z5ZU.rhyKG\|Rk2% w#)h9GDSHjߟi9,E,4gX`jL?5_ &:h EQuAH6DUL?QkjZǏS;n N<~(L\yl}_ =Tر 0h`a֭, *m]Se;-~>el]t>T{ҡS}϶9x.WcJyoVŒVCԼ ұyN[YMܗİT0tzV-V%B}S -S 88_yАHey =:7+` d3i@Cˇ?렓I8] Kt-{hQ"h!\'7Vt yZeF߷?mԅ$q;׌[Ux"`&C!dE'.h5$U# t  Oħ:Z>q83D&kon EM׾cj.$ VlShή ;2}=}=vJSO|hD%lKG[` R,—iHmP̲8n0N5n-!e%xo& *pv@KrqHee)<ˠT"+D_ҐbQxn^rAJjԱB=8T8<== =}-ZA[CTmy&jw5i K@8N )GhxwR^f Al:8Mŵ{}h-V$y 50Ȏc!&mtX$|5&Erh (O UdNH 9!$">BА$NH˶mOquQ}G J "rTAgV:|xf'46S% W_5]!K|tM|53 \<ҏ"?jJlгgAvCX~Wӱr٣{ᶺ6ެus ѫWC pW٩ 3fmvPR4m4+cI{3oޟ+- %393cNm`@cV;ퟑwT0U=dq`TZsG[ XfH2^FSMَ ف AA 'vHD FHoD&p4$ womOGhh_6UGwlϭf@6SCb`֒Tvj7e 4t]7X+W~=Oʪ=䳀sgGJiqzm&w͆Ñ-t=G4q+CLRrT Cr2e`6LQڧb27*x~{d@"42%xl2ړ#6 Rh}3 0\#ụw@@[Rx!ϡq, q-q4 ue=_AK\P%e BnCEQkђ(8y݆3ARh;PoM$/y^cMW11 5?k((%=P_2`PujvA՗nnh<'"?B,bbQ]DjoYCR()н8ܙkNF$? 'd,QL(4".:7,)4|wlmzTm T`+mrءϓ!I, E㥦@pEJRШNd?3<>fsLO>YV~FL2I-я|/~)AlR*ky|Kf9soicPbM”zA:S@JΙ۵V> ckdPFP?$QzKAd:,[WM'>A[ 6lK#w?=~?Q Zs]`&*#6Gv,up*@Χɩ9k&!˞h^wGR-ocYξ_4J_iӆ|L`8lTN_S.=Ĥ+R!^D}(΂OsϽlhѳ<mhKl߾cnj@߿/r#:29qQhrkbn9eKSFAjB ET$:-Sfī |?&ge֨_#"w>_deD}Iز!a;jQER{A^vL  E͐0]*ekiHgh3sJџ\lRJdU_@ErbJ8Y")c] AО/y9/C妥Ab#u{%[:O_4JKsf-%@D'xJ k;m@n+غS^8j({~OYqBeE7_ҴA71ZGف_\mKaD zuCQMi1Ex2{/V!-_:'d{\$>-g7݂ʆEuP2 + qj @'ø10q&&M~eS2^2d]7 } N͛m )_Z OvKL~q3ϛ1Z,uh` ϥF$-TH2ZҿE0ClCc %@u"I&>;sCn ZccSild݌̀Yah6$doij$GE'&C iԉ9l`$zZPN(RT 2Q풠Zh8%vBPy)j^kLd3"PО(a7Zf ^HJnm[ $WL۵" lo%EeCq,'"M k"5̩7$ˡ%h5@sĺ J'=zq)1J(oZSƚevyFmаc1^tr_; PV Z=>'FDdDSM$uID42CF65Nzw cVԟd< R'xx5$wXD?Ș# N+.Kߥ +3g~554>SѵK,eL|rָgC,t q̓ ?ՈD" (#UU49q@ת6u")< j *٨|$]Dd_̲+q %+bkri0!6 (ϳe9Ii3K~|3*{Y 5k/kj_m~J ":-E"=܂xWllF&=j{AkR =8i@G^%!G$eř0' vkD8QmYexEeVm:5lhxO$X55:8Tڨ>Y4? ~7n4&x騑{9k9ڵ ]G+o 6r<;PU} zSǷ^/K.5#)z?'~r3*C/# Xظi^|6wF48q<|,2f R־oo |!kٱLRnJVF3S^`]R]J @HHȬ`3P4N<kPU J;ɂHXe{BPyӰ#mص5 E~*s΃г J Jyv1݆x& %|sm Fn?kv Y2Lih/AB9PY}vc\ }-]&OJ~ XzdqFPt2Miy0x WF(H@,V|{]> #kBI[O{0Ep9Ɨ'9$g͡92'IƈHN04<@wވ$!Ͽ#%MgeDh;˫ 7[ܣ#)VP)5tdWt3$Mg BIUߙI"H+^˗wCEwd~f`{ /l.j§ppÖ-۸KWw~g5Xdq^<wFф'x΀;z6mq.%o-t8~|G~ _{f{& k~!"qgY)jGǰ{p"Pޖ7ty|?QBP"jjC)!(TfT䖼H ?ߘ0]Ms&2{ٞ,LBu\ĿeRqZ|R3d~(^؇\psd]w6m.[Ѿ2f3b9yN5 P}iCrƻJ&=-D^.聂^cQSg B?EΟ$)w'ܖqv[-EYk>9$z>kUΡs Jlv-uw?f?ʕWRƾ9_x8m)uX~"tՍH3 %EغmÅn[z?xxDqOvjr:-nAo9.% 1MYn/ С(z=SOU>$z/Q\WL ?C%JDlSEDʂz8)}{9B6j'ZΖA]ۗ4_z>蠠` ^P!(#ދ@'/hyKGlk^\ T%vlF]2^L ga5%`O,FZM*sT*w݄%ڃ~S iG@dlUz/ٓ6yzd,Ӫxij$m- j~mٴg]:kxlUuKh}Ysv ,EOsKOtT2$ 1{dC *Z. 7}?@~?-(s'ױ =Ȉ`ׇԸ4À"GčCeA|h@㙃uo,HI^k>Or25aXJ,&RrLM8_cgdWh ĉBKc/5\4 ɶ:)$}%0\i_ g}cMUG?!DzػwbF#4.*,/`f7>$7#Bkڬ2uSE'"-z۰ňTa@:8aG2ۚIhz~$7]YPq&^#reDY>W+_/!F\3ߪN# \b$eŀٱ94Z$H$2Pۺ@'Fg}e|.zCtEΓ a4=4/d+ PQd( 9$fQ+PO-`"DsRp jQ]ڣ:ާZЇ`8ر@0RxWSyO̊$Բ䇿n<#OyGu+jHxt5]w.pmJsMH@*yXvFf@:viz֡%xlKeSB*ԬV?]MHTQ˄E-" s^LpQ.\L(L-[4Z-BflS#QBq1XXbD"P*BlQ1:5M}͌ \y;~ui{ ;ZlQ BNM913 Sz{QSS11 y%B/[IM)5mp FFFz8MpDHO ":*v$zjrG 혝}ek|pXȎ.F(&%5Ocͯy]h<JÄfyeBuC4[iGWS{AoY$w2o'OTiau4" 声`yL o8fn"l΁i$$ߖ^C$y) w*]DHc@"*U(1)𶔊O ҳR0+9Ef {Kׁr߶w{8 K"%Q&v%2j#+1+ IkbW+ DJ%KI~;~gzf}wUnnύꌌ VF~2O%PvCe1Zً z`MGGKx!cu? [ W;oAo~/Re)PoxdY܇< M(5ƿ$-"AɩRH"ܢ#Qt]nWj'@z5Й5Ae ǐ6+; A"+O߃x6#ݙX%=ic~7Н1N[eSg@2:{JnootHVcGc쥄*bOk45 sBR,#qVbt|oK55wpSWD.0}ϓRQ~>X/|.EOo#lo?~~W}?Wr~ P/*vGȓ Q@xw>Or?s}QuH1XTmCqd)yES`n<ܭO"}@YB`N(dlٙṳŠsj2{y*9WZ>Oe(lORi=qzɱR7N7x3;"{=եGFOҾD8#4~ `%E$ӷ٭vg aztM^"5#-I$S^Z=a%a YlX:9bl-7\^+ Ub=ѰכwXP׿ktK&=Pknǖ~kW+_ߧ/2)xdg y4=ۇt@g骊UC-5V.Knds|9D*-gJ?i5kb=//ܡgNp'O3> BI<Ͳ>v>bٻ;zrݾͯƝw{‘#pA|jfs!s{xϻ_o{B{JKH]en q^LJA笋aɾOw֠F0D6R愈!09K0D4j'/SX#NGv*pSqD;%" _ȥȫ L+0_T^f~3Ď5| v+I)Ɖ -.V2Yq/荖 @@n0Y7K| =fXހcD 054@i .#gC90S`v*ST,0t`l-{LHz)=be.iJ0lԛT%Ak 0Xv4}V*]>t(aT֑P t.=X8giH\/>Zܶl]6j@BVx@ O{KOVqd3?7HwnWX})I6<^~f?i^Q/6|@lOϖU @9lH$5K1hԬ xXVS4̒tΝ'@L <ҧL{C)o0Cs^|,Sx娿rh/IĹccMre;Z>tgJljz:\.ײd8ϓ.kfhώnood83{K~so##GP[:kbZqgdPwNwKӞ?Le*ϳ#:ߨ=:gZ(` XPuhv&,d~gE\Bvf.:u_٤e{ߓ!>teaS;q<[s]v #o*vgcK-dĆ"S`ّk!^$&H h+ ܱ;oEgf6'CX= B:I?,) B5:?ƺ팇贫hV{ʽn1K C@8W l ӖGA%k`2i㑕0T2F~*6Pjd^FF'oQ͞&J6Οe/LjW>@!Fѭ(%T$T@Q.DQ:ljB?@&IHY[2^*ln{Lh&mKG ~3)d<^+1ex)%Җm$3KPR I6jjz)BձBU5 hNGùl0 u`ӺvN-=k rY9{Hx9-kkd?x-wE456DgYhGN]ܱ3;n*6+X9q?<@˒uQL[dhѴ#t֙Vw%,`cXCKFE8 hǬ2!]higӁGw<1;STf422v"Yz3W6jRuƧ@2u. , rž8feh cl&ɵ0e*)`\Ks !`Q]p\kGQ#4&"v<Fixv@k&KoYqLS`v*ST`WG-B8LlVZ\æE FnA%6׮aTٔm6q3YRNaY*kydzS>;^2bujeщ7o|@ 5&< pQ[)0~L(v^ Τ…T8fIr/^9Ǯ S\)9Zٸ|öܬ|r|+\d%%ɡoAY  ͉E)OV}` ̊"x$8*# 0GNP )Mr ;Ю[꒭fRw!yL64"\d\:ƫhr <^>f=.-t?+3E{k4 La:`1[A"G$ e*iGπIfŹ"[g ݦRcBrOgfVMn[80^i/KYi/DQ62@a#fc@鯁X|pngJcx1T2pYW^n_J :G3P}ken${@CL϶b3rnYxN\ZvbaQV2xk`cITxT`4Xm'dKDXa$,`Ci'j`X`e<Z>9sjggfe|gC`lC`aEZLN*x#X^ J)=h l q>f}63% U!f-oڄS*Le*S쾐ccxNRn^ :pQQ  WԠ"z'*=u@ѽ6ڳJZ̉ZWT johddnYb[ru\g'I@ʋū pINOEڵ3_872 {.>VkdT:6ݡPr^GHzR°9 6mKNcJj@jnH Di~)?~ўV!%8y1! ̲|b}+'D,ša: ^Sf i0&Bt6o.TctXkZ;MG>v^ft`lk|okDѝ][YE*:K22T2EF0Ntc"2K mzis:>o VHTѡC󩌹.@xZ2Y 1@co-.lσJ8M\\XNɨ.0Kg|xuGuvYY;8 %ωthfwA:}bniMز]hPԔ65-8/t&yc\ 1ɸM1C{ۄϣZhp ͹PI‹6X_FNe*SJ$9$BNŲd`@< ؕ`r\p9f+2ZZ9yKmzs(s{Y-G+i_0e߳fUAjG=#AE!v]v욻@e|GDe7Rk;2zFb}g;k65+ٝ_ STBT>#*sD!p(&& LqD(JX\y|TxE8ͮܞ džII:D /֮$"emY]+T*똥yLϏۊzH ^PW Dߐ_ `6JS>Flg8YU"b-`#WyI r;8h4<_}")Ц`+RJrx޼}BeLJaVuJ"o4{@hp#%``G.yT2=M"fܪ:`NeK5[ՙp ODʟzQTAeߣquLǂ,+`)NoJɬΧj+cYґ y=bmn[IOBf,Dك:<^#"fw\F_X#_PCDAE#&M(Ȯ* 5e [!pibS7juwk O2#k"m ̆+V |iO~I[X45DLl]$O:wgw8P=G4z}Ӓ`$إv7ȳdP>b1;Le*~ӓ2)m3մ(voC<ǜH.՜#qC.֗]8ӳSj]Y^^kurSxN79Q5B-mp(V9NHSf;?`(0k];$B:ReH %$lkbSGK 5 eϰԣ)vQ%KKc؝莇h"]-]SĠ?'t-%5 14=9 ٰɇ0<*;Iccz`ox'87MÑThWd8$^4T2ĢA6ހ;ϑv"a9u? 8ha^CM4יuwxMnZf25ٙ OJv#nmN∎)TFfE "Yœ׿ 9eJo|$2qNH2 _ԁYcaG=(ۗ.T4Fװc#hGf<4\`9iMP$bR]Jɖ+^ؔ "SwoIBc6gߒn@CX `8/jPe@z; IQPLg̺5.,~U:'Txz̎ Hټy Yhu\@]RoŖҝ1q:fUm9tvMЪN߆Fj|LJo3 "E0%\zHc z5M!N-51;Le*01J)<Bh'ck !3%Kg` O^[:蹞C8E U"*( mO(bR4yl0a0(byf+4P'! zYOb"qNɳ n)@f%W1:DR%4Rxu]-k@ZQZGK%(]ݙ4_y9u?sZC Q1Ro1HA3j,{&<֟%n`)T2Ɍ( Qn? JQ(&0w>G?YUzN.Q@.(gOi]f:&5=웦hZGdX1rD9\2ET&<;#>O!Os> x-!RZеY9Wo v]})FrYIʕDDZmo)ugQ $W-n$blxOc؇Uê! l'&_h 0[qӹk^+;ʲ~`4܍0sU;)i~>)USr?b#74)} Rh/Md ?U@aL脋SDM~JHjR#OjchE(lQ 3@6NN3笶X.;^wكe;/#v0K)?ܜwLz`KS`v*STYNcT~ r3&{ `)6JWh="f t0[s}"8e< 3's%@ k(-Knz5:8cVߏMϗ{F:N&x!dJw|]_zu}):bX lC("%SjLj:ֹDVS4eNZ`$t@vȿеl- q*`ɵW<̆Ü2 g}m^˦(!z.#׹sTYԹ:RSCDGb Et֍,y١G\&8gO s qLg +i*s님}Ĕtԥ΢\ċP(~l؃ l"b3FBurP&B Ъc8M^JFI1Ei֍;ϏH.~tcC>`y'ÿ6/(([)Y"΃FC?U/ &ش]='s̎=7"MX`h?PYZMY-i,kJ% Td#SLڑn;Қ_{׾uװuf HsJFdBi?w6B{mƠ-4/+w~t$T2 b֪vRa0k-%YO̹e5 QC݄٤/HH1@1.3i |`i `Wds?{d4 ^1\B)UHLe\岻:SL}B]'׹b(R✡4`$ca?sxS~YZ\㈴Z:%^켹G#4 G:8#`6+p;4e%"kVM=&_Sc(s &J:rٿܸ:Isپ 19aH!%@< tM)BK *@"ؓ绳DW. R}@@Ik'ְN 4p{-Boc[Nbpn#(MlSLMur!{1jz^ǎ:6ɴ ptyvI>ň 2rPߧ0;xTg̅`YFG0^`N08R`=xJl ܮ \:[eT1_FsBLCGu~ ~^Zk1'Z`a}D 2t<oT6̲.潣#*-Wav8E4U DhU ce_Xڝuy]Mdn@3є'{9~gT&c?3kX3S]ݟ6y2ˆkMHοYNY&|ΙoH} Mc ::=|^~4K0s׺ uY02 {tqDB[J6Xl+g'=ApiE؉ףZ&$I&&gQ T})?v6mˢ}ۦ/v:1j;.'eMjtޑ=^+2?wVnh0Es V9Gz?tfWaJ7V-gGPڳCk jޓ1vTq#G+EyTb]]^` ͟T/ֈoj*R (8@hܤMOޅ67 >~>o.LyXQ"hI\pC{^i!nTM2ϳ.&':+v*v[ElzF?0xT/ؼ 5' Nm=ͼD߁K\\e@z܏X"H<#;%T>cQpQ+#1ߑhLҲq4BG~ J>ޗ5NzZ$}VFU9+wmǖU@¤ZO^\O#厮]Ha'dc>?w:v}ٹwxn'b2\9~ׇg>lDRl_؄^Q FpEʯ ʶt%nl ֙m@ IPv)%'v Hч 6>6[t6K{-I]g] |7=} 5#v` ]"}rw'<-=||o׷=pv8wgP*v@IKAqSJ7.߫]%/籱aja3D$RYCES uL_~.Ң[tюWk]N4#n!qqx%DZhyikgOb]K |KdžYQO6d r62v\/zd;g0GG$==Mh-u;܆nC٩SuQA}[}G#DI Wpxnmh/-}Ar1~v х73EmΠO@AQq=_@8ʣmgp`CiZGE̯4?5V|HHY1y5߲MeC[? #lM];)18O{lm">&[^7pO4Iأ/Kö7-xzۗ$_uzWOa)dI9Hk苳FP `қGO:ꁮVDZ$(]^=K9Z+d@A)c'E2{pzOJ R Nf?&_ _k컎 J>/?wBUs @۝فMݢ N P |6dмH2hceϭhDnTaoY޵1`6$ Wրg?{ RR{ <sh#g=GLKùov7>Fc۞q^f7T6jCl_%ۭ-Yb w8giCM|e^X +m&1dh^nڑʂc_:kHrWgĖޓAhţ}0ET%g8py+8q#3(0GJB1҇ y JXzÁ1#-`]*]=Q w(_ _j:Ih{s{^hY,@ydP[;DyVDl/r_3rHr5heъnTMmw;&D mٞx9Q9OO{sM[kyp"q4U# V{[/Oo krwa]e)KDfer}x$|ϒ*78cPZC/N.(yJA 3[M"N$XDu@WDs9\3ehLvΞW}%'Y0It*ڄ*u/&]C/,l fGwf z9:Ixj #emD>mdN> o,OѝAt3=҃TVۜAW趙]QpNG>0v=S@D-zm6e; ;•ԖF 1qd[aul8 #DBc#6vjn;q of>ꩥf%22sZ]Lܾއ}=Ny%m;\f n@e=9~Jf4Y7_:G|c_k>,V fIyJS`A}cfǍLPr7\B^~hU%m@o!ۺh{ޞ:Ƿh$3Z!~ZVmۮ|Cی]GѤRDv&nOhiɈNt U~v^iekeWG0 3uAH)H?8߁Tu4W5 VS"բ1yy屈]SHwSM{;Š 18SGL36,Dٵ<~XŊ<8]'s?Yٝ2$H#т . wO_갲VsRz(R=͛&*ecd x4c/I(r"kE뇬@YE9)"GE QfJo|i'Eƀw1wlґظ.ٝAonWaz0 U ˷pvm.IdIaKe 7Nx ]r#HxgQmLf=^" Ӟ\wAJdvfqRc;&} pl񝇯zSTzyKG:gND,ɽ8lvX=0vg4w!9;羆ryt^J-ۄ&\ܾ ־{?J,YwPgX>Q&> qiAv ~X?rTs5^[g$JaNH{OΞ9Z+EN2QdU7%(juAD$:9P\,Ǟ=Cl׾絗X8ͩ=FK'Rcv=Bzs8YdqIu)r^BnTN(x$M 6e9!5ޘ+S6svBV7=dߖ.'l7Km( !Epc0iYضg۬uG ϷRk`: Y.}Rz.mdd,{ŵ` 7Mȉ+R5Zm$?p r7Y9ǮZ/=)yrƺu?GRt1_jPhyxf+7[D`dCA_}gk(l7)MZn}<^$u@n[>xԎާx4sݏgcVm*QBkfy+ O}$h-`oUٰn1PD˓Tף\.qLA8-VDx v'fmf/i*'jNXxA "W[\7+cXSyuv-E2 0ohs7ހk&Z$Bʍvuby} qGb~bˀ XAˀΘo(y(d9Uj\;GTŌRA ntKvzz.g]z@ڧ8rt+KLm3҈}'DN8N}L!1N`"=X?t+^Qgq8c'_>/p*exWZ.8@r&ںCa#[E2`(t\Wա٦e[Cb;fp+ j;8ۈ'L,u5#j!+)3"G[;ql=sX iPHL~$ہۚ+-%-g/^OY#oy|<79^v[DKXP yxzy )%J6u:jDXmvx YsڵGƲC[v|![iҷ]!W* Y#zODMm]Dsic@ҥԍ7G_Spdu=dofodr} .EfɞN gKk"EL- pe糺1[b5꾒G]I r!B;E.; 7ݟںFЮlj  oYl^/,k!yiFjgE qVDSXJ_= Rj6 0]M '% vnVq!IJt>Fx E g} @7rt&l@)(O8tM:|Q"ֽOȍX8f|b}'5ۮ`5@j ) qQ-WlE8g/T.n5Z!WNҢ4!bstf}}Ʊ;<1fa b}ǯðC$)fdKdǶ5 Pљz>&/i^ =N&u#A} p]rd]j5zU$[[А)N qRmu@أ2:@ 14|U`Y01t=~)GQ|S;&c4\*昆0Np@Gf: BEg 0݉q!\m%fdu꼋8%[&`e&͠31JFAkq^)Q@ʺDu߷G=?\S_~"EpNQ᷾ɘo2ˏ_eUL䶽MFd`YꁯSz:=)y>^>%QNMMԝA=*yTiPifRoV=mX6PHno3^D7$+kq DK| 6=t 4zFal|ױ}fy=f&Jh^(E8A#huH8 C ,x`p0<|% "D,W(Dz.1%wLS4D =Oa P?!%*+hD&xr͆:?P_@K-/lTǺ8gDj+Rv)V(s?n1,9̢wJkK])]{23)'z;H1#đ>S "Ƌހv?0JeMzBAɆ=@|9GF}ww:rssa#/;N)/hY}_fprʩZ9~_n5gtݳ!6 0V%C >gvWv![z@;*Ď׸;lއNu况_VA'm진|_`Sg?O{e8+5G؄,뇮H*ɱcvaCuĖ0S ̒kO<9f;KӛC;1|y.g`;W(ר\GhWOeqx1]+:ΰvXc^O;Bg\MSӲ462;? nWci׏\1-Sݴ&D8z |Ps)89*&eKxl@j&1u:tl;rmvQ ,hAv`{0 %0eeazpFV3㘊BbGf*l}NE>d`P`Kujƨc-lyfy]]pM)d AiꋕdDѲܹdIͧ5X$B޿qeoa,J{cO"M<%pBsoj:H;ڒy=Q%-!cɽr~zA&P/Tn>|ږ W[k" <:GAfbd6&2bNXtoD 5)G$:c-ba^^t@أ')* 8;>C^w!+fVY@8V\J[.Ui]bG7!<}4WO s+GݬhQ򙈿 J#И>M7Iem6+nJSq[mLITR3 o"Gg u͏%[k8hY r; WGl$-6` %̞Si;6[mi3iٷ.@ 2P{]Pia`*EZE&o# ڒ/LLخ45BXۛ_׉3^m~<1ᶻ:4 OO{f"dh){ lG nS1gO\<|Jh!hd‰+Ö#w}BD+<38rgҢKڙX;}ϥ*LODZ~&`G2[J;m]8F!.H*5[Yp^7_;zCzzi; ͯnf˩ ڄ |Ϙ7ȹXj # }[ *2HY扌ټߗXsv*;p /r1RNY*'eq-JDE2(A[%r6 Trhi9PUELcVXo>+)HgDv"l`cA+x4\^WQ4x-vD,at!!C_Y;th=oaY옡1_glHͅX%*ʹp’L:DRsD"4֢M]\ll "]o03]{q@r::rJw{z?_w6T(b6_9}Z{t<ۯ`<%Ϲ %IS|GzGܼ7 7^wVd|`~U~w@4f r).b E}6zuzd!+<']|b׍Ngحo.V]2:Jn }ޘ&!usoሣFo?>}}FLU*jsY]% dNa?&qh`j4u[`z#9(Gu^#2Zn=zJ[ꚢӁV))eoXNBeY@&@}+;g'Uӗ!3 hugqy󔟲?9^`vO* uL^?}ցٷ 'RhY, X"NTKP:᬴ ǐ<*oٟnupi/cxh@DĒ X[BI^ur3g,?6S'\ ai<%<)X2Ex \Ѷ=!1Tb'ؕӳLK@zۆi= :?xl 'MNYZ, /^1S# ?"\~O?uwtv,VNWh )sN1"PTU*X#_fTogef9h !],11h.z?< /\ƴV)N`@u7Wz~UxQ*{_9Z.zh-tL)e!ˑ*sF anؖE qZu"Y<0uwF#Q$duM0mf9#˂y"!܀ !@?Z3#n4oxK(ڣቔ,t8eSos{xk`agG|Hw?p{:bkϢn ;0wp? ʨ|po-D_7.4ǛJ%;7]4s`0(je#v9<:nrLΏ8XE}ߺh}8;/zIv?kaDkP0Dv,Vj d^8~j(´LĢuYFc;A=GrQy)W/#&<)bc]3NQO61#T %q# Lw 0  S%3(șfb4uDSa/q PAf极m\3=9*B{g'Rhv)`ֵ~a1f >9tY,՝ؠHգ|J<^l(j-8W>gf;>:jj1(ׯBoqMTc%`:i-uӜ=گKO>eڌ{+p|VAx" .][c} _e Ie sGy<+Ão-Wcfd`Ly43Hj !lSקM6^Cv>vڭ[e\iDL m3{B ?|w 7.=pjw^?1tAY|$DƃCy`(ۭ9!8R0gop}'بNi=,yP&D ='ȏV" G<?I"ց@$+ym/%\ rR䨖=9jeY":7 ZaI51 F!]zs9eye^xy&.c"gg9z8ǠUJ  ځ@mʥ/@ѴFEޟ, )1 wn3~ـX鈢=G!o齱~e _Ul oNλ ϓȉv=ծm _|]kӻC$ωdB#\[hJٞZtTVO]Gk _z/Ne7g?^loYxc=jQ?rczXyٓDCX3U?#?KI2Zk?zW`fͅls"/(sMRw4؂ff;*j\]&vX;4^KN;=W&7}{4y _7WEIht>{PJ-[gN_%^Nz~ݕED#SOm ++hM!W=ےM~mRp25\̔Va%>F; lVK{u ݯDRezokJ'PoSr9 􄺐Y"LbYbSѠȵ ϸTwdk<n\0%_~6 }/v'P? ;Ws)1E -sGZX=W~\0F]bK$;6nEӁgߍY2NP0A.A.>X `b:2Jd:9O䰮uױ've޳fAhF5OG@֑=͟~y)?X  XoR(m<9)y:=l-Wjm6mz|̣ W e߮ma'iO;YZ$HkrMh[`{Z5*6%4~319Hҡ 6,|kiZ9%HoPEW_;7/߂N {Lhx =;O/v7$iuWsU,D .%Jٕ'O>Fm>z ۮ+ <^.h2-vIftN.-&b <buVzH뽬}FE V9nq,LO`kg&Zݭbɀ;Vuj1;TDa,"^;ssOT zGNdbLvGKl *e<'Mku`c+5e٢'j6S-fb( 7<#:O(Onci㓞ݩYߤC"*cv͔Njj&;8O>q!PEj۠TJ4nl\VƗrz vsHxȎ|mm?F 6_"F[TR~ j/7K8G x?(P7)W.xH6FhqmNx R5[wCyo4#l&d_>۱TYP،AD1!ҖR0g>Da|4,r Dl1 NXq[݄OXv'n?q9N]>XqMcn$u߬?tç0swRmv4P4 WL]T0 /M 20r-Qa6&_#R,3ʏ "ϫ< yh̘R³o_%zcG\ 6+̵(XiXr AA vc6neO`mMch!l۷)ӱqT-)j@ Q}zz֋( ء{v 6SwD,k`r342Ɖ! oc2Ӂ7Ny5vBm]#b:u{;”Z\t@Lc#P8Tbj(Scea@vs& p?/ }xE=姏_ 1^9q =AZBw~͜Gӿ)];хRꠜTb:_h6y:67!&=zhbz5|]Xw|p[:{ttiN]^8: fKC/qow{jfv܈؄hDF J*e+c`4ʹ@ۄcJ[I5st<3?J+JjsWj) mY»ccn~{;s眚>y-偺ݥ$;\>w6ʑH"<{L lD1G/>X3$lj1 zoGa /T |kqz ݀@&[/*~nL(5Q-£Ҥ{qG*es5bcW> -Dӝ%\(yVӏ=uPPb>nܖ_鋕ėz %bߺԬl(Q(qnIdW~;g͠7O_{+o9 ۷^yٿ2{.-刢yiDDHV&N7Opa&Uh E HA$~v~Rz` ĥaJʅ!B:@Jdޓh{."ȣ<.o&iX2,iݻ̜ru+lcXhA/x>b y$|8?r&ols4Q=Bjt/*41~O1TSp/Ҟ%üE;D}zCO]>Go^)\1^=(Y=W82Q 4e`H?K^7캲?3k}_t vb!xf)[#KK#;"Yaidȋl˶li8 Ip'A p@$ҍ޻k/NIQY?m{Oa1YaY8>ӝ{{?t/4 }j*IF^D{xjjSիў% 7IS.4y(i_gqPI WFO21>uXcbz$NҌ+|9bI M8Ko.ĺ 'V?|5}F5Mׯ3q'2k '41;Wz1YD\ \R,TT 2@\f,@21CG5E +a e_f$ L:׏M\r@{F7UQLC/% %<2;'X\}ĂԒƲe$t6Lv5,N8Yث>(12y?J$r]:x~ F݌(BsJw0u6KBqg(^twlf ҘX4͛v\\f] |iC@$'J* yX!=z%c}YW|M$wSfN끩5#^&m\}״x—Oy*, D4ڗnڽ(IGp$ <,J^y<;<5P̹egԵ i]~ {-qŭթ֋f p(ibZM=.Heg4ӄ4zl}ܸ%f2 rjMto.F[NFA` UHaw#5>7% A:*ք ;f#Vk -`!ْwlJKc[Z A41E3oђ0 fBеí y;7)<#~@% ;"fNy? (Lc&Gn6w|9UJҮprIEN<'SDtqJaa`3k] jɲP’ajڔn10.W˶7&(Qk߯sf0 vokGjQ\_cF%ޏ[ur;]?v}ۏvd1K&JW>V=L .-o-Z7axTa *b ~jNc==ZaB4] ;W5k^եz+42͘ƴ,ZUll{ЪNk9$<8^?rtqk@Q-Oe9oϏ?Ⱦ'uYP"MNl0AȔ>KN[`rv{rIHINu\{7BњzqB1) 8HD' y wn$JUqb1GGlĆX~NtŪ{d1\d i.8ȿ;(IpWƦCZ91y3fזVJ8vwuЛNl,uco*259{s Ws1i^cK0WVs%f)l.]i\7p g{50N-u꯾~:Rv._Ba+`:1>Y8lNPكsq& 5bQi: ' >',ȸ$]3ڛpE~컐 ,RiWtGv>ҳV]?xo/Ҥ 'Olxq혪eqe}]jWNKGs[,O3dҩ_XD0UV ,Y[tAt0b &w>ZXNCKTJhx @.9?>;Ee;v܌8),J!q_{WU׏[b4tY+5ޡ RJ#=94 U1J4-2`&uY Hx|H g服94x.ݣg Ym+P_!v >T9w'[i{k;Xf=pKI@j5Z~7 Z7| }SU}[SpϦ,͌4KV7[յRFy I;KZ[Rе@|51[A{b8M7˫j,P10W o, l&@m'H>O`c*UνcJ@e GHAkH/o^9yr\ ׽0eςI_O}\DP5||j-ܖr 5-Ċ5|"j2U~Ų .)2@ r=ǨA[5lũ>@p"U.*i[>W@% yKΏOCsYxCmBQ逸5H_Ri4֣v8!;XR(3/ZVRA}."~t>z0PlP/xOIB+{Y),yMDh#1@^OQ2e maJlx.DUQGNRعc'߾s1|ΕO<O +~Y7OSǑs6eO\^3l;ǁѝ'yz9v|L z2Mp8- ',S!ֺ9SG>@~<]f 6gq1Si-ƀNj`dk! %Y?Lem,m,11hLΈ*y_e?kkc6@Xra-2F,tQ;ykV^+la>k_rPc <;sUOD:[9,-7IR=q`WKԃwD?P7Hwluu6^=#_)y>C;ٌջCJU{Dq}@q hz'sBW\ sLBō" ݽؽꐗc'ho9~vS؍im~D\8qՕsEXhk[Jdrej`@-oKٓf,Er$ufjdu$2X҈5I4$; +4w(JDI#0pSHQv2qlS檝_pY@e>^ (g&+C6,#ʕT.=ʃc97b%]~Rv/u@ _x U |=H 3)APnT \ d@+Nq4s Q0zB$<Ԟ"a31{p'E]d്Â+혘(0{qhL %E1HF:ϑN]X\ AZYẺhc> go~[1@V(v| PT@>O*vOC̃S7n7\gߩ z"Hz}ˋiu#G9EL^8|tT<N5\6s r->g@u '&/c͑d] ,3,@vG1x۝# !ߜ d0BYw9aG1BT烅3 MQ4W( (/BBh3ę[)?[8SRrtb93(ONZMxf"IO7I>Ii^')W'[M.H~@qْἵ5h8lw7nk\%gOjTSiSC*+(@XYs?6x[v%҈M;dij0 /X`kA*ާf>{*atԚgm۲Oe@ ~>Ԙ͎cc)UMMYqq֞ko/?02`0"5(6ljC9RЭ}߯ۍ&u@6fd:nE|c<t=K :[ݥhYq ruhYJf `24[jو~3,^b+s5%ZfϤl{e^-qRLu4 ^$V 3 'Z|3tѮbC=h'+M5 ?H݇[Q8"~,F|1ʁ٘[6Z\)lNjm!kȇ5$u2k::K4!\>;щtfa~oԆpVdfg71eh4j?tMU=]a:o CXEJ0PBE@u]aMd 39jrjfk3AjVkga*s{O -d֓Sn3--]Ӏ?1JVH7hӏ1* xzs\4 __I@wGf~i}|BcHemSfbyā5*\r`j8N+ղ̆W]wf]38O[}>fIP f ȩUR׺y~NkCЦt;W ՆU.x rF`ڱ4MeM>L6$ݦdE y@PrpsP2r%`YZV.֋&PiSpc;0T?e՛;FBPIJ{_h ͪ9z mh<1%hc_;%* q䫬_'كBI&{USYz qOFEzǑOSc*3w nҏ*<@6%% ̪'N_s{f::ؼ-I,1]֜;sx*sX* m&}eUrB݀ZnȭPmAEB*ocǞYlx"Ӈ6ϙ$fyV?~XhFTPگSC'[6}W/^u<?ҝ'yl9oJk)yVchFq͙RϨvrhN!RY;(kU P:'G9Iy#[?u#vG'MUՋBC/Lt~cq4kQS`"1hB ߋ+(dlz&j+PyB0;H')ΝSei9#'㈊'" tv9s3N ºٓ ez.ѯbf=mSX4X/-+ץ9lMv(X[6   ml\4z٣.ztrsQжsRVYcwLaTNp+uJ&YHC2Fh魣6zzq5*omk4Rz@\ 2x<uE>7,J|=B@'bzZzYRXa@WVVٳ ȵ!]go-?̺I Yj״&o ǖ?5-qf $Uv@rlMqc|F@GUlC R<^Qa<.Q癆OoJ{el""L׏FN.ˀ\sݺgҵB%6[L>O2:o,I]VG1<}ݥ2Pj UJrLci0$N '$g*|瘊Ukz{ӧuYJa|PU;~ Xjruu(ݴɴ{0j Ԥq[$#B=T9#r9q^%KG(ɧFnjJKB X$| Tx9"Ɵ!|]ȊXA m_kC~#׏'{zql}&ǀrHe|bi2;}L*pX Z&4"P CA_qq&/j;ʼn^Q1 )aL=|ns4 Rq-b0 .}S)Kky bh:?_jZ:.d)o UÌdY0k6 {z9D [WI>sDl%p)t9^SؿK6*Pn{gvx1X[FLһB3`ww PV6U Ws.27L,JND=5ybMK5 (+msXh \B?:ܸ鲩)K"LwQ ,3d8AI%{G`KL[m$ A6%8EYj< ǜq­f̌~5=U_Yh'-ohx21ཷ!P#*7m-T1˜ jCIx13 ~fEHLb^v",T3\q-}ͬ8_Ȩ*"aetȈWwYmu[y|3x`q,5XBW '5GH'4 ,&g~|Q+n}y kʾSpHܡ `7 *hZjC> *㔴dIņ\R$xl&0})i#91Mapz^֚kmP`}QCU:VFy|Z͞gKS6FLJxk g?T̚UO^5X%?CG;6OwMD" ۱gqљ_a*,U?U! 6;LlFklȀ8!~RGѥґ%aXwJ x_R`7NҐLׯtJS $V׏INv7;S:._uB@3=] ڳe1:ra* ?;АsXe-%RP(bT=-ڔ8ZOeHx^Y |R sT d%Aԭu}?a_L`R`0Up 3'f&2r`Gq}.qt8cJHg&/N?Kqp |'v(ݣ_-7Iߣ42AQQiR3(fި+)_ hzZn;zaAݹE% Aպ0~b)qUiXq شqx'y_pl; [dgN>iatcA=W:*9^Mq|qN Ȼ^-t盻EjCŇ:p(92tlB<#5]hCtzs( ذ5Y.! ў癶کsӁ辙97U?rf96vKM>ܶTT]sWQt jTo'Xs0ְwfSNjT)+xȩg8*j#QHǗ;U~-=|hgMf#0(_R&u& ې3=#` }c 8YI=~炰Ldrǐ4LL[cc?xse^ u9TӳUּ*2g9cގòoWR!c٣%);J3cV?9F6J:%saVHڊhv_!}Mt>6 f}6g. -(R һP9; /lD "+4hgL*M05 ڬ79qZo{sPz~1[WÕuD|Zc^>:a\x8Vu#yA Q=Hz}U?꥙huu{>UHM#>i0T酥}Go`RYi /!%RtT׭{Mtluhy mֲ.xȖѩF 8n=tZyk~/ɝ3Thtsc>4OH'(Oa+5'I\EWj\}K/NmZEJ#i SS\9 e!9aHmuR"RY8Yb#,$5K|6r-GbVhaL~L,WCRV4ByGDIz .f+xqE%̓6P&,1+Qf 4/ OmGDp NpqR>)ƕ0'ƎӡTl%1SD`"$ʉ;4Lqe'̜!;/ \T֟`/)zR|_K=0"ƏAOX֑PEb7@Y;!0K'"@u ``V _ Ul6 E]WDOi;~ LrF^Y_?rZP5uM׭X䉢󖮞|}?% o~(yu5kUi:KBdT`R-AX+Yjv|W1\xLD19TepP5A Dgɨղ H- *tZ8DqtTƻn(ʕ ,b0{g+qU(aS#9Iji思GnofqPI9Jgvږ@]'/>Pʟ.dMIHyFrR{h9+|q>QEW/¡ nxBFBS1NSHHiG;5q{O8БfeZ?Y접Zeȉ"*5OڂMfqu} 4W\pYkiiهv]@+@Μ6 O.m@m|/?0 :">*YAYD'+UeTb) O*R4o+e s;U&? ֞kW; G`镑CN}C"u /ǦPUySE}3,thrhnk|mI/]M?BP}#S}Y ÚNR:vh~o:BT\r*c'U@ugYo^#Ç/^}P`ӳv OYL(%;QQ7,_0 Su+3}|};q5jk"94bF)axWBF\Hg&o0.BS2{{օutcXn*6Y%v.a%.'!pq0X_+_ &/I'8s X!9tQ8*Ud흰_[(Q%f6DR%+QKgZf{7CK1k~JJFqPK Kj~~H-}]а6T2 (q hdzmn +#g Ю0]plld|{M Gi{R`*X8WOl;x4X#M뿓^R()^Ǧ')كngn[Iάz]' 3U$ۊD ]:_}wߢͤ0/Dyt2] _w 8~4+K:ze}>Ad$$8cY}.;SL.O jN]K&Htd;eTu i]-;$]ȗb`MXlzqX$gt\嘏YNt'̅dQ1 >tNv5D@daw *r4uY9)p|-$Ø_ם8N09GsŴ<!r$fXl'>h2։'O@gs37nytR; Tw91ru$]}kSq ٢p { %*`xtcպQ9Q]b,1sݪWV/\Fk@P Ac[E, Uǭ#>id<)yf_;%Oٴݚ ޖjW%UesDMg/?iUTrzgppzַފHds#uYA@ %jͼQX{))8eX%yшhM#:SN@4Z _^ 5\|YÅ+H]Ola 2l* 22#&<]h7,;0O/ؠ*`5Vic= _O ,Fk#@vvWU=kaG L7e'<0W@e!L&SA ~3rH2hĎWAfa&0Os 4,%ܙ1iq<5D D  ة`0yZiMX u{p 5"@+8o ٯ<;ճɌf@7]؁ *RӳXBV ǰ4ɌUq_FXH=`*g {j{.Y=[ 8ΨPz̟@Ad5ౌqQS,k$.f6"}H_/>bSWI9xQmFќU ߵI>~+@r?j|9|Lv-ɑ7_{v4M%}ٴe_4MC|6Mzj;7|ϮfXPx vhPhBt~ ot縠Z)KPdQqՋ-cDUae<ϓO_>Pepδ"ݭnRZALB{"8>4~[U1;_)4:cv4|>V$V栗];=cSN0ƹĉdQuP̏tdr5v&4 0%'~{s L^%Iﱄ*sd*p #PȮaga_`bnGn(2K%' oB2@Ƌ4"3su C#UYl@`scA^>EKCzԣ8Cɣ77%OpۯoΥ$Z5[wq|T沩?߽IT_l=tV9x4KF-kN|yE[(oCu6(5bOG[@hc&em (<) 'h"mY_"& d'v`l}kigE|OM ǩ2v b6=<&qV 5li ґuZk:2/xLۤ LX2}3*/kX#"jQ,&@+PeG$m(U]XӕhB = ``.)n"*c'1 I)Ҳ`G"Ofa bE )h={2q&HMr,v~8`ºf &eRx&M`*Ávivq.% v0tg>\\'eϿc?1E"ejc*)-Fg@y9 WQmHJMY )m%_6,6ߧxmG+ |; Bnu8&`Es8rx:Fx= @ Nڭ/↑zePTߝ.aÛRPE=(n~J!VY\|Xw[wpvukͤ1X7Z5QSph-ݴs6} >u5Cz}5̓U>ۻw1^d%g̨xH;+B>uڢCO ̱O N$8J! #M18>!cK2?Љ%^DP'VC JSǸb3 [~hl|R?ٚ8OKu:#ZcZwnJGIdI~_x$؆vWvչkuTwfA>tC՝@׺*܅<֓ ;qZ,lvncxoY@&ķ YE:" Z ֨ƙeQHܶ|B00Q%{9\l̃;.Pa;T^?2HI91e":t|N:) ¥Y;$L\/X[(d @Uߣ>'KǏKms*˻e=gܕ+%1O`/Ϝ">]wSeqck^Y&o~KV+enQkLkn lj qֵY0?N\skבe"֙]-os? "..+xUh%F1mzPRIkQ,Z& p(%MWmN]lK |}Ȃ(߃__'pD+fE|b rE\p"oĉQc]ىW߾Y/lӨer;7:P:S#A 0t[zkЏ'u: 6 ʚjtZc? <5ȫ놞޻u TNՋI@>rYMQ/kݙT ԺGtq4"}%^%aƕQZfK<Kɿ,GSpc`+So !SSE0B@uvrk~8~rYr;c1؀9h< VzהY=,R[|}=vbR{,eauRK6?kG];9 콦ƚ )鰍|)q6p=1o{[Kyl>NHohNl\ZIIZ?t7F$cn[{6>;O \12% M?`q!ZѪWKMW>q^Y~wm>mE~zvꘊ&IM?K7i׺Zcʙѿm= /cw9مެf۴'S"J&Z4*d)递<nZUyu~-Ǐ)6vptj[qk^ kyR 4*sj=q#o"\3&X~fUV%!>vATf"xǸx@̛t= 4րJ,Ǘ6f,Se61 bUncDj81K&/Hk:ig8s 1:xE;G +3%z!Tqm6moi،8!200\G |WFOc FxSNT.WvZ_ljDc:Jh'@PAcsV{7Lasl|U=jCcwɩ&J*UE& BX)1M*(LOϧ1 ة݈֔(C}]^ 8Ӑ4{|]ּΞ L-docQ}]G3q{= D!x"EG<*s{A鸚0~Ne |.J=s/3v8XUX (H=늆:Xv]bm |h]Uު&D׃M&G`JhcƢG_5'9LN^^vp5G$:e+U?op ]@sZV( `f&@{$_=1jyxJ=)5Vg>:0dߕRRUOv5Rqg~VV/;WF{ }2Hu/SY5@nI\x0ڝ$w.n*SI(1LN܀F(tl _߻1::/O M<)׌)(F{&TWX~>Эn^.Aa9*}nV5ӿtOzw{ H?!&[_9rGuxq ţ%uM,Mt^߱:KJP|;+pb~->z]$KT d$k'JF>m_MS1 ZyT<(gB8_[9{{԰[ըfT&\oR'B\͓UI{_@#%c<1^>$_-jr轸>gv r/B4F2e*$Rr r,3n@tT1do(c>-v _r!Q-#('L4$x |68>Qxm/>+dO!tJDX*qh*Nj}ՑmD]uUOZJq?6q@s|#VhsGoȏ'6ME3Hڇ`B2VdQUm@Sl ~"-Tkl} l^o7,,8ۂTBVڀCPV?z,]4w()Ou&p;ee3G@+駋&߷;IA"nԣr[[T8'JzKjϞ@w3 %h?mZu_V>.Bi} +s7Hp=cOt?Ӗd{PaV aB{$ dOg +_\p^oZcT3S*[S1U$~DNZ Ec(trBEbF4NR*,JQ@؇IWCkPBa[R2c@2Q09dɴQ''$ \$,G"OK9= Ȩ+}NYɸ(\Nct[vX 9}QsbEzQ"6^ׂ+!i('a.Y gJXL֗]SxiСҦV3Wʖ֍>EvNnLx-SraI(wW&.]ҕ .p7nd9/{D iI<ړ͏ (<|709 Z'gqkZ %;.sP 7ⴂNa$?c:r|"M#v@қڕ*keXIS;3%q+&i~ˌΒ 8xWE!my"@4唡 g׆`hopa0%VUڶ26՞j};dF*%B*D.qʈeП=0<E.T6+Xa̫Fb*A1us@-;ٵg-*Gtw&}Sr͹B屔*${ݶK!)Ơ3ݻQ>zXiOC:FȢS.X/W_h>cHɾA&3MQh8&/k)=RY-2s%^FEEDcf[{IFshsVTKה&yNŗ&saȀxT^bKYfCIfZ/`"TcKpGWv:LL>lR?3L@'1Tt:rt`2BMߞD[@1I2I08D wd<Ϝ b U䲽E%+3kp,hgV[棃:D11# 3c^?jIԘ^[J,dik,8D>/xiO۝Elk7F-Θባ^Y??sRk{m|D& jdIv/S~85]$HTKr]gh/;mD͒J{SL#FNo_]^=aQQ0K=_xkQύB#Nd37dL+ ǎ2&r'byAL!QRgӰ(& rTAx3_WeA8P"LLh9;\^E0d.putʚ[h^hvz&n5acʞ66q,grRH(Oƙ߾^/Φ꜔u4M"�*dg6A9@d?Cfu ~$<2~l(D6rJ1-@칪XJrL c3_~ȅo])rt}wo'kƟ?U/VMM }ԃ@c*Km X8нa^!ϟ~r% tmzHz';Gwi>ڿ~ӧ{wz^(m/V"!@Q)HO{nҚ,}5*\eO!~ʪ/3$+BJא@.݅6 %I1~8yiȠ/Wf-ks%y>GQ+|#T>Ӊ.13?֝ Wމr/jd2Ǻ^vg^eD  &^sK6?Mvʪ)vp*e6ggs3 ch668 a+O^DׁY(Ri:?69&:a#^)(Jxw۷To_AQHэOa^ j~瞡ӡwRQxY{H5ԻisO]_?!9NXI;2\=P5A$l^;Tudw\_ӽ..D[MAև@T'llDCƚq&Ӧh J-q\ ^k\!Hדv 8'\,́ 8SXb6iU $Z6Lc#L 2]01rh9c Җ\0I @kMs;eR&aMb6Lob|d}*rxO+|U!D)Fmqa;¦K}f?kwsӘ,ɻXOmy) Uۙ)93(XC~"oT?`? W/-|r50%UH(6l9]nZ]H62xxT/ѩ biȏzmnC.1dTHߪnyW}oVI 765Ӛ ޶*>ؽ{hI:[ZoKWh)5~/zw'0R{O[-M wop 3>֎#_*jBf)z[\AZ iI>C Ʉ0r9T]N*-p1~fȡ&B"pKɯ(ؕQcKrK(ʘ۝_'_7( sg5xEI *WSo~[ _ܟ#uom?[<'}S> ZSN^9tx6~6*˅7јθnYQS.4HƊ}:25=l\P"U[:Dx[4_OXB߲ޫ[ K[%gc*Y@ ?]{LBlT4&Q(l< .Zv.l:79Mzavmݭ(!9\7MMbzB>>!U@$~mkXEm\8Md-rl̑7lF~k[>1Pɝ3i=e ([\ D$3`M mJTu)gQ[]APEUZ,(q)EMt4n[lT-gz*koz;jYj_s*`IʠؒR#QdKSIQژ 6;O0@` %k*g%v9{PH>ŠΫD-oڴ!BʕܩܔQkHռI~2p={+?B rcY=yɥr2OD8{uo\Gc٠G 'iOWtOBsCVhyl=q?tvvÃ׾wWx`ހw2p$ax5Wd4Ј4W!oe~}6rm>EzԟM9lrW8+]QpB\e8 AUݧyX!8\HtD\IZsxqV. w k6O<'1R7O@5'#{;oQ7qP+ٗ_Dԧz ?x:^@.LV}&rC[h͒&$m<ڇt)KU/V'1o-џnseb_]|L՚0T 3YI~Nb9r%5LPU^kT&=T` k8gC's{$t|*c|10-vǡZJj,$[}Jtgd=O:|X ([N[|a!49Ư*Iy ۹#<\`0ִO%g寧? f3z_J;FOyQ|_~'&P6M~?>8c du xqI<^e E䷒cD&TAhO02H ^&gRYK.Ob\P,%v(*4t`/$~Gfry9< iRԛ`6ߦц!/k/,5S34:_Ag g 5amI5vlrI'ث|ݟ;&'gG*2"-l 6 [DJ7 ,g })X J2,-4" c]Af%*Qp\948ڰpY5f*+4:0SʚZ. \[abPz+ſjGf*(3is~@cr{%ti *`my1@+rY솀_b\Z`O< ϊȗExgtB]h]hWC<O EW1f5@ρ˜f6:z6ᢪCLs㪯o_"*ay 릾]}5#/UO4`4L:Kr4UhU`mH5I%,Ne U_j|" rt~?VyT(2]w?VՃ]X{Б}j` _5ԯG#bU:N"#A仔k1ŗ}>zZ*1"gK 042NC@" Arޱ_@K4TuffN;W cЙ 4n~Z>%"֣,0csAڡXOڍGr_U?V] ݻ[\tSۢϛ4qwH􄭽4gnqbe1N%3+Ui`9ç[A%>?mިJѲ)P܆aW7odvf%T >RL]"< +PL8:JpwXljI\tE C#BE%Uprln~'AU#p;oYt!@$ƞ?_d1YulN[<г4RGt&kTV/̭k}rwfD[NZCF%٧HrR?dSfurl:zwӖOouAs'ҧU0.&Oq}@ X1LYp*)Ș5g*% b'%vpೲOYv[L#%2M,'ret25nM)Ի96AetbK Kgg^˰) _Yx!-'WE1n! gQ^|U0wW=Į#r,z<+\y>0p_"~dne#s=ͷT1P 콺]mt@Qco?GhЛ7ciqѠ>Ī\te5p.ILWgTXl?x @TDEU@]cg*B U2(Ybd;rZR H@Sߜ Hh.6}ĕM Tίi}rG.vsǾ~F仦bE; G׷rƹ8pP6;w< Tj1=OfuZZhIUTs&tsEsBg } lqy:'v q&M!zŘ9v夑7 B҉V56j`E]A@`2k/ZQƐ6`&1^,C^鳙S̐S3ldO!O7PuGzsu d)uTM6͔ucHz޾޾c7;}[ O>]0vH.դ=Fv|mu/Sx~I:)Ф_>Awٓby!^de: ъ:U)bj:[?ڷ1pgDgWƱ(a?C OH6Q҃KdYC.A5Z%tS%FW*ЉMc8qt[گ0po<7o.;l@UwYl>w>`'\ VHGh}on,tk_5_l.8LX U~tuX:uFtfU5J :|ֳBO8DW^~hiay1epkKTkZϾtgH()mx꺑q>/leJ ʰ䞌*O3TbLJB_g&vr_q&?u*@C&pdnJղTKBW? @vF@s;S" P1gV/؞طr~5mwvr17`Df$k#c㫆xegZE| Y'Oj?|>9vo[^JA?4)ڇt>ܬhӌb>MX QEOIG#[`e'QE!4€Ods/}:xim.[ϻ1e&d ,fPH7\JDK[fw8(ݥ~%1pNmmsh*\Wy8DJL'4# CU; ii{q=p @!f" \4\>ÒgP,g+d `B b!"|Tz \R{^'>1Fp,Y돮qx,BO~(SM 16U/$Vщ\ooI.Yd<8{h>I4l2_oich짳Szݍj(}qL\YUj1v97N=9 5 0^i m[{ ]16;M~Eꬊo_~/Lk = W.~5m^#\ .(F:WF;D_yq{*i_w.m3T=c hj赭O݃R5_HGvj$tt#rwؚ\;kD- i:} {AQ$m0=~^MonO7myCޒ;@4Ħ>M syqr5aoS{-bGML~P\HoK.L5JlG CΒ X KyB66^?* "/g`@sJk}ɫdi.p%MR?BBFY;C_ +&3SVL ̾i, cDPR@E"Āa}09> `\( ոc"q6GC^_Y+qU'ɵBq#W: ^&رvrl%0@%7`vD) ffN:-AY֚e#֜n1/^%0PվU_Zl-Yh.5P41L~j3T;_%_?}VRԦ0ng`om}oU3KeӑM[~҄a!OҼ'me YYi譥q*Qm) ؋D7 ʲ-e?VeP"N_ 2SkP~U/\#+xMv5YKtcPĠmHǀ2 ڸR;'<0kAC?7A<\9ʼn:OL뵆A%3i_1PQegDe/9 \_6IvzNEtMKxvm@fk)pnf=A ;)βW$RЂĕ Ǻi\n_YpLNStۧoHil;V`Z=4BԙXw Ś2T`X U!V*@ q@g@ + ^ %dZ_8NBIv G!U#Fţg?ãN3G^[IZOM~buH{ y''g|立A&DM;ڏw?k5ǎTCf*u4PvG.t9u̾8lT &b0fri80.n3jhp < &m hsd$j>1PU<'B.71ODLT-8TnpĐ(C_`=Eemqt= `")U {t%`fG">Wid"k6Ըc5oERPyc9 i TƓP.D7xqo:mZ*.Z`ȼ\m'u( qMnӶ5ɏI:Z=C/R暡gQp' ky/m6mA- G݃4e]۬ʖ֜6wקE!P!Z΁O>|Dޱ L[(O*nt(U@4{Լۘ9`LA+ҧikD2Ϧ \0iG!gRtrU2gy/L;N ;DƂD49( .MRp=q8S)vzGN@ zE`ѕfб)`3)VA$&ue+9% iK9lKYrl~RKӇ` ͣ 8*޳K.U`x7vfc+pd 3;8zh 54YoSk+z'7Қ4_'`q*l:4* ovj^5 Ň\fݤå^~f 'OV e=Zس5F2zi)"QZꥹ5ϟx@.|hǿhWQT`Ggt>^˒ խ{NIsahDI{ aZ1m= ɋUO( ziת/,}b1>ԋEʯpb1zr<9eIˑco `PK/^l~}G+q;&jT%C‹8 ܣ$`I7|jEŻ~@Ry<9@{8RXaYJ!m68ɂC2{dn7 ʺ@/ZRf(֧'Z bwb}`( l}SSH¡%Nyc Rk Vx%W7Cs7[(15sf5)X_ʎ<ǯ1;%}Yy ASQxg'4h'oy?g'-,P+ " P?72[)uP!-\fNrj03\m8Zm7wTi73t狯 Ցi:ѿrz] ^3 &q yu|hl'M\`4ή3`|Ak7G=J-頲3|1psb-Chqgϫ͏[g n>?qӧ1Rb/.OKέ kѵw>=Gk_G<?G!i=W̬$uЧ~UܔRVRŬ_1sx"JkNl!;UM3\s5(s | ? n;w0i*KXEֿym S˚| \v} jSyw} @E,u= f~Y I'mΰ;BE,pz"57<6]16I`qEJ| 6Cr;<'>\xx2h鴱|ZX6t8m̠COG7//__ݴY~]?އ4(Tͩ,k' &.pgڨzsfW~:4w3P6mU3 G]QU WCƘ'ab|˚ rt<aYwZ -U`gܩ+ŀ%Pe 褅w"L7tV)6=)QRN&ܕfJfP6.Qyd(덐yYMç@;{OϷD}}:1I^&s4-8Ks`ѯg(䂇A(_"YcFg^\tb(oʝP?s70 U}EFAۋ-k ROKYk#̪ի.lgZtM |S[/[:9J1++F_7f}ux9K>qS85@8l2<'A@ʥյsť|$`,s~~</<'coNMCgq2#"UF e:ď::57A7tfo׎b4n 04WҢ:%h|$qԕa( ,iNk+%bb34 TE>Fpa/+7IJ0(TEX5|09 g")˫IA{9\KK`@?JtxSx/1SNk4 =g + ZlkKa hM6oS!G.35gI%V'JYG1K/%k[ZH ,)T%M |ruuE*UASsn)k`DH1Ӡ1=vM=W3Ř](HǙxcpǯN4h,y ^W[n{@kDC)=M3AL/N ,&< ?WWt+w~ `S;"<:JuY Հh euv* /ߙz|+< @|'h'^=Ǿp)*}̒zb魺al9ud"DIm*'ʡgN|zcF$:,Az:iKݏO?6giNG^c_ƍ?оCSQM7u MƱǺ_5BUqf"LO2)1sF/1omfЋAy Y/NYIN4uy~r'ʛh"?sNZ$6 XfV5/2OFLN$s*Ǵ|DtLP:<]?0rܴ͜=/\`)ٯurR @}z1e~9 b,^b@ ܋A87 ڜ*꫐e_@k'obeoPƗJD:;L4f(e|2P$+S ^I/_c2);=_(W" ʊHD]HȡƛI׉4q!Nrl5yAB5zL|؛~AhH"69#U|HJӟ;#PuٜƾS`bD([(_KH+BE*LmC( "U@O\MHa Kv+lƀQ輜q+q2b"ȥ\qemHoׇe3FH+ĩW S MD` 4%z&%78KkllIU=p~>j{ !M,W,޵`6f6LVDٮP1q2>Hw1 t E/C^xl%Oᄕ ɱ+c(;pA<^0`F2SͶphf/8{N]TERnVvl1!۰֠d+3;򎴴+q*g,`9L:;``c򽹭箮wE]whZc>mj?כ7Lk67LRQcTY|VN' n`ՃKtkQ?(dV|3epe PpeYI y Tr3iB~&O@$Le {H~d=G?q|0\g}0{!:;6YxLp76v2uh>' W(Ј!?bxbělӯȩC"<(vNt(eL:HlQ+l)VwTPxTk,ءD:(~B4s?4ز\߹ӛ ^ʚ'(Z% HvnY_jwDtg G0$H{;kx?yp.bHL_@3WwAXQ =#@z iJ+B03Mc࿎cG=4O:-DŁٛW_]?PII37qxD˿=,%V'7[_X~:h\)z|vb$V4}(20)m]4'N(P64k7s@$߯082vF,Xn݈Ä n)6ڗ5\s"P.bߵďQ`uvO>41Rz4~t15|~*dr:c~ HV oqXb,3i&;>5~X )>Wm\WXHm.WD(esb!MaD5e `| K0z̫_ xdw{u-]/VKEl )ho6ݸ68>l,,٧8?A5$O` b*8}* Oյ'Yt9%THQ=g1lZÁhs-6`P8QSŴ[L3uE*Sp2B׍+I)CR7q,'pugUj P\Y濋c!Xǣ %_ ('gY1D QH%QЩDI q/iqWC:D6i$1 @TIr: ln8GmȮaQsrLv|T*S>SܴKf:oKDk7;Bgd@'SZA2 À û6p:U `s[tczZd>:)tcOm/X&߫ m(@jxc nk9y^pAÿ< s#5| m6mG=pde8MYA ET}vdNSRw\h4+ pYTW <{t߮^X.tWW`[ڨ F6^ݴzWl0Q`0w'jZ{0"4>Z$̩Z|=i([=z>0xpy?b"-Oz|!O14KTA6SezYQrA,F`i~k_#| =Ai̲-f(0# L3T*hNJ=:S{ t XSXfc9DUA 8jl%O.m[,S҄$*`(򻌳/LaoNEdcviO^L iIl%)Cdi9Z/7"j;&AV&5?%sMk=@-o޸W.kM\c?~kUiRs,:0' FlD(iV;LMnN;\W)I\fZ͛DTˊj3At# w gO]}֦4[5X* K4QDM茍F!ϯune!9F\Q{\W0+g HD(Y7AǦ-NࣞU%Jk BEez@ܲ$8oU|]8[+ș5p7:hJ\NYϸMSFp;h;5 `9 // `ݖ^t8NwF J/vif HIpt4up N?7=(QJ4̀BABqxGjXɺ,āVw#FCzck?6P׻%z߲m+Ɩ)dLׁb0ة59c׊RVjjSqE hiH9UtpU}xogb AILW)e$E\fefDB3J)(DO1*b3 z _XDm`w QJ2at݆uOThd Y#Jv17N>ľ֟g?Or<1{Mkix"EhԤ/[ۅġK6@@;q$$&g*x[.dsT^[5]9;a<0(Oc`Q iF+59@__wNaGVr +~}=K Ɔ6~v97MEpnzjE}MY|}١`J@ׄיQoU!;ɭ6i2#V%;&AUt1n?14 +m.^ڂ(C{%x|DKjy m<`Ϳ7%`~8ᐭ Vc`4vjXFϓ%*$\]Ru u g411ml>6:N@Z$Iԛ J^[3`YG=jdT!;I*?4(M0l[RuufX5 ?FwƗ̎e{[J_,Xo"|<3 Ut%d\(kɚЏXҥb(?R_~SRY2+ V]j 5ZH0fqf~dy>/h JeSߛ3BjK%ky6hEkv#H)=)`~( /`ɊT5T\.vT?cFf UeL+uR7%XK>qlB粱3T+%y>cDf,ԢdYmq2In)],2&k <q>vvJ[ܾγJ6AQ#52 4 & uY_pvt׷r=UC$DJI5/ٚ_~xH8X)(i#~' ݪ 3@<\?=Gױek)WݬPZ4p't^lefVQ1 NE- 4<-]]o~&ྐྵyɹ}5hg0]ҙZ` bj]9TP48K)oB)M^[SCPzէj}[')~BY(iT3= ;?>&fiNQVZh J_y?}#>k;Gw&d LIeiOrp^г)TЬuOd28NZC[TS椢gp8B6aom&/ވU@H@⹌7y}mʾ"0;h`-qa3 SsX^ځZ4xW;҉ˀ':=V$+#x&ـ ktǪk;:%4`LKky=֍i*e#:x0x+f*O?_ ;'H@эC84EqFYENYLd^Whzkt@d];0I~=LKPNڣl" 'Vp4A(DǼH5w\m4 |أAzl™_bbcVA)8a&*|g8̊ZA\fG_1|% (6뢟D 6CхZהb Jʸo#!+P[͡9>R>ߏuJmlZqsV+oZqa7SKѬک}5 Ў8@ZV|}<WfN4MNF_Q&TQPI#^A76(2C% p'ϫc7- L`oQ@ߙp~g0qG 1_4 YH`7hVʒ{F;@QwM0֞#{eUfa !Z7'JGDht4q7p\㟎c)n:v\1aH+iD@"Ѓ]^XYP0ê k5wG*]bDhXcjxƻR f@7~f ? NIWyr{oNK2&wn+//*e>eI.]S3N`nex94hatD A~su$b}YJ͘Ra_ kyWP'}IDOo8YZ[i@$H]y *Ҽ&"vXThIhu̢k=HK"cAfhDŽ${!cy.Riñ07Jpx@Qzi 0䙎~@M` #h Ga*QKN}\*Ĩh —N>ōKsDIƦ]>ּF۽ͲH)/4 ň܁!Pt,L[zxƏ`O\O1Hg'zr2cMozP>TA3Zt8e.X!Iv nIU-~g^Ҕ9_=H±L0{A?P%IL1(mʼ5l N^@f>ȎdeDiѽސI{X@l* 1)aS4A<(s:? k>;+,Gz@c+M;atN;f.˺'K$" *;>dď@3OcoTQy.o7ˁYXTTɀHF|30Q, tC,23 8 [=|}@I34o2zNX٣m?ë4hmtR{ȔR( +͒\ס z$%È4Me3}|h l r] jF@"}J }|}DxoiQme<ɗ= 4"$ݭӠ%t7ʠțsZ^amyt8'nw6Œ-Np 31ҏR@E|Q塤r:B`ݴCӛ+3{GWEZ`4|P>8auFUBtp͞TJޠkNH/AhЍ5&_gYN7 DWTZ̞NA64UI] ݷ? oj%<'hbJ"RELM[_\9 ufJQ0Biiq2/sd ͟߄G 6s`1&. lH.+;0P# ÔYsDtIW 0ǥ=iMWϯ7'0q8z{ThEg:TՄw.j'DAs{JLʁYqW[jϝ;&['{k<_<=q`UM)(~K>@Pm rg?cLM:,i/98Y{E>' [VW'k||`>S;~/p+ǩ>%%8'6X41.jsFР-K('0  3W,W<("(R T~4tt1iiz\GH^uNlvichwv6 esiܾjJ,~w'$h'Y 8CT'{ ]ًC G8A7$A4tF Wrq|k8l{j:;-|J @L׏AYCNh7:'0f>dFhN5M-Աw7 jG乴^8~ou{(7^W ɋ7bB@SwuMyf|PМ8Y$͔ =7roMAUgR>남Ȱ$UrBfk1尷_Kj &T!s ӛ26iTLVaamY2"]Unz3` 6БaJmT"LT3p%jMD:VQYK&7%R@&?s AΥZ#;|=*4 OMd.!s*}-͠ cn\K;1Mhdz_ʚg0]@35>!_BF9P`ld߷m{0pOb.Lzg/4 :MOgfaֈ@0fVU n`R+5$8 ˪)yXCj}Kfbf(l4`NW/dճ@?o KWը2Y햺2$VɚKMʴSE%s]hp3z[͢!Я\ywT|,KXJgV!VĠZ`}_#Ht~N|≩w Z]qDd*Ly^7ͬhV>vjJp3(jf?nit^E\ZL/R+rkN2h j ;9*Y%gX]nEt7"g4HJ(:'6Po(n.Ku> Zq4F}m ;-ȣ-:mX8@+p|ű~salq},]CFW`s%U>zL{w1!먢O`3 }= iҭKQ?Xdh`Э|hS^$YŌ3Bu+Xc&@S##*Y%xJTE(ZDŽD[ ]aS_x.<1HU*'czrxAQA@kd !8#I7Y!I ] Aqe|4%Y_-rr  }z׷ :v Yg" oWdLNMi%PB^!xaLTY{VjVdh\}yIl&ZڭD:DFSXtris0K?g])MsBtmg T)ɊN@L-\mѬpU-uG֓.T Z^\\TUi^ȗ 6<iВV v5i1L舄`8VZ[ad 06〇Ca6Ym|dHUp+g(Ͽ'~\V}xo_v|9p{h&YY Na ykhsKͩB&'en6π0_A} G^ʏ#Ⱦρ@q{$F-oF }2^NN@R;0} z߾蠻>Lȭ 'oaϑ>'ޢ?7(!4qr$(M]|O8RRjOEm,RgpIù/u|Ļa_7.2eJj牒b%Uݚ>X`,IB`6K037ba5窃>Yj#S*b916As(ҹ)ܺ Fϓd&MZYD;#k38ǡZ9\Cy] @)pX92F΂(J$+I]O&Wϯm za fkzl$&m4Ѿ)}ꩬTU1 u\֜s +)ǧ'k}j P6l{"Idؾ֢5BMR҉۬7<')"T(xcY+X+{eBFӪ7 M͋~8 䬝;ir37?R|q7oO/1ϩY Ъ-%GҔIM޴E^T=_G zwSASJ3ǂ؟3J כ6ElZxb!p*c^ *;Qeb(i]M:;^wy{\dzt$3b7j<ʼf2ScilN'3qzW.lG;凋Tj:c6\֨{ ZJ<w4F6f, ?8ivQ2`Z|xm_*A3ڥ9$TJ_I離{n`1$N3L$(+b3IHl Nzؿ}I vhŧ^;i`[P6O|CwNR V^E@fIbIcf sx?L{$jo$7AwD@%L Jh rLAN UB3e_4;EhxI)9P{ 3lTTF)fɯ GI@KHs?הG{&Γ1T/]D7\h # %O6e̕&DL6Ö [R3p~O6 ̲ =x;? s~q,Mޭ3jY;$58VU~RP1aۮXFj05ep݃fq6/f|j֔ӕ^zcH?jAcP1: f 7O~=6Fw d3> ];?TxN&R7ut''kKR_1hHE)3)n+*Ks pQ7|vSπPjd&-]Ս%ØrzO3xP(NbFg?/8Ϗ~2*p^E HNZUz+}Z/W;YӺ@y")4U^Ƌ.WН951#4`?J289PZQQe ,WKH/|;y9Re}3[5gGr_>*uD,>`Y.QZ%}ަbt[NuFF6 `VŘwC6l_8`'AUqX+Ab`}}S+K l1+uh sm#I;;Iq`Y1:?abXPYB3aXOպ0X|_:{ P0owukE桒2@VFTA[q{EAkfR7BGNKt .k5E*Nq x;TI˽v]]͵w㭋bu68'V&}V?>#S\23S8T$e9 i\#-ftg7 }Аiln2Ij^diF/^yo3$!+EeP06XƢdݨ u͍GYq޸+R-v DDF+,d!n5^ex)'u}h|}Q/WбY-+hmdbѰ'.qrgx5}O"aOoYZ~QlVFk?l}#hV90◵VL;A-fFE6R7Ï ;"!Ħq(L\3 &uؑa]) "G@n\E X-/)׸OdVEdN%y(RmeF ~EU~pChr"?\!~]^v+}r0> Q5+w!v (;ld`6:b Sww\3i9K4DoOKkrF&3xfV|$k.^î-1Ix;"#t+ b"*ȘFd|Ee*#/OO~ߛ6;3޴W̟> _>QhL6|UL>0J@҉%+%ibK U˘֛L~]OU:b^d_M˿ϡ}"]l_~[/S~{7(DX{$`+{±q%@BU'3r94|!qQ$0m}v|9ǚb2͂qcYƬu๳~~Zu/._kUamU~Ù!'88eFRLBwJRq2}\)_^ч8"tՋc~y;A'% `iGrt 59Jiʢ!wxJZWXS;Re#Ԟ<~$$8 tc`  ,p'\9 gkӡ<  3W`F:ycAwXA_yhhAd1Oheh~_x_ZVoi?{zl;@dDe,h,ޒT9*tWT [THe`.3D$ݖwMǝDUf۟ӭY+}|˿v+y51% Zא& wABז`q&\3xv^47 q_zwз˙ZL߫ \xw,<8Agd z}Us Y1/)0kYB(*U<'?1h0LrKgac} ]/9 ]ŪW k*~aɊ@y[Z>|Ft#FF,o]Y*ߺ.GkMt@Z S%ٕ8t3D~emYX6EW ,㾯&')^= @$2/%Hq2 `]{эзv[7,60wM~-ZO?i% ΂[2wXꀊwqiFcנ+v S9;n/ɀ_c˫ 15x_]n?z??yU"]uy'u_+)Abg'p;LuDN"g%pGf>xߪ9 *YxN|}lâ6tc%Q%s!⮒0 IF1@ 00L 95dKIx>%' Zi^l fa{̮?u ?R]\0{zkE9iJ `9Uመ Y,(Ur@4m u :jkAZhY=)u4H',|m`LhA{ ;'-Mci$peG;O&~N4FZ/*n=]40/H&\8=)SW>2Yuô Zw \ {fҋ*-韰鹳{xMi=23lT1 Zc-4_-:Az ^96i~J *g!kbH6v\t+J-X&skG:LZoSPZO"p)>#BWGI:~ŕ7 `e<87_ҟ4i{LJgSQi^UVh 2120vF,b{Fwp `zIP1nHҗR4@`q`#@vۼ>hv>zGKX}da/y4Uiٚ L{m"r0OOZ̡FTe4&-aL'a.W:xz;XU{Dl3{h*Y 1o5gYO7ax;M4[-E5 ,e&*zih=,qǸ,cULʹUٱC-YU 1U6`sqZXƬ;|y[Yu:?V_~K2kZ7}t0Xt[h*sI BP@eP щ7T.Pr7E0M.n8UI ^ Fxni4ORhl|6~mw ~!eJgԍu?F<7そem@%QRUx)9w1sAA U_r'o_ՁYBrLY4M٥% gF &9?Ɣ3aɗUdgm3Z֊exf7-b6=s 'j?(D /"cKs8t2cz=Fղ#F :0DJ@naqϸ'`'d\[֊c4#}+8b 8ozrEױ`f$I#JM!B~A.)ѭ|u"0"zo4mn彭Ϟv~l6<{Վ_th_J,{,YA-5$mr"]\pr 2lWK});?sT~<ƧMntT,EQ!JlW7_oG<Ŀ>pS" kK}X-Iә|9IuD<@gl\m͛<,b:"{Ǵ8SG,pzׂ˯i]q 1Q-f0u,F'FDr~`Rm%+&pm0Rk +ek\<3׶֤؏O\9)#&[ ')i>wU]ڧqaב/Ƭ[Hir+F\T܉%nAp2`!y0F\DP[6p z~K流$a6O^ǮC5ڝ& Y4"U1s<*8pP"I..nW AitI|SΒ;+}5]quK)nuf 1(QB(3DF1KjDdK/0{oJ~oiɥQ"noꎌ7`ꭽ/^imj5pyg^$RD6j0FV%ʙ` `8`gUՈ&I{b5eJͦ`IZډЕ솲YƩ+Ǘ(dЄ6~XV)PK2d݊j _ݖpcjҜNy+0@CT @j>}FK:C(- U/'h/b˘ 2cvʎld#r`v x ZĆhU{l[)M*< ˚d$u:?Fm[_6JJo(5bkQi!x-*'J5t"Zd=nfZ}h6}m->yW7ul\ݷ@kwb%Q? =;h]\M}Tzg~Ii@2a&␙q;j?pmVf+Ԛ_'5{dϝ2"~4vӠЂmL&b|uƺr%J\>f=)[PG2.c q4N0rWR,tJ,%GC Xx%88&qpeqwmɘGIw@E++Rt wLL]Ο'@6 F'&qȔ ZBY|h͵NqGIO8>/k]\=7 CKe̺)msװ}_UJB iqNr(xR|u cp&4(6qj}#/_lVt{Ӟ_(t*0{@9fEF$>MYE5% ) |~p(Xː7]\y͙aY]ZjO7?&WMS`猹i̸Tv&_5vqD]_k9n6 <1sn5et`'[5aXُO*eG6N0Tsq =Z:@W&E%fWy^n{o/ol/rk4ױuZ*bWK+EoJE< ::yTkQIy%wVz>ĭN6 f zϖDo;6PDt< eh@sFN¿@y,4CՐN wa?E'3Ar&cL\FTty}_u<ŀڦ}ST~ߣ>\[-tƥnh)tM |~I_S%wH9|w(LUWD{E8:i^_3 $WDLʪS5.A1!vdmVmT\F_{/d~~ӵRrK*3Q0Ў筰Zym{ʓXb+^kMq`b\Gl]'JpCSbm'6 :^..t|a(o"952/Qt #~o/ָ}c9{~V\캅6TiVhX뷊ɂ(3}PF*~"a3#G^x[[?jC Ի>o\gjCx3ALsRﺭ SZt6pv|! ?F  m!3r$(f1(}ڢ~G.:RY|g-͏t_2Ymf?Q- ypĽ=>wz5 )(lklFЛ6 )twșc ?Ui_N΍3v(:TAMw+"uowm-8gXuc8JTÖ}-}k+``k젦UTY !0R)'L#D]}u[fb}0M#@vd#P~Q;"#z^#ױFfӌP̲-.J#.+K]y9!Z{vb|ŁWHr&Ւ%+J/4KZn5fo֬RX}5{w~Ks폝|wuu@٬YwdyZW}sayb~@&0T܌,{ Y=$P\HueȔ,Ӧ1Ff\#vHY+uίK]oo/T -&ɒb* %j3Ifd&:͒f 43Nƍd2rtw +PPߘi&3RWˊ|q0EyӦgH }P] '$w$-+͉>PG6vMx,nߜT̚* D/_3?1#=B69fg]ŖٳwxmẲtmu<+f="aZWyIɰ = q%wCumyg_蠻60L"R$muu~y?Q]^}Z89%4~ɹ Uk&pd|ANܷx5bKB)/85fT5Q sݨ/ܕGXԳø,߫sZ/%?c)'?L UKk;n9);va&Q6b:LhFSFXW\OnBrjoEs`Yӊu3)7ʻp tw0H]'pVuK^DT\v in\zD;B"8CǯJX5.@գ*ّld#{ճmR÷$uVЃK>45poȠ.k*rqBԕme)[]\ӰXFE2$[-3Wcnxȧ$YD &gj$+<%FPf%2bB2SDOhZO!l6|]Վ؀b F{ex?,}2 %0#:@!!ث PIɏ{]]1,a>[Yvsi>Y37- U%g ~Q@ gYDaB UZx#:kuMo~%; EM쓻l^; I',eFKب^%4AŠt&D_-/~ %(.be}>āc/S*cdyԃf|?ܨӃq,wn) ALE23>:gq߃7Vs^3N&ٲ)@\lq[X9'LkGau n0M@3M76ASsnI61} ;Zq03]T&Lav&Z^Z?iﹷHQѠe'Ɨ/h}OU˽@lyhM,m`Խ6 m+˕X1!ږ ErtA׸6eQ㛷V7u?4_"VN~Vչ877lø6:tL{ H ܙ;lFgЫg^k3%a~ix^DžvNyC9.N \@Y$ʐvjb6%J=GqŴ!!k tފL$/e+_on[Gt[Vj \>?^w\Uf+өiCWk7M8LyŽ,95Z2&Ӑ `Ȏld#=Ux Dd_W[fWp#c@Q?*P D=f-h;(Ѐg.50\< U }l~ ֑ :FদYSt uP6pVSXmrp(L&ǹɃAj_ԯg co{xBH.CUrGЭZ@@YBDwΚ);FOH)m\5}Pi2u1c-( O՟VO1>lBp4*fD> H1GlU%*S*" M@2@--p9fy5/˞z'eP]UL:똛 aE9= CխTњ[PtJpQGHc<1?]ԑS,u3)t緢rg rb'\N8qK:I.]1YiV w 㓊87Su, fD}ΛUytSӝ %L{}'?G @? FI9qL7.Ph%#1p [HJsCWYݯvVPY:MfwoBu2iJrYa->~ͯ]}o[[̾gDrĕO^AYP|+8+_LyĚ51(XWI(pZ"&BcJ&ќnv;_|o h߫1}00rspfc{O|BXe >LStMAs`J,F x21?g܈86Ad 8vxhe;:n"Q8ld2tzpM*KJJhts؀޷)HeU00o':غ8}/˕/`ue:LjJm}fVm +I| h]K$LgfD=BTF6A$"n2v_uHhw\G`yLA c0+%MPvcs'ޚCmDEŽKڑ~O! j35k'-1RHl<A䉪+~-nm$ՙLV񴄍ooG0=QԾ["VK8.z6I2`XNYE2U|MR)q5-{1o{SU!*UNƴ Bj۞Oc8xJ`a"I.^Vlq*h9,R{n>v}@zD 5=9&ohjoJ, w Af%0z{!aei+$`[5װg 3[[``ǟ2- J Je ~m%> :kGmN/+(;zutg7CRkXMBPSkGMӚjSTsȬ*װpH@eI<Ѧg ]xqz,5Z:*Lxj@Ƶ3Xz/_W碶ou߸Bpe"[@ch")JaWY\9T,{mv?礦@8 rb]O3+X+(9I'S"e< DH,Rf‹ìf7 ,`NG&au*6RGرwV D}r$n],In/_(.*_yZNHsbSdfZ!$m vdG6 MH)Xfjd4(SUcع"{!Y%UR:E)W,l %CV . (.PLT'w&n`:MO08G AհnLRJ'p ATˠ?eP4?Jme7۟x`ݷ;ФGl\$̆i0;na-\T _}I!VwWi5&3 c`hSH g`Yk7rn}h㻏cPu&qWf3_o}ۡ?ToǍ-WUuC is\acLtL%5e\G{OوFEi#0Tfeeb G5[S@ _ Q3:Qvɳ(+i=+{1ͽSkbnuvk)M4231_K[Q[r3YFr/Xei`\>'.ׅIktQF6cқ<C%\r\uq[,JeY'bܒDO2Ȃ=m• znuݦ9U [`ͪ< xz{Տ:i"@75)AŎNkm5?x/tZVO_<4q,iEbi℆*{hXt~~r-舢 @ Yypf_e5 Ԟ:Nk Ơ9r___;͟KߞxʖCCSPw6'g0ýҷG~[nE{s6CP_X.gfUT-Eq85l5n@][ T zQֈQ+820`ϔi}_爫^*A<< m3K5\HL pu/ wmЃ5Pl)MA%אncXp|^) Gi4f\Mnw7gnWz`>i<CLQ-6=\97zѠIpəkؾl5NM%(H,N 7Lt6>2B@>t0}jUQ6T.m /e7{X|aTry$ֈ[W(jczA)1YT\<:q{M!?W4L~Yɕ^R-Z;0shl6muoVN^gO O|/2(s'g\ gkji Tk?qdmWc&M~[ U\*`)H}c`֫;tEVb=u!ې;Odd[ Fj߼i`S(fH_gJMbҾWRBk/>~N-P|T9_Ԯ ?NmH.) ::n_ҳA9ܫ?zL]jh^>#ip湑]!9%PTGmp0˕s[xWSRUrBvf98t$Ⱦ(zhJ>n*~ձoIhkz4=g%ؖ)nM&`Lx˴snLx(v(qB-1r4[WeLN[( lmH0;zlx2=(f/5`&it64I Ez`xfӹ@BsEz|ulD>e|>.,xuQc]5І2 $2i=Rmd' %A^r.n<{i`( oԻnb#2†8gP4;,MAm^?PU3谶9UCxϓ5f.[^{a`${=wݏoojl\={5>{r_O-Bz󓢶zWTKG@aD2M>e,yי24uk_@̔[Mwӑ•~efUXMfe7odǴ?w>HL8`}5L^to$0;l~gw@J4RDZ;rv"9d} C3 0d۟.`0 A_K^M\ǎډCP[+?‚KK˜@ 4K>HAzDZºB3d5~mw3gZ> :{?(\`U}M-G,K yx6]}U1k /\4ͬx_"lлW_x`PT93:)U&, Xb92^\10m>09k1i:1،4r#K@f=B{IEPIkE,0byo&B]GxwV!WMHiH F݇cPA\0Q, gBO.wouq)J~ w lE{b*2] [X =97fՅW` Xi*9[y߸nn<ե yP%ۧ,:DE# z6$XgAW}dvJ9;}}y=Colml}>hO`\s~a:ŏTm}=9X}bNP:زshw@!HљPb3OsO;*\L{dONO;jcf(?=Ecj`]$l1FR ;8Ԧ>Ý.àD?Y;]U8RF)s]%>/h6*"+k1mF6f'M4X mg| \\{HEۀY-(T-R90˫'kc"b́¢ X Ũp|.mucƹ+X@l҉KI_+ 25bi SS'!ߵ i~\t^UϜy?ltzos:O4@J"-7`&'rʸO3qq_EW;u=JmDɟi~֗nOy92X>Ƿ|ճ_sLq2#I0|$B.T[^d: Y=b!/P j,DտE]qHN*6+gIK/YchLmօ ~CYup(kArֿ %#AmWGf<ōYƪ5kxJ##V`+>pq+]|PfJL1+``3r:-И~~_x3rfbV:_4}+-,58\6dJ# K\4ۀ7;؝aj vWG̅+X߬t]b ݛ8s2[i H-롖%^r.6[Z_a/ Z8w']=Mk C5JC4pv{؋ O2Q0)jHt_S4TWgpw蚊ڲoD{nuZ]o~^Z_zĤk)irMg#4eNip}<3UVHT/ DfނAhI Xf>hkPJ_GvJyŽfYߛUb/pp֬/ɄOL`fp?Մg:o'}%f$zW′GS'ypyeERX5/\TfqS x/IE 6\x92gS d,3YPR u<;k7ELG }}lށJb-sK8p';Ц4?M΁|a6d}å3ۆP_TmlnkeOH٢0)QjY X-$G- #8sy`D`cx-oT$ f@]oD'C&s;9[=3ֈ?X^|æ*e?׿ qE/͝36$D dau:0{=-G^=zWNXo2,7^h|382yhDL$v`LĠb0h% |cF3ۑsFʹ30wZg)h~AkћG"#zn4'd>U-$7-/̟_MƉ;~R;0@2j4 G`qd{פ.ҍia 0c' XA)clMPYU-cKضkC+P+1FF607?և[a608aǾk}FbQޫ{^F/4lTIyL+8DžStgy,U ݚ[ؾw M_NZGPkE2 mMѵGrifd{r" Ug?Y#- F~4uy?JX6b+-,81`Vhl >M]7 +ƛ ZAxO٬]z7Vp/f |,|4q;CKܐϚǺ,dq,炸= ЯTDql2 9UH3xTҿe&7.$قuY0zP`l~m@òS*Db}Ĉt( Er94 FOA@U^ųSX1b`'Iא@Wc0 @zY.Fc)VS@mM񔿑,H f@iw_Þ*T\6Ɯ2X#')ႦXde9h1qqӹOLtlƶ+j!gF@)xDГPk6s&uU%[ Zbjp83[HDžI.N?z'U˃f}@1 'ބK| 7w" j 0v4ՆZ_2LOòj^<*Oj]󆐯/~\zU󹥟M=ۋ{Tarrkm|څon o߫͵~elShb0s S&9u.~ ʥXs!1*3A$%9LbJD5$A.s̖Qa:&ǖFfh𥵋6ASjLj@J#w_{OiZSP׭<F1Փ;,_bi?_׌T0]}+\nّld#`o,8zz.R cpN#eDנ@R0NS~2#'$Nfufa8d`m;6yJI;dB&D4,87jFEѸg4?W˽c@lq_nQ0Yh&QtAxH|ǭMC:Vq/e<<U 5͒O_|?N=툧L~5V)A/|+'ދY#ݷlt,?D|Ӑ9'H6"!~Mʤ}3eyQ}|.Q)SVTIʹ|ܮ:h * ~vj`~O[<.x9p Nݩ$ɟ_KӨM -φOh̪H^x7[xdOY`+5n Zo")I`}װM" AZ$Q,( rYop RA=}4ToGΙ!xLR8 N+Wifq_^u P64K/Q* %r”6qWcθZ8eW(ѿ9uP 1$2 :qsw_ٴ:x5:`799FA+'_||o.ջ۷}r+QTyW72##S% OAY^h(@ u6#P7IM_ f ?x4c] 7DgE%\hKs.@[N>±G061=LHܾ3mqV<f`(KXXH ҙX[0>qvG94]?2FF6fMH=aT\XV053F>S &?Nb T@cX}lfn^[&R_*0= +ߠ58SjrCX5 3xX_VKr(=ܨT'0g=,K/}6]X`f1' je"dBZm0vC . R$RH @0``(`f0}w.o_Owz߉x/_޼ywQC/}YV1[1R}ih u(\QӇ8_(/%aE@3(E :섴 OK ezS#/)$}̓,fYFAZB_Ģ GKkﮑ<hNR,[7uUςj>EP_GoH=./TpZ9oj qO1*|Ԍ.@wkD`;\``\*W ~N7  - cѻݔJQfj'5*q=- |#G0ٳ,̌3AP`px2d.{2C3fa'tD͞;q*jzn#:0+z4ڶp* d/f1[1Tn5S>٨ LJנ+̋"2˖y,OZMDI4p(m,CQ>F @_ sw-H<|zvZ-_%GŃII&AB96v;6U۱3)PB:Zd]v]V FϹiW%&_V n#6uu(ط$}YVJ~_,zF_cw1<'@s,X[2@$5m(A>LM~U( j "vObp8PRvm.|fֵ.0h. Sޱ}G:+L`M &ڞE4=.ܴ?c}e$|,_"F+V cZ'.2utZ)]/H>@,  Y0?ٯQd@Y'6";GXn.Ͼ-;QC9k[Inؘt:q<)iR _[  BM߹A,D645x\o-2q FuE1 ȷMU;PR"2bۣG ~5E^R1%'5%0ۣGVk|§YO)A A\3``zYVZ4>]F=Әud{z3#;zE,Ec:pDVmoqn{ 4K*^'@kX{+k Fۢ(BFscf܏ĩ zYc-U@HQ R.*QIM$\z/Z.̱4Jz\X[8D{DƬbn/%QvHdJp^0˞oX}Ӌ"s!Ş]N8\_w~ Ώ{p!v^ܓY3%+}D;D5{t!W[OtON~(5XV7}2<߬y,ʖ5ZQk=:{硝{ 1D"_N HQ~E=bƕv>:LWob^l~V9m})iߪ,,$9R?[Y$箁Ypۃ,KtN cqt 'k-9#kE};].;FxԂY)v^yL0Agk"ӥ-]ZـzDzHmi%lbʶ4Kٌ;V=V Uf)g֦GX_܉tZCI#KqZ–Y'RW9g侴SX@eIwI< @,dNŖ )?{fiN7xPn;G]M_G<)´5_e4E)KE.'('8SDz*EQoYg!)1bԏP4ׯUvQK dz^0S9ݮ/bׁe"K 22IB%4-}F%=3cϣ)IU<%t[OV@kebI:^Ss;^8Q;]ѪIpjE:4}IFGILNXbPNny,/)A׎->(Ȳ5u_Vbm<>Opح@x#gl={k:C^$Ymd`&Mr+gʲЈj O+ey/%+EؽFoYX˘+HEg*r=G^@v$@&N. վ컳ٍ{b'OyVpme-af5/;A.$} ?[h _]K%AR6Ϗ(,o.d$ jF`|gn'S 4kMs?'_5O*XO $^D`w3b|C@OZw'0|EQ88L (ɇi.kv4;jk?.}7_N)Y)Fib)lY  BJC1 k ; nW?autbv$E2񑫥CP |ρ*V/苽1(:U.!e8L- A<ꑴ0C+SDu`o~N)S\GVE PYp|]ރ!¬|N7Bihf0 `qs#E̘ tzo2*<}T*wN?/Lj 9bKk6BK-t)<]8XƙZ0Pn'k߽'>\fUS x*=E+ 0*dG،.'&_𷳕qV{P b'gXtQ6kƾ ;4PmSp j]{9Sqt$2#MPKy p&> 8^vtI>1TtTDn TrJOY i^7SF3} ;^m~yӛr聵)f~N;ARivZΜF:[yTkrY?ohu!.0۵uٮ@oEěp1$nۿcq2N>%@|2~[ e؞8Ld @= ,͏!O-4}#Z BNwQ>P-˕^ cPa U$FN#P@?/HS矹'tݡr+_ia+ ."Bez:sI\$% }K2ELB"^Vy_Q}pVt)0kcѯasY\F`ѾQ*`*jotJlS{`I={㨠B%󲏙ӬDޜULPOxCB~i) 1ppf,@|쑓xރi5q> <,ޣ*ե*ΝF͓s VHj[E!'.քV,9U{\ h.07!ETͲYloN΄7zړnW}:Ye΍-b̝`iq(r;e$I7142 YBAMer(/r̪3 ȶԂu%hl2ʢb} i"}+Ͻ7(PnH~808Zg x9b;ce: U58{9vJ**azU.nk_8ƻP5X3cBc^^[_ƅpC[}ӼYOҖ+A`% 'XZg~SZ#(ᤈ^llNJN]#5CZ/ȹ@ٞJ+۬Sğ+u6ІPR ;],P1f c™giPx?̎R`iΞh`et őؿ&IDuQ-cGvl^^vٮu vh }QhF9L* ه|ndYS5 |6^ek"0©6>3Jc!UZD@(h| -1cs`J1` sEHtQ=r|Nv0ިZtI#F1=ͷL}զ.eվ #_j9VnbQԏeGi$݅44D-^KzϼO!#ۜyK~Յk՟mšʿo3;dccu2X2m4t)׾c aEV1#VP&9 .GNMBc3 :>/0qKu-GtȈh 7 {Dʐ^}^sk5u5mq=XYc nfs`==Vjr𘓀{V6VseVr7ȋKQxJ%6 OU4./bP ZE 6rEU0I&Jt$DzΆ&4m7;pqHs+j yad"AI'X]1H80r 9Jk$C-&%4^;`eaqZ3+;QEs,I-,6E߾f]Zt_,SDSO,`ZV7֊jq+ 8kW%BF͹Xzkh]sщ4_=ŮrJFlIP:ب+*sW&)x9EL̪{OWq%}ڬyYSD+k;?#m,G_}^o ׏!_E1s}Y'9'XC̉ YDm`|,vN3}Utltudl׺fVfܗx hegҘukzS9 X loat/-?|gT2RgiA`{Z"wmZmDDNx,b$>ޓ\L]*DWBj;swUt}b%@Zv}^7]d"B @,.#A"4R9}*Wyμgg&X~!vNb1QWM|9:6(ˉ9'0d#NߓKy.˒STS ҚsTtD%E\rqXplK1#c1BG,\)R}#[0szc2IU+"}đTl!{Lۯ169]6tDaxu-.B/m!!+0w{,g}"II SYedK z7ݾ}3Cph.b|j*Q~Dqsm Rajrl\dmӁY^$x3~WSs[c$z]=8^e7_ܴ$|o!PBmL !pc;Yl[~֓2Σ@ V3w6F} G_އع8C<Ƶ.;jzxlQ 2IbztXB-P\icb/(sC xZpΙT*g/!=޲co>ky-=GYe;tZUsXXs,k?;0%` 2y5ų.Nvj]ZV K VFW{xC5J%GSLk' @"F3_W>pe}easo@B'z?{;,="'J_>ñ8JLiҸ=uh@&x@G]ܣd WOZ/3PnEGWέc'0 jJD%QQCΰLhLiDI"Yw/S^7ruV4ױ7vaګX ?i+GVE  " %ܒKh46J~x %q)RJ'-h]]g r s{%z )2 ɹM#1E޹P7DF[xmS.CU!Y-(!JfÜЇA4KJ1,sENJ$yS>?ybu큫<taDĞ1;آ2H䌀*?hVYG$%%8|`aso 1#>8+6q.FwF!|7 ZdV[t8A %)My 2 TrTito=^Fg?Pnh׾sB+r}YsHןhKΰ1®e  2ϟXs-^g^Uwb=Q%` nb%<97.goӆשUgJ[iJ@l!y/P2_ob]GeF3 z|db}YBxn NTi*4 cH(/=+>AtQcnu[gprgg 2k֎'goUL^@IJLNz: vk]`kVA{PfeohoWuOpҭt̼bu`iom{>.0{&`ui8W;~&14S`e{L2Ŕ>WfW r"qnXrپK'i %bAf6/1!rCGܼoqwi`sx,ƨJS@YPq2W&2ZD4tE}Q(&{fe[x${CSZK3[ӸV+z/NlѺ4"@% }ZGjE/JnשҘ&}x_;cs4f]Ƅ@91/qM:5Xt9fZ*8r{hf e:zқMR ^$$%H^^g;nBjxJV:?K@1(L)]`kc ST3Q@2ZEOxѣdYֿ[B<^&J҂9HPXE9`uiB DJmF/s|Yh\WJ*ޜn=$'GBMZW-p94<6~p?wNDbG7M{l>Ap/%+J@WEϜ!<4(c1`s \=leꟄ,ͯCϞ(ci~-'㪭^g7IosLHuh>;jYU8W6](0@rd'jI/֎ti` >*t`h,JTOE,Ae4^/TFSx>Gُ]Mi-bq8SS3M㒜Qd+@,UaY lXvٮu vi76vb! $?,D:]" ̜n9${1k/2v./>jTUI>k!)~c`CC[]u+#!olϜ۵p~mRv~^jO7yI*i U) p%Qj9fs{*0“Wk|gvv=!`yoBRlw߶sc鱯|Qqo7޴ϛsa4OKNqV,Yb(lH0km͋_im JMQыCS ۉrrkgKuH\7wƩup"vWӸ\$S OMnG;~0E}+Ee%]d$*y#c獍j} ;f0<ޢ%VOv!1  <3217uPVA</7>ɉ;Eծ݄;e47/7s^`tra .{"cVhdԴpCA픺 1"`kҤ7an@˝ ӃϣQiѢe_X}eYvD {e')mWg 3j{y.[ofwMT(y\}DZFޛcV:w#$(itE@gLJP'hgskt3žt,n#gLe$B`uiriK_lֹ= ]OULa1:Z2vYk`39Eh9f ƪY'5vr>z#̴}F9 c::lblrѵ>cζ]`k]]gsw!DE fYa|Wy#1Y'ŲF6훴o8pUV[?7N$$$^&*@HDzm:i49Ɂ~LBBI@A7~JVb=?վ}[c1}3?2QhaOʂK>#ڽfrxu.%4zRxbsOGUUZ<~B^Nd`'3fWOiI);!K׵ܮ4 @UOf!KR7[I|tNnɧtt}cIH$ڽ|\|)dz?q;٢#s6}=.S*Nu'G#](U̞EQ8ci_H][%@0q,kbtb}Q= ɭ4f6x)B@Yګe ڬU0+CkrV1!P%*N_k+k{Km̟FX2]E[ct:ՌvMg)K)y"WܼճrzZ< zU9'4Nړ?rq%dK;rlֱ?hݳ{fx v3^S0RL+gBm`i>Y]_V1CƀȞG{ߚm{i1+N_f$ XY 0_]` +eeƵB.= [ |QR(vRΨLw^f\gAt],{7$}y4R<675!e}nB}^ˋΟEsY'LkJQ#w/a:nnmD {pi[GIX lwud[ݰQZ׺l~Fm?#;3H='Zc S00TͱԯK09o>SCY2 =Ix!bb/Jpb1ƕ;Ȅ٢ )<}7>R% 6k1Iu&UtQt@g._>yWGsf1 [1Xޥt ̢C1 ;y4| ~ dbK5"ҳmW~'ةd+C>\J _;'j~*񔕽^>td $2B-)#Nnzyu.؈ 1h_g)=9^h=2Rr4 S@Q;Wμ `R2kg'Fc/^7eOf8xv<k%agnBs'{jV=6V_<|c"A0x&]α8Cwh)NcP/[lSض.0^:  o< JuS.b`bop)h\BZё&/^g9)VĈو;X 2=KbKvx"" P&HS@)G)Nͺ8M -܉LTN7TL{SwT~0,vV TWvUɮ0=1~UuGON]CacETWKurg S7-Ew. !/ p'c z5VCz*U fn^5#:0&CYRt"U2a618: dRs31y&f*MMedgI(XH. Mv1+i77Zsq_/"ܹ(?o޷q 2``'^snyNW3"*ea&j5>l(\=<*4&F"6.>&S+C/xO6XkyXdJ(e t,#DHQв_! fM9`G̲F>4Q$֍\edYXΟl5_s)lj\7͵8 L莖Uԝm)_xi<884=LNyNYJ'?&EĐSfo6vont0P_%4z+'20˕_ͅœ `axD~2S @(ܸ3eVQBrG]ʼn>̬!<" ˝?ռQ:.{[LMӁ餭,GR.S'x >4v;#tŬ\6\FtSx!Zl7w[t x: ]UctDߕ4jҡM0L>6,ޜFLT@\xQ ʾNW(rv<0Mg?|̟|{Al׺ V ,SYֶĮ9 h_K>\Ne8Ҝw7>584}%SMm:fp. 9QDy%BY2MT*PNܝ@X3oAzLv[JX :Fȟjݵc|̡\b 3)osd$"T$oջv K%`vw , V֖B;ZзVYĺOOx 5f'!191"N~|&+ $4 P?'B:J%swkטKA6qg|Œ:>v,ZR;%0R-=XߎTEQК,/p9RT>C`:P<)q k5b `%Yc=j Z2fo Ɨ#W,i2g^icrqftRa:&AJg똛9^]K[U` r.Fv4Qf &f V}ʁY澧9VE]L٧D T̾7~(o-;?zFAc0hxFg ǣ #&_]8{F K@"`ӯu9ck9=2C {2*2o`'g>Y)<|tٮuBop3>WuW2z(P&,*Tٗ|o: sNc)jkO?8  jF2Pg?4ӥn 8B"b_@ n\1iLEujYj :cϔV$I&yUrKճh1܊Dq`pRO9e@Yɞ;ev4H55+a|e֖U[޽pw)WOҘ=xk*PJQό%P"UMc%$"&2n%c_G|=Mt. X͛ܯ|\ p6DhDbU d l\lnLbvRmCcoxJY.g8{ 4a8qpUmyUza8*i9f_67 G% `NMװ@iw> :<8n8{X XYP~Ng==chܲhQrD5c$5ΘT˺GZѥ0j)Bd+z i _:V(bP9<|b3>4Ƭ=j%q6bF} 2._ڕ|ePr碎/Cm@|Y,=/j,oǝ;O[U1ȻR@_iVr3;uSe!ZQK ֜*ֽtbHTQ®mjQI:H<:&ן[7:L:Y#})i5#Ξayn4U5*)h9 F G,A^ѻ=7С~cgSԭXvY h7~Nj2zz{җc?9ffo(mp?v&>]; Ǯ*.iF{)o?^Nm`dHc=Ts547&Pn5 ϣo 罖ˇعX$8K&v.;'YnP[jb9e .x=]OUZsϾ#; !Z.؉fOo8P!O+G{d?$é_JiYm,qҶ#%&j_:+rlsl4߸Ad\1G{Hqt%ݪ}V? zE)6/h`B2fg?gAHg.SZe1˱I?@,|/3ka*M?MaJ dNcciiyI!@OBHvVS sQuo@YF :1x Mp1 PȜ=|[&vlS4N؎(:3g3̝A֪2A˾V#y c_S"@VĮ1:Ѳ> k(񔀏|7 I,3ر@gHGp'?MMn^w&!>[]F贇(K7\ XAÌ>e\L@Ed]>G1fD_O [[SS̘R^^ogGk_WXy[ϯBd6÷pu1ν_ Fd \9ue{`lH jf;ODA[5 *Bzv9:OG $+kGZ*]>2ZF!(w O7nf s\Q 7+9P Q2c6F'g:W%\g6ݓf7fO==bMvYt כw=nE]`k]`k:E18˅fj+M윞hN,dCA@Z2b'qv%K nV\IQﻀ<8{*}eK\_VQo X2#*_ %br#69!Q]P-VmtcxJP@{2<6@iePr^ 60*cҘ++B'^lwWAv}S+<30s?0(f6vqgc}mfSfc7 /]TqNDe c@@I0Y>/@Vx AӵO>*P_M,5]aU^5S.A{EZX7_A04{_ԁ uf+J~jO/Lx9"r`"+&&n9b *o4TAt:EҖ,X8cʷbG-$; h!h[H`.>>ΆΨuِj w,4^\: 2 8bdb!e L;U}#as(ؓ?z_:(Rj8 :Cg15YY}lYظ\LNǕ{蛾^Pzscѯ m:;amGևR+טۜfjL1$M;tHH2";^#:u6QRzLK[֣|\)%aߓ9BJQl9 u`8Ñۆ7  %8t1kgkX[P*9 .sOn21&:7 y)5r `25d'LDGvVc`ٷ;`5=-.0۵.05} oFa'*i5F6щUjGo B;ڭ "$"_)0` t&g e@z:X@`PȾ+Ϙ,a.0[VA }Kڃ>׼#^]J|S ]`k]`k@C `T?Sо3;(ן]/ [}V+Xḏ~G{RD} 8^ufluUkuhCEux'^(Jep7̮ V)ֵ^u$3R2N'\c ֦Ck ͩ:>a5JJUz ^QK@D fv"Y{R 8vGlV~h*XsLȑ/J+yJL^Xne4#zc {,@X  WY׻$MelT=Or.P@ӹ6@3xЧM'F{t%'𫪨ĸ,0@9!eIUn63cP[nYg X*n@:-q:$m1yQQG6ϟPEsYLQjmicNv M͋4 `z*)Z ZklzoVܱEo\݃u,?MzvVN7&^Tokf ak5ՙʒ .aN&t6G*dI9&q@jd8FF-MP#^w"MѝHTU(G=M$ D)T#?<rZ̜(2/&y-q+ 2s|u:gx [U`61"vjQ۩]9f-mt%6>֋/OE/:>O~˸ u}Rhg]B/`l2+  RLgI :=].W#gQt`쁞9 hJֱw2)2c D|Szt9{n7d~Wkg>-^ [f7^{"Du/^jXQKU Ol!*k5-B{Uc8 ~=_)ƞc 6`#9"f؞ cۮfL%d| Sa`颱t:Ӂeߘ=kИ6De}q_{3V^yū̴c\d%)-\`D^Kbnuű.\8SGxxma sHIa$`l9:>WژܳNuXGv)݊Bx1Bx-^X(0'uV*y ZA.ВT^Ω ypeH}20uװd+kdljh&C2G$YAHkҙ6Lx}p8tbA f2:M41 \\sgO͗cmm^ܾ۷CEB~υmZ=lCiLNg1o~7=zP'tp|ŏXfJJfY`I:G"Q =8v4BC)_cgQ>s6ׯEIIsx16م'Okxe%-[Bk-322FM>| 虜\ڹϮxڇ@!|s=gokg._WWW-_k=wyIih{lTm[(Zd=:VYwjPJ[ X>|i*DF#~r\G|Mچ+x|q8 IH[A61A(ͭK W}+:&J0Rڜ:%W̕6>9k?<2Sb$yުK}thhb'2%hE5+:&VuH>DQHb >! ]eV/Z}<R*LJ S1?`یY9F+ky!_$mB!`Fx9IDpz;oB82u__~E4"??bZZ~GB٫HK*KPW 6mڀː,C8p𫤉k{w$mOSS3~ؑT={ܵ̆We=,TԷs``H]#** *`du]uu]Ŝ@]  *9a&OwOOpcOs9nO[u=uo._f[#fkLоPAŮ96xJmüS% $Px$h~i @vZ)GwPf5%\*P<'!4g1Ǘ2b7Wf'z!zR#߹tȗPYo^/^M'QG 4 ,NoId-˟Q@A~@fh1:5pj7]X 9¯kBʓ^AOA76?P׾vewࡂ3f_;|VI ̭]#1ٵڴazq<_S<ȵeIqf/'g\RrU-e#ҩfm+|y>$05iWг p𖛄R€yk|9JgbO1}HߕjoOK0k\,C7df ,@w֢$yUXN(*I2ן 0>D!7 ]\sV&kUƝo_—5e΁-㟓.,ұ}eb ;BIK"rQ,f"RVtC (d)c%v ƐcXf2kn sNQN7NY"a$6F W/KJiLfPО 4xg eR$)ڰ',]ʾ(x@81 RQi <H;m^pz懠1 ~0疣I$TDvw&*es*t|mf;INٷ#`hd&cy˜AD9"GQ\^*IZ,o À_\}n#ύT8C{wKOC-$EƟ2PڝVXgrrDA1HZ1NPA͟"CpsT yڎۆWPj 4Id1eUOD  ;m>`j+/gQ.u3Ө`n'6t6a6v=P&  x@gQzGYu -&,, ̝?޸L.?tw"WumV4vafY4__D̏Aq܅}AX*`j0+Z"Ӻ +OD2hw=Wf&ČYԎ%y$Ic##ߏr$7\ehPSJq[eSDYDRF(]'qIv@ %+d>pD:"Hoq+Ʉp)F4vnK\VR9،n\ GU#WvsL'h%Jp%bvq}:*cWyuuuufmہ!`bbjV8<#`#/3.]wo7]B<wZٸ5< ~t/Y7[8`֭"Q{Z"c= ll|C~[Up1kzJ>>&'h^u(VXb~tt>1릦uq bxx4j^oq/eO o~Og4dO7߆1226̛׵~!ׯ<{1G/}ξ-[6D͍8峲Ƒ4m׈/J@ YTڈy/-:zvSY6ѥLr̒*@,RĦrwl>BY-_KnJcb:y@L=?ᑝ̈́ltt rQTiO %^H碐vhu+&e%ߵ8ykty N{[Gt|tr}ʋ'ֲ`]Q"Sk0Alj> ʘ=H&rV{EZfF@x)OY}Emˏ6cDnx5f (4xLd_3%r4>#АP.Ix13PrPE d4ُb}P㓑@wKH ?{\" d!`p[a /62G`)>؊cT&S &[lcҶ\ԈN&A̠5cNv)@ $5B7Љ0 $9L2EmFDJ2M@͸cEgwm@,^ 'E\4NdbDEZ]Ԍr=Gtp9fzR(.JkQt^^}}F,/F*KYtO!b_@0h{tIY Zcfۃ\Wd}#$dK4sg}b4Yv>t KoM^bF90!jb2s!@#fRZRC=Mn+2!<w6d)8}v rTL<>]BdkJ`٪Vd"]ayzRGud'sL99ŜkrnB4MbҜ21F}Pզ5b@ex{}k=9Xp?$'o ?/N,g}gp {~7P% ߻w O;_܈o~'?~Y744cy'"fs!K>/CH:/{n"-큝9{/}lŞ/+.e_~v_bl9{->CÖ~hřƏ=Ggͺox|"Q+Ies?wfo a|#'>}0.i>a}i餓^m5TC6lG~dAdj Ph:_R;T"dci2' j.mzhLx Rf%lK"k/s>8Cӂ -MOR[!!XLo˙ddI^@X7U P¦J'|+8eHrfq|TdY}aI}bȏ+tڪLa_t<bJ3?ED܄평RDFĔqYdE.khILYD'҃`d#Xb?$(Jdr6F Zk~TKT)Aw`uڷ(*[ܯL01g9 ?Lj6ǽ_ ROqQW<*BPxmDtơ8-)MO)dj^C).>.&vatA|iBӻ!,5f׽!kMQS63'3eyVߦjdȓHD2՛&PAR"ĠvٸPT揯7$"^zY #ʘyXqD^PF p lSIR=v\1V'$c1@/F& )S=iS'5b@gq8n׼{ݹsKݤgaVmi;O̶4lY/eiw0;ޏ}'Ĭmŵ?{k?v݊ n{;Q N~CRI~慸ǝ|?ˈ{\_Te-Şp՗ދK/}Yg1[A|h>AgF}J[^9`ѭRs bdePa 0TcooES\Ɓv /Ղmc_&~25Je.|c9kO5 AТ/oU}.%hYHǐL$ ́LzJ$X5"+js`ßA??x şVu{7, sJԈJ41(9|7Jr\K@ڇ9ɿ#O\Y Uɫ6OHuɴh#TK9v!(U?ȑ 5@|& 8! 6µe=uӶWc&h_I4'2%)(1Y`gEK>'Xs=ޟ ~y &7Hw.DD-SCa ] ػa09b>Kȴ0$,P,Kv[Zc{' 'A ٧J^5ceGe+,[VG ,lKβߝWLtgc,0(MۈPf}(OY]'Jx0Tב?Ek"yxQVw-Ze -#D|(Vu \#`TEhn lXɇ* 3&kAzas4|P{X  e d=lL,8ԥ\"32RAcb A&B@?ƖQ2>60dId Hk羗 q v~I AP\$mjz5WmnհS_x^c츤AE i[C~eЮޯ}2mjXKd(35&w<1{#'te?R1Q$c\j9f2)K\; ]1-Nu(_OoU5$Ã&a(E2IX Ɇ=F.`f$S)o&f5d`|$De+RHKSy= \T]!cʥLp?@WLPIRϴ`@6eށl6k?'~|/8փs/}U=8\9eN2޵uO5x?_~߬w^jfo2?WF0g_$Su"i^PZŨlSD0c8T\DbJfY;Y%̔x Ij [ }TKTdgm%\(Tmȇ"Dy`B2ms;_r T/]}#wۆ:x\g@=nf$KN cEGq#"q"yZ֞WBۼhjPRm=#f萛,N+Uc)-ջ5)`z ZgW8koӧLDckY CǼ+Ã4`:@< c,D zzIDcmS%Znb U@M#۾Z:i޺Z"7u(Ij,H"$t)+Ñl (LcP@áTjNu[{# @atŊNkN1su 2~D`#,#pA f0v`[r !c ~OAcT`)cAvI~SgY  STՋd؀&iݯ}OhTK>tl'1 <"3Yf6nn% "Dª#;]ֈ٧ݶ2ոbAdC%"Bږ IcdNnQ L6[%]{)' _U7[O t@ؒxFwMÀvfy$P=X:\󴅱=}"s39 Ԙ+TWxy/) NdZ@\dN~1ܓ?, 3zVpg.xl{)rA4'˒C^NR`-(1u(Ǔ|9eX%\i[AF, e G"%2YX^@>G1S+aٟ2|>/R'9*eRx,V1;U!eF>7,+> vU[=_uG]P1[*~ ΍# =|{/\?1| _O`uWWUY7ⓟ,Z}NƆv eڶm,Y1[ h8PV:#e6 M웁pՐ4f;SRzvRJؖ z]{=E&7l.d|Ӝ7jK0e?YO> k $YY`hN(RC|@>DY%ߘ\+dRbE H"Zd!@֮\j~)^h`1S_H'g$:Qh->^ְ">Oi?k!-50(G>ٮmQH7wbহe.XdRTk&+"a}c+)2KmO>J+\$,TȴQ.υC'eEcx,W;efn)X UIO\ 1خx3"1e eJv{YS >a:PbFE˿~_ʷ~'f~1UX̽::r2YwWWtn pẟ|{9[n o?3}mODWWg%>c03S5y((3d1 EQ'QK 1֮3aA& :Sl &Nm*~b-& gfCǪ`"@tBHP Y9,cɛ/Ƌ'  mV쾿T-|, +Ý`Hc)~pC׻ek8TE)b ^ʯSџzY&{K@!f^3|Z3RF* Iqx;' blTBRu٧Kh{̍*y"u/*d ORAh6Pax0ahHz@?瓿l@Yb ^yT# ;k31{c-T Xa|!ZU2\oKl _ygG4G7JNYY@AڲQ, 2.tB= HLd'\(I,9 l_7'??`bÊPq#F h_ +SpY+V,n4e_ssSN̦>N<~%֮=  GkΨ +1c.nE ߟEKs'GV,E__Ot\v'ɪ/aC#M7 OpQ ^p_7x +V>v=3ϼ1[~̞ ,hA9A0&yBC \$ Ӛ4ϡHXBtDQ<7NIT4oz^ Ϗ杴9VT'β(l .$8P &͡E$%ĠnCXrĎsĽ.Up1&֕ L8 YD`Jpm<縲u jS Ha L:a?SZ{i^37Jݬ?P۰'|f<s7?qf^LpjW຾j3ٶ2ɶ3ъ缣Au̐q,ଏ>^.'tk;LadYT> ]2I:cRC~x9?),><A~8[r7]A쮾%r`OPF@ Ky+ /Q@{N4X!`i&(!,C9Uy ԦvMyt]LB#@}s\0cqncK;X[!\ yih0;O&l] L޽u*,Gұ_+w7n3jҰ,DdN6.Se,AA Dc=ڎu8蠌]52hB5[dǽi/}:Y>6ׅH`A<.PRe !GB:fCBfGIBpWO?c1)Eϒ4is,?M44XvCBvuO4'|_TU ro^h[#ZfлdRr_]ֈك=` 9gݽ+qjrWB̮Xޅ7U83""6J!1{oS[7^jz흇D",5Q;߽W_[ ~+|/7.X#fk(_rAsܑIHc?@k Ggu#aHGc?rR)uE|R ~NQZ Df/3 kDXbtH[m2R5(Y>g-iGMEK!=}OzP7!:lKxV "L~bmړmP2m^?L;/Wu8Ƞ"2뎑hhD]Q9S)4@)9ПSr3y|dp Y&HN=&184[IOυcdXߣqu)#W; ^pm֒x<1ӑѦ[|8نb2ezEOپIcf҇b RĬ9'įʵx)M3t֟jm!ɚ?G+"R0)[& t M"j$މ)O^Ɠ(zCy0 e wdij)?iU¤S"&#mL܊ƆTg }jT\_u9i6!R7n=|U*-akw{.jsB\  ۞k?0HpA g|֑Mu:2Bc[BqrsAiGBἎ_*1%i`8'Pb'gɇaMyy(E{Rԥ߳,+IGD91⊌qv(Znہ#<:H1AKdH=imo8P$-A0+Y13Ail,6랍ipe 4lCY/a4U j1{0׋ lu9xpvHx/%bvG SSSD:BGGSJ̞q?gu*4|׈b?^~{7ɏ>?<կ~oz?݄kg?+ ==1+3x1;Ld2HX \y>W\^y-5bH^EÚV&J6Z߼=x>B$98@ϭ25`A>l{)4ƛ;d1nO"0TgϑYM_hhcQnp vf rP᫝5-L^īyYwInUקojgy 0.hAB],R&f*bI/yDMg}DQD8]Lu?eud1efvm\J\:\ g|e2r2bp;둳<`eRFS@ i55EaPR&wc^;N+>^^}7S$G1,@cp[IW]b Ms]8$k}*!lRִSQЗYm(o֟R_QiC(Im$ LS,O!8PXno)P8i'h VyROJh'IY}#=\^P֘hBPꂁ-6&\d7a2rzӇfPH9יb5]Q7Prd%&.}2ht"6lnMPJ++D3h X:$ck1{0?ɧV=э7㐕υx 0lڴ6lºuλh1w_gy~" _&`󞨍Ol܌Gـ{}s:_^ݟps߄~Uz'>y}_K?"Yb{q<~wIo> XExsvo???-0>KYcw[MGjl Ӡ5-(Ik**@K;fy^E敆|dșlp0(;*dq13FܥQԟ.]hh9ض|=TbɆfGLHCiUV#|17:wC?4җmRot4Nz;ʇ|tzPk%QG+%XYT>b_'k? DROOC̟"ב)M Sr%oץ,!o`&λ( |Nqv?fّrV(㤼 <>\g6g|)r1KAD2üm =i2?I}tm>|)`I΁Q`WEP <#JMJy5m^2zYͣ>.SjPP8"bIYnOh@K{(+G2,D:D\&]D! " P5.:&2(hF} gfifά|6IDu9I.&b6gIDħ-z(1בؼ&Jǣ V|xfP9V$k1gML2xdb.v()Hi$d\(Ts;Z24fvm:(000tlCvBkظϢT9K2ÞSAELQ#81\Q #A mbe!Hrp N >/Ň#u;6'ؤPȫXg'#Ol/פd8S |ZV_`GFr:g0oA 0g֠\1 fjSvb= Z|/=;K[]c\}oP('97cf=|?^x Oάַ1xog~rby㗼\]񊗝| B_3jl OAp8=@@K3B],ib y#tWa b("LRO6q-:t?%(E8vDP!A(AMB=E~6a9Lmxhu K't}=XӶmO|T mA6 O޺C㗫ROALnVF1\q[G);SJ9S(>KZ!ے*~nHkVX}LPl cߪUcM&, oYcTD?PlF1D}uK4:Hxbۣ(&Q5t&7@hN"„zL_zdd&{|4BLk@%wB wd"!vt!D+/rkzQ N2ce 4N @K/%EqX-%V8v5Z[G*M؟.HOL!f?oĻxߍ|WNw[aK_wݯj>N<8Yb;AدXl n=6˗^z%{M鉛c;\F%fK:LaQ=FD UY]k>NgG3TlV;[Re W\'+ |ez"r12и<<2AdA 1[l %:11['Z&e9c.[ܗɕ_o=:r"h ] g~_wg5boH7&'pˆmCySAPB9Ur2{0C!@4 5?eՑeFSf&O܌A' cGЗl9gQ~ w>(S(_DD" 8 &?:y@:.9Sߑ5c(,-AG vrXq5-hhnΗ^K;6_ﹽ| `XΝ9JFrc:G-g #[@ߒ"Ri՗5udk1: Kix:gTz m=cHU @FC~FC&LQK2/Yy͟C`fbBZ_@~`$.I`Z(q5>~9;lqGH5F;"9ZNI C1So=x^@i(,L@Y:֐?eב 9LlNF# th|)"Tg_PiXy.fly0[y樻J Ƴ%iT҃+h@;Do/mM3s<(Ӹ` \A)g8}f<Ɵrx#:m D64uS1OQR$GoJX,${]y7 2?W)OZ<]h(Vy5-ظvdQaWxr= Dr*[PUVXrO"HN~C#A: shhGEnA>6h$MHBIRFnAfOćC5v>i6gsF1v:RR )?(h/"J! #= M_u|هMºI|ώ´-I1 U*Y?րsK˱pCv!Lc6-X^N_x>S]k}|G 0X0tu1$](&Gڷc3'4Fii)+(Ӻ0lLf#xw?C>vG1fL6w ؇Me"oXd c*/3i\ ,}WBwl!@1$o<\;ֳiS'݅>2 89Sйh;zʎzh)DOYXc1w 07lŠTۏ]Ҳd_ {IÐ'ã` gi=.Rƹ f0N)ʒ=1y@P0jZo+-2iǝ>\A}~5һcÑ?C쇗t΁::G<69)B*{m8ȏ!GPh"P0`W͟R#fko)}0053ٍ01I޲F R_0DvB; :_M 鴍6ǡԔ%_WǺf&`jA Cc d/E?X*BvhKWĆdq]LCRܑjkN8!?K>ؤL_ųz h7O]VKE,lΎ*S@B;ʥB t *H&.qqȶrZ ?UWuٝn&d谄胘0IYa"ٹgOeJ2e&2!*@L be\jE^t*eI1Ǿl"7YIϣ?Z甹%REHD1KXN >z 5J6 "mԯkgG܉zHk^qn:ĆunP.),XHe4Sl+ \ vLG)04:zXuL?PP:LBKs|c8ca{U_L6yt=kN\055 m$lXFJQroX򪖏B T!\kG2x=nR+c$Eh uݚRk֠.I p ^taq5"ձUs#۾X.] ??Ϙ8GC)LCo!iKV@zR7֜Ldڧ<启qe_BGTJ0.ґTXgOTCCxä xJαMG[gG҅+EjTŠ>r6+96!ei) m**15HnG>qP=')Ty9f)|'A]J65pg@P A6,o-(]EfLi*N )-1pN"le.ݏvU,PThlG*@_~ov*aЉM&e3*E@n nېȄ8fjud*6BMĜ-FMpxۖ`7b y2_}ctĹs5Rm27:zި'G j |Xy3|`l0UǶ`d;UHx,Iqv7YdHnd $ _Ԭb'޺ퟜ&*d;"PPFCfdDȤ,rq>&GQ̛HDY O4@YVԦ%Q0<%>-KK!)kCFM*YC0RYfP:%%XP-C R5^uj]s*u`~o\Vhk8LCAȤ_p`cqG{^ &9*&a"063r&4fv6I* NQ̼j12f4?ẏ"Gj[-X)KHq߲ 0<K'-@s[ 2 gz}#;mA&5N?j?&?+a`4֝5{C1mVMR6R5rL֦5G7? <lYs:Io{0SVEm8_߱7{ظ?q~>ڍ]mZL$~ñfDSL;7.Vв˜Rr ip̭#ۛh"Nye=Oe M5 g˲*"L5\ lhGvMHRcgCAցmeTI < Ð2\tbT5הjj(VrյԍRKXx7-?" H\WRo=Ah(+cp#ןM;]U̶5[ .rVT,M!Sp@SkvTO)V)݁)7W)% HuL(G!BfG _YeYO)>xG~M%jemS NuOÉE@hܖAԦ}κΜ>iťh,Wo ~%~2T XG4M4nʲJޫ1:$ RX]M +e V륒\OQC@ $duOYtF"b=63)5b7cRՒ1bX>2P+fښ- 9)H) =gk|4r_xmD$tuͽL6UupkvXYkP"pƫf+ L"276(^땢{=W4vؙ|-D}adؘ`Cy = 8t{Ufzџ=O lPKODZs`AfݬZ(dF[CȲSFC.ơkhh& bEbg@6%`QkW9g _뿈_{8S:66l؈ .|=~;L ~ljD.e.yy=W_EؙBÅ?z/YMz )p ?0C5W`v@FDz_{헢ub[!DW2Fl6o?t( &*ע\v Ciu:9Yj̮(E%BHGtO;zȲ?v ?% p> C?eOWVۗɵY%6ɥ;vȅӾ,r'oهcLP40> [?0ה[ yc{8$N4FUȟri}!aO2zEElfs 2an4)ifY$I}6Yr %JS EKS^(?j@IP8 P @9~7&G3I5I5Gz/oe+}s=Q'ǁgo< ?+5ώ1Gcfh]zkйχE/vaD,~vv=O=GFA⎡eɻw]rJT6ltB:D3$"UAͻz*U Q?OLN>րh^dBSCv.@ê#I8ζ/8 *ג>NiOUuR>]=%G{]X{JҎhC;jk<\׸Ӱa? ji$ j- lx,P}n><3Xnԙ} ̡7&lU+qLR\71=a ̄M5w Y㦘/^mͱiLc B"z}cp8ZTvtmW"qeW R!+xȼ_Mov ϠZ\Oy;6y1p#CEY't<dff?ɯW+_6֏cOk#_ݷݿ㓘Ӆyݝ~{KO}6FGvXQLN`Xb)N?$475~_3N6?#ֺ ~u{YgW^t::M{wK2G>陈`^f%:;;`!"]?q5$|3+6mہkXqRzr~IHfq饆$}n_x%x黷Y ԭv`dRVqt+^ g ޸q3Ƽyg?c#pUm@@4:@k.331s\{$)v7ys l;<׶ɦ"nGjaQnES/pQH?%+HokEjj!HL$Bq34ʉ:Fh@SS;2E`ԵC˒#ISO9<Οpi_d\kX>.1h@vCjGTG# ω&[2qm˓%ߊ`eBɗG^UÜ#4X u6W-O7T +@K5YC\'V6,;.H%^y[A52kg\כs ~$%*aS)5c&L:ѯĬl\lJ&狋 DSj\tt OBTS6/#;Q,Giz CE@ mk~XbYY(ё\"0sdس#G)V;U6i剢=6G6 0٥-$_U߶#gQ2lu3ZZ<&Z|_.عAq$Q{M3&ݍa;"~&R[( X}}S 󗖐Ռe)?AmW 1k22? _6~1W4[{Q-{qM߀fȵj\|O# xɅkx j199~wOi|uDVAǏglz&쑘}]|7(Jxkߊkt pikof.ܻ1| ?5-A*\_/r@hWjMݸBo "${[8:'?.*!%vGω5ƑJ%G{nqP< ( ʉ@&6,:;#Sf&Ÿ!)ZNB{O{@§LmbrߢOQPp+P˜>RQye&LO(:~7sL40>dJaMhnm`ri<\s[;=&^]Jb]ى7ֹU+"dm*2Jjh*Gt=~u_eO5<5X@Μ>uu1DV'Xaq%ě#&d9SS$P4! zhN̆Ld5Tz'*rƗXi"gZ6x~C۠эCEo R(S%VՏH^9k]?ԇ<~}]Lt&Dߒ"ZHN9XS!b6|Gp=\;pgGI{µ,/`3zr1+]||uT-i.%\F@F?W\/c_u{՜٣9<-"?^$ջ'v Us࿿ /} J' k$<o2<01˒I㎢s,K8tӟO| 9{ߛpE ͢lڴ 5uot"N!_/s21Bfm~9 }73WxX gҀ "2/ MȤFm+#;)󧤒ɶE!g̺}@A.mR!(\e%@3_.cegH79Hzacx g;. ʗJ̚e+ Od45S:6T`BR2d]*ce+;eK}& 5ϒJJԿ1ٱ %W<3z  " M"CCZ5S<ȈYr uV8s]zL< +;:({(:ꔂ] a'T5%gYm, =8 L\w4wAG2I*tL^7Lt$oě(*}5,of97Ã@kn9xb6>cy@ L*TyBh塔lFep ٹ YHd~qIuO- cPsFut2_|8s&f<&!tDz}uu82,t;(QP{,l/`1 ʜwToMB ƙ`1/Et"H۪OO"BN4Sz=ɨQ?72ÉD}F{~}k? udwMj8ُA98G0kOl܆u@WEX/¬["I=^OBTsuŘ #座o~ӫtb,\8 dΝCڽ{~/t /[3?Gy~03S]sO,v|Gp3g>,_U} q F-- nێ_s. Nxr E jmmŶ\?{\<_=v]c=Ƌ^t.z{= ]qRI 䍷lَkN d'hO;]˖-EOO&&&g3~mq]dS,o@Ds FKCr1~dd\%wh*)$*Н "NE J>]P:G:LpxT|*K|H&#@h1!A1U?mTiebڔb51nrvm⁑׫bXqJv\U>m#`@+'f3f/ǀ_OL䍍YQ8hnB:56t]OS7bzpSO/^B캗!Bz!f9*: (. UԮc7eWH6x/mC~ r!j qS7%н.3:{RXL9B1LMѿ9D>eZRP\ g-K'G„,$ߊy+{A }BY{[)U)ӵ3 oZ/<p*t4@1pLjRL Qz)Bf#^H7Sړnn_K>(d(b4?.39jo"ُTfOd(R?#P- 5O4f"e&qa6TrRG%oXo .C]/ojȘexӻS3= hQٖf\tv:D rkt]$[<3mNud'Gqb=ֱQZh.۴z%k16e"7[3E|jAG9 s4H2Sh,gaDR"CA˜0Z{RÁ&fk=QC 5b'yN(\hlcžDz -H!+Qx0{}EBHX1lYgc3>"m2мw_&!g2({!bIsn)BׂD7?m=og>Ս/ee^mz^B4V#37Ϙ/;A׏+ʘ$cX,o\?[RBsK7>Ӷt-͝R}x@dJ˼ͫW?e^CΦ4v(PĬY8ji'Q'elb;q,YL\|#sYO7xX MlZfEb!0sw$ɬ rSv_S+k)RGvF"I>4?-X͟'fkGhԹjm7N$>T&ZrBT=<lj !Tɜ:RFHˡ.RroCqRBTd=-v{}.o`!uW])'0ίp^߯Kd=G5fD2/Y@"r61;d/Jyv-D #(&P=O}&fWϤqH >)#T8I–h?㕬:fO^ 8y]W R`/; 4 V7f?H+ИoL׋Paw5£8 TL;K̲O-Pll"/OSj5X&p4UT qͼOg.GʾQ,YO:& AraT a-Xec *MFg$br] (OBj$!GI_8T Q r1G&aD4ɸ*6|ڕϦP HT!3 /{eo,KL-Bݴg9?ήP:4lݓ?E2 \2'LٵX˪(Dx:sX {Y^4 jlv=NcȒ^, Z@ѳ߮pG2;9`Z%ddtdI%@2Lc"Ⱨ!g6F*wq-D8;刴lkӴjl 5Ԉ1[ADSTL<ϕ|%o+UF}44 K/\т#1A$uS,KtrIt#ؿqHMByZRpJ,3n'$Q-~v"X38CJP*AF&6o|NZZ:mޝm bv&|OHfKhF襰?ڋtbٟx@p@)Ln]cB@>*m$椏I=@N8 ,*[q +鞡z$-O~L"M=aIS>W 3~,-)lNG )qkʼnGdG\|jIcC\ޑ}2!z +Z")5bg<Aaj8 z(_hhځBeY^,CSd^a)~F IeB/&6,fWV0&:6x-HAu䠧? {: ly"jPɌ ̵S'-z(qJF{zo,TP;+V:7˶U܀{b֕Ȧ3Yab~.bWeI7Yw"f횼duwGerĬitx@$&kSjl 5P#fk8 zgAZYٜN+P4[QW-J/U"M@Ѷ&`I&YWDT)>+EWgm?LJqv'!k$1m!B;K2iM\t@[QΥjiDcGߠJa@XtbWU-Qsc*%I/z[8g DL2A"3A>  k [ 6yg ϛBxˎZSGv6S[?R녿oLZ/O͠ml`!t8NJJQ*X~Jʥ4|(/76^b;RrD̆!df>U,l/Ԗ5R"Ncb7 AΏM۲٩(SQu㗩RU@g{Ju~|D&TJ<̏yP9 #o+E>՟:J'ւ@q '>s~>Naж(Seb#p:,`+jC8.dEe)C" 3lP眣 EDlEsry #f//ٟ@) kK\ _}sZ;]L[zU18\}֦c5ԈjFL@W| 1\CUxO>D1oN #ŽIE )'2VFV 5FA3w?!9Eʞ"?@hqJCAش;.בYۦf%$N pr2mϼBiU#3;?/{LjwDHrr]=(%Pg[#w&K6 !K(-e[8uK$MH5 ?2P Hu/a'[EKVvl'.)~u!95L*U*+A@DHbr%PPrwf]Cx)Yˏ"elZ܀S˫ݷѷ$Ȓj1[c 8`zF"5]HsJǂ(%vÆ&B#/®P,4@:J Fg;y$RHBr".Ϥ,?4Κ q~,C쬋"lKDڀ/FшUKo\o+Ujdu{3}/Lx׌~2f`4TƦl6"h9Pl06YF 0@aA噪z u]kt`_2Zs*L[rSz61cIhA. vW@i뫴:4Qr=kNfc{L 1~BG$JW 5bj5<3 Wsu_.J**|@#S<8>NfdPnI_NrV( ]кecH. L#TV]Dyc8Ӗ0Idm0iA L k"e9xTfjO]JcP tvv-Y&Xv~`qp`E%hGz(;N@x/4# W0Y 0j Rz  NЃu]XJI:Ζe[2 L O$+gSx)G.$pSظɒ8]kЫ[+8S*g3"Ўl1|-ҍmHd03:( 󖠡gt01,g̚hr60i(CPTSL62'}FFF \9:V6&Lg{|=]ԧےU\ Ќ?m ,YفL6vlcj>ig9.ea#gJqVzRj%g:{ʘ7߇ky:c)V 5bj5f6AhOe}+?A2mS(]İXMmmV)eW%,TDv:"!mbdWknOow?>q t'@ؘԲ<<@G>bImϢhL5/YSm02VO*mSfqÖ# xOo8b)owotbSvQ`c@8.G+DLl*$?бD$`lTOV2׋m2q6˨xAVPU.,eøIc 1K(4 6(րy<_}FF2:4KC P{~,Kqecq̂,zK4ͳM̊%кJl6FPC 5b;8 @=+iaf@" ;Y,) #}z/y?Dzj2XTQ{+pccpZ&Lr(zlb[w))g9*d2ןdgzQPN7 Lq /9ǬnzX û024Ï%.ypOcxa*$qϺI<5ڹI4َ#a]kNE2"fO]Xm: HL$VqEZ(Ɖ?|l<-IKro~&Lrluzt%ȟ0zLjh0c,e#338XX\VYYl @͟ WWj@G@볡TI-۫nGq ~')q!Ite`w)X $g L*#𓻌q" .uj sP TCJvJSjkL>f&fAM! MS_ϪָO? ]miry yd!z:ÊEuƸxh8GC5 ;#`bc;ڊP+ Pʀ dڗ!] :+aPևq@2;ѩy,K]Q h\pK^(yc w(`%ȹ.yruJ"Mdiq-# xL3s{~}K:LhPϩGF"nr1\d-mWSiS 5bj5_ENCT(u<|r+i;2ْ=Z|?iGI:dkYP'(yP^?)pp;dқlQ),sz'mgg5P^I.;|i?٪oUF/Wp9@'#V ov|7NXی6(ʘ?/Ya 㯷Ž2fli;~Kau60\eg159qv rP$u,?!gL 5Y_!ԋt#L٧ ʌܾY.5 5J!Ml.jrO(!X%6f٩2fm"J}K:*-bs8vjm (5׿*Xͤ^g2ʛ|&S_9n`͟RC$l@%H'-6mCd\(wZ)@KȄ@,K$~jjSj~HWTDs-2&1Wbz3#\eY4$lR[c:$y*D<""Zц_d3 bT+PRblM[єU8%8(><-;P(#vff<06>{Hʼn(N>hmBYO!ҍL@sl2-Q;E͋VOg#靛A͘z'Y5`4ٸgC|nM>%g(Es1'"y_( n-L56'xe;mqN:S3x~kbגjUs] /6z*-P|PF1UzΊԎMj5PCmԹP8R/?9A$SV2 E(ԇq垤,$}Ra2Rtp!j2FeQT#C ~b;DρLа%m/"fA}JL8هdH CͶ}KBԍ;7NFU Hf w<}B{E9,_Ǝ<[|4%0Ms-pSO@ssr9wox|!"hgf111QL>eJcƟbYR=4?%*G&<܁eGM 7ҏjUm/lJIu=eە\xE)մ]a֔eELDd*cE%ocaN{/bǖ&F>рKf[VЧwcqr2`Vs^<_d>RGOFP Z< *"= F@}c?fGHM1Q~1x0X #yd5t.K,%(o;d`T)&l F՚egCj4Qge(Q<K, C5B\~> #4TQd:"hָxKbV!N`B \B>2.-Hc|"ftER}Q AowE" L^1P¦-!PQ~5,!Ѐ# ODћ]dxxhrm#GlYЖa z{h$e{1k03f| !mJp*p:m.#gvOcpGh͵btJ F`8IW ";W. _!1+L G*lPP#fk1[C .e΅Rp<4~dzc|5%dN=)d18e}a`=ar/ iByzeHTyU%+Kr5 scLA+DۻsP>gQO1m_e8쮠v2x*H As `͟RCjl {"@'r6 Hm#$n_ +*P` Zs}=6@1N,o'%4p֚aѮ'[YR,r`A<eC ?QS>ϙ@,`aQ\+eS7nۙPe\/Y2:d2dRqQ5.e#oRDЎDǞعk*2pɇ .P*'}R9ֿ5>W#APȶw9z2;[m w}fz0+Lꨍ"ȫв&DfsG1Q]$#5C攃dǮB!Ggo'|J3HXBXi/0>2K:gdq)9ϵ\ Ymdg Y7b4P 5bj5Kzp>^OBL65P.9f<pTKׁ,JQ{hn}P0%eho'q(墉8`Y-gʒ)R!VrYdEC˶SK#c}ɿ Λ*P!補GHcopز&\%!I!J /!/Ys=\*5ΡI%g)o8ǐ+TRxbS?vn[<>D>=^&UHa.ȶџRȆ{\J7<g5\P9KʁZ)&u^9c=ϾP{8W:IYTb@3c1$1F8Gg;IEg-[eȈ 2dl C?X #KP39ˈ]-RIBskV"V▒ I_m\D%sr`ľimuna-i:%͜&r~FtR5WP"0k4k-9j+ Lے|J Wh4x f{k.ٮ-YB:lEZ#aYFm0.Ir8v,VDnoYȰ_< 4d lPY@mJw\ʀt[1%( Pch0u&8. s^Y@2B.q`BR<.N{mK16z {$FF⩧/|->g^TPoG6h "lίm9 >Z[Z  MJtR4?DCz@-%ը2yh)W?-֐cSpT̉>*q53ǾaF&j^IPv~4tھ+85e<c]|O2dl 2b6CMx cj Es{*lG M$>90Z* k&~Dq ]n1AtA`  yOHCA/[QsМG:Z痙ݪ#%< !)MߑDXߨR0/rZs|aY s}[D}=d/\i8r(/V(ptͭ&{m4w| = _C>@g t{c)cG~P__n}Dͧ Ke.=]-DMn]!KlL idX g#Qr|ǤPp(ΧlRܞlӐ0PM]JXnh*R*}ḩvCs$,xu $:;'k說9#̕='+k*P&Ђƕ Njx<*X*RYB!.ՀTXR.؅@Je4x}Z 0:ܕcP?I&EL)ft>"r:م0fQ@FE>6Vv4%LU䓙%Gt6u'A}L\Ĭ|H-Kl[IߝD HMCooA0փ$jӮYjba"hG=ԇTxS 5|D,ۙ l:r!eIEY9TƤi'/t*ɇЏQ?2FR͊gޟg۟ET [H Sq|(rq xh;E9wS 0 ø#xP!~gVEnO9l::ul^y BnS;'VV@iP#ɑm""9#AKQ"H+l6g%j$_`O\9NYBFn1>YEw TiR\HF}$IlQ-K\|hdS|J* bed5YdH@u"eZH 4OiE lZ0n $!:I@R$5SSl RdUP:|FRnY~.sKZw6 (Np]ƩY'*vu {9װ24ʅ:pvcmK`m+`(&LG" Sx y2?rxA-t< $"q`ri @u 4>oL&DC㵀Kp)bxbH"컳6|O@e^NM+4W M҃4\^`G}M:0T̶,hf˚ 2dȐ!C^}0puJbeV /!_jC 4 T:Hu3X )#JH]Qh QX߬y;[Y`ԓz[LEA8W,Ն0jCumE>[ "vCȿ9V6Bn..r/qmQجk`j؇;*:1<)~_|à .)NVY(Q_zS6.Q߽'~Gv6QH&jNT4D:AK. BhIS%͞:rd4ͣyS팕5s¤}+.a K'aNc>,!#f3|{9.t[7?|nv+ mj.c |X?R"J [[x*~Z1K+E” uAg5'dcտVG1 OX9ڏfx/&hpqP~N6J!O(x+/xeX6GQ q+\[nYVkΡ|" _DA v!.yEh1 h!!"Uzt*!DJ2FcOi}m&A*Ms(*bQW7=.& "d^m&vk! @40[5S>&%Ƣ# Op `DZ3 R'R&C 2dȐFЖ<"+y,k (Vnq0"- 5mzR|PB&1k;Q ۄ z()J싌φ[x |^&Y} W:wBЄZJI3٦BҖ9tR$1֤yvTLz]|ȅM4 |,om>iL u`B\6-9=Co%7V&|8Jmp-%):?Rh@ϔdC1Gc՘Atɵ\EGQocr8;Lح vX4Yk#*:AVV~> Eؽ]?Z…p|yn.x[RbW`HQ^VFD&͗E )@ nY`Mpؗ ]1K*^ߛ|l/@r̴"Uɢꂀ3 1}+bv/]XGdbf' pZ먖"n|,vvmK:̓۹o JRVL~vESKZ)-H XJu0/L23Ɇ#MXU4e}|a^EBvw@"<,`}"Ey Yngn*zyo`;&2]si@%'+l!C 2d kύ;6SX5XAL&š U }()Y,(FBBʚG'0yBV^>&8 @SJW:R<WCҽ~V i]֑_bC7c= bvs([D~ݏV;nvNZϾq}CŋVrhyXՉ`s3\F}#~|di>e ϧԮ]qE?QppW>UQ 4ܦJA-t0Y^r?tj.mRSIZw/ 'P#غb %US >07)"j;^͠Do Sl) -|JHl2N NS`<Ԍeo _Z)c&Y$bBPy!RC@iä*i+Fl0ecj;e<龽? ]HNeptA:%y fdbF=鿙pƗŊi AYG7>Gc.K'ӻRQa}CVe T< K}w|dED֤\- ?[~U>)J #A%r6sBT0R*VS~HT]!as^L,/ 3+6Cd8q`km=HL66<L ҥKYe"c) 6l!C 2d h J!M9!:H.b 6H-g,T(<}1],h`"g%1H"[hcQ UOPbV4U|(J~TΡ$$1hZ{ݓzoYZ" W]w~mqjeVJAڦΞcMn>7o,ͧ,\Dq|Ed.ŘO Oz ;|0+ӄKS e%l|OwP>ܮ*1@3U sn(`O\fO!9t)ƙ)IM@%wcΉBUjĬSB,!#f3q2.FeͿk4:E[`\+@ ++<Ln@htI$3S}a06h &Hf 6VZZ^Wc4DY}O-ua$hDkdI.&fYx%ZNcMI514 ׷V7Zh6lmo"81+ |3W0\]3Nc~m#muW%)+8.Kdwɫ~e]W? ]'p  }(473u7G 'X0)0$!2/yN P`QwwMH/E!?I%TF ߦ vYĢlC\fTD$> $C 2dȐמu( t1J6z;`LCJm;L,ͱu8(X5QKf{%R,MhI`KF8R%SaRJdQAb$V)M%@sB0?#l3ځP"#]_LOTP.ژmnl`lHsD# ax s;q>|+]Sv|j{Ɛƌ~rlT}L@h:Tھ٦OCyM|F,+6:rBU/(FU yA:eMJczĪUIWk `7$9/\KۑS2|! _+@X*GtȨ7H/j`&b 3&E5KLR=Xe,5Wyi`R1%:tedۓxPbD/%JƗGo*Y[ua;SЀsrAαޖ%|_ <_ #LT !uckk#&G x3;S8ƥnȊN"E1! hIYvb;(ziH j *m0?NYm{ȨǒZC h$BMEBЩvۘ:6|;PBK6z'՛kʺ^́7yE0<10@FݳdȖ%2dȐ!C h `c'MlJvrk _\$ CL-T-tu܎h%"wbmr|.*Z Z0[*)\&X`F]~Jl4RjoDfXrjO}Fk+ =Qz*L'H'$f眝(ž[*ڰTſ݃AE}å[ȹ7WhZ6pP U{/<,ۊPYvЩ]@O얤<{bI>^$JY]KB+Ms(']Ջڼl;'K$9XI> 6E~7Χ,^cg+(Qav/C+L Z-ALBO/,e| ', :yQn)2b6÷ *yp!&:"7,cPtgH YJG!L%`AdL` J,H*|Z)0Q Z#]+V%͋Aɕxpq:hI*j)IcJ P`Lܴw< PՕ:xE|`L pV~ǎ5۝X•Ms[hڨqUivcl|^X7[|k# ^aj,˕wVmR옽PABL|jed\nܗ~iT=hz]S*M.g,w3u~e9ًJW?l kK[XY qX9d?M`鮛:kBJ[rMp\R c92$C 2dȐJx = `X-󖽂|i4w=-NJIx$HI'b ``e,f\_`K L1O _A&mRA $I-L]zu:Lq@SS Ym1U0=ՍWk$-ĝ'pM:PN;&jww©eqp c_KPo>4rٔ}|Jt4pwe)Ĭۣ6<`|UZaV#MhUK &n2NSBs Z{(a8OH7>aami+ k0z-f])! H3|I9J!fC|J%ɿf! xړ1,]8s{*M~':*J4"C.0\? @<~xT; E$DF1w҉4?Z" d֯Jp,Y!3o 6junuP,Z7 =}ø.Gz:*#fn1wP-E(KV}X,h_٠yDA+.YXZd+ fPYBʒj*D:"L@GJya,Tjl>09h e '>$Ml3sk->+7-IKW4|=m):!Ʈ|0X&($PR4l%E8lّ!C 2dMK20v/h>"<ԮW2O H )Ler'10K(UY:YцXūf ~+oܪdAl!=qsc٭,CZ <Etv6b> Uu,YjYf+ #!f/˧d:Yl;ʺ@E˔".-J zJ\ 4]N :N]ia1TsmV*l qyK=ڀ(}fVX@A*f|!@f fI餃ej׵L%fQs?ybϯ`~q vfFz}:AࢻF3&h)^ski !}mޏ@ol}a{R;M]͗5cVVR ) 4U4 5>n}sŤZiJTL=Kiq ydZMմSV+;0btz[2Q],\i_uL'~zhRCJ}LIX*L;-[`Ⰳ~7oDlSZȐ!C 2d_x/{O%gӆ`\~NS 6*i*V20l]Q)>i$@z\pVc`uh8!TEMyES$Iuf䳦狔})Ǥka"ut1#34NIզBjj~G8qbMxN lZ . !,xT06\B)]uTJ/gšn7c94 vrXI,CYO: RuL0p7݇'8 c6h,t9,iL q:h%v.P&d,)0!!2FC>"" E9 vF)+$"͡jVG{WiPY_$ϧtt6yҶ[3-)Vqr 3z5K7) .p,]DGtnvڊ R>! elVTH4,!I,> ƊkZT!DP% &n86G಺F/<ľ'yd# Y:[VR]G喱Ox{0 JӮYoʀx0)nn"sϐ;fi4I$gJU3Q(uSib祝p6n԰ҊYsnH٠͞/m)2T'`hD"cΈj{!C 2d-3#Ĭ 6śvu]I}8 2ⓨHMG1T}l /҉X@h 5& S`J6Q1vQ^8!" vTy`2"TF;d"{|yutҰc?̶E q;8;g>+v nVfZmzQG2S''qLWQ*:PoﯠbkBå>mFZp'#ZD):ͧVn zb4:Vg$hlo36hjH_V~ɵ$ŝnF+U8 Pź*+5KFm}M`սTBKYeuzoq=ɧp SH 5㿛Y>%CFfvD7wi+nPVC.|, V u0k)ο J?-z)h%d`h*MM,%HѬhl46J~A,#1+'\V=&}^z:/c|3~m c q{XXw}ȠZ zmt<&u ljD+^<'gS8wy&+IL$ζB$' l>8pOqc8 :Ηu.@gDOrikfϑ@BFrJ\tX6nt'cǠ[[G+[XPEYA2Q440n*5Lni+3yL[ Ȗ2dȐ!C 8`CAQ"Qcop&87*( T,s"&N-^~SV$٩^\;'_E{5ؖ a`'|Un 'JHMϧ\Jߎ|J$G.P8Ր|ID[McZ.A'rA + {ԇ̤vnYm ?E2\SҖ%\|c"MT4MM4)mEQHRa 7gtŦ,!#f3|c= `,z H(X2*,BMB+:9 s%ata ^RD$#Wڛ1'@*M6"$ !q.TBR҉L4)Q5z9!_fJ RuiryE 8"X񦝭Rד#}Pqf_UqcXC:mbш׷j`a^hKg:l{3]\ "t>fnv0v&O5[k/"/6c Lfт gd=Yf RMjh՜ T*Jb$016l#l[C" cu"%}ۘ XHT #iN%߉'^+“B8C͐y;|,Q$BpYOi h~ɵNQBȪқ6BPЦabA1Y>%CFf ~DWl`;aup]Гt6>c< +C-\pSD \PE"B*gio00D_bVi] 5u~Q.bľ$`׃_!f0xt Rw@Y! qzl_Pp_YZ#mw:x0:B6Xh,mK߉" qVXPO wrz,$fn6cbC wm$J9'9\V *' Hd eŔ eFhu7]:?4 7WVF.԰[S"ǗR1K~ ^4 >[j3-`Y{6z R@GJwb3[2dȐ!C 2| $r}Xnn!!A(H%/b5>%%rNg%X F8f IcabX;aF"[<4$hubguI>Sv;j>%o`¡w.`bPi`I&2H9MRE< 2Z%ctBT;̧HN\n|J MdlŵjG$1A?I\rK`|f/sۼ,,dx!q 2czInv;0m0~5"WSu!xH)X%< ɱrgmaK+ <}Srlje|Jw"釳YNE?'T,&Mp+$>'V?8fD Kt dbX0`C$RGM@yQHxo(dL<cMheJ BT` 8_Pp {E;G dJb bb#CeT\ns3}ӟ~, X>7a{O-ιww^+ۃ>Zl @0p p*x޿ӻA IwS'7SQ~rh6U}J"P0z t#>օa0f+Y$u"q(:w;O.hf3ĸ>MkO9bT{8g42</[dȐ!C 2d=!>ƺI,%aoʭy8-0FyBXA}Z;doȩ@B3 = Ɔhr;k0Zꃙ.)vs{bP2ϠddA 1Rր8 dQ/Y4ǑGx!C)r8}]@0ph]_Xt/Rfx?Ђ12NA)N6 bZ"@ @>@X Nz_ ǣD,2h>6焹X$*mhœ|POJo"[kXLҚRHs\cNlzC%# 㳹$"D1 ˧dxl2qB|@/d@.i#puHH;`S)} g!d()3F쟘! ź+ MZN>Ut C9+fvˆ;/uC܉ʍ={ˢ!G7>b;C˕R)P .( 8q&svovqd1MDx6Bt<*nʟzֶCYeCouUrGWũ/~y]W> 8:Sua)MOφLD6oD'èL@+V,O|qILpX~ףS% t}Z sou"٬N ROmZInRK*uUN(M2G '*%y2  FN)L#._SbN; RÔN/jg)MJ9B/| Jc\|1Վ ՞P0qE56ɽS2d2X{ړX XN,X?r +H@Q "JB[m$Cwspi0V5/?e%C-?|2TiRs`Qest2Vb4b6zW\ T)M԰;ybrv/(Q)P(P)q]cϟہ = } ؍pl[ݸ> QD{Ҽ\O2t8sxUPEntxՏ@}1\"K:9.uGg{Eh*$ j$euIyBNFYrΘ&9kO 2dȐ!C=[cO@NbE< kqò!`Ģ93!HBfj-4#[9:1U-吷#2P>@@6~TXB Fk.::tj}v&Hú$|JՄȊփ{c?̶yzRLV+UKE E y #-$X\ix0mB l9(,uEx|s /]> s>mg|IOc~*+8vDoK04p5) k_\;Ms0*Nkm'4t5]9%B E~ykb6[r1-<6[hhr~M3͏(#Sf,ح肹۝0@]WK_ħ)hmWa3`#, 0 h$UIh$@ (!4DYUQq^m1 F0^ Up&1kƝmu>=\D!'!Q"IOxJ}mbQ[˧/=lY^EXG`动|u1+s%{ľ伛uX?MapሕlpҿI5 5 r)b. !Jp@?QMPcMNЉ|<~aV=r`9jyJ(6˫sXF12U04,ᛌl2|3b8.IX6h  !Ah&ᓄU RIZ,ĵل>| HBO/s&C"_bTZ_eJ_72h@q/;p$Ahgcqbp|:Bv{ (ƁE9-⅗c&* ~#?q,AM@, /,9_BY̪?Rr_eM }/],TPx֠ܬ98/J ?XN*TJ*EʾrZbK*46 ŬuU B0э}h;r05Zs/ҥp2j6+T$E W.԰Juݽ nf/bA\{%];ML/6vxi4;9!v}d3!c<,'W=5QB™JJh/R8lXӉGI@ Zz 0<9L1h606ڭ-IܴbAc]jH>9`|6?1[I-9ϐ!C 2d5]XB:up>bC7j\L}1! (`hK pCJ`]2L2B, L$EL:<SbKH #^( ~.]s0ߕd*,QGBV~{0?*:k9NJ58.ql ,)=^ȒN٤=ܻ&Mvpø8Χr:{vSO[=K:f|q_7=jrLQ_wQz~POi!)+%ji2N52 .3[jRl0OiFttBfS蚍2?n0 e |JP)i]7|JoV0Bov1'Uؼx.(Tm1AKM";=YB2:%ebxLv{Ay#&ySrsЋ-@ '읒 $JS^ GhGIt!uY 9G~pQ|?5{._+o:xE߸J~k.to¶0G)C?&b0IZ/PWx k82~pei/]>H𸒳S;w  )+='{je%ۅ~%.a[ɡU3*< ,mg() TrWUuKjaC@ Z%}m ! $]F%v9#JƂqRK;龴bqFJº '!>+D3!C 2dȐ /uC`8 v@ۙ\&}H_R@n3T.U(!J˘1JݰC`2qf 9A䬢 9Ad:)Xo!}rOgl9;fs ~ƕ;xy6¶|ԚXWp%_VPyOSa@Q; >Dleã={V{ ɧM)j)׊'8wxkЦcGQ\JL)+]ATdl-.5Qˏ${H" çwbH-& RbmC6E4B? ]. GF/v3Χܼ Sp&k:'Bk% iNJQss)y̞,˧dȈ yݳT)c #w`s`܃!bSh ;9Zh%Y(М_BR{ynQW=e[S,LEkX͎[!jCr 7v5(kO'ai2GB~FI>SbAdb@ B&1:SXn3{,'ADlgȐ!C 2d0D%*0+K0.ҘIZ.s" H."@RBCН1iQ6[j~ISN?EA0ZD~YɣP'adz><$UqXBRK)/sы!ٟ{qn9C/s/,\1EfG!D"!19>?@m zO#Vڥ)\qɧ0Q8BZ[K_dZB<]kABJ /M99q~ ObbWǽ&K$ 9;SE6uOa>ևJ0 x;"m,ai d; 2*Udq,L!yHUs;f?YpSp\ ` b)2b6Cw&&]'\`|^cJhEgfTa@ܖj]D@ V`֤dԖH&K6Q P@hA",`slG3ѝ֢x,e dg $e5٧l\cx򽣠řu; ›uw8<6| ,挃0&f0l^ϝJO| qlE[pg++ `A߹٧t&fI5 -{_s+ÆUi/8ƿ[@%j ,)ɠJXH NT/\MHە';ۛ\Cj &eͺ922ʒ ( =*ow2e. L&)\~3dȐ!C 2CY>cE( 4A ݣXޘY50f$giQT$gTtԸ\0!/h:>&c90RY77{1䜑0Lna_h·JgsEӣYsn(f\,e@8Wً;o.v&R Ĭms|# Kz 6jNA{B9ql$brQ :!~^ǃ]Eˆ?AkIɧ|?ODg3wǛW^FtP)c~I0K gswYPL7Dg{:_h{4gW猐,S4}#{1p&Ʉ(%*7jrPF՜/1o7{IӼĵ9- )p1u $b=coS2dl }@IM2;Ur osLQ+Jtnۙcy0=~^ZH .Q"ǫ}Cy]>|v|l`tnODh]^7)MJ72)pGD$G)Ǩӗ.l=m1;5ZOl2|+ÅiJe!6n5j"@&B:@ɾ20PS?) HD߅&J7_΂"](WDY$b[H RQ+Ldy%ۍ>9`O{JPE$ ~g70P-Y8}ZcKX^iS'09^A֮gy^ y잍apytUn DuʈKaඃ,JN oH>;s|`}W~C~#(e'A7\1|!Cz^^+44" JdBVsn+p1utR҃s*6V: H#ccʐlW!$j;,Ǿ'.+y2XEH,f'2dȐ!C I~0$Y,)~gPn/qu`\J;b"n|JKskXi#Zz_c7Kb% V6fybL O04^ *uRJB ,[ ?+,dv@/8FS  >|DVH 8J5!%# UX~Z] t|=+ n0:]y|:O%Y b4=Z%K9؟w9˨-ArQv, 4-q}aax-L1=^Dz7+8y/]}jBw Wk, "!:^0&]|+^y-*pBwc{dlDpہ _Gks o~/W j76%d<>owC&Q~{%Qug/P+/TiP|a{{hl(Z7 Q! b_x#>?~&(!K)kI>vSvWo`g|+wAٽYSdpϟn FէDA\<]Q$QSI[jFbKPl,LO) RuuFZ_i=bףFtC>KVz,䋣8`Tg{(f?ml\z!5Ll{]_ۼ`uM@Jd}֝t. M: eZM:b,5n{cpsS0&kXu"D&yt3)|PJV"9Ϩ<Ȣ^Quv9&3Pcj&גfBtȮe?2dȐ!C {?{0P V8[2l/5nPr#S7*|(I7yƔ/`_$ g)}!zp!fpzn<5E4DQľڼ]C?xPw 8q:ڸ,;>DZ-ױ09^baq7c(?!WP~Eκ / zaЁ)cǐG&6.FS~u+ \$G8cEϣƑ(SI  O1nhNIP 06=SiN{'ɧJ{KfIGD|Z؞<%mҮ6Uq8.ǸOsI=W|J͐J "O>M'cM\M*•*Q+y"n'+|[ j "cy$Ak3uR"<ڭm UQ2x;_]WY '@?Fp}7; H~ "^8WI? +ژa?mB'77_?04 jLZJZ1;1VR`y 6jM|3Zs>Qݞon [W_Aw_ ,x}f]=xDz\B#x|Ѫ/澓=g4n4~H+pK4Eڙv!W0}l&@XIF0𰲸6!I͞-ʀeV(^F,I'r'  $瓿(Y͐!C 2d-Kx蚝 B` ,$0)ޅi,~fhUǨ͌6F  aX4gr^&|o߁腠&TJJ֜cb>u0j$ >ˀB)4 xKߴ?'0k2 9 Qk8 f, Q F&+A`f Ku}r]#hanQ0'>Yt^ڙ)kI>%V}d  )'?wϢƝqĬeǰl m[<ݬSxU|=}['fDl}2Z7qDNlcjû7$AwLr_?@^Vs&;F]ރOGQ{Zr.iu'Ķ8ts2݂X[ E!j+{c"u%;ؾqSnLuz.Q 7srO, cE5z{8"(TH.fynӡ9Q <ڍ^O!=BZ_5Dvz+=sAۙ~BE.̔g%9"H:b@=JT*c6V;7w[m{^\G5E(څxeTH< (8x,+!f@#ࢫG~SZABU>2&]xm_q3i燬HH}.wʚ" RR rXp_-e O08:k-I*UPvh0URSF%#RdQr}ON2NoI$Edap )pjf 2dȐ!CoSrc(p m+̝5;IّȘ!r &Jx* Q{+OtJfX8_08"p]hc4u&ٵݵԂlCܧ=̱8轇=< 4^J7N-}#}?AF|t:- ٘/b{Dž`DbxW1=TCJGP AQl[[ò9Eln1>R_7ڻbhėƷў#kΧ^Gc[ɧǭӋj@HA@~%wҺaSǃc9/"y4^hw\`."ǔ|󔼟19o4)#sIkUb9|k̎rNgSiVOryzOɐ!#f3d{ 5H` jT_#etCY( 4(mJTPV'@L}rb\p f:6 nR+YI3!X EKc|NĒ /eOwS(T|ꎉ"/&~\.VUV*Q.ŅZyh1 ..\ ?`6.{ƆJp"!f[\^?w K W/ŕcoG%^ 2;EQ.s+͎&[C X '{v΀BaiK 3jãps=XhOS+^9 X"*E/|&eC%d՛P96yP4{R@PӓzDd?=Y 2dȐ!C ZO;ԫc5u@m )"~c3٪H5 6XH30j 7w9%Z=Qv]·42)Ѣb#9+Cu9w}'hlgw",cpv)K(V-'N =*ōM,._Bw%Bx(*ׅ؊8ܷmfǟy;8ޘƙ3Gց)A;υ\$R}N)8 8ܙNl'>=d,OO9oaEq>'#q>L$ (uvp*7|e,jބdСt‚\oG&%=r@PFv:%k#˧7TQhdV$`%˧d _f!C `n6*/ZgP D%L4p0(rLZUsϟܮHo݈ A-Skv 7nɢ'rM#AM[W>y]àsP SC,,& bd2txGRr-skkW;7 .>5lGa4sqZwvlDž]mKFacz[}dw.E9ZWٿ("D6&l s;lKsOukCX+LQ]Ṽ#}(UN X[Z\K'PW@HHU d2Yc덱W@ MuTCgh,.ض*c(B7\d?2dȐ!C 2{ ! נ&DDL=S!ӹ&ޛYv\ׁ'}ޱ !hF48F<C{l,4-QI$E$J"EIwuWUwWU׾-VxDB*Otm{Ͻ Ƶ4a@#mR.D9(l\1D)%´x6,xV{B1]Ͼf~| [-]S*x\ET ][j ^j"j1[Fsb~QL fR]^EK߇x+be<5"| 9%Q 00+Hz'M8J+_,:| $r˧88P*_;`TMNP).XçMt R)%^DPF!HHX̆^%>AQ2$Q, ws-cf}h l(YSjã?* !,`2_Y ͢Xţ?9R.**\)T,|&DCgׇxc_tz<(k ЂjbԚ9|MA;x( >^B8pɘKiB[]`yrpQO7*5H"nga՞*T#Fwuw'vrQǍ#8JuHo(aRheIޓ LU*SdB*r*: ˖p?%NO {EB $lU=0tFB!AuY,Zt/vA<ͨQ#5B,QH*^r;+5MgsNdҘ<ξ'PEoAG6].uJeT+͟^Z!%}%la:Гf. vdڤ,<1PD㷿]Vp(^<Ȯ?EShh;N,'KLVMxry~V{}7e;r}b(YOQQ4ʣX|)<UР)ks> !Ie^B,iǨjcKD) jVnS`WupV xM2aS!3$( JIFV@ڂt">+ =6P6J;y}Cfcb|D@'_LR4RɮPzG4>$}dφ⛢נr=^jB`S-J.[)J+ʲT*r…f=`WfmD22s7Nً+'pxzeb.~ܣKD̅+ "L ~:єYy:itU8E‹$PrY[cpl_2:!n1srX7XuR%h:kk~PKA葲,*U Hi~.;<X-2dBNP dR``[z&;V3ir.vZHJ-st.vRk|ln7+jy%[QMHvl綎D#T1Qǒrqy/[Ac3w;2\KI}K2y<KRT,T.R̳V%l[D5ڱu4"%d &ȣ:RǞx}xQyw}di>s$,1FR.3ydfOrtU8EH^ !gPGEKDcK4j˘>y E}/Q2V\!oKOOx3>H'<*fȸ؞ *%h$9M']> nkAvAiAbRuqOb "GC䋷^s3K}5u~B@9f/M]VG9sr=DSYkBjjcQ[@Uj#,f/狸 t 9Zbi݉'cqT8^3\ZuɎ}od~,Kr)(K-'=}-bn9@"n,2L;8r\Px_⭢B"#k羌blyK?/?쪴WI'ۛ %D&Fҏ`hB`lw?q#;EX' jh@aH_3=@~Rf.6ϭux_ UD@sBuڃ0l|smc %jβHRbiw $M2fEB_G$R2JBo;Eic!ҫQ g r2]P!GBKR!h XLK1Fw4U/Xv<)/ף So :-oP6䏍 K"\P_OάT7_B>+qbZ~E=%N qNsXԉW0beo?w{#L/6).5[1DzLIYiVgWHsЮM [ZUb4Sd|J"W r3G8wfZ4BYڤNmD)',-Pg$])FB˧R% -)a+ڻxD=eچ7" 1IOqpxg(88\>rnYPH5$$$ saU5"L%&Z" P#iGňZgPi݀UPD+b9|ձT8x?݄#HI*^X!seOcw y"c2uqΖ>_T oSonk}[VDÃ^vz{{| #yn/xI U>LNKL-D NpɵۘgLV2*;XW;7E@전-ߒ;)upx0> )e ,atRO| =x`=TȽ8q>ʕaxI~c)6lNlh!ZM&g Kc'<.NY^:U%W}WGkJ[_FLgd|| j98s3 )תxڤlC2wGVhط5w.fV#fRND5M}8s7Dޖˢ|*SES>՚X~9 ez{#>OIPM3u$;ET#`߆wV? γ-bLUS^L2N}ea7м-}aʷjS',4"WFji(g d[|#fp*Wi2x2fD"%`F%Rt͗PVM*лq5IusdwwVЪV;h6+i,! D&_Kk`69 /ßE7(9z'Lv0 ʋ X__{ pP.W-qL](_yx>~Dsx?F!@cNI.dH$EVx{W+[YѼ7HKPcec{PctE*#!Ds>))=ғ%Ho$t7|kB՞THߍvzуL6&ey'ϕ{ ƺn V %,TXUϵ]Wi섥$L34 ]T8dP󆠏 =:^$h֧u trOW#BƁJC  $ED௒10)q(Z}\)7LV<@16<.ղ^~ls:.,ͧ<Yh`< MȂ1 d(_Djo_M)^'ަjpOb|OO!)1K)L6_jZخT45]Q-@Nź v6}CW_d3? |#f~+yYj/ȚA (nwZhR)$DIPHDFxĻp ?\2#.54h5C,2 >2]clX8Ǒ' &x.w}2?? x^ܬ47<\wT0oNbl:vK#{&tkbYRxR,IbOZ[ex?nR,e^>]}!ͪ{"V!c%t499>IHJȦ^']*Dv -k,sy" %{;Q(z\dj#~G8}ă|e@jQ97HqشF1JꝞn?]TŦ8It6z-%ji## jB^xJv Pd|W"kBj0O$p4D*Re> O˟0 VF ly|&S(e3c1<x{866Qj+[CoR|ʧZeRCʧ$ihS J NYlo /]S:ecgN\@Lk:&2 gH_vhNErmlSvJ)Y*Xɫ8 ``988bN931ˌī6'EZ4xqYRERQ#ď.+k"d7LRF{ _ȣX ujcBl#i,$Xi.nJUjlCx>H0@c>W^Db~lɾN `rJ!DL<|; dМWLqɹh+%2"Kl.6K]Ƽ =Վ! p`EMY@)425IJ@UBnxr[ZMYhڑKv7 &X M8),FA0#r1!BzQhD׀RE:B1Js 5A!A yr™¤}8cv!vq}ϢmV j5Z1K_I9*izDT4._ϱO;w=hHSBkS{b"&vnL|vᆫ88HNG^ 3\?lufk=&C"iH0`E~u'bDn;ucW MFHIi!zR<*]`2*WaX$TYw8K>>U^CO2] Ot#Aa{X6slq8888888888+!0V#1 %INE ! fBƒqJ:HBk,/@i;i)Q"!s%I,3 J]~ͺr:"YBmsF)%tmo? )H?5^vPk67sz駟 8cXL;1߾"/Gx^\k`wÑIH| c))Q_P[C8YX-$3z0 ]#`ܷt’ 6RX_>+H)$UzQ9;feI+TiFMUjSUd,ݯ7)d|4XߗS|û1Yw `;"\JB`ddv/Ph']Nth"jim%@ Y}s?H5e jShb0#ޛFiW*תNvp]qPW Ꞡ3ȼY,5<·Oӓ_8w{y@.dY\)'H?#Q(}w=ZWԈOwae.B 1T09ỊK1@'2W+ߏ&mrQ`BD1vzu@ﯾ"(Xwuy'ϣqFf'4UmVt YH 1$;PVuwb]pqppppppppp nIXm$98ZIwզfUS -֗S4Lש^r ~pd=1:v0l/@$D̒[gQ}vwG.< d{1BoPϑBby4Ο>C 9J|yxZ#u 2sr~v0)7\J)y( Y+ yLE}3 ܕ>Tյ+io&fϯFA ٭9؞N*9Zi_3k.:f>p  Rd( !pQ%hwvڪj?J ~\H,R*D, [L,V(*0g=G9l#I cŬ4]fYɯ?YD+?XOwpקE$t$ۯN䫷M<w!@Ûud⩯Xˬp!K~ug8$ @)]z@`xn#Jޜ\mE8z M4>D6 yA/g,G%0?g]AW_/y%D0< @*>r K5D)$N $^"Ve4c V9jc:N6 gdOs=kfn#-uRl}\NENQՑ迂?8zMcU:}l+NZ3k/>sԩLYػq1:/v)F d&7\!a"_Xڙc.$ɕcl7ɮ|&c>z kHu%C2:tʗOtؽc|ʙXoj\h/ T~+)Rd>{''RS=Ut1iBt!wpS}0?pޡ.#l@A+i hz]z@$BOZ#r"BA [P# `}uE$AI֘-@!?k^VZwZ :o|uxii%DT¡o{ڿwyXD$s},y> _#G|uOW$CfAkQz!g8vX!4*c,DKs8{z]N5/X| d.7Km@\8hȱ-F`UЎ"F+MI8888888888̱10)-6~@J 4d BҘL;%\*''&̉QĚ>q0f'mlL6POQoj(j+Ϩ1DU@r)?\-[GfngsR^^yy?8P Xm@SӳyK¹\s=x0m(~_t_hI#e*J3?ZqH E=_ʒ춾J=)$t 10~QAlkg)gqvrU][~WcHn01F4b֚o[S:FP`-1mNJd̬m<˧88gupx``LqhEc"fՋBD`FTOsJ"2%.YI[y`B_GIY*j);!i%t%щt |dl`HĤb JHYjQt9mi׽vg19O%# M:.|c(88pUA[62=r)Ǔh5SU)B@Xx/!3J5g&H9Bծ~H5KqB,'za+Yj.l"C\tvtq周^g7NJŀr[%ƞ0>q27>{=ЙǂI (O@~AR?Y;hg3Ĵ(}ݟGNAi[y{Dgs*)P *Mn:g'TNGP/Jȶig;5^{{Pئ"mCro' 5A6b'h5EqHC ߵI8$@s)9Z CjO=tVQ,x0sl*+T6!R7DCd*حp(\9pXWgW-ueN(k=N/F}3K8^ŧ~~$7XpUD*"Ŀ 1.i_A$HΏ^[Gv*$η퍚 >qsFirE򧠲t)_i,6zVbQ*K?]G|F {;,DtG:889nc7A? y(<0\'qR) K_+rzOPc;1 X YPPR9:Z图Mb8/BƂ25d),@$R@c3Z1jC-apPgG'F~B|>2o~j2 UVmGԇdH^{GVR* (fS~o/D6ߟP!UIX8WCiw&M 5!c؀.#=@ [:ִ;\m9 {d7  *T=qppppppppppP:>0WQԣt[u00Z|M*BŬJJ:*IC/t^kʥzgGg2`D 7f4676^&_9\tǮFK+;;{XޯTnrǞ=lϮ*/n.=]%Fځn<B/o߆ź q;ÅdD|!pmX$9 (88?^`5?!V򟍛D:z.I 8S;U J NϥMϐV(a,8CW`ׇ"+i#X[^UTˆVڽ9$9Kvvv|pd/p\oD#6)+Hٙi000+6k_|{C:㋼}8y>ΐ3S~)3#$ZX5T**_'&}cdw7J1ETLa "$x'V!@ 4PL!()-[W~Z w^:ї/Say)bh~d~kw1 AM4gbM4[3"Vq,1!LL׫D03?`(c3Y=;c`Р=m1 IQ8%Eh\ClDOy\6,r/f`X(b~~o.(mDB,? s~fV羗l4$_jFK#i~NM|$RҠ*]1(ɧ -˘ʧLXi/7O YS>}j\5O#IS3t++U7X?MAρ٬|#f.;as$9f '{@"N>yxzU?y?;)f2>:{w"ȌboM#6OQkAƲ/Dl_qrXxO؉fglԑǙ30-9961 9Ns~`޷3:%L/1@|$:}:>q&sZ5d6Wջ˚:8U>6%A@"9w=y:NW2[M*D%]YAP&57H=ֺ ` 88888888888lRN0qUQiI Nպ E*bH# Gn(9dZAIGJIȩ$+Q(TJvF{2 (9DQB%MR@-^b>\u ?ёV|Q/zEc V {(ja!)ؐdq˭w %nlvf%oz@Nn $ x$!x_2KZ>FlzG3ёS2$YIM;(e9>:|d){mjvt7Nr/ rG=}K O^˧888b ) ` p}LeD$9F}`R,7tb /+艐ɇ"$gЍSPW:?wY䠍`cmus󳀔1t `ƢF KF'ͽLDuכgQ)g[7[(p"ۅ"~8=]\{*d O{ o_ !gdzN|[Uu'kۅ̜rvV74x"BXJ'z1ZO"cР?d9vAC-P'1s2)p=h=YM*kh5O ldUQ]BˆiȖKH$Ž{GF/@ӃBi8ˑU2T!!!`ue Rs4ř8,ScBt|)C;3.?᱾cuog,86v71!>\> (88\ia$ fӪ<UXRplV<@ > (QFj>U=#1HX7%o,W7#guY!tb7g  }rofťKv ql~[g^xX~g/{3w3ARxyxjd`JQ^)Jhd{g,J}sUI"[wD$dnj}L,MU0;FX@'t1V&q"eT7aRIPN$]Nu,@:h-t C9 DɁTΤUMp `^$ՠKҮPIіwYH#j"{vu1IEY.*Q2N/*W)\4gٻ?dPKEqbSh7Y,ҝRz_1py\;4& lz{`Bms0y$wه޾ř嗧N Rx/p_Pg.dCI::bg穾RYQyI,C'f%dΧ}NM{Q7 ̴<]=T8Έ"ʙv>%B%C+!_ӯeJHH:esnʋh9ܵ̓}g]Mss8;3 9&vnw^>~~wO?BY~Gx23AF̮pr]p>NpFfz6ي\h qa>=0 Ŏ UHLV2z|(kq4Z "Νc[}`i.A`hjl[MXco? |aP]Q"6Y4yGZw'SIM ߐl,wd1<> ۽*vQXYhRҕK%i%h 9Kp=N^:h!p߅jWZ +]̩A Kj\u46|"\wc$ ILW^0Q0<2TRj;}[I P.%~CO_/0hYU(՘ ^VHi :][G ٛ pѨ)4  bddGA bVlu2[ĬK~Er]:b6^s;Qf%@"f(f9^N>= [*/'>VrO1 m洿|i,4@aRvPh*/H r, 2g\b$R6s'>~|a5"$hg2 /1}b˕GK$IKs8;L+7 U.chA}]}0'xXEIϷ82QB[VIP,]'mgO FiΓ5ՠ܏α&Sq)9Bň˒Q(!Vrb X(^j|< ;dwcwV56NccmS)݆[==!Νzq%^ ˔M?kbV^5kw@''$ ڦ Z1iLct`OxH - ۘU[.Pmg6y2CQ$Bsë`. F&{^BwSN|?|>)  3B/]R rQB?(yV H"z"”XjO(ޙ5Ir]nf]tO`f IEo?#Qd˔rXCrPi @f0wuwu57O 7Qȥ2n'*90| (3>|[NrmCD xLNDY 9B 6JxDіt /c F(\u#8sȶ R\4n\ SϚq^>s+^L4a̷H(Ď+V}H6]}iYW0BΑD>i>~Q~vR>"HeA%'i>vzS0X(L,C<7wP/9X|eG\ECb2C1N@b 4!FXɐ3AЃ'1`bxKb v@ =c  AV9 rfK{#ܿFCcZcHexߠh0Λ0"ӈc= #-IlkcSHsbL]j{>P?x<su]b&1\$<̌l|LYiGqwѰ {UбێBY  qW!|'(l_{Ol=ϢAHIe+=|1A ELFkŷbv٧qTjRgJ  5(rer!*RX?!01XJ7v0}nK-\'V HF7t6h@xR p` u#P;|:ً'y2X1JcAg-@vNӟr$jthh(fይ,&|-'qWĩn|$rn1vnc j=/zlLNٳJ%ɜAGHZ).ud[K) CdƗ}Fs@ 2*~"1gegoWj1u|ƌ>"+47 kj/.m4TWRS7.\AnD/E,`&رgLGe:Elױ\Ad &e&LPcƁ\珸s>y==d`KcW{ n3/Cg ebO.4=x<]Y}YfIxP-~A䙁g/6&ul01]۫L"8f:##Y:wPL[WbpH";C˧{#chOП2}7k# ޟxa|w,ɹ[%YjCKh8 #EktiDeޣ!mPA4WϷO9pcuq oR~$Ə:ؒ(D&w ߞeP4j #W.Z^}crsjֺOHo_?}+?GkJ pLmqm;zh+O1Fʕ{oNmlvsaG7ж< lXPѧ!| )ZYfx0]M2rE>s] add}KN `ۼ8I7 #9Cը55x<x/ S&WћH A$GLX#Uk20҇AUoDla)D[&2T+5,Lh4ebjE{Y!yVCv_4:>ckiQSn0 "Wзj*lnͦ{Szn(ж2|pǞk'/<͏.6)*Fǔ6< 1ZQtϰAm{5bGoO@&h8x UOx0x\,/*qFH$5HH .dEXd>D;OLO6#!lijиXx!K)J4GƑ&a`-n V6?۷=7+ 6}^=ʋ/# iM 4H4 #C])DY|BK/ݺ{|0?"EPrD0*tdq tR)!+UK^]@Rg'1ByoWx G%sekHHgN‘ǑJcDXp/Zx<ayZƖKȮuER| \Q<8]\ ݓ [Xw1J,+"ZfYm1?1 ;atL n.)[~?>P!k!(n ߞ23;?}uqFQ( I&xůi4) b li8ԡv>)z}jT`0}՛ {_{{3W?#2/ڀY;ΞP*mT+qw,Z0`r"^NVɌ{h zR≓Yj7X9t6gpCJKl(x|=Ox0x\HDiE'=LEg+ȶtF 1yzww nL\20EOtLֈlnOAkk^ywoFR4PC7|h__?ўŧafs';  /H Sc;0lsߨ`i"n|x*`4Xbn@XC@ `v+./#I!mis+t]8)JQ%٫zTfgz<x(ᯩF7Z 緃*@so8ɑ Rids,R鬘v <سx$[JJOpZb]܋> #c9 L%Jat a۰4ǧcT)w7ՋO¿7/o}>}ƠM.z`6h ᩉL*§eZs+&?ABah?O¿`+^/ay~\+͐BX[?2A# LƓH#Y}FT OrO緓[61A]Cp$@N/;Eag z v(2N)0LHTvp q b}qLHgW7 u,(M6TJh-&׆851ς0 Uww>r$nߪS-DtVtC ;W@l`ӷP.ՙB{mKeϕ8i3ž4mh<{3ѧFζ6r;.?x<緌IS:42Lk]+ET46CWCL5˜6U"0L\g!"h9++{Obs75PAuY, ۷m5UN ݰ'F=׎YZ~w) gRb66j@׃ 4]]I$2)Ag@Ø?'c/ 7܊ (ȊYRT)=JΞY!_T\J`}eDSL†Hg'kHH=W, +7\3f=X) pȾgKQtt#PesdA\%~{QBY0B;?%j +a\fGHUD YFgtp`_`NLd 5=}]}#QVF8cE%T+kn_DY Llc:֔¿K=YDnbP.^'S 3vqcPx< <@pIJJ_vTt:{_B&f`g=X5,1U(+ߓ~5 V!P ҷ;w60}w?L`~%)HfI:dE9M*Ni>=L]]/{8o{'OPOO[%{j{ qm\CG!Zr#Gxbc)g^<֎~6NOp3j2=f=GR& @/@ܸȢytE2A%2Reawᙅh;}npM{ neaFx6#SApdhD2L&_iK&SOmijHgG(Ĭscm\p S;Ď`yX)DVC 6"Wn# oLTg_9PA2s { @4z<x<$pcwu1M_G[8 `qID%/`v,e 7R0cgGZ8Z`ygח\b4{UQǰĮajnP,rU~3c־߄QOȸ Ì dKkc#d/G`$x 6Ϡx<< έwTzɾnK2-vDs6U.z1z,F{WF{(jecxeO&Z=60pQ_ ؗ #R drg;2rvv{$Xكd\%ajr/&"Bc/7~K0٬1toa.OØŽgwZ0'6VndXyC}8Z>}SVp?9Zcc>g%wx&5am .d)\F]6 72F/=C ⦭v 쥅X}ϝx<|*-ZsxycÒJDKetB"tYQLڹvq&lWnx%u5ٽXsoxYrZ`f3Jy;S0/vHo߻A9nJ%`0h}˸el,h'2VT#LJ=Q-OcB/H7gܧH ѣȞF{G2쥽?xa9[xcvw\`wgο!< +kFOy֭D ȹai^i.[K{gO:?D*ƿtdqhSbL?矓eD|@oɂ}tR ., +]Iԟ 0Z#VeC_Z֣{똹w􍜸tΔ6H^A ^l-) 1(^6|?okrua;+ !2 ȫmaƨDr5LRunz*<`4 Var1fnesCut-ƯCv/nDb(h,{~qٖcG;(NNdy<x<*}/V~RcE 0Քpa}6m>p_A55H)P$}Xc-ܽsw7(l}.vF5qFZ;nMRc),^xֵSJdoxk%uRs&ڒ ;S@Aw {s9ҍ# #3pcKA|{^O6R To߾om}s,: rfCnSfM]ƞ9\TߖBۊ%kĞ3V-%2[f\k !%6hضUx0x~܄]_ᫀIb*ҙ8-n\u.sC !.M"ge&m,L۫}wf2m:Znrl^Zm)J^*AWJ!$NVVWNuwQɖ9`uPKQWK֥bquR|_ EGKX/HeQDqjs"bxܖYM-[6li(9 O7K+XX20x<g -\p^*.oLi"Fa&Jz@Ƶr/e5-Bq < W6eAl i@VױFo[`K P"ZVOߤDZ&BT[[IҺ]1{>4vvӲ;Կ#*W?:ɜ7WS 5obwdcŅY7Wω̴-xȟSA'f^񙬰 ?M+]Ėe̶D]MҟM :A '#[NS<f=:w\;04ǓSg%\ҹm3iD- cOd.jWdGrC'YS pcEOik6 Y"u ۛ1uk "xs)= %~&C0 z ؁saCJax}C12eWѲ\P?[x<a߂0 O[OhZZg1L}[=˳}&Gѫ\F~oD8ki4U22: & nH1NS0rD3Uer*HC:rjw&2~ o8@mrLagk`_Wl^*Wd#m?;*Ԋ<8KDeMsߞ ֱm ؤ % *84ކޡ4 ` pB\Yy !H 0QVTQKtk米yJg2Dx )Ț(|t+ TM5ʃBS!P BP}< 6zń:) HlPg-]m*1~ڊxpk#ՊdE5@`rG?kbɲ^#,=՛ȑH;V\<x<s @9} @j$s+ɝGQt \EF0"ÐKaR &'[f׭lUB{ KY淟ǯS:ݛνΞ5r:@4]go5~hAR,NqR&v<>F= t zk;a^ J FS(dOb<8N9h&u2%EX[r[7n4]E*!liKԎ)?xa|ޙsoØ܆gv25!w12l%ʢX@g!k3&VHZDl,a_xY)-ttϢw&YAT 1{wnvT# HkZ}qc:*l{xL (J` C|ȩV1?y;e&6bVn|<> g'zE35i0%H#g-Ӓ#hip "n"b,y<x<"oxDU fJd)c8(DagV2L0&9Iyh,K cĪ!BHϳ^0[zKg6Ul{/boO{|tՑ1UH$` *'R-Ij :4jm$Ŧ?e~ӟ{ oA"Ka BEF\1lngc%\&OBsJ |) f\\MEџf7B6w{7c "ixX؃,*&`"( "RuOnu`ȳ4APW{v"c ,]JkT0 ;rZ.i`߿jtTc@5Fck78 上f"Y̱}@c [VܠQ>tBPαYG%vx<x>ה8t]j(A _m";C֡"BYa'6J2ƲA"wYYC3L!%MLѥBke3՚J&jTom."I]Rjպ1p?VSnaifb|%Ld5H%rΒ2 )xAZ#GG!(dj]"mS<ϓF!x''6bӊ~g`)>)l)&XʩL3.cD0 FWuW;lL ;h>"8N悫,CmxI(a`(k׵nh`؄y{,&"QVc-x<Bl =K&G%Fz# !p*Y6chE|)$E8YJlECy|Zԛ1%Xd)5Rpl{in[OW),@EǦA;_#f}}q/+ D PimML1i&ZZ[j 0p5MnVV<"̇lcg=>);STsfv^ε>'v벒ܷ# 4sU}lOS4}3Gv/wؔ)'ßAA<dUП!rӞ@)/}!ĥ-{ V,EoBQ@sv+W_֥b֪Uv)ݖ͉]\2̊GQ7z+`#?VzO7IF`ղU-u01`ܹ[,iΊTVujmfէMۼm#}Gh3uOJO    o,灗P*HMsu]'&cl_@zEՈblM ]ct,BV*5[|/QcD'{1X|Ǘ{$]3{SiKǘsٟ B AseS hVa0 g= :1ԧє`1jꌸuQ?QKQl w`-O 4St'nҮæP;Wj;MHCR[8VFK\~KC:6  uѫ{d"]]5EXswU> &{<erj={rq;u"lD|   #TD`.zi/OsݿrbG=X`=ƀ Y#V_W&Z[4M#*vD9rmޓ Ά:1p   E(?A_siY5mқcs1+kn&,"]NK&r }^\(0?!%Nr/("kқYmmz=Aw$M$͠cƷ?\T%D`qb|L' B4.A1Dgݴ7'~@} B abx ՗ oQL:M[ccLLA5RTT651hWٵ5YJ7 H#t0H鵕h ] bRGMoA]^v\:~.נԐ| Ś*1!{9V*܆1g g9#<#fÝ+@QJ   xK2Jj.(~N<#]kħ&㮛t6XJHZ ͛xDmʆWmJ+8E@"1jn2ͣy,~3SJ׮-W3ٹf]"b)NQlϕܞKbSyiOQW?%f (\~ DaLj5"\6]XxO&FkVA|\wRѕ*I'7V?LTTfo;z4XQy}IJOk}w _[kV#kXI>q?KƉ+:]S[b:   :>~ Q?Wciɩ'xt m_ԥVa7L?kƺT`՝W;`'v)6J+zxjz}rzMt~2i3IM߲*uF;sp\Dpu}{ y8^\ٟAlsK(Gu =!"v,4?(1VњGD\䦺Uܤs. "q0ʥOzäqxCV_ֳ'ۭ?{cu޹sgyZO m\7uJ- k%D%*  PH 5QTUIڨ)J?3{8޽&G[1jI9g}c_YZ7Ly 4H P zdv&j.JW_y}^|.ij>f 2Ol"^( Es'r{bQ(eV\ >dLΗm3861c/"`9e54^yS(((SM_ucΟʡ5#FGwWo )$K߆kY㐋Mhg߳u7e2+W7geܫ_^)ۈ7GHZh2Rq#δu eߵ_ -οN);NKSL|?^Aʩ!x b`cUӡ( (o { 3D Y:O+.@4z}E. @l{i)[7~/MnVv-*Xϡ͎޸3Ս}'3Ln>o?g&Ekhl(_[q?=/sώ;rn{u**.=|ws>k56fVs9~K#byg!Nb-)ws'7zK|9hɢȱ~Cw\ $8&<`EQEQEQ%a `2vMڢkE}#^(v8&RK!׵9+I }?۝Kp}r;x4}#/}1;/Gh>Xӕj6eMY2YKX}==C|a}_Jз9~ }Y܌E~o)V\S7_ sK6G {<);D"3%wDFD  ϟSEyAuEy7D)z}C"6^(oe!W{և}L^ i9XԽR #`O?kro#K^б#ȵC278OuYL57)w0k BZ̶n^=|g-eNXdՑ+Jͦ)s./(Š˸v1O'߫3ָy޽  {;08rm): k 3((() uErK7h4 p$#(3¿^=o@t;ܞ⯶5GjRFR֛.q')ѷ"F7sO.M[-*TfۨnjRd[=TK )ߛwnZ2M=q[dclGoV_olo7 W瑩SW6OŲks%&]$}(\F?7vr$Gі=}"[(¬(;πƅ{"=nQ eV(~) ["iK>_@ZQlH>1Ut81{ x{_[@!cl3[D}Dj5m+Yw/O}@Đ$\ !"JRœ̍\;`[ic,ú&+GGQnƃx5EQEQEQ8V ҄\E,ϧE%kbѻbǮWwaK~)6>C9S\i4&jzr;|x1___To+D0[ f:V2[tۡ,''`Uo?23u=ڼY-K/dg -SxGa͏,XPؑQJi~H*)?EQfEQ9 0O=X[$fS"0qFDZME׿gҾ8%95GESgj+g@5m1'^q  gޭ5$cIn}8 r8tA d1¨t[ydL` :{GaLE/+3zRk]QEQEQE8*(^%-Nbcm$@*DD[狪B Cbm'1-L0r| Iɜޞ?k(SF((V*Il{5_Y匄S\)!Q\el#fn\MlAmpmoydZ_M-ƕLkCq&EWJݗ̐C2yxҿ/ TbDT(((c.q 6.zwM,^ERD4X.S~R6(HcAgY.G)sX8tnRS%Cj=n#fk곏8ރGe ԊpXP(0 EQV@^Nf}M4˨Uj`R  d +RQ[-*L>>ŋzWFԙ?<=?.l#Tkr˳r "IΔ/UԪ>E~b;H#=&7\ĵgg(bxHzYfxEQEQEQ |@ xB"jA&WX{ [+7/lBX-S傂Wחiuw)wee`}El|:Z\Eov(E~n ]R\)Wv)J#P3!XJGF6qז埼1^`f? }ğ҇ir՟( (?>O(&@Sks˘۴2KXQca )к}H#.(+KGD䨨Dz@&J1PX+ce YN_0jƈ`" @[*bⴘcxV\bS9,_7:'(((<> ȀฯX+)KX^XB.HH$a%I: 8Bd\!&rW$\=6Hx_Q+>EdgҖ:&}xS` NOMp}4`QW