pax_global_header00006660000000000000000000000064144761435560014531gustar00rootroot0000000000000052 comment=eb1e00b6502e2191b67a47e6afb024ccf01fd8d4 ProcDump-for-Linux-2.2/000077500000000000000000000000001447614355600150065ustar00rootroot00000000000000ProcDump-for-Linux-2.2/.devcontainer/000077500000000000000000000000001447614355600175455ustar00rootroot00000000000000ProcDump-for-Linux-2.2/.devcontainer/Dockerfile_Rocky000066400000000000000000000021201447614355600227010ustar00rootroot00000000000000FROM rockylinux:8 # install all needed packges to build .rpm packages RUN echo "assumeyes=1" >> /etc/yum.conf # install endpoint for git > 2.0 RUN yum install http://opensource.wandisco.com/rhel/8/git/x86_64/wandisco-git-release-8-1.noarch.rpm # Enable powertools and extra repos RUN dnf install dnf-plugins-core && dnf install epel-release && dnf config-manager --set-enabled powertools && dnf update # install all needed packages for builds RUN yum install git \ gdb \ zlib-devel \ gcc-toolset-10 \ rpm-build \ make \ curl \ libcurl-devel \ libicu-devel \ libunwind-devel \ nmap \ wget \ clang \ redhat-lsb # Make sure gcc-10 is enabled RUN echo "source scl_source enable gcc-toolset-10" > /etc/profile.d/gcc.sh # install JQ since it doesn't have a .rpm package RUN curl https://stedolan.github.io/jq/download/linux64/jq > /usr/bin/jq && chmod +x /usr/bin/jq # install .net core 6 for ESRP signing and integration tests RUN yum install dotnet-runtime-6.0 RUN yum install dotnet-sdk-6.0 # Update packages to latest RUN yum update WORKDIR /azpProcDump-for-Linux-2.2/.devcontainer/Dockerfile_Ubuntu000066400000000000000000000032141447614355600231010ustar00rootroot00000000000000FROM ubuntu:20.04 # To make it easier for build and release pipelines to run apt-get, # configure apt to not require confirmation (assume the -y argument by default) ENV DEBIAN_FRONTEND=noninteractive RUN echo "APT::Get::Assume-Yes \"true\";" > /etc/apt/apt.conf.d/90assumeyes RUN apt-get update RUN apt -y install software-properties-common RUN add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" RUN apt-get update RUN apt upgrade -y \ && apt-get install -y --no-install-recommends \ ca-certificates \ curl \ jq \ git \ iputils-ping \ libcurl4 \ libicu55 \ libunwind8 \ netcat \ gdb \ zlib1g-dev \ stress-ng \ gcc-10 \ g++-10 \ cpp-10 \ wget \ dpkg-dev \ fakeroot \ lsb-release \ gettext \ liblocale-gettext-perl \ clang \ pax # prefer gcc-10 over the already installed version RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 # install debbuild RUN wget https://github.com/debbuild/debbuild/releases/download/22.02.1/debbuild_22.02.1-0ubuntu20.04_all.deb \ && dpkg -i debbuild_22.02.1-0ubuntu20.04_all.deb # install .NET 6 for signing process and integration tests RUN wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb RUN dpkg -i packages-microsoft-prod.deb RUN rm packages-microsoft-prod.deb RUN apt -y update && apt-get install -y dotnet-runtime-6.0 RUN apt-get install -y dotnet-sdk-6.0 # Make sure we use gcc-10 when building ENV CC=gcc-10 WORKDIR /azp ProcDump-for-Linux-2.2/.devcontainer/devcontainer.json000066400000000000000000000010331447614355600231160ustar00rootroot00000000000000// For format details, see https://aka.ms/devcontainer.json. For config options, see the // README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu { "name": "ProcDump for Linux Development Container", "build": { // If you want to use a different docker file (such as Dockerfile_Rocky) you can specify it here "dockerfile": "Dockerfile_Ubuntu" }, "customizations": { "vscode": { "extensions": [ "ms-vscode.cpptools", "ms-vscode.cpptools-extension-pack", "ms-vscode.makefile-tools" ] } } } ProcDump-for-Linux-2.2/.github/000077500000000000000000000000001447614355600163465ustar00rootroot00000000000000ProcDump-for-Linux-2.2/.github/issue_template.md000066400000000000000000000002271447614355600217140ustar00rootroot00000000000000### Expected behavior ### Actual behavior ### Steps to reproduce the behavior 1. 2. 3. ### System information (e.g., distro, kernel version, etc.) ProcDump-for-Linux-2.2/.gitignore000066400000000000000000000005261447614355600170010ustar00rootroot00000000000000# IDE folders & Files .vs/ .vscode/ !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json # Prerequisites *.d # Object files *.o *.ko *.obj *.elf # Linker output *.ilk *.map *.exp # Precompiled Headers *.gch *.pch # Libraries *.lib *.a *.la *.lo *.o # Project directories bin/ release/ pkgbuild/ obj/ ProcDump-for-Linux-2.2/BUILD.md000066400000000000000000000035231447614355600161720ustar00rootroot00000000000000# Containerized Builds The Dockerfiles in this repo (located under the `.devcontainer` directory) are the same Dockerfiles that are used on the backend build systems when a PR is built as part of the PR checks. This provides an easy and convenient way to ensure that any changes being made can be built using the same backend infrastructure. There are two Dockerfiles available: - `Dockerfile_Ubuntu` (default) - `Dockerfile_Rocky` There are two primary ways to build using containers: 1. If you use VS Code the repo has support for VS Code Dev Containers. To use this functionality, you need to have the VS Code Dev Containers extension installed as well as Docker. Once installed open VS Code and the `ProcDump-for-Linux` folder and go to command palette and select "Dev Containers: Rebuild and Reopen in Container". Once the container has finished building, you will be connected to the newly built container. You can also switch which Dockerfile you are using by setting the `dockerfile` field in the file `devcontainer.json`. For more information about VS Code Dev Containers please see - https://code.visualstudio.com/docs/devcontainers/containers 2. Use the Dockerfiles located under the `.devcontainer` directory and build/run docker locally. To build inside the container: ```sh make make install ``` # Local Builds ## Prerequisites - clang v10+ - gcc v10+ - zlib - make ### Ubuntu ``` sudo apt update sudo apt -y install gcc make clang gdb zlib1g-dev ``` ### Rocky Linux ``` sudo yum install gcc make clang gdb zlib-devel ``` ## Build ```sh make make install ``` # Building Packages The distribution packages for Procdump for Linux are constructed utilizing `debbuild` for Debian targets and `rpmbuild` for Fedora targets. To build a `deb` package of Procdump: ```sh make && make deb ``` To build a `rpm` package of Procdump: ```sh make && make rpm ``` ProcDump-for-Linux-2.2/CODE_OF_CONDUCT.md000066400000000000000000000005271447614355600176110ustar00rootroot00000000000000# Code of Conduct This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](opencode@microsoft.com) with any additional questions or comments.ProcDump-for-Linux-2.2/CONTRIBUTING.md000066400000000000000000000113731447614355600172440ustar00rootroot00000000000000# Contributing Before we can accept a pull request from you, you'll need to sign a [Contributor License Agreement (CLA)](https://cla.microsoft.com). It is an automated process and you only need to do it once. To enable us to quickly review and accept your pull requests, always create one pull request per issue and link the issue in the pull request. Never merge multiple requests in one unless they have the same root cause. Be sure to follow our Coding Guidelines and keep code changes as small as possible. Avoid pure formatting changes to code that has not been modified otherwise. Pull requests should contain tests whenever possible. # Branching The master branch contains current development. While CI should ensure that master always builds, it is still considered pre-release code. Release checkpoints will be put into stable branches for maintenance. To contribute, fork the repository and create a branch in your fork for your work. Please keep branch names short and descriptive. Please direct PRs into the upstream master branch. ## Build and run from source ### Environment * Linux OS (dev team is using Ubuntu 18.04) * Development can be done on Windows Subsystem for Linux (WSL), but ProcDump cannot be executed in that environment * git * GDB * GCC (or other C compiler) * GNU Make ## Building from source * Clone the repo * Run `make` from the project root * The procdump executable will be placed into the `bin` directory ```sh git clone https://github.com/microsoft/ProcDump-for-Linux cd ProcDump-for-Linux make ``` ## Testing * There are a multitude of tests included in the `tests` directory of the repository. * Add new tests corresponding to your change, if applicable. Include tests when adding new features. When fixing bugs, start with adding a test that highlights how the current behavior is broken. * Make sure that the tests are all passing, including your new tests. ## Creating integration tests The integration tests run using the local procdump built from source. Individual test cases are written as bash scripts and need to be inside `/tests/integration/scenarios/` in order to be called automatically by `run.sh`. Test scripts will return `0` when they succeed and `1` when they fail. Most of the tests are written using [stress-ng](https://wiki.ubuntu.com/Kernel/References/stress-ng "stress-ng manual"), but you can write your own code to simulate the scenario you require. After writing a new test, run the `run.sh` script and verify that no tests fail. ## Pull Requests * Always tag a work item or issue with a pull request. * Limit pull requests to as few issues as possible, preferably 1 per PR ## Coding Guidelines ## Indentation We welcome all whitespace characters, but prefer space expanded tabs. ## Names * Do not use `typedef`, we like to know what is a struct and what is a type * Use PascalCase for: * `struct` names * `enum` names * `function` names * Use camelCase for: * `local variable` names * `enum` names should start with a captol `E`, e.g., `enum ECoreDumpType` * Global variables should be prefixed with `g_`, e.g., `struct ProcDumpConfiguration g_Config;` * `struct Handle`s that contain a `struct Event` should have variable names prefixed by `evt`, e.g., `struct Handle evtIsQuit;` * `struct Handle`s that contain a `sem_t` should have variable names prefixed by `sem`, e.g., `struct Handle semDumpSlot;` * Please use whole words when possible ## Style * Curly brackets, `{ }`, should go on the next line after whatever necessitates them * For structs, put on same line * Put a space before the open paren, `(`, with `for`, `while`, `if`, and `switch` statements * No space after function names and before parameter lists * The `*` for a pointer goes next to the variable name, e.g., `char *variable` * Declare 1 variable at a time * Declare all local variables at the start of a function * Either initialize upon declaration, or initialize before logic * The exception is `for` loop iterators * Wrap header (`.h`) files with: ```c #ifndef HEADER_FILE_NAME_H #define HEADER_FILE_NAME_H //... #endif // HEADER_FILE_NAME_H ``` ## Trace and Error Handling For system calls and other "failable" function calls, please make use of the `Trace` macro and the logging methods, like so: ```c int rc = 0; if ((rc = FailableFunction(...)) != 0) { Log(error, INTERNAL_ERROR); Trace("WriteCoreDump: failed pthread_setcanceltype."); exit(-1); } ``` ## Example of style ```c struct Baz { int Foobar; } int main(int argc, char *argv[]) { int foo = 0; int bar = 1; char[64] str = "This is a string"; struct Baz baz = { 10 }; while (foo < 10) { foo++; } for (int i = 0; i < foo; i++) { printf(str); baz.Foobar--; } printf("baz.Foobar is %d", baz.Foobar); return bar - 1; } ``` ProcDump-for-Linux-2.2/INSTALL.md000066400000000000000000000101451447614355600164370ustar00rootroot00000000000000# Install ProcDump ## Azure Linux 2.0 ```sh sudo yum install procdump ``` ## Ubuntu 20.04, 22.04, 23.04 #### 1. Register Microsoft key and feed ```sh wget -q https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb ``` #### 2. Install Procdump ```sh sudo apt-get update sudo apt-get install procdump ``` ## Debian 11 #### 1. Register Microsoft key and feed ```sh wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/ wget -q https://packages.microsoft.com/config/debian/11/prod.list sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list ``` #### 2. Install Procdump ```sh sudo apt-get update sudo apt-get install apt-transport-https sudo apt-get update sudo apt-get install procdump ``` ## Debian 12 #### 1. Register Microsoft key and feed ```sh wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/ wget -q https://packages.microsoft.com/config/debian/12/prod.list sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list ``` #### 2. Install Procdump ```sh sudo apt-get update sudo apt-get install apt-transport-https sudo apt-get update sudo apt-get install procdump ``` ## Fedora 37 #### 1. Register Microsoft key and feed ```sh sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo wget -q -O /etc/yum.repos.d/microsoft-prod.repo https://packages.microsoft.com/config/fedora/37/prod.repo ``` #### 2. Install Procdump ```sh sudo dnf install procdump ``` ## Fedora 38 #### 1. Register Microsoft key and feed ```sh sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo wget -q -O /etc/yum.repos.d/microsoft-prod.repo https://packages.microsoft.com/config/fedora/38/prod.repo ``` #### 2. Install Procdump ```sh sudo dnf install procdump ``` ## RHEL 7 #### 1. Register Microsoft key and feed ```sh sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo wget -q -O /etc/yum.repos.d/microsoft-prod.repo https://packages.microsoft.com/config/rhel/7/prod.repo ``` #### 2. Install Procdump ```sh sudo yum install procdump ``` ## RHEL 8 #### 1. Register Microsoft key and feed ```sh sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo wget -q -O /etc/yum.repos.d/microsoft-prod.repo https://packages.microsoft.com/config/rhel/8/prod.repo ``` #### 2. Install Procdump ```sh sudo yum install procdump ``` ## RHEL 9 #### 1. Register Microsoft key and feed ```sh sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo wget -q -O /etc/yum.repos.d/microsoft-prod.repo https://packages.microsoft.com/config/rhel/9/prod.repo ``` #### 2. Install Procdump ```sh sudo yum install procdump ``` ## CentOS 7 #### 1. Register Microsoft key and feed ```sh sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm ``` #### 2. Install Procdump ```sh sudo yum install procdump ``` ## openSUSE 15 #### 1. Register Microsoft key and feed ```sh sudo zypper install libicu sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc wget -q https://packages.microsoft.com/config/opensuse/15/prod.repo sudo mv prod.repo /etc/zypp/repos.d/microsoft-prod.repo sudo chown root:root /etc/zypp/repos.d/microsoft-prod.repo ``` #### 2. Install Procdump ```sh sudo zypper install procdump ``` ## SLES 12 #### 1. Register Microsoft key and feed ```sh sudo rpm -Uvh https://packages.microsoft.com/config/sles/12/packages-microsoft-prod.rpm ``` #### 2. Install Procdump ```sh sudo zypper install procdump ``` ## SLES 15 #### 1. Register Microsoft key and feed ```sh sudo rpm -Uvh https://packages.microsoft.com/config/sles/15/packages-microsoft-prod.rpm ``` #### 2. Install Procdump ```sh sudo zypper install procdump ```ProcDump-for-Linux-2.2/LICENSE000066400000000000000000000022121447614355600160100ustar00rootroot00000000000000 MIT License Copyright (c) Microsoft Corporation. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE ProcDump-for-Linux-2.2/Makefile000066400000000000000000000062311447614355600164500ustar00rootroot00000000000000ROOT=. CC ?= gcc CFLAGS ?= -Wall CCFLAGS=$(CFLAGS) -I ./include -pthread -std=gnu99 -fstack-protector-all -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -O2 -fanalyzer -Werror LIBDIR=lib OBJDIR=obj SRCDIR=src INCDIR=include BINDIR=bin TESTDIR=tests/integration DEPS=$(wildcard $(INCDIR)/*.h) SRC=$(wildcard $(SRCDIR)/*.c) TESTSRC=$(wildcard $(TESTDIR)/*.c) OBJS=$(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(SRC)) TESTOBJS=$(patsubst $(TESTDIR)/%.c, $(OBJDIR)/%.o, $(TESTSRC)) OUT=$(BINDIR)/procdump TESTOUT=$(BINDIR)/ProcDumpTestApplication # Profiler PROFSRCDIR=profiler/src PROFINCDIR=profiler/inc PROFCXXFLAGS ?= -DELPP_NO_DEFAULT_LOG_FILE -DELPP_THREAD_SAFE -g -pthread -shared --no-undefined -Wno-invalid-noreturn -Wno-pragma-pack -Wno-writable-strings -Wno-format-security -fPIC -fms-extensions -DHOST_64BIT -DBIT64 -DPAL_STDCPP_COMPAT -DPLATFORM_UNIX -std=c++11 PROFCLANG=clang++ # Revision value from build pipeline REVISION:=$(if $(REVISION),$(REVISION),'99999') # installation directory DESTDIR ?= / INSTALLDIR=/usr/bin MANDIR=/usr/share/man/man1 # package creation directories BUILDDIR := $(CURDIR)/pkgbuild # Flags to pass to debbuild/rpmbuild PKGBUILDFLAGS := --define "_topdir $(BUILDDIR)" -bb # Command to create the build directory structure PKGBUILDROOT_CREATE_CMD = mkdir -p $(BUILDDIR)/DEBS $(BUILDDIR)/SDEBS $(BUILDDIR)/RPMS $(BUILDDIR)/SRPMS \ $(BUILDDIR)/SOURCES $(BUILDDIR)/SPECS $(BUILDDIR)/BUILD $(BUILDDIR)/BUILDROOT # package details PKG_VERSION:=$(if $(VERSION),$(VERSION),0.0.0) all: clean build build: $(OBJDIR)/ProcDumpProfiler.so $(OBJDIR) $(BINDIR) $(OUT) $(TESTOUT) install: mkdir -p $(DESTDIR)$(INSTALLDIR) cp $(BINDIR)/procdump $(DESTDIR)$(INSTALLDIR) mkdir -p $(DESTDIR)$(MANDIR) cp procdump.1 $(DESTDIR)$(MANDIR) $(OBJDIR)/ProcDumpProfiler.so: $(PROFSRCDIR)/ClassFactory.cpp $(PROFSRCDIR)/ProcDumpProfiler.cpp $(PROFSRCDIR)/dllmain.cpp $(PROFSRCDIR)/corprof_i.cpp $(PROFSRCDIR)/easylogging++.cc | $(OBJDIR) $(PROFCLANG) -o $@ $(PROFCXXFLAGS) -I $(PROFINCDIR) -I $(INCDIR) $^ ld -r -b binary -o $(OBJDIR)/ProcDumpProfiler.o $(OBJDIR)/ProcDumpProfiler.so $(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR) $(CC) -c -g -o $@ $< $(CCFLAGS) $(OPT_CCFLAGS) $(OBJDIR)/%.o: $(TESTDIR)/%.c | $(OBJDIR) $(CC) -c -g -o $@ $< $(CCFLAGS) $(OUT): $(OBJS) | $(BINDIR) $(OBJDIR)/ProcDumpProfiler.so $(CC) -o $@ $^ $(OBJDIR)/ProcDumpProfiler.o $(CCFLAGS) $(OPT_CCFLAGS) $(TESTOUT): $(TESTOBJS) | $(BINDIR) $(CC) -o $@ $^ $(CCFLAGS) $(OBJDIR): clean -mkdir -p $(OBJDIR) $(BINDIR): clean -mkdir -p $(BINDIR) .PHONY: clean clean: -rm -rf $(OBJDIR) -rm -rf $(BINDIR) -rm -rf $(BUILDDIR) test: build ./tests/integration/run.sh release: clean tarball .PHONY: tarball tarball: clean $(PKGBUILDROOT_CREATE_CMD) tar --exclude=./pkgbuild --exclude=./.git --transform 's,^\.,procdump-$(PKG_VERSION),' -czf $(BUILDDIR)/SOURCES/procdump-$(PKG_VERSION).tar.gz . sed -e "s/@PKG_VERSION@/$(PKG_VERSION)/g" dist/procdump.spec.in > $(BUILDDIR)/SPECS/procdump.spec .PHONY: deb deb: tarball debbuild --define='_Revision ${REVISION}' $(PKGBUILDFLAGS) $(BUILDDIR)/SPECS/procdump.spec .PHONY: rpm rpm: tarball rpmbuild --define='_Revision ${REVISION}' $(PKGBUILDFLAGS) $(BUILDDIR)/SPECS/procdump.spec ProcDump-for-Linux-2.2/README.md000066400000000000000000000150171447614355600162710ustar00rootroot00000000000000# ProcDump [![Build Status](https://dev.azure.com/sysinternals/Tools/_apis/build/status/Sysinternals.ProcDump-for-Linux?branchName=master)](https://dev.azure.com/sysinternals/Tools/_build/latest?definitionId=341&branchName=master) ProcDump is a Linux reimagining of the classic ProcDump tool from the Sysinternals suite of tools for Windows. ProcDump provides a convenient way for Linux developers to create core dumps of their application based on performance triggers. ProcDump for Linux is part of [Sysinternals](https://sysinternals.com). ![ProcDump in use](procdump.gif "Procdump in use") # Installation & Usage ## Requirements * Minimum OS: * Red Hat Enterprise Linux / CentOS 7 * Fedora 29 * Ubuntu 16.04 LTS * `gdb` >= 7.6.1 ## Install ProcDump Please see installation instructions [here](INSTALL.md). ## Build Please see build instructions [here](BUILD.md). ## Usage **BREAKING CHANGE** With the release of ProcDump 1.3 the switches are now aligned with the Windows ProcDump version. ``` procdump [-n Count] [-s Seconds] [-c|-cl CPU_Usage] [-m|-ml Commit_Usage1[,Commit_Usage2,...]] [-gcm [: | LOH: | POH:]Memory_Usage1[,Memory_Usage2...]] [-gcgen Generation] [-tc Thread_Threshold] [-fc FileDescriptor_Threshold] [-sig Signal_Number] [-e] [-f Include_Filter,...] [-pf Polling_Frequency] [-o] [-log] { {{[-w] Process_Name | [-pgid] PID} [Dump_File | Dump_Folder]} } Options: -n Number of dumps to write before exiting. -s Consecutive seconds before dump is written (default is 10). -c CPU threshold above which to create a dump of the process. -cl CPU threshold below which to create a dump of the process. -m Memory commit threshold(s) (MB) above which to create dumps. -ml Memory commit threshold(s) (MB) below which to create dumps. -gcm [.NET] GC memory threshold(s) (MB) above which to create dumps for the specified generation or heap (default is total .NET memory usage). -gcgen [.NET] Create dump when the garbage collection of the specified generation starts and finishes. -tc Thread count threshold above which to create a dump of the process. -fc File descriptor count threshold above which to create a dump of the process. -sig Signal number to intercept to create a dump of the process. -e [.NET] Create dump when the process encounters an exception. -f [.NET] Filter (include) on the (comma seperated) exception name(s) and exception message(s). Supports wildcards. -pf Polling frequency. -o Overwrite existing dump file. -log Writes extended ProcDump tracing to syslog. -w Wait for the specified process to launch if it's not running. -pgid Process ID specified refers to a process group ID. ``` ### Examples > The following examples all target a process with pid == 1234 The following will create a core dump immediately. ``` sudo procdump 1234 ``` The following will create 3 core dumps 10 seconds apart. ``` sudo procdump -n 3 1234 ``` The following will create 3 core dumps 5 seconds apart. ``` sudo procdump -n 3 -s 5 1234 ``` The following will create a core dump each time the process has CPU usage >= 65%, up to 3 times, with at least 10 seconds between each dump. ``` sudo procdump -c 65 -n 3 1234 ``` The following will create a core dump each time the process has CPU usage >= 65%, up to 3 times, with at least 5 seconds between each dump. ``` sudo procdump -c 65 -n 3 -s 5 1234 ``` The following will create a core dump when CPU usage is outside the range [10,65]. ``` sudo procdump -cl 10 -c 65 1234 ``` The following will create a core dump when CPU usage is >= 65% or memory usage is >= 100 MB. ``` sudo procdump -c 65 -m 100 1234 ``` The following will create a core dump when memory usage is >= 100 MB followed by another dump when memory usage is >= 200MB. ``` sudo procdump -m 100,200 1234 ``` The following will create a core dump when the total .NET memory usage is >= 100 MB followed by another dump when memory usage is >= 200MB. ``` sudo procdump -gcm 100,200 1234 ``` The following will create a core dump when .NET memory usage for generation 1 is >= 1 MB followed by another dump when memory usage is >= 2MB. ``` sudo procdump -gcm 1:1,2 1234 ``` The following will create a core dump when .NET Large Object Heap memory usage is >= 100 MB followed by another dump when memory usage is >= 200MB. ``` sudo procdump -gcm LOH:100,200 1234 ``` The following will create a core dump at the start and end of a .NET generation 1 garbage collection. ``` sudo procdump -gcgen 1 ``` The following will create a core dump in the `/tmp` directory immediately. ``` sudo procdump 1234 /tmp ``` The following will create a core dump in the current directory with the name dump_0.1234. If -n is used, the files will be named dump_0.1234, dump_1.1234 and so on. ``` sudo procdump 1234 dump ``` The following will create a core dump when a SIGSEGV occurs. ``` sudo procdump -sig 11 1234 ``` The following will create a core dump when the target .NET application throws a System.InvalidOperationException ``` sudo procdump -e -f System.InvalidOperationException 1234 ``` The include filter supports partial and wildcard matching, so the following will create a core dump too for a System.InvalidOperationException ``` sudo procdump -e -f InvalidOperation 1234 ``` or ``` sudo procdump -e -f "*Invali*Operation*" 1234 ``` > All options can also be used with `-w`, to wait for any process with the given name. The following waits for a process named `my_application` and creates a core dump immediately when it is found. ``` sudo procdump -w my_application ``` ## Current Limitations * Currently will only run on Linux Kernels version 3.5+ * Does not have full feature parity with Windows version of ProcDump, specifically, stay alive functionality, and custom performance counters # Feedback * Ask a question on StackOverflow (tag with ProcDumpForLinux) * Request a new feature on GitHub * Vote for popular feature requests * File a bug in GitHub Issues # Contributing If you are interested in fixing issues and contributing directly to the code base, please see the [document How to Contribute](CONTRIBUTING.md), which covers the following: * How to build and run from source * The development workflow, including debugging and running tests * Coding Guidelines * Submitting pull requests Please see also our [Code of Conduct](CODE_OF_CONDUCT.md). # License Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License.ProcDump-for-Linux-2.2/azure-pipelines.yml000066400000000000000000000033611447614355600206500ustar00rootroot00000000000000# Azure build pipelines for Procdump-for-Linux trigger: branches: include: - release/* exclude: - dev/* - test/* pr: - master stages: - stage: "Build" jobs: - job: "ProcDump_Run_Unit_Tests" pool: vmImage: 'ubuntu-latest' variables: CC: gcc-10 steps: - script: | sudo apt update sudo apt install -y gdb stress-ng zlib1g-dev displayName: 'Setup build environment' - script: | gcc --version dpkg --list | grep compiler displayName: 'List compiler versions' - template: templates/build.yaml parameters: ccopts: '-fsanitize=address' - script: | sudo ./tests/integration/run.sh displayName: 'Run unit tests' - script: | mkdir $(Build.ArtifactStagingDirectory)/logs cp /var/log/syslog $(Build.ArtifactStagingDirectory)/logs cp /var/tmp/procdumpprofiler.log $(Build.ArtifactStagingDirectory)/logs displayName: 'Copy log artifacts to staging' condition: always() - task: PublishBuildArtifacts@1 condition: always() inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)/logs/syslog' ArtifactName: 'syslog' publishLocation: 'Container' - task: PublishBuildArtifacts@1 condition: always() inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)/logs/procdumpprofiler.log' ArtifactName: 'procdumpprofiler.log' publishLocation: 'Container' - job: "Build_ProcDump" pool: vmImage: 'ubuntu-latest' variables: CC: gcc-10 steps: - template: templates/build.yaml displayName: 'Build ProcDump'ProcDump-for-Linux-2.2/dist/000077500000000000000000000000001447614355600157515ustar00rootroot00000000000000ProcDump-for-Linux-2.2/dist/procdump.spec.in000066400000000000000000000066251447614355600210740ustar00rootroot00000000000000Name: procdump Version: @PKG_VERSION@ Release: %_Revision Summary: Sysinternals process dump utility %if "%{_vendor}" == "debbuild" Group: devel %else Group: Development/Tools%{?suse_version:/Other} %endif Packager: OSS Tooling Dev Team License: MIT URL: https://github.com/Microsoft/ProcDump-for-Linux Source0: %{url}/releases/download/%{version}/%{name}-%{version}.tar.gz BuildRequires: gcc, make %undefine _annotated_build %if "%{_vendor}" == "debbuild" BuildRequires: zlib1g-dev %else BuildRequires: zlib-devel %endif Requires: gdb >= 7.6.1 %description ProcDump is a command-line utility whose primary purpose is monitoring an application for various resources and generating crash dumps during a spike that an administrator or developer can use to determine the cause of the issue. ProcDump also serves as a general process dump utility that you can embed in other scripts. %prep %autosetup %build # The makefile doesn't like %%make_build (parallel make) make CFLAGS="%{optflags}" %install %make_install %files %license LICENSE %doc README.md procdump.gif %{_bindir}/procdump %{_mandir}/man1/procdump.1* %changelog * Wed Sep 6 2023 Mario Hewardt - 2.2 - Adds Azure Linux package - Fixes memory leaks * Fri Aug 11 2023 Mario Hewardt - 2.1 - Fixes bug that can lead to crash in monitored .NET process - Adds thread id to profiler tracing * Wed Jul 26 2023 Mario Hewardt - 2.0 - -gcm allows you to specify generation or heap (LOH and POH) thresholds. - -gcgen allows you to create a dump at the start and end of a GC. - Allow multiple thresholds for memory trigger (-m) * Thu Jun 1 2023 Mario Hewardt - 1.5 - security hardening * Fri Mar 3 2023 Mario Hewardt - 1.4.1 - added the capability to dump on .NET 1st chance exception messages - added wildcard support for .NET exception filters * Mon Dec 12 2022 Mario Hewardt - 1.4 - added the capability to dump on .NET 1st chance exceptions (-e and -f) * Mon Sep 26 2022 Javid Habibi - 1.3 - added process group trigger - BREAKING CHANGE: rework CLI interface to match that of Procdump for Windows - various small bug fixes * Tue Sep 14 2021 Javid Habibi - 1.2 - added signal trigger - added custom filepath for memory dump generation - various small bug fixes * Fri Apr 3 2020 Javid Habibi - 1.1.1 - implimented thread and file descriptor count trigger - added polling interval switch * Mon Dec 9 2019 Javid Habibi - 1.1 - Added support for .Net Core 3.x+ core dump generation that results in more manageable core dump sizes * Fri Nov 8 2019 Javid Habibi - 1.0.2 - implimented -w target flag - fixed pthread cancellation bug - added additional error checking for null process names - implimented a minimal kernel check validation - various bug fixes * Wed Jan 10 2018 Javid Habibi - 1.0.1 - fixed potential deadlock upon malloc failing - fixed improper process name parsing and sanitizing process name for dump file generation - fixed various typos - fixed post-build check failures on openSUSE * Tue Dec 05 2017 Javid Habibi - 1.0 - Initial release ProcDump-for-Linux-2.2/docs/000077500000000000000000000000001447614355600157365ustar00rootroot00000000000000ProcDump-for-Linux-2.2/docs/cloudnative_kubernetes.md000066400000000000000000000133171447614355600230310ustar00rootroot00000000000000# ProcDump and Cloud Native Applications In today's distributed and cloud native systems, easy access to diagnostic tools is critical to ensuring the reliability and resilience of applications. Here we'll outline the steps that are needed to leverage ProcDump in a containerized environment. ## **A note on security** A core dump is a static snapshot of all the memory content of a target process. As such, it can contain critically sensitive data including passwords, social security numbers, credit card numbers, encryption keys, etc. Please make sure you have the right processes in place to uphold the confidentiality and integrity of the sensitive nature of core dumps. ## **Running ProcDump in a container** The simplest case is running ProcDump from within a container. A few easy steps are all that is required: 1. Make sure to include ProcDump in the container image. 2. Connect to the running container. 3. Run ProcDump. 4. Copy the core dump from the container to a suitable location for postmortem debugging. ## **Running ProcDump in Kubernetes** Instead of adding ProcDump to all the container images, a more common scenario in Kubernetes is to deploy ProcDump as part of a diagnostics sidecar that can share resources within the pods. Enabling ProcDump to run in a sidecar requires a few additional steps discussed below. ### *Sample Application* The example YAML snippets in the subsequent sections are based off of a simple .NET Web API that exposes the current weather. Additionally, it also contains a sidecar Ubuntu container with ProcDump included: ``` FROM ubuntu:jammy RUN apt update RUN apt install -y wget lsb-release RUN wget -q https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb RUN dpkg -i packages-microsoft-prod.deb RUN apt update RUN apt install -y procdump ``` The complete YAML file can be found here - [Kubernetes Deployment YAML](deploy.yaml) ### *Share the process namespace* ProcDump monitors the specified processes and generates core dumps when certain conditions are met. As such, in order for ProcDump to properly run in a sidecar it needs access to the other containers running in the pod where the target application is running. The easiest way to enable process sharing is by adding the below in your Kubernetes deployment YAML: ``` spec: shareProcessNamespace: true ``` For more information on process namespace sharing - [Share process namespace](https://kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/) ### *Target process runtime may have additional requirements* Most of the time, creating core dumps of processes doesn't require anything beyond sharing the process namespace. However, in some situations, there may be additional requirements. For example, when using ProcDump to target .NET applications, it will leverage the .NET runtime to generate more efficient core dumps. ProcDump communicates with the runtime in the target process via a Unix domain socket that is by default mapped in the `/tmp` directory. In order for ProcDump to have access to the `/tmp` directory we need to make sure we mount it properly in our deployment YAML: ``` volumes: - name: tmp emptyDir: {} ... ... ... volumeMounts: - name: tmp mountPath: /tmp ``` Once the volume mounts have been defined, ProcDump is now able to communicate with the .NET runtime in the target process. If the creation of *new* volume mounts is not allowed, we can change the default socket directory by setting the `TMPDIR` environment variable to an existing volume mount ### *Use volume mounts to share the core dumps* When running ProcDump you have to make sure that the directory where the core dump is placed is accessible to the sidecar. This can be done by telling ProcDump to generate the core dump in a volume that is already mounted. For example, in the previous section we mounted the `/tmp` folder and to generate core dumps in the `/tmp` folder we can run the following: ``` procdump /tmp ``` ### *Use Azure Files to share the core dumps* Granting access to the generated core dumps via a mapped volume typically requires an additional step where the core dump is ultimately transferred to a location where it can be accessed for postmortem debugging. You can eliminate this additional step by using Azure Files as a persistent storage volume. Once mapped, any core dumps that ProcDump writes to that volume will be stored in Azure Files. Azure Kubernetes Service allows you to very easily create dynamic files as shown here - https://learn.microsoft.com/en-us/azure/aks/azure-csi-files-storage-provision. Below is an example of the YAML that creates the persistent storage in Azure Files: ``` kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: provisioner: file.csi.azure.com allowVolumeExpansion: true mountOptions: - dir_mode=0777 - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict - actimeo=30 parameters: skuName: Standard_LRS --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: spec: accessModes: - ReadWriteMany storageClassName: resources: requests: storage: 5Gi --- ``` Once the storage above is created, we can use the below volume mounts to get access to it: ``` volumes: - name: data persistentVolumeClaim: claimName: volumeMounts: - name: data mountPath: /data ``` Subsequently, anything written to `/data` will be available on Azure Files. For example, if we run ProcDump as below: ``` procdump /data ``` We can now see the dump appear in Azure Files: ![Core dump stored in Azure Files](coredumpazure.jpg) ProcDump-for-Linux-2.2/docs/coreclrintegration.md000066400000000000000000000126011447614355600221550ustar00rootroot00000000000000# Procdump and .NET Integration ## Core Dump Generation Procdump is a powerful production diagnostics tool that allows you to monitor processes for specific thresholds and generate core dumps based on a specified critera. For example, imagine that you were encountering sporadic CPU spikes in your web app and you would like to generate a core dump for offline analysis. With Procdump you can use the -c switch to specify the CPU threshold of interest (say, 90%) and Procdump will monitor the process and generate a core dump when the CPU goes above 90%. In order to understand how a core dump can help resolve production issues, we first have to understand what a core dump is. Essentially, a core dump is nothing more than a static snapshot of the contents of an applications memory. This content is written to a file that can later be loaded into a debugger and other tools to analyze the contents of memory and see if root cause can be determined. What makes core dumps great production debugging tools is that we don't have to worry about the application stopping while debugging is taking place (as is the case with live debugging where a debugger is attached to the application). How big are these dump files? Well, that depends on how much memory your application is consuming (remember, it roughly writes the contents of the application memory usage to the file). As you can imagine, if you are running a massive database application you could result in a core dump file that is many GB in size. Furthermore, on Linux, core dumps tend to be larger than on Windows. This presents a new challenge of how to effectively manage large core dump files. If you intend to copy the core dump file between production and development machines, it can be pretty time consuming. With the release of Procdump 1.1, we now recognize if the target application is a .NET application and use a special core dumping mechanism built into the runtime itself. This renders core dump files that are much smaller than normal while still maintaining all the neccessary information to troubleshoot the .NET application. You don't have to specify any new switches to use this new capability, Procdump automatically figures out if the capability is available and uses it. To get a feel for the size difference, let's take a look at a simple example. We created and ran a new .NET app using the webapp template: ```console dotnet new webapp -o TestWebApp dotnet run ``` This webapp does very little and as a matter of fact we won't even send any requests to it. Now, using Procdump (**1.0**), if we generate a core dump of the web app we end up with a file that is roughly 18GB in size. Pretty hefty for a simple web app that essentially does nothing. ```console -rw-r--r-- 1 root root 18127292104 Dec 4 11:37 core.3066 ``` Using the same web app, let's use Procdump **1.1** to generate the core dump. This time the file size is much more reasonable: ```console -rw-rw-r-- 1 marioh marioh 273387520 Dec 4 11:44 TestWebApp_time_2019-12-04_11:44:03.3066 ``` _Please note that by default the core dump will be placed into the same directory that the target application is running in._ This time the core dump file size is only about 273MB. Much better and much more managable. To convince ourselves that the core dump still contains all the neccessary data to debug .NET applications, we can try it out with dotnet-dump analyze (which is a REPL for SOS debugging): ```console dotnet-dump analyze TestWebApp_time_2019-12-04_11:44:03.3066 > dumpheap -stat Statistics: MT Count TotalSize Class Name 00007f7b2f5e4288 1 24 System.Threading.TimerQueueTimer+<>c 00007f7b2f5e2738 1 24 System.Net.Sockets.SocketAsyncEngine+<>c ... ... ... 00007f7b2bcd4a18 397 109816 System.Char[] 00007f7b2b1514c0 628 110601 System.Byte[] 00007f7b2b145510 509 166528 System.Object[] 00007f7b2b150f90 4436 342956 System.String Total 32581 objects ``` How does Procdump achieve this magic? Turns out that .NET introduced the notion of a diagnostics server which at a high level enables external (out of process) tools to send diagnostics commands to the target process. In our case, we used the dump commands that are available but you can also use the diagnostics server to issue trace commands. For more information, please see the following documentation: [.NET Diagnostics](https://github.com/dotnet/diagnostics) ## Monitoring for exceptions Often times, it's super useful to be able to get a core dump when a .NET application throws an exception. Starting in ProcDump **1.4** it now has the capability to do so by using the -e and -f switches. To better understand how ProcDump accomplishes this it's important to note that it requires ProcDump to inject a profiler into the target .NET process. This should be minimal overhead (unless your .NET application throws thousands of exceptions). When ProcDump monitors for exceptions, in addition to injecting the profiler into the target process, it also sets up a couple of IPC channels that allows the profiler to talk to ProcDump (and vice versa) to communicate status: ProcDump acts as a server that listens for status messages from the profiler (success, failure etc). Profiler acts a server that listens for cancellation requests from ProcDump (in case of SIGINT) In all cases, the profiler will be unloaded from the target .NET process once ProcDump has completed monitoring.ProcDump-for-Linux-2.2/docs/coredumpazure.jpg000066400000000000000000003660541447614355600213430ustar00rootroot00000000000000JFIFC      C  u" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?jQYQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@WM@֡hmwMX Ƽ@- Q9+QC/"iG#_ ?t]-((CkG|(v<:|B.5O_EҀ!gJ+QC/"iG#_ ?t]-((CkG|(v<:|B.5O_EҀ!gJ+QC/"iG#_ ?t]-((CkG|(v<:|B.5O_EҀ!gJ+QC/"iG#_ ?t]-((CkG|(v<:|B.5O_EҀ!gJ+QC/"iG#_ ?t]-((CkG|(v<:|B.5O_EҀ!gJ+QC/"iG#_ ?t]-((CkG|(v<:|B.O k/xc^N[0i6Qf]bG EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP^_I^y^_I@yE</k@kj0Np6qi2:B&n^(ʽO)K_ I;nzlYK:F} *:=ʹsRHk#VSA'OxhMVe;[qv""[I:VcP$#5Юou(&'ɿ+p+֖R5#$ۤt=*8e9BXEFm-n-},jo(&?foxß |ؼSfՠ@W5_Ɵa/lV+:D퉑[s8u)Ey=a?t x: <K$Ho2`sSxdKuj?~xH;x$еB2rU8c w7/t r7Y}oJp]YTf?ouxPѵ[gԴ"1VpyGEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP^5٠^y^5٠@yEPE?/7׊uq%`oO"#&GePsN(Nyb1-'LӵmHZmSE WB<^C0|iPEPEPEPEP^؃/l`4KIZ^jAw*oֽo=~0mnu 7ڦf0$F@9柴ÏxijkW"Dn|EFX}P1  ٕ){_ړqD_i?#. c;^iB`6ПW+GeOῄb]SX1ƫ5Ԓ`1 5㟆g7< .]n!LLx+J,>i!Voď#OW/>-SxWĚ~%ׇXd*Ny~e Ah/ [d8nO;a$c6uY^7YPW~ȟN߈.ҥ߃9h.mURyo$Q@;5/6> %.ƙyv hG ҵ"~趟>0~ Owb|o=rK'A$qi<ŴW鮱l}?g>#KyZ0M.Y"1$mF# ePERW g|;{{Mk᥷˙o]3Ĩ;Fy{O:ÏEӦf%p^NmG*dT?aʒW1ԣ%+.f,nݟ~f۴c J2Swʒ敒/):_i!"Y|I}\T#^cmcMQuwhi0%̗"1f_<wVU"ؚ]fgڣˀ,Lm|#j,p]XpU>Af(4iS%+_\M]jqj^ b$gNMʭJq&E(MEo|.P'9THP"T AE|A OᇆO|uxGú+Km9t{m -g1XUEN$]y8xVo~Ŀxs/"KXjZ|vRE ]Oyշ3ژhAM7i<⯋Uqw]Ka-߈ZBm7rcC*]` ?oxLG?~j0 AV YXpCEӢ?~; .? |;aӭwT.K&e}K'vv3> %xEubG949jcRSLK|6CZRXGC9 n=Ҿ%Ӽ-=Bcl#MXm*eR}gKR(2\Ey E{C֣bcJT9vQRvX6[-JTJQEA e?~~2uubVٺNoL ǻp{~W_m~IGẺƷQ2d2JH_xMB>"{։v|*޴t.Xy$cgnPo٫V?_ <3k>*KjPּ5%&`2ʬH":~GgB?4m,,2$,HIRzE"W5P>k|S=C/[nUk KnIdD}Kr1_/^< x@~ X+o3ۣ׻-6ʪwbxlb o~&M[YWLm1@D`ǰ:4'RxCS?Zx_6/.tZ ,šOC}!z[VLâVo[I|`~!|Mc-Q>kr4@-]6n~:gC[F_"XN{(n0~WЎhz+|=_|A ;㷼d5{\TcV\ldWRQE_7>nĶq[K=W}J9xDO `z'g ={֞ Yuiۻ;%cLve8+Ԥ[iqYVs%V{cgVz|=kɤ$Zcݶ qp8`2Tԩ7'A˖QQɬz+>ocӫ(S7)rFo~{nۺ>>]֝_Xq"?R$,:pݏO9 u~/G!UTK6/!o4OёC\{j?m}Cᦡn,tv71̢Us+†7 ,?"XFRQ-w+=,tc'_#ʔ/Z1^r]ַVR(߯~2 {#:iޝe3g#xeVFFGq^ _߱7S>"|R]٣)gS3G3-|Wu*cab 2+K ڛ>o:aimSoXIM |E~~GgRυ ]bk/ƍ=V".$|uLr@#>7>6Foi~ HЛ]5*]`#t2dRѿ̸tW$1|S#jʡn7.q|E}"/xj//6d$2*C$@ʺ)OG5ϴB6g1|kp;x|Ѿ"xV}GP73EԡWȹ`p{zὅ,Dh{JucIr0+/utEz%_ҊؾkrVS;߲ƅixcZKH'#u@^> wEv_~ +q ~P[H>0>ny=Si_p­yPubGݒ崡'~U*l8sF%V^_58s9vݒGQE} gᯋT/^. PygOड़Y _} uyo9 @GMa~<-i`2CwlFF+_Jj^wMGŚm"[dFvYbXvdl|s Ư#gg4~+YxMx~_c?~LӼUm}M}k{v#Q4o ?8ϏC?i_:~ I[_W_WUf2̄ڬL#yUq)[ _ t \EexG2nI^L#qMx=$o?>]o:g<%W{X ! λu05O~%~ɺTQş [}&x/J\xU3C6-v\V)*3@#Q_pj_AM]9+߇w,QyFUR A1""9cbdav4 eQH4$Aoiq)Yf| ws-C( 4*|2Sm&yy֯O$תM +^x¾: ޛϨͲH@Hqۃ}-?Dž~ Is +|M $m䜌W5qQVa6بBP:^v}O+ZU%8%7&yz[^lQE>t$i$(1<s_&}`+OK< ~|?@k-GǖM~ ;k-ʬsF!C^3/_ G͙t=V/.9-2cy'v01LGWWRC>->-xľ umvݒDHTHY9f'oh-~.Ӽt~ Z] eI#˘߅B>Sh~<*~!|s>ž+%dDW7{?u\|Ieݦ:|\Zq"[ksobwH | E{\|Yg{mÇM'_?Jp qH? xWvm_VKwSjI3 сlLR rW՟?>:[F!=xvN!pk+ = ׎~??bڟMWncFS e`9ֽqy 'Wnj.[6ZCNy*h&^^?G^oךܐ%c5*"$g-IS\aeyi)ITѥ%m^o㎖cQΫ)NMьqn/k)^\ܼW ~CW)_k|S=C/[nUk KnIdD}Kr1@Z+<1Rj x~ Ac $^sq~#9 F|M ~V}G>|<%WL'5MG]ԗŷG㦅%#( ,$.~fW1Cƞ$;CTn# s4@ň{Vo+ i6ag$3?Y0ISr!22T p3+W GGhM:Mgfٮ.NwsYeTW O#_ǟ٧=#PGi.oy5\N>4|%֫G5Bk7$R8Sv mOA5gS,t*-:{4.ޱI\rnwwr_~mmϙ蕮?EDPVR4}.V2Y|*[i@v*S\-#9VJ+Toӥ(79ICRwQݮݴNNV>?|>"Kk&Hdj,Exv40tԵn`Ep ϵ_ |3OiV_4AeN䱎E!ވp@7 'f]Sht[Ru6\+d\;qz&mZTk׹{֓kK;uݞsֺ/s-t),[mCV#GJ~E 24O73ѭ+k:l q+*@NOBOxm CRْ$(Y 2A_i] MXxvZa.oM96,֭'E&}jlno[R\[ ay7nhʀ61@đ|T*GFD(d H>wA?k4^7nkk>jv_l#[;g{6wx䍊l9"/l(m[}r;'ۦOr qѐ;PQ.٥rxJHy@}+o<Wj5|A/mNZyf..Ku21-m95YuK۽KPs-4ӹK1&)EQEQEQEQEQEQEQEQEQEQEQEQEQEQEWkMGƟ6hGWWkMGƟ6hGPQE%fM'ʶpG}m/?L~4Fzbxc>2x*6ZC.1are* ؂Ki+Fm`O>½Jud&嵣vݬս/:R4)'עWoe7ƯxwQk_i%U x\|L.:Wq}W4}[ő6?/2ŦLZ+Ʌ]c $29 &SNF-ޕm5űݸb`+|O}Cz֩\jNFp+PzeZVIr6zJ\k{Ed_,f7S̩ӌiE'IhybzEn_W&ԯ2\Jr1E𓜧'9ovϺ#AY-[$}]P<=$F o\/Ӣjw8NN!cqahu3FaxrK5 RF-[tpUUAQ~@Ssrl?8 |amDZvH(T( 3ÿW:I^h?5H|;,ȺF|mEbY8&<e!x/_7߅|I_ N#%ӿu9Lϐ  Z7"ĺ,Kvz˨Ǭ7n=k{WCďŋE]in`HN=(TU \Z˨YYrPk*Mfb s.-[_<xcT7u/ qm'IfK2`E- ;_?x Ao m}]idZBܲ/ۣU>|? Ev~0u dYkUVXl_/xSp2r_zSL\I̛*_1ݓy57~:wfW|cyu3VV񸐖<[֋?w~ kğ&;|zu qè UU C|J|J~x2}vK.QE;mۃ+?GQ|c㋻5) ֮u9 S+LT}+sF2w!ů> %/Ӽ(iPS|!W?7+~ ޹ ֣mX}5&qHe\rF>a_+~$| =;?6)> "ǾeQ^)쟧]?k)l/φ>gĿ-3Rѵ iS-c+qҦ|/| ~ xXu_230I I?=kgg?<c_m'4?S*Os|LS, $5]JI.R7WoIjzsT#C C 3k ':MJ-wOOaG`̻q5O_zĿگ t+}E4CI-NCCIB;W m⿈?OcOv _ͬFiWmaFkRb<0;ҾLwſ55ǂK3mD,&x[]]28"4>~?g˫xƞBnL{:0:='?[tG^Z-ܛznFg8H'ᗈ>Yu^ ?Z?[adH{+#\3 N_"|`EOڃs.M_j_eyco.t6N> g@bYoj$Pǘ}~\|GC\O3oߌ'[٩hͅ,d:'$Ӹ~oǺN|PլtN7‘+<; /kE3ni~$jZ]]"KI *`X ) (C6<- _24]oWS0ۜnFq|[.+?N, ~Ÿ>|9ռ[߆^44KȴoKNER#A0S!ʜ 3/ wY$O?n7ݿ~yݜQ{AV=6O["Ԣ|cr,0S2ӦA|WTr<2cZ4Qud*n!=k城LGUk M#<8#o>&jZvWҼxrď i-*g$2A]p`~~6̩sDȇuGh+?jXhH׀]S:ڌn[ucDp@QE!6c=co7%ۻ7Hz)vzg9]W:/4F-#Aw }SNֿ~*JuuM_ƞTI ھ:Yu)ԌkF*2e;GHm=.{/R[Z:*2e(*Mk[;Y76Zd cZk]JԭbuĦ̼8ﱥtQ;sȧi|Qr/_Q~&C&{E:VHf.ZGy߂cV 5a_-m෶ʷ8HbNvd$I4SK,:*FU%%)JQ_I7nJHS9Fd$ԣVmVWk?Jh"ѵwS)H{?TZbJ:c/|sBE/յk_jI}ܚ.+|w?lg{>h^ :u^\Mr-ҋHiVGg@]۹3D2?h>'k}K^1ԴHq_xqhsG."X`!έQ!|z΅ !SI <8cSd$#߉/^Z*kyg;Aqm"Hea؃>-~>1i~:ƺd%^%n:22=@~ IPu|)fzoM~3֗6 geMll"+ǘaT$xbt|mYq=mP(F~V(9_ۏ^%{Y?0"0L{1ݸjߊh &sލE!@m}W7ݎ\~.L o‚xQk.,xPmkK ԭ)5 Me*ӥo-e* Fy~QHU_ًIQtw_7 HK 2̟]) wsj#?ë&Z|oKGE$n\<%9SqrJ 8S~Ok|.j)(NsWIr.5:?wI?Quۿu~4IZxDonaK1c]_q_;/K 5e[ Jjv@A#vq&'a*JJ5!7hBqmIVu{*Eg=)ee?1ҵ[ SE ,.*@ E?X<wQ|cN0 h)OigbcߡBk(l|¿|9%>m]W\"8bxddl~^M1|k,|Knok^ʖVN;q\,x~t]sĺxZl/ -tج*T@JwoƷZ3|Ao'wA'M%ާxk Pd"̐5$nIV>Zn+_O]7"i:ޏj6&tEwHp^BGg+?\?c7%w cyqubLx\qE7OٓUi][IWlSH|/4|?zlo & |=fCy׆}MG\J ]D9C~^+Ŀ~*|CυumMGPf.ib^BXKI<["v#kkRtS$́@}+gƯo|#wu&]6{lew& m+*r+?߀?Q?س◁3O[\{>(|Ȟ@&06x2*x-\/=b+7d9 ` MYտiω:{O_|Btk)۩5kb)t\ʸ&>nxS{'9|G }GʼtGvf]ߎ~ѿn*j>MRլ<1h˧ۺ-ztw~0_oIKv5-Jh5!4Iþݖ'&j#Ɖ >]AN)rI>QUi! /Wxh{鋦h qn(WrH}5I3q_ĺ]ī9.vʒԒx aat|?A6%޿$tV܇H'&CL1nIr/޽j:޵L]-$9,ORēNcRf(O GV_Zx@\17 $42Z\ 9$lQ }AҞ4=~;+D Mn[+"vǞ0xW>/6^l7zԷs]G.IV*4𲼣oh ^Ee{MO.:Z11e(NjiKNwwk|)6Ԋo@$e Kc:\ q,dzdUJ+C !x  ~|?|PO= R:+xVm4\qρٳA <vVql^{"3& l s5gO/ss7<}_z:c\yԶ=o_>"|@x_6oJvz(XE$JBKn'w5O:|O%2U>㐋_ьzW~ >&=u_;ÚkH]I>TOȘb57ƟSOxm@ڤUH?wy`gދ/xX?g(oV6c5]&ȑFterTg;Ϛ~įgk~:6%'xK:EquWDd>nM|=w6>WynuE qHC2> Y׵]K[u}\yrY4;~)Cmh:}jc \]%+_ ѵ/Q5?/{kg |)7>k_|hzuЍt5Xf[VPrW(>$$R}FvLj빳ȀKj:ſxKY{n:[+!^BYBW|^kƱ0.GooC +)84Oexš'dˑ(\0t:ݛVUۊUv'ϋƏ˫+kh,v(עE~yUUjr{~ҡJ4hF1VIlWǏAgW=Ǐ♁A_dkD2fa!28㑚IGd_7&?<M1@5l gzVH0nu =gZ|Ic^ _wĢrF9FyC_'W_1?|-x&QmsUլg92I"- kG7槥^/iy:mƽ2ŊZiǒNd u?Ƶw^|kw>)Koj>!F|$͘c2pv 3(zitZt*?"O셭xoú߈4 X2]nfxԈbK ҿ?<yxkZ={BMV"{)HUBxgMNmB/h{}&#H+4f`wa^-~?g"/}š߃P1iֺ͛]ܬ7C̔C Y<\(r$0d+|N:݅}LZUىWr#<0BjO_$6"#_Zj^&MNQ$QB$c4ޟV^8~~?S~;uoâ˩ P$\A4p4LNH)Vǫ;}}#a?Þ0_jZmQw:mo+ҿ8>?gK>G灠IuAw% Cq\[n[GŸڍu[ׂjv-gNQTE&⇸~>!!’ O\c8!X)O~_Ys<گo6SIwBf\yZRL/w![ z(aEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP]izBxGnӬ|[e,nnvEUmW$+@ [W>?Kxo]^yEz)o \{z+-+]uy7Es|==wP–χRWWQ@ [W>?Kxo]^yEz)o \{z+-+]uy7Es|==wP–χRWWQ@ [W>?Kxo]^yEz)o \{z+-+]uy7Es|==wP–χRWWQ@ [W>?Kxo]^yEz)o \{z+-+]uy7Es|==wP–χRWWQ@ [W>?Kxo]^yEz)o \{z+-+]uy7Es|==wP–χRWWQ@ [W>?Kxo]^yEz)o \{z+-+]uy7Es<[{x ׅtX[mu[>+KX`SqR4o&-$xbKPEPEPEPEPEPEwC{M'D24v4PN2G>)Q]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4]*Я/ ş+4Z5 Z,;KI"Fb 3x5@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@>H' ǐ5߃~+xnDVX7vg8ؽ}+NguKyA;vm_A] >SUxa1UIJZFux\E(9o$սyO?_ tOM`ni_N@nyݜ+ >6~Ѽ uiRJl+K3&:~hn\[G.J NG{6{(\F"n%Zҏ2ME'd|Š+4$C4O h7:γdGKm[hݰw| E~V@~?h??iYě$ך۩AX.&2$s#>Z($fDy?7<_Ğ5'X5@jV5O$>-ߚH9z|UwҞ7~—vl3s $90@v +ٷ Ή??4 /tZKK~wBGSySJƤ(s e!_w|#G4u ZBJRo|FA<+|d/-2|\|gu_IϮjs"B4 *x474O:f_>׼ _˳Z@a5#Kr1I_9% |elz~Qk fC4Y+$ĝ~z"o.F{$I/=7CZd[?dEwxQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQ_O6x3|[B.VӴ> 896?#D1_>88|/xƚ]Ν&i_^I-2˲(՝ǁf8+?e˿Y8ߏ,u|?w&lU=QղWЊ 2G/ ;^JkKp!UʔvZ??GJ>.|>Ų:tI[.ks2/Bs+/?w/x">x6T\Ts9x%㏏g|Vh:Mƥ-ͫ1G=x?Pk8!܊ +?Jo =PK aѣf42*&~Y7 o:&k>xJJܜPQ__I/!K?|qƗ=ޕy20x.%FYH2ēW; bi_fLZM-^ /J @WaW>=Ly -4m&}F8sgH8j?sYN߃ >xWZ},b'(ϣ)H>3%'XۛZM<Lxǰ۱WqeB@~x` \?]jg'F۟zd_xqSthڨC6p|c|(E`'\Zh}9m<֊o?ſ}w ~#xC7t_ ^ڣ/Xdw]>X'HgrG"x =:+(σozK/QΡkvSPEz/d? x7roKIwm.6'N?j)umM7(r~1&zWux"Kk!*XM52vzCxJ mmZ2)$nTvhWv;%V䷊i?Kkuvg:wMF_o{ﺺ9*φ= TOMvev_mb;x~E{<;K0 ůPm(|K_\t0u*TP~ROgo^{IoKNMU_J'omä$p4{Ҍ::d)_Z/dt][Wn++9.1$ $VefSk+MחncG5DV2hZ7f?D(/mOnkH.kimgvL<9\xl* 2Č*8T!t?vϗMQ43l5ZZWt뮌ĢuXlt;BComK,TOWyh׾-ծuoRm:H-Yqy^AX˱5pSto|8jXajM)6{ZϦ+Ҿ]l/+3ioA$Np>=Ji*i=CzuTmSmog{z|m/z'bfjW*Ha|?|kUVf;xpǃg5ik7gOfю]7^_`[_ou[8 YKҷt@۾/=e2pohNJ*JhaEJ2(w8~/xkonq,V$GQHRҼ/]Gc_^Ic\!>UOZ|Gs4o%̯Zz(QZ>!]WKtƻOxLўܧqZK{➉ؙʤ/Xb4 cUR֩^8hɤ[N2m[}7ln? 1w ʰ%UA!W?f= D!ȶr\H@q[bN,y[n>8L ZWN4kEi\;W'4VGuy 呻>ث>-k?-ފ$M\u۽F nYO:7gcTyuyj֫˹EtR|!d^o t/qf?mۏ|U5 GH-/g fعp0''{wb7gm|TU 7zƧmi!vύO`O5|"fu 6~ ypH, 8>C ^m(AL'敻sWu[Qa7pldicUo#1ׂgY.#x;V懮_(Vж"䤁HVVb:~#W*B圜Sz'%m=]W_s`Nt54j/n[ly]%մW2C*4rr5yNFzTQE!Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@}7:/>4kp6HbFE|Eta12֍x$]\aڍD]f~{_+I5۪%FͅBn^ߵW1#&y/fݷȳW~%cfdv?Ok'@ 8u&i/"R62@ܜ_U|4qG<qxĦF5qm3Ĩ$]߻S|^Gg1̧FuKc|8w`eoi2ZӦBI_L2<{#д_od.yY'(OjGc㶉:¯|66w:[x-lᶖBd NHp$O⟴5w2ǧ~Ӷև4bG_M~dQ@'_?^W: 4M٠SrY\6:zkZ~?74?(/no3N(I7>yiЀ&X5E~~^"_//Xp8F 7Wi W"3:3,uOU#$:ҿ$_&}]P?iψ+i⛸|$"X^|K??gO `S~͐|V_\>!𿁭aDe;|˲_KGM+⼒ { !7@t?!%+Xg!v7W~|Y=[OOe֙hw1_^qQF|^Ctžc ":y*}+o,oW<j\~%#_4'rF8LxHQ:ZXǣ-ΛM*rrA_ ݾ/+gҍϣ]ߔf@5`D͂E?V??ڛ n.}.m LYtkTdEa=pX& [!Чn[cd^[cAv۩%9f0\?s_ǘh( |#ߟᶷ:^1l 8pnnb3^3b~&~?>'u+ x+a,c*3p|}@?\d/ kE~ M≥sxn_Ԭ۞&ա:gj_?bho?񥥂Z jw blJ1˟7 SC3K. nm,gHTzW<${ki_1G>!?| Im牴q>n,#77/eq2ӑ4U.1+>)3o} 1<9?S9[DŽ-:L=/Qx`2,<۵ A+; 7t|owEfby-!Bv8&> g~V_qjoWEǃuc"HGc_O;KikᎧMNHMfrs@z=p|%IAjZoa1u*Fc /#.{t7s/ڣ׼]}mgowv0YY\H9/?b/,ⷎ|S+v>!>;H #T9P~vP?ߎ;p[Sj?muxL0ۭ[ J9'{?8fֽ6i6X jZzn^4S\HDjT 4-{it(u5)tya43FN"2[/M w~-y1]Vr]ZZzHR"v&j>7K<;axAѼ/a0'm$d,$rps ?gPψ_3|>H6zՄwRY j؏deWWƟx,,>a-GU/T"#c_m,Qks zk-:PѬ G2n_' OQ"ZZY/.mTLI1z }|H"ኆ id/_b#>6?fO3SKO6q[4Z(DC-ÿ&G[utx ; K!iL~LIA4P>|Hjw5Y5{+fybh@bTmcҀ?S0|_Qo^hlc@ X怄@4l~QNIK4 |xfG7> мZf+pL5V.!/9W+oh _Eؿ}RR%0ctMsؿ.boV_bxNm6xXC 'O?Y׉o$nya}Γ',MX)拒c*[gį kԲ<io[ ]uyVeM %3ʯVߋnWz G_]E;2(mIFGr_>=k=c "[~\=֤N&ɜ sD i& ͤv f'/><*;v'%8~?oxcOԾ$^# 687J4{{ĉTr2X.7O|QM`ϱ}aOg?뱞ysL"KRɡyqh<]re77̓_J~?7ּ5dAuE&V۲! q{X&4[/kzuE|r]IqttF8_'9]QXC:*i׉tx޹;$LIĪ]~?&McLJ<]mi:φu58,uHH\:,nQgk{Kc~'x]\da8QUTX7C>F>|/}NzV.l9&ߜrk('KߍkvxzZдfOWm7T ${()e hY*ן>K4K7A!LY^p1^./Ǻ&uJuŸG_x/jVAB %,Nŀ *?W? ~In m a>!'񷈼>S>4K)nt=5y[$ّ( X}? OxE4~i4zG|$,Kؕ|I2w]1? '_|)__Z7/kRIky$y r/^Ÿ Qׁ }WcЬ< $V>M ΂ٶ,c+IM;K VVW ݤ̳q_U Snq|tx{OOx,ۘR3pvO[P5Ko=ZK˙N^i{Oր?{~|/ѵo;q><-ާڔ8o7)^ۅB rH+ ƍ/5? |Umg+D0100Wng0ii>,^JnK!;vU9WŢxkῇ5iMNcboomf@n1z#|j}񼺞_ͯ?S5+YEqq4Cފ>n^|? 5^[[ES|XvFMHl!??~*~-1g~|;ƺ͔/k_ qmy `Ekc/dgojV~% hey"Hٕ~4JA3tGoi_~/#ɩV,苵Gh?At1id0>5w %~:| ̆+3XcFNvv{yL #wS:g71nkn?(`x :O>2|A{lW%4ƺVor ϑ9ƺŸ)NiY.঩/='grDŽH6u޷~ZΫ*Ehb6| )|a|%l|Aɫj76R2_ݙ6v OA^}_RƕF&K,3s s(e!R8V|Lk. xBY[LVR7hedqu\4*҄%NowfvuV;dX%V4c8K8rWӳȿxhk7:g){ ÆFM/>o/~_u n m:}poRĐO|z O% W1 J:4,QX (mO|V|_ipImDiƊ44=Ʋ󚚋j*U*c9JꃃNֳs5K;;.a; rF}CE}1CK?4oZp/n%sH'&`AF|/z_4(lz!݌ Pxוp:z*rK9ۚMOW8+b1kKHԋ}ci.~zu_hOhnMsX5G㶂(lqATsY߶e:XH.1i!GbI_G_ xU*ǮhMD2#p0J^"nwW2_JO<-#Muy zVU]Jk[%-7ze{i^21Ni*t+;n:\z-o߱>-}cAճxG/>nJ33;xsZ}6?kȟBԾb*1^O~hx,m4}dSyIbA0  ~0ju]BO=Z]6#5ۆ tMq)fnAx1^yj%5QJ0aͺ惕'6zcw럈˥陰-Nxɻ'dSoe3|i 弿.n%~Yٮ?³l˽KúF{n-lNN3ԑ{O_UO5SM|1oa-?3iSj| /cF8*je~j7}M yF:ZTj9KލiԌMo>[. i3κ_ λ'<5a^ZMDž,$f^THޡT#מgŸt6ɭգ$o#'-F+[PZ6pɥiq de  -9a\ K:ooiԔ/^.EXe89ZV)=7_N=+JvVeۢW ʲ$J+ڏ^ kXfN Ҕ_4<֦ZjxsO x'ō-5/7PDv=r;giKVUY1,Q{*@8 ᆲS;ɫ^SUkB)4H8c8xӽ׼mvz|?6kn=yKtQ> #0;z{߱lj![^DWT/Z|_ԼK@cm~Y%̲K: hKS;:|7qv׈ 0e99q[O Tۦwv|QVJ#Q)Qu.m49&wjR*oَ <;⶿z z4i*0s:hu8 fK#w^ 1(XhĎ]@tUca䵞ڭ=JƽĞO5\/^9:U8C֒5f(K.MF{uQKvjk=Bc)$[-deKfD6p* 3ak>GWJ[Gm#r?ZFX:T9 )[^*j^o3̰)cS~Wi8;kh#/]ԯ)),e<|f~*x/-MgĞ2ƳjRK ΘH `Y&1#}oFg=O`yx$cNNy?Z|#{i4Q߮fw*vN>Tԛ%N2-˙(|<J8*gkܭ}4=\ko,}kM?Mg)KpG* ؒr8LĿkߴ/]Q> 0%$~cfek;VjgV|[MngjJVNBkz?|I^'eҮS\0A"b$Rkԫ?SJя4ekN儒^/eֱR_F.W4&FZMs-wFWu w )I'jW$zW~ƾ_x÷wVX%M(Ͻ|]_>/^%axI౶|?,tuYNY%f5&iO ?yEY7$}u#Zr\+(ZKgvmٳ~!wm1xV}zב>}a9U+c ֹߏ^3(kxcPѴ}CBWVr [n8,KS;:|7qv׈ 0e99ӺDŽ<o Gl аf9o)+(=H~Y7 ʚڼ%ˮ҅Z49>Oy*GQ'hߞ/MU+_G;_^/t?Omo|biR[Hpe'wg#h1XƵ{oWQ";mBKeF$rʹ+iokBQ_ˈB&9'0O>vc\h?ebFbF9ǵs9Ea:jҧ䞼wKuɱrxjSzڏ.״ZӖͽ_hs>=޲;vF#An1:_x~~4&4K Mba/8ps~z]>< iIт;6CX'zz>Ͳjku;-Vsm)$r 9$9U, O5kΪy4:rͶrNIi6sUqu?}Ji8*vjpI%޾Gk]a;^Ӕ68$g#tſ? 4V4–wnlCArzn>xgŸt6ɭգ$o#'-F+WP<=Ť}wvcHlN{xlI_ک)Yw:p"1bqoi9VN otz_^ۿ\$4Osa&@8o:WϑxWtu[c=HB)bp=sPWu_^:}U𽝵[ A3dHn |?J/O𗆬)jriq WƋ;44dWf'7UTUq~],/&+}58M|II{ 7NvIuRQVQXA~^5J``\\hxw0>]Z̗Sscϯk¾.jjR^}_Bt0wqSI + ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (~~_ A5';zgmiVMM,.{ssHcC=Y _h^1R_jMOBX/ Yʞuډ$yf e<QE (t߆~4𷈠vrVl˦]Nw|qc]gůڋAe?C!_M%5Px S7nsJv9Vkgzii⯌_@ѼVuY.S7^C:C.pw\)?߲2|1=vIJrF\59ƚo ^־/km%i4ڮ]c# 8co?Kw@οyɪM.hp_<C2hZ_{BShV<6(Oo7Nw\F(3ƛ?ş|mVKXFZ+ 2kQx¿wh_eEkfҮiV9&&e\Ha]' >xᗉ~*:_^4 ԯViT4a&nq|~~-?tgi1 |g?0'/s C/4!b@=8m-#ÑƚF.aŪ^fyvK#o3` ~~3?g_؇G?Wүl?ƾfkx.d֡w4[]" MT~[dhhecʣ8a|\ⶮHy@KԾ>x/9? \T^Tkywh[kg%߷ÿ]~~oiww—1M%ja͵Fc}-q?fS oʖо&xq."2d.m'WDu)<>]DŖ~:۳kJ u8JeyvH*dq4{RƉ O~Ɵ?lxZbW IʍvXq,?+_M)<Se>ZW<5Y&J9|O:TRNwmM|g iE>;*xn?Ý:=o[{e-k`$a, wAlF+տ^Sƾ)h ڷ#k~}߇5/߸K')ܨ?Zx_l+~?{G^?Va.mۍ!/`,NwvK=/6/}K>iq HWʮ̳s,x~j'_Y_!6055" yd4S;7| {/Qmk~ԵԾԓ[e샳ݘ|ܬ`Z9ld4'^1G/c~'.%DC+Bǀ 'boH//|yk_HX5y _,1=  Կc~#|~'kwx^}F{;1oP]4$sO-c$ , ρO4߄?-޻7*/)#6] ߱kzBటuO+>;x2xڥ~<'$06I_'im~̾&?6a٣V[W~&xe]1I"` N6);߷ǟ+G~!hkZS]&i,;y nßp߰//'NJ=_fI GFV@/3_+|raO8X|+nGOx^3rvY_ O %kޡGlA}U^8& |9"+ijzχ焨Ia2V ;I ok>]υ~'/ xNU<fic(S'ːrku6C mGKş| YľTGpbBIDFG\`ſ~% (? Icx8`|Yΰ$QʞHo.6ګ"{?G4bYI<(8Px\>$x|[Ɨ>*ѣΐ ,QV1CPs J |$Gĝ&-wI]YM2\E$in Nk?οm%GFI_T~><|Gg?ҿ >|JkOڥ7 dRKmA'[>黀7?QCQREbE`ƨWGG;o:/SՎwo9gXe>S9@Q@Q@Q@Q@Q@Q@t >/ NjFfڎ|4eI@k˻K,Q #C/$pI:|B.5O_EҼ?F ?ZQ>!gJ,e ;Ծ&xN^X1KjB+#UX"Gz="E| ;4?J<|9E,@_|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEz#_ ?t]-(kGy|(v:|B.P5O_EҏF ?ZWQ@>!gJ?QC/"i^yEu~WDX[еgs<<؞- ,L $BĿj> _= [>,juO÷Fku[6TH"lqъj(_~ gǃfz-m^1֏5d2˂<%FTQL(EPEP_@~^!wH|ZԷmh! uͼ|~Y߳_h֓^$ٮN2EVc,njPW]y_;ĂE֎t*䐘, h\q\vv4MGIԭ˘N64B=X(5ǟhBk($CgxZ *EH.y:zs04-:x=c!W.յ+}0 !72zw;>x+V+ޱ/iCr 2S_&WП-?h0[\xW-m{ɩ2#z*gr 8_jm!'FԵEVEN2U q)c &-7񭎆5UޮofՎyPܻ^p3_R>gfxB|=^1xmL$tr ^T00+̗|.{_٧SdW$V]ꚓEk /"l,i|q?ğ 麤7m#O5ϳ݀=4G*Ԩ/8<xƟSx]8ws,rEv0ǽ|)x3E|+rծ]VKt\7$r0I UOj #zC4O+υ |@skWl"NsrT 3H{'gnzϠAmh5a&K9|ǧJF:|I"w_Rq_~ knF x5{˻ ]>iE')gH$~ķ-"UWv w1Pk__xV&[ƍ&!{aZ ёI9+8 _P^9ߍh:_Yjz~mo#Y2gbj0yJb"Zxm~5na8mhԎs|?cOz>55=CW5I`7*L|1Ӽyk4^/x>54}Ql4-1gaO|^ڷO>Y|i_Y^ǠsjT"BSr O~?Ÿ7t]3ýWVq^jW! t9l+<FMK?I>i knKo`&H6C>#WvSwuk^6t?PE&"{TXQbmC t_'hWkX_m+뚔k -|@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@_5ٯ^y^_5ٯ^y@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@z&?SOMyvQ YNno0u(^U\F-=;67jZ|uh AxĀ#p+?h-[LWpZZ>4m|-t%铀Y7)o \{z+-+]uy7Es|==ww=7Iόt:%ؖ"W Z_7Es|==wjj}37w/FeK}GU$# @?m–χRWP/_~*%.wsGh996Ó׊eſ^k/A.[+fi *+UTmbF/RWQ [W>5 خmfE,NQaea#WC~2O[ϐKkR{8ɽ+s|==w–χ9 Gα⳯]ڝָf[tve\'~၃ k'u JPqss+K4zXRk-+]u7Es6/jxb]5=A4Yܖ rI%1ip8݌⦗񾵫4~%k `g_0 cZ?Kxo]G)o \{z+okOӯ_T:LnNnYdswsWqſVOjz~I_1? ?Kxo]G)o \{z+#ğ?Kxo]@gDk?xi`Z(H|PHU5 A獦_5ger|cW g[-+]u7Es x>?|[mCLúE:Fm;fHl]1ǟN+ {|pm;Km.D+3mPXַ)o \{z+-+]uk|ww⏎c׌Hu˨m-m.bVl2W.|7eojzٯx,ː)#8lKxo]G)o \{z+е jeޝjṵWR?CZ9⿉G$&~͟'OQ]c~–χRWP!Y݌{> vR\]+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+(C-+]u7Es<|==w–χ+Kxo]G)o \{z+/lE<▵_7 W _귚I=G&Tcxw O;9F׳!M =*n|;.5o{6gr]0ȶHb1ӽwXu_JZ6iմ91,5J\E;i_NOcazLye6ڌ2xi>8<mpލN_$VDeSgܰHh랼zV]U՘o-gEj+*K\Ú?BNjU !_g)Im5]_ߒq2էVZ4WnM(u45 AOiqc4fk$@ep8ܤqXu7W ^Xzj馴i}SXlL1Z{?]z5(|.!|O1+x;{ϋo2YŌrLXrQ_}u|ak iYo|}@%nls yS_J|3Bt  ]xU?vx?qq9c>0 L7G~%.ǎ>xo~4>;KzZW!Yǵ4n8&/I?WJ}&ⷆg v &](m+F'5u5_@|o-'ǺAO:^v57A#^GH (ʲ~0~3{^(߉% >}rTRUh>a; +?L{pϏ_߂_5y)Eᛟ꺵pndɄmb d76Ikzf3UE4sFX WCcRrq<W{kUg9DUF) ⷿo?k[:u}WOlmVbM0elGIϽȠj+ٳګ|gᏏ:}~vxW0^XKk$&!,[\ʠ2{_{e;|?oUkyHFp>._ QR_ ^jq6j|R\ɟ.tYKD[k⾙^} ;g;\xzA % DZ$б y+r?xsnh+#'= /3xNWg \x;tW,Q7-Tꟲ w_Go ]ZƉu3i WM>|]}TRwiהQBUſ{sz7ڲi~|: uF+ײxRZM.اݧC)S6o1H?Wz_~)/,>+_Q~ xoFfC?|.UdBP(2Oe@b_cW|,_8_JYe5xm~n<a84~r\ڴ\FRFݪ@P|[<' o֙wKce|x7T$RE|'7 &DaFÚŔSlr“rx_GG^-~/ Q֧uƱb+xW\ke$JrX)8۞D@w;3-iX3Wi x~_/#ᾏ52K=@.?v\?I|%] |?h<ɭءxِg quW9{@?[~/C>oټ>[ +*b?_j7}igDq"c$kӾg 3tK;"xE.KyfTe7!33H+O:a(Ï^ׁ{T5xM~[2OvcoH ybY~~? ~>|;{?v,:?<ine."'*LN>o6rE~oQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQ^ SJCO&RWj4W”ҿP?My}4?h)ơ}@_Ez)M+~5??Ji_i^ SJCO&RWj4W”ҿP?My}4?h)ơ}@_Ez)M+~5??Ji_i^ SJCO&RWj4W”ҿP?My}4?h)ơ}@_Ez)M+~5??Ji_i^ SJCO&RWj4W”ҿP?My}4?h)ơ}@_Ez)M+~5??Ji_i^ SJCO&RWj4W”ҿP?My}4?h)ơ}@_Ez)M+~5??Ji_i^ SJCO&RWj4W”ҿP?My}4?h)ơ}@_Ez)M+~5??Ji_i^ SJCO&RWj4W”ҿP?My}4?h)ơ}@_Ez)M+~5?gE4P\*8ր2袊(( ߾io/7s [[I ݄N.qlJ2=G s7xiVzƓxSV%JΑu{i?ukr`~|gdߍ ?>=Cᦟɠg(F7?xKH ^o #. 宧~nOټ (+Fۯ_eP/S<6ٷ_?sS6Ms?%OŞ&{t_<آhu( ^)~*ʟi]xvVC" upFR _G(h?5[xS7>Ѵ6kf3h&H`Wns$_>Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@~:>_o]xx REλo:ngF!H$gg|Q n\k+u-A&`xPVWB}Y+F18|(}φ~ K9,/|Y-vfo6U T7@ l_MSN[^:x_BDVpTtI0fԿ,/~2xnj_x_7O ]ySC{N?Hlx?_%ȿG~&xrJ׼!{858Y6Eޏڧ?kKkYk07אiIOW :z'/_C~îhoo h3 >PBLAȼ Hg?'q.o۫ǭ{Z+{O:f- -轑 8WEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE{a3YqЗ#|j;iWaڪ@c|=GoXG|GGO^<GLޓjKFfi<ɻ!KmBM~>@^ >|S-x/>#'*'._E;_|ֹQ]7@дx&yeHAff%pOqUբV.>cؤ冩+O (:Š(((((((((((((((((((((((wE{x/Z袊(i[G17P4{xX}rU?Ej}F O|5?O3L +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> +Sz7jfzˢ>ףφh^> *֥5>:e.;Z@}^vZjvrʑ\&Y6=p?^^ՆSne_<('5A?l>:h9RͰ#<$UL*Tp,;O7W Z~gCEkoix{PJя3[/z_G;bx!_Wğ Is"K-M-E(U-cy?|i`N7l'vu(PٕSq_ N_xt3RǓyP_Jɺ焿qYx֣minu!deeccrŕAn| ]h +0R4Q3nb27;^wkg|eҼ5:\[ۆ wڤ -O s;?:|9ᯊSm+wiRRm@HdĦ<%ϬkzPx஫gkx~/6;]W>`N+AGI_x*]]Yma_ïZ-洒:@@SF+1OxS|Tyjp_x3ǂd7uykkwYBE|g/ 6{OW KԊ}Ym}>VmLa4'ƻo#,uov5u)GRzG߶şzG>"!Idrb*Y?~ !EiPMhUn#n0$49#b0T#֙W|GKojSQͨ\Is"ĻQYر ; R((((((((((((((((((wE{x/Z袊(((8c]Yk[QoNl!̥&0I*I;PdI9'\' />u=cŸ |5w}+D"c70Ñ_MxriU.o}#y)fi1vz 6> ʗuƛpI ăEq5f9v'٧mَ/ 5(I]5onQEvQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@@V~!j_ u/;a01t x:+ZQvٜ%UaRiLGY?^ oyٯ|O=\kU? xcº-,YեgVf SvKk o,5 sQ_^Z8txrȠ*, ּ!g]7 ׼M3W4iݵܶػNP[oE_Y燵I͎e%Rk@DJ1%Y]N֏+:H'Fs#!@? k_Oa> ]l.VK+gBgmA3pA]w#~_/_*YEPuKIS-M xX̅?S= T|C?قKmoWGv["HdV6@oPOI~ϖPMmumRheBD겆VS =1@zcßV/&QQ/R\~& Lyu@]@bC@W|Ik_ڷ^(=h'O#2r +&xO7f exB(r )ٶ2[_qgyev_" Đh_1@ ʿN_þм$#n4A`sU@TVeld W=K_aڛ–㮹ύzx.[ﯬwXoGϙcda|tw4&ëO#W~j0]JUw,p4G |`#{4_u|8w>:os:%if{.?ȗ/sp]D9>_^&N-<oſ?hkp|9s-TKl>qF׷n|SF KG]oewIndI!hBU9%ľ~ʟtς |C]u?h+}II@f9FJ,|?Us!~,uzT^$WI&$]㝍j&~߳WGO◄A[/B'fc&.6 )( v̠^ x(π|;'4pD|Uˮj?fn9h< AM*ƁÞ*ɞm/K-J(! vF1_&?W|i LZ ΥZ$"̨,xd_ڛ? m<'&Mv{EդXDk@f 4lN>5O Jo_ |WV5Շ!>&_Gbf%sk>[|Mt:߰x#B~7<9lGik '9huÜ|3{!_nه^9׭#en|mK|ʼn abL@}h?ex(_\~Ѿ${:׊~Ӽ[hd0qs%!ep7t/k|4[ |-h,4TFpV(9X79ۚeT6Lj FԼ7E-uct pOBk}B >|tW?~.'u'P&OѣB4"Wؿ6V=k'?.t߳V|>Yݻos_<73׊4}SEҵ{=>po3Rpw VkYcXSSۧ"|xJDn|| |?jO_ ?7^-tchWȏs"ʁlɠ/hO:߉Ac^ }W/>xv¿xv 4qi"d픔g>wtp7y(O~7F t5[^klVVmp^Vy9 f'`;b'> tQ1?/g7-Ondy-id||8w>:os:%if{.?ȗ/sp]D9< 9GRF?24rI; 5wf/'~K 7ߋ_tH|D*|HdPw8#C~uyyOԮ~%i'Ӽ_ڝ$s[_]4*ͻc|?^ h$m\jULڄ+ܻC9q~ŸU<_'ᗊg𽟃wL=eTZkۧ 6`a?lw 4+k-Knn3ƨK)4vr1kږ'"7CexRMwDJi-Y1'e 7e0Z{f=җY4=Q8,h׈Bx*̎Ҭ3I{Cx᧌>.]rM¿]>a }LČZDiLem<O>:L~ ?Uh/x?ÿ~9n/&+'!-r>/b?$5KoxV}K^%_#5='ZAC!+Si:_3 W]I㥹kB[UFUqJB( 9UnV-`}OI|e;;EK@m >Qry/+hsV_Vv9􈤓z(Z E]G$(ھ|N?a/xH5A7[B- .%H'? ~'|eNWQ]I#z$W(T084_)< ^y}eDM+RC \!RPIȭ_oڣ?/-YiiN$5A-+4}:[G?X056ǡחDhM5ݤ2ϝbے K |)*|rEgOL$lK*6kTm$p8,'O~_P^iA}:[(3G<(ڣr̸ۍ^%|%5o=bM6V%dO-ԍʻ9FE)?>^k~t -F84 ^?+O٫ )+>M3/㛴$yov`{Gƞ&/|}.-KǺQeӫ-?_xVC-7ZupiکIyrۅhl|gzG Ydۣ^6z6DnBm#i?y5$gWw3>3js5':`t\ρ*?_<Ox>- $!UUAff &{o>x/>nMx3'S48TI0+>lzJǍ4? ȓjѯ)?ε'Z >#5kYZ2nYFa.Y@~IEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE߲ ㆕^ҒkR"=JDDs8 |݅Tg~?Um7?I .Ϟ睭8+(oڣDwc~4[5K(vP.#W0S׾(™-3z}Rk~4.ǔ0nXWu 蟱Gu_F7N_)٬fX |hƿ??-mL|x>cRWwUw$6p+S?k&/rw$Σ-O%l [ٿSos_lg^y|<mīc*\,c"Yާ(8b7xv# CN]#Ğ 5Mj]&pۆw ~f?9x~Բ|E/ Eu %"K8Ua܍d'oHaEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPW#Zoįkݞ{~,t?W^%O'ׄ>j_ FkM5{G|BPTqC_$Rl$y<:=G | W/YSƾ3]c\EC,|D|^E|i~ܞ'}jmv7.aKY/3.O rE|R+A*3# HAൟW׸G]ZR-]M" $l kzt3rXmQEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_TOoWEv_Uܾ"եcYfq}*QEQEQE 6_wᯇ|3"N[2K97c)Qn$pŠ*~nZrv#å{(*TQWllkeu'" mΣ3Dpb4#Ŷoޭ*;0y|pW9JRI7+le_;LFee8*GBzTJK.B.4՗ڃ>T# eW^MEpo| ]xZWy.ZԦPid$!XI$NkK)}r-֦man};_ ~ҟ|RfUPЬu˫}68Émrr:W,zRxľ hVkij3]:~|d\(~]^?.,6h76BI(dv-FI*@\]'Ŀ3Ɵ ağh #򥕗W@M2GJ_3|ix@$խtI䳶%R"f̀n995Q@?>6xǿv^+xdZ'"hqd61Tq gLW ~ oڷz(q Nj|=/>*y%Yӵk]BwH:8%nO&~֗+k_tkyaM;SݽʳEdT/^7E}K~y `to̶!\p1\-lⷷ xGQST@U|R|oD|@$ό|AmuKZmda.$s"$pIOBEf>&I_kZ'L>خ] /AWD4ώ47O-m-|kCH",U@|A%^L6zljdm!'&(S"!< {WQ@ڃ_ x|p,^|A]jb݈(&zW E)?#mc.?ug>rzVU_׳;|!~2}k⇄t|i- Sʼӵ?vivq8 %= SEq[}#(qF`*>`]3kO'/D]wa=lw3s/,l/_ yGǶ7"H|MiBx*$Hk)p$s iH7u (|v|oS+>*oK3tlۙrI9UwIɪmO_~&x?|ڷ/Nvr2V^θaיQ@57u㵏ڻ◈~)[xOkgLjn g-!TnlEwjߊ?oi߉>>񽭛CR7*#8*/Ŀ>]/0\0 d]@ZwTOxx)xjک(|s 38E_p?x}Vk7^8o(|k}uK(Wy[|^!~W6xǞ3@s5=Bڸ()ue)."lo$lSF4Ě:ŮMmon,~Wsҹ(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((oq%,NGCB9ƙEo|Go^)\wsE&_}u""E2*`RUEË_OMzo6mɨJm)V-yk)RAp$g:?|aw?G~#HS5)/b5L ?.8σ*3ĺj(`:q82 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (:_?a#?۞_|-mjs^S`~l,Fњ5c)3<. (M/{1ݸ/߾SՏ|IxKL{=]Bgӭ.Gn[I :_xz6kΥxq$Ikm-$m,; XPi?ľ֥<Zܛdߺ\,e@gQ?Ÿy{njږ +Q̌K$5Q@kO ->}m u9n}(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*Ɵ%su Ga%[cPo=?kѿS5E05>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ5>ףφh^>(Sz7jfzˢ-jSY˳]A]1"㿭U@Q_a>_G'ᦋKX$rм_1Pn(?+Oxo= mu &IXBrnMx/5xR?>"SXnͭ;<=$RT<љNj~0:}έ]Jm.[ i%17.G}@0uH~%~)B/?/RT+Yl(5qcgOGմ?Kԓ˺ДbR }ڡ@?wúƲQ02=iU&R<#'/(a V^ZzU6\[uv]f ̤u#'nb񵞏? HjQOg#d6_}qgJ,x4DB c /+i[y2N` #@|#|wx3 Kxk ,zëy0ܸXA >89?۟ >7!f7nLλ?0:%NHv(sf˟O?S^X~x U.S.y?|0=n(4y%0."ȇ9L5!E?aedZNjgBMψt5\Jb8y06_.rX?g*oOω#4N܄)*ed q[E~'gōWď|pwO:'džtK ̉K ~M.B^y>|oB? /o?|< w~`u[$K?v_P#?g?Ykm74KƺN"eCy%]#](_KO?!]V3AmIRLO ˵dn]eUM~FQ@Š((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((ProcDump-for-Linux-2.2/docs/deploy.yaml000066400000000000000000000035341447614355600201230ustar00rootroot00000000000000kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: provisioner: file.csi.azure.com allowVolumeExpansion: true mountOptions: - dir_mode=0777 - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict - actimeo=30 parameters: skuName: Standard_LRS --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: spec: accessModes: - ReadWriteMany storageClassName: resources: requests: storage: 5Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: webapi labels: app: weather-forecast spec: replicas: 1 selector: matchLabels: service: webapi template: metadata: labels: app: weather-forecast service: webapi spec: shareProcessNamespace: true volumes: - name: tmp emptyDir: {} - name: data persistentVolumeClaim: claimName: containers: - image: webapi:latest name: webapi-container imagePullPolicy: IfNotPresent ports: - containerPort: 80 protocol: TCP env: - name: ASPNETCORE_URLS value: http://+:80 volumeMounts: - name: tmp mountPath: /tmp - name: data mountPath: /data - image: sysinternals:latest imagePullPolicy: Always name: sysinternals-container stdin: true tty: true volumeMounts: - name: tmp mountPath: /tmp - name: data mountPath: /data --- apiVersion: v1 kind: Service metadata: name: webapi labels: app: weather-forecast service: webapi spec: type: LoadBalancer ports: - port: 80 targetPort: 80 protocol: TCP selector: service: webapi ProcDump-for-Linux-2.2/include/000077500000000000000000000000001447614355600164315ustar00rootroot00000000000000ProcDump-for-Linux-2.2/include/CoreDumpWriter.h000066400000000000000000000044611447614355600215220ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. //-------------------------------------------------------------------- // // Core dump orchestrator // //-------------------------------------------------------------------- #ifndef CORE_DUMP_WRITER_H #define CORE_DUMP_WRITER_H #include #include #include #include #include #include #include #include #include #include #define DATE_LENGTH 26 #define MAX_LINES 15 #define BUFFER_LENGTH 1024 #define CORECLR_DUMPTYPE_FULL 4 #define CORECLR_DUMPLOGGING_OFF 0 #define CORECLR_DIAG_IPCHEADER_SIZE 24 // Magic version for the IpcHeader struct struct MagicVersion { uint8_t Magic[14]; }; // CLSID struct struct CLSID { uint32_t Data1; unsigned short Data2; unsigned short Data3; unsigned char Data4[8]; }; // The header to be associated with every command and response // to/from the diagnostics server struct IpcHeader { union { struct MagicVersion _magic; uint8_t Magic[14]; // Magic Version number }; uint16_t Size; // The size of the incoming packet, size = header + payload size uint8_t CommandSet; // The scope of the Command. uint8_t CommandId; // The command being sent uint16_t Reserved; // reserved for future use }; enum ECoreDumpType { COMMIT, // trigger on memory threshold CPU, // trigger on CPU threshold THREAD, // trigger on thread count FILEDESC, // trigger on file descriptor count SIGNAL, // trigger on signal TIME, // trigger on time interval EXCEPTION, // trigger on exception MANUAL // manual trigger }; struct CoreDumpWriter { struct ProcDumpConfiguration *Config; enum ECoreDumpType Type; }; struct CoreDumpWriter *NewCoreDumpWriter(enum ECoreDumpType type, struct ProcDumpConfiguration *config); int WriteCoreDumpInternal(struct CoreDumpWriter *self, char* socketName); int WriteCoreDump(struct CoreDumpWriter *self); char* GetCoreDumpName(pid_t pid, char* procName, char* dumpPath, char* dumpName, enum ECoreDumpType type); #endif // CORE_DUMP_WRITER_HProcDump-for-Linux-2.2/include/DotnetHelpers.h000066400000000000000000000010041447614355600213550ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // .NET helpers // //-------------------------------------------------------------------- #ifndef DOTNETHELPERS_H #define DOTNETHELPERS_H #include #include #include bool IsCoreClrProcess(pid_t pid, char** socketName); bool GenerateCoreClrDump(char* socketName, char* dumpFileName); #endif // DOTNETHELPERS_HProcDump-for-Linux-2.2/include/Events.h000066400000000000000000000025251447614355600200520ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // Quick events implementation // //-------------------------------------------------------------------- #ifndef EVENTS_H #define EVENTS_H #include #include #include #include #include #include #include #define MAX_EVENT_NAME 64 #define MANUAL_RESET_EVENT_INITIALIZER(NAME) \ {\ .mutex = PTHREAD_MUTEX_INITIALIZER,\ .cond = PTHREAD_COND_INITIALIZER,\ .bManualReset = true,\ .bTriggered = false,\ .nWaiters = 0,\ .Name = NAME\ } struct Event { pthread_mutex_t mutex; pthread_cond_t cond; bool bTriggered; bool bManualReset; char Name[MAX_EVENT_NAME]; int nWaiters; }; struct Event *CreateEvent(bool IsManualReset, bool InitialState); struct Event *CreateNamedEvent(bool IsManualReset, bool InitialState, char *Name); void InitEvent(struct Event *Event, bool IsManualReset, bool InitialState); void InitNamedEvent(struct Event *Event, bool IsManualReset, bool InitialState, char *Name); void DestroyEvent(struct Event *Event); bool SetEvent(struct Event *Event); bool ResetEvent(struct Event *Event); #endif // EVENTS_HProcDump-for-Linux-2.2/include/GenHelpers.h000066400000000000000000000066641447614355600206520ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // General purpose helpers // //-------------------------------------------------------------------- #ifndef GENHELPERS_H #define GENHELPERS_H #include #include #include #include #include #include #include #include #include #include #include #include #define MIN_KERNEL_VERSION 3 #define MIN_KERNEL_PATCH 5 //------------------------------------------------------------------------------------- // Auto clean up of memory using free (void) //------------------------------------------------------------------------------------- static inline void cleanup_void(void* val) { void **ppVal = (void**)val; free(*ppVal); } //------------------------------------------------------------------------------------- // Auto clean up of file descriptors using close //------------------------------------------------------------------------------------- #if (__GNUC__ >= 13) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wanalyzer-fd-leak" #endif static inline void cleanup_fd(int* val) { if (*val) { close(*val); } else { // Make static analyzer happy, otherwise it thinks we leak when *val == 0 } } #if (__GNUC__ >= 13) #pragma GCC diagnostic pop #endif //------------------------------------------------------------------------------------- // Auto clean up of dir using closedir //------------------------------------------------------------------------------------- static inline void cleanup_dir(DIR** val) { if(*val) { closedir(*val); } } //------------------------------------------------------------------------------------- // Auto clean up of FILE using fclose //------------------------------------------------------------------------------------- static inline void cleanup_file(FILE** val) { if(*val) { fclose(*val); } } //------------------------------------------------------------------------------------- // Auto cancel pthread //------------------------------------------------------------------------------------- static inline void cancel_pthread(unsigned long* val) { if(*val!=-1) { pthread_cancel(*val); } } #define auto_free __attribute__ ((__cleanup__(cleanup_void))) #define auto_free_fd __attribute__ ((__cleanup__(cleanup_fd))) #define auto_free_dir __attribute__ ((__cleanup__(cleanup_dir))) #define auto_free_file __attribute__ ((__cleanup__(cleanup_file))) #define auto_cancel_thread __attribute__ ((__cleanup__(cancel_pthread))) int* GetSeparatedValues(char* src, char* separator, int* numValues); bool ConvertToInt(const char* src, int* conv); bool IsValidNumberArg(const char *arg); bool CheckKernelVersion(); uint16_t* GetUint16(char* buffer); char* GetPath(char* lineBuf); FILE *popen2(const char *command, const char *type, pid_t *pid); char *sanitize(char *processName); int StringToGuid(char* szGuid, struct CLSID* pGuid); int GetHex(char* szStr, int size, void* pResult); bool createDir(const char *dir, mode_t perms); char* GetSocketPath(char* prefix, pid_t pid, pid_t targetPid); int send_all(int socket, void *buffer, size_t length); int recv_all(int socket, void* buffer, size_t length); pid_t gettid(); #endif // GENHELPERS_H ProcDump-for-Linux-2.2/include/Handle.h000066400000000000000000000024611447614355600200000ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // Generalization of Events and Semaphores (Critical Sections) // //-------------------------------------------------------------------- #ifndef HANDLE_H #define HANDLE_H #include #include #include #include #include #include "Events.h" #include "Logging.h" #define INFINITE_WAIT -1 #define WAIT_OBJECT_0 0 #define WAIT_TIMEOUT ETIMEDOUT #define WAIT_ABANDONED 0x80 #define HANDLE_MANUAL_RESET_EVENT_INITIALIZER(NAME) \ {\ {\ .event = {\ .mutex = PTHREAD_MUTEX_INITIALIZER,\ .cond = PTHREAD_COND_INITIALIZER,\ .bManualReset = true,\ .bTriggered = false,\ .nWaiters = 0,\ .Name = NAME\ }\ },\ .type = EVENT\ } enum EHandleType { EVENT, SEMAPHORE }; struct Handle { union { struct Event event; sem_t semaphore; }; enum EHandleType type; }; int WaitForSingleObject(struct Handle *Handle, int Milliseconds); int WaitForMultipleObjects(int Count, struct Handle **Handles, bool WaitAll, int Milliseconds); #endif // HANDLE_HProcDump-for-Linux-2.2/include/Includes.h000066400000000000000000000004501447614355600203470ustar00rootroot00000000000000#include "ProfilerCommon.h" #include "CoreDumpWriter.h" #include "Events.h" #include "GenHelpers.h" #include "Handle.h" #include "Logging.h" #include "Monitor.h" #include "Procdump.h" #include "ProcDumpConfiguration.h" #include "Process.h" #include "DotnetHelpers.h" #include "ProfilerHelpers.h" ProcDump-for-Linux-2.2/include/Logging.h000066400000000000000000000027651447614355600202020ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // A simple logging library for log generation and debugging // //-------------------------------------------------------------------- #ifndef LOGGING_H #define LOGGING_H #include #include #include #include #include #include #include #include #define INTERNAL_ERROR "Internal Error has occurred. If problem continues to occur run procdump with -log flag to trace issue (traces go into syslog)" // double-macro-stringify to expand __FILE__ and __LINE__ properly when they are injected in files #define S1(x) #x #define S2(x) S1(x) #define LOCATION "in "__FILE__ ", at line " S2(__LINE__) enum LogLevel{ debug, info, // standard output warn, crit, error }; void Log(enum LogLevel logLevel, const char *message, ...); void DiagTrace(const char* message, ...); /* * Summary: Used similarly to printf, but requires a format string for all input. * This macro appends line number and file information at the end of the format string and va_args. * Params: * - format: printf style format string literal * - var_args: variable number of format args * Example: Trace("%s", strerror(errno)) // %s format specifier required. */ #define Trace(format, ...) \ DiagTrace(format " %s", ##__VA_ARGS__, LOCATION); #endif // LOGGING_HProcDump-for-Linux-2.2/include/Monitor.h000066400000000000000000000045061447614355600202360ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // Monitor functions // //-------------------------------------------------------------------- #ifndef MONITOR_H #define MONITOR_H #include #include #include #include "ProcDumpConfiguration.h" #define MAX_PROFILER_CONNECTIONS 50 // Monitor functions void MonitorProcesses(struct ProcDumpConfiguration*self); int CreateMonitorThreads(struct ProcDumpConfiguration *self); int StartMonitor(struct ProcDumpConfiguration* monitorConfig); int WaitForQuit(struct ProcDumpConfiguration *self, int milliseconds); int WaitForQuitOrEvent(struct ProcDumpConfiguration *self, struct Handle *handle, int milliseconds); int WaitForAllMonitorsToTerminate(struct ProcDumpConfiguration *self); int WaitForSignalThreadToTerminate(struct ProcDumpConfiguration *self); bool IsQuit(struct ProcDumpConfiguration *self); int SetQuit(struct ProcDumpConfiguration *self, int quit); bool ContinueMonitoring(struct ProcDumpConfiguration *self); bool BeginMonitoring(struct ProcDumpConfiguration *self); bool MonitorDotNet(struct ProcDumpConfiguration *self); char* GetThresholds(struct ProcDumpConfiguration *self); char* GetClientData(struct ProcDumpConfiguration *self, char* fullDumpPath); char* GetClientDataHelper(enum TriggerType triggerType, char* path, const char* format, ...); bool ExitProcessMonitor(struct ProcDumpConfiguration* config, pthread_t processMonitor); // Monitor worker threads void *CommitMonitoringThread(void *thread_args /* struct ProcDumpConfiguration* */); void *CpuMonitoringThread(void *thread_args /* struct ProcDumpConfiguration* */); void *ThreadCountMonitoringThread(void *thread_args /* struct ProcDumpConfiguration* */); void *FileDescriptorCountMonitoringThread(void *thread_args /* struct ProcDumpConfiguration* */); void *SignalMonitoringThread(void *thread_args /* struct ProcDumpConfiguration* */); void *TimerThread(void *thread_args /* struct ProcDumpConfiguration* */); void *DotNetMonitoringThread(void *thread_args /* struct ProcDumpConfiguration* */); void *ProcessMonitor(void *thread_args /* struct ProcDumpConfiguration* */); void *WaitForProfilerCompletion(void *thread_args /* struct ProcDumpConfiguration* */); #endif // MONITOR_HProcDump-for-Linux-2.2/include/ProcDumpConfiguration.h000066400000000000000000000110221447614355600230570ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // The global configuration structure and utilities header // //-------------------------------------------------------------------- #ifndef PROCDUMPCONFIGURATION_H #define PROCDUMPCONFIGURATION_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAX_TRIGGERS 10 #define NO_PID INT_MAX #define EMPTY_PROC_NAME "(null)" #define MIN_POLLING_INTERVAL 1000 // default trigger polling interval (ms) #define MAX_DUMP_COUNT 100 // maximum number of dumps that can be requested to be collected // ------------------- // Structs // ------------------- struct TriggerThread { pthread_t thread; enum TriggerType trigger; }; struct MonitoredProcessMapEntry { bool active; long long starttime; }; struct ProcDumpConfiguration { // Process and System info pid_t ProcessId; pid_t ProcessGroup; // -pgid bool bProcessGroup; // -pgid char *ProcessName; struct sysinfo SystemInfo; // Runtime Values int NumberOfDumpsCollecting; // Number of dumps we're collecting int NumberOfDumpsCollected; // Number of dumps we have collected bool bTerminated; // Do we know whether the process has terminated and subsequently whether we are terminating? char* socketPath; bool bExitProcessMonitor; // Quit int nQuit; // if not 0, then quit struct Handle evtQuit; // for signalling threads we are quitting int statusSocket; // Socket used to wait for target process reporting status to procdump // Trigger behavior bool bTriggerThenSnoozeCPU; // Detect+Trigger=>Wait N second=>[repeat] bool bTriggerThenSnoozeMemory; // Detect+Trigger=>Wait N second=>[repeat] bool bTriggerThenSnoozeTimer; // Detect+Trigger=>Wait N second=>[repeat] // Options int CpuThreshold; // -c bool bCpuTriggerBelowValue; // -cl int* MemoryThreshold; // -m int MemoryThresholdCount; int MemoryCurrentThreshold; bool bMemoryTriggerBelowValue; // -m or -ml bool bMonitoringGCMemory; // -gcm int DumpGCGeneration; // -gcgen int ThresholdSeconds; // -s bool bTimerThreshold; // -s int NumberOfDumpsToCollect; // -n bool WaitingForProcessName; // -w bool DiagnosticsLoggingEnabled; // -log int ThreadThreshold; // -tc int FileDescriptorThreshold; // -fc int SignalNumber; // -sig int PollingInterval; // -pf char *CoreDumpPath; // char *CoreDumpName; // bool bOverwriteExisting; // -o bool bDumpOnException; // -e char *ExceptionFilter; // -f // multithreading // set max number of concurrent dumps on init (default to 1) int nThreads; struct TriggerThread Threads[MAX_TRIGGERS]; struct Handle semAvailableDumpSlots; pthread_mutex_t ptrace_mutex; pthread_cond_t dotnetCond; pthread_mutex_t dotnetMutex; bool bSocketInitialized; // Events // use these to mimic WaitForSingleObject/MultibleObjects from WinApi struct Handle evtCtrlHandlerCleanupComplete; struct Handle evtBannerPrinted; struct Handle evtConfigurationPrinted; struct Handle evtDebugThreadInitialized; struct Handle evtStartMonitoring; // External pid_t gcorePid; }; struct ConfigQueueEntry { struct ProcDumpConfiguration * config; TAILQ_ENTRY(ConfigQueueEntry) element; }; int GetOptions(struct ProcDumpConfiguration *self, int argc, char *argv[]); bool PrintConfiguration(struct ProcDumpConfiguration *self); void ApplyDefaults(struct ProcDumpConfiguration *self); // Call this after GetOptions has been called to set default values void FreeProcDumpConfiguration(struct ProcDumpConfiguration *self); struct ProcDumpConfiguration * CopyProcDumpConfiguration(struct ProcDumpConfiguration *self); void InitProcDumpConfiguration(struct ProcDumpConfiguration *self); void InitProcDump(); void ExitProcDump(); void PrintBanner(); int PrintUsage(); #endif // PROCDUMPCONFIGURATION_H ProcDump-for-Linux-2.2/include/Procdump.h000066400000000000000000000015661447614355600204030ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // This program monitors a process and generates core dumps in // in response to various triggers // //-------------------------------------------------------------------- #ifndef UBUNTU_SYSINTERNALS_PROCDUMP_H #define UBUNTU_SYSINTERNALS_PROCDUMP_H #include #include #include #include #include #include #include #define MIN_CPU 0 // minimum CPU value #define DEFAULT_NUMBER_OF_DUMPS 1 // default number of core dumps taken #define DEFAULT_DELTA_TIME 10 // default delta time in seconds between core dumps void termination_handler(int sig_num); #endif //UBUNTU_SYSINTERNALS_PROCDUMP_H ProcDump-for-Linux-2.2/include/Process.h000066400000000000000000000272231447614355600202260ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // This library reads from the /procfs pseudo filesystem // //-------------------------------------------------------------------- #ifndef PROCFSLIB_PROCESS_H #define PROCFSLIB_PROCESS_H #include #include #include #include #include #include #include #define NO_PID INT_MAX #define MAX_CMDLINE_LEN 4096+1 #define PID_MAX_KERNEL_CONFIG "/proc/sys/kernel/pid_max" // ----------------------------------------------------------- // a series of structs for containing infromation from /procfs // ----------------------------------------------------------- // // /proc/[pid]/stat // struct ProcessStat { pid_t pid; // the process ID : %d char *comm; // The filename of the executable : %s char state; // Process State, one of RSDZTtWXxKP : %c pid_t ppid; // the parent process ID : %d pid_t pgrp; // the process group ID of the process : %d int session; // The session ID of the process : %d // The controlling terminal of the process. // (the minor device number is contained in the combination // of bits 31 to 20 and 7 to 0; the major device number is in bits 15 to 8) : %d int tty_nr; pid_t tpgid; // The ID of the foreground process group of the controlling terminal process : %d unsigned int flags; // Kernel flags word of the process. See PF_* definitions in include/linux/sched.h : %u // Number of minor faults the process has made which have not required loading a memory page from disk unsigned long minflt; // Number of minor faults that the process's waited-for children have made unsigned long cminflt; // Number of major faults the process has made which have required loading a memory page from disk unsigned long majflt; // Number of major faults that the process's waited-for children have made unsigned long cmajflt; // Amount of time that this process has been scheduled in user mode, measured in clock ticks unsigned long utime; // Amount of time that this process has been scheduled in kernel mode, measured in clock ticks unsigned long stime; // Amount of time that this process's waited-for children have been scheduled in user mode, measured in clock ticks unsigned long cutime; // Amount of time that this process's waited-for children have been scheduled in kernel mode, measured in clock ticks unsigned long cstime; // For processes running under a non-real-time scheduling policy, this is the raw // nice value (setpriority(2)) as represented in the kernel. For processes running in a // real-time scheduling policy, this is the negated scheduling priority minus one. long priority; // The nice value, a value in the range 19 (low priority) to -20 (high priority) long nice; // Number of threads in this process long num_threads; // The time in jiffies before the next SIGALRM is sent to the process due to an interval timer. long itrealvalue; // The time the process started after system boot unsigned long long starttime; // Virtual memory size in bytes unsigned long vsize; // Resident Set Size: # of pages the process has in _real memory_. // This is just the pages which count toward text, data, or stack space. // This does not include pages which have not been demand-loaded in, // or which are swapped out long rss; // Current soft limit in bytes on the rss of the process unsigned long rsslim; //The address above which program text can run unsigned long startcode; //The address below which program text can run unsigned long endcode; // The address of the start (i.e., bottom) of the stack unsigned long startstack; // The current value of the ESP (stack pointer), as found in the kernel stack page for the process // NOTE: due to race conditions, this is not reliable, try ptrace unsigned long kstkesp; // The current EIP (Instruction pointer) // NOTE: due to race conditions, this is not reliable, try ptrace unsigned long kstkeip; // The bitmap of pending signals, displayed as a decimal number. // Obsolete, because it does not provide information on real-time signals; // for that use /proc/[pid]/status instead. unsigned long signal; // The bitmap of blocked signals, displayed as a decimal number; // Obsolete, because it does not provide information on real-time signals; // for that use /proc/[pid]/status instead. unsigned long blocked; // The bitmap of ignored signals, displayed as a decimal number. // Obsolete, because it does not provide information on real-time signals; // for that use /proc/[pid]/status instead. unsigned long sigignore; // The bitmap of caught signals, displayed as a decimal number. // Obsolete, because it does not provide information on real-time signals; // for that use /proc/[pid]/status instead. unsigned long sigcatch; // This is the "channel" in which the process is waiting. It is the // address of a location in the kernel where the process is sleeping. // The corresponding symbolic name can be found in /proc/[pid]/wchan. unsigned long wchan; // Number of pages swapped (not maintained). unsigned long nswap; // Cumulative nswap for child processes (not maintained). unsigned long cnswap; // signal to be sent to parent when we die. (since Linux 2.1.22) int exit_signal; // CPU number last executed on (since Linux 2.2.8) int processor; // Real-time scheduling priority, a number in the range 1 to 99 for // processes scheduled under a real-time policy, or 0, for non-real- // time processes unsigned int rt_priority; // Scheduling policy. Decode using the SCHED_* constants in // linux/sched.h unsigned int policy; // Aggregated block I/O delays, measured in clock ticks (centiseconds) unsigned long long delayacct_blkio_ticks; // Guest time of the process (time spent running a virtual CPU for a // guest operating system), measured in clock ticks (divide by // sysconf(_SC_CLK_TCK)). unsigned long guest_time; // Guest time of the the process's children, measure in clock ticks // (divide by sysconf(_SC_CLK_TCK)). long cguest_time; // Address above which program initialized and uninitialized (BSS) // data are placed. unsigned long start_data; // Address below which program initialized and uninitialized (BSS) // data are placed. unsigned long end_data; // Address above which program heap can be expanded with brk. unsigned long start_brk; // Address above which program command-line arguments (argv) are placed. unsigned long arg_start; // Address below which program command-lin arguments (argv) are placed. unsigned long arg_end; // Address above which program environment is placed. unsigned long env_start; // Address below which program environment is placed. unsigned long env_end; // The thread'd exit status in the form reported by waitpid. int exit_code; // NOTE: This does not come from /proc/[pid]/stat rather is populated by enumerating the /proc/>/fdinfo int num_filedescriptors; }; // // Struct for /proc/[pid]/status // struct ProcessStatus { char *Name; // Command run by this process char State; // Current state of the process. One of RSDTZX pid_t Tgid; // Thread Group ID (i.e., Process ID). pid_t Pid; // Thread ID pid_t PPid; // PID of the parent process pid_t TracerPid; // PID of the processtracing this process (0 if not being traced). uid_t Uid[4]; // Real [0], effective [1], saved set [2], and filesystem [3] UIDs pid_t Gid[4]; // Real [0], effective [1], saved set [2], and filesystem [3] GIDs int FDSize; // Number of file descriptor slots currently allocated. pid_t *Groups; // Supplementary group list (array). int GroupsLen; unsigned long VmPeak; // Peak virtual memory size. unsigned long VmSize; // Virtual memory size. unsigned long VmLck; // Locked virtual memory. unsigned long VmPin; // Pinned memory size (since Linux 3.2). These are pages that can't be moved because something needs to directly access physical memory. unsigned long VmHwM; // Peak resident size ("High Water Mark"). unsigned long VmRSS; // Resident Set Size. unsigned long VmData; // Size of data segment. unsigned long VmStk; // Size of stack segment. unsigned long VmExe; // Size of text segment. unsigned long VmLib; // Shared library code size. unsigned long VmPTE; // Page table entries size (since Linux 2.6.10). unsigned long VmPMD; // Size of second-level page tables (since Linux 4.0). unsigned long VmSwap; // Swapped-out virtual memory size by anonymous private pages; shmem swap usage is not included. int Threads; // Number of threads in process containing this thread. // This field contains two slash-separated numbers that relate to // queued signals for the real user ID of this process. The first [0] of these // is the number of currently queued signals for this real user ID, and the // second [1] is the resource limit on the number of queued signals for this process int SigQ[2]; unsigned long SigPnd; // Number of signals pending for thread. unsigned long ShdPnd; // Number of signals pending for process as a whole. unsigned long SigBlk; // Mask indicating signals being blocked. unsigned long SigIgn; // Mask indicating signals being ignored. unsigned long SigCgt; // Mask indicating signals being caught. unsigned long CapInh; // Mask of capabilities enabled in inheritable sets. unsigned long CapPrm; // Mask of capabilities enabled in permitted sets. unsigned long CapEff; // Mask of capabilities enabled in effective sets. unsigned long CapBnd; // Capability Bounding set. unsigned long CapAmb; // Ambient capability set (since linux 4.3). // Seccomp mode of the process (since Linux 3.8). // 0 means SECCOMP_MODE_DISABLED; // 1 means SECCOMP_MODE_STRICT; // 2 means SECCOMP_MODE_FILTER. // This field is provided only if the kernel was built // with the CONFIG_SECCOMP kernel configuration option enabled. int Seccomp; // These fields are subject to the formats laid out in cpuset(7) // They will be represented as char* here char *Cpus_allowed; // Mask of CPUs on which this process may run. char *Cpus_allowed_list; // Same as previous, but in "list format". char *Mems_allowed; // Mask of memory nodes allowed to this process. char *Mems_allowed_list; // Same as previous, but in "list format". int voluntary_ctxt_switches; // Number of voluntary context switches. int nonvoluntary_ctxt_switches; //Number of involuntary context switches. }; // ----------------------------------------------------------- // a series of functions for collecting infromation from /procfs // ----------------------------------------------------------- bool GetProcessStat(pid_t pid, struct ProcessStat *proc); char * GetProcessName(pid_t pid); pid_t GetProcessPgid(pid_t pid); bool LookupProcessByPid(pid_t pid); bool LookupProcessByPgid(pid_t pid); bool LookupProcessByName(const char* procName); pid_t LookupProcessPidByName(const char* name); int GetMaximumPID(); int FilterForPid(const struct dirent *entry); #endif // PROCFSLIB_PROCESS_HProcDump-for-Linux-2.2/include/ProfilerCommon.h000066400000000000000000000010601447614355600215320ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // Profiler Common // //-------------------------------------------------------------------- #ifndef PROFILERCOMMON_H #define PROFILERCOMMON_H #define CUMULATIVE_GC_SIZE 2008 #define MAX_GC_GEN 2 enum TriggerType { Processor, Commit, Timer, Signal, ThreadCount, FileDescriptorCount, Exception, GCThreshold, GCGeneration }; #endif // PROFILERCOMMON_HProcDump-for-Linux-2.2/include/ProfilerHelpers.h000066400000000000000000000013161447614355600217100ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // Profiler helpers // //-------------------------------------------------------------------- #ifndef PROFILERHELPERS_H #define PROFILERHELPERS_H #define PROCDUMP_DIR "/usr/local/bin" #define PROFILER_FILE_NAME "procdumpprofiler.so" #define PROFILER_GUID "{cf0d821e-299b-5307-a3d8-b283c03916dd}" int InjectProfiler(pid_t pid, char* clientData); int LoadProfiler(pid_t pid, char* clientData); int ExtractProfiler(); char* GetEncodedExceptionFilter(char* exceptionFilterCmdLine, unsigned int numDumps); #endif // PROFILERHELPERS_H ProcDump-for-Linux-2.2/procdump.1000066400000000000000000000043741447614355600167310ustar00rootroot00000000000000.\" Manpage for procdump. .TH man 8 "9/6/2023" "2.2" "procdump manpage" .SH NAME procdump \- generate coredumps based off performance triggers. .SH SYNOPSIS procdump [-n Count] [-s Seconds] [-c|-cl CPU_Usage] [-m|-ml Commit_Usage1[,Commit_Usage2,...]] [-gcm [: | LOH: | POH:]Memory_Usage1[,Memory_Usage2...]] [-gcgen Generation] [-tc Thread_Threshold] [-fc FileDescriptor_Threshold] [-sig Signal_Number] [-e] [-f Include_Filter,...] [-pf Polling_Frequency] [-o] [-log] { {{[-w] Process_Name | [-pgid] PID} [Dump_File | Dump_Folder]} } Options: -n Number of dumps to write before exiting. -s Consecutive seconds before dump is written (default is 10). -c CPU threshold above which to create a dump of the process. -cl CPU threshold below which to create a dump of the process. -m Memory commit thresholds (MB) above which to create dumps. -ml Memory commit thresholds (MB) below which to create dumps. -gcm [.NET] GC memory threshold(s) (MB) above which to create dumps for the specified generation or heap (default is total .NET memory usage). -gcgen [.NET] Create dump when the garbage collection of the specified generation starts and finishes. -tc Thread count threshold above which to create a dump of the process. -fc File descriptor count threshold above which to create a dump of the process. -sig Signal number to intercept to create a dump of the process. -e [.NET] Create dump when the process encounters an exception. -f [.NET] Filter (include) on the (comma seperated) exception name(s) and exception message(s). Supports wildcards. -pf Polling frequency. -o Overwrite existing dump file. -log Writes extended ProcDump tracing to syslog. -w Wait for the specified process to launch if it's not running. -pgid Process ID specified refers to a process group ID. .SH DESCRIPTION procdump is a Linux reimagining of the class ProcDump tool from the Sysinternals suite of tools for Windows. Procdump provides a convenient way for Linux developers to create core dumps of their application based on performance triggers. ProcDump-for-Linux-2.2/procdump.gif000066400000000000000000320076721447614355600173470ustar00rootroot00000000000000GIF87afw! NETSCAPE2.0! ! ,fzz|rrt^^\<<<Īnnl**,&&$ RRTjjlVVTJJLvvtFFD664bbd..,BBD224NNL ZZ\ffd64,FJ@lp`ddXxrvp0 628tpvpp.0 p@t`b\XX@X|zpt|p4P@RX`.( H@h@ \h`0(0nf`pfpnf|px0,hhV`RT@ľĮ`ZbV|¾LZtLt\02 jpp "( *00*&0^\h~|*:4ƔH:H *,D dl`0(xLDPjdpPXPBH@0`ZЮ <<0|v:8 VPPlf ̜ȶĸ`h| `@0@<44ĸlzhtpH tz|̠`xl`pD:8HLfдxv`Жx$0pxXj0 @px6<4LF@̰$(0xRP`DFP$0(^R`bVDzfp lvzvV`LbPFTPԸ:*4`Ď¼Ē  Ė H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸6ͻ .|>ȓ+_μO/8سkΝ{ԻOt˟OӀAz,Fg& 6t=@<<@F6vᇿm>  0 t q(4h㍊#B<{뵃;XAA#L6PF)TsAC;A;Ifr-)p)t>)p\>;A``>;FcBp (#^3@;n֩馜v)N<ܣ <`O<@@tr  t?`kW@<L l'A<*䢰Ȗk見3P"= SAOl;F@Ae'|SM1Bя6@xD=J.(,7=Ĉ Y]{@-KSBd"bI RJmXguLznC05X[pP< ݾDdp^_܄n #ҏ"G^Ing^=[§砇.n騧~'n/o'7G/Wogw/o觯/o HL:'H Z̠7z GH(L W0 gH8̡w@ H"HL&:PH*ZX̢.z` H2hL6pH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8י:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Y! ,fzz|rrt^^\<<<Īnnl**,&&$ RRTjjlVVTJJLvvtFFD664bbd..,BBD224NNL ZZ\ffd64,FJ@lp`ddXxrvp0 628tpvpp.0 p@t`b\XX@X|zpt|p4P@RX`.( H@h@ \h`0(0nf`pfpnf|px0,hhV`RT@ľĮ`ZbV|¾LZtLt\02 jpp "( *00*&0^\h~|*:4ƔH:H *,D dl`0(xLDPjdpPXPBH@0`ZЮ <<0|v:8 VPPlf ̜ȶĸ`h| `@0@<44ĸlzhtpH tz|̠`xl`pD:8HLfдxv`Жx$0pxXj0 @px6<4LF@̰$(0xRP`DFP$0(^R`bVDzfp lvzvV`LbPFTPԸ:*4`Ď¼Ē  Ė H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸6ͻ .|>ȓ+_μO/8سkΝ{ԻOt˟OӀAz,Fg& 6t=@<<@F6vᇿm>  0 t q(4h㍊#B<{뵃;XAA#L6PF)TsAC;A;Ifr-)p)t>)p\>;A``>;FcBp (#^3@;n֩馜v)N<ܣ <`O<@@tr  t?`kW@<L l'A<*䢰Ȗk見3P"= SAOl;F@Ae'|SM1Bя6@xD=J.(,7=Ĉ Y]{@-KSBd"bI RJmXguLznC05X[pP< ݾDdp^_܄n #ҏ"G^Ing^=[§砇.n騧~'n/o'7G/Wogw/o觯/o HL:'H Z̠7z GH(L W0 gH8̡w@ H"HL&:PH*ZX̢.z` H2hL6pH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8י:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Y! ,f224nnl zz|jjlZZ\FFD^^\rrt&&$RRTNNL664..,vvtVVT**,ffdJJL::<>><BBDbbd 04(TLTth`\زLF@Z`` 0.@ΜȞ0,8İ $.(:<(nh`XN@`rnxL^tDFP 0Lt\`xtԴ("HR^@|ptHFh&:0Ժ`\XFlF^PljHĮv\lĐLjl\4䠈zDPHdjp$ ,LDPtvlĞPXP\jhp@0.lrvxBH@Ƹல<486<8||p*0(x$tv`:4( `|vtvpx0H#d@ p̣T(<0P|d`jVkw# D#8{R /f/gt3`Dd:O"-;5`@'(c<$lvDBp@h ! tB=̂#" -2L7P#&>S͒t 1{ zQlM:H @p7BsNC!X!l7+CO"=pcua*B (ꬷzt;S@>[ 4Ν!7|GxWoأ*3ga>6t/觯~ʯOokWo HL:'H Z̠7z GH(L W0 gH8̡w@ H"HL&:PH*ZX̢.z` H2hL6pH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9YyؙڹٝF9Yy虞깞ٞ9Yyٟ:Zz ڠ! ,fffd224^^\nnlzz|jjlZZ\ĞvvtFFD&&$RRTNNL..,VVT664 **,rrt>><::`Ig& ?H@>XAI6vᇱm>cO\0 z e4h8 =@? DpA0N$cL6PFiSÀA_?Tp\\ |;cFЏ?ԣKJixpA&YЏxPH>u `q03):  T'ꪬwA?ӏ>h qT(JA> 0hh`jVkw\ D p 8{!H f/gD3`DdO ?E@84)@>$lv C2t1)$t?!# }*L7P >zt&1{z,pQl]<T3@p7B C!m)l.7+O S ?pcb}z (ꬷ:|֓>[DЀɼ!7<DxWoأj gϡ>mt/觯~ʯ?_ okWo HL:'H Z̠7z GH(L W0 gH8̡w@ H"HL&:PH*ZX̢.z` H2hL6pH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9YyؙڹٝF9Yy虞깞ٞ9Yyٟ:Zz ڠ! ,fffd224^^\nnlzz|jjlZZ\ĞvvtFFD&&$RRTNNL..,VVT664 **,rrt>><::`Ig& ?H@>XAI6vᇱm>cO\0 z e4h8 =@? DpA0N$cL6PFiSÀA_?Tp\\ |;cFЏ?ԣKJixpA&YЏxPH>u `q03):  T'ꪬwA?ӏ>h qT(JA> 0hh`jVkw\ D p 8{!H f/gD3`DdO ?E@84)@>$lv C2t1)$t?!# }*L7P >zt&1{z,pQl]<T3@p7B C!m)l.7+O S ?pcb}z (ꬷ:|֓>[DЀɼ!7<DxWoأj gϡ>mt/觯~ʯ?_ okWo HL:'H Z̠7z GH(L W0 gH8̡w@ H"HL&:PH*ZX̢.z` H2hL6pH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9YyؙڹٝF9Yy虞깞ٞ9Yyٟ:Zz ڠ! ,frrt664Ēnnldddzz|BBDJJL^^\RRTvvt&&$VVT224.., **,::><~~| TXLLtThZl|v0.Įpͻ .;ȓ+_μ7;ܫiسkΝ-޽ӫ_OW|w$ϾO]=V0 6F_cC(QXς($hkӎꨣA $ F^CaA@)z>|AOphЍCH\v`DeD$s@cP=Owc=2{ ;OT=@ @&W ; $)p8p̠7P GHK(L Wؠ0 ͓8̡w@ H"HL&:PH*ZX̢.z` H2hL6pH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzH! ,fRRTccd664zz|""$^^\FFD**,;;ȓ+_μ77سkΝ<ԻOt˟OkPa>{`0@J*<0`A 6m<>D`P($h"eB O T#c@)}Ӂ>3{)V OHH(Ox[@$#Ap #>op` {!9 @4 c@ T>++Wk(f339<Ԁg@m S >/Aɮ,TWm\<@VP$K+A`6 m.D4M PQ(pCo'Os@4_CL1RB"/O0@CNsBʷO53! d %5txp(L W , gHJQ8̡w@ ӱ!HL&:PH*ZX̢.z` H2hL6pH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzX! ,f224jjl664^^\FFDRRTzz|rrt**,vvtNNLVVT..,::>8R?HbP($h"k# TB&ԏ>0|x<@SO?Wl siXf6)9 pA?3$sq @l0:n=pO J=􄰁 KOUL7]@P'p,$ P}@ lS4Atmx$3Fs@ @ enB)QPhޔWn#O „ P'*6p1?v =Xܙ. /=Ln@=@(.P1ܳDP/53?D'R@A ȣS&zL^:n`3 Z$V?hA z (L 0aZ(8r@ H"HL&:PH*ZX̢.z` H2hL6pH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPk! ,f224JJL^^\664jjlFFDrrtzz|**,VVTvvt::<..,BBDnnlbbd&&$ RRTNNL ZZ\>>yTBJ0`D 6AO;ܣ>,< Q($h"h̳@ dB%4>|x<@c IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPj! ,f224JJL^^\664jjlFFDrrtzz|**,VVTvvt::<..,BBDnnlbbd&&$ RRTNNL ZZ\>>yTBJ0`D 6AO;ܣ>,< Q($h"h̳@ dB%4>|x<@c IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPj! ,f224JJL^^\664jjlFFDrrtzz|**,VVTvvt::<..,BBDnnlbbd&&$ RRTNNL ZZ\>>yTBJ0`D 6AO;ܣ>,< Q($h"h̳@ dB%4>|x<@c IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPj! ,f224JJL^^\664jjlFFDrrtzz|**,VVTvvt::<..,BBDnnlbbd&&$ RRTNNL ZZ\>>yTBJ0`D 6AO;ܣ>,< Q($h"h̳@ dB%4>|x<@c IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPj! ,f224JJL^^\664jjlFFDrrtzz|**,VVTvvt::<..,BBDnnlbbd&&$ RRTNNL ZZ\>>yTBJ0`D 6AO;ܣ>,< Q($h"h̳@ dB%4>|x<@c IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPj! ,f&&$jjl^^\FFD**,VVTzz|rrtRRTnnlBBDvvt::>HAJ F$PNhf]`< >(=T y(4hceÏܣ t>`HPF)TVYV<s<<̃ANtO*^>m@p)tїA<@pܡp sh;(|) 3#&Es@0کꪬ*C[ʣtLj |Sx |lekJ@ B =`A +$c@ܓA l03ϩ A䪫wha 8<">z@|¾;}㢤@CAPLQXg'L7W=/"@>z@JBA =Q77У˝ W,ryA ;3"y`! 8CDB( ѩ"=BLݺ/w9aT|8r2~\!~GH HF>9l!8?53/,PyB qA!<:PbANB(.z`=X! 0aL 6Z C:xTߔ>񏀼IB#"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zz ڨ:Zzک! ,f&&$jjl^^\FFD**,VVTzz|rrtRRTnnlBBDvvt::>HAJ F$PNhf]`< >(=T y(4hceÏܣ t>`HPF)TVYV<s<<̃ANtO*^>m@p)tїA<@pܡp sh;(|) 3#&Es@0کꪬ*C[ʣtLj |Sx |lekJ@ B =`A +$c@ܓA l03ϩ A䪫wha 8<">z@|¾;}㢤@CAPLQXg'L7W=/"@>z@JBA =Q77У˝ W,ryA ;3"y`! 8CDB( ѩ"=BLݺ/w9aT|8r2~\!~GH HF>9l!8?53/,PyB qA!<:PbANB(.z`=X! 0aL 6Z C:xTߔ>񏀼IB#"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zz ڨ:Zzک! ,fccd&&$vvt::<jjlJJL^^\664**,FFDrrt""$zz|BBDVVTnnl.., 224RRTZZ\ NNL>><0 @*&0pv`$(0¾`XԜDFP$0:4H,(4nf` 02 \hd ਜ@nf|vdxʔp|xxx$^Zt~:8$bNltr0,hH6D:*4İvTԴ 薞ltpаrvp6<80`LBL|v|@||t`X`x\lrH&($h≾-> O<L;@Q >@)D&& 0P |0;T<^#W`)d^S;g> MHcE%@ӎe*蠄jCMB<(U@ej3 IP lV@6ԻP lO<(A𐰀 P{>D0$pP AAcETPPR=> lю7+]@q2L9>ZF I#r,06xH}x `{ :%Ln@;Խ8a}P iЇ!^vŀS4Y"v∏Bq%Rx@hLLcE@>"R@G0zGV!;xH !TjG$̤&B($GZ/mL*G6DLZ򖸔N 2 0)(_>L2L0!Ќ4cR̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮^! ,f&&$nnlrrtFFD^^\::<664jjl**, JJL""$RRTVVTBBDvvtbbdzz|ZZ\.., 224NNLffd>><~~|p@t`h.0 <48$(0ddpLF@( Lt\nf`|||v`xtԴ|zp.( tv`8\hhx0(00@hVl0RT@^Rl ̐`*:4 Į:*4ȼ xlVxజLfvrx*&00,hH@h LDP@BH@PXP`Z؄а`RP`pH:H6<8 pȰ$0lfHpfpttl`Zb\`P@$0(xlttlp02 dlh0DxX^\t:4H0 @:8$FTP*,DLbP䠠x$ԺΜЬʔp||pr0 FJ@@:سkνw$5_ϾE/H}#p޽(hs<H ,`a ($[𼳀;3(3O   3χ&@)d_ ?<@ #Ï8`9zz) `)Mţ?~m?E!@d*蠄j@M?$O %?z`\rA`@ #AWÁ#<)pO@,Ac>Vsmg9ZC ?t@?-"B5@F3 Bi+=yEL`@PʪG/WT<>Нyn ܃hAX? ~oJ>>8A:'u` @ Y'x"Mxw8f"@V3H:G wQB8޴/{ZxFJM1 };7P*th k: V򕰴̈J2J4L$?^<>Nql=D@JR4 ].^,IrKp)b{Ci9Iz;0PpP}D @J8`BA2Ђ:(JͨF}dэz w(*Ғ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6 {8:;b! ,f&&$nnlrrtFFD^^\::<664jjl**, JJL""$RRTVVTBBDvvtbbdzz|ZZ\.., 224NNLffd>><~~|p@t`h.0 <48$(0ddpLF@( Lt\nf`|||v`xtԴ|zp.( tv`8\hhx0(00@hVl0RT@^Rl ̐`*:4 Į:*4ȼ xlVxజLfvrx*&00,hH@h LDP@BH@PXP`Z؄а`RP`pH:H6<8 pȰ$0lfHpfpttl`Zb\`P@$0(xlttlp02 dlh0DxX^\t:4H0 @:8$FTP*,DLbP䠠x$ԺΜЬʔp||pr0 FJ@@:سkνw$5_ϾE/H}#p޽(hs<H ,`a ($[𼳀;3(3O   3χ&@)d_ ?<@ #Ï8`9zz) `)Mţ?~m?E!@d*蠄j@M?$O %?z`\rA`@ #AWÁ#<)pO@,Ac>Vsmg9ZC ?t@?-"B5@F3 Bi+=yEL`@PʪG/WT<>Нyn ܃hAX? ~oJ>>8A:'u` @ Y'x"Mxw8f"@V3H:G wQB8޴/{ZxFJM1 };7P*th k: V򕰴̈J2J4L$?^<>Nql=D@JR4 ].^,IrKp)b{Ci9Iz;0PpP}D @J8`BA2Ђ:(JͨF}dэz w(*Ғ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6 {8:;b! ,fnnl{{|FFD^^\rrt**,::<664 jjl&&$JJLVVTvvt""$RRTbbdBBDZZ\..,̊ 224NNLffd>><¼Ф䂆.0 ʔ LF@nf`.(0& RP`|v*Dpfp<:H|zp:&4p@t|p|RX`  RT@Ȱ`Z^Rl`ZtfjhVlpLbP(:8vVl`xt0:LfLt\lp 0,hz*00"( PXP$0 xX*&00 @lfHtntаĜ0 LDPprb\`vrx44<8DFP*,Dpx$x `X@X`0rvx||ddpH:H^\t0(0`$0(ttl8:(ĮFJ@|ΜBH@̖p||<680@xH@hxltt$(0P@dlhx .( zfh@4:H\hhtv``hFTP¾Ժȼ@0lVLZtԴƼ ľĖ¼  H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸gͻ ^ځFx+_μЙ'^سkν|6@aԳ˟|v#uq@B{XȐ`䣟}s̈́;2qQ&ACQ$pwf馜v)AiJ<0 <`\r90sAw#>!3gB 0 -@ AdA@3~j覫{L @Cc|$A*u0! 0!Ւ_' s@?Ay 5pX@3;Dl,i@+4lk* T 9 sA 4 !ip< A> TPP>hї!;$ )9 =]~-Ooެ|c]0Op}D!7SK% M;El`3@z=DO.zA1PxF?A]3p{@A (  k .tAc} @6 d/4@{xIwp'!z!Pr-}0y Fmp1=xq(j'L<̃6QL'}vbj$#B {[&!2 tjI<,6wH =QnJGIR҇('~ !؆._\pZ {IQ 8.p1!GV @yDҁm;8Ir֌i,pnj=d$E/+E`(@NXDxC.Ɇp`,԰T$<ȱ́pmʟ97юztI {Cm=f~0LA` p@ PǟOԦ:JRjI\ ժZXծzQXJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6g{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xk! ,f{{|""$RRTccd^^\jjlFFDBBDnnl**,&&$::<vvtrrt JJL664..,VVT224NNL ZZ\>>ȓ+_μsEسkn݅L.Pxbxs_Ͼ-o;HÐp?ßzh&`!DbdxP?Ta (,<O=hJIFBSQ?H&LE_AO*ԁ,0P 0;> d<D`p)t> =G!&\3}*gǨ4l͵-b0<2S0+58at )N A<#NI5Ac PPc`8|q[(=# JF3 πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6g{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{x˱! ,f""$RRT^^\zz|FFDjjlBBDrrt&&$nnl::<**,vvt JJLbbd664VVT224.., NNLZZ\ffd>><` X@XRX`̘.0 LF@lp$(0xvpx|vt蜔p¸pfpddp4.( 0(0*,D\hh4:H0@ *D *&0`ZRT@^RlxpzFTP(:8xLbP0:DFPlV䰜Lf@rnxjƸrvxPXPb\`"( LDPx`Z0 @tvl0,h  <68x$4<8jppBH@ `||pt|tĮhVl0& lpLt\0:&4zfh¾xX<:H08:(İ`hvVlԴtv`ΜlfHdlhʔȮFJ@P@|H:H .(tplnf` $0(RP` xz0^\ttfp`xtlz|`x|pt@H@hLZtԺΰp@t ľ Ƽ˼ H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸g{ͻ .\?ȓ+_μs ŕسknIPxbxs_Ͼ-?=Hc{0;1ßzh&`CO"4b$dx>T7@(,@?dy h)bf+P0mw@=(F\D s'}Ч0#Az;Tޖ,rm y*"Џ ]0S@ $  \C(< سAdE\P@@@'@`@$ғ,tm7c HM#<@$( Fd ` ((H@fB;4$G1 XFI0:D8̡{BW܉W $v;BPc[[ }d <c{,ghL C 1MшP6# `%&0 (O0я4CBHwmvl (GI#H[b=\O*,Ajc($=2Gl V:Nt;)I9VRz gˈ JƃhFDPTH!H!PU(]W}:C2\:XZa0 Y4BAx2ͨFB(>R6" ČMJWR`P(>Ҵְ8ͩNw*l>#xJԢJjIPԦ:PSJժZ R*Vծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6\{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶np! ,f""$RRT^^\zz|FFDjjlBBDrrt&&$nnl::<**,vvt JJLbbd664VVT224.., NNLZZ\ffd>><` X@XRX`̘.0 LF@lp$(0xvpx|vt蜔p¸pfpddp4.( 0(0*,D\hh4:H0@ *D *&0`ZRT@^RlxpzFTP(:8xLbP0:DFPlV䰜Lf@rnxjƸrvxPXPb\`"( LDPx`Z0 @tvl0,h  <68x$4<8jppBH@ `||pt|tĮhVl0& lpLt\0:&4zfh¾xX<:H08:(İ`hvVlԴtv`ΜlfHdlhʔȮFJ@P@|H:H .(tplnf` $0(RP` xz0^\ttfp`xtlz|`x|pt@H@hLZtԺΰp@t ľ Ƽ˼ H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸g{ͻ .\?ȓ+_μs ŕسknIPxbxs_Ͼ-?=Hc{0;1ßzh&`CO"4b$dx>T7@(,@?dy h)bf+P0mw@=(F\D s'}Ч0#Az;Tޖ,rm y*"Џ ]0S@ $  \C(< سAdE\P@@@'@`@$ғ,tm7c HM#<@$( Fd ` ((H@fB;4$G1 XFI0:D8̡{BW܉W $v;BPc[[ }d <c{,ghL C 1MшP6# `%&0 (O0я4CBHwmvl (GI#H[b=\O*,Ajc($=2Gl V:Nt;)I9VRz gˈ JƃhFDPTH!H!PU(]W}:C2\:XZa0 Y4BAx2ͨFB(>R6" ČMJWR`P(>Ҵְ8ͩNw*l>#xJԢJjIPԦ:PSJժZ R*Vծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6\{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶np! ,fnnl&&$^^\zz|BBD::>@<`JCFBa<@WE>\ @'HF0.tBv`)R(>c|sH=9r 4`|죁C()蠄j{Z<LI%SVT>:?p $B? @??fgf*􃏆]0;a4(j9Wo%O#LH$`? 3{93> nFh@#X|C^49i"RaC[EqF"3HF`O G"#a܋f;#ȚwJ+|@ E8`e`R؀#&RN] ky(A6p-r#rt ە3P $HC1R G"#x;&8L%2Ѐ|XBD$Ɇkxd01nݓG4}Tci B({=IЂ FІ:%C#JъZQ(F7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.0a! ,fFFDRRTzz|jjl^^\BBD::<**,JJLrrtnnlvvt&&$664VVT.., ""$bbdffd224ZZ\ >>I8yHUξgi><~ӑf'!w"eOg&?XQA,(,Zc>̃(M OH>yH&L6=>P@&L`HFD(B".T_D@:p)9ɣE&^Ag 6~ &f馜2yD*̃@8`]Σ `; DP<cB} , $T>|PAB ? 8D>y2ڀ>*wi6gAV*>> PA\0)},@#H؂+Hح@>'P c= xQL=L>yַ: 4D>ksA#ji@-DV`@< @]6+B3>/>\ԥ  (< <-dp> ğuNGG.y`-0[<4@tseAУ;ANngV Ch<{@=!bC(E0 c,vE HuOO;L lcB0J AAz aM PS@9A64p D "8hgna>Q0($drHQ6(2hLcL<ɬm]>iX Â} #npF "x W7y!bL!\`$7NzfZA q1GʒG* D)0F`V+"`c ؇X%`@~E ̦6=Z=2i;P-\P( ?`AJb§ 4=Q*~t !0ؑ 'xޙ8͎z ZmASx!\ ,-2i,`iB V,?j `WC/v'b::mbcBZ,zudCKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{+! ,fFFDRRTzz|jjl^^\BBD::<**,JJLrrtnnlvvt&&$664VVT.., ""$bbdffd224ZZ\ >>I8yHUξgi><~ӑf'!w"eOg&?XQA,(,Zc>̃(M OH>yH&L6=>P@&L`HFD(B".T_D@:p)9ɣE&^Ag 6~ &f馜2yD*̃@8`]Σ `; DP<cB} , $T>|PAB ? 8D>y2ڀ>*wi6gAV*>> PA\0)},@#H؂+Hح@>'P c= xQL=L>yַ: 4D>ksA#ji@-DV`@< @]6+B3>/>\ԥ  (< <-dp> ğuNGG.y`-0[<4@tseAУ;ANngV Ch<{@=!bC(E0 c,vE HuOO;L lcB0J AAz aM PS@9A64p D "8hgna>Q0($drHQ6(2hLcL<ɬm]>iX Â} #npF "x W7y!bL!\`$7NzfZA q1GʒG* D)0F`V+"`c ؇X%`@~E ̦6=Z=2i;P-\P( ?`AJb§ 4=Q*~t !0ؑ 'xޙ8͎z ZmASx!\ ,-2i,`iB V,?j `WC/v'b::mbcBZ,zudCKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{+! ,fFFDRRTzz|jjl^^\BBD::<**,JJLrrtnnlvvt&&$664VVT.., ""$bbdffd224ZZ\ >>I8yHUξgi><~ӑf'!w"eOg&?XQA,(,Zc>̃(M OH>yH&L6=>P@&L`HFD(B".T_D@:p)9ɣE&^Ag 6~ &f馜2yD*̃@8`]Σ `; DP<cB} , $T>|PAB ? 8D>y2ڀ>*wi6gAV*>> PA\0)},@#H؂+Hح@>'P c= xQL=L>yַ: 4D>ksA#ji@-DV`@< @]6+B3>/>\ԥ  (< <-dp> ğuNGG.y`-0[<4@tseAУ;ANngV Ch<{@=!bC(E0 c,vE HuOO;L lcB0J AAz aM PS@9A64p D "8hgna>Q0($drHQ6(2hLcL<ɬm]>iX Â} #npF "x W7y!bL!\`$7NzfZA q1GʒG* D)0F`V+"`c ؇X%`@~E ̦6=Z=2i;P-\P( ?`AJb§ 4=Q*~t !0ؑ 'xޙ8͎z ZmASx!\ ,-2i,`iB V,?j `WC/v'b::mbcBZ,zudCKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{+! ,fFFDRRTzz|jjl^^\BBD::<**,JJLrrtnnlvvt&&$664VVT.., ""$bbdffd224ZZ\ >>I8yHUξgi><~ӑf'!w"eOg&?XQA,(,Zc>̃(M OH>yH&L6=>P@&L`HFD(B".T_D@:p)9ɣE&^Ag 6~ &f馜2yD*̃@8`]Σ `; DP<cB} , $T>|PAB ? 8D>y2ڀ>*wi6gAV*>> PA\0)},@#H؂+Hح@>'P c= xQL=L>yַ: 4D>ksA#ji@-DV`@< @]6+B3>/>\ԥ  (< <-dp> ğuNGG.y`-0[<4@tseAУ;ANngV Ch<{@=!bC(E0 c,vE HuOO;L lcB0J AAz aM PS@9A64p D "8hgna>Q0($drHQ6(2hLcL<ɬm]>iX Â} #npF "x W7y!bL!\`$7NzfZA q1GʒG* D)0F`V+"`c ؇X%`@~E ̦6=Z=2i;P-\P( ?`AJb§ 4=Q*~t !0ؑ 'xޙ8͎z ZmASx!\ ,-2i,`iB V,?j `WC/v'b::mbcBZ,zudCKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{+! ,fFFDRRTzz|jjl^^\BBD::<**,JJLrrtnnlvvt&&$664VVT.., ""$bbdffd224ZZ\ >>I8yHUξgi><~ӑf'!w"eOg&?XQA,(,Zc>̃(M OH>yH&L6=>P@&L`HFD(B".T_D@:p)9ɣE&^Ag 6~ &f馜2yD*̃@8`]Σ `; DP<cB} , $T>|PAB ? 8D>y2ڀ>*wi6gAV*>> PA\0)},@#H؂+Hح@>'P c= xQL=L>yַ: 4D>ksA#ji@-DV`@< @]6+B3>/>\ԥ  (< <-dp> ğuNGG.y`-0[<4@tseAУ;ANngV Ch<{@=!bC(E0 c,vE HuOO;L lcB0J AAz aM PS@9A64p D "8hgna>Q0($drHQ6(2hLcL<ɬm]>iX Â} #npF "x W7y!bL!\`$7NzfZA q1GʒG* D)0F`V+"`c ؇X%`@~E ̦6=Z=2i;P-\P( ?`AJb§ 4=Q*~t !0ؑ 'xޙ8͎z ZmASx!\ ,-2i,`iB V,?j `WC/v'b::mbcBZ,zudCKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{+! ,fzz|&&$VVTZZ\rrt::<^^\BBDFFDvvtnnlJJL**,jjl664RRT ffd..,bbd224""$ >>?^T<&<#IyC❜v駠6iD*@L`Pah: dp@=P}m? S@} P>PPI E> To >|O91PiAZ2\> kZ!„bȄ ~ , @%DWN<|Np 7 ڟ}4SO1D0&w=t #8 @Rcꬷ:\ 썣;1@D81 s~$)y']|.E@ @ MHkg<[$=*0?OpGUe+P04p p@ pҏL@YUdЁAD4)#F$6w 9:. =G?{@ ~ƒETÃLDt` xe<6(x<";AꑦȀ PYԡRax\`a5A$?~DL"F>>@Ck8HVe<؇,6IA(AW.({ Adq>pir !Ib h؏BH%H)xaH?U?pTp@BM#nJ Kilp>:<7t ap3BCBІVEa@$E$ .V؛/I0!@"`tKRh 1'>R[:}oaȱw#%HCJժZI% !"  yh`f!p 0C%kA0י =s&z@}X&aC7RTzl!c+T<Զ͂l}BKx."pKF kMҏָЍtDͮv] x %Mz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽1;[{蛾껾۾;[{ۿ! ,fzz|&&$VVTZZ\rrt::<^^\BBDFFDvvtnnlJJL**,jjl664RRT ffd..,bbd224""$ >>?^T<&<#IyC❜v駠6iD*@L`Pah: dp@=P}m? S@} P>PPI E> To >|O91PiAZ2\> kZ!„bȄ ~ , @%DWN<|Np 7 ڟ}4SO1D0&w=t #8 @Rcꬷ:\ 썣;1@D81 s~$)y']|.E@ @ MHkg<[$=*0?OpGUe+P04p p@ pҏL@YUdЁAD4)#F$6w 9:. =G?{@ ~ƒETÃLDt` xe<6(x<";AꑦȀ PYԡRax\`a5A$?~DL"F>>@Ck8HVe<؇,6IA(AW.({ Adq>pir !Ib h؏BH%H)xaH?U?pTp@BM#nJ Kilp>:<7t ap3BCBІVEa@$E$ .V؛/I0!@"`tKRh 1'>R[:}oaȱw#%HCJժZI% !"  yh`f!p 0C%kA0י =s&z@}X&aC7RTzl!c+T<Զ͂l}BKx."pKF kMҏָЍtDͮv] x %Mz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽1;[{蛾껾۾;[{ۿ! ,fzz|&&$VVTZZ\rrt::<^^\BBDFFDvvtnnlJJL**,jjl664RRT ffd..,bbd224""$ >>?^T<&<#IyC❜v駠6iD*@L`Pah: dp@=P}m? S@} P>PPI E> To >|O91PiAZ2\> kZ!„bȄ ~ , @%DWN<|Np 7 ڟ}4SO1D0&w=t #8 @Rcꬷ:\ 썣;1@D81 s~$)y']|.E@ @ MHkg<[$=*0?OpGUe+P04p p@ pҏL@YUdЁAD4)#F$6w 9:. =G?{@ ~ƒETÃLDt` xe<6(x<";AꑦȀ PYԡRax\`a5A$?~DL"F>>@Ck8HVe<؇,6IA(AW.({ Adq>pir !Ib h؏BH%H)xaH?U?pTp@BM#nJ Kilp>:<7t ap3BCBІVEa@$E$ .V؛/I0!@"`tKRh 1'>R[:}oaȱw#%HCJժZI% !"  yh`f!p 0C%kA0י =s&z@}X&aC7RTzl!c+T<Զ͂l}BKx."pKF kMҏָЍtDͮv] x %Mz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽1;[{蛾껾۾;[{ۿ! ,f&&$::><~~|NNLxDLHΰ||pPXP`Z`*D 4pBt|vt  *,DLDHPV`.( 0& tv`0(0bxt Ȱ@$0(x$XRPTV@ԺxdTlԴĮ(:8vZlDDPк*&0Nt\z`j`$ jpp¾rvxȼ`Zج 0xFB@xpxXx nhH¼$(0tvl4<8HBhTbP<68|pt0php.0 :&4vpx`LL@bjp@h^`4:Hbj tplt|tzhh$0` `F\P`Zp䠖N\tnr̤ʔlz|H:HXBXPB0nh`lp<:H0@xz.(0,hȸd^tth0 @8:(j0: |ΜȘrnxpNhnZľ  ¼FFd`ԏ9BEt;9& p)tO<;DHE CAi@>C֩馜v{FB>Xe>nܫpS g> @C~P;N 9I0@t0$A#;@@ۦ@!ܣgAHpOEN*ιPt)N<,ǖX2>>[(„z(„ ~$ @$HUN1&H7k  ;"Ā;p@P*1Ӌ $C ;[dmّ t:+O!0[&lB??AH>}@AcB =\]C 7EW];P@?h/or3ۘ u0<2B`BG d^ zsO;AK`[ ; ; $  ;OtNS`%zc|clO`G Zʵ D >D\U| !XUm \Es (Rܓ;>0 38oPr' m])`G u Pq 5 z` ;2p \u 8@ O b@v _@ƊDaǙHc0AI`;.`1`;(29WV2O@#$Y$0=)/R;TqȒ8 0Mc;BL:N CO7CDB*z6@0 !$@%R tcDvu\A HCtTN@[zO lLgJӚnC@ʉ$`H@i&)88Tf)T`L?Ƞ8>Gkj /@8z4s U@4Ԧ ` P@}p0d`?gN`RG I VS`cra)$s*0Y#MUR~`J:N? l,U⡷5 x xA(GX 80u.yK2@UPkކD L`).o*'Laΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽z;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.`! ,fVVT""$::<.., FFDvvt224JJL^^\BBD**,RRTnnljjlZZ\zz|664NNL&&$ffdbbd >><~~|*($<48xpHFhPF0 @䶮̨LF@`X`bj|vt@XN@( ΰ ¼lpth02\NTX@Lzhhtv`0D¾d\tT^@ԴF^PԺxĮrnxz䠈@jpp`\شXFlrvxjx` `Ȱtplx$8&,Dx TLT$0|0tvl `j` ȼ6<8LDPNjBH@$(0bjpFJ@0,h:4H0@6*D&0,PXXnjH4:y#-@_~t@?}& 6<8A;)% 5O;!e0!t,0Ƙ@>A(Ca@G" OHSI+PF)F`S dO;`$ZP$ 𘑛5Ix|N$أ=@?BHÃ7uُ fd\@gAVdgjꩨ6C*@<`Pc3 =\0}Џ?Ӂ} ` It KPyF> < $r 4B>@>e= =s=<@,G,Ģqp @Ԃ!@zAa%'? =1L4A?2 )HP" ϱw=-<`<AS@`S*1 t'|@O9L|} ؏@?!+#A@>A(OAA UN"<@a꣎q N ڈ?@w0@ ' /V!7@; z$͏@r8@杰#Et?&)@Rh8׏.D@>|#h28c@J5mh!#wp&H 69?>` ܃BZ(rv>x tHa HSA?L0Wrr( b=F`@*L&8C> Խ:򑐌$ͤ0Rn:?|` ">0iE "DAV^ڒp> :] 8> Џ pA 4 w$A0 fH'Ir@r=L8T?Ѓ``G> `:Ck04|Cy` ]Fh+:#qFy~S 8ҖG(X%\ r :SQ iP4%r<#wbVR#31<cijvA RCfyxͫ^D?i 0٭AtN pv۲>nπMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B><~~|LDPHa%(,굁;80?dPJGFCBR?H<_AO*N400R;? d E&F&6)ti?N~I@O R;EгAOcH>jRxf馜v  A;8   8O ?УpP iBg3 j6t@1/AnB Nb@ {@"ӧAF;P0OA)Ar alB (9mk O$x ԄG ~3OO;5DDkϢ}dŒs<4M'C @:0; $=?wr<)0p-t= cB;$ B;37i%U= =\&YO%^ڣ:=f4dRP` KfnuG/Wr X 3=0NBd@ .?\N9vAs@#>x p쓽CRA%vw=Cɝ=$ zK W[F塇`G$ >H@6wчǠcG& "~ FDzC&A R40|DC&0o$B >ˆ?9#.}c@6P ڑ\Psߠj(x̣ ^H vp"6#Qr Bbpk+b ?&ie!E1 4p+0%OaT{y (@YZezDπMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B><~~|*&0*($04H,(p@tb\`Μ6<8`LF@||p$002̴( npXPX`Ĝĸ6*Dĸ0 @tv`FJ@ԺLDPdRl0@ bxtTT@blhĮtplFZPnfHX@XNt\|䠐j@H:Hd\t`Zjpp0rvx|pttvlnV^d`rnxĞ:4H0,h&,Dx$`Zxਢ<48zxXvpxBH@PP`脌$(0p쐶ȸH@hpfpxzpnf`t|tx¸ΰzfhbh̶̶68(vVlx   Դ `tf4P@&:8 lph\`|vt PXX0<@:*, 8lz|0D:bctxa7Xb?>0(hY> >P=Q P!id4F)TVieNGA8PMA#ѣ:s?B=& Yy|矀:P=CO? B}=.D?8xrX`PމꪬOAO k?cx`3><pA'1*0+C,AXP 9\ >d>ENNPx=lǁ <ġ@,@ ,Ȓ` {AĺSG"Pa:$Raqx%p= #HD˨@4ě}#`?cA1AUJ_<0PJ C>O"=tGI~>i 8 '"ɜwe@}ļ \Ї?'Epct? CA\у>6A|P@@(#@I/A p@3{} * DZP/P(82 cz :(> iG:09w'cI)}@^E2I<a?7 "'lN0V<5p0BcyÁN6pL KD ; XaHH=&w88@'C @09҃' ;P T҄. rLnt?TMRDHm@6YfZcf:ZG%b(*d ,D8 e;@_@/ !tC`'`t8~dɆD$}WNSo}`1N D4w 2Җ̤uyQ7Bp 0с@8&DS<((9 vj$FXNUj6SjjT H)A~*]Ӿ]U=P*$H??a 2QȫQ.QYXJ,!-`5n;ADT>>uGh r} evvݐ~.O!>H`htK@`=A‰kD`mTd; UvW#"xЇAC$*AtU,`Ё=?p@&L "/ދ:`B<$p@( 0?T!B%gKe\uw; 8"" `wp*TQzlMsRa"*R0?.$ȁ>TkVm?|Qm:u}eA~d| E搵 dY Ǽ ǘδ7 ?V"jӨNWv %J`-kոεw:I{rk^Nvj גaGЎPζUm{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B><~~|*&0*($04H,(p@tb\`Μ6<8`LF@||p$002̴( npXPX`Ĝĸ6*Dĸ0 @tv`FJ@ԺLDPdRl0@ bxtTT@blhĮtplFZPnfHX@XNt\|䠐j@H:Hd\t`Zjpp0rvx|pttvlnV^d`rnxĞ:4H0,h&,Dx$`Zxਢ<48zxXvpxBH@PP`脌$(0p쐶ȸH@hpfpxzpnf`t|tx¸ΰzfhbh̶̶68(vVlx   Դ `tf4P@&:8 lph\`|vt PXX0<@:*, 8lz|0D:bctxa7Xb?>0(hY> >P=Q P!id4F)TVieNGA8PMA#ѣ:s?B=& Yy|矀:P=CO? B}=.D?8xrX`PމꪬOAO k?cx`3><pA'1*0+C,AXP 9\ >d>ENNPx=lǁ <ġ@,@ ,Ȓ` {AĺSG"Pa:$Raqx%p= #HD˨@4ě}#`?cA1AUJ_<0PJ C>O"=tGI~>i 8 '"ɜwe@}ļ \Ї?'Epct? CA\у>6A|P@@(#@I/A p@3{} * DZP/P(82 cz :(> iG:09w'cI)}@^E2I<a?7 "'lN0V<5p0BcyÁN6pL KD ; XaHH=&w88@'C @09҃' ;P T҄. rLnt?TMRDHm@6YfZcf:ZG%b(*d ,D8 e;@_@/ !tC`'`t8~dɆD$}WNSo}`1N D4w 2Җ̤uyQ7Bp 0с@8&DS<((9 vj$FXNUj6SjjT H)A~*]Ӿ]U=P*$H??a 2QȫQ.QYXJ,!-`5n;ADT>>uGh r} evvݐ~.O!>H`htK@`=A‰kD`mTd; UvW#"xЇAC$*AtU,`Ё=?p@&L "/ދ:`B<$p@( 0?T!B%gKe\uw; 8"" `wp*TQzlMsRa"*R0?.$ȁ>TkVm?|Qm:u}eA~d| E搵 dY Ǽ ǘδ7 ?V"jӨNWv %J`-kոεw:I{rk^Nvj גaGЎPζUm{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B>سk]=I+yHVξ7oݼH =grSyɧ 6S< l h hA5"D %0(4r"( >PPJSJF CBT* bTViXfRU =@ ,HFT(,.DCm&Csd?q.$*蠄=BS@84e꫰f*D(c4`;iְ) $=DpW@X* O!2d>(@FA9`mP-}@ г@Ѓ:pO: PU @,?܃, yr\A P L@@ Уü@ " <LAjԃ^'H) @34ai }@XFHGAQ@O<D6Pu;|6<`L2 D @* OAzĉP@Dk+S14rOX\5,1cyG= `uXq b,į}D Ӏ::򑐌$=?P@`#z0}, Dj@$iCBpPڟ@D`>0H2ݣ% =~QzG|a r\do,[=v_ SU=em@| P@u^8z-̪VGGF1fS/$yx* %Ȍd*<-V#6 K|j*C (ptb#Ռ |GEj >:ƳсB#@6 4Ja [^ZccժbT @!x V@& D讧}JwЍ?Dw% 5@IDݲY H"M]ҁD lPn{8r*97T`vLEgq%wS~ nIS;6e [ߪ3{-8GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B! ,f::>سk]=I+yHVξ7oݼH =grSyɧ 6S< l h hA5"D %0(4r"( >PPJSJF CBT* bTViXfRU =@ ,HFT(,.DCm&Csd?q.$*蠄=BS@84e꫰f*D(c4`;iְ) $=DpW@X* O!2d>(@FA9`mP-}@ г@Ѓ:pO: PU @,?܃, yr\A P L@@ Уü@ " <LAjԃ^'H) @34ai }@XFHGAQ@O<D6Pu;|6<`L2 D @* OAzĉP@Dk+S14rOX\5,1cyG= `uXq b,į}D Ӏ::򑐌$=?P@`#z0}, Dj@$iCBpPڟ@D`>0H2ݣ% =~QzG|a r\do,[=v_ SU=em@| P@u^8z-̪VGGF1fS/$yx* %Ȍd*<-V#6 K|j*C (ptb#Ռ |GEj >:ƳсB#@6 4Ja [^ZccժbT @!x V@& D讧}JwЍ?Dw% 5@IDݲY H"M]ҁD lPn{8r*97T`vLEgq%wS~ nIS;6e [ߪ3{-8GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B! ,f224664::><<`JLF"3BT*(TVixhpI # SaHP}  YyA.b矀*| :먓_}<9 =I Yi"O(@=, 0,z  wυAA##` tb)( LxC +]+0 H2; <'4>D6O@J> ]<'5Vc-L@8O8@&>p@=LU9` <B`< :X:: A`F7A'P@K> l:H: ; -:7x:PwO|= GQ5Pȃ*[=8̡w( #%@$ &`dhrH["Ȧ @+HDxB\X0a$(/O 8: u}M+:70dA)'qIGlRLB4v kD9@9d"bx!!Rm)P $EcDчт!S&'!v tfA1`Ր2 !ńb Lg:p5TBІNP@AE͡\@ )>zŷsCłV)@Y" QKKˀ?0`'R wXSxHq8E4ޱRszfӘM L<֗rMZև$zKסPπAԃa]M0A  p vX ,Z (W)Cds ܴ}` @@; D?>)Cx$ pK%}@dp $A%O=Dul* v]@Xt*H/-p,n z\ (~t?r;ޞu!Nh߀/XF0=#t:0F|d XkOC(ԄlL8@X]X@[@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPu! ,f224664::><<`JLF"3BT*(TVixhpI # SaHP}  YyD.b矀*(v :먓_}<9 =I Yi"O(@=,  0,n  wυAA##` tb)( LxC +]+0 H2; <'4>D6O@J> ]<'5Vc-L@8O8@&>p@=.2ͼ'倁s@#Bx>(pDpcdP"0iA?|\df)@ -@("뀐@xpO ohA7x:Pwp|= GQ5Pȃ*[=a9.x8̡wC G`@(')"!`LX\A ' @ <bƲ `#A,/O 8: :nzבI!J9NBT=L*;`_#z x U   ч&Bh+w')2x %">4|`)$2908i3 p+HL`0&L"C@ (+R0}%=8ԍStс@ 7M&=ԣ@}"`N3@6(pԋhå=ͦ$ -/(x/O1%)mѶp]U}bwtJx$8O=Au ҄ p4 )ܚP;i`GV v\z׍"<I6M{G4@AO2BиM.| M4?>xԁU+Zw%Raѩ ypkAF8G)/=[;k! cjirl[ᐃv-OIY Gf@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}Xu! ,f224664::><<`JLF"3BT*(TVixhpI # SaHP}  YyD.b矀*(v :먓_}<9 =I Yi"O(@=,  0,n  wυAA##` tb)( LxC +]+0 H2; <'4>D6O@J> ]<'5Vc-L@8O8@&>p@=.2ͼ'倁s@#Bx>(pDpcdP"0iA?|\df)@ -@("뀐@xpO ohA7x:Pwp|= GQ5Pȃ*[=a9.x8̡wC G`@(')"!`LX\A ' @ <bƲ `#A,/O 8: :nzבI!J9NBT=L*;`_#z x U   ч&Bh+w')2x %">4|`)$2908i3 p+HL`0&L"C@ (+R0}%=8ԍStс@ 7M&=ԣ@}"`N3@6(pԋhå=ͦ$ -/(x/O1%)mѶp]U}bwtJx$8O=Au ҄ p4 )ܚP;i`GV v\z׍"<I6M{G4@AO2BиM.| M4?>xԁU+Zw%Raѩ ypkAF8G)/=[;k! cjirl[ᐃv-OIY Gf@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}Xu! ,f224664::><<`JLF"3BT*(TVixhpI # SaHP}  YyD.b矀*(v :먓_}<9 =I Yi"O(@=,  0,n  wυAA##` tb)( LxC +]+0 H2; <'4>D6O@J> ]<'5Vc-L@8O8@&>p@=.2ͼ'倁s@#Bx>(pDpcdP"0iA?|\df)@ -@("뀐@xpO ohA7x:Pwp|= GQ5Pȃ*[=a9.x8̡wC G`@(')"!`LX\A ' @ <bƲ `#A,/O 8: :nzבI!J9NBT=L*;`_#z x U   ч&Bh+w')2x %">4|`)$2908i3 p+HL`0&L"C@ (+R0}%=8ԍStс@ 7M&=ԣ@}"`N3@6(pԋhå=ͦ$ -/(x/O1%)mѶp]U}bwtJx$8O=Au ҄ p4 )ܚP;i`GV v\z׍"<I6M{G4@AO2BиM.| M4?>xԁU+Zw%Raѩ ypkAF8G)/=[;k! cjirl[ᐃv-OIY Gf@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}Xu! ,fffd 224::>D<ԓ)y 8 >^!Ώ)YN iiMz%A~RԌ<D*무ja&C'ȳH`P;gʳȭB;8O4O(^,YB;.@odKZ}O>@t@A;P$0P;K.Ab-A N@Vr0B2)#7Ԋ68P t !zDmay B+9Do k8 H ~ >߸<$A> tz; t*1:0N=ygד:ky?l: w<=@HӁyKH>T;?34ɐHgwo.cB 7lfM%Qq;q3o  yH "'pFY/LeX>׀l Ʋ! rw@ 'G̳3X/ Uyy!Nx=YX̢;cX!x`ꠑ dmt" `b*ߑt @<(#D?:@:CZ"&0X4M0;)# m6N;C"R x@R>Ćcf:Z@1w!@=088  BHA G"@VDAR48i2J%hEޑxs@wÂS #Vx!)OO XGM6-LzgIy,qQM,BKTӞP҇0Zz`'*x>XDd9OF%Տ@!RHD8D /> `~>J͙ $j䡍̂tH;ޱf>z43GKΪdzdҚ%zVz 0oL;0p@Փ̃u!_DD2@Q:n4X8 7H)e $o0Sh >k&ap!Db:DCvΎ>P imaKZ>&pj lf Yv*H,:inA:glRp?BL dw M=rFEXk ۥL,n#'pgev6n {LLfbI"AF ]j ,Ouݭ@6u XhhC:;X];0Cp1Z*`%C0 -'>cpnQp]R0R0L6Ve7ݛhGBX4՗sf;3"'@7#"A+z (@ }R;ABp&qiÙH*^h 0@v + 47]%xGa2i=ba)Dr0l_(0g^q.(hJr컼@Їw' pUDԧNuZ(2I{`;_~hOjp.xϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ؐ ! ,f224::>P^I$XO2t=%$@EVq}Pm0}@3@Ѓo<ISͶ %@`@kd=@A-(@%26N#D5Pd|@?M/A Cqc\S@=x$AT<\fY. )=$p.fw dPg d>`Ko>@0"z=]0@ pnU  $N+|-"<9P/أ|@oq=dtK#Ṭs@>(#=&@@cY̲b 0-Ďx$:btoq*yqHl Gr<?zZH bm L0IbN]>K.w7x-XrF⫁N扰Fbc_&:n: j A96Ў׽P1V" 2" -nJ.!xY*0ِ.kiT4 ? :  bg=l|Ȁ 00` `~Q1,`p'ϯDbBc.w'S= 8r~">oP t::+A<&mI@#D8/ Xwٗ4Ĵa҂;H.$G Q-2& U*^GNl@iOr0g e@Jp󾼜@ЇNQ %A]~N;PG20=XϺַ.٫s`{VhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂! ,f224::>P^I$XO2t=%$@EVq}Pm0}@3@Ѓo<ISͶ %@`@kd=@A-(@%26N#D5Pd|@?M/A Cqc\S@=x$AT<\fY. )=$p.fw dPg d>`Ko>@0"z=]0@ pnU  $N+|-"<9P/أ|@oq=dtK#Ṭs@>(#=&@@cY̲b 0-Ďx$:btoq*yqHl Gr<?zZH bm L0IbN]>K.w7x-XrF⫁N扰Fbc_&:n: j A96Ў׽P1V" 2" -nJ.!xY*0ِ.kiT4 ? :  bg=l|Ȁ 00` `~Q1,`p'ϯDbBc.w'S= 8r~">oP t::+A<&mI@#D8/ Xwٗ4Ĵa҂;H.$G Q-2& U*^GNl@iOr0g e@Jp󾼜@ЇNQ %A]~N;PG20=XϺַ.٫s`{VhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂! ,fjjlQQR224VVTnnl^^\::<""$BBDvvt&&$..,**,zz| bbdZZ\664JJLffd>>< ~~|pr&,Dvrx:4H$06<8ʔP@$(0<48p@tX@X |v,( :*,( tntnf` `Z&0, `02|p|0PXXbdp04HbhdRl68(TT@TbPzfhnVNZtNt\0@0@*($p||*&0ΜLF@0xptv`p&:8 `^d`H:HΰDFPb\`LDP ݸPP` lttx¾nfH0<@h\`XPX||x`:3A\&袌6>s=^ !ݓJZā?d?#4j5jAv j00¡q0:+_BdB; pf;ܴh 3ē?Q@ZF %E"-pA|%AA(09P Ljt@? N? #@F@ T?0V >9=RЁ= @SAÁAO0D0 ?`y z? O> x< 8.yQ;/d?A@T2{hOB}觯7=%|`;d/AԌ@ *8=`cA,p=NȚ>G։E;$* >@?À9; dha ``(@ &pc/;` Ȝ3CD phy1"a6plrЎz>j2 CGXB&p6 $퐀@sx!t`*2Ю  R~c !wt[tQTtcN0=L)3D+,6 N?6iN~2zSnG;%4@c101L:)} d(" x0-H)0PJ@;h("h ¢Ý=M @wĂDt! p2tTG>3oY"Q޲\0Њ@鐈 dVծBh@F~<#2@y-#C "~PP\w)VT"1 2؆ "X zv :Tw7$,RR =ԑ`"4РM|G$U6^ pKGdC,ȑlIG>XPԑ BjOHD*( $cBȇ7 2^XH$U(z5#OEh zcC!̈́2aэ>< qdxxsx҇*BsFО1dKO)j׺046{rj=>cY[{|z= Ђ麆S{p Ǔ&݊pGLIQ!BIchMB&Ql J@b{1:]!@ 6eE1 @ˇ& dNhG,[@ H#Q@ *hSG2Sil"eAˀG&\咔9 Mzޛ!0:mQǫ-;@x.0@WLl!!X `8g;R`2 kAA-# h?BVܖ@?1Xo]u @ k}-'E _ +{ PƖz!s\p{Y*%+;2~}rOT;(IƷ𐏼'oy<7{GOҟOWֻgOϽwOO;ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]1! ,fzz|224jjlQQR""$::><BJ !F!@OH%EA06X8<^D<@>tJGFsBROeQTB)=v`n`=P@ <0H Fh+2Cus,gI xžI>F*餔s=A> \pGHģ,O jMZОZ>0jz@>Z&s 8=DOr=@NHp䃏 DYP2.{QR•qNZ@!{@&䣩A;<0=LQjA.Ap{~P@o)2 $7[hC"<(AECS@2`-vSTCw݁l+rl@Dk'<DL$*A I3_< T>&< 4ߓH> 4+-c@Cx`^08O1! oF4yaOp9c `J#|   tH PT{ x8:VHZG>toi@⧀}X` x:`x}tP !\x ٢1= 2|(@ #yV`<1{@ >q|DD@lE.":= rF:ANX@PDZDBuI @H&:``U2 sH!ށ0 uI. XSAfYKt\HIĜ@ZTq{Ǡ\cD> ȆO;@#)A#(I|!8/`eA𰚤d QkSvrB#22u>֪gJ̾YW|a 0ޒy&;ɽYO2JmD@(B#W Rw Qv)&rq }U.,4}cTi; $fHr]ڰz zw|hb1>a9MqBUDp0m:OKw^&$Lx J 0v`9Aģ+;8` >,@Ԇ{Mb@:& .hp& ,!؇NqdwU{ p5`| s4xh  m0w:Sm/>dGT$f=` m8g( މ{I'Cũ܈ !"S< @DPGAdwg B `!z$ M%H I:MQ ճtz !>ל{=]>Fo(,9R$עgO{dV(h1W=D`_ƒx>C[WKaW"}P?ǿOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽF=]}=]}>^~ ! ,fKKLZZ\::>< ~~|LL@h^`tv`xphpPBΜȨ6<8nh` `Z`xX:*,|v6*D$(0 0@nrzhh|zp,(|p|02d^t&0,dTlĮF\PvZlN\t|Nt\68(䠈z@HBh @XRPvrx<480 *($¸Шΰ&:8`ZذxPXP`ZH:Hxbjp404H rvx 0DLHbj $0pBt( bxt:˟OMG_#RQȏCF(@ 4<bxP;4b9XԊ&O 5H8<"T=00>hJBF 9 QSB?0`)y 찃A $#>`(4cC=t'>y2'J{$ J??3BDzI椔Vj饡>~Q%~T>|3ܷD A -;@V>O !@J" P`%AԣA409Ptjd> >RA;xnKH @A@dž[9L5 dPB5H,C=ȈAEOC C? ; lp4l*<>XlOA?G T~Y@HiN@hI py$ IPo,O]`}ީC@2cO>;O.Ps"C  !\B|@@ 9Aj;ܰN?Wy>1c=ҥPhSAIL?1# B{ MT>hDP&3f9zCqL6K(HH၁`_4EckHGJҒ`a#G ҀG!;pk( ⢁jG/~أHG|' J5HﲈJ&T/iUuYu s/Iс1I;/!_hB2#&ͬf7Y HCN-dQ M}p -:CafgAkT},v$(@1y[^!2O D @+NgXT}#I<+>6J$?NWMB4L |@"~pQr xa4'L'zݠO#;,HI|<XBĠz52 ģyH 0&VNJMH*wA 8qNf,Kt<(/=V,Ȉq^cX)PyM˔JU X)HS#40 }tL גW6)jHL(A_ H0Z!HcĬ! "B  MA@+! nތңZx:')>q \:%p`" x"+y2 r8ĥ*P6!hB0' Qߍu B)x)l$+ Ώ*!eu+:I M6At,L} , *]71x}Џo /(KI|$ϧO77A͕~@(ϑϿgs$Xx]$1Xa8xqÀ؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽގ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:n! ,fKKL""$::>< ~~|thΰ $0ttl6<86*D:4H`Z`LDHPB:*,nh`d^t|vbjbjp( 0<@rvxh^`0 @php8H:H|p|zhh,(`TV@DLHԴdTl ĮF\PxʔN\t Nt\䠈z@0,h¸`xtv`XBX<48xX*($04Μ&,D`ZxvrxLL@İPV`&0,*&0x$PXP04HĜ0$(0`j`HBh@ 0@Ƹlttpx ` nhHTbPԺvZljp&:802DDPprtntpBt0Ж|| |zpXRP:dJHFC 9ɳ QSB<0`)q  Tԏ>`O(DcC=t>y2'J{T@ J<3BDzI椔Vj饛>~I%}ԏ:K^T<ԧ<"j5kA}*Z 0£C+s%!w#6gQ (B?TϜZrSA= 08@3X)ȣ<28QDVZUOF@{@#өA<0P=\ Vv*+/AD죀}r@B+n<أ2G0A L 3@ B) O=, A,<>4`^(O,ҳltmx@l:\=>p \lPO؁ t~Z@DiNhI pyA$ I9o$]`Oީ2#@12c򼣁>w;o.P0#:x00: tLYIx<?2ۀS.=SDN-NxGX0cUCTqy A 6y 'RAch= @ BgRT9z<x8׀ck<@ Ї J`L`xCs8$Qn!HۼȰ"nJH L-Lg}pC I@h5CڃH,`,6FTe @Xp@&+up,g,l@he@.@L qAZr:Ud^A40b @( P׺n ȣM6  ,`~S X쁳;R\=4 o4>HCt1H:8Y2!C | Dw\=( t;,Z@ *&Ԭ2r4} /)RzPR G. (@mJ /ьm`_%H<1=nwB @TwwBi<`yh (P+%Zzt`(u)܈`sIGB 2^#@D<  L<20Ӥ-9vW !={ zZFIdS"5r:hBB*lJC{ XGL@0$D㣞񉁼ҷ8αwS@ф. M'ACci V t\*RwPhhԁXXMd$RYh2_g @ʠc=R{8NqTŎC|!WVYb0ؘǠG-x1FRB P<"xun v눜ـA(i9y`@& {|Zϯ}? ˧+[ #<4p 裨MwŖ#(yRtazX!=HNJCVǰR uc/31Az nRj7&'NGV- tJ@%1|L (؊^6) HN,c_ HA!HEa D MB+)`h2W ;z8:9'9.l=@A#'O[.!'(#"71P`Ѐ/uqc&sj_XtA()e8c_VxEe yĶ܋` =8!\zkx7 @\ uC`T|wyxk12[h&'Hg!8~F`(q؂.0`'r5,:<؃Xq%>XFxHHqDL؄N$P8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnp,! ,fZZ\KKL""$::>< ~~|j`j`XRPbxt<68thXBXpLDHpnh`4<8PV`Դ|v蘠4:H PB.( |zp pBtphptv`HBh|p|ltt zhhd^t*,D8:(dTl||Į(:8F\P`N\tDLHNt\Ժ䠐ʔ@ƸvrxxXLL@*&0 x¾TbP¸Рx਴Ĩΰ萂prĐ䤠 00@ PXPbjp$(0.0 0& "( bj0 @rvx 0(00,h `<:HnhH.(nZx$`*Dzh^`p||vZltnt04`Z`ttl$0(H:H$0 ̾xTV@`Z`Zذx0:ΜȄ|0İ:&4DDPnr@NhFB@rrtFF<Ƽ¼ rr|Ė ĖFFD H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸s6 N}œ+_μs=?{`سk߀FP,pk77} χl-Ç+^a aq|'=S-rmX0’qs-@P`שׁ< ;-!1?t[`P.@C/@Ó@#p:7Hҝ:Tqdi =$HV)"{AǏ " %J<.ᅁT`#H A4A8̡w8HѹDZD-`<;Т:28Ȁ#q2@ _P_ 48C[~Qyyh(./KH MLwzh@p߭C&p-BFV}|1)[ 1@, #xf:BN0I@D4{ @H'@'@@]* u䋀H䡾` H /mMT 2zd9<,h{4= |c:FtT:Y9#BE ģ B z 7$ JEL Tq̪VU yT?ِ`A lJ``2Ta F,U@~#x<#Yd{YADO_1ȫ:)Eo;?i저{4p)0 {-D鱻_ .nD =&=8>TYwҕ~$C狨@!_pJ)L*teӄTI{#baĨ ^a #P07Ey *[X.zhz$1R%b(:=v.OYj|Uy@A䌬*U;s_̏4 59 Zw)1X eMkl)_,}V =XGG MX7=}8]-'Q)}0iP|S0G D |GbY Chz-Rv` E7DY[DK[n}f"_yZ$cֶ!::} #V ?=da~u xuMF*0ź"R@eD[c @`GZt(ېR00~ K*h DH,buo D(VTX :S*0 f-h$^pu^ORWkŐ2eMOB3a}3=AM-g0:s}^@0 BD3e@mGI<LMH;` Ա낰kVЃA$mg19/#p17JZRpQRb!1]'S̵y&!2u EP 2/ã01Pn0 P){.0[3sDj&q@ Ѓт28DXF(v>ap*N@ QL~rZ\؅21xB11%!!BhjSA#ᆱql8tXvrxz|؇]~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~(芾>^~阞难~! ,fZZ\KKL""$::>< ~~|j`j`XRPbxt<68thXBXpLDHpnh`4<8PV`Դ|v蘠4:H PB.( |zp pBtphptv`HBh|p|ltt zhhd^t*,D8:(dTl||Į(:8F\P`N\tDLHNt\Ժ䠐ʔ@ƸvrxxXLL@*&0 x¾TbP¸Рx਴Ĩΰ萂prĐ䤠 00@ PXPbjp$(0.0 0& "( bj0 @rvx 0(00,h `<:HnhH.(nZx$`*Dzh^`p||vZltnt04`Z`ttl$0(H:H$0 ̾xTV@`Z`Zذx0:ΜȄ|0İ:&4DDPnr@NhFB@rrtFF<Ƽ¼ rr|Ė ĖFFD H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸s6 N}œ+_μs=?{`سk߀FP,pk77} χl-Ç+^a aq|'=S-rmX0’qs-@P`שׁ< ;-!1?t[`P.@C/@Ó@#p:7Hҝ:Tqdi =$HV)"{AǏ " %J<.ᅁT`#H A4A8̡w8HѹDZD-`<;Т:28Ȁ#q2@ _P_ 48C[~Qyyh(./KH MLwzh@p߭C&p-BFV}|1)[ 1@, #xf:BN0I@D4{ @H'@'@@]* u䋀H䡾` H /mMT 2zd9<,h{4= |c:FtT:Y9#BE ģ B z 7$ JEL Tq̪VU yT?ِ`A lJ``2Ta F,U@~#x<#Yd{YADO_1ȫ:)Eo;?i저{4p)0 {-D鱻_ .nD =&=8>TYwҕ~$C狨@!_pJ)L*teӄTI{#baĨ ^a #P07Ey *[X.zhz$1R%b(:=v.OYj|Uy@A䌬*U;s_̏4 59 Zw)1X eMkl)_,}V =XGG MX7=}8]-'Q)}0iP|S0G D |GbY Chz-Rv` E7DY[DK[n}f"_yZ$cֶ!::} #V ?=da~u xuMF*0ź"R@eD[c @`GZt(ېR00~ K*h DH,buo D(VTX :S*0 f-h$^pu^ORWkŐ2eMOB3a}3=AM-g0:s}^@0 BD3e@mGI<LMH;` Ա낰kVЃA$mg19/#p17JZRpQRb!1]'S̵y&!2u EP 2/ã01Pn0 P){.0[3sDj&q@ Ѓт28DXF(v>ap*N@ QL~rZ\؅21xB11%!!BhjSA#ᆱql8tXvrxz|؇]~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~(芾>^~阞难~! ,fZZ\KKL""$::>< ~~|j`j`XRPbxt<68thXBXpLDHpnh`4<8PV`Դ|v蘠4:H PB.( |zp pBtphptv`HBh|p|ltt zhhd^t*,D8:(dTl||Į(:8F\P`N\tDLHNt\Ժ䠐ʔ@ƸvrxxXLL@*&0 x¾TbP¸Рx਴Ĩΰ萂prĐ䤠 00@ PXPbjp$(0.0 0& "( bj0 @rvx 0(00,h `<:HnhH.(nZx$`*Dzh^`p||vZltnt04`Z`ttl$0(H:H$0 ̾xTV@`Z`Zذx0:ΜȄ|0İ:&4DDPnr@NhFB@rrtFF<Ƽ¼ rr|Ė ĖFFD H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸s6 N}œ+_μs=?{`سk߀FP,pk77} χl-Ç+^a aq|'=S-rmX0’qs-@P`שׁ< ;-!1?t[`P.@C/@Ó@#p:7Hҝ:Tqdi =$HV)"{AǏ " %J<.ᅁT`#H A4A8̡w8HѹDZD-`<;Т:28Ȁ#q2@ _P_ 48C[~Qyyh(./KH MLwzh@p߭C&p-BFV}|1)[ 1@, #xf:BN0I@D4{ @H'@'@@]* u䋀H䡾` H /mMT 2zd9<,h{4= |c:FtT:Y9#BE ģ B z 7$ JEL Tq̪VU yT?ِ`A lJ``2Ta F,U@~#x<#Yd{YADO_1ȫ:)Eo;?i저{4p)0 {-D鱻_ .nD =&=8>TYwҕ~$C狨@!_pJ)L*teӄTI{#baĨ ^a #P07Ey *[X.zhz$1R%b(:=v.OYj|Uy@A䌬*U;s_̏4 59 Zw)1X eMkl)_,}V =XGG MX7=}8]-'Q)}0iP|S0G D |GbY Chz-Rv` E7DY[DK[n}f"_yZ$cֶ!::} #V ?=da~u xuMF*0ź"R@eD[c @`GZt(ېR00~ K*h DH,buo D(VTX :S*0 f-h$^pu^ORWkŐ2eMOB3a}3=AM-g0:s}^@0 BD3e@mGI<LMH;` Ա낰kVЃA$mg19/#p17JZRpQRb!1]'S̵y&!2u EP 2/ã01Pn0 P){.0[3sDj&q@ Ѓт28DXF(v>ap*N@ QL~rZ\؅21xB11%!!BhjSA#ᆱql8tXvrxz|؇]~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~(芾>^~阞难~! ,fZZ\KKL""$::>< ~~|j`j`XRPbxt<68thXBXpLDHpnh`4<8PV`Դ|v蘠4:H PB.( |zp pBtphptv`HBh|p|ltt zhhd^t*,D8:(dTl||Į(:8F\P`N\tDLHNt\Ժ䠐ʔ@ƸvrxxXLL@*&0 x¾TbP¸Рx਴Ĩΰ萂prĐ䤠 00@ PXPbjp$(0.0 0& "( bj0 @rvx 0(00,h `<:HnhH.(nZx$`*Dzh^`p||vZltnt04`Z`ttl$0(H:H$0 ̾xTV@`Z`Zذx0:ΜȄ|0İ:&4DDPnr@NhFB@rrtFF<Ƽ¼ rr|Ė ĖFFD H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸s6 N}œ+_μs=?{`سk߀FP,pk77} χl-Ç+^a aq|'=S-rmX0’qs-@P`שׁ< ;-!1?t[`P.@C/@Ó@#p:7Hҝ:Tqdi =$HV)"{AǏ " %J<.ᅁT`#H A4A8̡w8HѹDZD-`<;Т:28Ȁ#q2@ _P_ 48C[~Qyyh(./KH MLwzh@p߭C&p-BFV}|1)[ 1@, #xf:BN0I@D4{ @H'@'@@]* u䋀H䡾` H /mMT 2zd9<,h{4= |c:FtT:Y9#BE ģ B z 7$ JEL Tq̪VU yT?ِ`A lJ``2Ta F,U@~#x<#Yd{YADO_1ȫ:)Eo;?i저{4p)0 {-D鱻_ .nD =&=8>TYwҕ~$C狨@!_pJ)L*teӄTI{#baĨ ^a #P07Ey *[X.zhz$1R%b(:=v.OYj|Uy@A䌬*U;s_̏4 59 Zw)1X eMkl)_,}V =XGG MX7=}8]-'Q)}0iP|S0G D |GbY Chz-Rv` E7DY[DK[n}f"_yZ$cֶ!::} #V ?=da~u xuMF*0ź"R@eD[c @`GZt(ېR00~ K*h DH,buo D(VTX :S*0 f-h$^pu^ORWkŐ2eMOB3a}3=AM-g0:s}^@0 BD3e@mGI<LMH;` Ա낰kVЃA$mg19/#p17JZRpQRb!1]'S̵y&!2u EP 2/ã01Pn0 P){.0[3sDj&q@ Ѓт28DXF(v>ap*N@ QL~rZ\؅21xB11%!!BhjSA#ᆱql8tXvrxz|؇]~8Xx؈8Xx؉8Xx؊8Xx؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~(芾>^~阞难~! ,f nnlBBD::><NNL~~|ttl$(0^d`LF@x<680 @4:HX@XШ"( nf`prrvx|v~xbdp.( *,Dpfpblhʔ*DBH@|p|bh dRl~8:(lttx$vVlTbPnV दNt\Nfx@LDPvrx `䬪`Zؐp  $ ΰ0:Į0 0@ĒΜnfHPP`:&4*&0bxtĸ~4<8| (:8.0 xx0& $0FJ@tv`||.(0(0<:HĸĨ0,hh\`ԺFZP $0(l0DFP̶Юp@t0npP@x\ PXX`XPXtntH:Hb\`@|zptf`ZTT@d\t¸zfh4p||ȸH@hNZtx`Դrr|¾Ě FFD FF<rrtľ H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sfXb Nk+_μ!.سkν<I0yHs' wOn:+=8hԁ'Vhss;\8`AG*bQ0hЌ ؐ|@I+=أ(ɓ @O COHRREeY ydihF^Ak* !$00h_ @=@,C&T$0 #@+1\Mc ,P,P'@Bm4an9PgɁ xqyS+12㇇r;>@O/;8@0;`rq h0@/C=<$`az*#1P4ܳBg`& s= ?@B=PЃ@ d@T iA4Q$F;XxKG9z /~>8D\e%\k:c#H+@ `j[<p h@ (<i gAlDj@"u |*7m 킀#cVb;z@ $X3% )@AcHFz&v1"_,/M PKq &0*{Vz$>"9Ќ4͔ c P@$C\`(x `.y=> YX.V$@2pr8@i$H?NgQB Zy䱂8 '>t HPt ]=!b"=p#!7 <uBOO㥎 瑲U HV U#IQ*NhMZ6Md2{ BPAB VE{R$WcP5VX=Me-3r8=TV1X@b[Dh|>q̎[NK9T! aO8EA{PhI{->~[ֵon z,06 t~p*"\h>0 7t=a%" %+|$@(Fl7@FxcAڃDH ;2za=@h\*Iv!?N+mBy|J@I {ȌAfXP2q?PnY]>*:xzЀwH8hCʢ̣{Ax od+@$> q؁*Xp"zҀSa.7r EZ0>tZ =m]?K3Έ4ZW#2k|e & < 0%Ar02"83S5P, p5|r @Y#6$gPsH @@+Ps(U3Hf P3'|6'sNb2Sxo`_pNftV^ pX:,4M1uLR?XJe7jl؆X! =At\|zↀ8@`BAo2* T x-xx' cHGQir8Xk劼8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~舅芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>! ,fBBD::<^^\VVTjjlZZ\&&$vvtbbd**,zz| 664224RRT""$JJL..,ffdnnl>><8hԁ'Vhs ;#\ $`A*bQ0hЌ ؐ|@Iȓ?c() O #OHRREeY ydih0#p0R<,>zP (KZ\ hEP =Zi榜v駁@?2d!):\< $ &tk5kAZZ$B+ACjf~ЏSA'Lc@d@<& a,CCBA0`%p9X/ tL<N``edI<$g/KPp` D'Ӄ (B&lC`""=t DE#30HDŝ`1}rAeij@ m^߀@r|0wA 8%X8 f,P: #<'ē@ s>izX /ι#OU^zK24CA?,{裗s ?H0$INT1'="HFDb%S\ X@J@?AScR#HЌ4id @h@ G*ăAr%`@D`" ENScD' D@qMC)@r>D/3+H`z~Ci, '$pSD! >XZd@ 겺;pW : sla)}$萁kaO09"(:0<=Ə t]acAEMwJX4]tbzmB~N{H~#eNH2` Cd4ESJ(@=@P[{<*pM+"pA0xB|K@ \Z 2 .!BN B`JhhomuL! ,w}b ;@<)Q@2`D;jVfW K) /U ӟ#)|x:p0'yFȉ !8"X؊d8XX^x؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~}芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞! ,fBBD::<^^\VVTjjlZZ\&&$vvtbbd**,zz| 664224RRT""$JJL..,ffdnnl>><8hԁ'Vhs ;#\ $`A*bQ0hЌ ؐ|@Iȓ?c() O #OHRREeY ydih0#p0R<,>zP (KZ\ hEP =Zi榜v駁@?2d!):\< $ &tk5kAZZ$B+ACjf~ЏSA'Lc@d@<& a,CCBA0`%p9X/ tL<N``edI<$g/KPp` D'Ӄ (B&lC`""=t DE#30HDŝ`1}rAeij@ m^߀@r|0wA 8%X8 f,P: #<'ē@ s>izX /ι#OU^zK24CA?,{裗s ?H0$INT1'="HFDb%S\ X@J@?AScR#HЌ4id @h@ G*ăAr%`@D`" ENScD' D@qMC)@r>D/3+H`z~Ci, '$pSD! >XZd@ 겺;pW : sla)}$萁kaO09"(:0<=Ə t]acAEMwJX4]tbzmB~N{H~#eNH2` Cd4ESJ(@=@P[{<*pM+"pA0xB|K@ \Z 2 .!BN B`JhhomuL! ,w}b ;@<)Q@2`D;jVfW K) /U ӟ#)|x:p0'yFȉ !8"X؊d8XX^x؋8XxȘʸ،8Xxؘڸ؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~}芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞! ,f224BBD::<^^\..,VVTvvt&&$bbd**, zz|jjlffd664JJLRRT""$ZZ\nnl>>"\R숈 aA*bQ0hЌ ՘|@)À?묃(O# OHRR<.2C#,zR\phE.fJTFg駠**]N;#<@HHE!AaHZSt)0@ ;# @A\HSo,P|,P#d@=D$vk'D$P'ɱCc@%Ҁx7{x6>#@Z{#; q@`0n8Ph@`w < 6?>κOp? {0 ?BS>X3"`xc8, x0"@M)">|+G9o Г^A2XG L +vPT Rp,w 0~l@ Ç,0" -:]QHuX@Av\O*F! 10< hq:`"$$@Qt9 @01<bq` 0״p#XD> o,k 2#<wuYȈ k,"z0cI)/> d렆q#ubeGHrI֑40I@D.y]<67>4`yP,"{i"Xc@0S@dE@\Ta'K>tRXD"kVBe< mXbPCwX>1 h0hX,{r|,1?q!PHA@ &yuh Z*p:"B~Sn)Nt ,svc $(I<!+,EȪ jkG0L09p ?@lR"`OZϒH0*lED%-mՆ,@E¼GMm>Y!#@A.0{8KG$b{F}(³ MJ% ` p"Tw0OA6VER3~@;4@no(9) N" rQwosxD;gh@J Iy[$KǷ GJ:eЎp* tk(ò"o(`ЈNtkփ TC@.p aG8 A[2 0~Xl4%95>>QT--i7pHBP w1L|."~꧲,H;A/%$i2#Y@_VN'f'@O.5AA w kI23:DbG f e)TI 5cgEJ_wKf@6\30pj]@;p!.hU|6B`43T>aFF@=`+P <5p&S7TA1AN"2!6(2 "ن*\GVD&c> P+F#0IR?1I=J%)&C؉@a=AGgC-!88!&"` y|'!XȘʸa}A! fшHPq̸؍ވx蘎X؎WXx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~Ԟ芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?! ,f224BBD::<^^\..,VVTvvt&&$bbd**, zz|jjlffd664JJLRRT""$ZZ\nnl>>"\R숈 aA*bQ0hЌ ՘|@)À?묃(O# OHRR<.2C#,zR\phE.fJTFg駠**]N;#<@HHE!AaHZSt)0@ ;# @A\HSo,P|,P#d@=D$vk'D$P'ɱCc@%Ҁx7{x6>#@Z{#; q@`0n8Ph@`w < 6?>κOp? {0 ?BS>X3"`xc8, x0"@M)">|+G9o Г^A2XG L +vPT Rp,w 0~l@ Ç,0" -:]QHuX@Av\O*F! 10< hq:`"$$@Qt9 @01<bq` 0״p#XD> o,k 2#<wuYȈ k,"z0cI)/> d렆q#ubeGHrI֑40I@D.y]<67>4`yP,"{i"Xc@0S@dE@\Ta'K>tRXD"kVBe< mXbPCwX>1 h0hX,{r|,1?q!PHA@ &yuh Z*p:"B~Sn)Nt ,svc $(I<!+,EȪ jkG0L09p ?@lR"`OZϒH0*lED%-mՆ,@E¼GMm>Y!#@A.0{8KG$b{F}(³ MJ% ` p"Tw0OA6VER3~@;4@no(9) N" rQwosxD;gh@J Iy[$KǷ GJ:eЎp* tk(ò"o(`ЈNtkփ TC@.p aG8 A[2 0~Xl4%95>>QT--i7pHBP w1L|."~꧲,H;A/%$i2#Y@_VN'f'@O.5AA w kI23:DbG f e)TI 5cgEJ_wKf@6\30pj]@;p!.hU|6B`43T>aFF@=`+P <5p&S7TA1AN"2!6(2 "ن*\GVD&c> P+F#0IR?1I=J%)&C؉@a=AGgC-!88!&"` y|'!XȘʸa}A! fшHPq̸؍ވx蘎X؎WXx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~Ԟ芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?! ,f224BBD^^\::<..,VVTvvt&&$bbd**, jjlzz|ffd664JJL""$RRTZZ\nnl>>8H&L6nܳ?묃($pOV h!H^=cUfҚ%w0:ixe8L@ #53 C#C=:Rʒ' VtimNP !竰*n3:Oeس^lA!pU )lMB[PV: F6Kг.GҪ.N>D: A(Z $=l=O '\B0A89P` tX=Of l ?pW:'HA<4P)#\rA#r=|P> Q0, 3A3\=X=< @wC$0SC*cPbAx,ز@SD@lcc< @sq`0.ڳI@ AA*4= a=P"j;# @'ToU"&# 0=1M=FQ: A 'A{G7 . H# zvY.{H*ZqO @Spy 0xl@F}`FqLK`@Aq|\DQ?FH1:(,`,000c:(#X9 € ~'9X *% xҀuD@ AAncEp x=SElB/@4SXYP <=k=h)ͬfs÷ULl(+ E9 G ``9Lg-W({e?qM=*Q 5@  j P 6=x@Xu@T]A]2̳2ímT >¨p!jgs҉u 5HxY' ] 'Yz iq QH.H?I6d?A # Vhw]dUW*y41aO?P7,EYX~nE'{}XWZʭ;#dufu^8"֐Q7vHt2PI٤Ta{٘KH2> Sֲ"GMjϬn]41=g83ARK l A!(?y B.0k{Pb L5[Y&:( h3j;yu05m!8Y,'\w "v daKISbn3YR{ 9caE]-$Q?s`D>.爠`"k`M/qX' "iXy<.+tx!Gl@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<! ,f224BBDVVT^^\::<..,vvt&&$jjlbbd**, zz|ffd664JJL""$RRTZZ\nnl>>i讼fC?NԳ^l!@ YmMr[V ? FfKж^ѭ%TC$@FO:Br ׃> 0#Ly3=N,.@ p:papp@ @SA+,0> mp°o1p@r0B3i1! A nCpc >@DEE24 d3̳=tAaS@@f*->G.нꬷ. 8J@r0yA|4 1>sHP(҂(,P='@޳TC}@\KYT;?A !}-COӃ@;bpz̃pC~ 񞌴Hbk\"q  8c0KcO, fze<' z\*[6P\$N{Fgz<7W зf6C DwةC߂)G)Fz|b %0 ݝ0t1E쏠p<(5K0Ό=]G#ŝ)2VMҠ\I'܃@`z\c͂.  рN:YUO}eA|Zc `ц`=a R唊鸕jJW"cKU;{X:h|S1S=% $bGPհ14k)vEXD;`{&h0 ^#ָ*pPw€6롉%pcrLa'ß#@4 a @ A{\1ƥHz.C;;jXD߁-y.!1$R7GdrxKr@0b@Y?( +^ | =fe.1'jr8vFG${Azda{Vi Z!uһ@ Fࣅ0G].qd.Gܬ:s#z8pىceAz3X^g`@R9Q}MP @BV 'A {ϽBz@@pBD& a0bF@wBGJˆAH : ˌ\ }y"v @|mpPzP!p5 "_)W~wmvWBHgM}gW4+6@~V%7Nqq =GS3j~N0}G%9\dLb{R8TXH d@08 p2?S22m`)p=rs1lXi tD`6WTCF@AmFPB=->5wp 'PV]EG_ &B#'R@BSc72płx%a td4 >K|P0+%T#~KRs0{sz(( h(<10R%3Qhx蘎1a ?AJ!H E-Q娎؏dr"@!'! 99 ~l%w#aY$Y&y-p,"2(029.96y8/ǒ:ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02D?4_68:<>@B?D_FHJLNPR?T_VXZ\s! ,f224BBDVVT^^\::<..,vvt&&$jjlbbd**, zz|ffd664JJL""$RRTZZ\nnl>>i讼ZC?NԳ^l!@ YmMr[V ? FfKж^ѭJ%rTC$@FO:Br ׃> 0#Ly3=N,.@ p:papp@ @SA+,0> mp°o1p@r0B3i1! A nCpc >@DEE24 d3̳=tAaS@@f*->Gн>)>L^ H8`; .?<5zHr{f %΃kUUPyn!5P,;cl`,H/#K  ̂^H jQ D5 rA`rWXHDN=P ޣB@FlH.CYA10;(0hT!P]`kACR:`@tю!6 52Wb=~g~Vw$Dp4Wpq`EL`W~h]]~' p4<$h0Fq;Xw4\B=K%HFڗb{R8TXA T@08 p2?S22l_(`=bs1lXi tD`6VTB6@AlF@B=->5wp '@V\E7_ &B#'R@BCc7"prx%a td4 >K|(Z0+%T#~JRs {cz(( h(<10R%yVx蘎sx[H:a؏)N"y|!'! IY~l%w#a y&y(&p,1R*2940Y8:<@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02I?4_68:<>@B?D_FHJLNPR?T_VXZ\^`! ,f224BBDVVT^^\::<..,vvt&&$jjlbbd**, zz|ffd664JJL""$RRTZZ\nnl>>i讼ZC?NԳ^l!@ YmMr[V ? FfKж^ѭJ%rTC$@FO:Br ׃> 0#Ly3=N,.@ p:papp@ @SA+,0> mp°o1p@r0B3i1! A nCpc >@DEE24 d3̳=tAaS@@f*->Gн>)>L^ H8`; .?<5zHr{f %΃kUUPyn!5P,;cl`,H/#K  ̂^H jQ D5 rA`rWXHDN=P ޣB@FlH.CYA10;(0hT!P]`kACR:`@tю!6 52Wb=~g~Vw$Dp4Wpq`EL`W~h]]~' p4<$h0Fq;Xw4\B=K%HFڗb{R8TXA T@08 p2?S22l_(`=bs1lXi tD`6VTB6@AlF@B=->5wp '@V\E7_ &B#'R@BCc7"prx%a td4 >K|(Z0+%T#~JRs {cz(( h(<10R%yVx蘎sx[H:a؏)N"y|!'! IY~l%w#a y&y(&p,1R*2940Y8:<@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02I?4_68:<>@B?D_FHJLNPR?T_VXZ\^`! ,fnnl^^\BBD224jjl::<..,ZZ\vvt&&$bbd**,VVT zz|JJL664RRT""$ffd>>Ww %vÊ I%h@A0<9pkH ; D;^3> xp26a3xF= &`A3:= Q)=E=5 U_5A\{]7=Pe DAC3cl'o) xZ@rzAw<;x `)J")Z-4(#:|'](C>еy0~iP?@$pA-,c:^1&  :q~ \@>Oa 0`@E@&LL3&PuCX2u"`.$ !_> ><>x|0Ё E0h?Rpu.XG !kFGBQ(4 XSLc#X4 0y-82_> "u"Z@>(DJ q`H%!JaC B0` "T2[ BL0<Ĩ~,x2\!XL&nuI :YLb!Ki('.~4I j.[>$Ț8Mr6Xd L0A$6HyP`"++"u\VRрwH4R HB:>M  i$[h#U NAVP( U<φDCcz琮aRHXXM-Y m+ALZ/pg͟*EVr'BFYj8ӜZnhH C Q& s)6  +ÿHQa6'r!bϗcuaZ!I8|%x0RAv< 10hQWxF1 22h6?p`X#2PY{`u<2 HW?CAPljxxֶh8Vh;iĬm,Bpf0: ĵTdRG'g%vGoHׇ~<& GoCv"Yj);1=(dP;PK@po/D`Z"@gAaL0&w8(ISwR1w p (4 MYp!p$` ၟ+?0  GLB  G6Eƴ>0 @p2 @u< 0 7FsC2=GB!ttI7t >t+>Y" 0v0Jzs䄺3khb=R[0 ,(6] Mv4pI _p)VXx5 4B9A> wZc3pqw}R0?]d XpbpF 8tT{BaF % /FXlSP<Cu V 4Ǘ&]s(R`]f}2*E'ި\ FC&6T"`a.x0Q!))a.)>Spd pI@ LٔNaAA1LIVG-WiK b9dYLBP@EP)l00aiz|9b@q%!wA#Yyٗ٘{+yPIYyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_/! ,fVVT^^\::>!DQ ( A:6cQ P1@D  (k<L@E4 )@!@=\mN݃}ze-PڰCkl'_iAr PCU_0@=@2@= +v@2}>$(=mu0? v!{@Ca3`yK=pGf'Y x3 @ G׾C^w@` Ӂ82 (>T G @S(0Br$Q@ʃ@$Hlg ! m8 nP 󠠞'>Nm(IBr;G!` .x`@2F-kc>By"J@B8:`t`y@./0cl;7hv@8CAR|@@WAUB& h 4 }ǎW\8PҌH, Bt@?53A,~<™qS d9D&u#ّ<-;LgJӚ&92& q^BvC)Tqǁ䡁@i@G͇3dLr%1{`WACZp|C )ƫ8y` Hz>p<rs B/(9xb- O  0@ 1)vm3L@7P|_?0Ea:IS2fpu5EuT?P tX&I̠vY7&P(e> RC[" 51 0 Jr%Rx؋( B @@\40rUO?0?_e AhJF >ES{F0%0/16DNpMY &_H:pt~3~$*d  _C#0S1(QPsyn6Eq0?$K0o53`@TYVyG@KH^H-1_iSjlٖ>g)!t V! i閂9xgzr!sqYYy|+3I*0yXəٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿo! ,fBBDVVT224^^\::>yݷzb-٬ttRT_,o) x @r ;AxM !z8xa=6 §`@QSkJ{i;};$>tmG;yWCH҂ɨ) {- bVX F^`$J! *t- x2N *[X>L=_R#*,Σ}G̣@^nj-fS8{1hxR)~@ҳC\̍d] q $ VeS 6*(郎C>`%mP?'u< h(L%T~UV!o6F({x ۸ fKIpVG݈Y^:aAd] 1#T^N&R=S V AP LblS(!9A|EF<`n#xP^ [hcǛB<! &g +w:'ޑ S۪Ct v"ĸ)Y+(G8 B! r~} hHxT)T1D0!3! #4 G4YoA1P` *n0d0 GаA`PG"HEt>  2# ptj3H(7vO@QB|(e (s<7s"=), Y`p Vg56y2Qp>C BpNe0  dubn8HATꠂ!5 2 pgTC!;1'$ 0dfdØiT rg(6xpSۀ^'&\c)Ru0\e|$f *6g0Fs&0T#Q.0mVAx,p G )63>$ P+0 p<ٓ> p&QJiH?R9T JT!"Y|-JUjׄAGqis)PDl|ٗ~xi1zy}٘Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_p! ,f**,VVT..,::>#G߅fᆳ<"DQA.cQ4hЍ ?O? NTF)TV C?Ӂ($ Ih&QlIGqvdPA? `堄jjq# 4 tbiȐi%MAR$*Pnћt#kCœ@?) GHBNBECApH~[Sd!)\Q$.~kPK" +l0D:DB?s$xH@ H+<)6J 9H!@DtP `4>d3ѓO ad ?\L([`A>X`! 쳮@_H? A`@)$m @,3=]rE t4>I t9>iv{RS-՜O у,N( @@x8:AyXq>u<""ZF"V.>l'PA'#4bD 0-@x0 ӓ 5 9< 3A$2AkV{| |N4D(@?Uz#H1@҇ ]"4&;BklpD Ud:БCx>yA'| G? $HW" `B@ | ,Ⱦ :hMXKT@ %D@"ޑH`@I@A =.r$* @@$x \yAMH!pq؀X\Z@#)!A"`RHRD+ y G?$ dA0 $b)ARBHa !:)e2S-w:u)0ůͨFa 0$ DK: G̃vY ^?1Ɋ\UpH ,\0xčGI|D*@QKT0Nq&43@$< Q󁋁 hpSM.J8A~:#o.犪U.<#*icϗֵ\W Qdi" B-nͭn1+d*0\X 8P )_Ƀ&wnL"/Bw)*=:A}`[Ң-l}\,|w"?-<,Xun>`}txΜ|tTikP u ̒4)@ZX9b8,"LovDH7 X f YZ҇}`!p*Z{G+`Uר xtNAD$4lsB>{j[K{$yYZ ": 0>uYqq5s`@KfPU: "z[аAN=< -96qN ΁V ^{@a݁nQ!;LD%dH:..!"%AUFpttx`}Rp'dODJ65XϺַxJ$D0`.ڈ!"3`LA s-bi {V{ []tIcr;jAa^w \Gtڛ͒Ct` v",YUcS X( vQKbm !Ao lhOg&~c!Rq9q@``*) `@ Df$|EJS@ `P w7.5Yalb (q@]W$<66Uru̓#>r0teV"bNP '7 X 0T*Ex.m WP9b /ə"B*X yؙlm`@ sl7T0 6 QU 9c/tuf҂! u #D l`l0\`u S鹊:|IvS4o p A0 ^X$p$Q?0nF)EP4*I@8:DZk;; I 9v{BjQSQ\/%X `"]tQ '1jprʔڝbB!0se.P*evi8&D' :aSZ Pq tsکZSpaE kUzt)"a(eg@0:ZmuzY Mԡq#7qW1KSzpňK + {l}s%\BB&Jʤb P*۱+0Z/3)}JP޶"8P$|oPPf 6JB;D{!% (I:Q0Ås@~S (J+ `]eN P™El۶>rUR5&QKjDu7]GI A ' @wn;qP :4 f֭] "YHx vJpKP\ 6y'fb6x=zz0n~AtZ5`I׻{KpB~+M%IMZl#:v 3{_FB  a50 dX2$ "012\6|*4<>@B&0F|H|INp V|XLU^`m[a|hN<aj\v|>3Z%| AxȂ<Ȯ m" Ȅ\ɖ|Q[2%U-3ɤ\vvq0 l#_S3ʦ|˸@0%zН. T:P)F<GsTwt" a7, <5QR# M]L[p5 RDfM2\ лčP5j[T" 5őY@W*}^b@]Bm"@ p+:op ;]F x ?uGGRY ASZ=F[b-_=hB jn-lr=קt}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>#G߅fᆳ#<"H񘈑 An.cQ4hЍ 娑<)= NDF)TV Y3?A(ɓO Ih&QlIGqvdP= `堄jjy_|@ 4!tiȐiz%MpR$*Pnћnt#kC=#GHBESArH~[Sd!p)`Q$.~kPF", +l0D:D= s$DAH+m<PK4M 5HPHo|P $`4>d3œOd al<\L([3\A> X` 쳮@S= A3\0@4$} œA,3=]rE t4>I t9>iv{RS-՜O уf,Nh @@x4:AxXq>~<"@L"V>*l'A'#FaD0-@x0* 9 ? 3A$2AkV{| |N42D$=Uz#H@]"4&G?pD2!`dБCx>~A'| G? $HW" `B@ | ,Ⱦ :hMXKTȀ%$ @"+H`@&I0AN G<.r$* 0@$  1MH!p?pb7Z@#ɏ!A"`RHD+ ~= dA0 $)AfRB !:e2S-w:u!.ůͨFa 8$ HK6 GcvY ^<1Ɋ`ܠH( *,"1wčyGI|D*@QKT0Nq4;@"< Qᆁ h܀SMӇTk0O@ +WLҚ@>ad=_ZV.rs^*D $  |6y!<$p"*R["!~dO)R{|bGS߀_b{xQ%Hw[3ղ{($m4@` J =RNYTuK!hAx񶕺^ J0,ە?ïAI-GH6 L俼 ۥp7mIAcpŮ߉2?`55X 9s Pٟ\B $+0KRUdAjA`w GҰ0e!P-`]d(`>8 ' 7 CR~m:!pvri!")"b~ !iږF9'ɦ~C* @U!NuBWe&-t1I@ @  P;%8 J0nA^=E3 @ve} HGbhM0RE "Ӡ<ڣ>:3t:iycUL7(65%ÅY0* *R2ۅD5p?zhD)& #?!Q"-"\fGVQmstJbwZ q˄tj:TSp4E kN 䧜"aQgbB8)0XtFCzƦ5#D0ДK0qS7$,ԗC*"Oa $PnF@{Zzld-0"%}qq% ZB@&`CZp ;+0@%m`!3 N|EWVpPfr!6Z8:K%3փ!@8E \ I<r22N PB;`qS%5c*~@FD]w%p$:Pw|QqW^+[=K4818!#K =0jnUڕ!+~PiWOۺA! Z a&׳ 0gX~A"Pt =DMFELݠˠIR=8T}XݠV\ա^b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>#G߅fᆳ#<"H񘈑 An.cQ4hЍ 娑<)= NDF)TV Y3?A(ɓO Ih&QlIGqvdP= `堄jjy_|@ 4!tiȐiz%MpR$*Pnћnt#kC=#GHBESArH~[Sd!p)`Q$.~kPF", +l0D:D= s$DAH+m<PK4M 5HPHo|P $`4>d3œOd al<\L([3\A> X` 쳮@S= A3\0@4$} œA,3=]rE t4>I t9>iv{RS-՜O уf,Nh @@x4:AxXq>~<"@L"V>*l'A'#FaD0-@x0* 9 ? 3A$2AkV{| |N42D$=Uz#H@]"4&G?pD2!`dБCx>~A'| G? $HW" `B@ | ,Ⱦ :hMXKTȀ%$ @"+H`@&I0AN G<.r$* 0@$  1MH!p?pb7Z@#ɏ!A"`RHD+ ~= dA0 $)AfRB !:e2S-w:u!.ůͨFa 8$ HK6 GcvY ^<1Ɋ`ܠH( *,"1wčyGI|D*@QKT0Nq4;@"< Qᆁ h܀SMӇTk0O@ +WLҚ@>ad=_ZV.rs^*D $  |6y!<$p"*R["!~dO)R{|bGS߀_b{xQ%Hw[3ղ{($m4@` J =RNYTuK!hAx񶕺^ J0,ە?ïAI-GH6 L俼 ۥp7mIAcpŮ߉2?`55X 9s Pٟ\B $+0KRUdAjA`w GҰ0e!P-`]d(`>8 ' 7 CR~m:!pvri!")"b~ !iږF9'ɦ~C* @U!NuBWe&-t1I@ @  P;%8 J0nA^=E3 @ve} HGbhM0RE "Ӡ<ڣ>:3t:iycUL7(65%ÅY0* *R2ۅD5p?zhD)& #?!Q"-"\fGVQmstJbwZ q˄tj:TSp4E kN 䧜"aQgbB8)0XtFCzƦ5#D0ДK0qS7$,ԗC*"Oa $PnF@{Zzld-0"%}qq% ZB@&`CZp ;+0@%m`!3 N|EWVpPfr!6Z8:K%3փ!@8E \ I<r22N PB;`qS%5c*~@FD]w%p$:Pw|QqW^+[=K4818!#K =0jnUڕ!+~PiWOۺA! Z a&׳ 0gX~A"Pt =DMFELݠˠIR=8T}XݠV\ա^b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>#G߅fᆳ#<"H񘈑 An.cQ4hЍ 娑<)= NDF)TV Y3?A(ɓO Ih&QlIGqvdP= `堄jjy_|@ 4!tiȐiz%MpR$*Pnћnt#kC=#GHBESArH~[Sd!p)`Q$.~kPF", +l0D:D= s$DAH+m<PK4M 5HPHo|P $`4>d3œOd al<\L([3\A> X` 쳮@S= A3\0@4$} œA,3=]rE t4>I t9>iv{RS-՜O уf,Nh @@x4:AxXq>~<"@L"V>*l'A'#FaD0-@x0* 9 ? 3A$2AkV{| |N42D$=Uz#H@]"4&G?pD2!`dБCx>~A'| G? $HW" `B@ | ,Ⱦ :hMXKTȀ%$ @"+H`@&I0AN G<.r$* 0@$  1MH!p?pb7Z@#ɏ!A"`RHD+ ~= dA0 $)AfRB !:e2S-w:u!.ůͨFa 8$ HK6 GcvY ^<1Ɋ`ܠH( *,"1wčyGI|D*@QKT0Nq4;@"< Qᆁ h܀SMӇTk0O@ +WLҚ@>ad=_ZV.rs^*D $  |6y!<$p"*R["!~dO)R{|bGS߀_b{xQ%Hw[3ղ{($m4@` J =RNYTuK!hAx񶕺^ J0,ە?ïAI-GH6 L俼 ۥp7mIAcpŮ߉2?`55X 9s Pٟ\B $+0KRUdAjA`w GҰ0e!P-`]d(`>8 ' 7 CR~m:!pvri!")"b~ !iږF9'ɦ~C* @U!NuBWe&-t1I@ @  P;%8 J0nA^=E3 @ve} HGbhM0RE "Ӡ<ڣ>:3t:iycUL7(65%ÅY0* *R2ۅD5p?zhD)& #?!Q"-"\fGVQmstJbwZ q˄tj:TSp4E kN 䧜"aQgbB8)0XtFCzƦ5#D0ДK0qS7$,ԗC*"Oa $PnF@{Zzld-0"%}qq% ZB@&`CZp ;+0@%m`!3 N|EWVpPfr!6Z8:K%3փ!@8E \ I<r22N PB;`qS%5c*~@FD]w%p$:Pw|QqW^+[=K4818!#K =0jnUڕ!+~PiWOۺA! Z a&׳ 0gX~A"Pt =DMFELݠˠIR=8T}XݠV\ա^b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>#G߅fᆳ#<"H񘈑 An.cQ4hЍ 娑<)= NDF)TV Y3?A(ɓO Ih&QlIGqvdP= `堄jjy_|@ 4!tiȐiz%MpR$*Pnћnt#kC=#GHBESArH~[Sd!p)`Q$.~kPF", +l0D:D= s$DAH+m<PK4M 5HPHo|P $`4>d3œOd al<\L([3\A> X` 쳮@S= A3\0@4$} œA,3=]rE t4>I t9>iv{RS-՜O уf,Nh @@x4:AxXq>~<"@L"V>*l'A'#FaD0-@x0* 9 ? 3A$2AkV{| |N42D$=Uz#H@]"4&G?pD2!`dБCx>~A'| G? $HW" `B@ | ,Ⱦ :hMXKTȀ%$ @"+H`@&I0AN G<.r$* 0@$  1MH!p?pb7Z@#ɏ!A"`RHD+ ~= dA0 $)AfRB !:e2S-w:u!.ůͨFa 8$ HK6 GcvY ^<1Ɋ`ܠH( *,"1wčyGI|D*@QKT0Nq4;@"< Qᆁ h܀SMӇTk0O@ +WLҚ@>ad=_ZV.rs^*D $  |6y!<$p"*R["!~dO)R{|bGS߀_b{xQ%Hw[3ղ{($m4@` J =RNYTuK!hAx񶕺^ J0,ە?ïAI-GH6 L俼 ۥp7mIAcpŮ߉2?`55X 9s Pٟ\B $+0KRUdAjA`w GҰ0e!P-`]d(`>8 ' 7 CR~m:!pvri!")"b~ !iږF9'ɦ~C* @U!NuBWe&-t1I@ @  P;%8 J0nA^=E3 @ve} HGbhM0RE "Ӡ<ڣ>:3t:iycUL7(65%ÅY0* *R2ۅD5p?zhD)& #?!Q"-"\fGVQmstJbwZ q˄tj:TSp4E kN 䧜"aQgbB8)0XtFCzƦ5#D0ДK0qS7$,ԗC*"Oa $PnF@{Zzld-0"%}qq% ZB@&`CZp ;+0@%m`!3 N|EWVpPfr!6Z8:K%3փ!@8E \ I<r22N PB;`qS%5c*~@FD]w%p$:Pw|QqW^+[=K4818!#K =0jnUڕ!+~PiWOۺA! Z a&׳ 0gX~A"Pt =DMFELݠˠIR=8T}XݠV\ա^b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>#G߅fᆳ#<"H񘈑 An.cQ4hЍ 娑<)= NDF)TV Y3?A(ɓO Ih&QlIGqvdP= `堄jjy_|@ 4!tiȐiz%MpR$*Pnћnt#kC=#GHBESArH~[Sd!p)`Q$.~kPF", +l0D:D= s$DAH+m<PK4M 5HPHo|P $`4>d3œOd al<\L([3\A> X` 쳮@S= A3\0@4$} œA,3=]rE t4>I t9>iv{RS-՜O уf,Nh @@x4:AxXq>~<"@L"V>*l'A'#FaD0-@x0* 9 ? 3A$2AkV{| |N42D$=Uz#H@]"4&G?pD2!`dБCx>~A'| G? $HW" `B@ | ,Ⱦ :hMXKTȀ%$ @"+H`@&I0AN G<.r$* 0@$  1MH!p?pb7Z@#ɏ!A"`RHD+ ~= dA0 $)AfRB !:e2S-w:u!.ůͨFa 8$ HK6 GcvY ^<1Ɋ`ܠH( *,"1wčyGI|D*@QKT0Nq4;@"< Qᆁ h܀SMӇTk0O@ +WLҚ@>ad=_ZV.rs^*D $  |6y!<$p"*R["!~dO)R{|bGS߀_b{xQ%Hw[3ղ{($m4@` J =RNYTuK!hAx񶕺^ J0,ە?ïAI-GH6 L俼 ۥp7mIAcpŮ߉2?`55X 9s Pٟ\B $+0KRUdAjA`w GҰ0e!P-`]d(`>8 ' 7 CR~m:!pvri!")"b~ !iږF9'ɦ~C* @U!NuBWe&-t1I@ @  P;%8 J0nA^=E3 @ve} HGbhM0RE "Ӡ<ڣ>:3t:iycUL7(65%ÅY0* *R2ۅD5p?zhD)& #?!Q"-"\fGVQmstJbwZ q˄tj:TSp4E kN 䧜"aQgbB8)0XtFCzƦ5#D0ДK0qS7$,ԗC*"Oa $PnF@{Zzld-0"%}qq% ZB@&`CZp ;+0@%m`!3 N|EWVpPfr!6Z8:K%3փ!@8E \ I<r22N PB;`qS%5c*~@FD]w%p$:Pw|QqW^+[=K4818!#K =0jnUڕ!+~PiWOۺA! Z a&׳ 0gX~A"Pt =DMFELݠˠIR=8T}XݠV\ա^b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>@ XPXĸbdp0|zplttblhtf@|p|`PP`("HBH@&.8&4LTT@::PĮ0:DnfH,",FZPNZt Nfp@t@vrx zLDP..8bxt褦 np`Z`Zp||&:04,8Đp0tntо^d`P@LF@0@H:Hȸ*0( ||ttl0@PXXFJ@`dRlОd\tprԺ|TbP0¸xzfhxxXH@h躾<<4xh\`nVΰԴ<.Dx0.lbhDFPĸ8" d>N#B@%q'LPd !Ϻ6*O2*}ې=Ę2Q9--4F t;JôA>jv{SW-ՠԯ=X´nvpgψ Â/F "{!brSv}py}> h@BV'~C@P,`j(ѵq`GUeo{g{ Q%>t = . 2&@G >~(=7o _A2 rЃ  (! ?㗿&5:hLs I @"L@D#YrbD=ɀv!(ȑ8%Tv8ph8@ & r$ _vG( Bk$?׎dyJCH a"1uV;}P{ TˈL t A_ZLRR '`-,vP2&?WrtR1T"HъZ ءܰKpD%"@_M1 .VE @@&Tmo9*ylT hG SDD r*"Ah6` GvDDa=6Mv"*Z <@P: S + T 0a!kVu X*X,M`.!|lg\m'C${!@D!B汀A6@S8V;9pJoHP< vp%u b&Yƣx#7 <@(Aj =M9cf8]LA_D #rwxV~[A$? Rk>)`X@mw/Fu/T iA'<# DI@?V:Okd#~ \L8A 4ET՘eY& Er?ڑ m %!+&i1k_nP3[h >V'@VvYRKю^s7U?DRi=m6hqf;~iOq0@.$O?y7AYJs/ʹЁ?Mv؅M]< 6(aS{ x  yɛ̈́JtB4M1XP]Bn8H 91b0 % _FOܐg2N[=,(1 Hhbj]@BeI1`EU `W$(o9Vtۢ dӞ07 Q^pE79wrP= A0c^ 6tGB\S%~Xx2P1 |@5nvz72Baep$ !PSH7NXT@QF$dp2 'UH0 :4`8z[}+~wpW QZ65 a&@ :r&6@ RHbtB @U  ۽Ѹۘ% pQIe# h YڷD@ t{~$ޙ{ |<WC Q92$2&|(,.<g2<4\6|8(<>|?˦.5(E@ Olϯk[e ~DpP\v a }8d6@pI6$U`B%0&_n@M,H/-@au$^t R?-R= 5]2 `Y`ӔQMd]֖ʐ y:G:Gf]vmZ#͆||חRׂ=C cM؊ؔ،ؐٔ]١ɖٜٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>@ʔ^d``Z  `Z؜ȸĸĐbxtH@h06:(|vlttΰ,",`tfFJ@p||dRl("HԺDFP::PnV0¸ `ĺPP`萤p<<4b\`tntzfhpPXX||0:Dvrx<.Dbh&.8ĸ8"s: N$S F)TV Y1=묓(-@ Ih&QlIGqvdP:@ `堄jj`죁 t iȐiD%-0AR$*PnћQ#kCS:Գ2&HF AH~[Sd!N'$.ުA@Q01́l > ϑxAx?4 ; W`, !m$d@O00P^+4k8B> O>N#B`A0q'LPc3A !Ϻ>0O51 28}ې?Q9--4F 4=JôA>jv{SW-ՠԯ=H´nvpψ /N "!b2v} y} d@B8V'~CX@1,`j:ѣqXGUeo{g{{Q_0>t 7;d  ǀB2&@G >~(;7o _A2 rЃ  (! ?㗿&5AhLs I @ P 1`D.$YrbD=c@t!(ȑ8A0Tu8ph8 P& r$ D_t)G Bkd=Gd1hy'JH a Au=0Qy{@TˈL t b0_ZLRR *X,uP2f=WrtR1T"HъZ ֡ܰKpDud<_M1 .d1VE @Hi=(ToA8b5wlT G S1D r*"Ah6` GzDm4 a=6u"4Z <@ͥ@jT $<[c*@ 1c͊VZc E>DVbl3+tmdu HD`9D;|8f#uJ#;_:p`o; up%u[3ɒū$YqNW]l7y|Bu"Z=xsH֣  2W F_I!D4` X:fq-{ 1Щa*;"K$ da>:Okd"~\\` 4Et՘eY& E%rc;聅 m E-+1k_nP3[h @572 n`%1R5D!3 $WCNPf$|*=>Bpr* *5  bpb (  'q 7r!<'q8 fp89hP(P= A@c^ xGb\pSU~2 @{!'t-_WXq #d XVVGr8E`QXT@F$cp2 'U<| "5C3Y &'&MH"MCdz )P \ÍhV$yYD$P1n0Aר+p` ' "y L.m Q C   E@AJX(@)I-"94Y6[& ;ٓ}-Ћ7JLi4Hn$!vA"VٔZ\ٕ[Ay,^9dYfyhjlٖnpr9tYvyxz|ٗr74Q/r2ZbX~  ^e`byo9Yya>X'Y p@ Jl:0v3Wy""/ə"B*3yؙFG` s!l1@ I@  `e:Ènp1IX S8H:m]:E3P @ w 5тe#p$oU ߀t 0P F"DWFzH@)c*.+yEZpИ95H eF|o0Ir:6y,P0k/'*et08WR.ըY=:LDZ~K8u*I`R0ܙY7DaT'7J'Mp Bf5#27% ѡb&E t KHpĐ@ @yu .'蚮JQz!`Vf 4GQ*\e?Nqj@Z{B:N%Pm`BV`@ knXWOfҨ 6H<۳>{!%&٬*Q1Ec~4^ (1**!Z+ ?[f{ѡ`o.n."%"]"IrS@wjq Ptd۸AKע>` :49w ~}1+y1rG C;[Z5/E+ f4@o'F@7 @ Hrt :@Uo r;xRljKG+I9eT#BIV W i 0JG *AB   q5 0`p*C"3*,0v2\6|8:1<@ħ.,F|H@ $IP\)R|XFaA aZb<60<&dp&!9[""%r|Ac`~ ~ȌȏZ$AyT-ȎɜE<16%1rq5G `5ɸ+;;m+19LZC9 p`ps˺|جm$p$G[Hk 9Џ!rc]d `"gV,a\̸Qu*]"RARs l^]c:BAb?4|]<[[ wDР@\w'@d{m.<+d;+``I6$0S`B` DZ::0LݸTlq% W[LGp@J`u$p*IJ q6 P D,x#p P XP E@$_ג=F@:GUG#GpG3M٬ة5ߜȮ=۴]Qŵۺ@ 'ڻ½=}ZȽ}=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>@ʔ^d``Z  `Z؜ȸĸĐbxtH@h06:(|vlttΰ,",`tfFJ@p||dRl("HԺDFP::PnV0¸ `ĺPP`萤p<<4b\`tntzfhpPXX||0:Dvrx<.Dbh&.8ĸ8"s: N$S F)TV Y1=묓(-@ Ih&QlIGqvdP:@ `堄jj`죁 t iȐiD%-0AR$*PnћQ#kCS:Գ2&HF AH~[Sd!N'$.ުA@Q01́l > ϑxAx?4 ; W`, !m$d@O00P^+4k8B> O>N#B`A0q'LPc3A !Ϻ>0O51 28}ې?Q9--4F 4=JôA>jv{SW-ՠԯ=H´nvpψ /N "!b2v} y} d@B8V'~CX@1,`j:ѣqXGUeo{g{{Q_0>t 7;d  ǀB2&@G >~(;7o _A2 rЃ  (! ?㗿&5AhLs I @ P 1`D.$YrbD=c@t!(ȑ8A0Tu8ph8 P& r$ D_t)G Bkd=Gd1hy'JH a Au=0Qy{@TˈL t b0_ZLRR *X,uP2f=WrtR1T"HъZ ֡ܰKpDud<_M1 .d1VE @Hi=(ToA8b5wlT G S1D r*"Ah6` GzDm4 a=6u"4Z <@ͥ@jT $<[c*@ 1c͊VZc E>DVbl3+tmdu HD`9D;|8f#uJ#;_:p`o; up%u[3ɒū$YqNW]l7y|Bu"Z=xsH֣  2W F_I!D4` X:fq-{ 1Щa*;"K$ da>:Okd"~\\` 4Et՘eY& E%rc;聅 m E-+1k_nP3[h @572 n`%1R5D!3 $WCNPf$|*=>Bpr* *5  bpb (  'q 7r!<'q8 fp89hP(P= A@c^ xGb\pSU~2 @{!'t-_WXq #d XVVGr8E`QXT@F$cp2 'U<| "5C3Y &'&MH"MCdz )P \ÍhV$yYD$P1n0Aר+p` ' "y L.m Q C   E@AJX(@)I-"94Y6[& ;ٓ}-Ћ7JLi4Hn$!vA"VٔZ\ٕ[Ay,^9dYfyhjlٖnpr9tYvyxz|ٗr74Q/r2ZbX~  ^e`byo9Yya>X'Y p@ Jl:0v3Wy""/ə"B*3yؙFG` s!l1@ I@  `e:Ènp1IX S8H:m]:E3P @ w 5тe#p$oU ߀t 0P F"DWFzH@)c*.+yEZpИ95H eF|o0Ir:6y,P0k/'*et08WR.ըY=:LDZ~K8u*I`R0ܙY7DaT'7J'Mp Bf5#27% ѡb&E t KHpĐ@ @yu .'蚮JQz!`Vf 4GQ*\e?Nqj@Z{B:N%Pm`BV`@ knXWOfҨ 6H<۳>{!%&٬*Q1Ec~4^ (1**!Z+ ?[f{ѡ`o.n."%"]"IrS@wjq Ptd۸AKע>` :49w ~}1+y1rG C;[Z5/E+ f4@o'F@7 @ Hrt :@Uo r;xRljKG+I9eT#BIV W i 0JG *AB   q5 0`p*C"3*,0v2\6|8:1<@ħ.,F|H@ $IP\)R|XFaA aZb<60<&dp&!9[""%r|Ac`~ ~ȌȏZ$AyT-ȎɜE<16%1rq5G `5ɸ+;;m+19LZC9 p`ps˺|جm$p$G[Hk 9Џ!rc]d `"gV,a\̸Qu*]"RARs l^]c:BAb?4|]<[[ wDР@\w'@d{m.<+d;+``I6$0S`B` DZ::0LݸTlq% W[LGp@J`u$p*IJ q6 P D,x#p P XP E@$_ג=F@:GUG#GpG3M٬ة5ߜȮ=۴]Qŵۺ@ 'ڻ½=}ZȽ}=]}؝ڽ=]}=]}>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>A(݃ Ih&QlIGqvdP? @ `堄jj_Ӂ td iȐiԏ%ApAR$*Pnћ#kCѓ?s&HFAH~[Sd!& $.ުA@$;l 0=ϑxAx#A< $ I€?+䣋 1 4pЏ$0P^+4k8$>" >NcR$q'LPs0@ ,ϺJO";#1BP<ĸ0S9--4F t?JôA>jv{SW-ՠԯ=´n~ ψ c/^ "!!b vy}%>p'V$]3(91_~P`t@`|AhUz"Ȉ"@' o]"(&5=BBh xDx :rW9Sw 2DqЃ @ x@O5 whLHOh@vPH؁=00v Ȓ #=8H80AE4Ł4p'$ ATIp` 2Y#QO 0.OA=> {tN <#a~@ $؁̓OT&@@T]z*Pc"'[F3MF }VZRR +,~Tҋ:f=LXrtR1T"HъZ  T]DF@_M9(.;VEЏ jH@*T@7=5zlTG S;D r"Ah6` G2~DD@a=նoJ{1RT<5ZT'#sџ$:* S%abU i]k=: Y6% lgKl?b C0'"@ H2B8IRG\C)# GJj f=W12kI~81 Dip#y[ N:G8| ԇ/gV辱c8oz+(@,5nB&<n@_@B7X"C^ v qp6Aܣ ma߉FZ.W]ȕPq YiP\eB R#/0Kt @K7sVL=EDazJe ]\,M`վ28qtr 43>$1CJt]1A>My8lI1Dy%aS_{s  W} BP̈́ r6u۴o@<~.!%ATZ|j$H끌q< 7Hv0=!"рַ᳜%=  YXA:P]@B$fI9`E<p!W?VWu+۲ g㞾 0$А/Hn 5  "95r('0I4Y6yN<"=}0 -!Ћ8LٔNi5`{#Aua!AX\ٕ^Zy,`Yfyhjlٖnpr9tYvyxz|ٗ~q54Q/%9*4C9  b\;l* Sya>] !'py @uR m:pv3qo""/ə"B*h7yؙjۆ@ D?zT p U :Èoq`M1I] 8x|vߥS4x 0 \V@GbhV` E`4p;*Iq:DZj;;H 527EZۦSq -`MJK}v@pFڦn7I)& ` 3?P"-"\VGceFtЧ`"֧ӰG:Lz~H8u*\vlBE kT j-zQTRaEg ګ:drꪉ @x0rB NKJ929PR9@ yt @2蚮JQz V&UQGN*]2"+cULJ/-` "{k,j0%m`!VN{4kOd&}ls<۳Ѯ QccQ1P~d:(NG+2 (>;d[ѱ!.u`T"Е7]I`FvקN`@Q'f;0עs::4PnziuܷYbx w9>˸; hK 5) f25=;b$n~`9P $L(T @<ʝ;"G QIe#`h q!~JOG jA2  M`q50u`p*C"3,.2<(By3PͫEA h_6$U`Fp~gR:Uz*MovQpmW IDf`{W[Qp4iPa_q؊`gb@]"m"KemnGu8!)Ч ئ}EK!]EŃP $9XFPThQڨ}} N0?tt|#G`*3;V00i5aݗ]B3ݫ>F~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>A(݃ Ih&QlIGqvdP? @ `堄jj_Ӂ td iȐiԏ%ApAR$*Pnћ#kCѓ?s&HFAH~[Sd!& $.ުA@$;l 0=ϑxAx#A< $ I€?+䣋 1 4pЏ$0P^+4k8$>" >NcR$q'LPs0@ ,ϺJO";#1BP<ĸ0S9--4F t?JôA>jv{SW-ՠԯ=´n~ ψ c/^ "!!b vy}%>p'V$]3(91_~P`t@`|AhUz"Ȉ"@' o]"(&5=BBh xDx :rW9Sw 2DqЃ @ x@O5 whLHOh@vPH؁=00v Ȓ #=8H80AE4Ł4p'$ ATIp` 2Y#QO 0.OA=> {tN <#a~@ $؁̓OT&@@T]z*Pc"'[F3MF }VZRR +,~Tҋ:f=LXrtR1T"HъZ  T]DF@_M9(.;VEЏ jH@*T@7=5zlTG S;D r"Ah6` G2~DD@a=նoJ{1RT<5ZT'#sџ$:* S%abU i]k=: Y6% lgKl?b C0'"@ H2B8IRG\C)# GJj f=W12kI~81 Dip#y[ N:G8| ԇ/gV辱c8oz+(@,5nB&<n@_@B7X"C^ v qp6Aܣ ma߉FZ.W]ȕPq YiP\eB R#/0Kt @K7sVL=EDazJe ]\,M`վ28qtr 43>$1CJt]1A>My8lI1Dy%aS_{s  W} BP̈́ r6u۴o@<~.!%ATZ|j$H끌q< 7Hv0=!"рַ᳜%=  YXA:P]@B$fI9`E<p!W?VWu+۲ g㞾 0$А/Hn 5  "95r('0I4Y6yN<"=}0 -!Ћ8LٔNi5`{#Aua!AX\ٕ^Zy,`Yfyhjlٖnpr9tYvyxz|ٗ~q54Q/%9*4C9  b\;l* Sya>] !'py @uR m:pv3qo""/ə"B*h7yؙjۆ@ D?zT p U :Èoq`M1I] 8x|vߥS4x 0 \V@GbhV` E`4p;*Iq:DZj;;H 527EZۦSq -`MJK}v@pFڦn7I)& ` 3?P"-"\VGceFtЧ`"֧ӰG:Lz~H8u*\vlBE kT j-zQTRaEg ګ:drꪉ @x0rB NKJ929PR9@ yt @2蚮JQz V&UQGN*]2"+cULJ/-` "{k,j0%m`!VN{4kOd&}ls<۳Ѯ QccQ1P~d:(NG+2 (>;d[ѱ!.u`T"Е7]I`FvקN`@Q'f;0עs::4PnziuܷYbx w9>˸; hK 5) f25=;b$n~`9P $L(T @<ʝ;"G QIe#`h q!~JOG jA2  M`q50u`p*C"3,.2<(By3PͫEA h_6$U`Fp~gR:Uz*MovQpmW IDf`{W[Qp4iPa_q؊`gb@]"m"KemnGu8!)Ч ئ}EK!]EŃP $9XFPThQڨ}} N0?tt|#G`*3;V00i5aݗ]B3ݫ>F~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>A(݃ Ih&QlIGqvdP? @ `堄jj_Ӂ td iȐiԏ%ApAR$*Pnћ#kCѓ?s&HFAH~[Sd!& $.ުA@$;l 0=ϑxAx#A< $ I€?+䣋 1 4pЏ$0P^+4k8$>" >NcR$q'LPs0@ ,ϺJO";#1BP<ĸ0S9--4F t?JôA>jv{SW-ՠԯ=´n~ ψ c/^ "!!b vy}%>p'V$]3(91_~P`t@`|AhUz"Ȉ"@' o]"(&5=BBh xDx :rW9Sw 2DqЃ @ x@O5 whLHOh@vPH؁=00v Ȓ #=8H80AE4Ł4p'$ ATIp` 2Y#QO 0.OA=> {tN <#a~@ $؁̓OT&@@T]z*Pc"'[F3MF }VZRR +,~Tҋ:f=LXrtR1T"HъZ  T]DF@_M9(.;VEЏ jH@*T@7=5zlTG S;D r"Ah6` G2~DD@a=նoJ{1RT<5ZT'#sџ$:* S%abU i]k=: Y6% lgKl?b C0'"@ H2B8IRG\C)# GJj f=W12kI~81 Dip#y[ N:G8| ԇ/gV辱c8oz+(@,5nB&<n@_@B7X"C^ v qp6Aܣ ma߉FZ.W]ȕPq YiP\eB R#/0Kt @K7sVL=EDazJe ]\,M`վ28qtr 43>$1CJt]1A>My8lI1Dy%aS_{s  W} BP̈́ r6u۴o@<~.!%ATZ|j$H끌q< 7Hv0=!"рַ᳜%=  YXA:P]@B$fI9`E<p!W?VWu+۲ g㞾 0$А/Hn 5  "95r('0I4Y6yN<"=}0 -!Ћ8LٔNi5`{#Aua!AX\ٕ^Zy,`Yfyhjlٖnpr9tYvyxz|ٗ~q54Q/%9*4C9  b\;l* Sya>] !'py @uR m:pv3qo""/ə"B*h7yؙjۆ@ D?zT p U :Èoq`M1I] 8x|vߥS4x 0 \V@GbhV` E`4p;*Iq:DZj;;H 527EZۦSq -`MJK}v@pFڦn7I)& ` 3?P"-"\VGceFtЧ`"֧ӰG:Lz~H8u*\vlBE kT j-zQTRaEg ګ:drꪉ @x0rB NKJ929PR9@ yt @2蚮JQz V&UQGN*]2"+cULJ/-` "{k,j0%m`!VN{4kOd&}ls<۳Ѯ QccQ1P~d:(NG+2 (>;d[ѱ!.u`T"Е7]I`FvקN`@Q'f;0עs::4PnziuܷYbx w9>˸; hK 5) f25=;b$n~`9P $L(T @<ʝ;"G QIe#`h q!~JOG jA2  M`q50u`p*C"3,.2<(By3PͫEA h_6$U`Fp~gR:Uz*MovQpmW IDf`{W[Qp4iPa_q؊`gb@]"m"KemnGu8!)Ч ئ}EK!]EŃP $9XFPThQڨ}} N0?tt|#G`*3;V00i5aݗ]B3ݫ>F~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>A(݃ Ih&QlIGqvdP? @ `堄jj_Ӂ td iȐiԏ%ApAR$*Pnћ#kCѓ?s&HFAH~[Sd!& $.ުA@$;l 0=ϑxAx#A< $ I€?+䣋 1 4pЏ$0P^+4k8$>" >NcR$q'LPs0@ ,ϺJO";#1BP<ĸ0S9--4F t?JôA>jv{SW-ՠԯ=´n~ ψ c/^ "!!b vy}%>p'V$]3(91_~P`t@`|AhUz"Ȉ"@' o]"(&5=BBh xDx :rW9Sw 2DqЃ @ x@O5 whLHOh@vPH؁=00v Ȓ #=8H80AE4Ł4p'$ ATIp` 2Y#QO 0.OA=> {tN <#a~@ $؁̓OT&@@T]z*Pc"'[F3MF }VZRR +,~Tҋ:f=LXrtR1T"HъZ  T]DF@_M9(.;VEЏ jH@*T@7=5zlTG S;D r"Ah6` G2~DD@a=նoJ{1RT<5ZT'#sџ$:* S%abU i]k=: Y6% lgKl?b C0'"@ H2B8IRG\C)# GJj f=W12kI~81 Dip#y[ N:G8| ԇ/gV辱c8oz+(@,5nB&<n@_@B7X"C^ v qp6Aܣ ma߉FZ.W]ȕPq YiP\eB R#/0Kt @K7sVL=EDazJe ]\,M`վ28qtr 43>$1CJt]1A>My8lI1Dy%aS_{s  W} BP̈́ r6u۴o@<~.!%ATZ|j$H끌q< 7Hv0=!"рַ᳜%=  YXA:P]@B$fI9`E<p!W?VWu+۲ g㞾 0$А/Hn 5  "95r('0I4Y6yN<"=}0 -!Ћ8LٔNi5`{#Aua!AX\ٕ^Zy,`Yfyhjlٖnpr9tYvyxz|ٗ~q54Q/%9*4C9  b\;l* Sya>] !'py @uR m:pv3qo""/ə"B*h7yؙjۆ@ D?zT p U :Èoq`M1I] 8x|vߥS4x 0 \V@GbhV` E`4p;*Iq:DZj;;H 527EZۦSq -`MJK}v@pFڦn7I)& ` 3?P"-"\VGceFtЧ`"֧ӰG:Lz~H8u*\vlBE kT j-zQTRaEg ګ:drꪉ @x0rB NKJ929PR9@ yt @2蚮JQz V&UQGN*]2"+cULJ/-` "{k,j0%m`!VN{4kOd&}ls<۳Ѯ QccQ1P~d:(NG+2 (>;d[ѱ!.u`T"Е7]I`FvקN`@Q'f;0עs::4PnziuܷYbx w9>˸; hK 5) f25=;b$n~`9P $L(T @<ʝ;"G QIe#`h q!~JOG jA2  M`q50u`p*C"3,.2<(By3PͫEA h_6$U`Fp~gR:Uz*MovQpmW IDf`{W[Qp4iPa_q؊`gb@]"m"KemnGu8!)Ч ئ}EK!]EŃP $9XFPThQڨ}} N0?tt|#G`*3;V00i5aݗ]B3ݫ>F~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>F!D#VD|ffx/ AJs"F 0OH-EA8F?EJ#F)TV Y3=(  Ih&Ql Ϛgz?tg<8Xi衈&T| AGM@# F(B32(x6tHw4AP_ zr&BFt/xO\EO 3UOBP?x2 QA4tҼ04M]uA6rM_[ alA=?ޞ'\@xTCJ{!bȐ 1bN , 2L 8js_180Ey" al{>wT=60b@bdLEz@)@$xE而9d~2 ,gpq "]"MoH:x~Hk KC#xT/,Uw?Ax"C @,(g @+ZR} F$K06FA<~VA*MPB% .14 d9|C #xaa~#Ї?0DOŒH( Blڰ>52 'Vd#4IM ‹:͖ǎz Mx4 w "A*< D`GYk;.Ɋ@y/dʏW@z78z<0Lx FwgA@~` =BxXU N@gڝ> #tH/0W?d((x}@ gVK4 l W$hAJD$Ɛ .f~à  D0 d n5H'J<?w"˅A^ c(fA̋ނ*)t-Ip/)^#vcoԃro|:`CQ=;_xTξ Bb2<O8F?v"lx?+&;P=@^PJ!gAQrPsfux6j$,AB^ŻX@簀&EC@l)SL, Hl٣KLZxQzE!B  x;-~H/T}؜w (""Cv/6Htk 6'6d44@ e_ qXCr"Fp2xF$.o"WbSxjX gU7uzbB5 71LUFj7-&*.0 `$F>*ePQ Uy0$h:7,p6 'p X9a$dw!pHP3@,ْ.6贐@BL$7`7p Tv O5]q@uyDQub{@b4 g@kj[UD 0$p LFB5uxSTwc]؆^mfĬ KU|TP'9G؇ٞfAvm !`2Uo-7:xٟۼQe%0@@)Xgv0@~Xh  _} ֳj@eLFR)nsIp6G` ߵ 6 ~y_ :^: >$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>(P Ih&QlIGqvdP= `堄jjA $t$$biȐijT%I`AR$*Pnћ!\kEc= T&HFAH~[Sd!}a) $.ުA,A/Kl0? ϑxAxA?  <gS 1`DpP/(0P^+ 4k8$>" >NRp/q'Lc0@ ,ϺB KؓL1P?ĸD2Q9--4F t=JôA>jv{SW-ՠԯ=hA4#l> @j@x0:AP>r8"G"f( @=l'P @7:M,_ d40B[@",̓Iʰy0`A=e(B@}JXXo @(QeI(&P c`A~/Mdkѝ6J'S"@%/! ]H(zBPG=0e#Uq \ _$B"y!MH |?BB"I% $.G 47; ԃ`=С dA2,A)AE a!:e6S-wdFT"867Z(ls{88U8`|Kh MP GcvQ` _? |HT`@1x-j(PHA-PˊT0NE1m=@ < d? c/zmC"R y3TlPG?JFuT)b` d3 D=Q͏ /Pq }HLRd-jULZ.L2}9\+6H$թdޗs!1G!hAxuqko,K?AId LCٽ?IhDTv%Ž4uUN5@0?G(1PJSTP P r-J&Y:&P_hYb4,"2owDHaT+K'-tc(NEK:jAZp'Hhp "d*mPnMj[/ ?QfPa0E*5;'!0;ыuzva/p}Bi@;fPIȇ "oz{鲏'$ENMV _3?='q&6+j#o+M3D֝Ӿգ롺tTE+rU| F, Y-EGBJ~XϺַxJ$$M *xt јS'KAk ˇbi [`jw aޛ:\mao__"x *ī@ 0j$x@:f=!8{ ! =-F5 Ia` iA`?/,!@H6I ֏!WKO7EG 3AY@q`pgHFHt  pPPUF400= `o$Mf$0|*= > pr* =5  rbCqb (  4LR3 W$'X'=)s* f%"U8s ЁgQ*:hl UpPc^ s0x;u ]`U旈(v3 ~p-0_foKTq 't qh[GhEdyedxhL"@-S|5yXv@R0$80:oyb4fCMd zbRdu-0g \D P1r0Aب+@ ) Ry3c PLA _2 "9$ZNAqJ&*P+y/%Y6y8 " ?}-!9ٔNPi4H0{#au!Z^`Zqy,ѕbyhjlٖnpr9tYvyxz|ٗ~q54Q/0P!\9Y  cLl* sy>`aN)G#CR m:`v3ao )"r ! Psyؙh,=`m0T0 [&NCHS r  ||\e ZS `nq$ Ac!A`wC ,e 0#cr ` 0S F }"T7DZFʖ1@u *z+Euh]`e dtͷ GpOYݹSP áQ"-|"]vGa mB SKMr旤q$"e?]pE kXj.RTUUg 2ĩ:mt[|X$ 70Ctd4JP sz蚮z9B0 a% o,j   0;2:]Pܦ!4dJ!Pf6LI6{8{!%5j`8h/W~5{D**!P+sPҙ9\۵a K\;[3&1T"%"]r*JAw[4XtZ뵂;;K%:=ナ :4nԊi0@طYBx `w40>[ `K \)&& fr4=K 1Q@҆RHtR9pU0 pҝ{؛q1b/<+Iđ׊091/0 F 'kM@pU M<zF28bq5F0 0@ a"\&|v(,.02<'06|8<@9>I F|HQENPlm<$MZ\b<.!+]j!9[""-&hv|x +dAy|ȈX,,@b憸 c!+tƉɚ@0 16%1b6Xf"%uɺ;AVg ,EAP fg@2 XyG4>0Cżܺ \9P =I 7e4Y#,ldb`=-ە ]7QRMbaR # ^@Zxp5:3 uT2}(fNr5g  5) ϠCcj)J@I0 @I6$̠.~KdĶ:Hl]І_ @+0@Tt w V|Q@$&ֆ}؛u$cg&t e0 En-:j ތآ=ښ G5]   0 P @ gM}cGu3 K0LR Ő016`Fō}ޗ5~L ]߀ :m߾n>~Y >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>@bxtx  ȸʔ*0(:.(pfpb\` `pr2.L0@zfhnfH,",dRlĚbh0.ĸpԴX@X̺ 6< NT@cF)TV +#:Ӂ(O Ih&QlIGqvdP> @ `堄jjLA Dt iȐiԎ%Q`R$*Pnћt#,kEC> T^&HFAڐH~[Sd!ᱏ&$$.ުA@Q0+ l0? ϑxAx@?  <GpE4 1]LtN00^+ 4k8> >NFA0q'LcA0!,Ϻ>N5+21D3P?ĸB2Q9--4F t;JôA>jv{SW-ՠԯ=XA4#l> @J@x0:AD1>8"rG"f. @;l' @7:M,Pc@ pd#$ dA2M)AuE!:k)e6S-wdFT"867Z(lƒ}88U 8`|+h@MP GsvE`_?V$HT.0z-j(ЎHA-VPˊT0NE1mE@< D툚< c@0zmC "by3TlPG?JFuTJ d3 D=͏ G0RF8A}HLRd-jiULZ0N2} \+6H$թdޗs)a!hAxuql ԻJ,K?AIDp Lԣ ٽ?LhDTv -|v\vw"?Cu.>vt#xVjvtTikP 5 $]juA{6Οua)}[#B %ZY" x?l!L_ ` p*Z{G%`T NAD$TZh)ڡ"[ζ_$y`Tjv:D`v( Ž` d1݁l̠tG&lSgOBIa@f8y{NLFSmV?Vf;}kG+qCu փV&A4.e؀qA[ >. {=,( Hxc 'U"2Os <+0G <}=?+U0)"B D Fw lփN!8.)_]Øs`DANV| YHxG0+%r~O"4SU!,a #03$#g& 0e1^ a*E0W0= o$MfU$N}* = > E r* @5  blb (  0V4LcW''X'=&`D%t*7@f%"Wh s 4S*b hXG hEdy3edhLP -Q|uy-@R0$8N:ozb4f0Md &{bduQpPg d`\D P1V0@ڨ+@6p&Py3 PL  _2p 8$Y&Zq@qJ),-y19'y8:  A9}-;PRi6Hp{#u!Q\9`b9Zy,djlٖnpr9tYvyxz|ٗ~9q54Q/0PA*4Yy  dLBl* >2aN)G# 0T)ux@.m7S&!y* /˹"B*h8ǚؙڹ&j΂1tf 8T0 6 AU :ƸH;`W1I2pp ;⨋vG-^4yP 0 ^0:F W F3E`4p+ *Jq:DZn<=XFP27E*h] dt 'FڦnQI޹S` Q"-"^vGd׊PmE }jS}+qMpz뇤q$"e?]!EU kV*j-RTTaeg ګZdr[zX$ 7 FD"`Z 4WP 0sZzũx9B0 a%B@&Mpڤ,}j`S` ;:^6P"dUJ6aPfҧ6NI6{8{!%5jQ1`~d5{D**!R+ 9۵^a +\;[3F1T"ӕ7]r*Jqw[w7X!u\ [;K:3>H#Lʁ&v}+@G+yW ۺ!1bmPa&`۳{p,V@7P Ht̋8pU`ƳS؛ K|#Ě% IՊ291/` 'k;)+u;\A$ڑh,W 6d\9@N0 "9&|(,p,.02<4|8ã%>@<A|H@AaJPťYZR\+0Zjl%"g*ix]̼@P۸wNJ-ʲ c!Ȟ\9o 0 0,12#`S#8 ݘoe&:>[B89+B5, \̅;AV杠-E$:\x~$`epwD#X 0B@$l[ b291G! a 74Y#*6: F32MIr6`#9 ,ѽQRM1 0>0J;5+3%qZc?XGrpU]FmgN5 !O!ak5&` VK(4fCe4D}lt_6$_.z&jLv*yePӪnْML,I|2N@T"u x9~itY"֓۲ ab@r]Rm K 6PTbyìaC2fE ۳]֭p~   pPL sX@+ 0$//C. P?vt c+0LQR y吝-I|%B7,`&~{M,9 %4^i 3n<㙺>B>@>F~iHLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>@bxtx  ȸʔ*0(:.(pfpb\` `pr2.L0@zfhnfH,",dRlĚbh0.ĸpԴX@X̺ 6< NT@cF)TV +#:Ӂ(O Ih&QlIGqvdP> @ `堄jjLA Dt iȐiԎ%Q`R$*Pnћt#,kEC> T^&HFAڐH~[Sd!ᱏ&$$.ުA@Q0+ l0? ϑxAx@?  <GpE4 1]LtN00^+ 4k8> >NFA0q'LcA0!,Ϻ>N5+21D3P?ĸB2Q9--4F t;JôA>jv{SW-ՠԯ=XA4#l> @J@x0:AD1>8"rG"f. @;l' @7:M,Pc@ pd#$ dA2M)AuE!:k)e6S-wdFT"867Z(lƒ}88U 8`|+h@MP GsvE`_?V$HT.0z-j(ЎHA-VPˊT0NE1mE@< D툚< c@0zmC "by3TlPG?JFuTJ d3 D=͏ G0RF8A}HLRd-jiULZ0N2} \+6H$թdޗs)a!hAxuql ԻJ,K?AIDp Lԣ ٽ?LhDTv -|v\vw"?Cu.>vt#xVjvtTikP 5 $]juA{6Οua)}[#B %ZY" x?l!L_ ` p*Z{G%`T NAD$TZh)ڡ"[ζ_$y`Tjv:D`v( Ž` d1݁l̠tG&lSgOBIa@f8y{NLFSmV?Vf;}kG+qCu փV&A4.e؀qA[ >. {=,( Hxc 'U"2Os <+0G <}=?+U0)"B D Fw lփN!8.)_]Øs`DANV| YHxG0+%r~O"4SU!,a #03$#g& 0e1^ a*E0W0= o$MfU$N}* = > E r* @5  blb (  0V4LcW''X'=&`D%t*7@f%"Wh s 4S*b hXG hEdy3edhLP -Q|uy-@R0$8N:ozb4f0Md &{bduQpPg d`\D P1V0@ڨ+@6p&Py3 PL  _2p 8$Y&Zq@qJ),-y19'y8:  A9}-;PRi6Hp{#u!Q\9`b9Zy,djlٖnpr9tYvyxz|ٗ~9q54Q/0PA*4Yy  dLBl* >2aN)G# 0T)ux@.m7S&!y* /˹"B*h8ǚؙڹ&j΂1tf 8T0 6 AU :ƸH;`W1I2pp ;⨋vG-^4yP 0 ^0:F W F3E`4p+ *Jq:DZn<=XFP27E*h] dt 'FڦnQI޹S` Q"-"^vGd׊PmE }jS}+qMpz뇤q$"e?]!EU kV*j-RTTaeg ګZdr[zX$ 7 FD"`Z 4WP 0sZzũx9B0 a%B@&Mpڤ,}j`S` ;:^6P"dUJ6aPfҧ6NI6{8{!%5jQ1`~d5{D**!R+ 9۵^a +\;[3F1T"ӕ7]r*Jqw[w7X!u\ [;K:3>H#Lʁ&v}+@G+yW ۺ!1bmPa&`۳{p,V@7P Ht̋8pU`ƳS؛ K|#Ě% IՊ291/` 'k;)+u;\A$ڑh,W 6d\9@N0 "9&|(,p,.02<4|8ã%>@<A|H@AaJPťYZR\+0Zjl%"g*ix]̼@P۸wNJ-ʲ c!Ȟ\9o 0 0,12#`S#8 ݘoe&:>[B89+B5, \̅;AV杠-E$:\x~$`epwD#X 0B@$l[ b291G! a 74Y#*6: F32MIr6`#9 ,ѽQRM1 0>0J;5+3%qZc?XGrpU]FmgN5 !O!ak5&` VK(4fCe4D}lt_6$_.z&jLv*yePӪnْML,I|2N@T"u x9~itY"֓۲ ab@r]Rm K 6PTbyìaC2fE ۳]֭p~   pPL sX@+ 0$//C. P?vt c+0LQR y吝-I|%B7,`&~{M,9 %4^i 3n<㙺>B>@>F~iHLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>@bxtx  ȸʔ*0(:.(pfpb\` `pr2.L0@zfhnfH,",dRlĚbh0.ĸpԴX@X̺ 6< NT@cF)TV +#:Ӂ(O Ih&QlIGqvdP> @ `堄jjLA Dt iȐiԎ%Q`R$*Pnћt#,kEC> T^&HFAڐH~[Sd!ᱏ&$$.ުA@Q0+ l0? ϑxAx@?  <GpE4 1]LtN00^+ 4k8> >NFA0q'LcA0!,Ϻ>N5+21D3P?ĸB2Q9--4F t;JôA>jv{SW-ՠԯ=XA4#l> @J@x0:AD1>8"rG"f. @;l' @7:M,Pc@ pd#$ dA2M)AuE!:k)e6S-wdFT"867Z(lƒ}88U 8`|+h@MP GsvE`_?V$HT.0z-j(ЎHA-VPˊT0NE1mE@< D툚< c@0zmC "by3TlPG?JFuTJ d3 D=͏ G0RF8A}HLRd-jiULZ0N2} \+6H$թdޗs)a!hAxuql ԻJ,K?AIDp Lԣ ٽ?LhDTv -|v\vw"?Cu.>vt#xVjvtTikP 5 $]juA{6Οua)}[#B %ZY" x?l!L_ ` p*Z{G%`T NAD$TZh)ڡ"[ζ_$y`Tjv:D`v( Ž` d1݁l̠tG&lSgOBIa@f8y{NLFSmV?Vf;}kG+qCu փV&A4.e؀qA[ >. {=,( Hxc 'U"2Os <+0G <}=?+U0)"B D Fw lփN!8.)_]Øs`DANV| YHxG0+%r~O"4SU!,a #03$#g& 0e1^ a*E0W0= o$MfU$N}* = > E r* @5  blb (  0V4LcW''X'=&`D%t*7@f%"Wh s 4S*b hXG hEdy3edhLP -Q|uy-@R0$8N:ozb4f0Md &{bduQpPg d`\D P1V0@ڨ+@6p&Py3 PL  _2p 8$Y&Zq@qJ),-y19'y8:  A9}-;PRi6Hp{#u!Q\9`b9Zy,djlٖnpr9tYvyxz|ٗ~9q54Q/0PA*4Yy  dLBl* >2aN)G# 0T)ux@.m7S&!y* /˹"B*h8ǚؙڹ&j΂1tf 8T0 6 AU :ƸH;`W1I2pp ;⨋vG-^4yP 0 ^0:F W F3E`4p+ *Jq:DZn<=XFP27E*h] dt 'FڦnQI޹S` Q"-"^vGd׊PmE }jS}+qMpz뇤q$"e?]!EU kV*j-RTTaeg ګZdr[zX$ 7 FD"`Z 4WP 0sZzũx9B0 a%B@&Mpڤ,}j`S` ;:^6P"dUJ6aPfҧ6NI6{8{!%5jQ1`~d5{D**!R+ 9۵^a +\;[3F1T"ӕ7]r*Jqw[w7X!u\ [;K:3>H#Lʁ&v}+@G+yW ۺ!1bmPa&`۳{p,V@7P Ht̋8pU`ƳS؛ K|#Ě% IՊ291/` 'k;)+u;\A$ڑh,W 6d\9@N0 "9&|(,p,.02<4|8ã%>@<A|H@AaJPťYZR\+0Zjl%"g*ix]̼@P۸wNJ-ʲ c!Ȟ\9o 0 0,12#`S#8 ݘoe&:>[B89+B5, \̅;AV杠-E$:\x~$`epwD#X 0B@$l[ b291G! a 74Y#*6: F32MIr6`#9 ,ѽQRM1 0>0J;5+3%qZc?XGrpU]FmgN5 !O!ak5&` VK(4fCe4D}lt_6$_.z&jLv*yePӪnْML,I|2N@T"u x9~itY"֓۲ ab@r]Rm K 6PTbyìaC2fE ۳]֭p~   pPL sX@+ 0$//C. P?vt c+0LQR y吝-I|%B7,`&~{M,9 %4^i 3n<㙺>B>@>F~iHLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>@bxtx  ȸʔ*0(:.(pfpb\` `pr2.L0@zfhnfH,",dRlĚbh0.ĸpԴX@X̺ 6< NT@cF)TV +#:Ӂ(O Ih&QlIGqvdP> @ `堄jjLA Dt iȐiԎ%Q`R$*Pnћt#,kEC> T^&HFAڐH~[Sd!ᱏ&$$.ުA@Q0+ l0? ϑxAx@?  <GpE4 1]LtN00^+ 4k8> >NFA0q'LcA0!,Ϻ>N5+21D3P?ĸB2Q9--4F t;JôA>jv{SW-ՠԯ=XA4#l> @J@x0:AD1>8"rG"f. @;l' @7:M,Pc@ pd#$ dA2M)AuE!:k)e6S-wdFT"867Z(lƒ}88U 8`|+h@MP GsvE`_?V$HT.0z-j(ЎHA-VPˊT0NE1mE@< D툚< c@0zmC "by3TlPG?JFuTJ d3 D=͏ G0RF8A}HLRd-jiULZ0N2} \+6H$թdޗs)a!hAxuql ԻJ,K?AIDp Lԣ ٽ?LhDTv -|v\vw"?Cu.>vt#xVjvtTikP 5 $]juA{6Οua)}[#B %ZY" x?l!L_ ` p*Z{G%`T NAD$TZh)ڡ"[ζ_$y`Tjv:D`v( Ž` d1݁l̠tG&lSgOBIa@f8y{NLFSmV?Vf;}kG+qCu փV&A4.e؀qA[ >. {=,( Hxc 'U"2Os <+0G <}=?+U0)"B D Fw lփN!8.)_]Øs`DANV| YHxG0+%r~O"4SU!,a #03$#g& 0e1^ a*E0W0= o$MfU$N}* = > E r* @5  blb (  0V4LcW''X'=&`D%t*7@f%"Wh s 4S*b hXG hEdy3edhLP -Q|uy-@R0$8N:ozb4f0Md &{bduQpPg d`\D P1V0@ڨ+@6p&Py3 PL  _2p 8$Y&Zq@qJ),-y19'y8:  A9}-;PRi6Hp{#u!Q\9`b9Zy,djlٖnpr9tYvyxz|ٗ~9q54Q/0PA*4Yy  dLBl* >2aN)G# 0T)ux@.m7S&!y* /˹"B*h8ǚؙڹ&j΂1tf 8T0 6 AU :ƸH;`W1I2pp ;⨋vG-^4yP 0 ^0:F W F3E`4p+ *Jq:DZn<=XFP27E*h] dt 'FڦnQI޹S` Q"-"^vGd׊PmE }jS}+qMpz뇤q$"e?]!EU kV*j-RTTaeg ګZdr[zX$ 7 FD"`Z 4WP 0sZzũx9B0 a%B@&Mpڤ,}j`S` ;:^6P"dUJ6aPfҧ6NI6{8{!%5jQ1`~d5{D**!R+ 9۵^a +\;[3F1T"ӕ7]r*Jqw[w7X!u\ [;K:3>H#Lʁ&v}+@G+yW ۺ!1bmPa&`۳{p,V@7P Ht̋8pU`ƳS؛ K|#Ě% IՊ291/` 'k;)+u;\A$ڑh,W 6d\9@N0 "9&|(,p,.02<4|8ã%>@ HA|H4MaJPaZR\š+0Zjj,9[""|l|x̋ Ke\ayȊ Z,,Qop{0"!VLȞɇ[9o 0 0,12#`S#8 ݘoe&:>[B89+B5 \6;AV杠-E$:\x~$`epwD#X 0B@$lϽZ b291G! a 74Y#*6: F32MIr6`#9$ ݦQ!$hS# ^Ӿ0Z|p5:3  uT GXu }HgN5 !O!ak5&` VK(4fCuxaIp@I-L` EjC"rg+ƄlR'!\ %:l}nז}EĒDI@@+,D%-RpcM7FQ٘}۸ab@r]Rm K 6PTbyìaC2fE݂ GL /` 7uΠ0 )CB2ٔ~ɠ cGpAP16!0^D=1H%B7,ۍ,rM2>y9 +N:P 9B>D~HnFLڹNR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>@bxtx  ȸʔ*0(:.(pfpb\` `pr2.L0@zfhnfH,",dRlĚbh0.ĸpԴX@X̺ 6< NT@cF)TV +#:Ӂ(O Ih&QlIGqvdP> @ `堄jjLA Dt iȐiԎ%Q`R$*Pnћt#,kEC> T^&HFAڐH~[Sd!ᱏ&$$.ުA@Q0+ l0? ϑxAx@?  <GpE4 1]LtN00^+ 4k8> >NFA0q'LcA0!,Ϻ>N5+21D3P?ĸB2Q9--4F t;JôA>jv{SW-ՠԯ=XA4#l> @J@x0:AD1>8"rG"f. @;l' @7:M,Pc@ pd#$ dA2M)AuE!:k)e6S-wdFT"867Z(lƒ}88U 8`|+h@MP GsvE`_?V$HT.0z-j(ЎHA-VPˊT0NE1mE@< D툚< c@0zmC "by3TlPG?JFuTJ d3 D=͏ G0RF8A}HLRd-jiULZ0N2} \+6H$թdޗs)a!hAxuql ԻJ,K?AIDp Lԣ ٽ?LhDTv -|v\vw"?Cu.>vt#xVjvtTikP 5 $]juA{6Οua)}[#B %ZY" x?l!L_ ` p*Z{G%`T NAD$TZh)ڡ"[ζ_$y`Tjv:D`v( Ž` d1݁l̠tG&lSgOBIa@f8y{NLFSmV?Vf;}kG+qCu փV&A4.e؀qA[ >. {=,( Hxc 'U"2Os <+0G <}=?+U0)"B D Fw lփN!8.)_]Øs`DANV| YHxG0+%r~O"4SU!,a #03$#g& 0e1^ a*E0W0= o$MfU$N}* = > E r* @5  blb (  0V4LcW''X'=&`D%t*7@f%"Wh s 4S*b hXG hEdy3edhLP -Q|uy-@R0$8N:ozb4f0Md &{bduQpPg d`\D P1V0@ڨ+@6p&Py3 PL  _2p 8$Y&Zq@qJ),-y19'y8:  A9}-;PRi6Hp{#u!Q\9`b9Zy,djlٖnpr9tYvyxz|ٗ~9q54Q/0PA*4Yy  dLBl* >2aN)G# 0T)ux@.m7S&!y* /˹"B*h8ǚؙڹ&j΂1tf 8T0 6 AU :ƸH;`W1I2pp ;⨋vG-^4yP 0 ^0:F W F3E`4p+ *Jq:DZn<=XFP27E*h] dt 'FڦnQI޹S` Q"-"^vGd׊PmE }jS}+qMpz뇤q$"e?]!EU kV*j-RTTaeg ګZdr[zX$ 7 FD"`Z 4WP 0sZzũx9B0 a%B@&Mpڤ,}j`S` ;:^6P"dUJ6aPfҧ6NI6{8{!%5jQ1`~d5{D**!R+ 9۵^a +\;[3F1T"ӕ7]r*Jqw[w7X!u\ [;K:3>H#Lʁ&v}+@G+yW ۺ!1bmPa&`۳{p,V@7P Ht̋8pU`ƳS؛ K|#Ě% IՊ291/` 'k;)+u;\A$ڑh,W 6d\9@N0 "9&|(,p,.02<4|8ã%>@ HA|H4MaJPaZR\š+0Zjj,9[""|l|x̋ Ke\ayȊ Z,,Qop{0"!VLȞɇ[9o 0 0,12#`S#8 ݘoe&:>[B89+B5 \6;AV杠-E$:\x~$`epwD#X 0B@$lϽZ b291G! a 74Y#*6: F32MIr6`#9$ ݦQ!$hS# ^Ӿ0Z|p5:3  uT GXu }HgN5 !O!ak5&` VK(4fCuxaIp@I-L` EjC"rg+ƄlR'!\ %:l}nז}EĒDI@@+,D%-RpcM7FQ٘}۸ab@r]Rm K 6PTbyìaC2fE݂ GL /` 7uΠ0 )CB2ٔ~ɠ cGpAP16!0^D=1H%B7,ۍ,rM2>y9 +N:P 9B>D~HnFLڹNR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>@bxtx  ȸʔ*0(:.(pfpb\` `pr2.L0@zfhnfH,",dRlĚbh0.ĸpԴX@X̺ 6< NT@cF)TV +#:Ӂ(O Ih&QlIGqvdP> @ `堄jjLA Dt iȐiԎ%Q`R$*Pnћt#,kEC> T^&HFAڐH~[Sd!ᱏ&$$.ުA@Q0+ l0? ϑxAx@?  <GpE4 1]LtN00^+ 4k8> >NFA0q'LcA0!,Ϻ>N5+21D3P?ĸB2Q9--4F t;JôA>jv{SW-ՠԯ=XA4#l> @J@x0:AD1>8"rG"f. @;l' @7:M,Pc@ pd#$ dA2M)AuE!:k)e6S-wdFT"867Z(lƒ}88U 8`|+h@MP GsvE`_?V$HT.0z-j(ЎHA-VPˊT0NE1mE@< D툚< c@0zmC "by3TlPG?JFuTJ d3 D=͏ G0RF8A}HLRd-jiULZ0N2} \+6H$թdޗs)a!hAxuql ԻJ,K?AIDp Lԣ ٽ?LhDTv -|v\vw"?Cu.>vt#xVjvtTikP 5 $]juA{6Οua)}[#B %ZY" x?l!L_ ` p*Z{G%`T NAD$TZh)ڡ"[ζ_$y`Tjv:D`v( Ž` d1݁l̠tG&lSgOBIa@f8y{NLFSmV?Vf;}kG+qCu փV&A4.e؀qA[ >. {=,( Hxc 'U"2Os <+0G <}=?+U0)"B D Fw lփN!8.)_]Øs`DANV| YHxG0+%r~O"4SU!,a #03$#g& 0e1^ a*E0W0= o$MfU$N}* = > E r* @5  blb (  0V4LcW''X'=&`D%t*7@f%"Wh s 4S*b hXG hEdy3edhLP -Q|uy-@R0$8N:ozb4f0Md &{bduQpPg d`\D P1V0@ڨ+@6p&Py3 PL  _2p 8$Y&Zq@qJ),-y19'y8:  A9}-;PRi6Hp{#u!Q\9`b9Zy,djlٖnpr9tYvyxz|ٗ~9q54Q/0PA*4Yy  dLBl* >2aN)G# 0T)ux@.m7S&!y* /˹"B*h8ǚؙڹ&j΂1tf 8T0 6 AU :ƸH;`W1I2pp ;⨋vG-^4yP 0 ^0:F W F3E`4p+ *Jq:DZn<=XFP27E*h] dt 'FڦnQI޹S` Q"-"^vGd׊PmE }jS}+qMpz뇤q$"e?]!EU kV*j-RTTaeg ګZdr[zX$ 7 FD"`Z 4WP 0sZzũx9B0 a%B@&Mpڤ,}j`S` ;:^6P"dUJ6aPfҧ6NI6{8{!%5jQ1`~d5{D**!R+ 9۵^a +\;[3F1T"ӕ7]r*Jqw[w7X!u\ [;K:3>H#Lʁ&v}+@G+yW ۺ!1bmPa&`۳{p,V@7P Ht̋8pU`ƳS؛ K|#Ě% IՊ291/` 'k;)+u;\A$ڑh,W 6d\9@N0 "9&|(,p,.02<4|8ã%>@ HA|H4MaJPaZR\š+0Zjj,9[""|l|x̋ Ke\ayȊ Z,,Qop{0"!VLȞɇ[9o 0 0,12#`S#8 ݘoe&:>[B89+B5 \6;AV杠-E$:\x~$`epwD#X 0B@$lϽZ b291G! a 74Y#*6: F32MIr6`#9$ ݦQ!$hS# ^Ӿ0Z|p5:3  uT GXu }HgN5 !O!ak5&` VK(4fCuxaIp@I-L` EjC"rg+ƄlR'!\ %:l}nז}EĒDI@@+,D%-RpcM7FQ٘}۸ab@r]Rm K 6PTbyìaC2fE݂ GL /` 7uΠ0 )CB2ٔ~ɠ cGpAP16!0^D=1H%B7,ۍ,rM2>y9 +N:P 9B>D~HnFLڹNR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>^~芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>= NdF)TV L3?LӁ(  Ih&QlIGqvdP=$:a堄jj_裁 DAtd " =!IC:)=2IDA:Ѩ"ћQ"P4kÏ>D{8H )QYxGނ[ydAO(,4G~A0A9Ll 4s$9߂L3s~4;*3Eg(PPPHAN0O@U l@!@4;H#m20<tOX(:(?yhC?n5.J zh Ux i@]9VL=ED=I#0$ Y g7}gD3ujYGЖ@4-061BpTdXޑ${_$~ dz2js?`yú0.> y#Y4! Ͽ*Htmp pkOBj&;MS> s >|}'0/M ^~XEA@9u8AD1 yzx*HINPb n+B5ΐ ~B:I1AN!ND 0G g#Mu;=. #1-?xك?Z~=m2.QjgEx g !ŧ8jBp ;&8A؁jy)L NL>1  09>H?@o 5` ^r*6'BE@?` VH_DDY#C 6PL@cs :>ړn@t@O-|B=/)(5s'<(P##Xd')6QrAf:f_S 0 p#"vntE" 0N]F0 0W4@O @rp6eH%>&%0p$ q@3Sd˜qL2 w_'g0$VSrPP 5Cb3pZsb4 !2G 0w>gb ph?#LHeyHSϴb"C@Y>Bs (W 6y85D= @s)B n-qELٔNO1 Uy|-`P9dYfy`B"t pytYvyY1x|ٗ~9Yy٘9Y%!䀇N. *!a@qXP("-VٛgA>c%A =%Rm:=Oic^nD Qfoٞɇו-Aa= @acq`qaAU[&(**݇Od 'ɐw 4 `waX@Gb tI$DZ\ꗿSKBZiu)sL+7j:f "rSS"! ;]ZzO٢3PaP HEO"aFGjhm0**x|Tu:q$#"U eNp 3\U/`qڙp abJx&Cںަm`)x-p k6p `.X*pu\Rn ǭ{{Fz"4U@j0#!ۥU*PG2@.Κ4[6k,Z/fg/ m`W{é`yEpmE,i&jc7\۵ Qث`cQ6f{ti-*gbP-浀+9[>_fo iK? =z']wEҴHo;[`K% :4g1 @Z!rcLy3ۼQs*&&a& `Ew@" R !Lp!HP2UH K0=%t%H16a|"!`@ða|V-;X׿$\&-jAR a'2poCl5]\7e\"S _W_|HQ T ,@pm߼yv$AM vol8,9p C2l7ͨ&~F5A؉1=1]KS B \f 0$@TzO%T^ >` 3Gp"L+"ռ:]1,I͒nyknEl~燉5ǪSdNv~>-Mᚆ>难 ~>~(˨>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>= NdF)TV L3?LӁ(  Ih&QlIGqvdP=$:a堄jj_裁 DAtd " =!IC:)=2IDA:Ѩ"ћQ"P4kÏ>D{8H )QYxGނ[ydAO(,4G~A0A9Ll 4s$9߂L3s~4;*3Eg(PPPHAN0O@U l@!@4;H#m20<tOX(:(?yhC?n5.J zh Ux i@]9VL=ED=I#0$ Y g7}gD3ujYGЖ@4-061BpTdXޑ${_$~ dz2js?`yú0.> y#Y4! Ͽ*Htmp pkOBj&;MS> s >|}'0/M ^~XEA@9u8AD1 yzx*HINPb n+B5ΐ ~B:I1AN!ND 0G g#Mu;=. #1-?xك?Z~=m2.QjgEx g !ŧ8jBp ;&8A؁jy)L NL>1  09>H?@o 5` ^r*6'BE@?` VH_DDY#C 6PL@cs :>ړn@t@O-|B=/)(5s'<(P##Xd')6QrAf:f_S 0 p#"vntE" 0N]F0 0W4@O @rp6eH%>&%0p$ q@3Sd˜qL2 w_'g0$VSrPP 5Cb3pZsb4 !2G 0w>gb ph?#LHeyHSϴb"C@Y>Bs (W 6y85D= @s)B n-qELٔNO1 Uy|-`P9dYfy`B"t pytYvyY1x|ٗ~9Yy٘9Y%!䀇N. *!a@qXP("-VٛgA>c%A =%Rm:=Oic^nD Qfoٞɇו-Aa= @acq`qaAU[&(**݇Od 'ɐw 4 `waX@Gb tI$DZ\ꗿSKBZiu)sL+7j:f "rSS"! ;]ZzO٢3PaP HEO"aFGjhm0**x|Tu:q$#"U eNp 3\U/`qڙp abJx&Cںަm`)x-p k6p `.X*pu\Rn ǭ{{Fz"4U@j0#!ۥU*PG2@.Κ4[6k,Z/fg/ m`W{é`yEpmE,i&jc7\۵ Qث`cQ6f{ti-*gbP-浀+9[>_fo iK? =z']wEҴHo;[`K% :4g1 @Z!rcLy3ۼQs*&&a& `Ew@" R !Lp!HP2UH K0=%t%H16a|"!`@ða|V-;X׿$\&-jAR a'2poCl5]\7e\"S _W_|HQ T ,@pm߼yv$AM vol8,9p C2l7ͨ&~F5A؉1=1]KS B \f 0$@TzO%T^ >` 3Gp"L+"ռ:]1,I͒nyknEl~燉5ǪSdNv~>-Mᚆ>难 ~>~(˨>^~븞뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>@x8"<ʔĮ ttlp$.(nf`PXX `~~x("HXPX<6a堄jj߼ td&b FC:)=2I:Ѩ"ћ`"P4kՏc; سE{8X #EYxGނ[yd@&,4G~AXA9Vl 8s$9߂Pp#s~8O:)CE(PPH@RO됃U l@@t?HN#m2@>tX:]7)zA z@ " _2YRi#`?@HNr_H.;PdDî>j>U" 'T @8W ,`)H:Chm $4^XE{Z8FΜu`bR irD.Cuu@h045=N Ѣ5Ka!X6XJMn'H/Cbp%V+<uA\q" G2hC Е_U "A>'I*$W{Tt8+A ϭhp^p /KD-qTHy#d$jۮ񃈜 >̓qkFV0B0T`o8+RMaG he@B~B(kp"Sd}DN1xy !wA4 pfL!|> ?sdյ"N i \ }tH$i#xypAS; €m>;@@`/7>u Y!  @b9#=H?po %@ ^ r*'`BE@?`  VH_DDYcSoPV@ds0 :>ړx@u@-|B=1)(Us'<&P##XbEV@ KW4VP 0rAf:V_s p#" xr%R0@`e׉ w{P| $ ̀-Pb hTT!cB/ sGX4?eX@Hk1  `'0$VSS@ECb3 Zcb4" !2GՈ 2w>grb q hS?#LHez$τb"S@Y>Bs &`Ws O6y85D=`s)B o-qELٔNO1 Uy|-PP9dYf@ B"t pytYvyY1x|ٗ~9Yy٘9Yq%!䀇';Ֆ){n)a@aX _ ("-ɚٛ a>6|MV1t S"%o`.4F1F ߩ=)xfFiՕ-Aa=U 9Š=A} ;`aaA[&(*,*`݇Od 'A k 4\UuP$p$bOHLBI@V`AIy-\ڥ~;t X'2D(9`wf "rSS" =^ZzOeI pY@9TZUtvF0vh0 RLJa5pLW:z`G=" ]!0Ŧ0zFzA aiJy6Cںᦨm `) y*p l6p p `X/ۘu%fp|`|:[gt @S`T?BRu$d:@߁k 0f` j02k,Z/Wg/N m`!"|ę`qzpkE,i&b6b9XZ!%0ZNPyaQFf tj** 2 (ղo[QVf֐Sl`!]"AHP$I&@/6)p]r巂[{ѵ0#J JL@pG'YX0f k>/K*&&a&]ͫEw@2"5>P!`w!$5P8% ߠ5ѻۿSBȟym Qda0 ' byzazi u{(Ž$a4\6<U2 B$o 7*;l xjEaj Ty߂Xx0z ;4\mwQSfҁ"j!3vڮ}`5$NyH`5&PP%JpFo B%ZNpT qc%NXsگݗ <0BڻVmEr@nFJ^C#vm˵kD]p gL2 @G_yeH Te uok;:=6C>Djb@V9Ы vm8,9p hCV  aYr9`C1۾oM#`B^xuF5Aȉ ϵ{:P`(P EoCI8=pB[$%dF]-1 !bpzޔ KP+`! {H\]I,}l-* |f>^1NK!mKᆄN,_ 1 / ,_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>@x8"<ʔĮ ttlp$.(nf`PXX `~~x("HXPX<6a堄jj߼ td&b FC:)=2I:Ѩ"ћ`"P4kՏc; سE{8X #EYxGނ[yd@&,4G~AXA9Vl 8s$9߂Pp#s~8O:)CE(PPH@RO됃U l@@t?HN#m2@>tX:]7)zA z@ " _2YRi#`?@HNr_H.;PdDî>j>U" 'T @8W ,`)H:Chm $4^XE{Z8FΜu`bR irD.Cuu@h045=N Ѣ5Ka!X6XJMn'H/Cbp%V+<uA\q" G2hC Е_U "A>'I*$W{Tt8+A ϭhp^p /KD-qTHy#d$jۮ񃈜 >̓qkFV0B0T`o8+RMaG he@B~B(kp"Sd}DN1xy !wA4 pfL!|> ?sdյ"N i \ }tH$i#xypAS; €m>;@@`/7>u Y!  @b9#=H?po %@ ^ r*'`BE@?`  VH_DDYcSoPV@ds0 :>ړx@u@-|B=1)(Us'<&P##XbEV@ KW4VP 0rAf:V_s p#" xr%R0@`e׉ w{P| $ ̀-Pb hTT!cB/ sGX4?eX@Hk1  `'0$VSS@ECb3 Zcb4" !2GՈ 2w>grb q hS?#LHez$τb"S@Y>Bs &`Ws O6y85D=`s)B o-qELٔNO1 Uy|-PP9dYf@ B"t pytYvyY1x|ٗ~9Yy٘9Yq%!䀇';Ֆ){n)a@aX _ ("-ɚٛ a>6|MV1t S"%o`.4F1F ߩ=)xfFiՕ-Aa=U 9Š=A} ;`aaA[&(*,*`݇Od 'A k 4\UuP$p$bOHLBI@V`AIy-\ڥ~;t X'2D(9`wf "rSS" =^ZzOeI pY@9TZUtvF0vh0 RLJa5pLW:z`G=" ]!0Ŧ0zFzA aiJy6Cںᦨm `) y*p l6p p `X/ۘu%fp|`|:[gt @S`T?BRu$d:@߁k 0f` j02k,Z/Wg/N m`!"|ę`qzpkE,i&b6b9XZ!%0ZNPyaQFf tj** 2 (ղo[QVf֐Sl`!]"AHP$I&@/6)p]r巂[{ѵ0#J JL@pG'YX0f k>/K*&&a&]ͫEw@2"5>P!`w!$5P8% ߠ5ѻۿSBȟym Qda0 ' byzazi u{(Ž$a4\6<U2 B$o 7*;l xjEaj Ty߂Xx0z ;4\mwQSfҁ"j!3vڮ}`5$NyH`5&PP%JpFo B%ZNpT qc%NXsگݗ <0BڻVmEr@nFJ^C#vm˵kD]p gL2 @G_yeH Te uok;:=6C>Djb@V9Ы vm8,9p hCV  aYr9`C1۾oM#`B^xuF5Aȉ ϵ{:P`(P EoCI8=pB[$%dF]-1 !bpzޔ KP+`! {H\]I,}l-* |f>^1NK!mKᆄN,_ 1 / ,_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>@LDP؞ΰ0:Dpr0@0.lb\`&:00 PP`6<<^d`8"<Ȯl@LF@6:(P@DFP¼xബFJ@ʔƼ|zp<.D|p|,",("HblhBH@0~*0(ƸH:H `xȾ x\~p<<4h\`x|v 2.Lpfprvx4 tfdRlvVlTT@TbP`贴x0H@hnV ::PxȾFF<ľrrtFFD̚rr|̺   H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_n<УKN HaDv3|{Wi˟}?yϑX.|"N%t`F3:#G߅fᆳcc<XR1𘈑 A.cQ4hЍ >= Nd@sDF)TV "?(퓏' Ih&QlIGqvdP= >a堄jj쳁  td&b 2IC:)=2I:Ѩ"ћ )`kOc> E{8x )EYxGނ[ydA&04G~AB-l 8s-߆P3s~8 O:*cE(PHRN؂Y l@@t?Hز#m2`;tX(:]7)z+AS+_f1K 1mD6 GX=["HK?<Iesp-Sx \ XGQCd5hDrZ# 5*$.4EQ Xgؼ[{̣_Aq׃@& cUhO ̙b,"2pCL*!M Uh8: <SZtiZPti?LP:?+vu7^Cs=:BHAM8{믺 b$\$d3E[Zo4@p5P` }T s.`ui#NJ(G@o,QmU!~W}y0^ h^ ,rgE*N=,(- HPb jC_!}DPбxyb wA4pfL!|> ?sdե"N i \ }t i#xypa S; €m>;`@`ψ7>u "  `b9#>H?`o 5^ r*'BE@?` p fH_DDYcs P@cs :>ړu@t` -|B=0)(Es'<&P##XbEG JW4 rAf:V_s0P#"pur%RG0` e׉!(P| $8 ̀-p%7hST"cBPsGX4?eX@Hj1 p `'0$VS}@`eCb3@ ZSb4A!2GՈ 1w>grb @ hR?#LHez$τb"s` Y>Bs &`W 6y85D=Ps)B!n-qELٔNOq14 Uy| -PP9dYfB"t pytYvyY1x|ٗ~9Yy٘9Y%!';Ԗ){n)a@QX _ ("-ɚٛ a>H|MV!t S"oP. 4F1F ߩ=)hfEpiՕ-Aa= paS 1 \ $Pi,ڢ }I| {GBCxUp$p$b[OJʤLBI@`AIy.ڥ^~;t W'2DrS9C` jV [*"!7e9*sL 0Pp 6PaHE"XEGlhmf 0j*x|8`duZz'q$#"U eN{Y \j2`tڙ,I>g1ڭ n7Af#79e.PX*bXW/%f`|zg! @S`V?]Ru$f:` qk  fA` Ѫ4[6k,Z/Wg/N !m`W|ę`yEpke ,i& j7\۵° Q`cQ6f tis*ҩqԀbP-浀+9[>0 _o iK? =u |]冼 EҴaHo%W;[`K53 #JC JѰ j"'YX/6 w>3{ۼK *&&a&]EW@2"5>P"0 z"$6P8@ %SdϛSBȟim Qda0 +Թ' bqzVbYǿ$\&0jAB xa'2xa|hƻvajp\qn^RnzI+"<.=J||Ȉ<9 &"Rȉ<ɔ̿[ ! 0 L&u\ɦ|ʖ$fG0,z|Qʨ˼̢b$`@P0W%|a0B5fT3E3It@c5%0  "X0ҲaL%[i xϼ;ށWO 08:45$q+EBpB% wMLJl * Hb`}@V=g%'JPT#D]F%npjvH0:apU#F1H\;sN+0x5$0JÂQ+K%R S0`Q KG؊QB *;չ! xjDcj Ty߂Xu0z ;4jwQSfҁ";j"=6ʽ~I`5$N Aaa\aU mfˡ*D\ G6F >{_%<%Zv>f  ; Ѥ4@9[i>NF5AȉV= \qp[`(P EnC"I8=pB{%cF]-0w!bⴭp@!T@?s4 +`"`ٽ:\-2nmP֢"YP/(Sb~ϔXJ M"?NmlL!O,#.86>@?D\HJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>F)TV #@;(+ Ih&QlIGqvdPjv{SW-ՠԯ=XA4#l> @z@x8:AH;t,b"BG "f(0@:l'P @7:M,c hR=CN@>A׬(#]:|0%(@:y Zw @hG;20Bc@2,كIy B:HMeP聎B@}JXXo @(QeI(&P c`A~/Mdkѝ6JS(\/!r ]U0z P |APQG:0e#Uq d B@$^2\Z"m x6Y#YO ȅjO;>~tN $فt@ "ȅ̓8DT'@@f]zG,ؑ?cp'[FĒ3O &B=Ӕ!:KɎd.]-wdFT"8U67Z(lƒy,8U ,`|MP Gcv!_:r( UHX2E 54FWQj٩4F mͧ@&< $;Ƀ@ zm " y3TkP@?JBUA6JN6a[UޑD #ԨlgKfW`:ɐDA 8y@6x@`p)?H1A.x VQ cxA*S{L;/*{Ywӱ- N`SDxHjFmH,;mBr]R ) W-P$ | YHxG+%qO2/*D% `?@' De1^ Q*D00= o$cJf@H5= > D0r*E5bSl7>b<4LW+'X'='`D%t*7@f@XV]b> B9ptPHi9`c >v;]Yw 0$$C't-`$o,n 5   5r(q递'.)294YNdB0V+< x 6yHJAQ7QYSPKZ\Xٕb9dYfyhjlٖnpr9tYvyxz|ss0P1W}٘  Lm)L09S pDr42h CR7m:Pv3V12""/yt !s9Iiwd]E'`ζ0T` _ 1U :hH;z@1: j;5X nE5|ghTpU%`"p$6r u 0SF "!נ<ڣ>z a*{]Ͱw( Reu 5퐢?Zfz5,< SQ"-"ZuGg٦tPSuLhڨq$"e?#!PT0i٤a^FH :ZFf[rX# 7F%I|Z/ D` _@gںܪFz#4 #]-d0Uj,ujL @ڭ[;0ZpYՒ1$0n`!2VaI_@CU/e&uz}0* AP`8E! wG4u(* ŲPR{ K@ 53g!"1T"ѕ7 zwN K5xzK.K= t0O0JP]/ :4X .P k+|WO;KU{47bm"a& ۓ j:$k~QPQ(V`<ۼѷQA#"_){$ I +12_hwJй1pf@u{$ݩ1f\,W _P ٠UoH p\y,s "<$\&|K(,£2<4 ɚ@:<<1J=@*4?-4A0$ > TSF86AT'[\B`3 ֜w  b-I,G50!` 74Y#U$b =#є$b =%|*ޙK'Ym#Jj-\XnQRM[AJ;5Zup6K3EWQ0 UV 2mW1QSՔ]nDX t f 5' ӠScm:%&nSzpTs;9tmʽdu07 tjCB@gl$yx$}f6VCy$յ5TD+Wng_@+@Tbu9tRx9pzBbTK{w:Vf-*[Iv*$#Ծ AE5swzBx#Ӭq% (AC'iF!p^J @hE)`5 G_%.0? p0p(H?883Qlb&!`"!0f)f D'US_.@PP1_ P ! '%-IjMDΰ ZJL2 @H]`` )؞5`׮>HqNa'N+^>.e_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>F)TV #@;(+ Ih&QlIGqvdPjv{SW-ՠԯ=XA4#l> @z@x8:AH;t,b"BG "f(0@:l'P @7:M,c hR=CN@>A׬(#]:|0%(@:y Zw @hG;20Bc@2,كIy B:HMeP聎B@}JXXo @(QeI(&P c`A~/Mdkѝ6JS(\/!r ]U0z P |APQG:0e#Uq d B@$^2\Z"m x6Y#YO ȅjO;>~tN $فt@ "ȅ̓8DT'@@f]zG,ؑ?cp'[FĒ3O &B=Ӕ!:KɎd.]-wdFT"8U67Z(lƒy,8U ,`|MP Gcv!_:r( UHX2E 54FWQj٩4F mͧ@&< $;Ƀ@ zm " y3TkP@?JBUA6JN6a[UޑD #ԨlgKfW`:ɐDA 8y@6x@`p)?H1A.x VQ cxA*S{L;/*{Ywӱ- N`SDxHjFmH,;mBr]R ) W-P$ | YHxG+%qO2/*D% `?@' De1^ Q*D00= o$cJf@H5= > D0r*E5bSl7>b<4LW+'X'='`D%t*7@f@XV]b> B9ptPHi9`c >v;]Yw 0$$C't-`$o,n 5   5r(q递'.)294YNdB0V+< x 6yHJAQ7QYSPKZ\Xٕb9dYfyhjlٖnpr9tYvyxz|ss0P1W}٘  Lm)L09S pDr42h CR7m:Pv3V12""/yt !s9Iiwd]E'`ζ0T` _ 1U :hH;z@1: j;5X nE5|ghTpU%`"p$6r u 0SF "!נ<ڣ>z a*{]Ͱw( Reu 5퐢?Zfz5,< SQ"-"ZuGg٦tPSuLhڨq$"e?#!PT0i٤a^FH :ZFf[rX# 7F%I|Z/ D` _@gںܪFz#4 #]-d0Uj,ujL @ڭ[;0ZpYՒ1$0n`!2VaI_@CU/e&uz}0* AP`8E! wG4u(* ŲPR{ K@ 53g!"1T"ѕ7 zwN K5xzK.K= t0O0JP]/ :4X .P k+|WO;KU{47bm"a& ۓ j:$k~QPQ(V`<ۼѷQA#"_){$ I +12_hwJй1pf@u{$ݩ1f\,W _P ٠UoH p\y,s "<$\&|K(,£2<4 ɚ@:<<1J=@*4?-4A0$ > TSF86AT'[\B`3 ֜w  b-I,G50!` 74Y#U$b =#є$b =%|*ޙK'Ym#Jj-\XnQRM[AJ;5Zup6K3EWQ0 UV 2mW1QSՔ]nDX t f 5' ӠScm:%&nSzpTs;9tmʽdu07 tjCB@gl$yx$}f6VCy$յ5TD+Wng_@+@Tbu9tRx9pzBbTK{w:Vf-*[Iv*$#Ծ AE5swzBx#Ӭq% (AC'iF!p^J @hE)`5 G_%.0? p0p(H?883Qlb&!`"!0f)f D'US_.@PP1_ P ! '%-IjMDΰ ZJL2 @H]`` )؞5`׮>HqNa'N+^>.e_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>F)TV #@;(+ Ih&QlIGqvdPjv{SW-ՠԯ=XA4#l> @z@x8:AH;t,b"BG "f(0@:l'P @7:M,c hR=CN@>A׬(#]:|0%(@:y Zw @hG;20Bc@2,كIy B:HMeP聎B@}JXXo @(QeI(&P c`A~/Mdkѝ6JS(\/!r ]U0z P |APQG:0e#Uq d B@$^2\Z"m x6Y#YO ȅjO;>~tN $فt@ "ȅ̓8DT'@@f]zG,ؑ?cp'[FĒ3O &B=Ӕ!:KɎd.]-wdFT"8U67Z(lƒy,8U ,`|MP Gcv!_:r( UHX2E 54FWQj٩4F mͧ@&< $;Ƀ@ zm " y3TkP@?JBUA6JN6a[UޑD #ԨlgKfW`:ɐDA 8y@6x@`p)?H1A.x VQ cxA*S{L;/*{Ywӱ- N`SDxHjFmH,;mBr]R ) W-P$ | YHxG+%qO2/*D% `?@' De1^ Q*D00= o$cJf@H5= > D0r*E5bSl7>b<4LW+'X'='`D%t*7@f@XV]b> B9ptPHi9`c >v;]Yw 0$$C't-`$o,n 5   5r(q递'.)294YNdB0V+< x 6yHJAQ7QYSPKZ\Xٕb9dYfyhjlٖnpr9tYvyxz|ss0P1W}٘  Lm)L09S pDr42h CR7m:Pv3V12""/yt !s9Iiwd]E'`ζ0T` _ 1U :hH;z@1: j;5X nE5|ghTpU%`"p$6r u 0SF "!נ<ڣ>z a*{]Ͱw( Reu 5퐢?Zfz5,< SQ"-"ZuGg٦tPSuLhڨq$"e?#!PT0i٤a^FH :ZFf[rX# 7F%I|Z/ D` _@gںܪFz#4 #]-d0Uj,ujL @ڭ[;0ZpYՒ1$0n`!2VaI_@CU/e&uz}0* AP`8E! wG4u(* ŲPR{ K@ 53g!"1T"ѕ7 zwN K5xzK.K= t0O0JP]/ :4X .P k+|WO;KU{47bm"a& ۓ j:$k~QPQ(V`<ۼѷQA#"_){$ I +12_hwJй1pf@u{$ݩ1f\,W _P ٠UoH p\y,s "<$\&|K(,£2<4 ɚ@:<<1J=@*4?-4A0$ > TSF86AT'[\B`3 ֜w  b-I,G50!` 74Y#U$b =#є$b =%|*ޙK'Ym#Jj-\XnQRM[AJ;5Zup6K3EWQ0 UV 2mW1QSՔ]nDX t f 5' ӠScm:%&nSzpTs;9tmʽdu07 tjCB@gl$yx$}f6VCy$յ5TD+Wng_@+@Tbu9tRx9pzBbTK{w:Vf-*[Iv*$#Ծ AE5swzBx#Ӭq% (AC'iF!p^J @hE)`5 G_%.0? p0p(H?883Qlb&!`"!0f)f D'US_.@PP1_ P ! '%-IjMDΰ ZJL2 @H]`` )؞5`׮>HqNa'N+^>.e_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>F)TV #@;(+ Ih&QlIGqvdPjv{SW-ՠԯ=XA4#l> @z@x8:AH;t,b"BG "f(0@:l'P @7:M,c hR=CN@>A׬(#]:|0%(@:y Zw @hG;20Bc@2,كIy B:HMeP聎B@}JXXo @(QeI(&P c`A~/Mdkѝ6JS(\/!r ]U0z P |APQG:0e#Uq d B@$^2\Z"m x6Y#YO ȅjO;>~tN $فt@ "ȅ̓8DT'@@f]zG,ؑ?cp'[FĒ3O &B=Ӕ!:KɎd.]-wdFT"8U67Z(lƒy,8U ,`|MP Gcv!_:r( UHX2E 54FWQj٩4F mͧ@&< $;Ƀ@ zm " y3TkP@?JBUA6JN6a[UޑD #ԨlgKfW`:ɐDA 8y@6x@`p)?H1A.x VQ cxA*S{L;/*{Ywӱ- N`SDxHjFmH,;mBr]R ) W-P$ | YHxG+%qO2/*D% `?@' De1^ Q*D00= o$cJf@H5= > D0r*E5bSl7>b<4LW+'X'='`D%t*7@f@XV]b> B9ptPHi9`c >v;]Yw 0$$C't-`$o,n 5   5r(q递'.)294YNdB0V+< x 6yHJAQ7QYSPKZ\Xٕb9dYfyhjlٖnpr9tYvyxz|ss0P1W}٘  Lm)L09S pDr42h CR7m:Pv3V12""/yt !s9Iiwd]E'`ζ0T` _ 1U :hH;z@1: j;5X nE5|ghTpU%`"p$6r u 0SF "!נ<ڣ>z a*{]Ͱw( Reu 5퐢?Zfz5,< SQ"-"ZuGg٦tPSuLhڨq$"e?#!PT0i٤a^FH :ZFf[rX# 7F%I|Z/ D` _@gںܪFz#4 #]-d0Uj,ujL @ڭ[;0ZpYՒ1$0n`!2VaI_@CU/e&uz}0* AP`8E! wG4u(* ŲPR{ K@ 53g!"1T"ѕ7 zwN K5xzK.K= t0O0JP]/ :4X .P k+|WO;KU{47bm"a& ۓ j:$k~QPQ(V`<ۼѷQA#"_){$ I +12_hwJй1pf@u{$ݩ1f\,W _P ٠UoH p\y,s "<$\&|K(,£2<4 ɚ@:<<1J=@*4?-4A0$ > TSF86AT'[\B`3 ֜w  b-I,G50!` 74Y#U$b =#є$b =%|*ޙK'Ym#Jj-\XnQRM[AJ;5Zup6K3EWQ0 UV 2mW1QSՔ]nDX t f 5' ӠScm:%&nSzpTs;9tmʽdu07 tjCB@gl$yx$}f6VCy$յ5TD+Wng_@+@Tbu9tRx9pzBbTK{w:Vf-*[Iv*$#Ծ AE5swzBx#Ӭq% (AC'iF!p^J @hE)`5 G_%.0? p0p(H?883Qlb&!`"!0f)f D'US_.@PP1_ P ! '%-IjMDΰ ZJL2 @H]`` )؞5`׮>HqNa'N+^>.e_ ?_ "?$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>S= NtF)TV =@=(0 Ih&QlIGqvdP=t `堄jjiA !t%biȐiz4%E`R$*PnћQh!$kE=ē8&HFAbH~[Sd!pO($$.ުA@'=l 4 @>ϑx Bx? N qҀ<Lԣ 5p  Px0'0^+4k8; ;NSN'hq'LCc40(ϺBO)=ܳ 3 TA?2 Q9--4F jv{SW-ՠԯ=XA4#l>_ @@x4:AL;s0" "fz$`8H\2E54FWQ٩4F mͧ@ < DZ< C 'zm̓"R y3TkP@?JB6JN6a[UޑD #ԨlgKfW3`[>ɐ H@(A8@y6|wDp&?H1=xW 1),RD-~1~bdגdb':]}G"N9u_D £ɂэ:kOkea~PC]0Z(LO"pYR,%HPV7'gh'+i""Sf`GvK@D.B<0|c?AauɏJ_z0,a8!L1b5n=A<[B @@VXC E=&I"ĉ N( @ $պI ke0fEusahif>Ӿͣ@SE+Af^{s c$KHP7<6Yo{`;XQ(b5 RH[%/DfFA.x VQ cxA,SyL;/A{Yw- N`SDxHzFmH,;mBp5R g ) g/P$ Z YHxG+%qO"_tU!r,ecwe$?O9JT0b ӣFLA0fm$Xx l#c`(Pt[q* 6Ŗhpcs*l]M$`=p~ruЃFTBde%? tGGO<=PPx? @A {0p S5 P~1pC2A2 '" @RSL0>b JxYGR hE0ANp|hL2P -3|y8w@C0$8R:oBzb4gD |J j,&W V%\D%4Ys0@֨+(`ycs ق!_20 "Z@aJ-( 0)y-#94Y6L&c;ٓ~'CyHJ@ q*{]$OИ(pjReu$ 5Azh6,l!4, P1=3v7z7A:W`+- !ϡ<`\"+-P^ː50GN0Ǥ̗cUlm})%mRtA!eh@" XVzG4>`*4?-4A0D >Pc GX6A'k\2Q s|2}!В\y V qrNS5Z5K FP3MIBZŗI ! ā|"/%6d`1PTj3}xQ!$[uc^Zzp6K3 EW Q2UV 2vmW1՞wPm9%yۺ͕Ms5 0?h1a=p\/+oJ :5f\@oև㒞ʚpTs;9䔙҂$p0=KwQN 0 tjC"02`gµ= ltyx$ ~fVDy$յ5T.d*A,I5Lr D%-VSN'usO#6K:Vfѥ4߸V~JIv*$# 1j E5s-:JxΚ%Q90T|f!zPͅLEN'- M7 G5]r a 0 }0٦' p$HJb&!w`""0f)f E'EcI[\Ҿ~ HH2P = KR΀]n H;DTi pj 0-#3T @axv=?5aNFNH&F6N7(0$1_6.:j<@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>S= NtF)TV =@=(0 Ih&QlIGqvdP=t `堄jjiA !t%biȐiz4%E`R$*PnћQh!$kE=ē8&HFAbH~[Sd!pO($$.ުA@'=l 4 @>ϑx Bx? N qҀ<Lԣ 5p  Px0'0^+4k8; ;NSN'hq'LCc40(ϺBO)=ܳ 3 TA?2 Q9--4F jv{SW-ՠԯ=XA4#l>_ @@x4:AL;s0" "fz$`8H\2E54FWQ٩4F mͧ@ < DZ< C 'zm̓"R y3TkP@?JB6JN6a[UޑD #ԨlgKfW3`[>ɐ H@(A8@y6|wDp&?H1=xW 1),RD-~1~bdגdb':]}G"N9u_D £ɂэ:kOkea~PC]0Z(LO"pYR,%HPV7'gh'+i""Sf`GvK@D.B<0|c?AauɏJ_z0,a8!L1b5n=A<[B @@VXC E=&I"ĉ N( @ $պI ke0fEusahif>Ӿͣ@SE+Af^{s c$KHP7<6Yo{`;XQ(b5 RH[%/DfFA.x VQ cxA,SyL;/A{Yw- N`SDxHzFmH,;mBp5R g ) g/P$ Z YHxG+%qO"_tU!r,ecwe$?O9JT0b ӣFLA0fm$Xx l#c`(Pt[q* 6Ŗhpcs*l]M$`=p~ruЃFTBde%? tGGO<=PPx? @A {0p S5 P~1pC2A2 '" @RSL0>b JxYGR hE0ANp|hL2P -3|y8w@C0$8R:oBzb4gD |J j,&W V%\D%4Ys0@֨+(`ycs ق!_20 "Z@aJ-( 0)y-#94Y6L&c;ٓ~'CyHJ@ q*{]$OИ(pjReu$ 5Azh6,l!4, P1=3v7z7A:W`+- !ϡ<`\"+-P^ː50GN0Ǥ̗cUlm})%mRtA!eh@" XVzG4>`*4?-4A0D >Pc GX6A'k\2Q s|2}!В\y V qrNS5Z5K FP3MIBZŗI ! ā|"/%6d`1PTj3}xQ!$[uc^Zzp6K3 EW Q2UV 2vmW1՞wPm9%yۺ͕Ms5 0?h1a=p\/+oJ :5f\@oև㒞ʚpTs;9䔙҂$p0=KwQN 0 tjC"02`gµ= ltyx$ ~fVDy$յ5T.d*A,I5Lr D%-VSN'usO#6K:Vfѥ4߸V~JIv*$# 1j E5s-:JxΚ%Q90T|f!zPͅLEN'- M7 G5]r a 0 }0٦' p$HJb&!w`""0f)f E'EcI[\Ҿ~ HH2P = KR΀]n H;DTi pj 0-#3T @axv=?5aNFNH&F6N7(0$1_6.:j<@B?D_FHJLNPR?T_VXZ\^`b?d_fhjlnpr?t_vxz|~?_?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG><224nnlffdNNL~~| Į袤*0(LF@Nt\x:.( <<46:(ttlFJ@nf`ĸlttXPX Դtv`&.8|zpxblh̜|p|0.bdprvxd\tdRl`0bxtnfHȸ~FZP0@NZtNfp@t@prlnxP@0.lxLDP("H^d`..84,8::PĴ`Zؘ `Ժ2.LH@hĖPP`H:H6<<ΰ|vrx0@8"# TO>NFpA)hq'LcA80Ϻ6#1TP=Ę Q9--4F :JôA>jv{SW-ՠԯ=XA4#l> @J@x8:ADq>r,""fN( :l'@7:M,_@ djA.x VQ'sxA,SyL{>/&h{Yoױ- N`SDDxHF٬;mBlpmR 7 :{Db  iA`M/$AH6I ޏ!VփK7EX'BdY ,B0De1^ a*00= obNf@H5= > r*D5bClb ( P4L W*'X'='`D%t*0fDXV|@A9p`t!T(i=H7&=Px?V @A H0`  Sеp~؈1pC2A20P'" @RSL0>b MxYVGrB hE00ANx'֊QL-AN)G#㚗Ƙ 0T)x@. n7o#!)"y*@*(yؙGjΒ1Atf 8T  p1U :ƸH;p 1j j;unq$ Qc!AwAP Xpe*Yp!`ctrE uj 0ST F" B:Dʖa @ *{=5ja x/ uPJPW}@sElڦN9ܹS` Q"-"_vGgmIW {JS{ eLn:Zwq$"e?# "pPT0EJjoTSMPkhjd[xX$ 7Ft eJp8AyP| {:jv9B0ba%0BA&NdLZ-0rڰ)t2lP"c JЯ#U/e&{} ;4[b Q"P `8[I G4u(*a KgZ\{KB52l1T"ѕ7]r*zN T}յK8K=r0O0J렊g{ :4 (s*-sH+|WO:K_{4wbrm³a&`ۓj:$p(v8PԚQ(`V`<䌭[{QA#" d){% IlU#h #kjp@u1 $!f( ,WSjZoHf"<$<sW(*,.c0<4\ã!l:,B<*2ODL,nHqZcJZŬb<.lLQşzYl[+9[""-aIQ n~<`P@ƏBQ|vl|ǔ\׉rZ.*u\21ɖʰܗ@ 16%`ZЍ6Xf®3?c7x7|Sp"6e r*R % [ssd$=;@!r;1VƝR-u4=]x$`5owDBBCۀP?*Jx6AX'k\" ۣ0,lĄXJg b2I1IG0!` 74Y#ZF,bD`=#є$l@ZBͧI );|"/%Fd`APTD0'PȄL=ٔ}Q!$0{v`c^S@Z*p5:3P EWv Q6*UV 2 lWC1wPum8%N3ԕ]Mr5  Dh!ap\)/oQcl:en}82y'pDs;9ԙ҂$L-Ԣ?ɔؽW}k djC202gBpĴlG"fֻ q@le GR][3QM@BFbu}׭R>hiĒ_P@+^@TbuGx8p0ַ-bAlZ}U{:VfBѥ4})³T^膞db@21m#K PT2ђyw02W 90T|f!zPLEN'- M~kÇ^p$_%0pG   p@Cj=7(m.fr&"bvap''Uɶ[BL9f?"pod HH[  K<Rpn㒤H;D4ip۰ 0-KZD@H^ ͠[P6G! 42?X5d=Wb?md 0HDdn06_/lvj`|[~?<?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG><224nnlffdNNL~~| Į袤*0(LF@Nt\x:.( <<46:(ttlFJ@nf`ĸlttXPX Դtv`&.8|zpxblh̜|p|0.bdprvxd\tdRl`0bxtnfHȸ~FZP0@NZtNfp@t@prlnxP@0.lxLDP("H^d`..84,8::PĴ`Zؘ `Ժ2.LH@hĖPP`H:H6<<ΰ|vrx0@8"# TO>NFpA)hq'LcA80Ϻ6#1TP=Ę Q9--4F :JôA>jv{SW-ՠԯ=XA4#l> @J@x8:ADq>r,""fN( :l'@7:M,_@ djA.x VQ'sxA,SyL{>/&h{Yoױ- N`SDDxHF٬;mBlpmR 7 :{Db  iA`M/$AH6I ޏ!VփK7EX'BdY ,B0De1^ a*00= obNf@H5= > r*D5bClb ( P4L W*'X'='`D%t*0fDXV|@A9p`t!T(i=H7&=Px?V @A H0`  Sеp~؈1pC2A20P'" @RSL0>b MxYVGrB hE00ANx'֊QL-AN)G#㚗Ƙ 0T)x@. n7o#!)"y*@*(yؙGjΒ1Atf 8T  p1U :ƸH;p 1j j;unq$ Qc!AwAP Xpe*Yp!`ctrE uj 0ST F" B:Dʖa @ *{=5ja x/ uPJPW}@sElڦN9ܹS` Q"-"_vGgmIW {JS{ eLn:Zwq$"e?# "pPT0EJjoTSMPkhjd[xX$ 7Ft eJp8AyP| {:jv9B0ba%0BA&NdLZ-0rڰ)t2lP"c JЯ#U/e&{} ;4[b Q"P `8[I G4u(*a KgZ\{KB52l1T"ѕ7]r*zN T}յK8K=r0O0J렊g{ :4 (s*-sH+|WO:K_{4wbrm³a&`ۓj:$p(v8PԚQ(`V`<䌭[{QA#" d){% IlU#h #kjp@u1 $!f( ,WSjZoHf"<$<sW(*,.c0<4\ã!l:,B<*2ODL,nHqZcJZŬb<.lLQşzYl[+9[""-aIQ n~<`P@ƏBQ|vl|ǔ\׉rZ.*u\21ɖʰܗ@ 16%`ZЍ6Xf®3?c7x7|Sp"6e r*R % [ssd$=;@!r;1VƝR-u4=]x$`5owDBBCۀP?*Jx6AX'k\" ۣ0,lĄXJg b2I1IG0!` 74Y#ZF,bD`=#є$l@ZBͧI );|"/%Fd`APTD0'PȄL=ٔ}Q!$0{v`c^S@Z*p5:3P EWv Q6*UV 2 lWC1wPum8%N3ԕ]Mr5  Dh!ap\)/oQcl:en}82y'pDs;9ԙ҂$L-Ԣ?ɔؽW}k djC202gBpĴlG"fֻ q@le GR][3QM@BFbu}׭R>hiĒ_P@+^@TbuGx8p0ַ-bAlZ}U{:VfBѥ4})³T^膞db@21m#K PT2ђyw02W 90T|f!zPLEN'- M~kÇ^p$_%0pG   p@Cj=7(m.fr&"bvap''Uɶ[BL9f?"pod HH[  K<Rpn㒤H;D4ip۰ 0-KZD@H^ ͠[P6G! 42?X5d=Wb?md 0HDdn06_/lvj`|[~?<?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG><224nnlffdNNL~~| Į袤*0(LF@Nt\x:.( <<46:(ttlFJ@nf`ĸlttXPX Դtv`&.8|zpxblh̜|p|0.bdprvxd\tdRl`0bxtnfHȸ~FZP0@NZtNfp@t@prlnxP@0.lxLDP("H^d`..84,8::PĴ`Zؘ `Ժ2.LH@hĖPP`H:H6<<ΰ|vrx0@8"# TO>NFpA)hq'LcA80Ϻ6#1TP=Ę Q9--4F :JôA>jv{SW-ՠԯ=XA4#l> @J@x8:ADq>r,""fN( :l'@7:M,_@ djA.x VQ'sxA,SyL{>/&h{Yoױ- N`SDDxHF٬;mBlpmR 7 :{Db  iA`M/$AH6I ޏ!VփK7EX'BdY ,B0De1^ a*00= obNf@H5= > r*D5bClb ( P4L W*'X'='`D%t*0fDXV|@A9p`t!T(i=H7&=Px?V @A H0`  Sеp~؈1pC2A20P'" @RSL0>b MxYVGrB hE00ANx'֊QL-AN)G#㚗Ƙ 0T)x@. n7o#!)"y*@*(yؙGjΒ1Atf 8T  p1U :ƸH;p 1j j;unq$ Qc!AwAP Xpe*Yp!`ctrE uj 0ST F" B:Dʖa @ *{=5ja x/ uPJPW}@sElڦN9ܹS` Q"-"_vGgmIW {JS{ eLn:Zwq$"e?# "pPT0EJjoTSMPkhjd[xX$ 7Ft eJp8AyP| {:jv9B0ba%0BA&NdLZ-0rڰ)t2lP"c JЯ#U/e&{} ;4[b Q"P `8[I G4u(*a KgZ\{KB52l1T"ѕ7]r*zN T}յK8K=r0O0J렊g{ :4 (s*-sH+|WO:K_{4wbrm³a&`ۓj:$p(v8PԚQ(`V`<䌭[{QA#" d){% IlU#h #kjp@u1 $!f( ,WSjZoHf"<$<sW(*,.c0<4\ã!l:,B<*2ODL,nHqZcJZŬb<.lLQşzYl[+9[""-aIQ n~<`P@ƏBQ|vl|ǔ\׉rZ.*u\21ɖʰܗ@ 16%`ZЍ6Xf®3?c7x7|Sp"6e r*R % [ssd$=;@!r;1VƝR-u4=]x$`5owDBBCۀP?*Jx6AX'k\" ۣ0,lĄXJg b2I1IG0!` 74Y#ZF,bD`=#є$l@ZBͧI );|"/%Fd`APTD0'PȄL=ٔ}Q!$0{v`c^S@Z*p5:3P EWv Q6*UV 2 lWC1wPum8%N3ԕ]Mr5  Dh!ap\)/oQcl:en}82y'pDs;9ԙ҂$L-Ԣ?ɔؽW}k djC202gBpĴlG"fֻ q@le GR][3QM@BFbu}׭R>hiĒ_P@+^@TbuGx8p0ַ-bAlZ}U{:VfBѥ4})³T^膞db@21m#K PT2ђyw02W 90T|f!zPLEN'- M~kÇ^p$_%0pG   p@Cj=7(m.fr&"bvap''Uɶ[BL9f?"pod HH[  K<Rpn㒤H;D4ip۰ 0-KZD@H^ ͠[P6G! 42?X5d=Wb?md 0HDdn06_/lvj`|[~?<?_?_?_?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG><nnl224ffdNNL ~~|H:Htnt0LF@Nt\4,8<<4pfp`Znf`*0(@lttnfHp@tXPX8"yϑG/|"N%t`Fc<#G߅fᆳCA<"PXA..cQ4hЍ >= NF)TV ;(ᓏ&0 Ih&QlIGqvdP=p  `堄jji4 $!t$ iȐij4%IpR$*Pnћ.t#P<kES=[^&HpFAqH~[Sd!bO($$.ުAC l4 >tϑ.xAx=  Ѐ<Wp*. 5` Pt0 0^+ 4k8$B>" tO>NF` hq'LP7sA4(Ϻ:@0#=((Q9--4F jv{SW-ՠԯ=XA4#l>_ @Z@x4:ADq>r0" "f2 1i <1{!Zw ހ`;20 S@,ɃIyQ<de聎B@}JXXo @(QeI(&P c`A~/Mdkѝ6Jg(`/!@Q ]a0z AP<0e#Uq T $^2Zm G6Y#YO p WO?BztN $y@ F̓8KT(@@]zG*1V '[FĒ3Q 22=Ӕ!:ɏd.]-wdFT"867Z(lc{08U 0`|x3MP Gcv_>$`\H` 2Em54E0fYQ٩4Fmͧ@< d?C zmCt"ry3TkP@?JBJN6a[UޑD#ԨlgKfW`>L@.A8@Z}Hp&?H1=zmWp q1lVRD-fYULZ,ЀL2}q\6H$թ=2ޗsA !hAx4Y5q#;WP*H`Xj]} 'L"x0L"eE)@=݀4 "8Ca,d?>Z]gi,m̏ۨuaiУȳ}`Y. HUr M`Z<\ў dT#iXDdJVn WHO7[H֝~Az"TmL ?1J1 ჈H" жOFζm'HǙ: v<`G1QA.0qA!YrU(s`!>/0h{Yo- N`SDDxHF٬;mBl`mR 7 :{@a 4 iA`M/ AH6I ޏ!VރK7el'BdY| ,d De1^ q*00= o! bf@H5= > 0r*D5 bClb (  PǶ4L2W*'X'=(`D%t*P0fDXV|p A9``t!T(i=7&=Px?@A 90  S 5 ~؈1p C2A20P'" @RSL0>b MxYVG0hE00ANlx'֊qLr-3p|y8ǐ@70$8 b:oBzb4fA|JV.j,&W@  V%\D%4Yr0@ڨ+l( ycc` !_208$Y&Z@aJ,,0-y19'y8:L&" c?~h(!GLٔN<Ha{#au!Z ^`Z+ѕbyhjlٖnpr9tYvyxz|ٗ~qq54*Ip0Pq\9Y  Lrl* sy>AN)G#㚗Ƙ 0T)xP. n7o#!)"y*.@*(yؙGjΒ1Atf 8T  l 1U :ƸH;^ 1j j;u8nq$ Qc!AwApe*y ` `cr uj 0SF "4 B:Dʖ @ *{=5jQ x/ { uPJPW}@sElڦN9ܹSp Q"-"_vGgmI{JS{ eLn:Zwq$"e?# #`PT0EJjo5TSMPkhjd[xX$ 7Ft eJp8Ayp{:jv9B0bq7% BA&ҐdLZ--rڰ)t2lP"cDJlЯ#U/e&{} ;4[b Q"P!`8 [pI G4u(* KgZ\{K 52l1T"ѕ7]r*zNT}յK8K= r0O0Jg{ :4 (s*- sH+|WO:K_{4wbm³a&` j:$p(8PԚQ(`V`<䌭[{QA#"Pd){% IlU#2lh#kjp@u1 $!f( ,W l jZoHbf"<$<sW(*,.o0<4\ã!l:+ B<2[DL<nHqZMZ\ + U[l,%"?VUlm|ܦ`^P0ƏBQ|u,}<ɔ,X,,oq袲]'Q1%\ɮqɪ 0 @,1#`S6 oe&:;> P1=3v7z7A:W`+- !ϡ<`\"+-P^50GN ;A-28.ʰ<-cEl ~)5RA!eh@" XVzG4>*4?-4A0 > 9ѻh |һ%r p2*8=!#QFLϲB !Z & ]yV r N5%"F3MI¶%|*tK'Ym$Jj 6$EENL  LPr[ڪ Q!$ `^SZxp5:3 EWF Q6s UV 2lW1wPum8%NЮC>=b$X3 rp f P3R 6K(5f\0o6ه#wp|R@4SCN)-H2pB-L*94~eK]6}[ PdjC202gBpĴlGfֻ @lt GR][3QM@BFbu}W͢UD7>tF,IL D%-Vq MsSw"vW^qce& ]JP <,r^窾Fv)$#&T 1E%s-:JxP#Cq%Cu'hF#p^W _T}ҒKi,%1Xۑ^[p$_%0p7P M p@Cy=7(. fr &2bvap(0'Eɶ[P9f?M@F HH| KR~咔H;D4ip ۠ 0-#KZ@H^ [P6G 42W(jAO[ZCKO?,  _bNN?lȴ?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG><nnl224ffdNNL ~~|H:Htnt0LF@Nt\4,8<<4pfp`Znf`*0(@lttnfHp@tXPX8"yϑG/|"N%t`Fc<#G߅fᆳCA<"PXA..cQ4hЍ >= NF)TV ;(ᓏ&0 Ih&QlIGqvdP=p  `堄jji4 $!t$ iȐij4%IpR$*Pnћ.t#P<kES=[^&HpFAqH~[Sd!bO($$.ުAC l4 >tϑ.xAx=  Ѐ<Wp*. 5` Pt0 0^+ 4k8$B>" tO>NF` hq'LP7sA4(Ϻ:@0#=((Q9--4F jv{SW-ՠԯ=XA4#l>_ @Z@x4:ADq>r0" "f2 1i <1{!Zw ހ`;20 S@,ɃIyQ<de聎B@}JXXo @(QeI(&P c`A~/Mdkѝ6Jg(`/!@Q ]a0z AP<0e#Uq T $^2Zm G6Y#YO p WO?BztN $y@ F̓8KT(@@]zG*1V '[FĒ3Q 22=Ӕ!:ɏd.]-wdFT"867Z(lc{08U 0`|x3MP Gcv_>$`\H` 2Em54E0fYQ٩4Fmͧ@< d?C zmCt"ry3TkP@?JBJN6a[UޑD#ԨlgKfW`>L@.A8@Z}Hp&?H1=zmWp q1lVRD-fYULZ,ЀL2}q\6H$թ=2ޗsA !hAx4Y5q#;WP*H`Xj]} 'L"x0L"eE)@=݀4 "8Ca,d?>Z]gi,m̏ۨuaiУȳ}`Y. HUr M`Z<\ў dT#iXDdJVn WHO7[H֝~Az"TmL ?1J1 ჈H" жOFζm'HǙ: v<`G1QA.0qA!YrU(s`!>/0h{Yo- N`SDDxHF٬;mBl`mR 7 :{@a 4 iA`M/ AH6I ޏ!VރK7el'BdY| ,d De1^ q*00= o! bf@H5= > 0r*D5 bClb (  PǶ4L2W*'X'=(`D%t*P0fDXV|p A9``t!T(i=7&=Px?@A 90  S 5 ~؈1p C2A20P'" @RSL0>b MxYVG0hE00ANlx'֊qLr-3p|y8ǐ@70$8 b:oBzb4fA|JV.j,&W@  V%\D%4Yr0@ڨ+l( ycc` !_208$Y&Z@aJ,,0-y19'y8:L&" c?~h(!GLٔN<Ha{#au!Z ^`Z+ѕbyhjlٖnpr9tYvyxz|ٗ~qq54*Ip0Pq\9Y  Lrl* sy>AN)G#㚗Ƙ 0T)xP. n7o#!)"y*.@*(yؙGjΒ1Atf 8T  l 1U :ƸH;^ 1j j;u8nq$ Qc!AwApe*y ` `cr uj 0SF "4 B:Dʖ @ *{=5jQ x/ { uPJPW}@sElڦN9ܹSp Q"-"_vGgmI{JS{ eLn:Zwq$"e?# #`PT0EJjo5TSMPkhjd[xX$ 7Ft eJp8Ayp{:jv9B0bq7% BA&ҐdLZ--rڰ)t2lP"cDJlЯ#U/e&{} ;4[b Q"P!`8 [pI G4u(* KgZ\{K 52l1T"ѕ7]r*zNT}յK8K= r0O0Jg{ :4 (s*- sH+|WO:K_{4wbm³a&` j:$p(8PԚQ(`V`<䌭[{QA#"Pd){% IlU#2lh#kjp@u1 $!f( ,W l jZoHbf"<$<sW(*,.o0<4\ã!l:+ B<2[DL<nHqZMZ\ + U[l,%"?VUlm|ܦ`^P0ƏBQ|u,}<ɔ,X,,oq袲]'Q1%\ɮqɪ 0 @,1#`S6 oe&:;> P1=3v7z7A:W`+- !ϡ<`\"+-P^50GN ;A-28.ʰ<-cEl ~)5RA!eh@" XVzG4>*4?-4A0 > 9ѻh |һ%r p2*8=!#QFLϲB !Z & ]yV r N5%"F3MI¶%|*tK'Ym$Jj 6$EENL  LPr[ڪ Q!$ `^SZxp5:3 EWF Q6s UV 2lW1wPum8%NЮC>=b$X3 rp f P3R 6K(5f\0o6ه#wp|R@4SCN)-H2pB-L*94~eK]6}[ PdjC202gBpĴlGfֻ @lt GR][3QM@BFbu}W͢UD7>tF,IL D%-Vq MsSw"vW^qce& ]JP <,r^窾Fv)$#&T 1E%s-:JxP#Cq%Cu'hF#p^W _T}ҒKi,%1Xۑ^[p$_%0p7P M p@Cy=7(. fr &2bvap(0'Eɶ[P9f?M@F HH| KR~咔H;D4ip ۠ 0-#KZ@H^ [P6G 42W(jAO[ZCKO?,  _bNN?lȴ?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG><nnl224ffdNNL ~~|H:Htnt0LF@Nt\4,8<<4pfp`Znf`*0(@lttnfHp@tXPX8"yϑG/|"N%t`Fc<#G߅fᆳCA<"PXA..cQ4hЍ >= NF)TV ;(ᓏ&0 Ih&QlIGqvdP=p  `堄jji4 $!t$ iȐij4%IpR$*Pnћ.t#P<kES=[^&HpFAqH~[Sd!bO($$.ުAC l4 >tϑ.xAx=  Ѐ<Wp*. 5` Pt0 0^+ 4k8$B>" tO>NF` hq'LP7sA4(Ϻ:@0#=((Q9--4F jv{SW-ՠԯ=XA4#l>_ @Z@x4:ADq>r0" "f2 1i <1{!Zw ހ`;20 S@,ɃIyQ<de聎B@}JXXo @(QeI(&P c`A~/Mdkѝ6Jg(`/!@Q ]a0z AP<0e#Uq T $^2Zm G6Y#YO p WO?BztN $y@ F̓8KT(@@]zG*1V '[FĒ3Q 22=Ӕ!:ɏd.]-wdFT"867Z(lc{08U 0`|x3MP Gcv_>$`\H` 2Em54E0fYQ٩4Fmͧ@< d?C zmCt"ry3TkP@?JBJN6a[UޑD#ԨlgKfW`>L@.A8@Z}Hp&?H1=zmWp q1lVRD-fYULZ,ЀL2}q\6H$թ=2ޗsA !hAx4Y5q#;WP*H`Xj]} 'L"x0L"eE)@=݀4 "8Ca,d?>Z]gi,m̏ۨuaiУȳ}`Y. HUr M`Z<\ў dT#iXDdJVn WHO7[H֝~Az"TmL ?1J1 ჈H" жOFζm'HǙ: v<`G1QA.0qA!YrU(s`!>/0h{Yo- N`SDDxHF٬;mBl`mR 7 :{@a 4 iA`M/ AH6I ޏ!VރK7el'BdY| ,d De1^ q*00= o! bf@H5= > 0r*D5 bClb (  PǶ4L2W*'X'=(`D%t*P0fDXV|p A9``t!T(i=7&=Px?@A 90  S 5 ~؈1p C2A20P'" @RSL0>b MxYVG0hE00ANlx'֊qLr-3p|y8ǐ@70$8 b:oBzb4fA|JV.j,&W@  V%\D%4Yr0@ڨ+l( ycc` !_208$Y&Z@aJ,,0-y19'y8:L&" c?~h(!GLٔN<Ha{#au!Z ^`Z+ѕbyhjlٖnpr9tYvyxz|ٗ~qq54*Ip0Pq\9Y  Lrl* sy>AN)G#㚗Ƙ 0T)xP. n7o#!)"y*.@*(yؙGjΒ1Atf 8T  l 1U :ƸH;^ 1j j;u8nq$ Qc!AwApe*y ` `cr uj 0SF "4 B:Dʖ @ *{=5jQ x/ { uPJPW}@sElڦN9ܹSp Q"-"_vGgmI{JS{ eLn:Zwq$"e?# #`PT0EJjo5TSMPkhjd[xX$ 7Ft eJp8Ayp{:jv9B0bq7% BA&ҐdLZ--rڰ)t2lP"cDJlЯ#U/e&{} ;4[b Q"P!`8 [pI G4u(* KgZ\{K 52l1T"ѕ7]r*zNT}յK8K= r0O0Jg{ :4 (s*- sH+|WO:K_{4wbm³a&` j:$p(8PԚQ(`V`<䌭[{QA#"Pd){% IlU#2lh#kjp@u1 $!f( ,W l jZoHbf"<$<sW(*,.o0<4\ã!l:+ B<2[DL<nHqZMZ\ + U[l,%"?VUlm|ܦ`^P0ƏBQ|u,}<ɔ,X,,oq袲]'Q1%\ɮqɪ 0 @,1#`S6 oe&:;> P1=3v7z7A:W`+- !ϡ<`\"+-P^50GN ;A-28.ʰ<-cEl ~)5RA!eh@" XVzG4>*4?-4A0 > 9ѻh |һ%r p2*8=!#QFLϲB !Z & ]yV r N5%"F3MI¶%|*tK'Ym$Jj 6$EENL  LPr[ڪ Q!$ `^SZxp5:3 EWF Q6s UV 2lW1wPum8%NЮC>=b$X3 rp f P3R 6K(5f\0o6ه#wp|R@4SCN)-H2pB-L*94~eK]6}[ PdjC202gBpĴlGfֻ @lt GR][3QM@BFbu}W͢UD7>tF,IL D%-Vq MsSw"vW^qce& ]JP <,r^窾Fv)$#&T 1E%s-:JxP#Cq%Cu'hF#p^W _T}ҒKi,%1Xۑ^[p$_%0p7P M p@Cy=7(. fr &2bvap(0'Eɶ[P9f?M@F HH| KR~咔H;D4ip ۠ 0-#KZ@H^ [P6G 42W(jAO[ZCKO?,  _bNN?lȴ?_ȟʿ?_؟ڿ?_?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG># N>NcNpA%tq'Lă400Ϻ:O Գ 1:Ĉ2"(Q9--4F t;JôA>jv{SW-ՠԯ=XA4#l> @:@x4:ALq>r(""F"fn0@;l'PX@7:M,P_ dT~<p#?H9@=W 9X(RD-fIULZ.ЀL2}9\6H$i=2ޗs1 Q!hAx4Y5ql"ێڃWP*H`Xj]} 'L"x(аL"E桊U$= "/qh{Yo۱- N`SDDxHF٬;$mBppkR z$a  iA`M/AH6I ޏ!VK7Eh'BdY pA4 De1^ *F0M0= obNf@H5= > Fr*`D5 `bClb ( 3 P4Lֳ W*'X'=(`D%t*I0fDXV|p A9p`t!T(i=h7&=`Px?V @A h00  S ~؈1! C2A21P'" @RSL0>b MxYVGhE00ANx'֊LP -|y@0$8 s:oBzb4fA|2JFj,&W5 V%\D%4Yr0@ڨ+p(`ysS`  _2@8$Y&Z@aJ,,"-y19'y8:L&#c?~h(1GLٔN[AN)G#㚗Ƙ 0T)x0. n7o#!)"y*@*(yؙGjΒ1Atf 8T  1U :ƸH;> M1j[e j;unq$ Qc!AwAP pe* p!`cre u 0ST F " B:Dʖ @ *{=5j x/ص` , uPJPW}@sElڦN9ܹS Q"-"_vGgmIW {JS{ Ln:Zwq$"e?# pPT0EJjoTSMPkhjd[xX$ 7Ft U eJpAy {:jv9B0b%0BA&NTLZ- rڰ)t2lP"c JЯ#U/e&{} ;4[b Q"P `8[I G4u(* 0KgZ\{Kˀ 52l1T"ѕ7]r*zN T}յK8Kɀ r0O0Jg{ :4 (s*-0sH+|WO:K_{4wbm³a&`ۃ j:$p(`PԚQ(րV`<䌭[{QA#" d){% IlU#h#kjp@u1 $!f( ,W 00ZoHBsf"<$<sW(*,.{0<4\ã!l:Z {B<Ĭ2gDL nHqZ MZ̫ + U[l̦%"VU|&m|P>P0ƏBQ|u,}<ɔlX,,oq袲]'Q1%\ɮaɪ 0 @,1[#`Sl8` oe&:;> P1=3v7z7A:Wp+- !ϡ<`\"2+-P^50GN ;Q-282`ls*ʰ cEl ~)%RA eh@" XVzG4>*4?-4A0 >o` `0)ѻh|һ%r x2*Ű='# FLϲB` R f}֍ b2I1G:0!` 74Y#ZS,bdP=#є$l0Z2ͧI);|"/%Fd`APTD0(PȄX >+'0f P Uh۾ vQ!$0`S^SZ"yp5:3Xtn.@e/x1Y ^Qa"o>fz;SI|U׆s]b?:(,:ۿ NdMr5  h!ap\)/oQcl:Un}82y@'pDs;9ԙ҂$l-Ԣ?ɤCWd{@lm1>R>}[a[ I@djC" BgBpĴlGfֻ AK@z$յ5T.d+V ~,Z~!yQN^^gĒ_@@+?s@TbuGx8p0E-bAlZ}U{:Vfѥ4³ylNL0 n0.[db@B1m#K` PT2gђy02W90T|fzLEN'- M~k]=TE>BG5] 0}I@ޘ t@0 lxa&!`" ff 9 1|P0 @l. c pS:1K{D %`wr?#@P1 п !('K.I *MD&` zPaJL2s@u T5axB/a~Պ ` LqO?Ţ5d o%ɝbNO߈ُ:_?|$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>M $=$&HF4hЅR؄]C0S kn7& 7 Q40@>ΐ.4@x ЎcAd{~.4`%0 3A #BAD0Zϰ@@@#C->$< 0<X P. ? تG׽#}puh` sAǀ. ~rC .ЃfVp*"\_=-ß;?  ĘO$4@@40BHS'5p]#Kא PЇF*D . 80@B$EŁD'2\P$?pp`q=B@$+ tp>6ϒ!]<I@ ?T:xhB=3L8#ɂ|rp@Po!@a@\H \2g Dd.y:RdȀ6NJZMx,(w 2o(B< p@rGeH>v1,Ry ") W@DbՇ[=0Ua E rgNu\=䱋%<1 #r0 LЧ.pEvtH!Vu@ˢu 㿞AL P+[_Չ"YRHj%b'ecFgK3 \6$p `$HTqW< x)E"aNC1J}FYe19py} cd:גf܀| nׅwՂ3.IK!g`N74J9Jk5zro"Zc/}#-!`xmL"/hvRpAO7 yg@ X^ZDi&߭0 P`8@إ0B*ZNi@]B@*u 09]:c?yi ߲u3Jַܶ{=0vMz46;h$>ݣK_L@"'(Y[< Q$v pEr'B5 wfl`R1 xi+ـ1r^W*$Kt'Pf=H0"Q s3 5K؄|>6b-%@@`0 u;e ]@UWx(p?SC -3# o$yAO(I*.0U%7}h(!p 2YFyH AqOQ IYVyXS\ٕ^`b9dYfyhjlٖnpr9tYvZ&/15bT3qy@q.~qf q$[9{[ٙ Ab5d02BDA T(epV/nUh#!9"›y'.`+Ȩ:ʹٜnbsB7 Tp!U9'fAp* b BB\V`aPЄ9ZtC2.PAAe XuX  'W74DE.p=`+'yz8_.P '1c/Q=EjxtU PEY" @fzhz <@a01+U5v\`m` ..f#U(@v' pDi:ǣ>S8"nP`Dul2 aNI exԔ ``ګC  IxNw9v7Nue: E]4 A0SI О5:jQ1ij: ]"@:\UhjC"q,ڗ.@rPV,U*1n`"T aY-f&pC;4[r \l&e8" Zt+ Pb-iZ\[ɰ @07R)%%L. 1$+zuQw tPյ;K8[= *C>h;5X y. uk`QGe4@> [ _Kx)&&Aa&CK 9$kh~QF:NUǃI ں{K[z""iqId< ?\F̺!<KD|PKq@/A Q$R^ܫ0G##<.!N!_n|B%\P -:Lo~ܖ<`fMU ,*%\ɖ[A-糌/'2/kyBɗ˲/$6 2B6D8P Ԙoc&:;B D:7|lV[ !ϱB /@"JK hB}%=#)>r ?Ro4uR"gpq =dm"GK~dU v3ǘ6TZ5Y0+BME¶fYZbwbI!p )+D/%6JIdmR:$OE_~=]2. jqS>Ep Xb]ֶ}\QEIp01~ZV 3о@ Zw7F 5Q6.vrEWQ rf)So<px;! I5XWi@jգݔ2zdU`.~Et@\*c \A`i$Zo9Dp \;g A0S'p$s;UK$d+ @hq654:KL{0p j[B`/ c u0SoAՉJi@Cr]_#Q`7 ,UUɆڗ>dHIK>ZĘ_(b5I u9tݴof0r13ez8\nKJ{TfnF7>~@։D^u㲴Mv$ #&t QvDs-NT BzV~PK TzP:, v{\b:|W85`D^G 106]B A yET} nx98 1+n~ 0f"'dƞc.5LBd6AY ց\,f%)q`p'*)l Yj? $0SÞ`cC Z+˜YRPyY3^ ީM?@<+.?#/F-nRnu "k5%Gdجo% zdGnʒ 2Mˎ?HP/h_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>;PR&XA.cQ4hЍ 娑>< N F)TV YX#>Á(0 Ih&QlIGqvdP&HFA~SH~[Sd!' $.ުA`A#Xl4p>Αx Bx3; =Ҁ;g'죍 5Pp# 0^+4k8: :Nc#xq'LЃ4(ϺN@X3Mx";Ĉ( Q9--4F 4?JôA>jv{SW-ՠԯ=XA4#l>_@j@x4:A:n0""Z "f.O2?l'P @7:M,[ <";C(@XA׬?B1$`X?!x!Zw N">60=BS@,I1y ?eVB@Ƀ}JXXo @(QeI(&P c`A~/Mdkѝ6J(,/! ]0z G |CP?0e#Uq T G$^2\Z"m X6Y#YO  1O<:tN 8$>~@ "̓TJ'@@]z&Vȃ𐆒"'[FĒ3OI R=Ӕ!: )d.]-wdFT" 867Z(lcx0`8U 0`|XxMP Gcv_> HT`"E54FWQ٩4F|`mͧ@&< D<C#zmc|"|y3TkP@?JBA'JN6a[UޑD#ԨlgKfW`>HA8@'d~@p%?H!:Okehc~F] $(K#FpYR,HІV1gh'+i""S@aGvK@D.B.? zH?kCaJ_z0,a8L5n=A;,kC @@VX#>&I"xĉ G(MH2@7 ؇ $պI kQ0fEusahif=Ӿ @TSE+Af^{s  c$KHP7<i'Yo{`;XA(b5DJH[ѥ/Df>A.x VQ CnxA0u`jx(˺Ώmapu__"x *ī@ 0j#x@BfA!pD0r*E5 bSl&7>b< 04L W+'X'='`D%t*@fBXV]P B9X`ptRHi;؃`Pc x;eb]Y었 0$$C8p-@"$o(А.n 5  Ј "95r('0I4Y6yNdBb0V+> x@8JL A 7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@aڱp $ЖcT CYy>b0AN)G#Ú0T)x`.0n7o#!)"by*@*=YyvGֵ1Qtl C W@SN3HA nà 0[ڠVS晊p٠{V$ Qc!Awf 'Zu Gh)W R 3E`40X*Jr@i<;HAh27Ex*q uPJPKBj7),< Q"-"ZuGg٦t Sye Ll:Gq$"e?#!`PT0&ڙ!a^HH4 &@zFQm xe5r> Ni@ V# aZpAy3zQz@#4 #0 ]"-d0u,yj'  ;0Z/YAq$0n`!2VaI߀Pfbl ۲.1 A P`8e!wB ڀ]@- T[V  [53!"1T"ѕ7@KzNtauS{|۷~2K<n0O0Jpa/ :4 .o+?w0>{YKx)&&6 f4=XPq@S@҆' !u `Upe<;;A#"a9{$ I)+1/ q0|X  TGzA cF q5 J p$"<1w$|(*,.|(2<4<5:଴;B!8G@ P1=3v7z7A:W@+- !ϡ<`\"+-0 #W[-+l5,!"VsĔ6Ӭ%=Љ;1VޗR-$<^x$`EowD#BBC `P?'D)X6Av'\`3 >z>?obzRP MXb/I.G50!` 74Y#Ub$=#є$f <%|*0K'Ym#JjA-m -Ns%Rj[E XZڮ=dQ!$  J;5Zqp6K3 EWQ3 UV 2F mW#1QSo ru%ȝh"2u{OR)mBXnP f5'נScm:&nͺxkTs;9䴷K]$wh`d<oNg B;@I  @I6$@H.@z&^JLMGg Pls-mUGR][3QM@BCcPphW Ǭ@>~BVĒ_ @+J@Tbu9tRy9pBbTy[^qce& ]a!wN܄in> Q®Fdb@R1mK PT3G}-Y5 (CU'iF!p^h '* XgQ1|M 9Wż> G5] 0 0}P  q$ X f &cfbpn|P0 GdVmȆ$؆#%"s\ f; `VP1߀@: !'%i.I̍ MD ]JL2J @H)6ҊM|? 4"?W-;4 ` ^/?Ȣ5b<)m! :ϽQBNOF؟`wPq?l?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>;PR&XA.cQ4hЍ >3O? N F)TV Y#<(0 Ih&QlIGqvdPB?d@ ,`堄jjy At biȐiď%AR$*PnћQt#<kEc@?ȳO*>&HFARH~[Sd!ҏ' $.ުApB#l4p>Αx Bx3; =Ҁ;g̓ 5ЏPp# 0^+4k8: :Nc#xq'LЃ4(ϺN@O 3M !;( Q9--4F 4?JôA>jv{SW-ՠԯ=XA4#l>_@j@x4:A:s0""b "f.O2?l'P @7:M,[ <";C(@A׬?B1%`?!~!Zw N"<40=BS@,Iy ?neXB@Ƀ}JXXo @(QeI(&P c`A~/Mdkѝ6J(N/!8 ]0z G BP?0e#Uq T G$^2\Z"m X6Y#YO  1O<:vtN 6$>~@ "̓TJ'@@]zVȃ"'[FĒ3OI  R=Ӕ!:)d.]-wdFT" 867Z(lc~0`8U 0`|xMP Gcv_>8 HT`"EM54FWQ٩4F|pmͧ@&< D<C#zm|"|y3TkP@?JB'JN6a[UޑD#ԨlgKfW`>HA8'du@p%?H!@?xeWxD 11䢯8RD- v1Kvbdגfc#>:]}G"N9u],D £ɂэ#?X^~WRA4< do}'L"x(0L"EE$D=݀ "<ʘlA,Dx>:Okeb~E] ((K#pYR,HȅV1gh'+i""S@aGvK@D.B.? zP?BaJ_z0,a8L5n=A;,lc @@VX#<&I"xĉ G(MH2@7  $պI kQ0fEusahif=Ӿ @TSE+Af^{s  c$KHP7<'Yo{`;XA(b5dcH[ѥ/Df>A.x VQ&CnxA0}`jx(˺Ώmapu__"x *ī@ 0j#x@BfA!pDr*E5 bSl&7>b< 0Ȧ4Lֳ W+'X'='`D%t*@fBXV]P B9`ptRHi;؃`7Pc x;eb]Y었 0$$C8p-@"$o(А.n 5  Ј "95r('0I4Y6yNdBb0V+> x@8JL A 7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@aڱp $ЖcT CYy>b0AN)G#Ú0T)x`.0n7o#!)"by*@*8=YyvGֵ1Qtl C W@SN3HA sà [VS晊p٠{V$ Qc!Aw 'Zu Gh)W R 3E`40*Jr@i<;H0Ah27Ex* uPJPK?Bj7),< Q"-"ZuGg٦t Sye Ll:Gq$"e?#!`PT0&ڙ!a^HH4 &@zFQm xe5r> Ni@ V# aZpAy3zQz@#4 #0 ]"-d0u,yj'  ;0Z/YAq$0n`!2VaI3Pf l ۲.1 A P`8!w B ]@- T[V  [ 53!"1T"ѕ7 H@zNtauS{|۷~2K< s0O0Jpa/ :4 .0o+?w0>{YKx)&&6 f4=Pq@S@҆' !u `Upe<;;aA#"a9{$ I)+1/ q0|  TGzA cF q5H c p$0"<1w$|(*,.|(2<4<5:଴;B!8G@ P1=3v7z7A:W@+- !ϡ<`\"+-0 #W[-+l5,!"XsĔ6Ӭ%=Љ;1VޗR-E $<^x$`EowD#BBC P?'D)6A1'\2`3 >z>?obzRP MXb/I.G50!` 74Y#Ub$=#є$f <%|*0K'Ym#JjA-m -Ns%Rj[E Zڮ=dQ!$ J;5 Zvp6K3 EWf Q3 UV 2F mW#1QSo r%ȝh"2u{OR)mB0XsP f 5'נScm:&nͺxkTs;9䴷K]$wh`d<oNg B;@I  @I6$@I.@z&^ JLMGg Pls-mUGR][3QM@BCcPphW Ǭ@>~BVĒ_ @+c@Tbu9tRy9pBbTy[^qce& ]a!wN܄is> Q®Fdb@R1mK PT3G}-7Y5 (CU'iF!p^h 0'* XgQ1|M 9Wż> G5] 0 0}P q$ X f &cfbpn|P0 GdVmȆ$؆#%"s^ f; `XP1 @:!'%i.I̍ MD ]JL2c @H)ҊM|? 4"W-;4  ^/?Ȣ5b<I_O bHP4)_/_l?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>;PR&XA.cQ4hЍ >3O? N F)TV Y#<(0 Ih&QlIGqvdPB?d@ ,`堄jjy At biȐiď%AR$*PnћQt#<kEc@?ȳO*>&HFARH~[Sd!ҏ' $.ުApB#l4p>Αx Bx3; =Ҁ;g̓ 5ЏPp# 0^+4k8: :Nc#xq'LЃ4(ϺN@O 3M !;( Q9--4F 4?JôA>jv{SW-ՠԯ=XA4#l>_@j@x4:A:s0""b "f.O2?l'P @7:M,[ <";C(@A׬?B1%`?!~!Zw N"<40=BS@,Iy ?neXB@Ƀ}JXXo @(QeI(&P c`A~/Mdkѝ6J(N/!8 ]0z G BP?0e#Uq T G$^2\Z"m X6Y#YO  1O<:vtN 6$>~@ "̓TJ'@@]zVȃ"'[FĒ3OI  R=Ӕ!:)d.]-wdFT" 867Z(lc~0`8U 0`|xMP Gcv_>8 HT`"EM54FWQ٩4F|pmͧ@&< D<C#zm|"|y3TkP@?JB'JN6a[UޑD#ԨlgKfW`>HA8'du@p%?H!@?xeWxD 11䢯8RD- v1Kvbdגfc#>:]}G"N9u],D £ɂэ#?X^~WRA4< do}'L"x(0L"EE$D=݀ "<ʘlA,Dx>:Okeb~E] ((K#pYR,HȅV1gh'+i""S@aGvK@D.B.? zP?BaJ_z0,a8L5n=A;,lc @@VX#<&I"xĉ G(MH2@7  $պI kQ0fEusahif=Ӿ @TSE+Af^{s  c$KHP7<'Yo{`;XA(b5dcH[ѥ/Df>A.x VQ&CnxA0}`jx(˺Ώmapu__"x *ī@ 0j#x@BfA!pDr*E5 bSl&7>b< 0Ȧ4Lֳ W+'X'='`D%t*@fBXV]P B9`ptRHi;؃`7Pc x;eb]Y었 0$$C8p-@"$o(А.n 5  Ј "95r('0I4Y6yNdBb0V+> x@8JL A 7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@aڱp $ЖcT CYy>b0AN)G#Ú0T)x`.0n7o#!)"by*@*8=YyvGֵ1Qtl C W@SN3HA sà [VS晊p٠{V$ Qc!Aw 'Zu Gh)W R 3E`40*Jr@i<;H0Ah27Ex* uPJPK?Bj7),< Q"-"ZuGg٦t Sye Ll:Gq$"e?#!`PT0&ڙ!a^HH4 &@zFQm xe5r> Ni@ V# aZpAy3zQz@#4 #0 ]"-d0u,yj'  ;0Z/YAq$0n`!2VaI3Pf l ۲.1 A P`8!w B ]@- T[V  [ 53!"1T"ѕ7 H@zNtauS{|۷~2K< s0O0Jpa/ :4 .0o+?w0>{YKx)&&6 f4=Pq@S@҆' !u `Upe<;;aA#"a9{$ I)+1/ q0|  TGzA cF q5H c p$0"<1w$|(*,.|(2<4<5:଴;B!8G@ P1=3v7z7A:W@+- !ϡ<`\"+-0 #W[-+l5,!"XsĔ6Ӭ%=Љ;1VޗR-E $<^x$`EowD#BBC P?'D)6A1'\2`3 >z>?obzRP MXb/I.G50!` 74Y#Ub$=#є$f <%|*0K'Ym#JjA-m -Ns%Rj[E Zڮ=dQ!$ J;5 Zvp6K3 EWf Q3 UV 2F mW#1QSo r%ȝh"2u{OR)mB0XsP f 5'נScm:&nͺxkTs;9䴷K]$wh`d<oNg B;@I  @I6$@I.@z&^ JLMGg Pls-mUGR][3QM@BCcPphW Ǭ@>~BVĒ_ @+c@Tbu9tRy9pBbTy[^qce& ]a!wN܄is> Q®Fdb@R1mK PT3G}-7Y5 (CU'iF!p^h 0'* XgQ1|M 9Wż> G5] 0 0}P q$ X f &cfbpn|P0 GdVmȆ$؆#%"s^ f; `XP1 @:!'%i.I̍ MD ]JL2c @H)ҊM|? 4"W-;4  ^/?Ȣ5b<I_O bHP4)_/_l?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>;PR&XA.cQ4hЍ >3O? N F)TV Y#<(0 Ih&QlIGqvdPB?d@ ,`堄jjy At biȐiď%AR$*PnћQt#<kEc@?ȳO*>&HFARH~[Sd!ҏ' $.ުApB#l4p>Αx Bx3; =Ҁ;g̓ 5ЏPp# 0^+4k8: :Nc#xq'LЃ4(ϺN@O 3M !;( Q9--4F 4?JôA>jv{SW-ՠԯ=XA4#l>_@j@x4:A:s0""b "f.O2?l'P @7:M,[ <";C(@A׬?B1%`?!~!Zw N"<40=BS@,Iy ?neXB@Ƀ}JXXo @(QeI(&P c`A~/Mdkѝ6J(N/!8 ]0z G BP?0e#Uq T G$^2\Z"m X6Y#YO  1O<:vtN 6$>~@ "̓TJ'@@]zVȃ"'[FĒ3OI  R=Ӕ!:)d.]-wdFT" 867Z(lc~0`8U 0`|xMP Gcv_>8 HT`"EM54FWQ٩4F|pmͧ@&< D<C#zm|"|y3TkP@?JB'JN6a[UޑD#ԨlgKfW`>HA8'du@p%?H!@?xeWxD 11䢯8RD- v1Kvbdגfc#>:]}G"N9u],D £ɂэ#?X^~WRA4< do}'L"x(0L"EE$D=݀ "<ʘlA,Dx>:Okeb~E] ((K#pYR,HȅV1gh'+i""S@aGvK@D.B.? zP?BaJ_z0,a8L5n=A;,lc @@VX#<&I"xĉ G(MH2@7  $պI kQ0fEusahif=Ӿ @TSE+Af^{s  c$KHP7<'Yo{`;XA(b5dcH[ѥ/Df>A.x VQ&CnxA0}`jx(˺Ώmapu__"x *ī@ 0j#x@BfA!pDr*E5 bSl&7>b< 0Ȧ4Lֳ W+'X'='`D%t*@fBXV]P B9`ptRHi;؃`7Pc x;eb]Y었 0$$C8p-@"$o(А.n 5  Ј "95r('0I4Y6yNdBb0V+> x@8JL A 7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@aڱp $ЖcT CYy>b0AN)G#Ú0T)x`.0n7o#!)"by*@*8=YyvGֵ1Qtl C W@SN3HA sà [VS晊p٠{V$ Qc!Aw 'Zu Gh)W R 3E`40*Jr@i<;H0Ah27Ex* uPJPK?Bj7),< Q"-"ZuGg٦t Sye Ll:Gq$"e?#!`PT0&ڙ!a^HH4 &@zFQm xe5r> Ni@ V# aZpAy3zQz@#4 #0 ]"-d0u,yj'  ;0Z/YAq$0n`!2VaI3Pf l ۲.1 A P`8!w B ]@- T[V  [ 53!"1T"ѕ7 H@zNtauS{|۷~2K< s0O0Jpa/ :4 .0o+?w0>{YKx)&&6 f4=Pq@S@҆' !u `Upe<;;aA#"a9{$ I)+1/ q0|  TGzA cF q5H c p$0"<1w$|(*,.|(2<4<5:଴;B!8G@ P1=3v7z7A:W@+- !ϡ<`\"+-0 #W[-+l5,!"XsĔ6Ӭ%=Љ;1VޗR-E $<^x$`EowD#BBC P?'D)6A1'\2`3 >z>?obzRP MXb/I.G50!` 74Y#Ub$=#є$f <%|*0K'Ym#JjA-m -Ns%Rj[E Zڮ=dQ!$ J;5 Zvp6K3 EWf Q3 UV 2F mW#1QSo r%ȝh"2u{OR)mB0XsP f 5'נScm:&nͺxkTs;9䴷K]$wh`d<oNg B;@I  @I6$@I.@z&^ JLMGg Pls-mUGR][3QM@BCcPphW Ǭ@>~BVĒ_ @+c@Tbu9tRy9pBbTy[^qce& ]a!wN܄is> Q®Fdb@R1mK PT3G}-7Y5 (CU'iF!p^h 0'* XgQ1|M 9Wż> G5] 0 0}P q$ X f &cfbpn|P0 GdVmȆ$؆#%"s^ f; `XP1 @:!'%i.I̍ MD ]JL2c @H)ҊM|? 4"W-;4  ^/?Ȣ5b<I_O bHP4)_/_l?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>;PR&XA.cQ4hЍ >3O? N F)TV Y#<(0 Ih&QlIGqvdPB?d@ ,`堄jjy At biȐiď%AR$*PnћQt#<kEc@?ȳO*>&HFARH~[Sd!ҏ' $.ުApB#l4p>Αx Bx3; =Ҁ;g̓ 5ЏPp# 0^+4k8: :Nc#xq'LЃ4(ϺN@O 3M !;( Q9--4F 4?JôA>jv{SW-ՠԯ=XA4#l>_@j@x4:A:s0""b "f.O2?l'P @7:M,[ <";C(@A׬?B1%`?!~!Zw N"<40=BS@,Iy ?neXB@Ƀ}JXXo @(QeI(&P c`A~/Mdkѝ6J(N/!8 ]0z G BP?0e#Uq T G$^2\Z"m X6Y#YO  1O<:vtN 6$>~@ "̓TJ'@@]zVȃ"'[FĒ3OI  R=Ӕ!:)d.]-wdFT" 867Z(lc~0`8U 0`|xMP Gcv_>8 HT`"EM54FWQ٩4F|pmͧ@&< D<C#zm|"|y3TkP@?JB'JN6a[UޑD#ԨlgKfW`>HA8'du@p%?H!@?xeWxD 11䢯8RD- v1Kvbdגfc#>:]}G"N9u],D £ɂэ#?X^~WRA4< do}'L"x(0L"EE$D=݀ "<ʘlA,Dx>:Okeb~E] ((K#pYR,HȅV1gh'+i""S@aGvK@D.B.? zP?BaJ_z0,a8L5n=A;,lc @@VX#<&I"xĉ G(MH2@7  $պI kQ0fEusahif=Ӿ @TSE+Af^{s  c$KHP7<'Yo{`;XA(b5dcH[ѥ/Df>A.x VQ&CnxA0}`jx(˺Ώmapu__"x *ī@ 0j#x@BfA!pDr*E5 bSl&7>b< 0Ȧ4Lֳ W+'X'='`D%t*@fBXV]P B9`ptRHi;؃`7Pc x;eb]Y었 0$$C8p-@"$o(А.n 5  Ј "95r('0I4Y6yNdBb0V+> x@8JL A 7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@aڱp $ЖcT CYy>b0AN)G#Ú0T)x`.0n7o#!)"by*@*8=YyvGֵ1Qtl C W@SN3HA sà [VS晊p٠{V$ Qc!Aw 'Zu Gh)W R 3E`40*Jr@i<;H0Ah27Ex* uPJPK?Bj7),< Q"-"ZuGg٦t Sye Ll:Gq$"e?#!`PT0&ڙ!a^HH4 &@zFQm xe5r> Ni@ V# aZpAy3zQz@#4 #0 ]"-d0u,yj'  ;0Z/YAq$0n`!2VaI3Pf l ۲.1 A P`8!w B ]@- T[V  [ 53!"1T"ѕ7 H@zNtauS{|۷~2K< s0O0Jpa/ :4 .0o+?w0>{YKx)&&6 f4=Pq@S@҆' !u `Upe<;;aA#"a9{$ I)+1/ q0|  TGzA cF q5H c p$0"<1w$|(*,.|(2<4<5:଴;B!8G@ P1=3v7z7A:W@+- !ϡ<`\"+-0 #W[-+l5,!"XsĔ6Ӭ%=Љ;1VޗR-E $<^x$`EowD#BBC P?'D)6A1'\2`3 >z>?obzRP MXb/I.G50!` 74Y#Ub$=#є$f <%|*0K'Ym#JjA-m -Ns%Rj[E Zڮ=dQ!$ J;5 Zvp6K3 EWf Q3 UV 2F mW#1QSo r%ȝh"2u{OR)mB0XsP f 5'נScm:&nͺxkTs;9䴷K]$wh`d<oNg B;@I  @I6$@I.@z&^ JLMGg Pls-mUGR][3QM@BCcPphW Ǭ@>~BVĒ_ @+c@Tbu9tRy9pBbTy[^qce& ]a!wN܄is> Q®Fdb@R1mK PT3G}-7Y5 (CU'iF!p^h 0'* XgQ1|M 9Wż> G5] 0 0}P q$ X f &cfbpn|P0 GdVmȆ$؆#%"s^ f; `XP1 @:!'%i.I̍ MD ]JL2c @H)ҊM|? 4"W-;4  ^/?Ȣ5b<I_O bHP4)_/_l?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>;PR&XA.cQ4hЍ >3O? N F)TV Y#<(0 Ih&QlIGqvdPB?d@ ,`堄jjy At biȐiď%AR$*PnћQt#<kEc@?ȳO*>&HFARH~[Sd!ҏ' $.ުApB#l4p>Αx Bx3; =Ҁ;g̓ 5ЏPp# 0^+4k8: :Nc#xq'LЃ4(ϺN@O 3M !;( Q9--4F 4?JôA>jv{SW-ՠԯ=XA4#l>_@j@x4:A:s0""b "f.O2?l'P @7:M,[ <";C(@A׬?B1%`?!~!Zw N"<40=BS@,Iy ?neXB@Ƀ}JXXo @(QeI(&P c`A~/Mdkѝ6J(N/!8 ]0z G BP?0e#Uq T G$^2\Z"m X6Y#YO  1O<:vtN 6$>~@ "̓TJ'@@]zVȃ"'[FĒ3OI  R=Ӕ!:)d.]-wdFT" 867Z(lc~0`8U 0`|xMP Gcv_>8 HT`"EM54FWQ٩4F|pmͧ@&< D<C#zm|"|y3TkP@?JB'JN6a[UޑD#ԨlgKfW`>HA8'du@p%?H!@?xeWxD 11䢯8RD- v1Kvbdגfc#>:]}G"N9u],D £ɂэ#?X^~WRA4< do}'L"x(0L"EE$D=݀ "<ʘlA,Dx>:Okeb~E] ((K#pYR,HȅV1gh'+i""S@aGvK@D.B.? zP?BaJ_z0,a8L5n=A;,lc @@VX#<&I"xĉ G(MH2@7  $պI kQ0fEusahif=Ӿ @TSE+Af^{s  c$KHP7<'Yo{`;XA(b5dcH[ѥ/Df>A.x VQ&CnxA0}`jx(˺Ώmapu__"x *ī@ 0j#x@BfA!pDr*E5 bSl&7>b< 0Ȧ4Lֳ W+'X'='`D%t*@fBXV]P B9`ptRHi;؃`7Pc x;eb]Y었 0$$C8p-@"$o(А.n 5  Ј "95r('0I4Y6yNdBb0V+> x@8JL A 7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@aڱp $ЖcT CYy>b0AN)G#Ú0T)x`.0n7o#!)"by*@*8=YyvGֵ1Qtl C W@SN3HA sà [VS晊p٠{V$ Qc!Aw 'Zu Gh)W R 3E`40*Jr@i<;H0Ah27Ex* uPJPK?Bj7),< Q"-"ZuGg٦t Sye Ll:Gq$"e?#!`PT0&ڙ!a^HH4 &@zFQm xe5r> Ni@ V# aZpAy3zQz@#4 #0 ]"-d0u,yj'  ;0Z/YAq$0n`!2VaI3Pf l ۲.1 A P`8!w B ]@- T[V  [ 53!"1T"ѕ7 H@zNtauS{|۷~2K< s0O0Jpa/ :4 .0o+?w0>{YKx)&&6 f4=Pq@S@҆' !u `Upe<;;aA#"a9{$ I)+1/ q0|  TGzA cF q5H c p$0"<1w$|(*,.|(2<4<5:଴;B!8G@ P1=3v7z7A:W@+- !ϡ<`\"+-0 #W[-+l5,!"XsĔ6Ӭ%=Љ;1VޗR-E $<^x$`EowD#BBC P?'D)6A1'\2`3 >z>?obzRP MXb/I.G50!` 74Y#Ub$=#є$f <%|*0K'Ym#JjA-m -Ns%Rj[E Zڮ=dQ!$ J;5 Zvp6K3 EWf Q3 UV 2F mW#1QSo r%ȝh"2u{OR)mB0XsP f 5'נScm:&nͺxkTs;9䴷K]$wh`d<oNg B;@I  @I6$@I.@z&^ JLMGg Pls-mUGR][3QM@BCcPphW Ǭ@>~BVĒ_ @+c@Tbu9tRy9pBbTy[^qce& ]a!wN܄is> Q®Fdb@R1mK PT3G}-7Y5 (CU'iF!p^h 0'* XgQ1|M 9Wż> G5] 0 0}P q$ X f &cfbpn|P0 GdVmȆ$؆#%"s^ f; `XP1 @:!'%i.I̍ MD ]JL2c @H)ҊM|? 4"W-;4  ^/?Ȣ5b<I_O bHP4)_/_l?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>;PR&XA.cQ4hЍ >3O? N F)TV Y#<(0 Ih&QlIGqvdPB?d@ ,`堄jjy At biȐiď%AR$*PnћQt#<kEc@?ȳO*>&HFARH~[Sd!ҏ' $.ުApB#l4p>Αx Bx3; =Ҁ;g̓ 5ЏPp# 0^+4k8: :Nc#xq'LЃ4(ϺN@O 3M !;( Q9--4F 4?JôA>jv{SW-ՠԯ=XA4#l>_@j@x4:A:s0""b "f.O2?l'P @7:M,[ <";C(@A׬?B1%`?!~!Zw N"<40=BS@,Iy ?neXB@Ƀ}JXXo @(QeI(&P c`A~/Mdkѝ6J(N/!8 ]0z G BP?0e#Uq T G$^2\Z"m X6Y#YO  1O<:vtN 6$>~@ "̓TJ'@@]zVȃ"'[FĒ3OI  R=Ӕ!:)d.]-wdFT" 867Z(lc~0`8U 0`|xMP Gcv_>8 HT`"EM54FWQ٩4F|pmͧ@&< D<C#zm|"|y3TkP@?JB'JN6a[UޑD#ԨlgKfW`>HA8'du@p%?H!@?xeWxD 11䢯8RD- v1Kvbdגfc#>:]}G"N9u],D £ɂэ#?X^~WRA4< do}'L"x(0L"EE$D=݀ "<ʘlA,Dx>:Okeb~E] ((K#pYR,HȅV1gh'+i""S@aGvK@D.B.? zP?BaJ_z0,a8L5n=A;,lc @@VX#<&I"xĉ G(MH2@7  $պI kQ0fEusahif=Ӿ @TSE+Af^{s  c$KHP7<'Yo{`;XA(b5dcH[ѥ/Df>A.x VQ&CnxA0}`jx(˺Ώmapu__"x *ī@ 0j#x@BfA!pDr*E5 bSl&7>b< 0Ȧ4Lֳ W+'X'='`D%t*@fBXV]P B9`ptRHi;؃`7Pc x;eb]Y었 0$$C8p-@"$o(А.n 5  Ј "95r('0I4Y6yNdBb0V+> x@8JL A 7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@aڱp $ЖcT CYy>b0AN)G#Ú0T)x`.0n7o#!)"by*@*8=YyvGֵ1Qtl C W@SN3HA sà [VS晊p٠{V$ Qc!Aw 'Zu Gh)W R 3E`40*Jr@i<;H0Ah27Ex* uPJPK?Bj7),< Q"-"ZuGg٦t Sye Ll:Gq$"e?#!`PT0&ڙ!a^HH4 &@zFQm xe5r> Ni@ V# aZpAy3zQz@#4 #0 ]"-d0u,yj'  ;0Z/YAq$0n`!2VaI3Pf l ۲.1 A P`8!w B ]@- T[V  [ 53!"1T"ѕ7 H@zNtauS{|۷~2K< s0O0Jpa/ :4 .0o+?w0>{YKx)&&6 f4=Pq@S@҆' !u `Upe<;;aA#"a9{$ I)+1/ q0|  TGzA cF q5H c p$0"<1w$|(*,.|(2<4<5:଴;B!8G@ P1=3v7z7A:W@+- !ϡ<`\"+-0 #W[-+l5,!"XsĔ6Ӭ%=Љ;1VޗR-E $<^x$`EowD#BBC P?'D)6A1'\2`3 >z>?obzRP MXb/I.G50!` 74Y#Ub$=#є$f <%|*0K'Ym#JjA-m -Ns%Rj[E Zڮ=dQ!$ J;5 Zvp6K3 EWf Q3 UV 2F mW#1QSo r%ȝh"2u{OR)mB0XsP f 5'נScm:&nͺxkTs;9䴷K]$wh`d<oNg B;@I  @I6$@I.@z&^ JLMGg Pls-mUGR][3QM@BCcPphW Ǭ@>~BVĒ_ @+c@Tbu9tRy9pBbTy[^qce& ]a!wN܄is> Q®Fdb@R1mK PT3G}-7Y5 (CU'iF!p^h 0'* XgQ1|M 9Wż> G5] 0 0}P q$ X f &cfbpn|P0 GdVmȆ$؆#%"s^ f; `XP1 @:!'%i.I̍ MD ]JL2c @H)ҊM|? 4"W-;4  ^/?Ȣ5b<I_O bHP4)_/_l?_$XA .dC%NXE5nG!E$YI)UdK1eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>yϑȷ.a>x"N%t`F#@>#G߅fᆳcC<XR A4.cQ4hЍ 娑?CO? N F)TV 0=A(O% Ih&QlIGqvdP@?l=,`堄jj_1Q At%" rKC:i?2I:Ѩ"ћ4!<kEc@?&H F#AQnY*E3 p-jP>PD9l/C#ϑ4x @xS>LpЀ<gO3]rB 3BAH Z:C d DB>TOO` a@? ,)d@3h< <`! 9AߌL61#T4:{;7A?=tO,tAtvkݞT d+'Ef@ n>#> N5x  B |2@>$<LЧ<4:L<  #@B{O/9 9a5=DW $! :ɣH=Mx_'eXL/p&E>ke`@"b@ }RRo_X !  },ԯh*QIU"x@*w ypKrV[9<*; ƈ1Wx Ѱ/6$ `Z{^8KKwTE (sb<͇!hD:t}jZbiҫ%Atd`+8(N_{ȃdBBx 2j=D`uЃXn@utү*uk zx Ga{8_ ֗^kS$&R- C. d 3 `jOp ( P bmVt "j%>3+g Y$H8)X=7cFD #*Ȃe怅0 Tg4 r8jx*3P Gp#"{ yfwR 4 p]JHXx0H0$?t-@B"ei!T Bs GB0 6BWuƈVP | Cr5 @@4p3@H?F$'&L#XPVgƘ>g+qtU#Ƥs @G.0BGW$ d4b#C@VŴT=/`y2P2p@BY@4p(JԔ&I9TYVyUeBa )^'@XjlY BA;$!vA"ٖz|ٗea~9Yy٘9Yy%!4.Rږ)k03)Љ <"v29Y>!"%YAVtT'uo`. 5V1G4 =)g>iyjۑ~ςH8 T `?N@S!sS4@ $r@\&(Ř02z`OĚ 'ݖ@k@+5 Ze0Gz| y@P@42`PO+3b: (d:4p  . u{!Rp:Y &Oں;KK 40@m fLv\z$xR 9Pŀ Q !gZ K` ؉ J}0I 2 Zua`|"!TaMK5-Ogf@v*ŽQ$ рp,|8a50 iTHr F|HLN<Rc7x71:V@5  &uK|/ B9dΖH88p MpSIfZ4O Vrk҃FQ5B%CcXNqVf`9 @e rqV !>y1$@4M `+2BwB 1SaA YͺM"3QZ рnQPB6~ =wW H`6V\Bgm}v]߷}WoBG'-AEa]ە(&P9  Q8~γAS> :;r%gbz`mM(Wtewi>W'RH۵G]ZQL@  lmS%#,v&xYb|krFeoVC@c4p^s! j̊z4Wf"].'0gz~^GsvfpMj`D y.?Cw%/q8 xWz7B`=`SY5 'J"]WfCdw~Ѯַ~V`D|soN_(^^bq]&Sл( Q+茞$Mjm&!"ЀfB_'T+P1HTY]߃Pbn r>LbB \4 ) "&PS0 p~#ȶ'3r%< "q/`[s5a>n\2x I &;7/A|%V50/WA .dСCO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>yϑȷ.a>x"N%t`F#@>#G߅fᆳcC<XR A4.cQ4hЍ 娑?CO? N F)TV 0=A(O% Ih&QlIGqvdP@?l=,`堄jj_1Q At%" rKC:i?2I:Ѩ"ћ4!<kEc@?&H F#AQnY*E3 p-jP>PD9l/C#ϑ4x @xS>LpЀ<gO3]rB 3BAH Z:C d DB>TOO` a@? ,)d@3h< <`! 9AߌL61#T4:{;7A?=tO,tAtvkݞT d+'Ef@ n>#> N5x  B |2@>$<LЧ<4:L<  #@B{O/9 9a5=DW $! :ɣH=Mx_'eXL/p&E>ke`@"b@ }RRo_X !  },ԯh*QIU"x@*w ypKrV[9<*; ƈ1Wx Ѱ/6$ `Z{^8KKwTE (sb<͇!hD:t}jZbiҫ%Atd`+8(N_{ȃdBBx 2j=D`uЃXn@utү*uk zx Ga{8_ ֗^kS$&R- C. d 3 `jOp ( P bmVt "j%>3+g Y$H8)X=7cFD #*Ȃe怅0 Tg4 r8jx*3P Gp#"{ yfwR 4 p]JHXx0H0$?t-@B"ei!T Bs GB0 6BWuƈVP | Cr5 @@4p3@H?F$'&L#XPVgƘ>g+qtU#Ƥs @G.0BGW$ d4b#C@VŴT=/`y2P2p@BY@4p(JԔ&I9TYVyUeBa )^'@XjlY BA;$!vA"ٖz|ٗea~9Yy٘9Yy%!4.Rږ)k03)Љ <"v29Y>!"%YAVtT'uo`. 5V1G4 =)g>iyjۑ~ςH8 T `?N@S!sS4@ $r@\&(Ř02z`OĚ 'ݖ@k@+5 Ze0Gz| y@P@42`PO+3b: (d:4p  . u{!Rp:Y &Oں;KK 40@m fLv\z$xR 9Pŀ Q !gZ K` ؉ J}0I 2 Zua`|"!TaMK5-Ogf@v*ŽQ$ рp,|8a50 iTHr F|HLN<Rc7x71:V@5  &uK|/ B9dΖH88p MpSIfZ4O Vrk҃FQ5B%CcXNqVf`9 @e rqV !>y1$@4M `+2BwB 1SaA YͺM"3QZ рnQPB6~ =wW H`6V\Bgm}v]߷}WoBG'-AEa]ە(&P9  Q8~γAS> :;r%gbz`mM(Wtewi>W'RH۵G]ZQL@  lmS%#,v&xYb|krFeoVC@c4p^s! j̊z4Wf"].'0gz~^GsvfpMj`D y.?Cw%/q8 xWz7B`=`SY5 'J"]WfCdw~Ѯַ~V`D|soN_(^^bq]&Sл( Q+茞$Mjm&!"ЀfB_'T+P1HTY]߃Pbn r>LbB \4 ) "&PS0 p~#ȶ'3r%< "q/`[s5a>n\2x I &;7/A|%V50/WA .dСCO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>yϑȷ.a>x"N%t`F#@>#G߅fᆳcC<XR A4.cQ4hЍ 娑?CO? N F)TV 0=A(O% Ih&QlIGqvdP@?l=,`堄jj_1Q At%" rKC:i?2I:Ѩ"ћ4!<kEc@?&H F#AQnY*E3 p-jP>PD9l/C#ϑ4x @xS>LpЀ<gO3]rB 3BAH Z:C d DB>TOO` a@? ,)d@3h< <`! 9AߌL61#T4:{;7A?=tO,tAtvkݞT d+'Ef@ n>#> N5x  B |2@>$<LЧ<4:L<  #@B{O/9 9a5=DW $! :ɣH=Mx_'eXL/p&E>ke`@"b@ }RRo_X !  },ԯh*QIU"x@*w ypKrV[9<*; ƈ1Wx Ѱ/6$ `Z{^8KKwTE (sb<͇!hD:t}jZbiҫ%Atd`+8(N_{ȃdBBx 2j=D`uЃXn@utү*uk zx Ga{8_ ֗^kS$&R- C. d 3 `jOp ( P bmVt "j%>3+g Y$H8)X=7cFD #*Ȃe怅0 Tg4 r8jx*3P Gp#"{ yfwR 4 p]JHXx0H0$?t-@B"ei!T Bs GB0 6BWuƈVP | Cr5 @@4p3@H?F$'&L#XPVgƘ>g+qtU#Ƥs @G.0BGW$ d4b#C@VŴT=/`y2P2p@BY@4p(JԔ&I9TYVyUeBa )^'@XjlY BA;$!vA"ٖz|ٗea~9Yy٘9Yy%!4.Rږ)k03)Љ <"v29Y>!"%YAVtT'uo`. 5V1G4 =)g>iyjۑ~ςH8 T `?N@S!sS4@ $r@\&(Ř02z`OĚ 'ݖ@k@+5 Ze0Gz| y@P@42`PO+3b: (d:4p  . u{!Rp:Y &Oں;KK 40@m fLv\z$xR 9Pŀ Q !gZ K` ؉ J}0I 2 Zua`|"!TaMK5-Ogf@v*ŽQ$ рp,|8a50 iTHr F|HLN<Rc7x71:V@5  &uK|/ B9dΖH88p MpSIfZ4O Vrk҃FQ5B%CcXNqVf`9 @e rqV !>y1$@4M `+2BwB 1SaA YͺM"3QZ рnQPB6~ =wW H`6V\Bgm}v]߷}WoBG'-AEa]ە(&P9  Q8~γAS> :;r%gbz`mM(Wtewi>W'RH۵G]ZQL@  lmS%#,v&xYb|krFeoVC@c4p^s! j̊z4Wf"].'0gz~^GsvfpMj`D y.?Cw%/q8 xWz7B`=`SY5 'J"]WfCdw~Ѯַ~V`D|soN_(^^bq]&Sл( Q+茞$Mjm&!"ЀfB_'T+P1HTY]߃Pbn r>LbB \4 ) "&PS0 p~#ȶ'3r%< "q/`[s5a>n\2x I &;7/A|%V50/WA .dСCO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>УKNHDv3|{Wi˟>}ϑH/a:{"N%t`FcA:#G߅fᆳSӂ>!T QXA-.cQ4hЍ ?O? N<3 F)TV Y#@>Á(c/ Ih&QlIGqvdPB?dO 0`堄jjyPA @t#iȐi%9AR$*PnћQ-!\kEs@?1ٸ&HFARH~[Sd!5ӏ'$$.ުABQ l4`?ϑ-x BxC?` Ѐ>w锰2-䃋 5ЏTpN  0P^+4k8=! =NB`A xq'L4 ϺRO%#)b(#ې? Q9--4F t:JôA>jv{SW-ՠԯ=XA4#l>_@z@x4:A@=o,""ZJ"fN2@:l' @7:M,[>C@60@C@,Iy D:XMeV聎B@}JXXo @(QeI(&P c`A~/Mdkѝ6JS*W/!^ ]04z G BPG:0e#Uq D ҄$^2Z"m 6Y#YO +h@ O;:ЂwtN $݁t@ "x̓8aT'@@]z9ܑV"'[FĒ3O E &R=Ӕ!:d.]-wdFT" 867Z(lc~,8U ,`|GMP Gcv_?^$ ZHL"Em54i+fYQj٩4Fmͧ@(`< D鈚;@ zml"y3TkP@?JBA'JN6a[ݡUޑD#ԨlgKfW`?ɐH@-A8@'}8p?H!@?zeWhA $ࢯ.RD-fULZ,ЀP2}iA'\6H$i?2ޗsaA&!hAx4Y5qLқWP*H`Xj]} 'L"x(,ͰL"eE1AD=Հ :ld??Z]gi,\uqA%C ȳ}( Y. HUr IZ]:`О dT#iXDdJVn WHO7[HM|4Tg\H ?1J1 ჈H""жIFζm'HǙݑ] |rڷtTa "~V`h%iqo8)a$KHP7<i'n{`;XA(b5 DHH[%/De>A.x VQ C.xA0S}L=/Th{Yoӱ- N`SDDxH:Fm٬;mBt`\R υ ~D ? iA`M/"@H6I ޏVK7%H/n 5  C"9$Y5r('2i6y8NdB00V+@ !`:LٔN@ A 7UYWOٕ^`\fyhjlٖnpr9tYvyxz|ٗ~@ss0Pa[9  ALrl* SYy>0@AN)G#Ú0T)xp. n7o#!)"by*-@*YyGjb1Atf 8T 1U:ŨH;1ih0 j;U ڠڗnq$ Qc!Aw,pe) @"@cr u 0SF " @B1 0 *{=5j x/ uPJPW}@sCjMڹS Q"-"_vGgmIy*SyꦓLl:Wq$"e?# `PT0EJjoTQMPk Hjdښ[vX# 7FFcJp4Ay~@ {jdt9B0B%BA&JpϪ,yj`p* ;0Jpe2Ya$ n`!2VNP |D >oPPfgGٰ02!$ e`Q1~/>SG+2 @t3{X!\!sHvC%2]y%R wZ4X@IG]Z۷~QH#Lځ2笛p8+|WO {K\{4Wbma&P j}:$o(4PjQ(V`<Ԍ;!A#" c){$ Iԑ;191bh k:ap@uԻۿ$!f ,W YoH He <s$\&|(*Ÿ,0ã,6|)>B2Q@A6@J\nFn Q|HV|<.lN!EQX|hl%"q<fv|k` `ܘ!+$aE|uǎȏxʒ:.'uaȐʬm  `16$0j6Xf3?c7x7|3p%"6e r* 2rEe2Vc2-Rl7GLi#ZRQ$1)ʭ|=[cEl ~)%RAeh@ XVzG4>`*4?-4A0t > )ͻhT |%o6`W D#+:w!5 .3%!%5Qd]jb1Y0G50!` 74Y#jb=#є$ig =%|*c`K'Ym#JjF-m$6:~-{n@ Uc +3|ŸH|cm]QRM[Q! J;5L% QZc?-Xtn@E-u1^Qa"ofz;SI5V WG*MQ0B,I<ˎD%-VqYMsS"V^վqce&Ma s#ʷtR7\o>]~,db@R1m!K PT2W}-02Wр90T|fz.VzzR#X'Q1MY .9W~5?<G_%P   p0Bx-6 f&bVap3~|P0hAGW PoH9Y"2(>a&`1"c>_ HH`C KRp^ DH;rD4i 00-KZ@HK^`ˀ +$ B3| ^ i8Y `08`BZ3KP,O $XA .4x  %N_:~5&G!E$YI)UdK1eΤYM9uOA%ZhVqFlv|ZUYnWaŎ%[YiuEzSΥ[]y_&Ljaĉ/fcȑ%O\}5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>УKNHDv3|{Wi˟>}ϑH/a:{"N%t`FcA:#G߅fᆳS>!T QXA.cQ4hЍ Q?< N?3 F)TV YV#@>Á(c/ Ih&QlIGqvdPg锰"䣍 5Tp$ 0P^+4k8=! =NB`$xq'L+s4ϺRO%V#`,"ې?h Q9--4F t:JôA>jv{SW-ՠԯ=XA4#l>_@j@x4:A@=o,"RJ"fN2@:l' @7:M,[@>C@?VxA׬<"]:&1% V@:!x!Zw G>60AB;@,I˸y D:XMeT0B@}JXXo @(QeI(&P c`A~/Mdkѝ6JS*+/! ]04z G BPG:0e#Uq < H$^2Z"m 6Y#YO * @ O;:wtN $݁t@ "̓8aT'@@]z9ܑV"'[FĒ3O` &R=Ӕ!: d.]-wdFT" 867Z(lcx,8U ,`|VMP Gcv_H?$  HL"Em54yfYQj٩4FXmͧ@(`< D鈚; $zm#߄"y3TkP@?JB3F'JN6a[ݡUޑD#ԨlgKfW`[?ɐH@A8@'}<p?H!rڷtTa "~T`h%iqo8)a$KHP7<i'n{`;XA(b51! DHH[%/De>A.x VQ C.xA.S}L=/Th{Yoӱ- N`SDDxH:Fm٬;mBt`mR Dž :x` ? iA`M/X!@H6I ޏVK7%H/n 5  "9$Y5r('2i6y8NdB00V+@ !`:LٔN@ A 7UYWOٕ^`\fyhjlٖnpr9tYvyxz|ٗ~@ss0Pa[9   Lrl* SYy>0@AN)G#Ú0T)x`. n7o#!)"by*@*YyGjb1Atf 8T 1U:ŨH;1ih0 j;U ڠڗnq$ Qc!Aw, pe) @"@cr u 0S F`" @B1 0 *{=5j x/ؕ uPJPW}@sCjMڹS Q"-"_vGgmI y*SyꦓLl:Wq$"e?# `PT0EJjoTQMPk Hjdښ[vX# 7FFcJp4Ay~@ {jdt9B0Bq+%BA&JpϪ,yj`p* ;0Jpe2Y$ n`!2VNP |D >oPPfgGٰ02!$ e`Q1+~/>SG+2 @t3{X!V\!sHvC%2]y%R wZ4X@IG]Z۷~Qa VH#Lځ2笛p8+V|WO {K\{4Wbma&Pcj}:$o(4PjQ(ڠVV`<Ԍ;!A#" c){$ Iԑ;191bh k:ap@uԻۿ$!f ,WYoH He <s$\&|(*Ÿ,0ã,6|)>B2Q@A6@J\nFn Q|HV|<.lN!EQX|hl%"q<fv|k` `ܘ!+$aE|uǎȏxʒ:.'uaȐʬm  `16$0j6Xfs3?c7x7|3p%"6e r* +2rEe2Vc2-RL7GLi#ZRAvob}г;1VĦR- $]x$`5owD#BBC P P?)IXм6A'{\`3 >ze?K42zRP р@EA5Qb=jb1Y0G50!` 74Y#jb=#є$i Ơ%|*c`K'Ym#JjE-ms$6:|-{ng@ Uc`+3|ŸH|aM=QRM[Q! J;5L% QZc?Xtn@E,u1^Qa"ofz;SI5V WG*MQ0B,I<ˌD%-VqWMsSm"V^վqce&Ma s#ʷtR7Zo>]꯾~,db@R1m!K PT27}-02Wр90T|fz,V|zzR#XQ1MW ,9W~3?:G_%.P+   p0Bx-6 f&bVap1~|P0hAGW Po(9Y"2H>a&`1"c[qΥ[]y_B\aĉ/fcȑ%Oe̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>УKNHDv3|{Wi˟>}ϑH/a:{"N%t`FcA:#G߅fᆳS>!T QXA.cQ4hЍ Q?< N?3 F)TV YV#@>Á(c/ Ih&QlIGqvdPg锰"䣍 5Tp$ 0P^+4k8=! =NB`$xq'L+s4ϺRO%V#`,"ې?h Q9--4F t:JôA>jv{SW-ՠԯ=XA4#l>_@j@x4:A@=o,"RJ"fN2@:l' @7:M,[@>C@?VxA׬<"]:&1% V@:!x!Zw G>60AB;@,I˸y D:XMeT0B@}JXXo @(QeI(&P c`A~/Mdkѝ6JS*+/! ]04z G BPG:0e#Uq < H$^2Z"m 6Y#YO * @ O;:wtN $݁t@ "̓8aT'@@]z9ܑV"'[FĒ3O` &R=Ӕ!: d.]-wdFT" 867Z(lcx,8U ,`|VMP Gcv_H?$  HL"Em54yfYQj٩4FXmͧ@(`< D鈚; $zm#߄"y3TkP@?JB3F'JN6a[ݡUޑD#ԨlgKfW`[?ɐH@A8@'}<p?H!rڷtTa "~T`h%iqo8)a$KHP7<i'n{`;XA(b51! DHH[%/De>A.x VQ C.xA.S}L=/Th{Yoӱ- N`SDDxH:Fm٬;mBt`mR Dž :x` ? iA`M/X!@H6I ޏVK7%H/n 5  "9$Y5r('2i6y8NdB00V+@ !`:LٔN@ A 7UYWOٕ^`\fyhjlٖnpr9tYvyxz|ٗ~@ss0Pa[9   Lrl* SYy>0@AN)G#Ú0T)x`. n7o#!)"by*@*YyGjb1Atf 8T 1U:ŨH;1ih0 j;U ڠڗnq$ Qc!Aw, pe) @"@cr u 0S F`" @B1 0 *{=5j x/ؕ uPJPW}@sCjMڹS Q"-"_vGgmI y*SyꦓLl:Wq$"e?# `PT0EJjoTQMPk Hjdښ[vX# 7FFcJp4Ay~@ {jdt9B0Bq+%BA&JpϪ,yj`p* ;0Jpe2Y$ n`!2VNP |D >oPPfgGٰ02!$ e`Q1+~/>SG+2 @t3{X!V\!sHvC%2]y%R wZ4X@IG]Z۷~Qa VH#Lځ2笛p8+V|WO {K\{4Wbma&Pcj}:$o(4PjQ(ڠVV`<Ԍ;!A#" c){$ Iԑ;191bh k:ap@uԻۿ$!f ,WYoH He <s$\&|(*Ÿ,0ã,6|)>B2Q@A6@J\nFn Q|HV|<.lN!EQX|hl%"q<fv|k` `ܘ!+$aE|uǎȏxʒ:.'uaȐʬm  `16$0j6Xfs3?c7x7|3p%"6e r* +2rEe2Vc2-RL7GLi#ZRAvob}г;1VĦR- $]x$`5owD#BBC P P?)IXм6A'{\`3 >ze?K42zRP р@EA5Qb=jb1Y0G50!` 74Y#jb=#є$i Ơ%|*c`K'Ym#JjE-ms$6:|-{ng@ Uc`+3|ŸH|aM=QRM[Q! J;5L% QZc?Xtn@E,u1^Qa"ofz;SI5V WG*MQ0B,I<ˌD%-VqWMsSm"V^վqce&Ma s#ʷtR7Zo>]꯾~,db@R1m!K PT27}-02Wр90T|fz,V|zzR#XQ1MW ,9W~3?:G_%.P+   p0Bx-6 f&bVap1~|P0hAGW Po(9Y"2H>a&`1"c[qΥ[]y_B\aĉ/fcȑ%Oe̙5ogСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>УKNHDv3|{Wi˟>}ϑH/a:{"N%t`FcA:#G߅fᆳS>!T QXA.cQ4hЍ Q?< N?3 F)TV YV#@>Á(c/ Ih&QlIGqvdPg锰"䣍 5Tp$ 0P^+4k8=! =NB`$xq'L+s4ϺRO%V#`,"ې?h Q9--4F t:JôA>jv{SW-ՠԯ=XA4#l>_@j@x4:A@=o,"RJ"fN2@:l' @7:M,[@>C@?VxA׬<"]:&1% V@:!x!Zw G>60AB;@,I˸y D:XMeT0B@}JXXo @(QeI(&P c`A~/Mdkѝ6JS*+/! ]04z G BPG:0e#Uq < H$^2Z"m 6Y#YO * @ O;:wtN $݁t@ "̓8aT'@@]z9ܑV"'[FĒ3O` &R=Ӕ!: d.]-wdFT" 867Z(lcx,8U ,`|VMP Gcv_H?$  HL"Em54yfYQj٩4FXmͧ@(`< D鈚; $zm#߄"y3TkP@?JB3F'JN6a[ݡUޑD#ԨlgKfW`[?ɐH@A8@'}<p?H!rڷtTa "~T`h%iqo8)a$KHP7<i'n{`;XA(b51! DHH[%/De>A.x VQ C.xA.S}L=/Th{Yoӱ- N`SDDxH:Fm٬;mBt`mR Dž :x` ? iA`M/X!@H6I ޏVK7%H/n 5  "9$Y5r('2i6y8NdB00V+@ !`:LٔN@ A 7UYWOٕ^`\fyhjlٖnpr9tYvyxz|ٗ~@ss0Pa[9   Lrl* SYy>0@AN)G#Ú0T)x`. n7o#!)"by*@*YyGjb1Atf 8T 1U:ŨH;1ih0 j;U ڠڗnq$ Qc!Aw, pe) @"@cr u 0S F`" @B1 0 *{=5j x/ؕ uPJPW}@sCjMڹS Q"-"_vGgmI y*SyꦓLl:Wq$"e?# `PT0EJjoTQMPk Hjdښ[vX# 7FFcJp4Ay~@ {jdt9B0Bq+%BA&JpϪ,yj`p* ;0Jpe2Y$ n`!2VNP |D >oPPfgGٰ02!$ e`Q1+~/>SG+2 @t3{X!V\!sHvC%2]y%R wZ4X@IG]Z۷~Qa VH#Lځ2笛p8+V|WO {K\{4Wbma&Pcj}:$o(4PjQ(ڠVV`<Ԍ;!A#" c){$ Iԑ;191bh k:ap@uԻۿ$!f ,WYoH He <s$\&|(*«,0ã,6|Á) >è2Q@AB@J̗nFn Q<HV|s<.lN!QQX|h%"qfv|N` `ܘ!+$aE<uǎ`wʒ:.'uaȐʬ,[  `16$0j6Xfs3?c7x7|3p%"6e r* +2rEe2Vc2-RL7GLi#ZRAvo ʭ|;cEl ~)%RA` eh@ XVzG4>`*4?-4A0t > )ͻhT |%o6`W D#+:w!5 .O3 T][ =d}; ]yTV r Ns5;K F3MI a ZͧI 0&|"/%6dfHؖ8P)IIRhײNJqwPE 0Vb1'qI ae=m(Q!$̛@s^sZ/p5:3 EW Q4P UV 2 lW1՞QSoE ruTŃ"2e{OT)M*f0u2YK]Xoff5'p)-o| :5f\0o Aly'pDs;9䴙=H5r F؃ے4}6ߝXhz 0- djC"0RgV@dGBf !@l~mGR][3QM@BCkfh<'~,jjB,g"Ē_@+H@Tbux8p0-bAlZ}U{ׯ:Vfr97|+N'uOp> U.UBv)$# Q@ E%sEwzBx##q% (mCE'hFp^ h'5}3ߔ3pz`>op5] 0}-P w s?h O@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>; ;S#F`0x2.Lȃ400tGI)"P:Ș T8Q? d4J34AQO]kvstum@YyD3AnG("lpmAH>tIuh@3K#<<#@jODH@o00hP= 9@.`Q>0G0 D G. ? ؂G׽#}PDPzh` Fǀ. ~ƀУ E.?cA2fV<p*"\<-=?  ĘO$4@@40BHS'5p\#Kא LFgD *82BEŁD'2Q$?Yppq=B@ 'w|F?6ϒ!\<I@?T:u<(L8#ɂ|rP@Po@a@UH \2g d.y:Rd6NJZMx,, w B/(B< Dp@rG%ae=r1,Ry0") WDbՇS=0UIa E r'gNu<"%;1 #r00LЧpE}st3`!6BĪPYԣ$bxu@U >AjeK:Q#K AD Q b̨lgKbW0"φ@1 bĩ# @1*x\=d}#\i!] #J(@@Ll _.uLZ,Ѐq̗7X:ZP%i)9 ,Cw R #Gw= qX_D `xx o}yt!(@εL"eȮ@0LPA0:=VV"m\ D@w@)xyZso0. GU IJC9ñd!-uDdR raZ`y'|X{u Z@φ["=ͺZcf m]jՁ-- PMj[/<&a@'mYD="Ɏ"Fa< 7 y :%mNNc5+GN"gDuK-a`Uj<ӾCc~"Y3аc-T7<)7>k[XϺW(cפc; J?:e$!r ̓ 2HA0 {;Q /-'v;;ς OJ`֕~/"7{V⃲ 8/yB }?p:0 0Er' >5 wf`lv`R1hi+1rp^W%'5dܠBWs@0L2b-%@?6 p`0q;eT]@U8(p?SC-3# VoP$ 06'03P5\X-ET$ْ.0S(p$5y}P'Pp 19DYF0 AMOّxTYVyX\ٕ^`b9dYfyhjlٖnpr9tYnUin1%bA;Lvy 0 fL -ٙCb5d02BDA T({V/mUh#!9"y'`+8ٜbs>7 Tp0 !U9'fAp s0b@BB[VPaZJ@j)`AAe XŅ Ch W4BEp=`+'xz8^'1c/A1jix" oPEY"- :ZfzES@a01+UuH m.uf# j(' rpDh:ǣ>S8"TnP`D#c2 aLI %x$ `0ګ  xJ9v6Nue:B]4 A0SH 6:jQAģ:]"@:\ZjC"BJ0 _sPV ۰,/U%1m`"TaY-158nf7>02!5Ɇl@^Q1 "c`Z )I( ]fa $3{XAr#K*&2 ]x\4 *qwtPե~K5[> sC>(;56y. +zs`QGe4@> { \4םbRmbD f*=P@3Ar aat8PUTr;[1 "nx g DJ ė=%h wBŔnfۿ'$ޛa [ `SoDƒѡ" ?o֌qR2pP#}' jϲby P G5~^ `7ܘ65_@!"T$i+v%|'rpKW'Y"m#K'HҖ8 )ϠC 4%㢠75 [Dr01wr }i}܈QEI0@A ~Z53# Zswգ`vrEWtQ#P pg2 WPQS p2x')CQL5 kcFc~0R0 p!ō">t<7\aspc \A@@&؞Cfշax0(3JrA-SNAV]93. oSӘ;X$l鰷&@ܠI% S/T b+\ph)3&ziT@V>9$5v3š\u`XUl=ydl 4 m>봞0EIl"V[3Tt9etto73Ck tK{GTfRn 6Y.@ _.>0q5ھj^>u$ #4 qM@T+W|L ǚao%WB'9p\`W%Xg1|ՍSs 2^KV|V+@! 106] y|H 0 j5X1RF>~ fb 'cb6.5LBcAY vTof%)p` f+G%0f0/ɱ@ Ij@ ?KRc@ދ=1i8; 6I;% "%% W%+$Pq3}0 3H7.a.5p  @D/^NL!Q:O@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>jv{SW-ՠԯ=XA4#l>@j@x4:A@q=0"ZQ#"f(?l'P @7:M,[@ =LK:C@XA׬?1%@X?!x8"Zw "#U<60MBS@2,Iy ?e`@"B@}JXXo @(QeI(&P c`A~/Mdkѝ6JS(,/!@ ] *z P BPQ?0e#Uq T ƒI$ XB")A@=ɂz$g\ |bGIs J`b&@@]z*XD>y3",H&d }Z4S𘂎S df,g9:[ȌEp lnD'JQ؄`2p.)"`d ʛ@ 6$8u`a[A?$* Lb@=P5 m8T [Q1*NyZ`%ȩ`Lc> dȓ@$C<L⫧?Ix"HT <>[:L"s% Q%aZVT juUzG2$KF#2lg\mgC tL @x@ ҏ<uu?;(ܡ>@@iiPY[A 2#o5=Cc fG:Ȕ>! Pސ$Hҭ-T*s h{AP-ݮѮs7] A_x͸CRimqLj[~iOܑ1C p.I?yJ!Fc2>&cJKt2T%1my;ޘM}< yF3fjnܡ93̀`λ r`|ȃ}C JV ̏@0aA[a tCŶַR? F YPA4]2CfI!`Er<@  w:1|2꽪 R㾾 &0<+B $ 6w dlbN!:6)_<"~& v_W@x8Ѭ $DR<#xȡ8NM;?0>A"zȒed`pg~d"e1`b q*00= po#^Jf$H z*= > r*@5 bk_(  4L֓ W W'=&`D%t*e@V|BP =90 tPXV9(4& =x<6 @A 6e\Yw0$$C~p-P"uo7r }ep$!pVL7OXWAqF$Ȱ52'] @0$8SD72 &Mkv 'pd0 &{b+LyĠ MhE =]E1HX@LH%xyܤ+P& b]S ɂ_2@ ؑ Z>L&r|O*y,029UdBU+: x @FyH<Fp{#u!!AJyXZV^`b9dYfyhjlٖnpr9tYvyxZCC!.Uc\鑗٘@a0f $ʖ]阞>8QN)G#cQ>ER,w0m:pv3qo2 ")"r !:Yq,@_v>U @ONar  UpU[YapPyuvG-2rw 0 [&t :FV@ = 0SX2dJ|y :aruHnfB6Aٰ02{!5je8%[ IG/Bڠ@-9V{XKA5.G!"Q"Е7]aIb`EvǯaXW@I]:]Y۷~Qa X O1/ :4r~9vHq2J w50> {[{4b"mrPa& s Q@†Pu : U #IM+K4"«ʸ I`o`#`hg k%lU P7ۿ :A ^ q5S H@$= ѱ v"\&|(*,'02<3|8A9@,!6E>Jtiv ҶNQ UL|Xp+c,Vhb)9[""-aZL!Oqj|xvƆBP\Lvǎ\'"ֆ .uQȡ ɬʰə 0 @,1#`s1Fj`Wf%4H3v7z7A:VP+-A !ϡ<`s\" 2n5!pe޲`"0HV0sŔ6Ѭ%bΪ];U7<$%ՉR30jhx|$P`}nxD#BBCS P?BFB')v\"`3>v>?2o}yvQP  V&l`0^KTG0!\ 7 zY#hb=#є$h/ Ơ%|*cܩK@|"/%6dHӖ8 P)B$x Fzzxn4 UcpaCH^-ȂQQMZA ~Z5+L%w1Zc?Xp%5X@ Q0 UU 2fhW,Sk n&ZWex*"QWL ;^ ^FERW %r5rP |ff\a2MFK(2\n ky`'ps69Tf8qڠ024 M387d^z pj[SB XP1X@dl&z bV@&Ay$Ե5T.44Fuځ^|W͢7N|3fꮎ,C,I<WRp7MoR~] ] Zվ1q_e&j]q+?Jע'kr> >S 1~!`L@B12m Ke@rCGzx#m%(]>E'dF! d5`zx~5}4SlJ<X5]b ϕ   6 p V0vdVP1،v>_Q`^ ϒDH;@9I % "%%8,P YI^0 +$0qB#0 3S~\/,KaOZKO8#XA .dذ~NXbu/nHCG!E$YI)UdK1eΤYM9uOA%ZєA QS UYnWaŎ%[Yiծ QٌoVe[]y_&\0[/fcȑ%O\exegСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>jv{SW-ՠԯ=XA4#l>@j@x4:A@q=0"ZQ#"f(?l'P @7:M,[@ =LK:C@XA׬?1%@X?!x8"Zw "#U<60MBS@2,Iy ?e`@"B@}JXXo @(QeI(&P c`A~/Mdkѝ6JS(,/!@ ] *z P BPQ?0e#Uq T ƒI$ XB")A@=ɂz$g\ |bGIs J`b&@@]z*XD>y3",H&d }Z4S𘂎S df,g9:[ȌEp lnD'JQ؄`2p.)"`d ʛ@ 6$8u`a[A?$* Lb@=P5 m8T [Q1*NyZ`%ȩ`Lc> dȓ@$C<L⫧?Ix"HT <>[:L"s% Q%aZVT juUzG2$KF#2lg\mgC tL @x@ ҏ<uu?;(ܡ>@@iiPY[A 2#o5=Cc fG:Ȕ>! Pސ$Hҭ-T*s h{AP-ݮѮs7] A_x͸CRimqLj[~iOܑ1C p.I?yJ!Fc2>&cJKt2T%1my;ޘM}< yF3fjnܡ93̀`λ r`|ȃ}C JV ̏@0aA[a tCŶַR? F YPA4]2CfI!`Er<@  w:1|2꽪 R㾾 &0<+B $ 6w dlbN!:6)_<"~& v_W@x8Ѭ $DR<#xȡ8NM;?0>A"zȒed`pg~d"e1`b q*00= po#^Jf$H z*= > r*@5 bk_(  4L֓ W W'=&`D%t*e@V|BP =90 tPXV9(4& =x<6 @A 6e\Yw0$$C~p-P"uo7r }ep$!pVL7OXWAqF$Ȱ52'] @0$8SD72 &Mkv 'pd0 &{b+LyĠ MhE =]E1HX@LH%xyܤ+P& b]S ɂ_2@ ؑ Z>L&r|O*y,029UdBU+: x @FyH<Fp{#u!!AJyXZV^`b9dYfyhjlٖnpr9tYvyxZCC!.Uc\鑗٘@a0f $ʖ]阞>8QN)G#cQ>ER,w0m:pv3qo2 ")"r !:Yq,@_v>U @ONar  UpU[YapPyuvG-2rw 0 [&t :FV@ = 0SX2dJ|y :aruHnfB6Aٰ02{!5je8%[ IG/Bڠ@-9V{XKA5.G!"Q"Е7]aIb`EvǯaXW@I]:]Y۷~Qa X O1/ :4r~9vHq2J w50> {[{4b"mrPa& s Q@†Pu : U #IM+K4"«ʸ I`o`#`hg k%lU P7ۿ :A ^ q5S H@$= ѱ v"\&|(*,'02<3|8A9@,!6E>Jtiv ҶNQ UL|Xp+c,Vhb)9[""-aZL!Oqj|xvƆBP\Lvǎ\'"ֆ .uQȡ ɬʰə 0 @,1#`s1Fj`Wf%4H3v7z7A:VP+-A !ϡ<`s\" 2n5!pe޲`"0HV0sŔ6Ѭ%bΪ];U7<$%ՉR30jhx|$P`}nxD#BBCS P?BFB')v\"`3>v>?2o}yvQP  V&l`0^KTG0!\ 7 zY#hb=#є$h/ Ơ%|*cܩK@|"/%6dHӖ8 P)B$x Fzzxn4 UcpaCH^-ȂQQMZA ~Z5+L%w1Zc?Xp%5X@ Q0 UU 2fhW,Sk n&ZWex*"QWL ;^ ^FERW %r5rP |ff\a2MFK(2\n ky`'ps69Tf8qڠ024 M387d^z pj[SB XP1X@dl&z bV@&Ay$Ե5T.44Fuځ^|W͢7N|3fꮎ,C,I<WRp7MoR~] ] Zվ1q_e&j]q+?Jע'kr> >S 1~!`L@B12m Ke@rCGzx#m%(]>E'dF! d5`zx~5}4SlJ<X5]b ϕ   6 p V0vdVP1،v>_Q`^ ϒDH;@9I % "%%8,P YI^0 +$0qB#0 3S~\/,KaOZKO8#XA .dذ~NXbu/nHCG!E$YI)UdK1eΤYM9uOA%ZєA QS UYnWaŎ%[Yiծ QٌoVe[]y_&\0[/fcȑ%O\exegСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>jv{SW-ՠԯ=XA4#l>@j@x4:A@q=0"ZQ#"f(?l'P @7:M,[@ =LK:C@XA׬?1%@X?!x8"Zw "#U<60MBS@2,Iy ?e`@"B@}JXXo @(QeI(&P c`A~/Mdkѝ6JS(,/!@ ] *z P BPQ?0e#Uq T ƒI$ XB")A@=ɂz$g\ |bGIs J`b&@@]z*XD>y3",H&d }Z4S𘂎S df,g9:[ȌEp lnD'JQ؄`2p.)"`d ʛ@ 6$8u`a[A?$* Lb@=P5 m8T [Q1*NyZ`%ȩ`Lc> dȓ@$C<L⫧?Ix"HT <>[:L"s% Q%aZVT juUzG2$KF#2lg\mgC tL @x@ ҏ<uu?;(ܡ>@@iiPY[A 2#o5=Cc fG:Ȕ>! Pސ$Hҭ-T*s h{AP-ݮѮs7] A_x͸CRimqLj[~iOܑ1C p.I?yJ!Fc2>&cJKt2T%1my;ޘM}< yF3fjnܡ93̀`λ r`|ȃ}C JV ̏@0aA[a tCŶַR? F YPA4]2CfI!`Er<@  w:1|2꽪 R㾾 &0<+B $ 6w dlbN!:6)_<"~& v_W@x8Ѭ $DR<#xȡ8NM;?0>A"zȒed`pg~d"e1`b q*00= po#^Jf$H z*= > r*@5 bk_(  4L֓ W W'=&`D%t*e@V|BP =90 tPXV9(4& =x<6 @A 6e\Yw0$$C~p-P"uo7r }ep$!pVL7OXWAqF$Ȱ52'] @0$8SD72 &Mkv 'pd0 &{b+LyĠ MhE =]E1HX@LH%xyܤ+P& b]S ɂ_2@ ؑ Z>L&r|O*y,029UdBU+: x @FyH<Fp{#u!!AJyXZV^`b9dYfyhjlٖnpr9tYvyxZCC!.Uc\鑗٘@a0f $ʖ]阞>8QN)G#cQ>ER,w0m:pv3qo2 ")"r !:Yq,@_v>U @ONar  UpU[YapPyuvG-2rw 0 [&t :FV@ = 0SX2dJ|y :aruHnfB6Aٰ02{!5je8%[ IG/Bڠ@-9V{XKA5.G!"Q"Е7]aIb`EvǯaXW@I]:]Y۷~Qa X O1/ :4r~9vHq2J w50> {[{4b"mrPa& s Q@†Pu : U #IM+K4"«ʸ I`o`#`hg k%lU P7ۿ :A ^ q5S H@$= ѱ v"\&|(*,'02<3|8A9@,!6E>Jtiv ҶNQ UL|Xp+c,Vhb)9[""-aZL!Oqj|xvƆBP\Lvǎ\'"ֆ .uQȡ ɬʰə 0 @,1#`s1Fj`Wf%4H3v7z7A:VP+-A !ϡ<`s\" 2n5!pe޲`"0HV0sŔ6Ѭ%bΪ];U7<$%ՉR30jhx|$P`}nxD#BBCS P?BFB')v\"`3>v>?2o}yvQP  V&l`0^KTG0!\ 7 zY#hb=#є$h/ Ơ%|*cܩK@|"/%6dHӖ8 P)B$x Fzzxn4 UcpaCH^-ȂQQMZA ~Z5+L%w1Zc?Xp%5X@ Q0 UU 2fhW,Sk n&ZWex*"QWL ;^ ^FERW %r5rP |ff\a2MFK(2\n ky`'ps69Tf8qڠ024 M387d^z pj[SB XP1X@dl&z bV@&Ay$Ե5T.44Fuځ^|W͢7N|3fꮎ,C,I<WRp7MoR~] ] Zվ1q_e&j]q+?Jע'kr> >S 1~!`L@B12m Ke@rCGzx#m%(]>E'dF! d5`zx~5}4SlJ<X5]b ϕ   6 p V0vdVP1،v>_Q`^ ϒDH;@9I % "%%8,P YI^0 +$0qB#0 3S~\/,KaOZKO8#XA .dذ~NXbu/nHCG!E$YI)UdK1eΤYM9uOA%ZєA QS UYnWaŎ%[Yiծ QٌoVe[]y_&\0[/fcȑ%O\exegСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>jv{SW-ՠԯ=XA4#l>@j@x4:A@q=0"ZQ#"f(?l'P @7:M,[@ =LK:C@XA׬?1%@X?!x8"Zw "#U<60MBS@2,Iy ?e`@"B@}JXXo @(QeI(&P c`A~/Mdkѝ6JS(,/!@ ] *z P BPQ?0e#Uq T ƒI$ XB")A@=ɂz$g\ |bGIs J`b&@@]z*XD>y3",H&d }Z4S𘂎S df,g9:[ȌEp lnD'JQ؄`2p.)"`d ʛ@ 6$8u`a[A?$* Lb@=P5 m8T [Q1*NyZ`%ȩ`Lc> dȓ@$C<L⫧?Ix"HT <>[:L"s% Q%aZVT juUzG2$KF#2lg\mgC tL @x@ ҏ<uu?;(ܡ>@@iiPY[A 2#o5=Cc fG:Ȕ>! Pސ$Hҭ-T*s h{AP-ݮѮs7] A_x͸CRimqLj[~iOܑ1C p.I?yJ!Fc2>&cJKt2T%1my;ޘM}< yF3fjnܡ93̀`λ r`|ȃ}C JV ̏@0aA[a tCŶַR? F YPA4]2CfI!`Er<@  w:1|2꽪 R㾾 &0<+B $ 6w dlbN!:6)_<"~& v_W@x8Ѭ $DR<#xȡ8NM;?0>A"zȒed`pg~d"e1`b q*00= po#^Jf$H z*= > r*@5 bk_(  4L֓ W W'=&`D%t*e@V|BP =90 tPXV9(4& =x<6 @A 6e\Yw0$$C~p-P"uo7r }ep$!pVL7OXWAqF$Ȱ52'] @0$8SD72 &Mkv 'pd0 &{b+LyĠ MhE =]E1HX@LH%xyܤ+P& b]S ɂ_2@ ؑ Z>L&r|O*y,029UdBU+: x @FyH<Fp{#u!!AJyXZV^`b9dYfyhjlٖnpr9tYvyxZCC!.Uc\鑗٘@a0f $ʖ]阞>8QN)G#cQ>ER,w0m:pv3qo2 ")"r !:Yq,@_v>U @ONar  UpU[YapPyuvG-2rw 0 [&t :FV@ = 0SX2dJ|y :aruHnfB6Aٰ02{!5je8%[ IG/Bڠ@-9V{XKA5.G!"Q"Е7]aIb`EvǯaXW@I]:]Y۷~Qa X O1/ :4r~9vHq2J w50> {[{4b"mrPa& s Q@†Pu : U #IM+K4"«ʸ I`o`#`hg k%lU P7ۿ :A ^ q5S H@$= ѱ v"\&|(*,'02<3|8A9@,!6E>Jtiv ҶNQ UL|Xp+c,Vhb)9[""-aZL!Oqj|xvƆBP\Lvǎ\'"ֆ .uQȡ ɬʰə 0 @,1#`s1Fj`Wf%4H3v7z7A:VP+-A !ϡ<`s\" 2n5!pe޲`"0HV0sŔ6Ѭ%bΪ];U7<$%ՉR30jhx|$P`}nxD#BBCS P?BFB')v\"`3>v>?2o}yvQP  V&l`0^KTG0!\ 7 zY#hb=#є$h/ Ơ%|*cܩK@|"/%6dHӖ8 P)B$x Fzzxn4 UcpaCH^-ȂQQMZA ~Z5+L%w1Zc?Xp%5X@ Q0 UU 2fhW,Sk n&ZWex*"QWL ;^ ^FERW %r5rP |ff\a2MFK(2\n ky`'ps69Tf8qڠ024 M387d^z pj[SB XP1X@dl&z bV@&Ay$Ե5T.44Fuځ^|W͢7N|3fꮎ,C,I<WRp7MoR~] ] Zվ1q_e&j]q+?Jע'kr> >S 1~!`L@B12m Ke@rCGzx#m%(]>E'dF! d5`zx~5}4SlJ<X5]b ϕ   6 p V0vdVP1،v>_Q`^ ϒDH;@9I % "%%8,P YI^0 +$0qB#0 3S~\/,KaOZKO8#XA .dذ~NXbu/nHCG!E$YI)UdK1eΤYM9uOA%ZєA QS UYnWaŎ%[Yiծ QٌoVe[]y_&\0[/fcȑ%O\exegСE&]iԩUfkرeϦ]mܹuo'^qɕ/gsѥO^uٵowŏ'_yկg{ϧ_}p@ 4@TpAtA#pB +B 3pC;CCqDK4DSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG>#G߅fᆳC;3;!P&\Aè.cQ4hЍ >S: N#F)TV #@=(N/ Ih&QlIGqvdP:h ,`堄jjyTA $At biȐi%I`R$*Pnћt#kEc:ȳ-;&HFAbH~[Sd!ɠ' $.ުApB0ȁl0p>Αx Bx3; À;g0*ԓ 1Pt0 0^+4k8B;! N;NͲs0xq'L/cA0(ϺN0/3JЎ";( Q9--4F t>JôA>jv{SW-ՠԯ=XA4#l>_@j@x0:Aq;v4"b "f.O20@>l' @7:M,_@ * ;C(@A׬ ]>0%@>u!Zw @بG=80 CS@,Icy E>eX0B@Ƀ}JXXo @(QeI(&P c`A~/Mdkѝ6JS(N/!@8 ](z G BPG>0e#Uq T@ a$^2Z"m h6Y#YO 7 O<20 ~tN 8$偾|@ "̓8DTJ'@@ ]zSG0lcꠂ '[FĒ3O R=ӔԱ!:K)d.]-wdFT" 867Z(lsu4`8U 4`|xMP PGSvc_>8 UHT"E5\4'fYQ٩4Fvpmͧ@&Ў< $<: C0zmC"vly3TkP@?JBU3 JN6a[UޑD#ԨlgKfW2`>ɐDA8 Α~Hp)ԡ?H!:W K䢯8RD-fɏULZ.q2} \6H$թ:2ޗsY !hAx4Y5q̇қʃWP*H`Xj]} 'L"x(4@2L"E!ea=݀ "<Ҙ,d?>Z]gi,\OusA%̣ȳe~$ Y. HUr E Z]>VО dT#iXDdJVn WO7[H͇d0yJT\D ?1J1 ჈H" 6!Fζm'HpǙpXz<^G1QAd0qA1 "IrUb(s`!">A.x VQ&CxA,0 |C`jxHCzmapu__"x *ī@ 0j#x@@f=!h{ƒ I7VoթPH I;{zOBH~D;\)E>0>Q" `pg0 o*O9JTvpB3ӣFJA fl&$XxlC@(@t[q* 6fN.P0xl]M$`=~rusFTBrcVe'(t FGSXpcpWPcԀ0B|;u+]Y׈ 0$$Chp-@$o)1n 5  C$Y&y5r(ђ'!48:NdB+0V+B x!<ٔNPA! 7WYYQ`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@aðڡp $0yp䴘r42yiCRwm:`v3V1""/ٜ2 v !:yؙکq,D`oC @SNs̈ v0ؠ[VSيvG-5|  '_ :F W@ R3E`40*Jr:DZmx*"SQ5`bbEVGţaR>`X# vf 5')0o :5f\0o Aly'}kDs;9OJn :-oNg3` a&`xZb6*` Bq 0 HH  !5'&ɓn_zhPG`?/ 3E ["S-40S>(OF0d|i8^$paz6tثC> 3O|cM˂+A`ɷab$B>N6Ÿ!e ]y_&\aĉ/fcȑ%O\e̙5ogСE&]Z^L}r5_g;mܹuo'^qɕB+rٵowŏ'_oF!_} 08O@TpAtA#pB +l> 3pC;CCqDDSTqE[tEcqFkFsqG{G rH"4H$TrI&tI(rJ*J,rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC><224ffd ~~|PP`*0(^d`tntLF@x\DFP::P<<4H:HxNt\BH@0@@ ̆~x<6< XPXȸx$Ė|p|¸ĸ||`tv`&4LTT@X@XPXXĮ຾p|| FZPરNZtԴNf@6<<ĸĬx..8p@tLDPH@h4,8P@ `Z:.(2.LĚ0.8"<| 0&.8("Hb\` Ą$.(6:(x0`ʔh\`ԺxbdpnfHĤdRl~`ZTbP,", 0.ltf䮜0@pfpΰxnf`|vlttprl̜ `|zpzfhd\tblhbh&:0~0:DbxtvrxnVvVlrvx0 <.DFJ@pnpttl4rrt¾ĖFFD ľFF#G߅fᆳS>3;TR Q`A.cQ4hЍ >3< N3 F)TV #&HFANAH~[Sd!&$$.ުA|C0܀lP4`>Αx @x3; Ӏ;wJ# 5OT|0 0P^+4k8: :Nc0xq'LC4(ϺNN,#MT;LP9--4F t>JôA>jv{SW-ՠԯ=XA4#l>@z@x4:A:,"""f.O@>l'X @7:M,c h? ;C(@ߐA׬#]>F1gX`@>x!Zw Nb<80 CS@,IyE>MeX@"B@Ƀ}JXXo @(QeI(&P c`A~/Mdkѝ6J*o/! ]H0*4z ҁ LAPG>0e#Uq T@ ƒa$ D"iI:ɂz 7w) |䡁asل )J7`ab&@@]z8䑏V#D>y3",H&I }Z4S𨂎S df,g9:[ȌEp* lnD'JQ؄X6p.="X" $ʛ@608||c[I@>" c:P18T [ԁQ- *NyZtgt%ȩ`Lc7> dȓ@"CÐ< 㫧V>ax"H8=L<5:ԁ (Tx?*AԲR hU7; Y0`lgKl>bc0oZuHp/?~y1v4%HXGtgU E&AkL8^%  -7au.BњBV ysW -@ "¿GHnZ{|4 ExXX@ ;I!H$8 9jQ {|"N;  0b!0t !V]VYDtZ+D u8`HG7) @E"%AJdc@|ghi,A֌T1UHGw;:Ra$]E(m]#38;#0ȩw8ulǟiiЂ` "Z*-m@.Mj[/ <fy,a q.IYuy1Fc2H:1cJ;Dt|T%1my;@@}< y6>fjn$9SQ̀`λ j`t̃}ˇ-qCu hJV ,<0.< 7Hvo0]!nx*|κַuPR !k 5H␶VK>bl>="%\4!vk z(%HA|:\G6I ֏!VKO7x@&U K' @sAN1@b A*D00= po #\`f$qza* = > Dr*`@5 `bk&1>b< Ѐ4L3W W'=*e>V]"=9Ð tF@7(9( =`x96 @A( 6]YWx0$$C ~p-Puo7r {sGxWG2B fI7RTAъF$520'@u<΀ 4 C3E$z#sb4f@|Dði,& W` b4֠V%\D ĄTr0Ms0`D .E;0>(d*ؐ 5  ّ5^,Q('J, 029NadBU+: `x:@FyH8QN)G#c >ER,g m:@v3qo2 ")"r !sh,@_iS S T:HH;0~ 1d %,yxvG-O/qg0bU P!c4n% `? 0S4 FJ'8:*31 Г Q*z]Ԡx/ص `JJKKpa;:dZGɠiS 3P"-"VuGbW|gVt0RsjHUߠ Cdڨj~=GQn0ҝ!@ kKzn$Z/'fDK$ p:Z<l 9l# 7q4WR9R[.PT S `ڭ*Qzচ#4 #0 ]-c+%EBZ/-`{  K,J>, am`!U`YSSp#@nXf&sl ۲. X ^Q1"pG,{D**!H+ :R0;T[Ѱ!\rHv"+2]yS\4 UPEu7aWa@ID]V|۷!a *O! :4b .m{(I qWs~[{Qb2mrPa&c q@s@0at"> U #IL+K4" 3+I~Mֵ;1/06q~{a^pJO7 A \{q5U0q@$? |ѡv <$\&|(*<'.0< 1\6,B7>̖!4 CALC@ef?Ռ:U;U7<$ՉR jBdg@WG4> *4?-4A0 > `SX0D''F\"`36Ւ{?2oQmyuQP0aV# `ﰛP59Ӣ=6GTG40!\ 75rKK F`3MIR` a ZϧI ͝$'Y"m#Jqju-$m-NaU]-6qN>SPE I-044 oQdB@ 0 $ cM ցQQM[Q}Z5+͠%pwid?ðXp%5` Q.s# UU 2hW#,Sk5n&&U7x*"Q4ˇ\ \&EQW b ,IN<zr5ˇrzf 5&*':o :/f\n۶ ky`ps69$8HqFJ(4A 3r`X.>S@eU {  ` ?@I%; ɠ.pa Tlyof{R 4hGR][PI@BCcPhw Jj|3^:ؐ8'B@8$_ĒD_@+{5?%-QGSI`o6p bUf0gNSTg&15$f5 uU&l?_L@B1"mKd @r7zw#㬊,(Ƚ>'b?" dEPzxQ1zN9V}aրQGzL0 mP15]B  ` pP nOЃD e&"\[V.|Bn0S'O^ x0a04 ?Vm[ᓇm=߰*DYMA%8mvhרqFLXֹ0BUYnWaŎ%[Yiծe[qΥ[]y_&\ذYXi ߀[%ڙ/t3#ېϕ H{g|:l/Ue.{x*|`Gqy.G|l1 "fo֮#B0F Pr>%vxʃ"*hf"0tA#pB +B 3pC;CC4L ZDTDEcqFkFsqG{G o\BtH&tI(rJ*J,LNL1D-4L4TsM6tM8TRNO@tPB"PDUtQFuQH#&RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC><224ffd ~~|PP`*0(^d`tntLF@x\DFP::P<<4H:HxNt\BH@0@@ ̆~x<6< XPXȸx$Ė|p|¸ĸ||`tv`&4LTT@X@XPXXĮ຾p|| FZPરNZtԴNf@6<<ĸĬx..8p@tLDPH@h4,8P@ `Z:.(2.LĚ0.8"<| 0&.8("Hb\` Ą$.(6:(x0`ʔh\`ԺxbdpnfHĤdRl~`ZTbP,", 0.ltf䮜0@pfpΰxnf`|vlttprl̜ `|zpzfhd\tblhbh&:0~0:DbxtvrxnVvVlrvx0 <.DFJ@pnpttl4rrt¾ĖFFD ľFF#G߅fᆳS>3;TR Q`A.cQ4hЍ >3< N3 F)TV #&HFANAH~[Sd!&$$.ުA|C0܀lP4`>Αx @x3; Ӏ;wJ# 5OT|0 0P^+4k8: :Nc0xq'LC4(ϺNN,#MT;LP9--4F t>JôA>jv{SW-ՠԯ=XA4#l>@z@x4:A:,"""f.O@>l'X @7:M,c h? ;C(@ߐA׬#]>F1gX`@>x!Zw Nb<80 CS@,IyE>MeX@"B@Ƀ}JXXo @(QeI(&P c`A~/Mdkѝ6J*o/! ]H0*4z ҁ LAPG>0e#Uq T@ ƒa$ D"iI:ɂz 7w) |䡁asل )J7`ab&@@]z8䑏V#D>y3",H&I }Z4S𨂎S df,g9:[ȌEp* lnD'JQ؄X6p.="X" $ʛ@608||c[I@>" c:P18T [ԁQ- *NyZtgt%ȩ`Lc7> dȓ@"CÐ< 㫧V>ax"H8=L<5:ԁ (Tx?*AԲR hU7; Y0`lgKl>bc0oZuHp/?~y1v4%HXGtgU E&AkL8^%  -7au.BњBV ysW -@ "¿GHnZ{|4 ExXX@ ;I!H$8 9jQ {|"N;  0b!0t !V]VYDtZ+D u8`HG7) @E"%AJdc@|ghi,A֌T1UHGw;:Ra$]E(m]#38;#0ȩw8ulǟiiЂ` "Z*-m@.Mj[/ <fy,a q.IYuy1Fc2H:1cJ;Dt|T%1my;@@}< y6>fjn$9SQ̀`λ j`t̃}ˇ-qCu hJV ,<0.< 7Hvo0]!nx*|κַuPR !k 5H␶VK>bl>="%\4!vk z(%HA|:\G6I ֏!VKO7x@&U K' @sAN1@b A*D00= po #\`f$qza* = > Dr*`@5 `bk&1>b< Ѐ4L3W W'=*e>V]"=9Ð tF@7(9( =`x96 @A( 6]YWx0$$C ~p-Puo7r {sGxWG2B fI7RTAъF$520'@u<΀ 4 C3E$z#sb4f@|Dði,& W` b4֠V%\D ĄTr0Ms0`D .E;0>(d*ؐ 5  ّ5^,Q('J, 029NadBU+: `x:@FyH8QN)G#c >ER,g m:@v3qo2 ")"r !sh,@_iS S T:HH;0~ 1d %,yxvG-O/qg0bU P!c4n% `? 0S4 FJ'8:*31 Г Q*z]Ԡx/ص `JJKKpa;:dZGɠiS 3P"-"VuGbW|gVt0RsjHUߠ Cdڨj~=GQn0ҝ!@ kKzn$Z/'fDK$ p:Z<l 9l# 7q4WR9R[.PT S `ڭ*Qzচ#4 #0 ]-c+%EBZ/-`{  K,J>, am`!U`YSSp#@nXf&sl ۲. X ^Q1"pG,{D**!H+ :R0;T[Ѱ!\rHv"+2]yS\4 UPEu7aWa@ID]V|۷!a *O! :4b .m{(I qWs~[{Qb2mrPa&c q@s@0at"> U #IL+K4" 3+I~Mֵ;1/06q~{a^pJO7 A \{q5U0q@$? |ѡv <$\&|(*<'.0< 1\6,B7>̖!4 CALC@ef?Ռ:U;U7<$ՉR jBdg@WG4> *4?-4A0 > `SX0D''F\"`36Ւ{?2oQmyuQP0aV# `ﰛP59Ӣ=6GTG40!\ 75rKK F`3MIR` a ZϧI ͝$'Y"m#Jqju-$m-NaU]-6qN>SPE I-044 oQdB@ 0 $ cM ցQQM[Q}Z5+͠%pwid?ðXp%5` Q.s# UU 2hW#,Sk5n&&U7x*"Q4ˇ\ \&EQW b ,IN<zr5ˇrzf 5&*':o :/f\n۶ ky`ps69$8HqFJ(4A 3r`X.>S@eU {  ` ?@I%; ɠ.pa Tlyof{R 4hGR][PI@BCcPhw Jj|3^:ؐ8'B@8$_ĒD_@+{5?%-QGSI`o6p bUf0gNSTg&15$f5 uU&l?_L@B1"mKd @r7zw#㬊,(Ƚ>'b?" dEPzxQ1zN9V}aրQGzL0 mP15]B  ` pP nOЃD e&"\[V.|Bn0S'O^ x0a04 ?Vm[ᓇm=߰*DYMA%8mvhרqFLXֹ0BUYnWaŎ%[Yiծe[qΥ[]y_&\ذYXi ߀[%ڙ/t3#ېϕ H{g|:l/Ue.{x*|`Gqy.G|l1 "fo֮#B0F Pr>%vxʃ"*hf"0tA#pB +B 3pC;CC4L ZDTDEcqFkFsqG{G o\BtH&tI(rJ*J,LNL1D-4L4TsM6tM8TRNO@tPB"PDUtQFuQH#&RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC><224ffd ~~|PP`*0(^d`tntLF@x\DFP::P<<4H:HxNt\BH@0@@ ̆~x<6< XPXȸx$Ė|p|¸ĸ||`tv`&4LTT@X@XPXXĮ຾p|| FZPરNZtԴNf@6<<ĸĬx..8p@tLDPH@h4,8P@ `Z:.(2.LĚ0.8"<| 0&.8("Hb\` Ą$.(6:(x0`ʔh\`ԺxbdpnfHĤdRl~`ZTbP,", 0.ltf䮜0@pfpΰxnf`|vlttprl̜ `|zpzfhd\tblhbh&:0~0:DbxtvrxnVvVlrvx0 <.DFJ@pnpttl4rrt¾ĖFFD ľFF#G߅fᆳS>3;TR Q`A.cQ4hЍ >3< N3 F)TV #&HFANAH~[Sd!&$$.ުA|C0܀lP4`>Αx @x3; Ӏ;wJ# 5OT|0 0P^+4k8: :Nc0xq'LC4(ϺNN,#MT;LP9--4F t>JôA>jv{SW-ՠԯ=XA4#l>@z@x4:A:,"""f.O@>l'X @7:M,c h? ;C(@ߐA׬#]>F1gX`@>x!Zw Nb<80 CS@,IyE>MeX@"B@Ƀ}JXXo @(QeI(&P c`A~/Mdkѝ6J*o/! ]H0*4z ҁ LAPG>0e#Uq T@ ƒa$ D"iI:ɂz 7w) |䡁asل )J7`ab&@@]z8䑏V#D>y3",H&I }Z4S𨂎S df,g9:[ȌEp* lnD'JQ؄X6p.="X" $ʛ@608||c[I@>" c:P18T [ԁQ- *NyZtgt%ȩ`Lc7> dȓ@"CÐ< 㫧V>ax"H8=L<5:ԁ (Tx?*AԲR hU7; Y0`lgKl>bc0oZuHp/?~y1v4%HXGtgU E&AkL8^%  -7au.BњBV ysW -@ "¿GHnZ{|4 ExXX@ ;I!H$8 9jQ {|"N;  0b!0t !V]VYDtZ+D u8`HG7) @E"%AJdc@|ghi,A֌T1UHGw;:Ra$]E(m]#38;#0ȩw8ulǟiiЂ` "Z*-m@.Mj[/ <fy,a q.IYuy1Fc2H:1cJ;Dt|T%1my;@@}< y6>fjn$9SQ̀`λ j`t̃}ˇ-qCu hJV ,<0.< 7Hvo0]!nx*|κַuPR !k 5H␶VK>bl>="%\4!vk z(%HA|:\G6I ֏!VKO7x@&U K' @sAN1@b A*D00= po #\`f$qza* = > Dr*`@5 `bk&1>b< Ѐ4L3W W'=*e>V]"=9Ð tF@7(9( =`x96 @A( 6]YWx0$$C ~p-Puo7r {sGxWG2B fI7RTAъF$520'@u<΀ 4 C3E$z#sb4f@|Dði,& W` b4֠V%\D ĄTr0Ms0`D .E;0>(d*ؐ 5  ّ5^,Q('J, 029NadBU+: `x:@FyH8QN)G#c >ER,g m:@v3qo2 ")"r !sh,@_iS S T:HH;0~ 1d %,yxvG-O/qg0bU P!c4n% `? 0S4 FJ'8:*31 Г Q*z]Ԡx/ص `JJKKpa;:dZGɠiS 3P"-"VuGbW|gVt0RsjHUߠ Cdڨj~=GQn0ҝ!@ kKzn$Z/'fDK$ p:Z<l 9l# 7q4WR9R[.PT S `ڭ*Qzচ#4 #0 ]-c+%EBZ/-`{  K,J>, am`!U`YSSp#@nXf&sl ۲. X ^Q1"pG,{D**!H+ :R0;T[Ѱ!\rHv"+2]yS\4 UPEu7aWa@ID]V|۷!a *O! :4b .m{(I qWs~[{Qb2mrPa&c q@s@0at"> U #IL+K4" 3+I~Mֵ;1/06q~{a^pJO7 A \{q5U0q@$? |ѡv <$\&|(*<'.0< 1\6,B7>̖!4 CALC@ef?Ռ:U;U7<$ՉR jBdg@WG4> *4?-4A0 > `SX0D''F\"`36Ւ{?2oQmyuQP0aV# `ﰛP59Ӣ=6GTG40!\ 75rKK F`3MIR` a ZϧI ͝$'Y"m#Jqju-$m-NaU]-6qN>SPE I-044 oQdB@ 0 $ cM ցQQM[Q}Z5+͠%pwid?ðXp%5` Q.s# UU 2hW#,Sk5n&&U7x*"Q4ˇ\ \&EQW b ,IN<zr5ˇrzf 5&*':o :/f\n۶ ky`ps69$8HqFJ(4A 3r`X.>S@eU {  ` ?@I%; ɠ.pa Tlyof{R 4hGR][PI@BCcPhw Jj|3^:ؐ8'B@8$_ĒD_@+{5?%-QGSI`o6p bUf0gNSTg&15$f5 uU&l?_L@B1"mKd @r7zw#㬊,(Ƚ>'b?" dEPzxQ1zN9V}aրQGzL0 mP15]B  ` pP nOЃD e&"\[V.|Bn0S'O^ x0a04 ?Vm[ᓇm=߰*DYMA%8mvhרqFLXֹ0BUYnWaŎ%[Yiծe[qΥ[]y_&\ذYXi ߀[%ڙ/t3#ېϕ H{g|:l/Ue.{x*|`Gqy.G|l1 "fo֮#B0F Pr>%vxʃ"*hf"0tA#pB +B 3pC;CC4L ZDTDEcqFkFsqG{G o\BtH&tI(rJ*J,LNL1D-4L4TsM6tM8TRNO@tPB"PDUtQFuQH#&RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC><224ffd ~~|PP`*0(^d`tntLF@x\DFP::P<<4H:HxNt\BH@0@@ ̆~x<6< XPXȸx$Ė|p|¸ĸ||`tv`&4LTT@X@XPXXĮ຾p|| FZPરNZtԴNf@6<<ĸĬx..8p@tLDPH@h4,8P@ `Z:.(2.LĚ0.8"<| 0&.8("Hb\` Ą$.(6:(x0`ʔh\`ԺxbdpnfHĤdRl~`ZTbP,", 0.ltf䮜0@pfpΰxnf`|vlttprl̜ `|zpzfhd\tblhbh&:0~0:DbxtvrxnVvVlrvx0 <.DFJ@pnpttl4rrt¾ĖFFD ľFF#G߅fᆳS>3;TR Q`A.cQ4hЍ >3< N3 F)TV #&HFANAH~[Sd!&$$.ުA|C0܀lP4`>Αx @x3; Ӏ;wJ# 5OT|0 0P^+4k8: :Nc0xq'LC4(ϺNN,#MT;LP9--4F t>JôA>jv{SW-ՠԯ=XA4#l>@z@x4:A:,"""f.O@>l'X @7:M,c h? ;C(@ߐA׬#]>F1gX`@>x!Zw Nb<80 CS@,IyE>MeX@"B@Ƀ}JXXo @(QeI(&P c`A~/Mdkѝ6J*o/! ]H0*4z ҁ LAPG>0e#Uq T@ ƒa$ D"iI:ɂz 7w) |䡁asل )J7`ab&@@]z8䑏V#D>y3",H&I }Z4S𨂎S df,g9:[ȌEp* lnD'JQ؄X6p.="X" $ʛ@608||c[I@>" c:P18T [ԁQ- *NyZtgt%ȩ`Lc7> dȓ@"CÐ< 㫧V>ax"H8=L<5:ԁ (Tx?*AԲR hU7; Y0`lgKl>bc0oZuHp/?~y1v4%HXGtgU E&AkL8^%  -7au.BњBV ysW -@ "¿GHnZ{|4 ExXX@ ;I!H$8 9jQ {|"N;  0b!0t !V]VYDtZ+D u8`HG7) @E"%AJdc@|ghi,A֌T1UHGw;:Ra$]E(m]#38;#0ȩw8ulǟiiЂ` "Z*-m@.Mj[/ <fy,a q.IYuy1Fc2H:1cJ;Dt|T%1my;@@}< y6>fjn$9SQ̀`λ j`t̃}ˇ-qCu hJV ,<0.< 7Hvo0]!nx*|κַuPR !k 5H␶VK>bl>="%\4!vk z(%HA|:\G6I ֏!VKO7x@&U K' @sAN1@b A*D00= po #\`f$qza* = > Dr*`@5 `bk&1>b< Ѐ4L3W W'=*e>V]"=9Ð tF@7(9( =`x96 @A( 6]YWx0$$C ~p-Puo7r {sGxWG2B fI7RTAъF$520'@u<΀ 4 C3E$z#sb4f@|Dði,& W` b4֠V%\D ĄTr0Ms0`D .E;0>(d*ؐ 5  ّ5^,Q('J, 029NadBU+: `x:@FyH8QN)G#c >ER,g m:@v3qo2 ")"r !sh,@_iS S T:HH;0~ 1d %,yxvG-O/qg0bU P!c4n% `? 0S4 FJ'8:*31 Г Q*z]Ԡx/ص `JJKKpa;:dZGɠiS 3P"-"VuGbW|gVt0RsjHUߠ Cdڨj~=GQn0ҝ!@ kKzn$Z/'fDK$ p:Z<l 9l# 7q4WR9R[.PT S `ڭ*Qzচ#4 #0 ]-c+%EBZ/-`{  K,J>, am`!U`YSSp#@nXf&sl ۲. X ^Q1"pG,{D**!H+ :R0;T[Ѱ!\rHv"+2]yS\4 UPEu7aWa@ID]V|۷!a *O! :4b .m{(I qWs~[{Qb2mrPa&c q@s@0at"> U #IL+K4" 3+I~Mֵ;1/06q~{a^pJO7 A \{q5U0q@$? |ѡv <$\&|(*<'.0< 1\6,B7>̖!4 CALC@ef?Ռ:U;U7<$ՉR jBdg@WG4> *4?-4A0 > `SX0D''F\"`36Ւ{?2oQmyuQP0aV# `ﰛP59Ӣ=6GTG40!\ 75rKK F`3MIR` a ZϧI ͝$'Y"m#Jqju-$m-NaU]-6qN>SPE I-044 oQdB@ 0 $ cM ցQQM[Q}Z5+͠%pwid?ðXp%5` Q.s# UU 2hW#,Sk5n&&U7x*"Q4ˇ\ \&EQW b ,IN<zr5ˇrzf 5&*':o :/f\n۶ ky`ps69$8HqFJ(4A 3r`X.>S@eU {  ` ?@I%; ɠ.pa Tlyof{R 4hGR][PI@BCcPhw Jj|3^:ؐ8'B@8$_ĒD_@+{5?%-QGSI`o6p bUf0gNSTg&15$f5 uU&l?_L@B1"mKd @r7zw#㬊,(Ƚ>'b?" dEPzxQ1zN9V}aրQGzL0 mP15]B  ` pP nOЃD e&"\[V.|Bn0S'O^ x0a04 ?Vm[ᓇm=߰*DYMA%8mvhרqFLXֹ0BUYnWaŎ%[Yiծe[qΥ[]y_&\ذYXi ߀[%ڙ/t3#ېϕ H{g|:l/Ue.{x*|`Gqy.G|l1 "fo֮#B0F Pr>%vxʃ"*hf"0tA#pB +B 3pC;CC4L ZDTDEcqFkFsqG{G o\BtH&tI(rJ*J,LNL1D-4L4TsM6tM8TRNO@tPB"PDUtQFuQH#&RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>#G߅fᆳS<=T Q`Aq.cQ4hЍ 娑JôA>jv{SW-ՠԯ=XA4#l>_@@x4:Aq;v,""B "f@>l' @7:M,c@ =ā=C@A׬#]>J1% @>~"Zw AG=80AS@",݃IϠy E>BMePB@}JXXo @(QeI(&P c`A~/Mdkѝ6JS*p\/!@r ]004z G xBPG>0e#Uq T 8$^2Zm h6Y#YO ȅ \O>2xtN $|@ "ȅ̓8LTj'@@,]zG1XȂ '[FĒ3O = &R=Ӕ!:d.]-wdFT"867Z(lƒ~,8U ,`|xMP Gcv"_C@zmCߌ"€yly3TkP@?JBAJN6a[UޑD #ԨlgKfW`<ɐDqA8@8}Hp/?H1@?x=WC ڡ2|(RD-'<1KxbdגcHz:]}G"N9uO,D £ɂэc>ސ|wRA4< do}'L"x(,簭L"E2EQ !=݀ "Ac0,,Dx<:+Oke|c~F] ((_PpYR,HV\gh'+i""SaGvK@D.Bn>pwP?#aJ_z0,a8!L"5n=A=м' @@VXE=&I"É Ҏ8(@  $պI k 0fEusahif;Ӿ @TSE+Af^{s 'c$KHP7<iYo{`;XA(b5 ddH[ѥ/Df>A.x VQ cxA(vܣ`jx˺mapu__"x *ī@ P 0j#x@BfA!` D` r*E5 bSl7>b< 0Ȧ4L W+'X'='`D%t*{@fBXV]P B9ptRHi;؃W`cq x;]Y었!+0$$C8p-`$oА.n 5  Ј "95r('0I4Y6yNdB0V+> x@8JL`A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@qڱp $ЖcT CYy>0AN)G#Ú0T)x.0n7o#!)"by*q@*h=YyvG1Qtl AC I@SN3Hv à [ߠVS晊p٠{V$ Qc!Aw6  'Zu Gh)W@ R3Eq`4@*Jr@i<;HPAh27Ezx* uPJPKBj7),< Q"-"ZuGg٦tq SyLl:Gq$"e?#PT0&ڙ!a^HH@zFQm0 xe5r> Ni@ V#CaZp4Ay3zQz@#4 #]-d0u,yj' ;0Z/YA1$0n`!2VaIcPfbl ۲.1 A P`85 #! w$ BQ ߀]@- T[V  [A 53!"1T"ѕ7 H@̐zNtauS{|۷~2K< v0O0Jpa/ :4X .@o+?w40>{YKx)&&6 f4=Pq@c@҆ @!u >`Upe<;;A#"0 a9{$ I)+1/ q/0|  TGzA cF q5H dp$=@"<1w$|(*,.,(2<4< 5:Aଷ;B\!8G CP\nLWUQ^܈0+piLgfRbNxb'9[""-ZL!PQB \"L5saa qz\ɖ\d/ pƌB[<\ģ1"( d Aɗ˺l0U,,on|0]'G1q/\\*4Wg4F=bP oe&:5> P1=3v7z7A:W`+-A !ϡ<`\""+- #W[-~+l5,!"PsĔ6 % ѳBL6*@e LJ;1VޗR- <^x$`EowD#BBCG 0 P?'D6A'K\b`3 >z>+?odbzRP Y`W#є CNнL}۸M!R]yTV qr Nc5Z5K F3MIb` ZrЧI bխKأG%6dHٖ8 P)0Bd-]-qݾU[ +I}CH` !>EzPq]ι">Q!$ J;5Zxp6K3 EW Q3## UV 2mW1QSo r% 15f5 ym|Av*$#$ Q E5sށهzBxњ%QÀ90T|B{VzPxu}d̠cpJ 6`w` 0aEkO~p_%.`zӷ  Y  q$ |X+X}%Oރ~$HG N. F?x!#@hGb" G+ ʇ`_?yd A!!GQr' =uCJw|iH+cAĥ[]y_&\aĉ/fcȑ%O\e̙5ogСE dE=+UO{g' )]w }Џ>Y"`m(+m|%XzR QxfS $^ׯ^%pU%D˗wj 8B"- m0|R ¼@x ~ F3DSTqE[tEcqFkFsqG nǣ1TrI&tI(rJ*J,RRpx)L4TsM6tM8sN: RʬO@tPB 5PDUtQ!s1dtRJ+RL3tSN;TS3?uTRK5TTSUuUVmUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>#G߅fᆳS<=T Q`Aq.cQ4hЍ 娑JôA>jv{SW-ՠԯ=XA4#l>_@@x4:Aq;v,""B "f@>l' @7:M,c@ =ā=C@A׬#]>J1% @>~"Zw AG=80AS@",݃IϠy E>BMePB@}JXXo @(QeI(&P c`A~/Mdkѝ6JS*p\/!@r ]004z G xBPG>0e#Uq T 8$^2Zm h6Y#YO ȅ \O>2xtN $|@ "ȅ̓8LTj'@@,]zG1XȂ '[FĒ3O = &R=Ӕ!:d.]-wdFT"867Z(lƒ~,8U ,`|xMP Gcv"_C@zmCߌ"€yly3TkP@?JBAJN6a[UޑD #ԨlgKfW`<ɐDqA8@8}Hp/?H1@?x=WC ڡ2|(RD-'<1KxbdגcHz:]}G"N9uO,D £ɂэc>ސ|wRA4< do}'L"x(,簭L"E2EQ !=݀ "Ac0,,Dx<:+Oke|c~F] ((_PpYR,HV\gh'+i""SaGvK@D.Bn>pwP?#aJ_z0,a8!L"5n=A=м' @@VXE=&I"É Ҏ8(@  $պI k 0fEusahif;Ӿ @TSE+Af^{s 'c$KHP7<iYo{`;XA(b5 ddH[ѥ/Df>A.x VQ cxA(vܣ`jx˺mapu__"x *ī@ P 0j#x@BfA!` D` r*E5 bSl7>b< 0Ȧ4L W+'X'='`D%t*{@fBXV]P B9ptRHi;؃W`cq x;]Y었!+0$$C8p-`$oА.n 5  Ј "95r('0I4Y6yNdB0V+> x@8JL`A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@qڱp $ЖcT CYy>0AN)G#Ú0T)x.0n7o#!)"by*q@*h=YyvG1Qtl AC I@SN3Hv à [ߠVS晊p٠{V$ Qc!Aw6  'Zu Gh)W@ R3Eq`4@*Jr@i<;HPAh27Ezx* uPJPKBj7),< Q"-"ZuGg٦tq SyLl:Gq$"e?#PT0&ڙ!a^HH@zFQm0 xe5r> Ni@ V#CaZp4Ay3zQz@#4 #]-d0u,yj' ;0Z/YA1$0n`!2VaIcPfbl ۲.1 A P`85 #! w$ BQ ߀]@- T[V  [A 53!"1T"ѕ7 H@̐zNtauS{|۷~2K< v0O0Jpa/ :4X .@o+?w40>{YKx)&&6 f4=Pq@c@҆ @!u >`Upe<;;A#"0 a9{$ I)+1/ q/0|  TGzA cF q5H dp$=@"<1w$|(*,.,(2<4< 5:Aଷ;B\!8G CP\nLWUQ^܈0+piLgfRbNxb'9[""-ZL!PQB \"L5saa qz\ɖ\d/ pƌB[<\ģ1"( d Aɗ˺l0U,,on|0]'G1q/\\*4Wg4F=bP oe&:5> P1=3v7z7A:W`+-A !ϡ<`\""+- #W[-~+l5,!"PsĔ6 % ѳBL6*@e LJ;1VޗR- <^x$`EowD#BBCG 0 P?'D6A'K\b`3 >z>+?odbzRP Y`W#є CNнL}۸M!R]yTV qr Nc5Z5K F3MIb` ZrЧI bխKأG%6dHٖ8 P)0Bd-]-qݾU[ +I}CH` !>EzPq]ι">Q!$ J;5Zxp6K3 EW Q3## UV 2mW1QSo r% 15f5 ym|Av*$#$ Q E5sށهzBxњ%QÀ90T|B{VzPxu}d̠cpJ 6`w` 0aEkO~p_%.`zӷ  Y  q$ |X+X}%Oރ~$HG N. F?x!#@hGb" G+ ʇ`_?yd A!!GQr' =uCJw|iH+cAĥ[]y_&\aĉ/fcȑ%O\e̙5ogСE dE=+UO{g' )]w }Џ>Y"`m(+m|%XzR QxfS $^ׯ^%pU%D˗wj 8B"- m0|R ¼@x ~ F3DSTqE[tEcqFkFsqG nǣ1TrI&tI(rJ*J,RRpx)L4TsM6tM8sN: RʬO@tPB 5PDUtQ!s1dtRJ+RL3tSN;TS3?uTRK5TTSUuUVmUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>#G߅fᆳS<=T Q`Aq.cQ4hЍ 娑JôA>jv{SW-ՠԯ=XA4#l>_@@x4:Aq;v,""B "f@>l' @7:M,c@ =ā=C@A׬#]>J1% @>~"Zw AG=80AS@",݃IϠy E>BMePB@}JXXo @(QeI(&P c`A~/Mdkѝ6JS*p\/!@r ]004z G xBPG>0e#Uq T 8$^2Zm h6Y#YO ȅ \O>2xtN $|@ "ȅ̓8LTj'@@,]zG1XȂ '[FĒ3O = &R=Ӕ!:d.]-wdFT"867Z(lƒ~,8U ,`|xMP Gcv"_C@zmCߌ"€yly3TkP@?JBAJN6a[UޑD #ԨlgKfW`<ɐDqA8@8}Hp/?H1@?x=WC ڡ2|(RD-'<1KxbdגcHz:]}G"N9uO,D £ɂэc>ސ|wRA4< do}'L"x(,簭L"E2EQ !=݀ "Ac0,,Dx<:+Oke|c~F] ((_PpYR,HV\gh'+i""SaGvK@D.Bn>pwP?#aJ_z0,a8!L"5n=A=м' @@VXE=&I"É Ҏ8(@  $պI k 0fEusahif;Ӿ @TSE+Af^{s 'c$KHP7<iYo{`;XA(b5 ddH[ѥ/Df>A.x VQ cxA(vܣ`jx˺mapu__"x *ī@ P 0j#x@BfA!` D` r*E5 bSl7>b< 0Ȧ4L W+'X'='`D%t*{@fBXV]P B9ptRHi;؃W`cq x;]Y었!+0$$C8p-`$oА.n 5  Ј "95r('0I4Y6yNdB0V+> x@8JL`A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@qڱp $ЖcT CYy>0AN)G#Ú0T)x.0n7o#!)"by*q@*h=YyvG1Qtl AC I@SN3Hv à [ߠVS晊p٠{V$ Qc!Aw6  'Zu Gh)W@ R3Eq`4@*Jr@i<;HPAh27Ezx* uPJPKBj7),< Q"-"ZuGg٦tq SyLl:Gq$"e?#PT0&ڙ!a^HH@zFQm0 xe5r> Ni@ V#CaZp4Ay3zQz@#4 #]-d0u,yj' ;0Z/YA1$0n`!2VaIcPfbl ۲.1 A P`85 #! w$ BQ ߀]@- T[V  [A 53!"1T"ѕ7 H@̐zNtauS{|۷~2K< v0O0Jpa/ :4X .@o+?w40>{YKx)&&6 f4=Pq@c@҆ @!u >`Upe<;;A#"0 a9{$ I)+1/ q/0|  TGzA cF q5H dp$=@"<1w$|(*,.,(2<4< 5:Aଷ;B\!8G CP\nLWUQ^܈0+piLgfRbNxb'9[""-ZL!PQB \"L5saa qz\ɖ\d/ pƌB[<\ģ1"( d Aɗ˺l0U,,on|0]'G1q/\\*4Wg4F=bP oe&:5> P1=3v7z7A:W`+-A !ϡ<`\""+- #W[-~+l5,!"PsĔ6 % ѳBL6*@e LJ;1VޗR- <^x$`EowD#BBCG 0 P?'D6A'K\b`3 >z>+?odbzRP Y`W#є CNнL}۸M!R]yTV qr Nc5Z5K F3MIb` ZrЧI bխKأG%6dHٖ8 P)0Bd-]-qݾU[ +I}CH` !>EzPq]ι">Q!$ J;5Zxp6K3 EW Q3## UV 2mW1QSo r% 15f5 ym|Av*$#$ Q E5sށهzBxњ%QÀ90T|B{VzPxu}d̠cpJ 6`w` 0aEkO~p_%.`zӷ  Y  q$ |X+X}%Oރ~$HG N. F?x!#@hGb" G+ ʇ`_?yd A!!GQr' =uCJw|iH+cAĥ[]y_&\aĉ/fcȑ%O\e̙5ogСE dE=+UO{g' )]w }Џ>Y"`m(+m|%XzR QxfS $^ׯ^%pU%D˗wj 8B"- m0|R ¼@x ~ F3DSTqE[tEcqFkFsqG nǣ1TrI&tI(rJ*J,RRpx)L4TsM6tM8sN: RʬO@tPB 5PDUtQ!s1dtRJ+RL3tSN;TS3?uTRK5TTSUuUVmUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>#G߅fᆳS<=T Q`Aq.cQ4hЍ 娑JôA>jv{SW-ՠԯ=XA4#l>_@@x4:Aq;v,""B "f@>l' @7:M,c@ =ā=C@A׬#]>J1% @>~"Zw AG=80AS@",݃IϠy E>BMePB@}JXXo @(QeI(&P c`A~/Mdkѝ6JS*p\/!@r ]004z G xBPG>0e#Uq T 8$^2Zm h6Y#YO ȅ \O>2xtN $|@ "ȅ̓8LTj'@@,]zG1XȂ '[FĒ3O = &R=Ӕ!:d.]-wdFT"867Z(lƒ~,8U ,`|xMP Gcv"_C@zmCߌ"€yly3TkP@?JBAJN6a[UޑD #ԨlgKfW`<ɐDqA8@8}Hp/?H1@?x=WC ڡ2|(RD-'<1KxbdגcHz:]}G"N9uO,D £ɂэc>ސ|wRA4< do}'L"x(,簭L"E2EQ !=݀ "Ac0,,Dx<:+Oke|c~F] ((_PpYR,HV\gh'+i""SaGvK@D.Bn>pwP?#aJ_z0,a8!L"5n=A=м' @@VXE=&I"É Ҏ8(@  $պI k 0fEusahif;Ӿ @TSE+Af^{s 'c$KHP7<iYo{`;XA(b5 ddH[ѥ/Df>A.x VQ cxA(vܣ`jx˺mapu__"x *ī@ P 0j#x@BfA!` D` r*E5 bSl7>b< 0Ȧ4L W+'X'='`D%t*{@fBXV]P B9ptRHi;؃W`cq x;]Y었!+0$$C8p-`$oА.n 5  Ј "95r('0I4Y6yNdB0V+> x@8JL`A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@qڱp $ЖcT CYy>0AN)G#Ú0T)x.0n7o#!)"by*q@*h=YyvG1Qtl AC I@SN3Hv à [ߠVS晊p٠{V$ Qc!Aw6  'Zu Gh)W@ R3Eq`4@*Jr@i<;HPAh27Ezx* uPJPKBj7),< Q"-"ZuGg٦tq SyLl:Gq$"e?#PT0&ڙ!a^HH@zFQm0 xe5r> Ni@ V#CaZp4Ay3zQz@#4 #]-d0u,yj' ;0Z/YA1$0n`!2VaIcPfbl ۲.1 A P`85 #! w$ BQ ߀]@- T[V  [A 53!"1T"ѕ7 H@̐zNtauS{|۷~2K< v0O0Jpa/ :4X .@o+?w40>{YKx)&&6 f4=Pq@c@҆ @!u >`Upe<;;A#"0 a9{$ I)+1/ q/0|  TGzA cF q5H dp$=@"<1w$|(*,.,(2<4< 5:Aଷ;B\!8G CP\nLWUQ^܈0+piLgfRbNxb'9[""-ZL!PQB \"L5saa qz\ɖ\d/ pƌB[<\ģ1"( d Aɗ˺l0U,,on|0]'G1q/\\*4Wg4F=bP oe&:5> P1=3v7z7A:W`+-A !ϡ<`\""+- #W[-~+l5,!"PsĔ6 % ѳBL6*@e LJ;1VޗR- <^x$`EowD#BBCG 0 P?'D6A'K\b`3 >z>+?odbzRP Y`W#є CNнL}۸M!R]yTV qr Nc5Z5K F3MIb` ZrЧI bխKأG%6dHٖ8 P)0Bd-]-qݾU[ +I}CH` !>EzPq]ι">Q!$ J;5Zxp6K3 EW Q3## UV 2mW1QSo r% 15f5 ym|Av*$#$ Q E5sށهzBxњ%QÀ90T|B{VzPxu}d̠cpJ 6`w` 0aEkO~p_%.`zӷ  Y  q$ |X+X}%Oރ~$HG N. F?x!#@hGb" G+ ʇ`_?yd A!!GQr' =uCJw|iH+cAĥ[]y_&\aĉ/fcȑ%O\e̙5ogСE dE=+UO{g' )]w }Џ>Y"`m(+m|%XzR QxfS $^ׯ^%pU%D˗wj 8B"- m0|R ¼@x ~ F3DSTqE[tEcqFkFsqG nǣ1TrI&tI(rJ*J,RRpx)L4TsM6tM8sN: RʬO@tPB 5PDUtQ!s1dtRJ+RL3tSN;TS3?uTRK5TTSUuUVmUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>"N%t`FA>#G߅fᆳS<#=T 예Q`Ar.cQ4hЍ 娑JôA>jv{SW-ՠԯ=XA4#l>_@@x4:A?o,""B#"f@>l' @7:M,c@ =ȁ=C@A׬#]>J1g @>~8"Zw BG=60AS@",݃IMyA E>MePB@}JXXo @(QeI(&P c`A~/Mdkѝ6J*p\/!@rA ][04z G xBPG>0e#Uq T  9$^2Zm 6Y#YO ȅ \O>2 ztN $|@ "ȅ̓8LTj'@@V]zG1XȂ '[FĒ3O A &R=Ӕ!:d.]-wdFT"867Z(lƒ~,8U ,`|xMP GcvB_*CzmCߔ"€yy3TkP@?JBAJN6a[UޑD #ԨlgKfW`<DrA8@8}Hp/?H1@?x=WC !2|(RD-'<1Kzbdגcz:]}G"N9uO,D £ɂэc>|wRA4< do}'L"x(,簭L"E2EQ @=3 "Gc[,,Dx<:+Oke|c~F] <(_OdpYR,HV\gh'+i""SaGvK@D.Bn>pwx?#aɎJ_z0,a8!L"5n=A=м' @@VXE=&I"É 9(@  $պI k 0fEusahif;Ӿ @TSE+Af^{s 'c$KHP7<iYo{`;XA(b5 dH[ѥ/Df>A.x VQ cxA( xܣ`jxl˺mapu__"x *ī@ P 0j#x@BfA!` Dr*E5 bSl7>b< 0Ȧ4L W+'X'='`D%t*-@fBXV]P B9ptRHi;؃W`cr x;]Y었!0$$C8p-`$oА.n 5  Ј "95r('0I4Y6yNdB0V+> x@8JL`A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@rڱp $ЖcT CYy>0AN)G#Ú0T)x.0n7o#!)"by*r@*=YyvG1Qtl AC @SN3Hoà [ߠVS晊p٠{V$ Qc!Aw6  'Zu Gh)W@ R3Er`4@*Jr@i<;HPAh27Ezx* uPJPKBj7),< Q"-"ZuGg٦tr SyLl:Gq$"e?#PT0&ڙ!a^HH@zFQm0 xe5r> Ni@ V#CaZp4Ay3zQz@#4 # ]-d0u,yj@'`  ;0Z/YA1$0n`!2VaIPfbl ۲.1 A P`85 #!w$ BQ ߀]@- T[V  [A 53!"1T"ѕ7 $H@IzNtauS{|۷~2K< o0O0Jpa/ :4X .@o+?w40>{YKx)&&6 f4=Pq@c@҆ @!u >`Upe<;;A#"0 a9{$ I)+1/ q/0|  TGzA cF q5H dp$=@"<1w$|(*,.<(2<4< 5:̈A;B!8G CP~nLWUQ^ v0+piLgfRbͧNxD&9[""-ZL!PQB \"L5saaqz\ɖ|Q/ pƌB[<\ģ1"( dAɗ˺l(U,,on|0]'G1q/\\*4Wg4F=b<۪ 0 P,1#`Cμ>P oe&:5> P1=3v7z7A:W`+-A !ϡ<`\""+-  #W[-~+l5,!"PsĔ6 % ѳBL6*@e jLJ;1VޗR- <^x$`EowD#BBCG 0 P?'D6A'K\`3 >z>?odbzRP Y`W#є CNнL}۸]!R]yTV qr Nc5Z5K F3MIb` ZrЧI bխKأG%6dHٖ8 P)[Bd-]-qݾU0 +I}CH!>EPq]/e۹]&Q!$ J;5Zxp6K3 EW Q3# UV 2mW1QSo r%@h"2u{<]R)Pn:f0f'\du`!` P<5N=c&ux$~^鲑X!oP f @5'@ݠScm:&nͺxkTs;9䴷K]$wh`d<oNg3Zeo 5 =u02U1閾@I =@I6$@.z&^ JLMGRg QPlҽmUGR][3QM@BCcPύhWR l3d:[nPZ}@\@QĒ_@+d@Tbu9tRy9pBbTy[^qce&R]a!7"-o> '15f5 ym,Av*$#$ Q E5sށهzBx@њ%QÀ90T|{PVzPxu}cdI@cpJ 6`w` 0aEu?Op_%.`@ӷ Y  qh} Oރ|(XQ!|<R}uѝ>h("90O_B͌ EAHV<˕~ɒ !8Ea+ROMȡA_jG]z4o [ A&\aĉ/fcȑ%O\e̙5ogСE&]iԩUfkؖCT<7 KRS{&,ɉrJcIy4OttƊ+o003_ 2tEv6@:ud,!VP.'䐪s(("#A "' @({ mFkFsqG{G rH"4H$1XH*$j2dJ,rK.K0sL24Rp3+2N:NO@- T/|JsNAuQH#tRJ+RL-m7SPCuTRK5TTSUuUeUXcuVZkV\s}t;]{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>: Ԏ:S#ԦcAx2.L=SA8΅40tGNhP;M PQ? d4J34AQO]kvstum@YyD3AnG"=lPtqNȑt ux@>S#>#jODH@o4@ h0:/=7"`Q>XG:>X 7? G׽#}0yh` 틃׀. ~BQ# 711f(cG1>np~/С?  X% "$  F8'wp(xY\`F<, G% pYd0XA8_ Xǧ,2$.$ 8@"0\ĩ} HaQ׳7_ 8i.A @ !̓@D#}@c0!D?2",( X)WR `6X-vx΄4]2Зy,5FiKcЇ~'AFfG@=XcFζmGH@{%B53G'E:;#5:jLwW̃ 1ȓmn-Z+'AXn:ž%3Um"Oi $]RXU3n΁p1[MOH l]b{+聱mCd']Ddf9AzE~؂Q8!90GK-<NwYpQbB D"'{iYVR :.IO]7 6b^ @x2PҮ DDY<#v:NM/?, 1 B3@[ KUf)|"  F0cf@D5Z'=0> @ r' C5 wfFBwr<2' FNFX'Q@!Dwb ]b Gt EGP(|b6-%@?p1T ҵ0X~؈20?5B 03`T/@>ܒb KhLC2AEJ(C|ՊLP0 'PӅ.n 06' 03C$Y&y5r&ђO.Y26y8UхB@b*@ `:LٔNPAUWY\ٕ^V*`Yfyhjlٖnpr9tYvyxz|ٗ~mui+)pzw)9A;*d 9Y,q@ځp q$[y{iy >`V}7" #AjpT-V/ nUhs^"9"r !sYy9iV-sC7=G _@VNc̈p r b B B\OTɊ렋٠|vC2.l ^Vhb@pp '@Wİ4 &C ">@kH0C"3B(T9phO]pUY" @AlڦM) T0Pa01+UEv\mq.̅fsVJnZz7ES%Dn`IEl1 ^aqJ|x&pګF Yx5Q"`7УFɩGX00D8dz3ZQ`Aē*QQ=%Cϥ6$IJ⨯zDE$0z0z.U+A# n`""Ua]!՘rPfps;4[ 1hFRb1 "ɀZ )P(0]2 E™6\۵1s(L*G20]%y`C"aw[v=A`5終;;8[ r@J렊|~AP?\F!<KŒiD|T\Gq@/A QZ1V` ǜ˾,)["A-'.l!Qʍ shPW{|AbK!y A1@Ĭ1 #d3 3:޸oc&:;> 1@4s9z76pre C6e!r'g'CW ;+5-!" PP`s6%"3SҪL&J}]Lر;! 1$ŐZx$`4E,9MdB14C# ` $^K` h#"%=`)>3 ?ro&z䤈vPRrpQBl `0w MQk`*n ԺAbIWd 'V v S6\E_@!"T$m{v% }'4٨āS(R#UI@ A0N@S bӾ ZvpF_D:kgWx%!0 >u[ `%Rc)sof|;礈S tEUv')QL@QycV0fW(qcN;Ͱ `<*fw {~'☞tA'\Qrpc \At,zo9Kf\+ S@˶k4s@KDVc%r@(`65::%not %T *4ӝۚ!@` jj/ C"!\h F8&iD-ipCr]_sQ`7 , VgXԢΚdm 4"n*ʠIMgJ>_II|HUSSKtwsƨ$73  } ~'*UfGNT焏r>wq5f+ ? 3C v)$ #t IsGz x-:W!KpTzp!v*Cz`z xGLc424r1K]1@ 7aL( 8×?c76]  y|Pu@)D4Pg}$حaݺ%NDn=Aa߇ziGD<Fx 7 !멣wx1%+uXakC]}8qlmH׉BM98u$viN_&\aĉ/fcȑ%O\e̙5ogСE&]iԩUCdƼ_zp؆uH,Sb]}DDzE@{\ fP՗J(aב( 1c7O@GuXgǞ au+x u$QFh.0|_ '~ZZtEcqFkFsqG{G R2zĮ!cI(rJ*J,rK.+a%A&DI5tM8sN:NC?C@ DADB,DCHHHHH II,I>#G߅fᆳSA<#<T%Q\A.cQ4hЍ Q>= NF)TV =3:(sO Ih&QlIGqvdP=p ,`堄jjy䳁 $td#"iȐij%I`AR$*Pnћp#kEs=ԓOd^<&HFCABH~[Sd!c&($.ުAB0<lP8`@>ϑxAxC> p <w¨ 9`O!@Tt00P^+4k89 9N#s0xq'LOcA84ϺRO=qx>ĈS9--4F >JôA>jv{SW-ՠԯ=XA4#l>_@z@x8:A9r$" '"f^(>l'P0@7:M,_A s0$@ >{p"Zw >P:40 ck@",ɃIy>e|B@Ճ}JXXo @(QeI(&P c`A~/Mdkѝ6J*\/!@p ]\ B4z BP>0e#Uq l@ r a$i^2\Zm 86Y#YO [O@=2 wtN 5$끾}@ !̓T&@@]z0Oԃ'[FĒ3M' dA =Ӕ!:Yd.]-wdFT" 867Z(ls{$`8U $`|MP GSv}C_H>p(`UHL*2Em5\4FWQ*٩4Fxmͧ@(p< $Z=* ٣0zm"€xy3TkP@?JBA'JN6a[UޑD#ԨlgKfW`[>D@A8G'yHp?H)=xW #x7RD-v1Kwbdגvc0::]}G"N9ut]D £ɂэ>}RA4< do}'L"x8$尭L"e;E%0B=@ "N\,=,D@>:kOkexc~F]$܈(<̃O pYR,HV[gh'+i""SaGvK@D.B>P~H?{#aJ_z0,a8!LEAa5n=A<\2|@@VX#晄:&I"Ɖ ra(m(@ Pφ$պI kN0fEusahif?ԑӾ @4SE+Af^{s c$KHP7<i'Yo{`;X1(b5C1dFH[%/Df6A.x VQnSNxA, v`jxp˺mapu__"x *ī@ 0j"x@BfA! Br* E5 bSlV7>b<064Lֳ W+'X'=&`D%t*@fBXV]PpB9pptRHi;؃p0c Px;u]Y었@0$$C8p-P$oXА.n 5  Ј "95r('0I4Y6yNdB0V+> x@8JLPA7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@q€ڱp $ЖcT CYy>@AN)G#Ú0T)xp.0n7o#!)"by*@*(=YyvGu1Qtl aCu H@SN3H!r Ãp [ޠVS晊p٠{V$ Qc!AwA 'ZuGh)W0 R 3E`4@*Jr@i<;HPAh27E x*1 v uPJPKNBj7),< Q"-"ZuGg'٦t Sy Ll:Gq$"e?#pPT0&ڙ!a^HH@zFQm xe%rC> Ni@ V#c aZpAyx3zQz@#4 #]-d0u,yjpE& ;0Z/YAa#0n`!2VaI#Pfl ۲.1 1 P1p`8! w Bހ]@- T[V  [> 53!"1T"ѕ7 $ ^@zNauS{|۷~2K< r0O0Jpa/ :4 .`o+?w0>{YKx)&&6 f4=Pq@3@҆7` !u `Upe<;;A A#" a9{# I)+1/ q0| pTGzA cF q5^ F p$`"<1w$|(*,.<'2<4< 5:̈>;B!8G b‹y@z>?o^bzRpW# `RFڮ!L]yDV r Nc5RZ5K F 3MIb ZBЧI b˭KأG%&d6Hٖ8 P)\Bdƍ]-qݾU +I ]\P!>z]s`V!)/ͯQ!$ 0J;s5Zp6K3 EWQ3 sUV 2&mWQSo r5%6h"2u{OR)Fn:f0f\du`!VI IP 15f5 ?FA"ݳLzAv*$#$ ް E5sށهzBxњ%QÀ`90T|{VzPxu}d3pJ簷 q`w 0a(A|_p_%`OW C 0pN(H"A 5Qlb&!ȗo:cЄ} 'a=p](<9a 8AQp0׾7IAPX'/.ea+St>yG#>iP[qΥ[]y_&\aĉ/fcȑ%O\e̙5Ñ|+]S}L Fbz &{[>8j0i#10'] 0h!=u|oTQyj Qo.xr_'Zk.g)6kQ~2X'CCqDK4DSTqE[tEcqFGOd'ʱƻ<rH"4H$TrI&tI(RI(n"j)K0sL24L4TsM6|Kt}K7sO>O@tPB͒-,tQFuQH#tRJ+ҴtSN;SPCuTRK8SSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>O> NCF)TV YlA ,`堄jjyÁ $td "iȐiď%IPR$*Pnћ*"kEc@>Oʬ<&HFASH~[Sd!Ւ&($.ުA`A X<l8p>Α*xBxCA;  @=g6* 9!Xt 0^+4k8: Ԏ:N#s xq'L;SA84ϺRpXNhP;ĈE!S9--4F 4?JôA>jv{SW-ՠԯ=XA4#l>_@j@x8:A:q$b" "f(?pl'P0@7:M,_A C=C@XA׬Ԃ?t0$X ?|!Zw `?40`k@",ՃIɨy?e|B@}JXXo @(QeI(&P c`A~/Mdkѝ6J,,/!@ ]d B4z  CP?0e#Uq l 2$i^2\Zm P6Y#YO 0 O:2wtN 5$ׁ>~@ ̓KTj&@@]z1PP'[FĒ3M dA =Ӕ!:+d.]-wdFT" 8U67Z(ls|$`8U $`|XMP GCv}C_>(UTHL@*BE5\4FWQ*٩4Fx`mͧ@(< $: zmCT"xy3TkP@?JB5A'JN6a[UޑD#ԨlgKfW`>D*A8G'zHpP)?H)@>x)WPA ԱS좯7RD-1wbdגva ::]}G"N9uaLD £ɂэ#?V^~wRA4< do}'L"x8$ L"ESpB=@ ":dl:Okeb~E]$RЃ@pYR,H؅Vgh'+i""SjaGvK@D.B.?P{ܣH?"aَJ_z0,a8!L5n=AZG=мe|@@VX#摄?&I"P (M(@ φ$պI k[0fEusahif=Ӿc@SE+Af^{s _c$KHP7<i'Yo{`;X1(b5Cq H[ѥ/Df6A.x VQ SxA*y#`jx˺Ώmapu__"x *ī@ 0j"x@BfA!Br* E5 bSl7>b<0F4L3 W+'X'=&`D%t*@fBXV]:B9XpptRHi;؃p0c* :x;u0]Y었!s0$$C8p-P$oА.n 5  Ј "95r('0I4Y6yNdB00V+> x@8JLPAA7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@a*ڱp $ЖcT CYy>0@AN)G#Ú0T)x`.0n7o#!)"by**@*=YyvG֥1Qtl QCp0 H@SN3H!q Ã[VS晊p٠{V$ Qc!Aw 'ZuGh)Wp0 R 3E*`4@X*Jr@i<;H:Ah27E x* n uPJPK Bj7),< Q"-"ZuGg'٦t* Sy Ll:Gq$"e?#pPT0&ڙ!a^HH@zFQm xe%r> Ni@ V#c aZpAy3zQz@#4 #]-d0u,yjE&0 ;0Z/YAq#0n`!2VaIÀPf2l ۲.1 1 PA`8! wB]@- T[V  [=53!"1T"ѕ7@OzNauS{|۷~2K<q0O0Jpa/ :4( .` o+?w0>{YKx)&&6 f4=XPq@3@҆ ` !u `Upe<;;A A#" a9{# I)+1/0 q0|X TGzA cF q50 p$` "<1w$|(*,.\%'2<4<5:u=;B!8G b‹9@p*4?-4A0d > P s@Hhh|R%qP6`W3*6.fw!5 p1 u p5MPkp:nx+>A![Kۺ!Q]yDV r Nc5RZ5K F 3MIb ZBЧI b׭KأG%&dHٖ8 P)dBdM]-qݾU+I \:!>z]У`V!ULxK0 ۻ.Q!$ J;5 Zp6K3EWQ3@ UV 2&mWQSo5 r%Hh"2u{OR)Xn:f00f\du`!hI pIP 15ýf5 ? H7gMAv*$#$ 0 E5sށهzBxњ%QÀ 90T|{VzPxu}3dO3puJ갷 3`w 0a(AKG5] $X` uBNAQ5@T'R&/:SQD>~ G˂Apa9wӟ{/MK T`s:z-{4B< Ōag`]}$0R6Utڠ]+7 ^dS)O+x_J>K \mZK~gСE&]iԩUfkرeϦ]mܹuo'^qC>Q;Koz$_2T7y];lW$ HF9R]rv)LI Zbxڙ!8`|`*Dc<~@X,&S!-YH}BT .%~`3DA 'T (iΒrJ*J,rK.K0sL24L2YD-6ь-J9NO@tPB2ȴ% NG#tRJ+RL3tSN;t  hs3S(QUuUV[uUXcuVZkt3R[{W`vXb5Xd5YfuYhvZjvUv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>O> NCF)TV YlA ,`堄jjyÁ $td "iȐiď%IPR$*Pnћ*"kEc@>Oʬ<&HFASH~[Sd!Ւ&($.ުA`A X<l8p>Α*xBxCA;  @=g6* 9!Xt 0^+4k8: Ԏ:N#s xq'L;SA84ϺRpXNhP;ĈE!S9--4F 4?JôA>jv{SW-ՠԯ=XA4#l>_@j@x8:A:q$b" "f(?pl'P0@7:M,_A C=C@XA׬Ԃ?t0$X ?|!Zw `?40`k@",ՃIɨy?e|B@}JXXo @(QeI(&P c`A~/Mdkѝ6J,,/!@ ]d B4z  CP?0e#Uq l 2$i^2\Zm P6Y#YO 0 O:2wtN 5$ׁ>~@ ̓KTj&@@]z1PP'[FĒ3M dA =Ӕ!:+d.]-wdFT" 8U67Z(ls|$`8U $`|XMP GCv}C_>(UTHL@*BE5\4FWQ*٩4Fx`mͧ@(< $: zmCT"xy3TkP@?JB5A'JN6a[UޑD#ԨlgKfW`>D*A8G'zHpP)?H)@>x)WPA ԱS좯7RD-1wbdגva ::]}G"N9uaLD £ɂэ#?V^~wRA4< do}'L"x8$ L"ESpB=@ ":dl:Okeb~E]$RЃ@pYR,H؅Vgh'+i""SjaGvK@D.B.?P{ܣH?"aَJ_z0,a8!L5n=AZG=мe|@@VX#摄?&I"P (M(@ φ$պI k[0fEusahif=Ӿc@SE+Af^{s _c$KHP7<i'Yo{`;X1(b5Cq H[ѥ/Df6A.x VQ SxA*y#`jx˺Ώmapu__"x *ī@ 0j"x@BfA!Br* E5 bSl7>b<0F4L3 W+'X'=&`D%t*@fBXV]:B9XpptRHi;؃p0c* :x;u0]Y었!s0$$C8p-P$oА.n 5  Ј "95r('0I4Y6yNdB00V+> x@8JLPAA7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@a*ڱp $ЖcT CYy>0@AN)G#Ú0T)x`.0n7o#!)"by**@*=YyvG֥1Qtl QCp0 H@SN3H!q Ã[VS晊p٠{V$ Qc!Aw 'ZuGh)Wp0 R 3E*`4@X*Jr@i<;H:Ah27E x* n uPJPK Bj7),< Q"-"ZuGg'٦t* Sy Ll:Gq$"e?#pPT0&ڙ!a^HH@zFQm xe%r> Ni@ V#c aZpAy3zQz@#4 #]-d0u,yjE&0 ;0Z/YAq#0n`!2VaIÀPf2l ۲.1 1 PA`8! wB]@- T[V  [=53!"1T"ѕ7@OzNauS{|۷~2K<q0O0Jpa/ :4( .` o+?w0>{YKx)&&6 f4=XPq@3@҆ ` !u `Upe<;;A A#" a9{# I)+1/0 q0|X TGzA cF q50 p$` "<1w$|(*,.\%'2<4<5:u=;B!8G b‹9@p*4?-4A0d > P s@Hhh|R%qP6`W3*6.fw!5 p1 u p5MPkp:nx+>A![Kۺ!Q]yDV r Nc5RZ5K F 3MIb ZBЧI b׭KأG%&dHٖ8 P)dBdM]-qݾU+I \:!>z]У`V!ULxK0 ۻ.Q!$ J;5 Zp6K3EWQ3@ UV 2&mWQSo5 r%Hh"2u{OR)Xn:f00f\du`!hI pIP 15ýf5 ? H7gMAv*$#$ 0 E5sށهzBxњ%QÀ 90T|{VzPxu}3dO3puJ갷 3`w 0a(AKG5] $X` uBNAQ5@T'R&/:SQD>~ G˂Apa9wӟ{/MK T`s:z-{4B< Ōag`]}$0R6Utڠ]+7 ^dS)O+x_J>K \mZK~gСE&]iԩUfkرeϦ]mܹuo'^qC>Q;Koz$_2T7y];lW$ HF9R]rv)LI Zbxڙ!8`|`*Dc<~@X,&S!-YH}BT .%~`3DA 'T (iΒrJ*J,rK.K0sL24L2YD-6ь-J9NO@tPB2ȴ% NG#tRJ+RL3tSN;t  hs3S(QUuUV[uUXcuVZkt3R[{W`vXb5Xd5YfuYhvZjvUv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>O> NCF)TV YlA ,`堄jjyÁ $td "iȐiď%IPR$*Pnћ*"kEc@>Oʬ<&HFASH~[Sd!Ւ&($.ުA`A X<l8p>Α*xBxCA;  @=g6* 9!Xt 0^+4k8: Ԏ:N#s xq'L;SA84ϺRpXNhP;ĈE!S9--4F 4?JôA>jv{SW-ՠԯ=XA4#l>_@j@x8:A:q$b" "f(?pl'P0@7:M,_A C=C@XA׬Ԃ?t0$X ?|!Zw `?40`k@",ՃIɨy?e|B@}JXXo @(QeI(&P c`A~/Mdkѝ6J,,/!@ ]d B4z  CP?0e#Uq l 2$i^2\Zm P6Y#YO 0 O:2wtN 5$ׁ>~@ ̓KTj&@@]z1PP'[FĒ3M dA =Ӕ!:+d.]-wdFT" 8U67Z(ls|$`8U $`|XMP GCv}C_>(UTHL@*BE5\4FWQ*٩4Fx`mͧ@(< $: zmCT"xy3TkP@?JB5A'JN6a[UޑD#ԨlgKfW`>D*A8G'zHpP)?H)@>x)WPA ԱS좯7RD-1wbdגva ::]}G"N9uaLD £ɂэ#?V^~wRA4< do}'L"x8$ L"ESpB=@ ":dl:Okeb~E]$RЃ@pYR,H؅Vgh'+i""SjaGvK@D.B.?P{ܣH?"aَJ_z0,a8!L5n=AZG=мe|@@VX#摄?&I"P (M(@ φ$պI k[0fEusahif=Ӿc@SE+Af^{s _c$KHP7<i'Yo{`;X1(b5Cq H[ѥ/Df6A.x VQ SxA*y#`jx˺Ώmapu__"x *ī@ 0j"x@BfA!Br* E5 bSl7>b<0F4L3 W+'X'=&`D%t*@fBXV]:B9XpptRHi;؃p0c* :x;u0]Y었!s0$$C8p-P$oА.n 5  Ј "95r('0I4Y6yNdB00V+> x@8JLPAA7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@a*ڱp $ЖcT CYy>0@AN)G#Ú0T)x`.0n7o#!)"by**@*=YyvG֥1Qtl QCp0 H@SN3H!q Ã[VS晊p٠{V$ Qc!Aw 'ZuGh)Wp0 R 3E*`4@X*Jr@i<;H:Ah27E x* n uPJPK Bj7),< Q"-"ZuGg'٦t* Sy Ll:Gq$"e?#pPT0&ڙ!a^HH@zFQm xe%r> Ni@ V#c aZpAy3zQz@#4 #]-d0u,yjE&0 ;0Z/YAq#0n`!2VaIÀPf2l ۲.1 1 PA`8! wB]@- T[V  [=53!"1T"ѕ7@OzNauS{|۷~2K<q0O0Jpa/ :4( .` o+?w0>{YKx)&&6 f4=XPq@3@҆ ` !u `Upe<;;A A#" a9{# I)+1/0 q0|X TGzA cF q50 p$` "<1w$|(*,.\%'2<4<5:u=;B!8G b‹9@p*4?-4A0d > P s@Hhh|R%qP6`W3*6.fw!5 p1 u p5MPkp:nx+>A![Kۺ!Q]yDV r Nc5RZ5K F 3MIb ZBЧI b׭KأG%&dHٖ8 P)dBdM]-qݾU+I \:!>z]У`V!ULxK0 ۻ.Q!$ J;5 Zp6K3EWQ3@ UV 2&mWQSo5 r%Hh"2u{OR)Xn:f00f\du`!hI pIP 15ýf5 ? H7gMAv*$#$ 0 E5sށهzBxњ%QÀ 90T|{VzPxu}3dO3puJ갷 3`w 0a(AKG5] $X` uBNAQ5@T'R&/:SQD>~ G˂Apa9wӟ{/MK T`s:z-{4B< Ōag`]}$0R6Utڠ]+7 ^dS)O+x_J>K \mZK~gСE&]iԩUfkرeϦ]mܹuo'^qC>Q;Koz$_2T7y];lW$ HF9R]rv)LI Zbxڙ!8`|`*Dc<~@X,&S!-YH}BT .%~`3DA 'T (iΒrJ*J,rK.K0sL24L2YD-6ь-J9NO@tPB2ȴ% NG#tRJ+RL3tSN;t  hs3S(QUuUV[uUXcuVZkt3R[{W`vXb5Xd5YfuYhvZjvUv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>O> NCF)TV YlA ,`堄jjyÁ $td "iȐiď%IPR$*Pnћ*"kEc@>Oʬ<&HFASH~[Sd!Ւ&($.ުA`A X<l8p>Α*xBxCA;  @=g6* 9!Xt 0^+4k8: Ԏ:N#s xq'L;SA84ϺRpXNhP;ĈE!S9--4F 4?JôA>jv{SW-ՠԯ=XA4#l>_@j@x8:A:q$b" "f(?pl'P0@7:M,_A C=C@XA׬Ԃ?t0$X ?|!Zw `?40`k@",ՃIɨy?e|B@}JXXo @(QeI(&P c`A~/Mdkѝ6J,,/!@ ]d B4z  CP?0e#Uq l 2$i^2\Zm P6Y#YO 0 O:2wtN 5$ׁ>~@ ̓KTj&@@]z1PP'[FĒ3M dA =Ӕ!:+d.]-wdFT" 8U67Z(ls|$`8U $`|XMP GCv}C_>(UTHL@*BE5\4FWQ*٩4Fx`mͧ@(< $: zmCT"xy3TkP@?JB5A'JN6a[UޑD#ԨlgKfW`>D*A8G'zHpP)?H)@>x)WPA ԱS좯7RD-1wbdגva ::]}G"N9uaLD £ɂэ#?V^~wRA4< do}'L"x8$ L"ESpB=@ ":dl:Okeb~E]$RЃ@pYR,H؅Vgh'+i""SjaGvK@D.B.?P{ܣH?"aَJ_z0,a8!L5n=AZG=мe|@@VX#摄?&I"P (M(@ φ$պI k[0fEusahif=Ӿc@SE+Af^{s _c$KHP7<i'Yo{`;X1(b5Cq H[ѥ/Df6A.x VQ SxA*y#`jx˺Ώmapu__"x *ī@ 0j"x@BfA!Br* E5 bSl7>b<0F4L3 W+'X'=&`D%t*@fBXV]:B9XpptRHi;؃p0c* :x;u0]Y었!s0$$C8p-P$oА.n 5  Ј "95r('0I4Y6yNdB00V+> x@8JLPAA7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@a*ڱp $ЖcT CYy>0@AN)G#Ú0T)x`.0n7o#!)"by**@*=YyvG֥1Qtl QCp0 H@SN3H!q Ã[VS晊p٠{V$ Qc!Aw 'ZuGh)Wp0 R 3E*`4@X*Jr@i<;H:Ah27E x* n uPJPK Bj7),< Q"-"ZuGg'٦t* Sy Ll:Gq$"e?#pPT0&ڙ!a^HH@zFQm xe%r> Ni@ V#c aZpAy3zQz@#4 #]-d0u,yjE&0 ;0Z/YAq#0n`!2VaIÀPf2l ۲.1 1 PA`8! wB]@- T[V  [=53!"1T"ѕ7@OzNauS{|۷~2K<q0O0Jpa/ :4( .` o+?w0>{YKx)&&6 f4=XPq@3@҆ ` !u `Upe<;;A A#" a9{# I)+1/0 q0|X TGzA cF q50 p$` "<1w$|(*,.|,'2<4<5:l[=;Bu!8G b‹@z>s?odbzR`W#Ѥ `RSBIԺۮAb/i.)G40!` 74Y#Ub=#є$f <%}*P/ݺ=zDYm"Jj-mB-N;%Rj[E Xb5: R=feXńpP ۼ0^Q!$ J;5 Zp6K3EWQ3 @ UV 2&mWQSo5 r%Jh"2u{OR)Zn:f00f\du`!jI pIP|q5 1h1aXp\a/,o :5f\@oV QlyЬ@5SCN{ErFʃx4Q}6K;3U3g@;S&-ۛg⣞.@I @I6$p.pz&^JLM@G2g QPlսmUGR][3QM@BCcPF'~,`٪A;Cq& %IB}N}PQĒ_P@+@Tbu9tRy9pBbTy[^qce&R]a!wN#!q> 15Ľf5 ? H Rodb@1mK PT3}-Y5 8C'?p^ h * X'Q15M9WI{1vG3ʁ+hcp \P/߃u .dB]=vӧP'~tT ՉԆ <˧NT,4>`Xsa; 9ºxyw/! ,SG/|FҢ~\=, ˷o$XjN~7aL߅t**z {j;ęuu@&]iԩUfkرeϦ]mܹuo'^qɕ/gޜvsG*h Rބ6Kf0k7t_ ғ1gWKܘ *~J0%j: jjgd&P}GS%a~Ldi+! ~R)O@tPB 5PDRHs6T4<'RL3tSN;SPC5S A6aT*eUXcuVZkV\sRHٔTWWwvXb5XdUvYfu`vZjZlv[naͯ[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>O> NCF)TV YlA ,`堄jjyÁ $td "iȐiď%IPR$*Pnћ*"kEc@>Oʬ<&HFASH~[Sd!Ւ&($.ުA`A X<l8p>Α*xBxCA;  @=g6* 9!Xt 0^+4k8: Ԏ:N#s xq'L;SA84ϺRpXNhP;ĈE!S9--4F 4?JôA>jv{SW-ՠԯ=XA4#l>_@j@x8:A:q$b" "f(?pl'P0@7:M,_A C=C@XA׬Ԃ?t0$X ?|!Zw `?40`k@",ՃIɨy?e|B@}JXXo @(QeI(&P c`A~/Mdkѝ6J,,/!@ ]d B4z  CP?0e#Uq l 2$i^2\Zm P6Y#YO 0 O:2wtN 5$ׁ>~@ ̓KTj&@@]z1PP'[FĒ3M dA =Ӕ!:+d.]-wdFT" 8U67Z(ls|$`8U $`|XMP GCv}C_>(UTHL@*BE5\4FWQ*٩4Fx`mͧ@(< $: zmCT"xy3TkP@?JB5A'JN6a[UޑD#ԨlgKfW`>D*A8G'zHpP)?H)@>x)WPA ԱS좯7RD-1wbdגva ::]}G"N9uaLD £ɂэ#?V^~wRA4< do}'L"x8$ L"ESpB=@ ":dl:Okeb~E]$RЃ@pYR,H؅Vgh'+i""SjaGvK@D.B.?P{ܣH?"aَJ_z0,a8!L5n=AZG=мe|@@VX#摄?&I"P (M(@ φ$պI k[0fEusahif=Ӿc@SE+Af^{s _c$KHP7<i'Yo{`;X1(b5Cq H[ѥ/Df6A.x VQ SxA*y#`jx˺Ώmapu__"x *ī@ 0j"x@BfA!Br* E5 bSl7>b<0F4L3 W+'X'=&`D%t*@fBXV]:B9XpptRHi;؃p0c* :x;u0]Y었!s0$$C8p-P$oА.n 5  Ј "95r('0I4Y6yNdB00V+> x@8JLPAA7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@a*ڱp $ЖcT CYy>0@AN)G#Ú0T)x`.0n7o#!)"by**@*=YyvG֥1Qtl QCp0 H@SN3H!q Ã[VS晊p٠{V$ Qc!Aw 'ZuGh)Wp0 R 3E*`4@X*Jr@i<;H:Ah27E x* n uPJPK Bj7),< Q"-"ZuGg'٦t* Sy Ll:Gq$"e?#pPT0&ڙ!a^HH@zFQm xe%r> Ni@ V#c aZpAy3zQz@#4 #]-d0u,yjE&0 ;0Z/YAq#0n`!2VaIÀPf2l ۲.1 1 PA`8! wB]@- T[V  [=53!"1T"ѕ7@OzNauS{|۷~2K<q0O0Jpa/ :4( .` o+?w0>{YKx)&&6 f4=XPq@3@҆ ` !u `Upe<;;A A#" a9{# I)+1/0 q0|X TGzA cF q50 p$` "<1w$|(*,.|,'2<4<5:l[=;Bu!8G b‹@z>s?odbzR`W#Ѥ `RSBIԺۮAb/i.)G40!` 74Y#Ub=#є$f <%}*P/ݺ=zDYm"Jj-mB-N;%Rj[E Xb5: R=feXńpP ۼ0^Q!$ J;5 Zp6K3EWQ3 @ UV 2&mWQSo5 r%Jh"2u{OR)Zn:f00f\du`!jI pIP|q5 1h1aXp\a/,o :5f\@oV QlyЬ@5SCN{ErFʃx4Q}6K;3U3g@;S&-ۛg⣞.@I @I6$p.pz&^JLM@G2g QPlսmUGR][3QM@BCcPF'~,`٪A;Cq& %IB}N}PQĒ_P@+@Tbu9tRy9pBbTy[^qce&R]a!wN#!q> 15Ľf5 ? H Rodb@1mK PT3}-Y5 8C'?p^ h * X'Q15M9WI{1vG3ʁ+hcp \P/߃u .dB]=vӧP'~tT ՉԆ <˧NT,4>`Xsa; 9ºxyw/! ,SG/|FҢ~\=, ˷o$XjN~7aL߅t**z {j;ęuu@&]iԩUfkرeϦ]mܹuo'^qɕ/gޜvsG*h Rބ6Kf0k7t_ ғ1gWKܘ *~J0%j: jjgd&P}GS%a~Ldi+! ~R)O@tPB 5PDRHs6T4<'RL3tSN;SPC5S A6aT*eUXcuVZkV\sRHٔTWWwvXb5XdUvYfu`vZjZlv[naͯ[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>Ӂ(/0 Ih&QlIGqvdP=lA ,`堄jjy td#biȐiJ4%A@R$*Pnћq!xkEc=ԓ=&HFӎASH~[Sd!B&($.ުAXAQVplP8P@:Αqx Bxc;  :gp$q 9@O!ЎLt0O0^+4k8; Ď;N#sAxq'LCA8p0ϺZ ,VC}H;h S9--4F jv{SW-ՠԯ=hA4#l>_@j@x8:A;}$""*ҋ"f^O180ac@R,IWyP<eB@Ճ}JXXo @(QeI(&P c`A~/Mdkѝ6J&+/!@ ]|(z H CPI<0e#Uq d 28$i^2\Z"m p6Y#YO PhO@=2xtN 6$끾y@ !̓T&@@R]z01^CP'[FĒ3M`O d =ӔH!!:Yd.]-wdFT" 867Z(lsz$`8U $`|VMP GCv}#_H:(`HT:EM5\4FWQ*٩4F{Xmͧ@,< DZ=у@zmߌ"Ҁ{y3TkP@?JBAJN6a[UޑD#ԨlgKfW`[:HqPA8iGu@ p3?H9=|%WC Sx7RD-1xbdגvcHr:]}G"N9urD £ɂэ&I"É 8(H1@ Їφ$պI kN0fEusahif<Ӿc@4SE+Af^{s c$KHP7<iYo{`;X1(b5CDH[ѥ/Df6A.x VQn$sNxA(}`jx˺>mapu__"x *ī@ 0j"x@BfA!>h{ xI.Vo5L}_ iA`OP'!@B$Ńp?" GX.SOߔbc Dd'0 De1^ A*B0W0= o4cIf0H5׀= >@ Br* E5 bSlV7>b<0Ȧ4L2SW+'X'=&`D%t*+@fBXV]B9VpptRHi;؃pPcq  x;u]Y었 0$$C8p-p"$oXА.n 5  Ј "95r('0I4Y6yNdB0V+> x@8JL@A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@aqڱp $ЖcT CYy>`AN)G#Ú0T)x`.0n7o#!)"by*q@*=YyvG1Qtl ACPH@SN3H3!}pà p[ޠVS晊p٠{V$ Qc!Aw  'ZuGh)W0 R3Eq`4@V*Jr@i<;HˠAh27E x* { uPJPKBj7),< Q"-"ZuGg'٦tq SyLl:Gq$"e?#pPT0&ڙ!a^HH&@zFQmp xe%r> Ni@ V#c aZpAy3zQz@#4 # ]"-d0u,yjD& ;0Z/YAQ#0n`!2VaI倯Pf l ۲.1 1 P`8 !rwbB ހ]@- T[V  [<`53!"1T"ѕ7`@5zNauS{|۷~2K>`}0O0Jpa/ :4 .` o+?w0>{YKx)&&6 f4=VPq@S@҆G ` !u :`Upe<;;A A#" a9{# I)+1/Pq0|V TGzA cF q5Pp$9` "<1w$|(*,.;'2<4<5:F<$;B\[!8G b‹@^x$`EowD3BBC P?'D)V6A'K\`3 >z>?o~bzR W#Ѥ &`RBw [cm؝ݠb/9.G40!` 74Y#UDbT@=#є$f; >%}*c/fߺ=zDYm"Jj-m-N%Rj[E 0VbT5: R=fe-XńpPƺJsR~Q!$`@ J;t5 Zp6K3EWQ3` UV 2&mWcQSoUr%lh"2u{OR)|n:f0f\du`!I  IPȞQX}ff5&ߠScm:E&n&ͺxkTs;9䴷K]$wh`d<oNg3Z 4 =%I`R0 ̽y9Pp֭$_!P+tjC"0gV@lDyx$>f]6VEy$յ5T.44F `|W͢m3d:1[njPZ۩%/n~QĒ_@+@Tbu9tRy9pBbTy[^qce&l]a!WNDL?}> 15f5 ? Ha 2}Av*$#$ PE5sށهzBxњ%QÀLD90T|{@8^=n,6Hqg:3DSTqE[tEcqFkFsFxXD!) pr@G+L@ :: `R.4ȧE=nL Zb؉ bʡ' z`.᥃yPKyB H *gtk.lR4Kb3y"zځ-y a.`w4XdUvYfuYhvZjmVzqScZw\r5\tUw]vu]xuZ>p4\}K\}_x` 6` me_+b3xc;c1ߏ)dSVye[vecNdkfsyg{g2zh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>Ӂ(/0 Ih&QlIGqvdP=lA ,`堄jjy td#biȐiJ4%A@R$*Pnћq!xkEc=ԓ=&HFӎASH~[Sd!B&($.ުAXAQVplP8P@:Αqx Bxc;  :gp$q 9@O!ЎLt0O0^+4k8; Ď;N#sAxq'LCA8p0ϺZ ,VC}H;h S9--4F jv{SW-ՠԯ=hA4#l>_@j@x8:A;}$""*ҋ"f^O180ac@R,IWyP<eB@Ճ}JXXo @(QeI(&P c`A~/Mdkѝ6J&+/!@ ]|(z H CPI<0e#Uq d 28$i^2\Z"m p6Y#YO PhO@=2xtN 6$끾y@ !̓T&@@R]z01^CP'[FĒ3M`O d =ӔH!!:Yd.]-wdFT" 867Z(lsz$`8U $`|VMP GCv}#_H:(`HT:EM5\4FWQ*٩4F{Xmͧ@,< DZ=у@zmߌ"Ҁ{y3TkP@?JBAJN6a[UޑD#ԨlgKfW`[:HqPA8iGu@ p3?H9=|%WC Sx7RD-1xbdגvcHr:]}G"N9urD £ɂэ&I"É 8(H1@ Їφ$պI kN0fEusahif<Ӿc@4SE+Af^{s c$KHP7<iYo{`;X1(b5CDH[ѥ/Df6A.x VQn$sNxA(}`jx˺>mapu__"x *ī@ 0j"x@BfA!>h{ xI.Vo5L}_ iA`OP'!@B$Ńp?" GX.SOߔbc Dd'0 De1^ A*B0W0= o4cIf0H5׀= >@ Br* E5 bSlV7>b<0Ȧ4L2SW+'X'=&`D%t*+@fBXV]B9VpptRHi;؃pPcq  x;u]Y었 0$$C8p-p"$oXА.n 5  Ј "95r('0I4Y6yNdB0V+> x@8JL@A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@aqڱp $ЖcT CYy>`AN)G#Ú0T)x`.0n7o#!)"by*q@*=YyvG1Qtl ACPH@SN3H3!}pà p[ޠVS晊p٠{V$ Qc!Aw  'ZuGh)W0 R3Eq`4@V*Jr@i<;HˠAh27E x* { uPJPKBj7),< Q"-"ZuGg'٦tq SyLl:Gq$"e?#pPT0&ڙ!a^HH&@zFQmp xe%r> Ni@ V#c aZpAy3zQz@#4 # ]"-d0u,yjD& ;0Z/YAQ#0n`!2VaI倯Pf l ۲.1 1 P`8 !rwbB ހ]@- T[V  [<`53!"1T"ѕ7`@5zNauS{|۷~2K>`}0O0Jpa/ :4 .` o+?w0>{YKx)&&6 f4=VPq@S@҆G ` !u :`Upe<;;A A#" a9{# I)+1/Pq0|V TGzA cF q5Pp$9` "<1w$|(*,.;'2<4<5:F<$;B\[!8G b‹@^x$`EowD3BBC P?'D)V6A'K\`3 >z>?o~bzR W#Ѥ &`RBw [cm؝ݠb/9.G40!` 74Y#UDbT@=#є$f; >%}*c/fߺ=zDYm"Jj-m-N%Rj[E 0VbT5: R=fe-XńpPƺJsR~Q!$`@ J;t5 Zp6K3EWQ3` UV 2&mWcQSoUr%lh"2u{OR)|n:f0f\du`!I  IPȞQX}ff5&ߠScm:E&n&ͺxkTs;9䴷K]$wh`d<oNg3Z 4 =%I`R0 ̽y9Pp֭$_!P+tjC"0gV@lDyx$>f]6VEy$յ5T.44F `|W͢m3d:1[njPZ۩%/n~QĒ_@+@Tbu9tRy9pBbTy[^qce&l]a!WNDL?}> 15f5 ? Ha 2}Av*$#$ PE5sށهzBxњ%QÀLD90T|{@8^=n,6Hqg:3DSTqE[tEcqFkFsFxXD!) pr@G+L@ :: `R.4ȧE=nL Zb؉ bʡ' z`.᥃yPKyB H *gtk.lR4Kb3y"zځ-y a.`w4XdUvYfuYhvZjmVzqScZw\r5\tUw]vu]xuZ>p4\}K\}_x` 6` me_+b3xc;c1ߏ)dSVye[vecNdkfsyg{g2zh6hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>Ӂ(/0 Ih&QlIGqvdP=lA ,`堄jjy td#biȐiJ4%A@R$*Pnћq!xkEc=ԓ=&HFӎASH~[Sd!B&($.ުAXAQVplP8P@:Αqx Bxc;  :gp$q 9@O!ЎLt0O0^+4k8; Ď;N#sAxq'LCA8p0ϺZ ,VC}H;h S9--4F jv{SW-ՠԯ=hA4#l>_@j@x8:A;}$""*ҋ"f^O180ac@R,IWyP<eB@Ճ}JXXo @(QeI(&P c`A~/Mdkѝ6J&+/!@ ]|(z H CPI<0e#Uq d 28$i^2\Z"m p6Y#YO PhO@=2xtN 6$끾y@ !̓T&@@R]z01^CP'[FĒ3M`O d =ӔH!!:Yd.]-wdFT" 867Z(lsz$`8U $`|VMP GCv}#_H:(`HT:EM5\4FWQ*٩4F{Xmͧ@,< DZ=у@zmߌ"Ҁ{y3TkP@?JBAJN6a[UޑD#ԨlgKfW`[:HqPA8iGu@ p3?H9=|%WC Sx7RD-1xbdגvcHr:]}G"N9urD £ɂэ&I"É 8(H1@ Їφ$պI kN0fEusahif<Ӿc@4SE+Af^{s c$KHP7<iYo{`;X1(b5CDH[ѥ/Df6A.x VQn$sNxA(}`jx˺>mapu__"x *ī@ 0j"x@BfA!>h{ xI.Vo5L}_ iA`OP'!@B$Ńp?" GX.SOߔbc Dd'0 De1^ A*B0W0= o4cIf0H5׀= >@ Br* E5 bSlV7>b<0Ȧ4L2SW+'X'=&`D%t*+@fBXV]B9VpptRHi;؃pPcq  x;u]Y었 0$$C8p-p"$oXА.n 5  Ј "95r('0I4Y6yNdB0V+> x@8JL@A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@aqڱp $ЖcT CYy>`AN)G#Ú0T)x`.0n7o#!)"by*q@*=YyvG1Qtl ACPH@SN3H3!}pà p[ޠVS晊p٠{V$ Qc!Aw  'ZuGh)W0 R3Eq`4@V*Jr@i<;HˠAh27E x* { uPJPKBj7),< Q"-"ZuGg'٦tq SyLl:Gq$"e?#pPT0&ڙ!a^HH&@zFQmp xe%r> Ni@ V#c aZpAy3zQz@#4 # ]"-d0u,yjD& ;0Z/YAQ#0n`!2VaI倯Pf l ۲.1 1 P`8 !rwbB ހ]@- T[V  [<`53!"1T"ѕ7`@5zNauS{|۷~2K>`}0O0Jpa/ :4 .` o+?w0>{YKx)&&6 f4=VPq@S@҆G ` !u :`Upe<;;A A#" a9{# I)+1/Pq0|V TGzA cF q5Pp$9` "<1w$|(*,.<['2<4<5:L0<\;BF!8G b‹y@^x$`EowD3BBC P?'D)V6A'K\`3 >z>?obzR  W#Ѥ &`RBw ڽݖb/9.G40!` 74Y#UDbT@=#є$f; >%}*c/ߺ=zDYm"Jj-m-N;%Rj[E 0Vbt5: R=fe/XńpP׌T^QRM21V0C^sΠ% @ Ajd?qXtn@5 >v1^Qa5"ofz;(MI5V WYRv*"SQGL${c cEVwê;fw 1f@|Ev*SnqX}ff5&6ߠScm:E&n&ͺxkTs;9䴷K]$wh`d<oNg3Z 4 =%I`R0*νy9Pp(!P+tjC"0gV@lDyx$Bf]VVEy$յ5T.44F `D|W͢m3d:1[njPZ$'ʮ?QĒ_@+@Tbu9tRy9pBbTy[^qce&n]a!WNC܄P?}> 15f5 ? 1Ha?meg]1mK PT3G}-Y5 hDC%'?p^SWOw .א>Ga=q̰a^:cWc=y@֫@ %XMݹ" xKR 5̻`+$zɋ,Vm8!CMQYiծe[qΥ[]y_&\aĉ/fcȑ?7/…8=@:>;wQyvT (Ն &+t;kz SrYfuYhvZjZlՖGuGPm3\tUw]vu]xw^z]>z\sY_ \x` 6`Vxa pqe `3xc;cCy_8e[vecyfkoyg{gzh$hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>Ӂ(/0 Ih&QlIGqvdP=lA ,`堄jjy td#biȐiJ4%A@R$*Pnћq!xkEc=ԓ=&HFӎASH~[Sd!B&($.ުAXAQVplP8P@:Αqx Bxc;  :gp$q 9@O!ЎLt0O0^+4k8; Ď;N#sAxq'LCA8p0ϺZ ,VC}H;h S9--4F jv{SW-ՠԯ=hA4#l>_@j@x8:A;}$""*ҋ"f^O180ac@R,IWyP<eB@Ճ}JXXo @(QeI(&P c`A~/Mdkѝ6J&+/!@ ]|(z H CPI<0e#Uq d 28$i^2\Z"m p6Y#YO PhO@=2xtN 6$끾y@ !̓T&@@R]z01^CP'[FĒ3M`O d =ӔH!!:Yd.]-wdFT" 867Z(lsz$`8U $`|VMP GCv}#_H:(`HT:EM5\4FWQ*٩4F{Xmͧ@,< DZ=у@zmߌ"Ҁ{y3TkP@?JBAJN6a[UޑD#ԨlgKfW`[:HqPA8iGu@ p3?H9=|%WC Sx7RD-1xbdגvcHr:]}G"N9urD £ɂэ&I"É 8(H1@ Їφ$պI kN0fEusahif<Ӿc@4SE+Af^{s c$KHP7<iYo{`;X1(b5CDH[ѥ/Df6A.x VQn$sNxA(}`jx˺>mapu__"x *ī@ 0j"x@BfA!>h{ xI.Vo5L}_ iA`OP'!@B$Ńp?" GX.SOߔbc Dd'0 De1^ A*B0W0= o4cIf0H5׀= >@ Br* E5 bSlV7>b<0Ȧ4L2SW+'X'=&`D%t*+@fBXV]B9VpptRHi;؃pPcq  x;u]Y었 0$$C8p-p"$oXА.n 5  Ј "95r('0I4Y6yNdB0V+> x@8JL@A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@aqڱp $ЖcT CYy>`AN)G#Ú0T)x`.0n7o#!)"by*q@*=YyvG1Qtl ACPH@SN3H3!}pà p[ޠVS晊p٠{V$ Qc!Aw  'ZuGh)W0 R3Eq`4@V*Jr@i<;HˠAh27E x* { uPJPKBj7),< Q"-"ZuGg'٦tq SyLl:Gq$"e?#pPT0&ڙ!a^HH&@zFQmp xe%r> Ni@ V#c aZpAy3zQz@#4 # ]"-d0u,yjD& ;0Z/YAQ#0n`!2VaI倯Pf l ۲.1 1 P`8 !rwbB ހ]@- T[V  [<`53!"1T"ѕ7`@5zNauS{|۷~2K>`}0O0Jpa/ :4 .` o+?w0>{YKx)&&6 f4=VPq@S@҆G ` !u :`Upe<;;A A#" a9{# I)+1/Pq0|V TGzA cF q5Pp$9` "<1w$|(*,.<['2<4<5:L0<\;BF!8G b‹y@^x$`EowD3BBC P?'D)V6A'K\`3 >z>?obzR  W#Ѥ &`RBw ڽݖb/9.G40!` 74Y#UDbT@=#є$f; >%}*c/ߺ=zDYm"Jj-m-N;%Rj[E 0Vbt5: R=fe/XńpP׌T^QRM21V0C^sΠ% @ Ajd?qXtn@5 >v1^Qa5"ofz;(MI5V WYRv*"SQGL${c cEVwê;fw 1f@|Ev*SnqX}ff5&6ߠScm:E&n&ͺxkTs;9䴷K]$wh`d<oNg3Z 4 =%I`R0*νy9Pp(!P+tjC"0gV@lDyx$Bf]VVEy$յ5T.44F `D|W͢m3d:1[njPZ$'ʮ?QĒ_@+@Tbu9tRy9pBbTy[^qce&n]a!WNC܄P?}> 15f5 ? 1Ha?meg]1mK PT3G}-Y5 hDC%'?p^SWOw .א>Ga=q̰a^:cWc=y@֫@ %XMݹ" xKR 5̻`+$zɋ,Vm8!CMQYiծe[qΥ[]y_&\aĉ/fcȑ?7/…8=@:>;wQyvT (Ն &+t;kz SrYfuYhvZjZlՖGuGPm3\tUw]vu]xw^z]>z\sY_ \x` 6`Vxa pqe `3xc;cCy_8e[vecyfkoyg{gzh$hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>Ӂ(/0 Ih&QlIGqvdP=lA ,`堄jjy td#biȐiJ4%A@R$*Pnћq!xkEc=ԓ=&HFӎASH~[Sd!B&($.ުAXAQVplP8P@:Αqx Bxc;  :gp$q 9@O!ЎLt0O0^+4k8; Ď;N#sAxq'LCA8p0ϺZ ,VC}H;h S9--4F jv{SW-ՠԯ=hA4#l>_@j@x8:A;}$""*ҋ"f^O180ac@R,IWyP<eB@Ճ}JXXo @(QeI(&P c`A~/Mdkѝ6J&+/!@ ]|(z H CPI<0e#Uq d 28$i^2\Z"m p6Y#YO PhO@=2xtN 6$끾y@ !̓T&@@R]z01^CP'[FĒ3M`O d =ӔH!!:Yd.]-wdFT" 867Z(lsz$`8U $`|VMP GCv}#_H:(`HT:EM5\4FWQ*٩4F{Xmͧ@,< DZ=у@zmߌ"Ҁ{y3TkP@?JBAJN6a[UޑD#ԨlgKfW`[:HqPA8iGu@ p3?H9=|%WC Sx7RD-1xbdגvcHr:]}G"N9urD £ɂэ&I"É 8(H1@ Їφ$պI kN0fEusahif<Ӿc@4SE+Af^{s c$KHP7<iYo{`;X1(b5CDH[ѥ/Df6A.x VQn$sNxA(}`jx˺>mapu__"x *ī@ 0j"x@BfA!>h{ xI.Vo5L}_ iA`OP'!@B$Ńp?" GX.SOߔbc Dd'0 De1^ A*B0W0= o4cIf0H5׀= >@ Br* E5 bSlV7>b<0Ȧ4L2SW+'X'=&`D%t*+@fBXV]B9VpptRHi;؃pPcq  x;u]Y었 0$$C8p-p"$oXА.n 5  Ј "95r('0I4Y6yNdB0V+> x@8JL@A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@aqڱp $ЖcT CYy>`AN)G#Ú0T)x`.0n7o#!)"by*q@*=YyvG1Qtl ACPH@SN3H3!}pà p[ޠVS晊p٠{V$ Qc!Aw  'ZuGh)W0 R3Eq`4@V*Jr@i<;HˠAh27E x* { uPJPKBj7),< Q"-"ZuGg'٦tq SyLl:Gq$"e?#pPT0&ڙ!a^HH&@zFQmp xe%r> Ni@ V#c aZpAy3zQz@#4 # ]"-d0u,yjD& ;0Z/YAQ#0n`!2VaI倯Pf l ۲.1 1 P`8 !rwbB ހ]@- T[V  [<`53!"1T"ѕ7`@5zNauS{|۷~2K>`}0O0Jpa/ :4 .` o+?w0>{YKx)&&6 f4=VPq@S@҆G ` !u :`Upe<;;A A#" a9{# I)+1/Pq0|V TGzA cF q5Pp$9` "<1w$|(*,.<['2<4<5:L0<\;BF!8G b‹y@^x$`EowD3BBC P?'D)V6A'K\`3 >z>?obzR  W#Ѥ &`RBw ڽݖb/9.G40!` 74Y#UDbT@=#є$f; >%}*c/ߺ=zDYm"Jj-m-N;%Rj[E 0Vbt5: R=fe/XńpP׌T^QRM21V0C^sΠ% @ Ajd?qXtn@5 >v1^Qa5"ofz;(MI5V WYRv*"SQGL${c cEVwê;fw 1f@|Ev*SnqX}ff5&6ߠScm:E&n&ͺxkTs;9䴷K]$wh`d<oNg3Z 4 =%I`R0*νy9Pp(!P+tjC"0gV@lDyx$Bf]VVEy$յ5T.44F `D|W͢m3d:1[njPZ$'ʮ?QĒ_@+@Tbu9tRy9pBbTy[^qce&n]a!WNC܄P?}> 15f5 ? 1Ha?meg]1mK PT3G}-Y5 hDC%'?p^SWOw .א>Ga=q̰a^:cWc=y@֫@ %XMݹ" xKR 5̻`+$zɋ,Vm8!CMQYiծe[qΥ[]y_&\aĉ/fcȑ?7/…8=@:>;wQyvT (Ն &+t;kz SrYfuYhvZjZlՖGuGPm3\tUw]vu]xw^z]>z\sY_ \x` 6`Vxa pqe `3xc;cCy_8e[vecyfkoyg{gzh$hVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>EJF)TV ?޸:Ӂ(s/ Ih&QlΚgzN>tg;@P Xi衈&T| A*h E# FH@32(x6tHwAP_ zr&BF%;A,6lQ$O9 9S#Ԧc%x2.LPSA8΅40tGY ErNh>M1 xRQ? d4J34AQO]kvstum@YyD3AnG(&lPtiNat ux@S0"|=#jOD H@o4d;cO&=7"`Q>pG:- P7? تG׽#}ud` ׀. ~BQ 7cc(fhcG1>np~/С?  X% "$  F8'wp(xcY\`=, G pYdPA4a pǧ,2$.$ 8@@" 0\ĩzH΁Q)׳7ap Ji.A @ !̓D#z@1!PD?2",(H X)WR ȇ6X|x΄4]2ЗY,5FiKcЇ~'AFfG@=-cFζmGH@KS C5'E:;59(jLwW̃ ȓmn-Z+'AX[:ž%3Um"POV $uRXU3n΁p1[MO l]b{+聱md'x]Ddf9AzEY!;Б0GK-<NwYpQbB D"'{iYVr 8I O]7 6b^ @x6PҮ DDY<#€|:NM0H, 1G"BC@1[= KUf)| F͠cf@D5Z'=0> @r' C5 wfFBwr<2` '7 FNFX'Q@!Dwb ]Gt pEGP(|bF-%@?F p [T X~؈2P?52 03`T/@>ܒb KhLCEJ(C|ՊL P@ 'PӅY.n 06' 03$Y&y5r&ђO.Y26y8UхB@b*@ `:LٔNPAaUWY\ٕ^V*`Yfyhjlٖnpr9tYvyxz|ٗ~mui+)pzw)9A;*d 9Y,@ځp q[$[y{iy >`V}7" #AqjpT-V/ nUhs^"F 9"} !sYy9iV-sC7=Gu0 _@VNc̈pq} b BpB\OTɊ٠|vC2.l ^Vh@pp '@W4 &D C ">@@ kH[C"3B(T9{phO])`gUY"@AlڦM) T@Pa01+UEv\m .̅fsV JnZz7ES%Dn`IEl1 ^aqJ|T x&pګF Yx5Q"`7УF`ɩGX00D8dz3ZQ`Ac*QQ%Cϥ6$IJ⨯DpE$Pz0z.U+1# n`""Ua]՘rPfps;4[ 1hFpRƀ1 "ɀZ )P(0]2[ E™6\۵1Q s(L*G20]%y`C"aw[v=A`5終;;8[ } J<%Pm?\F0!<KŒ)D|T\TBq@/A QZJ1VB  @"鵴p)?'+\3 BS+&oGNhw%% G -a#u}'ؤ &Y F%tAf݊AbI@ rd 'V v#S6\E_@!"T$m{v% }'D٨āu `%Rc)sogf|;礈S5 tVyUv')QL@dc0f(N; `<*fB y0 ꯾P`Q.%tc>f'^~Ot}57 GP<Aa`5$`Oߞmx:(8ԺlL~4s@KDVc%rfϞc0㲎65::% oo %T *4MIZA^6OI Iv?60$r ϕ`SoIb:8♦:$5Evár``+FQ'E-䰎U}HfqBc"n{`ZDtX@+4ę_(T1u>tNx7oJr13: zq[Re&q+KONhNcp>W Aiƾc`W033k!"2rv)$ #t 0 IsGz x-:W!P skÁĹ 1P=vBku$@iGݾz27M!DI>,pR3@ m* ͼu0}:Syv E0ly_&\aĉ/fcȑ%O\e̙5ogСE~ {9t!Dw#wuT!e <='As `inBp!}w]uxIIؓ a(y=90k/_rI`oƝ J4=#; 2KlcA"xԑ p"lAZ// tȇ4 zG rH"4H$TrI&tI(\bjPgx1PtgoЁG)ǻx>࠭SjAn@ASr0D),1Hj |@N:wxcMr'Jf"'7ewNYLFhN / @a ) ,,-n F9F! Pq0v[n[pw\r5\tՖ2u̶^|w_~_x` ނss[x-{xb+b3xc;LMT^wpc"Fye[vecyfkqam=fTgzh6hVz vizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC> NF)TV >C?(/p Ih&QlIGqvdPA>p ,`堄jjyQ $td "iȐit%IPR$*Pnћp"|kEѓ@>Nʬ<&HFA CH~[Sd!&($.ުABll8`;ΑpxAxCA;$ @=p6p 9!Ltp 0^+4k8: Ԏ:N#sxq'LPSA84ϺRp!NhP; S9--4F 9JôA>jv{SW-ՠԯ=XA4#l>_@@x8:A:qb" "f9l'P@@7:QM,_A ;QG=C@A׬9:1%9|!Zw "?40k@,ՃIWyx9evB@}JXXo @(QeI(&P c`A~/Mdkѝ6J&W/!@\ ]b B4zpCPq90e#Uq l@ 2 8$i^2\Zm P6Y#YO p :O:2wtN 6$ׁs@ p̓KTj&@@]z0qP'[FĒ3M D d稁 =Ӕ!:+d.]-wdFT" 8U67Z(ls|`8U `|MP GSv}_;\(UHX@:BE5\4FWQ٩4Fxmͧ@(< $: !zmC߄"xHy3TkP@?JB5JN6a[UޑD,#ԨlgKfW`;DpA8RzHp?H9@>)W ԁS袯7RD-H*1wbdגvcv:]}G"N9uaD £ɂэ9VswRA4< do}'L"xH ŰL"Eщ)=݀ ":b>p,Dꀀ;:Okeb~E](3ЃOcpYR,HЅVw:gh'+i""SaGvK@D.B9P{ܣP?"a5َJ_z0,a8Lu5n=AZG=мe|@@VX#恁?&I"É 8(-@Wj$պI k[N0fEusahif=Ӿc@SE+Af^{s _G*c$KHP7<Yo{`;X1(b55q dH[%/Df6A.x VQ.$sxA*~#`jx˺~mapu__"x *ī@ P 0j"x@BfA!@h{ I.Vo5Lo iA`OP'!@B$Ńp?" GX.SO =d3"034De1^ Q*B0W0= oDcJf0H5׀= >@ B r* E5 bSl7>b<0F4Lr# W+'X'=&`D%t*+@fBXV]B9pptRHi;؃p`cp x;uu]Y었y0$$C8p-p$oА.n 5  Ј "95r(砒'0I4Y6yNdBu0V+> x@8JLPA!7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@pڱp $ЖcT CYy>u@AN)G#Ú0T)x.0n7o#!)"by*p@*=YyvG֥1Qtl QC K@SN3HsqpÃP[VS晊p٠{V$ Qc!Aw 'ZuGh)W0 R3Ep`40*Jr@i<;HAh27E x* n uPJPKBj7),< Q"-"ZuGg'٦tp SyLl:Gq$"e?#pPT0&ڙ!a^HH@zFQm xe%r> Ni@ V##aZp2Ayg3zQz@#4#]-d0u,yjE& ;0Z/YAa#0n`!2VaI€Pf l ۲.1 1 PA`8!rw B ]@- T[V  [< 53!"1T"ѕ7 @zNauS{|۷~2K@ q0O0Jpa/ :4( .` o+?w20>{YKx)&&6 f4=Pq@c@҆  !u :`Upe<;;A A#" a9{# I)+1/ q)0|  TGzA cF q5 p$;` "<1w$|(*,.m'2<4<!5:L( P1=3v7z7A:Wp+-<@<`\"+- #W[-+ m5-!"vsĔ6%ᬚL}΢6mӅ1bMcUlo})oR}Aeh@R XfzG4>p*4?-4A0d > O s@Hh h|R%qP6`W*.fw!5 }1 p5MQPkp:nx+>A![c= !i]yTV r Nc5Z5K F 3MIb ZѧI bKأG%&dHٖ8 P)bBd]-qݾU +I"\Q!>z]У`V!ʉULxK Ť"@N PQ!$ J;5 Zp6K3EWQ3z@UV 2mW3QSo% r%jh"2u{OR)zn:fu0f\du`!J pJP 15ݽf5 ? H", .rAv*$#$ E5sށهzBxњ%QÀ90T |{ \GoA5 G ι;ιv6:K(\1eΤN:ujx$qiSAsTCBQ'9D 'd)"9Y[Yiծe[qΥ[]y_&\aĉ/fA'_e[w&*XqN>v`8hNL_AR,U gºSw!|sWSPFw#=.f큞s ֙\â q*}B6p`3:zbǟ.$;I!ܩǁ|*zlE[tEcqFkFsqG{?!sgsq{Th08HIvs'R„0$yʯEKsH0*H fj+&wG0\IM,A$WB#Y[*w>I@s`٠ |CP k4g⢪\M0|KE uYhvZjZlv[nGP~FfUw]vu]xw^zN5x` 6`Vxav- xc;cCydKff5yٕ[vecyfkfk8g{gzh:MVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC> NF)TV >C?(/p Ih&QlIGqvdPA>p ,`堄jjyQ $td "iȐit%IPR$*Pnћp"|kEѓ@>Nʬ<&HFA CH~[Sd!&($.ުABll8`;ΑpxAxCA;$ @=p6p 9!Ltp 0^+4k8: Ԏ:N#sxq'LPSA84ϺRp!NhP; S9--4F 9JôA>jv{SW-ՠԯ=XA4#l>_@@x8:A:qb" "f9l'P@@7:QM,_A ;QG=C@A׬9:1%9|!Zw "?40k@,ՃIWyx9evB@}JXXo @(QeI(&P c`A~/Mdkѝ6J&W/!@\ ]b B4zpCPq90e#Uq l@ 2 8$i^2\Zm P6Y#YO p :O:2wtN 6$ׁs@ p̓KTj&@@]z0qP'[FĒ3M D d稁 =Ӕ!:+d.]-wdFT" 8U67Z(ls|`8U `|MP GSv}_;\(UHX@:BE5\4FWQ٩4Fxmͧ@(< $: !zmC߄"xHy3TkP@?JB5JN6a[UޑD,#ԨlgKfW`;DpA8RzHp?H9@>)W ԁS袯7RD-H*1wbdגvcv:]}G"N9uaD £ɂэ9VswRA4< do}'L"xH ŰL"Eщ)=݀ ":b>p,Dꀀ;:Okeb~E](3ЃOcpYR,HЅVw:gh'+i""SaGvK@D.B9P{ܣP?"a5َJ_z0,a8Lu5n=AZG=мe|@@VX#恁?&I"É 8(-@Wj$պI k[N0fEusahif=Ӿc@SE+Af^{s _G*c$KHP7<Yo{`;X1(b55q dH[%/Df6A.x VQ.$sxA*~#`jx˺~mapu__"x *ī@ P 0j"x@BfA!@h{ I.Vo5Lo iA`OP'!@B$Ńp?" GX.SO =d3"034De1^ Q*B0W0= oDcJf0H5׀= >@ B r* E5 bSl7>b<0F4Lr# W+'X'=&`D%t*+@fBXV]B9pptRHi;؃p`cp x;uu]Y었y0$$C8p-p$oА.n 5  Ј "95r(砒'0I4Y6yNdBu0V+> x@8JLPA!7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@pڱp $ЖcT CYy>u@AN)G#Ú0T)x.0n7o#!)"by*p@*=YyvG֥1Qtl QC K@SN3HsqpÃP[VS晊p٠{V$ Qc!Aw 'ZuGh)W0 R3Ep`40*Jr@i<;HAh27E x* n uPJPKBj7),< Q"-"ZuGg'٦tp SyLl:Gq$"e?#pPT0&ڙ!a^HH@zFQm xe%r> Ni@ V##aZp2Ayg3zQz@#4#]-d0u,yjE& ;0Z/YAa#0n`!2VaI€Pf l ۲.1 1 PA`8!rw B ]@- T[V  [< 53!"1T"ѕ7 @zNauS{|۷~2K@ q0O0Jpa/ :4( .` o+?w20>{YKx)&&6 f4=Pq@c@҆  !u :`Upe<;;A A#" a9{# I)+1/ q)0|  TGzA cF q5 p$;` "<1w$|(*,.m'2<4<!5:L( P1=3v7z7A:Wp+-<@<`\"+- #W[-+ m5-!"vsĔ6%ᬚL}΢6mӅ1bMcUlo})oR}Aeh@R XfzG4>p*4?-4A0d > O s@Hh h|R%qP6`W*.fw!5 }1 p5MQPkp:nx+>A![c= !i]yTV r Nc5Z5K F 3MIb ZѧI bKأG%&dHٖ8 P)bBd]-qݾU +I"\Q!>z]У`V!ʉULxK Ť"@N PQ!$ J;5 Zp6K3EWQ3z@UV 2mW3QSo% r%jh"2u{OR)zn:fu0f\du`!J pJP 15ݽf5 ? H", .rAv*$#$ E5sށهzBxњ%QÀ90T |{ \GoA5 G ι;ιv6:K(\1eΤN:ujx$qiSAsTCBQ'9D 'd)"9Y[Yiծe[qΥ[]y_&\aĉ/fA'_e[w&*XqN>v`8hNL_AR,U gºSw!|sWSPFw#=.f큞s ֙\â q*}B6p`3:zbǟ.$;I!ܩǁ|*zlE[tEcqFkFsqG{?!sgsq{Th08HIvs'R„0$yʯEKsH0*H fj+&wG0\IM,A$WB#Y[*w>I@s`٠ |CP k4g⢪\M0|KE uYhvZjZlv[nGP~FfUw]vu]xw^zN5x` 6`Vxav- xc;cCydKff5yٕ[vecyfkfk8g{gzh:MVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC> NF)TV >C?(/p Ih&QlIGqvdPA>p ,`堄jjyQ $td "iȐit%IPR$*Pnћp"|kEѓ@>Nʬ<&HFA CH~[Sd!&($.ުABll8`;ΑpxAxCA;$ @=p6p 9!Ltp 0^+4k8: Ԏ:N#sxq'LPSA84ϺRp!NhP; S9--4F 9JôA>jv{SW-ՠԯ=XA4#l>_@@x8:A:qb" "f9l'P@@7:QM,_A ;QG=C@A׬9:1%9|!Zw "?40k@,ՃIWyx9evB@}JXXo @(QeI(&P c`A~/Mdkѝ6J&W/!@\ ]b B4zpCPq90e#Uq l@ 2 8$i^2\Zm P6Y#YO p :O:2wtN 6$ׁs@ p̓KTj&@@]z0qP'[FĒ3M D d稁 =Ӕ!:+d.]-wdFT" 8U67Z(ls|`8U `|MP GSv}_;\(UHX@:BE5\4FWQ٩4Fxmͧ@(< $: !zmC߄"xHy3TkP@?JB5JN6a[UޑD,#ԨlgKfW`;DpA8RzHp?H9@>)W ԁS袯7RD-H*1wbdגvcv:]}G"N9uaD £ɂэ9VswRA4< do}'L"xH ŰL"Eщ)=݀ ":b>p,Dꀀ;:Okeb~E](3ЃOcpYR,HЅVw:gh'+i""SaGvK@D.B9P{ܣP?"a5َJ_z0,a8Lu5n=AZG=мe|@@VX#恁?&I"É 8(-@Wj$պI k[N0fEusahif=Ӿc@SE+Af^{s _G*c$KHP7<Yo{`;X1(b55q dH[%/Df6A.x VQ.$sxA*~#`jx˺~mapu__"x *ī@ P 0j"x@BfA!@h{ I.Vo5Lo iA`OP'!@B$Ńp?" GX.SO =d3"034De1^ Q*B0W0= oDcJf0H5׀= >@ B r* E5 bSl7>b<0F4Lr# W+'X'=&`D%t*+@fBXV]B9pptRHi;؃p`cp x;uu]Y었y0$$C8p-p$oА.n 5  Ј "95r(砒'0I4Y6yNdBu0V+> x@8JLPA!7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@pڱp $ЖcT CYy>u@AN)G#Ú0T)x.0n7o#!)"by*p@*=YyvG֥1Qtl QC K@SN3HsqpÃP[VS晊p٠{V$ Qc!Aw 'ZuGh)W0 R3Ep`40*Jr@i<;HAh27E x* n uPJPKBj7),< Q"-"ZuGg'٦tp SyLl:Gq$"e?#pPT0&ڙ!a^HH@zFQm xe%r> Ni@ V##aZp2Ayg3zQz@#4#]-d0u,yjE& ;0Z/YAa#0n`!2VaI€Pf l ۲.1 1 PA`8!rw B ]@- T[V  [< 53!"1T"ѕ7 @zNauS{|۷~2K@ q0O0Jpa/ :4( .` o+?w20>{YKx)&&6 f4=Pq@c@҆  !u :`Upe<;;A A#" a9{# I)+1/ q)0|  TGzA cF q5 p$;` "<1w$|(*,.m'2<4<!5:L( P1=3v7z7A:Wp+-<@<`\"+- #W[-+ m5-!"vsĔ6%ᬚL}΢6mӅ1bMcUlo})oR}Aeh@R XfzG4>p*4?-4A0d > O s@Hh h|R%qP6`W*.fw!5 }1 p5MQPkp:nx+>A![c= !i]yTV r Nc5Z5K F 3MIb ZѧI bKأG%&dHٖ8 P)bBd]-qݾU +I"\Q!>z]У`V!ʉULxK Ť"@N PQ!$ J;5 Zp6K3EWQ3z@UV 2mW3QSo% r%jh"2u{OR)zn:fu0f\du`!J pJP 15ݽf5 ? H", .rAv*$#$ E5sށهzBxњ%QÀ90T |{ \GoA5 G ι;ιv6:K(\1eΤN:ujx$qiSAsTCBQ'9D 'd)"9Y[Yiծe[qΥ[]y_&\aĉ/fA'_e[w&*XqN>v`8hNL_AR,U gºSw!|sWSPFw#=.f큞s ֙\â q*}B6p`3:zbǟ.$;I!ܩǁ|*zlE[tEcqFkFsqG{?!sgsq{Th08HIvs'R„0$yʯEKsH0*H fj+&wG0\IM,A$WB#Y[*w>I@s`٠ |CP k4g⢪\M0|KE uYhvZjZlv[nGP~FfUw]vu]xw^zN5x` 6`Vxav- xc;cCydKff5yٕ[vecyfkfk8g{gzh:MVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC> NF)TV >C?(/p Ih&QlIGqvdPA>p ,`堄jjyQ $td "iȐit%IPR$*Pnћp"|kEѓ@>Nʬ<&HFA CH~[Sd!&($.ުABll8`;ΑpxAxCA;$ @=p6p 9!Ltp 0^+4k8: Ԏ:N#sxq'LPSA84ϺRp!NhP; S9--4F 9JôA>jv{SW-ՠԯ=XA4#l>_@@x8:A:qb" "f9l'P@@7:QM,_A ;QG=C@A׬9:1%9|!Zw "?40k@,ՃIWyx9evB@}JXXo @(QeI(&P c`A~/Mdkѝ6J&W/!@\ ]b B4zpCPq90e#Uq l@ 2 8$i^2\Zm P6Y#YO p :O:2wtN 6$ׁs@ p̓KTj&@@]z0qP'[FĒ3M D d稁 =Ӕ!:+d.]-wdFT" 8U67Z(ls|`8U `|MP GSv}_;\(UHX@:BE5\4FWQ٩4Fxmͧ@(< $: !zmC߄"xHy3TkP@?JB5JN6a[UޑD,#ԨlgKfW`;DpA8RzHp?H9@>)W ԁS袯7RD-H*1wbdגvcv:]}G"N9uaD £ɂэ9VswRA4< do}'L"xH ŰL"Eщ)=݀ ":b>p,Dꀀ;:Okeb~E](3ЃOcpYR,HЅVw:gh'+i""SaGvK@D.B9P{ܣP?"a5َJ_z0,a8Lu5n=AZG=мe|@@VX#恁?&I"É 8(-@Wj$պI k[N0fEusahif=Ӿc@SE+Af^{s _G*c$KHP7<Yo{`;X1(b55q dH[%/Df6A.x VQ.$sxA*~#`jx˺~mapu__"x *ī@ P 0j"x@BfA!@h{ I.Vo5Lo iA`OP'!@B$Ńp?" GX.SO =d3"034De1^ Q*B0W0= oDcJf0H5׀= >@ B r* E5 bSl7>b<0F4Lr# W+'X'=&`D%t*+@fBXV]B9pptRHi;؃p`cp x;uu]Y었y0$$C8p-p$oА.n 5  Ј "95r(砒'0I4Y6yNdBu0V+> x@8JLPA!7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@pڱp $ЖcT CYy>u@AN)G#Ú0T)x.0n7o#!)"by*p@*=YyvG֥1Qtl QC K@SN3HsqpÃP[VS晊p٠{V$ Qc!Aw 'ZuGh)W0 R3Ep`40*Jr@i<;HAh27E x* n uPJPKBj7),< Q"-"ZuGg'٦tp SyLl:Gq$"e?#pPT0&ڙ!a^HH@zFQm xe%r> Ni@ V##aZp2Ayg3zQz@#4#]-d0u,yjE& ;0Z/YAa#0n`!2VaI€Pf l ۲.1 1 PA`8!rw B ]@- T[V  [< 53!"1T"ѕ7 @zNauS{|۷~2K@ q0O0Jpa/ :4( .` o+?w20>{YKx)&&6 f4=Pq@c@҆  !u :`Upe<;;A A#" a9{# I)+1/ q)0|  TGzA cF q5 p$;` "<1w$|(*,.m'2<4<!5:L( P1=3v7z7A:Wp+-<@<`\"+- #W[-+ m5-!"vsĔ6%ᬚL}΢6mӅ1bMcUlo})oR}Aeh@R XfzG4>p*4?-4A0d > O s@Hh h|R%qP6`W*.fw!5 }1 p5MQPkp:nx+>A![c= !i]yTV r Nc5Z5K F 3MIb ZѧI bKأG%&dHٖ8 P)bBd]-qݾU +I"\Q!>z]У`V!ʉULxK Ť"@N PQ!$ J;5 Zp6K3EWQ3z@UV 2mW3QSo% r%jh"2u{OR)zn:fu0f\du`!J pJP 15ݽf5 ? H", .rAv*$#$ E5sށهzBxњ%QÀ90T |{ \GoA5 G ι;ιv6:K(\1eΤN:ujx$qiSAsTCBQ'9D 'd)"9Y[Yiծe[qΥ[]y_&\aĉ/fA'_e[w&*XqN>v`8hNL_AR,U gºSw!|sWSPFw#=.f큞s ֙\â q*}B6p`3:zbǟ.$;I!ܩǁ|*zlE[tEcqFkFsqG{?!sgsq{Th08HIvs'R„0$yʯEKsH0*H fj+&wG0\IM,A$WB#Y[*w>I@s`٠ |CP k4g⢪\M0|KE uYhvZjZlv[nGP~FfUw]vu]xw^zN5x` 6`Vxav- xc;cCydKff5yٕ[vecyfkfk8g{gzh:MVzivizjjzkk{l6lV{mvm{nn{oo|p 7pW|qwq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>O? NF)TV 3@>(N/ Ih&QlIGqvdPA?p $`堄jjyA 4t#"iȐiď%MPR$*Pnћw!xkE@?0dӞ?&HFAbH~[Sd!%'($.ުABlP4P>ϑwxAx#A<  =)w 5OPt0^+4k8$;" ;Nsxq'LSA4,ϺJ 2J NP<(K(Q9--4F 4?JôA>jv{SW-ՠԯ=hA4#l>_@@x4:A;sb"Z! "f?l'0@7:M,_@ ܁ =C@A׬$?0g ?~ Zw G>40a[@",уI˨y P?heVB@}JXXo @(QeI(&P c`A~/Mdkѝ6JS(Y/!@d ]C(4zBP?0e#Uq \@ ;$^2Zm x6Y#YO ~ \O;2pxtN 8$݁>~@ !̓8JT'@@]z9QCX '[FĒ3O A B=ӔHq!:d.]-wdFT" 8U67Z(ls~ 8U `|xMP GSv_>d(UHX2E54I,fYQ٩4Fmͧ@$< $;zczm߼"y3TkP@?JB 0JN6a[ݡUޑD #ԨlgKfW`>ɐDwA80\vLpP ?H1@?W !%|8RD-f ULZ.Ѐb2}0\6H$i?2ޗsI$!hAx4Y5q4ˏWP*H`Xj]} 'L"x8ɰL"E)=3 ȣC,d?>Z]gi,oߨuagC ȳv0Y. HUr EZ?pў dT#iXDdJVn WO7[H!y$#ToD ?1J1 ჈H" 6&Fζm'HǙAp(|<\G1QADw0qAq rU(s`">r7~b "~`h%iqop/a$KHP7<0n{`;XA(b5{@ dJH[ѥ/De>A.x VQn*c.xA*ptУ`jx AzΏmapu__"x *ī@ P 0j#x@@f=!Ah{ƒ |I.VoPHx I;{z@OBH~DЏ92\)B?>Q" fA`pg )OWJTvpB ӳFA f l$Xxlcp@y(@t[q* 6fN.P0xl]M$`=~rusFTBrcVe'zt# FGSXpcp`cwԀL|;u]Y׈}0$$Chp-`$o1n 5  =$Y&y5r(ђ'!48:NdB!0V+Bx"<ٔNP A17WYY찕Q`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@wڡp $0y p䴘r42yi CRWm:Pv3V1""/ٜrs !:yؙکq,D`oC @SNs̈s  P[ߠVSيvG-5|Gw  '_:F W@ R' 3Ew`4 *Jr:DZmA![1$Fpj= 6 p]y V r N5;K F3MI¶pZѧI bK!G%6dHؖ8 P)CB]-qU +I%qL!Bz]`V!͉UL} 0ĬN(l\b>|QRMbA":p^Р% QZc?wXtn@u/1U0^Qa"oNfz;&I5V WiU}"2u{OV)*f f\du`!  Pja0X sf& 5')0o :5f\0o Aly'}kDs;9OJn :-oNg3'~,jNi:!;"nKnjlY}"_}J B.@F_G,I -kD%-VqMsSn"Ė' Iqce&pMa WO]tRWks>15f6 ?AG7 W# +5Odb@Νvd!o/w8p? ϝ0X1"N 0(^2|[ip<"zOStGCw̰;N^41B~O@tPB PG%|m YGh2A,Q8'.LuG FJB~LPb2уQ b'eᥟ`|S饃OYGH #+Le#a FG <@+}@*ܨ`M2\H R6ږK4tb+b3xc;cCOvPɰ,G6Ncyfkfsyg{92}b}fVzivizj! y]&^i{l6lV{m䆞h{;nn{oo|p 7pW|qoq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>O? NF)TV 3@>(N/ Ih&QlIGqvdPA?p $`堄jjyA 4t#"iȐiď%MPR$*Pnћw!xkE@?0dӞ?&HFAbH~[Sd!%'($.ުABlP4P>ϑwxAx#A<  =)w 5OPt0^+4k8$;" ;Nsxq'LSA4,ϺJ 2J NP<(K(Q9--4F 4?JôA>jv{SW-ՠԯ=hA4#l>_@@x4:A;sb"Z! "f?l'0@7:M,_@ ܁ =C@A׬$?0g ?~ Zw G>40a[@",уI˨y P?heVB@}JXXo @(QeI(&P c`A~/Mdkѝ6JS(Y/!@d ]C(4zBP?0e#Uq \@ ;$^2Zm x6Y#YO ~ \O;2pxtN 8$݁>~@ !̓8JT'@@]z9QCX '[FĒ3O A B=ӔHq!:d.]-wdFT" 8U67Z(ls~ 8U `|xMP GSv_>d(UHX2E54I,fYQ٩4Fmͧ@$< $;zczm߼"y3TkP@?JB 0JN6a[ݡUޑD #ԨlgKfW`>ɐDwA80\vLpP ?H1@?W !%|8RD-f ULZ.Ѐb2}0\6H$i?2ޗsI$!hAx4Y5q4ˏWP*H`Xj]} 'L"x8ɰL"E)=3 ȣC,d?>Z]gi,oߨuagC ȳv0Y. HUr EZ?pў dT#iXDdJVn WO7[H!y$#ToD ?1J1 ჈H" 6&Fζm'HǙAp(|<\G1QADw0qAq rU(s`">r7~b "~`h%iqop/a$KHP7<0n{`;XA(b5{@ dJH[ѥ/De>A.x VQn*c.xA*ptУ`jx AzΏmapu__"x *ī@ P 0j#x@@f=!Ah{ƒ |I.VoPHx I;{z@OBH~DЏ92\)B?>Q" fA`pg )OWJTvpB ӳFA f l$Xxlcp@y(@t[q* 6fN.P0xl]M$`=~rusFTBrcVe'zt# FGSXpcp`cwԀL|;u]Y׈}0$$Chp-`$o1n 5  =$Y&y5r(ђ'!48:NdB!0V+Bx"<ٔNP A17WYY찕Q`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@wڡp $0y p䴘r42yi CRWm:Pv3V1""/ٜrs !:yؙکq,D`oC @SNs̈s  P[ߠVSيvG-5|Gw  '_:F W@ R' 3Ew`4 *Jr:DZmA![1$Fpj= 6 p]y V r N5;K F3MI¶pZѧI bK!G%6dHؖ8 P)CB]-qU +I%qL!Bz]`V!͉UL} 0ĬN(l\b>|QRMbA":p^Р% QZc?wXtn@u/1U0^Qa"oNfz;&I5V WiU}"2u{OV)*f f\du`!  Pja0X sf& 5')0o :5f\0o Aly'}kDs;9OJn :-oNg3'~,jNi:!;"nKnjlY}"_}J B.@F_G,I -kD%-VqMsSn"Ė' Iqce&pMa WO]tRWks>15f6 ?AG7 W# +5Odb@Νvd!o/w8p? ϝ0X1"N 0(^2|[ip<"zOStGCw̰;N^41B~O@tPB PG%|m YGh2A,Q8'.LuG FJB~LPb2уQ b'eᥟ`|S饃OYGH #+Le#a FG <@+}@*ܨ`M2\H R6ږK4tb+b3xc;cCOvPɰ,G6Ncyfkfsyg{92}b}fVzivizj! y]&^i{l6lV{m䆞h{;nn{oo|p 7pW|qoq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>O? NF)TV 3@>(N/ Ih&QlIGqvdPA?p $`堄jjyA 4t#"iȐiď%MPR$*Pnћw!xkE@?0dӞ?&HFAbH~[Sd!%'($.ުABlP4P>ϑwxAx#A<  =)w 5OPt0^+4k8$;" ;Nsxq'LSA4,ϺJ 2J NP<(K(Q9--4F 4?JôA>jv{SW-ՠԯ=hA4#l>_@@x4:A;sb"Z! "f?l'0@7:M,_@ ܁ =C@A׬$?0g ?~ Zw G>40a[@",уI˨y P?heVB@}JXXo @(QeI(&P c`A~/Mdkѝ6JS(Y/!@d ]C(4zBP?0e#Uq \@ ;$^2Zm x6Y#YO ~ \O;2pxtN 8$݁>~@ !̓8JT'@@]z9QCX '[FĒ3O A B=ӔHq!:d.]-wdFT" 8U67Z(ls~ 8U `|xMP GSv_>d(UHX2E54I,fYQ٩4Fmͧ@$< $;zczm߼"y3TkP@?JB 0JN6a[ݡUޑD #ԨlgKfW`>ɐDwA80\vLpP ?H1@?W !%|8RD-f ULZ.Ѐb2}0\6H$i?2ޗsI$!hAx4Y5q4ˏWP*H`Xj]} 'L"x8ɰL"E)=3 ȣC,d?>Z]gi,oߨuagC ȳv0Y. HUr EZ?pў dT#iXDdJVn WO7[H!y$#ToD ?1J1 ჈H" 6&Fζm'HǙAp(|<\G1QADw0qAq rU(s`">r7~b "~`h%iqop/a$KHP7<0n{`;XA(b5{@ dJH[ѥ/De>A.x VQn*c.xA*ptУ`jx AzΏmapu__"x *ī@ P 0j#x@@f=!Ah{ƒ |I.VoPHx I;{z@OBH~DЏ92\)B?>Q" fA`pg )OWJTvpB ӳFA f l$Xxlcp@y(@t[q* 6fN.P0xl]M$`=~rusFTBrcVe'zt# FGSXpcp`cwԀL|;u]Y׈}0$$Chp-`$o1n 5  =$Y&y5r(ђ'!48:NdB!0V+Bx"<ٔNP A17WYY찕Q`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@wڡp $0y p䴘r42yi CRWm:Pv3V1""/ٜrs !:yؙکq,D`oC @SNs̈s  P[ߠVSيvG-5|Gw  '_:F W@ R' 3Ew`4 *Jr:DZmA![1$Fpj= 6 p]y V r N5;K F3MI¶pZѧI bK!G%6dHؖ8 P)CB]-qU +I%qL!Bz]`V!͉UL} 0ĬN(l\b>|QRMbA":p^Р% QZc?wXtn@u/1U0^Qa"oNfz;&I5V WiU}"2u{OV)*f f\du`!  Pja0X sf& 5')0o :5f\0o Aly'}kDs;9OJn :-oNg3'~,jNi:!;"nKnjlY}"_}J B.@F_G,I -kD%-VqMsSn"Ė' Iqce&pMa WO]tRWks>15f6 ?AG7 W# +5Odb@Νvd!o/w8p? ϝ0X1"N 0(^2|[ip<"zOStGCw̰;N^41B~O@tPB PG%|m YGh2A,Q8'.LuG FJB~LPb2уQ b'eᥟ`|S饃OYGH #+Le#a FG <@+}@*ܨ`M2\H R6ږK4tb+b3xc;cCOvPɰ,G6Ncyfkfsyg{92}b}fVzivizj! y]&^i{l6lV{m䆞h{;nn{oo|p 7pW|qoq#|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>O? NF)TV 3@>(N/ Ih&QlIGqvdPA?p $`堄jjyA 4t#"iȐiď%MPR$*Pnћw!xkE@?0dӞ?&HFAbH~[Sd!%'($.ުABlP4P>ϑwxAx#A<  =)w 5OPt0^+4k8$;" ;Nsxq'LSA4,ϺJ 2J NP<(K(Q9--4F 4?JôA>jv{SW-ՠԯ=hA4#l>_@@x4:A;sb"Z! "f?l'0@7:M,_@ ܁ =C@A׬$?0g ?~ Zw G>40a[@",уI˨y P?heVB@}JXXo @(QeI(&P c`A~/Mdkѝ6JS(Y/!@d ]C(4zBP?0e#Uq \@ ;$^2Zm x6Y#YO ~ \O;2pxtN 8$݁>~@ !̓8JT'@@]z9QCX '[FĒ3O A B=ӔHq!:d.]-wdFT" 8U67Z(ls~ 8U `|xMP GSv_>d(UHX2E54I,fYQ٩4Fmͧ@$< $;zczm߼"y3TkP@?JB 0JN6a[ݡUޑD #ԨlgKfW`>ɐDwA80\vLpP ?H1@?W !%|8RD-f ULZ.Ѐb2}0\6H$i?2ޗsI$!hAx4Y5q4ˏWP*H`Xj]} 'L"x8ɰL"E)=3 ȣC,d?>Z]gi,oߨuagC ȳv0Y. HUr EZ?pў dT#iXDdJVn WO7[H!y$#ToD ?1J1 ჈H" 6&Fζm'HǙAp(|<\G1QADw0qAq rU(s`">r7~b "~`h%iqop/a$KHP7<0n{`;XA(b5{@ dJH[ѥ/De>A.x VQn*c.xA*ptУ`jx AzΏmapu__"x *ī@ P 0j#x@@f=!Ah{ƒ |I.VoPHx I;{z@OBH~DЏ92\)B?>Q" fA`pg )OWJTvpB ӳFA f l$Xxlcp@y(@t[q* 6fN.P0xl]M$`=~rusFTBrcVe'zt# FGSXpcp`cwԀL|;u]Y׈}0$$Chp-`$o1n 5  =$Y&y5r(ђ'!48:NdB!0V+Bx"<ٔNP A17WYY찕Q`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@wڡp $0y p䴘r42yi CRWm:Pv3V1""/ٜrs !:yؙکq,D`oC @SNs̈s  P[ߠVSيvG-5|Gw  '_:F W@ R' 3Ew`4 *Jr:DZmA![1$F qj=  6 p]y V r N5;K F3MI¶pZѧI bK!G%6dHؖ8 P)CB]-qU +I%qL!Bz]`V!͉UL} 0ĬN(l\b>pQRMbA":p^Р% QZc?wXtn@u/1U0^Qa"oNfz;&I5V WiU}"2u{OV)*f f\du`!  P^a0X sf& 5')0o :5f\0o Aly'}kDs;9OJn :-oNg3S @hlc`d Q}t) q5°R AdܹG~`@%Ƌ@yqG?|n|ܙ!_ X3"~ ΁&eGiRwLNoIw(Aq' C/; Nԝ,D]{'/o^RXyԝ <]H`XNv/-D~[)wqP )KvAfkرeϦ]mܹuo'^qɕ/gsѥO~s ;zW^ Dؙ.@D<1߃̲x |@$:jC j#@'.p>q wr CBe8l'@bólé6m~8(~`y \)7[::NO@tPB 5PD >q Hk+Ezr r>Z愃L0kx4 TD@Ҽp>х@tܐLdxIebx ~4BUUwz`&!CT;BR@ ~t1`SHXa6Šd ?o do3MIS9b3xc;cCydKDA2.IeC3fkfsyg{g;fMCex9ivizjjwx`_] \:l6lV{mv8-FƦn{oo"7pW|qwa|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>O? NF)TV 3@>(N/ Ih&QlIGqvdPA?p $`堄jjyA 4t#"iȐiď%MPR$*Pnћw!xkE@?0dӞ?&HFAbH~[Sd!%'($.ުABlP4P>ϑwxAx#A<  =)w 5OPt0^+4k8$;" ;Nsxq'LSA4,ϺJ 2J NP<(K(Q9--4F 4?JôA>jv{SW-ՠԯ=hA4#l>_@@x4:A;sb"Z! "f?l'0@7:M,_@ ܁ =C@A׬$?0g ?~ Zw G>40a[@",уI˨y P?heVB@}JXXo @(QeI(&P c`A~/Mdkѝ6JS(Y/!@d ]C(4zBP?0e#Uq \@ ;$^2Zm x6Y#YO ~ \O;2pxtN 8$݁>~@ !̓8JT'@@]z9QCX '[FĒ3O A B=ӔHq!:d.]-wdFT" 8U67Z(ls~ 8U `|xMP GSv_>d(UHX2E54I,fYQ٩4Fmͧ@$< $;zczm߼"y3TkP@?JB 0JN6a[ݡUޑD #ԨlgKfW`>ɐDwA80\vLpP ?H1@?W !%|8RD-f ULZ.Ѐb2}0\6H$i?2ޗsI$!hAx4Y5q4ˏWP*H`Xj]} 'L"x8ɰL"E)=3 ȣC,d?>Z]gi,oߨuagC ȳv0Y. HUr EZ?pў dT#iXDdJVn WO7[H!y$#ToD ?1J1 ჈H" 6&Fζm'HǙAp(|<\G1QADw0qAq rU(s`">r7~b "~`h%iqop/a$KHP7<0n{`;XA(b5{@ dJH[ѥ/De>A.x VQn*c.xA*ptУ`jx AzΏmapu__"x *ī@ P 0j#x@@f=!Ah{ƒ |I.VoPHx I;{z@OBH~DЏ92\)B?>Q" fA`pg )OWJTvpB ӳFA f l$Xxlcp@y(@t[q* 6fN.P0xl]M$`=~rusFTBrcVe'zt# FGSXpcp`cwԀL|;u]Y׈}0$$Chp-`$o1n 5  =$Y&y5r(ђ'!48:NdB!0V+Bx"<ٔNP A17WYY찕Q`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@wڡp $0y p䴘r42yi CRWm:Pv3V1""/ٜrs !:yؙکq,D`oC @SNs̈s  P[ߠVSيvG-5|Gw  '_:F W@ R' 3Ew`4 *Jr:DZmA![1$F qj=  6 p]y V r N5;K F3MI¶pZѧI bK!G%6dHؖ8 P)CB]-qU +I%qL!Bz]`V!͉UL} 0ĬN(l\b>pQRMbA":p^Р% QZc?wXtn@u/1U0^Qa"oNfz;&I5V WiU}"2u{OV)*f f\du`!  P^a0X sf& 5')0o :5f\0o Aly'}kDs;9OJn :-oNg3S @hlc`d Q}t) q5°R AdܹG~`@%Ƌ@yqG?|n|ܙ!_ X3"~ ΁&eGiRwLNoIw(Aq' C/; Nԝ,D]{'/o^RXyԝ <]H`XNv/-D~[)wqP )KvAfkرeϦ]mܹuo'^qɕ/gsѥO~s ;zW^ Dؙ.@D<1߃̲x |@$:jC j#@'.p>q wr CBe8l'@bólé6m~8(~`y \)7[::NO@tPB 5PD >q Hk+Ezr r>Z愃L0kx4 TD@Ҽp>х@tܐLdxIebx ~4BUUwz`&!CT;BR@ ~t1`SHXa6Šd ?o do3MIS9b3xc;cCydKDA2.IeC3fkfsyg{g;fMCex9ivizjjwx`_] \:l6lV{mv8-FƦn{oo"7pW|qwa|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>O? NF)TV 3@>(N/ Ih&QlIGqvdPA?p $`堄jjyA 4t#"iȐiď%MPR$*Pnћw!xkE@?0dӞ?&HFAbH~[Sd!%'($.ުABlP4P>ϑwxAx#A<  =)w 5OPt0^+4k8$;" ;Nsxq'LSA4,ϺJ 2J NP<(K(Q9--4F 4?JôA>jv{SW-ՠԯ=hA4#l>_@@x4:A;sb"Z! "f?l'0@7:M,_@ ܁ =C@A׬$?0g ?~ Zw G>40a[@",уI˨y P?heVB@}JXXo @(QeI(&P c`A~/Mdkѝ6JS(Y/!@d ]C(4zBP?0e#Uq \@ ;$^2Zm x6Y#YO ~ \O;2pxtN 8$݁>~@ !̓8JT'@@]z9QCX '[FĒ3O A B=ӔHq!:d.]-wdFT" 8U67Z(ls~ 8U `|xMP GSv_>d(UHX2E54I,fYQ٩4Fmͧ@$< $;zczm߼"y3TkP@?JB 0JN6a[ݡUޑD #ԨlgKfW`>ɐDwA80\vLpP ?H1@?W !%|8RD-f ULZ.Ѐb2}0\6H$i?2ޗsI$!hAx4Y5q4ˏWP*H`Xj]} 'L"x8ɰL"E)=3 ȣC,d?>Z]gi,oߨuagC ȳv0Y. HUr EZ?pў dT#iXDdJVn WO7[H!y$#ToD ?1J1 ჈H" 6&Fζm'HǙAp(|<\G1QADw0qAq rU(s`">r7~b "~`h%iqop/a$KHP7<0n{`;XA(b5{@ dJH[ѥ/De>A.x VQn*c.xA*ptУ`jx AzΏmapu__"x *ī@ P 0j#x@@f=!Ah{ƒ |I.VoPHx I;{z@OBH~DЏ92\)B?>Q" fA`pg )OWJTvpB ӳFA f l$Xxlcp@y(@t[q* 6fN.P0xl]M$`=~rusFTBrcVe'zt# FGSXpcp`cwԀL|;u]Y׈}0$$Chp-`$o1n 5  =$Y&y5r(ђ'!48:NdB!0V+Bx"<ٔNP A17WYY찕Q`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@wڡp $0y p䴘r42yi CRWm:Pv3V1""/ٜrs !:yؙکq,D`oC @SNs̈s  P[ߠVSيvG-5|Gw  '_:F W@ R' 3Ew`4 *Jr:DZmA![1$F qj=  6 p]y V r N5;K F3MI¶pZѧI bK!G%6dHؖ8 P)CB]-qU +I%qL!Bz]`V!͉UL} 0ĬN(l\b>pQRMbA":p^Р% QZc?wXtn@u/1U0^Qa"oNfz;&I5V WiU}"2u{OV)*f f\du`!  P^a0X sf& 5')0o :5f\0o Aly'}kDs;9OJn :-oNg3S @hlc`d Q}t) q5°R AdܹG~`@%Ƌ@yqG?|n|ܙ!_ X3"~ ΁&eGiRwLNoIw(Aq' C/; Nԝ,D]{'/o^RXyԝ <]H`XNv/-D~[)wqP )KvAfkرeϦ]mܹuo'^qɕ/gsѥO~s ;zW^ Dؙ.@D<1߃̲x |@$:jC j#@'.p>q wr CBe8l'@bólé6m~8(~`y \)7[::NO@tPB 5PD >q Hk+Ezr r>Z愃L0kx4 TD@Ҽp>х@tܐLdxIebx ~4BUUwz`&!CT;BR@ ~t1`SHXa6Šd ?o do3MIS9b3xc;cCydKDA2.IeC3fkfsyg{g;fMCex9ivizjjwx`_] \:l6lV{mv8-FƦn{oo"7pW|qwa|r+r3|s;sC}tK7tSW}u[wuc}vkvs}w{w~x7xW~ywy裗~z꫷z~{{|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>&HFAbH~[Sd!aO'($.ުAXA/Vԁl0`<ϑx Bx3?Ў €< 1` Px/0^+4k8B;! O;Nc/tq'LS0,ϺNVMN ې?h Q9--4F t:JôA>jv{SW-ՠԯ=hA4#l>_@@x0:Aq;rb""f>@:l'P@7:M,P[ A.x VQ&CxA*u`jxBzmapu__"x *ī@ 0j#x@@f=!@h{b |I.Vo٣PH I;{z OBH~D`9\)BE: >Q"Ȓ I`pg)O9JTfpBӳFA f l6$XxlCp@+(@t[q* 6fN.P0xl]M$`=`~rusFTBcVe' tcFGSXpc`WpcԀ |;eP]Y׈ .0$$Ca hp-@$o91n 5  $Y&y5r(ђ'!48:NdBP0V+Bx!<ٔNP Aq 7WYYQ`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@ڡp $0yp䴘r42yi CRgm:Pv3V1""/ٜ r !:yؙکq,D`oC @SNs̈ r[ߠVSي鰋vG-5| @ '_:F W@ R' 3E`4 V*Jr:DZm`52Ǐl1T"ѕ7]r*J w[4X@@V];V 4x#L2[@ъIx|WOJK_Kx)&&< f7=Vq@gPQu `Upe<[{aqA#"e9{$ Ii+1/ q0w+`TA2 bvq5H [ $°q <$\1w&*,.0<(4\6< 7<|> =A![1$FeFׂM 6 ]yDV r N526K F3MI¶@ Z"ӧI bK!G%6dHؖ8 P)B]-qU`+I;=Ȝq !UBz]`V!)UL} 0Ĭh(l!n瀾Q!$ ``J;p5Zgp5:3 EWQ7j UV 2 lWQSo r FZ[>x*"SQGLdbbEVG tj&bЮ.PX"B[y.\>w<.e~?Q Xrp ff@5')0o:5f\0o Aly@'}kDs;9OJn :-oNsg3mGR][3QM@BCcPTl>'~,Ni:1;S"nKnldo}B_}[ 2_ l"WZqĒ_0@+[@Tbugy8p0.bAlj}V:Vfr5N'u+yəzNXѢ^X1@=`XHGˋAhLxvˆDW eSQNZUYnWaŎ%[Yiծe[qΥ ^D9 @f 6[%B5WJ++@Tf;9DuC{BZ 4J;T`>'. ef{p!@GyJ&(&ߩ]uUڕ|J & !tt8|fCJ 'K' (!6 oIDxVpB 3pC;CCqDK4DST,|q(Sڑ&h$=)@aZwX&:!6xPPzQЅEz$$H_`LxI{3쑁t"": BHba6(Ъ *1'&TLG̍8yJ$jt6؋{~JTiTPuD'*\YhvZjZlv[n,|p@$`5^K%'N˄t\LxD`T}I&(@pU~(81a ,:r1ȟM8{h`" ే1Hb_ -+xeXKH2HGⵊXR@7>~ߌ$ERl"/c W;%~Kr[{nn{ou'@TZ۷W|qwq#|r+W^QDګ-G1qC}tK7tSW]eJeuAvs}w{w΃vW~ywy裗~zz~{{/48|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>&HFAbH~[Sd!aO'($.ުAXA/Vԁl0`<ϑx Bx3?Ў €< 1` Px/0^+4k8B;! O;Nc/tq'LS0,ϺNVMN ې?h Q9--4F t:JôA>jv{SW-ՠԯ=hA4#l>_@@x0:Aq;rb""f>@:l'P@7:M,P[ A.x VQ&CxA*u`jxBzmapu__"x *ī@ 0j#x@@f=!@h{b |I.Vo٣PH I;{z OBH~D`9\)BE: >Q"Ȓ I`pg)O9JTfpBӳFA f l6$XxlCp@+(@t[q* 6fN.P0xl]M$`=`~rusFTBcVe' tcFGSXpc`WpcԀ |;eP]Y׈ .0$$Ca hp-@$o91n 5  $Y&y5r(ђ'!48:NdBP0V+Bx!<ٔNP Aq 7WYYQ`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@ڡp $0yp䴘r42yi CRgm:Pv3V1""/ٜ r !:yؙکq,D`oC @SNs̈ r[ߠVSي鰋vG-5| @ '_:F W@ R' 3E`4 V*Jr:DZm`52Ǐl1T"ѕ7]r*J w[4X@@V];V 4x#L2[@ъIx|WOJK_Kx)&&< f7=Vq@gPQu `Upe<[{aqA#"e9{$ Ii+1/ q0w+`TA2 bvq5H [ $°q <$\1w&*,.0<(4\6< 7<|> =A![1$FeFׂM 6 ]yDV r N526K F3MI¶@ Z"ӧI bK!G%6dHؖ8 P)B]-qU`+I;=Ȝq !UBz]`V!)UL} 0Ĭh(l!n瀾Q!$ ``J;p5Zgp5:3 EWQ7j UV 2 lWQSo r FZ[>x*"SQGLdbbEVG tj&bЮ.PX"B[y.\>w<.e~?Q Xrp ff@5')0o:5f\0o Aly@'}kDs;9OJn :-oNsg3mGR][3QM@BCcPTl>'~,Ni:1;S"nKnldo}B_}[ 2_ l"WZqĒ_0@+[@Tbugy8p0.bAlj}V:Vfr5N'u+yəzNXѢ^X1@=`XHGˋAhLxvˆDW eSQNZUYnWaŎ%[Yiծe[qΥ ^D9 @f 6[%B5WJ++@Tf;9DuC{BZ 4J;T`>'. ef{p!@GyJ&(&ߩ]uUڕ|J & !tt8|fCJ 'K' (!6 oIDxVpB 3pC;CCqDK4DST,|q(Sڑ&h$=)@aZwX&:!6xPPzQЅEz$$H_`LxI{3쑁t"": BHba6(Ъ *1'&TLG̍8yJ$jt6؋{~JTiTPuD'*\YhvZjZlv[n,|p@$`5^K%'N˄t\LxD`T}I&(@pU~(81a ,:r1ȟM8{h`" ే1Hb_ -+xeXKH2HGⵊXR@7>~ߌ$ERl"/c W;%~Kr[{nn{ou'@TZ۷W|qwq#|r+W^QDګ-G1qC}tK7tSW]eJeuAvs}w{w΃vW~ywy裗~zz~{{/48|7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC><224ffdNNL ~~|0.Оp@tx<<4BH@$.(6:( @0@PP`nf`||~xpfp<6< XPXLF@xp `2.L|p|("Hzfhtv`tnt&:0ĐvrxTT@::Px$Į0ĸFZP̜NZtԺNf@ttlP@H:HLDP..88"<`Z4,8xജĚ謰`Z؜^d`|&.8 ȸH@h x\h\`Њ~lttx|v Ęb\`prPXX`blhlАnfHbh TbPԴ<.D0@,", DFP6<<ʔ 0FJ@0:D0xbdp:.(*0(|zpd\t`tf̎~dRlbxt&4L0.lNt\nVrvxvVlĸp||X@X¸npΰ4 FF<ĺvvtrrtrr|vv|FFD ľ¾ľ H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_n<УKNHDv3|{Wi˟=yϑ'/!v"N%t`Fc?#G߅fᆳCA<S<PR XAŨ.cQ4hЍ < : NF)TV X3>(N/ Ih&QlIGqvdP:p $`堄jju*A 4tbiȐiď%MPR$*Pnћt#kEჀ:O)d^<&HFAcH~[Sd!'($.ުA`AQ1XЁl0@<ϑxAx#A> Ў <쳋 1PxO10^+4k8@; O;NcA1tq'L{S0,ϺJ XsN P>Ĉ1Q9--4F 4?JôA>jv{SW-ՠԯ=hA4#l>_@@x0:Aq;rb" "f?l'P0@7:M,P[ 40c[@",̓I=yя0?<e)B@}JXXo @(QeI(&P c`A~/Mdkѝ6JS(,/! ]0zGCP?0e#Uq \@ ƒb$^2\Zm h6Y#YO 0(O;2P~tN 8$݁>~@ ̓T'@@|]zS0CP '[FĒ3O= R=Ӕԁ!:Kd.]-wdFT" 8U67Z(lcu 8U `|XxMP PGSv_<(UH\2E 54FWQ٩4Fx`mͧ@$Ў< $;Z c@1zm,"Ҁxy3TkP@?JBU$JN6a[UޑD #ԨlgKfWn`<ɐD`HA8$|LpP ԡ?H1:W( ڱ1좯8RD-1~bdגfcH1$:]}G"NՑ9uHԎqD £ɂэ#?^~RA4< do}'L"x8@nL"E&D=3 ȃ,!,Dx<:Okeb~E] &I"(Ɖ Ҏb(@؇$պI ksc0fEusahif<ӾC@SE+Af^{s wc$KHP7<$Yo{`;XA(b50dcH[%/Df>A.x VQ&cnxA*P{C`jx˺Ώmapu__"x *ī@ 0j#x@BfA!@h{b I=/Vo5L3 iA`O'!@B$Ńp?" PX.SO!p Ed0! De1^ Q*D0=0= o 4cf@H5׀= >@D r*E5 bSl7>b< 0Ȇ4L3W+'X'='`D%t*@fBXV]Qp B9X`ptRHi;؃`pc0Qx;eP]Y었y0$$Cq8p-`$oА.n 5  CЈ "95r('0I4Y6yNdBP0V+>x@8JLP A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@ŀڱp $ЖcT CYy>P AN)G#Ú0T)x.0n7o#!)"by*@*(=YyvG1Qtl QC0@SN3H rÃ+P+[VS晊p٠{V$ Qc!Aw6 'ZuGh)W@ R' 3E`4 X*Jr@i<;HQAh27E* x* o uPJPKZpBj7),< Q"-"ZuGg٦tŐ Sye Ll:Gq$"e?#!`PT0&ڙ!a^HHt @zFQm xe5r> Ni@ V#SaZp5Ay13zQz@#4#]-d0u,yj' ;0Z/YAA$0n`!2VaI〯#Pf l ۲.1 A P`85!wB]@- T[V  [ǀ53!"1T"ѕ7T H@6zNauS{|۷~2K@r0O0Jpa/ :4 .0o+?w50>{YKx)&&6 f4=XPq@s@҆P!u `Upe<;;QA#"a9{$ I)+1/0q0| X pTGzA cF q5H0c p$0"<1w$|(*,.(2<4<"5:଒*;B\!8G b‹9@p*4?-4A0d >+ Ss@Hh h4|R%r06`W*.fw!5  p5M*Pk`:nx+>A![񩡚$FBa]Xb/I.G40!` 74Y#Ub=#є$f @%2}*/=zDYm#Jj-m-N%RjG[E Xbp5:R=feUXńPpPL:䄬k8l?m->OQRMAX.0^sN%PAjd?Xtnz@571^Qa"ofz;<I5V WYRv*"SQGL${ccEVg ê;fR | 1f \%-"WN\>w0]NE X rp f5'Scm:ɥ&n;ͺxkTs;9䴷K]$wh`d<oNg3Z ̾4=%It`R0y9Pp1p1 lo@I @I6$ L. z&^JL}*yx$fŶVEy$յ5T.44F `|W (m3㖹 %I&p}FO};ppjXQĒ_0@+c@Tbu9tRy9pBbTy[^qce&]a!GN$swC%JDQ?y AP莌~2XdA]>9'k'NI.eSQNZUYnWaŎ%[Yiծe[Y@޼u !/v+@P޾dQ"H4_Bw5A@]@pCb*Tǯ8/BXS} JVVPh_T8cw= ]K D !1$ŊBϰx( c뤐>w:t ,(kB +B 3pC;CCqDK4D8 RhgأzR ~nPa!$т 1Pv``vfzyr2<(p'xG :hm( „jP8#I',r ws r,F i$!9ǣ}KMr ?wj~8u¦x(iTH'XEhvZjZlv[n۪>8&}6G^3`U~by,%hz8!/i51 V`SH# ]T GDŽ1ȍK@|6遜qy0G ؝^<M_ɷ3~Q >HU W*@@6j!Ry|HFBt*`zH&Hز5 hU*ٱxg̕wnn{oo `%[nwq#|r+ Ąl}tK7tSW}uֵ -Fѥ(Z7Qts}w{wΡ| qG~ywy裗~z'Ky~{{Ã7|W}w}~~P$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC>УKNHDv3|{ξ5OݾHs];F!<Ў#VD|fΦx0AJ4s"Fp͡OH-EA8FS>EJsF)TV C<(9 Ih&QlΚgzĎ>tg;8p Xi衈&T| AlI@# i F8@32(x6tHw$P_ zr&BF;,6lQ$O=3. ;,&HF4hЅÜR؄]CC@ kn͑ .& 7 UP4B=ϐs4(Bxs d~s4%p' s2A BA<0ΰC@@#C->@; O;Ssp2.LPC4υ00tG  P>Ș "SQ? d4J34AQO]kvstum@YyD3An7A &lxmOQDp3*1( S|O=% uqPx@1<7O? ># r!Z;1a L `r &03v;rqO @X,1fa O82P P.ҴƉ|<HG@N XE?.0G p' @A6a `ǧ,2.D H@x0"@0\ĩx`AQI4].at zс9i. B @ !̓8D#x`9MD?2",( A DX)WR &)X-}x΄4]6З q#Zb\qWp@;e }R *E(K*U=pI9Rg0x~ cd:גv}ׅe&+KN}9,,Ca E #GӕПw|+ x x }y!H@ͭL"EEqUDbB0"<bl\[-vw",‹ƃwn; wx~Z,/Oi&()@_J`nXcG7Î8Cl:t!mxDdZ%rZvK%b{OKؙLGT4-=B #RH#r}Ijر\#[ζ_#xU¬y@"D1sx;YKAAlIH7TjimWc>;1OKHIC`U19q`< WoŽ\,=!nx&PRnκַuPڴȆ$/>K h\@]")(Yn8< `A\spDcŨGi}޾ 20;?]"V, @~BP  P~|R FL0 aL0q1D5'=@> P Er'A5 wfFBwr< 2'4 FNFX'APX>wb ]BL> {CGP(|b6-&@?6p GT  0Xu~؈2!?6 06^J`0ڥuSD KhkC2@E@eJ(3|F$4''0]~@??cFVzb"5fPWJsj7-&G0 5Pn ='eΠ~(rp06-,p%Py cs23 X&y(^@J)W.$1)y8:YL& $?}Q'GLٔN<`{aq*Pٕ^`i\fyhjlٖnpr9tYvyxz|ٗ~[ƒFGSR9Y 00Pp qG$\i{y >`V|7" #AjpT-5| V/mUshs^"69""r !syؙiV-sA7=G0 c@0f9،8;0q Ȑ1.ݠ @ڗ@j1$6QApw w-\Œ '@WŰ4 f4أ "7B:D0kHG0D3Bb1j:\t zy]%+/Zprڝ@p*FQv"\Z֊Pm s.̵fsV񠆎b JsکwIS%HnpIedѢ2%aM@`g@Zjdu [0vA*_ `Bh40AS3xڮQH<p ]@KZXjCҤq,pD%{0ZU$m`#Ua]`!8e&07ޚ<۳>+$l!R1 "ȐZP )N(0]2G -b;d [@ @/RqT)5"]r'sp 6uQwVoeYr J%4#Qڱy.}{hT`3wG僫q1Åb2mRpf4= 1QARt ƐUGu<@ey۽ "x8c)`n$IyN9%PVG wL0 et{Qp$Q|[s àPoDR\&|q(,v.2<4\6|8(<><?WkȎLB%\2|,:LP10A\V#!)Pp鹞) %3ȶ|ˁq` ǎ0{|PQ.J?j8L ~1 :"eYwP! Q˸\m2[$]r.XQ 2Ҏ0צo |3 4P A<&/$: 2B6$pa >frCD:7)DmsrE PLq|U6"wR( ` .@p2te Zr.2 4B;?"3#ժLdžJ}]6n7rS|$I}6]ъc; 68 ~Н1D7\$`4E, `NDB2DC   =,S˫)-L% # Z3 B+nGNXw%%  rMP`kpm@-v!$F&$дB¦2  `2%zsP a@!5R *U>:;d 6N%"1jsvvW RV"5V2F W蠈S5 tUv')QL5P~}aVfW(sƃwj&s@`;aVbBJ;RC(wgGؕ~BSp .~PR`6\Qt0Jo'9Mw+US!A1TNa5^ Gh 9HU::%I?o ~ 5 BIRKUa+׍1#%,#,ԑ~FCp ܰI? 0$ ϕ`SoRkS~iCr]_sQ`7ez``hP'E-n aBcm pZA  7Q8_XĚ0((Iu>tLo*r13N$H0z@ݰ|›p } `WOv 4ю@w <ϣ@v"nNS'<P#x=ovn-]7pEA_Di VDmy(']y_&\aĉ/fcȑ%O\e̙5oٲ:"ۇ`>|a`W :dG#)#k7DS@`O}J 4ycP5nc9"N҆ vˀvځq9eـ 艉\䨪ҚFſ>vء!hǁ3{G rH"4H$TrI&tI( F.8M2}t@~ȀH |& *PF} kǁ$ p !tAijN# hЧL#x1@( duӈ&/n+,tn48/ #E/p ঁ}6U,hK+/Ukv4 }`XinǤ}ԺM6 1Jz^|w_~_x`Dypڇrǝ]"G7dJ@`vgz>Р}hX(^`pAY/e%vF@|A` ѧ6I!)9{{|Wwz|g}~~}P$` P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxGC?C@ DADB,DC ! ,fnnl^^\::>(/ Ih&QlIGqvdPB?t@ $`堄jjqPA Dt biȐiď%Q AR$*PnћQ" kE@?蓎9WӞ;&HFARH~[Sd!Џ'($.ުAXA9Vl0@@:Αx Bx3; À<C 1Tx9 0P^+4k8: :Nͺs9pq'L#0,ϺNVJM ;hE( Q9--4F 4?JôA>jv{SW-ՠԯ=hA4#l>_@@x0:A:t"VF"f?l'P @7:M,_ 40C[@,ɃI=y?0eB@}JXXo @(QeI(&P c`A~/Mdkѝ6JS*+/! ](zHGBPI?0e#Uq \ s$^2\Z"m X6Y#YO  GO>2pvtN 8$>~@ ̓TJ'@@b]z/7 '[FĒ3O`I R=Ӕ!:d.]-wdFT" 867Z(ls~ 8U `|VxMP Gcv_H:(UαHX`:E 54FWQ٩4FwXmͧ@&< $>zc9zmc<"w|y3TkP@?JB B&JN6a[UޑD #ԨlgKfW.`[:ɐD@稄A8@&xPp"?H9@?]W8G 1-8RD-H3v1Kvbdגvb92:]}G"N9uH]D £ɂэ#?^~WRA4< do}'L"x(.L"EҡeD=3 <,΁,Dx@::Okea~ C]K<p(DOLpYR,H VGgh'+i""S\`GvK@D.B.?|x?!aJ_z0,a8L)5n=A҇<Ь+c @@VX#>&I"8lj s(@؇ς$պI kP0fEusahif>Ӿ@SE+Af^{s G3c$KHP7<i&Yo{`;XA(b5A1d[H[%/Df>A.x VQ&snxA$pxȣ`jx$˺Ώmapu__"x *ī@ P 0j#x@BfA!Ah{ƒ IVo5L3o iA`O'!@B$Ńp?" X.SO ` d$03  De1^ !*D0=0= o $cfPH5׀= > Dr*E5 bSl7>b< 04Lֳ W+'X'='`D%t*@fBXV]B9VpptRHi;؃p`c x;u]Y었 x0$$Cq8p-p$oOА.n 5  Ј "95r('0I4Y6yNdB0V+>x@8JL`A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@ڱp $ЖcT CYy>0AN)G#Ú0T)x.0n7o#!)"by*@*H=YyvGֵ1Qtl !C S@SN3H tÃo0o[dVS晊p٠{V$ Qc!Aw 'ZuGh)W@ R 3E`40V*Jr@i<;HAh27E* x*a @s uPJPKJBj7),< Q"-"ZuGg٦t琧 SyLl:Gq$"e?#!pPT0&ڙ!a^HH @zFQm xe5r> Ni@ V#SaZp5Ay3zQz@#4#0 ]-d0u,yj' ;0Z/YAA$0n`!2VaICPf l ۲.1 A P`8!wbBd]@- T[V  [`53!"1T"ѕ7`tH@zNauS{|۷~2KA`t0O0Jpa/ :4X .o+?w50>{YKx)&&6 f4=VPq@c@҆ P!uB<`Upe<;;QA#"a9{$ I)+1/ q0| V  TGzA cF q5H [ p$"<1w$|(*,.(2<4<"5:଒*;B\!8G b‹9@ P1=3v7z7A:Wp+-<`\"+-0 #W[-}+"m5%-!"pҕsĔ61%4rL}β6mӅ Ik}i{ Ѐc;1VޗR-A^x$`EowD#BBCdP?'DV6A>'+\B%cB*.fw!5  p5MPPkp:nx+>A![񩡚$FB,- `?-c!]yDV rCNc5Z5K F3MIb@ ZҧI bKأG%6d`Hٖ8 P)Bdn]-q޾U_`+I8\7R=fePXńPpPL:䄬e8l?#|PQRMQV0s^sN% PAjXtnn@5y1^Qa"ofz;9I5V WYRzv*"SQGL$q|c0f\du`!@Pf\>wQ~ ~ot5} @h1aVp\q/,o:5f\@ofͺxkTs;9䴷K]$wh`d<oNsg3Z ƾ40 =%I`R0:y9Pp1p1r _f@I @I6$ʠ.z&^kJLMGg PlmUGR][3QM@BCcPPF'~,`Z1;c  $XA֥C`} o~ r1!"稠s"EzNKe"s }$(OA%ZQI.eSQNZUYnWaŎ%[Sx$@ L'~ dv/}:c8p?coc +> OM ᜁx0GQu6&`߂#\3xK+ f}"}Tu෉cbHԷ߅YY!C#u?~j)y`|:kAtA#pB +B 3pC;C nXGyR ~B 2Q u``uR"y@^H@<*'tGJ :8NJ Lgj臝4#H'.qG }"D<'DJ {i2AD5g}L"δi~:h~Ρ?dREYS\(,I'DRDdUvYfuYhvZjڥ@}"KgZC`T~vB|z8_K}GtB耾`Su$G@/f3)a r!o18Mze~h /{,"s~+\:Zt@/P)V6i *|#h24)L"%Hr (ctmh4gX^:[vm{nn9'7>9Y7pW|qwq 5N6ȣ-C?C@ DADB,DC>(/ Ih&QlIGqvdPB?t@ $`堄jjqPA Dt biȐiď%Q AR$*PnћQ" kE@?蓎9WӞ;&HFARH~[Sd!Џ'($.ުAXA9Vl0@@:Αx Bx3; À<C 1Tx9 0P^+4k8: :Nͺs9pq'L#0,ϺNVJM ;hE( Q9--4F 4?JôA>jv{SW-ՠԯ=hA4#l>_@@x0:A:t"VF"f?l'P @7:M,_ 40C[@,ɃI=y?0eB@}JXXo @(QeI(&P c`A~/Mdkѝ6JS*+/! ](zHGBPI?0e#Uq \ s$^2\Z"m X6Y#YO  GO>2pvtN 8$>~@ ̓TJ'@@b]z/7 '[FĒ3O`I R=Ӕ!:d.]-wdFT" 867Z(ls~ 8U `|VxMP Gcv_H:(UαHX`:E 54FWQ٩4FwXmͧ@&< $>zc9zmc<"w|y3TkP@?JB B&JN6a[UޑD #ԨlgKfW.`[:ɐD@稄A8@&xPp"?H9@?]W8G 1-8RD-H3v1Kvbdגvb92:]}G"N9uH]D £ɂэ#?^~WRA4< do}'L"x(.L"EҡeD=3 <,΁,Dx@::Okea~ C]K<p(DOLpYR,H VGgh'+i""S\`GvK@D.B.?|x?!aJ_z0,a8L)5n=A҇<Ь+c @@VX#>&I"8lj s(@؇ς$պI kP0fEusahif>Ӿ@SE+Af^{s G3c$KHP7<i&Yo{`;XA(b5A1d[H[%/Df>A.x VQ&snxA$pxȣ`jx$˺Ώmapu__"x *ī@ P 0j#x@BfA!Ah{ƒ IVo5L3o iA`O'!@B$Ńp?" X.SO ` d$03  De1^ !*D0=0= o $cfPH5׀= > Dr*E5 bSl7>b< 04Lֳ W+'X'='`D%t*@fBXV]B9VpptRHi;؃p`c x;u]Y었 x0$$Cq8p-p$oOА.n 5  Ј "95r('0I4Y6yNdB0V+>x@8JL`A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@ڱp $ЖcT CYy>0AN)G#Ú0T)x.0n7o#!)"by*@*H=YyvGֵ1Qtl !C S@SN3H tÃo0o[dVS晊p٠{V$ Qc!Aw 'ZuGh)W@ R 3E`40V*Jr@i<;HAh27E* x*a @s uPJPKJBj7),< Q"-"ZuGg٦t琧 SyLl:Gq$"e?#!pPT0&ڙ!a^HH @zFQm xe5r> Ni@ V#SaZp5Ay3zQz@#4#0 ]-d0u,yj' ;0Z/YAA$0n`!2VaICPf l ۲.1 A P`8!wbBd]@- T[V  [`53!"1T"ѕ7`tH@zNauS{|۷~2KA`t0O0Jpa/ :4X .o+?w50>{YKx)&&6 f4=VPq@c@҆ P!uB<`Upe<;;QA#"a9{$ I)+1/ q0| V  TGzA cF q5H [ p$"<1w$|(*,.(2<4<"5:଒*;B\!8G b‹9@ P1=3v7z7A:Wp+-<`\"+-0 #W[-}+"m5%-!"pҕsĔ61%4rL}β6mӅ Ik}i{ Ѐc;1VޗR-A^x$`EowD#BBCdP?'DV6A>'+\B%cB*.fw!5  p5MPPkp:nx+>A![񩡚$FB,- `?-c!]yDV rCNc5Z5K F3MIb@ ZҧI bKأG%6d`Hٖ8 P)Bdn]-q޾U_`+I8\7R=fePXńPpPL:䄬e8l?#|PQRMQV0s^sN% PAjXtnn@5y1^Qa"ofz;9I5V WYRzv*"SQGL$q|c0f\du`!@Pf\>wQ~ ~ot5} @h1aVp\q/,o:5f\@ofͺxkTs;9䴷K]$wh`d<oNsg3Z ƾ40 =%I`R0:y9Pp1p1r _f@I @I6$ʠ.z&^kJLMGg PlmUGR][3QM@BCcPPF'~,`Z1;c  $XA֥C`} o~ r1!"稠s"EzNKe"s }$(OA%ZQI.eSQNZUYnWaŎ%[Sx$@ L'~ dv/}:c8p?coc +> OM ᜁx0GQu6&`߂#\3xK+ f}"}Tu෉cbHԷ߅YY!C#u?~j)y`|:kAtA#pB +B 3pC;C nXGyR ~B 2Q u``uR"y@^H@<*'tGJ :8NJ Lgj臝4#H'.qG }"D<'DJ {i2AD5g}L"δi~:h~Ρ?dREYS\(,I'DRDdUvYfuYhvZjڥ@}"KgZC`T~vB|z8_K}GtB耾`Su$G@/f3)a r!o18Mze~h /{,"s~+\:Zt@/P)V6i *|#h24)L"%Hr (ctmh4gX^:[vm{nn9'7>9Y7pW|qwq 5N6ȣ-C?C@ DADB,DC>(/ Ih&QlIGqvdPB?t@ $`堄jjqPA Dt biȐiď%Q AR$*PnћQ" kE@?蓎9WӞ;&HFARH~[Sd!Џ'($.ުAXA9Vl0@@:Αx Bx3; À<C 1Tx9 0P^+4k8: :Nͺs9pq'L#0,ϺNVJM ;hE( Q9--4F 4?JôA>jv{SW-ՠԯ=hA4#l>_@@x0:A:t"VF"f?l'P @7:M,_ 40C[@,ɃI=y?0eB@}JXXo @(QeI(&P c`A~/Mdkѝ6JS*+/! ](zHGBPI?0e#Uq \ s$^2\Z"m X6Y#YO  GO>2pvtN 8$>~@ ̓TJ'@@b]z/7 '[FĒ3O`I R=Ӕ!:d.]-wdFT" 867Z(ls~ 8U `|VxMP Gcv_H:(UαHX`:E 54FWQ٩4FwXmͧ@&< $>zc9zmc<"w|y3TkP@?JB B&JN6a[UޑD #ԨlgKfW.`[:ɐD@稄A8@&xPp"?H9@?]W8G 1-8RD-H3v1Kvbdגvb92:]}G"N9uH]D £ɂэ#?^~WRA4< do}'L"x(.L"EҡeD=3 <,΁,Dx@::Okea~ C]K<p(DOLpYR,H VGgh'+i""S\`GvK@D.B.?|x?!aJ_z0,a8L)5n=A҇<Ь+c @@VX#>&I"8lj s(@؇ς$պI kP0fEusahif>Ӿ@SE+Af^{s G3c$KHP7<i&Yo{`;XA(b5A1d[H[%/Df>A.x VQ&snxA$pxȣ`jx$˺Ώmapu__"x *ī@ P 0j#x@BfA!Ah{ƒ IVo5L3o iA`O'!@B$Ńp?" X.SO ` d$03  De1^ !*D0=0= o $cfPH5׀= > Dr*E5 bSl7>b< 04Lֳ W+'X'='`D%t*@fBXV]B9VpptRHi;؃p`c x;u]Y었 x0$$Cq8p-p$oOА.n 5  Ј "95r('0I4Y6yNdB0V+>x@8JL`A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@ڱp $ЖcT CYy>0AN)G#Ú0T)x.0n7o#!)"by*@*H=YyvGֵ1Qtl !C S@SN3H tÃo0o[dVS晊p٠{V$ Qc!Aw 'ZuGh)W@ R 3E`40V*Jr@i<;HAh27E* x*a @s uPJPKJBj7),< Q"-"ZuGg٦t琧 SyLl:Gq$"e?#!pPT0&ڙ!a^HH @zFQm xe5r> Ni@ V#SaZp5Ay3zQz@#4#0 ]-d0u,yj' ;0Z/YAA$0n`!2VaICPf l ۲.1 A P`8!wbBd]@- T[V  [`53!"1T"ѕ7`tH@zNauS{|۷~2KA`t0O0Jpa/ :4X .o+?w50>{YKx)&&6 f4=VPq@c@҆ P!uB<`Upe<;;QA#"a9{$ I)+1/ q0| V  TGzA cF q5H [ p$"<1w$|(*,.(2<4<"5:଒*;B\!8G b‹9@ P1=3v7z7A:Wp+-<`\"+-0 #W[-}+"m5%-!"pҕsĔ61%4rL}β6mӅ Ik}i{ Ѐc;1VޗR-A^x$`EowD#BBCdP?'DV6A>'+\B%cB*.fw!5  p5MPPkp:nx+>A![񩡚$FB,- `?-c!]yDV rCNc5Z5K F3MIb@ ZҧI bKأG%6d`Hٖ8 P)Bdn]-q޾U_`+I8\7R=fePXńPpPL:䄬e8l?#|PQRMQV0s^sN% PAjXtnn@5y1^Qa"ofz;9I5V WYRzv*"SQGL$q|c0f\du`!@Pf\>wQ~ ~ot5} @h1aVp\q/,o:5f\@ofͺxkTs;9䴷K]$wh`d<oNsg3Z ƾ40 =%I`R0:y9Pp1p1r _f@I @I6$ʠ.z&^kJLMGg PlmUGR][3QM@BCcPPF'~,`Z1;c  $XA֥C`} o~ r1!"稠s"EzNKe"s }$(OA%ZQI.eSQNZUYnWaŎ%[Sx$@ L'~ dv/}:c8p?coc +> OM ᜁx0GQu6&`߂#\3xK+ f}"}Tu෉cbHԷ߅YY!C#u?~j)y`|:kAtA#pB +B 3pC;C nXGyR ~B 2Q u``uR"y@^H@<*'tGJ :8NJ Lgj臝4#H'.qG }"D<'DJ {i2AD5g}L"δi~:h~Ρ?dREYS\(,I'DRDdUvYfuYhvZjڥ@}"KgZC`T~vB|z8_K}GtB耾`Su$G@/f3)a r!o18Mze~h /{,"s~+\:Zt@/P)V6i *|#h24)L"%Hr (ctmh4gX^:[vm{nn9'7>9Y7pW|qwq 5N6ȣ-C?C@ DADB,DC>(/ Ih&QlIGqvdPB?t@ $`堄jjqPA Dt biȐiď%Q AR$*PnћQ" kE@?蓎9WӞ;&HFARH~[Sd!Џ'($.ުAXA9Vl0@@:Αx Bx3; À<C 1Tx9 0P^+4k8: :Nͺs9pq'L#0,ϺNVJM ;hE( Q9--4F 4?JôA>jv{SW-ՠԯ=hA4#l>_@@x0:A:t"VF"f?l'P @7:M,_ 40C[@,ɃI=y?0eB@}JXXo @(QeI(&P c`A~/Mdkѝ6JS*+/! ](zHGBPI?0e#Uq \ s$^2\Z"m X6Y#YO  GO>2pvtN 8$>~@ ̓TJ'@@b]z/7 '[FĒ3O`I R=Ӕ!:d.]-wdFT" 867Z(ls~ 8U `|VxMP Gcv_H:(UαHX`:E 54FWQ٩4FwXmͧ@&< $>zc9zmc<"w|y3TkP@?JB B&JN6a[UޑD #ԨlgKfW.`[:ɐD@稄A8@&xPp"?H9@?]W8G 1-8RD-H3v1Kvbdגvb92:]}G"N9uH]D £ɂэ#?^~WRA4< do}'L"x(.L"EҡeD=3 <,΁,Dx@::Okea~ C]K<p(DOLpYR,H VGgh'+i""S\`GvK@D.B.?|x?!aJ_z0,a8L)5n=A҇<Ь+c @@VX#>&I"8lj s(@؇ς$պI kP0fEusahif>Ӿ@SE+Af^{s G3c$KHP7<i&Yo{`;XA(b5A1d[H[%/Df>A.x VQ&snxA$pxȣ`jx$˺Ώmapu__"x *ī@ P 0j#x@BfA!Ah{ƒ IVo5L3o iA`O'!@B$Ńp?" X.SO ` d$03  De1^ !*D0=0= o $cfPH5׀= > Dr*E5 bSl7>b< 04Lֳ W+'X'='`D%t*@fBXV]B9VpptRHi;؃p`c x;u]Y었 x0$$Cq8p-p$oOА.n 5  Ј "95r('0I4Y6yNdB0V+>x@8JL`A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@ڱp $ЖcT CYy>0AN)G#Ú0T)x.0n7o#!)"by*@*H=YyvGֵ1Qtl !C S@SN3H tÃo0o[dVS晊p٠{V$ Qc!Aw 'ZuGh)W@ R 3E`40V*Jr@i<;HAh27E* x*a @s uPJPKJBj7),< Q"-"ZuGg٦t琧 SyLl:Gq$"e?#!pPT0&ڙ!a^HH @zFQm xe5r> Ni@ V#SaZp5Ay3zQz@#4#0 ]-d0u,yj' ;0Z/YAA$0n`!2VaICPf l ۲.1 A P`8!wbBd]@- T[V  [`53!"1T"ѕ7`tH@zNauS{|۷~2KA`t0O0Jpa/ :4X .o+?w50>{YKx)&&6 f4=VPq@c@҆ P!uB<`Upe<;;QA#"a9{$ I)+1/ q0| V  TGzA cF q5H [ p$"<1w$|(*,.(2<4<"5:଒*;B\!8G b‹9@ P1=3v7z7A:Wp+-<`\"+-0 #W[-}+"m5%-!"pҕsĔ61%4rL}β6mӅ Ik}i{ Ѐc;1VޗR-A^x$`EowD#BBCdP?'DV6A>'+\B%cB*.fw!5  p5MPPkp:nx+>A![񩡚$FB,- `?-c!]yDV rCNc5Z5K F3MIb@ ZҧI bKأG%6d`Hٖ8 P)Bdn]-q޾U_`+I8\7R=fePXńPpPL:䄬e8l?#|PQRMQV0s^sN% PAjXtnn@5y1^Qa"ofz;9I5V WYRzv*"SQGL$q|c0f\du`!@Pf\>wQ~ ~ot5} @h1aVp\q/,o:5f\@ofͺxkTs;9䴷K]$wh`d<oNsg3Z ƾ40 =%I`R0:y9Pp1p1r _f@I @I6$ʠ.z&^kJLMGg PlmUGR][3QM@BCcPPF'~,`Z1;c  $XA֥C`} o~ r1!"稠s"EzNKe"s }$(OA%ZQI.eSQNZUYnWaŎ%[Sx$@ L'~ dv/}:c8p?coc +> OM ᜁx0GQu6&`߂#\3xK+ f}"}Tu෉cbHԷ߅YY!C#u?~j)y`|:kAtA#pB +B 3pC;C nXGyR ~B 2Q u``uR"y@^H@<*'tGJ :8NJ Lgj臝4#H'.qG }"D<'DJ {i2AD5g}L"δi~:h~Ρ?dREYS\(,I'DRDdUvYfuYhvZjڥ@}"KgZC`T~vB|z8_K}GtB耾`Su$G@/f3)a r!o18Mze~h /{,"s~+\:Zt@/P)V6i *|#h24)L"%Hr (ctmh4gX^:[vm{nn9'7>9Y7pW|qwq 5N6ȣ-C?C@ DADB,DC>(/ Ih&QlIGqvdPB?t@ $`堄jjqPA Dt biȐiď%Q AR$*PnћQ" kE@?蓎9WӞ;&HFARH~[Sd!Џ'($.ުAXA9Vl0@@:Αx Bx3; À<C 1Tx9 0P^+4k8: :Nͺs9pq'L#0,ϺNVJM ;hE( Q9--4F 4?JôA>jv{SW-ՠԯ=hA4#l>_@@x0:A:t"VF"f?l'P @7:M,_ 40C[@,ɃI=y?0eB@}JXXo @(QeI(&P c`A~/Mdkѝ6JS*+/! ](zHGBPI?0e#Uq \ s$^2\Z"m X6Y#YO  GO>2pvtN 8$>~@ ̓TJ'@@b]z/7 '[FĒ3O`I R=Ӕ!:d.]-wdFT" 867Z(ls~ 8U `|VxMP Gcv_H:(UαHX`:E 54FWQ٩4FwXmͧ@&< $>zc9zmc<"w|y3TkP@?JB B&JN6a[UޑD #ԨlgKfW.`[:ɐD@稄A8@&xPp"?H9@?]W8G 1-8RD-H3v1Kvbdגvb92:]}G"N9uH]D £ɂэ#?^~WRA4< do}'L"x(.L"EҡeD=3 <,΁,Dx@::Okea~ C]K<p(DOLpYR,H VGgh'+i""S\`GvK@D.B.?|x?!aJ_z0,a8L)5n=A҇<Ь+c @@VX#>&I"8lj s(@؇ς$պI kP0fEusahif>Ӿ@SE+Af^{s G3c$KHP7<i&Yo{`;XA(b5A1d[H[%/Df>A.x VQ&snxA$pxȣ`jx$˺Ώmapu__"x *ī@ P 0j#x@BfA!Ah{ƒ IVo5L3o iA`O'!@B$Ńp?" X.SO ` d$03  De1^ !*D0=0= o $cfPH5׀= > Dr*E5 bSl7>b< 04Lֳ W+'X'='`D%t*@fBXV]B9VpptRHi;؃p`c x;u]Y었 x0$$Cq8p-p$oOА.n 5  Ј "95r('0I4Y6yNdB0V+>x@8JL`A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@ڱp $ЖcT CYy>0AN)G#Ú0T)x.0n7o#!)"by*@*H=YyvGֵ1Qtl !C S@SN3H tÃo0o[dVS晊p٠{V$ Qc!Aw 'ZuGh)W@ R 3E`40V*Jr@i<;HAh27E* x*a @s uPJPKJBj7),< Q"-"ZuGg٦t琧 SyLl:Gq$"e?#!pPT0&ڙ!a^HH @zFQm xe5r> Ni@ V#SaZp5Ay3zQz@#4#0 ]-d0u,yj' ;0Z/YAA$0n`!2VaICPf l ۲.1 A P`8!wbBd]@- T[V  [`53!"1T"ѕ7`tH@zNauS{|۷~2KA`t0O0Jpa/ :4X .o+?w50>{YKx)&&6 f4=VPq@c@҆ P!uB<`Upe<;;QA#"a9{$ I)+1/ q0| V  TGzA cF q5H [ p$"<1w$|(*,.(2<4<"5:଒*;B\!8G b‹9@ P1=3v7z7A:Wp+-<`\"+-0 #W[-}+"m5%-!"pҕsĔ61%4rL}β6mӅ Ik}i{ Ѐc;1VޗR-A^x$`EowD#BBCdP?'DV6A>'+\B%cB*.fw!5  p5MPPkp:nx+>A![񩡚$FB,- `?-c!]yDV rCNc5Z5K F3MIb@ ZҧI bKأG%6d`Hٖ8 P)Bdn]-q޾U_`+I8\7R=fePXńPpPL:䄬e8l?#|PQRMQV0s^sN% PAjXtnn@5y1^Qa"ofz;9I5V WYRzv*"SQGL$q|c0f\du`!@Pf\>wQ~ ~ot5} @h1aVp\q/,o:5f\@ofͺxkTs;9䴷K]$wh`d<oNsg3Z ƾ40 =%I`R0:y9Pp1p1r _f@I @I6$ʠ.z&^kJLMGg PlmUGR][3QM@BCcPPF'~,`Z1;c  $XA֥C`} o~ r1!"稠s"EzNKe"s }$(OA%ZQI.eSQNZUYnWaŎ%[Sx$@ L'~ dv/}:c8p?coc +> OM ᜁx0GQu6&`߂#\3xK+ f}"}Tu෉cbHԷ߅YY!C#u?~j)y`|:kAtA#pB +B 3pC;C nXGyR ~B 2Q u``uR"y@^H@<*'tGJ :8NJ Lgj臝4#H'.qG }"D<'DJ {i2AD5g}L"δi~:h~Ρ?dREYS\(,I'DRDdUvYfuYhvZjڥ@}"KgZC`T~vB|z8_K}GtB耾`Su$G@/f3)a r!o18Mze~h /{,"s~+\:Zt@/P)V6i *|#h24)L"%Hr (ctmh4gX^:[vm{nn9'7>9Y7pW|qwq 5N6ȣ-C?C@ DADB,DC>(/ Ih&QlIGqvdPB?t@ $`堄jjqPA Dt biȐiď%Q AR$*PnћQ" kE@?蓎9WӞ;&HFARH~[Sd!Џ'($.ުAXA9Vl0@@:Αx Bx3; À<C 1Tx9 0P^+4k8: :Nͺs9pq'L#0,ϺNVJM ;hE( Q9--4F 4?JôA>jv{SW-ՠԯ=hA4#l>_@@x0:A:t"VF"f?l'P @7:M,_ 40C[@,ɃI=y?0eB@}JXXo @(QeI(&P c`A~/Mdkѝ6JS*+/! ](zHGBPI?0e#Uq \ s$^2\Z"m X6Y#YO  GO>2pvtN 8$>~@ ̓TJ'@@b]z/7 '[FĒ3O`I R=Ӕ!:d.]-wdFT" 867Z(ls~ 8U `|VxMP Gcv_H:(UαHX`:E 54FWQ٩4FwXmͧ@&< $>zc9zmc<"w|y3TkP@?JB B&JN6a[UޑD #ԨlgKfW.`[:ɐD@稄A8@&xPp"?H9@?]W8G 1-8RD-H3v1Kvbdגvb92:]}G"N9uH]D £ɂэ#?^~WRA4< do}'L"x(.L"EҡeD=3 <,΁,Dx@::Okea~ C]K<p(DOLpYR,H VGgh'+i""S\`GvK@D.B.?|x?!aJ_z0,a8L)5n=A҇<Ь+c @@VX#>&I"8lj s(@؇ς$պI kP0fEusahif>Ӿ@SE+Af^{s G3c$KHP7<i&Yo{`;XA(b5A1d[H[%/Df>A.x VQ&snxA$pxȣ`jx$˺Ώmapu__"x *ī@ P 0j#x@BfA!Ah{ƒ IVo5L3o iA`O'!@B$Ńp?" X.SO ` d$03  De1^ !*D0=0= o $cfPH5׀= > Dr*E5 bSl7>b< 04Lֳ W+'X'='`D%t*@fBXV]B9VpptRHi;؃p`c x;u]Y었 x0$$Cq8p-p$oOА.n 5  Ј "95r('0I4Y6yNdB0V+>x@8JL`A7SYUpM\ٕ^ZdYfyhjlٖnpr9tYvyxz|ٗ~ZCs.s Ue\9@ڱp $ЖcT CYy>0AN)G#Ú0T)x.0n7o#!)"by*@*H=YyvGֵ1Qtl !C S@SN3H tÃo0o[dVS晊p٠{V$ Qc!Aw 'ZuGh)W@ R 3E`40V*Jr@i<;HAh27E* x*a @s uPJPKJBj7),< Q"-"ZuGg٦t琧 SyLl:Gq$"e?#!pPT0&ڙ!a^HH @zFQm xe5r> Ni@ V#SaZp5Ay3zQz@#4#0 ]-d0u,yj' ;0Z/YAA$0n`!2VaICPf l ۲.1 A P`8!wbBd]@- T[V  [`53!"1T"ѕ7`tH@zNauS{|۷~2KA`t0O0Jpa/ :4X .o+?w50>{YKx)&&6 f4=VPq@c@҆ P!uB<`Upe<;;QA#"a9{$ I)+1/ q0| V  TGzA cF q5H [ p$"<1w$|(*,.(2<4<"5:଒*;B\!8G b‹9@ P1=3v7z7A:Wp+-<`\"+-0 #W[-}+"m5%-!"pҕsĔ61%4rL}β6mӅ Ik}i{ Ѐc;1VޗR-A^x$`EowD#BBCdP?'DV6A>'+\B%cB*.fw!5  p5MPPkp:nx+>A![񩡚$FB,- `?-c!]yDV rCNc5Z5K F3MIb@ ZҧI bKأG%6d`Hٖ8 P)Bdn]-q޾U_`+I8\7R=fePXńPpPL:䄬e8l?#|PQRMQV0s^sN% PAjXtnn@5y1^Qa"ofz;9I5V WYRzv*"SQGL$q|c0f\du`!@Pf\>wQ~ ~ot5} @h1aVp\q/,o:5f\@ofͺxkTs;9䴷K]$wh`d<oNsg3Z ƾ40 =%I`R0:y9Pp1p1r _f@I @I6$ʠ.z&^kJLMGg PlmUGR][3QM@BCcPPF'~,`Z1;c  $XA֥C`} o~ r1!"稠s"EzNKe"s }$(OA%ZQI.eSQNZUYnWaŎ%[Sx$@ L'~ dv/}:c8p?coc +> OM ᜁx0GQu6&`߂#\3xK+ f}"}Tu෉cbHԷ߅YY!C#u?~j)y`|:kAtA#pB +B 3pC;C nXGyR ~B 2Q u``uR"y@^H@<*'tGJ :8NJ Lgj臝4#H'.qG }"D<'DJ {i2AD5g}L"δi~:h~Ρ?dREYS\(,I'DRDdUvYfuYhvZjڥ@}"KgZC`T~vB|z8_K}GtB耾`Su$G@/f3)a r!o18Mze~h /{,"s~+\:Zt@/P)V6i *|#h24)L"%Hr (ctmh4gX^:[vm{nn9'7>9Y7pW|qwq 5N6ȣ-C?C@ DADB,DC>! Ď>N#cAtq'L34 0ϺVЎ C!\;  S9--4F :JôA>jv{SW-ՠԯ=hA4#l>@@x4:A>u""f:l'0@7:M,P[ qK=C@PA׬,c::1$ :!u!Zw "b?40ac@,ՃIyP:Le|B@}JXXo @(QeI(&P c`A~/Mdkѝ6J(X/!b ]T(4z BP:0e#Uq d@ 8$i^2Z"m 6Y#YO -[O:8xtN $сu@ ̓T &@@X]zS0бPp'[FĒ3M D dD&b=Ӕq!:Kd.]-wdFT" 867Z(lcu@8U `|MP PGSv#_=b,`H\@JE5\4YF,fYQ٩4Fymͧ@*< D:@zmߌ"yly3TkP@?JBU JN6a[ѡUޑD #ԨlgKfW`=HqA8%I w@ p ԡ?HI:%W Sx9RD-fULZ,b2} \6H$թ:2ޗsQ $!hAx4Y5q\һWP*H`Xj]} 'L"x8@˰L"Eщ)8"=@ "7Tl:d僴?=Z]gi,oިu$cȳw8`Y. HUr IZ:nў dT#iXDdJVn WO7[H]юv,ITgoH ?1J1 ჈H"ѶNFζm'HǙё rb<~G1QAq0qA rUҠ(s`">:" >Q"+Ȓ fD`pgpOJTfp" FIA fl$Xxl#İ ,(@t[q* 6fN.P0xl]M$`=~rucFTBcVe' wt FGSXpc`pcqԀ |;e]Y׈ 0$$Chp-"$o1n 5  ;$Y&y5r(ђ'!48:NdB0V+B x!<ٔNP@AA7WYYﰕQ`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@qڡp $0ys p䴘r42yi CRwm:0v3V1""/ٜu !:yؙکq,D`oCİ @SNs̈Au p [ޠVSي밋vG-5|q '_ :F W0 R'3Eq`4@*Jr:DZm7GLiZ1 ^ϭ9:DN6m07,E<ҘX;1V֝RН-% $@]x$`5owD3BBC ޠP?+K h|%u]9&>?obzRpN@ W)&ٷXSB5ZaL`$iҢC40pٚ 6 ]yd V r N5;K F 3MI¶ZbԧIb9K!G%&d`Hؖ8 P)TB4m]-q/U[ +IOԜW R,=fҜpXԷ`pP"@N Y# 4>DQRMRA!p^s% pQZ3qXtn@un10^Qa"ofz;PI5V WiU"2u{OV)N*f fg\du `!I IP'~,㰎Ni:Q;#"nKnl邭k_} bWP/>M:t@B+Ddg*tB:{שuKº9edNBZnf8;"Rau!ӷkR"lG"cڎ!šu2",OR3CS![w]%{_݊+`z"f >ABoB|gСE&]iԩUfkرeϦ]mܹuontt!6mFt$CGaCR ֥ӛ_4bpº#08>Tg'oCHx{hX!QzBz(*dH>t.`H[@},u9 #<.2t2XJ"<1 8H(0MHt:@,ɈHIΈsL24L4TsM6tM8sN:yGgpd7AHwTG``LϞ""h YI)T]Ȅx?"" X,p}Ax| NZRI;xg=+tTd'KqˠA^uꉈէ+WDXgP'(NnEllrp_X\ NCydK6dSVye[ve@aֳ! w]bp;OL`.b|y68r??(f@^!fZ1pC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUWEǀ! ,f224^^\jjl::<BBDVVT&&$""$ZZ\bbd ..,JJL**,zz|664>>! Ď>N#cAtq'L34 0ϺVЎ C!\;  S9--4F :JôA>jv{SW-ՠԯ=hA4#l>@@x4:A>u""f:l'0@7:M,P[ qK=C@PA׬,c::1$ :!u!Zw "b?40ac@,ՃIyP:Le|B@}JXXo @(QeI(&P c`A~/Mdkѝ6J(X/!b ]T(4z BP:0e#Uq d@ 8$i^2Z"m 6Y#YO -[O:8xtN $сu@ ̓T &@@X]zS0бPp'[FĒ3M D dD&b=Ӕq!:Kd.]-wdFT" 867Z(lcu@8U `|MP PGSv#_=b,`H\@JE5\4YF,fYQ٩4Fymͧ@*< D:@zmߌ"yly3TkP@?JBU JN6a[ѡUޑD #ԨlgKfW`=HqA8%I w@ p ԡ?HI:%W Sx9RD-fULZ,b2} \6H$թ:2ޗsQ $!hAx4Y5q\һWP*H`Xj]} 'L"x8@˰L"Eщ)8"=@ "7Tl:d僴?=Z]gi,oިu$cȳw8`Y. HUr IZ:nў dT#iXDdJVn WO7[H]юv,ITgoH ?1J1 ჈H"ѶNFζm'HǙё rb<~G1QAq0qA rUҠ(s`">:" >Q"+Ȓ fD`pgpOJTfp" FIA fl$Xxl#İ ,(@t[q* 6fN.P0xl]M$`=~rucFTBcVe' wt FGSXpc`pcqԀ |;e]Y׈ 0$$Chp-"$o1n 5  ;$Y&y5r(ђ'!48:NdB0V+B x!<ٔNP@AA7WYYﰕQ`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@qڡp $0ys p䴘r42yi CRwm:0v3V1""/ٜu !:yؙکq,D`oCİ @SNs̈Au p [ޠVSي밋vG-5|q '_ :F W0 R'3Eq`4@*Jr:DZm7GLiZ1 ^ϭ9:DN6m07,E<ҘX;1V֝RН-% $@]x$`5owD3BBC ޠP?+K h|%u]9&>?obzRpN@ W)&ٷXSB5ZaL`$iҢC40pٚ 6 ]yd V r N5;K F 3MI¶ZbԧIb9K!G%&d`Hؖ8 P)TB4m]-q/U[ +IOԜW R,=fҜpXԷ`pP"@N Y# 4>DQRMRA!p^s% pQZ3qXtn@un10^Qa"ofz;PI5V WiU"2u{OV)N*f fg\du `!I IP'~,㰎Ni:Q;#"nKnl邭k_} bWP/>M:t@B+Ddg*tB:{שuKº9edNBZnf8;"Rau!ӷkR"lG"cڎ!šu2",OR3CS![w]%{_݊+`z"f >ABoB|gСE&]iԩUfkرeϦ]mܹuontt!6mFt$CGaCR ֥ӛ_4bpº#08>Tg'oCHx{hX!QzBz(*dH>t.`H[@},u9 #<.2t2XJ"<1 8H(0MHt:@,ɈHIΈsL24L4TsM6tM8sN:yGgpd7AHwTG``LϞ""h YI)T]Ȅx?"" X,p}Ax| NZRI;xg=+tTd'KqˠA^uꉈէ+WDXgP'(NnEllrp_X\ NCydK6dSVye[ve@aֳ! w]bp;OL`.b|y68r??(f@^!fZ1pC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUWEǀ! ,f224^^\jjl::<BBDVVT&&$""$ZZ\bbd ..,JJL**,zz|664>>! Ď>N#cAtq'L34 0ϺVЎ C!\;  S9--4F :JôA>jv{SW-ՠԯ=hA4#l>@@x4:A>u""f:l'0@7:M,P[ qK=C@PA׬,c::1$ :!u!Zw "b?40ac@,ՃIyP:Le|B@}JXXo @(QeI(&P c`A~/Mdkѝ6J(X/!b ]T(4z BP:0e#Uq d@ 8$i^2Z"m 6Y#YO -[O:8xtN $сu@ ̓T &@@X]zS0бPp'[FĒ3M D dD&b=Ӕq!:Kd.]-wdFT" 867Z(lcu@8U `|MP PGSv#_=b,`H\@JE5\4YF,fYQ٩4Fymͧ@*< D:@zmߌ"yly3TkP@?JBU JN6a[ѡUޑD #ԨlgKfW`=HqA8%I w@ p ԡ?HI:%W Sx9RD-fULZ,b2} \6H$թ:2ޗsQ $!hAx4Y5q\һWP*H`Xj]} 'L"x8@˰L"Eщ)8"=@ "7Tl:d僴?=Z]gi,oިu$cȳw8`Y. HUr IZ:nў dT#iXDdJVn WO7[H]юv,ITgoH ?1J1 ჈H"ѶNFζm'HǙё rb<~G1QAq0qA rUҠ(s`">:" >Q"+Ȓ fD`pgpOJTfp" FIA fl$Xxl#İ ,(@t[q* 6fN.P0xl]M$`=~rucFTBcVe' wt FGSXpc`pcqԀ |;e]Y׈ 0$$Chp-"$o1n 5  ;$Y&y5r(ђ'!48:NdB0V+B x!<ٔNP@AA7WYYﰕQ`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@qڡp $0ys p䴘r42yi CRwm:0v3V1""/ٜu !:yؙکq,D`oCİ @SNs̈Au p [ޠVSي밋vG-5|q '_ :F W0 R'3Eq`4@*Jr:DZm7GLiZ1 ^ϭ9:DN6m07,E<ҘX;1V֝RН-% $@]x$`5owD3BBC ޠP?+K h|%u]9&>?obzRpN@ W)&ٷXSB5ZaL`$iҢC40pٚ 6 ]yd V r N5;K F 3MI¶ZbԧIb9K!G%&d`Hؖ8 P)TB4m]-q/U[ +IOԜW R,=fҜpXԷ`pP"@N Y# 4>DQRMRA!p^s% pQZ3qXtn@un10^Qa"ofz;PI5V WiU"2u{OV)N*f fg\du `!I IP'~,㰎Ni:Q;#"nKnl邭k_} bWP/>M:t@B+Ddg*tB:{שuKº9edNBZnf8;"Rau!ӷkR"lG"cڎ!šu2",OR3CS![w]%{_݊+`z"f >ABoB|gСE&]iԩUfkرeϦ]mܹuontt!6mFt$CGaCR ֥ӛ_4bpº#08>Tg'oCHx{hX!QzBz(*dH>t.`H[@},u9 #<.2t2XJ"<1 8H(0MHt:@,ɈHIΈsL24L4TsM6tM8sN:yGgpd7AHwTG``LϞ""h YI)T]Ȅx?"" X,p}Ax| NZRI;xg=+tTd'KqˠA^uꉈէ+WDXgP'(NnEllrp_X\ NCydK6dSVye[ve@aֳ! w]bp;OL`.b|y68r??(f@^!fZ1pC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUWEǀ! ,fjjl^^\::>{"N%t`FcA>#G߅fᆳ3;s<L 혈XA.cQ4hЍ 娑<): N3F)TV 3;ꨳA(c } Ih&QlIGqvdP:@  `堄jji_Nȓ $td biȐi%IPR$*Pnћ"P kE:#%4;&HFARH~[Sd!'($.ުA|C9ȁl0 <Αx BxCA; `$ <+s 1Ll90^+4k8= Ԏ=NͲc9hq'LPzS0,ϺR4ߨaOP; Q9--4F t>JôA>jv{SW-ՠԯ=hA4#l>@@x0:A=nb"@"fX@>l'P0@7:QM,[ œ0% @>u!Zw p;:0c[@,̓IypF>e;HB@}JXXo @(QeI(&P c`A~/Mdkѝ6J&o/! ]0zG BPG>0e#Uq \ s$ꠂB"1MH/Ρ"BI}/$1$ 4J; }: dA2|C!AUE!:Ke6S-wdFT"8U67Z(lcu8U `|pMP PGcv_<( UαH\2- 1~-j(HA-0QˊT0NE1m=@(`< $>zc9zm<"vy3TlPTG?JFuTI0J )`$ nL"/Av/"9(#i0pg@K-q<W:+Okeb~E]k`V UO0rA) m %?+&""SzGvK@ŲD.Bn>ZJTgg;(m9S`D4A<|I26|(ζI@>hU:=J;9dfnámomBxZ =v#@X+N8}T榙m"i򑄁P]Bt 1?H q}0b0 %:NOԑt}L g{a @Bش%k "mG}DL1X0 8:w 9!\0@U]Ƕ0ٹ O <U ohk f"dv 1nL^'ԄPG0Mp YHxGp+%rO]+SU!,Y0 h& Pe1_ Q*D00= o4JfV$ F* = > pDP r*2[q* 6ÆN/P0hl]M$`=~rusFTB EhV"s` ?9d@҃P =T0xp@v@A 00 Sҕ ~؈1P1 C(p-`BoNT *Pep$!ЊVP7TX\AъF$z62 '@^~$C3 &'&MSp4K j,&)@V ^@ x6 y\Drn0@ۨ+`  '@ycPL  _2Pb 8$Y&Zq@qJ+, -y19'y8:A9} -;PRi7{#u!\9`b9Zy,djlٖnpr9tYvyxz|ٗ~9q54Q/0PQ*4Yy  pqLbl* >@aN)G#0T)x.n7S&!y* /˹"B*:ǚؙڹVjb11g 8T0 AU:ȌH;1I@@u ;㸋vG-^6z '`:F W@ & 3E`4@@*Jq:DZn<>XsFP27Eɷh]et&FڦnQI޹S Q"-"`vGepmFw}jS} ߠq` Mpz뇤q$"e?]`E AjJ^aMEKH' XxګG&1mix5rB*Ni4KIZo6`6Ay|p` 5zjQz#4#O]-$dWJMJҧ-n;k,ª@'Ͷ/!$n`!BV NN| knPe&}:l{8 AX#``8% \I`G/®21@-^` [> 5l1T"ӕ|ŒEJxGN@S׵a[{ 8=㳊k˱ :4`oip Yx w60> cK|)&& fr7=к :$p~Z6P$N(` W`<;ڻ@1R AIh#h (k߰u;\A$ڑh,W \I 0 "9&|(,q,.02<ê4|8ã!%>âk"F|ĭ2?@.+ QH\VmN I[aLW\f\ +0q<pUv1qf`^s 1pmf=d|Ɣ\Ɍ!9[""@ -ZLP1B p\+!Oɞ) %`39a,3 UT@vl|̅ѼPBaL\@ M !zͳJxW9Mҷ y>@u7Z,,qoq{0肱R*1q/m%2QSЧW0Q::Sz6 3+20[R=u@N:}` p16$@` 6Xf%3?c7x7|Cp5 6e r*  0z2rE!eVC޴-RVa=1 vҮ9:dN6m! I[}a!B6kM;=۴d5lR+A eh@2 Xi:zG4>*4?-4A0ī >p  6A'[\%cB*.w(P ۧ 1MN \3B5jaLb$ CKrvj/]:A b291G! a 74Y#|l 31MI@ %^}*cKG%6d`Hז8 P)IIbh( ]-fqNNUc t9:0%r6B]cpVXPpP#`N .b# #98QRM10>J;95 Z~p5:7 pEWQ7SU%VXfz;hI5V WG*NQ>x*"SQgL}lESg ,X"B \y/PwA~Am |m9%Nٌn5. !OAa5'0)0zoS:6f\ꐦ& 1ly'k$s;9D86%r Fۢ4jIj; fpK]&&E|MUR!<UAp𱻰BCVL$s _6$ʠ.z&h jLv*yx$f?l mGb][3QN@BCkRP>'~,pZm3 $8߼|:—@yg/YA5'`|E`O)1+h0Uꀨx 4GNg> ߤppo:{SQNZUYnWaŎ%[Yiծe[qΥ[<[dg2R Nչ}Pn uSa`{!{@B>W:9F [vjz%H{~ìY>uGN5q|rܡX`w~'9*a{6L`}4>Ú _"Qݰk;{ˆ8^N7u(S'@TpAtA#pB +B 3pé!)`@ j{ mt*]hgnh|wqΆo@ )!@ "8g"nR9R0hwѝo/8#ɇۀL$J{.*Y@S  :}(kj! T @Aǁ!┠dC !(y2C^{W`vXb5XdUvY  vQjyu@~HHÉ.T``:!@yIO8r"ʧPC'"wT^~:r @ "o,"lP#w=` \t5'HڈB9}s~P@8ijҝ(\s f<9@yV[oD'iTzꪽD@$`VՕYn{oo*XiJUf|jC9s^ u ЉN`ԔK>\`֖!ΧU&S$^u0G?} 60J229ǣTӇݸe $NJ>I t`:ux-+&" , +:4@p:2 mW`=AP#$a M~̳p1a mxCP;a59pHu∷|QKdbD(FQxXh pJE0Qc$c8!*gUF8QscxG<ЍycG@R$QWHD&Rdd#HHFRd%-yILfRd'=IPR$e)MyJTRde+]JXRe-myK\Re/}K`S$f1yLd&Sdf3LhFSӤf5yMlfSf7MpS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^Wo}{_Wo_X&p |`'X fp`GXp-|a gXp=aX#&qM|bX+fq]bX3qm|cX;q}c YC&r|d$'YKfrd(GYSr|e,gY[re0Yc&s|f4Ykfsf8Yss|gC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{M! ,fjjl^^\::>{"N%t`FcA>#G߅fᆳ3;s<L 혈XA.cQ4hЍ 娑<): N3F)TV 3;ꨳA(c } Ih&QlIGqvdP:@  `堄jji_Nȓ $td biȐi%IPR$*Pnћ"P kE:#%4;&HFARH~[Sd!'($.ުA|C9ȁl0 <Αx BxCA; `$ <+s 1Ll90^+4k8= Ԏ=NͲc9hq'LPzS0,ϺR4ߨaOP; Q9--4F t>JôA>jv{SW-ՠԯ=hA4#l>@@x0:A=nb"@"fX@>l'P0@7:QM,[ œ0% @>u!Zw p;:0c[@,̓IypF>e;HB@}JXXo @(QeI(&P c`A~/Mdkѝ6J&o/! ]0zG BPG>0e#Uq \ s$ꠂB"1MH/Ρ"BI}/$1$ 4J; }: dA2|C!AUE!:Ke6S-wdFT"8U67Z(lcu8U `|pMP PGcv_<( UαH\2- 1~-j(HA-0QˊT0NE1m=@(`< $>zc9zm<"vy3TlPTG?JFuTI0J )`$ nL"/Av/"9(#i0pg@K-q<W:+Okeb~E]k`V UO0rA) m %?+&""SzGvK@ŲD.Bn>ZJTgg;(m9S`D4A<|I26|(ζI@>hU:=J;9dfnámomBxZ =v#@X+N8}T榙m"i򑄁P]Bt 1?H q}0b0 %:NOԑt}L g{a @Bش%k "mG}DL1X0 8:w 9!\0@U]Ƕ0ٹ O <U ohk f"dv 1nL^'ԄPG0Mp YHxGp+%rO]+SU!,Y0 h& Pe1_ Q*D00= o4JfV$ F* = > pDP r*2[q* 6ÆN/P0hl]M$`=~rusFTB EhV"s` ?9d@҃P =T0xp@v@A 00 Sҕ ~؈1P1 C(p-`BoNT *Pep$!ЊVP7TX\AъF$z62 '@^~$C3 &'&MSp4K j,&)@V ^@ x6 y\Drn0@ۨ+`  '@ycPL  _2Pb 8$Y&Zq@qJ+, -y19'y8:A9} -;PRi7{#u!\9`b9Zy,djlٖnpr9tYvyxz|ٗ~9q54Q/0PQ*4Yy  pqLbl* >@aN)G#0T)x.n7S&!y* /˹"B*:ǚؙڹVjb11g 8T0 AU:ȌH;1I@@u ;㸋vG-^6z '`:F W@ & 3E`4@@*Jq:DZn<>XsFP27Eɷh]et&FڦnQI޹S Q"-"`vGepmFw}jS} ߠq` Mpz뇤q$"e?]`E AjJ^aMEKH' XxګG&1mix5rB*Ni4KIZo6`6Ay|p` 5zjQz#4#O]-$dWJMJҧ-n;k,ª@'Ͷ/!$n`!BV NN| knPe&}:l{8 AX#``8% \I`G/®21@-^` [> 5l1T"ӕ|ŒEJxGN@S׵a[{ 8=㳊k˱ :4`oip Yx w60> cK|)&& fr7=к :$p~Z6P$N(` W`<;ڻ@1R AIh#h (k߰u;\A$ڑh,W \I 0 "9&|(,q,.02<ê4|8ã!%>âk"F|ĭ2?@.+ QH\VmN I[aLW\f\ +0q<pUv1qf`^s 1pmf=d|Ɣ\Ɍ!9[""@ -ZLP1B p\+!Oɞ) %`39a,3 UT@vl|̅ѼPBaL\@ M !zͳJxW9Mҷ y>@u7Z,,qoq{0肱R*1q/m%2QSЧW0Q::Sz6 3+20[R=u@N:}` p16$@` 6Xf%3?c7x7|Cp5 6e r*  0z2rE!eVC޴-RVa=1 vҮ9:dN6m! I[}a!B6kM;=۴d5lR+A eh@2 Xi:zG4>*4?-4A0ī >p  6A'[\%cB*.w(P ۧ 1MN \3B5jaLb$ CKrvj/]:A b291G! a 74Y#|l 31MI@ %^}*cKG%6d`Hז8 P)IIbh( ]-fqNNUc t9:0%r6B]cpVXPpP#`N .b# #98QRM10>J;95 Z~p5:7 pEWQ7SU%VXfz;hI5V WG*NQ>x*"SQgL}lESg ,X"B \y/PwA~Am |m9%Nٌn5. !OAa5'0)0zoS:6f\ꐦ& 1ly'k$s;9D86%r Fۢ4jIj; fpK]&&E|MUR!<UAp𱻰BCVL$s _6$ʠ.z&h jLv*yx$f?l mGb][3QN@BCkRP>'~,pZm3 $8߼|:—@yg/YA5'`|E`O)1+h0Uꀨx 4GNg> ߤppo:{SQNZUYnWaŎ%[Yiծe[qΥ[<[dg2R Nչ}Pn uSa`{!{@B>W:9F [vjz%H{~ìY>uGN5q|rܡX`w~'9*a{6L`}4>Ú _"Qݰk;{ˆ8^N7u(S'@TpAtA#pB +B 3pé!)`@ j{ mt*]hgnh|wqΆo@ )!@ "8g"nR9R0hwѝo/8#ɇۀL$J{.*Y@S  :}(kj! T @Aǁ!┠dC !(y2C^{W`vXb5XdUvY  vQjyu@~HHÉ.T``:!@yIO8r"ʧPC'"wT^~:r @ "o,"lP#w=` \t5'HڈB9}s~P@8ijҝ(\s f<9@yV[oD'iTzꪽD@$`VՕYn{oo*XiJUf|jC9s^ u ЉN`ԔK>\`֖!ΧU&S$^u0G?} 60J229ǣTӇݸe $NJ>I t`:ux-+&" , +:4@p:2 mW`=AP#$a M~̳p1a mxCP;a59pHu∷|QKdbD(FQxXh pJE0Qc$c8!*gUF8QscxG<ЍycG@R$QWHD&Rdd#HHFRd%-yILfRd'=IPR$e)MyJTRde+]JXRe-myK\Re/}K`S$f1yLd&Sdf3LhFSӤf5yMlfSf7MpS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^Wo}{_Wo_X&p |`'X fp`GXp-|a gXp=aX#&qM|bX+fq]bX3qm|cX;q}c YC&r|d$'YKfrd(GYSr|e,gY[re0Yc&s|f4Ykfsf8Yss|gC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{M! ,fjjl^^\::>#G߅fᆳS;s= T 阈QXA.cQ4hЍ 娑:#N? N@ȳJF)TV #<(0 Ih&QlIGqvdPB? Ѐ $`堄jji 4t$%iȐi%M@AR$*Pnћh!kEc@?裎d;&HꘐFAbH~[Sd!Џ'($.ުA8C9ȁl0: ΑxBxA:Ў =gs 1Tp90P^+4k8B; N;NͲc9hq'LC0,ϺFO)sL @P:1!(S9--4F t>JôA>jv{SW-ՠԯ=hA4#l>_@j@x0:Aq;s ""H "f@>l'` @7:M,[ #=C@PΘA׬ ]>V1%`@ @>!~ Zw <<0C[@,݃ILyA (E>MegHB@}JXXo @(QeI(&P c`A~/Mdkѝ6J*g/!A ];(4zPGBPQG>0e#Uq \@ s$pD"!MHHΡ?BD&I}/$!$ 47; }CG?$ dA28C!AUEH!:e6S-wdFT" 867Z(lc~ 8U `|hMP GSv_:( αH\:- 1w-j(HA-QˊT0NE1mE@"Ў< D>zc9zm<"vy3TlPG?JFuTI/J )`&G`nL"/Fv/U,# g!@K-i:W:+Okeb~E]ێZ`[O0rA%I! m %?+&""SzGvK@ŲD.Bn>ZJTgg:(m9S`D4A<|I2ڶ|(ζI@>`[#:=J;i9dfUnámo㰋BxZ =v#@X+N8T榙m"i1P]Bt 1?H q}`0 %:NOt}T g{aq @B،)k "mrG}DJ1X80 8:y 9!\0@vU]Ƕ0ٹ O <U ohk f"dv 1nL^'ԄG0Kt YHxG$+%rO]+SU!,YP 03#h& Pe1_ A*D0L0= o$JfV$ F* = > Dr* 2[q* 6ÆN/P0hl]M$`=~rusFTB EhV"p?9@҃P=N0x@v @A q0  S ҕ ~؈1P1 CA (p-poNT *Pep$p "ЊVP7TX\AъF$62 '@^n$%C3` &'&MSp 4KF j,&)@V ^@ x6 y\Drs0@ۨ+p'@ys PL  _2P8$Y&Zq@qJ+,!-y19'y8:  A9}1 -;PRi7;{#u!\9`b9Zy,djlٖnpr9tYvyxz|ٗ~9q54Q/0PQ*4Yy pQLbl* >aN)G#0T)x`.n7S&!y* /˹"B*8:ǚؙڹVj11g 8Tp 0AU:ȌH; 0L1IҠu ;㸋vG-^6z P '`:F W@  3E`4@*Jq:DZn<>X FP27EAɷh]1etg&FڦnQI޹S Q"-"`vGepmFw}jS} Πq` Mpz뇤q$"e?]!`E #AjJ^aMEKH' Xx&ګG&1m ix5rB*Ni4KIZo6`6Ay-p`5zjQz#4#O ]" -$dWJMJҧ- s;k,ª@'Ͷ/$n`!BV N| ksPe&}Zl{8 AX#`8U \ I`G/®2 ;@-^` [ 5l1T"ӕ|ŒEJxGN`@S׵a[{ 0=㳊k˱ :4`oip Yx w60> cK|)&& f7=к :$p~.6P$N(` W`<;ڻ1R AIh#h (kΰu;\A$ڑh,W` \I 0 "9&|(,q,.02Öq KF|ġ2?@.+ QH\V,mN I[a̾AW|h+ps<p Uv1qv`^ Qpmf"a6B kiɜ %"1  $p%@ a0A詞2Zr62@=PMd' 0XG $\uѼPBc<\"@ M !Z[GxG9Mҷ y@uMel=`"͂ .+šR2ҦY\  sk5}z331g0B*Cu!S: VdLPK 0 P-1#`C'Ơިoe&:?[B P1=3v7z7A:Wp+-<`\"+-  #W \-+hm5kMK"gPvzAAM}9_A:k6a(|B,;aT;nȀRmd5l R+A eh@r Xi:zG4>*4?-4A0ī >p )6A'K\2%cB*V.w(PG Pݧ 1M \sB5jaL$ CrvjG^C=Tn"&]yRV rs N52&l 31MI@ %u}*KG%6d`Hז8 P)IIbh; ]-fqgNU 9: 8rvB]pVXPpP#`N .b#Ŏ#6 UQ!$9#.^%!qZXtn@u-1U0_QbՎ mWQSo ruT僧"2E{' Ґ\4u`!Jp .P|Sfrv0 cEi-"$uF (zg'[V2fSn <ps5 !OAaK5')0zoacm:i nÆ0|@2ScNc^"P`xoN3uP`W)5+kr`R4jaTZ%{D^PtQ (4d2,*q, ujC" RgƤlǍG< ԧ. 4O]tV%l'/‚%pPعè/=ėo#]wѡ>-kݎ,Yta"uw/+;Zhp@Bu-J0"QΖ]qϗ~@@¹ +kVg04ǡ_; H cȑ%O\e̙5ogСE&]iԩUfkرeϦ]) d$BuG$`~:j'w? - 76 eBvԏ>7KWuid|`>g.r茏@(a(0e7BA#c;b.kH&YI2L(_ y2Fs~r'ܑ&r6"4H$TrI&tI(rJ*%!!) G [v9N?y0 C O yP"g`  !` $8iq!ns$igS@8G:!Ωɤ a2i8g>6ǂHR'<쫄K 0VmKiǰM(QU X:k K|w_~_x` 6`ر vҢ{*n@z!HHi! .p0``:&u֮"j ǏnEP yrq&Hs笄zQ|$I>syʧGr>Wg&*Qy$'|eIh<Fua LUYo ^\q%4x0 @=!}w{w~x7q—!`&0<]EN&N(KhuD@ܹ vCC|Le΄x8Oud`!z8 PG?d>I"xHNvi`w,`;;rtƲ H@@4A " 4g @^ZZBɣXe(~< _(GNwF4QkdcF8w"D|D{TG@R$d! yHD2҇%R~d%-yILfRd'ṫܑ= C?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXHXXXXXX YY-Y=YMY]YmY}YYYYYYYYY , ! ,fjjl^^\::>#G߅fᆳS;s= T 阈QXA.cQ4hЍ 娑:#N? N@ȳJF)TV #<(0 Ih&QlIGqvdPB? Ѐ $`堄jji 4t$%iȐi%M@AR$*Pnћh!kEc@?裎d;&HꘐFAbH~[Sd!Џ'($.ުA8C9ȁl0: ΑxBxA:Ў =gs 1Tp90P^+4k8B; N;NͲc9hq'LC0,ϺFO)sL @P:1!(S9--4F t>JôA>jv{SW-ՠԯ=hA4#l>_@j@x0:Aq;s ""H "f@>l'` @7:M,[ #=C@PΘA׬ ]>V1%`@ @>!~ Zw <<0C[@,݃ILyA (E>MegHB@}JXXo @(QeI(&P c`A~/Mdkѝ6J*g/!A ];(4zPGBPQG>0e#Uq \@ s$pD"!MHHΡ?BD&I}/$!$ 47; }CG?$ dA28C!AUEH!:e6S-wdFT" 867Z(lc~ 8U `|hMP GSv_:( αH\:- 1w-j(HA-QˊT0NE1mE@"Ў< D>zc9zm<"vy3TlPG?JFuTI/J )`&G`nL"/Fv/U,# g!@K-i:W:+Okeb~E]ێZ`[O0rA%I! m %?+&""SzGvK@ŲD.Bn>ZJTgg:(m9S`D4A<|I2ڶ|(ζI@>`[#:=J;i9dfUnámo㰋BxZ =v#@X+N8T榙m"i1P]Bt 1?H q}`0 %:NOt}T g{aq @B،)k "mrG}DJ1X80 8:y 9!\0@vU]Ƕ0ٹ O <U ohk f"dv 1nL^'ԄG0Kt YHxG$+%rO]+SU!,YP 03#h& Pe1_ A*D0L0= o$JfV$ F* = > Dr* 2[q* 6ÆN/P0hl]M$`=~rusFTB EhV"p?9@҃P=N0x@v @A q0  S ҕ ~؈1P1 CA (p-poNT *Pep$p "ЊVP7TX\AъF$62 '@^n$%C3` &'&MSp 4KF j,&)@V ^@ x6 y\Drs0@ۨ+p'@ys PL  _2P8$Y&Zq@qJ+,!-y19'y8:  A9}1 -;PRi7;{#u!\9`b9Zy,djlٖnpr9tYvyxz|ٗ~9q54Q/0PQ*4Yy pQLbl* >aN)G#0T)x`.n7S&!y* /˹"B*8:ǚؙڹVj11g 8Tp 0AU:ȌH; 0L1IҠu ;㸋vG-^6z P '`:F W@  3E`4@*Jq:DZn<>X FP27EAɷh]1etg&FڦnQI޹S Q"-"`vGepmFw}jS} Πq` Mpz뇤q$"e?]!`E #AjJ^aMEKH' Xx&ګG&1m ix5rB*Ni4KIZo6`6Ay-p`5zjQz#4#O ]" -$dWJMJҧ- s;k,ª@'Ͷ/$n`!BV N| ksPe&}Zl{8 AX#`8U \ I`G/®2 ;@-^` [ 5l1T"ӕ|ŒEJxGN`@S׵a[{ 0=㳊k˱ :4`oip Yx w60> cK|)&& f7=к :$p~.6P$N(` W`<;ڻ1R AIh#h (kΰu;\A$ڑh,W` \I 0 "9&|(,q,.02Öq KF|ġ2?@.+ QH\V,mN I[a̾AW|h+ps<p Uv1qv`^ Qpmf"a6B kiɜ %"1  $p%@ a0A詞2Zr62@=PMd' 0XG $\uѼPBc<\"@ M !Z[GxG9Mҷ y@uMel=`"͂ .+šR2ҦY\  sk5}z331g0B*Cu!S: VdLPK 0 P-1#`C'Ơިoe&:?[B P1=3v7z7A:Wp+-<`\"+-  #W \-+hm5kMK"gPvzAAM}9_A:k6a(|B,;aT;nȀRmd5l R+A eh@r Xi:zG4>*4?-4A0ī >p )6A'K\2%cB*V.w(PG Pݧ 1M \sB5jaL$ CrvjG^C=Tn"&]yRV rs N52&l 31MI@ %u}*KG%6d`Hז8 P)IIbh; ]-fqgNU 9: 8rvB]pVXPpP#`N .b#Ŏ#6 UQ!$9#.^%!qZXtn@u-1U0_QbՎ mWQSo ruT僧"2E{' Ґ\4u`!Jp .P|Sfrv0 cEi-"$uF (zg'[V2fSn <ps5 !OAaK5')0zoacm:i nÆ0|@2ScNc^"P`xoN3uP`W)5+kr`R4jaTZ%{D^PtQ (4d2,*q, ujC" RgƤlǍG< ԧ. 4O]tV%l'/‚%pPعè/=ėo#]wѡ>-kݎ,Yta"uw/+;Zhp@Bu-J0"QΖ]qϗ~@@¹ +kVg04ǡ_; H cȑ%O\e̙5ogСE&]iԩUfkرeϦ]) d$BuG$`~:j'w? - 76 eBvԏ>7KWuid|`>g.r茏@(a(0e7BA#c;b.kH&YI2L(_ y2Fs~r'ܑ&r6"4H$TrI&tI(rJ*%!!) G [v9N?y0 C O yP"g`  !` $8iq!ns$igS@8G:!Ωɤ a2i8g>6ǂHR'<쫄K 0VmKiǰM(QU X:k K|w_~_x` 6`ر vҢ{*n@z!HHi! .p0``:&u֮"j ǏnEP yrq&Hs笄zQ|$I>syʧGr>Wg&*Qy$'|eIh<Fua LUYo ^\q%4x0 @=!}w{w~x7q—!`&0<]EN&N(KhuD@ܹ vCC|Le΄x8Oud`!z8 PG?d>I"xHNvi`w,`;;rtƲ H@@4A " 4g @^ZZBɣXe(~< _(GNwF4QkdcF8w"D|D{TG@R$d! yHD2҇%R~d%-yILfRd'ṫܑ= C?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXHXXXXXX YY-Y=YMY]YmY}YYYYYYYYY , ! ,fjjl^^\::>#G߅fᆳS;s= T 阈QXA.cQ4hЍ 娑:#N? N@ȳJF)TV #<(0 Ih&QlIGqvdPB? Ѐ $`堄jji 4t$%iȐi%M@AR$*Pnћh!kEc@?裎d;&HꘐFAbH~[Sd!Џ'($.ުA8C9ȁl0: ΑxBxA:Ў =gs 1Tp90P^+4k8B; N;NͲc9hq'LC0,ϺFO)sL @P:1!(S9--4F t>JôA>jv{SW-ՠԯ=hA4#l>_@j@x0:Aq;s ""H "f@>l'` @7:M,[ #=C@PΘA׬ ]>V1%`@ @>!~ Zw <<0C[@,݃ILyA (E>MegHB@}JXXo @(QeI(&P c`A~/Mdkѝ6J*g/!A ];(4zPGBPQG>0e#Uq \@ s$pD"!MHHΡ?BD&I}/$!$ 47; }CG?$ dA28C!AUEH!:e6S-wdFT" 867Z(lc~ 8U `|hMP GSv_:( αH\:- 1w-j(HA-QˊT0NE1mE@"Ў< D>zc9zm<"vy3TlPG?JFuTI/J )`&G`nL"/Fv/U,# g!@K-i:W:+Okeb~E]ێZ`[O0rA%I! m %?+&""SzGvK@ŲD.Bn>ZJTgg:(m9S`D4A<|I2ڶ|(ζI@>`[#:=J;i9dfUnámo㰋BxZ =v#@X+N8T榙m"i1P]Bt 1?H q}`0 %:NOt}T g{aq @B،)k "mrG}DJ1X80 8:y 9!\0@vU]Ƕ0ٹ O <U ohk f"dv 1nL^'ԄG0Kt YHxG$+%rO]+SU!,YP 03#h& Pe1_ A*D0L0= o$JfV$ F* = > Dr* 2[q* 6ÆN/P0hl]M$`=~rusFTB EhV"p?9@҃P=N0x@v @A q0  S ҕ ~؈1P1 CA (p-poNT *Pep$p "ЊVP7TX\AъF$62 '@^n$%C3` &'&MSp 4KF j,&)@V ^@ x6 y\Drs0@ۨ+p'@ys PL  _2P8$Y&Zq@qJ+,!-y19'y8:  A9}1 -;PRi7;{#u!\9`b9Zy,djlٖnpr9tYvyxz|ٗ~9q54Q/0PQ*4Yy pQLbl* >aN)G#0T)x`.n7S&!y* /˹"B*8:ǚؙڹVj11g 8Tp 0AU:ȌH; 0L1IҠu ;㸋vG-^6z P '`:F W@  3E`4@*Jq:DZn<>X FP27EAɷh]1etg&FڦnQI޹S Q"-"`vGepmFw}jS} Πq` Mpz뇤q$"e?]!`E #AjJ^aMEKH' Xx&ګG&1m ix5rB*Ni4KIZo6`6Ay-p`5zjQz#4#O ]" -$dWJMJҧ- s;k,ª@'Ͷ/$n`!BV N| ksPe&}Zl{8 AX#`8U \ I`G/®2 ;@-^` [ 5l1T"ӕ|ŒEJxGN`@S׵a[{ 0=㳊k˱ :4`oip Yx w60> cK|)&& f7=к :$p~.6P$N(` W`<;ڻ1R AIh#h (kΰu;\A$ڑh,W` \I 0 "9&|(,q,.02Öq KF|ġ2?@.+ QH\V,mN I[a̾AW|h+ps<p Uv1qv`^ Qpmf"a6B kiɜ %"1  $p%@ a0A詞2Zr62@=PMd' 0XG $\uѼPBc<\"@ M !Z[GxG9Mҷ y@uMel=`"͂ .+šR2ҦY\  sk5}z331g0B*Cu!S: VdLPK 0 P-1#`C'Ơިoe&:?[B P1=3v7z7A:Wp+-<`\"+-  #W \-+hm5kMK"gPvzAAM}9_A:k6a(|B,;aT;nȀRmd5l R+A eh@r Xi:zG4>*4?-4A0ī >p )6A'K\2%cB*V.w(PG Pݧ 1M \sB5jaL$ CrvjG^C=Tn"&]yRV rs N52&l 31MI@ %u}*KG%6d`Hז8 P)IIbh; ]-fqgNU 9: 8rvB]pVXPpP#`N .b#Ŏ#6 UQ!$9#.^%!qZXtn@u-1U0_QbՎ mWQSo ruT僧"2E{' Ґ\4u`!Jp .P|Sfrv0 cEi-"$uF (zg'[V2fSn <ps5 !OAaK5')0zoacm:i nÆ0|@2ScNc^"P`xoN3uP`W)5+kr`R4jaTZ%{D^PtQ (4d2,*q, ujC" RgƤlǍG< ԧ. 4O]tV%l'/‚%pPعè/=ėo#]wѡ>-kݎ,Yta"uw/+;Zhp@Bu-J0"QΖ]qϗ~@@¹ +kVg04ǡ_; H cȑ%O\e̙5ogСE&]iԩUfkرeϦ]) d$BuG$`~:j'w? - 76 eBvԏ>7KWuid|`>g.r茏@(a(0e7BA#c;b.kH&YI2L(_ y2Fs~r'ܑ&r6"4H$TrI&tI(rJ*%!!) G [v9N?y0 C O yP"g`  !` $8iq!ns$igS@8G:!Ωɤ a2i8g>6ǂHR'<쫄K 0VmKiǰM(QU X:k K|w_~_x` 6`ر vҢ{*n@z!HHi! .p0``:&u֮"j ǏnEP yrq&Hs笄zQ|$I>syʧGr>Wg&*Qy$'|eIh<Fua LUYo ^\q%4x0 @=!}w{w~x7q—!`&0<]EN&N(KhuD@ܹ vCC|Le΄x8Oud`!z8 PG?d>I"xHNvi`w,`;;rtƲ H@@4A " 4g @^ZZBɣXe(~< _(GNwF4QkdcF8w"D|D{TG@R$d! yHD2҇%R~d%-yILfRd'ṫܑ= C?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXHXXXXXX YY-Y=YMY]YmY}YYYYYYYYY , ! ,fnnl""$jjl&&$^^\::><224RRTffdNNL~~| LDP`ĮX@Xttl6<<<<4 PP`0~x |vh\`0@̨ΰXPX<6EJsF)TV c=(ţ Ih&QlΚgzԎ>tgO;8p Xi衈&T| A*h U# F8@32(x6tHwTP_ zr&BFA;,6lQ$O: 4:S#st2.LP#4υ00tGyLA<H1"$SQ? d4J34AQO]kvstum@YyD3An7 &lxiOA qG1 ! =% uuPxғ=w=2 ># QZA;1b L=qE@y?=$6p{#q ?ti < ` &0v@a;rq'O @X,1fa O82P 9ҴƉ|<HG@NP =.0G͢ p' @A4q hǧ,2.D @@p"@0\\)~ HaQI49q8 z@3i. B @ ̓D#1~`G1ю#cXD?2",(IH DX)WR %Ї.X-}x΄4]6ЗW>[;1OKHIA`U19_< Wor,=!nx&P!κַuЃPڴȂb.Ա>ѣKhl@]"((Y!< `a\DgpDcŨGi}޾ 20G;P?]" X~L\B ~|b FLpaL0q1D5'=@> F0r' A5 wf3FBwr< 2 '4FNFX'!`X>wb ]bL>@5CGP(|b6-&@?v p T pXu~؈2!0?6\' 06^`0EuSD KhkCrE@eJ(3|F$4'0'0]s@?? FVzb"5f Jfgj7-&AâG@ 5Ā n ='e6~(tp06-,&`y cs23 X&y(^@J)W.$1)y8:YL&$?}A'GLٔNN`V|7" #AjpT-5|V/mUshs^"v9""t !syؙiV-sA7=Gx0@pf9،8;pq~@1.Npp @ڗ@j1$6QApww-\Œ '@Wx4 tC@"7B:DpkHpD3Bâ1j3:\t ,y]%+Z/Zprڝ@50p*FQv"\Z֊Pm g.%fsVb JsکwIS%HnpIEedѢ2%aM`g`Zjdu [0vA*_ `Bh40AS0}3xڮQH<p ]@KZXjCҤq,pD&0{0ZU$m`#Ua]`Axe&607ޚ<۳>+$l!R1 "ZP )N(!0]2 -b;d [@@/RqT)5"]r'g 6uQwVoeYt J%4#Qڱy. }{hT`3wG僫q1ÅbrmRpf4= 1aARt ƐUGu<@ey۽ "x8 c)`n$IyN9%PVwL0 et{Qp$|[ CoDR\&|q(,v.2<4\6|8,)<><?W0uȽY숳ũzoɜ B%\r|,:LaP10A\V#!)Pp鹞) %3)Ig]qP`ǎ0{PQ.J?j8LC ~1 z"eYwP! !#:%:Xǖ+JҼ Ƴ2[$]r.XQYҎ0צo|53 4P A0F2}bVzNPZ\ ]F %/$:2B6$` >frCD:7)Dmsre Pq Lq|U6"w(;`p2tE! Z#r.d 4Bmq"3CتLdžJ}]6n7rS|I}6$'U|=F;N`8 sН1U7\$`4E, `NdB2DCs =,S˫)6-L%#0x:3 B3+nGNXw%%  IrM`kpm@-v!$F&$дB¦2 ?{d MLMWg 3 V v S6K_@!"T$t[v%>pI "/%6dI8 )CdZf%b0]T@ ,YJu댺p .PR A]P-|)ꊥ>`0M#N b`!&`ZA:j:jH\PJھ4R#UICRs:sbZ"|pF_B. pigWx!0 >y `%Rc)Co~|;PX:X@WiP^ulw2%{̈́ U)fa6Rp p!L L`rw~ʯEhڒ Kh$*47G)?%Aal5&`Mf枳t1\|:(85ۊl~s@HdVcrbӞC{_JX6P7 T *4\>0P2 2 pA}"K&K(ڲD؟!1Cp CI? 0$@ϕ`SoRڝW{ .oB$Ǡ] 9=,`)l_9}.%h=ӧF Y =y4Vndx0T7ՅykkQZ_:B M|ۓd]Ї#x] U_.fcȑ%O\e̙5ogСE&]iԩUfkرeCʂԝpgO YQA@>4Nyͭ 픔a!r6Sس!.eQu+1=Cy~T|'=1b!H"@~&( %92L!k{ԡ+@ч9CB fG rH"4H$TrI&tI(,DJѧeAQn` ‚#h  ޢI ҠEpRBςFO G~p a791pMp:aM&  ""ڱa. ڹ@ $j#O˚FP Zʒ姃h(+q O8 ڮ Ey|JD~z]xw^z^|w_~(r-Gԑga ' pC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXX;XXXXXX YY-Y=YMY]YmY}YYYYYu! ,f^^\::>УKN HDv3|{Wi˟}ϑh/a;"N%t`FcA;#G߅fᆳC;c> P 阈XAv.cQ4hЍ Q=sY? N@ܣF)TV XS=(O/ Ih&QlIGqvdP$?t@ $`堄jjqGԣ Tt iȐiԎ%U0R$*PnћQv",kEɃ?SdӞ;&HFASH~[Sd! O'($.ުA`AXdl0@= Αvx+Bx#A: >7vC 1PxЎ 0^+4k8? ?N#ͺcpq'L30,ϺJXC2i|P:ĈE"Q9--4F t;JôA>jv{SW-ՠԯ=hA4#l>_@@x0:A?":"f@;l'PP@7:M,[Ѐ ?>C@PXA׬ ];0gX@;~!Zw j=60١[@,I>yAC;OeB@}JXXo @(QeI(&P c`A~/Mdkѝ6J(,/!@ ]/H4z CPG;0e#Uq \ ;$^2\Z"m G6Y#YO +0 'O<2`ztN $ၾv@ B̓CT '@@*]z$G8 '[FĒ3OM 'B=ӔH!: d.]-wdFT" 867Z(lc~ 8U `|Xh@MP Gcv_H=(UH\:"EM54fYQ٩4Fw`mͧ@$< $A.x VQ&sxA&`~`jx@zގmapu__"x *ī@ 0j#x@@f=!h{ I"VoPH I;{z OBH~D@2\)@F;>Q"Ȓ fM`pgo?ÒJTfpRӳFA f l$XxlsŰP(@t[q* 6fN.P0xl]M$`=~rusFTB cVe'tFGSXpc`wpcvԀJ|;eN]Y׈"-0$$Chp-p$o 1n 5  ;$Y&y5r(ђ!'!48:NdBN0V+B x <ٔNPA7WYYQ`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@vڡp $0yp䴘r42yi CRm:0v3V1""/ٜb ! :yؙکq,D`oC0 @SNs̈!`[VSيvG-5|v  '_:F W R3Ev`40X*Jr:DZm*4?-4A0 >@r PX6Ar';\%cB*V-w!5 ppMG@k`*n0}>A![1$F-- `?⦊d;iJ@x*"SQGLdalbbEVwb tj&v"bV/P X "B[95\>w~N*ʯ=X+XQf@5')0oY:5f\0o3|ҷ@4SCN+rҠ0۲4}6;se`9@S &E6⛇A# PPAvk`DS%{Z@IW. ?@I6$ʠ.z&d+ ǍG2f a@l[mGR][3QM@BCcPl>ڥ׮XCΉZlv[n[pw\r5צxjy)g4?(yzXN+$%*r kSNǠ ,~!+Hډ@ yL5kcbˎ:@ -}X( !%fj'1T~Jه~Y(R % l(AgG}*y٭}k|s;sC}tK71zh- ng,ix&q҇vt:'Hk]oOD.B@vJPɌu 6Jgx/Ń/Ď ;Jh!XpG,`7C?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXXXXXXXű! ,f^^\::>УKN HDv3|{Wi˟}ϑh/a;"N%t`FcA;#G߅fᆳC;c> P 阈XAv.cQ4hЍ Q=sY? N@ܣF)TV XS=(O/ Ih&QlIGqvdP$?t@ $`堄jjqGԣ Tt iȐiԎ%U0R$*PnћQv",kEɃ?SdӞ;&HFASH~[Sd! O'($.ުA`AXdl0@= Αvx+Bx#A: >7vC 1PxЎ 0^+4k8? ?N#ͺcpq'L30,ϺJXC2i|P:ĈE"Q9--4F t;JôA>jv{SW-ՠԯ=hA4#l>_@@x0:A?":"f@;l'PP@7:M,[Ѐ ?>C@PXA׬ ];0gX@;~!Zw j=60١[@,I>yAC;OeB@}JXXo @(QeI(&P c`A~/Mdkѝ6J(,/!@ ]/H4z CPG;0e#Uq \ ;$^2\Z"m G6Y#YO +0 'O<2`ztN $ၾv@ B̓CT '@@*]z$G8 '[FĒ3OM 'B=ӔH!: d.]-wdFT" 867Z(lc~ 8U `|Xh@MP Gcv_H=(UH\:"EM54fYQ٩4Fw`mͧ@$< $A.x VQ&sxA&`~`jx@zގmapu__"x *ī@ 0j#x@@f=!h{ I"VoPH I;{z OBH~D@2\)@F;>Q"Ȓ fM`pgo?ÒJTfpRӳFA f l$XxlsŰP(@t[q* 6fN.P0xl]M$`=~rusFTB cVe'tFGSXpc`wpcvԀJ|;eN]Y׈"-0$$Chp-p$o 1n 5  ;$Y&y5r(ђ!'!48:NdBN0V+B x <ٔNPA7WYYQ`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@vڡp $0yp䴘r42yi CRm:0v3V1""/ٜb ! :yؙکq,D`oC0 @SNs̈!`[VSيvG-5|v  '_:F W R3Ev`40X*Jr:DZm*4?-4A0 >@r PX6Ar';\%cB*V-w!5 ppMG@k`*n0}>A![1$F-- `?⦊d;iJ@x*"SQGLdalbbEVwb tj&v"bV/P X "B[95\>w~N*ʯ=X+XQf@5')0oY:5f\0o3|ҷ@4SCN+rҠ0۲4}6;se`9@S &E6⛇A# PPAvk`DS%{Z@IW. ?@I6$ʠ.z&d+ ǍG2f a@l[mGR][3QM@BCcPl>ڥ׮XCΉZlv[n[pw\r5צxjy)g4?(yzXN+$%*r kSNǠ ,~!+Hډ@ yL5kcbˎ:@ -}X( !%fj'1T~Jه~Y(R % l(AgG}*y٭}k|s;sC}tK71zh- ng,ix&q҇vt:'Hk]oOD.B@vJPɌu 6Jgx/Ń/Ď ;Jh!XpG,`7C?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXXXXXXXű! ,f::<^^\VVTjjlBBD&&$""$ bbdZZ\..,JJLzz|**,664>>ϑ.a?u"N%t`FcA?#G߅fᆳS=? TQXA.cQ4hЍ =ܓy< Nd@䣄F)TV S@>(ݣ0 Ih&QlIGqvdP$$ €?D* 1  Tx/0P^+4k8: :N#c/pq'LP+30@,ϺJ) >('"Q9--4F t?JôA>jv{SW-ՠԯ=hA4#l>@@x0:A:* ":"f>1@?l'PP@7:QM,[Ѐ ?C8O@PA׬]?0g  @?y!Zw G>40[@r,IOy8E?^eB@̓}JXXo @(QeI(&P c`A~/Mdkѝ6J'*`Y/!d ] zBPG?0e#Uq \ _$^2\Z"m PG6Y#YO  (O<0 ~tN $灾~@ E̓Tj'@@b]z.HH'[FĒ3O  /2=Ӕ!:K9d.]-wdFT"867Z(lcy 8U `|h@MP Gcv_=d(~H\@:EM54q,fYQ ٩4Fzmͧ@$< < c)/zm"zy3TkP@?JBUB%JN6a[UޑD,#ԨlgKfW.`=@pA8q@%0}Pp#?H9<WE Ա&|8RD-fɏULZ,s2}E%\6H$թ<2ޗs1ԡp!hAx4Y5qۏ΃WP*H`Xj]} 'L"xX @.L"EEe=3 9d僸? =Z]gi,ooߨuqgcȳ}<Y. HUrD AZ]?О dT#iXDdJVn WO7[H\w To@ .?1J1 ჈H"6%Fζm'HǙp0A|rڷ~b "~~`h%iqo.a$KHP7<i%n{`;XA(b5#QdLH[%/De>A.x VQn's.xA&tC`jx,Bzޏmapu__"x *ī@ 0j#x@@f=!@h{ |I}.VoC|PH I;{z@BH~D \)E?>Q"|Ȓ `pg tOJTfpRӳFA f l6$XxlsP1(@t[q* 6fN.P0xl]M$`= ~rusFTBcVe'0t# FGSXpc`pcԀ J|;eP]Y׈"0$$C! hp-p$o91n 5  $Y&y5r(ђ!'!48:NdBP0V+B x <ٔNP@A7WYYQ`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@ڡp $0yp䴘r42yi CR m:0v3V1""/ٜ * ! :yؙکq,D`oC S@SNs̈a *[ߠVSيvG-5| p '_:F W RW 3E`4@*Jr:DZm`Upe<[{aA#" e9{$ Ii+1/ q0w+`TA2 bvq5 LP $q <$\1w&*,.0(4\6< 7<#=?obzR)  W)єٷXB5ZaL`$ibCEnJfBSEՍ^)b3Y2G40!` 74Y#$b4 =#є$l @%z}*n.AzDYm#Jj 6m-Nvy%n'[E 49Jp!Bz]У`V!9UL} 0ĬȞ(l?n Ҭw5Zmi`Q!$C ` J;5;Z"yp5:Q. EWQ70 UV 2f lWCQSo re FZ[>x*"SQGLdlbbEVw tj&p=bv>A/P X-"Bp[YW\>w~-N' Jʯ ~o*5 0h!ap\qRvScl:%n~83y'}kDs;9OJnr: :-oNg3y9!p1,۱x/-:U QA@Iu.@I6$#HPww;Y. &`?yz\gPĂM(X$OIIu𝜧]I#[Џ>3O~7QV,py䭜>I |~_M{JJP$![`ˮB;ڥA|y &Uxy5An%A]? DfkرeϦ]mܹuo'^qɕ/gsѥ'f?`%P,oզK0sL24L4TsM6tM8|NDp˟~!F)R*yzr! (d&RR6P.zѤ(dQ'\  G@( ] _yj%w؛gYA!U6Qv"&_ ۠ Y<26JH R+h*m]PLYywEJ*D":ǀb3xc;cCydK&9@Oy"Lua g 8-:@|QGதڌ!gj8c{CG|8ÖQ((_dmkuA~@ R~ @KIc/ ꧁G8mb p`'6k*yD a|Tr&eK)y~ ٶR %9s\(!I@"$w{k@x>Kud{|7|G`~twgE8!\G$V}DAbKb8n P~ * ` x9t!< PH>`@^1;LqhXT8n8fC!x_6p g^UԦ%)ȎC,(l-$iBD/`,2y!HXJe>D&Rdd#HHFRӇ !va,%d'Yc1OR$e)MyJTRfޔ#mq,myK\Re/}'aqJK~ZSdf3LhFSȁd9%f7MpS$#YNtSdg;NxӁg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^Wo}{_Wo_X&p |`'X fp`GXp-|a gXp=aX#&qM|bX+fq]bX3qm|cX;q}c YC&r|d$'YKfrd(GYSr|e,gY[re0Yc&s|f4Ykfsf8Yss|gC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXzXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [! ,f::<^^\VVTjjlBBD&&$""$ bbdZZ\..,JJLzz|**,664>>ϑ.a?u"N%t`FcA?#G߅fᆳS=? TQXA.cQ4hЍ =ܓy< Nd@䣄F)TV S@>(ݣ0 Ih&QlIGqvdP$$ €?D* 1  Tx/0P^+4k8: :N#c/pq'LP+30@,ϺJ) >('"Q9--4F t?JôA>jv{SW-ՠԯ=hA4#l>@@x0:A:* ":"f>1@?l'PP@7:QM,[Ѐ ?C8O@PA׬]?0g  @?y!Zw G>40[@r,IOy8E?^eB@̓}JXXo @(QeI(&P c`A~/Mdkѝ6J'*`Y/!d ] zBPG?0e#Uq \ _$^2\Z"m PG6Y#YO  (O<0 ~tN $灾~@ E̓Tj'@@b]z.HH'[FĒ3O  /2=Ӕ!:K9d.]-wdFT"867Z(lcy 8U `|h@MP Gcv_=d(~H\@:EM54q,fYQ ٩4Fzmͧ@$< < c)/zm"zy3TkP@?JBUB%JN6a[UޑD,#ԨlgKfW.`=@pA8q@%0}Pp#?H9<WE Ա&|8RD-fɏULZ,s2}E%\6H$թ<2ޗs1ԡp!hAx4Y5qۏ΃WP*H`Xj]} 'L"xX @.L"EEe=3 9d僸? =Z]gi,ooߨuqgcȳ}<Y. HUrD AZ]?О dT#iXDdJVn WO7[H\w To@ .?1J1 ჈H"6%Fζm'HǙp0A|rڷ~b "~~`h%iqo.a$KHP7<i%n{`;XA(b5#QdLH[%/De>A.x VQn's.xA&tC`jx,Bzޏmapu__"x *ī@ 0j#x@@f=!@h{ |I}.VoC|PH I;{z@BH~D \)E?>Q"|Ȓ `pg tOJTfpRӳFA f l6$XxlsP1(@t[q* 6fN.P0xl]M$`= ~rusFTBcVe'0t# FGSXpc`pcԀ J|;eP]Y׈"0$$C! hp-p$o91n 5  $Y&y5r(ђ!'!48:NdBP0V+B x <ٔNP@A7WYYQ`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@ڡp $0yp䴘r42yi CR m:0v3V1""/ٜ * ! :yؙکq,D`oC S@SNs̈a *[ߠVSيvG-5| p '_:F W RW 3E`4@*Jr:DZm`Upe<[{aA#" e9{$ Ii+1/ q0w+`TA2 bvq5 LP $q <$\1w&*,.0(4\6< 7<#=?obzR)  W)єٷXB5ZaL`$ibCEnJfBSEՍ^)b3Y2G40!` 74Y#$b4 =#є$l @%z}*n.AzDYm#Jj 6m-Nvy%n'[E 49Jp!Bz]У`V!9UL} 0ĬȞ(l?n Ҭw5Zmi`Q!$C ` J;5;Z"yp5:Q. EWQ70 UV 2f lWCQSo re FZ[>x*"SQGLdlbbEVw tj&p=bv>A/P X-"Bp[YW\>w~-N' Jʯ ~o*5 0h!ap\qRvScl:%n~83y'}kDs;9OJnr: :-oNg3y9!p1,۱x/-:U QA@Iu.@I6$#HPww;Y. &`?yz\gPĂM(X$OIIu𝜧]I#[Џ>3O~7QV,py䭜>I |~_M{JJP$![`ˮB;ڥA|y &Uxy5An%A]? DfkرeϦ]mܹuo'^qɕ/gsѥ'f?`%P,oզK0sL24L4TsM6tM8|NDp˟~!F)R*yzr! (d&RR6P.zѤ(dQ'\  G@( ] _yj%w؛gYA!U6Qv"&_ ۠ Y<26JH R+h*m]PLYywEJ*D":ǀb3xc;cCydK&9@Oy"Lua g 8-:@|QGதڌ!gj8c{CG|8ÖQ((_dmkuA~@ R~ @KIc/ ꧁G8mb p`'6k*yD a|Tr&eK)y~ ٶR %9s\(!I@"$w{k@x>Kud{|7|G`~twgE8!\G$V}DAbKb8n P~ * ` x9t!< PH>`@^1;LqhXT8n8fC!x_6p g^UԦ%)ȎC,(l-$iBD/`,2y!HXJe>D&Rdd#HHFRӇ !va,%d'Yc1OR$e)MyJTRfޔ#mq,myK\Re/}'aqJK~ZSdf3LhFSȁd9%f7MpS$#YNtSdg;NxӁg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^Wo}{_Wo_X&p |`'X fp`GXp-|a gXp=aX#&qM|bX+fq]bX3qm|cX;q}c YC&r|d$'YKfrd(GYSr|e,gY[re0Yc&s|f4Ykfsf8Yss|gC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXzXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [! ,f::<^^\VVTjjlBBD&&$""$ bbdZZ\..,JJLzz|**,664>>ϑ.a?u"N%t`FcA?#G߅fᆳS=? TQXA.cQ4hЍ =ܓy< Nd@䣄F)TV S@>(ݣ0 Ih&QlIGqvdP$$ €?D* 1  Tx/0P^+4k8: :N#c/pq'LP+30@,ϺJ) >('"Q9--4F t?JôA>jv{SW-ՠԯ=hA4#l>@@x0:A:* ":"f>1@?l'PP@7:QM,[Ѐ ?C8O@PA׬]?0g  @?y!Zw G>40[@r,IOy8E?^eB@̓}JXXo @(QeI(&P c`A~/Mdkѝ6J'*`Y/!d ] zBPG?0e#Uq \ _$^2\Z"m PG6Y#YO  (O<0 ~tN $灾~@ E̓Tj'@@b]z.HH'[FĒ3O  /2=Ӕ!:K9d.]-wdFT"867Z(lcy 8U `|h@MP Gcv_=d(~H\@:EM54q,fYQ ٩4Fzmͧ@$< < c)/zm"zy3TkP@?JBUB%JN6a[UޑD,#ԨlgKfW.`=@pA8q@%0}Pp#?H9<WE Ա&|8RD-fɏULZ,s2}E%\6H$թ<2ޗs1ԡp!hAx4Y5qۏ΃WP*H`Xj]} 'L"xX @.L"EEe=3 9d僸? =Z]gi,ooߨuqgcȳ}<Y. HUrD AZ]?О dT#iXDdJVn WO7[H\w To@ .?1J1 ჈H"6%Fζm'HǙp0A|rڷ~b "~~`h%iqo.a$KHP7<i%n{`;XA(b5#QdLH[%/De>A.x VQn's.xA&tC`jx,Bzޏmapu__"x *ī@ 0j#x@@f=!@h{ |I}.VoC|PH I;{z@BH~D \)E?>Q"|Ȓ `pg tOJTfpRӳFA f l6$XxlsP1(@t[q* 6fN.P0xl]M$`= ~rusFTBcVe'0t# FGSXpc`pcԀ J|;eP]Y׈"0$$C! hp-p$o91n 5  $Y&y5r(ђ!'!48:NdBP0V+B x <ٔNP@A7WYYQ`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@ڡp $0yp䴘r42yi CR m:0v3V1""/ٜ * ! :yؙکq,D`oC S@SNs̈a *[ߠVSيvG-5| p '_:F W RW 3E`4@*Jr:DZm`Upe<[{aA#" e9{$ Ii+1/ q0w+`TA2 bvq5 LP $q <$\1w&*,.0(4\6< 7<#=?obzR)  W)єٷXB5ZaL`$ibCEnJfBSEՍ^)b3Y2G40!` 74Y#$b4 =#є$l @%z}*n.AzDYm#Jj 6m-Nvy%n'[E 49Jp!Bz]У`V!9UL} 0ĬȞ(l?n Ҭw5Zmi`Q!$C ` J;5;Z"yp5:Q. EWQ70 UV 2f lWCQSo re FZ[>x*"SQGLdlbbEVw tj&p=bv>A/P X-"Bp[YW\>w~-N' Jʯ ~o*5 0h!ap\qRvScl:%n~83y'}kDs;9OJnr: :-oNg3y9!p1,۱x/-:U QA@Iu.@I6$#HPww;Y. &`?yz\gPĂM(X$OIIu𝜧]I#[Џ>3O~7QV,py䭜>I |~_M{JJP$![`ˮB;ڥA|y &Uxy5An%A]? DfkرeϦ]mܹuo'^qɕ/gsѥ'f?`%P,oզK0sL24L4TsM6tM8|NDp˟~!F)R*yzr! (d&RR6P.zѤ(dQ'\  G@( ] _yj%w؛gYA!U6Qv"&_ ۠ Y<26JH R+h*m]PLYywEJ*D":ǀb3xc;cCydK&9@Oy"Lua g 8-:@|QGதڌ!gj8c{CG|8ÖQ((_dmkuA~@ R~ @KIc/ ꧁G8mb p`'6k*yD a|Tr&eK)y~ ٶR %9s\(!I@"$w{k@x>Kud{|7|G`~twgE8!\G$V}DAbKb8n P~ * ` x9t!< PH>`@^1;LqhXT8n8fC!x_6p g^UԦ%)ȎC,(l-$iBD/`,2y!HXJe>D&Rdd#HHFRӇ !va,%d'Yc1OR$e)MyJTRfޔ#mq,myK\Re/}'aqJK~ZSdf3LhFSȁd9%f7MpS$#YNtSdg;NxӁg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^Wo}{_Wo_X&p |`'X fp`GXp-|a gXp=aX#&qM|bX+fq]bX3qm|cX;q}c YC&r|d$'YKfrd(GYSr|e,gY[re0Yc&s|f4Ykfsf8Yss|gC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXzXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [! ,f224::>yϑ".v"N%t`Fc>#G߅fᆳSAJôA>jv{SW-ՠԯ=hA4#l>@@x0:A4q;+"Z "fΏ8>l'`@7:QM,[ R1g(>{ Zw ^G?40S@,ɃI@yA>Me8B@}JXXo @(QeI(&P c`A~/Mdkѝ6J'S*@a/!A ]Z(4zBP>0e#Uq T _$^2Z"m h6Y#YO ,UO?. ztN $>}@ ̓T'@@*]zG/E'[FĒ3O0+ &2=Ӕ !:ɏd.]-wdFT"867Z(lc{8U `|ÀGMP Gcv_<,@~H`BE-54y0fYQ٩4F mͧ@$Ў< ? C1/zmc"$y3TkP@?JB;0j`N6a[UޑD ,#ԨlgKfW`<ɐ<@A 8!`q%.|Pp ?HA=eWE q$|V9RD-fIULZ,s2}%\6H$թ=2ޗs!'!hAx4Y5qGҫW|+H`Xj]} 'L"xhL"%E摊1=3 Lu,w\,}w"?u7 wxVnJ?<˅Jn`|W*3@ p{$ LR-Yf eںP#G4 ֞ ήZbtc0 >$RJmK>kj[K{y(xJ͎~@D P!;,W]n2ޟ/rIH3TSu  Ǐ} =`͊ r6w#}) )V@2ΏKiA[ uSRBͶַ%$R> 6 Y5pA8*]BDI1`E<aWd8.ڣv] ZЪbc[lW *745OsYv1^;@F ~uhg71A>^ !Fsfm !AcToxC,0_;3@Jsd` 4^ 1*F0@0= o daϰf$Xsx YP`(t[q* 6 iP08l]M$`=`~erusFTBbe' s3 yBGMfN.P=x? @A0 P S Х U~x2! C2A2|2A5^H0ؕq2 Hx\G=hEWyAN`x'vLr-|Uy0r@W0$8 H:oyb4f@|2JFj,&RW5V%\D:~4Y+0AԨ+p'`ryc _20 ؑ Z@aJ(&"'y+ْ!294L&! c9~qh(AYFyH<NZP{#u!!TXZZ+q\b9dYfyhjlٖnpr9tYvyxzq'<v3 Ub\a٘@@ap $0 p4r42ii CR @m:0v3V1""/Y + !:iq,@`nC @ e:XH;D@1I ju;8 nq$ۢ Qc!Aw e$ crpdt 0S F0 "<ڣ>jC qc*z+}EOG+2 ; pt0;T[\rHvC%2]"%R dvN`}ez|K2KPBc#L .m+xWOڷ;KX{4bmba&3 {:$j~+EM( V`<ۼ1A#"P^z$ I +;1PVGk pիu{Ѡ`$۩f\,W0ToHB Hp\`y<o "<$\&|-(,£!2<@:É2@A.|1 9Nza&PaYAŜP`+ k<GMKUj򋇸q3>TU ǴY8ٛ)f)wik" ^Ɩ|h!9[""|KZQQB2 \a&"Lpa01Y2Z"6:I扞yО{f) b90 Pɘ`WкƈB\L\ϔ&0a̪awК ࡁE"J&Uf:@/J%(ؼC!$AokȭBY'Bq/.]\*/Ge5wzU 3ä1g0!F FH}b _8QcStwC%w f}?ܚZp#`C2-p6XfS3?c7x7)FDiSpe`6e r*pL `W2r%eނ VR-2m 3GL؏"I\L}_A:k6Z(vp {M,ͭyJ+]E;ڵ%F*Qh}cuyrP-pk\$`nwDcBBC P?$@E6A'%+]9&d?KbvR0 p`W#F͵m갛n>A![ѩ$гAK,-`?*]E/-4B9v~b,Y+B V Ar N#56K F3MIR@ q ZcIP.VT|"/%6d`HԖ8 P)IIBhG-]-FqPE À4A2Z@!e;z]@-b/ULO 0tah b-;UwUpOeKuQRMaR s^ÒQZ"sp5:f. EWQ0 0 UV 2FWRSo ruTrE"2{OO)8Off7\$upT Pw!~ڮA6P0E/ *X 1rR`6 @5'))Jo:5\ qy@'Ons;9YqOL@4}6);se:p@WS&բMUR#WA;OC%(ϝE1A> iPH)UdK1eΤYM9uOA%ZQI.eSQNjS]$eHՁ% 40Owcp7Ϟ>} `^ 곗/^}58O߄ ;N_Sք!k-b~1xU>ԵmS35d0: 88s{KB;$ tpI%&b*k{y F@2@TpAtA#pB +B 3Pyg}(㧁v~  ueB m/{80 j@*Zr쁃B&Ƚx~a++(Fj1.J{gntĂ[agJB w fHraL'ڍ#^rvг_({y˞_ʏR4TTA;iCXcuVZkV\suW^{WH y{6viioxI3B a}@(h} pIv (L=r u!Z`v>4Q~1(! [ %D6Mv `oLG6#&<8 zfTIr  ;hrh xځܘ.gzNhRy*l6f1x.9`Ng1x_vz{`rEYq7ȇ\n|~ăq`b X+q 4kKb&ŦݥX@@vKeT<g!`)`ܙ>>Śǐ!>eB6؎m#$a MxBP+da &!aAK(>}bpGыlEZ;H>ޠ5}#6CmD o$GPMQ$h 摁C@8d-q`| ]>u&1tD` }$> 0$4CG- x}r  `}7)δOoK?q7ĔCɀ>Jr J@BɏPӤf5yMlfSU>XlV'7͙hSdg;NxS6tY9Ff:OT%hA zMSR dB>ThE-zQf4>5Zˆ~T#%iIMzRT+%JHYRT3iMmzӳQ;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^Wo}{_Wo_X&p |`'X fp`GXp-|a gXp=aX#&qM|bX+fq]bX3qm|cX;q}c YC&r|d$'YKfrd(GYSr|e,gY[re0Yc&s|f4Ykfsf8Yss|gC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXڊXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [[-[=[M[][m[}[[[[[[[[[ \\-\=\M\]\m\}\ȍ\ɝ\ʭ\˽\\\\\ ]ր! ,f224::>yϑ".v"N%t`Fc>#G߅fᆳSAJôA>jv{SW-ՠԯ=hA4#l>@@x0:A4q;+"Z "fΏ8>l'`@7:QM,[ R1g(>{ Zw ^G?40S@,ɃI@yA>Me8B@}JXXo @(QeI(&P c`A~/Mdkѝ6J'S*@a/!A ]Z(4zBP>0e#Uq T _$^2Z"m h6Y#YO ,UO?. ztN $>}@ ̓T'@@*]zG/E'[FĒ3O0+ &2=Ӕ !:ɏd.]-wdFT"867Z(lc{8U `|ÀGMP Gcv_<,@~H`BE-54y0fYQ٩4F mͧ@$Ў< ? C1/zmc"$y3TkP@?JB;0j`N6a[UޑD ,#ԨlgKfW`<ɐ<@A 8!`q%.|Pp ?HA=eWE q$|V9RD-fIULZ,s2}%\6H$թ=2ޗs!'!hAx4Y5qGҫW|+H`Xj]} 'L"xhL"%E摊1=3 Lu,w\,}w"?u7 wxVnJ?<˅Jn`|W*3@ p{$ LR-Yf eںP#G4 ֞ ήZbtc0 >$RJmK>kj[K{y(xJ͎~@D P!;,W]n2ޟ/rIH3TSu  Ǐ} =`͊ r6w#}) )V@2ΏKiA[ uSRBͶַ%$R> 6 Y5pA8*]BDI1`E<aWd8.ڣv] ZЪbc[lW *745OsYv1^;@F ~uhg71A>^ !Fsfm !AcToxC,0_;3@Jsd` 4^ 1*F0@0= o daϰf$Xsx YP`(t[q* 6 iP08l]M$`=`~erusFTBbe' s3 yBGMfN.P=x? @A0 P S Х U~x2! C2A2|2A5^H0ؕq2 Hx\G=hEWyAN`x'vLr-|Uy0r@W0$8 H:oyb4f@|2JFj,&RW5V%\D:~4Y+0AԨ+p'`ryc _20 ؑ Z@aJ(&"'y+ْ!294L&! c9~qh(AYFyH<NZP{#u!!TXZZ+q\b9dYfyhjlٖnpr9tYvyxzq'<v3 Ub\a٘@@ap $0 p4r42ii CR @m:0v3V1""/Y + !:iq,@`nC @ e:XH;D@1I ju;8 nq$ۢ Qc!Aw e$ crpdt 0S F0 "<ڣ>jC qc*z+}EOG+2 ; pt0;T[\rHvC%2]"%R dvN`}ez|K2KPBc#L .m+xWOڷ;KX{4bmba&3 {:$j~+EM( V`<ۼ1A#"P^z$ I +;1PVGk pիu{Ѡ`$۩f\,W0ToHB Hp\`y<o "<$\&|-(,£!2<@:É2@A.|1 9Nza&PaYAŜP`+ k<GMKUj򋇸q3>TU ǴY8ٛ)f)wik" ^Ɩ|h!9[""|KZQQB2 \a&"Lpa01Y2Z"6:I扞yО{f) b90 Pɘ`WкƈB\L\ϔ&0a̪awК ࡁE"J&Uf:@/J%(ؼC!$AokȭBY'Bq/.]\*/Ge5wzU 3ä1g0!F FH}b _8QcStwC%w f}?ܚZp#`C2-p6XfS3?c7x7)FDiSpe`6e r*pL `W2r%eނ VR-2m 3GL؏"I\L}_A:k6Z(vp {M,ͭyJ+]E;ڵ%F*Qh}cuyrP-pk\$`nwDcBBC P?$@E6A'%+]9&d?KbvR0 p`W#F͵m갛n>A![ѩ$гAK,-`?*]E/-4B9v~b,Y+B V Ar N#56K F3MIR@ q ZcIP.VT|"/%6d`HԖ8 P)IIBhG-]-FqPE À4A2Z@!e;z]@-b/ULO 0tah b-;UwUpOeKuQRMaR s^ÒQZ"sp5:f. EWQ0 0 UV 2FWRSo ruTrE"2{OO)8Off7\$upT Pw!~ڮA6P0E/ *X 1rR`6 @5'))Jo:5\ qy@'Ons;9YqOL@4}6);se:p@WS&բMUR#WA;OC%(ϝE1A> iPH)UdK1eΤYM9uOA%ZQI.eSQNjS]$eHՁ% 40Owcp7Ϟ>} `^ 곗/^}58O߄ ;N_Sք!k-b~1xU>ԵmS35d0: 88s{KB;$ tpI%&b*k{y F@2@TpAtA#pB +B 3Pyg}(㧁v~  ueB m/{80 j@*Zr쁃B&Ƚx~a++(Fj1.J{gntĂ[agJB w fHraL'ڍ#^rvг_({y˞_ʏR4TTA;iCXcuVZkV\suW^{WH y{6viioxI3B a}@(h} pIv (L=r u!Z`v>4Q~1(! [ %D6Mv `oLG6#&<8 zfTIr  ;hrh xځܘ.gzNhRy*l6f1x.9`Ng1x_vz{`rEYq7ȇ\n|~ăq`b X+q 4kKb&ŦݥX@@vKeT<g!`)`ܙ>>Śǐ!>eB6؎m#$a MxBP+da &!aAK(>}bpGыlEZ;H>ޠ5}#6CmD o$GPMQ$h 摁C@8d-q`| ]>u&1tD` }$> 0$4CG- x}r  `}7)δOoK?q7ĔCɀ>Jr J@BɏPӤf5yMlfSU>XlV'7͙hSdg;NxS6tY9Ff:OT%hA zMSR dB>ThE-zQf4>5Zˆ~T#%iIMzRT+%JHYRT3iMmzӳQ;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^Wo}{_Wo_X&p |`'X fp`GXp-|a gXp=aX#&qM|bX+fq]bX3qm|cX;q}c YC&r|d$'YKfrd(GYSr|e,gY[re0Yc&s|f4Ykfsf8Yss|gC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXڊXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [[-[=[M[][m[}[[[[[[[[[ \\-\=\M\]\m\}\ȍ\ɝ\ʭ\˽\\\\\ ]ր! ,f224::>yϑ".v"N%t`Fc>#G߅fᆳSAJôA>jv{SW-ՠԯ=hA4#l>@@x0:A4q;+"Z "fΏ8>l'`@7:QM,[ R1g(>{ Zw ^G?40S@,ɃI@yA>Me8B@}JXXo @(QeI(&P c`A~/Mdkѝ6J'S*@a/!A ]Z(4zBP>0e#Uq T _$^2Z"m h6Y#YO ,UO?. ztN $>}@ ̓T'@@*]zG/E'[FĒ3O0+ &2=Ӕ !:ɏd.]-wdFT"867Z(lc{8U `|ÀGMP Gcv_<,@~H`BE-54y0fYQ٩4F mͧ@$Ў< ? C1/zmc"$y3TkP@?JB;0j`N6a[UޑD ,#ԨlgKfW`<ɐ<@A 8!`q%.|Pp ?HA=eWE q$|V9RD-fIULZ,s2}%\6H$թ=2ޗs!'!hAx4Y5qGҫW|+H`Xj]} 'L"xhL"%E摊1=3 Lu,w\,}w"?u7 wxVnJ?<˅Jn`|W*3@ p{$ LR-Yf eںP#G4 ֞ ήZbtc0 >$RJmK>kj[K{y(xJ͎~@D P!;,W]n2ޟ/rIH3TSu  Ǐ} =`͊ r6w#}) )V@2ΏKiA[ uSRBͶַ%$R> 6 Y5pA8*]BDI1`E<aWd8.ڣv] ZЪbc[lW *745OsYv1^;@F ~uhg71A>^ !Fsfm !AcToxC,0_;3@Jsd` 4^ 1*F0@0= o daϰf$Xsx YP`(t[q* 6 iP08l]M$`=`~erusFTBbe' s3 yBGMfN.P=x? @A0 P S Х U~x2! C2A2|2A5^H0ؕq2 Hx\G=hEWyAN`x'vLr-|Uy0r@W0$8 H:oyb4f@|2JFj,&RW5V%\D:~4Y+0AԨ+p'`ryc _20 ؑ Z@aJ(&"'y+ْ!294L&! c9~qh(AYFyH<NZP{#u!!TXZZ+q\b9dYfyhjlٖnpr9tYvyxzq'<v3 Ub\a٘@@ap $0 p4r42ii CR @m:0v3V1""/Y + !:iq,@`nC @ e:XH;D@1I ju;8 nq$ۢ Qc!Aw e$ crpdt 0S F0 "<ڣ>jC qc*z+}EOG+2 ; pt0;T[\rHvC%2]"%R dvN`}ez|K2KPBc#L .m+xWOڷ;KX{4bmba&3 {:$j~+EM( V`<ۼ1A#"P^z$ I +;1PVGk pիu{Ѡ`$۩f\,W0ToHB Hp\`y<o "<$\&|-(,£!2<@:É2@A.|1 9Nza&PaYAŜP`+ k<GMKUj򋇸q3>TU ǴY8ٛ)f)wik" ^Ɩ|h!9[""|KZQQB2 \a&"Lpa01Y2Z"6:I扞yО{f) b90 Pɘ`WкƈB\L\ϔ&0a̪awК ࡁE"J&Uf:@/J%(ؼC!$AokȭBY'Bq/.]\*/Ge5wzU 3ä1g0!F FH}b _8QcStwC%w f}?ܚZp#`C2-p6XfS3?c7x7)FDiSpe`6e r*pL `W2r%eނ VR-2m 3GL؏"I\L}_A:k6Z(vp {M,ͭyJ+]E;ڵ%F*Qh}cuyrP-pk\$`nwDcBBC P?$@E6A'%+]9&d?KbvR0 p`W#F͵m갛n>A![ѩ$гAK,-`?*]E/-4B9v~b,Y+B V Ar N#56K F3MIR@ q ZcIP.VT|"/%6d`HԖ8 P)IIBhG-]-FqPE À4A2Z@!e;z]@-b/ULO 0tah b-;UwUpOeKuQRMaR s^ÒQZ"sp5:f. EWQ0 0 UV 2FWRSo ruTrE"2{OO)8Off7\$upT Pw!~ڮA6P0E/ *X 1rR`6 @5'))Jo:5\ qy@'Ons;9YqOL@4}6);se:p@WS&բMUR#WA;OC%(ϝE1A> iPH)UdK1eΤYM9uOA%ZQI.eSQNjS]$eHՁ% 40Owcp7Ϟ>} `^ 곗/^}58O߄ ;N_Sք!k-b~1xU>ԵmS35d0: 88s{KB;$ tpI%&b*k{y F@2@TpAtA#pB +B 3Pyg}(㧁v~  ueB m/{80 j@*Zr쁃B&Ƚx~a++(Fj1.J{gntĂ[agJB w fHraL'ڍ#^rvг_({y˞_ʏR4TTA;iCXcuVZkV\suW^{WH y{6viioxI3B a}@(h} pIv (L=r u!Z`v>4Q~1(! [ %D6Mv `oLG6#&<8 zfTIr  ;hrh xځܘ.gzNhRy*l6f1x.9`Ng1x_vz{`rEYq7ȇ\n|~ăq`b X+q 4kKb&ŦݥX@@vKeT<g!`)`ܙ>>Śǐ!>eB6؎m#$a MxBP+da &!aAK(>}bpGыlEZ;H>ޠ5}#6CmD o$GPMQ$h 摁C@8d-q`| ]>u&1tD` }$> 0$4CG- x}r  `}7)δOoK?q7ĔCɀ>Jr J@BɏPӤf5yMlfSU>XlV'7͙hSdg;NxS6tY9Ff:OT%hA zMSR dB>ThE-zQf4>5Zˆ~T#%iIMzRT+%JHYRT3iMmzӳQ;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^Wo}{_Wo_X&p |`'X fp`GXp-|a gXp=aX#&qM|bX+fq]bX3qm|cX;q}c YC&r|d$'YKfrd(GYSr|e,gY[re0Yc&s|f4Ykfsf8Yss|gC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXڊXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [[-[=[M[][m[}[[[[[[[[[ \\-\=\M\]\m\}\ȍ\ɝ\ʭ\˽\\\\\ ]ր! ,f224::> N$@3F)TV S@<(/ Ih&QlIGqvdP4>@ `堄jjq Dt "iȐi䎧%Q0AR$*Pnћ8#(kE>ÎT&HFÀAnSH~[Sd!O'($.ުABTl,; ϑ8x;Bx#? @?D)8Å - T 0P^+ 4k8$;" ;N烁>ppq'L3A,$ϺJ@ 35 ې?Ę #Q9--4F ;JôA>jv{SW-ՠԯ=hA4#l>@@x!,:A<;"J$"fO;l'`P@7:M,_@ D?CO@PA׬;1h`  ;}D"Zw 6G<40K@҃,IIy10;@OeB@}JXXo @(QeI(&P c`A~/Mdkѝ6J'* \/!@r1 ]Q`F4z`GlCPa;0e#Uq L $^2Zm xG6Y#YO  'O ?,ytN $>w@ E̓T'@@.]zۇ UX'[FĒ3OF ('=Ӕ H Q!:kɏd.]-wdFT"867Z(ls}@ 8U `|h!MP G̃v_;r(pHd2E-54!E.fYQ٩4Fmͧ@$< ?#)zmā"y3TkP@?JBuA.j`N6a[UޑD #ԨlgKfW`; 8A8a-|Pp#?H1>|QWA &pV(RD-f9ULZ.^2}-\6H$>2ޗsޱ@!hAx4Y5qtW|+H`Xj]} 'L"xX`L"%E1APb=@4 H#Le,z`\,ww"?… u.  zxV#J?<˅Jn`$pWs3@ p{$ LR-Qf eںH)AR<`֞ ήZbtc0 >$BJm;kj[K{ď~TJ͎̳x@D8P;,W].!2ޟ6rIH3TSu  Ǐ} @`͊ r6z#}s0 V@2pliA[ uSBͶַ%&R>  Y 5pA<*]BDIA`E<QWd8.ڣw] QЪbc[lW *744 5OsYv^;,\@F ~u'hAA>^ "cfm !AcoJOT't Y";J PP  ӓFAf  k9H5ǀ= > p r* @5  bl (  Ö4Lֳ W&'X'='`D%t* f@XV|r=9p tPib p c8pv;uN]PUw(#p0$$Cqp-`_]7,s} ep$pVz7OX wb$2`'0^~ C3&'&Mn 'd{b+cyap^ hE =]E7LTn p .G;0>ΰ,hn a5  W 5r(q1'.)294YNdB!N0V+<" 6yHJ`A7QYSPKZ\Xٕb9dYfyhjlٖnpr9tYvyxz|ZCS.S Uc\qї@8Pap $09pTr42ii CR@m:0v3V12""/y ! :9iq,@`nC @e:hH;9I1IN je;%X nq$˜ Qc!AwEe% ` cr dt 0SF !"נ>@zS1 qc*z+3E_h]0\NإL}Zs!AjI׹S cQ"-|"^vGc@mEy*Syꦓ Ll:7q$"e?# pPT00*oTOjM@kPHjd[vX$ 7 УF$ 6Ec pAy {jdt9Bs01% ] SI,yj0F* ;0:>גʶ/&m`B3VN{ >PPfڰ02{!& e`8[IGt(*1\G7V{X{K@ 5.gl1T"%"]r*J awZ4XZ@IG]Y۷~QY0O0J%4F a:4r*-p+xWO {K[{4%bma& ۓ ?}:$k~r+EM(\ V`<;!A#"  _z& IKl#PV k:1puԻۿ`$ݩf ,WS UoHr La <o$\&|(*¦,0ã1,6|s1<@!5 E2‰ 3+>T\kavѶPYŜ1V\f,+q<ÏgpTv1ay/7CUHRYћoșrǶ)" )"@gɠ%"g*߫ $ %=@f2A!R Y) %`3 ٮL扞ɞg&-YpI .Fpy|N݁ Ko!+$!aU-L;j80PoE ϮJv7M-ڡz XeH&^I\$m!R0MS,,@"Gol譠rY'Gq/@] ]*!/Gg5yzu 311g0!X FZ}b8ߴ `XqcSwC%`JuM1|ZP16&@ˀ؈oe&:8> P1=3v7zbD6W`+-@ !ϡ<`\"T #WZ-+m5-!"p٩0sڢM1 ħ9ZDNڇ6m Ui!˒ !ޚ״Ao~с:`[i-.>;1V8x RAfg@ XzG4>0*4?-4A0t >S`ͫh$|Ҫ0\%cB*-6`w!!5 *y / peM0k|@-vB5aL@$ "Cs. 9X$ 4BcxzM> ֒ ^`-4p` 7\4Y#NhY-F3MI Z.T|"/%Fd`HԖ8 P)QBFL]-FqξU +I-M>VRܣ=ԲrXńpP$@N Q!& pңZZ}eK!_QN* QRMaRr@s^#0Z2~p5:. EWf Q2  UV 2WRSo rFZ[Eex*"SQGLAaafERgc_ @P< f@--"Pa{f\>w!~`Z.6P0:v0 )5 !!ap\q3R6K\c:ɵk\|8 |@0SCN]:(ߑ:I WA S%?0+] [H/Gcw])+NÔ1c_e"|;?v`f\ 棷) B}WAZ58@WaŎ%[Yiծe[qΥ[]y_&\0Y7x0Â[AxP ; @>w Aۜt/~>m#Knwt" w%pfBwEڝq~WM$?tvta>v |-9zEw{?m , aB ~n)`xp++ yA~.Gv`'}.}wܱ$] 0sqG{G rH"4H$TrI&Uwp7&p|D罂}<0 z`1́D%NֶpೠFR,H@zgI͂Lz,E,x=K _S8abN"\p0+?JX'w,<q}rmމЏ 4HZj-jb[pw\r5\tUw]vu7|Lv `}88*.x09`2 "$w>(hw jw(b{T "aR wIx1HxȂKz),8c~2p ? `0yBܹ@emSX@FA 8h,˂ "!4, *@G_q]+r3|s;s .w~Zoy1HJ܉dh {w0X *:CczX@xv,GD :aM2q߁}1/H0[A :sMsGA2Klv,av"uvB|3n" Z(gNG?ZD81 pu~'bǜ0A} %#p7 ]xE,fQ[bEtp؁P@F.A K cw|@q\8E P%` BC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [[-[=[M[][m[}[[[[[[[[[ \\-\=\M\]\m\}\ȍ\ɝ\ʭ\˽\\\\\ ]]-]=]M]]]m]}]؍]ٝ]ڭ]۽]]]]&] ^^-^=^M^]^m^}^^^؀! ,f224::> N$@3F)TV S@<(/ Ih&QlIGqvdP4>@ `堄jjq Dt "iȐi䎧%Q0AR$*Pnћ8#(kE>ÎT&HFÀAnSH~[Sd!O'($.ުABTl,; ϑ8x;Bx#? @?D)8Å - T 0P^+ 4k8$;" ;N烁>ppq'L3A,$ϺJ@ 35 ې?Ę #Q9--4F ;JôA>jv{SW-ՠԯ=hA4#l>@@x!,:A<;"J$"fO;l'`P@7:M,_@ D?CO@PA׬;1h`  ;}D"Zw 6G<40K@҃,IIy10;@OeB@}JXXo @(QeI(&P c`A~/Mdkѝ6J'* \/!@r1 ]Q`F4z`GlCPa;0e#Uq L $^2Zm xG6Y#YO  'O ?,ytN $>w@ E̓T'@@.]zۇ UX'[FĒ3OF ('=Ӕ H Q!:kɏd.]-wdFT"867Z(ls}@ 8U `|h!MP G̃v_;r(pHd2E-54!E.fYQ٩4Fmͧ@$< ?#)zmā"y3TkP@?JBuA.j`N6a[UޑD #ԨlgKfW`; 8A8a-|Pp#?H1>|QWA &pV(RD-f9ULZ.^2}-\6H$>2ޗsޱ@!hAx4Y5qtW|+H`Xj]} 'L"xX`L"%E1APb=@4 H#Le,z`\,ww"?… u.  zxV#J?<˅Jn`$pWs3@ p{$ LR-Qf eںH)AR<`֞ ήZbtc0 >$BJm;kj[K{ď~TJ͎̳x@D8P;,W].!2ޟ6rIH3TSu  Ǐ} @`͊ r6z#}s0 V@2pliA[ uSBͶַ%&R>  Y 5pA<*]BDIA`E<QWd8.ڣw] QЪbc[lW *744 5OsYv^;,\@F ~u'hAA>^ "cfm !AcoJOT't Y";J PP  ӓFAf  k9H5ǀ= > p r* @5  bl (  Ö4Lֳ W&'X'='`D%t* f@XV|r=9p tPib p c8pv;uN]PUw(#p0$$Cqp-`_]7,s} ep$pVz7OX wb$2`'0^~ C3&'&Mn 'd{b+cyap^ hE =]E7LTn p .G;0>ΰ,hn a5  W 5r(q1'.)294YNdB!N0V+<" 6yHJ`A7QYSPKZ\Xٕb9dYfyhjlٖnpr9tYvyxz|ZCS.S Uc\qї@8Pap $09pTr42ii CR@m:0v3V12""/y ! :9iq,@`nC @e:hH;9I1IN je;%X nq$˜ Qc!AwEe% ` cr dt 0SF !"נ>@zS1 qc*z+3E_h]0\NإL}Zs!AjI׹S cQ"-|"^vGc@mEy*Syꦓ Ll:7q$"e?# pPT00*oTOjM@kPHjd[vX$ 7 УF$ 6Ec pAy {jdt9Bs01% ] SI,yj0F* ;0:>גʶ/&m`B3VN{ >PPfڰ02{!& e`8[IGt(*1\G7V{X{K@ 5.gl1T"%"]r*J awZ4XZ@IG]Y۷~QY0O0J%4F a:4r*-p+xWO {K[{4%bma& ۓ ?}:$k~r+EM(\ V`<;!A#"  _z& IKl#PV k:1puԻۿ`$ݩf ,WS UoHr La <o$\&|(*¦,0ã1,6|s1<@!5 E2‰ 3+>T\kavѶPYŜ1V\f,+q<ÏgpTv1ay/7CUHRYћoșrǶ)" )"@gɠ%"g*߫ $ %=@f2A!R Y) %`3 ٮL扞ɞg&-YpI .Fpy|N݁ Ko!+$!aU-L;j80PoE ϮJv7M-ڡz XeH&^I\$m!R0MS,,@"Gol譠rY'Gq/@] ]*!/Gg5yzu 311g0!X FZ}b8ߴ `XqcSwC%`JuM1|ZP16&@ˀ؈oe&:8> P1=3v7zbD6W`+-@ !ϡ<`\"T #WZ-+m5-!"p٩0sڢM1 ħ9ZDNڇ6m Ui!˒ !ޚ״Ao~с:`[i-.>;1V8x RAfg@ XzG4>0*4?-4A0t >S`ͫh$|Ҫ0\%cB*-6`w!!5 *y / peM0k|@-vB5aL@$ "Cs. 9X$ 4BcxzM> ֒ ^`-4p` 7\4Y#NhY-F3MI Z.T|"/%Fd`HԖ8 P)QBFL]-FqξU +I-M>VRܣ=ԲrXńpP$@N Q!& pңZZ}eK!_QN* QRMaRr@s^#0Z2~p5:. EWf Q2  UV 2WRSo rFZ[Eex*"SQGLAaafERgc_ @P< f@--"Pa{f\>w!~`Z.6P0:v0 )5 !!ap\q3R6K\c:ɵk\|8 |@0SCN]:(ߑ:I WA S%?0+] [H/Gcw])+NÔ1c_e"|;?v`f\ 棷) B}WAZ58@WaŎ%[Yiծe[qΥ[]y_&\0Y7x0Â[AxP ; @>w Aۜt/~>m#Knwt" w%pfBwEڝq~WM$?tvta>v |-9zEw{?m , aB ~n)`xp++ yA~.Gv`'}.}wܱ$] 0sqG{G rH"4H$TrI&Uwp7&p|D罂}<0 z`1́D%NֶpೠFR,H@zgI͂Lz,E,x=K _S8abN"\p0+?JX'w,<q}rmމЏ 4HZj-jb[pw\r5\tUw]vu7|Lv `}88*.x09`2 "$w>(hw jw(b{T "aR wIx1HxȂKz),8c~2p ? `0yBܹ@emSX@FA 8h,˂ "!4, *@G_q]+r3|s;s .w~Zoy1HJ܉dh {w0X *:CczX@xv,GD :aM2q߁}1/H0[A :sMsGA2Klv,av"uvB|3n" Z(gNG?ZD81 pu~'bǜ0A} %#p7 ]xE,fQ[bEtp؁P@F.A K cw|@q\8E P%` BC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [[-[=[M[][m[}[[[[[[[[[ \\-\=\M\]\m\}\ȍ\ɝ\ʭ\˽\\\\\ ]]-]=]M]]]m]}]؍]ٝ]ڭ]۽]]]]&] ^^-^=^M^]^m^}^^^؀! ,f224::> N$@3F)TV S@<(/ Ih&QlIGqvdP4>@ `堄jjq Dt "iȐi䎧%Q0AR$*Pnћ8#(kE>ÎT&HFÀAnSH~[Sd!O'($.ުABTl,; ϑ8x;Bx#? @?D)8Å - T 0P^+ 4k8$;" ;N烁>ppq'L3A,$ϺJ@ 35 ې?Ę #Q9--4F ;JôA>jv{SW-ՠԯ=hA4#l>@@x!,:A<;"J$"fO;l'`P@7:M,_@ D?CO@PA׬;1h`  ;}D"Zw 6G<40K@҃,IIy10;@OeB@}JXXo @(QeI(&P c`A~/Mdkѝ6J'* \/!@r1 ]Q`F4z`GlCPa;0e#Uq L $^2Zm xG6Y#YO  'O ?,ytN $>w@ E̓T'@@.]zۇ UX'[FĒ3OF ('=Ӕ H Q!:kɏd.]-wdFT"867Z(ls}@ 8U `|h!MP G̃v_;r(pHd2E-54!E.fYQ٩4Fmͧ@$< ?#)zmā"y3TkP@?JBuA.j`N6a[UޑD #ԨlgKfW`; 8A8a-|Pp#?H1>|QWA &pV(RD-f9ULZ.^2}-\6H$>2ޗsޱ@!hAx4Y5qtW|+H`Xj]} 'L"xX`L"%E1APb=@4 H#Le,z`\,ww"?… u.  zxV#J?<˅Jn`$pWs3@ p{$ LR-Qf eںH)AR<`֞ ήZbtc0 >$BJm;kj[K{ď~TJ͎̳x@D8P;,W].!2ޟ6rIH3TSu  Ǐ} @`͊ r6z#}s0 V@2pliA[ uSBͶַ%&R>  Y 5pA<*]BDIA`E<QWd8.ڣw] QЪbc[lW *744 5OsYv^;,\@F ~u'hAA>^ "cfm !AcoJOT't Y";J PP  ӓFAf  k9H5ǀ= > p r* @5  bl (  Ö4Lֳ W&'X'='`D%t* f@XV|r=9p tPib p c8pv;uN]PUw(#p0$$Cqp-`_]7,s} ep$pVz7OX wb$2`'0^~ C3&'&Mn 'd{b+cyap^ hE =]E7LTn p .G;0>ΰ,hn a5  W 5r(q1'.)294YNdB!N0V+<" 6yHJ`A7QYSPKZ\Xٕb9dYfyhjlٖnpr9tYvyxz|ZCS.S Uc\qї@8Pap $09pTr42ii CR@m:0v3V12""/y ! :9iq,@`nC @e:hH;9I1IN je;%X nq$˜ Qc!AwEe% ` cr dt 0SF !"נ>@zS1 qc*z+3E_h]0\NإL}Zs!AjI׹S cQ"-|"^vGc@mEy*Syꦓ Ll:7q$"e?# pPT00*oTOjM@kPHjd[vX$ 7 УF$ 6Ec pAy {jdt9Bs01% ] SI,yj0F* ;0:>גʶ/&m`B3VN{ >PPfڰ02{!& e`8[IGt(*1\G7V{X{K@ 5.gl1T"%"]r*J awZ4XZ@IG]Y۷~QY0O0J%4F a:4r*-p+xWO {K[{4%bma& ۓ ?}:$k~r+EM(\ V`<;!A#"  _z& IKl#PV k:1puԻۿ`$ݩf ,WS UoHr La <o$\&|(*¦,0ã1,6|s1<@!5 E2‰ 3+>T\kavѶPYŜ1V\f,+q<ÏgpTv1ay/7CUHRYћoșrǶ)" )"@gɠ%"g*߫ $ %=@f2A!R Y) %`3 ٮL扞ɞg&-YpI .Fpy|N݁ Ko!+$!aU-L;j80PoE ϮJv7M-ڡz XeH&^I\$m!R0MS,,@"Gol譠rY'Gq/@] ]*!/Gg5yzu 311g0!X FZ}b8ߴ `XqcSwC%`JuM1|ZP16&@ˀ؈oe&:8> P1=3v7zbD6W`+-@ !ϡ<`\"T #WZ-+m5-!"p٩0sڢM1 ħ9ZDNڇ6m Ui!˒ !ޚ״Ao~с:`[i-.>;1V8x RAfg@ XzG4>0*4?-4A0t >S`ͫh$|Ҫ0\%cB*-6`w!!5 *y / peM0k|@-vB5aL@$ "Cs. 9X$ 4BcxzM> ֒ ^`-4p` 7\4Y#NhY-F3MI Z.T|"/%Fd`HԖ8 P)QBFL]-FqξU +I-M>VRܣ=ԲrXńpP$@N Q!& pңZZ}eK!_QN* QRMaRr@s^#0Z2~p5:. EWf Q2  UV 2WRSo rFZ[Eex*"SQGLAaafERgc_ @P< f@--"Pa{f\>w!~`Z.6P0:v0 )5 !!ap\q3R6K\c:ɵk\|8 |@0SCN]:(ߑ:I WA S%?0+] [H/Gcw])+NÔ1c_e"|;?v`f\ 棷) B}WAZ58@WaŎ%[Yiծe[qΥ[]y_&\0Y7x0Â[AxP ; @>w Aۜt/~>m#Knwt" w%pfBwEڝq~WM$?tvta>v |-9zEw{?m , aB ~n)`xp++ yA~.Gv`'}.}wܱ$] 0sqG{G rH"4H$TrI&Uwp7&p|D罂}<0 z`1́D%NֶpೠFR,H@zgI͂Lz,E,x=K _S8abN"\p0+?JX'w,<q}rmމЏ 4HZj-jb[pw\r5\tUw]vu7|Lv `}88*.x09`2 "$w>(hw jw(b{T "aR wIx1HxȂKz),8c~2p ? `0yBܹ@emSX@FA 8h,˂ "!4, *@G_q]+r3|s;s .w~Zoy1HJ܉dh {w0X *:CczX@xv,GD :aM2q߁}1/H0[A :sMsGA2Klv,av"uvB|3n" Z(gNG?ZD81 pu~'bǜ0A} %#p7 ]xE,fQ[bEtp؁P@F.A K cw|@q\8E P%` BC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [[-[=[M[][m[}[[[[[[[[[ \\-\=\M\]\m\}\ȍ\ɝ\ʭ\˽\\\\\ ]]-]=]M]]]m]}]؍]ٝ]ڭ]۽]]]]&] ^^-^=^M^]^m^}^^^؀! ,f224::> N$@3F)TV S@<(/ Ih&QlIGqvdP4>@ `堄jjq Dt "iȐi䎧%Q0AR$*Pnћ8#(kE>ÎT&HFÀAnSH~[Sd!O'($.ުABTl,; ϑ8x;Bx#? @?D)8Å - T 0P^+ 4k8$;" ;N烁>ppq'L3A,$ϺJ@ 35 ې?Ę #Q9--4F ;JôA>jv{SW-ՠԯ=hA4#l>@@x!,:A<;"J$"fO;l'`P@7:M,_@ D?CO@PA׬;1h`  ;}D"Zw 6G<40K@҃,IIy10;@OeB@}JXXo @(QeI(&P c`A~/Mdkѝ6J'* \/!@r1 ]Q`F4z`GlCPa;0e#Uq L $^2Zm xG6Y#YO  'O ?,ytN $>w@ E̓T'@@.]zۇ UX'[FĒ3OF ('=Ӕ H Q!:kɏd.]-wdFT"867Z(ls}@ 8U `|h!MP G̃v_;r(pHd2E-54!E.fYQ٩4Fmͧ@$< ?#)zmā"y3TkP@?JBuA.j`N6a[UޑD #ԨlgKfW`; 8A8a-|Pp#?H1>|QWA &pV(RD-f9ULZ.^2}-\6H$>2ޗsޱ@!hAx4Y5qtW|+H`Xj]} 'L"xX`L"%E1APb=@4 H#Le,z`\,ww"?… u.  zxV#J?<˅Jn`$pWs3@ p{$ LR-Qf eںH)AR<`֞ ήZbtc0 >$BJm;kj[K{ď~TJ͎̳x@D8P;,W].!2ޟ6rIH3TSu  Ǐ} @`͊ r6z#}s0 V@2pliA[ uSBͶַ%&R>  Y 5pA<*]BDIA`E<QWd8.ڣw] QЪbc[lW *744 5OsYv^;,\@F ~u'hAA>^ "cfm !AcoJOT't Y";J PP  ӓFAf  k9H5ǀ= > p r* @5  bl (  Ö4Lֳ W&'X'='`D%t* f@XV|r=9p tPib p c8pv;uN]PUw(#p0$$Cqp-`_]7,s} ep$pVz7OX wb$2`'0^~ C3&'&Mn 'd{b+cyap^ hE =]E7LTn p .G;0>ΰ,hn a5  W 5r(q1'.)294YNdB!N0V+<" 6yHJ`A7QYSPKZ\Xٕb9dYfyhjlٖnpr9tYvyxz|ZCS.S Uc\qї@8Pap $09pTr42ii CR@m:0v3V12""/y ! :9iq,@`nC @e:hH;9I1IN je;%X nq$˜ Qc!AwEe% ` cr dt 0SF !"נ>@zS1 qc*z+3E_h]0\NإL}Zs!AjI׹S cQ"-|"^vGc@mEy*Syꦓ Ll:7q$"e?# pPT00*oTOjM@kPHjd[vX$ 7 УF$ 6Ec pAy {jdt9Bs01% ] SI,yj0F* ;0:>גʶ/&m`B3VN{ >PPfڰ02{!& e`8[IGt(*1\G7V{X{K@ 5.gl1T"%"]r*J awZ4XZ@IG]Y۷~QY0O0J%4F a:4r*-p+xWO {K[{4%bma& ۓ ?}:$k~r+EM(\ V`<;!A#"  _z& IKl#PV k:1puԻۿ`$ݩf ,WS UoHr La <o$\&|(*¦,0ã1,6|s1<@!5 E2‰ 3+>T\kavѶPYŜ1V\f,+q<ÏgpTv1ay/7CUHRYћoșrǶ)" )"@gɠ%"g*߫ $ %=@f2A!R Y) %`3 ٮL扞ɞg&-YpI .Fpy|N݁ Ko!+$!aU-L;j80PoE ϮJv7M-ڡz XeH&^I\$m!R0MS,,@"Gol譠rY'Gq/@] ]*!/Gg5yzu 311g0!X FZ}b8ߴ `XqcSwC%`JuM1|ZP16&@ˀ؈oe&:8> P1=3v7zbD6W`+-@ !ϡ<`\"T #WZ-+m5-!"p٩0sڢM1 ħ9ZDNڇ6m Ui!˒ !ޚ״Ao~с:`[i-.>;1V8x RAfg@ XzG4>0*4?-4A0t >S`ͫh$|Ҫ0\%cB*-6`w!!5 *y / peM0k|@-vB5aL@$ "Cs. 9X$ 4BcxzM> ֒ ^`-4p` 7\4Y#NhY-F3MI Z.T|"/%Fd`HԖ8 P)QBFL]-FqξU +I-M>VRܣ=ԲrXńpP$@N Q!& pңZZ}eK!_QN* QRMaRr@s^#0Z2~p5:. EWf Q2  UV 2WRSo rFZ[Eex*"SQGLAaafERgc_ @P< f@--"Pa{f\>w!~`Z.6P0:v0 )5 !!ap\q3R6K\c:ɵk\|8 |@0SCN]:(ߑ:I WA S%?0+] [H/Gcw])+NÔ1c_e"|;?v`f\ 棷) B}WAZ58@WaŎ%[Yiծe[qΥ[]y_&\0Y7x0Â[AxP ; @>w Aۜt/~>m#Knwt" w%pfBwEڝq~WM$?tvta>v |-9zEw{?m , aB ~n)`xp++ yA~.Gv`'}.}wܱ$] 0sqG{G rH"4H$TrI&Uwp7&p|D罂}<0 z`1́D%NֶpೠFR,H@zgI͂Lz,E,x=K _S8abN"\p0+?JX'w,<q}rmމЏ 4HZj-jb[pw\r5\tUw]vu7|Lv `}88*.x09`2 "$w>(hw jw(b{T "aR wIx1HxȂKz),8c~2p ? `0yBܹ@emSX@FA 8h,˂ "!4, *@G_q]+r3|s;s .w~Zoy1HJ܉dh {w0X *:CczX@xv,GD :aM2q߁}1/H0[A :sMsGA2Klv,av"uvB|3n" Z(gNG?ZD81 pu~'bǜ0A} %#p7 ]xE,fQ[bEtp؁P@F.A K cw|@q\8E P%` BC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [[-[=[M[][m[}[[[[[[[[[ \\-\=\M\]\m\}\ȍ\ɝ\ʭ\˽\\\\\ ]]-]=]M]]]m]}]؍]ٝ]ڭ]۽]]]]&] ^^-^=^M^]^m^}^^^؀! ,f224::>yϑ".v"N%t`Fc>#G߅fᆳSAJôA>jv{SW-ՠԯ=hA4#l>@@x0:A4q;+"Z "fΏ8>l'`@7:QM,[ R1g(>{ Zw ^G?40S@,ɃI@yA>Me8B@}JXXo @(QeI(&P c`A~/Mdkѝ6J'S*@a/!A ]Z(4zBP>0e#Uq T _$^2Z"m h6Y#YO ,UO?. ztN $>}@ ̓T'@@*]zG/E'[FĒ3O0+ &2=Ӕ !:ɏd.]-wdFT"867Z(lc{8U `|ÀGMP Gcv_<,@~H`BE-54y0fYQ٩4F mͧ@$Ў< ? C1/zmc"$y3TkP@?JB;0j`N6a[UޑD ,#ԨlgKfW`<ɐ<@A 8!`q%.|Pp ?HA=eWE q$|V9RD-fIULZ,s2}%\6H$թ=2ޗs!'!hAx4Y5qGҫW|+H`Xj]} 'L"xhL"%E摊1=3 Lu,w\,}w"?u7 wxVnJ?<˅Jn`|W*3@ p{$ LR-Yf eںP#G4 ֞ ήZbtc0 >$RJmK>kj[K{y(xJ͎~@D P!;,W]n2ޟ/rIH3TSu  Ǐ} =`͊ r6w#}) )V@2ΏKiA[ uSRBͶַ%$R> 6 Y5pA8*]BDI1`E<aWd8.ڣv] ZЪbc[lW *745OsYv1^;@F ~uhg71A>^ !Fsfm !AcToxC,0_;3@Jsd` 4^ 1*F0@0= o daϰf$Xsx YP`(t[q* 6 iP08l]M$`=`~erusFTBbe' s3 yBGMfN.P=x? @A0 P S Х U~x2! C2A2|2A5^H0ؕq2 Hx\G=hEWyAN`x'vLr-|Uy0r@W0$8 H:oyb4f@|2JFj,&RW5V%\D:~4Y+0AԨ+p'`ryc _20 ؑ Z@aJ(&"'y+ْ!294L&! c9~qh(AYFyH<NZP{#u!!TXZZ+q\b9dYfyhjlٖnpr9tYvyxzq'<v3 Ub\a٘@@ap $0 p4r42ii CR @m:0v3V1""/Y + !:iq,@`nC @ e:XH;D@1I ju;8 nq$ۢ Qc!Aw e$ crpdt 0S F0 "<ڣ>jC qc*z+}EOG+2 ; pt0;T[\rHvC%2]"%R dvN`}ez|K2KPBc#L .m+xWOڷ;KX{4bmba&3 {:$j~+EM( V`<ۼ1A#"P^z$ I +;1PVGk pիu{Ѡ`$۩f\,W0ToHB Hp\`y<o "<$\&|-(,£!2<@:É2@A.|1 9Nza&PaYAŜP`+ k<GMKUj򋇸q3>TU ǴY8ٛ)f)wik" ^Ɩ|h!9[""|KZQQB2 \a&"Lpa01Y2Z"6:I扞yО{f) b90 Pɘ`WкƈB\L\ϔ&0a̪awК ࡁE"J&Uf:@/J%(ؼC!$AokȭBY'Bq/.]\*/Ge5wzU 3ä1g0!F FH}b _8QcStwC%w f}?ܚZp#`C2-p6XfS3?c7x7)FDiSpe`6e r*pL `W2r%eނ VR-2m 3GL؏"I\L}_A:k6Z(vp {M,ͭyJ+]E;ڵ%F*Qh}cuyrP-pk\$`nwDcBBC P?$@E6A'%+]9&d?KbvR0 p`W#F͵m갛n>A![ѩ$гAK,-`?*]E/-4B9v~b,Y+B V Ar N#56K F3MIR@ q ZcIP.VT|"/%6d`HԖ8 P)IIBhG-]-FqPE À4A2Z@!e;z]@-b/ULO 0tah b-;UwUpOeKuQRMaR s^ÒQZ"sp5:f. EWQ0 0 UV 2FWRSo ruTrE"2{OO)8Off7\$upT Pw!~ڮA6P0E/ *X 1rR`6 @5'))Jo:5\ qy@'Ons;9YqOL@4}6);se:p@WS&բMUR#WA;OC%(ϝE1A> iPH)UdK1eΤYM9uOA%ZQI.eSQNjS]$eHՁ% 40Owcp7Ϟ>} `^ 곗/^}58O߄ ;N_Sք!k-b~1xU>ԵmS35d0: 88s{KB;$ tpI%&b*k{y F@2@TpAtA#pB +B 3Pyg}(㧁v~  ueB m/{80 j@*Zr쁃B&Ƚx~a++(Fj1.J{gntĂ[agJB w fHraL'ڍ#^rvг_({y˞_ʏR4TTA;iCXcuVZkV\suW^{WH y{6viioxI3B a}@(h} pIv (L=r u!Z`v>4Q~1(! [ %D6Mv `oLG6#&<8 zfTIr  ;hrh xځܘ.gzNhRy*l6f1x.9`Ng1x_vz{`rEYq7ȇ\n|~ăq`b X+q 4kKb&ŦݥX@@vKeT<g!`)`ܙ>>Śǐ!>eB6؎m#$a MxBP+da &!aAK(>}bpGыlEZ;H>ޠ5}#6CmD o$GPMQ$h 摁C@8d-q`| ]>u&1tD` }$> 0$4CG- x}r  `}7)δOoK?q7ĔCɀ>Jr J@BɏPӤf5yMlfSU>XlV'7͙hSdg;NxS6tY9Ff:OT%hA zMSR dB>ThE-zQf4>5Zˆ~T#%iIMzRT+%JHYRT3iMmzӳQ;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^Wo}{_Wo_X&p |`'X fp`GXp-|a gXp=aX#&qM|bX+fq]bX3qm|cX;q}c YC&r|d$'YKfrd(GYSr|e,gY[re0Yc&s|f4Ykfsf8Yss|gC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXڊXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [[-[=[M[][m[}[[[[[[[[[ \\-\=\M\]\m\}\ȍ\ɝ\ʭ\˽\\\\\ ]ր! ,f224::>yϑ".v"N%t`Fc>#G߅fᆳSAJôA>jv{SW-ՠԯ=hA4#l>@@x0:A4q;+"Z "fΏ8>l'`@7:QM,[ R1g(>{ Zw ^G?40S@,ɃI@yA>Me8B@}JXXo @(QeI(&P c`A~/Mdkѝ6J'S*@a/!A ]Z(4zBP>0e#Uq T _$^2Z"m h6Y#YO ,UO?. ztN $>}@ ̓T'@@*]zG/E'[FĒ3O0+ &2=Ӕ !:ɏd.]-wdFT"867Z(lc{8U `|ÀGMP Gcv_<,@~H`BE-54y0fYQ٩4F mͧ@$Ў< ? C1/zmc"$y3TkP@?JB;0j`N6a[UޑD ,#ԨlgKfW`<ɐ<@A 8!`q%.|Pp ?HA=eWE q$|V9RD-fIULZ,s2}%\6H$թ=2ޗs!'!hAx4Y5qGҫW|+H`Xj]} 'L"xhL"%E摊1=3 Lu,w\,}w"?u7 wxVnJ?<˅Jn`|W*3@ p{$ LR-Yf eںP#G4 ֞ ήZbtc0 >$RJmK>kj[K{y(xJ͎~@D P!;,W]n2ޟ/rIH3TSu  Ǐ} =`͊ r6w#}) )V@2ΏKiA[ uSRBͶַ%$R> 6 Y5pA8*]BDI1`E<aWd8.ڣv] ZЪbc[lW *745OsYv1^;@F ~uhg71A>^ !Fsfm !AcToxC,0_;3@Jsd` 4^ 1*F0@0= o daϰf$Xsx YP`(t[q* 6 iP08l]M$`=`~erusFTBbe' s3 yBGMfN.P=x? @A0 P S Х U~x2! C2A2|2A5^H0ؕq2 Hx\G=hEWyAN`x'vLr-|Uy0r@W0$8 H:oyb4f@|2JFj,&RW5V%\D:~4Y+0AԨ+p'`ryc _20 ؑ Z@aJ(&"'y+ْ!294L&! c9~qh(AYFyH<NZP{#u!!TXZZ+q\b9dYfyhjlٖnpr9tYvyxzq'<v3 Ub\a٘@@ap $0 p4r42ii CR @m:0v3V1""/Y + !:iq,@`nC @ e:XH;D@1I ju;8 nq$ۢ Qc!Aw e$ crpdt 0S F0 "<ڣ>jC qc*z+}EOG+2 ; pt0;T[\rHvC%2]"%R dvN`}ez|K2KPBc#L .m+xWOڷ;KX{4bmba&3 {:$j~+EM( V`<ۼ1A#"P^z$ I +;1PVGk pիu{Ѡ`$۩f\,W0ToHB Hp\`y<o "<$\&|-(,£!2<@:É2@A.|1 9Nza&PaYAŜP`+ k<GMKUj򋇸q3>TU ǴY8ٛ)f)wik" ^Ɩ|h!9[""|KZQQB2 \a&"Lpa01Y2Z"6:I扞yО{f) b90 Pɘ`WкƈB\L\ϔ&0a̪awК ࡁE"J&Uf:@/J%(ؼC!$AokȭBY'Bq/.]\*/Ge5wzU 3ä1g0!F FH}b _8QcStwC%w f}?ܚZp#`C2-p6XfS3?c7x7)FDiSpe`6e r*pL `W2r%eނ VR-2m 3GL؏"I\L}_A:k6Z(vp {M,ͭyJ+]E;ڵ%F*Qh}cuyrP-pk\$`nwDcBBC P?$@E6A'%+]9&d?KbvR0 p`W#F͵m갛n>A![ѩ$гAK,-`?*]E/-4B9v~b,Y+B V Ar N#56K F3MIR@ q ZcIP.VT|"/%6d`HԖ8 P)IIBhG-]-FqPE À4A2Z@!e;z]@-b/ULO 0tah b-;UwUpOeKuQRMaR s^ÒQZ"sp5:f. EWQ0 0 UV 2FWRSo ruTrE"2{OO)8Off7\$upT Pw!~ڮA6P0E/ *X 1rR`6 @5'))Jo:5\ qy@'Ons;9YqOL@4}6);se:p@WS&բMUR#WA;OC%(ϝE1A> iPH)UdK1eΤYM9uOA%ZQI.eSQNjS]$eHՁ% 40Owcp7Ϟ>} `^ 곗/^}58O߄ ;N_Sք!k-b~1xU>ԵmS35d0: 88s{KB;$ tpI%&b*k{y F@2@TpAtA#pB +B 3Pyg}(㧁v~  ueB m/{80 j@*Zr쁃B&Ƚx~a++(Fj1.J{gntĂ[agJB w fHraL'ڍ#^rvг_({y˞_ʏR4TTA;iCXcuVZkV\suW^{WH y{6viioxI3B a}@(h} pIv (L=r u!Z`v>4Q~1(! [ %D6Mv `oLG6#&<8 zfTIr  ;hrh xځܘ.gzNhRy*l6f1x.9`Ng1x_vz{`rEYq7ȇ\n|~ăq`b X+q 4kKb&ŦݥX@@vKeT<g!`)`ܙ>>Śǐ!>eB6؎m#$a MxBP+da &!aAK(>}bpGыlEZ;H>ޠ5}#6CmD o$GPMQ$h 摁C@8d-q`| ]>u&1tD` }$> 0$4CG- x}r  `}7)δOoK?q7ĔCɀ>Jr J@BɏPӤf5yMlfSU>XlV'7͙hSdg;NxS6tY9Ff:OT%hA zMSR dB>ThE-zQf4>5Zˆ~T#%iIMzRT+%JHYRT3iMmzӳQ;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^Wo}{_Wo_X&p |`'X fp`GXp-|a gXp=aX#&qM|bX+fq]bX3qm|cX;q}c YC&r|d$'YKfrd(GYSr|e,gY[re0Yc&s|f4Ykfsf8Yss|gC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXڊXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [[-[=[M[][m[}[[[[[[[[[ \\-\=\M\]\m\}\ȍ\ɝ\ʭ\˽\\\\\ ]ր! ,fnnl""$&&$::<^^\jjlVVTBBDvvtZZ\bbd ..,JJLzz|664**,>><224RRTffdNNL~~| &.8LF@ttlАp4,8<<4Į0&:0x~xnf`lttP@<6УKNHځDv3|{ξ5ݾH:F!N#VD|fx90AJ6s"F pNH-EA8FC:EJ긓F)TV ?;A(ѳN/ Ih&QlΚgz:tg;8P Xi衈&T| AtA# F8@32(x6tHwP_ zr&BF9;,6lQ(=cN7 ;,&HF4hЅR؄]C0 kn .& 7 Y4=ΐ4(Bx}Ўs? dˎ~4)p%,9|3A BA3#ϰxA@@#C->: :S>p9l2.LC400tGyM P;Ș1"RQ? d4J34AQO]kvstum@YyD3An7 *lxu@p@pC5o19 3=) umPx0;<0 $:# rZ;0b L;raE@s>=O$8w#q9?ti > `rA xA&1wP;r٧qO @X,1fa O82P P.ҴƉ|<HGHNT<.0G  p' (A:^ xǧ,2.D @@A"@0\\)}ցQI4].B^ Gri. B @ ̓DH#1}`S87CD?2",(I DVX)WR 'PX-ux΄4]6З q#Za\qWp:uR *E( J=QI9VRg/xx cd:גv }9ׅe&+KNu9,,C$^#E #GӕП|+ `} x }y!@ͭL"E U,B09bl\[ww"w:$yx~Z/Oi&hA_J`V|X{*8Cl3;t!mxDdZ rZvK%B{O9Lx@T4-=B #RH#buj@*ޱ\#[ζ_#$}̓xU¬sGsw@"DAdxZ0;YKAlIH7Tji>f8}r< {TΔ>W>;1OKHIA`U19_< Wo\,=!nx&PRnκַuPڴȆ7!>Khl@]"((Ynp< `݁\=.u] Bbrc\8wAg *#w5qPZvN;@ >u3AVτV (z4@I6i ֏HQ[KO7xZB@'A!+7ARp4^ A'E`0P= oaL0q1D5'=@> 0 Er'A5 wfFBwr< 2' FNFX'A`X>wb]B > -CGN|b6-&@?F`T  Xe~؈2!?6 06^J`0uSD IhkCEWN |F$6%%0]C~@??s DVyb"5fA@GJj7-&b G 5@n ='e\~(5p06-,&Pry ɂcs2P38$Y&^@J)W,Ԓ$'Y6y8YL& $=}q'EJLٔ<BP{Aqa(N\ٕ^iZdYfyhjlٖnpr9tYvyxz|ٗ~[FGQ29 @ Pp q$ZY{Yy >`V|7" #AjpT-%|V/mUshs^"F9"5 !sYyiV-sA7;~G I@@f9Ÿ8;qPPː1. @ePʗ@j1$QApww-\ '@Wð4 v D "@B@iHB3B" 1j :\tU ,y]%+ZsТCڦnL9 T0@a0o+Ui8զ@\`6gr(< Mj~Ez?']bvMJ!pT@1PFj+z.QRV^`xشP:F6 Ix5A#`7F-6`a48G꺮*GH<@0 ]@KXXjCq,pL`5:[ csic$m`#Ua]@Qز0ҷj6{8+$l!R1 "ːZ0 )N(!0]:q $0_9۵^ׁq r(L*G20]#%wBH@Qw[u>ZIo`[{ñY5 J%4#QZ/AJ) ?wOPۺ!L3\)&&? a& ݓ :$o~/EݺK)Ye TyڻA "va)`n$IU!YeQqP{Cret;\1p$Aj<[@oD2"M‹  `I\acO|ZlWG##<.NaSWp pWv2AهuS>WU0UȻY8I.ziٜiy9nʢB%\Bp|,:LP10A\V#!)PP癞)%3ɞ gV)`@o Pʣ< -0  t̘sU ԣ> 1uGM{-0ul'n. 2CJ$"\&-9[$]r.1U2qsCWx0O@Q.*- h'F cᡥzT`ZqG'l-'/$: 2B6$pЍ>fRD:7)Dmcr q Lq|U6"wB(7p2tU! RZb.RM 4B]ٗ"#3ڪLVJt}]6n7r3|pݘkSJ§_5;\ cJjPXm} \p 0 S-0A0qUo ^ңдj Q-L%º# 3 B+nGNXw%% °! r M[`kpm @qnBbdBiaLG+$ +FjZPFI:P}E=߆~ M7 1  V ve#4U$+MEeYZ4 .ä>DYRm#@KAITm";dO顮]2.ZqS>E 0ϥ{% s^ۮX] 04ʈ bbF-oQJR#UI0 Rp b` Z"tpF_s. @igWxu!0 >sPY`%Rc)CoP|;8:X@WiP^ulw2{DS)Eof` L(RStj&™ifl/nP`Q.&įf(>rw}ԯEh F鵿+.+?7oPi%Aa`5&M鞓tJ1\|88؊l~s@HDVcr_՞#{_sy>X\P@ T *4$X`A|CH{D}p#v^A?LxQ\ @x4貆:q:P@JI.eSQNZUYnWaŎ%[Yiծe[M۹(NHS>4FW߀ܽ OU{n@y` Tkwunby齣4ޥ"]ȜB@Z;O<|\W@!CuU.ku =pʎ⥁ 8u秪S ʮ}ܐ{BwJ{ O @ +O 63(uBqDK4DSTqE[tEcqFkLy\*Ԕ P; p3u:(u<u!w,AJ ~ ́&P{h^*!m '.'!'G}T6pM) yuq.C :r!Ѽ:nPJw0ȑi*Q'!g*4Ȅw `(UvYfuYhvZjZlbgxQg8 a $a&@N}rT"ry(xZ:Utohx\y`:Db\W" ]"rxtoP$c wԓ[jw6bw.H"&rAȨcd&pz*/|Bp`fJ  buF3 (2B6[o|p 7pǒ1.W ra}*w`xEޙc 6҂ عPuh 219%hH;zFsA2`,(>%qu0~Z9؀ezAJȁ>$Ҧ ƨ؇u8N V)ʛTNC%emVt=:XE*Q%!% LWe$N# T:= Z ]Xa}C QC$b8-= >qk&(98v! Aqc D#?|7`(^0 0``1&^x``>%'}c!A {D@wxc: %I )ItʔCTI!hs*prŤT1q:&q?JJxG\MMPAdQdg;NxS;dImY=T%hA zP&TY,'@,SD-zQfThGX|F yD=ÊT+eiK]R4qU.M*S;iO}SUC%UtZT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^Wo}{_Wo_X&p |`'X fp`GXp-|a gXp=aX#&qM|bX+fq]bX3qm|cX;q}c YC&r|d$'YKfrd(GYSr|e,gY[re0Yc&s|f4Ykfsf8Yss|gC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [[-[=[M[][m[}[[[[[[[[[ \\-\=\M\]\m\}\ȍ\ɝ\ʭ\˽\\\\\ ]]-]=]M]]]m]}]؍]ٝ]ڭ]۽]g ! ,f224::<^^\jjlBBD&&$VVTbbd""$ ..,ZZ\JJLzz|664**,>> N@JF)TV |c?A(N9 Ih&QlIGqvdPB>lA ,`堄jjq_3Ӂ dt$#"iȐi䎧%YR$*Pnћ# kEՓ@>N4<"&HFASH~[Sd!吏&($.ުAAQ$|؁l8@:ΑxBx#;$ E<P% 9PxN$0^+4k8B; N;N#sA$pq'LP.Ӏ80ϺJ|C1N\;ȇ!Q9--4F ;JôA>jv{SW-ՠԯ=hA4#l>@@x8:Aq;Vb"R1 "f;Bl'P`@7:QM,_ D/!` ](4zHҁ CPI;0e#Uq d bH$i^2\Zm h6Y#YO +0 UO>0 {tN $>w@ ̓GTj&@@X]z&9'[FĒ3M d&B=Ӕq!:+d.]-wdFT" 8U67Z(ls|`8U `||(MP GCv#_H:(:"HTBRE54fYQ٩4Fxmͧ@$Ў< d> 1@$zmCߌ"xly3TkP@?JB53JN6a[UޑD ,#ԨlgKfW9`[:cA 8!y3@WD g좯V8RD-fiULZ.!2}3\6H$i>2ޗsY1 S!hAx4Y5qtWP*H`Xj]} 'L"xh 9L"E)"= "ܘd僠?HG:Z]gi,]ouw%cȳ%z@Y. HUr cZ;Tў dT#iXDdJVn WO7[HurtJT] 6?1J1 ჈H"жPFζm'HǙApQ"{ f`pgnOAJTv p2 S FJA fl$Xxl۳B0 ,(@t[q* 6fN.P0xl]M$`=Ð~rucFTBcVe' tFGSXpcpPcԀ|;u]Y׈!0$$Chp-$o1n 5  ;$Y&y5r(ђ'!48:NdB0V+B x <ٔNPPA 7WYYQ`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@ڡp $0y p䴘r42yi 0CR m:v3V1""/ٜ V !:yؙکq,D`oCB0 @S5Ns̈ VP  ss[VSيvG-5|W '_:F WBR 3E`4P|*Jr:DZm`Upe<[{aQA#"e9{# Ii+1/0 q0w+`TA2 bvq50 鰕$ q <$\1w&*,.0'4\6< 7<<:=L;D\z2@A.(1X1FZnLq a_JXjbQ<.lNaS;9 TKUnx0782R]/Ko%A*_JiƨY!9[""p-ZL!PAB\~+!O p鹞)%`3ĬTh&-b@xs*Uuʪ `@ǐBe\]ݲ0ѡmow Pє !":$: ):l:E3*uB0bSU` '0oe&:;> P1=3v7z7A:W+-:<`\"+- #W[-+m5-!"TpsĔ6%3Sܚ!L~_A:k6`(|> ӫ[i!2 ޓ&UŨ *4U}Z#$0@؇cEl~)R-A eh@2 XfzG4>*4?-4A0 >s Z |6AZ'\b%cB*-w!5 80=pM3@kp*n0}>A![1$FئY `?覊d;iJRkDN,ۀ>>2 6 ^yd V rU#b=#є$l %}*.Ym"Jj 6m -N.ֻ%n43 U+I  _R,=fҜXԷ@pP"@N ι#-zWU@VO:­p~8Q!$~ J;5Zup5:. EWQ7z UV 2 lW3QSo5 ruFZ[%>x*"SQGLd!mb bEV"@JPC,zp1ٺK0sL24L4TsM6tM8LG)g xډD.y&|(zi".n'QrA}@XjvqL %ɍ:0tIU2L}*2%#< u3,ti'G։-&#|ݶXUwE Kx8 6`Vxava#xbUgz8*vP ; 6xu )>`1,hpXE)]tH{~I>ڱo! 1)w(.lz qhB& %Hr I ><1* 0HH(`1!&"h'rDxH򁸑ɟyTԄ6ghd+!& o+~x7xW~yw ,Fڙg\Gf0 &6&iGw|vD"Z' Ra{$̹ݢr$*ȇ=o pqpm[:=U" 2 @ Zd)p3tLuN:ˌG!y6y8 (P""XrPpsBQ\IeDLHR(#S0v%8kPR@D|%Rdd#HHFRdXt,}aa&\V p 3>2=1'gWBIS4!Q`@[ܱtxiO}SUC%jQ V`CRjT"E*AdTzUfU[jWڦ,ZNBH UVkek[VULRY0gPU^WV%laGփհ>bXFVle-{Y4lg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^Wo}{_Wo_X&p |`'X fp`GXp-|a gXp=aX#&qM|bX+fq]bX3qm|cX;q}c YC&r|d$'YKfrd(GYSr|e,gY[re0Yc&s|f4Ykfsf8Yss|gC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [[-[=[M[][m[}[[[[[[[[[ \\-\=\M\]\m\}\ȍ\ɝ\ʭ\˽\\\\\ ]]-]=]M]]]m]}]؍]ٝ]ڭ]۽]]]]z] ^^-^=^M^]^m^}^^^^^^^^^ __-_=_M_]_m_}_________``.`>`N`^`&݀! ,f224::<^^\jjlBBD&&$VVTbbd""$ ..,ZZ\JJLzz|664**,>> N@JF)TV |c?A(N9 Ih&QlIGqvdPB>lA ,`堄jjq_3Ӂ dt$#"iȐi䎧%YR$*Pnћ# kEՓ@>N4<"&HFASH~[Sd!吏&($.ުAAQ$|؁l8@:ΑxBx#;$ E<P% 9PxN$0^+4k8B; N;N#sA$pq'LP.Ӏ80ϺJ|C1N\;ȇ!Q9--4F ;JôA>jv{SW-ՠԯ=hA4#l>@@x8:Aq;Vb"R1 "f;Bl'P`@7:QM,_ D/!` ](4zHҁ CPI;0e#Uq d bH$i^2\Zm h6Y#YO +0 UO>0 {tN $>w@ ̓GTj&@@X]z&9'[FĒ3M d&B=Ӕq!:+d.]-wdFT" 8U67Z(ls|`8U `||(MP GCv#_H:(:"HTBRE54fYQ٩4Fxmͧ@$Ў< d> 1@$zmCߌ"xly3TkP@?JB53JN6a[UޑD ,#ԨlgKfW9`[:cA 8!y3@WD g좯V8RD-fiULZ.!2}3\6H$i>2ޗsY1 S!hAx4Y5qtWP*H`Xj]} 'L"xh 9L"E)"= "ܘd僠?HG:Z]gi,]ouw%cȳ%z@Y. HUr cZ;Tў dT#iXDdJVn WO7[HurtJT] 6?1J1 ჈H"жPFζm'HǙApQ"{ f`pgnOAJTv p2 S FJA fl$Xxl۳B0 ,(@t[q* 6fN.P0xl]M$`=Ð~rucFTBcVe' tFGSXpcpPcԀ|;u]Y׈!0$$Chp-$o1n 5  ;$Y&y5r(ђ'!48:NdB0V+B x <ٔNPPA 7WYYQ`b^9hjlٖnpr9tYvyxz|ٗ~ZC. Uh\ѕ1Yy@ڡp $0y p䴘r42yi 0CR m:v3V1""/ٜ V !:yؙکq,D`oCB0 @S5Ns̈ VP  ss[VSيvG-5|W '_:F WBR 3E`4P|*Jr:DZm`Upe<[{aQA#"e9{# Ii+1/0 q0w+`TA2 bvq50 鰕$ q <$\1w&*,.0'4\6< 7<<:=L;D\z2@A.(1X1FZnLq a_JXjbQ<.lNaS;9 TKUnx0782R]/Ko%A*_JiƨY!9[""p-ZL!PAB\~+!O p鹞)%`3ĬTh&-b@xs*Uuʪ `@ǐBe\]ݲ0ѡmow Pє !":$: ):l:E3*uB0bSU` '0oe&:;> P1=3v7z7A:W+-:<`\"+- #W[-+m5-!"TpsĔ6%3Sܚ!L~_A:k6`(|> ӫ[i!2 ޓ&UŨ *4U}Z#$0@؇cEl~)R-A eh@2 XfzG4>*4?-4A0 >s Z |6AZ'\b%cB*-w!5 80=pM3@kp*n0}>A![1$FئY `?覊d;iJRkDN,ۀ>>2 6 ^yd V rU#b=#є$l %}*.Ym"Jj 6m -N.ֻ%n43 U+I  _R,=fҜXԷ@pP"@N ι#-zWU@VO:­p~8Q!$~ J;5Zup5:. EWQ7z UV 2 lW3QSo5 ruFZ[%>x*"SQGLd!mb bEV"@JPC,zp1ٺK0sL24L4TsM6tM8LG)g xډD.y&|(zi".n'QrA}@XjvqL %ɍ:0tIU2L}*2%#< u3,ti'G։-&#|ݶXUwE Kx8 6`Vxava#xbUgz8*vP ; 6xu )>`1,hpXE)]tH{~I>ڱo! 1)w(.lz qhB& %Hr I ><1* 0HH(`1!&"h'rDxH򁸑ɟyTԄ6ghd+!& o+~x7xW~yw ,Fڙg\Gf0 &6&iGw|vD"Z' Ra{$̹ݢr$*ȇ=o pqpm[:=U" 2 @ Zd)p3tLuN:ˌG!y6y8 (P""XrPpsBQ\IeDLHR(#S0v%8kPR@D|%Rdd#HHFRdXt,}aa&\V p 3>2=1'gWBIS4!Q`@[ܱtxiO}SUC%jQ V`CRjT"E*AdTzUfU[jWڦ,ZNBH UVkek[VULRY0gPU^WV%laGփհ>bXFVle-{Y4lg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^Wo}{_Wo_X&p |`'X fp`GXp-|a gXp=aX#&qM|bX+fq]bX3qm|cX;q}c YC&r|d$'YKfrd(GYSr|e,gY[re0Yc&s|f4Ykfsf8Yss|gC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [[-[=[M[][m[}[[[[[[[[[ \\-\=\M\]\m\}\ȍ\ɝ\ʭ\˽\\\\\ ]]-]=]M]]]m]}]؍]ٝ]ڭ]۽]]]]z] ^^-^=^M^]^m^}^^^^^^^^^ __-_=_M_]_m_}_________``.`>`N`^`&݀! ,fBBD^^\664&&$jjlnnlVVT ..,224ZZ\**,JJL::<""$zz|bbd>>@nVH:Hp@tЮ ľ|x <08X@X$(8l4<cO<@ ^?6&H|0F#AHn[Sdm%-ښACQ:`,=4ϑh Bxdz<8K~N𠷫P?xPPH(@Z̏uβ,@ @t>Hl?c,2XH6؁:A+́ S@)=sںM< @BCt c=OC( |p%"~LZ#xB-Ѐq@PЅ!|C7o7 +1AzP  {$uhG2ӱT(C ] S zG"BP;p#=q | $ h "J>aIHHA" r1!>.`Y%@2}spaxp'XFđ$2K@'J `GnyVWH_ L j MB \@PLե(@0GQ`xH?&]jV`A& H@m*Cw 0)A"xBy/ n J@xwZu;lTx@{Zp?QxP~T󘇦,kNɅ~:]U1V:u LmS&Fd`M>2Mj3smdH&u I nn#!;A~jb)u`G*߭쑎k\nV2Q`-H[yPDLZ.0Yr0s̊ Vk>umJ!"ykMϊe2;ƃHA?CXlA'8"xP @]gL%X@puH>M` &H>܂0uﰇ=dE8"0rYtY,~h !Oey\+eu\Y Qİ*Ch՗2 G@t-mClG~d@"X<ڭ9)6#X is/!gGC@ lpomLb70w$6 pGR40O?pBu+,S;= ʹR^C&9 @fsi_;WpBz4j+tQpt d?KD=PT."pd<6Hb_|u\>e="'ثM ?`ql-}D}-o!h-EXüs"Z?vXZaĨBC|lW. u4썏<-dE,P G|  "t ! HL9.EЏϔc @ʬrI㈱d 1:b4pNjh@f1fouDc[{q ZA&fxѦhTc =x`@st~<;ѧ\hA$Z`ZA1/re@WgU VP7G؛~A» R[{59$䄾;uY+V<\| h w<! ҿp)#+qi|($/<)|8lt+<.kNSa; @4ku1a/v.6hTPܙS\)ByJ Y`J9|x%"NH3SB\➪$!O ' 3̜\ra,':ɝ EUp`~~`$7 نyOQ@> \+:Y* &2*ҡ3uŠ2@VupU [:'W@g zmMO@']4ѓ,78WV"&1/]6<(7I*j.90, ܥ3T8;E,?z \? Fs@#mR='0G0e$5Sd&Z:A173p#7tc79P5,@0[V[l$`Q.+9%IBe}B@W`Z}3gYv'\B[0C)>Df]'0Q@ V T 6:8Add$&A1q,Y}*!7ts@}ٝmT[s4Qp> l H×5dJ.97#ɔ$L+lqC3P0F.pBdH6pJq[d9ķaD3$ 3V<@@x qƹRZbe7 ؕj?iW-䁦|ܼ:sR#04 h~Q$D g:&5% YqXf4@P<YR PQ5UqU[d`rR!V`J^tf*rP3mf }Rf,gWs ? mBQ`e&?EIE\~5h -4]oH/eW4>u|  "*+C_az` @r*+5_M"0Q"` pɔ/`ZDEv/MU[Tazi'cORkUs^/ԹE#HJx5<62 <\64_y"Яi>0ޛd SEBjO#8þy.dC%NXE5nG!E$YI)UdK1eΤYM9ut9| p9nH@+Ν 0:{ ݩUvUh݆܅U(}6-o{டن1DK_K/x[ [pocux(2A'\1 ko쒜YoߨmMcǻwD B}Y}p@ 4@ɞBqg~IShRPK,u$P}QuXw(JPt{С~qQ!VY-˝1!E qijv(ic0ǏFQfBE` $C#ԉyQ19%<RT'u']i*.z4x/~QAN;SPCuTRK5TTSUuU!֩ X ( ` 0360#0juB=,k`ul ʪ9 h Aj|9 KeU( ̾6xWB20@꜓ J,H.7 ZEL*})RV(JvHur+܅8P`D%JP F>Yzjjzk:? zBձ"Ygm p<lgu u AX_5G⻊`P9i8vXq^|8ؑuB}G`!fBx`X-Hl w<xHK+ñ`Gw B9gܛF0Xx,8H# 9 $JԈP IxG#Ǧ;t>|P]`KHg ]3(Ɉp6mcq =w IbLL/aʳhpuhg{20HǠDtKD̘͜W ̊ 5hC {$ O ЅQ+ FŌ!MxX;L]jHX@Tȇ(n4j 2D@WٜjH HL#%0xQ POrj!c ux8tY(ZͱԌ|9VCLQXGӳ|YL|D[dۇ1p*XL'} z {q߬wDx üp H)wȍhQRA;pIYOX|(H;:% TQEڄHb\ tH4}0why%Q(TXaGHEmi t-bPE@!3V}n@pHjPY/EdWM PHSe#6]M‡O ׼ˈGmUTW "HCUR}Wq6 p\tUU8HjE {Ѕ\h;Y3U`CSw8Ցy/%ёH !qM|mw !߉H$Awߓpm+1 -Q! `D h/1HݶhyUñaa2N[K] FfPPHJEm%a$Hf䗰ˠtma0р`cCև0RFmWi^Qiw@RÅRwbI  qܛľ|($aE:P/hlxؖni/pqqqr9tY[zc!2Q%+yxXėۗ~Qb%1Q\wb x0d V ߀Wćwб grFc<]zLř1lQ h Vt<ǶkIhܣVx&i}w([NQ;(]]qNdxHX"8)Q `.MZhDhEtT]yw+]VEw8 c"LȎ H蛞qɩa͙* Pjѡ fqsV! @y]bi[${Y q׉٩3ޝޱ\ hћ\j$t8{1w&(*@^u8j"t-g^n8iM ~Pl1x $Brah nɺ!SFy-v%Cb݊x] (%YG# 18n" GDPy"V!39wn0Bo!0i}0V+ULh L8tP'b x?Yruj$a0uYr: w0  [&iuU]0quZOveU [(6f&a7gO$|^vpw u i\'r$RQtwzw{w|w}w~wwxx/x׫a(`OG@vxxVxz?xO d`DS Ciby@Ø<' U7'/lj9(V !|`7&_ hA,: :(=~V8鉰ujmHtx& V`T{5[pj7uIa8qozzN cwfX;zp|ww& ٗg"?X>蛱yp1MχC/?hDa?4' Ƚhu5͇@zv;ԱPwۦ]  l萠=w T C{=#Ȑ"jCG{Xu%Μ:[d R#ǝBw^`΂Gw@*7F)֬Zvȵ~#~-ӫٜhZ]qjմ'VTwq`&!8\셲Ⴚu;Ωըl'Sl2̚7s3ТG.=LO(X-䁱[&s;{38?~;8zszG6,XBŁ-'Lbz҅:xLTJ8=xD8G |b{_<&j40v,9EHЄ;G".IԈ4[>|ܖ[~T\@J}>‰iCڏnMf|ݗ~̓=ͣR>m=j%]z%a9&eU?CCdp>4cVt:WH|0P H$AG& Y:v4audmNc՞BYlSzCz+V)Џ;$t5GkO"WH:Nr6&b%[TQQjCE~@:U %G߅mK^;0|0 +G#R@LP@ NMEC\PHe?cCR0sT;YH*Ԥ>z-mN1zPD8?`36D n@M\sc((ۏ/3$1XPbJa?C=tL; g +lG@;w0?<];DQ8pz"D[K7tmͅ8GYC:tu;2 A}C9N MH+4B?|S2px ?!L L;"@!cbx@iM8: x@~aeVGNJo[VfD~̦q*a+I !C~T<Ժ%l@`"%EŃK@!#^B<}y`_юV2$9ARV7 t >ZB&@,h@w8G$I@T*@ ؅)< eه.qIh08Kz624'Ht*#{xs A@:1wL@);-@xK`-9$;ViChXagrfyR}GMkR%QLH#6HUޡ}l2XLi Ũ.KGʓC|>Yobw\/1]㧻P> C,LjNa9!$9щuSia?YbS8 A}:А~sb? b֗77}B,0ǕR #eHbx #AP ?p xLbc >FA:SA4PHD`YV< E% "@0A].Q;C&SȀG|N؎n+ | m PΫnzɀ b t S"v9iB'lv#4'+0l~s[7< H!?0u_;&Z"m6!E)K:h?=o%x5C9T>N)\Q?P_@Gm@:.sp;:EߊrmY6A@~:>nG@ zfG&BM|LNz_w{Cv|T9tƧ'. ľ!#$XY'9?axH!ㇸx^w=)u]zokn?ctQ1: dqC ټx@*e?A@:TA0;:q>T_DPD>T_HLH8]<$>`8]D@,A,UCTOmC L`C(Ăf_v @9ITP> rACš; NfI!A(ERR(p@CeI!BC-KB:I QH7BYⵑ.@fYWȠ@Q \ Ăz )l 'pآX? SX3" tvqW0KK=dD^ICb8 !D'0`7B!H~0=R:-#HxCZdaCluE#'@,126RHbeVn%WvW]G.=RًTEHMZ: E LItA pZlBQP>DT+>D]G7C\ @:0CЌ1K_DfG:&`%NgF0^:!A^'"UIZ9AdCDAYt($ #^jfB!A"ȥA|cD@D 9-ˬ>IU.]J|(Ck"ztwgGfCfHߐA)f<@w>Sj)Ah::_n8p WFN*VjN?8=rLEL'AA]#> f BVfCCOֈ*A'*H(:0CЁ: ȉ`-`*(%Qb8pO۸e3:"@VaC,JH@*AAlC(DN::ʼnк=@B,4zB8fTxҀ. ٧NWClGكd!H|-@CMEɥ,f 5 jfbKjHjRNJ>;$>B:>:?,m?CD.'$6$@ŃvĂ9CӞA@qEeD4. )j)$@(>X&86C< @lG%ՑEDm?DSX1Sr:Xj@?4m 6P$llG.mFJ ;>̮Z*v~/RyCz49$n5;! e7}@ @veeᘵ CZ:HD?@ ͩ?BCShSx&@tF>l:a> VJЌ³8)%lCDy(>>L > d:lwaC ,BdDp+$:.Zn.W@,BAֶlS(T:DJgKHJ \êCr{:p:@x x &b?FrW`GM r6 uG t. =&rC^hEXI *&nCjαF* d *r<3 SKn# :ŝ|~ꪼ60uXq(#gw\?3@WH$R:'n hѸ%5 ['p 9D&Ga&ScX}\:oN8LC!@G@:pPV;u4?[l$;"t4J[XÔ8JJAjCvp><6iv\hLZxMGu_w@^>NlH>;rG̖ꎶltS/WJ lvC7$[i2~bc "iaJ,Ca-80@8@&ܗJ uTLB0 J1LjR@9FESMqPOns‘mqD8\@ h]72Bf{6|@шHd_7A~ mlhR72(S `VDT ;EάXnį;l<\l瀅A@LCBk89yHD9X^PXaC! ?@y=;80į5hCC=9(tO/}yz4'<;?w3A$D{` oQ;ĤC;Gd,=`( B:L@`NO!K^ C(0Ghw<;<#;GSw'11'ݙK3AJ焠@=H=`@ߜh-iEq}CFb=G`@<@\7!4 ID9x=Ěmف>m0HQ˓Oúzr#k@oVr#~K [FN?V@ZFD(8h#t$x6DbsZJ;ًw`?wԹNu+_ pga:|)`$Y|c!& jcϣ: AǏCu p@Dwu` 8ݾ.c"ɔ+4e]:Lmj з b ZKC7CXvhp}% 7^&^_ÈCԎIoYǝIpנw&X$Xʧs>Drު袌6rg=E$Q #~Kp  A,sy1'u48uhX(XAzދD#~縅&G.Ա |hGF:(:tI2^`>a*ђ6xtaLbj΃9#E}ԉ5bQ:ܬTLYɆܑSKK0RǸ0T["5THl\|}:Ł|D]B!iCLTL ARx块z|ݗ~ ># w`q@@iZkU]JPrM>.5 ]Fb_muޙ}蠅袍~o }WI @ɂ` H5wޱ@yHc zjwV垛ޛマnx([ HY98yqrWrRq=EM?MaVvi@Ǫ 9ޡIVw̶Ӧ!q_襟ꭿߞ?_域ߟ >g}C 8.)X#@ 4`lh"DaЁ";PNi2" D ITOw} G 0a*1CrWPd_/'B1RJȯC ǭj,a]W.)Z":cq D{%g|Bɯ6Ŏr!G:ZdQT*YʡqJ`~H^;Qa0D9xy,i/a&^Iə-%rT* u:k24X<$/ef8iLJDH5uKhfӞ1:LW UB &`>*Ŕ>Qs4 KWOaT^ C!*Q ˤ@N#lkAMu`HM}Uhg<0 Ocr&τJ|TbFSF>cQiUZ֪ ؇> U*IJ.iHXF{k\Zk͒^Uv2@6?`MŦi`b5{Mug 09RMs:,~$-.δp?[m2e?剅`XA^t҇QA)jʨ)$e(pGH1BD0$:˙xt(͇}b_ {f1!P\]nsƣ.{T!Ư_X=TdȆHI| aJVcrpnRML/F9L *?zXfmlfvPr#Ir jT G.# x*Id"dU0cܖ8O:6@|b`=@:@2,q;ju1P\_ߎ `Xb~EH1$4:x5gmF`㲨#ȕ#uQt*41F B!i> *_ :j:${:87B C? /U($aH.Qf;[ юǴbu`!B'~(evhw[Ӯ- |yPi"tL &z?[,waC|@Nu%X.`E77_]p /վo"9IPLÞ3ŒdKj6ቘ@V y%r$YxeNs%XFa<}9C$Kpp!#@1K'Wg敼ԉxCT:pCXĥlkDA`PK is1=Ҏ9,Ysl$@IH &2@!!a6ҡ'tb,/Ə%ʯXW$pϐ "J K=@8Z*'a 2&FNx DZK$x8!@Z(@IH* m@*`wN 9(u%/~%!1FMa K#_2&,* a X|xj!rj[vQ(2E=<RAɑlQ:& 0aϵH%ܣ%,#)F$![nŗ,YPEp/ % f&8ҳԸ$'%* tp%A #S2'2bܡ"!@aZ"6rbdO/BfKbqҁ2.`/[3\"*2J!(T ;,(373:3H!(,3dM9 *;a㏎"AH @@@C _3u4ESI4`%s 8MM2>i3Cc6HjdIu*+JJf^!" j+!""!>{$1"A6إa=/dPK Aڎ[l0`@OB܁\Hb-EKIKEKNLY,k(X˱ UK-:` `-ω!  ~"AS'SI"T4XX,H^(izbNu$*!. !t"#8ޭ\ &h@+n EZ=AT]挩%p0jAL¬U- `4L9|kLh@~*b @RKKdOeC.0a!TJAO&\o%$!ňbD*Ul<"1['I%f?Ձ*.4;1q(5(beedfv/v4*Q>mԣz6cˣmd6!i%a !h^hN q @lRVXM=\fpvHB=,krr+(d%juT$=muUyw5AD9i gw+e* ,eǗ||m*tA4!"hb!ndTI& ^ %Bkу&F@i08% 8*M$8ѫNB|@`wp*)$  6D < twXf 3J:ON"! D "0Wwl~,dMUv !h}>mbqH@IRn"nXMq`w!#b<8`FcY2B# N :15ޡ fc/h!rrUAKI:12P [8jAD h``yba6`0an3Q^3EbeM3@/ %y;qxaDmXAI>W\?\YYa~ yMYv" 4A*ˆbF:*tb#~!DHڤY,Rښ 8.`(B8iyb!`!-8KC7:UКMD1?Dnz0&oCBYTia8Z(̚:!*Z$%XvaxU/a.7Qtڲ" 3$ y1d7fw&`g-V!1E{;-ni29!DTfV,TV!N)bA@,"`D #1aB)-[ۃ_" LY02/ZHg8^ۮ;'TvH"`EN!C\,ZH@IyHajIZt!T!M@Aԁ E$f !_˳$\ۻsbA9CV (A붫z<{E#70!BS!ڢc]a$òDL"2Y]؇ؿg󴀎|؛ٟڣ(tT|ڥ]۷ۻ}|7gܽ@~ ՝M|^ ^#^'+/3^7~:PXHlf n|@hDކ8^W/)e鑰|PQnft^[ ޜЉة4oǠErf^뷞 ^ Phwnh$qF\ o;^kѴp:˰>>eq~kpZ$/3?\Y"X1a6dD!ai̿*4ː˼l,zd ź-\ڤo-!O &ehCeL#uK*LQ^?K\"vHb/a> xa‰ܹ81߈~,KW@"ƑY  ppÃt"$ 4СD=4ҥL:} 5ԩTZ5֭\z 6رd˚=6ڵl'Ÿ $#AQSuQ ,|)p'lPiHa]8%(SD}w><剞B Oa7] ;A` 9tԭc}zoLq>x'  '%Sfyp ik&mAn[pRTq)Q3;DQ:v] 5'V>dBIdFdJ.dN> e[1Ђ:LF#D'N ͣb OjYԞ\ R<AS<\ ŢӁ:3tCABnI0̈́Q:DKYi:XNQ ?@,$4j3;]ӪZTg;L4§g:?E;9g1P8gzhqN$;Rd)I*eE)&=@$D$>H< S*HRLpp /p? qc2.&ԁ: d 6l&-F@R В;;dO>yOMB0׳q#=f2IfO(Qi e*rӍOc34=dCQ}2I r<$V ;g3Et<:C^ ]:ﰣP$9 RYR@'H:&:$2aǏ:N |O||/ϼA  Δ' &&ώźa:Ȍ> 'f-9: tQ|ʊc#O͏+`:@`c/ i`<hTA %H {Hǥ$p>eQ~&߯$?$ F 845x'#減hgBD'yl&A<bC'()g,R:@@"8q܁qO]I ~#؊Q7R AB궤."JH1҄`g$ET `\L F]r ])O}D:D̡~U$T[E/jvg?;G+TǠ&Y`ë,ck;1RwÙх$'T]Da(`6LĉJQ H`! &})ՎbdOkآVhkVg@)E8*pHk_:\L`QSHrܑ<7#nqJ Ω[!G*"v,n_ xLD7Xa!̈H"!M0P%-G.l()AĈ8p=:ta{ =4w7r/q8|9U1wȦ=E ەy(.\HB4B]zC ?XB}ϡ7.8}>r&frua1Zo:'7f13ߡg#Q٩xi?#4ER,)?!ʼ"dTit{n]0<P>A7l ~jE)ηXWguQG 4¾:AʵK0rZ2EX$7fL(|U/:㳣qsVp`7Esg\>x`FPP@qq"/ظIS$XyuW2Va0Z dЍگMq K~򔯼/_p@P1_/Oԫ~<8 |\_J0{~BGYGSo[F;Kԯ~w|ASk /Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hhȉ艛{b1[XUx~bbt #1qa(+H{ŨBVSAk1@0}W`$Qpq1C@&XaX}8xi!+ 1 P`&3;gb8Y=x?ShǑRa)&'I3'<I3`m24$DihWP>!Jlq1${>9{-I Sd)H%X.24 5^f 0"݇<9dBfF|ISFLd)T )]Oàu#?u,0N)*)Wq]C >Ě-A)L&6+ eS0!` tPQPb q pՁ> `>/ W?fa qG@V4ߩXEY/E60 ,`jqg')a!AR EepI- _5Tpٹ" :  Fa(q2A* I:BdT@+Al7q=aIG`@ )*>zxa+:2dF0  E9#} Z5nDkRey/ٝJuq2b* JVe 5per)iz?`u2\iw7:e~ :jΪZ}@ 0v ,"0Bd 5]5"/BP-  FQ U Ch r   S"KW!v*Rϩ e4>"0 G-ɂ5c"B(a[Q W 2 aP5: ! 4k:{{E+"W"'2n+rZx!{3#f+βNk(&4D>=t%9RJ6ԱIQE1 ( Ў R`7}"+bRC 0b8BA }Kz-k(#˳;[A=AkՋy2C;"uw 4"wE/XA  6K kg&Ǜ`JR/1/.,3t2|'_&(q`Fa:2~" Pa(+2&'١ 0n1yb-Tdr 6"jMU(*b+Ձ+>,+2(ODR-2&PPQB22R&/(_@ @xQ||BR'pƱJ@C0l&FF ^6 WD?P]䩸4|LZ~L*B2ʤ '@̏mF-ne dyb pA Q;L?-B_!8ipX|'y'}h.Y<@a'xaa> K,/˖ p%ə6ɰ [HQt, /|NW%;Q;0!.j43sV@>8R +DC}g 2]*9=J^f`0N:D0d#,/U 410 )F7ss6`4#=3$!9mIvVm^::8Զ!?0Pc3m94d t]5ӟ;Y-%JqI #ZiyIkI3-]6j83jW<yC$M*F:ۂ9M%Տ=p;0N Q'$Fs9\wyJA I%A I Z == L8$140gc,EPӸ;u;E`>WO6* ҵD)qInbYd0" "L94C?tpB=?0=WtaCCR@ABj)YDglC@Tc#s^{[@E\yA8P?0i%rE񦆞M4!qW pD!݈&FTC4AR32>"f474Eb9D@)N>pN%rc%?; <=RVt9?-d( G2#`"<>C6dV^^L%AeQ-oz %Pp"EDEPqVNG}PWSfF9$\>ENgNP  POEQ` S$:c$K9quwFMM0k@Fz*OD@OWAz M$Pp[J1ʵb=e4R&X/›ߔEAIN3 7}%@T kOMPt`IIM^kOD`}CPa|칳ЏD~ 4L؀: o‡IEEtDܩ[hHDIT-EIW4;{ K8I $4UV]~VXe͞EVZmݾW\uśW^p&MO6tQQh)yL0~E9}r!FwbdA_eK'(LҀK9F-VlW( |꒴~p: tXM{:o@=h)[Ƭ>G6.:`CHʇ4H3m! o}1Bxi?+w ;mf3*|:R=c)! I !D4kHҙu21zLB u+[(:L+:N $͝uZI*j& g uXJ,T˄s^5VYgV[o5W]wW_}uL|@]ҩ!ܹH-?'9yDžPǝfA@0'|S t$|Q'įg$`k(`C A&٧L' @u2|X('y+mu]*P#sUcX !C7bDDP=ҡx+BA*L-((pKHacr \=4(-%IJe,#Oz"qҙ۴J6#Ѐ)γ)騉8&xl@F@/pQԙ^-is|#r L\.bq;1 @iT{,83zu1M.ATF+w# I RUHfpRgⵁlf5YvֳmhRsAl8PHUP Sp#]C,&Eek fZJS+hb1Xģ 8XD ňOv!:pfٮ@X0ڰ hLӒ(K h`(+aob<5@1A[1:>b34UdN5IJ `tĸH!<pzu_F-V6$;ge u8.0>`:sY |#p;d*B'xGg.פQ6穋.6i -D6h>pGxp^Tovx5qwyEN O./ye>s"wu٥TA;UtGGzҕtOUc1tETzֵuw_{>vgG{վvo{>ww{w|?xG|xk.g|%?yWǼ\@ @A0w,}K!Og}e?{_0Jޡ I#=Z湗7[_{7χ~{(wbG.GlKGտ~|̉e`aVo҈. u3DT48CL(p1 {A@$4LA꛸`~H.B?]x1R p}px0RV88›PB|qi耕 P?PؐGxA'L% 0,Ut .BD抇((6B8u]CEdFtG=}{Xbnxx9AB%0Jua(tp*1 .Wdr  x |wuA x}&hYVE6X]EE}Xhx`EWŅ(*؅Ap {|};q˟A1thFpU/ hJNXI/p4Z5dXBq耆} ( ${p2Bqwu]Ӟ}(2/T0D6~ʭʮJ[ Pwup1Zhb `#HKI`1wH(T i%qr$QhhP@p䍱 YpPؔ٤ڬ8OzAs K-L,  -w %&# h-|хp)B.Nϟ̓(,E)%d4 vuUPu#ayFn%H ~X'`&' 4 |ڊl8PxL(C}Lp]E.u`ў|Q}*"5#E$ ńiu$`IuxI{ NXyڵ|ˊN ܌tӑ i!CŬ@(9] TB5CET#mRi w|P`o[,PHʠ}ԅ` r\Nd9NEi=i== Z:z|LfugDPa*0.* @ ( (؁(@PJ#ا8%{00اu'Ly͇Jq(8ł8 3 uHqi rtWUB! >x?¡n,]BC2& h٘ٙ>+\8#zD/;6  N 9*=srOw#ƭݚ0iƠ k~CHڪxзr5i] .E]ۛbz Uekkȕɥݬy0P\Zy%5]ȒUeuׅؕ٥ڵ%5EUeu%5EUeu&6FVfv &6FVfvaX<l$ ~ ~Б#F !̢ ԻP$*(T@YX xH x'. 3.HcP Bc8$V(ƨ0r%+vG' u xH*0wpe.Icۇ9 ,)ҒCHT"ڇP.A fvf\A: "*1C1P(,jUonpy ,]+oAM\:&R фg&F'\t&?фpU[p{`֮hh5 Hlp5gxfYH=55 ]Xi ƔqdxXB psx6jVH}H\{̍(hwLb\a8p j-ZꜦG8uyK2HpaH ݢ `Vq& |(Îڊi wl~M~k~~Ѐ}` X-UBShzln؅ -^( tN 8Pbrwp)xnxFjV?8,Ɲ>ćFS:8Ӓ'(PWpwVP%, {uiZƈ+K@APYο:pgi ϶>fvC yX%o@O8zHy񛰱 04 ;s. NiwXB{hh|P>9-UC*Iꇰ%}-lwJfkI.ӸTWrNtv5-gQ5Pʇ/Hi?@ 0TÄ%v6jX Oyu䷆s : _pw \ȗF>xVHl}ˢ0,B#?OPH~t]~<=$ *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy3Ξ?-z4ҦONz5֮_-{6ڶoέ{7޾.|8Ə#O|9ΟC.}:֯cϮ};޿/~<;g h' ϯ_}@[( ħ` ٲ Kwu`:SG;엢+Z>; tQJ7xASDc:Ttc;B:7HU^Xji<3ғҗК)e %AcyVaG# +;"# =-`JrA\0ECC L=f dMRgAHjjAGVDKzdlBȦA +W@G3.س꤂t 5mSAAF _-Cͳ6;< 8T@:"؇|@3l@x_A@ P"=Z|:"X.!@ DOjCՉP!%X@ ~xG|PpHWATǺP@>2q{D;Em|s]8((@tҋG׿I. Y/A cXBЎ*^2$@"n,$*ƢGptpPу <] 6.4؄Xq0N4anj]ûyPl^H>T܁a3$ʸA cQ(?AuL@HDgt+>GuD܇$ }8$EBpOĂXGCqC"Ѕ6 Q::5{'}(@ AwCgJIHecfJXA PsbphyNB*YOctëDfsX @< ( <ȡ(wD D[i`@8Stԏo%C1xC @,`ŷp>jRG@]pЛrUE탰x3Ab PcVe$Y`7ՍnA$ 9 6XߪU;u>f$kcb0v-Nr@_@Pxj%2 Ǎ9 0|(CDn 4|L,W@= LK; T: FbUҜiO}v2 OM]t(_{Nxçf_z]]tU\ǣ/ti\BD EJ D> ԍCi+C:_Y\]<,:X A|<(ԙK]]ֽB ӽX `CaC;Lj0Pޅ@4x=fy]BC,tݴa<(L=\A:hY1>;\Yؽ%]5xʠݞ ML5I.H_U A4.ao6Axr7C,CÔ>L@bp īa@ ` !a >`J"fD/ *F;@ h2 K+b,6D[0 bQJ.E;ɋA?#Π#BCt 5z.;4@|H, ;8dtD^E^dF*KK C::?e?CC.'4,&CL&hPøN*LKUT>X졔ăXP%?lⰚ0%]:*>DM^^h(pN TA"AlC,<3e`"UN_B:Z`BL<P65 >Pz4e C14$S:߬~"+ (`r(n djGE2  t(B:dCx>\ J=4#4DE@T"繃?.hqfz C m%p@U.>BCΊ?(/J Lj6";@W8DZzNAR"IzxY@CY:+A@; &+}Y -80oNJA@|;kz8.0<@,J(D\=ݓ=HB 0;o&x%CD?`zW>iB&9,!,.I.09D: F pϕX>D(0lT p|;<0^K ~- !.9*04WNloAt]D$oE[ylz O؃P#{ DT?`< ?pA@Lu=n&4HϑjPBC:=`)M%?- Dfi ec(@l5.Z'@<ȇP kLOD?u $ T2#+^QN±B {&`1ݞ$tPA__L 6@0 "$hTLeLumkP>#Io4 5k2&v]K!|@t@`IjPsa:.8vtwOH8s@嶉vծ<@|v1D$C1x̼JD@H@@ )W/EObu:`@}zB'!.|㺡 0}I(D\@l0(肐C @DNlB-èZ90sYYuMz}z2F E|:4xdLVp8 MA!F]4 NȃjqMP,˷̻gNC,@,CDyØ@A$C,~2D|HT;ICwD<뿩oAx@;wpe <`O:w"o?a/+~ H" j:hQG&UiSOF:jUW>0wCu$\ .gRD(š ݃q>BS7O!IG墀uhS'xq ouMu;&7 )քuRnОt\w<7{g(~LbLP_C |~`.*]xρX8Xg6T*]8)[.B!J)w(v..*AYbH6k%R)+R-/0~V@L4C֌'}̡Iw x@PǏ8` ǟ >)jt A01TS 0B Ңpb b)( |x%lVPg;J# hşuj7VikVm햨A`S&B&Bxr@Tq/:ɂ^(Pᇫլ-儲U'`9 xO,@ƢT',V yDpGX衉.裑NZ饏N1iוR` '"̢wt1xRG<1"P'Xޱc@I@?"xgPgݹ)IqGDe 'E5ʇLJJOGa1Niq],LyG]t={ qb[@n6 ' z~65 \E'OVʇ ,bxO_y  L(*}ޱ :&㍣ƕҁ}M:c\e/+ 4C0tp,Jt%4 QBPZGb$9A/M(qQxğB%!t,t6}\X+h"bG2lq@ ]\utaA .B؁ 0@R0EA& @wZWVNtWWOc񎉈vx+L?@GjJp-RsB 2 t E!,DM`(QjU81SC2DұID)WRڃ֒UڬRju4:%aŋa8`դnuS=!)GYJヿvJ64=c1%HH Du)a;& )wRE7@L r|ݚE2$PSI!y9Q^Ibq0[){*J \,AWt>l C"P4 c2L7c6ナ6Q|f9@  qHfJr%hKLf(@H?_ (pq;x(i<ȫ|\܃2w(*Y EC = b\z^/?q>rD.y0 w.IHQGu!!@=|qP'?$vlDmY4I(ΨAdKf@O6 @@ |@R##D&g)I| F `b- !\pi).8( c|PE@DN( B`..RCM(5$yvq󌮑'`ܡJ+LBـ(rX2a k4&|2-2i (/HPp!]r4'e.. h&D"+Ҡ!#3ǵ >iyΡ BABA ޡG) `m$tAy$8!A#1ҡ4!O<3=!F J%Js P"XO(A"bA$GQ:I)*-h,/b (p%D H(d ^ c(V`Vt &"IS =a$j& A&bIN>glG&`FO't7#jG?)$'C1 jۤ"H8ƍ2{4R%uR"mH:#8'0-q/*5:0?f"e%AH("beCM8'R )$&<5.0`S(B+ށu\ɵ\\5]u]ٵ]]5^u^^^5_u___6`v` ` `6avaaa!6bOQf$6c5]A(*pAdOk,3I76feVԌ pY -QoC\)-0 whgjZM`Mny) MWQ6*M)D'vn X ؔ6lԡ"i"0Nˠ6'$cr-4#.brkl>TI 6tC63/n;/wviУ$C.G = xkba"X1 ނ.8;c/ "B?H$P.Z%B&t*Kb|(<-SHjSnʖ=ps ,|v8E (.f]H4@Hf" [ Tba!FBd mb?ofo=n>:O - p`0$hBBaVN†c"\Xɸ tB@{)WPeХWA2gsD`*T S<  7cM: 5"0PPeQ@#TՁ!BqfE  /o-9F1Jg($Txi9 "W@8兢&GmHnL DmK]l`*<)/ץ-D%EUb-8@}.WDAI)YO/bjQ(:e(jYY @p.r>%c0&1>#pяGsĀj?+Έ 3A֦mHD/"ē"BmJs"e!p y:|11){DpD4gӡ.X9яIzQ-/bgbzG{GG3nL1pN-5hO1 '"e@~BAB` -  #`c!zzW52t Qi(<.hFrA}.o-wSq=?!,gdꀆh;+="7) )z);cz)yGvUԫUB@bA@u!Ae)B},`_6T. Jy4–PWs-w"HXH! -&RQU0[;D="2t<Ty.Zx~aJqT5C!"'}A .q!IsO3EG>AၮI߸^Ρ:^bHK-`W;>K7{#w7ʗbx>~>ho|諀~w.|aB}%o2Oe~ ?<9Ou( tᚴW^i}OLo rvXn.2C ~)n_>v 1NC{>B]1<aM88)XBN菐H O:u0h ^*j ˆx Ɠ=81}S$8Ϡy )݅ "ThPCw|#pax];u3Up #}` jtVY D4]˶۷pʝKݻxe;4TY]=]̸ǐ#KL˘3k̹ϠCMӨS OyNdu!xvZF JO6裐F*餔Vj饘fZttj:OJ^J?,Q`0Q@G@:tԽ9fY*?BaT?肕'cktO?6߯i_PՁJ;B>,lҒ-in%?NO64 0,Ln@(ZF076K?49Еmϼq+ңLJX?\w`-dȩUh.JI90Of0@d-m<`=0(}>tAsWN*=5J\eX}OvN.o'|+ OG==ۨŌPN?@v쳄;pgBb -:"ӿN_٧ԏ:^XŠ]җ\&G;1X䧑m<%hK= @ hJ<`VT@ (yp(Ɍ#w8; $tFHY-FDw0/O$Hq=jXf'0eZJ7 #/GwdqG( LD#h+$jJ@8@cѤ*WV򕰌,gIK.w^ 09؃qL2f:Ќ&!9iZ̦6nz 8IrL:v~ @JЂK5*zSxC'JъZ #{9t1LF7J >NJb/tFkͩNwSbhTr| %xG(f(JSԣ$fE,CEJ:'uQ.(@Q`wjOJ׺u<u|20YRe Tvh-؇26SaYuNK5r&1jWƮ/[B1G0ȕ- mxy!뀂P\.<ͮvLKL&J*9{| \VO~i[)ݵp挀;>lP) RHY@as .[C-p 4jEIE{ `K( l0Ȋ% Ti@ x*~ڇ@B{| c<{0.J06 w)L:ֱTY+!ш5Rb{T:2N^;ضnm,:6%֡&ҘδҚP0X#%bӧO#Q g|GkTɤ7ցdQ #p. UH&w!n׻D;h\Ѐ=uLr;v1uЊ5ɔ d֫uF1 $v :8# >Ϲs:Dig0a[PCjqB&o0̥C&zg0SL"tKy4B!QL?#a D' }Q#1k;x3tvs;逗0PX4q~,D yϥtc)MiM:S /W@קX DY / n$3OW\`uOyOo;=+'dFp6S3w <ʒ  a\}?@_] 2.wlӍlMoo/*  )|BB0L 2 "8P7af"8vU*0Y)usuF С#~lj&7gZ"1^`"r pص3FA}qsc b)fuv8 h'#%YV8>#6$, 4'`8sMw8zaqa(61EHH8HQx(97(.g*iM1tAR-s H5^ԣdCQ ׃SmGG ba}/i7A4#1p7jHaU?g?*gt@B 0%. :B>%tBGLDBx22EC6t 2}dZf LFS #|4 %ps oQ 0E#y#i28BR3=K~ @F`P Q`C7efD&P*~\&,=DMtVw*ETokgj ~*Lp2ftTY@i 0@O6p꺮ڏٮZz$Ь[{; ۰;[{۱ ";$[&{Q+,۲Q#Uva/~%rS8<ٳWǴPeFamX2+qZb;f9  2õHfĝp[v-Xw{ S}+s+"O9`& `c&aOlAh`hhS~^Fi];U] X6jInU& %wr~ AXYJ/;"xArI)],7lڻ-$k S!!D: z54e:h!CI2*qz[,P W3S{FyI8]ِs{{Xa r 2!* v@ t{}Q.)4R(? y\(B(((L#p%+S/8u[UBl6N).1/r//pܔ@*hp@t7PKg1  ):rr~JUoȒ / a\Ba3t8aϫ E `5T D5N"@e<PTW|)I4J@QJJ\&L ' +0Lc1Ɣ7<-K:"D}H<}"P!0IR=T]V}XZ\^`b=dF(€{Vue=t4?7[,flaR0%Sx%TX׌dtIk}YUPd3acUVk`Te7Qb ^@ &BZ 6(w74io &@>jjkĶ}4uPv&ʫm~`&bo@jlrDO{XH a X*/cBln^[)iS/PJ0W~3y~NSq7,7I hG|+F9 A!>-NhA{T&^?C{8ٴkΥ[]y_&\aĉ/fcȑ%O :!/QrpL4ip;1ܗ;uN_<:vX`I~Eg>-!>:5sa::DtAt_+],a(OيJ { a,|@Нr@p +3pC;CCqDK4DSTDŽ%ǃ`(wtԏ4(dˍ6w#wtqH,# *S ̂ΰj%ܩ ]4Qg<3Tv҉ ! A(q  $ 0/PPCuTRK5TTSUuUV[݋3hpgtYIt0ܵסi݌$(ԱQi)^ZL$JpY{SG (1O A(QGQ[&pG͊&GHԃ(n>r`Wuq:I}V!"|pg$`e:^dv vecyfkfs.Ȳ@}QP'a& V ){'Ǟ("x ZهjK { AҎr눾6ȀG/gʟtڶ~, m)xRaNŝ C<8j wqQZnb Fqmpm| `ZL-']cn0X&)ŝʄ>w~{{E~Տ;쳧c0N}E^!Y R5{,0R$A%<@83A<5wpZ'@U0;DpV`!Za0A寮7 W7 эu >AT`ZEob \3 >@(D3aE8QscxG<Z ?bzȏ]HS}Kdd#HHFRd%"بV6!Fͅ;h,yJTRde+]JX5 ;ޱD1"cK`S$f1y`&Z^L_"SӤf5yMlfSf7MpS$g9yNtSdg;NxSg=yO|Sg?O(Ԁ0y]ehCPF`"Y*"6tZ(]04eiK]Rt&_a5nRTC| FpdĊa|;(UfU[jfnFH"o*(pe`LtqT`qO%la +O詖5H QŔqE7ÊJ[hђפ+sg?ǣٝVWJ1LR,d j67&Ju]jXKf}GgaGD:pԬZdQ.కL t u<LE㵠r`BP@^GMX3fknx.#28 GFOB0i@EtC89u R>KKbO`Bx&&K;1I+r\"bJ]t9NlqQ@A~(f, !̘͑(2?2Q# gH>Fɕgz+W-t]kK XL,I}B-h`A$>*]d4>w2`PagW^|/6zZw|EdI LS/$l`InO5l7 ޱw ӧ~J޸nEB{?eˊ]B_ʖ>cE,2 #i$Ӷ Px9uT_ kmuHԫ@@Ts A2r|! 8 .ji$B֋뱇Pyx3ءi%Z X(: )L XR ز, C1C Aх(X>2|C8C9NOQjC>C?C%^r ]DDLDE\D%7dDHDIDJDKDLDMDNDODP EQER,ESp JȌL|  *[y88 Ѐ2Y Xy>{@itq HP<kK1;ά.k ,0 sx]؟,#+23[LNx~0uIs 7-\!thvpU"x9 &2Ѕ*uǡ|ۭԚ|OR(Q u4S;Q3xdU]9bH,>(R*(hHɲ0;Xx;Ђ" R5VÇd j:P1̇U}WªQ58Bpp@tS͉Ai!*ȩ{՘xKOŇ*$*5 z1XJTT5r%܀ٚΗ!diuf%y2@1㉅%8(tMahK;8:X#P-ݗMo5t\|K%}A/ckx]\t}<` "!QѨ wl *ı3<ÄQسY(}l Ca`G}`vх;PaspDQkC-v,56uS&3ѧ8}@n 9BHC·P x)@ j]@eAU&&ҨxNnpvl>jyhտRa^\ђIR>D1Hn-*'R|-sr>dTq߼ivC]l ,ɪE=W":ף uPƓ0rvYCCQծ` V=6wos7O|H1[#1"+a5qjIP'p{yYZoo8Qc7&~{}H|`wΐt@yx7ouW [[*ॠΐ?nY܍ wxu2x=(ˇ~xpPW`XxZ%c my%26J;EX%`?yg7[paWx7u:X]Hc^ q]WǍx0"㡠` xYL]0]Á71+* m5y'+Sku/Ay v^|xKz6΀m}q삂bH]4|б`wO8C$q;"Ϙ:[8‚v؇g?ߩ&FӒyy]`uU#l4_'b>1谀蕫AB}Hʀ"cH}';$f[O~7g$[( 6_~ ~<:w~~/?O_oypfC ߨPMx,h „ 2l!Ĉ'R(0Ō7rqaW2!Ɠ UdYeB{Jh&Μ:w'РB-j(ҤJ2mi.WԬZ[ꝺ}8a6 ٭ ͢AUkWw3J,s/݆3n1Ȓ'Sl2fR-xU(/Ԫx^#P6Vc.o.VW 1޾y3:u~O:*d^/V^HtN#=#A 9$EuD>tڹ:U 0e.Áq%F@;/{//fu<x=Ou7CN[`"A# c$1;moPY?]=0;"@X@AaGR4TX<1KP""5BI5;$0 >mݵNNW:n?sF,6s@CYДR ?ed01 R/[~9k9CA' |-*ƻP =Lu{o!g3PqH6p1lw -| A}1}pB`?ҁQ$&eD=߇>N>տ.C>/bwHeHun  THM~D6u.|! c(p^ba*h@`   ?@uB;̱ GL(ڇrC* -x@7|<6 ATl͏D4"DLQ  ;> tcGRsuD(jс\`C: jI)r EuX1K؀@ SFqf@(O<ձR3,'C9x15$d'{)_ӓIU?{ԩ!ЅAIM6R.a2r@rF܄/7T͋dp+. I8pP!T'1lT!e` @EO(d Iy` %Aɛc>bv0 LgHG"uuphcyjԥ2N}*T Xc!9XgN58(=AЄ a< lUw|Tb%9ϚFwueuZŸB>j3Qg1`.M `b*U %ؖbHEC( ؇9 wX4JEd밃q>1Ss"{w mF[Ӳ5;> }"~N lQ{lW&b1:aBjd~Hp-uR]> V|k@S1ALx]Gnw9*$x7b \))|>3C~v d&V. @bdT,9ӹvsfƨ1@i @j: @S26`B:Gp`bq!/D/ <M~!%JNJ=#`.BzeML! hAz&FP 1Pt<0҈,$yqfj(`@;$ [ȇ8I:"5A$RGx]@G,V(cD6J)gE IV𴹅woʎ DxQQH0qO s݁&؃xAvZ$ JJ||@I |@ z68@,HMn;."B 9ĵxz8[ :tDPPG ^O| w-[Bd'{*Ho&|p"|(+u|:avwd!+& L4f;&z;( lpE4%P-emcnO!OClJI9}\BJD;A xPW݅!VNq]WC@'N?BnC:,;T!CU9^!0OaZ` d"!M֤M$NZU-Q7FE(@pE:tCRJ۰F mVt;4@EA;X䲁GDǭL"aHx>+`BD#aõ uiC =DgIB`cFf DeTB:xº@PiCi>I>dfH#H\Ct=>N%ўL̑!_ :Dv ^oa'(lQ2ĂKBo d`!C`PH >XAP zh]:'0G*򈠢]Vq&@LK?tik>h./FpK` B7Ăs؍:ϸ;ju색18$-9cƃKI:#hxAT>ĂF6DܥK6z["Mhy!E.閮 #ƃ-, .BM]  ɍ?Ă=p>-g7$!A햟?8(KGIz H^8A11#[&hC$+p=\L,A}ҹCA7́ATEuAJ/t@(Bɩg 7 1D˶*Ё:D=(GIԨ;,q@s4Ǣ5/_mp`ZB  1E.9`BlQj8De À/,<.^0pREBI@-!p- Dƽ ǛC.\ lC֢+5R&ڃ ?Ȟ,2-ײ-+OiAPa2h4 (e ZAd@`w(24`@7n(a\@5e@i@h.D[WYj2D &tnB(EcЭ@EC_(T8k?=TBDx-φ4'tD*XύNO 6,;q\q=>b q,u< ,nBP\h\Ń@GB$K0>'/>7?>GO>W_>go>w>臾>闾>ꧾ>뷾>Ǿ>׾>>>??'/?7??GO?W_?go?w?????ǿ?׿??D< 4xaB 6tbD)VxcF9vdH#I4yeJ+YtfL3iִygN;yhPC5ziRK6ujTSVzkV[vlXcɖ5{mZkٶun\sֵ{o^{p` 6|qbŋ7vrdɓ)W|sf͛9wthѣI6}ujիYvvlٳi׶}wnݻyxpÉ7~yr˙7wztөW~{v۹w|xɗ7}zٷw~|׷~ <\|% - 5ܐ=EM<U\]|emuܑ} "<$\&|(*,ܒ.02<4\6|8圓:<ܓ>@B =D]F}H%J-L5ݔN=PERM=TU]V]}XeZm\uݕ^}`b=d]f}hjlݖnpr=t]v}x块z|ݗ~ >^~%-5ޘ=EM>U^]~emuޙ}蠅袍>餕^~ꨥꪭ묵ޚ뮽>^~垛ޛ ?_%-5ߜ=EM?U_]emuߝ}?_襟ꭿߞ?_域ߟ X@ T@>)XA Z^9A~!IXB)T YB1 iXC9yCAXD#ITD'>QXE! ,fBBD^^\664jjl&&$ nnlVVT..,224ZZ\JJL**,::>@86(x$0tfİʔx\d\t`p@t ԺNf<<4bxtp||PP`0@0.l xXPX (6L*$LH@h~zfhbh|p|blh`ZTT@lĮvVlԴ `8:P`Z4`rrt¼FFDƼrr| vv|ĞFF#ԃ: tR.예Q\A.cQ4hЍ Q>O= N@?S F)TV Y@;3(O)N Ih&QlIGqvdPB=lO,`堄jj_wPP@E#iF焘A22dCֳ,iIp:*B6Īz&sF:b+[9ԓ:@ >6&HFAHn[SdaR% -ښAC:`,A>Αh Bx;8K~N𠷪lN;|PH@Zl頳uβ,@ @9H,>,2F XH6khO==C`X S@B)=sںM< @BC:F#]MhE@Iу2. PΈ<D>/r #h"tN03vAN9}<;G@3\ 7TPOl{H>:b  h?? C= |p%!~LR#tB 6  |C7O7 +1AzP  {$uhG2өT,CH0]@[ȷ zG#APG:p#=q | $ x "J>1IHA?aS rAIt@ 3 xZb @]=t.PRˈ8 % Wi ΪTHGMqӜhTS] 0:*rCjԙdũ0ZA@!}*Wdtjψ 耇Mmfn C )Qd)ML$<zO SE,EPPTU>7 wŪ@$˂0׹ `+ J[K$ЎVQ +C]yYdX@Z\ YTۀ\D~=-/tY1LBJPסulQ0uL-hG~`÷gLc9>' 96[£&Bt8"/юbYtY.X`|h`1OeYT)z\Y PȒ"⡎ҏGkϭ,OL=%ҥkbfC<%CAnI01A|ni>ǚ%`M;@·Y D0lHnkLb6H1+ (@*/1G{PAD8NԸ*H? v NTI(,yD*t YHN]9ɵ瀙)kƵNR6oynnt U^ @.̚lˏ'D O$J: @ЇsJF%<st ӨK'G{A4@k*NcS{_┓]] x?t<|i`SHxY:$`JvpIDO}0phL\3`Fu `CUCyH~O`@aRTP=/=g ~sqUc` W\5#/( fqH0|=G& y&<%ЀAd!RbP PrS*vEYP=PDp b}FgP @ q$'\`}7tXv @B7$3-@PQ_lB=%qaw6p$PpaP|MPqb @z!C"3ME$br4`pa09#,}#qRd56`b%WDld7a+`%CbS0`*PO !PS w A{?Jw m-qɐّNGP=`)a(Ph* 294YdJmlɽdW&p;}a;TE#@Q@ ef@r5u>Z$]ק)$ ?` $z`g0x% |%309`CDg՝u#5 }a%L l쀚qA4ce$,KA1ǯ,zY{-QXN0W5/`=d*0mtjs$Qbp@lH5үJ p3LI&mky? 0hNK/B'4l"@Ji>4lVz}|9pU[9ᚡD3T 83#l< e:zHI"@v~]z#ֳZmWz2:0SDЬeQ$B. d'5Z|p9,UVL#Rz5A%Ej* UpJdPbRV*b:^h*bP6mf@]$7~pE8+P`0=e&<eA~WUWAq@CEu| JWۢW ~ /@~//һR45!`iLp8dR_t_挫|:U69KPZ_9x?jֹECzلQ3m{%ap@!5 Sz@ KۿƗ [$[  ~^6 xA P@ 3s.s`._t4AdLW! ~x~6.A1ń5Q##<%];8B nZ%_kF[Wтz&^qɕ/gsѥO^uٵowŏ'_y+;$p|`g( (xz8tY t^8Htz8($bAިu0 K[IJ*Yzo͉q ijQ9:v8(hP*!`BZBnz:|xe3s.-ĘAzAG xh6JHDŽ| f O@tPB 5PDUtQFuQH#5@K $` @,u,k6v1~` q 2` $G0@ uUuvvVY9 gbg\zu$HGplH "4(H "i ˭tpX ~g BjX.QcڠuZ9J /%yg{gzh6h ~.8 "u8Bqv68eꁧ )&Z~4ItF|njǞ|]G2$ꂾ)4 %Z.h 8 0f1;8@G`(0 #-3S>ʃ!#SS3_b8& Grn 0ұ:EGMuC b`z; $M$` x@&P d`(Wh 97 % @=-XA΁ w xtdoU =B ;a=L#( 5dޭ8a\OV~! d~h1C9F!~cdRU3"FA!M@r8pW:F&+ I.Ч*@#T@:Z0/bO2Љ 'jse/}K`S$f1vaЂxF!SӤf5yMlfSf7b`=7yNtSdg;NxF 3 3g?OT%hAFƝӠ ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWn/mvWlxi^D%)5nrg͍{!4W]j.Ӓ~(`1$U698<8s #@;OF&0@'GTc ڡ%!]7HgͣNc^WEJB\J}U+:\bg`p$0_Q(':t$4@P]at~k8ʦN[}v{P2o- ꓵCv ^Q _iJVcS0pKθv<` u oJ`(co^r08͗M*%gsηM#DoxAɧRA d5aj*AT xo$Lу }@G>H=MYZ= paن1Pٻu\o:(R/h 3N.TJs#s#$ o/S֌!c@*ga.s'k:LӍ=e?;խ8+L!Uo Q"|_ B0ȃg_ iu@HքUJI8+ ,Mp\߭(%1iG4 P.#1(7X8mАph+v!28h0+Ѡ:mvh x  (80 `p'A}AuTd!(GB(Q,$NDsx@~E^D'b%' qfy 8bf_D' zH `p\ ;p(\ /i`G0! 09\A1qS02 I[~z(9xXG OA4 uI"Ȅ+S"p[4,l q$G Cc$Ĉ`F@#Γ# `9l x`t0(zx6bƵ@~Xa1 KP61@t3r?i s0œȃxqt^ L&9 k|m N0́0nHRYDA\Si (/L|xP1`Xpk"c bCuH,AA{Yc 2XL8h!c+J(+$MPM `֤dt ɬ!ǃ0xQuOm]1K u0t vR\$P YBM e U҉sSϹΓу9xutLR%09)tͥTt- 4 7I<\m$, u(Ș7 N z ~؃?B<Մ t<?p$H׉4Qс Hm ;kTA-CMԹASPS8=h@ ,],= "0(PhE 9%0C DT-J1 2 =H-EL>c@@EXRzWa"6R~0ϡӿ8<ɉ_J#t@?@ "S( o-p% ZSH5DH7Qp%ɨ уq\ 4|0/aAwSC]q2J]m;00L] Ҧb`zPA9Y#]WyX:#5[ $= QklR*Qyt#{\]5$ Qz~%A@tKSEum"n6% i8S8tN7AW7KVPU`h-!uPz  Vd'S"2uH gç̒-! ͐ B( WRH"f 9]+ӱ8SQ@m XԄ hֵ 2pa>e7hpI3Au79 W6q!a MSZ`+ `^#V@ཞ|zt7%%~>}qdKha֘s@"#wyuxa P`bbH[fyhj7;;f !E % lLXiI)rb_vy%pц!rd* I*{T~{foM'*< d" ?9!fI`B  ૛10fn ۂ7]ѝ ~(Yv05m(``tf갗7H~pq|hٴ驞4d y.>ٿhI!D؞ 3Vjih+%$͖ Yna' ~Q݄!Ai#Xq?j`7dk;l FVȜ l=A < &@du遈bAauhS2uXbP)AhqifmQ Q̂0xHx#9z `[<P0#,4] 1cm $WX46\s R]CF Gl{nߍ D]YI̜Xs1 >q h{ޘz K18'A#! ".#U`"~p"^y"  u0 -Fdq°+:,!n/q5 v07"#x w09(70Hz3h nE_trbҀ~4'G&h" PatN}Ra~E'PS7 }tXu`'SP &Zߦ|B['TuY/vc/&ui|u`JvmJu)(8vlvmvnvovpwqwr/ws?wtOwu?.b[:+NpwwuC ~_w b a`šC ?Бk<@>6Ȕ*Wlr`t/bJǙ:w”e̟)MT(Ёb(ޛ]q$Sͅ~oȟ .ʌs&m-ܸrҭk.޼z/`.A uj8,٥xaz6^VanaoqA5RY"Kk8?;72BtouЍw`佗_JCb̛YN@!_ٞf,1tbӿ{]v)UA5?1h:Y$|Q}uQ_5BYW>E7]u ?h1@=Cjx#9#=#A 9LS 9mQcL*NPtTG!RL,dNeICT9TqP@'}E .x)B:f=pdS=(=6-$EW/deKFppO.R|r]>>jk  RDFV:!4꡻Tk^KN^iHq-eJ ʐκz-;.k@= 0>#X!ac@0h$ arAZ\N> B<+$H`Nc\SlN;$* P !LA;|H%Rv"+;|Af< n=ԁ9=A1::]PrF] t',%1;.~ L:-FB:vp9\MN?@vLvD$ 7 Ď x">p/9$ԃD#ixJ%׎$1c:{ 2#z R6_ɏ$94[:DX'Xu`dZвt2x&ZHԠ2Y-X3"x`b#>.6a|Pbҏ= 2 p:W)!S&x-s c׏s`s H鶧pcv0O%JYӞV1DdVZ!HG;~DY`~L`1B1)H PG !ZI:0~%Q`n@G7¢-LɪX¤cʳ*( Y@ٔtSs ?Am !.R2@!@?$ЏTc@?Q0&;I B`@'< CԴ&6wɇ GRr#@>"0x 1~hL'!QL1d Lۘ]R!U'a1Hrd-S*(R*FwyBLe2әДK@086Wֲge25F`e/g̳p*:8L>{ S Z{AWVFQB+/ Z&t-;CېRA@H@,WG=J4%5QHbCCE;*WĽO  L_=F6K2g)@r0|0"jai F@P"T .DۣXW]v]8bo>[!F>2,ԭ!EyP7b"tB)uMCzCrԦY:hȎv4Eħ#F[KG@aQ%S*%T.EĂb!x Y.2N f,BODhςާ@F(Miwuuo*_Y&rYvV\2ā"i>X AІECh!)'C$)©C9(\H9x?I.@եÔvƴu2:XB@=|d@ô) 9d > ΈA 2#A$@C D<𦨪@`B /jD3]PGAN*C<ժI\P17ɤ <)PilD.0P>$4c>D]P<֯)] ' (U>$[,_,6x&GCL\32>jj@2<4B$H</*:CЃ9|,>ďd',D&>H:BAX:9D.Na8Qq :uD~y:c Ar( Ԁ9`=@.$BH(qĬ -EF->. DKkHG3Ub˚̮x ?PPڊ:p&{CBm*Ht+ (9Y.֮#-@߱PF9\ (CD?4"yFAd4de߱`ةF%H0FX"JC0@T#BIu:)FA$*@k ʤACzzƵhDM:.`=|/:ppIb?KcB=A!AڟLZ4Y>K @3:`!ecm$׊hnpbdEpTo=\mho,v+ ՜pߓx:4! 7D4&A@P&496mK(c a; p3D<{|%qA$ eaB݇ WčVc :*ߦC DZ0JxR=4$ˋ׌9`B"KD)nx|oyS˱9dK6o37w7F)FpgрPAT<&R+DD+kD+ri8<<•sOqJ@nhF4EF/:&}4HC!?a< >?( pWF3@r10v2A'4H3< 9DŽ?9d 1LRF:,bt [:du,WL'@9rA4ecp 'uCZ@H/]:Jõum酮Ƴ4륃Ls@@ n@4qeO <GX?X:B-C?ԃ&pf/>|Wah M7MC$մl BFV@@YhØhA9  wHj%%*;)&6Μ'[>ĕ{`cMwiW-ωan#ϑ|cj3D@:*A`zzr'(!< cCt)O1tQ"~(AshC c1C|aIB F򁨀ё vp )Ao;3| i)dIJG6CZIa:릚ktJAtd; 6w'9gH {*Â!#ujA @@] t2-Ȃlݖnpr=t]v}x]X4̔]V|H]n#5ޘ=EM>U^[t-sU`*WV6I kud?~ݛsNgg묵ޚ뮽奜nRp#v`a5,[rޛb ?_rmn 7iU) 5sSemuߝ}?_襟ꭿߞ?_sx~U|.e .QG H6k;!.e'! |NR p YBogrK@ĕ@c 0"ju) i*\GיH|S3Cr! @D.r$!CŨ<>1"]tTqW"]rÆ7:<"aHG>L@ dI?u #Љߕ?(^DxJqQҒ\)u&$̘Dr"P:NEV\@D؃:ǂ9bҕ oi\hLYqJT:ٙ._@GoĐG7-0z^+` əg=‚r 1إBAA n>@: ud 8ش͐uzOϏN{99d>PZT8A<~`#hevڭYyKlO˕ԥ6*U՗ԃtQQX^@= Vr)*% H!تCБOf9MqG=!NH` Qx#a.YzLPRJ#n%ق !HG0) F2prk ĤlNzK$쨀r/CΔ90K 9NKRղ %:0pZ .WmvWSiGTƈpGEa 0u!z/js.l3 *D՗MM*|@1/}y5^B#)j~lt` .1GX 9ƛ!xg F؞giI|,5@:xf\T91OAz "hE9]== FZ9!Iuqyjj۠4x&gLH}UFbT5G(L/QuT`'r;g(AJ|L @y$ЏPCG?^uӡu rTKpuDPH %B1!x :Q6"[S QP+8BժNpu< 0(\6`ò߲%5q܎UJ!@A;F@a)ߙ!#S =t#(3c:E \J, (uC8Cc wkŐQCZb0G돠.C GFqN=6t@!''nD2L 07ыA @ԯ/ bWKץ3Xz  $U ^ 9Ȁ݂ E9@>hc .Z$A΁!Thdҡ"Ƞbn D!:ؘMlW,֡@-.0!`i& :A @?PE/?`3L"O PG*$@(p %NpRp B"dI\F%kϺ`@s<9Aorl!v/ !A ;:M* | O 1!A n>CQF,@!j%hB@Ed"c+N!$""rm `!s'! rSL:08j8 ll[@@#A"`+r!!10&*j\0/x 0AbB F3)C٢0D؁mc!ΦM`-RIIT^t,z ^ಬj(2;uX~q+q!A 3%CaA-"FE >s |M_)%NJJ?T"M4\b3RSFn-t, ,a! Z :SBS!`Oq,a >5TM4> NGT$r{9RFU CׁꁔeY֍JAIA1saNP/1?j ~$TC._a_LYjM 21&Hb7c?dCVnnP @E̡b*%Oo[9E LGxbpI"!5"^.[ .2><JE% >2\LPVV64BB ~BFqjf9̡ ` 6eJ F5h !an"Hikscvt[^8NvpN"FsN"cKsCҰ"wr)7F!ij 6w3AС!*wvСZ=0a$Tmm-r@xEV|Ǘ|w?cC" BR($w[%r-`B*ABVBX4gg(%Ip1>` 4':-it΁vekѶҷַB2>'!sN'nD;,HUm F`" +!s6 W *:$ت&*@dV$.D[jC(-w!^pu*v$Ǹx}+.ԁ NnT Y!1x[3K(&nILʡV!Vg'z!4 x~A&8I1gR)m 0x$~).ĵ""ST!-v|1@\OZ ځ aFA2VaJ`ArIzx ʤ<^c#<[WBQP~( cC#4D"b @ʯھ~<7|lB{bUV8gQDB|1T؋؏}xnMGّٙڣ]ڧQOaGExڻۿ=6`~}Ɲy=]ם;+`}y]_ߙ] ^#^'+/3^7;㡧&vbg䑦?_!>H\IG D91铞 I[|c "i2~c^GT*~4'6r{&@f U f~->cŢ'f\?d vރfb_7Gɘ%Ğ! R2Wad$7*˺/>l ʰ-z`ءTL)l.AʂS٥rDuqPl1,@HW !a8A]6 /G(嫇Fz/t^μgtRt@n eRNIeV^eZn9ӎ:Hdtp;8R6`:}*SR,PO9FCb:SO(tC,Q;G+ T<<)cN1b D 밓Ιq$B:H$q9devs知1p@ 袍>d؉)?)*K*]>D$ qOLq_qoq(1J0ԁ pغ h gn QRI:@:ԴN(cN jC1`|bQs+]&3QڇJͣ AĶ0@=՝q37S`RN(m4HaOMtR R =QGs55t=SD 5=z 1>TA&l@=@=[ {gN=~ }OO}_}o=Q!ѠHD=d,ANmKrN;=9G鈡#DM"Fq~5(`%::J'ҷE\ $צIolfI~Js@3e3ّ(j,bbI/ڭd=:єs< a 91!`GCq9=/E/ьjtJRԆ$hŽ $ B&@«p)@=DTJGIh;MΡ ^0UiY z=?ȵr @5oj0GU֜˩QH$X)G0 /JÚD Ў4r\Z"O"E=jRDhw#'6mD |/0<?ԱC$Sv?X5: s֥n^ u *@SimQLݭi-44pLu.5afq'eDsD2/=G;*2+mp !.` !=(G]»)@;,ξ- Rw /1vl=ŽÔϯk?Nr+o<Xr!C(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hhȉ艟(HhȊ(HhE}׋jwHq=8ǘBƌubθ'd "dXh%8ݕ̶+ ~~uΥs hn*7[1Qȑ!XrPo ]~0kc'+Z.I>Gai1,9 A~6Ci/֑MفVkBS+j+6>I^_aXXy[9c1eI#Cԇ·g+E!lq~YIs՗NXsv @P&V!LS$Yci긍!iirLhQuc iXa[r#I_Ôb0LdDL@yV+00ga8X{/P`_@]L [P?`7{qU6y)P QiuYIV62j۩#`b*џ&X\V{ b+PIޡPioP02W9(:%z@N08!: zO "@$ /0$8Р5qrܩ:c:'+a*Šq 0`bg1Qkz  J(CqZ0QsPꪼԩʥ W@'@C#6#:/ :6$!1q # k `rp솗Jq%%F&)[P#7;$!A#q ɠg3Q 4˛0U09ďI1!.QCP Ŗ  ۴SU{O2+O".#CC۰"=+4?+!f갶jtNn\#0$6cl8F9 me3“ N;!) y6ê6J ұI˼⼏7[+{@Dqxr>P+RQg݋˱P {(c{9A^S%:i?#~ "?) .R:Aܨu~9#O&W&vM/|J0AP %PP;3>0E%ϗNXL j_5 NXO#YrSto  ?wIDն%"KL3LۇN PhGC4 `odo /O;ؽW7w-0#QjjR@"'{?LK:dU NʏfKQ$aAQ> CNB ٥:5c 3ǰ@:|*1@B,+&Fc'6qփnIG,]”Isa7H Q 4g =ĊtpEHGĀ!Ó*Ֆ;>ĸ^,xP\… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥM\:Ha8/݇PA6D+p:súfSvkav*H'wW¦4tK᧝6kQ(=!1Rt:!5j!~`0Ϯ-L|.u*gDb(N!+"`); X{ t Pz̑R!Yq1tЁ99:(C 9\Rz tl[ȹ4D9dpQDĮr(k:u$%kN!"#?tP5O ptT`tԙN̂/Yp~,^c2jX6(zvɋc iKX^瀻1y{ e؉tY,~vH>g<0=י# #EpKMzq, Z#"ڨg(<w[4ds!^Sj<1\aE8BЄ'Da U*)tTbG z|0z gH(@?3@eG%v8@=T<ځ+  X0lIG? Џc@>Z{|rZ>0dHp`zGͤ`$( qwu|ФaFb(f/ he1@> $I<\<tBxCCТDu0q]H"$%;JZLѨFs  oN ڱANbVb2((gC|H FZH \Dh7)U)Nqc>?% kz( AG0 d~C xf̹iw=B͉!K!K՜ Uֶmnu[ַ ?N!LFNV@(vsQð etR&RV(6aaZ0b^M QC$b|x;MjGz\ˆAcmJ@2x9\:, (1bBL9GG0,.`쐂l@eİc1qbT:@b=qg] Ո@J"5;P̽Ԍvt]8HN>4̵%luD c0;a~xđ6 e0/6p5qwyE>$GyC4-ye>s7yu5^ GGzҕt7;ӥۗO[Uzֵuw_{{ve?Ѿvo{>ww{w|?xG|x7|%?yW|5yw~4 =?zҗG}UXtJs{k~?|Eҁ~P|L4H.p`?~0+U0omH~w[ E@X! &p@ߨ 4 ^5tAE|iK Лxs(/؁r1Bb` pr Zzx²Boۀ` ۘ D #|pΙ,1ę8TAUt/,SBÚ>V C.sp7QHMN) u)=Ӕ,dG(M5)!(G! 7<S,(0@&b~~zB 臫P]_D P`)@FPFf\zPoyG^E`d98`HFā$Ȃ4ȃdɎQ(UEeFm4eyCy} :ULUX IٛX(HͳI9s>ZUN_ 8(tfugVb#(x >r@ pf(P(r#xz* ) \R(=s(q EΚAqJ$sRtJR,RWt8|#J%juH1$]<Ҫr'WЦ4җSL ֛ٜ0~LPЄ3zT<3Qn{51JQ(Tu7R_ ˜r~9 S#0%.z\*m[Z1/-2[%-{ k𗝕ɥ>R%5jUeuݍו٥ڵ%5EUeu%5EUeu&6FVfv &6FVfvaq0h܌" $ xq'r#RE(.V݇(>+@.t8X(HTxcx9^8 BNQxxx $S/MmXg7/L\=I8v8sR IK9=Ơ< heDZI>ތ\ ':r- =Xx(Ȣ 0#x~m?l杝ÝG8*+WMX煐IR5oV e#QmfVT(-g XXmt(=<|`VhXxK;0 (hu0HNS{q&Փ&M,? ' Of0<xo/GLP|PtTN6hȖ5.kxIn5?wW7`uxXJpV]O sX,@-5 `qnjezT!ц ;q'wtdsDNRZD(PzڀL4z 8’$fDsՀK1x05[d2P& qrltHhhtw/7+j Ou,ei>/y|`;`rE (̲ز !(ƣ ,)S$0~`@vΒДj_" 1>G+쎘Ṫzbvk舀r(+l KM{8^~0{C2KnK|) yz)q4{X=7' *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy3Ξ?-z4ҦONz5֮_-{6ڶoέ{7޾.|8Ə#O|9ΟC.}:֯;%~8)YLxWԃ?pÁ{rءt N|@AQE9o!A'D;'J:OE)H#OspP.3td89$S:#YQ.Eі uҒBTwUdx$9bsYgp 3N?0)G#s;E JF>* QMqfASHjjAGVDKzdkBA*@Gڝ3jB93Pcm[P u04"0a*EJn:  P:NܥSM+|6įNZTϩ[#/ EܫJߦı@?Ny<J+2h3@ >_sItsi !{ҷQuO"tE%'AaԿ9DV_ R iERSMqC6}{4.^):H9`0>3B=l~n8'>`O=hm@=Q +:LE y:SXPP:LN">ys@#cx1>tnC<M|F$@Fo(nQ:88ouH0t%|8rbԯB]xXTC7ugzѿ~ A ;dL"@:$dns#p=x(lɣnȐ%vͣ^A :Ч>p. r{9Ge~XO Pl"y^hTc@(B>q54:r S: p@`+>0;:8D{p.~q291 M C|VGInbeW Hgc"0ArB!zH` PС-SG?N#Q1葝t"!(ȰuIdJ=^ )-Ӟ'AP(uhcsj6D lG=0:xuvTyeXE4CK쁭G9P@ g0u0 @@@J0bѝ `ZzG @!ǣ!Օ5><+~@ 3asAqJGB9 x 0G0<NCCubP"g1Z +4qLO;`~pfT:rbY.떻,24X3ȏ6yӁiM (k~`!o4M ӟvI}lZ$cs.sB`U9#88h Uscu g-~qgLDtP(ٜc@>~.WiY,l+E,ډNzl^G1}v1p\:`&_H4- q1<5Gh Z}UIku(q@=L@"#_9>$_`$ t_7,y 0 APn;\@Ay#$n $@-L m_Aw G-7-? PsIku!9NA)I@HC;Dϑ,M@LvL p% 9A@Bĝ Dё $5,YRLV?lNd_/ ۥ5ԃ"tԚ5RBL]᳥L8mC4AyN')CH<DLJTD<A@DU:Nd >@)!͡\"DL.Ƭ9((NYP]& _Ld2V )&ص≟&4L$:&_(q f'M#W m2c@9[¥@ALӣ%ʱAbe@`d5湩qNr&:g*0f=&(Co."TC `CVhd$g $ՃR.(R^O=ਈ~d drhD,\C&. (Bh=Ct?ǘDta9m@PD?( rC=.wf:9@|<4&@YRjAJ;+ '(`qvg{D[ g¥v:D vCd%!)Ϭi;IQڑ~)i"|m4m>)A_%D<#jP`ک@:`N=(&HCCAf̪CꩵiDp DCA>R:ތ)EAT2 ]#:iNx+zh뼂8ΜbP=` )6Gvg k#@90P=@&DԟJ7ܞĘ@;8"N:ĕ pGpC%páhe 0l?ll~9 l =j;56IC,9dCA$dEA$!f) >ChhjrJm@DD  T"+ALm5j7d%~̚ T q%CZ:$] ~C.$୘$Cd <H/BD\8S>AY.@?K2VHA?W2D88/<C P9sO1@W*>²@hH<f6 YBf!m9D@ `hI9 pGo%U$L0)qhoƌa@ ^b?@,@1/#ד*a PPI@\@A;l@!3(pCï'OT?oB *+1Kyl%$8pp(0DYxqHLr{{k[ 2*2<:t=&$CCƣM ' Oy :\@v;o2C2/| Go>C>s?sAhL$oFkt*@ HHDaP W=l:D@:C VǤ SGA>$.G`OV \\oB :p@ $& ]DtC ݚ4\@ 90R>ԍ-| >BFHlV.<5A\S HQ'"l !rn(*1:8)>$9PA`_rB0?& 140ǰU;S.9T5n/9%sJYHf¦œ^ NaA:t@H23u@`c 3ləHujPDvww:PŶ ;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c|ks|{dz$;6'C +ȻüEIH_DjvxK|T_;#пėLJ@/ 4+LМpcoYcCMHz=\AHR#)鈜+}O;I1ۗHj:pHH1 i@BVM;>I \=hU]U,k,M 1ۥɘ݋~۫@\K E D$\$y I9X(iN׍]t lN3{qTɋ޼D$CA0A𐫼 "-إ)1@ D @|X7TaC!F8bE1fԸcGA9dI'QTeK/aƔ9fM7*Hg t֝+:|#t ] mpsň^W@Х-\o_GL…tZ=׉u.nU[ҵW7z#$[su_BSҁI!@ .ݑ`s avG>zuױg׾{w\:|s0JvPOA(ҩCA%Pǀz> siKvRuJ^"#vYOI`R J26PG\1SS.<{z,6kt;N6H@Jsj8+LS5l7S9鴉5` u u uDg(k9@ "xLv.x!v U!! TWa : \B੩LG6 (~ hKzf\_2%.,lJ@hGe +bMWumwWyMUE:-'r(y|2Au*mq>Lc*ޑI zjDn<ڊaT ;Il,JkHJ*䫱Z뭹,π+Z*v+ `A`̏t u~E: NȻf[5 <xN"IFCFgـ}iFGb\/ONy~Uh񃅂/ܴuޮs7rϱ,1ꤠ>0GR)A?tiGL`@F7JVrQf]nw ąrO1R%u{_ΗMF^`6LT7 v!a Okbp1a oAb%6Qb-vacϘ5qcڹ~cWO򑑜d%+D"D! f1*0Ha 2pm%Z~pr:BƤ*QLaSG:eN*Y@1 SAjQ:# "qtt C ttUC9AgX'A&9Fr3zN{s :Wpu%lqc;*JKv̭ >t-`ƢCo3Z"P)7_"RɆ@H6S9G 18);AM49@9JEmzv0Zd vL-HyQ2SD^v;"Q@;\q:40zCRW]zۅ&>i$Uߍ.qBhJSt)+KYì-Q$9ӰRaȲB% ^cG@:9v``1$9M4xoPaCW|<$S2M4Wqa`Ot\zPA b0?$BI1OR{ M!D5~K!1ٺ}I HA @UdGFg"J`-0!LD@DZ"EZ^oI3z!ީ `b~O b" Vc.3O֡dP` 6&.[HTB *bԣ-r(0Q8I!f! U"PReU$/.H>"?||EP>r`,`(Ȱ&`S aDq0sDIDb!GZ-1 *!p5Eަ!=BS*//*SCB\ >r&Dxkra.dJ'2Ela:t"(1`IlfDtO4&6!;ݲa>aL" '=e2 2(* i@ &h8r+ $*e0 vAAdΓKLׁFA 62 5l D0AY5ZuZZZ5[u[[[5\u\ɵ\\5]u]ٵ]]5^u^^^5_u_Ut( _ `@_+b% a)B.#bT2bj`5vcyl% o!rpFSa`8`" B&R0e9g}VL Rm%R"x~ Z '% #g", u~k6-[`4%!`5FojM#֫>7"k<b;UkoGdآ {N!D"f<(#`'W "(PҐpA7tAl@!@\ -`F@Yl\\z 2 #,c A3QTLc(f n)~ðĂ3-op2ab 4A3 >B .!OAj@g@N1Jt7L,tٲv2h0 K*p(Ȁv$r$⡫hg@ЁS!9"@vA"dBzD`CڮR4#o<,Ns}ӡAځS "*8X bydbZ( +-Sg[͘m`#V2a_>@9x S $@Y4S<TDc"0f?yL~bmRQp!Tex&#l*Ўpg!( K׊EyK J0*$)xAmCxVPZA68Me*E74b4`\G!v`YgQL &㙻%bV$>yʴ!0Rh_M6 C\*dÌ UZ1#m1x{A@4 o%Nj I*22}&Ӡb$r"]9%S7Jrg r Jhx:4#!q%!*"|}ԧاzzgvْ/o]q ^&r׳ <$<+@ ca: 8(1!28lpQ?H嗛$k/S! L" `mذ֑?$5 "h b xa8q;",Kс+ "WSag+ `hk*F=8 /Ȣ=;fgB>ŀ>%:ƒA IH!ڢT!b)}&V@Š#7 Evہ &$E }ъx [Xx%1bxF*-V=Q$3~t H-,*ʢf2X\G lF"K*KO\2Yp:Rjaf˅9P]afQ5|S5a2`#;](R;Ć IE\C d44UV&jV%/{B3"3FBQ=Uݽ@@uVa=VSmq=u}y}ׁ=؅}؉؍ؑ=ٕ}ٙٝ١=Ⱦ2`Vڱ=E V&,#lSbNbpOcݝWZvmfkgG%,.]АV% M!Pfu6ٛ׀MG6GkiuDT #2Q>SO%[%z"]Wn/{m1voU>賽qk_3|"V.ךKsS>8nNy)yz8"&LȗtFY>X8yǞ^z"-/R)L!|3}}!ua^75ؗmoSVfP|XQ=5.@ D߄U8AP!$G`86Moŷ^QoۈXuU7y}%3/0X- L>9bk  "fm͟O uWº($\G<ֱkwIċ tE$uD qt-#Ŵ``@ JѣH*]ʴӧPjLG# "[Ha( @DKٳhӪ]˶۷pʝKݻx˷߿  Ƙz^Țއu (B=Aq: @d]lLdحn3t6.yQAY9@ᘦQGTͺetËQy["@7"Q|OϿ(A 3P΄E*)#_Dt҄Kb(xQ=1O/QE:ԣH'fN>LЃQ1+փ9$hvFEQp9vlp)tix2嚔-%F/pZ9c.Pd|hSfD]?%g:`$ :.#FI\eO;`Eii ?PRR1<3 `\zv+-;閘r+_cwEAVȻb;\t<&sDjP9B:j%EԣbDs?hD<, fXڒ`TIdeN;ڶ@-Dm ϶NڎzWO;$A:EMG).Fd4@h e?dhgX1 A:E,ad1=Y50vL\NHG^ C989#)褗n騧HD.c=`!:P{?dhO  G>p3n{;>|DL2gD4:ޔS#FZ?H@H(7`b##c#2J@=9H9^, GHpMfȭ6CBXߔ6*2 (@ءx]QRX. 1BC%P'u8 4 ؏M4W~t|KG: H:a 3QMH@C($` F:򑐌$'IJZ# h.Nz (GIRE)WV򕰌,g9s̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:ru@>z&zPhZ,K@~H5б)P !Q,ͨF7jJaT`iaCQZl"tlHʔ\#rŏP|c1ECHGcf8TJժ}uET=I@؈<(Gbb#Q>t5.yR H:ӈd?8 D!X*۔ʀ.PsOPd;sdnwI# P0;"Z%ڀ2!PDv4`}K`b*Z1#Mzס yÇU,֮[@^]An"~G^ $z}G1D%[A:P_/F,8+Q2m@I^P`v#Ip`0-hs`BP>π. lR Ք0 .]]1rfa5zHWwס m@3E8;n@?6x# H PGkB= Ў.F(>xO41F MDPG=ȐÛtCښ.rGk:+Er u:<,^/Q$?L)s:Fach:!fmw ?ϸ[A nPD@Ɋb܋t G9Ґ"Jxu!HvE5R7fMLjÃ*w7t(M>taa@ѯ(l'OyUVJDr1!C%b2'ObPN*ùJ+s|%,ϼ7h\PG1򡝖D ʵ΢#t&8GѬˏG81PW+ȳ01t,렜b,v sԃ#&V1)wGb8LFfZj8`l 6G4t2$ #]o(Q&p6 xxԅrDs(bP@b-$UP(,+Rw75sQ|T|1YJ3%j@memSe#((UYmoPr`+0W(}H\Y2-2z8X4hc ?b `i@6` 1c_ hT/EO1"2` G.D,;x:1h1'2.R+%/t,-3?3ؔNϤ1%-s1~Hh$|wprڡop_"i|Aw"@x,g T"lSSFa|c7#1!#73v-Qp#87J92195 yIJZ1vUVG>76`c><5z}Pyn vV?8j I<c QAsQlV = `;.՗z?7!"0PM)U%s;0 ٜ# !CBQjb@pxuR@=C1q@a4hAX[2@#p/YFzԅ2Iv6S0(=@܆q4! `Cao[C!^PD!6I!<>|r (A9 DCB(1!i E"EcRE7m0imDcO}1Q3$iCD;qGx 0D`HCoʺ̺yJڬxpZzwGj^Wz蚮J d:Zzگ;[{ D UP["aQ۱@` 1S%%WT2;Gz3xa`neQ4{JD[IFPbqIttR{X+]K8Ԙ@}`[f{q215Uo~i\P bngr6Fffg mfqvw}yg[kU#!JkF=%$ C w0@pArRp p Eq殶;{N W#XrQGx'ЙA1 ' ["y֫wZ^; b0 ci7ۑ>z(@ HQ1\"`r99%=k2rH</gO1hma2&#&2<ĔA8<,!,8B-hl..Zc18yŀU39@:TǢ<ʓoI+v@G jV7@7 ,VqAҒsD@?3d`YUܮX1aA?AɁ|H5@,#CWj'O*U u@-Rjf)Gv!3HH ЯSyI+}ѬD 9uJ"=ғ%1#$\@. /1 * 8:<>@B=D]F}HJmoP G XP\|1-s`bIxPEH# Rv}Nmk !w%!ͲDs1!Ӥn[|FA7GT@Re6g`bgN0@qּeװFX# zI|W3[^=+jpvhTxAXN`c`8?> !6tu}p&<<\e}O[mTA[Huj0lN@QCccP`.,%N}᲍ 3 FN P^Eb;E PftOԉuΨN|3~(A[Ca_6u@z}q2}k$1Ց9yKԈTQc6 !l@b(u@--ܜF.CX7Bq;@P8S))/|bp1"X!_ yE&4L?ɰg6@_.d.]%NXE5nG S0?2YϏ9ҥ<0`9t0םС͜!%ZQI.eSQNZUYnWaŎ]_vg8'\Q:Hǡ!zZ)W t(s/"` 7O@tP"JpЁ'QRt&m("i!Nǭ PԨ-y,N3Fq$s((ꩇu |:Gv@(~07Nۉ,xթT".PB](Gc9t$X7Y@ |^U ~^G]Vxava#x̲" ꁧuG H)Y)  F1 |B o#cDӁ(| t|gٙ!ʼ Lt'~i 5지ჟ `kt (@ڠ̅h~`a#q\R( \?$ l ?0b~zF.!C|%0FsHvs}w{wT3Gխ|G! KGu,>D^2$`ox5&H80 H[9J7KY lup 'Z0[ E臑.!Й@"P2a!a 5PSbxE,fQ[,J[HLQ=cbF8QscxǥP jeā=`LCy"(<&Rdd#HHFRZ _0XS8IPR$e)MyJT x!@He-myK\Re/}K`S$f1yLd&Sdf3LhFSӤf5yMlfSf7MpSx$FbxM#ENxS8)G^g@ǏAZX=PFTmqЂ`O 4Gr#Iˇ2le8FG07T1ęT;N-|ls,ԸX{!ѐ>Oڈ  }C@gy[%kYzVj`}f6ƩyHFLQCФV<Ŋ-A=X&V%;PZ!aEWV#y;C22v?@:FѦVe-պ!AۚC (:~E 6@KQ BQp$s sd= @]5b!LDС\ a I؅o}{_Nlu_:a`t,XH qQ¬^ ׅJʮC݌U( DxMC]%#/BH Hz[("N7;-q|d$Idt\I :`,Da `@, P7x”4Ēu|mC: p-aTGe$8LZV"0@ 䮈/C?C@ D;CA,DC
b$Nb%f]b'~b(h(b-bv0Аȅ1.b̩0c2b8=!ѫ1]x 6 >cDNdƒ>Yz5()JbsrbEeQ~#HZUFV,-\ɇXf:WQe_s* Yʿh}P-@{5Kcd>effgB.!# y<I|Ij jf7Vv80w!g~ʀcufgQ$Q{n_hB*قQxP( \ hiuikl1XQ :C,GXyYKz{uKdpiLu̺(\ $ptH9ٔYY] xt0u`Zruvxj ,XtXa/i V38,~x (m/SpbQw.#Jzz[ӝ@>c ޼9j][ Hv0 x[Q"pIxܱ !W#fπxmHM2١EȝvXT5f6Xwb e q^X3*X>捲_2񛀳(/u\Sxfn*_ι _7P8| } sF}z?:r_}/#ІC֯}6䋣SϿ}~z}7B~~_~o~~~~~~~7ay7 PvY <)O%v0ߛ+ڿBLZ|(~_{u,h „ 2l!ĈS7DQ=xq" :~,iRaȑ'Wᅪ-XҬi&NJC/Mr,x^:~8l)ԨRRj*֬Zr+ذbǒ% Fu]: KgnsJ5_Ks됓@,qxvA| S ܷ D BE(xbLAs.ùtH O/ՏVU : J8!Zx!jxPhD..^‰8oH@pIQ ŸC2\7HBd$ C'xG0Q#'h@GRe\O,҃YҖt k09T<0V[ƕ4 ;0'eCvcB|%D: D݌^:aF4qubL\!X:p`t?<p(@h ȫ @Sҕ.})L2 "em`FA5qtT 08wjQ}"0j:'<̆0F1;T BFUU`JA 85F<xK/A09 H RY=B 5(Ym x@xCFIG$QmL쁰zV G9pځE炋j1_I8 B; ېhh Mzkup]P6(%:=1ς \_/X3`aqb=@zHGF [z5M`85,)DhAMX`2FB_R15@8P3ƴV2-s%Ë9Ӿ|.%  v!݌0@c yc⪛, oF>xQA0&039c]AE0fP@| (Op L?ERi.C6(b}&[fA9ڒ,p:> f jD{ .? EE#\pE-uy~u! D dxa6؅ܹP Q[q' $R#/\A`rx="BP<:@HwALQ3$9st`2Zs^:fftF,?rn 𑎴i%3ѩ^U nfI3\0uH ~O#XG_J D"T\ ؁v xE< e_r5\8@;!CAh.qY#€7D4 :s]n4k'x /T:d_Iy[į@`1ҿ3AThC<@?4@? ȃ@QuDM91ApINDMP@^PmDƦBHEEϳ >\B$BA?DB  5>!FNaI|Ӭ :ܘK9PdB ; >@:!C|aar@(M=EyCda-̱d9DF9 \U9DHd_^jmZ:4b$gʨGAE AĮ ,֢t:ԅ'DP c.1^Bt@EάQX -f mL ?ԃ"tU Dc?<"iX"Rd&fI=.DhBtGsNQ`CD`٭T䱡8~$HH$I6LEB]B@@1ݝtΜNC&t[>䭡Z_XFC8dZ@4EDAIɭ ]alV#AF<j i8R(I_(Z騃P$9^@HDX6:Q &A1&5HEXD\g$&S$@>$99pSC'ɘ29"~D`?*L@٬C!_ 9C9¾$zz'{'D^AhG񝧬!A\(ƺ9,:fBtȘPDbp: ]{]?dTQ ?X:h^ :ÀU@:ЃÀ|D I&CPҨ qy!Es `:+,TlտdDAx'<NJD#/F đ^]'BE9\C)j'?IB [X  1h^XX]B|F.hhAT| }D#cl{**2Dy̜CmA@dFDpm$:X@d4&)&._] tStle:@Glf4M:@ Ř*jުC@,u :eLFø^ TD(M$.OUf=J2Ce1@<t.訧 TZK?dLpl9K@tZ,:@t,2B L  J#ʮ( I !c)QBRG˾Vi[LDAY:/I?|ԣAmAM.S_P.&!A—I:؃BHZ=PҐ^>l?('JVOhJDB@m̃}?@K;`_M]0 =^.Vf.9D䃻t # <6C$F2CR"HEhCn>H(@bY(}2~/Bi@M{6l`@EGMo]×L%VG=xIגD 8OdfmxϗT@p՝Ò1:Q:8@D] Dqt.;A0$:;Ԫ:Hh]Iu/k̚@ -AB@Cj_ ?0+p @gA:(B22C >XdD B8c"ACEŏl%9zdtqt'2Cqm]tm c>@X&E?&hs(/OF9̈R 9mBL@\\ íC9OJ8G\Q R>'/>7?>GO>W_>go>w>臾>闾>ꧾ>뷾>Ǿ>׾>>>??'/?7??GO?W_?go?w?????ǿ?׿??: 4xaB 6tbD)VxcF9vdH#I4yeJ+YtfL3iִygN;yhPC5ziRK6ujTSVzkV[vlXcɖ5{mZkٶun\sֵ{o^{p` 6|qbŋ7vrdɓ)W|sf͛9wthѣI6}ujիYvvlٳi׶}wnݻyxpÉ7~yr˙7wztөW~{v۹w|xɗ7}zٷw~|׷~ <\|% - 5ܐ=EM<U\]|emuܑ} "<$\&|(*,ܒ.02<4\6|8圓:<ܓ>@B =D]F}H%J-L5ݔN=PERM=TU]V]}XeZm\uݕ^}`b=d]f}hjlݖnpr=t]v}x块z|ݗ~ >^~%-5ޘ=EM>U^]~emuޙ}蠅袍>餕^~ꨥꪭ묵ޚ뮽>^~垛ޛ ?_%-5ߜ=EM?U_]emuߝ}?_襟ꭿߞ?_域ߟ X@ T@>)XA -^9A~!IXB)T YB1 i贀! ,fBBD^^\664jjl&&$ nnlVVT..,224ZZ\JJL**,::>@86(x$0tfİʔx\d\t`p@t ԺNf<<4bxtp||PP`0@0.l xXPX (6L*$LH@h~zfhbh|p|blh`ZTT@lĮvVlԴ `8:P`Z4`rrt¼FFDƼrr| vv|ĞFF#ԃ: tR.예Q\A.cQ4hЍ Q>O= N@?S F)TV Y@;3(O)N Ih&QlIGqvdPB=lO,`堄jj_wPP@E#iF焘A22dCֳ,iIp:*B6Īz&sF:b+[9ԓ:@ >6&HFAHn[SdaR% -ښAC:`,A>Αh Bx;8K~N𠷪lN;|PH@Zl頳uβ,@ @9H,>,2F XH6khO==C`X S@B)=sںM< @BC:F#]MhE@Iу2. PΈ<D>/r #h"tN03vAN9}<;G@3\ 7TPOl{H>:b  h?? C= |p%!~LR#tB 6  |C7O7 +1AzP  {$uhG2өT,CH0]@[ȷ zG#APG:p#=q | $ x "J>1IHA?aS rAIt@ 3 xZb @]=t.PRˈ8 % Wi ΪTHGMqӜhTS] 0:*rCjԙdũ0ZA@!}*Wdtjψ 耇Mmfn C )Qd)ML$<zO SE,EPPTU>7 wŪ@$˂0׹ `+ J[K$ЎVQ +C]yYdX@Z\ YTۀ\D~=-/tY1LBJPסulQ0uL-hG~`÷gLc9>' 96[£&Bt8"/юbYtY.X`|h`1OeYT)z\Y PȒ"⡎ҏGkϭ,OL=%ҥkbfC<%CAnI01A|ni>ǚ%`M;@·Y D0lHnkLb6H1+ (@*/1G{PAD8NԸ*H? v NTI(,yD*t YHN]9ɵ瀙)kƵNR6oynnt U^ @.̚lˏ'D O$J: @ЇsJF%<st ӨK'G{A4@k*NcS{_┓]] x?t<|i`SHxY:$`JvpIDO}0phL\3`Fu `CUCyH~O`@aRTP=/=g ~sqUc` W\5#/( fqH0|=G& y&<%ЀAd!RbP PrS*vEYP=PDp b}FgP @ q$'\`}7tXv @B7$3-@PQ_lB=%qaw6p$PpaP|MPqb @z!C"3ME$br4`pa09#,}#qRd56`b%WDld7a+`%CbS0`*PO !PS w A{?Jw m-qɐّNGP=`)a(Ph* 294YdJmlɽdW&p;}a;TE#@Q@ ef@r5u>Z$]ק)$ ?` $z`g0x% |%309`CDg՝u#5 }a%L l쀚qA4ce$,KA1ǯ,zY{-QXN0W5/`=d*0mtjs$Qbp@lH5үJ p3LI&mky? 0hNK/B'4l"@Ji>4lVz}|9pU[9ᚡD3T 83#l< e:zHI"@v~]z#ֳZmWz2:0SDЬeQ$B. d'5Z|p9,UVL#Rz5A%Ej* UpJdPbRV*b:^h*bP6mf@]$7~pE8+P`0=e&<eA~WUWAq@CEu| JWۢW ~ /@~//һR45!`iLp8dR_t_挫|:U69KPZ_9x?jֹECzلQ3m{%ap@!5 Sz@ KۿƗ [$[  ~^6 xA P@ 3s.s`._t4AdLW! ~x~6.A1ń5Q##<%];8B nZ%_kF[Wтz&^qɕ/gsѥO^uٵowŏ'_y+;$p|`g( (xz8tY t^8Htz8($bAިu0 K[IJ*Yzo͉q ijQ9:v8(hP*!`BZBnz:|xe3s.-ĘAzAG xh6JHDŽ| f O@tPB 5PDUtQFuQH#5@K $` @,u,k6v1~` q 2` $G0@ uUuvvVY9 gbg\zu$HGplH "4(H "i ˭tpX ~g BjX.QcڠuZ9J /%yg{gzh6h ~.8 "u8Bqv68eꁧ )&Z~4ItF|njǞ|]G2$ꂾ)4 %Z.h 8 0f1;8@G`(0 #-3S>ʃ!#SS3_b8& Grn 0ұ:EGMuC b`z; $M$` x@&P d`(Wh 97 % @=-XA΁ w xtdoU =B ;a=L#( 5dޭ8a\OV~! d~h1C9F!~cdRU3"FA!M@r8pW:F&+ I.Ч*@#T@:Z0/bO2Љ 'jse/}K`S$f1vaЂxF!SӤf5yMlfSf7b`=7yNtSdg;NxF 3 3g?OT%hAFƝӠ ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWn/mvWlxi^D%)5nrg͍{!4W]j.Ӓ~(`1$U698<8s #@;OF&0@'GTc ڡ%!]7HgͣNc^WEJB\J}U+:\bg`p$0_Q(':t$4@P]at~k8ʦN[}v{P2o- ꓵCv ^Q _iJVcS0pKθv<` u oJ`(co^r08͗M*%gsηM#DoxAɧRA d5aj*AT xo$Lу }@G>H=MYZ= paن1Pٻu\o:(R/h 3N.TJs#s#$ o/S֌!c@*ga.s'k:LӍ=e?;խ8+L!Uo Q"|_ B0ȃg_ iu@HքUJI8+ ,Mp\߭(%1iG4 P.#1(7X8mАph+v!28h0+Ѡ:mvh x  (80 `p'A}AuTd!(GB(Q,$NDsx@~E^D'b%' qfy 8bf_D' zH `p\ ;p(\ /i`G0! 09\A1qS02 I[~z(9xXG OA4 uI"Ȅ+S"p[4,l q$G Cc$Ĉ`F@#Γ# `9l x`t0(zx6bƵ@~Xa1 KP61@t3r?i s0œȃxqt^ L&9 k|m N0́0nHRYDA\Si (/L|xP1`Xpk"c bCuH,AA{Yc 2XL8h!c+J(+$MPM `֤dt ɬ!ǃ0xQuOm]1K u0t vR\$P YBM e U҉sSϹΓу9xutLR%09)tͥTt- 4 7I<\m$, u(Ș7 N z ~؃?B<Մ t<?p$H׉4Qс Hm ;kTA-CMԹASPS8=h@ ,],= "0(PhE 9%0C DT-J1 2 =H-EL>c@@EXRzWa"6R~0ϡӿ8<ɉ_J#t@?@ "S( o-p% ZSH5DH7Qp%ɨ уq\ 4|0/aAwSC]q2J]m;00L] Ҧb`zPA9Y#]WyX:#5[ $= QklR*Qyt#{\]5$ Qz~%A@tKSEum"n6% i8S8tN7AW7KVPU`h-!uPz  Vd'S"2uH gç̒-! ͐ B( WRH"f 9]+ӱ8SQ@m XԄ hֵ 2pa>e7hpI3Au79 W6q!a MSZ`+ `^#V@ཞ|zt7%%~>}qdKha֘s@"#wyuxa P`bbH[fyhj7;;f !E % lLXiI)rb_vy%pц!rd* I*{T~{foM'*< d" ?9!fI`B  ૛10fn ۂ7]ѝ ~(Yv05m(``tf갗7H~pq|hٴ驞4d y.>ٿhI!D؞ 3Vjih+%$͖ Yna' ~Q݄!Ai#Xq?j`7dk;l FVȜ l=A < &@du遈bAauhS2uXbP)AhqifmQ Q̂0xHx#9z `[<P0#,4] 1cm $WX46\s R]CF Gl{nߍ D]YI̜Xs1 >q h{ޘz K18'A#! ".#U`"~p"^y"  u0 -Fdq°+:,!n/q5 v07"#x w09(70Hz3h nE_trbҀ~4'G&h" PatN}Ra~E'PS7 }tXu`'SP &Zߦ|B['TuY/vc/&ui|u`JvmJu)(8vlvmvnvovpwqwr/ws?wtOwu?.b[:+NpwwuC ~_w b a`šC ?Бk<@>6Ȕ*Wlr`t/bJǙ:w”e̟)MT(Ёb(ޛ]q$Sͅ~oȟ .ʌs&m-ܸrҭk.޼z/`.A uj8,٥xaz6^VanaoqA5RY"Kk8?;72BtouЍw`佗_JCb̛YN@!_ٞf,1tbӿ{]v)UA5?1h:Y$|Q}uQ_5BYW>E7]u ?h1@=Cjx#9#=#A 9LS 9mQcL*NPtTG!RL,dNeICT9TqP@'}E .x)B:f=pdS=(=6-$EW/deKFppO.R|r]>>jk  RDFV:!4꡻Tk^KN^iHq-eJ ʐκz-;.k@= 0>#X!ac@0h$ arAZ\N> B<+$H`Nc\SlN;$* P !LA;|H%Rv"+;|Af< n=ԁ9=A1::]PrF] t',%1;.~ L:-FB:vp9\MN?@vLvD$ 7 Ď x">p/9$ԃD#ixJ%׎$1c:{ 2#z R6_ɏ$94[:DX'Xu`dZвt2x&ZHԠ2Y-X3"x`b#>.6a|Pbҏ= 2 p:W)!S&x-s c׏s`s H鶧pcv0O%JYӞV1DdVZ!HG;~DY`~L`1B1)H PG !ZI:0~%Q`n@G7¢-LɪX¤cʳ*( Y@ٔtSs ?Am !.R2@!@?$ЏTc@?Q0&;I B`@'< CԴ&6wɇ GRr#@>"0x 1~hL'!QL1d Lۘ]R!U'a1Hrd-S*(R*FwyBLe2әДK@086Wֲge25F`e/g̳p*:8L>{ S Z{AWVFQB+/ Z&t-;CېRA@H@,WG=J4%5QHbCCE;*WĽO  L_=F6K2g)@r0|0"jai F@P"T .DۣXW]v]8bo>[!F>2,ԭ!EyP7b"tB)uMCzCrԦY:hȎv4Eħ#F[KG@aQ%S*%T.EĂb!x Y.2N f,BODhςާ@F(Miwuuo*_Y&rYvV\2ā"i>X AІECh!)'C$)©C9(\H9x?I.@եÔvƴu2:XB@=|d@ô) 9d > ΈA 2#A$@C D<𦨪@`B /jD3]PGAN*C<ժI\P17ɤ <)PilD.0P>$4c>D]P<֯)] ' (U>$[,_,6x&GCL\32>jj@2<4B$H</*:CЃ9|,>ďd',D&>H:BAX:9D.Na8Qq :uD~y:c Ar( Ԁ9`=@.$BH(qĬ -EF->. DKkHG3Ub˚̮x ?PPڊ:p&{CBm*Ht+ (9Y.֮#-@߱PF9\ (CD?4"yFAd4de߱`ةF%H0FX"JC0@T#BIu:)FA$*@k ʤACzzƵhDM:.`=|/:ppIb?KcB=A!AڟLZ4Y>K @3:`!ecm$׊hnpbdEpTo=\mho,v+ ՜pߓx:4! 7D4&A@P&496mK(c a; p3D<{|%qA$ eaB݇ WčVc :*ߦC DZ0JxR=4$ˋ׌9`B"KD)nx|oyS˱9dK6o37w7F)FpgрPAT<&R+DD+kD+ri8<<•sOqJ@nhF4EF/:&}4HC!?a< >?( pWF3@r10v2A'4H3< 9DŽ?9d 1LRF:,bt [:du,WL'@9rA4ecp 'uCZ@H/]:Jõum酮Ƴ4륃Ls@@ n@4qeO <GX?X:B-C?ԃ&pf/>|Wah M7MC$մl BFV@@YhØhA9  wHj%%*;)&6Μ'[>ĕ{`cMwiW-ωan#ϑ|cj3D@:*A`zzr'(!< cCt)O1tQ"~(AshC c1C|aIB F򁨀ё vp )Ao;3| i)dIJG6CZIa:릚ktJAtd; 6w'9gH {*Â!#ujA @@] t2-Ȃlݖnpr=t]v}x]X4̔]V|H]n#5ޘ=EM>U^[t-sU`*WV6I kud?~ݛsNgg묵ޚ뮽奜nRp#v`a5,[rޛb ?_rmn 7iU) 5sSemuߝ}?_襟ꭿߞ?_sx~U|.e .QG H6k;!.e'! |NR p YBogrK@ĕ@c 0"ju) i*\GיH|S3Cr! @D.r$!CŨ<>1"]tTqW"]rÆ7:<"aHG>L@ dI?u #Љߕ?(^DxJqQҒ\)u&$̘Dr"P:NEV\@D؃:ǂ9bҕ oi\hLYqJT:ٙ._@GoĐG7-0z^+` əg=‚r 1إBAA n>@: ud 8ش͐uzOϏN{99d>PZT8A<~`#hevڭYyKlO˕ԥ6*U՗ԃtQQX^@= Vr)*% H!تCБOf9MqG=!NH` Qx#a.YzLPRJ#n%ق !HG0) F2prk ĤlNzK$쨀r/CΔ90K 9NKRղ %:0pZ .WmvWSiGTƈpGEa 0u!z/js.l3 *D՗MM*|@1/}y5^B#)j~lt` .1GX 9ƛ!xg F؞giI|,5@:xf\T91OAz "hE9]== FZ9!Iuqyjj۠4x&gLH}UFbT5G(L/QuT`'r;g(AJ|L @y$ЏPCG?^uӡu rTKpuDPH %B1!x :Q6"[S QP+8BժNpu< 0(\6`ò߲%5q܎UJ!@A;F@a)ߙ!#S =t#(3c:E \J, (uC8Cc wkŐQCZb0G돠.C GFqN=6t@!''nD2L 07ыA @ԯ/ bWKץ3Xz  $U ^ 9Ȁ݂ E9@>hc .Z$A΁!Thdҡ"Ƞbn D!:ؘMlW,֡@-.0!`i& :A @?PE/?`3L"O PG*$@(p %NpRp B"dI\F%kϺ`@s<9Aorl!v/ !A ;:M* | O 1!A n>CQF,@!j%hB@Ed"c+N!$""rm `!s'! rSL:08j8 ll[@@#A"`+r!!10&*j\0/x 0AbB F3)C٢0D؁mc!ΦM`-RIIT^t,z ^ಬj(2;uX~q+q!A 3%CaA-"FE >s |M_)%NJJ?T"M4\b3RSFn-t, ,a! Z :SBS!`Oq,a >5TM4> NGT$r{9RFU CׁꁔeY֍JAIA1saNP/1?j ~$TC._a_LYjM 21&Hb7c?dCVnnP @E̡b*%Oo[9E LGxbpI"!5"^.[ .2><JE% >2\LPVV64BB ~BFqjf9̡ ` 6eJ F5h !an"Hikscvt[^8NvpN"FsN"cKsCҰ"wr)7F!ij 6w3AС!*wvСZ=0a$Tmm-r@xEV|Ǘ|w?cC" BR($w[%r-`B*ABVBX4gg(%Ip1>` 4':-it΁vekѶҷַB2>'!sN'nD;,HUm F`" +!s6 W *:$ت&*@dV$.D[jC(-w!^pu*v$Ǹx}+.ԁ NnT Y!1x[3K(&nILʡV!Vg'z!4 x~A&8I1gR)m 0x$~).ĵ""ST!-v|1@\OZ ځ aFA2VaJ`ArIzx ʤ<^c#<[WBQP~( cC#4D"b @ʯھ~<7|lB{bUV8gQDB|1T؋؏}xnMGّٙڣ]ڧQOaGExڻۿ=6`~}Ɲy=]ם;+`}y]_ߙ] ^#^'+/3^7;㡧&vbg䑦?_!>H\IG D91铞 I[|c "i2~c^GT*~4'6r{&@f U f~->cŢ'f\?d vރfb_7Gɘ%Ğ! R2Wad$7*˺/>l ʰ-z`ءTL)l.AʂS٥rDuqPl1,@HW !a8A]6 /G(嫇Fz/t^μgtRt@n eRNIeV^eZn9ӎ:Hdtp;8R6`:}*SR,PO9FCb:SO(tC,Q;G+ T<<)cN1b D 밓Ιq$B:H$q9devs知1p@ 袍>d؉)?)*K*]>D$ qOLq_qoq(1J0ԁ pغ h gn QRI:@:ԴN(cN jC1`|bQs+]&3QڇJͣ AĶ0@=՝q37S`RN(m4HaOMtR R =QGs55t=SD 5=z 1>TA&l@=@=[ {gN=~ }OO}_}o=Q!ѠHD=d,ANmKrN;=9G鈡#DM"Fq~5(`%::J'ҷE\ $צIolfI~Js@3e3ّ(j,bbI/ڭd=:єs< a 91!`GCq9=/E/ьjtJRԆ$hŽ $ B&@«p)@=DTJGIh;MΡ ^0UiY z=?ȵr @5oj0GU֜˩QH$X)G0 /JÚD Ў4r\Z"O"E=jRDhw#'6mD |/0<?ԱC$Sv?X5: s֥n^ u *@SimQLݭi-44pLu.5afq'eDsD2/=G;*2+mp !.` !=(G]»)@;,ξ- Rw /1vl=ŽÔϯk?Nr+o<Xr!C(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hhȉ艟(HhȊ(HhE}׋jwHq=8ǘBƌubθ'd "dXh%8ݕ̶+ ~~uΥs hn*7[1Qȑ!XrPo ]~0kc'+Z.I>Gai1,9 A~6Ci/֑MفVkBS+j+6>I^_aXXy[9c1eI#Cԇ·g+E!lq~YIs՗NXsv @P&V!LS$Yci긍!iirLhQuc iXa[r#I_Ôb0LdDL@yV+00ga8X{/P`_@]L [P?`7{qU6y)P QiuYIV62j۩#`b*џ&X\V{ b+PIޡPioP02W9(:%z@N08!: zO "@$ /0$8Р5qrܩ:c:'+a*Šq 0`bg1Qkz  J(CqZ0QsPꪼԩʥ W@'@C#6#:/ :6$!1q # k `rp솗Jq%%F&)[P#7;$!A#q ɠg3Q 4˛0U09ďI1!.QCP Ŗ  ۴SU{O2+O".#CC۰"=+4?+!f갶jtNn\#0$6cl8F9 me3“ N;!) y6ê6J ұI˼⼏7[+{@Dqxr>P+RQg݋˱P {(c{9A^S%:i?#~ "?) .R:Aܨu~9#O&W&vM/|J0AP %PP;3>0E%ϗNXL j_5 NXO#YrSto  ?wIDն%"KL3LۇN PhGC4 `odo /O;ؽW7w-0#QjjR@"'{?LK:dU NʏfKQ$aAQ> CNB ٥:5c 3ǰ@:|*1@B,+&Fc'6qփnIG,]”Isa7H Q 4g =ĊtpEHGĀ!Ó*Ֆ;>ĸ^,xP\… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥM\:Ha8/݇PA6D+p:súfSvkav*H'wW¦4tK᧝6kQ(=!1Rt:!5j!~`0Ϯ-L|.u*gDb(N!+"`); X{ t Pz̑R!Yq1tЁ99:(C 9\Rz tl[ȹ4D9dpQDĮr(k:u$%kN!"#?tP5O ptT`tԙN̂/Yp~,^c2jX6(zvɋc iKX^瀻1y{ e؉tY,~vH>g<0=י# #EpKMzq, Z#"ڨg(<w[4ds!^Sj<1\aE8BЄ'Da U*)tTbG z|0z gH(@?3@eG%v8@=T<ځ+  X0lIG? Џc@>Z{|rZ>0dHp`zGͤ`$( qwu|ФaFb(f/ he1@> $I<\<tBxCCТDu0q]H"$%;JZLѨFs  oN ڱANbVb2((gC|H FZH \Dh7)U)Nqc>?% kz( AG0 d~C xf̹iw=B͉!K!K՜ Uֶmnu[ַ ?N!LFNV@(vsQð etR&RV(6aaZ0b^M QC$b|x;MjGz\ˆAcmJ@2x9\:, (1bBL9GG0,.`쐂l@eİc1qbT:@b=qg] Ո@J"5;P̽Ԍvt]8HN>4̵%luD c0;a~xđ6 e0/6p5qwyE>$GyC4-ye>s7yu5^ GGzҕt7;ӥۗO[Uzֵuw_{{ve?Ѿvo{>ww{w|?xG|x7|%?yW|5yw~4 =?zҗG}UXtJs{k~?|Eҁ~P|L4H.p`?~0+U0omH~w[ E@X! &p@ߨ 4 ^5tAE|iK Лxs(/؁r1Bb` pr Zzx²Boۀ` ۘ D #|pΙ,1ę8TAUt/,SBÚ>V C.sp7QHMN) u)=Ӕ,dG(M5)!(G! 7<S,(0@&b~~zB 臫P]_D P`)@FPFf\zPoyG^E`d98`HFā$Ȃ4ȃdɎQ(UEeFm4eyCy} :ULUX IٛX(HͳI9s>ZUN_ 8(tfugVb#(x >r@ pf(P(r#xz* ) \R(=s(q EΚAqJ$sRtJR,RWt8|#J%juH1$]<Ҫr'WЦ4җSL ֛ٜ0~LPЄ3zT<3Qn{51JQ(Tu7R_ ˜r~9 S#0%.z\*m[Z1/-2[%-{ k𗝕ɥ>R%5jUeuݍו٥ڵ%5EUeu%5EUeu&6FVfv &6FVfvaq0h܌" $ xq'r#RE(.V݇(>+@.t8X(HTxcx9^8 BNQxxx $S/MmXg7/L\=I8v8sR IK9=Ơ< heDZI>ތ\ ':r- =Xx(Ȣ 0#x~m?l杝ÝG8*+WMX煐IR5oV e#QmfVT(-g XXmt(=<|`VhXxK;0 (hu0HNS{q&Փ&M,? ' Of0<xo/GLP|PtTN6hȖ5.kxIn5?wW7`uxXJpV]O sX,@-5 `qnjezT!ц ;q'wtdsDNRZD(PzڀL4z 8’$fDsՀK1x05[d2P& qrltHhhtw/7+j Ou,ei>/y|`;`rE (̲ز !(ƣ ,)S$0~`@vΒДj_" 1>G+쎘Ṫzbvk舀r(+l KM{8^~0{C2KnK|) yz)q4{X=7' *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy3Ξ?-z4ҦONz5֮_-{6ڶoέ{7޾.|8Ə#O|9ΟC.}:֯;%~8)YLxWԃ?pÁ{rءt N|@AQE9o!A'D;'J:OE)H#OspP.3td89$S:#YQ.Eі uҒBTwUdx$9bsYgp 3N?0)G#s;E JF>* QMqfASHjjAGVDKzdkBA*@Gڝ3jB93Pcm[P u04"0a*EJn:  P:NܥSM+|6įNZTϩ[#/ EܫJߦı@?Ny<J+2h3@ >_sItsi !{ҷQuO"tE%'AaԿ9DV_ R iERSMqC6}{4.^):H9`0>3B=l~n8'>`O=hm@=Q +:LE y:SXPP:LN">ys@#cx1>tnC<M|F$@Fo(nQ:88ouH0t%|8rbԯB]xXTC7ugzѿ~ A ;dL"@:$dns#p=x(lɣnȐ%vͣ^A :Ч>p. r{9Ge~XO Pl"y^hTc@(B>q54:r S: p@`+>0;:8D{p.~q291 M C|VGInbeW Hgc"0ArB!zH` PС-SG?N#Q1葝t"!(ȰuIdJ=^ )-Ӟ'AP(uhcsj6D lG=0:xuvTyeXE4CK쁭G9P@ g0u0 @@@J0bѝ `ZzG @!ǣ!Օ5><+~@ 3asAqJGB9 x 0G0<NCCubP"g1Z +4qLO;`~pfT:rbY.떻,24X3ȏ6yӁiM (k~`!o4M ӟvI}lZ$cs.sB`U9#88h Uscu g-~qgLDtP(ٜc@>~.WiY,l+E,ډNzl^G1}v1p\:`&_H4- q1<5Gh Z}UIku(q@=L@"#_9>$_`$ t_7,y 0 APn;\@Ay#$n $@-L m_Aw G-7-? PsIku!9NA)I@HC;Dϑ,M@LvL p% 9A@Bĝ Dё $5,YRLV?lNd_/ ۥ5ԃ"tԚ5RBL]᳥L8mC4AyN')CH<DLJTD<A@DU:Nd >@)!͡\"DL.Ƭ9((NYP]& _Ld2V )&ص≟&4L$:&_(q f'M#W m2c@9[¥@ALӣ%ʱAbe@`d5湩qNr&:g*0f=&(Co."TC `CVhd$g $ՃR.(R^O=ਈ~d drhD,\C&. (Bh=Ct?ǘDta9m@PD?( rC=.wf:9@|<4&@YRjAJ;+ '(`qvg{D[ g¥v:D vCd%!)Ϭi;IQڑ~)i"|m4m>)A_%D<#jP`ک@:`N=(&HCCAf̪CꩵiDp DCA>R:ތ)EAT2 ]#:iNx+zh뼂8ΜbP=` )6Gvg k#@90P=@&DԟJ7ܞĘ@;8"N:ĕ pGpC%páhe 0l?ll~9 l =j;56IC,9dCA$dEA$!f) >ChhjrJm@DD  T"+ALm5j7d%~̚ T q%CZ:$] ~C.$୘$Cd <H/BD\8S>AY.@?K2VHA?W2D88/<C P9sO1@W*>²@hH<f6 YBf!m9D@ `hI9 pGo%U$L0)qhoƌa@ ^b?@,@1/#ד*a PPI@\@A;l@!3(pCï'OT?oB *+1Kyl%$8pp(0DYxqHLr{{k[ 2*2<:t=&$CCƣM ' Oy :\@v;o2C2/| Go>C>s?sAhL$oFkt*@ HHDaP W=l:D@:C VǤ SGA>$.G`OV \\oB :p@ $& ]DtC ݚ4\@ 90R>ԍ-| >BFHlV.<5A\S HQ'"l !rn(*1:8)>$9PA`_rB0?& 140ǰU;S.9T5n/9%sJYHf¦œ^ NaA:t@H23u@`c 3ləHujPDvww:PŶ ;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c|ks|{dz$;6'C +ȻüEIH_DjvxK|T_;#пėLJ@/ 4+LМpcoYcCMHz=\AHR#)鈜+}O;I1ۗHj:pHH1 i@BVM;>I \=hU]U,k,M 1ۥɘ݋~۫@\K E D$\$y I9X(iN׍]t lN3{qTɋ޼D$CA0A𐫼 "-إ)1@ D @|X7TaC!F8bE1fԸcGA9dI'QTeK/aƔ9fM7*Hg t֝+:|#t ] mpsň^W@Х-\o_GL…tZ=׉u.nU[ҵW7z#$[su_BSҁI!@ .ݑ`s avG>zuױg׾{w\:|s0JvPOA(ҩCA%Pǀz> siKvRuJ^"#vYOI`R J26PG\1SS.<{z,6kt;N6H@Jsj8+LS5l7S9鴉5` u u uDg(k9@ "xLv.x!v U!! TWa : \B੩LG6 (~ hKzf\_2%.,lJ@hGe +bMWumwWyMUE:-'r(y|2Au*mq>Lc*ޑI zjDn<ڊaT ;Il,JkHJ*䫱Z뭹,π+Z*v+ `A`̏t u~E: NȻf[5 <xN"IFCFgـ}iFGb\/ONy~Uh񃅂/ܴuޮs7rϱ,1ꤠ>0GR)A?tiGL`@F7JVrQf]nw ąrO1R%u{_ΗMF^`6LT7 v!a Okbp1a oAb%6Qb-vacϘ5qcڹ~cWO򑑜d%+D"D! f1*0Ha 2pm%Z~pr:BƤ*QLaSG:eN*Y@1 SAjQ:# "qtt C ttUC9AgX'A&9Fr3zN{s :Wpu%lqc;*JKv̭ >t-`ƢCo3Z"P)7_"RɆ@H6S9G 18);AM49@9JEmzv0Zd vL-HyQ2SD^v;"Q@;\q:40zCRW]zۅ&>i$Uߍ.qBhJSt)+KYì-Q$9ӰRaȲB% ^cG@:9v``1$9M4xoPaCW|<$S2M4Wqa`Ot\zPA b0?$BI1OR{ M!D5~K!1ٺ}I HA @UdGFg"J`-0!LD@DZ"EZ^oI3z!ީ `b~O b" Vc.3O֡dP` 6&.[HTB *bԣ-r(0Q8I!f! U"PReU$/.H>"?||EP>r`,`(Ȱ&`S aDq0sDIDb!GZ-1 *!p5Eަ!=BS*//*SCB\ >r&Dxkra.dJ'2Ela:t"(1`IlfDtO4&6!;ݲa>aL" '=e2 2(* i@ &h8r+ $*e0 vAAdΓKLׁFA 62 5l D0AY5ZuZZZ5[u[[[5\u\ɵ\\5]u]ٵ]]5^u^^^5_u_Ut( _ `@_+b% a)B.#bT2bj`5vcyl% o!rpFSa`8`" B&R0e9g}VL Rm%R"x~ Z '% #g", u~k6-[`4%!`5FojM#֫>7"k<b;UkoGdآ {N!D"f<(#`'W "(PҐpA7tAl@!@\ -`F@Yl\\z 2 #,c A3QTLc(f n)~ðĂ3-op2ab 4A3 >B .!OAj@g@N1Jt7L,tٲv2h0 K*p(Ȁv$r$⡫hg@ЁS!9"@vA"dBzD`CڮR4#o<,Ns}ӡAځS "*8X bydbZ( +-Sg[͘m`#V2a_>@9x S $@Y4S<TDc"0f?yL~bmRQp!Tex&#l*Ўpg!( K׊EyK J0*$)xAmCxVPZA68Me*E74b4`\G!v`YgQL &㙻%bV$>yʴ!0Rh_M6 C\*dÌ UZ1#m1x{A@4 o%Nj I*22}&Ӡb$r"]9%S7Jrg r Jhx:4#!q%!*"|}ԧاzzgvْ/o]q ^&r׳ <$<+@ ca: 8(1!28lpQ?H嗛$k/S! L" `mذ֑?$5 "h b xa8q;",Kс+ "WSag+ `hk*F=8 /Ȣ=;fgB>ŀ>%:ƒA IH!ڢT!b)}&V@Š#7 Evہ &$E }ъx [Xx%1bxF*-V=Q$3~t H-,*ʢf2X\G lF"K*KO\2Yp:Rjaf˅9P]afQ5|S5a2`#;](R;Ć IE\C d44UV&jV%/{B3"3FBQ=Uݽ@@uVa=VSmq=u}y}ׁ=؅}؉؍ؑ=ٕ}ٙٝ١=Ⱦ2`Vڱ=E V&,#lSbNbpOcݝWZvmfkgG%,.]АV% M!Pfu6ٛ׀MG6GkiuDT #2Q>SO%[%z"]Wn/{m1voU>賽qk_3|"V.ךKsS>8nNy)yz8"&LȗtFY>X8yǞ^z"-/R)L!|3}}!ua^75ؗmoSVfP|XQ=5.@ D߄U8AP!$G`86Moŷ^QoۈXuU7y}%3/0X- L>9bk  "fm͟O uWº($\G<ֱkwIċ tE$uD qt-#Ŵ``@ JѣH*]ʴӧPjLG# "[Ha( @DKٳhӪ]˶۷pʝKݻx˷߿  Ƙz^Țއu (B=Aq: @d]lLdحn3t6.yQAY9@ᘦQGTͺetËQy["@7"Q|OϿ(A 3P΄E*)#_Dt҄Kb(xQ=1O/QE:ԣH'fN>LЃQ1+փ9$hvFEQp9vlp)tix2嚔-%F/pZ9c.Pd|hSfD]?%g:`$ :.#FI\eO;`Eii ?PRR1<3 `\zv+-;閘r+_cwEAVȻb;\t<&sDjP9B:j%EԣbDs?hD<, fXڒ`TIdeN;ڶ@-Dm ϶NڎzWO;$A:EMG).Fd4@h e?dhgX1 A:E,ad1=Y50vL\NHG^ C989#)褗n騧HD.c=`!:P{?dhO  G>p3n{;>|DL2gD4:ޔS#FZ?H@H(7`b##c#2J@=9H9^, GHpMfȭ6CBXߔ6*2 (@ءx]QRX. 1BC%P'u8 4 ؏M4W~t|KG: H:a 3QMH@C($` F:򑐌$'IJZ# h.Nz (GIRE)WV򕰌,g9s̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:ru@>z&zPhZ,K@~H5б)P !Q,ͨF7jJaT`iaCQZl"tlHʔ\#rŏP|c1ECHGcf8TJժ}uET=I@؈<(Gbb#Q>t5.yR H:ӈd?8 D!X*۔ʀ.PsOPd;sdnwI# P0;"Z%ڀ2!PDv4`}K`b*Z1#Mzס yÇU,֮[@^]An"~G^ $z}G1D%[A:P_/F,8+Q2m@I^P`v#Ip`0-hs`BP>π. lR Ք0 .]]1rfa5zHWwס m@3E8;n@?6x# H PGkB= Ў.F(>xO41F MDPG=ȐÛtCښ.rGk:+Er u:<,^/Q$?L)s:Fach:!fmw ?ϸ[A nPD@Ɋb܋t G9Ґ"Jxu!HvE5R7fMLjÃ*w7t(M>taa@ѯ(l'OyUVJDr1!C%b2'ObPN*ùJ+s|%,ϼ7h\PG1򡝖D ʵ΢#t&8GѬˏG81PW+ȳ01t,렜b,v sԃ#&V1)wGb8LFfZj8`l 6G4t2$ #]o(Q&p6 xxԅrDs(bP@b-$UP(,+Rw75sQ|T|1YJ3%j@memSe#((UYmoPr`+0W(}H\Y2-2z8X4hc ?b `i@6` 1c_ hT/EO1"2` G.D,;x:1h1'2.R+%/t,-3?3ؔNϤ1%-s1~Hh$|wprڡop_"i|Aw"@x,g T"lSSFa|c7#1!#73v-Qp#87J92195 yIJZ1vUVG>76`c><5z}Pyn vV?8j I<c QAsQlV = `;.՗z?7!"0PM)U%s;0 ٜ# !CBQjb@pxuR@=C1q@a4hAX[2@#p/YFzԅ2Iv6S0(=@܆q4! `Cao[C!^PD!6I!<>|r (A9 DCB(1!i E"EcRE7m0imDcO}1Q3$iCD;qGx 0D`HCoʺ̺yJڬxpZzwGj^Wz蚮J d:Zzگ;[{ D UP["aQ۱@` 1S%%WT2;Gz3xa`neQ4{JD[IFPbqIttR{X+]K8Ԙ@}`[f{q215Uo~i\P bngr6Fffg mfqvw}yg[kU#!JkF=%$ C w0@pArRp p Eq殶;{N W#XrQGx'ЙA1 ' ["y֫wZ^; b0 ci7ۑ>z(@ HQ1\"`r99%=k2rH</gO1hma2&#&2<ĔA8<,!,8B-hl..Zc18yŀU39@:TǢ<ʓoI+v@G jV7@7 ,VqAҒsD@?3d`YUܮX1aA?AɁ|H5@,#CWj'O*U u@-Rjf)Gv!3HH ЯSyI+}ѬD 9uJ"=ғ%1#$\@. /1 * 8:<>@B=D]F}HJmoP G XP\|1-s`bIxPEH# Rv}Nmk !w%!ͲDs1!Ӥn[|FA7GT@Re6g`bgN0@qּeװFX# zI|W3[^=+jpvhTxAXN`c`8?> !6tu}p&<<\e}O[mTA[Huj0lN@QCccP`.,%N}᲍ 3 FN P^Eb;E PftOԉuΨN|3~(A[Ca_6u@z}q2}k$1Ց9yKԈTQc6 !l@b(u@--ܜF.CX7Bq;@P8S))/|bp1"X!_ yE&4L?ɰg6@_.d.]%NXE5nG S0?2YϏ9ҥ<0`9t0םС͜!%ZQI.eSQNZUYnWaŎ]_vg8'\Q:Hǡ!zZ)W t(s/"` 7O@tP"JpЁ'QRt&m("i!Nǭ PԨ-y,N3Fq$s((ꩇu |:Gv@(~07Nۉ,xթT".PB](Gc9t$X7Y@ |^U ~^G]Vxava#x̲" ꁧuG H)Y)  F1 |B o#cDӁ(| t|gٙ!ʼ Lt'~i 5지ჟ `kt (@ڠ̅h~`a#q\R( \?$ l ?0b~zF.!C|%0FsHvs}w{wT3Gխ|G! KGu,>D^2$`ox5&H80 H[9J7KY lup 'Z0[ E臑.!Й@"P2a!a 5PSbxE,fQ[,J[HLQ=cbF8QscxǥP jeā=`LCy"(<&Rdd#HHFRZ _0XS8IPR$e)MyJT x!@He-myK\Re/}K`S$f1yLd&Sdf3LhFSӤf5yMlfSf7MpSx$FbxM#ENxS8)G^g@ǏAZX=PFTmqЂ`O 4Gr#Iˇ2le8FG07T1ęT;N-|ls,ԸX{!ѐ>Oڈ  }C@gy[%kYzVj`}f6ƩyHFLQCФV<Ŋ-A=X&V%;PZ!aEWV#y;C22v?@:FѦVe-պ!AۚC (:~E 6@KQ BQp$s sd= @]5b!LDС\ a I؅o}{_Nlu_:a`t,XH qQ¬^ ׅJʮC݌U( DxMC]%#/BH Hz[("N7;-q|d$Idt\I :`,Da `@, P7x”4Ēu|mC: p-aTGe$8LZV"0@ 䮈/C?C@ D;CA,DC
b$Nb%f]b'~b(h(b-bv0Аȅ1.b̩0c2b8=!ѫ1]x 6 >cDNdƒ>Yz5()JbsrbEeQ~#HZUFV,-\ɇXf:WQe_s* Yʿh}P-@{5Kcd>effgB.!# y<I|Ij jf7Vv80w!g~ʀcufgQ$Q{n_hB*قQxP( \ hiuikl1XQ :C,GXyYKz{uKdpiLu̺(\ $ptH9ٔYY] xt0u`Zruvxj ,XtXa/i V38,~x (m/SpbQw.#Jzz[ӝ@>c ޼9j][ Hv0 x[Q"pIxܱ !W#fπxmHM2١EȝvXT5f6Xwb e q^X3*X>捲_2񛀳(/u\Sxfn*_ι _7P8| } sF}z?:r_}/#ІC֯}6䋣SϿ}~z}7B~~_~o~~~~~~~7ay7 PvY <)O%v0ߛ+ڿBLZ|(~_{u,h „ 2l!ĈS7DQ=xq" :~,iRaȑ'Wᅪ-XҬi&NJC/Mr,x^:~8l)ԨRRj*֬Zr+ذbǒ% Fu]: KgnsJ5_Ks됓@,qxvA| S ܷ D BE(xbLAs.ùtH O/ՏVU : J8!Zx!jxPhD..^‰8oH@pIQ ŸC2\7HBd$ C'xG0Q#'h@GRe\O,҃YҖt k09T<0V[ƕ4 ;0'eCvcB|%D: D݌^:aF4qubL\!X:p`t?<p(@h ȫ @Sҕ.})L2 "em`FA5qtT 08wjQ}"0j:'<̆0F1;T BFUU`JA 85F<xK/A09 H RY=B 5(Ym x@xCFIG$QmL쁰zV G9pځE炋j1_I8 B; ېhh Mzkup]P6(%:=1ς \_/X3`aqb=@zHGF [z5M`85,)DhAMX`2FB_R15@8P3ƴV2-s%Ë9Ӿ|.%  v!݌0@c yc⪛, oF>xQA0&039c]AE0fP@| (Op L?ERi.C6(b}&[fA9ڒ,p:> f jD{ .? EE#\pE-uy~u! D dxa6؅ܹP Q[q' $R#/\A`rx="BP<:@HwALQ3$9st`2Zs^:fftF,?rn 𑎴i%3ѩ^U nfI3\0uH ~O#XG_J D"T\ ؁v xE< e_r5\8@;!CAh.qY#€7D4 :s]n4k'x /T:d_Iy[į@`1ҿ3AThC<@?4@? ȃ@QuDM91ApINDMP@^PmDƦBHEEϳ >\B$BA?DB  5>!FNaI|Ӭ :ܘK9PdB ; >@:!C|aar@(M=EyCda-̱d9DF9 \U9DHd_^jmZ:4b$gʨGAE AĮ ,֢t:ԅ'DP c.1^Bt@EάQX -f mL ?ԃ"tU Dc?<"iX"Rd&fI=.DhBtGsNQ`CD`٭T䱡8~$HH$I6LEB]B@@1ݝtΜNC&t[>䭡Z_XFC8dZ@4EDAIɭ ]alV#AF<j i8R(I_(Z騃P$9^@HDX6:Q &A1&5HEXD\g$&S$@>$99pSC'ɘ29"~D`?*L@٬C!_ 9C9¾$zz'{'D^AhG񝧬!A\(ƺ9,:fBtȘPDbp: ]{]?dTQ ?X:h^ :ÀU@:ЃÀ|D I&CPҨ qy!Es `:+,TlտdDAx'<NJD#/F đ^]'BE9\C)j'?IB [X  1h^XX]B|F.hhAT| }D#cl{**2Dy̜CmA@dFDpm$:X@d4&)&._] tStle:@Glf4M:@ Ř*jުC@,u :eLFø^ TD(M$.OUf=J2Ce1@<t.訧 TZK?dLpl9K@tZ,:@t,2B L  J#ʮ( I !c)QBRG˾Vi[LDAY:/I?|ԣAmAM.S_P.&!A—I:؃BHZ=PҐ^>l?('JVOhJDB@m̃}?@K;`_M]0 =^.Vf.9D䃻t # <6C$F2CR"HEhCn>H(@bY(}2~/Bi@M{6l`@EGMo]×L%VG=xIגD 8OdfmxϗT@p՝Ò1:Q:8@D] Dqt.;A0$:;Ԫ:Hh]Iu/k̚@ -AB@Cj_ ?0+p @gA:(B22C >XdD B8c"ACEŏl%9zdtqt'2Cqm]tm c>@X&E?&hs(/OF9̈R 9mBL@\\ íC9OJ8G\Q R>'/>7?>GO>W_>go>w>臾>闾>ꧾ>뷾>Ǿ>׾>>>??'/?7??GO?W_?go?w?????ǿ?׿??: 4xaB 6tbD)VxcF9vdH#I4yeJ+YtfL3iִygN;yhPC5ziRK6ujTSVzkV[vlXcɖ5{mZkٶun\sֵ{o^{p` 6|qbŋ7vrdɓ)W|sf͛9wthѣI6}ujիYvvlٳi׶}wnݻyxpÉ7~yr˙7wztөW~{v۹w|xɗ7}zٷw~|׷~ <\|% - 5ܐ=EM<U\]|emuܑ} "<$\&|(*,ܒ.02<4\6|8圓:<ܓ>@B =D]F}H%J-L5ݔN=PERM=TU]V]}XeZm\uݕ^}`b=d]f}hjlݖnpr=t]v}x块z|ݗ~ >^~%-5ޘ=EM>U^]~emuޙ}蠅袍>餕^~ꨥꪭ묵ޚ뮽>^~垛ޛ ?_%-5ߜ=EM?U_]emuߝ}?_襟ꭿߞ?_域ߟ X@ T@>)XA -^9A~!IXB)T YB1 i贀! ,fBBD^^\664jjl&&$ nnlVVT..,224ZZ\JJL**,::>@86(x$0tfİʔx\d\t`p@t ԺNf<<4bxtp||PP`0@0.l xXPX (6L*$LH@h~zfhbh|p|blh`ZTT@lĮvVlԴ `8:P`Z4`rrt¼FFDƼrr| vv|ĞFF#ԃ: tR.예Q\A.cQ4hЍ Q>O= N@?S F)TV Y@;3(O)N Ih&QlIGqvdPB=lO,`堄jj_wPP@E#iF焘A22dCֳ,iIp:*B6Īz&sF:b+[9ԓ:@ >6&HFAHn[SdaR% -ښAC:`,A>Αh Bx;8K~N𠷪lN;|PH@Zl頳uβ,@ @9H,>,2F XH6khO==C`X S@B)=sںM< @BC:F#]MhE@Iу2. PΈ<D>/r #h"tN03vAN9}<;G@3\ 7TPOl{H>:b  h?? C= |p%!~LR#tB 6  |C7O7 +1AzP  {$uhG2өT,CH0]@[ȷ zG#APG:p#=q | $ x "J>1IHA?aS rAIt@ 3 xZb @]=t.PRˈ8 % Wi ΪTHGMqӜhTS] 0:*rCjԙdũ0ZA@!}*Wdtjψ 耇Mmfn C )Qd)ML$<zO SE,EPPTU>7 wŪ@$˂0׹ `+ J[K$ЎVQ +C]yYdX@Z\ YTۀ\D~=-/tY1LBJPסulQ0uL-hG~`÷gLc9>' 96[£&Bt8"/юbYtY.X`|h`1OeYT)z\Y PȒ"⡎ҏGkϭ,OL=%ҥkbfC<%CAnI01A|ni>ǚ%`M;@·Y D0lHnkLb6H1+ (@*/1G{PAD8NԸ*H? v NTI(,yD*t YHN]9ɵ瀙)kƵNR6oynnt U^ @.̚lˏ'D O$J: @ЇsJF%<st ӨK'G{A4@k*NcS{_┓]] x?t<|i`SHxY:$`JvpIDO}0phL\3`Fu `CUCyH~O`@aRTP=/=g ~sqUc` W\5#/( fqH0|=G& y&<%ЀAd!RbP PrS*vEYP=PDp b}FgP @ q$'\`}7tXv @B7$3-@PQ_lB=%qaw6p$PpaP|MPqb @z!C"3ME$br4`pa09#,}#qRd56`b%WDld7a+`%CbS0`*PO !PS w A{?Jw m-qɐّNGP=`)a(Ph* 294YdJmlɽdW&p;}a;TE#@Q@ ef@r5u>Z$]ק)$ ?` $z`g0x% |%309`CDg՝u#5 }a%L l쀚qA4ce$,KA1ǯ,zY{-QXN0W5/`=d*0mtjs$Qbp@lH5үJ p3LI&mky? 0hNK/B'4l"@Ji>4lVz}|9pU[9ᚡD3T 83#l< e:zHI"@v~]z#ֳZmWz2:0SDЬeQ$B. d'5Z|p9,UVL#Rz5A%Ej* UpJdPbRV*b:^h*bP6mf@]$7~pE8+P`0=e&<eA~WUWAq@CEu| JWۢW ~ /@~//һR45!`iLp8dR_t_挫|:U69KPZ_9x?jֹECzلQ3m{%ap@!5 Sz@ KۿƗ [$[  ~^6 xA P@ 3s.s`._t4AdLW! ~x~6.A1ń5Q##<%];8B nZ%_kF[Wтz&^qɕ/gsѥO^uٵowŏ'_y+;$p|`g( (xz8tY t^8Htz8($bAިu0 K[IJ*Yzo͉q ijQ9:v8(hP*!`BZBnz:|xe3s.-ĘAzAG xh6JHDŽ| f O@tPB 5PDUtQFuQH#5@K $` @,u,k6v1~` q 2` $G0@ uUuvvVY9 gbg\zu$HGplH "4(H "i ˭tpX ~g BjX.QcڠuZ9J /%yg{gzh6h ~.8 "u8Bqv68eꁧ )&Z~4ItF|njǞ|]G2$ꂾ)4 %Z.h 8 0f1;8@G`(0 #-3S>ʃ!#SS3_b8& Grn 0ұ:EGMuC b`z; $M$` x@&P d`(Wh 97 % @=-XA΁ w xtdoU =B ;a=L#( 5dޭ8a\OV~! d~h1C9F!~cdRU3"FA!M@r8pW:F&+ I.Ч*@#T@:Z0/bO2Љ 'jse/}K`S$f1vaЂxF!SӤf5yMlfSf7b`=7yNtSdg;NxF 3 3g?OT%hAFƝӠ ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWn/mvWlxi^D%)5nrg͍{!4W]j.Ӓ~(`1$U698<8s #@;OF&0@'GTc ڡ%!]7HgͣNc^WEJB\J}U+:\bg`p$0_Q(':t$4@P]at~k8ʦN[}v{P2o- ꓵCv ^Q _iJVcS0pKθv<` u oJ`(co^r08͗M*%gsηM#DoxAɧRA d5aj*AT xo$Lу }@G>H=MYZ= paن1Pٻu\o:(R/h 3N.TJs#s#$ o/S֌!c@*ga.s'k:LӍ=e?;խ8+L!Uo Q"|_ B0ȃg_ iu@HքUJI8+ ,Mp\߭(%1iG4 P.#1(7X8mАph+v!28h0+Ѡ:mvh x  (80 `p'A}AuTd!(GB(Q,$NDsx@~E^D'b%' qfy 8bf_D' zH `p\ ;p(\ /i`G0! 09\A1qS02 I[~z(9xXG OA4 uI"Ȅ+S"p[4,l q$G Cc$Ĉ`F@#Γ# `9l x`t0(zx6bƵ@~Xa1 KP61@t3r?i s0œȃxqt^ L&9 k|m N0́0nHRYDA\Si (/L|xP1`Xpk"c bCuH,AA{Yc 2XL8h!c+J(+$MPM `֤dt ɬ!ǃ0xQuOm]1K u0t vR\$P YBM e U҉sSϹΓу9xutLR%09)tͥTt- 4 7I<\m$, u(Ș7 N z ~؃?B<Մ t<?p$H׉4Qс Hm ;kTA-CMԹASPS8=h@ ,],= "0(PhE 9%0C DT-J1 2 =H-EL>c@@EXRzWa"6R~0ϡӿ8<ɉ_J#t@?@ "S( o-p% ZSH5DH7Qp%ɨ уq\ 4|0/aAwSC]q2J]m;00L] Ҧb`zPA9Y#]WyX:#5[ $= QklR*Qyt#{\]5$ Qz~%A@tKSEum"n6% i8S8tN7AW7KVPU`h-!uPz  Vd'S"2uH gç̒-! ͐ B( WRH"f 9]+ӱ8SQ@m XԄ hֵ 2pa>e7hpI3Au79 W6q!a MSZ`+ `^#V@ཞ|zt7%%~>}qdKha֘s@"#wyuxa P`bbH[fyhj7;;f !E % lLXiI)rb_vy%pц!rd* I*{T~{foM'*< d" ?9!fI`B  ૛10fn ۂ7]ѝ ~(Yv05m(``tf갗7H~pq|hٴ驞4d y.>ٿhI!D؞ 3Vjih+%$͖ Yna' ~Q݄!Ai#Xq?j`7dk;l FVȜ l=A < &@du遈bAauhS2uXbP)AhqifmQ Q̂0xHx#9z `[<P0#,4] 1cm $WX46\s R]CF Gl{nߍ D]YI̜Xs1 >q h{ޘz K18'A#! ".#U`"~p"^y"  u0 -Fdq°+:,!n/q5 v07"#x w09(70Hz3h nE_trbҀ~4'G&h" PatN}Ra~E'PS7 }tXu`'SP &Zߦ|B['TuY/vc/&ui|u`JvmJu)(8vlvmvnvovpwqwr/ws?wtOwu?.b[:+NpwwuC ~_w b a`šC ?Бk<@>6Ȕ*Wlr`t/bJǙ:w”e̟)MT(Ёb(ޛ]q$Sͅ~oȟ .ʌs&m-ܸrҭk.޼z/`.A uj8,٥xaz6^VanaoqA5RY"Kk8?;72BtouЍw`佗_JCb̛YN@!_ٞf,1tbӿ{]v)UA5?1h:Y$|Q}uQ_5BYW>E7]u ?h1@=Cjx#9#=#A 9LS 9mQcL*NPtTG!RL,dNeICT9TqP@'}E .x)B:f=pdS=(=6-$EW/deKFppO.R|r]>>jk  RDFV:!4꡻Tk^KN^iHq-eJ ʐκz-;.k@= 0>#X!ac@0h$ arAZ\N> B<+$H`Nc\SlN;$* P !LA;|H%Rv"+;|Af< n=ԁ9=A1::]PrF] t',%1;.~ L:-FB:vp9\MN?@vLvD$ 7 Ď x">p/9$ԃD#ixJ%׎$1c:{ 2#z R6_ɏ$94[:DX'Xu`dZвt2x&ZHԠ2Y-X3"x`b#>.6a|Pbҏ= 2 p:W)!S&x-s c׏s`s H鶧pcv0O%JYӞV1DdVZ!HG;~DY`~L`1B1)H PG !ZI:0~%Q`n@G7¢-LɪX¤cʳ*( Y@ٔtSs ?Am !.R2@!@?$ЏTc@?Q0&;I B`@'< CԴ&6wɇ GRr#@>"0x 1~hL'!QL1d Lۘ]R!U'a1Hrd-S*(R*FwyBLe2әДK@086Wֲge25F`e/g̳p*:8L>{ S Z{AWVFQB+/ Z&t-;CېRA@H@,WG=J4%5QHbCCE;*WĽO  L_=F6K2g)@r0|0"jai F@P"T .DۣXW]v]8bo>[!F>2,ԭ!EyP7b"tB)uMCzCrԦY:hȎv4Eħ#F[KG@aQ%S*%T.EĂb!x Y.2N f,BODhςާ@F(Miwuuo*_Y&rYvV\2ā"i>X AІECh!)'C$)©C9(\H9x?I.@եÔvƴu2:XB@=|d@ô) 9d > ΈA 2#A$@C D<𦨪@`B /jD3]PGAN*C<ժI\P17ɤ <)PilD.0P>$4c>D]P<֯)] ' (U>$[,_,6x&GCL\32>jj@2<4B$H</*:CЃ9|,>ďd',D&>H:BAX:9D.Na8Qq :uD~y:c Ar( Ԁ9`=@.$BH(qĬ -EF->. DKkHG3Ub˚̮x ?PPڊ:p&{CBm*Ht+ (9Y.֮#-@߱PF9\ (CD?4"yFAd4de߱`ةF%H0FX"JC0@T#BIu:)FA$*@k ʤACzzƵhDM:.`=|/:ppIb?KcB=A!AڟLZ4Y>K @3:`!ecm$׊hnpbdEpTo=\mho,v+ ՜pߓx:4! 7D4&A@P&496mK(c a; p3D<{|%qA$ eaB݇ WčVc :*ߦC DZ0JxR=4$ˋ׌9`B"KD)nx|oyS˱9dK6o37w7F)FpgрPAT<&R+DD+kD+ri8<<•sOqJ@nhF4EF/:&}4HC!?a< >?( pWF3@r10v2A'4H3< 9DŽ?9d 1LRF:,bt [:du,WL'@9rA4ecp 'uCZ@H/]:Jõum酮Ƴ4륃Ls@@ n@4qeO <GX?X:B-C?ԃ&pf/>|Wah M7MC$մl BFV@@YhØhA9  wHj%%*;)&6Μ'[>ĕ{`cMwiW-ωan#ϑ|cj3D@:*A`zzr'(!< cCt)O1tQ"~(AshC c1C|aIB F򁨀ё vp )Ao;3| i)dIJG6CZIa:릚ktJAtd; 6w'9gH {*Â!#ujA @@] t2-Ȃlݖnpr=t]v}x]X4̔]V|H]n#5ޘ=EM>U^[t-sU`*WV6I kud?~ݛsNgg묵ޚ뮽奜nRp#v`a5,[rޛb ?_rmn 7iU) 5sSemuߝ}?_襟ꭿߞ?_sx~U|.e .QG H6k;!.e'! |NR p YBogrK@ĕ@c 0"ju) i*\GיH|S3Cr! @D.r$!CŨ<>1"]tTqW"]rÆ7:<"aHG>L@ dI?u #Љߕ?(^DxJqQҒ\)u&$̘Dr"P:NEV\@D؃:ǂ9bҕ oi\hLYqJT:ٙ._@GoĐG7-0z^+` əg=‚r 1إBAA n>@: ud 8ش͐uzOϏN{99d>PZT8A<~`#hevڭYyKlO˕ԥ6*U՗ԃtQQX^@= Vr)*% H!تCБOf9MqG=!NH` Qx#a.YzLPRJ#n%ق !HG0) F2prk ĤlNzK$쨀r/CΔ90K 9NKRղ %:0pZ .WmvWSiGTƈpGEa 0u!z/js.l3 *D՗MM*|@1/}y5^B#)j~lt` .1GX 9ƛ!xg F؞giI|,5@:xf\T91OAz "hE9]== FZ9!Iuqyjj۠4x&gLH}UFbT5G(L/QuT`'r;g(AJ|L @y$ЏPCG?^uӡu rTKpuDPH %B1!x :Q6"[S QP+8BժNpu< 0(\6`ò߲%5q܎UJ!@A;F@a)ߙ!#S =t#(3c:E \J, (uC8Cc wkŐQCZb0G돠.C GFqN=6t@!''nD2L 07ыA @ԯ/ bWKץ3Xz  $U ^ 9Ȁ݂ E9@>hc .Z$A΁!Thdҡ"Ƞbn D!:ؘMlW,֡@-.0!`i& :A @?PE/?`3L"O PG*$@(p %NpRp B"dI\F%kϺ`@s<9Aorl!v/ !A ;:M* | O 1!A n>CQF,@!j%hB@Ed"c+N!$""rm `!s'! rSL:08j8 ll[@@#A"`+r!!10&*j\0/x 0AbB F3)C٢0D؁mc!ΦM`-RIIT^t,z ^ಬj(2;uX~q+q!A 3%CaA-"FE >s |M_)%NJJ?T"M4\b3RSFn-t, ,a! Z :SBS!`Oq,a >5TM4> NGT$r{9RFU CׁꁔeY֍JAIA1saNP/1?j ~$TC._a_LYjM 21&Hb7c?dCVnnP @E̡b*%Oo[9E LGxbpI"!5"^.[ .2><JE% >2\LPVV64BB ~BFqjf9̡ ` 6eJ F5h !an"Hikscvt[^8NvpN"FsN"cKsCҰ"wr)7F!ij 6w3AС!*wvСZ=0a$Tmm-r@xEV|Ǘ|w?cC" BR($w[%r-`B*ABVBX4gg(%Ip1>` 4':-it΁vekѶҷַB2>'!sN'nD;,HUm F`" +!s6 W *:$ت&*@dV$.D[jC(-w!^pu*v$Ǹx}+.ԁ NnT Y!1x[3K(&nILʡV!Vg'z!4 x~A&8I1gR)m 0x$~).ĵ""ST!-v|1@\OZ ځ aFA2VaJ`ArIzx ʤ<^c#<[WBQP~( cC#4D"b @ʯھ~<7|lB{bUV8gQDB|1T؋؏}xnMGّٙڣ]ڧQOaGExڻۿ=6`~}Ɲy=]ם;+`}y]_ߙ] ^#^'+/3^7;㡧&vbg䑦?_!>H\IG D91铞 I[|c "i2~c^GT*~4'6r{&@f U f~->cŢ'f\?d vރfb_7Gɘ%Ğ! R2Wad$7*˺/>l ʰ-z`ءTL)l.AʂS٥rDuqPl1,@HW !a8A]6 /G(嫇Fz/t^μgtRt@n eRNIeV^eZn9ӎ:Hdtp;8R6`:}*SR,PO9FCb:SO(tC,Q;G+ T<<)cN1b D 밓Ιq$B:H$q9devs知1p@ 袍>d؉)?)*K*]>D$ qOLq_qoq(1J0ԁ pغ h gn QRI:@:ԴN(cN jC1`|bQs+]&3QڇJͣ AĶ0@=՝q37S`RN(m4HaOMtR R =QGs55t=SD 5=z 1>TA&l@=@=[ {gN=~ }OO}_}o=Q!ѠHD=d,ANmKrN;=9G鈡#DM"Fq~5(`%::J'ҷE\ $צIolfI~Js@3e3ّ(j,bbI/ڭd=:єs< a 91!`GCq9=/E/ьjtJRԆ$hŽ $ B&@«p)@=DTJGIh;MΡ ^0UiY z=?ȵr @5oj0GU֜˩QH$X)G0 /JÚD Ў4r\Z"O"E=jRDhw#'6mD |/0<?ԱC$Sv?X5: s֥n^ u *@SimQLݭi-44pLu.5afq'eDsD2/=G;*2+mp !.` !=(G]»)@;,ξ- Rw /1vl=ŽÔϯk?Nr+o<Xr!C(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hhȉ艟(HhȊ(HhE}׋jwHq=8ǘBƌubθ'd "dXh%8ݕ̶+ ~~uΥs hn*7[1Qȑ!XrPo ]~0kc'+Z.I>Gai1,9 A~6Ci/֑MفVkBS+j+6>I^_aXXy[9c1eI#Cԇ·g+E!lq~YIs՗NXsv @P&V!LS$Yci긍!iirLhQuc iXa[r#I_Ôb0LdDL@yV+00ga8X{/P`_@]L [P?`7{qU6y)P QiuYIV62j۩#`b*џ&X\V{ b+PIޡPioP02W9(:%z@N08!: zO "@$ /0$8Р5qrܩ:c:'+a*Šq 0`bg1Qkz  J(CqZ0QsPꪼԩʥ W@'@C#6#:/ :6$!1q # k `rp솗Jq%%F&)[P#7;$!A#q ɠg3Q 4˛0U09ďI1!.QCP Ŗ  ۴SU{O2+O".#CC۰"=+4?+!f갶jtNn\#0$6cl8F9 me3“ N;!) y6ê6J ұI˼⼏7[+{@Dqxr>P+RQg݋˱P {(c{9A^S%:i?#~ "?) .R:Aܨu~9#O&W&vM/|J0AP %PP;3>0E%ϗNXL j_5 NXO#YrSto  ?wIDն%"KL3LۇN PhGC4 `odo /O;ؽW7w-0#QjjR@"'{?LK:dU NʏfKQ$aAQ> CNB ٥:5c 3ǰ@:|*1@B,+&Fc'6qփnIG,]”Isa7H Q 4g =ĊtpEHGĀ!Ó*Ֆ;>ĸ^,xP\… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥM\:Ha8/݇PA6D+p:súfSvkav*H'wW¦4tK᧝6kQ(=!1Rt:!5j!~`0Ϯ-L|.u*gDb(N!+"`); X{ t Pz̑R!Yq1tЁ99:(C 9\Rz tl[ȹ4D9dpQDĮr(k:u$%kN!"#?tP5O ptT`tԙN̂/Yp~,^c2jX6(zvɋc iKX^瀻1y{ e؉tY,~vH>g<0=י# #EpKMzq, Z#"ڨg(<w[4ds!^Sj<1\aE8BЄ'Da U*)tTbG z|0z gH(@?3@eG%v8@=T<ځ+  X0lIG? Џc@>Z{|rZ>0dHp`zGͤ`$( qwu|ФaFb(f/ he1@> $I<\<tBxCCТDu0q]H"$%;JZLѨFs  oN ڱANbVb2((gC|H FZH \Dh7)U)Nqc>?% kz( AG0 d~C xf̹iw=B͉!K!K՜ Uֶmnu[ַ ?N!LFNV@(vsQð etR&RV(6aaZ0b^M QC$b|x;MjGz\ˆAcmJ@2x9\:, (1bBL9GG0,.`쐂l@eİc1qbT:@b=qg] Ո@J"5;P̽Ԍvt]8HN>4̵%luD c0;a~xđ6 e0/6p5qwyE>$GyC4-ye>s7yu5^ GGzҕt7;ӥۗO[Uzֵuw_{{ve?Ѿvo{>ww{w|?xG|x7|%?yW|5yw~4 =?zҗG}UXtJs{k~?|Eҁ~P|L4H.p`?~0+U0omH~w[ E@X! &p@ߨ 4 ^5tAE|iK Лxs(/؁r1Bb` pr Zzx²Boۀ` ۘ D #|pΙ,1ę8TAUt/,SBÚ>V C.sp7QHMN) u)=Ӕ,dG(M5)!(G! 7<S,(0@&b~~zB 臫P]_D P`)@FPFf\zPoyG^E`d98`HFā$Ȃ4ȃdɎQ(UEeFm4eyCy} :ULUX IٛX(HͳI9s>ZUN_ 8(tfugVb#(x >r@ pf(P(r#xz* ) \R(=s(q EΚAqJ$sRtJR,RWt8|#J%juH1$]<Ҫr'WЦ4җSL ֛ٜ0~LPЄ3zT<3Qn{51JQ(Tu7R_ ˜r~9 S#0%.z\*m[Z1/-2[%-{ k𗝕ɥ>R%5jUeuݍו٥ڵ%5EUeu%5EUeu&6FVfv &6FVfvaq0h܌" $ xq'r#RE(.V݇(>+@.t8X(HTxcx9^8 BNQxxx $S/MmXg7/L\=I8v8sR IK9=Ơ< heDZI>ތ\ ':r- =Xx(Ȣ 0#x~m?l杝ÝG8*+WMX煐IR5oV e#QmfVT(-g XXmt(=<|`VhXxK;0 (hu0HNS{q&Փ&M,? ' Of0<xo/GLP|PtTN6hȖ5.kxIn5?wW7`uxXJpV]O sX,@-5 `qnjezT!ц ;q'wtdsDNRZD(PzڀL4z 8’$fDsՀK1x05[d2P& qrltHhhtw/7+j Ou,ei>/y|`;`rE (̲ز !(ƣ ,)S$0~`@vΒДj_" 1>G+쎘Ṫzbvk舀r(+l KM{8^~0{C2KnK|) yz)q4{X=7' *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy3Ξ?-z4ҦONz5֮_-{6ڶoέ{7޾.|8Ə#O|9ΟC.}:֯;%~8)YLxWԃ?pÁ{rءt N|@AQE9o!A'D;'J:OE)H#OspP.3td89$S:#YQ.Eі uҒBTwUdx$9bsYgp 3N?0)G#s;E JF>* QMqfASHjjAGVDKzdkBA*@Gڝ3jB93Pcm[P u04"0a*EJn:  P:NܥSM+|6įNZTϩ[#/ EܫJߦı@?Ny<J+2h3@ >_sItsi !{ҷQuO"tE%'AaԿ9DV_ R iERSMqC6}{4.^):H9`0>3B=l~n8'>`O=hm@=Q +:LE y:SXPP:LN">ys@#cx1>tnC<M|F$@Fo(nQ:88ouH0t%|8rbԯB]xXTC7ugzѿ~ A ;dL"@:$dns#p=x(lɣnȐ%vͣ^A :Ч>p. r{9Ge~XO Pl"y^hTc@(B>q54:r S: p@`+>0;:8D{p.~q291 M C|VGInbeW Hgc"0ArB!zH` PС-SG?N#Q1葝t"!(ȰuIdJ=^ )-Ӟ'AP(uhcsj6D lG=0:xuvTyeXE4CK쁭G9P@ g0u0 @@@J0bѝ `ZzG @!ǣ!Օ5><+~@ 3asAqJGB9 x 0G0<NCCubP"g1Z +4qLO;`~pfT:rbY.떻,24X3ȏ6yӁiM (k~`!o4M ӟvI}lZ$cs.sB`U9#88h Uscu g-~qgLDtP(ٜc@>~.WiY,l+E,ډNzl^G1}v1p\:`&_H4- q1<5Gh Z}UIku(q@=L@"#_9>$_`$ t_7,y 0 APn;\@Ay#$n $@-L m_Aw G-7-? PsIku!9NA)I@HC;Dϑ,M@LvL p% 9A@Bĝ Dё $5,YRLV?lNd_/ ۥ5ԃ"tԚ5RBL]᳥L8mC4AyN')CH<DLJTD<A@DU:Nd >@)!͡\"DL.Ƭ9((NYP]& _Ld2V )&ص≟&4L$:&_(q f'M#W m2c@9[¥@ALӣ%ʱAbe@`d5湩qNr&:g*0f=&(Co."TC `CVhd$g $ՃR.(R^O=ਈ~d drhD,\C&. (Bh=Ct?ǘDta9m@PD?( rC=.wf:9@|<4&@YRjAJ;+ '(`qvg{D[ g¥v:D vCd%!)Ϭi;IQڑ~)i"|m4m>)A_%D<#jP`ک@:`N=(&HCCAf̪CꩵiDp DCA>R:ތ)EAT2 ]#:iNx+zh뼂8ΜbP=` )6Gvg k#@90P=@&DԟJ7ܞĘ@;8"N:ĕ pGpC%páhe 0l?ll~9 l =j;56IC,9dCA$dEA$!f) >ChhjrJm@DD  T"+ALm5j7d%~̚ T q%CZ:$] ~C.$୘$Cd <H/BD\8S>AY.@?K2VHA?W2D88/<C P9sO1@W*>²@hH<f6 YBf!m9D@ `hI9 pGo%U$L0)qhoƌa@ ^b?@,@1/#ד*a PPI@\@A;l@!3(pCï'OT?oB *+1Kyl%$8pp(0DYxqHLr{{k[ 2*2<:t=&$CCƣM ' Oy :\@v;o2C2/| Go>C>s?sAhL$oFkt*@ HHDaP W=l:D@:C VǤ SGA>$.G`OV \\oB :p@ $& ]DtC ݚ4\@ 90R>ԍ-| >BFHlV.<5A\S HQ'"l !rn(*1:8)>$9PA`_rB0?& 140ǰU;S.9T5n/9%sJYHf¦œ^ NaA:t@H23u@`c 3ləHujPDvww:PŶ ;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c|ks|{dz$;6'C +ȻüEIH_DjvxK|T_;#пėLJ@/ 4+LМpcoYcCMHz=\AHR#)鈜+}O;I1ۗHj:pHH1 i@BVM;>I \=hU]U,k,M 1ۥɘ݋~۫@\K E D$\$y I9X(iN׍]t lN3{qTɋ޼D$CA0A𐫼 "-إ)1@ D @|X7TaC!F8bE1fԸcGA9dI'QTeK/aƔ9fM7*Hg t֝+:|#t ] mpsň^W@Х-\o_GL…tZ=׉u.nU[ҵW7z#$[su_BSҁI!@ .ݑ`s avG>zuױg׾{w\:|s0JvPOA(ҩCA%Pǀz> siKvRuJ^"#vYOI`R J26PG\1SS.<{z,6kt;N6H@Jsj8+LS5l7S9鴉5` u u uDg(k9@ "xLv.x!v U!! TWa : \B੩LG6 (~ hKzf\_2%.,lJ@hGe +bMWumwWyMUE:-'r(y|2Au*mq>Lc*ޑI zjDn<ڊaT ;Il,JkHJ*䫱Z뭹,π+Z*v+ `A`̏t u~E: NȻf[5 <xN"IFCFgـ}iFGb\/ONy~Uh񃅂/ܴuޮs7rϱ,1ꤠ>0GR)A?tiGL`@F7JVrQf]nw ąrO1R%u{_ΗMF^`6LT7 v!a Okbp1a oAb%6Qb-vacϘ5qcڹ~cWO򑑜d%+D"D! f1*0Ha 2pm%Z~pr:BƤ*QLaSG:eN*Y@1 SAjQ:# "qtt C ttUC9AgX'A&9Fr3zN{s :Wpu%lqc;*JKv̭ >t-`ƢCo3Z"P)7_"RɆ@H6S9G 18);AM49@9JEmzv0Zd vL-HyQ2SD^v;"Q@;\q:40zCRW]zۅ&>i$Uߍ.qBhJSt)+KYì-Q$9ӰRaȲB% ^cG@:9v``1$9M4xoPaCW|<$S2M4Wqa`Ot\zPA b0?$BI1OR{ M!D5~K!1ٺ}I HA @UdGFg"J`-0!LD@DZ"EZ^oI3z!ީ `b~O b" Vc.3O֡dP` 6&.[HTB *bԣ-r(0Q8I!f! U"PReU$/.H>"?||EP>r`,`(Ȱ&`S aDq0sDIDb!GZ-1 *!p5Eަ!=BS*//*SCB\ >r&Dxkra.dJ'2Ela:t"(1`IlfDtO4&6!;ݲa>aL" '=e2 2(* i@ &h8r+ $*e0 vAAdΓKLׁFA 62 5l D0AY5ZuZZZ5[u[[[5\u\ɵ\\5]u]ٵ]]5^u^^^5_u_Ut( _ `@_+b% a)B.#bT2bj`5vcyl% o!rpFSa`8`" B&R0e9g}VL Rm%R"x~ Z '% #g", u~k6-[`4%!`5FojM#֫>7"k<b;UkoGdآ {N!D"f<(#`'W "(PҐpA7tAl@!@\ -`F@Yl\\z 2 #,c A3QTLc(f n)~ðĂ3-op2ab 4A3 >B .!OAj@g@N1Jt7L,tٲv2h0 K*p(Ȁv$r$⡫hg@ЁS!9"@vA"dBzD`CڮR4#o<,Ns}ӡAځS "*8X bydbZ( +-Sg[͘m`#V2a_>@9x S $@Y4S<TDc"0f?yL~bmRQp!Tex&#l*Ўpg!( K׊EyK J0*$)xAmCxVPZA68Me*E74b4`\G!v`YgQL &㙻%bV$>yʴ!0Rh_M6 C\*dÌ UZ1#m1x{A@4 o%Nj I*22}&Ӡb$r"]9%S7Jrg r Jhx:4#!q%!*"|}ԧاzzgvْ/o]q ^&r׳ <$<+@ ca: 8(1!28lpQ?H嗛$k/S! L" `mذ֑?$5 "h b xa8q;",Kс+ "WSag+ `hk*F=8 /Ȣ=;fgB>ŀ>%:ƒA IH!ڢT!b)}&V@Š#7 Evہ &$E }ъx [Xx%1bxF*-V=Q$3~t H-,*ʢf2X\G lF"K*KO\2Yp:Rjaf˅9P]afQ5|S5a2`#;](R;Ć IE\C d44UV&jV%/{B3"3FBQ=Uݽ@@uVa=VSmq=u}y}ׁ=؅}؉؍ؑ=ٕ}ٙٝ١=Ⱦ2`Vڱ=E V&,#lSbNbpOcݝWZvmfkgG%,.]АV% M!Pfu6ٛ׀MG6GkiuDT #2Q>SO%[%z"]Wn/{m1voU>賽qk_3|"V.ךKsS>8nNy)yz8"&LȗtFY>X8yǞ^z"-/R)L!|3}}!ua^75ؗmoSVfP|XQ=5.@ D߄U8AP!$G`86Moŷ^QoۈXuU7y}%3/0X- L>9bk  "fm͟O uWº($\G<ֱkwIċ tE$uD qt-#Ŵ``@ JѣH*]ʴӧPjLG# "[Ha( @DKٳhӪ]˶۷pʝKݻx˷߿  Ƙz^Țއu (B=Aq: @d]lLdحn3t6.yQAY9@ᘦQGTͺetËQy["@7"Q|OϿ(A 3P΄E*)#_Dt҄Kb(xQ=1O/QE:ԣH'fN>LЃQ1+փ9$hvFEQp9vlp)tix2嚔-%F/pZ9c.Pd|hSfD]?%g:`$ :.#FI\eO;`Eii ?PRR1<3 `\zv+-;閘r+_cwEAVȻb;\t<&sDjP9B:j%EԣbDs?hD<, fXڒ`TIdeN;ڶ@-Dm ϶NڎzWO;$A:EMG).Fd4@h e?dhgX1 A:E,ad1=Y50vL\NHG^ C989#)褗n騧HD.c=`!:P{?dhO  G>p3n{;>|DL2gD4:ޔS#FZ?H@H(7`b##c#2J@=9H9^, GHpMfȭ6CBXߔ6*2 (@ءx]QRX. 1BC%P'u8 4 ؏M4W~t|KG: H:a 3QMH@C($` F:򑐌$'IJZ# h.Nz (GIRE)WV򕰌,g9s̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:ru@>z&zPhZ,K@~H5б)P !Q,ͨF7jJaT`iaCQZl"tlHʔ\#rŏP|c1ECHGcf8TJժ}uET=I@؈<(Gbb#Q>t5.yR H:ӈd?8 D!X*۔ʀ.PsOPd;sdnwI# P0;"Z%ڀ2!PDv4`}K`b*Z1#Mzס yÇU,֮[@^]An"~G^ $z}G1D%[A:P_/F,8+Q2m@I^P`v#Ip`0-hs`BP>π. lR Ք0 .]]1rfa5zHWwס m@3E8;n@?6x# H PGkB= Ў.F(>xO41F MDPG=ȐÛtCښ.rGk:+Er u:<,^/Q$?L)s:Fach:!fmw ?ϸ[A nPD@Ɋb܋t G9Ґ"Jxu!HvE5R7fMLjÃ*w7t(M>taa@ѯ(l'OyUVJDr1!C%b2'ObPN*ùJ+s|%,ϼ7h\PG1򡝖D ʵ΢#t&8GѬˏG81PW+ȳ01t,렜b,v sԃ#&V1)wGb8LFfZj8`l 6G4t2$ #]o(Q&p6 xxԅrDs(bP@b-$UP(,+Rw75sQ|T|1YJ3%j@memSe#((UYmoPr`+0W(}H\Y2-2z8X4hc ?b `i@6` 1c_ hT/EO1"2` G.D,;x:1h1'2.R+%/t,-3?3ؔNϤ1%-s1~Hh$|wprڡop_"i|Aw"@x,g T"lSSFa|c7#1!#73v-Qp#87J92195 yIJZ1vUVG>76`c><5z}Pyn vV?8j I<c QAsQlV = `;.՗z?7!"0PM)U%s;0 ٜ# !CBQjb@pxuR@=C1q@a4hAX[2@#p/YFzԅ2Iv6S0(=@܆q4! `Cao[C!^PD!6I!<>|r (A9 DCB(1!i E"EcRE7m0imDcO}1Q3$iCD;qGx 0D`HCoʺ̺yJڬxpZzwGj^Wz蚮J d:Zzگ;[{ D UP["aQ۱@` 1S%%WT2;Gz3xa`neQ4{JD[IFPbqIttR{X+]K8Ԙ@}`[f{q215Uo~i\P bngr6Fffg mfqvw}yg[kU#!JkF=%$ C w0@pArRp p Eq殶;{N W#XrQGx'ЙA1 ' ["y֫wZ^; b0 ci7ۑ>z(@ HQ1\"`r99%=k2rH</gO1hma2&#&2<ĔA8<,!,8B-hl..Zc18yŀU39@:TǢ<ʓoI+v@G jV7@7 ,VqAҒsD@?3d`YUܮX1aA?AɁ|H5@,#CWj'O*U u@-Rjf)Gv!3HH ЯSyI+}ѬD 9uJ"=ғ%1#$\@. /1 * 8:<>@B=D]F}HJmoP G XP\|1-s`bIxPEH# Rv}Nmk !w%!ͲDs1!Ӥn[|FA7GT@Re6g`bgN0@qּeװFX# zI|W3[^=+jpvhTxAXN`c`8?> !6tu}p&<<\e}O[mTA[Huj0lN@QCccP`.,%N}᲍ 3 FN P^Eb;E PftOԉuΨN|3~(A[Ca_6u@z}q2}k$1Ց9yKԈTQc6 !l@b(u@--ܜF.CX7Bq;@P8S))/|bp1"X!_ yE&4L?ɰg6@_.d.]%NXE5nG S0?2YϏ9ҥ<0`9t0םС͜!%ZQI.eSQNZUYnWaŎ]_vg8'\Q:Hǡ!zZ)W t(s/"` 7O@tP"JpЁ'QRt&m("i!Nǭ PԨ-y,N3Fq$s((ꩇu |:Gv@(~07Nۉ,xթT".PB](Gc9t$X7Y@ |^U ~^G]Vxava#x̲" ꁧuG H)Y)  F1 |B o#cDӁ(| t|gٙ!ʼ Lt'~i 5지ჟ `kt (@ڠ̅h~`a#q\R( \?$ l ?0b~zF.!C|%0FsHvs}w{wT3Gխ|G! KGu,>D^2$`ox5&H80 H[9J7KY lup 'Z0[ E臑.!Й@"P2a!a 5PSbxE,fQ[,J[HLQ=cbF8QscxǥP jeā=`LCy"(<&Rdd#HHFRZ _0XS8IPR$e)MyJT x!@He-myK\Re/}K`S$f1yLd&Sdf3LhFSӤf5yMlfSf7MpSx$FbxM#ENxS8)G^g@ǏAZX=PFTmqЂ`O 4Gr#Iˇ2le8FG07T1ęT;N-|ls,ԸX{!ѐ>Oڈ  }C@gy[%kYzVj`}f6ƩyHFLQCФV<Ŋ-A=X&V%;PZ!aEWV#y;C22v?@:FѦVe-պ!AۚC (:~E 6@KQ BQp$s sd= @]5b!LDС\ a I؅o}{_Nlu_:a`t,XH qQ¬^ ׅJʮC݌U( DxMC]%#/BH Hz[("N7;-q|d$Idt\I :`,Da `@, P7x”4Ēu|mC: p-aTGe$8LZV"0@ 䮈/C?C@ D;CA,DC
b$Nb%f]b'~b(h(b-bv0Аȅ1.b̩0c2b8=!ѫ1]x 6 >cDNdƒ>Yz5()JbsrbEeQ~#HZUFV,-\ɇXf:WQe_s* Yʿh}P-@{5Kcd>effgB.!# y<I|Ij jf7Vv80w!g~ʀcufgQ$Q{n_hB*قQxP( \ hiuikl1XQ :C,GXyYKz{uKdpiLu̺(\ $ptH9ٔYY] xt0u`Zruvxj ,XtXa/i V38,~x (m/SpbQw.#Jzz[ӝ@>c ޼9j][ Hv0 x[Q"pIxܱ !W#fπxmHM2١EȝvXT5f6Xwb e q^X3*X>捲_2񛀳(/u\Sxfn*_ι _7P8| } sF}z?:r_}/#ІC֯}6䋣SϿ}~z}7B~~_~o~~~~~~~7ay7 PvY <)O%v0ߛ+ڿBLZ|(~_{u,h „ 2l!ĈS7DQ=xq" :~,iRaȑ'Wᅪ-XҬi&NJC/Mr,x^:~8l)ԨRRj*֬Zr+ذbǒ% Fu]: KgnsJ5_Ks됓@,qxvA| S ܷ D BE(xbLAs.ùtH O/ՏVU : J8!Zx!jxPhD..^‰8oH@pIQ ŸC2\7HBd$ C'xG0Q#'h@GRe\O,҃YҖt k09T<0V[ƕ4 ;0'eCvcB|%D: D݌^:aF4qubL\!X:p`t?<p(@h ȫ @Sҕ.})L2 "em`FA5qtT 08wjQ}"0j:'<̆0F1;T BFUU`JA 85F<xK/A09 H RY=B 5(Ym x@xCFIG$QmL쁰zV G9pځE炋j1_I8 B; ېhh Mzkup]P6(%:=1ς \_/X3`aqb=@zHGF [z5M`85,)DhAMX`2FB_R15@8P3ƴV2-s%Ë9Ӿ|.%  v!݌0@c yc⪛, oF>xQA0&039c]AE0fP@| (Op L?ERi.C6(b}&[fA9ڒ,p:> f jD{ .? EE#\pE-uy~u! D dxa6؅ܹP Q[q' $R#/\A`rx="BP<:@HwALQ3$9st`2Zs^:fftF,?rn 𑎴i%3ѩ^U nfI3\0uH ~O#XG_J D"T\ ؁v xE< e_r5\8@;!CAh.qY#€7D4 :s]n4k'x /T:d_Iy[į@`1ҿ3AThC<@?4@? ȃ@QuDM91ApINDMP@^PmDƦBHEEϳ >\B$BA?DB  5>!FNaI|Ӭ :ܘK9PdB ; >@:!C|aar@(M=EyCda-̱d9DF9 \U9DHd_^jmZ:4b$gʨGAE AĮ ,֢t:ԅ'DP c.1^Bt@EάQX -f mL ?ԃ"tU Dc?<"iX"Rd&fI=.DhBtGsNQ`CD`٭T䱡8~$HH$I6LEB]B@@1ݝtΜNC&t[>䭡Z_XFC8dZ@4EDAIɭ ]alV#AF<j i8R(I_(Z騃P$9^@HDX6:Q &A1&5HEXD\g$&S$@>$99pSC'ɘ29"~D`?*L@٬C!_ 9C9¾$zz'{'D^AhG񝧬!A\(ƺ9,:fBtȘPDbp: ]{]?dTQ ?X:h^ :ÀU@:ЃÀ|D I&CPҨ qy!Es `:+,TlտdDAx'<NJD#/F đ^]'BE9\C)j'?IB [X  1h^XX]B|F.hhAT| }D#cl{**2Dy̜CmA@dFDpm$:X@d4&)&._] tStle:@Glf4M:@ Ř*jުC@,u :eLFø^ TD(M$.OUf=J2Ce1@<t.訧 TZK?dLpl9K@tZ,:@t,2B L  J#ʮ( I !c)QBRG˾Vi[LDAY:/I?|ԣAmAM.S_P.&!A—I:؃BHZ=PҐ^>l?('JVOhJDB@m̃}?@K;`_M]0 =^.Vf.9D䃻t # <6C$F2CR"HEhCn>H(@bY(}2~/Bi@M{6l`@EGMo]×L%VG=xIגD 8OdfmxϗT@p՝Ò1:Q:8@D] Dqt.;A0$:;Ԫ:Hh]Iu/k̚@ -AB@Cj_ ?0+p @gA:(B22C >XdD B8c"ACEŏl%9zdtqt'2Cqm]tm c>@X&E?&hs(/OF9̈R 9mBL@\\ íC9OJ8G\Q R>'/>7?>GO>W_>go>w>臾>闾>ꧾ>뷾>Ǿ>׾>>>??'/?7??GO?W_?go?w?????ǿ?׿??: 4xaB 6tbD)VxcF9vdH#I4yeJ+YtfL3iִygN;yhPC5ziRK6ujTSVzkV[vlXcɖ5{mZkٶun\sֵ{o^{p` 6|qbŋ7vrdɓ)W|sf͛9wthѣI6}ujիYvvlٳi׶}wnݻyxpÉ7~yr˙7wztөW~{v۹w|xɗ7}zٷw~|׷~ <\|% - 5ܐ=EM<U\]|emuܑ} "<$\&|(*,ܒ.02<4\6|8圓:<ܓ>@B =D]F}H%J-L5ݔN=PERM=TU]V]}XeZm\uݕ^}`b=d]f}hjlݖnpr=t]v}x块z|ݗ~ >^~%-5ޘ=EM>U^]~emuޙ}蠅袍>餕^~ꨥꪭ묵ޚ뮽>^~垛ޛ ?_%-5ߜ=EM?U_]emuߝ}?_襟ꭿߞ?_域ߟ X@ T@>)XA -^9A~!IXB)T YB1 i贀! ,fBBD^^\664jjl&&$ nnlVVT..,224ZZ\JJL**,::>@86(x$0tfİʔx\d\t`p@t ԺNf<<4bxtp||PP`0@0.l xXPX (6L*$LH@h~zfhbh|p|blh`ZTT@lĮvVlԴ `8:P`Z4`rrt¼FFDƼrr| vv|ĞFF#ԃ: tR.예Q\A.cQ4hЍ Q>O= N@?S F)TV Y@;3(O)N Ih&QlIGqvdPB=lO,`堄jj_wPP@E#iF焘A22dCֳ,iIp:*B6Īz&sF:b+[9ԓ:@ >6&HFAHn[SdaR% -ښAC:`,A>Αh Bx;8K~N𠷪lN;|PH@Zl頳uβ,@ @9H,>,2F XH6khO==C`X S@B)=sںM< @BC:F#]MhE@Iу2. PΈ<D>/r #h"tN03vAN9}<;G@3\ 7TPOl{H>:b  h?? C= |p%!~LR#tB 6  |C7O7 +1AzP  {$uhG2өT,CH0]@[ȷ zG#APG:p#=q | $ x "J>1IHA?aS rAIt@ 3 xZb @]=t.PRˈ8 % Wi ΪTHGMqӜhTS] 0:*rCjԙdũ0ZA@!}*Wdtjψ 耇Mmfn C )Qd)ML$<zO SE,EPPTU>7 wŪ@$˂0׹ `+ J[K$ЎVQ +C]yYdX@Z\ YTۀ\D~=-/tY1LBJPסulQ0uL-hG~`÷gLc9>' 96[£&Bt8"/юbYtY.X`|h`1OeYT)z\Y PȒ"⡎ҏGkϭ,OL=%ҥkbfC<%CAnI01A|ni>ǚ%`M;@·Y D0lHnkLb6H1+ (@*/1G{PAD8NԸ*H? v NTI(,yD*t YHN]9ɵ瀙)kƵNR6oynnt U^ @.̚lˏ'D O$J: @ЇsJF%<st ӨK'G{A4@k*NcS{_┓]] x?t<|i`SHxY:$`JvpIDO}0phL\3`Fu `CUCyH~O`@aRTP=/=g ~sqUc` W\5#/( fqH0|=G& y&<%ЀAd!RbP PrS*vEYP=PDp b}FgP @ q$'\`}7tXv @B7$3-@PQ_lB=%qaw6p$PpaP|MPqb @z!C"3ME$br4`pa09#,}#qRd56`b%WDld7a+`%CbS0`*PO !PS w A{?Jw m-qɐّNGP=`)a(Ph* 294YdJmlɽdW&p;}a;TE#@Q@ ef@r5u>Z$]ק)$ ?` $z`g0x% |%309`CDg՝u#5 }a%L l쀚qA4ce$,KA1ǯ,zY{-QXN0W5/`=d*0mtjs$Qbp@lH5үJ p3LI&mky? 0hNK/B'4l"@Ji>4lVz}|9pU[9ᚡD3T 83#l< e:zHI"@v~]z#ֳZmWz2:0SDЬeQ$B. d'5Z|p9,UVL#Rz5A%Ej* UpJdPbRV*b:^h*bP6mf@]$7~pE8+P`0=e&<eA~WUWAq@CEu| JWۢW ~ /@~//һR45!`iLp8dR_t_挫|:U69KPZ_9x?jֹECzلQ3m{%ap@!5 Sz@ KۿƗ [$[  ~^6 xA P@ 3s.s`._t4AdLW! ~x~6.A1ń5Q##<%];8B nZ%_kF[Wтz&^qɕ/gsѥO^uٵowŏ'_y+;$p|`g( (xz8tY t^8Htz8($bAިu0 K[IJ*Yzo͉q ijQ9:v8(hP*!`BZBnz:|xe3s.-ĘAzAG xh6JHDŽ| f O@tPB 5PDUtQFuQH#5@K $` @,u,k6v1~` q 2` $G0@ uUuvvVY9 gbg\zu$HGplH "4(H "i ˭tpX ~g BjX.QcڠuZ9J /%yg{gzh6h ~.8 "u8Bqv68eꁧ )&Z~4ItF|njǞ|]G2$ꂾ)4 %Z.h 8 0f1;8@G`(0 #-3S>ʃ!#SS3_b8& Grn 0ұ:EGMuC b`z; $M$` x@&P d`(Wh 97 % @=-XA΁ w xtdoU =B ;a=L#( 5dޭ8a\OV~! d~h1C9F!~cdRU3"FA!M@r8pW:F&+ I.Ч*@#T@:Z0/bO2Љ 'jse/}K`S$f1vaЂxF!SӤf5yMlfSf7b`=7yNtSdg;NxF 3 3g?OT%hAFƝӠ ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWn/mvWlxi^D%)5nrg͍{!4W]j.Ӓ~(`1$U698<8s #@;OF&0@'GTc ڡ%!]7HgͣNc^WEJB\J}U+:\bg`p$0_Q(':t$4@P]at~k8ʦN[}v{P2o- ꓵCv ^Q _iJVcS0pKθv<` u oJ`(co^r08͗M*%gsηM#DoxAɧRA d5aj*AT xo$Lу }@G>H=MYZ= paن1Pٻu\o:(R/h 3N.TJs#s#$ o/S֌!c@*ga.s'k:LӍ=e?;խ8+L!Uo Q"|_ B0ȃg_ iu@HքUJI8+ ,Mp\߭(%1iG4 P.#1(7X8mАph+v!28h0+Ѡ:mvh x  (80 `p'A}AuTd!(GB(Q,$NDsx@~E^D'b%' qfy 8bf_D' zH `p\ ;p(\ /i`G0! 09\A1qS02 I[~z(9xXG OA4 uI"Ȅ+S"p[4,l q$G Cc$Ĉ`F@#Γ# `9l x`t0(zx6bƵ@~Xa1 KP61@t3r?i s0œȃxqt^ L&9 k|m N0́0nHRYDA\Si (/L|xP1`Xpk"c bCuH,AA{Yc 2XL8h!c+J(+$MPM `֤dt ɬ!ǃ0xQuOm]1K u0t vR\$P YBM e U҉sSϹΓу9xutLR%09)tͥTt- 4 7I<\m$, u(Ș7 N z ~؃?B<Մ t<?p$H׉4Qс Hm ;kTA-CMԹASPS8=h@ ,],= "0(PhE 9%0C DT-J1 2 =H-EL>c@@EXRzWa"6R~0ϡӿ8<ɉ_J#t@?@ "S( o-p% ZSH5DH7Qp%ɨ уq\ 4|0/aAwSC]q2J]m;00L] Ҧb`zPA9Y#]WyX:#5[ $= QklR*Qyt#{\]5$ Qz~%A@tKSEum"n6% i8S8tN7AW7KVPU`h-!uPz  Vd'S"2uH gç̒-! ͐ B( WRH"f 9]+ӱ8SQ@m XԄ hֵ 2pa>e7hpI3Au79 W6q!a MSZ`+ `^#V@ཞ|zt7%%~>}qdKha֘s@"#wyuxa P`bbH[fyhj7;;f !E % lLXiI)rb_vy%pц!rd* I*{T~{foM'*< d" ?9!fI`B  ૛10fn ۂ7]ѝ ~(Yv05m(``tf갗7H~pq|hٴ驞4d y.>ٿhI!D؞ 3Vjih+%$͖ Yna' ~Q݄!Ai#Xq?j`7dk;l FVȜ l=A < &@du遈bAauhS2uXbP)AhqifmQ Q̂0xHx#9z `[<P0#,4] 1cm $WX46\s R]CF Gl{nߍ D]YI̜Xs1 >q h{ޘz K18'A#! ".#U`"~p"^y"  u0 -Fdq°+:,!n/q5 v07"#x w09(70Hz3h nE_trbҀ~4'G&h" PatN}Ra~E'PS7 }tXu`'SP &Zߦ|B['TuY/vc/&ui|u`JvmJu)(8vlvmvnvovpwqwr/ws?wtOwu?.b[:+NpwwuC ~_w b a`šC ?Бk<@>6Ȕ*Wlr`t/bJǙ:w”e̟)MT(Ёb(ޛ]q$Sͅ~oȟ .ʌs&m-ܸrҭk.޼z/`.A uj8,٥xaz6^VanaoqA5RY"Kk8?;72BtouЍw`佗_JCb̛YN@!_ٞf,1tbӿ{]v)UA5?1h:Y$|Q}uQ_5BYW>E7]u ?h1@=Cjx#9#=#A 9LS 9mQcL*NPtTG!RL,dNeICT9TqP@'}E .x)B:f=pdS=(=6-$EW/deKFppO.R|r]>>jk  RDFV:!4꡻Tk^KN^iHq-eJ ʐκz-;.k@= 0>#X!ac@0h$ arAZ\N> B<+$H`Nc\SlN;$* P !LA;|H%Rv"+;|Af< n=ԁ9=A1::]PrF] t',%1;.~ L:-FB:vp9\MN?@vLvD$ 7 Ď x">p/9$ԃD#ixJ%׎$1c:{ 2#z R6_ɏ$94[:DX'Xu`dZвt2x&ZHԠ2Y-X3"x`b#>.6a|Pbҏ= 2 p:W)!S&x-s c׏s`s H鶧pcv0O%JYӞV1DdVZ!HG;~DY`~L`1B1)H PG !ZI:0~%Q`n@G7¢-LɪX¤cʳ*( Y@ٔtSs ?Am !.R2@!@?$ЏTc@?Q0&;I B`@'< CԴ&6wɇ GRr#@>"0x 1~hL'!QL1d Lۘ]R!U'a1Hrd-S*(R*FwyBLe2әДK@086Wֲge25F`e/g̳p*:8L>{ S Z{AWVFQB+/ Z&t-;CېRA@H@,WG=J4%5QHbCCE;*WĽO  L_=F6K2g)@r0|0"jai F@P"T .DۣXW]v]8bo>[!F>2,ԭ!EyP7b"tB)uMCzCrԦY:hȎv4Eħ#F[KG@aQ%S*%T.EĂb!x Y.2N f,BODhςާ@F(Miwuuo*_Y&rYvV\2ā"i>X AІECh!)'C$)©C9(\H9x?I.@եÔvƴu2:XB@=|d@ô) 9d > ΈA 2#A$@C D<𦨪@`B /jD3]PGAN*C<ժI\P17ɤ <)PilD.0P>$4c>D]P<֯)] ' (U>$[,_,6x&GCL\32>jj@2<4B$H</*:CЃ9|,>ďd',D&>H:BAX:9D.Na8Qq :uD~y:c Ar( Ԁ9`=@.$BH(qĬ -EF->. DKkHG3Ub˚̮x ?PPڊ:p&{CBm*Ht+ (9Y.֮#-@߱PF9\ (CD?4"yFAd4de߱`ةF%H0FX"JC0@T#BIu:)FA$*@k ʤACzzƵhDM:.`=|/:ppIb?KcB=A!AڟLZ4Y>K @3:`!ecm$׊hnpbdEpTo=\mho,v+ ՜pߓx:4! 7D4&A@P&496mK(c a; p3D<{|%qA$ eaB݇ WčVc :*ߦC DZ0JxR=4$ˋ׌9`B"KD)nx|oyS˱9dK6o37w7F)FpgрPAT<&R+DD+kD+ri8<<•sOqJ@nhF4EF/:&}4HC!?a< >?( pWF3@r10v2A'4H3< 9DŽ?9d 1LRF:,bt [:du,WL'@9rA4ecp 'uCZ@H/]:Jõum酮Ƴ4륃Ls@@ n@4qeO <GX?X:B-C?ԃ&pf/>|Wah M7MC$մl BFV@@YhØhA9  wHj%%*;)&6Μ'[>ĕ{`cMwiW-ωan#ϑ|cj3D@:*A`zzr'(!< cCt)O1tQ"~(AshC c1C|aIB F򁨀ё vp )Ao;3| i)dIJG6CZIa:릚ktJAtd; 6w'9gH {*Â!#ujA @@] t2-Ȃlݖnpr=t]v}x]X4̔]V|H]n#5ޘ=EM>U^[t-sU`*WV6I kud?~ݛsNgg묵ޚ뮽奜nRp#v`a5,[rޛb ?_rmn 7iU) 5sSemuߝ}?_襟ꭿߞ?_sx~U|.e .QG H6k;!.e'! |NR p YBogrK@ĕ@c 0"ju) i*\GיH|S3Cr! @D.r$!CŨ<>1"]tTqW"]rÆ7:<"aHG>L@ dI?u #Љߕ?(^DxJqQҒ\)u&$̘Dr"P:NEV\@D؃:ǂ9bҕ oi\hLYqJT:ٙ._@GoĐG7-0z^+` əg=‚r 1إBAA n>@: ud 8ش͐uzOϏN{99d>PZT8A<~`#hevڭYyKlO˕ԥ6*U՗ԃtQQX^@= Vr)*% H!تCБOf9MqG=!NH` Qx#a.YzLPRJ#n%ق !HG0) F2prk ĤlNzK$쨀r/CΔ90K 9NKRղ %:0pZ .WmvWSiGTƈpGEa 0u!z/js.l3 *D՗MM*|@1/}y5^B#)j~lt` .1GX 9ƛ!xg F؞giI|,5@:xf\T91OAz "hE9]== FZ9!Iuqyjj۠4x&gLH}UFbT5G(L/QuT`'r;g(AJ|L @y$ЏPCG?^uӡu rTKpuDPH %B1!x :Q6"[S QP+8BժNpu< 0(\6`ò߲%5q܎UJ!@A;F@a)ߙ!#S =t#(3c:E \J, (uC8Cc wkŐQCZb0G돠.C GFqN=6t@!''nD2L 07ыA @ԯ/ bWKץ3Xz  $U ^ 9Ȁ݂ E9@>hc .Z$A΁!Thdҡ"Ƞbn D!:ؘMlW,֡@-.0!`i& :A @?PE/?`3L"O PG*$@(p %NpRp B"dI\F%kϺ`@s<9Aorl!v/ !A ;:M* | O 1!A n>CQF,@!j%hB@Ed"c+N!$""rm `!s'! rSL:08j8 ll[@@#A"`+r!!10&*j\0/x 0AbB F3)C٢0D؁mc!ΦM`-RIIT^t,z ^ಬj(2;uX~q+q!A 3%CaA-"FE >s |M_)%NJJ?T"M4\b3RSFn-t, ,a! Z :SBS!`Oq,a >5TM4> NGT$r{9RFU CׁꁔeY֍JAIA1saNP/1?j ~$TC._a_LYjM 21&Hb7c?dCVnnP @E̡b*%Oo[9E LGxbpI"!5"^.[ .2><JE% >2\LPVV64BB ~BFqjf9̡ ` 6eJ F5h !an"Hikscvt[^8NvpN"FsN"cKsCҰ"wr)7F!ij 6w3AС!*wvСZ=0a$Tmm-r@xEV|Ǘ|w?cC" BR($w[%r-`B*ABVBX4gg(%Ip1>` 4':-it΁vekѶҷַB2>'!sN'nD;,HUm F`" +!s6 W *:$ت&*@dV$.D[jC(-w!^pu*v$Ǹx}+.ԁ NnT Y!1x[3K(&nILʡV!Vg'z!4 x~A&8I1gR)m 0x$~).ĵ""ST!-v|1@\OZ ځ aFA2VaJ`ArIzx ʤ<^c#<[WBQP~( cC#4D"b @ʯھ~<7|lB{bUV8gQDB|1T؋؏}xnMGّٙڣ]ڧQOaGExڻۿ=6`~}Ɲy=]ם;+`}y]_ߙ] ^#^'+/3^7;㡧&vbg䑦?_!>H\IG D91铞 I[|c "i2~c^GT*~4'6r{&@f U f~->cŢ'f\?d vރfb_7Gɘ%Ğ! R2Wad$7*˺/>l ʰ-z`ءTL)l.AʂS٥rDuqPl1,@HW !a8A]6 /G(嫇Fz/t^μgtRt@n eRNIeV^eZn9ӎ:Hdtp;8R6`:}*SR,PO9FCb:SO(tC,Q;G+ T<<)cN1b D 밓Ιq$B:H$q9devs知1p@ 袍>d؉)?)*K*]>D$ qOLq_qoq(1J0ԁ pغ h gn QRI:@:ԴN(cN jC1`|bQs+]&3QڇJͣ AĶ0@=՝q37S`RN(m4HaOMtR R =QGs55t=SD 5=z 1>TA&l@=@=[ {gN=~ }OO}_}o=Q!ѠHD=d,ANmKrN;=9G鈡#DM"Fq~5(`%::J'ҷE\ $צIolfI~Js@3e3ّ(j,bbI/ڭd=:єs< a 91!`GCq9=/E/ьjtJRԆ$hŽ $ B&@«p)@=DTJGIh;MΡ ^0UiY z=?ȵr @5oj0GU֜˩QH$X)G0 /JÚD Ў4r\Z"O"E=jRDhw#'6mD |/0<?ԱC$Sv?X5: s֥n^ u *@SimQLݭi-44pLu.5afq'eDsD2/=G;*2+mp !.` !=(G]»)@;,ξ- Rw /1vl=ŽÔϯk?Nr+o<Xr!C(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hhȉ艟(HhȊ(HhE}׋jwHq=8ǘBƌubθ'd "dXh%8ݕ̶+ ~~uΥs hn*7[1Qȑ!XrPo ]~0kc'+Z.I>Gai1,9 A~6Ci/֑MفVkBS+j+6>I^_aXXy[9c1eI#Cԇ·g+E!lq~YIs՗NXsv @P&V!LS$Yci긍!iirLhQuc iXa[r#I_Ôb0LdDL@yV+00ga8X{/P`_@]L [P?`7{qU6y)P QiuYIV62j۩#`b*џ&X\V{ b+PIޡPioP02W9(:%z@N08!: zO "@$ /0$8Р5qrܩ:c:'+a*Šq 0`bg1Qkz  J(CqZ0QsPꪼԩʥ W@'@C#6#:/ :6$!1q # k `rp솗Jq%%F&)[P#7;$!A#q ɠg3Q 4˛0U09ďI1!.QCP Ŗ  ۴SU{O2+O".#CC۰"=+4?+!f갶jtNn\#0$6cl8F9 me3“ N;!) y6ê6J ұI˼⼏7[+{@Dqxr>P+RQg݋˱P {(c{9A^S%:i?#~ "?) .R:Aܨu~9#O&W&vM/|J0AP %PP;3>0E%ϗNXL j_5 NXO#YrSto  ?wIDն%"KL3LۇN PhGC4 `odo /O;ؽW7w-0#QjjR@"'{?LK:dU NʏfKQ$aAQ> CNB ٥:5c 3ǰ@:|*1@B,+&Fc'6qփnIG,]”Isa7H Q 4g =ĊtpEHGĀ!Ó*Ֆ;>ĸ^,xP\… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥM\:Ha8/݇PA6D+p:súfSvkav*H'wW¦4tK᧝6kQ(=!1Rt:!5j!~`0Ϯ-L|.u*gDb(N!+"`); X{ t Pz̑R!Yq1tЁ99:(C 9\Rz tl[ȹ4D9dpQDĮr(k:u$%kN!"#?tP5O ptT`tԙN̂/Yp~,^c2jX6(zvɋc iKX^瀻1y{ e؉tY,~vH>g<0=י# #EpKMzq, Z#"ڨg(<w[4ds!^Sj<1\aE8BЄ'Da U*)tTbG z|0z gH(@?3@eG%v8@=T<ځ+  X0lIG? Џc@>Z{|rZ>0dHp`zGͤ`$( qwu|ФaFb(f/ he1@> $I<\<tBxCCТDu0q]H"$%;JZLѨFs  oN ڱANbVb2((gC|H FZH \Dh7)U)Nqc>?% kz( AG0 d~C xf̹iw=B͉!K!K՜ Uֶmnu[ַ ?N!LFNV@(vsQð etR&RV(6aaZ0b^M QC$b|x;MjGz\ˆAcmJ@2x9\:, (1bBL9GG0,.`쐂l@eİc1qbT:@b=qg] Ո@J"5;P̽Ԍvt]8HN>4̵%luD c0;a~xđ6 e0/6p5qwyE>$GyC4-ye>s7yu5^ GGzҕt7;ӥۗO[Uzֵuw_{{ve?Ѿvo{>ww{w|?xG|x7|%?yW|5yw~4 =?zҗG}UXtJs{k~?|Eҁ~P|L4H.p`?~0+U0omH~w[ E@X! &p@ߨ 4 ^5tAE|iK Лxs(/؁r1Bb` pr Zzx²Boۀ` ۘ D #|pΙ,1ę8TAUt/,SBÚ>V C.sp7QHMN) u)=Ӕ,dG(M5)!(G! 7<S,(0@&b~~zB 臫P]_D P`)@FPFf\zPoyG^E`d98`HFā$Ȃ4ȃdɎQ(UEeFm4eyCy} :ULUX IٛX(HͳI9s>ZUN_ 8(tfugVb#(x >r@ pf(P(r#xz* ) \R(=s(q EΚAqJ$sRtJR,RWt8|#J%juH1$]<Ҫr'WЦ4җSL ֛ٜ0~LPЄ3zT<3Qn{51JQ(Tu7R_ ˜r~9 S#0%.z\*m[Z1/-2[%-{ k𗝕ɥ>R%5jUeuݍו٥ڵ%5EUeu%5EUeu&6FVfv &6FVfvaq0h܌" $ xq'r#RE(.V݇(>+@.t8X(HTxcx9^8 BNQxxx $S/MmXg7/L\=I8v8sR IK9=Ơ< heDZI>ތ\ ':r- =Xx(Ȣ 0#x~m?l杝ÝG8*+WMX煐IR5oV e#QmfVT(-g XXmt(=<|`VhXxK;0 (hu0HNS{q&Փ&M,? ' Of0<xo/GLP|PtTN6hȖ5.kxIn5?wW7`uxXJpV]O sX,@-5 `qnjezT!ц ;q'wtdsDNRZD(PzڀL4z 8’$fDsՀK1x05[d2P& qrltHhhtw/7+j Ou,ei>/y|`;`rE (̲ز !(ƣ ,)S$0~`@vΒДj_" 1>G+쎘Ṫzbvk舀r(+l KM{8^~0{C2KnK|) yz)q4{X=7' *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy3Ξ?-z4ҦONz5֮_-{6ڶoέ{7޾.|8Ə#O|9ΟC.}:֯;%~8)YLxWԃ?pÁ{rءt N|@AQE9o!A'D;'J:OE)H#OspP.3td89$S:#YQ.Eі uҒBTwUdx$9bsYgp 3N?0)G#s;E JF>* QMqfASHjjAGVDKzdkBA*@Gڝ3jB93Pcm[P u04"0a*EJn:  P:NܥSM+|6įNZTϩ[#/ EܫJߦı@?Ny<J+2h3@ >_sItsi !{ҷQuO"tE%'AaԿ9DV_ R iERSMqC6}{4.^):H9`0>3B=l~n8'>`O=hm@=Q +:LE y:SXPP:LN">ys@#cx1>tnC<M|F$@Fo(nQ:88ouH0t%|8rbԯB]xXTC7ugzѿ~ A ;dL"@:$dns#p=x(lɣnȐ%vͣ^A :Ч>p. r{9Ge~XO Pl"y^hTc@(B>q54:r S: p@`+>0;:8D{p.~q291 M C|VGInbeW Hgc"0ArB!zH` PС-SG?N#Q1葝t"!(ȰuIdJ=^ )-Ӟ'AP(uhcsj6D lG=0:xuvTyeXE4CK쁭G9P@ g0u0 @@@J0bѝ `ZzG @!ǣ!Օ5><+~@ 3asAqJGB9 x 0G0<NCCubP"g1Z +4qLO;`~pfT:rbY.떻,24X3ȏ6yӁiM (k~`!o4M ӟvI}lZ$cs.sB`U9#88h Uscu g-~qgLDtP(ٜc@>~.WiY,l+E,ډNzl^G1}v1p\:`&_H4- q1<5Gh Z}UIku(q@=L@"#_9>$_`$ t_7,y 0 APn;\@Ay#$n $@-L m_Aw G-7-? PsIku!9NA)I@HC;Dϑ,M@LvL p% 9A@Bĝ Dё $5,YRLV?lNd_/ ۥ5ԃ"tԚ5RBL]᳥L8mC4AyN')CH<DLJTD<A@DU:Nd >@)!͡\"DL.Ƭ9((NYP]& _Ld2V )&ص≟&4L$:&_(q f'M#W m2c@9[¥@ALӣ%ʱAbe@`d5湩qNr&:g*0f=&(Co."TC `CVhd$g $ՃR.(R^O=ਈ~d drhD,\C&. (Bh=Ct?ǘDta9m@PD?( rC=.wf:9@|<4&@YRjAJ;+ '(`qvg{D[ g¥v:D vCd%!)Ϭi;IQڑ~)i"|m4m>)A_%D<#jP`ک@:`N=(&HCCAf̪CꩵiDp DCA>R:ތ)EAT2 ]#:iNx+zh뼂8ΜbP=` )6Gvg k#@90P=@&DԟJ7ܞĘ@;8"N:ĕ pGpC%páhe 0l?ll~9 l =j;56IC,9dCA$dEA$!f) >ChhjrJm@DD  T"+ALm5j7d%~̚ T q%CZ:$] ~C.$୘$Cd <H/BD\8S>AY.@?K2VHA?W2D88/<C P9sO1@W*>²@hH<f6 YBf!m9D@ `hI9 pGo%U$L0)qhoƌa@ ^b?@,@1/#ד*a PPI@\@A;l@!3(pCï'OT?oB *+1Kyl%$8pp(0DYxqHLr{{k[ 2*2<:t=&$CCƣM ' Oy :\@v;o2C2/| Go>C>s?sAhL$oFkt*@ HHDaP W=l:D@:C VǤ SGA>$.G`OV \\oB :p@ $& ]DtC ݚ4\@ 90R>ԍ-| >BFHlV.<5A\S HQ'"l !rn(*1:8)>$9PA`_rB0?& 140ǰU;S.9T5n/9%sJYHf¦œ^ NaA:t@H23u@`c 3ləHujPDvww:PŶ ;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c|ks|{dz$;6'C +ȻüEIH_DjvxK|T_;#пėLJ@/ 4+LМpcoYcCMHz=\AHR#)鈜+}O;I1ۗHj:pHH1 i@BVM;>I \=hU]U,k,M 1ۥɘ݋~۫@\K E D$\$y I9X(iN׍]t lN3{qTɋ޼D$CA0A𐫼 "-إ)1@ D @|X7TaC!F8bE1fԸcGA9dI'QTeK/aƔ9fM7*Hg t֝+:|#t ] mpsň^W@Х-\o_GL…tZ=׉u.nU[ҵW7z#$[su_BSҁI!@ .ݑ`s avG>zuױg׾{w\:|s0JvPOA(ҩCA%Pǀz> siKvRuJ^"#vYOI`R J26PG\1SS.<{z,6kt;N6H@Jsj8+LS5l7S9鴉5` u u uDg(k9@ "xLv.x!v U!! TWa : \B੩LG6 (~ hKzf\_2%.,lJ@hGe +bMWumwWyMUE:-'r(y|2Au*mq>Lc*ޑI zjDn<ڊaT ;Il,JkHJ*䫱Z뭹,π+Z*v+ `A`̏t u~E: NȻf[5 <xN"IFCFgـ}iFGb\/ONy~Uh񃅂/ܴuޮs7rϱ,1ꤠ>0GR)A?tiGL`@F7JVrQf]nw ąrO1R%u{_ΗMF^`6LT7 v!a Okbp1a oAb%6Qb-vacϘ5qcڹ~cWO򑑜d%+D"D! f1*0Ha 2pm%Z~pr:BƤ*QLaSG:eN*Y@1 SAjQ:# "qtt C ttUC9AgX'A&9Fr3zN{s :Wpu%lqc;*JKv̭ >t-`ƢCo3Z"P)7_"RɆ@H6S9G 18);AM49@9JEmzv0Zd vL-HyQ2SD^v;"Q@;\q:40zCRW]zۅ&>i$Uߍ.qBhJSt)+KYì-Q$9ӰRaȲB% ^cG@:9v``1$9M4xoPaCW|<$S2M4Wqa`Ot\zPA b0?$BI1OR{ M!D5~K!1ٺ}I HA @UdGFg"J`-0!LD@DZ"EZ^oI3z!ީ `b~O b" Vc.3O֡dP` 6&.[HTB *bԣ-r(0Q8I!f! U"PReU$/.H>"?||EP>r`,`(Ȱ&`S aDq0sDIDb!GZ-1 *!p5Eަ!=BS*//*SCB\ >r&Dxkra.dJ'2Ela:t"(1`IlfDtO4&6!;ݲa>aL" '=e2 2(* i@ &h8r+ $*e0 vAAdΓKLׁFA 62 5l D0AY5ZuZZZ5[u[[[5\u\ɵ\\5]u]ٵ]]5^u^^^5_u_Ut( _ `@_+b% a)B.#bT2bj`5vcyl% o!rpFSa`8`" B&R0e9g}VL Rm%R"x~ Z '% #g", u~k6-[`4%!`5FojM#֫>7"k<b;UkoGdآ {N!D"f<(#`'W "(PҐpA7tAl@!@\ -`F@Yl\\z 2 #,c A3QTLc(f n)~ðĂ3-op2ab 4A3 >B .!OAj@g@N1Jt7L,tٲv2h0 K*p(Ȁv$r$⡫hg@ЁS!9"@vA"dBzD`CڮR4#o<,Ns}ӡAځS "*8X bydbZ( +-Sg[͘m`#V2a_>@9x S $@Y4S<TDc"0f?yL~bmRQp!Tex&#l*Ўpg!( K׊EyK J0*$)xAmCxVPZA68Me*E74b4`\G!v`YgQL &㙻%bV$>yʴ!0Rh_M6 C\*dÌ UZ1#m1x{A@4 o%Nj I*22}&Ӡb$r"]9%S7Jrg r Jhx:4#!q%!*"|}ԧاzzgvْ/o]q ^&r׳ <$<+@ ca: 8(1!28lpQ?H嗛$k/S! L" `mذ֑?$5 "h b xa8q;",Kс+ "WSag+ `hk*F=8 /Ȣ=;fgB>ŀ>%:ƒA IH!ڢT!b)}&V@Š#7 Evہ &$E }ъx [Xx%1bxF*-V=Q$3~t H-,*ʢf2X\G lF"K*KO\2Yp:Rjaf˅9P]afQ5|S5a2`#;](R;Ć IE\C d44UV&jV%/{B3"3FBQ=Uݽ@@uVa=VSmq=u}y}ׁ=؅}؉؍ؑ=ٕ}ٙٝ١=Ⱦ2`Vڱ=E V&,#lSbNbpOcݝWZvmfkgG%,.]АV% M!Pfu6ٛ׀MG6GkiuDT #2Q>SO%[%z"]Wn/{m1voU>賽qk_3|"V.ךKsS>8nNy)yz8"&LȗtFY>X8yǞ^z"-/R)L!|3}}!ua^75ؗmoSVfP|XQ=5.@ D߄U8AP!$G`86Moŷ^QoۈXuU7y}%3/0X- L>9bk  "fm͟O uWº($\G<ֱkwIċ tE$uD qt-#Ŵ``@ JѣH*]ʴӧPjLG# "[Ha( @DKٳhӪ]˶۷pʝKݻx˷߿  Ƙz^Țއu (B=Aq: @d]lLdحn3t6.yQAY9@ᘦQGTͺetËQy["@7"Q|OϿ(A 3P΄E*)#_Dt҄Kb(xQ=1O/QE:ԣH'fN>LЃQ1+փ9$hvFEQp9vlp)tix2嚔-%F/pZ9c.Pd|hSfD]?%g:`$ :.#FI\eO;`Eii ?PRR1<3 `\zv+-;閘r+_cwEAVȻb;\t<&sDjP9B:j%EԣbDs?hD<, fXڒ`TIdeN;ڶ@-Dm ϶NڎzWO;$A:EMG).Fd4@h e?dhgX1 A:E,ad1=Y50vL\NHG^ C989#)褗n騧HD.c=`!:P{?dhO  G>p3n{;>|DL2gD4:ޔS#FZ?H@H(7`b##c#2J@=9H9^, GHpMfȭ6CBXߔ6*2 (@ءx]QRX. 1BC%P'u8 4 ؏M4W~t|KG: H:a 3QMH@C($` F:򑐌$'IJZ# h.Nz (GIRE)WV򕰌,g9s̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:ru@>z&zPhZ,K@~H5б)P !Q,ͨF7jJaT`iaCQZl"tlHʔ\#rŏP|c1ECHGcf8TJժ}uET=I@؈<(Gbb#Q>t5.yR H:ӈd?8 D!X*۔ʀ.PsOPd;sdnwI# P0;"Z%ڀ2!PDv4`}K`b*Z1#Mzס yÇU,֮[@^]An"~G^ $z}G1D%[A:P_/F,8+Q2m@I^P`v#Ip`0-hs`BP>π. lR Ք0 .]]1rfa5zHWwס m@3E8;n@?6x# H PGkB= Ў.F(>xO41F MDPG=ȐÛtCښ.rGk:+Er u:<,^/Q$?L)s:Fach:!fmw ?ϸ[A nPD@Ɋb܋t G9Ґ"Jxu!HvE5R7fMLjÃ*w7t(M>taa@ѯ(l'OyUVJDr1!C%b2'ObPN*ùJ+s|%,ϼ7h\PG1򡝖D ʵ΢#t&8GѬˏG81PW+ȳ01t,렜b,v sԃ#&V1)wGb8LFfZj8`l 6G4t2$ #]o(Q&p6 xxԅrDs(bP@b-$UP(,+Rw75sQ|T|1YJ3%j@memSe#((UYmoPr`+0W(}H\Y2-2z8X4hc ?b `i@6` 1c_ hT/EO1"2` G.D,;x:1h1'2.R+%/t,-3?3ؔNϤ1%-s1~Hh$|wprڡop_"i|Aw"@x,g T"lSSFa|c7#1!#73v-Qp#87J92195 yIJZ1vUVG>76`c><5z}Pyn vV?8j I<c QAsQlV = `;.՗z?7!"0PM)U%s;0 ٜ# !CBQjb@pxuR@=C1q@a4hAX[2@#p/YFzԅ2Iv6S0(=@܆q4! `Cao[C!^PD!6I!<>|r (A9 DCB(1!i E"EcRE7m0imDcO}1Q3$iCD;qGx 0D`HCoʺ̺yJڬxpZzwGj^Wz蚮J d:Zzگ;[{ D UP["aQ۱@` 1S%%WT2;Gz3xa`neQ4{JD[IFPbqIttR{X+]K8Ԙ@}`[f{q215Uo~i\P bngr6Fffg mfqvw}yg[kU#!JkF=%$ C w0@pArRp p Eq殶;{N W#XrQGx'ЙA1 ' ["y֫wZ^; b0 ci7ۑ>z(@ HQ1\"`r99%=k2rH</gO1hma2&#&2<ĔA8<,!,8B-hl..Zc18yŀU39@:TǢ<ʓoI+v@G jV7@7 ,VqAҒsD@?3d`YUܮX1aA?AɁ|H5@,#CWj'O*U u@-Rjf)Gv!3HH ЯSyI+}ѬD 9uJ"=ғ%1#$\@. /1 * 8:<>@B=D]F}HJmoP G XP\|1-s`bIxPEH# Rv}Nmk !w%!ͲDs1!Ӥn[|FA7GT@Re6g`bgN0@qּeװFX# zI|W3[^=+jpvhTxAXN`c`8?> !6tu}p&<<\e}O[mTA[Huj0lN@QCccP`.,%N}᲍ 3 FN P^Eb;E PftOԉuΨN|3~(A[Ca_6u@z}q2}k$1Ց9yKԈTQc6 !l@b(u@--ܜF.CX7Bq;@P8S))/|bp1"X!_ yE&4L?ɰg6@_.d.]%NXE5nG S0?2YϏ9ҥ<0`9t0םС͜!%ZQI.eSQNZUYnWaŎ]_vg8'\Q:Hǡ!zZ)W t(s/"` 7O@tP"JpЁ'QRt&m("i!Nǭ PԨ-y,N3Fq$s((ꩇu |:Gv@(~07Nۉ,xթT".PB](Gc9t$X7Y@ |^U ~^G]Vxava#x̲" ꁧuG H)Y)  F1 |B o#cDӁ(| t|gٙ!ʼ Lt'~i 5지ჟ `kt (@ڠ̅h~`a#q\R( \?$ l ?0b~zF.!C|%0FsHvs}w{wT3Gխ|G! KGu,>D^2$`ox5&H80 H[9J7KY lup 'Z0[ E臑.!Й@"P2a!a 5PSbxE,fQ[,J[HLQ=cbF8QscxǥP jeā=`LCy"(<&Rdd#HHFRZ _0XS8IPR$e)MyJT x!@He-myK\Re/}K`S$f1yLd&Sdf3LhFSӤf5yMlfSf7MpSx$FbxM#ENxS8)G^g@ǏAZX=PFTmqЂ`O 4Gr#Iˇ2le8FG07T1ęT;N-|ls,ԸX{!ѐ>Oڈ  }C@gy[%kYzVj`}f6ƩyHFLQCФV<Ŋ-A=X&V%;PZ!aEWV#y;C22v?@:FѦVe-պ!AۚC (:~E 6@KQ BQp$s sd= @]5b!LDС\ a I؅o}{_Nlu_:a`t,XH qQ¬^ ׅJʮC݌U( DxMC]%#/BH Hz[("N7;-q|d$Idt\I :`,Da `@, P7x”4Ēu|mC: p-aTGe$8LZV"0@ 䮈/C?C@ D;CA,DC
b$Nb%f]b'~b(h(b-bv0Аȅ1.b̩0c2b8=!ѫ1]x 6 >cDNdƒ>Yz5()JbsrbEeQ~#HZUFV,-\ɇXf:WQe_s* Yʿh}P-@{5Kcd>effgB.!# y<I|Ij jf7Vv80w!g~ʀcufgQ$Q{n_hB*قQxP( \ hiuikl1XQ :C,GXyYKz{uKdpiLu̺(\ $ptH9ٔYY] xt0u`Zruvxj ,XtXa/i V38,~x (m/SpbQw.#Jzz[ӝ@>c ޼9j][ Hv0 x[Q"pIxܱ !W#fπxmHM2١EȝvXT5f6Xwb e q^X3*X>捲_2񛀳(/u\Sxfn*_ι _7P8| } sF}z?:r_}/#ІC֯}6䋣SϿ}~z}7B~~_~o~~~~~~~7ay7 PvY <)O%v0ߛ+ڿBLZ|(~_{u,h „ 2l!ĈS7DQ=xq" :~,iRaȑ'Wᅪ-XҬi&NJC/Mr,x^:~8l)ԨRRj*֬Zr+ذbǒ% Fu]: KgnsJ5_Ks됓@,qxvA| S ܷ D BE(xbLAs.ùtH O/ՏVU : J8!Zx!jxPhD..^‰8oH@pIQ ŸC2\7HBd$ C'xG0Q#'h@GRe\O,҃YҖt k09T<0V[ƕ4 ;0'eCvcB|%D: D݌^:aF4qubL\!X:p`t?<p(@h ȫ @Sҕ.})L2 "em`FA5qtT 08wjQ}"0j:'<̆0F1;T BFUU`JA 85F<xK/A09 H RY=B 5(Ym x@xCFIG$QmL쁰zV G9pځE炋j1_I8 B; ېhh Mzkup]P6(%:=1ς \_/X3`aqb=@zHGF [z5M`85,)DhAMX`2FB_R15@8P3ƴV2-s%Ë9Ӿ|.%  v!݌0@c yc⪛, oF>xQA0&039c]AE0fP@| (Op L?ERi.C6(b}&[fA9ڒ,p:> f jD{ .? EE#\pE-uy~u! D dxa6؅ܹP Q[q' $R#/\A`rx="BP<:@HwALQ3$9st`2Zs^:fftF,?rn 𑎴i%3ѩ^U nfI3\0uH ~O#XG_J D"T\ ؁v xE< e_r5\8@;!CAh.qY#€7D4 :s]n4k'x /T:d_Iy[į@`1ҿ3AThC<@?4@? ȃ@QuDM91ApINDMP@^PmDƦBHEEϳ >\B$BA?DB  5>!FNaI|Ӭ :ܘK9PdB ; >@:!C|aar@(M=EyCda-̱d9DF9 \U9DHd_^jmZ:4b$gʨGAE AĮ ,֢t:ԅ'DP c.1^Bt@EάQX -f mL ?ԃ"tU Dc?<"iX"Rd&fI=.DhBtGsNQ`CD`٭T䱡8~$HH$I6LEB]B@@1ݝtΜNC&t[>䭡Z_XFC8dZ@4EDAIɭ ]alV#AF<j i8R(I_(Z騃P$9^@HDX6:Q &A1&5HEXD\g$&S$@>$99pSC'ɘ29"~D`?*L@٬C!_ 9C9¾$zz'{'D^AhG񝧬!A\(ƺ9,:fBtȘPDbp: ]{]?dTQ ?X:h^ :ÀU@:ЃÀ|D I&CPҨ qy!Es `:+,TlտdDAx'<NJD#/F đ^]'BE9\C)j'?IB [X  1h^XX]B|F.hhAT| }D#cl{**2Dy̜CmA@dFDpm$:X@d4&)&._] tStle:@Glf4M:@ Ř*jުC@,u :eLFø^ TD(M$.OUf=J2Ce1@<t.訧 TZK?dLpl9K@tZ,:@t,2B L  J#ʮ( I !c)QBRG˾Vi[LDAY:/I?|ԣAmAM.S_P.&!A—I:؃BHZ=PҐ^>l?('JVOhJDB@m̃}?@K;`_M]0 =^.Vf.9D䃻t # <6C$F2CR"HEhCn>H(@bY(}2~/Bi@M{6l`@EGMo]×L%VG=xIגD 8OdfmxϗT@p՝Ò1:Q:8@D] Dqt.;A0$:;Ԫ:Hh]Iu/k̚@ -AB@Cj_ ?0+p @gA:(B22C >XdD B8c"ACEŏl%9zdtqt'2Cqm]tm c>@X&E?&hs(/OF9̈R 9mBL@\\ íC9OJ8G\Q R>'/>7?>GO>W_>go>w>臾>闾>ꧾ>뷾>Ǿ>׾>>>??'/?7??GO?W_?go?w?????ǿ?׿??: 4xaB 6tbD)VxcF9vdH#I4yeJ+YtfL3iִygN;yhPC5ziRK6ujTSVzkV[vlXcɖ5{mZkٶun\sֵ{o^{p` 6|qbŋ7vrdɓ)W|sf͛9wthѣI6}ujիYvvlٳi׶}wnݻyxpÉ7~yr˙7wztөW~{v۹w|xɗ7}zٷw~|׷~ <\|% - 5ܐ=EM<U\]|emuܑ} "<$\&|(*,ܒ.02<4\6|8圓:<ܓ>@B =D]F}H%J-L5ݔN=PERM=TU]V]}XeZm\uݕ^}`b=d]f}hjlݖnpr=t]v}x块z|ݗ~ >^~%-5ޘ=EM>U^]~emuޙ}蠅袍>餕^~ꨥꪭ묵ޚ뮽>^~垛ޛ ?_%-5ߜ=EM?U_]emuߝ}?_襟ꭿߞ?_域ߟ X@ T@>)XA -^9A~!IXB)T YB1 i贀! ,fBBD^^\664jjl&&$ nnlVVT..,224ZZ\JJL**,::>@86(x$0tfİʔx\d\t`p@t ԺNf<<4bxtp||PP`0@0.l xXPX (6L*$LH@h~zfhbh|p|blh`ZTT@lĮvVlԴ `8:P`Z4`rrt¼FFDƼrr| vv|ĞFF#ԃ: tR.예Q\A.cQ4hЍ Q>O= N@?S F)TV Y@;3(O)N Ih&QlIGqvdPB=lO,`堄jj_wPP@E#iF焘A22dCֳ,iIp:*B6Īz&sF:b+[9ԓ:@ >6&HFAHn[SdaR% -ښAC:`,A>Αh Bx;8K~N𠷪lN;|PH@Zl頳uβ,@ @9H,>,2F XH6khO==C`X S@B)=sںM< @BC:F#]MhE@Iу2. PΈ<D>/r #h"tN03vAN9}<;G@3\ 7TPOl{H>:b  h?? C= |p%!~LR#tB 6  |C7O7 +1AzP  {$uhG2өT,CH0]@[ȷ zG#APG:p#=q | $ x "J>1IHA?aS rAIt@ 3 xZb @]=t.PRˈ8 % Wi ΪTHGMqӜhTS] 0:*rCjԙdũ0ZA@!}*Wdtjψ 耇Mmfn C )Qd)ML$<zO SE,EPPTU>7 wŪ@$˂0׹ `+ J[K$ЎVQ +C]yYdX@Z\ YTۀ\D~=-/tY1LBJPסulQ0uL-hG~`÷gLc9>' 96[£&Bt8"/юbYtY.X`|h`1OeYT)z\Y PȒ"⡎ҏGkϭ,OL=%ҥkbfC<%CAnI01A|ni>ǚ%`M;@·Y D0lHnkLb6H1+ (@*/1G{PAD8NԸ*H? v NTI(,yD*t YHN]9ɵ瀙)kƵNR6oynnt U^ @.̚lˏ'D O$J: @ЇsJF%<st ӨK'G{A4@k*NcS{_┓]] x?t<|i`SHxY:$`JvpIDO}0phL\3`Fu `CUCyH~O`@aRTP=/=g ~sqUc` W\5#/( fqH0|=G& y&<%ЀAd!RbP PrS*vEYP=PDp b}FgP @ q$'\`}7tXv @B7$3-@PQ_lB=%qaw6p$PpaP|MPqb @z!C"3ME$br4`pa09#,}#qRd56`b%WDld7a+`%CbS0`*PO !PS w A{?Jw m-qɐّNGP=`)a(Ph* 294YdJmlɽdW&p;}a;TE#@Q@ ef@r5u>Z$]ק)$ ?` $z`g0x% |%309`CDg՝u#5 }a%L l쀚qA4ce$,KA1ǯ,zY{-QXN0W5/`=d*0mtjs$Qbp@lH5үJ p3LI&mky? 0hNK/B'4l"@Ji>4lVz}|9pU[9ᚡD3T 83#l< e:zHI"@v~]z#ֳZmWz2:0SDЬeQ$B. d'5Z|p9,UVL#Rz5A%Ej* UpJdPbRV*b:^h*bP6mf@]$7~pE8+P`0=e&<eA~WUWAq@CEu| JWۢW ~ /@~//һR45!`iLp8dR_t_挫|:U69KPZ_9x?jֹECzلQ3m{%ap@!5 Sz@ KۿƗ [$[  ~^6 xA P@ 3s.s`._t4AdLW! ~x~6.A1ń5Q##<%];8B nZ%_kF[Wтz&^qɕ/gsѥO^uٵowŏ'_y+;$p|`g( (xz8tY t^8Htz8($bAިu0 K[IJ*Yzo͉q ijQ9:v8(hP*!`BZBnz:|xe3s.-ĘAzAG xh6JHDŽ| f O@tPB 5PDUtQFuQH#5@K $` @,u,k6v1~` q 2` $G0@ uUuvvVY9 gbg\zu$HGplH "4(H "i ˭tpX ~g BjX.QcڠuZ9J /%yg{gzh6h ~.8 "u8Bqv68eꁧ )&Z~4ItF|njǞ|]G2$ꂾ)4 %Z.h 8 0f1;8@G`(0 #-3S>ʃ!#SS3_b8& Grn 0ұ:EGMuC b`z; $M$` x@&P d`(Wh 97 % @=-XA΁ w xtdoU =B ;a=L#( 5dޭ8a\OV~! d~h1C9F!~cdRU3"FA!M@r8pW:F&+ I.Ч*@#T@:Z0/bO2Љ 'jse/}K`S$f1vaЂxF!SӤf5yMlfSf7b`=7yNtSdg;NxF 3 3g?OT%hAFƝӠ ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWn/mvWlxi^D%)5nrg͍{!4W]j.Ӓ~(`1$U698<8s #@;OF&0@'GTc ڡ%!]7HgͣNc^WEJB\J}U+:\bg`p$0_Q(':t$4@P]at~k8ʦN[}v{P2o- ꓵCv ^Q _iJVcS0pKθv<` u oJ`(co^r08͗M*%gsηM#DoxAɧRA d5aj*AT xo$Lу }@G>H=MYZ= paن1Pٻu\o:(R/h 3N.TJs#s#$ o/S֌!c@*ga.s'k:LӍ=e?;խ8+L!Uo Q"|_ B0ȃg_ iu@HքUJI8+ ,Mp\߭(%1iG4 P.#1(7X8mАph+v!28h0+Ѡ:mvh x  (80 `p'A}AuTd!(GB(Q,$NDsx@~E^D'b%' qfy 8bf_D' zH `p\ ;p(\ /i`G0! 09\A1qS02 I[~z(9xXG OA4 uI"Ȅ+S"p[4,l q$G Cc$Ĉ`F@#Γ# `9l x`t0(zx6bƵ@~Xa1 KP61@t3r?i s0œȃxqt^ L&9 k|m N0́0nHRYDA\Si (/L|xP1`Xpk"c bCuH,AA{Yc 2XL8h!c+J(+$MPM `֤dt ɬ!ǃ0xQuOm]1K u0t vR\$P YBM e U҉sSϹΓу9xutLR%09)tͥTt- 4 7I<\m$, u(Ș7 N z ~؃?B<Մ t<?p$H׉4Qс Hm ;kTA-CMԹASPS8=h@ ,],= "0(PhE 9%0C DT-J1 2 =H-EL>c@@EXRzWa"6R~0ϡӿ8<ɉ_J#t@?@ "S( o-p% ZSH5DH7Qp%ɨ уq\ 4|0/aAwSC]q2J]m;00L] Ҧb`zPA9Y#]WyX:#5[ $= QklR*Qyt#{\]5$ Qz~%A@tKSEum"n6% i8S8tN7AW7KVPU`h-!uPz  Vd'S"2uH gç̒-! ͐ B( WRH"f 9]+ӱ8SQ@m XԄ hֵ 2pa>e7hpI3Au79 W6q!a MSZ`+ `^#V@ཞ|zt7%%~>}qdKha֘s@"#wyuxa P`bbH[fyhj7;;f !E % lLXiI)rb_vy%pц!rd* I*{T~{foM'*< d" ?9!fI`B  ૛10fn ۂ7]ѝ ~(Yv05m(``tf갗7H~pq|hٴ驞4d y.>ٿhI!D؞ 3Vjih+%$͖ Yna' ~Q݄!Ai#Xq?j`7dk;l FVȜ l=A < &@du遈bAauhS2uXbP)AhqifmQ Q̂0xHx#9z `[<P0#,4] 1cm $WX46\s R]CF Gl{nߍ D]YI̜Xs1 >q h{ޘz K18'A#! ".#U`"~p"^y"  u0 -Fdq°+:,!n/q5 v07"#x w09(70Hz3h nE_trbҀ~4'G&h" PatN}Ra~E'PS7 }tXu`'SP &Zߦ|B['TuY/vc/&ui|u`JvmJu)(8vlvmvnvovpwqwr/ws?wtOwu?.b[:+NpwwuC ~_w b a`šC ?Бk<@>6Ȕ*Wlr`t/bJǙ:w”e̟)MT(Ёb(ޛ]q$Sͅ~oȟ .ʌs&m-ܸrҭk.޼z/`.A uj8,٥xaz6^VanaoqA5RY"Kk8?;72BtouЍw`佗_JCb̛YN@!_ٞf,1tbӿ{]v)UA5?1h:Y$|Q}uQ_5BYW>E7]u ?h1@=Cjx#9#=#A 9LS 9mQcL*NPtTG!RL,dNeICT9TqP@'}E .x)B:f=pdS=(=6-$EW/deKFppO.R|r]>>jk  RDFV:!4꡻Tk^KN^iHq-eJ ʐκz-;.k@= 0>#X!ac@0h$ arAZ\N> B<+$H`Nc\SlN;$* P !LA;|H%Rv"+;|Af< n=ԁ9=A1::]PrF] t',%1;.~ L:-FB:vp9\MN?@vLvD$ 7 Ď x">p/9$ԃD#ixJ%׎$1c:{ 2#z R6_ɏ$94[:DX'Xu`dZвt2x&ZHԠ2Y-X3"x`b#>.6a|Pbҏ= 2 p:W)!S&x-s c׏s`s H鶧pcv0O%JYӞV1DdVZ!HG;~DY`~L`1B1)H PG !ZI:0~%Q`n@G7¢-LɪX¤cʳ*( Y@ٔtSs ?Am !.R2@!@?$ЏTc@?Q0&;I B`@'< CԴ&6wɇ GRr#@>"0x 1~hL'!QL1d Lۘ]R!U'a1Hrd-S*(R*FwyBLe2әДK@086Wֲge25F`e/g̳p*:8L>{ S Z{AWVFQB+/ Z&t-;CېRA@H@,WG=J4%5QHbCCE;*WĽO  L_=F6K2g)@r0|0"jai F@P"T .DۣXW]v]8bo>[!F>2,ԭ!EyP7b"tB)uMCzCrԦY:hȎv4Eħ#F[KG@aQ%S*%T.EĂb!x Y.2N f,BODhςާ@F(Miwuuo*_Y&rYvV\2ā"i>X AІECh!)'C$)©C9(\H9x?I.@եÔvƴu2:XB@=|d@ô) 9d > ΈA 2#A$@C D<𦨪@`B /jD3]PGAN*C<ժI\P17ɤ <)PilD.0P>$4c>D]P<֯)] ' (U>$[,_,6x&GCL\32>jj@2<4B$H</*:CЃ9|,>ďd',D&>H:BAX:9D.Na8Qq :uD~y:c Ar( Ԁ9`=@.$BH(qĬ -EF->. DKkHG3Ub˚̮x ?PPڊ:p&{CBm*Ht+ (9Y.֮#-@߱PF9\ (CD?4"yFAd4de߱`ةF%H0FX"JC0@T#BIu:)FA$*@k ʤACzzƵhDM:.`=|/:ppIb?KcB=A!AڟLZ4Y>K @3:`!ecm$׊hnpbdEpTo=\mho,v+ ՜pߓx:4! 7D4&A@P&496mK(c a; p3D<{|%qA$ eaB݇ WčVc :*ߦC DZ0JxR=4$ˋ׌9`B"KD)nx|oyS˱9dK6o37w7F)FpgрPAT<&R+DD+kD+ri8<<•sOqJ@nhF4EF/:&}4HC!?a< >?( pWF3@r10v2A'4H3< 9DŽ?9d 1LRF:,bt [:du,WL'@9rA4ecp 'uCZ@H/]:Jõum酮Ƴ4륃Ls@@ n@4qeO <GX?X:B-C?ԃ&pf/>|Wah M7MC$մl BFV@@YhØhA9  wHj%%*;)&6Μ'[>ĕ{`cMwiW-ωan#ϑ|cj3D@:*A`zzr'(!< cCt)O1tQ"~(AshC c1C|aIB F򁨀ё vp )Ao;3| i)dIJG6CZIa:릚ktJAtd; 6w'9gH {*Â!#ujA @@] t2-Ȃlݖnpr=t]v}x]X4̔]V|H]n#5ޘ=EM>U^[t-sU`*WV6I kud?~ݛsNgg묵ޚ뮽奜nRp#v`a5,[rޛb ?_rmn 7iU) 5sSemuߝ}?_襟ꭿߞ?_sx~U|.e .QG H6k;!.e'! |NR p YBogrK@ĕ@c 0"ju) i*\GיH|S3Cr! @D.r$!CŨ<>1"]tTqW"]rÆ7:<"aHG>L@ dI?u #Љߕ?(^DxJqQҒ\)u&$̘Dr"P:NEV\@D؃:ǂ9bҕ oi\hLYqJT:ٙ._@GoĐG7-0z^+` əg=‚r 1إBAA n>@: ud 8ش͐uzOϏN{99d>PZT8A<~`#hevڭYyKlO˕ԥ6*U՗ԃtQQX^@= Vr)*% H!تCБOf9MqG=!NH` Qx#a.YzLPRJ#n%ق !HG0) F2prk ĤlNzK$쨀r/CΔ90K 9NKRղ %:0pZ .WmvWSiGTƈpGEa 0u!z/js.l3 *D՗MM*|@1/}y5^B#)j~lt` .1GX 9ƛ!xg F؞giI|,5@:xf\T91OAz "hE9]== FZ9!Iuqyjj۠4x&gLH}UFbT5G(L/QuT`'r;g(AJ|L @y$ЏPCG?^uӡu rTKpuDPH %B1!x :Q6"[S QP+8BժNpu< 0(\6`ò߲%5q܎UJ!@A;F@a)ߙ!#S =t#(3c:E \J, (uC8Cc wkŐQCZb0G돠.C GFqN=6t@!''nD2L 07ыA @ԯ/ bWKץ3Xz  $U ^ 9Ȁ݂ E9@>hc .Z$A΁!Thdҡ"Ƞbn D!:ؘMlW,֡@-.0!`i& :A @?PE/?`3L"O PG*$@(p %NpRp B"dI\F%kϺ`@s<9Aorl!v/ !A ;:M* | O 1!A n>CQF,@!j%hB@Ed"c+N!$""rm `!s'! rSL:08j8 ll[@@#A"`+r!!10&*j\0/x 0AbB F3)C٢0D؁mc!ΦM`-RIIT^t,z ^ಬj(2;uX~q+q!A 3%CaA-"FE >s |M_)%NJJ?T"M4\b3RSFn-t, ,a! Z :SBS!`Oq,a >5TM4> NGT$r{9RFU CׁꁔeY֍JAIA1saNP/1?j ~$TC._a_LYjM 21&Hb7c?dCVnnP @E̡b*%Oo[9E LGxbpI"!5"^.[ .2><JE% >2\LPVV64BB ~BFqjf9̡ ` 6eJ F5h !an"Hikscvt[^8NvpN"FsN"cKsCҰ"wr)7F!ij 6w3AС!*wvСZ=0a$Tmm-r@xEV|Ǘ|w?cC" BR($w[%r-`B*ABVBX4gg(%Ip1>` 4':-it΁vekѶҷַB2>'!sN'nD;,HUm F`" +!s6 W *:$ت&*@dV$.D[jC(-w!^pu*v$Ǹx}+.ԁ NnT Y!1x[3K(&nILʡV!Vg'z!4 x~A&8I1gR)m 0x$~).ĵ""ST!-v|1@\OZ ځ aFA2VaJ`ArIzx ʤ<^c#<[WBQP~( cC#4D"b @ʯھ~<7|lB{bUV8gQDB|1T؋؏}xnMGّٙڣ]ڧQOaGExڻۿ=6`~}Ɲy=]ם;+`}y]_ߙ] ^#^'+/3^7;㡧&vbg䑦?_!>H\IG D91铞 I[|c "i2~c^GT*~4'6r{&@f U f~->cŢ'f\?d vރfb_7Gɘ%Ğ! R2Wad$7*˺/>l ʰ-z`ءTL)l.AʂS٥rDuqPl1,@HW !a8A]6 /G(嫇Fz/t^μgtRt@n eRNIeV^eZn9ӎ:Hdtp;8R6`:}*SR,PO9FCb:SO(tC,Q;G+ T<<)cN1b D 밓Ιq$B:H$q9devs知1p@ 袍>d؉)?)*K*]>D$ qOLq_qoq(1J0ԁ pغ h gn QRI:@:ԴN(cN jC1`|bQs+]&3QڇJͣ AĶ0@=՝q37S`RN(m4HaOMtR R =QGs55t=SD 5=z 1>TA&l@=@=[ {gN=~ }OO}_}o=Q!ѠHD=d,ANmKrN;=9G鈡#DM"Fq~5(`%::J'ҷE\ $צIolfI~Js@3e3ّ(j,bbI/ڭd=:єs< a 91!`GCq9=/E/ьjtJRԆ$hŽ $ B&@«p)@=DTJGIh;MΡ ^0UiY z=?ȵr @5oj0GU֜˩QH$X)G0 /JÚD Ў4r\Z"O"E=jRDhw#'6mD |/0<?ԱC$Sv?X5: s֥n^ u *@SimQLݭi-44pLu.5afq'eDsD2/=G;*2+mp !.` !=(G]»)@;,ξ- Rw /1vl=ŽÔϯk?Nr+o<Xr!C(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hhȉ艟(HhȊ(HhE}׋jwHq=8ǘBƌubθ'd "dXh%8ݕ̶+ ~~uΥs hn*7[1Qȑ!XrPo ]~0kc'+Z.I>Gai1,9 A~6Ci/֑MفVkBS+j+6>I^_aXXy[9c1eI#Cԇ·g+E!lq~YIs՗NXsv @P&V!LS$Yci긍!iirLhQuc iXa[r#I_Ôb0LdDL@yV+00ga8X{/P`_@]L [P?`7{qU6y)P QiuYIV62j۩#`b*џ&X\V{ b+PIޡPioP02W9(:%z@N08!: zO "@$ /0$8Р5qrܩ:c:'+a*Šq 0`bg1Qkz  J(CqZ0QsPꪼԩʥ W@'@C#6#:/ :6$!1q # k `rp솗Jq%%F&)[P#7;$!A#q ɠg3Q 4˛0U09ďI1!.QCP Ŗ  ۴SU{O2+O".#CC۰"=+4?+!f갶jtNn\#0$6cl8F9 me3“ N;!) y6ê6J ұI˼⼏7[+{@Dqxr>P+RQg݋˱P {(c{9A^S%:i?#~ "?) .R:Aܨu~9#O&W&vM/|J0AP %PP;3>0E%ϗNXL j_5 NXO#YrSto  ?wIDն%"KL3LۇN PhGC4 `odo /O;ؽW7w-0#QjjR@"'{?LK:dU NʏfKQ$aAQ> CNB ٥:5c 3ǰ@:|*1@B,+&Fc'6qփnIG,]”Isa7H Q 4g =ĊtpEHGĀ!Ó*Ֆ;>ĸ^,xP\… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥM\:Ha8/݇PA6D+p:súfSvkav*H'wW¦4tK᧝6kQ(=!1Rt:!5j!~`0Ϯ-L|.u*gDb(N!+"`); X{ t Pz̑R!Yq1tЁ99:(C 9\Rz tl[ȹ4D9dpQDĮr(k:u$%kN!"#?tP5O ptT`tԙN̂/Yp~,^c2jX6(zvɋc iKX^瀻1y{ e؉tY,~vH>g<0=י# #EpKMzq, Z#"ڨg(<w[4ds!^Sj<1\aE8BЄ'Da U*)tTbG z|0z gH(@?3@eG%v8@=T<ځ+  X0lIG? Џc@>Z{|rZ>0dHp`zGͤ`$( qwu|ФaFb(f/ he1@> $I<\<tBxCCТDu0q]H"$%;JZLѨFs  oN ڱANbVb2((gC|H FZH \Dh7)U)Nqc>?% kz( AG0 d~C xf̹iw=B͉!K!K՜ Uֶmnu[ַ ?N!LFNV@(vsQð etR&RV(6aaZ0b^M QC$b|x;MjGz\ˆAcmJ@2x9\:, (1bBL9GG0,.`쐂l@eİc1qbT:@b=qg] Ո@J"5;P̽Ԍvt]8HN>4̵%luD c0;a~xđ6 e0/6p5qwyE>$GyC4-ye>s7yu5^ GGzҕt7;ӥۗO[Uzֵuw_{{ve?Ѿvo{>ww{w|?xG|x7|%?yW|5yw~4 =?zҗG}UXtJs{k~?|Eҁ~P|L4H.p`?~0+U0omH~w[ E@X! &p@ߨ 4 ^5tAE|iK Лxs(/؁r1Bb` pr Zzx²Boۀ` ۘ D #|pΙ,1ę8TAUt/,SBÚ>V C.sp7QHMN) u)=Ӕ,dG(M5)!(G! 7<S,(0@&b~~zB 臫P]_D P`)@FPFf\zPoyG^E`d98`HFā$Ȃ4ȃdɎQ(UEeFm4eyCy} :ULUX IٛX(HͳI9s>ZUN_ 8(tfugVb#(x >r@ pf(P(r#xz* ) \R(=s(q EΚAqJ$sRtJR,RWt8|#J%juH1$]<Ҫr'WЦ4җSL ֛ٜ0~LPЄ3zT<3Qn{51JQ(Tu7R_ ˜r~9 S#0%.z\*m[Z1/-2[%-{ k𗝕ɥ>R%5jUeuݍו٥ڵ%5EUeu%5EUeu&6FVfv &6FVfvaq0h܌" $ xq'r#RE(.V݇(>+@.t8X(HTxcx9^8 BNQxxx $S/MmXg7/L\=I8v8sR IK9=Ơ< heDZI>ތ\ ':r- =Xx(Ȣ 0#x~m?l杝ÝG8*+WMX煐IR5oV e#QmfVT(-g XXmt(=<|`VhXxK;0 (hu0HNS{q&Փ&M,? ' Of0<xo/GLP|PtTN6hȖ5.kxIn5?wW7`uxXJpV]O sX,@-5 `qnjezT!ц ;q'wtdsDNRZD(PzڀL4z 8’$fDsՀK1x05[d2P& qrltHhhtw/7+j Ou,ei>/y|`;`rE (̲ز !(ƣ ,)S$0~`@vΒДj_" 1>G+쎘Ṫzbvk舀r(+l KM{8^~0{C2KnK|) yz)q4{X=7' *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy3Ξ?-z4ҦONz5֮_-{6ڶoέ{7޾.|8Ə#O|9ΟC.}:֯;%~8)YLxWԃ?pÁ{rءt N|@AQE9o!A'D;'J:OE)H#OspP.3td89$S:#YQ.Eі uҒBTwUdx$9bsYgp 3N?0)G#s;E JF>* QMqfASHjjAGVDKzdkBA*@Gڝ3jB93Pcm[P u04"0a*EJn:  P:NܥSM+|6įNZTϩ[#/ EܫJߦı@?Ny<J+2h3@ >_sItsi !{ҷQuO"tE%'AaԿ9DV_ R iERSMqC6}{4.^):H9`0>3B=l~n8'>`O=hm@=Q +:LE y:SXPP:LN">ys@#cx1>tnC<M|F$@Fo(nQ:88ouH0t%|8rbԯB]xXTC7ugzѿ~ A ;dL"@:$dns#p=x(lɣnȐ%vͣ^A :Ч>p. r{9Ge~XO Pl"y^hTc@(B>q54:r S: p@`+>0;:8D{p.~q291 M C|VGInbeW Hgc"0ArB!zH` PС-SG?N#Q1葝t"!(ȰuIdJ=^ )-Ӟ'AP(uhcsj6D lG=0:xuvTyeXE4CK쁭G9P@ g0u0 @@@J0bѝ `ZzG @!ǣ!Օ5><+~@ 3asAqJGB9 x 0G0<NCCubP"g1Z +4qLO;`~pfT:rbY.떻,24X3ȏ6yӁiM (k~`!o4M ӟvI}lZ$cs.sB`U9#88h Uscu g-~qgLDtP(ٜc@>~.WiY,l+E,ډNzl^G1}v1p\:`&_H4- q1<5Gh Z}UIku(q@=L@"#_9>$_`$ t_7,y 0 APn;\@Ay#$n $@-L m_Aw G-7-? PsIku!9NA)I@HC;Dϑ,M@LvL p% 9A@Bĝ Dё $5,YRLV?lNd_/ ۥ5ԃ"tԚ5RBL]᳥L8mC4AyN')CH<DLJTD<A@DU:Nd >@)!͡\"DL.Ƭ9((NYP]& _Ld2V )&ص≟&4L$:&_(q f'M#W m2c@9[¥@ALӣ%ʱAbe@`d5湩qNr&:g*0f=&(Co."TC `CVhd$g $ՃR.(R^O=ਈ~d drhD,\C&. (Bh=Ct?ǘDta9m@PD?( rC=.wf:9@|<4&@YRjAJ;+ '(`qvg{D[ g¥v:D vCd%!)Ϭi;IQڑ~)i"|m4m>)A_%D<#jP`ک@:`N=(&HCCAf̪CꩵiDp DCA>R:ތ)EAT2 ]#:iNx+zh뼂8ΜbP=` )6Gvg k#@90P=@&DԟJ7ܞĘ@;8"N:ĕ pGpC%páhe 0l?ll~9 l =j;56IC,9dCA$dEA$!f) >ChhjrJm@DD  T"+ALm5j7d%~̚ T q%CZ:$] ~C.$୘$Cd <H/BD\8S>AY.@?K2VHA?W2D88/<C P9sO1@W*>²@hH<f6 YBf!m9D@ `hI9 pGo%U$L0)qhoƌa@ ^b?@,@1/#ד*a PPI@\@A;l@!3(pCï'OT?oB *+1Kyl%$8pp(0DYxqHLr{{k[ 2*2<:t=&$CCƣM ' Oy :\@v;o2C2/| Go>C>s?sAhL$oFkt*@ HHDaP W=l:D@:C VǤ SGA>$.G`OV \\oB :p@ $& ]DtC ݚ4\@ 90R>ԍ-| >BFHlV.<5A\S HQ'"l !rn(*1:8)>$9PA`_rB0?& 140ǰU;S.9T5n/9%sJYHf¦œ^ NaA:t@H23u@`c 3ləHujPDvww:PŶ ;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c|ks|{dz$;6'C +ȻüEIH_DjvxK|T_;#пėLJ@/ 4+LМpcoYcCMHz=\AHR#)鈜+}O;I1ۗHj:pHH1 i@BVM;>I \=hU]U,k,M 1ۥɘ݋~۫@\K E D$\$y I9X(iN׍]t lN3{qTɋ޼D$CA0A𐫼 "-إ)1@ D @|X7TaC!F8bE1fԸcGA9dI'QTeK/aƔ9fM7*Hg t֝+:|#t ] mpsň^W@Х-\o_GL…tZ=׉u.nU[ҵW7z#$[su_BSҁI!@ .ݑ`s avG>zuױg׾{w\:|s0JvPOA(ҩCA%Pǀz> siKvRuJ^"#vYOI`R J26PG\1SS.<{z,6kt;N6H@Jsj8+LS5l7S9鴉5` u u uDg(k9@ "xLv.x!v U!! TWa : \B੩LG6 (~ hKzf\_2%.,lJ@hGe +bMWumwWyMUE:-'r(y|2Au*mq>Lc*ޑI zjDn<ڊaT ;Il,JkHJ*䫱Z뭹,π+Z*v+ `A`̏t u~E: NȻf[5 <xN"IFCFgـ}iFGb\/ONy~Uh񃅂/ܴuޮs7rϱ,1ꤠ>0GR)A?tiGL`@F7JVrQf]nw ąrO1R%u{_ΗMF^`6LT7 v!a Okbp1a oAb%6Qb-vacϘ5qcڹ~cWO򑑜d%+D"D! f1*0Ha 2pm%Z~pr:BƤ*QLaSG:eN*Y@1 SAjQ:# "qtt C ttUC9AgX'A&9Fr3zN{s :Wpu%lqc;*JKv̭ >t-`ƢCo3Z"P)7_"RɆ@H6S9G 18);AM49@9JEmzv0Zd vL-HyQ2SD^v;"Q@;\q:40zCRW]zۅ&>i$Uߍ.qBhJSt)+KYì-Q$9ӰRaȲB% ^cG@:9v``1$9M4xoPaCW|<$S2M4Wqa`Ot\zPA b0?$BI1OR{ M!D5~K!1ٺ}I HA @UdGFg"J`-0!LD@DZ"EZ^oI3z!ީ `b~O b" Vc.3O֡dP` 6&.[HTB *bԣ-r(0Q8I!f! U"PReU$/.H>"?||EP>r`,`(Ȱ&`S aDq0sDIDb!GZ-1 *!p5Eަ!=BS*//*SCB\ >r&Dxkra.dJ'2Ela:t"(1`IlfDtO4&6!;ݲa>aL" '=e2 2(* i@ &h8r+ $*e0 vAAdΓKLׁFA 62 5l D0AY5ZuZZZ5[u[[[5\u\ɵ\\5]u]ٵ]]5^u^^^5_u_Ut( _ `@_+b% a)B.#bT2bj`5vcyl% o!rpFSa`8`" B&R0e9g}VL Rm%R"x~ Z '% #g", u~k6-[`4%!`5FojM#֫>7"k<b;UkoGdآ {N!D"f<(#`'W "(PҐpA7tAl@!@\ -`F@Yl\\z 2 #,c A3QTLc(f n)~ðĂ3-op2ab 4A3 >B .!OAj@g@N1Jt7L,tٲv2h0 K*p(Ȁv$r$⡫hg@ЁS!9"@vA"dBzD`CڮR4#o<,Ns}ӡAځS "*8X bydbZ( +-Sg[͘m`#V2a_>@9x S $@Y4S<TDc"0f?yL~bmRQp!Tex&#l*Ўpg!( K׊EyK J0*$)xAmCxVPZA68Me*E74b4`\G!v`YgQL &㙻%bV$>yʴ!0Rh_M6 C\*dÌ UZ1#m1x{A@4 o%Nj I*22}&Ӡb$r"]9%S7Jrg r Jhx:4#!q%!*"|}ԧاzzgvْ/o]q ^&r׳ <$<+@ ca: 8(1!28lpQ?H嗛$k/S! L" `mذ֑?$5 "h b xa8q;",Kс+ "WSag+ `hk*F=8 /Ȣ=;fgB>ŀ>%:ƒA IH!ڢT!b)}&V@Š#7 Evہ &$E }ъx [Xx%1bxF*-V=Q$3~t H-,*ʢf2X\G lF"K*KO\2Yp:Rjaf˅9P]afQ5|S5a2`#;](R;Ć IE\C d44UV&jV%/{B3"3FBQ=Uݽ@@uVa=VSmq=u}y}ׁ=؅}؉؍ؑ=ٕ}ٙٝ١=Ⱦ2`Vڱ=E V&,#lSbNbpOcݝWZvmfkgG%,.]АV% M!Pfu6ٛ׀MG6GkiuDT #2Q>SO%[%z"]Wn/{m1voU>賽qk_3|"V.ךKsS>8nNy)yz8"&LȗtFY>X8yǞ^z"-/R)L!|3}}!ua^75ؗmoSVfP|XQ=5.@ D߄U8AP!$G`86Moŷ^QoۈXuU7y}%3/0X- L>9bk  "fm͟O uWº($\G<ֱkwIċ tE$uD qt-#Ŵ``@ JѣH*]ʴӧPjLG# "[Ha( @DKٳhӪ]˶۷pʝKݻx˷߿  Ƙz^Țއu (B=Aq: @d]lLdحn3t6.yQAY9@ᘦQGTͺetËQy["@7"Q|OϿ(A 3P΄E*)#_Dt҄Kb(xQ=1O/QE:ԣH'fN>LЃQ1+փ9$hvFEQp9vlp)tix2嚔-%F/pZ9c.Pd|hSfD]?%g:`$ :.#FI\eO;`Eii ?PRR1<3 `\zv+-;閘r+_cwEAVȻb;\t<&sDjP9B:j%EԣbDs?hD<, fXڒ`TIdeN;ڶ@-Dm ϶NڎzWO;$A:EMG).Fd4@h e?dhgX1 A:E,ad1=Y50vL\NHG^ C989#)褗n騧HD.c=`!:P{?dhO  G>p3n{;>|DL2gD4:ޔS#FZ?H@H(7`b##c#2J@=9H9^, GHpMfȭ6CBXߔ6*2 (@ءx]QRX. 1BC%P'u8 4 ؏M4W~t|KG: H:a 3QMH@C($` F:򑐌$'IJZ# h.Nz (GIRE)WV򕰌,g9s̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:ru@>z&zPhZ,K@~H5б)P !Q,ͨF7jJaT`iaCQZl"tlHʔ\#rŏP|c1ECHGcf8TJժ}uET=I@؈<(Gbb#Q>t5.yR H:ӈd?8 D!X*۔ʀ.PsOPd;sdnwI# P0;"Z%ڀ2!PDv4`}K`b*Z1#Mzס yÇU,֮[@^]An"~G^ $z}G1D%[A:P_/F,8+Q2m@I^P`v#Ip`0-hs`BP>π. lR Ք0 .]]1rfa5zHWwס m@3E8;n@?6x# H PGkB= Ў.F(>xO41F MDPG=ȐÛtCښ.rGk:+Er u:<,^/Q$?L)s:Fach:!fmw ?ϸ[A nPD@Ɋb܋t G9Ґ"Jxu!HvE5R7fMLjÃ*w7t(M>taa@ѯ(l'OyUVJDr1!C%b2'ObPN*ùJ+s|%,ϼ7h\PG1򡝖D ʵ΢#t&8GѬˏG81PW+ȳ01t,렜b,v sԃ#&V1)wGb8LFfZj8`l 6G4t2$ #]o(Q&p6 xxԅrDs(bP@b-$UP(,+Rw75sQ|T|1YJ3%j@memSe#((UYmoPr`+0W(}H\Y2-2z8X4hc ?b `i@6` 1c_ hT/EO1"2` G.D,;x:1h1'2.R+%/t,-3?3ؔNϤ1%-s1~Hh$|wprڡop_"i|Aw"@x,g T"lSSFa|c7#1!#73v-Qp#87J92195 yIJZ1vUVG>76`c><5z}Pyn vV?8j I<c QAsQlV = `;.՗z?7!"0PM)U%s;0 ٜ# !CBQjb@pxuR@=C1q@a4hAX[2@#p/YFzԅ2Iv6S0(=@܆q4! `Cao[C!^PD!6I!<>|r (A9 DCB(1!i E"EcRE7m0imDcO}1Q3$iCD;qGx 0D`HCoʺ̺yJڬxpZzwGj^Wz蚮J d:Zzگ;[{ D UP["aQ۱@` 1S%%WT2;Gz3xa`neQ4{JD[IFPbqIttR{X+]K8Ԙ@}`[f{q215Uo~i\P bngr6Fffg mfqvw}yg[kU#!JkF=%$ C w0@pArRp p Eq殶;{N W#XrQGx'ЙA1 ' ["y֫wZ^; b0 ci7ۑ>z(@ HQ1\"`r99%=k2rH</gO1hma2&#&2<ĔA8<,!,8B-hl..Zc18yŀU39@:TǢ<ʓoI+v@G jV7@7 ,VqAҒsD@?3d`YUܮX1aA?AɁ|H5@,#CWj'O*U u@-Rjf)Gv!3HH ЯSyI+}ѬD 9uJ"=ғ%1#$\@. /1 * 8:<>@B=D]F}HJmoP G XP\|1-s`bIxPEH# Rv}Nmk !w%!ͲDs1!Ӥn[|FA7GT@Re6g`bgN0@qּeװFX# zI|W3[^=+jpvhTxAXN`c`8?> !6tu}p&<<\e}O[mTA[Huj0lN@QCccP`.,%N}᲍ 3 FN P^Eb;E PftOԉuΨN|3~(A[Ca_6u@z}q2}k$1Ց9yKԈTQc6 !l@b(u@--ܜF.CX7Bq;@P8S))/|bp1"X!_ yE&4L?ɰg6@_.d.]%NXE5nG S0?2YϏ9ҥ<0`9t0םС͜!%ZQI.eSQNZUYnWaŎ]_vg8'\Q:Hǡ!zZ)W t(s/"` 7O@tP"JpЁ'QRt&m("i!Nǭ PԨ-y,N3Fq$s((ꩇu |:Gv@(~07Nۉ,xթT".PB](Gc9t$X7Y@ |^U ~^G]Vxava#x̲" ꁧuG H)Y)  F1 |B o#cDӁ(| t|gٙ!ʼ Lt'~i 5지ჟ `kt (@ڠ̅h~`a#q\R( \?$ l ?0b~zF.!C|%0FsHvs}w{wT3Gխ|G! KGu,>D^2$`ox5&H80 H[9J7KY lup 'Z0[ E臑.!Й@"P2a!a 5PSbxE,fQ[,J[HLQ=cbF8QscxǥP jeā=`LCy"(<&Rdd#HHFRZ _0XS8IPR$e)MyJT x!@He-myK\Re/}K`S$f1yLd&Sdf3LhFSӤf5yMlfSf7MpSx$FbxM#ENxS8)G^g@ǏAZX=PFTmqЂ`O 4Gr#Iˇ2le8FG07T1ęT;N-|ls,ԸX{!ѐ>Oڈ  }C@gy[%kYzVj`}f6ƩyHFLQCФV<Ŋ-A=X&V%;PZ!aEWV#y;C22v?@:FѦVe-պ!AۚC (:~E 6@KQ BQp$s sd= @]5b!LDС\ a I؅o}{_Nlu_:a`t,XH qQ¬^ ׅJʮC݌U( DxMC]%#/BH Hz[("N7;-q|d$Idt\I :`,Da `@, P7x”4Ēu|mC: p-aTGe$8LZV"0@ 䮈/C?C@ D;CA,DC
b$Nb%f]b'~b(h(b-bv0Аȅ1.b̩0c2b8=!ѫ1]x 6 >cDNdƒ>Yz5()JbsrbEeQ~#HZUFV,-\ɇXf:WQe_s* Yʿh}P-@{5Kcd>effgB.!# y<I|Ij jf7Vv80w!g~ʀcufgQ$Q{n_hB*قQxP( \ hiuikl1XQ :C,GXyYKz{uKdpiLu̺(\ $ptH9ٔYY] xt0u`Zruvxj ,XtXa/i V38,~x (m/SpbQw.#Jzz[ӝ@>c ޼9j][ Hv0 x[Q"pIxܱ !W#fπxmHM2١EȝvXT5f6Xwb e q^X3*X>捲_2񛀳(/u\Sxfn*_ι _7P8| } sF}z?:r_}/#ІC֯}6䋣SϿ}~z}7B~~_~o~~~~~~~7ay7 PvY <)O%v0ߛ+ڿBLZ|(~_{u,h „ 2l!ĈS7DQ=xq" :~,iRaȑ'Wᅪ-XҬi&NJC/Mr,x^:~8l)ԨRRj*֬Zr+ذbǒ% Fu]: KgnsJ5_Ks됓@,qxvA| S ܷ D BE(xbLAs.ùtH O/ՏVU : J8!Zx!jxPhD..^‰8oH@pIQ ŸC2\7HBd$ C'xG0Q#'h@GRe\O,҃YҖt k09T<0V[ƕ4 ;0'eCvcB|%D: D݌^:aF4qubL\!X:p`t?<p(@h ȫ @Sҕ.})L2 "em`FA5qtT 08wjQ}"0j:'<̆0F1;T BFUU`JA 85F<xK/A09 H RY=B 5(Ym x@xCFIG$QmL쁰zV G9pځE炋j1_I8 B; ېhh Mzkup]P6(%:=1ς \_/X3`aqb=@zHGF [z5M`85,)DhAMX`2FB_R15@8P3ƴV2-s%Ë9Ӿ|.%  v!݌0@c yc⪛, oF>xQA0&039c]AE0fP@| (Op L?ERi.C6(b}&[fA9ڒ,p:> f jD{ .? EE#\pE-uy~u! D dxa6؅ܹP Q[q' $R#/\A`rx="BP<:@HwALQ3$9st`2Zs^:fftF,?rn 𑎴i%3ѩ^U nfI3\0uH ~O#XG_J D"T\ ؁v xE< e_r5\8@;!CAh.qY#€7D4 :s]n4k'x /T:d_Iy[į@`1ҿ3AThC<@?4@? ȃ@QuDM91ApINDMP@^PmDƦBHEEϳ >\B$BA?DB  5>!FNaI|Ӭ :ܘK9PdB ; >@:!C|aar@(M=EyCda-̱d9DF9 \U9DHd_^jmZ:4b$gʨGAE AĮ ,֢t:ԅ'DP c.1^Bt@EάQX -f mL ?ԃ"tU Dc?<"iX"Rd&fI=.DhBtGsNQ`CD`٭T䱡8~$HH$I6LEB]B@@1ݝtΜNC&t[>䭡Z_XFC8dZ@4EDAIɭ ]alV#AF<j i8R(I_(Z騃P$9^@HDX6:Q &A1&5HEXD\g$&S$@>$99pSC'ɘ29"~D`?*L@٬C!_ 9C9¾$zz'{'D^AhG񝧬!A\(ƺ9,:fBtȘPDbp: ]{]?dTQ ?X:h^ :ÀU@:ЃÀ|D I&CPҨ qy!Es `:+,TlտdDAx'<NJD#/F đ^]'BE9\C)j'?IB [X  1h^XX]B|F.hhAT| }D#cl{**2Dy̜CmA@dFDpm$:X@d4&)&._] tStle:@Glf4M:@ Ř*jުC@,u :eLFø^ TD(M$.OUf=J2Ce1@<t.訧 TZK?dLpl9K@tZ,:@t,2B L  J#ʮ( I !c)QBRG˾Vi[LDAY:/I?|ԣAmAM.S_P.&!A—I:؃BHZ=PҐ^>l?('JVOhJDB@m̃}?@K;`_M]0 =^.Vf.9D䃻t # <6C$F2CR"HEhCn>H(@bY(}2~/Bi@M{6l`@EGMo]×L%VG=xIגD 8OdfmxϗT@p՝Ò1:Q:8@D] Dqt.;A0$:;Ԫ:Hh]Iu/k̚@ -AB@Cj_ ?0+p @gA:(B22C >XdD B8c"ACEŏl%9zdtqt'2Cqm]tm c>@X&E?&hs(/OF9̈R 9mBL@\\ íC9OJ8G\Q R>'/>7?>GO>W_>go>w>臾>闾>ꧾ>뷾>Ǿ>׾>>>??'/?7??GO?W_?go?w?????ǿ?׿??: 4xaB 6tbD)VxcF9vdH#I4yeJ+YtfL3iִygN;yhPC5ziRK6ujTSVzkV[vlXcɖ5{mZkٶun\sֵ{o^{p` 6|qbŋ7vrdɓ)W|sf͛9wthѣI6}ujիYvvlٳi׶}wnݻyxpÉ7~yr˙7wztөW~{v۹w|xɗ7}zٷw~|׷~ <\|% - 5ܐ=EM<U\]|emuܑ} "<$\&|(*,ܒ.02<4\6|8圓:<ܓ>@B =D]F}H%J-L5ݔN=PERM=TU]V]}XeZm\uݕ^}`b=d]f}hjlݖnpr=t]v}x块z|ݗ~ >^~%-5ޘ=EM>U^]~emuޙ}蠅袍>餕^~ꨥꪭ묵ޚ뮽>^~垛ޛ ?_%-5ߜ=EM?U_]emuߝ}?_襟ꭿߞ?_域ߟ X@ T@>)XA -^9A~!IXB)T YB1 i贀! ,fBBD^^\664jjl&&$nnl.., VVT224ZZ\JJL**,::>@LDP<08$00贶P@ $(8 <6< Ĩΰ^d`誰vrxЖH:Hpfpb\`H@hltt ̜FJ@ rvxnf`0.(:0|vnfHxİp@th\`d\t`xԺNfbxtp||80L0@0.l`xx$XPX (6LĮ~zfh0|p|tfblh*$LTT@vVl86( ``Z8:PԴbh0<<4ľrr|vv|FFDIJ rrt¼ĖFF"C< p9예\A.cQ4hЍ <9O> NĀ?3F)TV Y@;#(ͣO%O Ih&QlIGqvdPA>l0`堄jj_wPPE#iF焨A22dC泩,iIt:*B6Īz&sF=b+[93O:@ >6&HFAHn[Sd% -ښAC=`,<ΑhAx;8K~ O𠷪BO;xPPHZ гqϲ,@ @9H,>3,2'XH6hcN>>CX S@)=sںM< @BCt:F#]MhE@Iу2.`Έ,D>/v s," O0svA O9=;G@#\7XOcNl{=>:9  h9? C=o |p%!~LRE#@ z6   |C7O7 +1AzP  {$uhG2ӱT0C ] cȗ z!APGIHHA?aS rAIx@ 038 xȠZb @]>8.#PRˈ8 dkd@I͊ ,Q(@HAЁ_s(11%<92D5<% Wi ΪTGMqӜ2hTS] =*0bCjԙdũ0ZA@!}*WdtjψЇMmfnC )䑏8D)$>Ă|O SE,EPT<? wŪ@$˂0׹ `+ J[K$ЎVQ +C]yYd@@Z\ aTrD~=-/tY1LBPӡtl M0tL-hG~P÷gLcH#7' |96[B Bx8"/юbYtY.|h!OeYT)|\Y PR"!ҏGkϭ,OL=%ҥkbfC<%#AnI{|.i>ǚ%`M;@Y D0lsnkLb6%+y(@*/G{PAD8NԸ*? v| NTI(,yD*xȁ YHN]9ɵ瀙k5NR6onnt U^ @.̚lk'$ $*: @ЇsJF%<st ӨK'G{A4@k*NcS{_┓]] 9x<|i`SHxЃa=$`JvpIDO}0phːL\3`9Dt `CUCyH~O`@aRTP=q=g@~sqUc W\5#/( 3fqH0|=G& y&<%ЀAd!Rb0Pr*vEYP=PB b}Fge0@ q$'\`}7tXvz@B7$3-@PQ_lB=%qaw6p$PpaP|MPqb@@z!zC"3ME$br4`=pa09#,}#q 0 d56`b%WDld7a+%Cbݓ0`*PO 1PS w {?Jwm-qɐّN1rP=`)a(Ph* 294Y`0r\b/0\"%ZEBuZ%` ?;f{hG`I#ĭ 1:b4G֫{aX2mXNKG $ma&m =h`0syK<$[{aIAZɖbZA1/re0Wg[+ad`s۽q$~껾 Qq+kSH2N{qۿQu<\| F>||2@A.,Q1;:,paAB*Q QAZ8dJmlɽ dW&p;}a;TE"@Q@ #ef@"r5u>Z$]')$ ? $z`g0x% |%309CDg՝u"5 }a%Ll쀚qA4ce$,KA1ǯ,zY{-QXN0Wq`=d*0mtjs$Qbp@l3 H5үJ p3LI&mky? 0hNK/B'4l!@Ji>4lVz}|9pU[d9ᚡD3483#ʣl< e:zHI!@v~]z#ֳZJmWz2:0SBЬeQ$B. d'5Zop9,@UVL#z% !%Ej* UpJd`bRV*b:^h*bP6mf ]$7~pE8+P0 D =e&<eA~WUWAq@CEu| JWۢW 0 q@~//һR$%!`iLp8dR_t_挫|:U69KPZ_9x?jֹECzلQ3ma{%a#p@!uz@ K۟Ɨ [$[ 0#^6 xA @ 5s.xo^xGAd! ~g( (}|8xY x8(x|8($bAt0 KKIJ*Yz/1 ijQ:v8(hP*!`BZBN|:|}!g3x.-8Ę'|̡G }h6JDŽ| f O@tPB 5PDUtQFuQH#5>K $`*t,+6vّs`q 2` $G0@ 5Ut0GvvVY9Ϡ1gbg\z5$Gpl "4( "i ͉ $˭xpX gFBjX.Qc uZ9Jȧ /%yg{gzh6h $.83 "Ay8Bqv6&ѧ #ZB!xDynjyM2$ꂾ4 %Z.h@ 8Yf1:G`(0@ #-G3S>ʃ!#S3_9"c&Grn ǀYⱄFGMuGuR|; $M$` x@&P d`(@Wh <7 % @>mXA΁ wғaxxdoU :B2 ;a>L#( 5dޭ8aLOZ~! dh1P0 cdRU3"FA!M@r8pW< F&+ I.Ч*@#T@<Z0/bO2Љ 'jxe/}K`S$f1vD"ЂxF!SӤf5yMlfSf7(9`=7yNtSdg;NxFЙ 3 3g?OT%hAFƝӠ ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWn/mvWlxi^D%)5nrg͍{!4W]j.$`1$U698>8s "@; paن1Pٻu\o{:(R/H 3N.Ts3x!$ o/֌!c@*ga.s'k:LӍe?;խ8+L!Uo Q"|_ Bzȃg_ iu@HքUJI:+ ,Mp\߭(%1i$ P.#1(7X8mАp h+v!28h0+ѠO:mvh x  (80 X`p'A<EIhKT1 D %K(P?c x|?aAAx5}Ayd!=B(Q,$NDs}@sE^D'b%' qfw 89f_D' |H `p\ ;p(\ /iP=0! 09\1qS2 [s|9}XG OA4 tI"Ȅ+S"p[4,l q$G Cc$Ĉ`F@#hΓ `9l `z0(|x6bƵ@s`a1 KH61@t0?i x0œȃxqx^ L&9 k|m Nɇ0́0nHRYDLSi (/LyP18`X2pk"c bCtX,AA{Yc 2XL8h c+J(+$MNPM `֤dx ɬ!ǃ0x3tOm]1K uȃ0z vRL$PMYBM e U҉sSϹΓу9}txLR%09)xͥTt- 4 7Iʇc@DXRzWa"6R0ϡӿG8<ɉ_J#z@?@ "S( o-p% ZS5Dш?Qp%ɨ уq\ 4|/aAwSC]q2Mm;GX] Ҧ9`|"Y#]WyX:Z95[ $= QklR*Qуpx#{\]5$ Qzs%A@tSEum"n6% i878xN7W7KVPU`h-!tPz ^ Vd'S"2tH gç̒-! ͐ B( WRN!f N9]+ӱ8SQ@m XԄhֵ 2p^a>e7hpI3Atx79 W6q!a MSZ`+ P^#V@ཞ|zx7%%~>}qdKha֘s@"#wyta P`bbH[fyhj7;;f !E 5% lLXi)rb_vy%pц!rd* I*{T4{foM'*< d! ?9!fI`B  ૛10fn ף?Mѝ f(Yv00m(``xf?H pqhٴ驞4d y.>ٿhI!D؞ 3Vjih+%$͖ Yna' Q݄!Ai#XqHj`?"k;l FVȜ l=A < @dy遈9AayhS2y`9iAhqifmQ Q̂{Hx#9z `[<P0#,4] 1cm $WX46\s ]CF Gl{nߍ D]YI̜Xɇs1 >q h{ޘ| K1'A#! ".#U`"sp"^"w8!  y -F"q°+:,!n/q5 v0"?"#x wÇY9(70Hz3h nE_trb4'G&h"PatN}RaE'PS7 }tXu`'%nP &Zߦ|B['TuY/vc/&ui|u`JvmJu)&8vlvmvnvovpwqwr/ws?wtOwu?.9[:+pwwuC ~_w b a`šC Бk<@>6Ȕ*Wlr`x/Ǚ:w”e̟)MT(Ёb(!]q0oH "oʌs&m-ܸrҭk.޼z/`.A yj8% ,śx|6^Zo!0oqA5RY"^Kk8u7P6BxjNt0w`佗_JCb̛Y`!_ٞf,xbӿ{]vUA5?1h_:Y$T|Q}uQ_5BYCjx#9#=#A 9L3GmQcL*NPtTG RL,OeICT9uP@'}E Ď.xBpdS>$:6-$EW/deKFppO.R|r<>jk  RDFV< 4꡻Tk^KN^iHq-eJ @ʐκz-;.k@>0>"X4!c@5h$RpAZ\@< B@>s0+HOc\BO;$*  !DAP$;|H%Rv"';|Af> n><>@1=:]PrF] t',%1;.~ Lp:-FGq/9$䃁D#ixJ% $1c<{ 2#zR6_ɏ4.6a|Pb= 2 pQ:)!S&x-xcs`s H鶧pcvzO%JYӞV1DdVZ !G;sDY`L`1Ba1)H 0= !ZI<%Q`n@G7¢-DLɪX$cʳ*( a@ٔtSs0HAm !." 2|B!9$Tc?ڑ0&;Ĩ @$β`@' AԴ&6wɇJRr#@<ТYx 1Ch!QAL1d Lۘ]R!'a1HrdP-S*(R*F1wyBLe2әДK@086W2ge2C5F`e/g̳p*=:L>{ S Z{AWVDQB+/ Z&t-;CېRA@H@C,WpG>J4%5QH9CCE;*WĽO & ͌_=F6K2Ig)@rz|0"jai D@P"T .DۣXWMv]8b<[!F>2,$ԭ!CwP7Հ;PT0ArFPN#@h( 2\0@2c.8dhBDp%\Ċ&}`h@(~tT<\ d12Éh#xDyʍ>2rbtAbC.{ă+aBN*@ !HoAWtp@4T ɯlצ< A11 Y4RN[VN:Ԁg^5qcR(%& 1ͤd;ͦZzI㒇ZjH sjvA+wzVmms@@̡h 7p 89Fhqp) xI@>r<1QW A`mݢ)bNcC^0@]m5:E2D!D@Ȁ9l1914=d4_taăN%@~ ZBa! PcHcm1@,>ȈH8 pb4F+:m-$M֤M$NEBdVGT#p@X9F:N RĚ5c>9JFGiKC>dB$=~ʝ h)D#[–I 1D1ODD`b@;RN@L@ltC;HhD*-Cר `ZWʤT#\?cƹV~Op؀*B C4YK?u*D`>be"@)uMCzCrԦYf:hȎv,4Eħ#F[KG@aQ%S*%X.EĂb!x Y.2N f,AOhςާ@F(Miwuuo*_Y&rYvV\2ā"i>X AІEh!)'C$)©CG\H9x9I.@Ôvƴu2:XBA>|h@ô7 9d >ΈA 2#A,@C =𦨪@C@ /jD3]PGAN*C<ժI\P17ɤ <)PilD.0<4c>D]>֯)] ' (<$[,_,6x&GCL\32>jj@2D?B&H>/*<Ѓ<|,>Cď,DC>H^:BUXj:,. DKkHG3Ybƒ̮x9PPڊ:p&{CBm*Ht+ $|/:ppIb㮈9KcB>A!AڟLZ4<K @3:`!ecm$׊hnpbdEpTo>\mho,v+ ՜pߓxp_:4! 7D&A@P%496mK(c a; p3D<{|%qA$ eaB݇ WčVc:*C DZ0JxR>4$ˋ׌9@"KD)nxxoyS1&R+D+kD+ri8><•sOqJ@nhF4EF/C:&}4HC9a> >?I( pWF+@r10vă2A'4H3< 9DŽ9@d 1LRF< bt [|Wa˃h M7MC$մl BFV@@YhØhA9  wHj%%*;)&6Μ'<ĕ{`cMwiW-ωan#ϑ|c̓j3@4kC99$[nwHsMcν S`W(<(U}n$DcBy}oG$(Ћ8!@HNS̓U^[t-sU,W6ω kudǜH~ݛsgg묵ޚ뮽奜nRp#vaa5,0ޛb ?_rmn ?iU) 扢5sSemuߝ}?_襟ꭿߞ?_sx~U|.e.QG H6k;!.e'! |N p YBogr+@ĕ!c 0"ju) i*\GיHyS3C! @D.r$!Csȇ>>1ƣ"]xT1W"]rÆ7:<"aHG>L@ dᢉ?u cЉ5(^DxJqQҒ\)u&$̘Dr"s@< th :8ش͐uzOϏN{99d>PZTF<~`#hevڭYyKlO˕ԥ6*U՗䃢tQQX^@= Vr)*% H!تCOf9MqG>!+H` Q}c!9YzĖPRJ#n%ق !G0)ID2prk ĤlNzKd찀r/#Δ<0K 9NKRղ %Z:0pV .WmvWSiGTƈpGEa f1t!z/js.\l3*hAD՗MȇM*y@1/}y5^ȇB#)j~lx` .1G_x 9ƛ!xg F؞giI|,5@8xfLT;1@[A| "he9]==`FZ!yQjj۠4x&gaH}D9T5 rLA/QtX`'r;(AJ yL @y$PCp?^Muӡu rTKpuDPH % x :6"[S QP+8"ժNpy< 0(\6 `ò߲%5q܎UJ!@A;D@a `)ߙ!#S >"(3c:E \J, (uC8CC wkŐQCZb0GG$. rpN=6x@!''nD4 07ыA @ԯ/bWKץă13X  $U ^ <Ȁ݂ E9CQF*@!j%hB@Ed"c+N!$""2- `!s'! " rSL:08j8 ll[>@#A"``+r!!10&*>\0/x 0AbB F3)C٢0D؁mc!ΦM`-RIIT^t,z A,j(2́;uX~q+q!A 3٢%CaA-FC 5TM4> NGT$r{59RFU ֡C򁔸eY֍JAIA1aNP/1?j ~$TC._a_LY*m21&Hb7c?dCVnnP @Eb*%Oo[9% LGxbpI"!5"^.[ " .2><JE% >2\LPVV64"@ ~BFq*f;"!j 6eJjΠӡ 5h !an2Hksc6t[^8NvpN"FsN"cKsCҰ"wr)7 ij 6w+A!*wvZ=6 z $Tmm-r@xEV|Ǘ|w?cC" BR($Bw[%r-`B*ABVbX4gg(%Ip1>`fA 4':-it΁vekѶ7ַB2>'!sN'nB;,HUmg D " +!s6 W @,t$ت&,@dV$.D[jC(-w! pu*v$Ǹx}+. Nn#!TA Yہ1x[3K(&n)LVVg'z!4 x~A&8I1gR)ҍ0x$~).ĵ""ST!-v|1@\OZdځ AFA2VaJ`ArI|x ʤ<^c#<[WBQP~( cC#4D"b @ʯھ6~<7\lB{b@UV8gQB"|1T؋؏}xnMGّٙڣ]ڧQOaGExڻۿ=6`~}Ɲy=]ם; }y]_ߙ] ^#^'+/3^7;㡧&vbg䑦?_!>H\IG D91铞 I[|c "i2Z~c^GT*~4g6r{&@f U f~->cŢ'f\?d vރfb_7Gɘ%Ğ!R2Wad$7*˺/>lLʰ-|`ءTL)l.AʂGS٥rH9ȣM>uE l eRNIeV^eZn9zӎ=Hdpp;8R6`Ӕ>,b D ϙqB<H4qd؉9)*K*<D>ld;`+J\> qOLq_qoq(qF0ā pغ d gn RI@<Ԕ(cN@ j1|bQs+]&3Q6ڇJ A=Ķ @>=q37S`N(m4H`N`MtR  =QGs55t>S,B 5=z 1>XA&l@>@>[ {O>~ }OO}_}o=M!Ѡ(D>d,ANmKrDO;=9G #DM"p~5$`%::ҷE<xbF` ?Ȁ΄IȔ }HЖ|+2̠A1oCZ?# PGD"8ò6B#6 H*x6@| $ؚ֣1 8L_~bNgD-#˚T q8F>\ $צIolfI~Jx@a3e3ّ(*,bbI/ڭd>tДs< aIq!`Gȣq9=/E/ьjtJRԆ$h4Ž $B%@«p)@>BXJGIh;MΡ ^0UiY |>9ȕv @$Q@5ojGU֜˩IH$X)Gp/JÚD Ў4r\暏"O"E=jRTB w#C';NVuiOԪvmkO"H^f}V!D<Ⱥ@Rx# ηtT)`7zH - <ayw!Cb`ЛCWHޒ7m>^`Ip3RH?\dj1D]7Jޕ9[}2"MCp&oa yD.$SE.tLf9f7H |C;qb6Pt#bcQPc+TDr#0@|ҜLB?tS-wYU* ;qU@ nnI;\^uMt< S4Ѳ>,/WZ"j@>DlJ:֔N\ݰ5gFA y3%2<3g&t#Egя@_=1^IN\?<6mD |/0<ȇ9C$7Sv?X5: s֥n^ 5 ,@SimQLݭi-44pLt@.5Ebfq'eDsD2/=G;*2+2mp !.` !>(すG]»)@;*ξ-# Rw /1vl@=ŽÔϯkN"r+܈o<@r!C(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hhȉ艟(HhȊ(HhE}׋jwHq>8ǘBƌub°θ'd "dXh%8ݕ̶+A~G~uΕss hn*7[1Qȑ!Xr~ ]100kc'1+Z.I>Gai1,9 A~6Ci/֑MفVkBSj+6>I^_aXXy[9c1eI#Cԇ·g+E!lq~YIs՗NXs @P&V LS$Yci긍 iirLhQuc iXa[r#I_Ôb0LdDL@yV+00ga8X{qP`_ ]L P?`7{qU66y)P:  iuYIV62j۩#`*џ&X\V{ b+PI Pi~P02W )(:%z@N 8!=:zO "!@$ /0$8Р5qrܩ:c:'#+a*sq 5`bg1Qkz  J(CqZ0QsPꪼԩʥ W@7 @C#6#:/& :6$!1q # k0 `( 솗Jq%%F&)[P#7;!A#q  D g#14˛0U 9ďI1!e.QC0z Ŗ  ۴SU{O2+O".#CC۰"=+4?+!f򰶐jtNn\"0$6cl8F9 me#“ N;!) y6ê!6J ұID˼⼏7[+{@Dqxr>P+RQg݋˱0{(c{9A^S%:i?#~ ":?) .R:(u~9#O&W&vM/|J0AP %PP;3>00 E%ϗNXL j_ NXO#(Sto  ?wIDն%"KL3LۇN PhrC4 `odo a/O;ؽW7w-0#Q jjR@"'|?LK:dU NʏfKQ$aAa> CNB ŋ\:5c/ ǰ@y,4@B*#F6qGoLG,]”Isa?H `nQ :ĊxLr"Ó*Ֆ;>ĸ0_,xP\… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥM^asj0Ϯ |.t,0gDb(N!+!`);! X{Lx P|(R!X11x聎ʹ:(C 9LRȂ| zl[ȹ4D9d0QDĮr(k:y$%kN$!#?zP5LO pxT`xN/Y ps,Nc2>Y6(|vɋc iX瀻1yh{ e؉xY,=vH>g<0=י# !EpKMzq*0 Z"g(Ї>w[4ds!^Sj<1\aE8BЄ'Da U*)tT9ȣ |`|00z gH(?3@eG%v8@=>ځ+  XCYl߉? cK!K՜ Uֶmnu[ַ9N!LFNV@(vsQðcetR&RV(6aaZ0b^ʗMC QC&byx;MjG|\ˆAc-J@2x9\: (1bBL9GG0,2`옆l@eİc1!bT:@b>qg] Ո@LJ"5;P̽Ԍv]8H<4̵%ltD c0;asxđ6 e0/6p5qwyE>$GyC4-ye>s7yu5^ GGzҕt7;ӥۗO[Uzֵuw_{{ve?Ѿvo{>ww{w|?xG|x7|%?yW|5yw~4 =?zҗG}UX8tJs{k~?|E|L49p`?~0+U0omH~w[ E@! &p@ 4 ^5xAEyiǨЛx(/؁a81Bb` pr J|²Boۀ`  D #|pΙ,1ę8TAUz/,SBÚ'FV C.sp7ؑXMN)҇ y)@=Ӕ,d5=E5)!=! 7<S(0&b|B P]_D `)@FPFfLuoyG^E`d``Fā$Ȃ4ȃdɎ3(UEeFm4ey0Cy} :ULUX IٛX(LͳI9s>ZUN_ tfugV99}02 p>r@ pfH(r#}z* 8) \(=s(q EΚAqJ$stJR,RWz8y#J%jtH1$M<Ҫr'WЦ4җSL ֛ٜ0sX3zT<3Qn{51JQ(Tu7R_ ˜r~9 S#Y%.z\*m[Z1/-2[%-{ k𗝕ɥ>R%5jUeuݍו٥ڵ%5EUeu%5EUeu&6FVfv &6FVfvaq0h܌" $ xq'r#RD(.V݇(7+@.z8`(HTxcx9N8 BNI}} $S/MmXg ?/L\=I8v8sВ @ I9=Ơ<heDZI> r- ':r-Xx(Ȣ 0#}ml杝ÝG󀑨8*+WMX煐IR5oV e#QmfVT(-g XXmx(=? ' OYȇ<xo/JPyPtT6hȖ5.kxIn5?wW7`uxXJpV]O s,@-5 `qnjezT!ц ;q'wtdsDNRZD&PzڀL4| 8’$VDsՀK105[Od2P& qrlxHhhtw/7+j Ou,ei>/yy`;`rE$ (̲ز !(ƣ ,)S$0sp@vΒДjO" 1>G+쎘Ṫzbvka(+l Kt8^{0{C2KnK|) yz)q4X=7' *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy3Ξ?-z4ҦONz5֮_-{6ڶoέ{7޾.|8Ə#O|9ΟC.}:֯;%~87YLxC9pӁ{rءt N|AQ0~"D;'J4sItsi !{ҷQu;"tE%'AaԿ9;DV_ R iERSMqC6}{$.^)s:H9`0>3#B>l~n΁87>`O>hm@>M +=LBK yy|s@Ӄ"cx1>pnC <@M|G&@F~$nQ=88ou0t%|8rbB]xsXTC7tpBgѿ~A ;dL!@<$dns#p=}(,ɣnȐ%vͣ^A ^:Ч>p. r{9eXO Pl"y^hTc@(B>q54`:r =S< p@j+>0;`:8D|p.~q2<1 M C|VGInbeW gc"0AaB0!|H` P-ȣ?NS"֑x!!(ȰyȣId1J=^ )-Ӟ'AP(yhcsj6DKlG>0:zxuvXyeXE4CKЁ0 @ g0t00 @@@J09A ̴[<m @}cG}D" C  ĪXO E'rFq ޼)z3GUe1УVt:™CLGSҖVYL VU :y0ehlJ[9vaGѪVT! <;nঊ"x!B:)Q9R@ӉNMnFG/8 ""ZI %$g7#dxɜ0+ )N8#t@BiBG 8lvdzխ p: 2h ?>Lѝ `Z|pG @!ǣ!Օ5>;+s@ 3`xAqB9 ɇx aG0<NgCtcbP"g1Z +4qLO;`~pfT~.WiY,l+E,ډN|lN!}v1p\:&_4- qb1<5Gh Z}U7Iku$q@>L@"#_9ӡ>$_`$ t_7~ 0 APn;\@A9#$n d@+`m_;TyC2i?6{@~GL>Aw G-7-? PsIkt!9NA)I@HC;Dϑ,M@Lv܌ p% 9A@Bĝ Dё $5,YRL?lNd_/ 5C"Ԛ5BL]ŃL8mC4ADyALu""")j#*Q5v-YŃ=p%C.^Ab>xcÂH^:A?X!A@A$ BCB?HB]JNL= \<Ѓ<$>C)CHă>DLJTȁ>8A@DUM:'>@)!\"DL.Ƭ9(NYP]D _Ld2V )&ص≟&L$=&_(q f'M#W m2c@%<[¥@ALӣ%ʱAbe@d5湩qNr&=g*0f=@C$Co."TC `CV癃hd&g $ 9$R^O>ਈ~d hrhD,\C&. Bh>C9ǘDta9m@PD?( rC=.wf<9@|<4&Q@YRjAJ;+ '(qvg{D[ gv:D vd%!)Ϭi;IQڑ~)i"|m4m>)@_%D<#jP`ک@i:`N>(&HCCAf̪CꩵiDp CA>R<Ńތ)EAX2  !=iN'x+zh뼂8ΜbP>@` 6̇vg k@9(P=@&DԟJ7^Ę@;8"N<ĕ pGpC%páhGe#0?lNl~9 l:j;56IC,'ăhhjrJm@DD  T"+ALm5j7d%~̚ T qAZ<$] ~C.$୘$Cd>H>i\!*hCGC@=,A@.B,'=@pAoA@y?}N$9ɑS ;\>/BD\8<9? VH ?W2D88>C P9s% @W*>@hH>́f6 YBf!m9DS`hI9 pGo%U$L0)qhoƌa@ ^b̓Ȁ9@0/#ד*a PPI@\@A;l@!3(pCï'O?oB *+1Kyl%$ƃ8pp(0DYxHLr{{k[ 2*2;s?sAhL]$oFkt&@ HHDaP W>lW:D@BFHl9<5A\S HQ'"l !rn(*1u:8)>$9PA`_rB9& 1 0ǰU;S.9T5n/9%sJYHf¦œ^ NaAi:p@H23u@`c 3ləHujPDvwwMC\:hU]U,k,M 1ۥɘ݋~۫@\K E D&\$y I9X(iN׍]t lN3{qTɋ޼D,CA0A𐫼 "C'إ))@4D @xH7`:TaC!F8bE1fԸcGA9dI'QTeK/aƔ9fM7& zҝ+a:|#t >] Qmpxs^W@-Aro_G\…xZ=y/.UW7|"$a@sq\BSҁM#@ .js0vG>zuױg׾{w^<|ə0JvʓOA(C%ǀ|>恍xiKv’yJ^"9vYOIBA`X J26G\1S"n.8+LS5l7S9鴉5` tF t tBǝ(K9`>G "}Lv.آ!v U!! TWa :`rB੩G6 (s h+|f\_r#.",lZhGe +bMWumwWyUE:-r (y|2t,m q7Lc*ޑI |*Dn<1ڊa!T!;Il,JkLJ*䫱Z뭹,π+Z*vk `A` x t~6'Dt ۟f[5 <}N"Dɣg@}6DGb\/ONyUhoܴt޶xȇrϩ,1ҡ @&Pg0HE.ttCȉvG7|8-U 90ʼn A py쑵O'#"Fd$d d Z5% 9< _9DE f0A>GLPD7J6rIf]nw ą(R%u{_ΗM D`^G`6LT7 v!a Okbp1a oAb%6Qb-vacϘ5qcڹ~cWO򑑜d%+D"D!>X,^M>f1*YH@a 2#pm%Z~pr<"Ƥ*QLaSG:eN,af SAjQ:# "!zt C tzȣUC9AgT'DB&9Fr3zN{氁s :Wpt%lqcu*ȣJKv̭ >t-`ƢCo3Z"P)7_"ЁRɆ@H6*S9G 18);AlM42<@9JEmzv0Zd vL-HyQ2D^v;"I@;\qb:2|CRW]zۅ&>i$Uߍ.qЁBJSt)+KYì-đG$9ӰRaȲB% ^c0>:9v``1$9M4}~HaCW|<$S2M4Wqa`Ot\zPA b0HB1OR; M!D5~K!!ٺ}I HA `@@Ud"AGFg"J`-z LD`BZ"EZ^oI3z!ީ `b~O b"Vc.3OҁdP6&.[HTB *bԣ-ȁ(0Q8I!f! U"PReU$/.H>"?||%P>r`*`(Ȱ&#<'(6* umT  `nȢbl` f@ fD|d<ʣ !ƀ` m@,K!PN$tA7/.ґO!Joopu&5B@"x#"M@v(r&Dx+a.dJ'2E:a:t"(1`IlSfDtO4&6a;ݒa>aL" '=e2 2(* I@ &h8r+ $*e0 vAAdΓKLӁT@@ 62 5l B0AY5ZuZZZ5[u[[[5\u\ɵ\\5]u]ٵ]]5^u^^^5_u_Ut(`_ `@_+b% a)B.#bT2bj`5vcyl% o!ȁpFSa`8`" B&R0e9g}VL Rm%RG"x~ Z '% #g", u~k6-[`4%!`5FojM#֫>7"k<b;UkoGdآ {ND"f<h#`'!"(PҐpA7tAl@!>\ +`D@YL\\| 2 #,A31TLc(f n)~ðĂ3-op2@b A3 >B .!OA>Ag@N1Jt7L,tٲv2H0 K*p(HȀv$r$졫hgh@S!9b@vA"dBzD`CڮR4#o<,Ns}aAځS "*8X bydbZ( +-Sg[͘m`#V2a_<@9x S $@Y4S<TDc"0f?yL~bmRQp!TEx&#l*Ўpg!( K׊EyK J0*$)xAmC8VPZ68Me,E74b4`\G!6`YgQL &㙻%bV$>yʴ!0Rh_M6 C\*dÌ UZ1#m1x{A@4 o%k bI*22}O&Ӡb$r2]9%S7Jrg r Jhx:4#!q%!,2|}g'zzgvْ/o]q ^&r׳ <$ŀ>%:ƒA I'H!ڢT!b)}&V@Š#7 Evہ &dE }ъx [Xsx%qbxF*-V=Q$3~t H-,*ʢf2X\G lF"K*KO\2Yp:R Af˅9fP]afQ5|S5aڒ`#;](R;Ć IE\C dt4UV&jV%/{B3"3FRBQ=Uݽ>@uVa=VSmq=u}y}ׁ=؅}؉؍ؑ=ٕ}ٙٝ١=Ⱦ2`Vڱ=E V&,#lSbNbpOcݝWZ6mfkgG%,.]АV% M!Pfu6ٛ׀MG6GkiuDT #2Q>SO%[%z"]Wn/{m1voU>賽qk_3|"V.ךKsS>8nNy)yz8"&LȗtFY>X8yǞ^z"-/R)L!|3}}!ua^75ؗmoSVfP|XQ=5.@ D߄U8AP!$G`86Moŷ^QoۈXuU7y}%3/0X+ L>9bk  "fmg͟O qȗB&$LG>ұkwaKċ xE$/tB 1x-#bŬ`@Ĉ@ JѣH*]ʴӧPjG£ "[a( >DKٳhӪ]˶۷pʝKݻx˷߿  ƘzN_:/t (B>At 胩@d\l,dإn3t؛6.y1AY9ᘦQGTͺetËQy["'bQ|OϿ(A 3PτE*,#_Dt҄KHb(xQ>g1cN/QE=䓈f<L+9$hvFEQt9vlp)tix2嚔-%&F/pZ<.Ph|hSfD]9%g<`$ =.R!FI:\e3O;`Eii 9PR1>3D\zv+-;閘r+_wEAVȻb;\t>&#GjP:FBq:jp%EbDs?hD<, fXR`TIdO;ڶ@-Dm ϖNڎzO;$A|D gD2n:ޔS#F᳚?H@H(7`##c#2J@>9<^, GHpMfȭ6CBXߔ-6H,2 (!x]QRX. 1BC$%P'y8 4 M4t|G H:a 3QMH@C($`G F:򑐌$'IJZ#h.Nz (GIR%)WV򕰌,g9s̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:ru<z|PhZ,K@~H5б 7P!Q,ͨF7jJaT`iaCQZl"zlHr#reP|c1ẸCcf8TJժ}tET>I@؈<(GR9cQ>t5.yR :ӈd98 D!X*۔ʀ.PsOPd;sdnwI# P0;"Z%ڀr PDv4`}K`b*Z1#Mzס ÇU,֦[@^]An"~g^ ,3z}2B%[<P_/F<,8+2m@I^P`r#IOt@0-hs`B>π. lR Ք0 .]]1rfa5zHWw! m@3E:;n-?&} H 0=kB: Ў.F(> {O41F MDG>ȐÛtCښ.rGk:+Er"Ay:;,^/$?L)sx0ba@ѯ&Т'OyUVJD1!C%b2'ObPN*ùJ+s|%,ϼ7h\ 桝d ʵ΢#t&8GѬˏG81PW+ȳ01t,頜b,v s#&V1)wGb8LFfZj8`l 6G4t2$ #]o(Q&p6 xxԅrDs(Pb-$@U`(+w75sQ|T|1YJa0g3%j@memSde#((UYm~(`+0W(E}H\Y2-2z8X4hc ?b `i@60 g1c_ hTqEO1!2 G.D,;x1h1'2.+%/t,-3?3ؔNϤ1%-s1~Hh$o0wprڡ~p_"i|Aw"@x,g T"lSSFQ|c7#1!#73v-Qp#87J92195 yIJZ1vUVG>76 `c><5zPyn vV?8j I<c Q!sQlV>`D`;.՗z?7!"0PM)U%s;pٜ#C@!CBQjb@pxuR@=C1q@a4hAX[2@"p/YFzԅ7 2Iv6S0(> ܆q4! `Cao[C!^PD!6I!<>|r (A9 DCB(1!i E"EcRE7m imDc=O}1Q3$iCD;qGx D`HCoʺ̺yJڬxpZzwGj0^Wz蚮J d:Zzگ;[{ D UP["aQ۱@`  1S%%WT2;Gz3xa`neQ4{JD[I:FPbqIttR{X+]K8Ԙ@}`[f{q"15~~i\00bngr6Fffg mfqvw}yg[kU"!JkF=%$ C w: 0@pArRp pEq殶;{N W#XrQGxЙA1 ["y֫wZ^;ߴ bpci7ۑ>zf(@ HQ1\"`r99%=k2rH</gO1hma2&#&2<Ĕ#A8<,!,8B- hl..Zc18ysU39@:TǢ<ʓ~I+v 0r jV7@7 ,VqAҒsB ?33 d`YUܮX1aA?AɁ|H54 @,#CWZ'O*U u -RV,Gv!3HH ЯSyI+}ѬD 9uJ"=ғ%1#$\@. /!* 8:<>@B=D]F}HJmo0GXP\|1-s`bIxPEH# Rv}Nmk !w%!ͲDs1!Ӥn[|FA7GT@Re6g`bgN @qeװFX" zI|W3[^=+jpvhTxAXN`c`8?>!"6tu}p&<<\e}O[mTA[Huj0lN@QCccP`.,%N}3 FN P^Eb;E ftOԉuΨN|3~(A[CCa_6u@z}q2}k$1Ց9yKԈTQc6 !l@b (u@--ܜF.CX7Bq;@P8S))/|bp1"X!_ yE&4L?ɰg6Ϝ.d.^%NXE5nG Sp9#*I<<  "&yߩ}a䩯g{ϧ_}/6A<G r@R b0ng;DZ˰x@: /dHÆ h' "Lڊ0Hhx*H  f'@FHgFûFK'᠜ȑ)oK䙩!P!1@@ !v7NO@tP"J0'"QRz&mh2i!N4ǭ PԨ-y,N3&q$s( !(ɇɇt |:Gv@(sz7Nۉ*xT". B](Gc9x$X?a@ |^U sG]Vxava#x̲" gyG H9(Y (` 0yB o#cDӈy ԝygٙ!ʼ iLzgi 5yÜ `kȇx (@ڠ̅hG``q\RȜ( \瘅H$@ l =0b~|F.!Cy9cIʄ%0FxȈvs}w{wLGխ|pG! Gt,~Dˇ^2$`ox5&(0 H0J?K lAtp 'bfY[H E.!Й@" 2a!a 5PSbxE,fQ[,J[HLq>cfbF8QscxǥP je>`LCC"(<&Rdd#HHFRZ _0S8IPR$e)MyJT xɇOڈ  }C @gy[%kYzVj`}f6ƩyHFLQCФV<Ū-A>X&V%;PZ!aEWVy;C"2v?@d:FѦVe-պ!FAۚC (:~E 6@KQ BGp$x sd= @]5b!Ld\H! k I؅o}{_Nlu_>F}G:['x;饆0~/kcPBxt@AEj/t1Cf;UͿ&Bd8C!\+܀Vusa=u$A'`Ў hHT]ٰi` Yz0"Tʇ",[IG;]s'7e9͐Pz i.d= Rs͕?^gC?C@ D;CA,DC
b$Nb%f]b'~b(h(b-bv0А 1.b̩0c2b8=!ѫ1]} 6 >cDNdFY|5()JbsrbEeQ~#HZUFV,-\Xf:WQe_s* Yʿh}PZ{5Kcd>effgB.!# <I|Ij jf?VvظYw!g~ʀcufgQ$I{n_hB*Qx( \ hiyikl1XQ :ǜ=XyYKzyXKi"piLy̺(\ $}q:~,iRaȑ'W!*ZXҬi&N#JgnMr,xN_?2N xڥ7Lgs<) ̨OO#?"s? 1PgxO) tN vP;0dcY9sA <rAxf= (w; WAœ!F@䈦=ybѢ@u 1ǬH0ȳd%tNGv*,:,J;-jO:ӧ@ۘQN>*5@j{#Btn^:J%dKUhSh`7O>VB dD@#FMP1@6虏 "_'#rVCwY|npϚ^dB?Bك@#p:@$t"N3n>#9"Kd_֪6m6q=,} ER D~.B<h@>54On@ X@Ζ@..^ʼn8)~H@OtIQ ̡sC"\7HBd& C'xG0Q"'h@G%\O,YҖt ?!9T<0V[ƕ4 ;'eCcvcBy%D^: D݌^t`F41ubLO\!a`=p`t?<p(@ h Tȫ @Sҕ.})L2 "em`FAa5qzX@08wjQ}"ƃ0j<'>̆0F1;TN BFUUġ`JA 85=}Kq0A09 H RYA (Ym x@}CFΉG$a%mLЁ|V 0pځE炋j!_I8 B; ېhh Mzktt]6(%:=ς \_/X3`aqb>@|r [z5M`85,D8hAMX`2B_R1#:P3ƴV2-s%Ë9Ӿx.%H  v!݌0@c yc⪛, oF>xQAz&039c]AE(@fP@| (O L?E4'Ri.C6 Ab}&[fA9ڒ,pM:< f jD{ .A? !GE/9\pE-uy~u! D dxa6EܹsP![q- $R#/\A`rx="BP<^:@HwAP398a2Zs^:fftF9rn i%3ѩ^U nfI3\puH sO"HG_J D"T\ ȁv xE< :e_r5\8@;!CAd`.q!7D4 e:s].4k} /T\B$B?dB  5>!FNaI|Ӭ =ܘK9PTB ; >}B<!C|aar@(M=EyCda-̱d9DFD\U9DHd_^jmZ<4b$gʨGAE AЃĮ ,֢ta:ԅ'DP c.1^Bt@EάQX -f m ăLՠ9C"U D뜣?<"iX"Rd&fI=.DhBpGsNQ`CD`у٭T8~$HH$I6LEB]B@@1ݝBtΜNC%t<䭡Z_XC8dZă@4DAIɭ ]alV#A=j i8R(I_ZȃP$D^@HDX6=Q &A1&5HEXD\g$&S,@>$<&NJD#/ F đ^]'B0\)j9IB ['X  1h^XX]B,|9hhAT|4 }D#cl{**2Dy̜CmA@ȃdFDpm$_:T@d4&)&2_]AtStle<|BGlf4M:@ Ř*jުC@,u :eLFø^ T(M&.OUf>J2Ce1@>t.訧#TZ?dLFpl9K@tZ,=@t,2B L  J#ʦ( I !cD)QARG˾Vi[LDAԀYxIגD -8OdfmxϗT@p՝ÒJ$1:Q<8@D] Dqt.;A0=;Ԫ!!CKM9V%_2&gr$DDp1hPI Eh@cfR-%oR>AD.T@HOs敫Ad@ k`ۈ"D2D̂1SR4 `~,S9hQj|*Cg PoBP,٥K>C >XdD C8c"ACEŏl%@X&?&hs(/OF<ܪ̈R &6aa` AgarG\:зCrYh׍@2 d h6iiGE\u5`wF{lQ@V‚]=lY4i7qq4"܄hɪgjEarWu_7vgv_s4pzvNy7zz7{{7|Ƿ|7}׷}7~~7788'/JUhLIP7dUH8KR4Z I4Cpxl88ywCvE\D>0XWȎwxMHx 9'QCvD[E\G}G4b!F`a{HFdHefhgx NydjDsBd,MCa}(C PlHLUpm@I♓bXe?g:+ H[dXR7gz5Jg}~FG `+9/PBȘÊJȌH[KdDHgRŒ4ɓD ӀN>ԶVz7}I !xIt tnsD fW8(MU@c^4p [nrl@/H|So)~@dɁqdFtX\@,$MdE(tZ⊮=ҳ s4Ĺ MDbD:x1Me vþGLQJND C\9v <LWp -SL%?ě]$ [EG(b_xd-@~քw=wxD: 4x0|s<7=x?'p^<|dH#IƁ"y%/߇t2ȠI-*tQ.uPSv, |=p@>7!;{(/ FLѳ=so^P)ˮ7vrdɓ)W|sf͛9wthѣI6}cv"G/ @l7 9 j|Ayy @x ΣW$GSE]'l'H/B潝gpx8T Ȉ'?21y. ` x)!x6s|'`y*(h>  &HBJ@ǽ(})-YA ڰ/"8š !FxH;F*# G k6$p|:C$@? xh>IR JOKp P,?Tjx |HH"gD?sKxD`q7b :<*#(t27"6L3S;t]v}x块z\v1t\ C) 馺xAcG豀. a̱HxxW GGΦr%s)A J̙"h*+ !;^ z1hG `C1?ǜ"}b7s J֑|i Zs 1zxp.ʟ6Gyv-Ay ¬ lؠ\ İx⸀f'Hly鰃?ŐG DvYisB[mن'tP乺(9Yje; PA\+bateIY1Hl/)T YB1!V'.AH4 ɊBP |"7 9#B R q ':!(QRHT)M )"?CiA@ d8b >C`P7Ef N¨Gœg@*" M& P/D ,0lI W"s5xbXhSZ$%9CDY+:Nk 0?ˇ)9 i@ ;Q䱟8<}2pȎv\` 9)Xep5 @BJ9X 9 Cܘ \' @mbtIURT>QTDpQ5E`9 Ihv@=X[ic emf3 9FDk5kXG %Ax|hGc>PL<46Ch|6 Ȓ% \(HGU'?Q\e+_y25&HS/@,%a9p- J x$WP[|1a ˉDC<8!|0C h@% AHT r!`Js8M!쒖 #_@d0|+HaGyqzd@y#A;iw 1 ţ L> d }I&8>;< H0 EV@BD "1pND@n,IWҙt?2z.HSkE=DC!GrJdEmMn3bQ  ǵo(ҡ@>@\D06Bfv"^K@! @Q4/5VG;PNBT.IȄ΀ezS3P `?Z b!n*;ځ*64}#r@t @CnN `rn?2a6,Z1\^!V V g@N(. 4d?U("`EpTnIB'd `&K!emaPG ?cv@BKBAA-t DEB.G @@`!\rG?ȎI,YJ>!*v<v3rt FSgmuC!u<  Z؁#aH$DtCXCp yF7%LrHD=n? :- (s ` `avف`u F=lHۀ'Š6"ft$0@S|Eth7S|  %1c%k&V .J`J@!5`F!zo *`7 <@0ЃDfIhs(A ۡuځh) nBi .AiE`H -g%/67oJ#`/(@v!v'؁H|`3'K sam(nOu (G1PC6:GBq$b„@ :D޶Am2s<@BRi'VF#uII#SV0(anISA1XW[؅_祎 6(c hXQ^ llO)~?=8x؉X؄m Tn $~qDG^Պט؍x4Cp- <:D Xŀ|@˘XYّ#Y'+ْ/b2;ٓ?CYG^ISYW[ٕy_Ygkٖo3s{ٗYMh٘Y YّٚYٛYǙٜϙיٝ7C㙞ٞyٟyy ڠ9ڡڅ'+ڢ/$7;ڣ?4GKڤO3DW[ڥ_ TgkڦZoZw{Z}ZڛsZU٨کzZڪWګZǚڬZךڭZ皮ڮZگ[ ۰[۱#['+۲/3[7;۳?C[GK۴OS[W[۵_c[gkos[w{۷[۸[۹[ۺ[ۻ[Ǜۼ[כ۽[盾۾[ۿ\ \#\'+/3\7;?C\GKOS\W[_c\gkos\w{ȃ\ȇȋȏɓ\ɗɛɟʣ\ʧʫʯ˳\˷˻˿\ǜ\ל\\] ]#]'+/3]7;?C]GKOS]W[_c]gkos]w{؃]؇؋؏ٓ]ٟٗٛڣ]ڧګگ۳]۷ۻۿ]ǝ]ם]]^ ^#^'+/3^7;?C^GKOS^W[_c^gkos^w{^臞^闞^꧞^뷞^Ǟ^מ^^_ _#_'+/3_7;?C_GKOS_W[_c_gkos_w{_____ǟ_ן__" <0… :|1ĉ+Z1ƍ;z2ȑ$K<2ʕ,[| 3̙4kڼ3Ν<{ 4СD=4ҥL:} 5ԩTZ5֭\z 6رd˚=6ڵlۺ} 7ܹtڽ7޽ ! ,fBBD^^\664jjl&&$nnl.., VVT224ZZ\JJL::<**,zz|""$bbd>>@ Ĩΰ^d`b\`¸в$(8<08Ж0((H:HpfpH@hPP`ltt FJ@ rvxnf`0.(:0|vnfHxİp@th\`d\t`xԺNfbxtp||80L0@0.l`xx$XPX (6LĮ~zfh0|p|tfblh*$LTT@vVl86( ``Z8:PԴbh0<<4ľrr|vv|FFDIJ rrt¼ĖFF"C< l9예\A.cQ4hЍ <9O> NĀ?F)TV Y@;#B(ͣO%O Ih&QlIGqvdPA>p0`堄jj_wTPE#iF焨A22dC泩,iIt:*B6Īz&sF=b+[93O:@ >6&HFAHn[Sd% -ښAC=`,<ΑhAx;8K~ O𠷪BO;xPHZ Ámϲ,@ @9H,>3,2'XH6hcN>>C$́ S@)=sںM< @BCt:F#]MhE@Iу2.`Έ,T>/v }x" O03vA O9=;G@#\7XOcNl{=>:>  h9? C= |p%!~LRE#@ z6   |C7O7 +1AzP  {$uhG2ӱT 0C ] cȗ z APGIHHA?aS rAIx@ 038 xȠZb @]>8.#PRˈ8 dkd@I͊ ,Q(@HAЁ_s(11%<92D5<% Wi ΪTGMqӜ2hTS] =*0bCjԙdũ0ZA@!}*WdtjψЇMmfnC )䑏8D)$>Ă|O SE,EPT<? wŪ@$˂0׹ `+ J[K$ЎVQ +C]yYd@@Z\ aTrD~=-/tY1LBPӡtp M0tL-hG~@÷gLcH#>' |96[&Bx8"/юbYtY.|h!OeYT)|\Y P!ҏGkϭ,OL=R"ҥkbfC<%#AnI{|.i>ǚ%`M;@Y D0l}nkLb6H%+y(@*/G{PAD8NԸ*? v| NTI(,yD*xȁ YHN]9ɵ!k5NR6onnt U^ @.̚lk'$ $*: @ЇsJF%<st ӨK'G{A4@k*NcS{_┓]] 9x<|i`SHxЃa=$`JvpIDO}0phːL\3`Dt `CUCyH~O`@aRTP=q=g@~sqUc W\5#/( 3fqH0|=G& y&<%ЀAd!RboPr*vEYP=PB b}Fge@ q$'\`}7tXvz@B7$3-@PQ_lB=%qaw6p$PpaP|MPqb@@z!zC"3ME$br4`=pa09#,}#q 0 d56`b%WDld7a+%Cbݓ0`*PO 1PS w {?Jwm-qɐّN1rP=`)a(Ph* 294Y`0r\b/0\"%ZEBuZ%` ?;f{hG`I#ĭ 1:b4G֫{aX2mXNKG $ma&m =h`0syK<$[{aIAZɖbZA1/re0Wg[+ad`s۽q$~껾 Qq+kSH2N{qۿQu<\| F>||2@A.,Q1;:,paAB*Q QAZ8dJmlɽ dW&p;}a;TE"@Q@ #ef@"r5u>Z$]')$ ? $z`g0x% |%309CDg՝u"5 }a%Ll쀚qA4ce$,KA1ǯ,zY{-QXN0Wq`=d*0mtjs$Qbp@l3 H5үJ p3LI&mky? 0hNK/B'4l!@Ji>4lVz}|9pU[d9ᚡD383#ʣl< e:zHY!@v~]z#ֳZJmWz2:0SBЬeQ$B. d'5Z|p9,@UVL#z5 !%Ej* UpJd`bRV*b:^h*bP6mf ]$7~pE8+P0 D =e&<eA~WUWAq@CEu| JWۢW 0 q@~//һR$%!`iLp8dR_t_挫|:U69KPZ_9x?jֹECzلQ3ma{%a#p@!5 z@ K۟Ɨ [$[ 0#^6 xA @ 5s.x+o^xGAd! ~g* (}|8xY x8(x|8($bAt0 KKIJ*Yz/1 ijQ:v8(hP*!`BZBN|:|}!g3x.-8Ę'|̡G }h6JDŽ| f O@tPB 5PDUtQFuQH#5>K $`(t,+ 8vّs`q 2` $G0@ 5Ut0GvvVY9Ϡ1gbg\z5$Gpl "4* "i ͉l  ˭xpX gFBjX.Qc uZ9Jȧ /%yg{gzh6h $.83 "Ay8Bqv8&ѧ #ZBʃ!#S3_>"&Grn C ǀYIFGMuGuR|;$$M$` x@&P d`(@Wh <7% @>mXA΁ wғaxxdoU :B2 ;a>L#( 5dޭ8aLOZ~! dh1P0F!cdRU3"FA!M@r8pW< F&+ I.Ч*@#T@<Z0/bO2Љ 'jxe/}K`S$f1vD"ЂxF!SӤf5yMlfSf7(>`=7yNtSdg;NxFЙ 3 3g?OT%hAFƝӠ ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWn/mvWlxi^D%)5nrg͍{!4W]j.$`1$U89j8>8s "@; paن1Pٻu\o{:(R/H 3N.Ts3x!$ o/֌!c@*ga.s'k:LӍe?;խ8+L!Uo Q"|_ Bzȃg_ iu@HքUJI:+ ,Mp\߭(%1i$ P.#1(7X8mАp h+v!28h0+ѠO:mvh x  (80 X`p'A<OIhKT1 D %K(P?c x|?aAAx5}Ayd!=B(Q,$NDs}@sE^D'b%' qfw 8>f_D' |H `p\ ;p(\ /iP=0! 09\1qS2 [s|9}XG OA4 tI"Ȅ+S"p[4,l q$G C܀c$Ĉ`F@#hΓ# `9l `z0(|x6bƵ@s`a1 KH61@t0?i x0œȃxqx^ L&9 k|m Nɇ0́0nHRYDLSi (/LyP1`X pk"c bCtX,AA{Yc 2XL8h c+J(+$MNPM `֤dx ɬ!ǃ0xQtOm]1K u0z vRL$PMYBM e U҉sSϹΓу9}txLR%09)xͥTt- 4 7Iʇc@DXRzWa"6R0ϡӿ:8<ɉ_J#z@?@ "S( o-p% ZS5Dш?Qp%ɨ уq\ 4|/aAwSC]q2Mm;:X] Ҧ>`|"Y#]WyX:Z95[ $= QklR*Qуpx#{\]5$ Qzs%A@tSEum"n6% i8B8xN7W7KVPU`h-!tPz ^ Vd'S"2tH gç̒-! ͐ B( WRN!f N9]+ӱ8SQ@m XԄhֵ 2p^a>e7hpI3At79 W6q!a MSZ`+ P^#V@ ཞ|zx7%%~>}qdKha֘s@"#wyta P`bbH[fyhj7;;f !E 5% lLXi)rb_vy%pц!rd* I*{T4{foM'*< d! ?9!fI`B ૛10fn ף?Mѝ f(Yv00m(``xf?H pqhٴ驞4d y.>ٿhI!D3Vjih+%$͖ Yna' Q݄!Ai#XqHj`?"k;l FVȜ l=A < @dy遈>AayhS2y`>iAhqifmQ Q̂{Hx#9z `[<P0#,4] 1cm $WX46\s ]CF Gl{nߍ D]YI̜Xɇs1 >q  h{ޘ| K1'A#! ".#U`"sp"^"w!  y -F"q°+:,!n/q5 v0"?"#x wÇY9(70Hz3h nE_trb4'G&h"PatN}RaE'PS7 }tXu`'%nP &Zߦ|B['TuY/vc/&ui|u`JvmJu)&8vlvmvnvovpwqwr/ws?wtOwu?.>[:+pwwuC ~_w b a`šC Бk<@>6Ȕ*Wlr`x/Ǚ:w”e̟)MT(Ёb(!]q0oH$"oʌs&m-ܸrҭk.޼z/`.ӱA yj8e,śx|6^Zo0oqA5RY"^Kk8u7P6BxjNt0w`佗_JCb̛Y`!_ٞf,xbӿ{]v!UA5?1h_:Y$T|Q}uQ_5BYCjx#9#=#A 9LGmQcL*NPtTG RL,OeICT9uP@'}E Ď.xBpdS>$:6-$EW/deKFppO.R|r<>jk  RDFV< 4꡻Tk^KN^iHq-eJ @ʐκz-;.k@>0>"X4!c@5h$RpAZ\@< B@>}0+HOc\BO;$*  !DAP$;|H%Rv"';|Af> n><>@1=:]PrF] t',%1;.~ Lp:-FGq/9$䃁D#ixJ% $1c<{ 2#zR6_ɏ4<}4=DX'XAt`dZвx2x&ZHԠ2Y-X3"}@">.6a|Pb= 2 pQ:)!S&x-xcs`s H鶧pcvzO%JYӞV1DdVZ !G;sDY`L`1Ba1)H = !ZI<%Q`r@G7¢-DLɪX$cʳ*(ă a@ٔtSs0HAm !." 2|B!9$Tc?ڑ0&;Ĩ @$β`@'< AԴ&6wɇJRr#@<ТYx 1Ch!QAL1d Lۘ]R!'a1HrdP-S*(R*F1wyBLe2әДK@086W2ge2C5F`e/g̳p*=:L>{ S Z{AWVDQB+/ Z&t-;CېRA@H@C,WpG>J4%5QH>CCE;*WĽO & ͌_=F6K2Ig)@rz|0"jai D@P"T .DۣXWMv]8b<[!F>2,$ԭ!CwP7Հ;PT0ArFPN#@h( 2\0@2c.8dhBDp%\Ċ&}`h@(~tT<\ d12ih#xDyʍ>2rbtAbC.{ă+aBN*@ !HoAWtl@4T ɯlצ< A11 Y4BN[VN:Ԁg^5qcR(%& 1ͤd;ͦZzI㒇ZjH sjvA+wzVmmo@@̡h 9p@ 89Fhqp) xI@>r<1QW A`mݢ)bNcC^0@]m5:E2D!D@Ȁ9p1914=d4_taăN%@~ ZBa! PcHcm1@,>ȈH8 pb4F+:m-$M֤M$NEBdVGT#p@X9F:N RĚ5c>9JFGiKC>dB$=~ʝ h)#[–I 1D1ODD`b@;RN@L@ltC;HhD*-Cר `ZWʤT\?cƹV~Op؀*B C4YK?u*D`>b@)uMCzCrԦYf:hȎv,4Eħ#F[KG@aQ%S*%X.EĂb!x Y.2N f,BOhςާ@F(Miwuuo*_Y&rYvV\2ā"i>X AІEh!)'C$)©CG(\H9x9I.@Ôvƴu2:XBA>|h@ô7 9d >ΈA 2#A,@C =𦨪@@ /jD3]PGAN*C<ժI\P17ɤ <)PilD.0<4c>D]>֯)] ' (<$[,_,6x&GCL\32>jj@2D?@&H>/*<Ѓ<|,>ď,DC>H^:BUXj:,. DKkHG3Ybƒ̮x9PPڊ:p&{CBm*Ht+ $|/:ppIb㮈9KcB>A!AڟLZ4<K @3:`!ecm$׊hnpbdEpTo>\mho,v+ ՜pߓxp_:4! 7DǼ&A@P%496mK(c a; p3D<{|%qA$ eaB݇ WčVc:*C DZ0JxR>4$ˋ׌9@"KD)nxxoyS1&R+D+kD+ri8><•sOqJ@nhF4EF/C:&}4HC9a> >? ( pWF+@r10vă2A'4H3< 9DŽ9@d 1LRF< bt [|Wa˃h M7MC$մl BFV@@YhØhA9  wHj%%*;)&6Μ'<ĕ{`cMwiW-ωan#ϑ|c̓j3@4kC99$[nwHsMcν S`W(<(U}n$DcBy}oG$(Ћ8!@HNS̓ 74`Nºtz#-7+(&c! 2Z0eC 8l0D %;v"4~stxA}rU|](D,xaƭ-xh K<2!Z* @Ғ>*A`|zr'(!< c3Cz)O1tQ"s(AshC c̙01C|f`I@ F恨ё vÏp )Ao;3y i)dIG6CZIa:릚k*tAzd; 6w'9gH t*Â!#tJA @@]x2-lݖnpr=t]v}x]X2eVyH]n195ޘ=EM>U^[t-sU,W6ω kudǜH~ݛsgg묵ޚ뮽奜nRp#vaa5,0ޛb ?_rmn ?iU) 扢5sSemuߝ}?_襟ꭿߞ?_sx~U|.e.QG H6k;!.e'! |N p YBogr+@ĕ!c 0"ju) i*\GיHyS3C! @D.r$k!C}ȇ>>1ƣ"]xT1W"]rÆ7:<"aHG>L@ dᢉ?u&cЉ5(^DxJqQҒ\)u&$̘Dr"}@< th :8ش͐uzOϏN{99d>PZTF<~`#hevڭYyKlO˕ԥ6*U՗䃢tQQX^@= Vr)*% H!تCOf9MqG>!+H` Q}c!9YzĖPRJ#n%ق !G0)ID2prk ĤlNzKd찀r/#Δ<0K 9NKRղ %Z:0pR .WmvWSiGTƈpGEa f1t!z/js. l3*hAD՗MȇM*y@1/}y5^ȇB#)j~lx` .1G_x 9ƛ!xg F؞giI|,5@6xfLT;1@[A| "he9]==`FZ!yQjj۠4x&gaH}D>T5 rLA/QtX`'r;(AJ yL @y$PCp?^Muӡu rTKpuDPH %B x :6"[S QT+8"ժNpy< 0(\8 `ò߲%5q܎UJ!@A;D@a `)ߙ!#S ="(3c:E \J, (uC8CC wkŐQCZb0GG$. rFqN=6x@!''nD4 07ыA @ԯ/bWKץă13X  $U ^ <Ȁ݂ E9CQF(@!j%hB@Ed"c+N!$""2- `!s'! " rSL:08j8 ll[>@#A"``+r!!10&*>\0/x 0AbB F3)C٢0D؁mc!ΦM`-RIIT^t,z A,j(2́;uX~q+q!A 3ق%CaA-FC 5TM4> NGT$r{59RFU ֡CӁ򁔸eY֍JAIA1aNP/1?j ~$TC._a_LY*m21&Hb7c?dCVnnP @Eb*%Oo[9% LGxbpI"!5"^.[ " .2><JE% >2\LPVV64"@ ~BFq*f;"!j 6eJjFӡ 5h !an2Hksc6t[^8NvpN"FsN"cKsCҰ"wr)7F!ij 6w+A!*wvZ=6 z`$Tmm-r@xEV|Ǘ|w?cC" BR($Bw[%r-`B*ABVbX4gg(%Ip1>`fA 4':-it΁vekѶ7ַB2>'!sN'nB;,HUmg D " +!s6 W @,t$ت&,@dV$.D[jC(-w! pu*v$Ǹx}+. Nn#!TA^ Yہ1x[3K(&n)LVVg'z!4 x~A&8I1gR)ҍ0x$~).ĵ""ST -v|1@\OZdځ AFA2VaJ`ArI|x ʤ<^c#<[WBQP~( cC#4D"b @ʯھ6~<7\lB{b@UV8gQB"|1T؋؏}xnMGّٙڣ]ڧQOaGExڻۿ=6`~}Ɲy=]ם;@}y]_ߙ] ^#^'+/3^7;㡧&vbg䑦?_!>H\IG D91铞 I[|c "i2Z~c^GT*~4g6r{&@f U f~->cŢ'f\?d vރfb_7Gɘ%Ğ!R2Wad$7*˺/>lLʰ-|`ءTL)l.AʂGS٥rH9ȣM>uE p eRNIeV^eZn9zӎ=Hdlp;8R6`Ӕ>,Ob D ϙqB<H4qd؉9)*K*<D>ld;`+J\> qOLq_qoq(1J0 pغ d gr RI@<Ԕ(cN@ j1|bQs+]&3Q6ڇJ A=Ķ @>=q37S`N(m4H`N`MtR  =QGs55t>S,B 5=z 1>XA&l@>@>[ {O>~ }OO}_}o=M!Ѡ(D>d,ANmKrDO;=9G #DM"Fq~5$`%::ҷE<xbF` ?Ȁ΄IȔ }HЖ|+2̠A1oCZ(?# PGD"Ų6B#6 H*x6@| $ؚ֣1 8L_~bNgD-#˚P q8F>\ $צIolfI~Jx@a3e3ّ(*,bbI/ڭd>tДs< aI1!`Gȣq9=/E/ьjtJRԆ$h4Ž $B%@«p)@>BXJGIh;MΡ ^0UiY |>9ȕv @$Q@5ojGU֜˩yH$X)G0 /JÚD Ў4r\暏"O"E=jRTBxw#C';NVuiOԪvmkO"H^f}V!D<Ⱥ@Rx# ηtT)`7zH - <ayw!Cb`ЛCWHޒ7m>^`Ip3RH?\djчD]7Jޕ9[}2"MCp&oa yD.$SE.Lf>f7H |C;qb8Pt#bcQPc+TDr#0@|ҜLB?tS-wYU* ;qU@ nnI;\^uMt< S4Ѳ>,/WZ"j@>DlJ:֔N\ݰ5gFA y3%2<3g&t#Egя@_=1^IN\?<6mD |/0<ȇ9C$7Sv?X5: s֥n^ 5 ,@SimQLݭi- 44pLt@.5Ebfq'eDsD2/=G;*2+2mp !.` !>(すG]»)@;(ξ-# Rw /1vp@=ŽÔϯkN"r+܈o<@r!C(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hhȉ艟(HhȊ(HhE}׋jwHq>8ǘBƌub°θ'd "dXh%8ݕ̶+A~G~u}s hn*7[1Qȑ!Xr~ ]100kc'1+Z.I>Gai1,9 A~6Ci/֑MفVkBSyj+6>I^_aXXy[9c1eI#Cԇ·g+E!lq~YIs՗NXs @P&V LS$Yci긍 iirLhQuc iXa[r#I_Ôb0LdDL@yV+00ga8X{qP`_ ]L P?`7{qU66y)P:  iuYIV62j۩#`*џ&X\V{ b+PI Pi~P02W )(:%z@N 8!=:zO "!@$ /0$8Р5qrܩ:c:'#+a*}q 5`bg1Qkz  J(CqZ0QsPꪼԩʥ W@7 @C#6#:/& :6$!1q # k0 `( 솗Jq%%F&)[P#7;!A#q  D g#4˛0U 9ďI1!e.QCz Ŗ  ۴SU{O2+O".#CC۰"=+4?+!f򰶐jtNn\"0$6cl8F9 me#“ N;!) y6ê!6J ұID˼⼏7[+{@Dqxr>P+RQg݋˱{(c{9A^S%:i?#~ ":?) .R:(u~9#O&W&vM/|J0AP %PP;3>00 E%ϗNXL j_@ NXO#(Sto  ?wIDն%"KL3LۇN PhrC4 `odo a/O;ؽW7w-0#Q jjR@"'{@?LK:dU NʏfKQ$aAa> CNB ŋ\:5c/ ǰ@y,4@B(#F6qGoLG,]”Isa?H `nQ :Ċx0ϋLr"Ó*Ֆ;>ĸ0_,xP\… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥM^asj0Ϯ |.t,0gDb(N!+!`);! X{Lx P|(R!X11x聎ʹ:(C 9LRȂ| zl[ȹ4D9d0QDĮr(k:y$%kN$!#?zP5LO xT`xN/Yps,Nc2>Y6(|vɋc iX瀻1y{ e؉xY,=vH>g<0=י# !EpKMzq(0 Z"ȇ*Ї>w[4ds!^Sj<1\aE8BЄ'Da U*)tT>ȣ |`|00z gH(?3@eG%v8@=>ځ+  XCYp߉? ЃK!K՜ Uֶmnu[ַ9N!LFNV@(vsQðcetR&RV(6aaZ0b^ʗMC QC&byx;MjG|\ˆAc-J@2x9\: (1bBL9GG0,2`옆l@eİc1!bT:@b>qg] Ո@LJ"5;P̽Ԍv]8H<4̵%ltD c0;asxđ6 e0/6p5qwyE>$GyC4-ye>s7yu5^ GGzҕt7;ӥۗO[Uzֵuw_{{ve?Ѿvo{>ww{w|?xG|x7|%?yW|5yw~4 =?zҗG}UX8tJs{k~?|Eo|L49p`?~0+U0omH~w[ E@ȃ! &p@ 4 ^5xAEyiǨЛx(/؁a1Bb` pr J|²Bo`  D #|pΙ,1ę8TAUz/,SBÚ'FV C.sp7ؑXMN)y)@=Ӕ,d5=O5)!=! 7<S(0&b|B P]_D4`)@FPFfLuoyG^E`d``Fā$Ȃ4ȃd (O8 숋*l СL0 }: i Ȋ6 U:Me&u'Rΰ!GL1̇PQ/\IC1$| (l;b)͌` 0ٜ3}Q ~,5n>ɎQ(UEeFm4ey0Cy} :ULUX IٛX(LͳI9s>ZUN_ 胹tfugV>9}02p>r@ pfx(r#}z* ) \(=s(q EΚAqJ$stJR,RWz8y#J%jtH1$M<Ҫr'WЦ4җSL ֛ٜ0s3zT<3Qn{51JQ(Tu7R_ ˜r~9 S#Y%.z\*m[Z1/-2[%-{ k𗝕ɥ>R%5jUeuݍו٥ڵ%5EUeu%5EUeu&6FVfv &6FVfvaq0h܌" $ xq'r#R7(.V݇(>+@.z8`(HTxcx9N8 BNI}} $S/MmXg ?/L\=I8v8sВ @ I9=Ơ<heDZI> r- ':r-Xx(Ȣ 0#}ml杝ÝG󀑨8*+WMX煐IR5oV e#QmfVT(-g XXmx (=? ' OYȇ<xo/JPyPtT6hȖ5.kxIn5?wW7`uxXJpV]O s,@-5 `qnjezT!ц ;q'wtdsDNRZD&PzL4| 8’$VDsՀK105[Od2P& qrlxHhhtw/7+j Ou,ei>/yy`;`rE$ (̲ز !(ƣ ,)S$0s@vΒДjO" 1>G+쎘Ṫzbvka(+l Kt8^{0{C2KnK|) yz)q4X=7' *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy3Ξ?-z4ҦONz5֮_-{6ڶoέ{7޾.|8Ə#O|9ΟC.}:֯;%~87YLxC9pӁ{rءt N|AU0~"D;'J4<}OE)H#Osp93td89$<#YQ.Eі uҒBTwYdx4sItsi !{ҷQu;"tE%'AaԿ9;DV_ R iERSMqC6}{$.^)s:H9`0>3#B>p~n87>`O>hm@>M +=LBK yy|s@Ӄ"cx1>lnC <@M|G&@F~$nQ=88ou0t%|8rbB]x}XTC7tpBgѿ~A ;dL!@<$dns#p=}(,ɣnȐ%vͣ^A ^:Ч>p. r{9eXO Pl"y^hTc@(B>q54`:r =S< p@j+>0;`:8D{p.~q2<1 M C|VGInbeW gc"0AaB0!|H` P-ȣ?NS"Q֑x"!(yȣId1J=^ )-Ӟ'AP(yhcsj6DKlG>0:zxuvXyeXE4CKЁ0 @ g0t00 @@@J0>A ̴[<m @}cG}D" C  ĪXO E'rFq ޼)z3GUe1УVt:™CLGSҖVYL VU :Lѝ `Z|pG @!ǣ!Օ5>;+s@ 3`xAqB9 ɇx aG0<NCtbP"g1Z +4qLO;`~pfT~.WiY,l+E,ډN|lN!}v1p\:&_4- qb1<5Gh Z}U7Iku$q@>L@"#_9ӡ>$_`$ t_9~ 0 APn;\@A9#$n d@)Hbm_;TyC2i?6{@~GL>Aw G-7-́? PsIkt!9NA)I@HC;Dϑ,M@Lv܌ p% 9A@Bĝ Dё $5,YRL?lNd_/ 5Ԛ5BL]ŃL8mC4ADyALu""")j#*Q5v-YŃ=p%C.^Ab>xcÂH^:A?X!A@A$ BCB?HB]JNL= \<Ѓ<$>)CHă>DLJTȁ>A@DUM:'>@)!\"DL.Ƭ9((NYP]D _Ld2V )&ص≟&ʼL$=&_(q f'M#W m2c@%<[¥@ALӣ%ʱAbe@d5湩qNr&=g*0f=@C$Co."TC `CV癃hd&g $ 9$R^O>ਈ~d hrhD,\C&. (Bh>C9ǘDta9q@PD?( rC=.wf<9@|<4&Q@YRjAJ;+ '(qvg{D[ gv:D vd%!)Ϭi;IQڑ~)i"|m4m>)@_%D<#jP`ک@i:`N>(&HCCAf̪CꩵiDp CA>R<Ńތ)EAX2  =iN'x+zh뼂8ΜbP>@` !6Ḋvg k@9(P=@&DԟJ7^Ę@;8"N<ĕ pGpC%páhGe0?ll~9 l:j;56IC,'ăhhjrJq@DD  T"+ALm5j7d%~̚ T qAZ<$] ~C.$୘$Cd>]H>i\!*hCGC@=,A@.B,'=@pAoA@y?}N$9ɑCS ;\>/BD\8<9? VH ?W2D88>C P9s% O@W*>²@hH>f6 YBf!m9DS`hI9 pGoN"U$L0)qhoƌa@ ^b̓Ȁ9@0@/#ד*a TPI@\@A;p@!3(pCï'O?oB *+1Kyl%$ƃ8pp(0DYxHLr{{k[ 2*2;s?sAhL]$oFkt&@ HHDaP W>lW:D@BFHl9<5A\S HQ'"l !rn(*1u:8)>$9PA`_rB9& 1 0ǰU;S.9T5n/9%sJYHf¦œ^ NaAi:l@H23u@`c 3ləHujPDvwwMC\:hU]U,k,M 1ۥɘ݋~۫@\K E D&\$y I9X(iN׍]t lN3{qTɋ޼D,CA0A𐫼 "C'إ))@D @xH7`:TaC!F8bE1fԸcGA9dI'QTeK/aƔ9fM7&`zҝ+a:|#t >] Qqpx}^W@-Aro_G\…xZ=y/.UW7|"$a@sm\BSҁM#@ .js0vG>zuױg׾{w^<|ə0JvʓOA(C%ǀ|>恍xiKv’yJ^"9vYOIBA`X J28G\1S"n.8+LS5l7S9鴉5` tF t tBǝ*K9>G "}Lv.آ!v U!! TWa :`rB੩G6 *s h+|f\_"$.",lZhGe +bMWumwWyUE:-r (y|2t,m q>Lc*ޑI |*Dn<1ڊa!T!;Il,JkLJ*䫱Z뭹,π+Z*vk `A` x t~6'7t ۟f[5 <}N"hDɣg@}6DGb\/ONyUh灁oܴt޶xȇrϡ,1ҡ<&Pg0HE.ttCȉvG7|8-U 90ʼn A py쑵O'#"d$d d Z5% 9< _9DE f0A>GLPD7J6rIf]nw ą(OR%u{_ΗM D`^G`6LT7 v!a Okbp1a oAb%6Qb-vacϘ5qcڹ~cWO򑑜d%+D"D!>X,^M>f1*YH@a 2#pm%Z~pr<"Ƥ*QLaSG:eN,a@f SAjQ:# "!zt C tzȣUC9AgP'DB&9Fr3zN{s :Wpt%lqcu*ȣJKv̭ >t-`ƢCo3Z"P)7_"ЁRɆ@H6*S9G 18);AM42<@9JEmzv0Zd vL-HyQ2D^v;"I@;\qb:2|CRW]zۅ&>i$Uߍ.qЁBJSt)+KYì-đG$9ӰRaȲB%w ^c0>:9v``1$9M4}~xaSW|<$S2M4Wqa`Ot\zPA b0āHB1OR; M!D5~K!!ٺ}I HA `@@Ud"AGFg"J`-z LD`BZ"EZ^oI3z!ީ `b~O b"Vc.3OadP8&.[HTB *bԣ-ȁ(0Q8I!f! U"PReU$/.H>"?||%P>r`(`(Ȱ&#<'(6* umT  `nȢbl` f@ fD|d<ʣ !` m@,K!PN$tA7/.ґO!Joopu&5B@"x#"M@v(r&Dx+a.dJ'2E:a:t"*1`IlSfDtO4&8a;ra>L" '=e2 2(* I@ &h8r+ $*e0 vAAΓKLӡT@FA 82 5l B0AY5ZuZZZ5[u[[[5\u\ɵ\\5]u]ٵ]]5^u^^^5_u_Ut*`_ `@_+b% a)B.#bT2bj`5vcyl% o!ȁpFSa`8`" B&Rq0e9g}VL Rm%RG"x~ Z '% #g", u~k6-[`4%!`5FojM#֫>7"k<b;UkoGdآ {ND"f<h#`' "(PҐpA7tAl@!>\ )`D@YL\\| 2 #,A31TLc(f n)~ðĂ3-op2@b B .!OA>Ag@N1Jt7L,tٲv2H0 K*p(HȀv$r$졫hg@S!9b@vA"dBzD`CڮR4#o<,Ns}AځS "*8X bydbZ( +-Sg[͘m`#V2a_<@9x S $@Y4S<TDc"0f?yL~bmRQp!TEx&#l*Ўpg!* K׊EyK J0*$)xAmC8VPZ68Me,E94b4`\G!6`YgQL &㙻%bV$>yʴ!0Rh_M6 C\*dÌ UZ1#m1x{A@4 o%k I*22}O&Ӡb$r2]9%S7Jrg r Jhx:4#!q%!,2|}ԧ'zzgvْ/o]q ^&r׳ <$ŀ>%:ƒA I'H!ڢT!b)}&V@Š#7 Evہ &dE }ъx [Xx%qbxF*-V=Q$3~t H-,*ʢf2X\G lF"K*KO\2Yp:RjAf˅9fP]afQ5|S5aڒ`#;](R;Ć IE\C dt4UV&jV%/{B3"3FRBQ=Uݽ>@uVa=VSmq=u}y}ׁ=؅}؉؍ؑ=ٕ}ٙٝ١=Ⱦ2`Vڱ=E V&,#lSbNbpOcݝWZ6mfkgG%,.]АV% M!Pfu6ٛ׀MG6GkiuDT #2Q>SO%[%z"]Wn/{m1voU>賽qk_3|"V.ךKsS>8nNy)yz8"&LȗtFY>X8yǞ^z"-/R)L!|3}}!ua^75ؗmoSVfP|XQ=5.@ D߄U8AP!$G`88Moŷ^QoۈXuU7y}%3/0X) L>9bk  "fmg͟O mȗB&$LG>ұkwaKċ xE$/tB 1x-#bŤ`@Ĉ@ JѣH*]ʴӧPjG£ "[ah>DKٳhӪ]˶۷pʝKݻx˷߿  ƘzN_:/t (B>At= 胩@d\l,dإn3t8.y1AY9ᘦQGTͺetËQy["'bQ|OϿ(A 3PτE*,#_Dt҄KHb(xQ>1cN/QE=f<LQ+9$hvFEQt9vlp)tix2嚔-%&F/pZ<.Ph|hSfD]9%g<`$ =.!FI:\e3O;`Eii 9PV1>3D\zv+-;閘r+_wEAVȻb;\t>&#GjP:FBq:jp%EbDs?hD<, fXR`TIdO;ڶ@-Dm ϖNڎzO;$A|D gD2n:ޔS#F᳚?H@H(7`##c#2J@>9<^, GHpMfȭ6CBXߔ-6H,2 (!x]QRX. 1BC$%P'y8 4 M4t|G: H:a 3QMH@C($`G F:򑐌$'IJZ#h.Nz (GIR%)WV򕰌,g9s̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:ru<z|PhZ,K@~H5б 7P!Q,ͨF7jJaT`iaCQZl"zpHr#reP|c1ẸCcf8TJժ}tET>I@؈<(GB>cQ>t5.yR :ӈd98 D!X*۔ʀ.PsOPd;sdnwI# P0;"Z%ڀr PDv4`}K`b*Z1#Mzס ÇU,֦[@^]An"~g^ ,3z}2GB%[<P_/F<,8+2m@I^P`n#IOt@0-hs`B>π. lR Ք0 .]]1rfa5zHWw! q@3E:;n-?&} H =kB: Ў.F(> {O41F MDG>ȐÛtCښ.rGk:+Er"Ay:;,^/$?L)sx0ba@ѯ&Т'OyUVJD1!C%b2'ObPN*ùJ+s|%,ϼ7h\ G桝d ʵ΢#t&8GѬˏG81PW+ȳ01t,頜b,v s#&V1)wGb8LFfZj8`l 8G4t2$ #]o(Q&p6 xxԅrDs(Pb-$@U`(t+w75sQ|T|1YJa03%j@memSde#((UYm~(`+0W(E}H\Y2-2z8X4hc ?b `i@60 @1c_ hTqEO1!2 G.D,;x1h1'2.+%/t,-3?3@ؔNϤ1%-s1~Hh$|0wprڡ~p_"i|Qw"@x,g T"lSSFA|c7#1!#73v-Qp#87J92195 yIJZ1vUVG>76 `c><5zPyn vV?8j I<c Q!sQlV >` D`;.՗z?7!"0PM)U%s;0 ٜ#C@!CBQjb@pxuR@=C1q@a4hAX[2@"p/YFzԅ7 2Iv6S0(> ܆q4! `Cao[C!^PD!6I!<>|r (A9 DCB(1!i E"EcRE7m imDc=O}1Q3$iCD;qGx D`HCoʺ̺yJڬxpZzwGj0^Wz蚮J d:Zzگ;[{ D UP["aQ۱@`  1S%%WT2;Gz3xa`neQ4{JD[I:FPbqIttR{X+]K8Ԙ@}`[f{q"15~~i\0bngr6Fffg mfqvw}yg[kU"!JkF=%$ C w: 0@pArRp pEq殶;{N W#XrQGxЙQ1 ["y֫wZ^;ߴ b0 ci7ۑ>zf(@ HQ1\"`r99%=k2rH</gO1hma2&#&2<Ĕ#A8<,!,8B- hl..Zc18y}U39@:TǢ<ʓ~I+v 0r jV7@7 ,VqAҒsB ?33 d`YUܮX1aA?AɁ|H54 @,#CWJ'O*U u -RF,Gv!3HH ЯSyI+}ѬT 9uJ"=ғ%1#$\@. /!* 8:<>@B=D]F}HJmoGXP\|1-s`bIxPEH# Rv}Nmk !w%!ͲDs1!Ӥn[|FA7GT@Re6g`bgN @qeװFX" zI|W3[^=+jpvhTxAXN`c`8?>!"6tu}p&<<\e}O[mTA[Huj0lN@QSccP`.,%N}3 FN P^Eb;E ftOԉuΨN|3~(A[Ca_6u@z}q2}k$1Ց9yKԈTQc6 !l@b (u@--ܜF.CX7Bq;@P8S))/|bp1"X!_ yE&4L?ɰg6Ϝ.d.^%NXE5nG Sp9#*I<< xNCdO> "&yߩ}a䩯g{ϧ_}/6A<G r@Rn b0ng;DZ˰x@: /dHÆ h' "Lڊ0Hx(H  f'@FHgFûFK'᠜ȑ)oK䙩!P!1@@ !v7NO@tP"J0'"QRz&mh2i!N4ǭ PԨ-y,N3&q$s( !(ɧɇt |:Gv@(sz7Nۉ(xT".B]*Gc9x$X?a@ |^U sG]Vxava#x̲" ѧyG H9(Y (` F1yB o#cDӈy ԝygٙ!ʼ iLzgi 5Ü `kȇx (@ڠ̅hG``q\RȜ( \H$@ l =0b~|F.!CyeIʄ%0FxȈvs}w{wLGխ|pG! Gt,~Dˇ^2$`ox5&(0d H0J?K ltp 'bfY[H E.!Й@" 2a!a 5PSbxE,fQ[,J[HLq>cfbF8QscxǥT jeԁ=`LC(<&Rdd#HHFRZ _0S8IPR$e)MyJT xɇHe-myK\Re/}K`S$f1yLd&Sdf3LhFSӤf5yMlfSf7MpSx$F>xM#ENxS8)G^gـgAZDX=PFTmqЂ`O 2Gr#I2le8FGF0 ?T1ęT;N)yps,ԸX{!ѐ>Oڈ  }C @gy[%kYzVj`}f6ƩyHFLQCФV<Ū-A>X&V%;PZ!aEWVy;C"2v?@d:FѦVe-պ!FAۚC (:~E 6@KQ BGp$x sd= @]5b!Ld\H! k I؅o}{_Nlu_=F}G:['x;饆0~/kcPBxt@AEj/t1Cf;UͿ&ҏdE!\+܀Vusa=u$A'` hHT]ٰi` Yz0"Tʇ",[IG;]s'7e9͐Pz i.d= Rs͕?^gC?C@ D;CA,DC
Š  D `P7ME^XŎ Ckz E}x Em$ x7RJ ĝX HeCdm`GnG~9h" GC)E腕ۈ= } r~H=%ǣy3 .p'C1$ ,؞-Ґvۈ /tɐxH XIzhɛO8xx(@/h/cx8\K,8x  (E ˬvX 0Ιɘ )IF 0m} K tP1P9k[rʶMl6hf%2 Pyt  XEzb9pUк2t rK9xyFhj+ CN5 fϛyBPCxlP=i@a4!lٖ1>`| (7ň QK2IӺv6zx8 @ ̒QtzAHih0`c!6Hg" PR-/C! (_#`rPtҴp!Qkk1AE lU34K( *,s-TMe,َ 0s5B524 P*txh،͘7C`k2(:R!{iCS=SsP0该:8< Tp ײP8'IT:43 8G#Ɗ1)}2,1cWDT Qx`iWX2"8qg喖h 14 "E  3w2~BY\YwmY  } pګt F{xN-[}l%B0 ( h!82:0}Fuརц]"(/-B|D:s%y2q%[[}t[O 2s1X"Q)=[-e(G! v ( KIe !8-#a8@c9# q2Ȋ8xvA( O-x^we%!8f؃0[4 |A"۠#pFW`.D`af6N)aNa/P~aaaaaaaa b!b".b#>b$Nb%f]b'~b(h(b-bv0А 1.b̩0c2b8=!ѫ1]} 6 >cDNdFY|5()JbsrbEeQ~#HZUFV,-\Xf:WQe_s* Yʿh}PZ{5Kcd>effgB.!# <I|Ij jf?VvظYw!g~ʀcufgQ$I{n_hB*Qx( \ hiyikl1XQ :=XyYKzyKi"piLy̺(\ $Qw.#uz[ӝ@Fc ޼9 j][ Hv0 xK!pIxܱ !W9f׀xmHM2١EȝvXT5fXw eq^X3*XF捲_2񛀳(/y\S}fn*_ι\_?P8| } sF}z?:r_}/#ІC֯}6#nϿ}~z}7B~_~o~~~~~~~7ay7 PvY <)O%v0ߛ+ڿBLZy(~_{t,h „ 2l!ĈΓ7M>}q:~,iRaȑ'W܀!*ZXҬi&N#JgnMr,xN_?2N xڥ7ɱې@,qxngy S ܷ D BE(xAhsMOùxH OqO͖U : J8!Zx!jxPhD>Lgs<) ̨OO#?"s? 1PgxO) tN vP;0dcY9sA <rAxf= (w; WASŒ"F@䈦=ybѢ@u ǬH0d%tNGv*,:,J;-jO:ӧ@ۘUN>*5@j{#Btn^:J%dKUhSh`7O>VB dD@#FMP1@6虏 !_'#rVCwY|npϚ^dB?Bك@#p:@$t"N3n>#9"Kd_֪6m6q=,} ER T~.B<h@>54On@ X@Ζ@..^ʼn8)~H@OtIQ }C"\7HBd& C'xG0Q"'h@G%\O,YҖt ?!9T<0V[ƕ4 ;'e CvcBy%D^: D݌^t`F41ubLO\!a`=p`t?<p(@ h Tȫ @Sҕ.})L2 "em`FAa5qzX@08wjQ}"ƃ0j<'>̆0F1;TN BFUUġ`JA 85=}Kq0A09 H RYA (Ym x@}CFΉG$a%mLЁ|V 0pځE炋j!_I8 B; ېhh Mzktt]6(%:=ς \_/X3`aqb>@|r [z5M`85,!D8hAMX`2B_R1#:P3ƴV2-s%Ë9Ӿx.%  v!݌0@c yc⪛, oF>xQAz&039c]AE(@fT@| (O L?E4'Ri.C6`A(b}&[fA9ڒ,pM:< f jD{ . ? !GE/9\pE-uy~u! D dxa6Eܹ}P![q- $R#/\A`rx="RP<^:@HwAQ398a2Zs^:fftF9rn %3ѩ^U nfI3\puH sO"HG_J D"T\ v xE< :e_r5\8@;!CAd`.q 7D4 e:s].4k} /T\B$B?dB  5>!FNaI|Ӭ =ܘK9PTB ; >}B<!C|aar@(M=EyCda-̱d9DFD\U9DHd_^jmZ<4b$gʨGAE AЃĮ ,֢ta:ԅ'DP c.1^Bt@EάQX -f m ăLՠ9U D뜣?<"iX"Rd&fI=.DhBlGsNQ`CD`у٭T8~$HH$I6LEB]B@@1ݝBtΜNC%t<䭡Z_XC8dZă@4DAIɭ ]alV#A=j i8R(I_(ZȃP$D^@HDX6=Q &A1&5HEXD\g$&S,@>$<&NJD#/ F đ^]'B0\)j9IB ['X  1h^XX]B,|9hhAT|4 }D#cl{**2Dy̜CmA@ȃDdFDpq$_:P@d4&)&2_]AtStle<|BGlf4M:@ Ř*jުC@,u :eLFø^ T(M&.OUf>J2Ce1@>t.訧TZ?dLpl9K@tZ,=@t,2B L  J#ʦ( I !c)QBRG˾Vi[LDAԀYxIגD -8OdfmxϗT@ p՝ÒJ$1:Q<8@D] Dqt.;A0=;Ԫ!P!CKM9V%_2&gr$DDp1hPI Eh@cfR-%oR>AD.T@HOs敫Ad@ k`ۈ"2D̂1SR4 `~,S9hQj|*Cg PoBP,٥K>C >XdD C8c"ACEŏl%@X&?&hs(/OF<ܪ̈R &6aa` AgarG\:зCrYh׍@2 dH h6iiGE\u5`wF{lU@V‚]=lY4i7qq4"܄hɪgjEarWu_7vgv_s4pzvNy7zz7{{7|Ƿ|7}׷}7~~7788'/JUhLIP7dUH8KR4Z I4Cpxl88ywCvE\D>0XWȎwxMHx 9'QCvD[E\G}G4b!F`a{HFdHefhgx NydjDsBd,MCa}(C TlHLUpm@I♓bXe?g:+ H[dXR7gz5Jg}~FG `+9/PBȘÊJȌH[KdDHgRŒ4ɓD ӀN>ԶVz7}I !xIt trsD fW8(MU@c^4l [nnp@/H|So)~@dɁqdFtX\@,$MdE(tZ⊮=ҳ s4Ĺ MDbD:x1Me vþGLQJND C\9v <LWp -SL%?ě]$ [EG(b_xd-@~քw=wxD: 4x0|}<7=x?'p^<|dH#IƁ"y%/߇t2ȠI-*tQ.uPSv, |=p@>9!;{(/ Lѳ=s|^P)ˮ7vrdɓ)W|sf͛9wthѣI6}cv"G/ @l7 9 j|Ayy @x ΣW$GSE]'l'H/B潝gpx8T Ȉ'?21郀y.  x)!x8s|'`y((h>  &HBJ@ǽ(})-YA ڰ/"8š !FxH;F( G k6$p|:C$@? xh>IR JOKp P,?Tjx |HH"gD?sKxD`q7b :*#(t27"6L3S;t]v}x块z\v1t\ C) 馺xAcG豀. a̱aHxxW GGΦr%s)A j"h*+ !;^ z1hG `C1?ǜ"}b7s J֑|i Zs 1zxp.ʟ8Gyv-Ay ¬ lؠ\ İx⸀f'Hly鰃?ŐGDvYisB[mن'tP乺(>Yje; PA\+bateIY1Hl/)T YB1!Vp F@9YW DOF0G`C"!A( D:# C 8I!W|`<:;T Aħ|LjÇȌ  6b>@s`HEQ9S@D ,0lI W"sǍ5xbXhSY##9ChEgi퐇4 Mm j! QmLЉ<` `ǖҡfg0#M!r;1#|8<y2pȎv\` 9)XepZ5 @BJ9X 9 !#J \' @mbtIURT>QT$L Y@Z|$!؅`Al"%^$U`ck<'p Ư20⮑S qF AIM8@Q `^ StQ C>L+ dI"Y2PYlROfm.$̶o"Ck 0@c#@>CZӢ @, 8 !Ї?P8`Oyϋpi% |*(8pɎDOk4ah(MN ,! b@CbQ Av(+ 0V#v%ip q(HQNCل G #u@Dd'?Q\e+KIF&8$2R+%'d\#8lƄa4i$/'z@D 1~3p0R!Qe#H1: Js`6{|HD2g]/$! G Q[oEs2c=GGX)Q>M^\@?/_KZs[h#2MNG$Ȱf}=\lY2tu J{c8İ &o2]IFDOf$"yUΟArr_9#A\tIWҙ苹[A 0Y$#Njӡk#J%WQ1D(C pZ7geACi!dViOGhKƤZB8|2b}8@*KlŬ|k$㒄"@LoxZVuFD^3I\9pz:bx':`_ AfE\Ac,^1B"O:fz A.'H*ҁj2F@Z '"tD!l@/V[_cPKcdD*ڌ Z@>HWJ"⁝b<Ln ,B nJF r/@Aj8&}BDbwCJ(6␫mBh$( B`BB> X,l )"`G9 ̄| (B-DL|<0 ^b@e&Ԁȴ >" sEj*Ch ·@ p0rU&^"gPב j( @l8S &bd.@U΂ HFl H&"d;D? *8=oIe3a6,@1\V V V '?dA>U("*ElTn@6(Q1BgT>n'AKBA@)lqD'Q$4r.8*'~#|Ct$H3 cC"fb3rdֆQd &C*Pl$\D" LL(#4&B3aTDB;,6tm(!n"UBu< `X$*'G$0TBoCM H ԗ<r.'Y=+t A>s ȡC3 *s^_U_فDR:/>+8"Ft$0@S|Eth7Nv ,@:>823>2nlbp !6>8`d v]G =H`a.&: T4\(Jj&,l3-Xz֘Hk+kNf%/8`6oJj#/(@nw. 3 k7VSF1*8d?]q$z.'A׎./LHi.` 1 kl1>(OE#@tIIA"7V0(m de'-Ȉ0&l TDATl'RC׮UJhȺ )EBx_X]h564rc6*gH2 $=+x Lbq;؃?CXGx^jm{Q "(*FBc @WX8U؈e*Ė?6(.d|a|DGsB5؋Xx4Cl- $R:D [@Ӈw؏Y ِYbّ#Y'+^-Y7;ٓ?CKٔOSYsWٕ_cYgMksYw{ٗ Y٘ٙSٚYٛY7ٜYٝY]ٞYyٟ:Y ڠZڡ#Z+ڢ/33(Z;ڣ?C 8ZKڤOS[ڥ_aZgkWڦsZw9{ZZ=بکZڪZګZǚڬZךڭZ皮ڮZگ[ ۰[۱#['+۲/3[7;۳?C[GK۴OS[W[۵_c[gkos[w{۷[۸[۹[ۺ[ۻ[Ǜۼ[כ۽[盾۾[ۿ\ \#\'+/3\7;?C\GKOS\W[_c\gkos\w{ȃ\ȇȋȏɓ\ɗɛɟʣ\ʧʫʯ˳\˷˻˿\ǜ\ל\\] ]#]'+/3]7;?C]GKOS]W[_c]gkos]w{؃]؇؋؏ٓ]ٟٗٛڣ]ڧګگ۳]۷ۻۿ]ǝ]ם]]^ ^#^'+/3^7;?C^GKOS^W[_c^gkos^w{^臞^闞^꧞^뷞^Ǟ^מ^^_ _#_'+/3_7;?C_GKOS_W[_c_gikos_w{_____ǟ_ן_! ,fBBD^^\664jjl&&$nnl.., VVT224ZZ\JJL::<**,zz|""$bbd>>@ Ĩΰ^d`b\`¸в$(8<08Ж0((H:HpfpH@hPP`ltt FJ@ rvxnf`0.(:0|vnfHxİp@th\`d\t`xԺNfbxtp||80L0@0.l`xx$XPX (6LĮ~zfh0|p|tfblh*$LTT@vVl86( ``Z8:PԴbh0<<4ľrr|vv|FFDIJ rrt¼ĖFF"C< l9예\A.cQ4hЍ <9O> NĀ?F)TV Y@;#B(ͣO%O Ih&QlIGqvdPA>p0`堄jj_wTPE#iF焨A22dC泩,iIt:*B6Īz&sF=b+[93O:@ >6&HFAHn[Sd% -ښAC=`,<ΑhAx;8K~ O𠷪BO;xPHZ Ámϲ,@ @9H,>3,2'XH6hcN>>C$́ S@)=sںM< @BCt:F#]MhE@Iу2.`Έ,T>/v }x" O03vA O9=;G@#\7XOcNl{=>:>  h9? C= |p%!~LRE#@ z6   |C7O7 +1AzP  {$uhG2ӱT 0C ] cȗ z APGIHHA?aS rAIx@ 038 xȠZb @]>8.#PRˈ8 dkd@I͊ ,Q(@HAЁ_s(11%<92D5<% Wi ΪTGMqӜ2hTS] =*0bCjԙdũ0ZA@!}*WdtjψЇMmfnC )䑏8D)$>Ă|O SE,EPT<? wŪ@$˂0׹ `+ J[K$ЎVQ +C]yYd@@Z\ aTrD~=-/tY1LBPӡtp M0tL-hG~@÷gLcH#>' |96[&Bx8"/юbYtY.|h!OeYT)|\Y P!ҏGkϭ,OL=R"ҥkbfC<%#AnI{|.i>ǚ%`M;@Y D0l}nkLb6H%+y(@*/G{PAD8NԸ*? v| NTI(,yD*xȁ YHN]9ɵ!k5NR6onnt U^ @.̚lk'$ $*: @ЇsJF%<st ӨK'G{A4@k*NcS{_┓]] 9x<|i`SHxЃa=$`JvpIDO}0phːL\3`Dt `CUCyH~O`@aRTP=q=g@~sqUc W\5#/( 3fqH0|=G& y&<%ЀAd!RboPr*vEYP=PB b}Fge@ q$'\`}7tXvz@B7$3-@PQ_lB=%qaw6p$PpaP|MPqb@@z!zC"3ME$br4`=pa09#,}#q 0 d56`b%WDld7a+%Cbݓ0`*PO 1PS w {?Jwm-qɐّN1rP=`)a(Ph* 294Y`0r\b/0\"%ZEBuZ%` ?;f{hG`I#ĭ 1:b4G֫{aX2mXNKG $ma&m =h`0syK<$[{aIAZɖbZA1/re0Wg[+ad`s۽q$~껾 Qq+kSH2N{qۿQu<\| F>||2@A.,Q1;:,paAB*Q QAZ8dJmlɽ dW&p;}a;TE"@Q@ #ef@"r5u>Z$]')$ ? $z`g0x% |%309CDg՝u"5 }a%Ll쀚qA4ce$,KA1ǯ,zY{-QXN0Wq`=d*0mtjs$Qbp@l3 H5үJ p3LI&mky? 0hNK/B'4l!@Ji>4lVz}|9pU[d9ᚡD383#ʣl< e:zHY!@v~]z#ֳZJmWz2:0SBЬeQ$B. d'5Z|p9,@UVL#z5 !%Ej* UpJd`bRV*b:^h*bP6mf ]$7~pE8+P0 D =e&<eA~WUWAq@CEu| JWۢW 0 q@~//һR$%!`iLp8dR_t_挫|:U69KPZ_9x?jֹECzلQ3ma{%a#p@!5 z@ K۟Ɨ [$[ 0#^6 xA @ 5s.x+o^xGAd! ~g* (}|8xY x8(x|8($bAt0 KKIJ*Yz/1 ijQ:v8(hP*!`BZBN|:|}!g3x.-8Ę'|̡G }h6JDŽ| f O@tPB 5PDUtQFuQH#5>K $`(t,+ 8vّs`q 2` $G0@ 5Ut0GvvVY9Ϡ1gbg\z5$Gpl "4* "i ͉l  ˭xpX gFBjX.Qc uZ9Jȧ /%yg{gzh6h $.83 "Ay8Bqv8&ѧ #ZBʃ!#S3_>"&Grn C ǀYIFGMuGuR|;$$M$` x@&P d`(@Wh <7% @>mXA΁ wғaxxdoU :B2 ;a>L#( 5dޭ8aLOZ~! dh1P0F!cdRU3"FA!M@r8pW< F&+ I.Ч*@#T@<Z0/bO2Љ 'jxe/}K`S$f1vD"ЂxF!SӤf5yMlfSf7(>`=7yNtSdg;NxFЙ 3 3g?OT%hAFƝӠ ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWn/mvWlxi^D%)5nrg͍{!4W]j.$`1$U89j8>8s "@; paن1Pٻu\o{:(R/H 3N.Ts3x!$ o/֌!c@*ga.s'k:LӍe?;խ8+L!Uo Q"|_ Bzȃg_ iu@HքUJI:+ ,Mp\߭(%1i$ P.#1(7X8mАp h+v!28h0+ѠO:mvh x  (80 X`p'A<OIhKT1 D %K(P?c x|?aAAx5}Ayd!=B(Q,$NDs}@sE^D'b%' qfw 8>f_D' |H `p\ ;p(\ /iP=0! 09\1qS2 [s|9}XG OA4 tI"Ȅ+S"p[4,l q$G C܀c$Ĉ`F@#hΓ# `9l `z0(|x6bƵ@s`a1 KH61@t0?i x0œȃxqx^ L&9 k|m Nɇ0́0nHRYDLSi (/LyP1`X pk"c bCtX,AA{Yc 2XL8h c+J(+$MNPM `֤dx ɬ!ǃ0xQtOm]1K u0z vRL$PMYBM e U҉sSϹΓу9}txLR%09)xͥTt- 4 7Iʇc@DXRzWa"6R0ϡӿ:8<ɉ_J#z@?@ "S( o-p% ZS5Dш?Qp%ɨ уq\ 4|/aAwSC]q2Mm;:X] Ҧ>`|"Y#]WyX:Z95[ $= QklR*Qуpx#{\]5$ Qzs%A@tSEum"n6% i8B8xN7W7KVPU`h-!tPz ^ Vd'S"2tH gç̒-! ͐ B( WRN!f N9]+ӱ8SQ@m XԄhֵ 2p^a>e7hpI3At79 W6q!a MSZ`+ P^#V@ ཞ|zx7%%~>}qdKha֘s@"#wyta P`bbH[fyhj7;;f !E 5% lLXi)rb_vy%pц!rd* I*{T4{foM'*< d! ?9!fI`B ૛10fn ף?Mѝ f(Yv00m(``xf?H pqhٴ驞4d y.>ٿhI!D3Vjih+%$͖ Yna' Q݄!Ai#XqHj`?"k;l FVȜ l=A < @dy遈>AayhS2y`>iAhqifmQ Q̂{Hx#9z `[<P0#,4] 1cm $WX46\s ]CF Gl{nߍ D]YI̜Xɇs1 >q  h{ޘ| K1'A#! ".#U`"sp"^"w!  y -F"q°+:,!n/q5 v0"?"#x wÇY9(70Hz3h nE_trb4'G&h"PatN}RaE'PS7 }tXu`'%nP &Zߦ|B['TuY/vc/&ui|u`JvmJu)&8vlvmvnvovpwqwr/ws?wtOwu?.>[:+pwwuC ~_w b a`šC Бk<@>6Ȕ*Wlr`x/Ǚ:w”e̟)MT(Ёb(!]q0oH$"oʌs&m-ܸrҭk.޼z/`.ӱA yj8e,śx|6^Zo0oqA5RY"^Kk8u7P6BxjNt0w`佗_JCb̛Y`!_ٞf,xbӿ{]v!UA5?1h_:Y$T|Q}uQ_5BYCjx#9#=#A 9LGmQcL*NPtTG RL,OeICT9uP@'}E Ď.xBpdS>$:6-$EW/deKFppO.R|r<>jk  RDFV< 4꡻Tk^KN^iHq-eJ @ʐκz-;.k@>0>"X4!c@5h$RpAZ\@< B@>}0+HOc\BO;$*  !DAP$;|H%Rv"';|Af> n><>@1=:]PrF] t',%1;.~ Lp:-FGq/9$䃁D#ixJ% $1c<{ 2#zR6_ɏ4<}4=DX'XAt`dZвx2x&ZHԠ2Y-X3"}@">.6a|Pb= 2 pQ:)!S&x-xcs`s H鶧pcvzO%JYӞV1DdVZ !G;sDY`L`1Ba1)H = !ZI<%Q`r@G7¢-DLɪX$cʳ*(ă a@ٔtSs0HAm !." 2|B!9$Tc?ڑ0&;Ĩ @$β`@'< AԴ&6wɇJRr#@<ТYx 1Ch!QAL1d Lۘ]R!'a1HrdP-S*(R*F1wyBLe2әДK@086W2ge2C5F`e/g̳p*=:L>{ S Z{AWVDQB+/ Z&t-;CېRA@H@C,WpG>J4%5QH>CCE;*WĽO & ͌_=F6K2Ig)@rz|0"jai D@P"T .DۣXWMv]8b<[!F>2,$ԭ!CwP7Հ;PT0ArFPN#@h( 2\0@2c.8dhBDp%\Ċ&}`h@(~tT<\ d12ih#xDyʍ>2rbtAbC.{ă+aBN*@ !HoAWtl@4T ɯlצ< A11 Y4BN[VN:Ԁg^5qcR(%& 1ͤd;ͦZzI㒇ZjH sjvA+wzVmmo@@̡h 9p@ 89Fhqp) xI@>r<1QW A`mݢ)bNcC^0@]m5:E2D!D@Ȁ9p1914=d4_taăN%@~ ZBa! PcHcm1@,>ȈH8 pb4F+:m-$M֤M$NEBdVGT#p@X9F:N RĚ5c>9JFGiKC>dB$=~ʝ h)#[–I 1D1ODD`b@;RN@L@ltC;HhD*-Cר `ZWʤT\?cƹV~Op؀*B C4YK?u*D`>b@)uMCzCrԦYf:hȎv,4Eħ#F[KG@aQ%S*%X.EĂb!x Y.2N f,BOhςާ@F(Miwuuo*_Y&rYvV\2ā"i>X AІEh!)'C$)©CG(\H9x9I.@Ôvƴu2:XBA>|h@ô7 9d >ΈA 2#A,@C =𦨪@@ /jD3]PGAN*C<ժI\P17ɤ <)PilD.0<4c>D]>֯)] ' (<$[,_,6x&GCL\32>jj@2D?@&H>/*<Ѓ<|,>ď,DC>H^:BUXj:,. DKkHG3Ybƒ̮x9PPڊ:p&{CBm*Ht+ $|/:ppIb㮈9KcB>A!AڟLZ4<K @3:`!ecm$׊hnpbdEpTo>\mho,v+ ՜pߓxp_:4! 7DǼ&A@P%496mK(c a; p3D<{|%qA$ eaB݇ WčVc:*C DZ0JxR>4$ˋ׌9@"KD)nxxoyS1&R+D+kD+ri8><•sOqJ@nhF4EF/C:&}4HC9a> >? ( pWF+@r10vă2A'4H3< 9DŽ9@d 1LRF< bt [|Wa˃h M7MC$մl BFV@@YhØhA9  wHj%%*;)&6Μ'<ĕ{`cMwiW-ωan#ϑ|c̓j3@4kC99$[nwHsMcν S`W(<(U}n$DcBy}oG$(Ћ8!@HNS̓ 74`Nºtz#-7+(&c! 2Z0eC 8l0D %;v"4~stxA}rU|](D,xaƭ-xh K<2!Z* @Ғ>*A`|zr'(!< c3Cz)O1tQ"s(AshC c̙01C|f`I@ F恨ё vÏp )Ao;3y i)dIG6CZIa:릚k*tAzd; 6w'9gH t*Â!#tJA @@]x2-lݖnpr=t]v}x]X2eVyH]n195ޘ=EM>U^[t-sU,W6ω kudǜH~ݛsgg묵ޚ뮽奜nRp#vaa5,0ޛb ?_rmn ?iU) 扢5sSemuߝ}?_襟ꭿߞ?_sx~U|.e.QG H6k;!.e'! |N p YBogr+@ĕ!c 0"ju) i*\GיHyS3C! @D.r$k!C}ȇ>>1ƣ"]xT1W"]rÆ7:<"aHG>L@ dᢉ?u&cЉ5(^DxJqQҒ\)u&$̘Dr"}@< th :8ش͐uzOϏN{99d>PZTF<~`#hevڭYyKlO˕ԥ6*U՗䃢tQQX^@= Vr)*% H!تCOf9MqG>!+H` Q}c!9YzĖPRJ#n%ق !G0)ID2prk ĤlNzKd찀r/#Δ<0K 9NKRղ %Z:0pR .WmvWSiGTƈpGEa f1t!z/js. l3*hAD՗MȇM*y@1/}y5^ȇB#)j~lx` .1G_x 9ƛ!xg F؞giI|,5@6xfLT;1@[A| "he9]==`FZ!yQjj۠4x&gaH}D>T5 rLA/QtX`'r;(AJ yL @y$PCp?^Muӡu rTKpuDPH %B x :6"[S QT+8"ժNpy< 0(\8 `ò߲%5q܎UJ!@A;D@a `)ߙ!#S ="(3c:E \J, (uC8CC wkŐQCZb0GG$. rFqN=6x@!''nD4 07ыA @ԯ/bWKץă13X  $U ^ <Ȁ݂ E9CQF(@!j%hB@Ed"c+N!$""2- `!s'! " rSL:08j8 ll[>@#A"``+r!!10&*>\0/x 0AbB F3)C٢0D؁mc!ΦM`-RIIT^t,z A,j(2́;uX~q+q!A 3ق%CaA-FC 5TM4> NGT$r{59RFU ֡CӁ򁔸eY֍JAIA1aNP/1?j ~$TC._a_LY*m21&Hb7c?dCVnnP @Eb*%Oo[9% LGxbpI"!5"^.[ " .2><JE% >2\LPVV64"@ ~BFq*f;"!j 6eJjFӡ 5h !an2Hksc6t[^8NvpN"FsN"cKsCҰ"wr)7F!ij 6w+A!*wvZ=6 z`$Tmm-r@xEV|Ǘ|w?cC" BR($Bw[%r-`B*ABVbX4gg(%Ip1>`fA 4':-it΁vekѶ7ַB2>'!sN'nB;,HUmg D " +!s6 W @,t$ت&,@dV$.D[jC(-w! pu*v$Ǹx}+. Nn#!TA^ Yہ1x[3K(&n)LVVg'z!4 x~A&8I1gR)ҍ0x$~).ĵ""ST -v|1@\OZdځ AFA2VaJ`ArI|x ʤ<^c#<[WBQP~( cC#4D"b @ʯھ6~<7\lB{b@UV8gQB"|1T؋؏}xnMGّٙڣ]ڧQOaGExڻۿ=6`~}Ɲy=]ם;@}y]_ߙ] ^#^'+/3^7;㡧&vbg䑦?_!>H\IG D91铞 I[|c "i2Z~c^GT*~4g6r{&@f U f~->cŢ'f\?d vރfb_7Gɘ%Ğ!R2Wad$7*˺/>lLʰ-|`ءTL)l.AʂGS٥rH9ȣM>uE p eRNIeV^eZn9zӎ=Hdlp;8R6`Ӕ>,Ob D ϙqB<H4qd؉9)*K*<D>ld;`+J\> qOLq_qoq(1J0 pغ d gr RI@<Ԕ(cN@ j1|bQs+]&3Q6ڇJ A=Ķ @>=q37S`N(m4H`N`MtR  =QGs55t>S,B 5=z 1>XA&l@>@>[ {O>~ }OO}_}o=M!Ѡ(D>d,ANmKrDO;=9G #DM"Fq~5$`%::ҷE<xbF` ?Ȁ΄IȔ }HЖ|+2̠A1oCZ(?# PGD"Ų6B#6 H*x6@| $ؚ֣1 8L_~bNgD-#˚P q8F>\ $צIolfI~Jx@a3e3ّ(*,bbI/ڭd>tДs< aI1!`Gȣq9=/E/ьjtJRԆ$h4Ž $B%@«p)@>BXJGIh;MΡ ^0UiY |>9ȕv @$Q@5ojGU֜˩yH$X)G0 /JÚD Ў4r\暏"O"E=jRTBxw#C';NVuiOԪvmkO"H^f}V!D<Ⱥ@Rx# ηtT)`7zH - <ayw!Cb`ЛCWHޒ7m>^`Ip3RH?\djчD]7Jޕ9[}2"MCp&oa yD.$SE.Lf>f7H |C;qb8Pt#bcQPc+TDr#0@|ҜLB?tS-wYU* ;qU@ nnI;\^uMt< S4Ѳ>,/WZ"j@>DlJ:֔N\ݰ5gFA y3%2<3g&t#Egя@_=1^IN\?<6mD |/0<ȇ9C$7Sv?X5: s֥n^ 5 ,@SimQLݭi- 44pLt@.5Ebfq'eDsD2/=G;*2+2mp !.` !>(すG]»)@;(ξ-# Rw /1vp@=ŽÔϯkN"r+܈o<@r!C(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hhȉ艟(HhȊ(HhE}׋jwHq>8ǘBƌub°θ'd "dXh%8ݕ̶+A~G~u}s hn*7[1Qȑ!Xr~ ]100kc'1+Z.I>Gai1,9 A~6Ci/֑MفVkBSyj+6>I^_aXXy[9c1eI#Cԇ·g+E!lq~YIs՗NXs @P&V LS$Yci긍 iirLhQuc iXa[r#I_Ôb0LdDL@yV+00ga8X{qP`_ ]L P?`7{qU66y)P:  iuYIV62j۩#`*џ&X\V{ b+PI Pi~P02W )(:%z@N 8!=:zO "!@$ /0$8Р5qrܩ:c:'#+a*}q 5`bg1Qkz  J(CqZ0QsPꪼԩʥ W@7 @C#6#:/& :6$!1q # k0 `( 솗Jq%%F&)[P#7;!A#q  D g#4˛0U 9ďI1!e.QCz Ŗ  ۴SU{O2+O".#CC۰"=+4?+!f򰶐jtNn\"0$6cl8F9 me#“ N;!) y6ê!6J ұID˼⼏7[+{@Dqxr>P+RQg݋˱{(c{9A^S%:i?#~ ":?) .R:(u~9#O&W&vM/|J0AP %PP;3>00 E%ϗNXL j_@ NXO#(Sto  ?wIDն%"KL3LۇN PhrC4 `odo a/O;ؽW7w-0#Q jjR@"'{@?LK:dU NʏfKQ$aAa> CNB ŋ\:5c/ ǰ@y,4@B(#F6qGoLG,]”Isa?H `nQ :Ċx0ϋLr"Ó*Ֆ;>ĸ0_,xP\… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥM^asj0Ϯ |.t,0gDb(N!+!`);! X{Lx P|(R!X11x聎ʹ:(C 9LRȂ| zl[ȹ4D9d0QDĮr(k:y$%kN$!#?zP5LO xT`xN/Yps,Nc2>Y6(|vɋc iX瀻1y{ e؉xY,=vH>g<0=י# !EpKMzq(0 Z"ȇ*Ї>w[4ds!^Sj<1\aE8BЄ'Da U*)tT>ȣ |`|00z gH(?3@eG%v8@=>ځ+  XCYp߉? ЃK!K՜ Uֶmnu[ַ9N!LFNV@(vsQðcetR&RV(6aaZ0b^ʗMC QC&byx;MjG|\ˆAc-J@2x9\: (1bBL9GG0,2`옆l@eİc1!bT:@b>qg] Ո@LJ"5;P̽Ԍv]8H<4̵%ltD c0;asxđ6 e0/6p5qwyE>$GyC4-ye>s7yu5^ GGzҕt7;ӥۗO[Uzֵuw_{{ve?Ѿvo{>ww{w|?xG|x7|%?yW|5yw~4 =?zҗG}UX8tJs{k~?|Eo|L49p`?~0+U0omH~w[ E@ȃ! &p@ 4 ^5xAEyiǨЛx(/؁a1Bb` pr J|²Bo`  D #|pΙ,1ę8TAUz/,SBÚ'FV C.sp7ؑXMN)y)@=Ӕ,d5=O5)!=! 7<S(0&b|B P]_D4`)@FPFfLuoyG^E`d``Fā$Ȃ4ȃd (O8 숋*l СL0 }: i Ȋ6 U:Me&u'Rΰ!GL1̇PQ/\IC1$| (l;b)͌` 0ٜ3}Q ~,5n>ɎQ(UEeFm4ey0Cy} :ULUX IٛX(LͳI9s>ZUN_ 胹tfugV>9}02p>r@ pfx(r#}z* ) \(=s(q EΚAqJ$stJR,RWz8y#J%jtH1$M<Ҫr'WЦ4җSL ֛ٜ0s3zT<3Qn{51JQ(Tu7R_ ˜r~9 S#Y%.z\*m[Z1/-2[%-{ k𗝕ɥ>R%5jUeuݍו٥ڵ%5EUeu%5EUeu&6FVfv &6FVfvaq0h܌" $ xq'r#R7(.V݇(>+@.z8`(HTxcx9N8 BNI}} $S/MmXg ?/L\=I8v8sВ @ I9=Ơ<heDZI> r- ':r-Xx(Ȣ 0#}ml杝ÝG󀑨8*+WMX煐IR5oV e#QmfVT(-g XXmx (=? ' OYȇ<xo/JPyPtT6hȖ5.kxIn5?wW7`uxXJpV]O s,@-5 `qnjezT!ц ;q'wtdsDNRZD&PzL4| 8’$VDsՀK105[Od2P& qrlxHhhtw/7+j Ou,ei>/yy`;`rE$ (̲ز !(ƣ ,)S$0s@vΒДjO" 1>G+쎘Ṫzbvka(+l Kt8^{0{C2KnK|) yz)q4X=7' *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy3Ξ?-z4ҦONz5֮_-{6ڶoέ{7޾.|8Ə#O|9ΟC.}:֯;%~87YLxC9pӁ{rءt N|AU0~"D;'J4<}OE)H#Osp93td89$<#YQ.Eі uҒBTwYdx4sItsi !{ҷQu;"tE%'AaԿ9;DV_ R iERSMqC6}{$.^)s:H9`0>3#B>p~n87>`O>hm@>M +=LBK yy|s@Ӄ"cx1>lnC <@M|G&@F~$nQ=88ou0t%|8rbB]x}XTC7tpBgѿ~A ;dL!@<$dns#p=}(,ɣnȐ%vͣ^A ^:Ч>p. r{9eXO Pl"y^hTc@(B>q54`:r =S< p@j+>0;`:8D{p.~q2<1 M C|VGInbeW gc"0AaB0!|H` P-ȣ?NS"Q֑x"!(yȣId1J=^ )-Ӟ'AP(yhcsj6DKlG>0:zxuvXyeXE4CKЁ0 @ g0t00 @@@J0>A ̴[<m @}cG}D" C  ĪXO E'rFq ޼)z3GUe1УVt:™CLGSҖVYL VU :Lѝ `Z|pG @!ǣ!Օ5>;+s@ 3`xAqB9 ɇx aG0<NCtbP"g1Z +4qLO;`~pfT~.WiY,l+E,ډN|lN!}v1p\:&_4- qb1<5Gh Z}U7Iku$q@>L@"#_9ӡ>$_`$ t_9~ 0 APn;\@A9#$n d@)Hbm_;TyC2i?6{@~GL>Aw G-7-́? PsIkt!9NA)I@HC;Dϑ,M@Lv܌ p% 9A@Bĝ Dё $5,YRL?lNd_/ 5Ԛ5BL]ŃL8mC4ADyALu""")j#*Q5v-YŃ=p%C.^Ab>xcÂH^:A?X!A@A$ BCB?HB]JNL= \<Ѓ<$>)CHă>DLJTȁ>A@DUM:'>@)!\"DL.Ƭ9((NYP]D _Ld2V )&ص≟&ʼL$=&_(q f'M#W m2c@%<[¥@ALӣ%ʱAbe@d5湩qNr&=g*0f=@C$Co."TC `CV癃hd&g $ 9$R^O>ਈ~d hrhD,\C&. (Bh>C9ǘDta9q@PD?( rC=.wf<9@|<4&Q@YRjAJ;+ '(qvg{D[ gv:D vd%!)Ϭi;IQڑ~)i"|m4m>)@_%D<#jP`ک@i:`N>(&HCCAf̪CꩵiDp CA>R<Ńތ)EAX2  =iN'x+zh뼂8ΜbP>@` !6Ḋvg k@9(P=@&DԟJ7^Ę@;8"N<ĕ pGpC%páhGe0?ll~9 l:j;56IC,'ăhhjrJq@DD  T"+ALm5j7d%~̚ T qAZ<$] ~C.$୘$Cd>]H>i\!*hCGC@=,A@.B,'=@pAoA@y?}N$9ɑCS ;\>/BD\8<9? VH ?W2D88>C P9s% O@W*>²@hH>f6 YBf!m9DS`hI9 pGoN"U$L0)qhoƌa@ ^b̓Ȁ9@0@/#ד*a TPI@\@A;p@!3(pCï'O?oB *+1Kyl%$ƃ8pp(0DYxHLr{{k[ 2*2;s?sAhL]$oFkt&@ HHDaP W>lW:D@BFHl9<5A\S HQ'"l !rn(*1u:8)>$9PA`_rB9& 1 0ǰU;S.9T5n/9%sJYHf¦œ^ NaAi:l@H23u@`c 3ləHujPDvwwMC\:hU]U,k,M 1ۥɘ݋~۫@\K E D&\$y I9X(iN׍]t lN3{qTɋ޼D,CA0A𐫼 "C'إ))@D @xH7`:TaC!F8bE1fԸcGA9dI'QTeK/aƔ9fM7&`zҝ+a:|#t >] Qqpx}^W@-Aro_G\…xZ=y/.UW7|"$a@sm\BSҁM#@ .js0vG>zuױg׾{w^<|ə0JvʓOA(C%ǀ|>恍xiKv’yJ^"9vYOIBA`X J28G\1S"n.8+LS5l7S9鴉5` tF t tBǝ*K9>G "}Lv.آ!v U!! TWa :`rB੩G6 *s h+|f\_"$.",lZhGe +bMWumwWyUE:-r (y|2t,m q>Lc*ޑI |*Dn<1ڊa!T!;Il,JkLJ*䫱Z뭹,π+Z*vk `A` x t~6'7t ۟f[5 <}N"hDɣg@}6DGb\/ONyUh灁oܴt޶xȇrϡ,1ҡ<&Pg0HE.ttCȉvG7|8-U 90ʼn A py쑵O'#"d$d d Z5% 9< _9DE f0A>GLPD7J6rIf]nw ą(OR%u{_ΗM D`^G`6LT7 v!a Okbp1a oAb%6Qb-vacϘ5qcڹ~cWO򑑜d%+D"D!>X,^M>f1*YH@a 2#pm%Z~pr<"Ƥ*QLaSG:eN,a@f SAjQ:# "!zt C tzȣUC9AgP'DB&9Fr3zN{s :Wpt%lqcu*ȣJKv̭ >t-`ƢCo3Z"P)7_"ЁRɆ@H6*S9G 18);AM42<@9JEmzv0Zd vL-HyQ2D^v;"I@;\qb:2|CRW]zۅ&>i$Uߍ.qЁBJSt)+KYì-đG$9ӰRaȲB%w ^c0>:9v``1$9M4}~xaSW|<$S2M4Wqa`Ot\zPA b0āHB1OR; M!D5~K!!ٺ}I HA `@@Ud"AGFg"J`-z LD`BZ"EZ^oI3z!ީ `b~O b"Vc.3OadP8&.[HTB *bԣ-ȁ(0Q8I!f! U"PReU$/.H>"?||%P>r`(`(Ȱ&#<'(6* umT  `nȢbl` f@ fD|d<ʣ !` m@,K!PN$tA7/.ґO!Joopu&5B@"x#"M@v(r&Dx+a.dJ'2E:a:t"*1`IlSfDtO4&8a;ra>L" '=e2 2(* I@ &h8r+ $*e0 vAAΓKLӡT@FA 82 5l B0AY5ZuZZZ5[u[[[5\u\ɵ\\5]u]ٵ]]5^u^^^5_u_Ut*`_ `@_+b% a)B.#bT2bj`5vcyl% o!ȁpFSa`8`" B&Rq0e9g}VL Rm%RG"x~ Z '% #g", u~k6-[`4%!`5FojM#֫>7"k<b;UkoGdآ {ND"f<h#`' "(PҐpA7tAl@!>\ )`D@YL\\| 2 #,A31TLc(f n)~ðĂ3-op2@b B .!OA>Ag@N1Jt7L,tٲv2H0 K*p(HȀv$r$졫hg@S!9b@vA"dBzD`CڮR4#o<,Ns}AځS "*8X bydbZ( +-Sg[͘m`#V2a_<@9x S $@Y4S<TDc"0f?yL~bmRQp!TEx&#l*Ўpg!* K׊EyK J0*$)xAmC8VPZ68Me,E94b4`\G!6`YgQL &㙻%bV$>yʴ!0Rh_M6 C\*dÌ UZ1#m1x{A@4 o%k I*22}O&Ӡb$r2]9%S7Jrg r Jhx:4#!q%!,2|}ԧ'zzgvْ/o]q ^&r׳ <$ŀ>%:ƒA I'H!ڢT!b)}&V@Š#7 Evہ &dE }ъx [Xx%qbxF*-V=Q$3~t H-,*ʢf2X\G lF"K*KO\2Yp:RjAf˅9fP]afQ5|S5aڒ`#;](R;Ć IE\C dt4UV&jV%/{B3"3FRBQ=Uݽ>@uVa=VSmq=u}y}ׁ=؅}؉؍ؑ=ٕ}ٙٝ١=Ⱦ2`Vڱ=E V&,#lSbNbpOcݝWZ6mfkgG%,.]АV% M!Pfu6ٛ׀MG6GkiuDT #2Q>SO%[%z"]Wn/{m1voU>賽qk_3|"V.ךKsS>8nNy)yz8"&LȗtFY>X8yǞ^z"-/R)L!|3}}!ua^75ؗmoSVfP|XQ=5.@ D߄U8AP!$G`88Moŷ^QoۈXuU7y}%3/0X) L>9bk  "fmg͟O mȗB&$LG>ұkwaKċ xE$/tB 1x-#bŤ`@Ĉ@ JѣH*]ʴӧPjG£ "[ah>DKٳhӪ]˶۷pʝKݻx˷߿  ƘzN_:/t (B>At= 胩@d\l,dإn3t8.y1AY9ᘦQGTͺetËQy["'bQ|OϿ(A 3PτE*,#_Dt҄KHb(xQ>1cN/QE=f<LQ+9$hvFEQt9vlp)tix2嚔-%&F/pZ<.Ph|hSfD]9%g<`$ =.!FI:\e3O;`Eii 9PV1>3D\zv+-;閘r+_wEAVȻb;\t>&#GjP:FBq:jp%EbDs?hD<, fXR`TIdO;ڶ@-Dm ϖNڎzO;$A|D gD2n:ޔS#F᳚?H@H(7`##c#2J@>9<^, GHpMfȭ6CBXߔ-6H,2 (!x]QRX. 1BC$%P'y8 4 M4t|G: H:a 3QMH@C($`G F:򑐌$'IJZ#h.Nz (GIR%)WV򕰌,g9s̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:ru<z|PhZ,K@~H5б 7P!Q,ͨF7jJaT`iaCQZl"zpHr#reP|c1ẸCcf8TJժ}tET>I@؈<(GB>cQ>t5.yR :ӈd98 D!X*۔ʀ.PsOPd;sdnwI# P0;"Z%ڀr PDv4`}K`b*Z1#Mzס ÇU,֦[@^]An"~g^ ,3z}2GB%[<P_/F<,8+2m@I^P`n#IOt@0-hs`B>π. lR Ք0 .]]1rfa5zHWw! q@3E:;n-?&} H =kB: Ў.F(> {O41F MDG>ȐÛtCښ.rGk:+Er"Ay:;,^/$?L)sx0ba@ѯ&Т'OyUVJD1!C%b2'ObPN*ùJ+s|%,ϼ7h\ G桝d ʵ΢#t&8GѬˏG81PW+ȳ01t,頜b,v s#&V1)wGb8LFfZj8`l 8G4t2$ #]o(Q&p6 xxԅrDs(Pb-$@U`(t+w75sQ|T|1YJa03%j@memSde#((UYm~(`+0W(E}H\Y2-2z8X4hc ?b `i@60 @1c_ hTqEO1!2 G.D,;x1h1'2.+%/t,-3?3@ؔNϤ1%-s1~Hh$|0wprڡ~p_"i|Qw"@x,g T"lSSFA|c7#1!#73v-Qp#87J92195 yIJZ1vUVG>76 `c><5zPyn vV?8j I<c Q!sQlV >` D`;.՗z?7!"0PM)U%s;0 ٜ#C@!CBQjb@pxuR@=C1q@a4hAX[2@"p/YFzԅ7 2Iv6S0(> ܆q4! `Cao[C!^PD!6I!<>|r (A9 DCB(1!i E"EcRE7m imDc=O}1Q3$iCD;qGx D`HCoʺ̺yJڬxpZzwGj0^Wz蚮J d:Zzگ;[{ D UP["aQ۱@`  1S%%WT2;Gz3xa`neQ4{JD[I:FPbqIttR{X+]K8Ԙ@}`[f{q"15~~i\0bngr6Fffg mfqvw}yg[kU"!JkF=%$ C w: 0@pArRp pEq殶;{N W#XrQGxЙQ1 ["y֫wZ^;ߴ b0 ci7ۑ>zf(@ HQ1\"`r99%=k2rH</gO1hma2&#&2<Ĕ#A8<,!,8B- hl..Zc18y}U39@:TǢ<ʓ~I+v 0r jV7@7 ,VqAҒsB ?33 d`YUܮX1aA?AɁ|H54 @,#CWJ'O*U u -RF,Gv!3HH ЯSyI+}ѬT 9uJ"=ғ%1#$\@. /!* 8:<>@B=D]F}HJmoGXP\|1-s`bIxPEH# Rv}Nmk !w%!ͲDs1!Ӥn[|FA7GT@Re6g`bgN @qeװFX" zI|W3[^=+jpvhTxAXN`c`8?>!"6tu}p&<<\e}O[mTA[Huj0lN@QSccP`.,%N}3 FN P^Eb;E ftOԉuΨN|3~(A[Ca_6u@z}q2}k$1Ց9yKԈTQc6 !l@b (u@--ܜF.CX7Bq;@P8S))/|bp1"X!_ yE&4L?ɰg6Ϝ.d.^%NXE5nG Sp9#*I<< xNCdO> "&yߩ}a䩯g{ϧ_}/6A<G r@Rn b0ng;DZ˰x@: /dHÆ h' "Lڊ0Hx(H  f'@FHgFûFK'᠜ȑ)oK䙩!P!1@@ !v7NO@tP"J0'"QRz&mh2i!N4ǭ PԨ-y,N3&q$s( !(ɧɇt |:Gv@(sz7Nۉ(xT".B]*Gc9x$X?a@ |^U sG]Vxava#x̲" ѧyG H9(Y (` F1yB o#cDӈy ԝygٙ!ʼ iLzgi 5Ü `kȇx (@ڠ̅hG``q\RȜ( \H$@ l =0b~|F.!CyeIʄ%0FxȈvs}w{wLGխ|pG! Gt,~Dˇ^2$`ox5&(0d H0J?K ltp 'bfY[H E.!Й@" 2a!a 5PSbxE,fQ[,J[HLq>cfbF8QscxǥT jeԁ=`LC(<&Rdd#HHFRZ _0S8IPR$e)MyJT xɇHe-myK\Re/}K`S$f1yLd&Sdf3LhFSӤf5yMlfSf7MpSx$F>xM#ENxS8)G^gـgAZDX=PFTmqЂ`O 2Gr#I2le8FGF0 ?T1ęT;N)yps,ԸX{!ѐ>Oڈ  }C @gy[%kYzVj`}f6ƩyHFLQCФV<Ū-A>X&V%;PZ!aEWVy;C"2v?@d:FѦVe-պ!FAۚC (:~E 6@KQ BGp$x sd= @]5b!Ld\H! k I؅o}{_Nlu_=F}G:['x;饆0~/kcPBxt@AEj/t1Cf;UͿ&ҏdE!\+܀Vusa=u$A'` hHT]ٰi` Yz0"Tʇ",[IG;]s'7e9͐Pz i.d= Rs͕?^gC?C@ D;CA,DC
Š  D `P7ME^XŎ Ckz E}x Em$ x7RJ ĝX HeCdm`GnG~9h" GC)E腕ۈ= } r~H=%ǣy3 .p'C1$ ,؞-Ґvۈ /tɐxH XIzhɛO8xx(@/h/cx8\K,8x  (E ˬvX 0Ιɘ )IF 0m} K tP1P9k[rʶMl6hf%2 Pyt  XEzb9pUк2t rK9xyFhj+ CN5 fϛyBPCxlP=i@a4!lٖ1>`| (7ň QK2IӺv6zx8 @ ̒QtzAHih0`c!6Hg" PR-/C! (_#`rPtҴp!Qkk1AE lU34K( *,s-TMe,َ 0s5B524 P*txh،͘7C`k2(:R!{iCS=SsP0该:8< Tp ײP8'IT:43 8G#Ɗ1)}2,1cWDT Qx`iWX2"8qg喖h 14 "E  3w2~BY\YwmY  } pګt F{xN-[}l%B0 ( h!82:0}Fuརц]"(/-B|D:s%y2q%[[}t[O 2s1X"Q)=[-e(G! v ( KIe !8-#a8@c9# q2Ȋ8xvA( O-x^we%!8f؃0[4 |A"۠#pFW`.D`af6N)aNa/P~aaaaaaaa b!b".b#>b$Nb%f]b'~b(h(b-bv0А 1.b̩0c2b8=!ѫ1]} 6 >cDNdFY|5()JbsrbEeQ~#HZUFV,-\Xf:WQe_s* Yʿh}PZ{5Kcd>effgB.!# <I|Ij jf?VvظYw!g~ʀcufgQ$I{n_hB*Qx( \ hiyikl1XQ :=XyYKzyKi"piLy̺(\ $Qw.#uz[ӝ@Fc ޼9 j][ Hv0 xK!pIxܱ !W9f׀xmHM2١EȝvXT5fXw eq^X3*XF捲_2񛀳(/y\S}fn*_ι\_?P8| } sF}z?:r_}/#ІC֯}6#nϿ}~z}7B~_~o~~~~~~~7ay7 PvY <)O%v0ߛ+ڿBLZy(~_{t,h „ 2l!ĈΓ7M>}q:~,iRaȑ'W܀!*ZXҬi&N#JgnMr,xN_?2N xڥ7ɱې@,qxngy S ܷ D BE(xAhsMOùxH OqO͖U : J8!Zx!jxPhD>Lgs<) ̨OO#?"s? 1PgxO) tN vP;0dcY9sA <rAxf= (w; WASŒ"F@䈦=ybѢ@u ǬH0d%tNGv*,:,J;-jO:ӧ@ۘUN>*5@j{#Btn^:J%dKUhSh`7O>VB dD@#FMP1@6虏 !_'#rVCwY|npϚ^dB?Bك@#p:@$t"N3n>#9"Kd_֪6m6q=,} ER T~.B<h@>54On@ X@Ζ@..^ʼn8)~H@OtIQ }C"\7HBd& C'xG0Q"'h@G%\O,YҖt ?!9T<0V[ƕ4 ;'e CvcBy%D^: D݌^t`F41ubLO\!a`=p`t?<p(@ h Tȫ @Sҕ.})L2 "em`FAa5qzX@08wjQ}"ƃ0j<'>̆0F1;TN BFUUġ`JA 85=}Kq0A09 H RYA (Ym x@}CFΉG$a%mLЁ|V 0pځE炋j!_I8 B; ېhh Mzktt]6(%:=ς \_/X3`aqb>@|r [z5M`85,!D8hAMX`2B_R1#:P3ƴV2-s%Ë9Ӿx.%  v!݌0@c yc⪛, oF>xQAz&039c]AE(@fT@| (O L?E4'Ri.C6`A(b}&[fA9ڒ,pM:< f jD{ . ? !GE/9\pE-uy~u! D dxa6Eܹ}P![q- $R#/\A`rx="RP<^:@HwAQ398a2Zs^:fftF9rn %3ѩ^U nfI3\puH sO"HG_J D"T\ v xE< :e_r5\8@;!CAd`.q 7D4 e:s].4k} /T\B$B?dB  5>!FNaI|Ӭ =ܘK9PTB ; >}B<!C|aar@(M=EyCda-̱d9DFD\U9DHd_^jmZ<4b$gʨGAE AЃĮ ,֢ta:ԅ'DP c.1^Bt@EάQX -f m ăLՠ9U D뜣?<"iX"Rd&fI=.DhBlGsNQ`CD`у٭T8~$HH$I6LEB]B@@1ݝBtΜNC%t<䭡Z_XC8dZă@4DAIɭ ]alV#A=j i8R(I_(ZȃP$D^@HDX6=Q &A1&5HEXD\g$&S,@>$<&NJD#/ F đ^]'B0\)j9IB ['X  1h^XX]B,|9hhAT|4 }D#cl{**2Dy̜CmA@ȃDdFDpq$_:P@d4&)&2_]AtStle<|BGlf4M:@ Ř*jުC@,u :eLFø^ T(M&.OUf>J2Ce1@>t.訧TZ?dLpl9K@tZ,=@t,2B L  J#ʦ( I !c)QBRG˾Vi[LDAԀYxIגD -8OdfmxϗT@ p՝ÒJ$1:Q<8@D] Dqt.;A0=;Ԫ!P!CKM9V%_2&gr$DDp1hPI Eh@cfR-%oR>AD.T@HOs敫Ad@ k`ۈ"2D̂1SR4 `~,S9hQj|*Cg PoBP,٥K>C >XdD C8c"ACEŏl%@X&?&hs(/OF<ܪ̈R &6aa` AgarG\:зCrYh׍@2 dH h6iiGE\u5`wF{lU@V‚]=lY4i7qq4"܄hɪgjEarWu_7vgv_s4pzvNy7zz7{{7|Ƿ|7}׷}7~~7788'/JUhLIP7dUH8KR4Z I4Cpxl88ywCvE\D>0XWȎwxMHx 9'QCvD[E\G}G4b!F`a{HFdHefhgx NydjDsBd,MCa}(C TlHLUpm@I♓bXe?g:+ H[dXR7gz5Jg}~FG `+9/PBȘÊJȌH[KdDHgRŒ4ɓD ӀN>ԶVz7}I !xIt trsD fW8(MU@c^4l [nnp@/H|So)~@dɁqdFtX\@,$MdE(tZ⊮=ҳ s4Ĺ MDbD:x1Me vþGLQJND C\9v <LWp -SL%?ě]$ [EG(b_xd-@~քw=wxD: 4x0|}<7=x?'p^<|dH#IƁ"y%/߇t2ȠI-*tQ.uPSv, |=p@>9!;{(/ Lѳ=s|^P)ˮ7vrdɓ)W|sf͛9wthѣI6}cv"G/ @l7 9 j|Ayy @x ΣW$GSE]'l'H/B潝gpx8T Ȉ'?21郀y.  x)!x8s|'`y((h>  &HBJ@ǽ(})-YA ڰ/"8š !FxH;F( G k6$p|:C$@? xh>IR JOKp P,?Tjx |HH"gD?sKxD`q7b :*#(t27"6L3S;t]v}x块z\v1t\ C) 馺xAcG豀. a̱aHxxW GGΦr%s)A j"h*+ !;^ z1hG `C1?ǜ"}b7s J֑|i Zs 1zxp.ʟ8Gyv-Ay ¬ lؠ\ İx⸀f'Hly鰃?ŐGDvYisB[mن'tP乺(>Yje; PA\+bateIY1Hl/)T YB1!Vp F@9YW DOF0G`C"!A( D:# C 8I!W|`<:;T Aħ|LjÇȌ  6b>@s`HEQ9S@D ,0lI W"sǍ5xbXhSY##9ChEgi퐇4 Mm j! QmLЉ<` `ǖҡfg0#M!r;1#|8<y2pȎv\` 9)XepZ5 @BJ9X 9 !#J \' @mbtIURT>QT$L Y@Z|$!؅`Al"%^$U`ck<'p Ư20⮑S qF AIM8@Q `^ StQ C>L+ dI"Y2PYlROfm.$̶o"Ck 0@c#@>CZӢ @, 8 !Ї?P8`Oyϋpi% |*(8pɎDOk4ah(MN ,! b@CbQ Av(+ 0V#v%ip q(HQNCل G #u@Dd'?Q\e+KIF&8$2R+%'d\#8lƄa4i$/'z@D 1~3p0R!Qe#H1: Js`6{|HD2g]/$! G Q[oEs2c=GGX)Q>M^\@?/_KZs[h#2MNG$Ȱf}=\lY2tu J{c8İ &o2]IFDOf$"yUΟArr_9#A\tIWҙ苹[A 0Y$#Njӡk#J%WQ1D(C pZ7geACi!dViOGhKƤZB8|2b}8@*KlŬ|k$㒄"@LoxZVuFD^3I\9pz:bx':`_ AfE\Ac,^1B"O:fz A.'H*ҁj2F@Z '"tD!l@/V[_cPKcdD*ڌ Z@>HWJ"⁝b<Ln ,B nJF r/@Aj8&}BDbwCJ(6␫mBh$( B`BB> X,l )"`G9 ̄| (B-DL|<0 ^b@e&Ԁȴ >" sEj*Ch ·@ p0rU&^"gPב j( @l8S &bd.@U΂ HFl H&"d;D? *8=oIe3a6,@1\V V V '?dA>U("*ElTn@6(Q1BgT>n'AKBA@)lqD'Q$4r.8*'~#|Ct$H3 cC"fb3rdֆQd &C*Pl$\D" LL(#4&B3aTDB;,6tm(!n"UBu< `X$*'G$0TBoCM H ԗ<r.'Y=+t A>s ȡC3 *s^_U_فDR:/>+8"Ft$0@S|Eth7Nv ,@:>823>2nlbp !6>8`d v]G =H`a.&: T4\(Jj&,l3-Xz֘Hk+kNf%/8`6oJj#/(@nw. 3 k7VSF1*8d?]q$z.'A׎./LHi.` 1 kl1>(OE#@tIIA"7V0(m de'-Ȉ0&l TDATl'RC׮UJhȺ )EBx_X]h564rc6*gH2 $=+x Lbq;؃?CXGx^jm{Q "(*FBc @WX8U؈e*Ė?6(.d|a|DGsB5؋Xx4Cl- $R:D [@Ӈw؏Y ِYbّ#Y'+^-Y7;ٓ?CKٔOSYsWٕ_cYgMksYw{ٗ Y٘ٙSٚYٛY7ٜYٝY]ٞYyٟ:Y ڠZڡ#Z+ڢ/33(Z;ڣ?C 8ZKڤOS[ڥ_aZgkWڦsZw9{ZZ=بکZڪZګZǚڬZךڭZ皮ڮZگ[ ۰[۱#['+۲/3[7;۳?C[GK۴OS[W[۵_c[gkos[w{۷[۸[۹[ۺ[ۻ[Ǜۼ[כ۽[盾۾[ۿ\ \#\'+/3\7;?C\GKOS\W[_c\gkos\w{ȃ\ȇȋȏɓ\ɗɛɟʣ\ʧʫʯ˳\˷˻˿\ǜ\ל\\] ]#]'+/3]7;?C]GKOS]W[_c]gkos]w{؃]؇؋؏ٓ]ٟٗٛڣ]ڧګگ۳]۷ۻۿ]ǝ]ם]]^ ^#^'+/3^7;?C^GKOS^W[_c^gkos^w{^臞^闞^꧞^뷞^Ǟ^מ^^_ _#_'+/3_7;?C_GKOS_W[_c_gikos_w{_____ǟ_ן_! ,fBBD^^\664jjl&&$nnl ..,VVT224ZZ\JJL::<**,zz|""$bbd>>@h\`|v . 0xtv`||(6L|zpzfh0pH@hİԺ|p|̜Ȑd\tx\dRlTT@ttl*$LľFJ@:$X/:}"N%t`F:#G߅fᆳ;$ؓN= pR7`A.cQ4hЍ Q>3= N@&HpF3A#Hn[Sd}aO'$-ښACQ:`,A>tϑhBx=K~P l<|PPH8Z qβ,@ @4:H;O,2 H'XX6+r=HIHA?A" rI@Iu@ 83 xH&ZbN@= .Pˈ8 % WiH0ΪTXGMqӜhOTS] G:*V,cCjԙdũ0ZAz }*W€dtjψЇMmfnC 1ꑎ i/$>d{O SE,E`TU>!@ wŪ@$˂0׹ `+ J[K&0VQ +C]yY(@Z\ qTnD~=-/tY1LBZP]yt0^yL-hG~P÷gLc#+SV@  tBA6[#!Bu8"/юbYtY.whAOeYTe{\Y NQGkϭ,OL=%ҥk bfC<%CInIwNiFǚm[M@·Y D0 luXnkLb6Hl2aCRɴq0? ·"rApJe W5WA!̣ ͤR^OB9f!#R9@vjsID~_;7pBz4j{H Ps d?KD?@Ԭ*"p`<6H`se=")ث <`qx=Ԟc엍8$zo+ú@ s Pwx@*i.Α`]w8@u dK<8{qQb|$C;_Z 61 $Hښ\tѧO[)/\G<692@>-,@\ѓ AByHJLٔNPR9TYVyXZ\ٕ^`qq3zn1E ѓ2F)tYvy0!gL-R0xy~Hv"BygC0SEm æ.P4\1Fu])"B. !`yzֶR@ 7"0SP$0$0Fפ9a8u^β1_ $z [UXƘٞ_yvJk YsKKWpGrei09?4@IڡʔËQaba%yqa"_pk w ze,"Kڰ"p_ɠzH)!H8/R>.כJg%90l0z"`* fW:,pIJ:tZw׈G2QbK)PS06q`@]H' ~  +dکJl qdOv#W#6 4p+p*0PzʺdZRJ9<'ʖ  B#R +ejN:O'@:"dfT`p`!T_\l/@d&e fÒzM& 5j8 !"E (67+«X0a-<۳>v>%TD'T) ? $zgp% |%.]29 >D$^y]G Q=@V d_jy:qApJ- $+|Z΂%GbZs m3nb>rF91G%X64zY#ܭ\k7Դ&iM?p -h~NK/R'4l#@JiH[#Ȕ$1hWEH C}Z}-S7\3񳡊tʣ-E& %spJ0ew Ȟj?hͪ @K}S˒ᱫ3:0SBpdQ$@?6IX%!Y3qXe4b P}YR PR%aWk;~m`!&%aeŋ/efB@E2~z0~Ws= =e&J1~QwE[}u -4V+[(_WkoٺTR|HW* .^//RDE!`bL1ZTR_t_挭w|:+@#e['Mx5c a %a@!u c&@ /G[$ ۏ ]|4 A < 7 0o/uA\g! ~"ಃ86! Da!p,N +v$A=.B{c=G汊 $ =\yH*G'(䃇>@cH6@c,0bC ɩ9iL c(ru(F" V@YaOA: )[Au$ZA!U ,!І G&K`S$f1yLd&i0-Igʞ2yMlfSf7MpsCsSdg;NxSxЎ\@P9OT%hA zP&ngY:PFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]3Box{ʖeNCCR` g*}^WBr/zߧ 3-XDz﨣8@cAG.@ #ayCxq&au Q*fALb3mrBh ` "9]a~a/ZK&@AfKb#j0A@U vN>PM,=NJl˙u7h˚g@+JMໜ|a <P|sؓ(%#tCd¡3qϒjbœgTKa C%9 QuaUf u}~r@Ecb$7bc=!$ T=x{؃)6_n@:5rv$" 6bxeod'\н,UZ>DP~&G-H1Y @ $ `W%a82NWRꤝrM!F{# @;ґ'-Y0H: !I|`;4{`Mc9߹/NwyPo 4v!/Hu jç@.ā8kXh\yZϼ7gzN!q-3Юg}wnBޒ壤njA,4|a ~  qA U=ry@V.p՗{[%Q !c2 ȀU )3#u } :#n8t y 1k(;N躸ч\Ѓy І 'P0 ؇x'A<akt1l̞ !#'hc?{y4B4SuAq: (ؕz P0t@$@// zу:1(R4A t}A>]EyR{!S:nȸbl}_aP[G$_D'!>{` 8pd + 0\2tw1 :І {t7V(Yp1BS NH X֌ bau 4̓́cNyOp]K 8t(wS!Il (ͱ@M95[ZM gV tTBNу9}"yuX\&N40z8Tз,{ІxxAB<Ԍt3K?$8Tٱ4cсGE ;kT@B=T1S@Sk\7=B +/с" J% {X4! @8Ղ(s |KHԄVD8tS{($Wy5&es368?ؓp }UyJ3tX tDZXIЉ8QXᲁ@ %ʰ уr_]3wY2ےԱYCȘ;u_١N^֘KtP$+xQa ¸:&v a)s_yP[gik7 <8^ !E =(c XQ! &ާLbӔ_xА#Z<( +^bc8sC amfل="S>ޚx\e٩MXY^Cұ8Q0d ۂ@YdÀixeUsYl| ՈH98E !` z6?pɮ9Dȳ1հ q^mtqɷ8 2|0֚ɛQ AI9pY; `칇thҍdE̹α)}VaԐJl!!0i[:azXSzp:UpimiyF&fmQK^!R̂f 9! Ȅ/d1"#3b=Xι\Ƹ18FؖKb 8יțp xdQz@yDG Ioq{l #CLOΑ{ gI߁g 4a{ȅ K1/ !*E"%ղxsF5] uz RHx SZ*3J5:6{H@"${Y8'շ'0XzDLx !iNtEG(iJ& 2Lujtn&UEtN':&?]vm2`PɷNuX?&}_…UY`plnoꧥuAZ]ub/vd P@KWu&T/P Hcvlvmvnvovpwqwr/ws?wtO ȁyĎfgz{?|O}~Ww Y`T`oD ?mx NHL>u![+#{ˇȍGײm-ܸrҭk.޼zw/ rp.6C{5> D;!,K\{=NX灁^w.DB !lyW `onM;G"HYq,'1]){ dOн8:]@|I1M&| Ђwb9]D߃+I׆u%XdsMW瘅H a!5x#9#=#0cO]E%iP85YPQ#=>cALf@ Dd'@-0 BX7@#C<9 MYeJCPYpL&|BXУ*x}ԚcAMcQDe:z:"iGzWeSDVRC*(鼨 akNƺ-z-;n§CBD[f 80><`IEP.S@~DB$@G #D{7$C =<;3A#z@0u(̰s @N#غ;L;xA7C$¬Pٓ |@+ Aetp4:D'K#Ac!\)'S. ;P.:&ؓATmIH7[1Hwq"׊:NRv?c qNRXo~:HsDX y@dXB6})7&2A攪jYۚ}@bL_ ʤm$%9rϋ>&X>V$u)< o JG.bMu?6iU$IHGUNX!elّ `rІ+`B]AsL 䑁x*s)N~2ɇ69e ; 4)C=MmJ1>胥e-AK|@E0eј $><ԣCF[4qA8ZPLbHqE$>X68Q)%-m9ԍ#Y̆"St&4IMfSyHQ]A=4\&[LUL`eQtx`Y|֘Ft#c.PbV_" eC#w H;%$0@=Z&eAYf&I>ReA.A脍Ɲ:N z6WNqZ4M2L{Ds (ӟ膝&I'~5@&t }tV%ݯ2}n)ײ8}kBߔG JgnBQhQ/\XA% x}dAz"4]$ePu4v$4?\ ħC&02G#uHʋ>4nc b4E(i O6@ #tRG3˃g)K~M̂@ NV tڶ0r䁍b`VARy` gpaޝ#@:0 wzȆ:gbq7zF@B`b2K5 K}< 1P(WL'M1z^ zԵ}'78 ӽEq<=qq |BӜ^nnf\  Aj=ȩ@^8C@$Z &_2/SGGi aIŤ6YÕ?`g*W@tNT8q:J I_Yq<8@܃_\RMt6`Zd<|9@pTF dC D@1ͽ:LEEQH)BA ADё`1tY[q_ D-FsAJ҈"9OFc|}tNWYD$8CD@ }`蚆 ":\F\"ŧ] : D ʙׅ*b,LG x,,2Fn1$M֤M$NA pHԳPVDna@4A3É%9Uq}Ҭ=؃:<zԛhH?AT*9RFZY`!1O h"H<ROKhC=\\N:p):VDGC DfJ^+!7̃}ĊD fZiS6Ae.4FPv܊T1 (#B)S%M%:T2 GyR"< ]&ʸg19aD2dCKJ&H (} Ĭe^b^D Unh׈mA@X\ֱQđeQ%B葞(Qqqx'IKx>iN)Ni|-@F9I*@_y\KMP.t WI ؃w@,Jc\ >ShF f@0E ;fGTbE z6 &DSA0H`%k8$ 4))mĵĐ4P>0*a؂> VB 'aX>%ĂKEX32*-RF@"/3]>ƾ?:TI:>|?; øD,*hC ?.NL%NDB*cJgF8jý2F(>TXFA'"&(YĬ ԉ%2;. DK+J=\@fCˊw D&NRE6꽇q&z.2Gl@D}li9;(?.n$F6-:|<@R/@*RqFA,XelAdX:eGx\ƆWvD)J$@`.A&b(0LoAyJ:mOF"ME؆'OpC<=DomPmNe `L$>MD #p&ADP%$:@"JhY 0h ^@:(wȣF<,1JR+F06=EDlCpbE,BCDY Ϊ;G4( 0@9|qG$)h:,+B3?w5kzM߫jǾ>d<@U>@cHq^,@@8,CBil;ȂنAHT1K 8D0ìf"v KTpH,ygo]yu"(Ou|xx|=|wέӧ-zɣp:{ S߼0a=Ez8`/tOz1je k 9C`1(ESy:9!pCt_M)tDS"ι "OJ-3 2Wyd[؞G < NX@`3Xu*.f:est%uMp̔HWg e}"[& |vC(<:z"BȪzC0o[Ȟ %$h`8Ae3@"곏sLGV:;`*iX`CO =;G@HJz" G&"ekG@ND,Ǻ{*g,dj0u)!!l=j8o6DhQ܈*@+'{+&qs⸚34ZB !11.8΁:ylΙK%!H6;91d]f}hjlݖnpZҠXցyP @E ݗ~(/[}^~%-5ޘғ\yZ -p Ճ'$1`Ot։:g-9gМ}dQ碍>餕^馝~ꨥ1¥ڼ$gzS&xZvޛ[ٶ3 `T_i9h IYrv6rGq3EM?U_]emuߝ}?_襟ꭿߞSox|?_?w0x|n?S\~i&-$~z}NbNp~d9A~mTRu(@Z D% tu~0Y[͵DHBy!ÁCZإ.ҍ{̐ZB2P[x 6 HKG졏I"&qFHBb QG 3 d х>fQȇJ"Ap;&5t 9<EV|AD!H *Pzԃ2A' $HH;,,;=̥RڇJ!a:\ F.*yMB~8 9,qQ琦<*t%\5e˜T';3~RͺA " et:Vqbc:Ҷ'XF̢A)h& ;΂"t)MSAGJ cjLVSe!'ЇJPYz/^bFERUQ= e(o0h1&"&Xή޵INuRA1J%Q(jj>t3=Bd)[Y1*z61$\bQ}ă[a7X/Gx2VZTK0%@2. q h|Nq܁0.*Rz@[_hhI;Lc+@ (q Iq%4du (}r_Gꗿ)/XJ1!"Pq'&ɂ]/A׉6Z=H0C U(PFlY7x0T Vw.vѡ])3?:Tj' Y-@pk) B /A+6@HX;)]iKG:\ц F_A8e$[\p ,I Nζ_ z܉b>QI `bh!o*>r]CJI;Ŗ#W<졜%ώC<0 C8宓أ^;遄z 101 N(I=6sN$zіX`)@l"[Ԥxqz$| S; $0W:P`Њf'^ބnRjl) A^ z v08Rܖ'$80U5IBns w8Q$A.Q dSqZ\Dȇk#爇0B $ KW5uDGLg.B6 /t /ɀjץB(wAQ S֕&0}q$! HG409h#I|6!}b>!`oLho L$EDvoz!v@%8b!ʢ ق+6B`:@G Ʀl*vfP#c r@ [&Ǣ`1C"O>Dpa!R a.2Ep HI靦O"֡"!: `?d,# aK8' rJ8@8\#A n:?׆*A+>#C@(>b끷HK0nȮ&YOQ *ΡQajI:OD#`  qRC*'eKSq/4C,q`B.HHEPe( m%.`"(:!a ;:UhMU"jƠbeŞbqѥP`A5B"# . E!B&:bdY(I*ҊH+p ,  8#r wnTJV X31XO\7k "FjғpY AV@ ' rwc{7{ *["!p[K za) C%@j%q8n&tv$!CepPʣGcOL@4Z!+{X0 :BA]QE8T**ߡAv0[_4x #Z!K"lnX"v u l"W{_cS$rm 5x5 غ-| h h!DS C8(UpPADuIb`ax ~?B>tVH>XʨLa&@'lwa}(-]T6~K -u$A$!g"ll P2S?a l&ҁ1$wY)ڢ75T^2N:`v"֡Sn$rHHV:`N  - "ePB&`O`:LN/z:aU80@*.B@& vaN+ +boO ~/uO&Vn8unъ`ִA{@Z>B4`25Q%9$v$z Ġr7‘ ܶ  @Ea$ c)|%R:#&A 6>բ6PGCM% cTJA&<{xQ;'549$$\H4">j5d"1|ylABJa.lw1$ +09OtJ&" 2[g= \“!V}oa|6:=B`Cda@_j&`P%\r!AxRCd:X]U"|YUցƕ[ZjIQxm (@a%yCkőI $H6 `=E>Pqd[%F{BOkogfՔ{vw|=׃]؇؋|Ht mGٍٟڣbeŽyڥ]۷ۻݲ|@ .|]wܽ]4 }ܝw]^ ^xOY(g$1w(f,^0?C>ൈlHYE$JyǏPs^w} ɛ8VfadBUy^꟝g| [(~7&Y*[u`ڪ#&XS&E{>z2/B-KvqDLC~̹,cZLB0Ёh !lBku L9287[GH`+P_5,_K~_+@Tއ ? ޤS] VX"g?m?!w|T_g/by|Gb|! $@  #aƍ;z2ȑ$K<2ʕ,[| 3̙4kڼ3Ν<{ 4СD=4ҥFёGCLhO&됯^w3CBїKϼyFg ˧ɺuKϠ}#/߄u}wn]9غ/`mTkر<##5lٴm{v"Q{+l :p΃q5[L['nE.^|&(aĊ;,qo&sKzjʑ@:LdHSO.#A Asd:0b"Hb&b*b.c2H a<  P bA@!w89(FP>Q<`O i#Á=,#7BAQNّFёI4X3X=$czf@a2~APK#('u>L;#qG<?9^;9lUPhs.GrA򐜷'2Ȳ9[hGsJs`u:tX(=z뮿{N{ߎģ C2$hwԶY_:l|N6>#Ƅ4d";19"K: MQ#Oh\OY0H# Gb%{ `l#F!͇?8zC4ߑR6L/~GR( ! g;Grt}Au,jq\F(C" yL&T'v}aRۢ*=n(4.R]T8r1JCr$Qᘽ9d(A#o$(}@'Tď\2Y kkiIGmF" }+J ?2O# ȽEъ\G 8#$Af8 @!ҥt V|s? Ѐ vVAsc GƸL#Јb.d0nťE@11-`S#Du'A>,yPK$ة?|zzSeOU!Wڈm|!iҟFrq)ib98T  (E[(mc JvlC'_)L@.Ⱶ[GØ˨|w ڣn=lݍ|lY{@+iaڍve-A*iز D;UVuȀۭrĸrK_w$ RwMf^&s82 kΑGKŀ#@>y8$HDq,R xH9-l(cX #:Ϟ̲ua<c;y#=H^9Ȅ2lء0K}qtl$쐖J0[61W:Ӽ6kDpcNx4G|֙<Rlp{.ύvP=Q :C0rPhJe[ p(:,3c@ *xxP3hu:Q!|fHrwÕTϛf ă3<*pWnyy_y{afs?P$8~5R`Almxr5m+Ec:7RT+?9ti(:+`cE yX]>OK~G8ЁyT 3PС{~/Oԫ^_>2]9Ae~qA}Mpa oKZ>p- X/u/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hhȉu{@X8hR<H~'LbŠ+h+3@?1Ÿzx͈V4F |5ٸԍ5u q#^!dV`(}(x8Vr)1@y1`:7A y= X<m!IY6/8;C/Ecw>=EDLH\(iNaUrB(}Bʰңu Tna90PP R X)›uAOV1!{bii* fi+$>\&at)P 1g'OpB9"I$Pj* ʠCY>jp}ɝy<F:Y'Ȥ2(%P(A?IZCUZ#*%z>d)@ 1__p*6љ=#!,i)i(ٝvڛ)CK:Tju0 J%hYSڣupbPe#ګlOaXZZ aq$!8JYLA婳g r ] !-V_ 6ڡw{*!$ؐ,Qp0% vlma%pVb &*(! A#PT bqQrd:=$u&a3۱brbX$AqRNpVN!YqzPs &[kq9{P<> &&Q  @,[ ˰ 2(;m[o[e@jhMRLl[$!cj!;!kBC‘7#`&H`qo_Q"!!QGR[ػKR"J{ѹa u-k 4K<鑸!u|Qu8!8V !2+VPh(Sx;k5:VkeQjW0\-2.i3Ph:+ .0,hb 0hh !Ǽ Bp >ŸC,00$Šb *]+TGWP-,,0'T'((C:r&` l; {+W%+b$/q-Q Q޲Jf"xW\|!Q &<5kV2-5ma@P# E{b` ESnt_u*Ɂn<))Vf\A] lj@.L)p rB90]  !˹r >RpăxKL>rWü%]¸|}b*%\-a}q-̀s:ʣ!$cԒY]oyBԅU:#1}Sztf2d#G% L_pN,8!J me77$4mE]7H2zfdjyl+7}E`7M۪ŭ%֐Ư":ˣb9۝Όz)~s^pi nQᇔuK؊M}p+L]7 87㾷 K37W3vDLLb Z{x1`C(pHTOG"rpDqDs*BB!0rKpCD3!=(Q ?$@B;p'tB=|.bNp.UB咞淒#$"sTu_fWʄ1í 6c>+w.@!V= 2$#QZ-D(P7&%?7GTș=ۣ&=` 0909= &@%&p~B(wnR.O Q X[N7i<X\/OzH ?N擄xD%@|NO1gK j9%fח@޺jՊIK@-GHJ~;M҄D ?$q9  <УG)U;3tJ@$Hk?N>r&: D/޴5qEqO$`P%fd$K]%~Li_J7JSn_ д: 5~BH Ppja/ 0~9J҄)^y填௎=}|.߻ XA|Ȟ '`Es/A|.8S:{[bdi#R)uT[buܘFK~VXe͞EVZmݾW\uśW^}̷S+N**"ϒj2<7 @>LX%:&vݼ?C,V 0YuwDrԥ')j?*(q'ٴ?+[n=T-!]W *8G N<$pAB3<QH:y 71L*1J;Ͷug܃l# Ssdo9PC` Z'XCG UD,> "o   z,J.1{mn-GPp?0<.u(tNTT0c!S)t+@juuY++c ZFŞ2u3 V[o5W]wW_6Xa%XO1eY0YgN8'$* XCsԠ 9б *ǂJ `}zl4(Og1y8GwDP{8 zdT>yW~d F[2/[6cw83ʈ>7ߖ׶x `}VtR'u}w?ƀ-ɹ{V X sR1I€Cn`u\)kS|G#r$ d~'): ʶy,Wik!i5D,M/u&?]xcsA]6 vyTs)Ű7,h ] Lڰ,G4#wy ΠYk֫}]AtokB`@6Ё`%8A PVb>%?E%q3 ԡ=v" 890`6"Z⑭I< B#0a=1LeptȢ:qxT$WQy#ʓjC:00|C:R1>xDy@"AH`aՁ`#8|( =1GMBbt=HD1p!C=~ 9'Fqb8C0 !c l!~DZ" @/ r1@ xAIt.FRv.|"6RpؑV&DBKuE(I)S${D2p6EXd# 6ecԤE.ß)D"jbC=`1DM8O0F @8PgҐ4 B!`0"Tj|ZY}l<'}T >ȰLaUz͉glpGx }+ >ZOx5qw]hrs<%Qr/ye>s7mq+?zЅ>t#7z҇rMzԥ>uWWzֵuw_{>vgG{վvo{>ww{w|ϗqʥG|x7Kxq Ӈ $"yʯkzȗG}UzJ_0z[g?{t Y?|G~Ò*%>MS>Bq+?~VFY41L@ 6\2E r$@8 ^hu8@A-ற  xG `G3qb817 g {3 w()  `?(LyDBHBT-H@%&x.ypfF1B BtG`@A$Dֳ҇0)4Yv=QK:KЃ:1"!‚8zȇbpt% Ȗ ñ̀xЇs2 Q,łr`X(xŨY܇z(c4@e$Ep[;BTudvtǸk,3/LH9tP#Yz`$1zz u'  0` 3чHɇnz3y.`A#{(_+ Ї1xɘ| uwʨʩJ p5^<p#yCye ("/0pïls#p a*!v¢% ̧PH˝ {'uKK{cCۨ ̯DTՄӑ s92T XȈ"(ۺ@b۰@QJ: M}1 ĒIdtOcP{8ƂYp`tZψNˈ` x }  ?(NxUЇ.QO!< BP'!4=c@yJ5z5t(S\ A)E f 1xycH;189zp"ǂP4{6":K9?Kǂ6q[4Hh7] ' 0 Yŭc-w6Z[!.j ;h5%EU5-HRƅȕɥZ1\%5EUeuׅؕ٥ڵ%5EUeu%5EUeu&6FVfv &6FVfa gJ/谋v vgjg;҃!`V%\0< [纭tPp8S04Vc2- Ї@P#b ȅ%Y`CFd͒Pt(\"9'&: h[00Ŕ dȺYӇ7n@,x.X (T!'=YyD6cFYBp$ 9ic k"MffI ð eVX p sE}; RoN7L蓈X:XC3] fh. 6U [d gyf`.痆i̒nLD_y"(Bxiꡖ.Hd:p\ '@{PȖOx+Tj鷆wTiLC0kXl= !"='̧ulLlX s Ї g1!"q츆D " 8IpL\ЅVx"C!o.mn&nNL\ ,a%h⼊Fg[/o\.hh-9<on"¨So_+H#=1bil(= EDT/ʠ'?iNV-j~?ȍ`5Ys!# GYЈ;o H{8ͱ%;1)wig6WV`p&x|` 9 ;OJ=gp8q́uxxkIsNtsM jfU@&OmȞ?a%tXtYF+̞fY 6 䆭=Vk %ShvƃsxAyJCفT(oꀱD Ȟ 0zhܑBCwlxo 0`>0Bֆ<ohY|hoi(E, i4UVqu~|רL U hKYYseaVhHpRŏyd̆@%R (zkKz ou_f鐀b Ȁ\vE40%{bK9 /g,_{0to;ȗk9RE͎;B3#@x%JWgw<٧ڷ'7GWgw'7GWgw'p "Lp!ÆB(q"Ŋ/b̨q#ǎ? )r$ɒ&OLr%˖._Œ)s&͚6o̩s'Ϟ> *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάyPto=s- uށΘ@ _-{6ð!xHwpą3ĥoY>];g>1y-~<*7x 8X Yrh X|a>G}A_XP>2Қm4Aoi钝Р)yО}%@:g FKriE@c?QjA6ān3 Tj)<@ꐭ;6iB0R:={=vN>rsپ-*-t+R c1<⺛DLPe.Ф']lp&BW$oB&( .TL KDr )[-;|H˯SS]eC,Ƀ])h`:H ܍u|N>cO>(`O*홎l>~N. w9E^zml>!`x%eBl֓$Ht 5BtnG>' nwR"#b ǹ$*iKb/zAq981{L` N[q*ckG<5R$O#!eсzd! i BǥӘT&AzBmj*J,.Jǜ=2> sey\DM><óV QvG1 D %0رLy62 @N:A $:ꠏ\ap@ } }AІ  Ĥ(CQL]z4ɀY4]ԆYb3UYѺ͋3>bit^>ϒ4+Ka*S $r Ae3RĖ43}'Nuj*QTzTؚ/w*ܼW% |NQ{þСП!67#q@s@ )Xah#kZGR! ±́, $1-a=ч:!ڀ eܭղ,F\fӲ@;< _i .rt-6^8,>@g4  z./HU9\zI:Arcn~AR7Qy!gw{ HU:r \z_7g v48/N=iZ ou/ƍΆ``KUCLڝXbBtcA4DL<ldA0-׌\Bv?DX\:L B#֝C>Cָ aA|6LޔM+ R @RɐT T]iC @:pPd:LZ_Ja!XR'##BgLCMdN D@(iIQ3~@|w)%Id->D ]|?(8>BHݹ-z ;@,%:b9%Bk@$D=uPd:4 A@$gs!>gyybB|Gb#%@Ѐ, D|C&8DC< ͌pH ʝ=DCXL E4Q:B{YaCN C$<,!)<݃A ~r|]zZuDĹ2m |a +Ax, i+ Ǟ,ˎ-IH :@VRĩlrӺ.=LC>L>yڄ`il>px:|~k"*oK .@ح® ADjK<pv--Q C =`2 /B`,R>D@G$Y7@<J! AHC$DW4O|*;@Nd> X6D(Dх f%!(@2*ɕe%=(SBM@4Z(Nȕ˕>epIN4߾[>`C0CN ԁ2M1Exbea@pMI KXDM`1^/ISCXNc<܀M:,<./ԟѯ@8G F, @< @4?C<3132zM@)4Nh83l( d~#=Lm&<蜎ȒۦLR{nB$@C:L\Dx#@}mxYD^c?lQ> M&;5bU7@,4ACO̞COa^V4efM&'CxHKc,A;#uOA(5Sc䬝&er9ԃpX#NH@F.:|`k:SK:?Z1 uQFMUeuPz4H6\&@vBHa,tqyk5(Rf;ͤwC eT4bI t>??0 ` J 6pw{m峋Pl9w8FcHOTp@# <n^x cUU0:|NQjݼ[#II.DHn@vA1/@tC5:0< 2 `@;lItalz }@HB@;@@8FX=JqɄ5P0`Q9@r}.þ;̷| lC06vD aA,P'Oơ^H#t vLxGe<:7?@lx ذبdϪLڐAM@R#!If'@X7`A&TaC!F8bE1fԸcC.`XayNX@=  Xne[Ӈ{$rAtq\ٻgpw[Ep@]@Ǜ]A7YY`g)Dbbc h} I7P3 ;XG6N:4h0P 9A QI,7dʟǀN yH)`Ax`}`%`)Ƃ @g ZI{4H*8@P,3K;ȧ a[g*E,sx I{;(;4Hb`A ps UQI-SQMUUYm!A1;CLzG 9YJDK udڅ*toM}ǞK[މ̿s"@9@ %tB)`gH hW)1X19-Qh !E|6hJ?4b{Ṃrx h㣑vl{V Xx鳦 Ίʊ!Bg "A{ȟt @aB!nEy. A :-\ /Od҉GWV?(@; Gt< Cs(HK{N@+Bt9!G b]@?pzjg1w `m8}IQ~eH]_TX?h%!X@B4ߡ|!%!yA? ^]^Ar|:r!.T|j%Ӈ쁳`X  e9{P <$ .MtAStoȧ@`!J#ȗRshc>uDؖ*!m\Gt=1 qDKi 8 # "z K7WKvL뀀 ҍ Z2JUt+!$@=aZFPk NK0|͙uGv@|;&7CGf x2j@;8MpAK "1``bĐ FX D=bC.X!A :JA,y(s<P/@%5IQ *UrPSv7@ Y0v N 1w$ldxA)n1x D6& }N()*!m`NO*P! LP }z Khx"B-t4r%U2!)gAZю- @SDu8 2hZΖmqokO ;b!}:q\.uNյu]Rw^񎗼5yћ^u{_Η}_`X~ <Y v!a("#c" Kd%+ч2$ h)QbDpB1! `MNJY%"^@QcK}H>#.,.cq@d J@ݬf5͈i֘[cf$Q9dBd";GDD,^@>4SeUgc8A<aJխvE8)xS:!ϐ!`{--%"1,ɉ1b#Gvv^ x |p'@&&zBБ=@ ) nuC,qIZ6T>d" 1qh|zޖ!@ By  B !tA`ubz HLis,p qe ./"a"lkk Xڧ0QHv#!FJ%)Rp&'""AP WR2  aVe$OQ T`)R Ј ru"3Tm A fa,.RAD/93=\,<"4M! &*Hr#,J(p1,d|!*`&&#gJV›m  sF3D.ʆ. >@JA2IaH\Gk ?s=ٳ=KNA7A.wh nʗ#?B^,l.f!2 dzJcd֒dH7*73jcK!ri4'>=!,%B#: #b +RZ|p$j`cf A|'F lCF:5*@I",`HNAHP)R-R15S5uS9S=SA5TEuTITMTQ5UUuUYU]Ua5VeuViVmVq5WuuWyW}W5XUbT, fXuY35خX%7/tdZU(jD!DL/?[\ d΁!PB:J,u" o!)95\ `Sl/sGШEڐKB2bq_UV`IdG, %Cu"*"lP)"|"Ď!)HӍLh h.(D@=_)"A$g W)2lV^#<rBS+`wH@Pb(Sx@#RV&vUG`;x(~n.\ FEn|$an,%+RlI,tNxn^#.OZ w׼o &oVpe.H if*!"c|fjajOvL.8#Lo6`-gIRa&@PdJn ;sZFNFNij H``M& 2%* $uAxPxD›@(7DLfEVjx"ow aAPZ:("-Q0XM 7lO&2R6 d-!FxiٶE).}nʦ=c*`nl`_ff,aw!df`Fxg.Xc t!->E Aceiuv9M6@0s.g @l8 9aAQj|wVֹ !!.v`ttPGuXǙҠbBC͗I/0kAnYً 2+[}Z-@ŗq)م,Cxl_!7KlKt ,'hޞ h@a 4. b1 B6_gDlvr~:Bӓ%HD|0bR @{ !ky]%I0%6^(g[fz%'&Y j( bw.`Y (bΚdeY-`c 8jpv8!s VШ,z՚Zd =QA]1Iqqή) 4'ԡŅZ', ),,F VB& 4BtD+@ O\M?Mn+z Zvsց:IėN .dIx] ;Ϧ=زc=p FB#:[ 6Ǜʙgb?Ab4jа곣B4l!+Ҋ@ |霹B@<|M=} =}!=%})-1=5}SɹSXI¬U0U#,BØmHs bsW>%r=H ~uvO9hWon7!JСX|1~;N}G}WLx=G/~90A}Kψ6~y7.:Fq/yQ!HZO& X)؂e/'4x;i҅ y a#p *ۢ[, ;#qN ?#g! D5Oy%ĸ "y Co!@'0# {4j\U8@ߺ(S H: ٘pau]GqN{9}X@.;g{ NuMQ)IRSKٳhӪ]˶۷p(`R L)KÈ+^̸ǐ#KL˘3k̹ϠCX]xzuR:6uJgRyֈ6[Z[}1װS;K |!9rO: ۧιͿF=8{vY!zX߂ 6F(Vhf6}sN=#@@;>` ((VWsK$Fb(O)DcT?uTgW3;΀pZVaDq?O>z qj衈&袌6裐F*Zؓ\զ"UD ;67OϥjK隟m2:ʃ՜i= :} J (7q ̓AJL ?+ک| kF30: ă=絓(9ZkTf`@.t6D O1zʝ@j=poub y$ 9y c@<1AO=P7Lэ}UbOڔ~"< V:AWogw?ũ)@vmN@= N<Գq>@.oS3ԧ48n71G:%.mJ& <@ضPM@<PAByps’,uKHL&:P"B0IX̢.z`0hL6AGH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIR򔨌S9U+gIZm B0*ɕetK $*>YTAK)u̦6!)@$ɗq#zbttQ8ɖn܃,u&De*zXB$F: ܦD'JъqteEy=M,G((S:#=1Б2uyZi*) X,Ԧ:[ ɢ $9*ǀ e!\d@ VKq1YHtXZ>^׾ . XZ!SL 9CeXrP Y8G e1M~:0NQVty}ms`6:5C€{ЯOЎ<̴xpb<\n #C2ycJ>BԆDJ>(#:ہ)` KS wT͇+#똀,Gob)Hʣ24os|Uqjwx4p nZ mXS҈j6KmHQL9$TG=hC@Bd0{$ ;dtzаdj0<,zi];2֑5hF5ӎk)`f`ڈ;}DXFZ(Jlm@W.#**a y 1V8W%[R;s}2UbM.G+( p b&',j!i>q0"l(-"12#xUUpi`n`@ƃ1gBGՄeM؉R6@:aAX `_'}'z#LxXKARqU0-렆jU&  OAp ? "RbY C@TtC7"LhoQ)w_RFucp,VMI1OcUcV"O҉N(XAa'.؄r."9,a'V(Q{.laxsup\Q4mx=a=5E&bvtv")k1-09y=)3hSB3?w$3 9Cx2IU"'O1qT3 $`S@/pP,o r0\'C#VC7f X'f,M`S)az658B6t~@7[u7lNS) kfw:A c[NwX9m6( vSaX>&mqvSb =LsN;x8 (;!o 3(#A$4D<I"$Z&ZH ~`E46N !< s&0qA~)0P#C"pV- :qQ4D1)@"u^#hY!B:@m@`@i@Lj@e"#`/Jz(q4pe&@&#Cd.A@  DŢ Eyڪz)v(0!!ګ&_7*!ȚzQ^' :Zֺ]'0y:G(5Jڮ=+p Pz:Q;TrT H Kذ[DL}R&$[%e0M*4fZiPLG8W]gBQ eXkTKL۴ړ509@BdE4pZ`H& "yh۶n몦A70HuPb/9qXq)Cg{(* cb>;`8V۹kZv5$Ѓgs֙kdgǖ z ˦+r#&ƆlʦiݚWVfڻʻ<s`0b'4t@C?Pgpq bt`k;uU"(u`훿W  ,X&Nj) {P7` ;wз}# T'6vV:?Š:҃.@ H@ħ$ ؠ|l*|' nvd$ćmy'yP(b`ƨR^IpmWa'҇ں?ґ6rJ,brI"g"1|DŽ\Ȕd\s#*aAx {L|@&cT0G3O)u084M4A+S0Vå˲G0g(`S0Bp` `&q81"<'vB R;|, ڀ_ȳ<=v1|G# rc' |>SZ3-3:)p 12Vv0C<C=CA4DPDH0T!]&HOs'c-2G7p3=>yT&B0: HJLNPR=T]V}XZ\(_'u@sqP9}]n ,\+5MppݑqDo]؆] P&B 0qS2[/+,- [;ipOqP Znqt s%@:B`BPh 1|ؾۇT$pv4Ry7X!.5S.hPӘATor\P3Jc8`" A;Q kAH{W[~jذR! ^E2EN v>S\9`c  bm1% @n3$Ox,t=$}3$a Rһ3pPpO(^(' TjyhN+gt];kqúuF+SRdLveO[ffp8ӧtun` mV,sUE@!q5F `riY̾xu4R;6O_ _ R^m2ZAPLJ@v xE^l!"uqUcsVnKq'wUba{ Qwvz9!Q1މ؝ޅ nߗ#l #`P`d&T׎̓7:03g䒯zIp)!w|?yTa-4= ; ‡ˢXaJ>islH+H;#'ɿc0~bP/o|̳y€63<m>ߒbP(q~wg" >*rɋw[o/#E(/{o$֝ dGy aΤYM9uOҽD{|" P2SyFpj+PaŎ%[Yiծe[qΥ[]y_@7p<w<1o`kdcF8QsNL0s-1hO֤!;MDYCMzRT+%\t DZO'bnr(N@[ֱťFUST+P|t`vbT:H~?)D  CPG|sk_u ϬE+M%q5XH-==YІV=.bPXi" C B(! H"d*du#xGTbDGBH7h hLo`GeLq`l@ &aiXjzzʣP|PAmz>ǁd@%@rJ,Ow%A*\{#,:S>)Y1:!4)e09RMapL8ݤb h@* 8Q#hEGP#`Q7Rgy1k<΢& xl$i1E uM}jTb q3%* d淖Eہ A= QHG8y4}9NQK@u&Sry&wMOಈz( \T=΁İ({תQ Yp" ʌp#9='I >7]󁇼x+NaV#= pf X?ȃ{Ld~fW+1M4;>Qm y .sg][F\Kza21aq> Of3Mf&{"Slyg|WgZm-6{&vZT=\`RK$Wat.^ F `}L"}ă'~toIޢ2v#SF@Ai.gPYwg>SL7D `2B39آ9B`;աO8>p|)<|@q<8 ?1x) "Н"_a|[ʀk:!(Y9@I"X"X@* {(SB)B*,=#|H1pޫB0 C1⻤L 2lC7|C8Y%`V8C=C>ܸ[> DADB,DCXϒIL}؍" ye! ɇԑ0Qqh *Ʌ8Ƽ9ȔLٌuh"ba{20*S++>IKlN,y1,!j&(R toAe;8y r(qEk?1lNԒa53 8-LSH;4 L{NQ0ሊMez BuXP}#d`p- {K%] OhQ*   HW1 p""$47P!m$Q7}SPAA GJYKSimx7$(3i$؄aSS5QamB 0z8,SW}UZsx5LE-m>-S%s4]yuxڰ `F ɰm(Pa ]s P1V0B9*DЇĄUz׾2с蒯?Q{4$]Č? 0ž:.=+]3YU( k$WmYs1@+!yP P:["@BݩT4ƊY_ @ }! xBIyHG;"ʖupO[=(1J8 0 x!@m8 ?}BǁP}>]P0;8@?p1'Ak [ 5\U4ԝ/zﻈ>Ӑ0xȫ=ӻ^' 8)(mH@yND h<{?۠ t!`zs% ҋ OqȁLu_3o<=Sxd !b$Nb%^b&nb'~b(b)b*b+b, b.b//>c4NɅ'n 8 c5c?atЃxHSHd6l FcJf< hfҵF:[eeSdU^P\`0|FY~ [vpiH0cV>fdDtP+],K R-HcݾPf$efl@/#DȘwbxS@X8{9Yцl,* ¡g{5hKmKf8l-`*u h^%+<@iPz`!!w42e,pGKӬ91a(h8q\֬לVy ³DMDraԁh2h)DMJ[ թP kމȀבH6s3!88s* ЇŶ-Td@чE1h oɖ %;kkS p. R0-ire8}h6u`8Wt4A[z  Z[ce,=R!ц `mopG4Ԣ׿>USAp8$q Pvj& ?sۃTiT zȕIpH' Om FQ,Y\! n-z; \}} -(Ѿh9ǁPPXq8soCz8ˁ.*<Șԛ@qoX"vnAe8#\ z(`@xɺt{y(R9uX/7f0( tZٝt>f!,ؕ puYyZ~vyzZ{ _>Èeh*Qb tXZu t8\:Xx5fX}]]a7 weux7 !h]ܽ.>+L[m߀ \ȆY i՛ 7]&7xb rч8u`e+2(fȁC%OJ zD}H#:"G+EѸwP6e0 &zR;H®}*FҀCsؿ}T$ȅ #~77C$\~o}Cxw~~~~~~/aBE0f '+I{09B@t,hp ;@!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ` :]!DXTa!> ujU2P@ְb58a/ݹ|(fdK-:}Υ0.޼z/.l/z @üuK2*0:wB ,4cϡ::& Ċ}̧{hc :Ĭ`Bb Y'#ao^=xvAe{8!y\ӇH`k#AB*U3YVpl:rQx ţBك"-"18#5(cm:3`F ЦV)^:L:iSOē)3Ώ< 9$A hi IO;u`AR>(Q>b*$M6Vc%hQ1b`\0? p3)B Gdu4kt@O=vA`O:.{.骻.FtOZ@3O k\d<` ƣ D$p:XLµ?a_>:BR$,@P:b/'0 TL+&tD;4:&e45\N!jзl&㔢_O:scBA MP<\C\/:C&B.~8+8S6D)$mMK pZ.أrLE\tO!|v'9DEFOs/oy$Ha_QxuPorA m>ap"hs؃+dx%XLA }ăTq AcAx0({bpp D'<*PP:`#!@0P&Rp ;d 8Ic#W e6#c=dRA$)e6e'<@fLQd= @``B#&m:u " ~2;Gp Ȧ^G@cs#6ZH䮊Y`' 4$QWju±E,%d3!P*ԡF=K*&bbq6X9hCq@.Ȁ骺F*[ݦWȱs#xHȄ&zF!HSBpR*d8Z7yt. @=   }qzGmt`H?1 51t"!<>r]y)@R̔~H G.hcيr0=KmA0Yzv-YvaYld` &P\&"Ův B_LO<C & _7ەznqer9z-t2H` `AǕ-mmosؠ.0i.^"2 E S Іk{U9r-*Q@1[D7AZoޞ-SA6 s<i@ɍ V̇B`bЇ6 ]'Al Jb^Sл6r$ @䑻 DI͛  ݠ 0h;Q4浳n;ʙ RcN{+di֢wcpHG~TSV/xϤC:fI2D I>{)D`=H0 9 ʃr`ڀc3=tsb xfɝ s|O)ҞYÔSn<Ȧt%NTus}"Ї!B~  kc/ mD!UD0 A T:;P*P<B \(lB rĦ͇S`DVe[tL2(S<@:|MCIĦA8  :ȝn!v~ M: :h ] TܼFp ;u:8aEaa"MĪȃgpR\|<,\ S4V+^[:HpAM D%ebA:Ex pJ,YiA@DߥA/:m= AUA< 3h\`@):"vphEp@dg8^^U GZIDC کF$Bt !I8[ Й^lwNC p\AU./ _r f&D(ԄП><<&G#2 KDe@gDD1Ɛ|D Oaa( GЁJ`JYI pt Ie:B'UH Z@}*ƪ*ܭJMo, :XGD`@=`AXnAXWajTl\փ)PO8@e\T@d.@0OYC' D6LBHh̷ e^ @`xQ_HZu:uD0@B#:@=\&UiEe4ـ> ^"i[\L|UE.dA8@|"9VǭvNk.MbAt,X Jd C_.V/B: mPq/y,n/Z0l #WxI|G 0ڡiD4 C0Că.=0@C:=k=p\dOp :@>A$3sdD[AB 9XkrFL`: z>-lAX@Lb> 0j(2))aAP\LhdBX SH@1 \d@1n m/ָ.+sȎxION 1"&(4hDT@-E 4JYQ )7c?6dG-_܃GD˴` D+GO="]ҋ}<̃ ,Æ@'*FdN< @@T\|9pܑ\<ʺeĪ^GXCGԃezIL<YTq߬D?Dh# oEwxO9D\$fwF:nC.PMڬMA U F ސ~ W_?LBBl/$؃@t2FpĴj>M@{9 l 1N4(޹ 6tXP@:{=\XѢEVw:_:CثW0ߺwgN;*7 y *d nB^0mn (ӣAty63kWZʻ.C*A  p=K[Vy[ k$tYHwOQ@ %thѣI6}ujիYvvlٳi׶}wnݻ];''c>m!yvBzNA pX_W~aɳ}=ݜx0m<[ku>ͽY!㩮tGus"*mֱ'*`-}(  *`{0:DwHg$Y%'I' 2Pz>ҙ r8'; wbZGt  Izf\t<qE^L' XG,9'*j#8Ż ! #/*\'iN$pƗ ǫ%H㔇'>[F?:n- J}'?[ a~|@Xgܣ bn:h>+hz (uZǖ8̓|ݗ~ >UIXTjkrjo['K\Ew t.( \@aԘshBY-v!}6ǭ>;κ<F0y&ZJ Ч ֙cȌ09G @y r|R }Ǟz"ot Zkq $]'ii|GGD[m|F :!/:6:A v t/J 1!{H $''=Tz3 z2n>1u7h' ݞ{ol뉧Aa;9K`qB{X" 2◆0+yMbAxg.wR iXC9yC74|Fh$᝶@l*@'졤8@v!E*W,tu(r@,A2Ͼ@u3R%! . Lp `W$DY m ty, Mf?Qԩ^u1A*C"`]90*8]kYK%ڢزqC q_'lje<-嬵hwTCHqu@-Z:Y-{̃mJtL4;)tA=nq Vuc}|!jFp1`w :LVasܬРPG` }$L6R7,p#gA$MXv$Dǽ9v !Сz%!N0*ʈ- z4@a<!uX.TP+a=josPw{bX" eB@XYBb aڂbcN *g(/oRlPDe8*00b;R "n8,r@ !YKj`>.$R!A?!T-  ĢDVbo 2$ 6;l͞,x  H2bN8(p# !%)a HPtb %̈ Nc~MB pV!YPXBn{QʑJ+ @^U : Bz.0`B X *` H@FXg"\6Dޑ"L Ǐ)nN*@36r "/  #$ A R!p!R',̒*’!Z⋸ K!@ +rGF22 kBˑ"+b`"կ0(1G] !h!}dR@L $P &@VE`"A>c.\ e.f!*d#~`.q%U8!O3!C) ZD紂AXN(+b "$Q=ד==>Kc  ,1!>=':0r0s$MB @bM)>̥58.+9-/T,f!Xg!rʱQ2 2(0B`C (*f ZDF;&BqT?ixBCNAgAC `!Gh3bJg @Dp,atAHF[bN[O B$DBR@.'Lb"G " nB#( FNj#xG@jNQv!$(&ҡZBcb!h ,Ca.KPpC>|`Y$'G '<CUoB׬GxQT'زsHFғ>7 A? FԲ *9Ig2>_`V`AU SQ pdMɜB:6B&D2Uv9N`<1Lr5@2:/ NLĐaArfJK =6$ >efEB1$"; a`2`piFi`hy"$bJ,)"g'@2:7[ N %$C2Ha0.yB2kw6VT6 .EV@9 s tTM49,2!o.SBa$ a~\TN82d/Ð!Xpئn|Jn2 'Im!jFV*- a=5K`nN$%YR+t7pXx|#D?Y,ct4aL`>!B`Ӄ9xd)؄OSXWE!Ҵ'[ `Q`0nt#v8B4W=xfX؉SxaBigmFdMbF'RU،XX6 F|-8r` ؗH~󈅗 ِYّ#Y@+ْ/3Y7 fܸCYGKٔOyaP[ٕ_cYsgٖosYwg{Y٘●YٙٚSٛYYٜY]ٝY͹ٞYoٟZy ڠ:Yڡ#Z+ڢ/3Z(Z;ڣ?C:68ZKڤOSz!HZ[ڥ_ckڦoqZw{gڧZIZZOةڪZګZǚڬZךڭZ皮ڮZگ[ ۰[۱#['+۲/3[7;۳?C[GK۴OS[W[۵_c[gkos[w{۷[۸[۹[ۺ[ۻ[Ǜۼ[כ۽[盾۾[ۿ\ \#\'+/3\7;?C\GKOS\W[_c\gkos\w{ȃ\ȇȋȏɓ\ɗɛɟʣ\ʧʫʯ˳\˷˻˿\ǜ\ל\\] ]#]'+/3]7;?C]GKOS]W[_c]gkos]w{؃]؇؋؏ٓ]ٟٗٛڣ]ڧګگ۳]۷ۻۿ]ǝ]ם]]^ ^#^'+/3^7;?C^GKOS^W[_c^gkos^w{^臞^闞^꧞^뷞^Ǟ^מ^^_ _#_'+/3_7;?C_GKOS_W[_c_gkos_w{_____ǟ_ן__B <0… :|1ĉ+Z1ƍ;z2ȑ$K<2ʕ,[| 3̙4k,! ,fBBD^^\664jjl&&$nnl ..,VVT224ZZ\JJL::<**,zz|""$bbd>>@h\`|v . 00xtv`||(6L|zpH@hzfh0pİԺ|p|d\tx\dRlttl*$LľFJ@:$@/!:|"N%t`F:#G߅fᆳ=#< pR7`A.cQ4hЍ ;N< N>cF)TV <3(O(- Ih&QlIGqvdPBÎ?@ =>&HF3AHn[Sd}O($-ښACQ?`,;Αh Bx;K~0 t<|PPH8Zqβ,@ @t>H,=N,2 H'XX6+xO< c= | %!~LR#!@ tȀб$  |C7o7 +1AzP  {$uhG2ӹd8@C0a@s z`'APa:p#=q @ $ ""J>HIHA?a"rI@I@t@ 3 xH&ZbN@]<.#Pˈ8 * /~GxO SE,ET;A wŪ@$˂0׹ `+ J[K&VQ +C]yY(@Z\ qTnD~=-/tY1LBBP]t 0^L-hG~P÷gLc#+c-A  tb6[c!BRt8"/юbYtY.zh1OeYTx\Y N1Gkϭ,OL=%ҥk bfC<%CInIziǚm[M@fY D0 lv@nkLb6Hl2ARɴ0? ·"rApJe W5WA! ͤR^OB9f!#R9@vjsI~_;7pBz4j Ps d?KD?@Ԭ*"p`<6H`_}e=")ث <`qx@G<Ԟc엍8$zo+C ú@ } Pwx@*i.я`]w8@u dK0#8{Qb|$C;_Z 61 #ښ\tѧO[)/D>692;!-,<!d;D:݆R0gCN{T'EV=.=h 0~sqUs W\5#/( fqH0|=G& y&<(Qڐ!Rb`C`r+v񐃬EYP=`B b}VgQv0dG"…u}r8tX0@ ?`U7$3- PQ_wR=%qaw6p$`paP|M`qb @z!tC"3ME$!br4`_pa9#,$}#2S ڰ56pb%WDld7a+ (Cb0B1Prvx Y@Jw {-QّN #Y|P&q02Bz(8);9>@\ѓ AByHJLٔNPR9TYVyXZ\ٕ^`q3zn1E ѓ2F)tYvy0!gL-R0xy~Hv"BygC0SEm æ.04\1Fu])"B. !`yzֶR0 7"0S0#0$0Fפ9a8u^΂1_ ${ [U8Ƙٞ_vJk Ys^KKWpGrei09?4@IڡʔËaaba%yqa_pk w e,"Kڀ!p_ɠzH)!H8/R>3.כJ%90l0`* fW:,IJ:tZ׈G2QbK)PS06q`@]H( ~ p+dکJl qdOFv[#W"6 4p+pPzʺdZRJ9<'ʖ  B#R +ejN:O(0:"dfTp`!T_\l/@d&e fÒzM' 5j8 !"E (67+«h0a-<۳>v<0r\b/0\"%ZEuZ(  D;b;dG=I#d :b4@f{aXBmYNe{!qWT fxf =h`@srK<ԛ;[a8 qZ[ZA1/re0WgW+adps۽!$1~蛾 Qq+kSH2N[{1ۿau<\| F<\||2@A.얒Q14*paQ Q!ZÜ6:`+<.kOATa;'P6 u1/v.6xTW\BI1S8ɚ a*p5|Z8[""T*93 $`%Jp2q9%3hȉМre,':ƪ靽vst`'70h~Oa 0'B[+$U-" 8SK4ٟ]ׇLӛ|V[:W} 5T_ ':4,:(WY)L1/]\(W|PVc*9,6  /9a_Ի 9jQ Rp"s[pm 8UAfBs397rC7vC` ģ5o<,n,10m-g 5j]M"փ\wq1 ]9o|b|9es6H(Vέe 4] 1IX4¨dezM1ڠW);]a;TA# @Q@erf@2r5u>>%TD'4) ? $zgp%|%.]29 >D$^y]7 Q @V d_j:qApJ- $+|Z΂%GbZs m3nb>rF91G%X64zY#ܭ\7Դ&iM?p -h~NK/R'4l"@JiH[#Ȕ$1hWEH C}Z}S7l3񳡊ʃ-E& spJ ew Ȟj?hͪ @K}S˒ᱫ3:0SBpdQ$@?IX% Y3qXe4b0P~YR PR%aWk;~`!&%aeŋ/efB@E2~{0~Ws= =e&J1~QwE[}u -4V+[(_WkoٺTR|HW* .^//R45!`bL1ZTR_t_挭w|:+@#e['Mx5c a %a@!u  &@ G[$ ۏ ]|4 A < 7 ~7] CANx5˙:z0D(s ?tJSOQt+KeY|\uM`tl曇.AVdAvz% ݺb  c<|FJk7rxxc7_6 X[>R}]qɕ/gsѥO^uٵowŏ'_ykgGv3@@7Ayƫ/߂x!xjgg0@@Dž@B !!$HxGZ4VX,%B[ - ':!,*FC'n8ДsA X0~G~'h tLNt3Fp=@tPB 5PDUtQFuQH#t9 M(O y ,8 ,nA烁<@'x‡, z K"XWDW5I@|QsXgh  }V2XX-+_ qSJyD"@-4 2'xڣC}$Dt L`|aV4(&H Vy ك:]\!1@*0LJ{gzh6hVzi/i Ҍhg9F'8"vpǶx1;ft&$ p;| (i{zCi`*'m FfC F4;9u1o- y/â#M~d9Mǎ9cA "Ұ9@t(Y +p)stS UKj ~p! x@&P d`@FP`r]vk@1#@?0+e ;"ಃЇ6! Da p,N +vA;.xc=G1 $ =\y*G'>@sH6@c,0bC ɩ9iL s(r/t(f" V@YaOA$: )CAt$ZA!) ,!І KG&K`S$f1yLd&i0-Igʞ2yMlfSf7MpsCsSdg;NxSxЎ\@P9OT%hA zP&ngY:PFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]3Box{ʖeNACR` g*}^WBr/zߧ 3-XDz8@cG.0 ca%xcyq&au Q*fALb3mrBh ` 9]a~a/ZK&@AfKb#j0@U v;QMɰ,O]EyR{!S:nȸbl|_aX[G$_D'!x` 8pd + 0\2tw1 :Іx|"8V(Yp1BS NH X֌ baLt 4̓́cNOp]K 8~(wS!l (ͱ@M95[ZM gV҉|TBNу9|"t/&N48yTз,xІ}`AB<Ԍ~3K @$8Tٱ4cсG  ;kT@B=T1S@SkD7=B +/с" J%xX4! @8Ղ( } |KHԄVD@~x($Wy5&es36ه8 @ؓp |UJ;~X tDZ@IЉ8Q@ᲁA %ʰ уr_]3zY2ےyԱYCȘ;Yt_١N>^֘|P$+xQa ¸:&v a)s_P[gik7 <8^ !E (c XQ! &ާLbӔ_xА#Z<( +^bc@}؇C amfل="S>ޚ}\e٩MXY^Cұ8Q0d AYdÀixeU}Al|؇HA:8E !` z6?pɮ9Dȋ1հ q^mtqɷ8 2"v0֚ɛQ AI9pY;`y~hҍdE̹α)}VaԐJl!!0i[;ayXSyp;)pimiპFfmQK^!R̂^ 9! Ȅ/d1"#3=Xι\Ƹ18FؖKb 8יțp xd7Qy@DG Ioq{l #CLOΑx gI߁g 4aUx K1/ !*E"%ղx"}F5] ty RHx SZ*3J5:6wH"A"$̣Y8'շ'0XzDLx !iNtEG(iJ& 2Lujtn&UEtN':&@]vm2`PɷNuX?&}_…UY`plnoꧥuAZ]ub/vd P@KWu&T/P Hcvlvmvnvovpwqwr/ws?wtO ȁyĎfgz{?|O}~Ww Y`T`oD @mx ual+3xcȍGײm-ܸrҭk.޼zw/ rp`.6Cw5>. B;!,K\P̀x=N@灁@FDB !l nM7"FYq,'9]){ dOн:]@|I1M&| Ђwb>]D߃+I׆u%XdsMWH a!5x#9#=#0]E%iP85YPQ;>cALf@ Dd'@-0 BX7@"C?lfM3Ń3AO>?ċ> MYeJCPYpL&|BXУ*x}ԚsAMcQDe:z:!iGzWeSDVRC*( kNƺ-z-;n§3BD[ 80><`IEP.ES@~4B#@G #D{7$C ;<;3A#{@0u(s @KO#غ;L=xA7C$¬Pٓ |@+ Aetp41:D'K#Ac!\)'S. /=Pn>'ēATmIH [1Hwq"׊:@ORv?c qNRXo~?HsDX @dXB6})7&2A攪jYۚ}@b _ Eʤm$%9rϋ >&Xx>Vu)< o G#.bMu?8A q#1d04tP Їi`xLh=؁bpBA tG?ʄ=` y`0ƋC:>6iU$IGUN@!lّ ` sІ+`B]A}L`}#*s)N~2a6с9% ; 4)汏e-AK|@E0eј $><̣CFl4qA8:PLbHqe$ >X68Q)%-m9ԍY̆"St&4IMfSyHQ]Ae<4\[LUL`eQ~x`Y|֘Ft#c.PbV_" eC#w H;%#0be^.A脍ƝV>P y6WNqZ4M2xDs (ӟ膝&I'~50&t }tV%ݯ?wyفKF>2}n)ײ(|kBG JgnBQhQ\XA% |dAz"4鈇]$ePu4$4?\ ħC&02G#tHʋ>4nCc Ab4E(i O6@ "tRG3g)K~M̂@ NV tڶ0rb`VAR'x`` gpa @?0 wzȆ:gbq7F@@b2K5K? 1P(WL'O 1z^ zԵ}'78 ӽEq<qq |BӜFnnf\  Aj=ȩ@^8C@$Z &_2/SGi aGŤ6AÕ?`g*W@tNT8q :J I_Yq<8@_\RMt6`Zd?|>@pTF dC D@1ͽO>LEEQH)BA ADё`1tY[q_ D-FsAJ҈"9OFc|}tNWYD$8CD@ }`蚆 b>\F\"ŧ] : D ʙׅ*b,LG x,,2Fn1$M֤M$NA pHԳPVDna@4A3É%>Uq}Ҭ;ă :<zԛhH?AT*9RFZY`!1O h"H <ROKh<\\N?p):VDGC DfJ^+!7}ĊD fZi>x2 BiL>6Ae.4FPv܊T1 (#B)S%Me>T2 ?d%RtAF0DtDsT ,T< AМ׸H<@i_tWDD{n<&Da:`&x>GyR"? ]&ʸg19aD2dCKJ&H (} Ĭe^b^D Unh׈mA@X\ֱQđeQ%B葞(Qqqx'IKx>iN)NI*@_y\KMP.t WI ăw@,Jc\ >ShF f@0E :fGTbE z6 &DSA0H`%k8$ 4))mĵĐ4;0*a`> VB 'a;%ĂKEX32*-RF@"/3]@:?[>TI:D:|?= øD,*hC ,?.NL%NDB*cJgF8jý2F,>TXF3A'"&(YĬ ԉ%2-=. DK+JZ<\@fCˊw D&NRE6꽇q&z.2Gl@D}li9=,?.n$F-:|?@R/@*RqFA,XelAdX:eGx\ƆWvD)J$@`.?oTDA  D#1`f(/`>~rICTL? ӎ&" F C&þ,F3\DX|pʞ,;A&b,@0LoAyJ:mOF"hME؆'OpCMD #p&ADP%$P>@"Jh/|A W*rw|=:K8}õ 63?34Gs_XX.V."VD"2@h\>Y 0h ^@?(wȣ>,1JR+F06da>Y Ϊ;G4(0@>|qG$)h:,+B3?w5k?dKµɤdC)!S;ΥP6ȤxbC<0H&h2<'yõo}mt`<Jõam)å9I3=2Kd(vHFT>hCWB))lWށf@{^EPHa@JGd5zT"ps"hZĶ@DPVxAT=w>ǜ9*gvPn`7F4CIC Ha3Ƞpps]'/^tʼn6@V+.4O8WK3dH
̚(e"H$@s4kDxILLZGx <@C+fu~@|`@aa&#B['@VYz,uܯLtfkaiBjC9L CS WW@ d/:;`CQbRca9U$9FH@TW'ԬT4<>\e'zaêM1BBߑ'9SӍV- _wr <4E^*>z>C(-qBD{ B?Lc=В1- AVԗ,'tq@ax 8{Qó>X:h}hhBY(Cny]d<@;@cHq,A@8,CBil=ȂنAHT1K 8D0ìf"v KTpH,]Bxu"Ot|xx?v=@zç-!yp$x 0<Ez8~lO"y1je k C~^`1(CSy9 p|_M)~Bd" OJ-3 2Wd[8G < NX@`3@t+.f es~%uMp̔HW{g e}b[& vC(<:z"BȪyC0o[( %$h`8Ae3@"곏5}Vҧ;`*iX`CO=G@HJy" bG&""ekG APD,zǺ{*ag,dj0.t)!!l=j86DQ܈*@+x+&qs⸚34Z' !11.8΁:lK%!I6D91d]f}hjlݖnpZҠXxP @E ݗ~(/l}^~%-5ޘғ\/Z -p f$1`|:g-gМ}dQ碍>餕^馝~ꨥ1¥ڼ$yWS&xZvޛ[ٶ3@`T_i9 IYrv6rGq3EM?U_]emuߝ}?_襟ꭿߞSox|?_?Yz0cx|n?S\~i&-$~z}NNp~d9A~mTR!t,@Z D% tu~0Y[͵DHB!ÁZإ.ҍw̐ZB2P[ HK옇⁏I"&FHBb QG 3 d х>fQ`J"Ap;&5t 9?)EV|AD!H *`ỹ2A' dHH;,,;=̥RڇJ!a%:\ F.*MB~8>,qQ?*~%\5e˜T';3~RͺA " e~:VqbcA>Ҷ'XF̢A)h& =΂|)MSAGJ#jLVSe!(JPYz/^bFERUQ= e(o0h1&!&Xή޵INuRA1J%Q(j*;~3=Bd)[Y1*{61$\bQ|[a7X/Gx2VZTK0%A2. q h|Nq܁0.*Ry@[_hhI;c+@ ( Iq%4d!t-(}r_Gꗿ)/XJ1!!PFq'&ɂ̎]/A׉6Z@]CJI汏;Ŗ">⡜ώC<0 C8ģ^;遄z 1?PHE8>@1 N(<6sN$zіX`)@l"[Ԥxqy$| S; $0W:0`Њf'^ބnbjl1^ {!u08Rf@#@0U5IBns w8Q`#A.Q dSqZ\D`kc0B $ؘKW5rtDGLg.B6/t /ɀjץB(wAS֕&8}q$ G409~h#Iv6!}b>!`L/h $EDvz!v@%8B!ʢ ق+6@:@G Ʀ*vfP#c r@ [&Ǣ`1C>Dpa!R a.2Ep H靦O"С"!:, `?d١,# aK8' r O 8@8\#A n:?׆*A+>ϣC@(>b灷Hk0nȮ&YOQ *a j:OD.#`  qRC*'eKSq/4C,q`B.HEP( %.`"̈:Aa ;:UhU" ƠbeŞbѥP`A5B"# . E!B&:dY(I*ҊH+PQ , 8#r nTJV X31XO\7k FjғpY AV@ ' rwc{7{ *["!p[K za) C%@j%q8Jn&tv$!CepPʣGcON@4Z!+{X0 :BA]QE8T**aAv0[_4x 3#Z!K"lnX"v u l"W{_cS$rm 5x5 غ-|h h!DS C8(Up0ADuIb`ax~?B>tVH>XʨLa &@lwa}H-]T6~K -u$A$!g"la P2S?a l&q$wY)ڢ75T^2N:`v"؁СSn$rHHV:N  - "ePB&`O`:LN/:z:aU8 0@*.B@&vaN+ +boO ~/uO&Vn8unъ`ִAAZ>B4`25Q%9$v$z Ġr7‘ ܺ  @Ea$ c)|%R:#&A 6>բ6PGCM% cTJA&<xQ;'549$$\H4">j5d1|ylABJa.lw1$ +09OtJ& 2[g= \“!}oa|6:=@`Cda@_j<&`P\ $ AxRCd:X]U"|YUЁƕZDjIQxm (@a%yCkőG $H6 `=E>PqD[%D{BOkogfՔ{vw|=׃]؇؋|Ht mGٍٟڣbeŽyڥ]۷ۻݲ|@ .|]wܽ]4 }ܝw]^ ^xOY(g$1w(f,0?C>ൈHlHYE$JyǏPs^w} ɛ8fadBUy^꟝g| [(~7Y*[u`ڪ#&XS&E{>z2/b-KvqDL~̹,cZ B0h lBku`L9287[GH`+P5,_K~_+@Tއ ? ޤS] VX"g?m?!w|>T_g/b7](F;?`O i#A<,7BAQNّFёI4X3<$჈?!Fm@@2;鏤6*$$G"cC$"͇^;>lUPhs.GrA'2#Ȳ9[hGsJs`u?tX(O#Ƅ4d";19"K;:MQ#Oh<^Y0# Gb%{ l#F!͇?8y#4ߑR6L/~GR( ! gGrt}Au,jq\F(C" L&T'v|aR۲*=n(4.@~R]T81JCr$ᘽ9d(A#o$(|@'Tď\2YkkiIGmF" }+J $?2O# ȽEъ\G 8#$Af8 @!t V|s? Ѐ vVAc yGƸL "Јb.d0nťE@11-`S#Du'C ;,PK$)?|zSuOU!Wڈm|!iҟFrq)ib98T ~ (El(mc JvlA'_)L@.Ⱶ[GØ˨?P}2ble"Rca>L&qAf^&s82 kGKŀ#;y8$HDqؘ,R }H926l(X #:Ϟ2ta3<c;y#j@OK~G8xT 3PС{~/Oԫ^_>2]AAe~qfA}Mpa oKZ>p- X/u/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hhȉu{@X8hR<H~'LbŠ+h+3@?1Ÿzx͈V4F |5ٸԍ5v q#^!dV`(}(x8Vr)1 @y1`:7A y= X<m!IY6/8;C/Esw>=EDLH\(NaUrB(}B҃u TGna900P R X)›uAV1!{bii* fi+#>\&at)P 1g'ODpB9!I#Pj* ʠCY>jp}ɝy<F:Y'ȴ2(%P!(A?IZCUZ#%z>d)@ 1__p*6љ="!,i)i(ٝvڛ)CK:Tjv0 J%hYSڣupbPe#ګlO^XZZ aq$!8JYL󀩔A婳g3s ] !-6_ 6ڡw{*!j,10% lma%pVb &*! A"0T bq1sd:=#v&a3۱brbX#AqRNpVN!Y{`t &[kq9{P<> &&Q  @,[ ˰ 2(;m[o[e@jhMRLl[#!cj!;!kB3‘7#`&H`qo_1"!!QGR;ػKR"J{ѹa u-k 4K<鑸!u|1v8!8V !2+VPh(3x;k5:VkeQjW0\-2.i3Ph:+ .0,hb 0hh !Ǽ Bp >ŸC,00$Šb ]+TG[WP-,,0'T(((C:r&` l; {+W%+b$/q-Q QނJf"xW\|!Q &<5kV2-5m@P# Eb E3nt_uɁn<))Vf\A] lj@.L)p rB9@]  !˹r >RpăxKL>sWü%]¸|}b*%\-a}q-̀s:ʣ!$cԒY]oyBԅU:#1}Sztf2d#G% L_pN,8!J me77$4mE]7H2zfdjyl+7}E`7M۪ŭ%֐ƯM!:˳b9۝Όz)~s^pipnQᇔuK؊M~p+L]7 87㾷 K37W3vDLLb Z{x1`C(pHTOG"rpDqDs*BB!ݳ0rKpCD3!=(Q ?$@B;p'tB=|.bNp.UB咞淒#$"sTu_fWʄ1í 6c>+w.@!V= 2$#QZ-D(P7&%?7GTș=ۣ&=` 0909= &@%&p~B(wnR.O Q 8[N7i<X\/OzH ?N擄xD%@|NO1gK 9%f@޺jՊIK@-GHJ;M҄D ?$q9 <УG)U;3tJ@$Hk?N>r&: D/޴5qEqO4j`jP%fd$K]% Li_J7JSn_ д: 5~BH Ppja/ 0~9JҔ)/^N<|?v.׉ XA| ( K'`Es.AAv.8xlbdi#R)EtTCb?tܘFK~VXe͞EVZmݾW\uśW^}̷S+HO:"ϒj<7`>A>LXe>&?C,V 0YuDzDrԥ(-j@*(/'ٴ?+=T-_ .GN<$pAB3<@QH: 71L*1J;6t܃0~l#  Ssd:PC BXg UD,> "o  z,J.1xmn-GPp?0<.=t(~NTT0!S)~+@jt7tY++c Z%2Lt3 V[o5W]wW_6Xa%XO1eY1AgPg$* XC /}Ԡ ѧ' *`ǂ  `|zl4(OG1G zDPx8 zdT>^xן~d F[2/l6cw83ʈ>7ߖ׶x |V~R'u}w?ƀ-ɹ{^X }R1€Cn`t\) S#r!$ d~')*; ʶZx,Wik!i5D/,M/pt&?]xsA]6 vT})Ű7,h ] Lڈ,4#zwy ΠYk֫}]AtokB`@6Ё`%8A PVb>?Eeq3 a@<u" 8>0`6"B> BԼ#0<Lep~Ȣ:q}TWQxjƎC:00FvC:R1>؇xD@"AHaՁ!81v( ;1GMBbtdȰLaUz͉g>tZAvֳmhE;ZҖִa|؆d.CI `]` Kd "|C'W4 hcGC0@e'0Poh#[!е vW E:WQytY<6 @<`6E9xy3:F%Xܚ l^zȂ'mDx[9J<@JXt{cc(}4 j؁$Ž4p7,40 h^ KUҸ)6HJhSpv|; 6j3/GOgST9p!- P[,͹qv4 &W?Hu~Y_?.9,Kنq@khr:_xCk:l ?pFgӗK{էx>pGx }+ >ZOx5qw]hrs<%Qr/ye>s7mq+?zЅ>t#7z҇rMzԥ>uWWzֵuw_{>vgG{վvo{>ww{w|ϗqʥG|x7 xq Ç $"yʯkzȗG}UzJ0yg?{t Y?|G~Ž*%>MS >Bq+?~VFY41L@ 6\2E r$@8 ^h t8@Aற  G ~`G3qb81؇7x g x3 z()  `?(LDBHBT.@%&x.p+F1B |G`@A$Dֳ‡0)4Yv=YK;K;1"!‚@y`bp~% ؇ Ȗ É̀}s2 Q,łr`X(xŨYLy(c4@e$ExlDBTudvtǸk,3/LA:|P#Ay`$1zyt'  0` 3Hanz3.`A#x(_+ 1xɘ|twʨʩJ p^<p#Ce ("/0pïls#p a*!v¢% ̧PH˝x' tKxcCۨ ̯DTՄӑ s92T ~XȈ(ۺ@b۰@QJ҇ M|1 ĒIdtOcPw8ƂYp`tZψNˈ` x | ?(NxU.QO!< BP'!4=c@J5|(S\ A)E f 1xcH;N9PU}QD ]^UO;l|҇.h S'H0h#;* 8X(ŁJ1"|t89+~i9fhir2/!R~%v ׂ!:y2s2Xv-bn`_%ْ5ٓ=>1Ї9yp;"ǂPx6:K9?Kǂ6q[4Hh7] ' 0 Yŭc-w6Z[!.j Dh5%EU5-HRƅȕɥZ1\%5EUeuׅؕ٥ڵ%5EUeu%5EUeu&6FVfv &6FVfa gJ/谋v vgjg;ڃ!`V%\0< [纭~Xp@S04Vc2- AP#b ~%Y`CFd͒P|(\"9'&: hC00Ŕ dȺYÇ7n@x.X (T!'‡=؇YOxD6cFYBp$ 9ic kMffI È eVX p sE}; RoN7L@:XC3a] fh. 6U [d gf`.痆i̒nL_x"(B}i.d:p\ '@xPȖOx+Tj鷆wTiLC0kXl !"=''tlLl@ } g1!"q츆D " 8IpLDЅVx"Co.mn&nNL\ ,a%h⼊Fg[/o\.hh-9on"¨SoG+H=1bil( EDT/ʠ'?iNV-j@ȍ`5Y>}!# GYЈ;o w8ͱ%;1)wig6WV`p&xv` 9 ;J=gp8q́Itx}kIsNtsM jfU@&OmȞ?a|X~YF+̞fPY 6 䆭=Vk %ShvƃsxyJCفT(oꀱD Ȟ 0yhܑBzlxo 0`>8Bֆ<ohA|hoi(E, i4UVqu~qvרL U hKYYseaVhHpRŏ-xd̆@%R (zkKz ou_f鐀b ȀDvE40%{bK9 /g,_0to;ȗk9RE͎;B3#;Ax%JWgw<٧ڷ'7GWgw'7GWgw'p "Lp!ÆB(q"Ŋ/b̨q#ǎ? )r$ɒ&OLr%˖._Œ)s&͚6o̩s'Ϟ> *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy|o=s- v@ _-{6À xHwpą3ąoY>]g#>1y-~<.w} 8घ Yrh X|>G}A_<MsA7tN<`E"G$&dbJ.H uA!أ?`O~=1 6A`ECQOjΔUB=}w;X;2Қm4Aoi钝Р)yО}%@?g FKriE@?QjA6ān3 Tj)<@ꐭ;6iB0R:={g @{>1&<⺛DLPe.Ф'N]lp&BW$oB&( .TL KDr )[-;|H˯SS]eC]K)h:H ܍v|@;;(O*ُt%>~ >E^zm,; x%eBl$H|Ѐ5Btn;' nwR"#b ǹ$*iKb/A91xL` N[q*k>5##!eсyd! i BǥӘT&AyxAmj*J,. DŽG<2>`te;x\DM><ó Qv`G1 D %0ֱL2 @P;A $:/p@ ||І  Ĥ(CQL]y4ɀY4]Ԇ9b3UYѺ͋M:bt^>ϒ4+Ka*S $sAe3RĖ43}'Nuj*QTzTؚ/w*ܼW |NQxþ!񈇖67#q@'}@ )Xa~h#kBR! ‰́, $1-a=";!ڀ eܭՊ,F\9fӲ@;< _  .rt-6^8,GV;@g| HB >ưIyOV7# b.B+ڜ֍mz!{ǎSPrvD] ĿzpFзN7`?c5@ @= v8 nPpbv%:A{! PsR': Vr݃\Ɏ \ m|pQqLhha@Hhcb,Zb@a>@gQ4  z.HU9\zI:Arcn~AR7Qy!gw{ HU:r \z_7g v48/N=iZ ou/ƍΆ``K>M/HΡC=@v%ԎqLBă6\ CL, UÁ6Bj| KݞAP@`MC4a^QRU@8e^xAA\E 9g:C̃x,LEٝdaEܕCu Z5Š bG !:ja"U nNŃ H a aD\VݬGAy:|{A<"]bÃBKD?,vh> AADc`X56j>pBc==V >>@Mb?$=C CܙMQC>CLڝXbBtcA4DL<ldA06׌\Bv?DX\?L B#֝;Cָ aA|6LޔM+ R @RɐT T]iC @?pPd?LZ_Ja!XR'##BgLCMdN D@(iIQ3~@|w)%Id->D ]|?,8A:BHݹ6z:@,e>b>%Bk@$DO<uPd?4 A@$g s!>gyybB|Gb#%@Ѐ, D|C&8D> ͌pH ]4DAZD蓒D@7<@):U C ecÕx\Y]iYsX>[[ Ü +:8lCW*6ЌuDĹ2m|a +Ax, i+ Ǟ,ˎ-IH :@VRĩlrӺ.;LC >L>yڄ`il >px:|~k"*oK .ح® ADj>pv--  ;`2 /B`,;DAG$Y7>J! >TI2,!/>HC$DW4|*=@Nd> X6D(Dх f%!(@2*ɕe%=(SBM@4Z(Nȕ˕>epIN4߾;A0CN ؁2M1Exbea@pMI KXDM`n~M KYv)[p2J0Oj!:hqzAQ hp0;1^/ISCXN>܁M?,?./ԟѯ@8 F, > @4?>3132zM@-4Nh83l, d~#W̃pX#NH@F.D>|`kO>SK:?Z1 uQFMUe?ph1'4RG(64p6hzx5;uPz4H6\&@vBH!,tqyk5(Rf;ͤwC eT4bIt>??0` J 6pw{m峋"Pl9w8FcHOTp@# <n^x cUU0:|NQjݼ[#I.DHn@vA1/@tC5:0 < 2M `@;lItalz }@HB@=@@8FX;JqɄ5P0`Q>@r}.þ;̷| lC06vD A,P'Oơ^ t vLxGe<:7?@lx ذبdϪLڐAM@R#!If'@X7`A&TaC!F8bE1fԸcC.`@aN@<  @]e]Çx#r|qE{gpwBp]@]7؀!Z9`g)Dbƪa h} 8P3J;@G6P~: 4h0P 9A QI,7dǀN G)`x|`ة` )Ƃ z Hx4H*8@P,3K;`Cg*E,}x ix;(;4Hb`gA } UQI-SQMUUYmA1;CL' 9YJD˟ t%dڅ*toM'K[?}("@9` |B)`gF hW)1X19-Qh !E@v6hJ'@4bWxṂr} h㣑vlxV X}鳦 bΊڧ!@ Aw~ @aʧ!nEhx.V :-\ /Od*GWVQ@(; Gt~<4 Cs(HxP@+~9!ag b]zG@pyjc1w m8|ɃQ~eH]_TX?h%!X@B4ߡ|P!%!yA? ^]^Ar|:r!.T|j%Ç⁳SX  exP ?$ .MtAStoȧ@!J#ȗR}hc>uDؖ*!m\Gt=1 7qDKi 8 # "y K7WKvL ҍ Z2JUt+!$@YaJխvE8)xS:!ϐ!`{--%"1,ɉ1b#Gvv^ x |p'@&zB=@ ) nuC쏳qIZ6T>d" 1qh|zޖ!@ By  B !tA`ub'z HLis,p q ./"ЁBlkk Xڧ0Qv#!FJ%)Rpf'""AP WR2  aVe$O V`)R Ј sru"3Tm A Fa,.RAD/93=\, <"4M!d &*Hr#,J(p1,d|!*`&&#gJV›m  sF3D.ʆ.)>@J2F\Gk ?s=ٳ=KNA7.wh nʗ#?B^,l.ځ2 dzJcd֒dH7*73jc!ri4>=!,%B: #b +RZ|p$j`chf $A|'F lCF:5j@I",`HNAHP)R-R15S5uS9S=SA5TEuTITMTQ5UUuUYU]Ua5VeuViVmVq5WuuWyW}W5XUbT,fXuY3خX%7/tdZU(jD!DL/?[\ d!PB:J,u" o!)95\ `Sl/sGШEڐKB2bq_UV`IdG, %Cu"*"lP)"|"Ď!)HӍLh h.B@=_)"@A$g W)2lV^#<r@S+`wF@Pb(Sx@CRV&vUE`;x(~n\ FE|$,%+RlI,txn^#.OZ w׼o &oVp.F i*!"c|fjajOvL.8Lo6`-gIR&@PdJn ;sZFNFNij F``M& 2%* $uAxPxD›@(7DLfEVj"ow aAPZ:("-Q0XM 7lO&2R6 d-!FxiٶE).}nʦ=c*`nl`_ff,aw!df`Fxg.Xcӡ t!->E Aceiuv9M6@0s.g @l 9aAQj|wֹ !.v`ttPGuXǙҠbBC͗I/0kAnYً 2[}Z-ŗq)م,Cxl_!7KlKt ,'hޞ h@a 4. b1 B6_Dlvr~:Bӓ%HD|PbR @{ !ky]%I0%6^(g[fz%&Y j( bw.`Y hbΚdeY-`c 8jp8As VШ,z՚Zd =QA]1Iqqή) 4'ԡŅZ', ),,F VB& 4BtD+@ O\M?Mn+z Zvsa:IėN .dIx١] ;Ϧ=زc=p FB#:O[ 6Ǜʙgb?Abtjа곣B4l!+Ҋ@ |霹@@<|M=} =}!=%})-1=5}SɹSXI¬U0U#,BØmHs bsW>%r=H ~uvOYhWon7!JXb|1~;N}G}WLx=G/~0A}Kψ6~y7.:Fq/yQ!FZO& X)؂eo'4x;i҅ y a#p *ۢ[, ;#qN ?#g! D5Oy%ĸ "y ˇ!']# x4jD_U8(S H: ٘paCt]Gqx9}@@T.;x OFtMQ)IRSKٳhӪ]˶۷p(R Lo-KÈ+^̸ǐ#KL˘3k̹ϠCX@]xzc^((VWsK4FbO)DcT?vTgW=΀pZVa飤Dq?;{ qj衈&袌6裐F*Zē\զ"UD =6OϥjKؘ隟m2V>՜iO< :} J (7q AJL ?+ک| kF0: C<pP$PbP A?H(E<kgd6r:URNXg\w`͠is$BnF;(9ZkCTf`t6DO]zʝ@j poDu y$ >y c>1A<P7Lэ}UbOڔ~"< V:AWogw?ũ)@mN@q< N?̳1;@.oS3ԧ4@n71̃G :%nmJ& <-@؆PM>pABps’,KHL&:P"@IX̢.z`0hL6GH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIR򔨌S9U+gIZm@0*ɕetK $*>YTAK)u̦6!)A$ɗqc{b~tQ8ɖn,&De*{@GB$F: ܦD'JъqteET<M`,G((S;̃@<1Б2uyZi*) @,Ԧ:[ ɢ $a>*ǀ e!\d@ VKq1Y|XZ>^׾ . XZ!SL 9#eXP Y8G e1M~:0-NQVtcyms`6:5C€wЯOЎ?̄}pb?\n #C 2xc ;@ԆD ;(":ہ` KS wTe+#蘀,Gob)H24os|U`jwx4p nZ mXS҈j6KmHQL9$T;}B8DZ&Jlm@W.#**q y1T8W%[R;S}UbM.G+( p b&',j!i>."j(-"12#xUUpio`@ƃ1gBGeK_ @:aAX _'}'{#JX8KAR@qU0-耆jU&  OAp ?"RbY A@TtC'LHoQ)W_RFьucp,VKI1OcUV"O4.rxvBKX* P "JV| h5ǂi6K%mvSb ;LsN;x8 (;!oZ<DB@΃;#`*9$ZZ)ApVDc@jP|Bi/K I>>k  cԗ ?X52aE*ʢp ( YpOCI)*R>"c+ & >&#1ظX&;梤(0NWod224X#1Ї@  DŢ Dij( ت0ʫzZQ @:ìZڭ*0ZzZR!*:Zڤ*p `گI{Tr K㨰;DL}R% QM[&k \3 1Oav'!t5:K%`xRTKL۴ʓ509@BdUx @`JPhqoabb n#ZЍS`0 -bSB=bbp,b0&|pcf|eW0;q6g98F;Ovvl^l2;*j)1lalȦl0yle̛Z @3+)|bMC743Y u' a iAYI' 6мYR'TGBf(up U[  ,X&Ni {P7@+wη})"T'6vV:=4‰q80> hB<Ĥ$ ؠ|l*|'0nvdDĆmy'yŠR(b<ƥR]IpmW'Ї?‘6L d rI23dž|ȑt\#*a!w {N|@&T0G3N)v0414P&B5Vħ<˴G!0e(`S0Bp `&q81"<'vB R;~, `|_ȳ<=vQ\G# sc' |>SZ5-:(p 11V0C ||";C?DCEяѡAE+&}ҍd4ҝ1F2={$L~0Jӓ<@Gua"#`"AJLNPR=T]V}XZ\Չҹq"`;BWbnaȕ^LwjM ׆}Ӻa(t+7E=eA¢fQP@N 1a\b J@ӎ), 䄷 BΈ}I5g'@kwbR {dq!%'LPȋʳaZf+@1 vRL!.(j.BlJgXpV7ChևAJ U"u@4 M~-:%*^oA&_K[H;{`5R[CPu`[$c_WiC:L˕66KȠm1'@n3#Oy@,=}3 $a 0Rӻ3ppMH_)' Tjyh^+gt]KkqӺvG~^ӎl?0;8(JdWdef}:1:Xf2WYbqPc#F(.;JWwH-u[lc` u.(,.dQdvlg7l[t"QP:/Z5)m<7n4wrQ%'zmqiށ-uW0%㛸I[  0J}9>6  FInˮyys^drw#7HB3Ӱ0(!|,؊Vh䃦}9G֋Ҁ4X|;b|0''<) ȀncQ;X:ȩ1f, !Hw~|& 7pxw ?С7!ޗw}xKiA?t=8D9uOA%ZT~5 '@k7:WSrjYiծe[qΥ[]y_&\ذ/SAA+:Kܜ_׌Э{(A|2S TУK~ȔǫIS+!xWy ̡!|OM W}oC<ڇϧN[WԖ%ª>jCǿo V">tA#pB +B 3pC;,lt{13(|>(=lŎ c@@X3H}(t8FǛZ3xy Bء ::@ɠJ"xD Ȃ GLB)3T+eiK]C@f%!APƎ36QDxK@BËNjUzUV g4(uzš*>e@ 8V9偉`WVH<9(i}MZy*'Qbsk8x(j%miMkw FKYy1 P&ТP>F%nq;J$F8vE2P|NcTvvh!-Mw1 89=B~#@GDKA*|`GX³3r`:CG yTMA$v#v/3cjTCr <:6K):_Y8'I!uѵҐ;txc-Yc&3 ۏƣ0 5Cq\IE:ЀT bH0Q1nLHb8 0mzz8-c @.3`RZիfa`,@&Jlc  m9Q@jdh=Unqh@~BȀkN;Vk}nt[-=ʕP7(|1A$paSwgƷAo'!Gr xhc跕n/=qc°6kdD ?t D7 p&W9IȊobc'vb|1@B\KWz׽ᐠ96HrV呗& Q B~(Z-lZAm6-N)u:xu6J]Yn< =>ZSU9ղȋfGD2j +c#|7ݱuAc7W>||Vz*ml ҍԔm2lذCJnD OH>v)<@ @s<9Ȩ ʢ )"aׁv]ʀهP2P A90@apY@(+x*cB*B+<>?$ '+ C1C2D>M$ Pz)C7|C8ï%\ V`[C=C>C%0CADB,DCvhh 'Йx v '0?/j ԹLʴLS7th&d 22-;Q|NDסЙ2J(,)Q l'PT~qɇeȻч(F{?A17Б85 8 .NS<5 N-1上Mg|1İ0Btx ~Sdˀ. }&E7xOxќb   HW1 p#:$T7h!m4Q8+ Q}8GJ[{Vm lى*ci<:MԨҕTST8 ! *Ԁ}9UY=Ї`_+᠓ KH9@ fl5*T_`V9j_||PYW{,  2)]h0> `O@+n 0!ۊ! 5\U7՟!y,0}Mӻ^=') `x-(mX@NZ ؂b$Nb%^b&nb'~b(b)b*b+b,nb.b//>c4N'(nx-8cċ:Vc>·=؇橬" !h]A\2ɜ>+Nl n߀y/[ !2(7䍉>8xb uXu`g+ʫ ZP+ȁC5_ʨ y4K|h%m~'و@ଁɜg_%4}y7O @%zx$ 14}LF/0c}t?F-9X}o~0G$ڇ 0~~~~~/?s{ۙC5 dex_ K*'w|,XP!T诡ÂءH"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:wS: (җ_KI BԑUf! e]t-k#cFÇN_?g/.l0Ċ@:CW ~6s^v!P F;]ڠ}kR9mA.'(Av |7"]Z ވx-c;. x@ϧ^^'}L|BE@w@TR<A # #$Pc>F9P>p>ڠZBfX >BF ȩ gN9"lQ1bP\ ? qC*D9.(9f{!@#>t  D@<*骻..;m)N9|>#jG,P>p6A~#@q脪Ou33iBМ(@d2 ƃCP NP$C=LG<ăhA?;hOC~1?;,2*G$0 F ҫ++IoQ}$ =WP-O~B+ƾ?؇Ā6МjzJAC*?`|!74)7xZ4g!GAFu C(&<5CP"@~c a (~ \yC CG2(%D谏 8ipx aCÎ #A`t@,> l cb~c 2h] R CC :5)@0`   b ئ^@t $7jΊ0`)6QXjv,1dC!P*ԡF=Lޡ +dbc4 70;AH?Џ pAVWUt\U"Z*7Etl]EXhƐELv4c7 y 2}2!qHz1Ha@gXP`$cr? ЧhFJAP -:=H0c3 QN S І넄D9r-:R1l E@dޞ}SA6 p}Xi@9Wd@bЬ l^*yA'K`G cbsX !M>h&ǹ1@ۑz7n;.w(u Z},}  vp@?: "q&" Kp"{P1ލ.! 1ixRP^||ІB"u<M,;#kޠXm1!wD|wCdTf4)5@8%鏴-IG3U PIAС ̧9؏A__F:!q @C@E)`<EC u@\Yw$D Hl}4D :a>h2,@C<@?C|QYCEĦTA8  :̝~!! (M?h]>|KmDV T ɄKt:HaFaa"MĪۡhqS\|<, T8V+ì[O>HpAŏdo:u"B?F qK8eU}LA(D*0?hF)bADDLc2"6bPA Nf`UC#Lh>:nC< AA,=`B4!)=bHa<<'AXKd&AFDDc$<o uCDq\>aPMEʼn>? ڷ@b<]:C}\#(6I -CTB^p^w pAe/0*r VgA.CdD=2@TilFu*PC < Uj@ DD JBq]hC) E qt GMf:L\(DT ^*@~֪**ܽpE>dGD`< AXo@\WRakTmlf1PP8CCe\l+Cd/„@DOZC' P6\iBXh Li#+n @p(yY_Z@v(:kxB0@A rh@QfD`V[ |@X&6)AaCnT@BCh 5l?d@- D41Ӧ?D=?@ D\"wfBT>hB79&V"o9bBX:Z5 E!h]X\B$A(M7pF*fn.. C;쉣C|CZ,ʈڄ%@$@3%ottA–z ׊>psZLt: z>nlnAX@\"; @0Uv.))2*!AP] |A\ZTCH@1ld1.muoS3,''3ƫ? +@ ^X?XrDP`@eX<Xf`ĒjaCF\2CV'dO6eWeScqnIr C{dc :\6lǶl6mӋop < T)uJ4(WƲ3:YjmGtO7u*sWwDfXjWuc7yy7zx߈I?L:$Cdqw7~~7788'/87?8GO8W_8go8e")zWYLxH8I(^8xbBGxP[D̸xx PAbR4EI\7P9goycGFdTf$gijxDk!4q@DmFnVoFp G Gr|C4sClJK'GGXuL@v OS*\k>L?E0σÚ8 yan$=l*I$X>(*LyVȅ`pȱHHD6GO\4Aنɑ$ɒh@X tĖtɸ\Mpe{+,  >ľtgp|GhRa4VIGb"}:bp|eCrr t/u)ɛqL@ۆUX ndl4˳Tc9;X t E?(_=g$"^˾ ~ < <Ç@(>GxP @@T]&J>8\=fīnDGYCGeNz]>ăel|J`nĬN~ :߼@E7Ҁ, _~9+'[M\%zwG:oăQMA UHMo?wMVNBto<-ă@xY2Gp D>NXE`p?x>t'GcF1F!E$Yrcȓ(Y+'D<ءN<-5zx?A]d o(x F`FU̷iFE˦uk@t0]/qZ8) ^E]Et" l B?}y`*)TYvvlٳi׶}wnݻyxpÉ79%iۄ}(B^~%w,i1dFй#>tBQ 4yG҇8a2>v)Z@~PgK}Ј "NvHd#ܑ| Ba;(N8{}* y 'd'/HJgx))-EZJ18@ *w:'}IؙmQg8uQnF(N{> gd+<8 1֡0>*YB|Y*{/vS1`v չx4ʠ̞@ x|pGccI8 Atl"z\ ` I@MxgKU~aXZV`k"Eع̈́z(JsB.}D1]rO*Sp$(C(9'[n رE+ 1[= PrXԅKSCB@LR`"c 8ItʴCq h\f3iV'XM 7%/K48f^PN,ûxAs£Y6mxB B4%F$ YhS}z#lxJܫ*"l;j_^=%[1‰AAXvP>Hm͇KJ`}xPZ( b| ޟq6ho? ]9qH*m ܉@vk>;1b# >B$"t@r5,3׾whEQӰ ē@cr#8 !\u_Yֹ>9NH47_HR'rM$v^X87?֝ 3}AT #2O=iݖ[XCqu@/xZF xnA`L8D?4RWXU²uO/^G-1{ɇxɊ?cb+@ ?57P$A4u4'M4bv %!f1,.M6!NAv+d,>zP3B $4 !C@jH[ZB!zP0Aˆ0*c0"qb|pBaD 0H>?S?ac  >R#*TC? :@D1u4MCD @O)!@i7!::0fq v#Z$ #~2ȱ3 .)HBD )*f j0F\bGFD1D@yyAC[NABS -# Kb\ @Bpa uC&.JXh]xOkPtBdEbR/MzbH"`oGDi%(Ghz % 恤Lj|az:fB'؁ DDtG.ȋ&KRDM&rEEY 甌{p8/L.Mud>Dp@v. ", t/` `avޡ PGפzM#Ҩ$$m.*K4 r[r#< `ad U': &mC4"D0P`N0PDahXKKv%V !>f giQd2.tWX_8Xbj (n-MHv~ fט؍88(iG-LRLn X`VYّ#Y'+ْ/ّY7;ٓ?CYFxOSYW[YcYgkٖo>aw{ٗtY٘Y9#YٙY>ٛYǙٜ Yיٝ97癞ٞyٟ ڠښZڡ_XZ'+ڢ./Z7;ڣ(?ZGKڤy#OZW[ڥ)"_ZgkcڦsZwZڨZZکڪګZǚڬZךڭZ皮ڮZگ[ ۰[۱#['+۲/3[7;۳?C[GK۴OS[W[۵_c[gkos[w{۷[۸[۹[ۺ[ۻ[Ǜۼ[כ۽[盾۾[ۿ\ \#\'+/3\7;?C\GKOS\W[_c\gkos\w{ȃ\ȇȋȏɓ\ɗɛɟʣ\ʧʫʯ˳\˷˻˿\ǜ\ל\\] ]#]'+/3]7;?C]GKOS]W[_c]gkos]w{؃]؇؋؏ٓ]ٟٗٛڣ]ڧګگ۳]۷ۻۿ]ǝ]ם]]^ ^#^'+/3^7;?C^GKOS^W[_c^gkos^w{^臞^闞^꧞^뷞^Ǟ^מ^^_ _#_'+/3_7;?C_GKOS_W[_c_gkos_w{_____ǟ_ן__Ÿ <0… :|1ĉ+Z1ƍ;z2ȑ$K<2ʕ,[| 3̙4kڼ3Ν<{ 4СD=4ҥL:} 5ԩTZ5֭\z 6رd˚=6ڵlۺ} 7\! ,fBBD664^^\&&$nnljjlVVT ..,ZZ\224JJL**,::<""$zz|bbd>>@@BH@ltt pfpp4<<$0080L|vx zfhbdpnVx ~TT@TbP(:0¾@86(`Zؘ0.l||`Zbh0FJ@PXX<6<ʔh\`prH@h|zp̎d\tdRlvVlbxtFZP:$< `0ΰ0p@t0.ĺvvtrrtFFDĖ vv|Ě ¼rr|FF<Ƽ H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_nz@;УKNHJDv3|{ξ5o]HS9F! pN#VD|fζ>$AJ>s"FNH-EA8F;EJ>3JF)TV #<3(sN%p Ih&QlyϚgzt;tg= Xi衈&T| A;p@$HCڀ:"f = ^ :ҝ'E>;GB4kyˢ&NO=8&H|F4hЅ|RD]Cm# +n{Ol' Q = ;ΐ4Bxis>}` DD0.o+H{s%pNs `;|*_@4tt09s! wz"AѨ1"6Ď2IN,7=tG'MN8AgvIM@Vg>zBd°.qp7A494=# `:A9p(#r?X@: ,{>cZ/t}>l @ x@+CzG8]vhL8 IBA>4#Ї;0 S1K|(8w>d?3Kqr> pSk{r't.\"HK?:j@&R`G^o@pAV`9񜇜 Xk>3! *J'Ͼ2{CmCb% s>z&Ob?r%cb0/C:*g e wt`Dw)|r@>p~zqZo(ac5fas'ƒV#''֦@&%z'p>1Y6]"0 9rrCE-_S-460 sjCru0}xz0T?UC !-` pn=^C>%0$`T VXPv{V5 >3xr p:Sk&b4Xa "tdwMM&2 РSE9=]Ep(aA: WwpÎc52E`.Sr| ِY?QJWU$ّ YЂ>)a( `h*294Y@5":1D` v8Qp`lb:p'han_wp !ٛ{`}Fr#@1qw8u0 pFڔ9>F=_bqP A" ub Yyb|1$߲b\s@PuPW'J6L2=P0Ijy(Ou0+yp27)t%PPw^_E4s"'u" &TZV \`*2G>N(9`l;\60r@ t:},J0#" g!:kqZG:.8zVJ^H' tPBڪǦ v%0q"7` k1s0+zZzie~;  S @3KJlŢgy`e p# ,+Tv&!"E F֘/6/";$+maW#bJr8"r!):(\H*"%JQk8Y#Zp C5"]RI\`'v DH˴pr,ZG<J4 ;4qƪhpwyus[{u&~}f'jpfq =."asr4k$<xqꀱP aTZ2=2_DZ`W ЀA`VV;'껾yB XvW۾VqSDP| ||<\| "(p#|(|2!QDGti*:|aA.| EJJ+,Ū<.kOATx܀SK 0PpU'pcQƟ!oq 5c֚9" Ƿ}ĈX3Z%%-:L!P@\B" 'YZ93Z8#x1)@dx&eҝ9_ [`S) Ɋ|wIp ~ s/IbR+BC@2Q G v(d lϕɠkz:?sA֡"*,+%--.:q5 rW砧0Bh5@79 pV2?BFEz1"K*!N !]V)P/${к[`#4@Sc&J:+>13#9us79[`<_\;·60  # @skxo{qx"0אAhZ12*k~ |rm6lJ/лlM< Azj:.\o:ITWv`7`Q~&\։`Vd ps-eWAU+JaLžG"R z1$۩ qz(-n(!YbS wdQ܀< qN6qYlڽ"T$\uq4D% 0BPlKJ=~HF8)OA9tծ^t=ĸᚥE`m 0 ;0 & I@ba^R:%G"v&y!{$ @qj=nʊs>@(:3Q56 E6]cä%! YPujE*Q Y UuU@0$pt){%2^v'P>%?@jHe#bp~E=*:Πc0ae& NE`uh.CfeZd>"vA}j?%ޟʯM~pI?5`[L`Gdvۣ6> #<0r5cfpA]=码Epn `sa9`HjBm|˘73G7XKީCFЎQ4mMrsظ _iʍt`sURu ,`=a Iot韶)9"g:-tqg&'Z.eA2@=.m(H.0?   tp_Է#HY.A5;@:#lh (|f;(k`;PCiM@ٓ= %w~8czZ#7ohG\u(@nr0h;ڥl0 D]fYcӍ_̄>FDPyW(&iFTmDAGniybtF,t:t`"@\"xNS D. EXhW9u;FEC`ߑЉntU r!&GYy1xyqb."K{[Ͻ̿Hʉ_a- >DrU θV; Iqɍ) ਸ f:q3x(sq 94+H8ڙ"(;wpQ8By ( hh]H& xpD?A B"<x*YAs?@yـw @iY{ XvX g|pshF! n͸@ 6tCh{x9#DB%dB'dI0CKTV4&܌*z|Fbܦi|` hsp1xc68F F8.i p[=8[Iᆧӈg( [wӖ"1yLu{F{wFsGfF)|[P2Ȍ {=ppHM[Cuv\F9Ih$F8[pG08k$ `}xH0wlqL>rԓ|8G)xynpˎHjC n 'ȍp܈i6 { blLL0aʕQlA}ȏqˇLj(HDl ؐh,@̏  85h֑w؜") eЅ@KR@ äA0a >Od [Lu"@dnPÄ ۬ʼ{P-|':xyepO\n@}8|>|݈FK>[8وut<͈M9s`|{ǼR,Р@sT .A+H 5 ˀQ)Ψ-IG xk%wH|(L$ 0vЇ (88B8%4qIMZ֬M/I)s{$0%e]؁GITSҸS 2OHč25ՌPi5 wБE GUhS8]>JG$"} qS N͈(KV%TWk, X-i+G ? ((PX 5Eƃ0} 2,WQ#vkyeQ  E͇AQXxqE ]R%ʇܸtPUZ8Sb ǰ8ћL҃YFYø-ǀeu(uhx)-HqP"Hv0}Xp%ՌҀ>'KT|:G(& ٺ!A2}KX-YXE^g؇ $VCYڒ[N̒seK-Iě7VxnE x?1U%M˩Xw@(8R}  94 UĬ@%c>S"E%a8$RaJpa[ߎx^ 9q% ̀ ~y8H[m (Zh[6]Ta5U=7نxwƼE Fh!YF!Xـxe{] ]O)wFؖIH$%{9QU8ނ*G⋀tuh*#E׍q!s9Uwy?Ʒ@ `%಍}kqƂY QFbO~pf 8}( ޥ- %8?}5har.g9ԍ K|bՖyK - )|qsݸsBʱ}iֈދh6BÀn˘Z_1Thh|h %?@= 0hNE D`D|h|М,haj3̨Z:JX ňɩ:ϡE!9Yֱ>Pj"]C<Ķ(k wGٝg6< lYQj`QhCӆp|.h$~ז!jhJs.nNfآ@EuXiw @Ejܘހ&" lb#")(Epn01m xJP["%]u@5[h,dO@Y[ W;!䎹ѻܙw8nx"""KLȚ+HDX%1:}(h)"+¢ۢ.'0#%3J5 eRqv(DT1r$:#!9w@B vh!O4uC5A!S0:f HJk̇?nMt~Zh|8c'O&sf6cN_uVW=(1izk'a9ku`vi*uf]t"kj(~\\`vkvu q|'m&h tlOwu_wvowwwxwywzw{w|w}w  8 [WGw  Ee`C_X 0(]ky/ь Pyy  O/zyy8 p+582Xws\bA<888Xuhgн֋`eJ}:sq{|GȁQ0vX/$7 Źl.!ɗ&[Wֿߥ?8w> Pf G 4|#ä_ H(6C3 -B[.\hC1u(wznQnrBJD[8t#OӰ0rh\,J 2l!Ĉ 7ǡsE$:|Aw[q$ʔ*e`•2Wbv{ \7$L|'ҤJ6wi6q jJXUjRcáEs:`w fC4 m!hᝤw0k'i=|E0Ċ3n1Ȓ'Sl2̈9|q1߁v&X%+{w;w6~B!<`o(Hy^O;K=}!QILA(^ ZA M7BՅ%Y,e|IDd`AlͧYi!Å C]i j)C:dI(bFNP%m=L-Rfc$2Ěkz_AC츳S>4#QJ9%UZy%Yj%]";8k>f&C*fAbEԀS4Nkc&PZ PP_AT"\>hUSK3UC*)Qquf>yU)gDi3::I/RTx(ͦ=>vZ*9KЭaXY`r) P0)Qѷ,//"N:SpѨ@ > Bm``@8$:ybN@s(cRD=CX8*39jp'AW 0^A쓊Be);8Yݣz) `yr 4>c0xrθ0rɄ!0q'PO  7DB={ D8pZ|$qC@i.߃O>M:8@;A](xtUMP)zg|4

g+NY8|rFS1 %q!> @ q_|gv2䷥À!7t)RVCئ(nFX6m($ .#؟c:vK9V‡t`94hСADhnO ۇ c]$UxWt_v1G)ЦIaq>~2lC{<(D"ÈH,:8;'<%*SU23<" }!P|LXGQ5L@!payOHK r\D"p<H!G`K:A$hЅ )c 9G,Ql kb'64&D\hY؁َwT Q>Q|T@'t(>d$,kyˬ_F&zkj\H -0vL,#s8OkfKD4Qst0:hJY* ? ؂.nKC%4HE,(δ*L񎄕a!f7&qӜ@g>ZTx b;6ׇTtKkcgA]g((-t)A.0҈m oȞeX`v!iIa]gMъ=)#0_ncDV6!|xW( 2ю윏a4eyLRwYjTb:C \0XSUEPS$BSQd8y=ܸLGC97\*>(- qt5UrP+|AD(T|;ԋMl{ Yҽ9 w|P!Y C'CuN# "U `; H Tv?A6 upcՋiISH7!|1rA`+h<000`pP91c#KQd`L=A }3OeHq AB+,[ F !!/G/^M+x1M¸ o{ABX0g 8UoH0ЊǪ $[8%./:ܱ8ź `K|֤uϊ % s ?/C  Um##Xas=[>p;lMR܃[0ɓiMqD7Ch`$< Е;@ =T>H_%;8i2:H-_QJ>MlSLݬ_t䌇;,XʆD *N0~-`ߦ%CCC,H.Ħ%C[ %,U|͉XSI$b*D5a^ AdjbB= C 0IlO4tYW>,#"0 +C8@,C2V#3 TDH %>aC9ZcA 0۝s9CZ`J><;dNd=\htu9$!*!!!0BD ڪ *F2v>Db8 cDW%t!M%UVU^%Vjƒ]C 7\;OKFM>XMTX1DNVy> Y@ ( <=_D,RLZDBN2)>,&B\ҚC5B > B /6%Ax\%6֚Kr" fָCDn^1yH>lq23|%A7N}}N8dJpG<1Q,9@T& [g>0]58EJx>;Ȍ<%G+9IF|(ójVΤׅMFgA5ʑK áa猺~i8S^Jh(oi igV&.*6jV< K}8;, y p 4gA@[` ҩ=nBВ.*D;eC;d.@%#%Hl" LLؠ*DB2B4xJD)A`jA$8PAp-:DZD\f qSo7H¼`q٥6BkCI @OFCP 5}k 籥)& 2բ*P"GjD\jBn2< $9,82D;ă:-:Cí(7l$@6؂=B3ăGn,R4dDg^+kJY\m~&$$9K,$Că3 >kǔ-:6OĬSN;\n: ԾDJ>D#0"e|C`.تƖFD}-BC<.:N/Vv#Cw(6 k\j@)>CM5ҝ}`tgƢ~)Gj.;DĀB: pC"3Dx>pt\D@2`,8Eo>P:쏁I,CEŤT""2;쯊h S4!FGo $P*_p ;p JrT֧2<beKN0BpbI"|;/ٯB< WۀϊvhWI =T,#!7E; B%<|:@傱L4iT%+B8V- kC#i1Ù'a@kb l&wr>rJ/1s4nXD:Ag1*2P}`U] >1#SǙƳ<3=scP"OűODOQ@A]uH B\>41/4͎15ao\?we P'>bA@/{Ua9tC9`LȋiqI3:êy|<Xx H=?xȢkû:qGK>hr>S8;>Ss ZZ4%zuo.HB8liL fZt_rtA0]; .AC>D4DDEӣFGƆXS" "SKGT-\:($.0:*f՜<. CFpGCT nl| CTM:3nmSlyr`fa+/߀b;D|@hFD{0TyllkfR5K0P @TBh$ D˄[iXk=<4;`PgUx@J&CpÈ6 yDD8[4X_=bf<yI$97m-HêxΨ2KԺ99G:H}qAK>BغCH@;@K'>T]͸_9ds;&$ \C(0|_!,>`;D תk>ćS7B 18؃_+ʻK#zb1z;8z@ͥ?x|;+M7XD=a;;\k3D88; 8GOVXC댇$hh!#*3tbOZH`-K_;>S;kl} "_B &ou 5ϝw*8w/AC sWF Ff$ݝ,1# 1r;}&!s]‰.,5A&+:uN @DaEǁ}̊ :  *v*{ׁd!}6H.dwOR0\hp]yX߾{@Ő ʧ)|3 | Ֆqf**i!x{VG)=D`AwcbSj;O H#P܃OɠJY*c ж#w6Hw&bHqE3i Ț: K }R+ʔb /Z/+1EYǞnt`hK>1 qH&2e}~|qNs @$KnBQǚHtKǺr'5ɰ-LJ)chu&'<&IYRǜ,لJlqTNpr=t]v}x块z|uS4DyO[q'nNqߊ-= =Ƹ?M>U^]~emfG strF  |y` t{𹠹:Ov z{>^oW$\F#ܽ yi}H4qqp7.poڻo%-yhtqeG IH)֜~ֳ&$Quߝ}?_襟ꭿߞ?_域~{gYy X}#XB^ |pq@f`ښ ^j=pN@P* C9/7s( !4JRp͉-MCRg/i!bO d.1B IȮ9a1!8ǩJMdW00܃%G8co ю#eltcAȮ.Ō!F2G:dB׸g<&9IO,QHH u#9䚓0ŅzY֒_1W(GYJ+Ҳ]sRBȑ!b,,0vc6[%.׵(<(.c|f4IM 3O$=9T3$ fJ%O>%> y 0b1ONYMts%D*Pʢh00#j[3hBLLw^؇ICxYf>20cpBdJSuT*UIYu;Uo} \׸@.> P UdA4$b5\2:S /dpBkdcA>HÍ1*L;|㵽/h4F4pm$͊Br\`4AEl6._)n $Uk 4@pbR{4GJ@i]EvV,b <3gUw*]tE+.;⨎Ti4]G;8>"M=&D┏^4pt-ɇ`q[[! OᝀOJ(:.\׾Nb'Qv;toO3Ҏ;Cӥa⌯Hvπa/aF0 sQH! OlAlO!Fι#ރ3,("!X8ab"pBAJ9B@βġ0or*` jD!.O%3BEd*F 0N0Y'm*b(B5D=@)4ήl,! AVCV !NHVZҒ$;P, 6*0NSQ),`!̝&lAn<1B܃Xʬ@ d 0!Nh!D%ndڈ򁹰F܁;"I`v`uV=MХ_1/)hq)DZO!b⡶!$Xa60.`p".ށ fqp I%q!E!)桚c+"q]S8@**诲 !!,#+t$P֮WCP4!`V%&$z ! A.ّq0 0bv#F3~v a"$>bbOI*Ag-i q@Pq |aF7FA Aԁ +!J"΁#S.#9QX*@*!"APA*U .AUkrb\ZWJ̌U$a/?"JJKT9uJ5./:CFI|1-Zc;c?9S*[/%$Fԡv(D"Cį Q[O%U! Ā(5D0!2S/aZx!a%@&F2⢹tV<-HvLIAe!kj!Hviˑ@jy/h`AV{{W8)3j Lj" T(FHoA+B(ajk"@z4z!|4 4B60Lb ( B;R* 8b (ZX\|ė|w 83 v ɰRW+.!F "r-wV}7 .tl!NiS]D~.!Dg>2@;L@8&,w#|,KuAt8r6]XwBl!oF F Px&C nCLaq2X `uat< zpbWw 31 U<`* <,  ~) N&q ֢)َ% 2J(Va taBF*1CĕǾpE5!䙞#QwrF.}# b,y=Yt" @2o@ ibʬfA# l D7죅"9p0%,< }x+B!t " B$zyG;:ȍBQ! A8*Z  C{hg+:85ᘋ1.s}MX*X2Obz!f:!z Acc6Vu*` f1`(n5P{YqR HdtK-tFȵV(8l+3yR+.6+"H)>Zz-b$A()W*5:X#$b+S"C?ve7|.Ĥ!"8\{ڤ+@wD&`A !c=8R xE0"N!2$\h AI)N+2dN :5<\YǫW+G$Z5l"bf`ɟ/tj<KGH;@*$$8[9dD)8.ι{ؓfٴ~z=ؓ]ٛwZTGڝگ۳cF۫۵]ǝ]ƀ ]ݩ]}rMz^ ^#^'+/>{ 0\lHjF)qz8f<ބ0O(c菮'dM1߭ 싛I2O曬疒~M酞t*!z0humt#Qfkm 1c3 eJ3F=Kd4^5]]^X#_ L$! 2[ū ļ"6@l5 avĢ-NDLZ<{(X݈{ޅ8MM@@7ř4kڼ3Ν<{ 4СD=4ҥL:} 5ԩTZ5֭\z 6u#p;` >wS;UIxp:bc2Hc6ވc:c>dB~3O ,>7pP;@Mt^B 2Cp- A>N9lcQ0I EVbSBsNBt 3JnAA^i>d>b)9-E"cAD%7c%: #yfddK9gw湧-|z!z>))pN%B\:ދoo pLpLMC,q 9T=Ԇ>mtA ԶD\=t-Kf >DQд7EeqO#;bk7 ʰCS;uYMGk|nNOUv4uvAO|DZt<+D 8< ~QC:8 %N OqVB˩NN{ߎ{{1DC.P;3B:>%#yp#I'ˀ.3A3>F<;X$L;Pv!P[ |79ǐ|lfp׼ 2c{EqD*!;2XU} w")ph x'Gg#I|!v0qd,XƊ`#ޓ@qVȀDhα LKĘ (YV>lځh\j bSꔧ)oQwL 9 >`nt! XwŸ /1TݲҖ~DML"Z dD"LQu"B&}tmc Jvf4Kw Ρ<)!:Lإs!'>~n} VTPp QtQ`%V`x|x8A*Q \~U2:ܗV8X <И3AHɐF%i%~&0cadc6Z348 ;&ss8k할&omQ:!:0=ԩ320O28)D=F";S-U zpA ("hkIJk2.2]5e5 jz72V3yBVD09}9۾]QXqRP#? 2ϭ8rq ,tMS iPtM܈>}҃4L4C9(MK+!EC3skl5,.ESL-w2ѭ>?0:)e% )"M^pdrShP1tVC 0BϣD;TWn LBQ04A4A(T7qi C2(k(pnxnD>MDっop9ALŴ/;` \W=]_e>Cjy31d@%I!3*9_C $3)no~4(y8L#>s 94mE4I$S>cNxmhnҳ"P 28q32>۵gI8t5WتO򴮃IRc44cjpBԳ|wE*5$zQN 5atP DM0INQ>jHf@M9:K;KTƝ>mMΤΐa irLNN1OfU.L]4IAk wE!V/j3QQkKr% ̭PD9tiZ M/cB8]M@5t0 0P@QHЄH@AOQtHÁu s͝ w CNx sw]:% xwD(ZBi 75tLĉ"kv!1n@eNM>UTU^ŚUV]~VXe͞EVZmݾugCuD ZCxc3辆%.y Twnuph_ 7χ{$V7OT&p߉M>A@ا|à̳Ԇ>wH6f>%jþ)@_}Qy; #^M|m?qOCVMu)u*=03l.ιRu +R|2I ч *3{:V2wh*}>*;h9 ݛDP4=q:P|0'اGr@C{3(rZ9tө= ^D2N' R)9%PÝѦz2J>J|TKbUW_5VYgV[o5W]wլ'<}v0n ԸR2ƉpdQqoh! h$ uqGAé;(,[B}Ap}=MdL܅W|ނc2Z pȨڈԵ٢(嬩umtk} /*cdAwz%uB7\}>W\r29+q eN` L0u$5_TG9gˆFGԆ+ձgIeۃؙ'a}) F ߋG8E= VYq ;[?Gn}l٘*(@Lv(8'p ;'ʛ̞ǖ̹:Y+wG{~? V,$N?7; E; }b@GC}` 0a t[#ڡ| avc!O"RP$>< / ";[ [hy w3쁏}&>Ơ F萇><@(4 AWw J<0u@aiX>0tGB rЃaA'08c8ǩر? Vut[0@#0=PBr2?JYƨpkܣ@>uh'""AxwTl10 Ш@%`JND(*K3BE6΢J:TRʮ$E=DssdtG _p G%Ӑ(Pp" L*6Mqd#UHQ.l:14MsSx-\CK% ٢ D9lAǨT%Qqe ``;XְElbX=tK=e3ݺ-QԆ B> 7|DC 8[ l{2AEi6äA{pRh΃9 J -ȍvC)@h [ Jo{g [A4ǥt'uu,JssP* 9YYӦvw}T \Cp$dPw4}Nbw QR`c 2ay\D< d}3aTmF*I~ЗF`gF_{p vp -v~-`C'>?<*@zRuylL[qhcvJjG_ꃾ 3T@0_ :G; Á|3XEKlXH -L @ ҁHRSqD `:-_3w=ozo~%tKwapGxp7hi%)|5qwyEp},~rY|,ye>s7xqs]/Z|GGzҕt7Ozԥ>uWWzֵuw_{>vgG{վvo{>ww7K΢w|?x›%98p E|G yw}A0 |DȊsŜoi=N|p%}u{QyKe>U6/E8K?}WǾ1?m*8XN*6ZiPrŸga?yq:' ?x0qs @I01u{@0#ge|Hv@s|*rh,AA@zp XD ?OEAXv1 4U}ngP%,Ё@vT;<==0swhz'5yx6 ڤ*JxQB-[HBkMĉp}4 `s`}|wH ) 0LDNl v1`RSLxh^EkzLEX-Ѕ( pq$r;É(\4?8uX 5vؘ꺏r(vBI l6  '(,98HApy !" /pٝxwT# 83|(Iw8|HITt c3Ǣ4ʣDʤ9-Rw ,jI޸ x" Hа{৆hl )#jA$Z  pQa p-0 r JR 8`*ۇ `!̉y ̇*ˡ#"0llsn圔hNIYBDb$4xvXUpj ̡ v05:u22 duz؈ Kq!:És<G(nXIᒊ Q;/ E 9$8ѵJP5tʏG1+ØK*B sBuRA"&Չ@ Ql1q҉(J89Q@}X 8 H6:̜h MQ: 8$0 9TMǺRwC Fl5GzI3 :yl[\U Q$ڌ pg)z"p'zyФw/pvJn]Hp2 ER\]`*&I l݇rD&nx#vA׉w/W =]؍؎ս Iu4$Cb.ID2M4DNQ3Y5hIlŧӪ±x*C7P(Z 0-*ck$lZ5_n-ڐš |AE ظ۹ ۼ۽۾-,R%5\Ueu\Ǖɥʵ%5EUeuׅؕ٥ڵ%5EUeu%5EUeu&6FVfv `` -B @8H A\'xӱDI0av* }H`, 8ᜈ̀*6.Ⳙ.8h؍8 bBPPb i= =ۖsz H˒{bxnF.Gⴙ#:1. pA$2ب:8 r:I+yh>]X`Q cy ɫJ[Pfw`fg>ɻ-Ő$b=xg9e}|IIД }0̒wUh6h+8b94gH8fh Fie Xz)Zy0|h2 !Ňnv؇YsXiDq?V!.&6Gv@b}JțY nنƲ"fy!6"8؀̐{x}k{8컾Δ꧅ }P 8[H=Щ(k6éf 1x7h ،j.0"{. ƈՇ5;<ٶ֖ɼf[ddbcDPNPvOlemVvz0}`4@^jPp3oo_"nAv"Ix1Vv }Ƞv|=O‘\ovǾ։o,dF(X 𵂠q}Y _W}QIUoW ! x|)LH 73?Vxv0j׬񦨈|5hi`.;0|X^x{hȫm4N=Ih 03+JZ^؇v3u 4BzuԊi n]ʂDwi`hvs?x¨,7R|h8pab[+4R xlχ(tt*yoIn;9!:(hcP߶}TVw֌vviw;PDžz4]Șs=L2)wPLA܌ ?œ `)zه Me2@nK5ʚF! 7鉰QSY{'E}Ѐ ͐ĉ7{({Ads7tpրț \Kgg9ED>;z#GO J`1Oڷ}[}'7GWgw'7GWgw'p "Lp!ÆB(q"Ŋ/b̨q#ǎ? )r$ɒ&OLr%˖._Œ)s&͚6o̩s'Ϟ> *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy3Ξ?-z4ҦONz5֮_-{6ڶoέ{7޾.|8{;o %΀ ˯cϮskжBDWi=:7=Z,ό?. cGps=l 2HT;$AP8sE4jT;Sr!D!>܄>H69x;3ҏ%В)59АEupM c=#3̃χ=5 #pASECC`p>['D|ٓ71:RtA=~DGn*J )r|:p#dګ:= JQ-1 8Љ6yD+pt;:tNz% dH`k;c)ےп)KнR)-,PCD sLfH,;ŏJ$,( zR|Q-.CBF#A: 7+tY]@Z[5ԟ&LKRhH۱sӭ!CE```;FAm9c94PJ$D'Ⓩ3^UO}n~φ~xKyNpDD3d````]j4t0B4-FA>zi;s 8}{_4P>1o FaQ!$sP)Ѿvӝ@x@VA 8L (^?h781MEr"gX{Ѐ[^zq@!kUyHB j< @B!;atLB&p mX= ҡp@ `8uh@400vRx@$Ȗޱ{@nf\広LKb2r9=*QW2:@:QwT` ۉck> %#(({,#!hvB 5l`*t>$6Qd\f8ǩ::#WCbІ:7 ( P x6 δwDC':(AN`+؂7)NhSV6ӗ7 R8G!$1y T 9 N99ʆ@z-G8A6pvx@R1|/mH^IVa?G2݁Χ3E1StlC-Q*Hb8R{zAQЦ>5dg*v i]k[fĵ!F' 2_*yO^צ 2+1'՚0C9>]8StLN#u *,|9^1Ĺ|d@Ԋf%jremD=6 L@$`:ȳ=7 _xedX3{ RѲ iB)! g:cFB HO{]^IC (N^jv~ҿm8xr8h|D\cT/;D'Hn :7}d߇ّh `{W*qiN DSoVwC 1",. r,Vx==emvY$ A|8]wxuZY<0dܨ74WS!z/\|pPBœearw@} eOq!:XS/O}<y"U_E1\* @y%5 8> N9CҕZpB\XY %M!O!C\ .=CݔM܃˝kyX ;=Č] /Px+e7`AD!e9y= AGYAx=mPr8=hCCB9dm;t!!!x iժ" K  !`rJ~]D!E>xB (`! aD< b>HTEH $1}Ax< "jŨ"BϨJp]>> AADX56j#7*0>A\ >\@DT$hbAD;`l9Uu8dAC A.`Bc ;,M\;-T^M %Q@\N7DÛ!ͭVֹ-<2p@@AZ\]F"ü$CQ 7gA@gFrR =gx'ZM ģhF6( 2$B;dC>@B%?=BG A ̃Aܖ0=B z iv=:w,aZ:a%ѝ$>Xhp3R<ٕ(HGC+VlT fDB]h]xBht ).@ݾ>\ɄL}.A@DN@AJ"č%q" VqQn;H@lYA\L@$@*  i)C) ]BFރ! >h>0$_B\@ D@  h 2>fIĩAxij:튊itѰ7j&jCP@\$kv~j: lM ]C^ ć 1CW0@;H2GhAD,>ܽ&$ȡ" ]zBr@!UtDl!Q7<֫kAh.~D*՛:qL!]BpFFD2ܬ`D9hl`Yr  Jw@Ŧޠ$#:òG"H}6.kn?)n|AHt >\  E.(Dc1ハBD(S3HՔDU@C%n$C"HHB40C@8U0BC%S>pA׾9hx|&C0a> B"W ):D'pSyͥޒz P/ RD/=;ڤRHS!C\,U`0np bp> 9P/ tK8;|@b@,/䉉/nLpMO07܀W!i0" K@tXבֿ x ;;pC"ri >C-CU>xñHa"Oe>H4o>L ;"sA<A (s17AWC8s9ݘ.Du;XG[ DS:mĎ>:`BA;m> &!.n/MHB+DIq2 \@bN m1q $H, ,P:;l&:5B74:yJ(]2>PGP`N&|C mC%:"NSӉSW~d>>oJI "2՝BBI FHvCdA:IU[mMQ7@Azug8@\3#,*]!\i;NHaM5;@e1͚@@,mù߰< 78=BO7eE>37؂.AYT,tyw>wh.V@xxZWHO-Up=KGcxk08C/PGtFQ98sxP\PU7xKȎO8ՑNμ! k薬ADKcN\C*$ TcU`HT;};@`:}zc {2̶7 }MD4@ G6 @uա+\@8(>޴[7 ܏&"5#- %&Q|R\C;@h`w= @[Pǽ{Eb>o޹A  )~@w'׽sN@B v>s"{[R'`fȅܹ;kW_;lYgѦUm[oƕ;n]wջo_ vULB1;QVv}}l7v9CoڍwR]m'Wys 髀=w@.ڢƽy7)Jhg@@vĀ@0`Df%m`J@BKix@@:ԡE:PI$ 1P 9A QI,|jR'q ; 1# 9I +&sVhj }+ A SLp;xLJ00޹Ea{ hvɫD+bAy%SM9OA UQI-G(ﺐS#BT`tVAZ#L) ͇$ce+ OkQ ༇')Nf' PɁ}S(}i?BRߐHNAۅn!X)h  )"2.Tz2EEt{|U7)|.⡉pwMu"~pg8,v,Lh >>"Nzg׮3aG8:+\ /Pkrg}Us2B9Pct ]\uFr" v9gEց` R*syg 8iNn BslwÀwz;+ j[=GgSjgvg_OMU޻}$1w=xmga#(aܣH: ԅ +=Hx_l!fћvgHڼǕ ʹc! MtE)NQGFw"pʬ4]>laA %!0Q9`Fb;ю9e0I8_: :(x-y y2$}P"KEaKYΒ%R;CdY{GBC'!1 QJ25ƅ6#n#N$,::s`hG4>'x?ŁpJ])80YBPK _;&=r0)$8:%E/$ȅ@!͙R-uҐ : ;hu:bH^  @Iw$C8V*Q7l2`"$_VL` Q@ 8B>Q Ј7&\@#LР@Žݣ3j#D0p4,\`:<-ib5iQZծu [$%\ o\ A$d`@ q]Nյubw^׵%yћ^u{_Η}_`6`/5Q|1a o؉vK1Y%NCIÂ3U^bϘ5qh: dhv(Qq*-EF!XI)w/ZC,Њ' xdH0 5@:jJu QxE DLD+p;<0"# xXax^1QrFtHDQ8>2OϚֵ[8g|PMʍ)"&{:$N2甆;1>Xsk EK#p |1uEIla`:,DJ7({9m \Cr#gq' j>e*!ot-w1n&G$]YC-t:D@WJRVHPAZC@ wV t@"> `vDT4';$&ZV>HlPe ΡB D#   򕷼~X@EsF/"q. }-AqGeQ@5lQIF7#r0Rdj(tn@!y9 (\_j$#-\ocڠE"^ DoKG)BPW?y캢&, OBafփLO]$0@B"F(+l"*,@0*J$f"(#4>GcP$ `)L$Ko.T-ءa2.NAbcs`,@dt0 ցqAtj, *A$L if%*Y($Hvk $p$tBic "` d!1A (qiW*+*$a*5 $@皭=2$ DkQυ$"" IMA"UΥ< S!̅R@v&-"lbڨra $a$A X', `d"Ё(gG)(b(B#'a&VI2q37ua(@$ڒ"d%.,4'*@RbAnӍ IH.U-Ab+C"f&$H !@e@I0ih&zn7tAtL *!.޲+xjc8Qz2$|@U̪gʚs/OBb˘S(9@V`IdLl @co2K*Ҩ7:QG2b‚2Udhm,$!;%Y0- /b@(hcrF%hlK) @Bvkt.)k'kP&-Í5Ѷp P@, Etgd @A`rD#T""#6#mOG蒮4NΨubznXT$A.D/hS-( 5S! "mz2o[6>@HDh.`F` deB l!@B<DJLp+H#txG%QB$~;V`Zz។1G'L$(Ml8p P<2 I):^N(g@fFc P?a⌛ _c܁AYeYe+0P5'Qq,(ORk$`EL*¸3mgkx"Rш▸MjQ XE?"ei&:frnr$Fq+b*6 Һ!;i " 1:!M@sb.2@?H7y:YLZ$D #b9;?t. DtJtRgu xFrc" ٣ڄ(~'x$:U:Y偲%xś&zP>YTwqpVڰ9'ABtμ$`V$ b1A.$h>8.amRS9W7$z3tȉ Yvw<8YZCp+NF+d:iXs+DԘS+Y+|"_+9nΫ V, /,~RB~$N2#`5U~Q>A\u%Zu%vev%!ڡzEx{%VWuwwcvC rwWz7$\Fwzx]۔y+~q=x7Q7(86l}(8$.hC$:F 8a_O8W>??ctT x=Dp&ajbIiQ3[I:Ѹ #p|DN}J4 'ܝ(pIɓ(S\ɲ˗0cʜIse{LCCE8Iý5*]ʴӧPJJիXjʵׯ`ÊKٳhӒdwH~R>w ~s"{6FIg8Dς"d#\ū|F| "M :Ln|y$c!Kذmȓ+a!${ kνËOӫ_?53 q2M wNmPD d'P~e6K=9h!|q)dS,DHΐTViXf\v` SwM؎D99:pL]wN!lS ԛC< $=.Ȧb):`f:pS+"q5$= 7 q4>">@#IA;R?D:pO#A$@#HG.Wnȹ=*<13 :>r; KNH󼟇>z#۫;b4O;h)M cF?;3J&4CA;Gm0+%.': ⁃L:JP\d(GG0 i@4pUF>vfsC3Ax;N0 ?@$?(B% EfDG!G ^;y;@:x̣> <BL"F:r, xIJZ̤&7Ihk (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ49PR,D%kz 0C?fRԹr< Wpqy?J5˿L @Do`SD}x3  cV @ (h"WÖ{وJaͩNw6BEH -;]z zrԤ(V,0 zhwb{5i:}܃=\JWdB%760]>$K^ctEsR)qCP-&~' SA4u hGK0*?2If"#EP;w|`8Kdh{ o+hM'U#=P:U]Q;Oآ-Pb5|q@ T9$h X p {#@j]*ȇѠCz*"y!A[ށx'gBGn1U\Kf耆`^eh F| w; 2ߟ"0J* \6>iP:,W`nK2Ia$ˑ '&&g$t"JDG2'΢˹vbmƒhѴC7hCN -h>=aypzh h]`!(l׵t;*і~s;'|Ң*Zh<'Gx%1EV(CDl"wFph _Ş$1F[q7~?#$.GtDJZ!W@0ppX"Ip5h1m3Z͇#ϛC%";2TH,č&R!H8qǁh#(w$lhR'χЁTPdH<""&9IOf(G Ox4L /7tHhF3ӬCYœ&5iu/; iDS1,̃$i{fJonL%P\'K_B8&!Cywy_w h\[(hj6MAq3$p}8[+/BH[H-]s 6C(q|| 8Q삅cG(("SB.8ep:ޓC04U`[-]#:@:'c#=c`Br"V` bHs>>;c #?|qf$CD2@ 2 R<ڣ>HjyhHD'KX$ ` vU\0;mR4같2X'0Eump-֣f&PP qA`8d5C&7aaf2AcACLA]BEd3(Fp|aEmE+"h-7CsF|He- FP0 ?ګԘ!8Țʪ?V:jfZؚںjج:Zz蚮꺮ڮ:Zzj$NY xO ۰^ @kWR1aSvDZ <_F1jZ}Hj%Vp2;=I80:0+ŲHi3$@[F{,V?{d{N;To1[` Ȗ2r@fe#e)c}մQSV5QeWe%Ak{`&ftS5# ipV%jV: Sfe'a0"w5o{o}oۺ+MR `mvs7sw.aJ5MKwo:{vBAFQ[֋LS ˠ %V0粖?%FݷY@}U~Lr^}!ԁׁ LP$q n"FG$RK6[cH$LBPRLK?3O5(lsH,&gcr+B,22>|JmtAr/b rXKۺcZS1!32?bI&a і~2H~")QPC##gY=1s8$8C8<<ƊȆ1] 0 B16H0!@^jrP Â>#?b?1C^ȼy!Aj00 68q=UjB"ȵsQ@n`a̩hFlFMG2GI 3 ĺIsĕ} HP2S1=G7#`" "=$]&}(*,.0W|%I)KW3@d,˅o[ ;2d1a":ʌ+XլlX;Sd}PX1ص)Qac=0q 5 K w= I E EPTՒ=(V#0C.Ѳ%%QUYbuUjڇ5a6~L,n3q%wkrYbmDtMʭ%Mdѳ[0Xݴ(`,Q{L`Aa/4TpN:5 ˽K2 E5Խˆ%WWu[R)8MQ"L| X"AQ81`BV$CaFxv{x˖Ud;*??!R8Vaica`a:e=-(q07#Qr\.c>rCq;ǴcB7spwb>̖f Ko64 >kY꥛jkw&hzi;='[i/ !p^6`2l4ٟKLzay.hll^c}`1p,~0߳y?1qga/!fsJ^igת6ctU&P>ν**G=9cy<=3Ft7׿$#.E!\ F<<":E @qPnձq{ Z.+W4SjY&a{$1yGb yaT|1k1`0iO'!@R?=K{a/4hFuE?  3 ;@Q( ,:187Rq&1%As>)E)//Hq |!ǁ:͛}Q _lyM\$#/p ] }ѭ?ѷ{!!˗oݻe 4p‚AObEܵ-<71I)y|W#ȅ")#MЩS,%mbnD @0vSHq>YW+R߾Tuԍwo 2]y_hߩQ>5G3qAG4) gСE&]iԩUfkرeϦ]mܹu)q;P9ry 1ؓ Z=n|=&J-xAG)EចН B;ܱL|B qk瞰   @LY kFsqG{G rH"4r7u~ %DJ.9ٌJ+Uj@ b); pK r["wډK |N "w( %SIwi rǝ%!{wxk0*}4% Duɲ" 0hG#[UXgg@ha t@U|-}UfuYhvZjZl }SiwP*J}(:7u͇Q xy*xg Z{wFpG"!:}0yA[0t91˅XQ( (*<(q*{;+{8MG @qGQI0 򄨍9AXA[=;^ Z$[ye"HBwQS:l|p 7pW|q|SѸ)wFˁ͎u0Oysiہꅾwa $'!R" X Bug@cz0 R)}Y//FM-` U 5QGkϙ粊,W܄剄.[H` [\>)>X6? fP`=AP1<0‚{\< i(a mxCP;a}ü< q LB!L4r'QSbxE,fQ[̢G=<(hfE4QkdcF8Ʊ/] >Q%gcG@R$d! yHD&Rdd#HHFRd%-yILfRd'=IPR$e)MyJTRde+[G`(Y^DRe/}K`&,Msbet8GLp rnd|f7MpO5̂4{%֗wÊ|p:qw#zP&T g3]>&T0s2fL:"`Tj2H!1ZځXN3iMmP%`'cv3d̃e>KfJNpf܁fU['aO]n圏F'$KDKy]=:h>U{k_ӣzd $e 8:6`9)xS?߱H:iSu }*RԊj{%%@Mi3~h)inq{\򐎁. r! 'hG9z/]-$Wc>B+v)8[G`raA6vx)۔VR;"@LGU ءkJ@I!siň /)850#@ ܴ:Xre"yq:[c qGraLXUx`)Bȱ KYI`)vt=!2(B  nplⳏy,1eS-yT$₺6{;L+mlg[rw|pCLasd'32K@;-i@ #"9k}Rw +%@${e1:k |x9ͦ wyKM0MÀ<,}7]-œHA)@H *VF8ƓtGݯ>'ɴ>eܢ#W0ă"JW*my. BL`al/HV5TE8>lx'^ ѾyxGݵKd.ƀ1IkOЖL Eb@B4! BĸD72܊ վi'_ӧ>*:ľ|ZNo <^6ct#3\PQVw>(HYPП0Hbws@ @ P!j p@,A mG|>p?8p-w1 }\Jpxgn?X{0tpwE@9)-6x #ȅ H:H Hȅ̥aqZPۢ @‡L>G\JSnـsyz[y; H;y<0I0E)Z}8!@,8߀2l8aKy0y/+.Ј{hKdJ̍t8y؏Cn z'Y@yH?HuX}\w 2!ˇi-vɔXGķKcrpN22+S@JL|ONK}8  ;Nt3{؜ZrT?84€Ť&Y,in9\vOvh]1,O8/IK[OQ.K䉀}`{(˷Xi͍\b3ѱiTc*P }DH4L$18)|p /J1( h}؀xQB=W).X|AG1 1"(1pnJ02}iQYY}eZ-Ք[ Uaΰ>; 0 Y˽`r8)v 8LHAG3 IPA`Jwp`)Djv`G8  ؀l-9@OY 2 8 <]0ܟ݌: )Wm_똰_mJ_.___.`>`N`^`n`~`` ` ` ` ¹S ``OaNaΊulvFa Kְa Fuf12sh& (0p b,_ QfDA 1 x3 >*c5b7~Nt8dx`ߗ%Ɗc>ޣ I@@f>ƋcFnd'\((s@S빇XHsۢ䕸dMd#BBJhPuh$*ʙʅpPh^v75Z!Obkˇel7IbaGgqAh)^1xy d̅Xg[sgyvgU Z/:g0}pQ:j؂evv1hvrɇ(tvZH҂Lg&Z BOOY*{8)u$&1eH1]%sj X_SQ;ǰ'⼇ ΫHB!t1X.l@yeK[ s3 @QU@CcE|ҁuyF8ˇiՀ7xw1 [8m09^ɇXnn6дY6j7@Ta6!SKuHcM# )Շaл+5nD̢iKh; ~n?p.{X1QgnңsQwwRSjRҮCЅHDi"@! &7L@{Gp r*ae ?yز!W 2@o&o׬HXA>Z #PEh䐎2Lj arnq!-(8ސ2W+J^ {|ptt}tH(@ps[hg5|ٻ 3Xh G t;pntAv ֙âMZMP';7(mוnw|8qP =F+ziJ~q[Y8`-VG rwm\0۔۟R۴h\Kvg hH9),pXdݖ2-{PX\]u'(f#s ࿅P8S݊FR)"vQ[X޻U`iFX] . Pٟe4*oyr" `|_|#` Df|ʯ|+| XI||2W»}O}_}o}}؏}ٟ}گ}ۿ}oBv(XR h~s)#Y7Q9Rdc"}9}Hx"E1 !anOx8CJ&sj1Du6(^|w BwR lp w!xoY(0Ċ $ʓ0t2# Ek49vsཱྀvσ lK ǡvrmuIt-k,Jd~E)>nr:.޼z6mYDpAO|j`'w thÂ?[˰ 3A| @CgӮm6ܺw7‡/n8ʗ3?ӀEܹtS=A.%U0(r U~|{%]sqho9$%pO%utu#>v3haG_CAC8a(E;b(=wY~D ux0=49:: CO"vm  d$[ӎ@9x]BMY;#}' :(z(*n#Cs@=aOI5E<0e1>Pe**t> S`N;SE sE$ mH;65Iz{%1P;\ܘq'oG.ZӡCܣX@;8Pueg@3@)>,Nj>&tCpj21<35|39|; [@0(qQڞ'p!y'DYK7-O$9W 7l Q6>X>sl}mQNה'%n8y{m~pe94~VEgCsݯ :SSts\44<o;+<;8y97z}C ?C lۉ>\G8!ȳȴ,+>q]A@;"0| ;:"Ӭ ă !ԱslXI;b9'N|:Rnx#C$&CNRSrQ8"!'(lA8h($1 81Z=q807P"~9V(K*#;*#cVX`wpKYґ5,g )< 0n kjkA V "-*PS=;u0`V' 6>WUh(ѕc|t{-)[dzf$NJ)Z@~0n!fȸA (m<#, S03G!b<{s @ &"t%X%r3+n=^coq P}YNCp#k-b!=Ȏ3a*߂^7=4Pr6 y^G0,'!W]Rґo .#)7!ӆINst5I7q3<\wͶ:҂.jQ88kp@>PF<:9 @ ;-h Б -Gx9Ͷ=|# BxlNI+0` ȩ#.S8sӳZ(EzYM6DO$]sF8yW޲KÕ\IC {b|&@k0%r&9ɁPY "[v-C0rfl}GbӍ> yDb=\2|;b(9a=ix/OFۋ* 3/g|Qa6WZ>z @>W eBOME @3gqރkPY:Hu%'TECO7A=ȡ֡Ba{~97 A|:`F4N#5V5^lS=zC9 ML3 1%l;H͍E r=8>95DC-pKl h yçEC%"ݹm= y9>c>t;,C`yhGzC8Kd$ p-|P"$Ai5M ;d]CLOU  H::t謃$"NlCD9qC)S9@P;;7`{PGH=t]D;PWCJbh&ii-\=^Y|`C`-D(:>ԉ0T KDK`>tOo8H>LW>؜L]>s܃vQf^X<dK,c_Z=a@DC͊%rC_|K6lr,Hy:tC-e=Qa%XI(_\)<2@d@kV(D Ď T ;D`o %-(&A맀WT|Ж_G@e%? C,vB@]Q@6>-Fޅj.H;.4t<؂<\D;؞<؇l// pC%H @rTD\e. %;D.xbh+@F;@¬ؑ"\W!XS, t\'D=[[}P;7D(n1w16jELƄKlqDl=D17rsNt؇q9 M2FQذw1>c (D@@D 8KTti 4EAC@rރ"XZB%BHDh;ģ+Ķ^<:mʳY:p,gJ3-rC381 !ŗTDF8g,sWM39s@AڄDK]Y@'oFKCs>@y-BGLCC*fpA>`$*4D7po6` HKp; CFP4kN<4X+a<2>C@I#1TGTO5UǓ8f۲UZ `q:$,i4 o&(TBO/V5\ǵ\5]LT.T;Ԫ8=)ِ5&NL <'>8@lj]We_6fg6pf?O[+: v4Qwj6kkvpBT6!6loNo6pp7qq) hq/7s7s?7tGwG,t_7vgvo7ww7,;Ȫg M{C\D+cc_ BY˹8>X@;ٴt TΞnvX=,i`@(>ڀp~8պsF}d\@btY=PL Dt@LLCX?FZ4>@~zu?הL4 ~C;WL s@@|{}0M_6s_@^ Sl(t!A򍏍TC(w4xaB 6tpay``eVGPZTkYp˕+e4زM sdw]B|Ndp'w6 `ڹc𞾯;7ǥ}cQاON ZĨoއ Bo` 6|qbŋ7vrdɓ)W|sf͛9d +ãl]x'yBxlw/A pp6ضUỵ]Mh|]ς:Bw龄ky|d랻hzn pQ,@ Bgh}l fN؃G QQ ~Zǝigw :A-|v^G>Gw& g{(^hGxi vE1@n٫ڸ*e~ v@ڀw9-NRPE:!3RRLə)d䦝s<}6{<0` Z = qw{يyovїsF@|x|*{ ?K\w-Vb{7Y "$uPJ:x/8>XB)T YB)lUC70!Ӈ ~@5KqJ`@2w lA܃*6i(m{F6B0O!S!^4cXfG(1;CV@\ H$vd>8 B b@-*I1H16ܰCNVp^yJrHIjp% €}v'Gb„O4ɀ 2{Yiڃ|k/=FBQH|ddCy,$y`` 3GoƐ%r,5Bḣ:Di=iBѫ(~H f[G'\@ (QTZU^Y*;8䐡0iI `!X@lx`,\*:p{=l;`wqL Z:QD`G (}'~LH~@&:(f샀X#7 wvRtǁIu>'~~6X%K{x7YR [J`@kw굸m s Ft 0 8}kahDXrȄQne̤lI>0]HyF>@MVВ(\`]K| @qIȋd-CB܁a%ܙG %Nwct A (KԂC (V\f3iV.+T r@P[N0%:#Jޢ {02GpF_'?9 À ;̢)&= ~l( Rc>DG7 )$;&+SJ'g`d9D u>&uD|A5ŁqM.9x@ oL>{-ΰ[l·=+5SE%eR ) 6B<1H=r?ٰAw@=+H/Բ H!on ipKFėJΤTb 7~@hoT@6a^vK9V@Xy a -UN2KE w7XH=Ѕ-qd&aK,1?-B8}vD{-aVw@WYxL;1<5 yB ]]`ȀD'`}\aѲh\_6$càjﱃf_Q.!s@G Ҁ-Ë! 3}x(dZFd|g 6 !i,T6t%| bGNU M1΁F%!rLsOx&a9` J`h얐  P et'B 0 NUVB b ,J H*B hpF6ͳBR%0%vC|=HCiϦko< ^T!fAoi b1!kE`Hcʊۚp|Lt j=!! "(#ki!`(h tb]}10*@ܴM|p) KŊ6o !"#R"'"(B$!h (z.0Y`T d h&6](%Ҧ^%L 2q4*!PB&@Bj/&x"XH..` %D J a\!$@BR'(@Z`!2 IG!T=2!-ܡ_,1..*·]r|f{^[ A!.x "~bMFdCpⱚ 3". <@ BM,4?* v"BJQ!0X L0 Rڤ#`F "T%xD'OHfCO"`dTD G+` ~AԘd8Ō;~ 9ɔ+[9͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?<̛;=ԫ[=ܻ{>˛?>ۻ?! ,fBBD664^^\jjl&&$nnl VVT..,224JJLZZ\**,::<zz|""$bbd>>@ P@̜BH@<08 Шpfp X@XԺ4<3= N@<F)TV #tϑh+Bx=K~Pt<PH8Z Ayβ,@ @4:H;,2@C'XH6+xq=H!IHA?" rI@Iu@ !838 xH&ZbN@=p .Pˈ8 `AMBa  耩x;G<./~y=dK@I͊$`,Q<@AЁ_s(11%?9m05O>% WiH#ΪTXGMqӜhTS] G:*n,cCjԙdũ0ZAz }*W€dtjψЇMmfn C 1 )MM$>{O SE,E`TU> wŪ@$˂0׹ `+ J[K(0VQ +C]yY`@Z\ iT3D~=-/tY1LBZP]yt0^yL-hG~p÷gLc#H71@ ' tA6[#hEBu8"/юbYtY.wh AOeYT)e{\Y NQGkϭ,OL= ҥkObfC<%#InI5wNiFǚm[M @·Y D 0 lpXnkLb6Hl2ARɴq0? ·"rApJe W5WA!̣ ͤR^OB9f!#R9@vjsID_;7pBz4j{ Ps d?KDC@Ԭ*"p`<6H`se="*ث <`q|=Ԟc엍8$zo+C ú@s Pwx@*i.Α`]w8@u dK8{qbDC;_Z 61 $HҀښ\tѧO[)/\G<692@>A-L@\ѓ AByHJLٔNPR9TYVyXZ\ٕ^`qq3zn1E ѓ2F)tYvy0gL-R0xy ~Hv"BygC0SEmæ.P4\1Fu])"Bq !`yzֶR@ 7"0SP$0$0Fפ9fa8u^β1_ $ [UXƘٞ_yvJk Ys^KKWpGrei09?4PIڡʔËabQ%yqa"pk w zU,"Kڰ p_ɠzH)!H8/R> .כJg%90l0z"`* fW:,2pIJ:tZw׈G2Q bK)PS06q`@]H& ~ +dکJl qdOvc#W#6 4p+p*0PzʺdJRJ9<'ʖ 4 B#R +ejN:O&@:"dfTPp`!T_\l/@d&efÒzM% 5j8 !"E (67+«0a-<۳>v,ګb*IVٙW^nQ$5?6IX!%"YqXe4b PYR PR%aWk;sm`!&%aeŋ/e fBE2~0~Ws= =e&J1~QFwE[}u -DJ?k[(_W'_oٺHRoHNz麮~x//RDE!`bL1ZR_t_挭w|:N:9KPZ_9x.[ѹE{لQ3uK2z\4R_0>0݁`o)!@z /G[$ ۏHbWJ_l.o6$`.{ #/?h˗p=t#.= GֵP$6)FuDa;-~\Gຌ &Lw庆 \-bH} [N`}TCWo]%o:vt 2>} 꺅'gGyF Ky D^yu/t]*u<zpdybرeϦ]mܹuo'^qɕ/gsѥO^xֱN_:H{dQ \{+$\;{Oh,y $ &ދo;ygC+Aj6 ţN^C ?#7'i6Ip{nj L3'{9'1"Z22a*^CtM8sN:NO@Cʪ*wp낞q2=l 'E3Y'>XGDҧ*PD"TyFU5I}pB恀SOR<✆$ґJUVyu\-Źuɀ$Su0h@" ֡Djs FՃ3-"Gxp],'~[Rɶ%٘ \y.`@SVye[vecyfk-) ǂlЧ^b8@|tp4{1ȄY0K|0k i'q zCu ( ʉ)` `i !&mV =(qxtNm Ӫ8HIbz(mzzo܊li4|X7ɭxe@SèWsM? p}d(>8&y~~刀WGhq ie\CHLy%$mG2tF=@Kq) 0eG4юI$ \H*L]H y CHZ )x̧.x'F!x#bT~Tc.{)YfЎ6:e{ꉧ0q0#LI\wf%* z O@tBJH,-de+]JXRe-q0BV R$f1yLd&Sdf3W8^,3yMlfSf7MpHY#2E3dg;NxSg=۲g?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens[—A׹ӥ`F"n*.4*x˟e/O]C[فwqN(EG؄wiP@zss 6f}Ӽ|T-K8-ЬVBW+V)H͌#$Y(@P@|pX xh$(`**ZG;|!{Q $cy\'uVb4٣ .f# ,0|:!X\drf` z@bt§$9pa.b7my*^ ]OGsV( ]MSS)VBfXǺ8Nh18gۼ:L/=PE{̾yuY@ǺH{Io=|[aKmmn7uKZA $ +2;z$"c " "@Ƚ@:H FРé>x@2OЖTp8N[K ;t w$/@]HG`MϪ :x9A֒TҗsEg8@<|?gDNr`pptg}[OH&Le}B{[]!&Xo's8J2:)D \*#=jr0l>C;2"#I) k(/ɇ3aN@u0/hy 8`` $ȉ} n@A⹄' /]@ k>AK )>>IﳇqA8 Xzzp] } 恃 8*Z{{ kÿЄ A4ATi81H L,A2L͠}`P>SuHHTKd+ !7Xɉ wcIcp$sHtJ y+FsًW rB@! PNV``܋1 Qȋ)Dt Z5D:30 h rsm@@z^"k '# –ግ̤L˲XMHLL8Qp0PhHHIіP|OϰL $HC!OЅ%Ft4O(δlN胃 "yuQ-yʘ) 5 hX gix ![֊Ra x0Nޞy4Yrʈ?mX9,4Dp6D"|Y9l1։a2uO (x8j!7Ɯ9[yJٛ= `Ή{`^$2,ÇPҸ|A[Aaǁyg;ٜI8yk!)%Eh |9CSzjh8UiҤ0 TfN픩 * 2ˊv#1q Q<ЁLhQ B"*R!ZĭׇB 8Eb$<݀ $1iࣞ#U,#LJiwC9N{fy1 ؖh9"psn=5/P` lpz!ʡs!ᮢ uhz>\2[% @'V+bSТ¸&*.Zf{Y/w !/􎹰q23"QToɐhծs;'_ '9Lksd Kq;?tD}%?qlZc1INtMk2]%\N&O_t\h* tXuTWXqLZIzdub/vc?vdOve_vfovgvhvivjvk-8h13x2u#1@=QkoP΢ux'5~vsrSs}P({$vBWwyxJrxxw pOY8@ߊ H7Hp<1c-__tN率'Ooy@)Țue )1p{vy`Zh=;0{tzz׳~){y(Y$w { Gg,f 13وdu`'lEE S9_MVxu}Hb4~} yЅ-2<р;.'|@| =]xsχa0y 2l!u RPŌ :-8@ {4t ^1&BV:`WU|CȤJ2m)ԨRRj*֬Zr+ذbzpN }jt[9B._܅XjM+B #u4auD!@bPy q69HG;s]JALYvj[)v(\sѓ{¸"$!Ɔ-N+]Pݻ3,=y\`;?W%d^VlݖA#CcR1j!z!!8"%;эt֋eB P> S:,],C5]Ix@\6 =E : t09:=SRTR(>0)Wr:&y&2'Uo9t1RgS5:%\DxyhC(UA& :_U|MYZcHWih9CR2FE ;,{,*K<@T>*I? P`Hq$ iDBA:0E `@:A@>\C?oD (E:&H$0D= T:B@GA::#@%-?n%6:Q !h=)% jN̒}BhL@iavl%=a)KZF)?Tʚ R֓~\X4D`C;MfSyXdq)>{ž͚ 0!!L5;y֓(h<D;5A!@D8SLG-SOoM ,/b*m]M&HY=)'c5g5,EWm=r9фEYs GW!H)y ;)OzխzK~W]q\ah. S.~1CеhC>u5rcC V3)@H@yWq #eKIjQ2m6_p>{Ly mNIlS99f$RNH$BR!E{#:n`I`qI0_p1`p!fX1! c6ߒ~r6[pO@"feB&l}IY7$k2Mח5PJ1+ `V+jt)f1Lʆ>e/Y {7>JG CƐy!r }i  90xw` 6e !rױF D)nqޚt"!&4< p7y,!_ rN?/<W=KSj=p[V闋+' hALz;S &zCF)«LӾ=sO(ńOҼQ_-N`T0y9@:.0;ޣ݄̄JIRAYb1C' + /=@'h:@u&eB4@<2AfFDA^.J~EH+ (#(<9Č%EMɸ֯OkʃPa*g؃6C FB/O&@O_4a\LB&C8I Ȃv'7%Q4[pP>AtR %(X@H|B(I@X y Gw q[)ޙPV(fB@e6'b֧~feCg>h} Sl(Q@gD>()HFN)V.̃G7((H`:eD R:$ DUTy$=Bā=ǧp$.di]^4K7]a D @2C8$;&6G\&tQZs6 6DJhA0GЉ*2e A+?E<)fD.DPO>b:D`>ը !ET>&hXEC-Ω& :2<>)f*-Y>?X:\@Cj?; C.1h@@8>".U(-<0֥o (:j~(t?h>8(£@4B'`k T;( D6RD>9DH?TF$'GD(Y,Vc:,͒lDDz:.8Ó]^.fhB?j߼&'dC<6m(A*`$Cr[`On+N1*_:meeE06i?8̫ D.ݐ*ARn(P&HDFa:(|<\Q*hӚ+A/Ph 09<9[= AF[4\ڢtE5ne kf"P| <ڃfF ڃGX.h얨@.:EX0C cLBC \o&,BK/2YtvB][ʰQId[H|pY-{Y@:Lo#B EF<аF\- D>@@3IqFDg QX==/DL2$6KT @9$r):*C9WD/k<D$te]3\aNM6d"x=آb…6!y%N(m`@=@4ޡd)ʃJj|d4C Ds7b"8'K2JD&8gE\9hQ lPB$ CD\GX07nV 7X96P/.7<)oq@V)AݥBA|[Sv R=(8/҆Z<<9H<i!ASHÔI(B>+ۉÄ{8/:3!ç>ja ?M<ăc8'Cd8DA:P8!m;ԄvJ|i8wU< =߹{>d[B6PRV()0BQ3=CZ>hU×ZI {]z ף/ W|iʼnBp+^`t\1D@|>н3Hx{YZ<ػCdl}UIoWDN @J|> T` E̿E)0_ |B.C}/ssd8T>@\jB:Hā,L@8,w<͎<;ȂiƭH8 \npKX*FX@lЯB$<`Z+ &Mi|J?a@`M$Ȃ=@ ΎJĖOuf!D;{ʻQ έ<[.<`o]=E&~8`/t(u;9Q'] 3yNL`^:!}89{H F:2>0XDSSu4pz.TYù8DɊR:ytaw֥EkOHlՈμp=Gs0:/5a5|2DM*Ƈ g '^etKtn \ :1Xi~=1T={&&N 1f=}hz?O!EuX'l4쑯8  ,̺;Gt7 !$K XKhChsʋCĨH^; | 2 /q0vĠLq(y$" Щui!T9I"[*[D 9/YМ1)T \L H/tБ}0AmlI 82nF`B6',?]}XeZm\uݕ^}`b=؅6)xJU0?dr s]]yx块z|ݗ~vr3^,86Ā?Y' +D>؇#^gb]~emu޹L b$^oy)Z\5$2 nx]ɨ臒^ꮽ>mY q`pqgM INH^n?_%-5ߜ=EM?U_]emuߝ}#wy襟w0ȸ`xyaU\{~/`l%'z쯫#{{ X@j:$u(W #$ [@uruUtM@y8tdBCqW^b{lpW0 Xxy|)=q/p> _CC$Å _#A ΄FiTHYȇ ?c#D  y2 / et\qVʃ:'L˟;mœ%Q?AGYR(=p}#jH{JQ`^&BJ_/)(XT)Q%}GM;:m)z(NW5OnVRY(U4=?ř 5y^7]@0ߑ(<@S&O}ă֛P"P]Û"M<8䨸NT: kt :;TT9h^:cvKa=,Z JTI,a X2V"<4^`"Ǎ-M䤒 MK}: ӟ!b5ѡbl ȃ:[Dv,y'BSC@.cK}Q'7J=놫mmn {O:TF9ů%! +_7/NlMoT;@ --i50@&fQ4`18M"<Ёl|mDހ `leՋ,%@em7$,JΡh(Q }dTH"&0F' }x$b#[,Gx#5J>t|@6GhV AO }D/Z"~C$-Jc, ͦ 8\A > Raj=nS/<0&!]v4uĻ@>@= t$O~gߙ]ȷݧ6-NIy /qB+A?7D #J iUJ4RT79і o}o' [C x<l (9 L06AQ}Б)_6|)%U&%.C{l2  gE iZ8,SL- YG sS4!D~@:C~&|PV(|\!_uWxBPq@ A3/CʟXmVcD`:D A&HfhO"Z锼B"t@ ց|eoI/*ď0@!Ap$TT *xP%VN^y"T`'pKJ8 cȦ)  '= 4" >j%O p\a* lbM$hzbN9!@By)>BL@šB'fo" ŀ:AoV?a3fB&F;km!q^0?Ln &BGBe mƏ,(:6qq\R@MQip.eÅ>q&oѢ!1NBo&j",E EI ix$ć'oo"  !ֱ P(^" a*p"4A$+,evi+ &'%#$'`׎*#e(!@<%L /2$DSFaCA$* n$ҡ,`LmyZWȒ/k-B-o5F"At!\A.QPA*b7!J5@ ,5]%2i"$Xt$pS7u4411LVD`aM"Vs#$c&s* s,0":!WtS$B?꟮6FE\o?ABA@ gD 2Q,WE[EՅd!@&!<]M/6}6 2/.@,Mx O2%T&v48G;L85{"4/`^'IH&}(h0tTzzےAS $^d[:t vA6A OAO_Oyd%@&FP)iBauP kSjK)cJ,-dt59B!R AW2N#bfU F-Lj9.rBlU5UaV'X$u&EV``%OA*$AK5r/ XDt" fB VoY_'bI~0PmcOٟZ߄ ֮Q.2.: BW7C/8# nk "!dgS1s_ցd:q"HP>"4ƄbJržZKzv$X%& AAU((Qr*Z".z.$VkׁRIЇ2v `"֐=ٵ_tN)(QbnVbVDL MM씫m) 4 d6iH6FTV#$6~w\ xb_Bh *#JKo@ C+l o¤0LЁ$( xLs:5XEp Mh_l7k}K^_[K=Sg"??ϨlpWW/,èjkC>*@"Rс |o,Nǂ HnB <0… :|1ĉ+Z1ƍ;z2ȑ$K<y$><`&Ϟ{GPV$)`}^Z͛A`zP|[/t WoQXGA`ҥMFKq5\Ard}!v@!-n8ʗCL!a<}>0ZgMRL[*UZ V,Yhղu W.樂 ̻q㔍CQބNέ:كC C `H`` .`>aNHa^a>p=P@A3@*c*.YZ`@@CA"I>*D س#| ( O@:ɇ.;J\^,3>79~7oC`_#;^A!Ig;|7zi1o"68]/{UAT \ c;,gi"r qD,D&4@"yPv}Q Ҋk4ˎ,QBZ'1#G(&RPA-d鐃$5l4$"}(@'bG?^1L &9EPj+ MdGL?ىa_iG = 9,RY9ƛxμu|_ V$%Rp{0i +0;XFz5:Qʁ@ 0`ݦ̒^ {$A6EʚKy05kǷFr BzPQ:*8ju-+s#A<*%8@d}H:\;5n݁D7ч>h#h/f5Fb``/ kx?L!р' *+(^lp[.'E h"t50xDS6fh;uqxdM x5|16b&ch|yYWYs't \Gb)QÂqjl!,: yqt$Q<(,J6K(s1敳.D`33 }$GͲ+ hK{Ԯ#C8,qz69@ ujO_*ɩD(,`<50b\X<9qszvJ j؁$dcxBx~ ~/_ t`0G␯/k~g=: <(GNL0zҫ~o_wK=X*{s / }c p5 Zϯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏Nz7R""pg=‰a q  b=_  I1X|g%a(;a{ח xp pA:aSf _|8(;'A@;885  a÷Q(RV]@9k!62 Q5 .%0z.xYzYw AYRH 2CN)&Q9_i;Q|0  BdA Jm 5T92uYVU|9+ G! 9 Q@qQ$`u@qp=N`:2Bo7AkUPFr^@}a:P y=V2 ufa 4k) `rh۹()[ŝމe)$p=Kt_1 f4&M%Z ȩI"9 *`o Vik8IH&ڑ КUrPJmD扞=3K9 y5*'PIeQ'DSpڦ. Cs:q|mJy sEF9SyAzULp#sj꟎e2pb@dz$:zUh"j/Jpg D+U; 2IASQW[$j*lQpa |PpI# Ub@h[(*@#P0qpQQpc0<$p ;1a&W$@Ҹ!QN U6aW Jʲ1/O24k>aa# K ;aQH@VJ$|&#dgE/v `2$ )ɘ}벗负**R*,"PW +1FO@#\PB ]sĸGsb,#Z8 s\QA,qf 2eGUv 'y"(2ʨamdw,P#y p WB2œWFp jcAt*_1w,`=fV#Albbm,`o+P" , !LPa#]@`М%<|ٜ'}|;f-6e8!W 0_3scTre@0 8{""7E `TwӉce28kPD0\ii ,7yM}5Y/8mpi@#46pcCm06c< 󔺲q]Lm#aR1W0@c0dsp &eC1Oe~'% ,FoC,(*tXŴ!6m6~M3=o65Ҹ0~jNdixPp-KPEpc6q6ۺ-TՂţ]d 8b-8Qڏԓ&p 0N,гiCVfXDAvA!@qK0Bz)$S}i3Q 1?>C`r);th^Az}1Abv芸bDQ-2 AIIF a^]Kj NCb?HLD9?.ڢpDMj`jOI# K^HH`}# /? Q{nBciK Py&.lFF=Kp0t::KrFO! {%n}̷w9ٗ= =(o8!g61x3f{20:8RbHEETRM>UTU^ŚUV]~VXe͞E*M;N*ՔwÑT|>=Oh ົE"wnEoܥQp@"1c`#8Ц8̻P9{r:=Vu/t/&iAҠn " ѭ( !ʜ2s2c D1@>e 0 ҩ1S5pXGd.9!ͣ.`e*Hmz1H51A$!e3\JyɃ.HǞ " I}z0/cD(#g1pSUO2!\tՅ/X2Q)MBl V-o jYBPsIwuupMIbyV[n `d18''{+͟tk(X֑Բw8A dR^yo!c1pLP$OJ4)#24U^햷XZyz{sy,s!W)!@Lڰ*GP1&u!Vzm"2(_r :t:hZ秿~?GR:pE Xst)lp(`>pHp @%̂axa0@=F`P>@= X}cPK:'%@#""̣A1k:0|7a܃A<|0 Ƥp=T FAs*qDh)%`p!B؃ha7z|0Wɘ3qsdyC=/H>0`Ҁ7&Gp%Q!b>(0!80!̣@:QyHGD4b:hcriWA!P|W עeFDCDH##h\G=F mDn'NI]IljAHB28!@ rd f1t&pB(hzCڠR"S~Ѩ8xl`;XְElbg͝週Zdr eʅJ왫dG )s׃L B/ 8ڠ.am(7iE %0(9h˕@LBy' @2{U 6#z)%mcTJmoݦC,B#*t',5Utc Aъw=nrFwmm&]Xywo~Wp4q.xp7x%>q`UmyE>rU\--wye>s7yus?zЅ>tGGzҕt7Ozԥ>uWWzֵuw_{>v+f'{վvoVD؛>ם*GCKG|xu(Cx|Uĉ V:xҗG}U|(u!,+D ~~?|W|~ɄbQ?,'=lS?~ VQq%/"T9{f/`H_xG: pu8*'Qx"`{3Y2ű=xQ a -w)t?etHKAcYؒ'P Ycz(/01l(!}耄'h$!*L`+K`1V+N( zOB|'X|`J€x >cx{@ )}PӀ@DF< zwrG HLI܇z ESUĘxl>B2TedftFk `(PX J1TՇ Tf=``˓vh ͌v#l X(xy0P!2FiyiLTp.jiP '/ΌIcrZ蘢HV~{h(|Bހk(fc<xa pA  Yjyju L.9}H䗈]̐t0V jf{3@  8I`<\ЅEsp(8!\lQulcmmB~ !4؊ddʷx \a/vsjaF$Ӊs@}O1H $‹ 8%Ao p4 .j&|P= *5d.hQ pn~tOtVs~? HLI wkGwQϱ8n a  ! >y1h,HI w'>nXRmɞHn`oRɇ.1uȔxkupx v|if(@o%uD~pqyAHB%HP)Iި⁥ 5- n8b-.^χpEZFbAuI7Xrd8aC ( A zP"2CwB}j, 8l ju脿(p +% Yj6&h[}׺v?\ |v`!KA;{h>jЌ쉝@Dʰ׏ {@VPD' w4u y=@Țfu?jXf~mp & jsZЙO | \vĝ"n]Pq"P1Xb Pǫpxr?"D(8zS7:1!g%Gɧ||'7GWgwׇؗ٧ڷ'7GWgw'7GWgw|'p "Lp!ÅB(q"Ŋ/b̨q#ǎ? )r$Ƀ4yc>:*)s&͚6o̩s'Ϟ> *t(ѢF"N: \JT+oRZ4Ն 'לe~ ;֨ ҝ3Qu>ͫw/߾~,x0†*7x < Ytd hddʖ1K9i:{D;pPuIزڞ={JҶ\gny|`߇mZ}И|;޿/~<*XGt{esZaK'|Ba<=P6䷟D]Ds1XRuA:aE"!H$n(!N( !a@:C أ?CY?q=uQM NY56E2e}J6T! &Isi=c!'С6JПTe I*,YQ1==ZE@ 46;pOB EIJЭ Ѝ4I Q<:$E+Ql:J k-ՆbTnQTNSI\pN*OpMk]A:Ը;$سNteva@U]ؓϹؓ B82]J<:s 86hɂTAt4Ed!ɖ@=y^:0XI:`1B"أ$C3 0sℇ9)PZI=桱zģN0\AaR[(zL0@b((N"p:qg2\PY1yC{q!NgL UNXd#2pR& bzA )G:ڑ P+ o|blbV bHb}x&BC@<@6d!N όx9_2-O'D(G&h9>H4d>&}t|QR2΄4JkbS$Kcb/:Rzt6)os B"jSyH%@ c,'aBTf)a2ґ&)PiԊX|R^h>#sFШqIE-Ev@tEЌh"6],cAªV" &}vrt`5 =d!!Fe{؃6bߦ) Ap5ۂ<vf; v iQڂ( r9;@ +66ժ^5[QoX@CWG"(+E"\! b2$D ?mEE PQ ,#Έƅ?_qހzo\hJ1Hx@L#'x4PݴL<sVM >Hpt$<{@~ᰌO P@+y"e#G:AA=#5g7Aֱq\- qwA?e#"E򕷜MNϧ5v$J)p,Wⵞwp ^ Ȭ,a džB n}6T:_=[z$G@Q92q?m[Z msPi@2V6A{7#$ݯu>$C:~a "ѕz KP}XT>ePAA\"LCt:CDԃkԃx,䝓׆`5% ą@4Y>D9b[ ПA$ E:L@<0׀@!a:P@,!Q]`jRյ,oG1d-A<daAԃB Ń<,[hC<$A@oA!f !*D^'z'b(B{C:C,?x:\@@?l.Fl!bX@FE蒄16za[[D @:ȁHb:(jҝZ<< ȁd3"W̭6C7~c8 + ;jCʠ߬Lgu w h@ T]:ħ-mDNA0JfiGJ r=Pr@B`iCTSXĖ2)ه78ֹ<3:ӀZ=@J8&E:OŵX j<$dN :؇M>|(R ݯjD+jlо*T=D>[P>~=D<_0Eh 9z @D49@4xؑC.٣<>$.I 8̦%"4gr;.@4\lh /u/5o'JpY@ B/o>/Jڰ:+qBjnm=l%ɤCdٚ,J>R؇ gUJ:`m=0@<L=ܭqA$@& qDdQ@%<&J$Sr%[r B}x<ZCSoՃ?Plt)?d_B$&B>@@}4E}(h5Jܒd X@4h< Ԧ7<(T&I2BGbܫvP>0 YZ0.2(;ybt2GoeLTV RLdc2DoxxoC%]>ۇ>G=2ȁb4 1:4ܠ$0&yC{?x[Գn7DXp7T{Fbac<rLDttdPXmf=Dz&R|FrLAK%{805-L{;:A0^z+qݺ|zuy5㕳0l `SOF:jUWfպkW_ axN0>- Pπg9S `pA "k&@=9<֭hB((`KQVukׯaǖ=vm۷qֽwo߿.\9 ;;@'hu t ay"y 0>0={ )x$ P T-B 3Jd g:R Jց`g`*AY'ŁmC [ R!,#LR%l'T``{,)yH1yBtʁTʁ {T'uSϨHRA {@zg="\ΫQj19'% ́tK j̩] 'gH $Z,T]y_ Va-ئ:x>:Ciʀut,@`G?3Tt` 7&=VyN }{4x/(u4{ʟ ,̧@,"a Cu (>{LYDP!}8P G乲v m!U S`m~rsh#xP`{ 杣1 ){08D!Âx`FIӔw2@Y"e0|uv a=0DeR!),t|IpHXExJ@FTrKOAH+Bz P\~'>) `z {5MmnQq8%xd >rxH 8I6 ae5YњV$!!m W[W}_5aX.kc!YNe1YngAZю5iQZծuka[ΖmKvfcax\X-X@֦OJKZA;-q]n*O@A5=PSJ9Z]4 :c8&J:]q8AF4 d Ab&=t[:pGAQ i&>'#nӧm,5[|H WԒۃ`x ZHx:bqtB9!)A)+s>#K,b>и~b >7ärz 9QA A58KB4X:{ m#Фy);AQH4Ģyc>02F)K5QbRH<wRٸ*vNpA4FǴ)!;ف &Gd# fR$.yz`1Be>D0]~%9'CCֻ ~pDt/pTH@ %\Z{80ưD%.AKFҒHAJპ D ɓ)͏i)IR.hb'zėب|4P(GcQB@N!n @ t 8` k>(n$mڮO"` !,K c`ZP'(aHQAr!%r'B"3v/*#L|S"N`C怭T⑴E A#!b!*/(!f*"_F Fd Jx $zBpr++ǦCQQrb&<f)q 6‘>n*H+A5 5*v)%,D*0) :3@t@%LA3c<.": -TLA'R"A ¥ ./B0!bB8`)#1 x^FA 3Daؐ>@b%xtJJJ4KtKKK4LtLɴLL4MtMٴMM4NtNNN4OtOOO5P1Űad5QLE+|йf:${įyΏ+$7SAkh΁ HHah#l* 'BUCuX5HİH6: A?vihTPffpRJ:Xɵ\f$ZA;]ck&Rp+m#l϶ϴ5+yz!aƒ̵` vEH$U#wLS*f_7rm Pƪ_+)vdIvP3Y @z$3Ά> B fwdʂZ MSE `Т(Aߒ2 NE9n|$a.!$*nuʱ @_?.ےM-wP%do)@Uc'Ї43, ]qiS L`.B'^B(&DT.$("Ύ%\"GgˆpB'x)"!B*ﴓc @o7#V Za!u b Vu] -`p{=KqngvL|fbb a$ByL$lND9#ց>=)>3߾/P  ?HdVNQ` 0⼷]r'Dx'11a/W b"Z"~k1bppF,`4&NO6(g@DDbX v0x|h A8'hċ @(b#\ +&)*'KLER}ACsum! "yJb\\]%[1tpKneql щbNRi8uٯhec4ghyzX~ B)S#6t}/)!,viAjjFEma\MCpuz&/,/@֦mZSw2"'@$׷,TdrsbXTA+>FCπ ]nr l@FbnE11 n 8Bdr C :muGbv!h9C&2<}w؇Lpm_uQ˱zi4pÅ/92jBq"uW\awd2L6lxI=3ɮu_7bh.nWEA:& \pbxY=o[ywzĹ)."_|}o Oo^$PTx,3Pe|/X3X>A!g$x;(x? a[bW bZP >\ KҳXNa^ b#4Wx |㡂]X_D8NUc0CĹnPٛ{_ "ҁ]u^ g@I880y"Kmx)3OEdH${H;g࠽Q .$/e&&0As~8|h ݾpd#Kjʵׯ`ÊKٳhӪztK:$1Po߿ LÈ+^̸ǐ#KL˘3k̹` 2\YmՃ+i@儃wy1ҟ'2\w,h2:(ԫIKgٲ+ Dw1{wI'uc6 sS:x@?œO+q~F(Vhfv X=(yNtr%)< Ă>)E|MR)bI:F7[ä@PN'`E<@~h' &A'kt9T)O[pT=!@a$A0jc܊Hh:vd<W+k/' @? A>(N>DB;0'^:tJ)h\\ \<'; ; q4Ɩ&P#|&أ#QfL:p'H Z̠7z GH(L W0 gH8̡w@ H"HLb$0.8@> *ZX"DJ"y_.zCH\1:`mẒ>4h6 G \Q(dԢ:H XGpv.4q08`K͒+LK=H_&*В<<πf1E% k cI"" c ~R<k*6aT`{bRs>H܌8sXKİjD(r-CR1>bxВo\L58p_ғdx8`d7 s X >B$j\H1g/v'IS3Ċg%Q0#f#Qs@Qs -g'PZ^ӓsBkE{0 |H%rS~s:+4!QBF5YӴuc,f$%=&%P  ^`X^0 Gc+xLP{sq_u6 %T  wUfH NT0!jt&0?(F X>P48+WBLN_c.6OAI;"Qe@%'o60# {XQ ."X"~Ǵ6Kpf0 0F4Ћ %.sV=pr& &o ,Q=+% 5) w_c8Y,6$jF- 6xR.g"%ms%.,v84Y=TiXM]0}*^`pX30pd@4am0K} شL`81Yb!^;bu <_ep >P0TfJ4D)`_Pe"%*c0r@ 2[5a8c ~Ggup4P#52@W]Ac16;@ i;0$69A%0Q&`H < D +o8e0"3 @9l 9A?ȩS:3=" `B HUs,bP<&e#8cC:2:%yZR& a<ɔB `)CɞBbLDʪwyZO˴\dmC0l˾<\|ȜʼҬ+| @J^<\Νasdyr`E|(fP HkYã|JB%U9TА }pHP*Vb@lGPES%^,M.=16}kN$Pp9@cAr[QN\MaT] X$yAԎkV,E'hj 64 QVr=4[y)|\񬏁dQP1_kjzGTrFs3 gd=3Vh}tڢ]p|3SC3 PgAyL1ykc΁QGO4E_k(bf PgMI<-'04BY' ZWQʰzd>قe ˯X*YXU[YYUĝmU`(C\vBp<1='%QD1дL(-kD} gd0&cK&\aa';g+[d 1%dK~b)6b.F_u_0`#x()E#po Y15]$ BvqP5[E]G@d%oJUn~̰oy̥'De= n%,UX{RkdT޿ok6h6m%`uՋZ .fa' 3dz}foX&  &0 #`@^NGGwUsЇTX/={ǀzG1dYJ9hHѬo'f| Zxw^z^|w_~=Ms8-/]qjYiL'hQ0#'Q+y.>|ٕ<૯Z6>cE8OBHGyr ֙J yh.^@4v\k&.LdCzI0}h ()뎬+j&Dm,@8I}5|r+r3|s;ﷄy|xXW$3`1ktc}vkvs}w1|`qw Iw裗~z꫷z~1i\,{{W}w}ҡTP$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BrhPIa}C QCh0f"HKX4-=~bV"bE0Qc 00+ȉi=thghlT>e&F#cd֗udd#H!]`JaQXH䂑$"dm@ $)\yK\R ؝9>&rIBQ#m&cC x/@5MpӕD5NeD< O%'O\IAQ@Vz @Hc>?fLIHdxk xw#'3>"An2h˖UKejSHl80 @=d""vLIcR^>޴X*3:ZMkqK"K@'h98xDu\M2TyéA*^fVl|؃!XT3x>IF:\@v00('Yi bV#ЇpT n€w-Nng32xW%oy7j L1AGbĎNzYEUPw:ǧ 2d"9@:RP-I <(,3ysty#&qM$vaH$0;Mo| j9 r !5HZ wp J4ʱ4˃!{Zd ZC;>F1%6{3=0Ч^g=eJw:%z^\w䱅yW|'_"_ҍnoӧ~~}_'~_g~_}_ށj Ѐ8?[@lS}F0a S 1; twK "s@5!x l5x z {S`A}TA(B= X;؊& о 8' h.B8ók!+0 ^0:;29r%CG|D5'&;]7ȉ t kp '1P<uw|8B #s@=yuDuD Q!#Zq2b2 k XnDsty°dy7mdLN/tuhn!s ^I83rʘK2}m%x1Haܐ̵Щ,|+vmmE (z8N PZspx8L0mى{Nyh2T y`up88CAc|B㢃Tc <9]Q(QD hn*OBг*CxP0 Sr̂x]0"Ԕj8(1P. V鋍yW{W}M Km$ )K";۵0x%lNs Z]  mȉ`NhЙ*i{{;+6òЄ{RX0@ulȄ7eRwkY8@Пy`<)@LZ˽\G\\R ]Pk$]M]%5}]؍]ٝ]ڭ]۽]]]]] ^Z=^M^"U^^m t a0{̹^]rbDqM_]tixXDN˨_ȨH ]_` Eh `_{ʰ# =<ˌq`͈` 32*<1CE6xx f|(C`a)D*JXJLlNet F  !.#և{)r2Am(E[(](@8YU)>^m@blŬ2yYcI pcaE^d.`F3z6Ky@tGwKdPMV +&*oц89J++2)(zKMR5Ѐ[ƅlȧ,9TYFfp>8,1tˡ): $sKB\uv g,mrQ`-!} H"=d,21@-ysPp.p>i>8{1O߼> P 3}X0 xZ퀹؈ZwxHmij XQ+_vWvMb ȫx?yH/*Fy9HFxy3,iy/z?zOz_zozzzzw{x(xsl5zz5&W!5TRECaҪ{3)V(z q^}/<4 3Jt ;$` ( 5('ˆt`hmR϶0@}h!s p콱`[@ tAO2^P"yֱ@ߨ(_h~~ =# j  Bk"(l }/c8S a!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:wN΀D[gCtkZo 4*(ڊBu z0@tTbPA:{Lx$aB넼@oRy g z XU}X]1f:NgzīH=(p0@>1u(j"im>? 8 x<]DCBFQ(O<Q#Bs@PCBp!xP<&,XOxAQԗ=k5`>f4,|QV(]Or0sci[ZCVD@rbjlDpd&HCYDLV_U^9<;\::&xRa"<9cφp *SBQ HT:y***:* 1Tc]4: ftxD!A#<L>1&tX@ :EBÀbh =btZ…'5W0eL,rNE JD=Qn0C?b'4WVH&='# ;0η*4M;4QK=5*Ȉ\D?#D"kaNTiAmA:1)Az9qE<;9+KNQ<'I6ho42 r#Ḷ:0CO< tJ.:馣Cs F MglCQ4< CQē:~߇?>)[F:;')_' 8@sH`ؿYlDqXLN;P򁱇0 t0AvO#!X 4X:<ʡH~t  l9)pCU#=~# _rmT"C`& CR;*7^sx%X>&g=r$+ywdRq려%M[9} H"R7$r@%瘒# >XG v$M9cV֍8fO=p ȃĦ6 bD}xǼBC07   EfFv=7 m!f6ˢ4`=882=HLg!4#K; 01F4%jNSb P,L! ɣ&bz6t=lXlq\;x"8P.B do1!+ؐ =!Ox&δ b0?:AE|`; $jSղ}-l[r1/1 @K(>P肤f<p So( w5t+%ܶ,$xg ."@”,L20+.p~Y.R4"8pp/ڐER] A$Qr0H(fNic® pDLé^!9ĀQ81c y,.<p 1` b|Q` VAsS "{xIG4 ' C% $5Z;1큭60u{ 2G(f `ZTlc-YӺֶ54+ !9;0JQ*3)1)F$=FM!<* v-͈-!sQK`|C<`|a k`8/8i9ix`p-.M@Сt y,Q=P ѿb`<$2ACVuh36n-5gb:\sB=yw(BHQp!@q8PV׮XWO( ]Y:x){k(PMēuf,q@U:r-ѓ?=c;[CIgqjOg1s ;' bXeO{^=6Ľe&p2x(9y҇D1ߔt&"*? h=&\'Ŷ[ IBÌ]DZ ň^C,zeD( hAe]Fb_hCC+ Bdu, 2ů)^BܟD< .=\=P\}$E@   ,tUD [C P!֡!} TQDΨ]_[>4]Q E$ !N[v_Pb-Bex:8@f =xAF>AN=C׌2TLD PC:ԃ빋:,CBO$PP%#D4TE^D =h[-CICW`HZ^ZCrGibRY:We|,E& T`&2s%Q  ΈF<(Aҍ8Dle$&`?\KM R~0ޒA|f FN`xB!@I pa[\@c0Ќ5˼A4GX'@׿mXQ\PxB|EL&X.f90۸̡zAD <|IUU;V}IɃ PQĚ1gE@u!6)S݌G 9걌xH~J1REB]B \(+M8CaC贃aX$<= Xq<\dE=:Xy<,gs0S+{D@Tn9A<\!A̝Cbke@䃉A=D1{Xc\3uA,Ҁu5t pS[eRF` ԎLTSX)Ͳ]ĥ =F~~Ñ/ƯBHxHQL8NXޗ̑L'chC;hnM>DGPp8 PŲ[hND(#aFDp< E BAI(O8@PlQ(c,':(xx<搄Ƃ4*׮)i:?\b@䌌q>P`qPGDD tR@Exā,Z2WcdG@.RJ< $а>|Ճ?8h`1^?+EH`q\ܙG%P  11FX*B_ I0 $YB}^X@)Gcί7388皂[*89V CT`n@V" Tj:3@@ S.Ü t.۱>,$%Ўd0A4HH}3IWO^* >I4M״M4NKI? o C*kRtNN5R'R/5S7S?5TGTO5UWU_5VgVo5WwW5XX5YY5ZZ5[5SǮJHu]]@Xg^Jd\VPKH acD)[7c?Hh ކa za]siCj6k`6G%:7fxq:\kF4B@ _,!E@7W|;6LH̘Dh\tn3:RDѩ1nFlD &O\PBw1 0nCDX)Cg&y0BncQCC8@D76׸!WPdS@EwdDU`Y8PW|EXlĐ_EVP<\]"ڃD"o,a$b4cDdTfl$biƪ<@Y6 SHBS3*x4NqCz@+t/bC ON\]4QP@pǷnR'&OGQl\ *S8vl=yzq>8"@<p_ `423D} Y{OH5`C_ȈH9@}$@=`TT]̞wN'xnJ‹J BBGjubQ+ΰrp_KoьRt_fА ; {LJb dqf>>JC>$E4iЦtdDIM }X|(޼M6_ c; '@7utȇ;śqbňkQ9;h1<Ȼ@ TȧρKI]g/_LjhG'f$iBuX,x0a_ $`m@À?O]h `ϧ;mѬMB^Ƭ7nnt NEt(``3VEP_g6:׷~ <\|% -4ms1Z`k2ǞunPdpEIұ0C NLqŋ8 (AF/2E .#}8R2 u(EPTQ?ұ'wǞj"Lh+p)&s҉ @׹ A)8\΋ >t1IT"Rjԓ9MQ.}:ȧ|DŽz9 3A# XAG4127M:@|3A v' %HYYGns✄HĨV`RԠty=6qS b]x/N ~'ΈRIzz⩇ϋч\'7 $M.*x]|n>)S@GKuD[c<+$@z^Db܃DC"{L#A&Vx9Bp'/]<s`j="m%&`M'ց(@<ЕN:K$ q 1c4nܣV@ڭcuH{C;`A^AU_DXy1} S:QS1"%}\5FDB6cЇ0Y(E=x Cl O C cbKLѮ"І.|03%ɗ62984֛2ܕ<͈CV:,N؞5+iW}L'x3;x{u #jۉ=cNq<:Ў0:d>J`@m!8;##POnJ=*tww<&Yq?Pۋ&<Ҋ3:JG+:z~(yd-Pyk/?m4 {E`Ӕ?:ChwWp0LPZ-m;}Lk~+pFjM"ht%\*0K#NmqDNL /hasxKzn~P$i4g+B40"f"®Bq0 <6*"b*"@GbDbh;ABtЍBb Jĥt<.!\ |'eJ:.B( r ٬H`# vg vy CH/"!2 DRН F1 1BA _NQn[f gjEK`ה>.(@3R"`VÄLda71. j!e,,` !#ց>C϶.! i%R O&o'sR'w'{R/"ph`#F]i Eg:r"*# ;""0 } v)p0rͷNKd\B^桗ȤG* ?Qaw&n& F.`ڤ/f"g2%P,2% NAlE+JO/5'p|18X0:|Ec64Sxh53"QF "BC.rr+1:(t"5#"P/GDB^[hB-0уG'HGR'!`\2E7N;h|C1B~-RBx^H!*CoW&5eA(r(" Ep .S22@S }JTJJJ!ҡ?#">?!]X v7&2@9i))b$ дaKz”Aˇ \EL`)PoG=ށh@I\b"t>"@P>EsB꩞ IlHF FjPL17:`Mjbqb7ĀL h& 2DK!q20@(`ΥIP'ցq`V^24#555@*\#S:UFg+ڲμH@n~QQQBaKaabr\zN}ua|1UP%!:@ Ra$v"5"q+. a'R]"""v2=JVkkk,2Wk d|e33BJ߶m+loVoov'iUo#p?F/* eࠆqV4ry p3Ws7s;s?wktItu*!q$ELbg1?GvowsWwww{wF0%R afol\ s}zz{W{{{|W|Z|}W}ח}}pD}~~W`X z׀X؁'+؂/3B$X;؃?CXG؄OSXWwK_cXgЅksXw{ؐn؇X؈X؉_8X؊8X؋}7Xǘ،4Xט؍/-X瘎؎&X؏$X yِY#Y'/3Y+ؒ7ٓ?C~;YKٔOS[ٕ_9ogkٖosYw{ٗY٘YٙYٚYٛYǙٜYיٝY癞ٞYٟZ ڠZڡ#Z'+ڢ/3Z7;ڣ?uRCKڤ!dOZWcRcZeazoAm:{ڧ+zy:㷨Z3[`zN@ :ګyZ1ܡhۚ̚W`ӭyV a6 [yM[Oh#[9z/3[7;۳?C(GK۴OS[W[۵_c[gkos[w{۷[۸[۹[ۺ[ۻ[Ǜۼ[כ۽[盾۾[ۿ\ \#\'+/3\7;?C\GKOS\W[_c\gkos\w{ȃ\ȇȋȏɓ\ɗɛɟʣ\ʧʫʯ˳\˷˻˿\ǜ\ל\\] ]#]'+/3]7;?C]GKOS]W[_c]gkos]w{؃]؇؋؏ٓ]ٟٗٛڣ]ڧګگ۳]۷ۻۿ]ǝ]ם]]^ ^#^'+/3^7;?C^GKOS^W[_c^gkos^w{^臞^闞^꧞^뷞^Ǟ^מ^^_ _#_'+/! ,fBBD664^^\jjl&&$nnl VVT..,224JJLZZ\**,::<zz|""$bbd>>@ P@̜<6<<08 Шpfp X@XԺ4<@/!:|"N%t`F:#G߅fᆳ=$< xdA.cQ4hЍ ;N< N>ÈF)TV #Î?@ =>&HF3AHn[Sdi&$-ښACQ?`,P;Αh+Bx;OK~0t<PH8Z Ayβ,@ @t>H,=,2@C'XH@6kxO<  ģ=B+ |"%!~LR#@ W؀б$` <|C7o7 +1AzP  {$uhG2ӹd8@CH @e`sz`G#APa:p#=q @ $ $"JC>H!IHA?$rI@I@t@ !G3 xH&ZbN@]`AMBa 耩x>0/~GԇxO SE,ET; wŪ@$˂0׹ `+ J[K[*VQ +C]yY`@Z\ qT3D~=-/tY1LBBP]t 0^L-hG~÷gLc#H7È1A  tb6[chBRt8"/юbYtY.zh AOeYT)x\Y N1Gkϭ,OL=R ҥkObfC<%CInI5ziǚm[M @fY D 0 l@nkLb6Hl2ARɴ0? ·"rApJe W5WA! ͤR^OB9f!#R9@vjsI_;7pBz4j Ps d?KDC@Ԭ*"p`<6H`_}e=")ث <`q|@G<Ԟc엍8$zo+C ú@} Pwx@*i.я`]w8@u AdK"8{b $C;_Z 61 $ښ\tѧO[)/D>692;A-L@\ѓ AByHJLٔNPR9TYVyXZ\ٕ^`q3zn1E ѓ2F)tYvy0gL-R0xy ~Hv"BygC0SEmæ.04\1Fu])"Bp !`yzֶR@ 7"0S0$0$0Fפ9fa8u^΂1_ $ [U8Ƙٞ_vJk Ys^KKWpGrei09?4PIڡʔËaba%yqapk w e,"Kڀ p_ɠzH)!H8/R> .כJ%90l0`* fW:,1IJ:tZ׈G2Q bK)PS06q`@]H& ~ +dکJl qdOFvc#W#6 4p+pPzʺdJRJ9<'ʖ 4 B#R +ejN:O&@:"dfTP`!T_\l/@d&efÒzM% 5j8 !"E (67+«0a-<۳>v<0r\b/0\"%ZEuZ&  D;b;dG=I#d :b4@f{aXBmYNe{!qWT fxf =h`@srK<ԛ;[a8 QZ[ZA1/re0WgW+adps۽!$1~蛾 Qq+kSH2N[{1ۿau<\| F<\||2@A.얒Q14[*|l1/L5:O+<.kOATa;'P6 u1/v.6xTW\BI1S8ɚ ư)Iv|X8[""T*93 $%Jp2q9%3h)Мre,':ƪ靽 ʲ扞ɹx|˸,Oa GB+$aU-" 8SK4ٟ]ׇLӛ|V[:W} 5T_ j$|L;,,͢rjA.$|% rPVc*9,6  Pt/9a_Ի ʕ'"BJF}'+ 0-0%1 Sd&Z: A173p#7tc7901,<@,ګb*IVٙW^nQ$5?IX!%"YqXe4b P2YR PR%aWk;s`!&%aeŋ/e fBE2~0~Ws= =e&J1~QFwE[}u -TJ?k[(_W'_oٺHRoHNz麮~x//RDE!`bL1ZR_t_挭w|:N:9KPZ_9x.[ѹE{لQ3uK1z\4R_0>0݂`o!@z G[$ ۏXbWJ_l.o6$`.{ #ȯ?hc]|#]< GеP$6oFu=-~DG &짏% D-bH| [N`tT7%$ut 2>| 꺕hOh, $ g&ދo;gC+Aj6 ţN^C ?#7'i6Ipwnj L3싧xѧ1"Z2A2*^CtM8sN:NO@˧ʚ*wp 2=l E3A'>@GD§, PD$TFU5I@|pBSOb<B$JUVt\-Ztр+ $St2p@ ЩDj@} FՃ3-$}p],'~[Rrɶ%٘ \0`@SVye[vecyfk/i 炽lgFb8@^vpx1ȄYp|0 iq zC (*ʉ)` ` !& mV !>(}~N ʂ8`HIbzmzyo܊dli4ivX7ɭ}@SèWsM4@ p|b(>8&y~~刀WGhq i\cGL8x%$mc2|У<@Kp)"0G4юM$ \h*L]H  CHر^ )A}̧.'F!}#bT~Tc.{)YfЎ6:Re{ꉧ2G0#LIDwf%* z O@B~JH.-de+]JXRe-qV R$f1yLd&Sdf37F^,3yMlfSf7MpH 2E3dg;NxSg=۲g?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens[—A׹ӥ`F"n*.4*x˟e/O][zqN(𡰽EG؄z `zs} 6fx}b4٣ .f# H.|:!X\drf z@bt§$9pa.b7my*^ ]OGsV( ]MSS)VBfXǺЇNh18gۼ:L/@x@2OЖTp8N[K  =t w$/@]G`MϪI>x9a֒TҗsEg8>|?gDNr`pptg[OH&Le}B{[]!&Xo's?B8!F;ګ*'j^>)8J2:)D \*#=jr0l>Cɀ;2"#I) k(/a3aN@:t0/hx  8`X $ȉt n@Ai' /]@ k>AK `)>>IqA8 Xy؇yp] | a 8*B{{ kÿЄ A4ATiF1H L,A2Lͨ|`P>S |pUlt' LP=$V6MtVh8T MBJh! w`3 ~hٖ}2wmw C\JԷX5ٺfmXx q FANhY'H  x,!3`y~xn O& QRѫ29H+ l XL;ՊbOtX#sM\{ۊiȐմTD󐉘ҤXVQtعA@Ac~Tts P(Ux(#QT9  L5mpT9 #8~.Eѕ9t\I5t ޶Ȑ`Ͻ8e=PȉMYGȉk Q`x`߲HHJy^8a6 hފ0 opH)Iэ3p61rM)gVliPW `5m ,%B1PZBt/  !aD11J:ؘRᐰ)|!n`8lq@[]%_ad; Շӊ0de hX gix ![֊Ra }0Nx4Ar?mX9,4Dp6D"|Y9l1a2uO (}8j!7Ɯ9[yJٛ= `Ήw`^$2,ÇPҸ#vA[Aaǁyg;ٜI8yk!)EhE `|9CSyjpFUiҤ TfN픩 * 2ˊu#1q Q<ЁLhQ B"*R!ZĭׇBS 8Eb$<݀ $1iࣞ#U,#LJiw9Nxf1 ؖh9"xsn=5/P` lpz!ʡ!}!ᮢ thy>\2[% @'V+bSТx&*.Zf£Y/w !/􎹰q23"QɀToɐhծs;'_% ؇'9Lksd Kq;?tD}%@qlZcy1INtMk2]%\N&O_t\h* tXuTWXyLZIydub/vc?vdOve_vfovgvhvivjvk-Fh13x2u#1@=QkoP΢ux'5~vsrSs|P({$vBWwyxJrxxwK pOY8ȇߊ H7Pp<1c-G_ ~N率`'Ooy@)te )1p{vy`Zh=;0{tzz׳~)wx(Y$w { GEg,f 13وdgt'lE͇ S9_MVxt|Hb4~} yЅ-2<ـ;.'!v@| =]xsχa0ch 2l!Dt RPŌ :-8@`x4t c^&Vu:d7GB=s]ZALY݃j[)v(\sѓ{¸"$!Ɔ-N+}Pݻ3,=y@_`;?W%d^VlݖA#CR1j!z!!8"%=0ҍt֋eB ; S!:,],C5]Ix@\6 =I P> t9:e#@%-?<o?yEOEWj5f ;f;]fn+R:z?4lq>8/ P /ʫRE;m<[_Kpp@ n (‘G\6Џ#[t0~>n%6:Q !<)%a jN̒}BhL@iavl%=a)KZF)?Tʚ R֓~2\X4D`C;fS\dq)>{ž͚ "0!!L5;y֓(h<D;5A!`u@Dӏ8SG-SOoM a,/b*m]M&H<)'c5g5,EWmeat5rc# V3)@H@WyՏ #eKI䐔УjQ2m6_p>xLy mNIlS99fx$"ՙRN$BR0"Ex#:n` `I0_1`p!fX1!! c6ߒ~r6[pO@"feB&l}IY7$k2 Mח5PJ3+ V+jt)f1Lʆ2>e/Y {7Y>JG #GƐMx!r i ! >0#xއd 6e !rѱF D)nqޚ;t"!&49<"p7,!_ r@Nׇ<W=KSj=[V闋ޏ+' hALz;S &zCF)«PӾ=sO(ńOҼQ_-N`T0y9@?00;ޣ݄̄JIRAYb1' + /;@'h:@u?G&胁 E 8C+] @+YtO>  ?qӠ9D(t@U}ŁA0  2Dَ]F\_}1 S] 6L@` y_u@J8F_<E$" (BtVhq%! !]4?<@D(4"gA?:?@@DEADaZ ]=x <H\^X*"JbEXhC CJ3z2& :d!!&M*#*B5 nJ)jCbBĉ@d@,8" DCy@![X"\t=Fn$GvG~dLH-A`!EAȀ6A@ I LY DbC֊QcRC<נ=9Gm6@ C?L>PeYCA\B @?`BK CŎH6LC`LBaQ,AŃyX?]%70K`>&eB8>2AfFDA^.J~EH+ (#(<9Č%EMɸ֯OkPa*gă6 FB/O&@O_4a\LB&C8I Ȃv'7%Q4[pP>BtR %(\@H|B(I@X y Gw q[)ޙPV(fB@e6'b֧~feCg>h} Sl(Q@gD>()HFN)V.DG7((H`C>eD R:$ DUTy$eը !E;&hXEC-Ω& :2<4>)f*-]@:?X[>`@Cj?= C.0hD@8A:".U(-?4֥o (N>j~(t?hB:8(£@4B'`k T,=( DRD>9DH,?TF$'GD(Y,Vc:,͒lDDz:Ѓ.8Ó]^.fhB?j߼&'d>6m(A2`$Cr[`On+N1*_?meeE06i?8̫ D.ݐ*ARn(P&HDFa?(|<`Q*hӚ+A/Ph 0р><>[@< AJ[4\ڢtE5ne kf"P| <ƃfF ƃGX.h얨@.:EX0CL# cLBC \o&,BK/2YtvB][ʰQId[H|?q­F- ق-l ۰y&pC<" Gl SW1l-2..w,߂QbCBXP2@\>pY-{]@?Lo#B E>аF\- >D@3IqFHg QXS==/DC?tC!sE W>p>L2$6KT@>$1r):*C9WD/kC?D$te]3\aNM6d"xB<b…6!y%N(md<@4d)Jj|d4C Ds7b"8'K2JD&8gE`>hQ lPB$ CD\GX07nV 7X96P/.7?)oq@V)>pHB Y 둲CQF@T@2MT'%ۄ&+U8El$p8@̠U8Ar\uCh Z4:U*y]?8Ua`T86Q܋yE뢃5C0عCH*>ݥBA|[Sv <(8/҆Z<<9>m!1BSHÔI(B>+ۉÄ{8/:3!ç>ja ?>c8'Cd8DA?T8!m;ԄvJ|i8w> ;߹;;d[B6PRV()AQ3=C;hU×ZI {]z ף/ W|iʼnBp+^dt\1DD<;0н3Hx{Y>ػCdl}UIoWDN @J<; T` E̿E)0_ |B.C}/ssd<;@\jB:H,ЁL@8,w<͎<=ȂiƭH8 `npK\*F\@lЯB$<`Z+ &Mi|J?e@`Q$B2\DSS;t4pTY >8DɊ_>ta?zХEOȼ\lՈp=G{0/7ׁ9|2DMH*Ƈ }g '^s|n \ 4:1Xi~=1Rcx&&R 1<~~hzO!EuXg1⑯8 @,̺G~7 !$K XKhCh9}ʃCĘH^; v 2@/q0vĠLq(ީ$"1 )ti!T9I"C*CD /AМ)T \L H| |0AmlI 8@2nB6',?]}XeZm\uݕ^}`b=؅6IWxJUd'0?dr s]]x块z|ݗ~vr3^.86Ā?Ag +|GD>؇#Fgb]~emu޹L ƪ#^x)Z\5$2 nx]ɨ臒^ꮽ>mY y`pq}g INH^n?_%-5ߜ=EM?U_]emuߝ}#wy襟Uz2ȸ`xyaU\{~/`l%'z쯫x{ X@j:$t0W # [@uruUtM@8tdBqW^bwlpW0 Xy|`D _CC$Å _#A ΄FiTH洏Y` ?c#D  y?H9Itx%0y#.)t!`dxH;,*-ݫ %"imk@d/XLc ֛H@-b!XNac I'FB}4ό4$qBR|a<>2 / e~\qVA>'L˟;mœ%Q?ɇGYR(h[Dv,y'BSC@.cK}Q'<놫mmn xO?TF9ů% ! +_7/Nl7MoT;D --i50@&f4蠃18M"<ЁlvmDހ `lՋ,@em7$,Jh(Q ȈtdH"&F'|x$rc[,G}#5 ;t|@6GhV`AO }D/Z"~C$Jc, ͦ F\A > 2aj=nS/?0&!]v4nt{D>< t$O~gߙ]ȷݧ6-NIx /qB+P@a7D #9JiUJ4RT79 o}o' " [C }<l (؇>Q LP6@Q}Б)_6)%U&%.C{l6  gE iZ8,SL- AG 棏S4!D~@?C~&vPV(|\!GytxBPq@ A3/CʟXmVcD:D)A&HfhO$Z锼B"t@ A|eo/*ď2@!Ap$RT *xP%VN^y"T'p+J8,cȦ  '= 4" >j%O \a* l b$zbN9!@By)>BpL@šB'fo" ŀd@:AV?a3fB&&;km!q^0?Ln &BB Ə. :d6qq\R@ Q p.eÅ>&oѢ!1NBo&j".E EI ix$ć'oQo" !$ֱ P(!^" a*p"4A$+,evi+*('%#&'`׎*#e(ߡ@<%L /2$DSFaCA$* d,`LmyZWȒ/k--5F"@t!\A.QA*b7!J5@ ,5]%2i"$Xt$pS7uI4411LVD`aM"V#$c&s* s,0":WtS$b?꟮6FE\o?ABA@ gD 2Q,WE[EՅd!@&!<]M/6}6 2/0,Mx O2%T&bv48G;L85{"4/^'H&}(h0tTzz۲ $^d[!:t  vA6A OAO_Oyd%A&FP)iBauP kSjK)c,-dt59B2!R AW2N#fU F-L9.rBl*UUaV'X$u&EV``%OA*DAK5r/ Xt" fBa VoY_'bi~pPmcOٟZ߄ !֮Q.2.: BW7C/8#n  !dgS1s_Ёd:q"HP>"4ƄbJržZKv$!X%( AAU*Qr*Z".z.$VkѡRIЇ2v  a"֐=ٵ_tNI(QbnVbVDL MM씫m) 6 6H6FTV#6<('`(ځ*y:Q0{%b,7/%h@b!+d(Lx܊Pl+2{46]l%cY0F:61 .6z=*@7-W -K)t( "9:cn#VAadȉ9W$D@da \J<*`$ xCM6ƸZUrRЁOs&DPB74D"&[a`"8eoINv(UP|PQKF ˻?ubKOr2VJGIQc]g]Asr{Z6xt=ؓ]`٣}tٯ۳]РI۷]ǝ]ם]]Q`B&~VCgA]hWKlH%EID0OSM zh^6^ "%d^U} J"jx"JiOHsZwf H(J桾 jVWX]zq_˾UͪDF>~w\ xb_h *#JKo@ +l o¤0 $(`xLs:5XEp Mhl7k}K^_[K=Sg"??ϨlpWW/,èjkC>*@"%R |o,Nǂ HnŸ <0… :|1ĉ+Z1ƍ;z2ȑ$K<2 x$><(/汣GpV$)#|^ZAy0:vCǎ]~ L7^U@WA`ҥMFq5N_Ard|u!v!-n8ʗCL!a<}>0ZgMRL[*UZ V,Yhղu W.樂 ̻q㔍CU6N%:ŋC̕ C `H`` .`>aNHa^aBpE)Hij?h#وAH"A,HWfW8OÈi@m?S?w)'t:4担2ď6c9cpa @ $NB)64^)e_iPRdN@`9ƎCI@#i}RoNKm^mnm~ n=T (+@St8@ OA;p Y,˝6!&VЏ jMb7PwsoN+au ±P@<5ssCI|Ev4 iOɠO7֗0k ? ] G#| ( S@::ɇ.;J<^,3>;9~7oG_#;^A!Ig;|7yi1o"68]/{UAR \ c,gi"r qD,D&4@$PG#v|Q Ҋk4ˎ.@~QBZ'1#G(&RA-dh&5l4$"|(@'bG?^1L&9EPj+ MdGL#?ىay_iG= 9,RY9ƛxμu|_ V$%R̠x0i +0=Xz5:Qʁ@ t`ݦ̒^ {A6EʚKx05ǷFr ByPQ-:*<ju-+s#A<*%8@d}HU>\;5n݁D7>h#h/f5FbX`/ kx?L!р' *+,#^[Z'E h"t52}D`6fh;uqxdM }5|16b&h|;xYWYs't \Gb)QCÂqjl!,: y~$Q<(,J6K(s1敳.`s3 }$%GرͲ+ hK{Ԯ#C8,ࡏy69@ ujO_*ɩD(.`<50@\X<9qsz@vJ j؁$dcxBx~ ~/_ t0G␯/k~g;: <(yGNL0zҫ~o_w BdA Jm 5T92uYVU|9+ G! 9 Q@qQ$`u@pp=N`:2Bo7AkIUPFGr^@}a:0 y=V2 ufa 4k) `rh۹()[ŝމe)$p=Kt_1 f4&MD%Z ȩI"9 *po Vik8IH&ڑ КUPJmD扞=3K9 y5'PYeQ'DSpڦ. Cs:q|mJy sEF9SyAzUL#sj꟎e1pb@dz$:zUh"j/Jpg u D+5; 2IASQW[j*l1a }PpI# Ub@h[*@#00qpQ1puc0<$  1a&W$@Ҹ!QN U6aW Jʲ1/O24k>aa# K ;aQH@6J$|&#dwE/v `2$ )ɘ}벗负**R*,"PW +1FO@#\PB ]sĸGsb#Z8 \QA,qf 2eGUv 'y"(2ʨamdw,P#y p WB2WFp jcAt*_1w,`=fuV#Albbm,`o'+P" !LPa#]@`М%<|ٜ'}|;f-6e8!W 0_3scTre@0 8{""7U `TwӉcu28{PD0\ii ,7yM}5Y/8mi@#46pCm06c< 󔺲q]L#aR1W0@c0dsp &eC1Oe~'% ,FoC,(*tXŴ!6m6~M3=o65Ҹ0~zNdixPp-KPEpc6q6ۺTՂţ]d 8b-8Qڏԓ&0N,гiCVXDAvA!ų@qK0Bz)$S}i3Q 1?>C`r;th^Az}1Abv芸bDQ-2 AIIF a^]Kj NCb?HLD9?.ڢpDMTj`jOI# K^HH`}# /? Q{nBs@@iK Py&.lFFD=K0t::KrFOx%otd.?z9Ib =]8h61x3fw2ߡc:8R@bHEETRM>UTU^ŚUV]~VXe͞E*M;HO*wÑdLv>=h E"|IܥUp@"1c 88PԆx:=V<1e@?5x5ރ/3a.S/9&oX|nsG{,(#ϡ ޒ t!~O0gLB>)t|/&iAҠn " ѭ( !ʜ2 H}2!c D1@>e 0 15p@Gd9!ͣ.e,H y1H51A$!e3\JɃ0G' " |z0/cDH#g1pӟ U o2!\tՅ/Q)MBl V- jYBPsIwutpMbV[n d1''{+~ka*@Б2z!8A d~R^ob!c1pLP$OJt)#24UF7 AZzws, }!W)!@Lڈ,P1&uVm"2(Gr |:hZ秿~?GR?pE Xst)*>`pH @%̂a}a0< 8|cPK:#"$A1:2Dv7a>|0% Ƥp=T Bs*qDh)%`p!Bģha7y|0Wɘ3qsdyC=/>2`Ҁ7&Gp%Q!";*0!82!:QyHGD4b?hcrqWQ!T`|7 עeFDCD #l\dpB(hyڠR"S~Ѩ8}l`;XְElbg͝'週Zdr eʅJ!V왫dG )s׃PB/ < ڨ.am(7iE %0(9h˝@LBLxg @x 6#y)@%mTJmoC,B#*t',5|c Aъw=nrFwmm&]Xywo~Wp4q.xp7x%>q`UmyE>rU\--wye>s7yus?zЅ>tGGzҕt7Ozԥ>uWWzֵuw_{>v+f'{վvoVD>ם*GCKG|xu(HCx|Uĉ V:xҗG}Uv(u!,+D ~~?|W|~ɤbQ?,'Lc}x )|PӀ@DF< ywrG HILy ESUĘxl>B2TedftF{k `(PЈ`&|ڄ{| #Kˡ8 |+>͙Q崃 "#yK P `x'o R2"z'NHA lљ`M@`B !58M*+R mAm@iI}0HĢhY8ݸ2(@aϢ0q%mτKqi3:ЙCyBm|(!AHMNNFl`|Ї҇#  S`'`Yb"/:t x Dtuj'&"|Ht8:*t-b|%-y%I(b(z_KbbM| 1xi]"2rUe:Wf=U`BL O%؂5؃5 1Ї:ypСƃH36* -0,--:r5 6q$XLD ,뵼k0Y5m {i520 Z8Ճ +P3qDخگ[Ëذ%۲5۳E M۶u۷۸ۺۻۼe۾ۿ%5EUeuDžȕɥʵ%5EUeuׅؕ٥ڵ%5EUeu%5EUeu&6F Z2ÿ``py( [zźjFa5y J*S-b`  * ap}(#  6a|=a/xO*HI1&㳽7;&b h,B$ĄT 㝠ǯ#& 3h+%#+9@U%!!8V؇AN)Oe][H%;4p+(]WXkk ,- | xՉ kf }~Ƀ%UeSً@/J(aMU tVgv>X J1TŇ Tf=`hvh ͌v#l X(}x0P!2FiiTp.jiP '/ΌIcrZ蘢HV~wh(|Bހk(fcxa p Ajjjt L.~|H䗈]̐~0V jfw3@  8I`1h,HI w'>nXRmɞHn `oRa.1itȔxkHtx} v|if(@o%uD~pqAHʇ%P)Iި⁥ 5- nb-.^χpEZFbuI7Xrd8a ( A yP"2zBj 8l j t脿(p +% Aj6&h[}׺v?\ !vv`!KA;xh>jЌ쉝@Dʸ׏x@VPD' w4u yJ>@Ȃfu?jXf~m & jD}ZСO | Dvĝ"n]Pq"P1Xb `ǫp}r?"D(8zS7:1!g%Gɧ||'7GWgwׇؗ٧ڷ'7GWgw'7GWgw|'p "Lp!ÅB(q"Ŋ/b̨q#ǎ? )r$Ƀ60#;:,)s&͚6o̩s'Ϟ> *t(ѢF" \JT+oRZ4Ն 'לe~ ;֨ 3t>ͫw/߾~,x0†2i} < Yth hd1dʖ1K9ixD;pPuIزڞxJҶ\gny|`߇m^}Р|;޿/~<2@GtxeW}Za'&AvBa<AP6䷟D]Ds1XRuA:aE"!H$n(!N( !a@?C أ?CY?qNJ k-ՆbTnQTNSI\pNpMk]ғA?Ը=$ăNte#ve@UÎ]ιē B82]J<ص?NIqASQb`v0s4{1 k1shR AD xkCv @D 0Mt-Ұ$uA:$s 8$6hɂTAÎ~4Ed!ɖ@=y^:Ə0XI:`1B"أ$C3 }kGℇ9PZ<ࡱycN0\A0"RC("yL0@b(*N"p:qg2\PY1Gxc{q!NgL UNXd#2pR& byA )G:ڑ P+ o|blbV0 bHb|x&BC>@6d!N όx9_2-O'd(G&~h9>H4$;&tt1|QR2΄4JkbS$ꀍcb/:Rzt6os B"jSH%@ c,'aBTf)a2ґ&+0iԊX|2^h>#sFШqIE-Ev@tEЌh"6],cAªV$&|v~`5 Af;/ v iQڂ0r9;@: +66ժ^5[QoX@CWG"+"l\! b2$D ?mEE P ,#Έƅ?_qހzo\hJ1H@L#'x4P4L<sVM >Hp~$<{@~ᰌO P@+"eG:Ad@=#5g7Aбq\- qwA?e#$"E򕷜MNϧ5v$J+p,Wⵞwp ^ Ȭ.Е$a džB n}6T:_=[z$G@QH>2%?m[^ mspi@2V6A{7H$ݯu>$C:~a "ѕz KP}X;ePAA\"LCt:CD̃k̃x,䝓׆`5% ą@04;D9b[ ПA$ E_>P>0׀@!a?P@,!Q]`jRյ,oG1d-A<daÃB ?,[h>$A@oA!f !*D^'z'b(B{C?`@@?l.FDl!bX@FE蒄56($5<`[&h-At;ƣ+ "r9>za[[D @?4L@b?(jҝZ<< ȁd3"W̡6C7~c8 + ;jCʠ?h],d.ABBZCFDG F&0L.Fva*󭃗+CE`% Ĝ"d0/]2G<݆[[\n qbc:cBfd,]<  ( BpfC|#u%cCA C̋AD4Oæ):BWfB#TBC8 0ED̟!0$?Sz1A j:Xe&dAW9 DB\d = BXzJw@8oRE ĬJd5Fm=%y a~%@?XL<裧<(߬Lgu w h@  ^#T]?ħ-mDNA0JfiGJ rK<Pr@ B`iCXS\Ė2)ه78ֹ<3 :ӀZJ$dNK>؇MI:|(RD ݯjD+jlо*T;D >T>~=D<0Eh#`-h(dQ,]A$l|A͗@9u^<>32D # nD$@ # *=N>hGz\#T(%C4'vY]ۊkğUTN mJn:7ݞ-5 VT> 9z @DȀ>@8#x[ؑC.٣?>$.I@<̦%"4gr;.@4\lh /uo5o'JpY@ B//;/Jڰ:+qBnnR؇ gUJ?dm;0>L;ܭqA$@& #qDdU@% <&J$Sr%[r B}x<ZCSo?Plt)&?d_B$&;D@}4EѼ}(l5Jܒd \@4h < Ԧ7<(T&MցGbܫv;0 YZ0.r(=ybt2GoeLTV RLdc2DoxxoC%]>ۇ>G=24b4 1:4$0&y`Dswxxwy/w2u@8?!i;}HʱiDm E4@ \ż@t0?|9n  "L[[ԅՃ@N$)~FP@,LKTP$ru}P P f~z8EK>]

du#T@? '(m){C /l=~?@8`A#hF_N Wݼ * tx>/y+:v/yuo5㕳0l `SOF:jUWfպkW_ }R>- 0πcg>S dA`"k&@90<ЭhB~*,`KQVukׯaǖ=vm۷qֽwo߿.\>~ ; ӗ't tɀa"y 000x )$ P T-B3Jd b9bJЉ`gc`zAA'ŁmC CG R!,#LR%l'd`/x,)!1B|ʁR xT'tŏSϨHRA x@>"DΫQj1' ~K j̩&] 'gH $Z,T]y_ Va-ئ:}>:Citt@`@3Tt` w&=Vy N`|ɠx4Pxo(at6x ,̧@,"UH`СWYnaYa..ه˂E@ hڐ| I i~>1 aDu (xLY'P!|a8P ru `m!U Smo@#>~}h#xP d`{ 杣1*){0"e0|Htv <0DeR!)|| ȀIpH) z x5Mmnaq8%xd >}H 8I6 ae5YњV$!!m W[W}_5aX.kc!YNe1YngAZю5iQZծuka[ΖmKvfcax\X-X@֦OJKZA;-q]n,O@A5=PSˆJ>Z] M>c8&J?]pЇAF8 d Ab&A t[?pG~AQ i&> Ɏ'Snӧm,5[vH WԒǃ`} ZHx:bqtB9!)A)+3;#K,b>и~b >7ärz 9QAA58KB4X:w m#Фy);AQH4xc>02F)K5QbR<wRٸ*vNpA4Ǵ! = &`Gdy#LfR.yz`1BcڼD0]~%9'#恰 ~Dt/pTH@ %\Z80ưD%.AKFҒHAJ D ɓ)͏i8)IR.lb'zėب|6P(GcQB@N!n "t 8` k,>(n$ ڮO"` !,  cZP'(aHQAr!er'B"3v/*L|S"NC怭T⑴E gA#!b*/(!f*"_FFd Jx $zBpr++CQQrb&<f)q 6‘>n*H+A5 5,v)%,D*0) :3@t@% A3c<.: -TLA'R"A e ./B0#!bb8`)%1 xFA 3Daؐ>@b%xtJJJ4KtKKK4LtLɴLL4MtMٴMM4NtNNN4OtOOO5P1ad5QLE+|йf:${%įyΏ+$7SAkh HHah#l* 'BUCuX5HİH6: A?vihTPffpRJ:Xɵ\f$ZA;]ck&Rp+m#l϶ϴ5+yz!aƒ̵` vEH$U#wLS*f_7rm Pƪ_+)vdIvP3Y @z$3Ά> B fwdʂZ SE `Т(Aߒ2 NE9|$Z $*nuʱ @_?nے -wP%do)@Uc'Ї63,"]qiS L`.B'^B(VD.$(Ύ%\"GgˆpB'x)"!B*ﴓc @o7#V Z!u b Vu] -`p{=KqngvL|bb a$By $lND9/#С>=)>3߾/P ' ?HVNQ` 0⼷]r'Dx'11a/W b"Z"~k1bppF.4&NO6(g@DDbX v0x|h A8'hċ @*b#\ +&)*'KLER}ACsum! "yJb\\]%[1tpK.eql PщbN3Ri8uٯhec4ghyz~ B)S#6t}/).viAjjFEma\MCpuz&/,/@֦mZSw2"'$׷,TrsbXTA+>FCπ ]nr l@FbnE11 n 8Bdr C :muGbv!h9C&2<}w؇Lpm_uQ˱zi4pÅ/92jBq"uW\awd2L6lxI=3:.ɮu_7bh.nWEA:& pbxY=[ywzĹ)."_|}o o^$PT,3Pe|/X3X>A!g$x;(x? a[bW bZP >\ KҳXNa^ b#4x |㡂]X_D8NUc0CĹnPٛ{ "]u^ /@M88]d3To߿ LÈ+^̸ǐ#KL˘3k̹` 2\9mՃ+i_~儃@zy1'2D,h9(ԫIwٲ- ̇#1wI'uc6*@}c:x@?N+p~F(Vhfv X;(yNtrÏ%)%< >)E|MR)bI:F7[ä?j_|OKeNáI&Ў=2lyr<0σn矀*蠄j衈&Xǩϐ*nGБ*#|j>@TN'OE<@~h' &A'k>TO[Tӏ=!@$EO0c܊(Ch\>vd?W+k/' @? $;(;DB=0'^ :t J-Nh\\ \0<'= ; q4Ɩ& |&ă#ѓ>TPf0"3D`ufh?Y T@<h<?[-tmx筷~&nV!$DjW0:p*V+q;;OxCo觯ыoc;fL:p'H Z̠7z GH(L W0 gH8̡w@ H"HLb$0.8;"*ZX"DJ"y_.zCH\1>`mẒ>4h6 >Z,!=ХC",fxʡDmHA=Ȑtca<&HZCt*8`<&Ri& ; `@1(dԢ:H @Gpv.4q0ЇpK͒+LK=H_&*В<<πf1E% k   cI""@ #c ~R<k*6a`{Rs>H܌8sXKİjD(rcR@>1bxВo\L58pGғd}<`d7 L} X >B$\H1g/Ȁv'IS3Ċg%Q0#f#Qs@Qs -g'PZ^ӓsBkE{0 |H%rS~s:+4!QBF5YӴuc,f$%=&%P  ^`X^0@ Gc+xLP{sq_u6 0%T  wUfH NT0!jt&0?(F X>P48+WBLN_c.6OAI;"Qe@%'o60# |XQ ."X"~Ǵ6Kpft 0F4Ћ %.sf=pݵr &o ,Q=+% 5) _c8Y,6$jF- 6x2.g"ms%.,v84Y=TiXM]t}*^P`pX30pdP4am0K} شL`81Yb!^;b<_e>P0TfJ4D)`_Pe"%*c0r@ 2[5a8c ~Ggu4P#52@W]Ac16;@ i;0$69A%A0Q&`H <@ D +o8e@"3 @9l 9A?ȩS:3=" pB HUs,bP<&e#8cC:2:%yZR& a<ɔB`)CɞBrLDʪwyZO˴\dmC0l˾<\|ȜʼҬ+| @J^<\Νasdyr`E|(fP HkY|JB%U9TА }pHP*Vb@lGPES%^,M.=16}kN$09@cAr[QN\MaT] X$yAԎkV,E'hj 64 1Vr=4[y)|\񬏁dQP1_kjzGdrFs3 gd=3V}tڢ]|3SC3 PgAyL1ykc΁QGO4E_k(f PgMI<-'04BY' ZWQʰzd>قe ˯X*YXU[YYUm5`(C\Bp<1='%QD1дL(-kD} gd0&cK&\aa';g+[d 1%dK~b)6b.F_u_0`#x()E#po Y1]$ BpP5[E]G@d%oJUn~̰oy̥'De= n%,UXRkdT޿ok6h6m%`uՋZ.fa 3dz}foX& ! &0 #@^NGGwUsRX/=3xǀG1dYJ9hHѬo'| Zxw^z^|w_~=}8-/b]yjYiL)h0#'Q+.>vٕ<૯B'6>cE8OBG xr ЁR h.@v\k&0LdDyI0|h$ *)뎬+j(Dm.@8I|5|r+r3|s;x|xXW$31ktc}vkvs}w1yw@Iw裗~z꫷z~1iܟ,{{W}w}`TP$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BrhQIa}C QCh0f"HKX4-@<~bV"bE0Qc 2+ȉA<|hghl;e&F~#cdtdd#H!a`JaQXH䂑$"m@ $)`\yK\R ؝9>&rIBQ#m&cC x/@5MpӕD5NeD< O%'O\I1@Vz* @c>?BfLIHdxk xz#'3>"An1h˖UKejSH 80 @=d""vIc2^>޴X*3::MkqK"K@'hy>8}Du\M2TyéA*fVl|ُă!XT3x>IF:`@v20(Yi b#pT nz-Nng32xW%oy7j L1GbĎNzYEUPw:ǧ G2d"9@?RP-I ?(,3ysx#&qM$vaH&0;Mo| j= r !85HZ<鏎2mL.>"zp J4ʱ4!{Zd Zȣ;*>F1%6{3Z<2Ч^g=eJw:z^\w䱅yW|'_"_ҍnoӧ~~}_'~_g~_}_葁j 8@[@lc|0a S 1`; ~zK "s@5! l5ǠȐ yxS`A|TA(B X;؊& о  h.B8ók!+0 ^0:;29r%CG|D5'&;]7ȉ- ~ kx '1P<Dtz(v8B ##}@=DtDDt Q!#Zy2b2 ڇk =@nDstx°dy7mdLN/~thn!} ^I83rʘK2|m%x1Haܐ̵Щ,|ummE= (yЇN PZ}x}ЇL0mى{Nh2T tx88CAcvB㢃Tc <9]Q(QD hn*Oг*xP0 Sr̂xQ|m4‚tH9>]0"Ԕj8(1P V鋍yW{W}M ؇m$ )K";۵0}%lNs Z] y mȉ`NhЙ*i{w;+6òЄwRX0@ulȄ7eRwkY8AПy`<)@LZ˽\G\\R ]P$]M]%5}]؍]ٝ]ڭ]۽]]]]] ^Z=^M^"U^^m| a0w̹^]rbDqM_|i}XDN˨_ȨH  ]_`Eh7 `xʰ# =<ˌq`͈` 32*<1CE6xx fv(C`a)̇*JXJLlNe~F F  !.#Ƈ{)r2Am(E[(](A8YU)}>^m@blŬ2YcI pcaE^d.`3y6KYx@tGwK dPMV +&*oц89++2)(yh򇅝KMR5؀[ƅlȧ,9TYFfp>81tˡ)9 $sKBDuv g,mrQ`-!|g H"=d,21@-J}Pp.p>i>8{1O߼<&DNhM\Ddk7ZQ'ic|hw1Cr*B x\}`h̓M`ى fLink #8#t.Г,zΣϻV|_a`^hB}OBlftk.atHjymOsP^Oϑ  t3䞏p_a& Q҂ ,,mm80mˇyҁSS‰MV@R>`[De ^kb;!u5؁QԆ[1_WM"AL8le(0𑨋wxpMֶ o_E! ~HVv1UT&/0X8Ї|RfMxw~@#hPk<%}q#0ȇ\=EW8 Id/;yXq8'^IɉtXבXɞ}ysHی 02!61hMIl)&Dt/Ȇ)vIexXfmuse?i pYڦɇPD$X(-XHSڕl%>> P 3|X0 xZ퀹ŏ؈ZczxHmij XQ+À_vWvMb ȫx?yH/*Fy9H:xy3,iy/z?zOz_zozzzzwwx(xsl5zz5&W!5TRECaeҪ{3)V(z q^}/<4 3J~ ;$` ( 5('ˆ~XpmR϶0@}p!s p콉`[@ tAO2^P"xֱ@ߨ(_h~~ =# jO x Bk"(l }/c8c e!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:wN|΀DC|k:o@ 42(ڪB?t z0@]TbAx̼}$eǮBAR g`y @>mM %: lg!;|X] ? 8 x?]DCBFQ>#Bs@PCBp!xP?&,XOxAďQN<k9>fD,|QV(aOr0sci[ZCVD@rSbjlDpd&HCYDLV_U^9<;\?:&xRa"<>φ *SBQ H4:y***:*Q dc]4: ftxD!A#?L>1&tX@ :EBӀbl Q;>+KOQ<'I6ho42 r#@L>0C> ГtJ.:馣Cs@ #0F @MglCQ4< CQē::~߇?>)F[F:;)_' <@sH`ؿYlDXPN#;P؁4 t0nAvO#!@ 8X:<H~~  l>)pCU#=~# _mT"C` CR;*7^x%X >@g=$+yIzdRq蠤%M[>| H"R7$@%瘒# > @Gu$M9cV֍8f<ࠏ Ħ6 bD|xǼBC0   EfFv)=7 m!f6ˢ6`=82=HLg!4#K; 1F4%jNSb ,L! ac&by6t=lXlq\;x"P.B do1!+ؐ =!.x&δ b0?:QE|`; $jSղ}-l[1/1 @K(>P 肤fp So 5t+%ܶ,$xg ." @”,L20+.p~A.b8"pp/ژER] A$Qr0H(fNic® pDLé^`>ĀQ81c y,.?p 1` bFQ` VAs `"xxIG ' C%` $5Z;1ね60u{ 2G(n `ZTlc-YӺֶ54+ !9;0Q*3)1)F$=FMA<* v͈-!}mQK`|C<`|a `8/8i9i`p-.M@D~ ,Q=P ѿb`<$2ACVth36n-5gb:\sB=yw((BHQp!@q<HV׮\WO( ]Y:x)k(`Mēuf,$q @U:r-ѓ?=c;[CIgqjOg1} =' b@eO{^=6Ľe(p2x(yx‡D1ߔt&"*? @<&\'Ŷ[ IB" Ì]DZ ň^C,zeD( hAe]Fb_hCC+ Bdu, 2ů)^BCܟD< .=Y@L0Y-F<D\NKx@\ݒcUÄm9 .=OC B Eh>d(x`̃ Dh6HED703BA e6p\q ~8B8VD0%P|Zht45be?#?|ză<N 0D6>f cÃ빋X>,CBO$PP%#D4TE^D =Dh[-CICWU`HZ^ZCrGibR]:We|,& T`&2s%Q  ΈF?0Aҍ8Dle$&`?\KM R~0ޒA|f FN`xB!@I pe[`@脣0Ќ9A4GX'@׿mXQ`僌PxB|EL&X.f90۸̡zAH ?|IUU;V}I PQĚ1gE@u!6)S݌G >걌xH~J1REB]F \D(+M8CaC贃aX?L >$?W< Xq<\d<:\y&<,gs0S+{D@Tn>A<\!A̝Cbke@A=D11{Xc\3uA,Ҁu9#tMpS[eVF` ԎPTX)Ͳ]ĥC J<F~FK a X!A.;0C?;0#2ve, Id I("XF$KjPᎨ B@ kD|Xp;~Ñ/ƯBLxHQL8NXޗ̑P'lC;hnM>DGPp8 PŲ[hN0#aFD> E B2BI(H<@TlQ(c,'%:,xx?搄Ƃ4*׮)i?%?\b@䌌1;P`qPGDD tR@Ex,Z2WcdGD.R> $а>|?8h`1^?+ELdq\ܙGeP  11F\*B_ I0 $YB}^\@)Gcί7388皂[*89V CT`n@V"# Tj:3@@ S.Ü t.۱>,$%d0A4HH}3IWO^* >I4M״M4NKI? oLC*kRtNN5R'R/5S7S?5TGTO5UWU_5VgVo5WwW5XX5YY5ZZ5[5SǮJHu]]@Xg^Jd\VPKH acD)[7c?Hh ކa za]siCj6k`6G%:7fxq?\kF8F@ _,!E@7W|;6LLDh\tns>RDѩ1nFl<8'h)3Q!>D &O\PBw1 0nCD\)Ck&y0BncQC<@D76׸!WPdS@EwdDU`Y8PW|EXlĐ_EVP<\]"ƃD"o,a$b4cDdTfl$biƪ@@Y6 SHBS3*x4NqCz@+t/fC ON\]W4QT@pǷnR'&OGQl\ *S8v<yzq>8"@<pc `423D} Y{SH5`C_ȈH>@}$<`TT]̞wNgxnJ‹J BBGjubQ+ΰrp_KoьRt_fА ; {LJb ܤqf>>JC>$E4iЦtdDIM }X|(޼M6_ c,= 'h1<@DŽ X`KIE]Ljh'f$܉tX,x0a_ $`m@#À?OEh!ϧ;mѬMB^Ƭ7vn~ N|(``3VE0_~g6:׷~ <\|% -4msi1Zk2'tPbpE2c NLqŋ (AF/2E .#|8R28t(EPTQ?'#z'j"Lh+p)&"}@ѹ A~J8D΋ |1IT"4Rjԓ9MQ.'|:`gvDŽy9 3A# XAG4127M:`|3Au %YAnsBHĘV`Rܠtx=qTS b]x/ ~'ΈRIzyϋ\I'7< T/6O 2NVU"rxGˇ1:c5i¨ꪭ묵ޚ뮽^1vnB@(8@Vpxh @8`t 0[ R1b҆|)/S eG-􈦓cCZӄ%`eAhmTg~c(  /"mĸ}ew'( H`n> $M.*@}]evn>)S@GKtD[c?Џ+$@z^DbѼDCxL#A&V}9Bp/]?}djJ<<} b@GxN($@ Zd&zn@ xd` ^GӹE #e2c u\#,i S8Ck Fql YHCT"HG'Cg[R2 X( D&@?:! 0i{Bx@\>z6G2Ź]U"Frt?,▹Mt`|yGbiJ3 q6 j:1D '5@GС f;մO>fO,/C<ED' Uma0brx(ID9 |("@%]B|& tHdy| u[od)NDMuEK%fٗQ\#).0k G6"y1e8| | `ot |!qHJmD@/P*F}@X#)[Y^f9Y*lKBD>m%&`M'Ё(@<ЕN:K q 14nV@ڡcuHxC;`A^AU_DX1} S:QS1"%}\5FDB6!Y(Eh4֛2ܕ?͈CV5:.N؞?AɈW5+iW}L'x:x{uIj >cNH<7:Ў0:d>J`m!`8;#%POn<|ww<&Yq?Pۋ&<Ҋ3:JG+:z~(yd/Pyk/?m4 {E`Ӕ?:>k33}C|0zI<^xH/Cx?(D>h_zWp0LPZ-m =}Lk~+pFjM"ht%\*0ԫ#JNmqDNL /hasxKzn~P$i4g+B40"f"Bq2 <6*"bf*"@Gbbh;AtЍBb Jĥt<.!\ |'eJ:.!B(-r ٬H`C vg vy H/"!2 DR%Н F3 1BA _Qn[ gjEK`ה>.*3R$`VÄLd710 j!e,. !#Ё>C϶.! i%R"O&o'sR'w'{R/"pha#F]  Eg:r"*# ;"Bء2 } v)p2rͷNKd\B^ࡗȤG* ?Qw(n F0`ڤ/f"g2eP,$2 NAlE+O/5'p|18X2:|Ec64Sxh53"QF "BC.rr+1:(t"5#"P/GDb^[bhB-0уG'HGR'!`\2E7N;h|C1B~-RBx^H!*CoW&5eA(r(" Ep 0S2@S }JTJJJ!?#">?%!]X v7(4`9i))b$ дaKz”Aˇ \EL`)PoG=hI\b"t>"@P>EsB꩞ I HF FjPL17:`Mjbqb7ޡĀL h( 2DK!q42@*`ΥIP'Ёq`V^24#557@,\cS:UF+ڲμH$@n~QQBaKad`b\zN}u|1UP%!:` Ra$v"5"q+. a'R]"""2=JVkkk,2Wk d|e33BJ߶m+loVoov'iUo#p?F/, eࠆqV4ry p3Ws7s;s?wktItu*!q$ELbg1?GvowsWwww{wF0R afol\ s}zz{W{{{|W|X|}W}ח}}pD}~~W#`X z׀X؁'+؂/3B$X;؃?CXG؄OSXWwK_cXgЅksXw{ؐn؇X؈X؉_8X؊8X؋}7Xǘ،4Xט؍/-X瘎؎&X؏$X yِY#Y'/3Y+ؒ7ٓ?C~;YKٔOS[ٕ_9ogkٖosYw{ٗY٘YٙYٚYٛYǙٜYיٝY癞ٞYٟZ ڠZڡ#Z'+ڢ/3Z7;ڣ?CZGKڤOSZW[ڥ_cZgkڦosZw{ڧZh`ZڪzzzZZӺڬڭߚ:ᚮ뺔嚪O=횯::Z[Q[XUz#[ݘU@2`Nr7xT "@:K9ڴWuFc[Xwos[w{۷[۸[۹[ۺ[ۻ[Ǜۼ[כ۽[盾۾[ۿ\ \#\'+/3\7;?C\GKOS\W[_c\gkos\w{ȃ\ȇȋȏɓ\ɗɛɟʣ\ʧʫʯ˳\˷˻˿\ǜ\ל\\] ]#]'+/3]7;?C]GKOS]W[_c]gkos]w{؃]؇؋؏ٓ]ٟٗٛڣ]ڧګگ۳]۷ۻۿ]ǝ]ם]]^ ^#^'+/3^7;?C^GKOS^W[_c^gkos^w{^臞^闞^꧞^뷞^Ǟ^מ^^_ _#_'+! ,fBBD664^^\jjl&&$nnl VVT..,224JJLZZ\**,::<zz|""$bbd>>@ P@̜<6<<08 Шpfp X@XԺ4<@/!:|"N%t`F:#G߅fᆳ=$< xdA.cQ4hЍ ;N< N>ÈF)TV #Î?@ =>&HF3AHn[Sdi&$-ښACQ?`,P;Αh+Bx;OK~0t<PH8Z Ayβ,@ @t>H,=,2@C'XH@6kxO<  ģ=B+ |"%!~LR#@ W؀б$` <|C7o7 +1AzP  {$uhG2ӹd8@CH @e`sz`G#APa:p#=q @ $ $"JC>H!IHA?$rI@I@t@ !G3 xH&ZbN@]`AMBa 耩x>0/~GԇxO SE,ET; wŪ@$˂0׹ `+ J[K[*VQ +C]yY`@Z\ qT3D~=-/tY1LBBP]t 0^L-hG~÷gLc#H7È1A  tb6[chBRt8"/юbYtY.zh AOeYT)x\Y N1Gkϭ,OL=R ҥkObfC<%CInI5ziǚm[M @fY D 0 l@nkLb6Hl2ARɴ0? ·"rApJe W5WA! ͤR^OB9f!#R9@vjsI_;7pBz4j Ps d?KDC@Ԭ*"p`<6H`_}e=")ث <`q|@G<Ԟc엍8$zo+C ú@} Pwx@*i.я`]w8@u AdK"8{b $C;_Z 61 $ښ\tѧO[)/D>692;A-L@\ѓ AByHJLٔNPR9TYVyXZ\ٕ^`q3zn1E ѓ2F)tYvy0gL-R0xy ~Hv"BygC0SEmæ.04\1Fu])"Bp !`yzֶR@ 7"0S0$0$0Fפ9fa8u^΂1_ $ [U8Ƙٞ_vJk Ys^KKWpGrei09?4PIڡʔËaba%yqapk w e,"Kڀ p_ɠzH)!H8/R> .כJ%90l0`* fW:,1IJ:tZ׈G2Q bK)PS06q`@]H& ~ +dکJl qdOFvc#W#6 4p+pPzʺdJRJ9<'ʖ 4 B#R +ejN:O&@:"dfTP`!T_\l/@d&efÒzM% 5j8 !"E (67+«0a-<۳>v<0r\b/0\"%ZEuZ&  D;b;dG=I#d :b4@f{aXBmYNe{!qWT fxf =h`@srK<ԛ;[a8 QZ[ZA1/re0WgW+adps۽!$1~蛾 Qq+kSH2N[{1ۿau<\| F<\||2@A.얒Q14[*|l1/L5:O+<.kOATa;'P6 u1/v.6xTW\BI1S8ɚ ư)Iv|X8[""T*93 $%Jp2q9%3h)Мre,':ƪ靽 ʲ扞ɹx|˸,Oa GB+$aU-" 8SK4ٟ]ׇLӛ|V[:W} 5T_ j$|L;,,͢rjA.$|% rPVc*9,6  Pt/9a_Ի ʕ'"BJF}'+ 0-0%1 Sd&Z: A173p#7tc7901,<@,ګb*IVٙW^nQ$5?IX!%"YqXe4b P2YR PR%aWk;s`!&%aeŋ/e fBE2~0~Ws= =e&J1~QFwE[}u -TJ?k[(_W'_oٺHRoHNz麮~x//RDE!`bL1ZR_t_挭w|:N:9KPZ_9x.[ѹE{لQ3uK1z\4R_0>0݂`o!@z G[$ ۏXbWJ_l.o6$`.{ #ȯ?hc]|#]< GеP$6oFu=-~DG &짏% D-bH| [N`tT7%$ut 2>| 꺕hOh, $ g&ދo;gC+Aj6 ţN^C ?#7'i6Ipwnj L3싧xѧ1"Z2A2*^CtM8sN:NO@˧ʚ*wp 2=l E3A'>@GD§, PD$TFU5I@|pBSOb<B$JUVt\-Ztр+ $St2p@ ЩDj@} FՃ3-$}p],'~[Rrɶ%٘ \0`@SVye[vecyfk/i 炽lgFb8@^vpx1ȄYp|0 iq zC (*ʉ)` ` !& mV !>(}~N ʂ8`HIbzmzyo܊dli4ivX7ɭ}@SèWsM4@ p|b(>8&y~~刀WGhq i\cGL8x%$mc2|У<@Kp)"0G4юM$ \h*L]H  CHر^ )A}̧.'F!}#bT~Tc.{)YfЎ6:Re{ꉧ2G0#LIDwf%* z O@B~JH.-de+]JXRe-qV R$f1yLd&Sdf37F^,3yMlfSf7MpH 2E3dg;NxSg=۲g?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens[—A׹ӥ`F"n*.4*x˟e/O][zqN(𡰽EG؄z `zs} 6fx}b4٣ .f# H.|:!X\drf z@bt§$9pa.b7my*^ ]OGsV( ]MSS)VBfXǺЇNh18gۼ:L/@x@2OЖTp8N[K  =t w$/@]G`MϪI>x9a֒TҗsEg8>|?gDNr`pptg[OH&Le}B{[]!&Xo's?B8!F;ګ*'j^>)8J2:)D \*#=jr0l>Cɀ;2"#I) k(/a3aN@:t0/hx  8`X $ȉt n@Ai' /]@ k>AK `)>>IqA8 Xy؇yp] | a 8*B{{ kÿЄ A4ATiF1H L,A2Lͨ|`P>S |pUlt' LP=$V6MtVh8T MBJh! w`3 ~hٖ}2wmw C\JԷX5ٺfmXx q FANhY'H  x,!3`y~xn O& QRѫ29H+ l XL;ՊbOtX#sM\{ۊiȐմTD󐉘ҤXVQtعA@Ac~Tts P(Ux(#QT9  L5mpT9 #8~.Eѕ9t\I5t ޶Ȑ`Ͻ8e=PȉMYGȉk Q`x`߲HHJy^8a6 hފ0 opH)Iэ3p61rM)gVliPW `5m ,%B1PZBt/  !aD11J:ؘRᐰ)|!n`8lq@[]%_ad; Շӊ0de hX gix ![֊Ra }0Nx4Ar?mX9,4Dp6D"|Y9l1a2uO (}8j!7Ɯ9[yJٛ= `Ήw`^$2,ÇPҸ#vA[Aaǁyg;ٜI8yk!)EhE `|9CSyjpFUiҤ TfN픩 * 2ˊu#1q Q<ЁLhQ B"*R!ZĭׇBS 8Eb$<݀ $1iࣞ#U,#LJiw9Nxf1 ؖh9"xsn=5/P` lpz!ʡ!}!ᮢ thy>\2[% @'V+bSТx&*.Zf£Y/w !/􎹰q23"QɀToɐhծs;'_% ؇'9Lksd Kq;?tD}%@qlZcy1INtMk2]%\N&O_t\h* tXuTWXyLZIydub/vc?vdOve_vfovgvhvivjvk-Fh13x2u#1@=QkoP΢ux'5~vsrSs|P({$vBWwyxJrxxwK pOY8ȇߊ H7Pp<1c-G_ ~N率`'Ooy@)te )1p{vy`Zh=;0{tzz׳~)wx(Y$w { GEg,f 13وdgt'lE͇ S9_MVxt|Hb4~} yЅ-2<ـ;.'!v@| =]xsχa0ch 2l!Dt RPŌ :-8@`x4t c^&Vu:d7GB=s]ZALY݃j[)v(\sѓ{¸"$!Ɔ-N+}Pݻ3,=y@_`;?W%d^VlݖA#CR1j!z!!8"%=0ҍt֋eB ; S!:,],C5]Ix@\6 =I P> t9:e#@%-?<o?yEOEWj5f ;f;]fn+R:z?4lq>8/ P /ʫRE;m<[_Kpp@ n (‘G\6Џ#[t0~>n%6:Q !<)%a jN̒}BhL@iavl%=a)KZF)?Tʚ R֓~2\X4D`C;fS\dq)>{ž͚ "0!!L5;y֓(h<D;5A!`u@Dӏ8SG-SOoM a,/b*m]M&H<)'c5g5,EWmeat5rc# V3)@H@WyՏ #eKI䐔УjQ2m6_p>xLy mNIlS99fx$"ՙRN$BR0"Ex#:n` `I0_1`p!fX1!! c6ߒ~r6[pO@"feB&l}IY7$k2 Mח5PJ3+ V+jt)f1Lʆ2>e/Y {7Y>JG #GƐMx!r i ! >0#xއd 6e !rѱF D)nqޚ;t"!&49<"p7,!_ r@Nׇ<W=KSj=[V闋ޏ+' hALz;S &zCF)«PӾ=sO(ńOҼQ_-N`T0y9@?00;ޣ݄̄JIRAYb1' + /;@'h:@u?G&胁 E 8C+] @+YtO>  ?qӠ9D(t@U}ŁA0  2Dَ]F\_}1 S] 6L@` y_u@J8F_<E$" (BtVhq%! !]4?<@D(4"gA?:?@@DEADaZ ]=x <H\^X*"JbEXhC CJ3z2& :d!!&M*#*B5 nJ)jCbBĉ@d@,8" DCy@![X"\t=Fn$GvG~dLH-A`!EAȀ6A@ I LY DbC֊QcRC<נ=9Gm6@ C?L>PeYCA\B @?`BK CŎH6LC`LBaQ,AŃyX?]%70K`>&eB8>2AfFDA^.J~EH+ (#(<9Č%EMɸ֯OkPa*gă6 FB/O&@O_4a\LB&C8I Ȃv'7%Q4[pP>BtR %(\@H|B(I@X y Gw q[)ޙPV(fB@e6'b֧~feCg>h} Sl(Q@gD>()HFN)V.DG7((H`C>eD R:$ DUTy$eը !E;&hXEC-Ω& :2<4>)f*-]@:?X[>`@Cj?= C.0hD@8A:".U(-?4֥o (N>j~(t?hB:8(£@4B'`k T,=( DRD>9DH,?TF$'GD(Y,Vc:,͒lDDz:Ѓ.8Ó]^.fhB?j߼&'d>6m(A2`$Cr[`On+N1*_?meeE06i?8̫ D.ݐ*ARn(P&HDFa?(|<`Q*hӚ+A/Ph 0р><>[@< AJ[4\ڢtE5ne kf"P| <ƃfF ƃGX.h얨@.:EX0CL# cLBC \o&,BK/2YtvB][ʰQId[H|?q­F- ق-l ۰y&pC<" Gl SW1l-2..w,߂QbCBXP2@\>pY-{]@?Lo#B E>аF\- >D@3IqFHg QXS==/DC?tC!sE W>p>L2$6KT@>$1r):*C9WD/kC?D$te]3\aNM6d"xB<b…6!y%N(md<@4d)Jj|d4C Ds7b"8'K2JD&8gE`>hQ lPB$ CD\GX07nV 7X96P/.7?)oq@V)>pHB Y 둲CQF@T@2MT'%ۄ&+U8El$p8@̠U8Ar\uCh Z4:U*y]?8Ua`T86Q܋yE뢃5C0عCH*>ݥBA|[Sv <(8/҆Z<<9>m!1BSHÔI(B>+ۉÄ{8/:3!ç>ja ?>c8'Cd8DA?T8!m;ԄvJ|i8w> ;߹;;d[B6PRV()AQ3=C;hU×ZI {]z ף/ W|iʼnBp+^dt\1DD<;0н3Hx{Y>ػCdl}UIoWDN @J<; T` E̿E)0_ |B.C}/ssd<;@\jB:H,ЁL@8,w<͎<=ȂiƭH8 `npK\*F\@lЯB$<`Z+ &Mi|J?e@`Q$B2\DSS;t4pTY >8DɊ_>ta?zХEOȼ\lՈp=G{0/7ׁ9|2DMH*Ƈ }g '^s|n \ 4:1Xi~=1Rcx&&R 1<~~hzO!EuXg1⑯8 @,̺G~7 !$K XKhCh9}ʃCĘH^; v 2@/q0vĠLq(ީ$"1 )ti!T9I"C*CD /AМ)T \L H| |0AmlI 8@2nB6',?]}XeZm\uݕ^}`b=؅6IWxJUd'0?dr s]]x块z|ݗ~vr3^.86Ā?Ag +|GD>؇#Fgb]~emu޹L ƪ#^x)Z\5$2 nx]ɨ臒^ꮽ>mY y`pq}g INH^n?_%-5ߜ=EM?U_]emuߝ}#wy襟Uz2ȸ`xyaU\{~/`l%'z쯫x{ X@j:$t0W # [@uruUtM@8tdBqW^bwlpW0 Xy|`D _CC$Å _#A ΄FiTH洏Y` ?c#D  y?H9Itx%0y#.)t!`dxH;,*-ݫ %"imk@d/XLc ֛H@-b!XNac I'FB}4ό4$qBR|a<>2 / e~\qVA>'L˟;mœ%Q?ɇGYR(h[Dv,y'BSC@.cK}Q'<놫mmn xO?TF9ů% ! +_7/Nl7MoT;D --i50@&f4蠃18M"<ЁlvmDހ `lՋ,@em7$,Jh(Q ȈtdH"&F'|x$rc[,G}#5 ;t|@6GhV`AO }D/Z"~C$Jc, ͦ F\A > 2aj=nS/?0&!]v4nt{D>< t$O~gߙ]ȷݧ6-NIx /qB+P@a7D #9JiUJ4RT79 o}o' " [C }<l (؇>Q LP6@Q}Б)_6)%U&%.C{l6  gE iZ8,SL- AG 棏S4!D~@?C~&vPV(|\!GytxBPq@ A3/CʟXmVcD:D)A&HfhO$Z锼B"t@ A|eo/*ď2@!Ap$RT *xP%VN^y"T'p+J8,cȦ  '= 4" >j%O \a* l b$zbN9!@By)>BpL@šB'fo" ŀd@:AV?a3fB&&;km!q^0?Ln &BB Ə. :d6qq\R@ Q p.eÅ>&oѢ!1NBo&j".E EI ix$ć'oQo" !$ֱ P(!^" a*p"4A$+,evi+*('%#&'`׎*#e(ߡ@<%L /2$DSFaCA$* d,`LmyZWȒ/k--5F"@t!\A.QA*b7!J5@ ,5]%2i"$Xt$pS7uI4411LVD`aM"V#$c&s* s,0":WtS$b?꟮6FE\o?ABA@ gD 2Q,WE[EՅd!@&!<]M/6}6 2/0,Mx O2%T&bv48G;L85{"4/^'H&}(h0tTzz۲ $^d[!:t  vA6A OAO_Oyd%A&FP)iBauP kSjK)c,-dt59B2!R AW2N#fU F-L9.rBl*UUaV'X$u&EV``%OA*DAK5r/ Xt" fBa VoY_'bi~pPmcOٟZ߄ !֮Q.2.: BW7C/8#n  !dgS1s_Ёd:q"HP>"4ƄbJržZKv$!X%( AAU*Qr*Z".z.$VkѡRIЇ2v  a"֐=ٵ_tNI(QbnVbVDL MM씫m) 6 6H6FTV#6<('`(ځ*y:Q0{%b,7/%h@b!+d(Lx܊Pl+2{46]l%cY0F:61 .6z=*@7-W -K)t( "9:cn#VAadȉ9W$D@da \J<*`$ xCM6ƸZUrRЁOs&DPB74D"&[a`"8eoINv(UP|PQKF ˻?ubKOr2VJGIQc]g]Asr{Z6xt=ؓ]`٣}tٯ۳]РI۷]ǝ]ם]]Q`B&~VCgA]hWKlH%EID0OSM zh^6^ "%d^U} J"jx"JiOHsZwf H(J桾 jVWX]zq_˾UͪDF>~w\ xb_h *#JKo@ +l o¤0 $(`xLs:5XEp Mhl7k}K^_[K=Sg"??ϨlpWW/,èjkC>*@"%R |o,Nǂ HnŸ <0… :|1ĉ+Z1ƍ;z2ȑ$K<2 x$><(/汣GpV$)#|^ZAy0:vCǎ]~ L7^U@WA`ҥMFq5N_Ard|u!v!-n8ʗCL!a<}>0ZgMRL[*UZ V,Yhղu W.樂 ̻q㔍CU6N%:ŋC̕ C `H`` .`>aNHa^aBpE)Hij?h#وAH"A,HWfW8OÈi@m?S?w)'t:4担2ď6c9cpa @ $NB)64^)e_iPRdN@`9ƎCI@#i}RoNKm^mnm~ n=T (+@St8@ OA;p Y,˝6!&VЏ jMb7PwsoN+au ±P@<5ssCI|Ev4 iOɠO7֗0k ? ] G#| ( S@::ɇ.;J<^,3>;9~7oG_#;^A!Ig;|7yi1o"68]/{UAR \ c,gi"r qD,D&4@$PG#v|Q Ҋk4ˎ.@~QBZ'1#G(&RA-dh&5l4$"|(@'bG?^1L&9EPj+ MdGL#?ىay_iG= 9,RY9ƛxμu|_ V$%R̠x0i +0=Xz5:Qʁ@ t`ݦ̒^ {A6EʚKx05ǷFr ByPQ-:*<ju-+s#A<*%8@d}HU>\;5n݁D7>h#h/f5FbX`/ kx?L!р' *+,#^[Z'E h"t52}D`6fh;uqxdM }5|16b&h|;xYWYs't \Gb)QCÂqjl!,: y~$Q<(,J6K(s1敳.`s3 }$%GرͲ+ hK{Ԯ#C8,ࡏy69@ ujO_*ɩD(.`<50@\X<9qsz@vJ j؁$dcxBx~ ~/_ t0G␯/k~g;: <(yGNL0zҫ~o_w BdA Jm 5T92uYVU|9+ G! 9 Q@qQ$`u@pp=N`:2Bo7AkIUPFGr^@}a:0 y=V2 ufa 4k) `rh۹()[ŝމe)$p=Kt_1 f4&MD%Z ȩI"9 *po Vik8IH&ڑ КUPJmD扞=3K9 y5'PYeQ'DSpڦ. Cs:q|mJy sEF9SyAzUL#sj꟎e1pb@dz$:zUh"j/Jpg u D+5; 2IASQW[j*l1a }PpI# Ub@h[*@#00qpQ1puc0<$  1a&W$@Ҹ!QN U6aW Jʲ1/O24k>aa# K ;aQH@6J$|&#dwE/v `2$ )ɘ}벗负**R*,"PW +1FO@#\PB ]sĸGsb#Z8 \QA,qf 2eGUv 'y"(2ʨamdw,P#y p WB2WFp jcAt*_1w,`=fuV#Albbm,`o'+P" !LPa#]@`М%<|ٜ'}|;f-6e8!W 0_3scTre@0 8{""7U `TwӉcu28{PD0\ii ,7yM}5Y/8mi@#46pCm06c< 󔺲q]L#aR1W0@c0dsp &eC1Oe~'% ,FoC,(*tXŴ!6m6~M3=o65Ҹ0~zNdixPp-KPEpc6q6ۺTՂţ]d 8b-8Qڏԓ&0N,гiCVXDAvA!ų@qK0Bz)$S}i3Q 1?>C`r;th^Az}1Abv芸bDQ-2 AIIF a^]Kj NCb?HLD9?.ڢpDMTj`jOI# K^HH`}# /? Q{nBs@@iK Py&.lFFD=K0t::KrFOx%otd.?z9Ib =]8h61x3fw2ߡc:8R@bHEETRM>UTU^ŚUV]~VXe͞E*M;HO*wÑdLv>=h E"|IܥUp@"1c 88PԆx:=V<1e@?5x5ރ/3a.S/9&oX|nsG{,(#ϡ ޒ t!~O0gLB>)t|/&iAҠn " ѭ( !ʜ2 H}2!c D1@>e 0 15p@Gd9!ͣ.e,H y1H51A$!e3\JɃ0G' " |z0/cDH#g1pӟ U o2!\tՅ/Q)MBl V- jYBPsIwutpMbV[n d1''{+~ka*@Б2z!8A d~R^ob!c1pLP$OJt)#24UF7 AZzws, }!W)!@Lڈ,P1&uVm"2(Gr |:hZ秿~?GR?pE Xst)*>`pH @%̂a}a0< 8|cPK:#"$A1:2Dv7a>|0% Ƥp=T Bs*qDh)%`p!Bģha7y|0Wɘ3qsdyC=/>2`Ҁ7&Gp%Q!";*0!82!:QyHGD4b?hcrqWQ!T`|7 עeFDCD #l\dpB(hyڠR"S~Ѩ8}l`;XְElbg͝'週Zdr eʅJ!V왫dG )s׃PB/ < ڨ.am(7iE %0(9h˝@LBLxg @x 6#y)@%mTJmoC,B#*t',5|c Aъw=nrFwmm&]Xywo~Wp4q.xp7x%>q`UmyE>rU\--wye>s7yus?zЅ>tGGzҕt7Ozԥ>uWWzֵuw_{>v+f'{վvoVD>ם*GCKG|xu(HCx|Uĉ V:xҗG}Uv(u!,+D ~~?|W|~ɤbQ?,'Lc}x )|PӀ@DF< ywrG HILy ESUĘxl>B2TedftF{k `(PЈ`&|ڄ{| #Kˡ8 |+>͙Q崃 "#yK P `x'o R2"z'NHA lљ`M@`B !58M*+R mAm@iI}0HĢhY8ݸ2(@aϢ0q%mτKqi3:ЙCyBm|(!AHMNNFl`|Ї҇#  S`'`Yb"/:t x Dtuj'&"|Ht8:*t-b|%-y%I(b(z_KbbM| 1xi]"2rUe:Wf=U`BL O%؂5؃5 1Ї:ypСƃH36* -0,--:r5 6q$XLD ,뵼k0Y5m {i520 Z8Ճ +P3qDخگ[Ëذ%۲5۳E M۶u۷۸ۺۻۼe۾ۿ%5EUeuDžȕɥʵ%5EUeuׅؕ٥ڵ%5EUeu%5EUeu&6F Z2ÿ``py( [zźjFa5y J*S-b`  * ap}(#  6a|=a/xO*HI1&㳽7;&b h,B$ĄT 㝠ǯ#& 3h+%#+9@U%!!8V؇AN)Oe][H%;4p+(]WXkk ,- | xՉ kf }~Ƀ%UeSً@/J(aMU tVgv>X J1TŇ Tf=`hvh ͌v#l X(}x0P!2FiiTp.jiP '/ΌIcrZ蘢HV~wh(|Bހk(fcxa p Ajjjt L.~|H䗈]̐~0V jfw3@  8I`1h,HI w'>nXRmɞHn `oRa.1itȔxkHtx} v|if(@o%uD~pqAHʇ%P)Iި⁥ 5- nb-.^χpEZFbuI7Xrd8a ( A yP"2zBj 8l j t脿(p +% Aj6&h[}׺v?\ !vv`!KA;xh>jЌ쉝@Dʸ׏x@VPD' w4u yJ>@Ȃfu?jXf~m & jD}ZСO | Dvĝ"n]Pq"P1Xb `ǫp}r?"D(8zS7:1!g%Gɧ||'7GWgwׇؗ٧ڷ'7GWgw'7GWgw|'p "Lp!ÅB(q"Ŋ/b̨q#ǎ? )r$Ƀ60#;:,)s&͚6o̩s'Ϟ> *t(ѢF" \JT+oRZ4Ն 'לe~ ;֨ 3t>ͫw/߾~,x0†2i} < Yth hd1dʖ1K9ixD;pPuIزڞxJҶ\gny|`߇m^}Р|;޿/~<2@GtxeW}Za'&AvBa<AP6䷟D]Ds1XRuA:aE"!H$n(!N( !a@?C أ?CY?qNJ k-ՆbTnQTNSI\pNpMk]ғA?Ը=$ăNte#ve@UÎ]ιē B82]J<ص?NIqASQb`v0s4{1 k1shR AD xkCv @D 0Mt-Ұ$uA:$s 8$6hɂTAÎ~4Ed!ɖ@=y^:Ə0XI:`1B"أ$C3 }kGℇ9PZ<ࡱycN0\A0"RC("yL0@b(*N"p:qg2\PY1Gxc{q!NgL UNXd#2pR& byA )G:ڑ P+ o|blbV0 bHb|x&BC>@6d!N όx9_2-O'd(G&~h9>H4$;&tt1|QR2΄4JkbS$ꀍcb/:Rzt6os B"jSH%@ c,'aBTf)a2ґ&+0iԊX|2^h>#sFШqIE-Ev@tEЌh"6],cAªV$&|v~`5 Af;/ v iQڂ0r9;@: +66ժ^5[QoX@CWG"+"l\! b2$D ?mEE P ,#Έƅ?_qހzo\hJ1H@L#'x4P4L<sVM >Hp~$<{@~ᰌO P@+"eG:Ad@=#5g7Aбq\- qwA?e#$"E򕷜MNϧ5v$J+p,Wⵞwp ^ Ȭ.Е$a džB n}6T:_=[z$G@QH>2%?m[^ mspi@2V6A{7H$ݯu>$C:~a "ѕz KP}X;ePAA\"LCt:CD̃k̃x,䝓׆`5% ą@04;D9b[ ПA$ E_>P>0׀@!a?P@,!Q]`jRյ,oG1d-A<daÃB ?,[h>$A@oA!f !*D^'z'b(B{C?`@@?l.FDl!bX@FE蒄56($5<`[&h-At;ƣ+ "r9>za[[D @?4L@b?(jҝZ<< ȁd3"W̡6C7~c8 + ;jCʠ?h],d.ABBZCFDG F&0L.Fva*󭃗+CE`% Ĝ"d0/]2G<݆[[\n qbc:cBfd,]<  ( BpfC|#u%cCA C̋AD4Oæ):BWfB#TBC8 0ED̟!0$?Sz1A j:Xe&dAW9 DB\d = BXzJw@8oRE ĬJd5Fm=%y a~%@?XL<裧<(߬Lgu w h@  ^#T]?ħ-mDNA0JfiGJ rK<Pr@ B`iCXS\Ė2)ه78ֹ<3 :ӀZJ$dNK>؇MI:|(RD ݯjD+jlо*T;D >T>~=D<0Eh#`-h(dQ,]A$l|A͗@9u^<>32D # nD$@ # *=N>hGz\#T(%C4'vY]ۊkğUTN mJn:7ݞ-5 VT> 9z @DȀ>@8#x[ؑC.٣?>$.I@<̦%"4gr;.@4\lh /uo5o'JpY@ B//;/Jڰ:+qBnnR؇ gUJ?dm;0>L;ܭqA$@& #qDdU@% <&J$Sr%[r B}x<ZCSo?Plt)&?d_B$&;D@}4EѼ}(l5Jܒd \@4h < Ԧ7<(T&MցGbܫv;0 YZ0.r(=ybt2GoeLTV RLdc2DoxxoC%]>ۇ>G=24b4 1:4$0&y`Dswxxwy/w2u@8?!i;}HʱiDm E4@ \ż@t0?|9n  "L[[ԅՃ@N$)~FP@,LKTP$ru}P P f~z8EK>]

du#T@? '(m){C /l=~?@8`A#hF_N Wݼ * tx>/y+:v/yuo5㕳0l `SOF:jUWfպkW_ }R>- 0πcg>S dA`"k&@90<ЭhB~*,`KQVukׯaǖ=vm۷qֽwo߿.\>~ ; ӗ't tɀa"y 000x )$ P T-B3Jd b9bJЉ`gc`zAA'ŁmC CG R!,#LR%l'd`/x,)!1B|ʁR xT'tŏSϨHRA x@>"DΫQj1' ~K j̩&] 'gH $Z,T]y_ Va-ئ:}>:Citt@`@3Tt` w&=Vy N`|ɠx4Pxo(at6x ,̧@,"UH`СWYnaYa..ه˂E@ hڐ| I i~>1 aDu (xLY'P!|a8P ru `m!U Smo@#>~}h#xP d`{ 杣1*){0"e0|Htv <0DeR!)|| ȀIpH) z x5Mmnaq8%xd >}H 8I6 ae5YњV$!!m W[W}_5aX.kc!YNe1YngAZю5iQZծuka[ΖmKvfcax\X-X@֦OJKZA;-q]n,O@A5=PSˆJ>Z] M>c8&J?]pЇAF8 d Ab&A t[?pG~AQ i&> Ɏ'Snӧm,5[vH WԒǃ`} ZHx:bqtB9!)A)+3;#K,b>и~b >7ärz 9QAA58KB4X:w m#Фy);AQH4xc>02F)K5QbR<wRٸ*vNpA4Ǵ! = &`Gdy#LfR.yz`1BcڼD0]~%9'#恰 ~Dt/pTH@ %\Z80ưD%.AKFҒHAJ D ɓ)͏i8)IR.lb'zėب|6P(GcQB@N!n "t 8` k,>(n$ ڮO"` !,  cZP'(aHQAr!er'B"3v/*L|S"NC怭T⑴E gA#!b*/(!f*"_FFd Jx $zBpr++CQQrb&<f)q 6‘>n*H+A5 5,v)%,D*0) :3@t@% A3c<.: -TLA'R"A e ./B0#!bb8`)%1 xFA 3Daؐ>@b%xtJJJ4KtKKK4LtLɴLL4MtMٴMM4NtNNN4OtOOO5P1ad5QLE+|йf:${%įyΏ+$7SAkh HHah#l* 'BUCuX5HİH6: A?vihTPffpRJ:Xɵ\f$ZA;]ck&Rp+m#l϶ϴ5+yz!aƒ̵` vEH$U#wLS*f_7rm Pƪ_+)vdIvP3Y @z$3Ά> B fwdʂZ SE `Т(Aߒ2 NE9|$Z $*nuʱ @_?nے -wP%do)@Uc'Ї63,"]qiS L`.B'^B(VD.$(Ύ%\"GgˆpB'x)"!B*ﴓc @o7#V Z!u b Vu] -`p{=KqngvL|bb a$By $lND9/#С>=)>3߾/P ' ?HVNQ` 0⼷]r'Dx'11a/W b"Z"~k1bppF.4&NO6(g@DDbX v0x|h A8'hċ @*b#\ +&)*'KLER}ACsum! "yJb\\]%[1tpK.eql PщbN3Ri8uٯhec4ghyz~ B)S#6t}/).viAjjFEma\MCpuz&/,/@֦mZSw2"'$׷,TrsbXTA+>FCπ ]nr l@FbnE11 n 8Bdr C :muGbv!h9C&2<}w؇Lpm_uQ˱zi4pÅ/92jBq"uW\awd2L6lxI=3:.ɮu_7bh.nWEA:& pbxY=[ywzĹ)."_|}o o^$PT,3Pe|/X3X>A!g$x;(x? a[bW bZP >\ KҳXNa^ b#4x |㡂]X_D8NUc0CĹnPٛ{ "]u^ /@M88]d3To߿ LÈ+^̸ǐ#KL˘3k̹` 2\9mՃ+i_~儃@zy1'2D,h9(ԫIwٲ- ̇#1wI'uc6*@}c:x@?N+p~F(Vhfv X;(yNtrÏ%)%< >)E|MR)bI:F7[ä?j_|OKeNáI&Ў=2lyr<0σn矀*蠄j衈&Xǩϐ*nGБ*#|j>@TN'OE<@~h' &A'k>TO[Tӏ=!@$EO0c܊(Ch\>vd?W+k/' @? $;(;DB=0'^ :t J-Nh\\ \0<'= ; q4Ɩ& |&ă#ѓ>TPf0"3D`ufh?Y T@<h<?[-tmx筷~&nV!$DjW0:p*V+q;;OxCo觯ыoc;fL:p'H Z̠7z GH(L W0 gH8̡w@ H"HLb$0.8;"*ZX"DJ"y_.zCH\1>`mẒ>4h6 >Z,!=ХC",fxʡDmHA=Ȑtca<&HZCt*8`<&Ri& ; `@1(dԢ:H @Gpv.4q0ЇpK͒+LK=H_&*В<<πf1E% k   cI""@ #c ~R<k*6a`{Rs>H܌8sXKİjD(rcR@>1bxВo\L58pGғd}<`d7 L} X >B$\H1g/Ȁv'IS3Ċg%Q0#f#Qs@Qs -g'PZ^ӓsBkE{0 |H%rS~s:+4!QBF5YӴuc,f$%=&%P  ^`X^0@ Gc+xLP{sq_u6 0%T  wUfH NT0!jt&0?(F X>P48+WBLN_c.6OAI;"Qe@%'o60# |XQ ."X"~Ǵ6Kpft 0F4Ћ %.sf=pݵr &o ,Q=+% 5) _c8Y,6$jF- 6x2.g"ms%.,v84Y=TiXM]t}*^P`pX30pdP4am0K} شL`81Yb!^;b<_e>P0TfJ4D)`_Pe"%*c0r@ 2[5a8c ~Ggu4P#52@W]Ac16;@ i;0$69A%A0Q&`H <@ D +o8e@"3 @9l 9A?ȩS:3=" pB HUs,bP<&e#8cC:2:%yZR& a<ɔB`)CɞBrLDʪwyZO˴\dmC0l˾<\|ȜʼҬ+| @J^<\Νasdyr`E|(fP HkY|JB%U9TА }pHP*Vb@lGPES%^,M.=16}kN$09@cAr[QN\MaT] X$yAԎkV,E'hj 64 1Vr=4[y)|\񬏁dQP1_kjzGdrFs3 gd=3V}tڢ]|3SC3 PgAyL1ykc΁QGO4E_k(f PgMI<-'04BY' ZWQʰzd>قe ˯X*YXU[YYUm5`(C\Bp<1='%QD1дL(-kD} gd0&cK&\aa';g+[d 1%dK~b)6b.F_u_0`#x()E#po Y1]$ BpP5[E]G@d%oJUn~̰oy̥'De= n%,UXRkdT޿ok6h6m%`uՋZ.fa 3dz}foX& ! &0 #@^NGGwUsRX/=3xǀG1dYJ9hHѬo'| Zxw^z^|w_~=}8-/b]yjYiL)h0#'Q+.>vٕ<૯B'6>cE8OBG xr ЁR h.@v\k&0LdDyI0|h$ *)뎬+j(Dm.@8I|5|r+r3|s;x|xXW$31ktc}vkvs}w1yw@Iw裗~z꫷z~1iܟ,{{W}w}`TP$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BrhQIa}C QCh0f"HKX4-@<~bV"bE0Qc 2+ȉA<|hghl;e&F~#cdtdd#H!a`JaQXH䂑$"m@ $)`\yK\R ؝9>&rIBQ#m&cC x/@5MpӕD5NeD< O%'O\I1@Vz* @c>?BfLIHdxk xz#'3>"An1h˖UKejSH 80 @=d""vIc2^>޴X*3::MkqK"K@'hy>8}Du\M2TyéA*fVl|ُă!XT3x>IF:`@v20(Yi b#pT nz-Nng32xW%oy7j L1GbĎNzYEUPw:ǧ G2d"9@?RP-I ?(,3ysx#&qM$vaH&0;Mo| j= r !85HZ<鏎2mL.>"zp J4ʱ4!{Zd Zȣ;*>F1%6{3Z<2Ч^g=eJw:z^\w䱅yW|'_"_ҍnoӧ~~}_'~_g~_}_葁j 8@[@lc|0a S 1`; ~zK "s@5! l5ǠȐ yxS`A|TA(B X;؊& о  h.B8ók!+0 ^0:;29r%CG|D5'&;]7ȉ- ~ kx '1P<Dtz(v8B ##}@=DtDDt Q!#Zy2b2 ڇk =@nDstx°dy7mdLN/~thn!} ^I83rʘK2|m%x1Haܐ̵Щ,|ummE= (yЇN PZ}x}ЇL0mى{Nh2T tx88CAcvB㢃Tc <9]Q(QD hn*Oг*xP0 Sr̂xQ|m4‚tH9>]0"Ԕj8(1P V鋍yW{W}M ؇m$ )K";۵0}%lNs Z] y mȉ`NhЙ*i{w;+6òЄwRX0@ulȄ7eRwkY8AПy`<)@LZ˽\G\\R ]P$]M]%5}]؍]ٝ]ڭ]۽]]]]] ^Z=^M^"U^^m| a0w̹^]rbDqM_|i}XDN˨_ȨH  ]_`Eh7 `xʰ# =<ˌq`͈` 32*<1CE6xx fv(C`a)̇*JXJLlNe~F F  !.#Ƈ{)r2Am(E[(](A8YU)}>^m@blŬ2YcI pcaE^d.`3y6KYx@tGwK dPMV +&*oц89++2)(yh򇅝KMR5؀[ƅlȧ,9TYFfp>81tˡ)9 $sKBDuv g,mrQ`-!|g H"=d,21@-J}Pp.p>i>8{1O߼<&DNhM\Ddk7ZQ'ic|hw1Cr*B x\}`h̓M`ى fLink #8#t.Г,zΣϻV|_a`^hB}OBlftk.atHjymOsP^Oϑ  t3䞏p_a& Q҂ ,,mm80mˇyҁSS‰MV@R>`[De ^kb;!u5؁QԆ[1_WM"AL8le(0𑨋wxpMֶ o_E! ~HVv1UT&/0X8Ї|RfMxw~@#hPk<%}q#0ȇ\=EW8 Id/;yXq8'^IɉtXבXɞ}ysHی 02!61hMIl)&Dt/Ȇ)vIexXfmuse?i pYڦɇPD$X(-XHSڕl%>> P 3|X0 xZ퀹ŏ؈ZczxHmij XQ+À_vWvMb ȫx?yH/*Fy9H:xy3,iy/z?zOz_zozzzzwwx(xsl5zz5&W!5TRECaeҪ{3)V(z q^}/<4 3J~ ;$` ( 5('ˆ~XpmR϶0@}p!s p콉`[@ tAO2^P"xֱ@ߨ(_h~~ =# jO x Bk"(l }/c8c e!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:wN|΀DC|k:o@ 42(ڪB?t z0@]TbAx̼}$eǮBAR g`y @>mM %: lg!;|X] ? 8 x?]DCBFQ>#Bs@PCBp!xP?&,XOxAďQN<k9>fD,|QV(aOr0sci[ZCVD@rSbjlDpd&HCYDLV_U^9<;\?:&xRa"<>φ *SBQ H4:y***:*Q dc]4: ftxD!A#?L>1&tX@ :EBӀbl Q;>+KOQ<'I6ho42 r#@L>0C> ГtJ.:馣Cs@ #0F @MglCQ4< CQē::~߇?>)F[F:;)_' <@sH`ؿYlDXPN#;P؁4 t0nAvO#!@ 8X:<H~~  l>)pCU#=~# _mT"C` CR;*7^x%X >@g=$+yIzdRq蠤%M[>| H"R7$@%瘒# > @Gu$M9cV֍8f<ࠏ Ħ6 bD|xǼBC0   EfFv)=7 m!f6ˢ6`=82=HLg!4#K; 1F4%jNSb ,L! ac&by6t=lXlq\;x"P.B do1!+ؐ =!.x&δ b0?:QE|`; $jSղ}-l[1/1 @K(>P 肤fp So 5t+%ܶ,$xg ." @”,L20+.p~A.b8"pp/ژER] A$Qr0H(fNic® pDLé^`>ĀQ81c y,.?p 1` bFQ` VAs `"xxIG ' C%` $5Z;1ね60u{ 2G(n `ZTlc-YӺֶ54+ !9;0Q*3)1)F$=FMA<* v͈-!}mQK`|C<`|a `8/8i9i`p-.M@D~ ,Q=P ѿb`<$2ACVth36n-5gb:\sB=yw((BHQp!@q<HV׮\WO( ]Y:x)k(`Mēuf,$q @U:r-ѓ?=c;[CIgqjOg1} =' b@eO{^=6Ľe(p2x(yx‡D1ߔt&"*? @<&\'Ŷ[ IB" Ì]DZ ň^C,zeD( hAe]Fb_hCC+ Bdu, 2ů)^BCܟD< .=Y@L0Y-F<D\NKx@\ݒcUÄm9 .=OC B Eh>d(x`̃ Dh6HED703BA e6p\q ~8B8VD0%P|Zht45be?#?|ză<N 0D6>f cÃ빋X>,CBO$PP%#D4TE^D =Dh[-CICWU`HZ^ZCrGibR]:We|,& T`&2s%Q  ΈF?0Aҍ8Dle$&`?\KM R~0ޒA|f FN`xB!@I pe[`@脣0Ќ9A4GX'@׿mXQ`僌PxB|EL&X.f90۸̡zAH ?|IUU;V}I PQĚ1gE@u!6)S݌G >걌xH~J1REB]F \D(+M8CaC贃aX?L >$?W< Xq<\d<:\y&<,gs0S+{D@Tn>A<\!A̝Cbke@A=D11{Xc\3uA,Ҁu9#tMpS[eVF` ԎPTX)Ͳ]ĥC J<F~FK a X!A.;0C?;0#2ve, Id I("XF$KjPᎨ B@ kD|Xp;~Ñ/ƯBLxHQL8NXޗ̑P'lC;hnM>DGPp8 PŲ[hN0#aFD> E B2BI(H<@TlQ(c,'%:,xx?搄Ƃ4*׮)i?%?\b@䌌1;P`qPGDD tR@Ex,Z2WcdGD.R> $а>|?8h`1^?+ELdq\ܙGeP  11F\*B_ I0 $YB}^\@)Gcί7388皂[*89V CT`n@V"# Tj:3@@ S.Ü t.۱>,$%d0A4HH}3IWO^* >I4M״M4NKI? oLC*kRtNN5R'R/5S7S?5TGTO5UWU_5VgVo5WwW5XX5YY5ZZ5[5SǮJHu]]@Xg^Jd\VPKH acD)[7c?Hh ކa za]siCj6k`6G%:7fxq?\kF8F@ _,!E@7W|;6LLDh\tns>RDѩ1nFl<8'h)3Q!>D &O\PBw1 0nCD\)Ck&y0BncQC<@D76׸!WPdS@EwdDU`Y8PW|EXlĐ_EVP<\]"ƃD"o,a$b4cDdTfl$biƪ@@Y6 SHBS3*x4NqCz@+t/fC ON\]W4QT@pǷnR'&OGQl\ *S8v<yzq>8"@<pc `423D} Y{SH5`C_ȈH>@}$<`TT]̞wNgxnJ‹J BBGjubQ+ΰrp_KoьRt_fА ; {LJb ܤqf>>JC>$E4iЦtdDIM }X|(޼M6_ c,= 'h1<@DŽ X`KIE]Ljh'f$܉tX,x0a_ $`m@#À?OEh!ϧ;mѬMB^Ƭ7vn~ N|(``3VE0_~g6:׷~ <\|% -4msi1Zk2'tPbpE2c NLqŋ (AF/2E .#|8R28t(EPTQ?'#z'j"Lh+p)&"}@ѹ A~J8D΋ |1IT"4Rjԓ9MQ.'|:`gvDŽy9 3A# XAG4127M:`|3Au %YAnsBHĘV`Rܠtx=qTS b]x/ ~'ΈRIzyϋ\I'7< T/6O 2NVU"rxGˇ1:c5i¨ꪭ묵ޚ뮽^1vnB@(8@Vpxh @8`t 0[ R1b҆|)/S eG-􈦓cCZӄ%`eAhmTg~c(  /"mĸ}ew'( H`n> $M.*@}]evn>)S@GKtD[c?Џ+$@z^DbѼDCxL#A&V}9Bp/]?}djJ<<} b@GxN($@ Zd&zn@ xd` ^GӹE #e2c u\#,i S8Ck Fql YHCT"HG'Cg[R2 X( D&@?:! 0i{Bx@\>z6G2Ź]U"Frt?,▹Mt`|yGbiJ3 q6 j:1D '5@GС f;մO>fO,/C<ED' Uma0brx(ID9 |("@%]B|& tHdy| u[od)NDMuEK%fٗQ\#).0k G6"y1e8| | `ot |!qHJmD@/P*F}@X#)[Y^f9Y*lKBD>m%&`M'Ё(@<ЕN:K q 14nV@ڡcuHxC;`A^AU_DX1} S:QS1"%}\5FDB6!Y(Eh4֛2ܕ?͈CV5:.N؞?AɈW5+iW}L'x:x{uIj >cNH<7:Ў0:d>J`m!`8;#%POn<|ww<&Yq?Pۋ&<Ҋ3:JG+:z~(yd/Pyk/?m4 {E`Ӕ?:>k33}C|0zI<^xH/Cx?(D>h_zWp0LPZ-m =}Lk~+pFjM"ht%\*0ԫ#JNmqDNL /hasxKzn~P$i4g+B40"f"Bq2 <6*"bf*"@Gbbh;AtЍBb Jĥt<.!\ |'eJ:.!B(-r ٬H`C vg vy H/"!2 DR%Н F3 1BA _Qn[ gjEK`ה>.*3R$`VÄLd710 j!e,. !#Ё>C϶.! i%R"O&o'sR'w'{R/"pha#F]  Eg:r"*# ;"Bء2 } v)p2rͷNKd\B^ࡗȤG* ?Qw(n F0`ڤ/f"g2eP,$2 NAlE+O/5'p|18X2:|Ec64Sxh53"QF "BC.rr+1:(t"5#"P/GDb^[bhB-0уG'HGR'!`\2E7N;h|C1B~-RBx^H!*CoW&5eA(r(" Ep 0S2@S }JTJJJ!?#">?%!]X v7(4`9i))b$ дaKz”Aˇ \EL`)PoG=hI\b"t>"@P>EsB꩞ I HF FjPL17:`Mjbqb7ޡĀL h( 2DK!q42@*`ΥIP'Ёq`V^24#557@,\cS:UF+ڲμH$@n~QQBaKad`b\zN}u|1UP%!:` Ra$v"5"q+. a'R]"""2=JVkkk,2Wk d|e33BJ߶m+loVoov'iUo#p?F/, eࠆqV4ry p3Ws7s;s?wktItu*!q$ELbg1?GvowsWwww{wF0R afol\ s}zz{W{{{|W|X|}W}ח}}pD}~~W#`X z׀X؁'+؂/3B$X;؃?CXG؄OSXWwK_cXgЅksXw{ؐn؇X؈X؉_8X؊8X؋}7Xǘ،4Xט؍/-X瘎؎&X؏$X yِY#Y'/3Y+ؒ7ٓ?C~;YKٔOS[ٕ_9ogkٖosYw{ٗY٘YٙYٚYٛYǙٜYיٝY癞ٞYٟZ ڠZڡ#Z'+ڢ/3Z7;ڣ?CZGKڤOSZW[ڥ_cZgkڦosZw{ڧZh`ZڪzzzZZӺڬڭߚ:ᚮ뺔嚪O=횯::Z[Q[XUz#[ݘU@2`Nr7xT "@:K9ڴWuFc[Xwos[w{۷[۸[۹[ۺ[ۻ[Ǜۼ[כ۽[盾۾[ۿ\ \#\'+/3\7;?C\GKOS\W[_c\gkos\w{ȃ\ȇȋȏɓ\ɗɛɟʣ\ʧʫʯ˳\˷˻˿\ǜ\ל\\] ]#]'+/3]7;?C]GKOS]W[_c]gkos]w{؃]؇؋؏ٓ]ٟٗٛڣ]ڧګگ۳]۷ۻۿ]ǝ]ם]]^ ^#^'+/3^7;?C^GKOS^W[_c^gkos^w{^臞^闞^꧞^뷞^Ǟ^מ^^_ _#_'+! ,fBBD664^^\jjl&&$nnl VVT..,224JJLZZ\**,::<zz|""$bbd>>@ P@̜BH@ H:Hpfp X@XԺ4<3= N@tϑhBx=K~Pt<PH8@ZAuβ,@ @4:H;,2@C'XH6+xq=H!IHA?A" rIIu@ 838 xH&ZbN@=p .Pˈ8 % WiH#ΪTXGMqӜhTS] G:*n`Cjԙdũ0ZAz }*W€dtjψЇMmfn C 1 )MM$>d{O SE,E`TU> wŪ@$˂0׹ `+ J[K(0VQ +C]yY؃@Z\ iT3D~=-/tY1LBZP]yp0^yL-hG~p÷gLc#H7C1A ' tA6[##Bu8"/юbYtY.`wh1OeYT)e{\Y N'QGkϭ,OL= ҥkObfC<%#InI5wNiFǚm[M @·Y D 0 ltXnkLb6Hl2ARɴq0? ·"rApJ W5WA!̣ ͤR^OB9f!#R9@vjsID_;7pBz4j{ Ps d?KDA@Ԭ*"p`<6H`se="*ث <`qx=Ԟc엍8$zo+C ú@s Pwx@*i.Α`]w8@u dKL8{qbDC;_Z 61 #HҀښ\tѧO[)/\G<692@>A-L@\ѓ AByHJLٔNPR9TYVyXZ\ٕ^`qq3zn1E ѓ2F)tYvy0gL-R0xy#~Hv"BygC0SEmæ.P4\1Fu])"Bq !`yzֶR0 7"0SP#0$0Fפ9fa8u^β1_ $ [UXƘٞ_yvJk Ys^KKWpGrei09?4PIڡʔËAabQ%yqa"pk w zU,"Kڰp_ɠzH)!H8/R>.כJg%90l0z"`* fW:,7pIJ:tZw׈G2Q bK)PS06q`@]H( ~ +dکJl qdOvc#W"6 4p+p*0PzʺdJRJ9<'ʖ 4 B#R +ejN:O(0:"dfTpp`!T_\l/@d&efÒzM' 5j8 !"E (67+«H0a-<۳>v,ګb*IVٙW^nQ$5?6IX %!YqXe4b PYR PR%aWk;sm`!&%aeŋ/e fBE2~0~Ws= =e&J1~QFwE[}u -DJ?k[(_W'_oٺHRoHNz麮~x//R45!`bL1ZR_t_挭w|:N:9KPZ_9x.[ѹE{لQ3uK7z\4R_0>0S`o) @z /G[$ ۏHbWJ_l.o6$`.{ #/?h˗p=t#.= G P$6)FuDa;-~\Gຌ &Lw庆 \-bH} [N`}TCWo]`%o:vt 2>} 꺅WSyF Ky D^yq/߈t]*u:ztdybرeϦ]mܹuo'^qɕ/gsѥO^xֱN_:H{dQ \{+$;{Oh,y $ &ދo;ygC+Aj6 ţN^C ?#7'iIp{nj L3'{9'1"ZBBa*^CtM8sN:NO@Cʪ*wp낞q2;l 'E3Yb4٣ .f# ,0|: Xdrf` z@bt§$9pa.b7my*^ ]OGsV( ]MSS)VBfXǺ8Nh18gۼ:L/=PE{̾yuY>ǺH{Io=|[aKmmn7uKZA $ +2;z$"c " @Ƚ@:F FРé>t@2OЖTp8N[K ;t w#/~@]HG`Mϊ :x9A֒TҗsEg8@<|?gDNr`pptg}[OAH&Le}B{[]!&Xo'sC;2"I9 k(/ɇCaN@u0/y 8`` $ȉ} n@A⹄' /]@ k>AK )>>IﳇqA8 Xzzp] }桃 8*Z{{ kÿЄ A4AT:x1H L,A2L͠}`P>SuHHTKd+ !7Xɉ wcIcp$sHtJ y+FsًW rB@ ! PNA``܋1 Qȋ)Dt Z5D:30 h rsm@@j^"k '# –ግ̤L˲XMHLL68Qp0PhGHIіP|OϰL HC!OЅ%Ft4O(δlN胃 "yuQ-yʘ) 5 hX gix ![֊Ra x0Nޞy4Yrʈ?mxX9,4Dp6D"|Y9l1։a2uO 8x8j!7Ɯ9[yJٛ= `Ή{`^$2,ÇPҸ|A[Aaǁyg;ٜI8yk!)%Eh |9CSzjh:UiҤ0 TfN픩* 2ˊv#1q Q<ЁLhQ B"*R!ZĭׇB 8Eb$<݀  $1iࣞ#U,#LJiwC9N{fy1 ؖh9"psn=E/P` lpz!ʡs!ᮢ uhz>\2[% @'V+bSТ¸&*.Zf{Y/w !/􎹰q23"QToɐhծs;'_ '9Lksd Kq;?tD}%?qlZcAINtMk2]%\N&O_t\h* tXuTWXqLZIzdub/vc?vdOve_vfovgvhvivjvk-:h13x2u#1@=QkoP΢ux'5~vsrSs}P({$vBWwyxJrxxw pOY8@ߊ H?N'Ooy@)Țue )1p{vy`Zh=;0{tzz׳~){y(Y$w { Gg,f 13وdu'lEE S9_MAxu}Hb4~} yЅ-2<р;.'|@| =]xsχa0y 2l!u RPŌ :-8@ {4t &B>Aw8`WOP|CȤJ2m)ԨRRj*֬Zr+ذbvpNG yjt[9@._܅XjჿM+B ##uDauB!@bPy q6H7;s]JẢYvj)v(\sѓ{¸!$!Ɔ-N+=Pݻ3,=y\`;?W%d^VlݖA#CcR1j!z!!8"%;эt֋eB P>S:,],C5]Ix@\6 =E : tG):=SRTR(>0)Wr:&y&2'Uo9t1RgS5:'\DxyhC(U|A& :_U|MYZcHWih9CR2FE ;,{,*K<@T>*I? P`Hq$ iDBA:0E' `@:A@>\C?oD(E:&H#04= T:B@GA:t:#@%-ԁ? n (‘G\4[tP~SH ;n%6:Q !h=)% jN̒}BhL@iavl%=a)KZF)?Tʚ R֓~\X4D`C;MfSyXdq)>{ž͚ 0!!L5;y֓(h<D;5A!w@D8SLG-SOoM ,/b*m]M(HY=)'c5g5,EWm=r9фEYs GW!H)y;)OzխzK~W]q\ah. S.~1AеhC>us5rcC V3)@1H'@yWq eKIjQ2m6_p>{Ly mNIlS99f$RNH$BR!E{#:n`I`qI0_p1`p!fX1! c6ߒ~n6[pO@"feB&}IY7$k2Mח5PJ1+ `V+jt)f1Lʆ>e/Y {7>JG CƐy!r }i  90 8w` 6e !rױF $)nqޚt!&4< p7y,!_ rN?/< W=KSj=p[V闋'2 hALz;S &zCF)«LӾ=sO(ńOҼQ-N`T0y9@:.0;ޣ݄̄JIRAYb1C' + /=|@'h:@q&eB4@<2AfFD@^.J~EH+ (#(<9Č%EMɸ֯OkʃPa*g؃6FB/O&@Or_4a\LB&C8I Ȃv'7%Q4[pP>AtR %(X@H|B(I@X y G|w q[)ޙPV(fB@e6'b֧~feCg>h} Sl(Q@gD>()HFN)V.̃G7((H`:eD R:$ DUTy$=Bā=ǧl$.di]^4K7]a D @2C8$;&6G\&tQZs6 6DJhA0GЉ*2e ?E<)fD.DPO>b:D`>ը !EET>&hXEC-Ω& :2<'>)f*-Y>?X:\@Cj?; C.1h@@'8>".U(-<0֥o (:j~(L t?h>8(£@4B'`k T;( D6RD>9DH?TF$'GD(Y,Vc:,͒lDDz: .8Ó]^.fhB?j߼&'dC<6m(A*`$Cn[`On+N1*_:meeE6i?8̫ D.ݐ*ARn|(P&HDFa:(|<\Q*hӚ+A/Ph 09<9[=L AF[4\ڢtE5ne kf"P| <ڃfF ڃGX.h얨@.:EX0CL cHBC \o&,BK/2YtvB][ʰQId[H|pY-{Y@:Lo#B EF<аF\- D>@@3IqFDg QX==/DL2$6KT@9$r):*C9WD/k<D$te]\aNM6d"x=آb…6!y%N(m`@=@4ޡd)ʃJj|d4C Ds7b"8'K2JD&8gE\9hQ lPB$ CD\GX07nV 7X96P/.7<)oq@V)AݥBA|[Sv8 R=(8/҆Z<<9H<'i!ASHÔI(>+ۉÄ{8/:3!ç>ja ?M<ăc8'Cd8D A:P8!m;ԄvJ|i8wU< =߹{>d[B6PRV()AQ3=CZ>hU×ZI {]z ף/ W|iʼnBl+>`p\1D@|>'н3Hx{YZ<ػCdl}UIoWDN @J|> T` E̿$0_ |B.C}/ssd8T>@\jB:Hā,L@8,w<͎<;ȂiƭH8 \npKX*FX@lЯB$<` &Mi|J?a@`M$Ȃ=@ ΎJĖOuf!D;{ʻQ έ<[.<`o]=E&z8`/t`(߈u;9Q'] ࡀ3yNL^:!y89{H Fۺ2N;0XXFSSu4pz.TYù8DɊR:ytaw֥EkOHZՈμpC=Es0:/5a5|DM*Ƈ g '^sKtn \ :1Xi~=1T={(&N1f=}hz?O EuX'l4쑯8  ,̺;Gt7 !$K XKhCsʋCĨG^; | 2 /q0vĠLqy$" Щui!T9I"[*[D 9/YМ1)T \L H/tБ}0AmlI 82nFB6',?]}XeZm\uݕ^}`b=؅6)xJU@?dr s]]yx块z|ݗ~vr3^,86QĀ?Y' +D>؇#^gb]~emu޹L ƺ#^oy)Z\5$2 nx]ɨ臒^ꮽ>mY q`pqgM INH^n?_%-5ߜ=EM?U_]emuߝ}#wy襟w0ȸxyaU\{~/`l%'z쯫#{{ X@j:$u(W #$ [@uruUtM@y8tdBCqW^b{lpW0 Xxy|)=q/p> _CC$Å _#A ΄FiTHYȇ ?c#D  y2 / et\qVc:'L˟;mœ%Q?AGYR(=p}#jH{JQ`^&BJ_/)(XT)Q%}~GM;:m)z(NW5OnVRY(U4=?ř 5y^7]@0ߑ(<@S&O}ă֛P"P]Û"M<8䨸NT: kt :;TȣT9h^:cvKa=,Z JʈTI,a X2V"<4^`"Ǎ-M䤒 MK}: ӟ!b5ѡbl ȃ:[Dv,y'BSC>.cK}Q'7J=놫mmn {O:TF9ů% +_7/NlMoT;@ --i50Z@&fQ418M"<Ёl|mD `leՋ,%@em7$,JΡh(QH}dTH"&F'J}xA$b#[,Ex#5J>tx@6Gh%A AO }D/Z"~C$-Jc, ͦ-: Raj=nS/<0&!]v4uĻn@>@= t$O~gߙ]ȷݧ6-N9y /q @?7D #JΉUJ4RT79і o}o' [C x<l!(9q L060Q}Б)_6|)%U&%. C{l2  gE iZ8,SL- Y sS4!D~@:C~&|PV(|\!_uWxBPq|B A3/CʟXmVcB`8D A&HfhO"Z锼B"t@ A|eoI/*ď0@Ap$TT *xP%VN^y"T`'pJ8 cȦ)  '; 4" >j%O p\a* lbM$zbN9!@@y)>BL@šB'fo" ŀ8AoV?a3fB&F9km!q^0?Ln &BGBe mƏ,(:6qq\R@MQip.eÅ>q&oѢ!1NBo&j",E EI ix$ć'Oo"  !ֱ P(^" a*p"4A$+,evi+ &'%#$'`׎*#e(!@<%P /2$DSFaCA$* n$ҡ,`LmyZWȒ/k-B-o5F"@t!\A.QPA*b7!N5@ ,5]%2i"$Xt$pS7u4411LVB`aM"Vs#$c&s* s,0":!WtS$B?꟮6FE\o?ABA@ gD 2Q,WE[EՅd!@&!<]M/6}6 2/.@,Mx O2%T&v48E;L65{"4/`^'IH&}(h0tTzzےAS $^d[:t >A6A OAO_Oyd%@&FP)iBauP kSjK)cJ,-dt59B!R AW2N#fU F-L 9.rBlU5UaV'X$u&EV``%OA*$AK5r/ XDt" fBaU=#N"0U+q *q+ fR;YN8++aaaQaNz?$'7N@'c=`n`ea6EJFAT AL)V(K|.juҵ1UV V*cvl!Fn)N{%jnOTRlh$JhV (U1bV140h1A+:4aS"2vS $}F`Wxx))i` <|R/%)d5ޤ&v"TiS䆠dkh,"p`L(CL!z@ $:(֡%*`%4ayTNxQ"yayC4X?" 7 iD2 /lUe F@&`'㏁7΁!?`Kv!~qc\QWN"`:W ru~W"ON 0!(By]f"Q7@Z'HX$*'ߡ!YqjB<#2ךH%Bi( U"@%px7;QS0JM"Tx1)P)| j%$V"l#HI:#R@a":Ca bFx J<%b:(h:8INa(@&@^ezfgLRH#8MNA&!̀`=>9VoY_'bI~0PmcOٟZ߄ ֮Q.2.8 BW7C/6# nk "!dgS1s_ցd:q"HP>"4ƄbJržZKz>$X%& AAU((Qr*Z".z.$VkRIЇ2v `"֐=ٵ_tN)(QbnVbVDL MM씫m) 4 d6iH6FTV#$6~w\ xb_Bh *#JKo@ C+l o¤0LЁ$( xLs:5XEp Mh_l7k}K^_[K=Sg"??ϨlpWW/,èjkC>*@"Rс |o,Nǂ FnB <0… :|1ĉ+Z1ƍ;z2ȑ$K<y#<<`&Ϟ>{GPA#(`}^͛A`zP|[/t WoQXGA`ҥMFKq5\Ard}w!v@!-n8ʗCL!a<}>0ZgQRL*UZ V,Yhղu W.樂 ̻q㔍CQބNέ:كC C `H`` .`>aNHa^a>=P@A3@*Nc*.Y`@@#A!I>*D O#| ( O@:ɇ.;J\O^,3>79~7oC`_#;^A!Ig;|7zi1o"68]/{UAT \ c;,gi"r qD,D&4@"yPG>}Q "k4ˎ,QBZ'1#G(&RPA-d騃$5l4$"}(@'bG?^1L &9EPj+ MdGL?ىa_iGP= 9,RY9ƛxμu|_ V$'Rp{0i +0;XFzE:Qʁ@ G`ݦ̒^ {$A6EʚKy05kǷFr BzPQ:*8ju-+Os#A<*8@d}H:\;5n݁D7ч>h"h/f5Fb``/ kx?L!р' *'(^lt[.'E h"p50xDS6fh;uqxdM x5|16b&ch|yYWYs't \b)Q1̂qjl!,: yqt$Q<(,J6K(s1敳.D`33 }$GͲ+ hK{Ԯ##8,qz69@ ujO_*ɩD(,`<50b\X<9qszvJ j$dcxBx~ ~/_p`0G␯/k~g=8 <(GNP0zҫ~o_wK=X*{s / }c p5 Zϯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏Nz7R!!pg=‰a q  b=_  I1X|g%a(;a{ח x t pA:aSf _|8(;'A@;885  a÷Q(RV]09k!62 Q5 .'0z.xYzYw AYRH 2CN)&Q9_i;Q|0 BdA Jm 5T92uYVU|9+ G! 9 Q@qQ#`u@qp=N`:2Bo7AkUPFr^@}a:P y=V2 ufaS 4k) `rh۹()[ŝމe)#p=Kt_1 f4&M%Zȩ9"9 *`o Vik8IH&ڑ КUrP:mD扞=3K9 y5*'PIeQ'DSpڦ. Cs*q|mJy sEF9SyAzULt#sj꟎e7pb@dz$:zUh"j/Jpg w D+U; 2IASQW[$j*lQpa vPpI# Ub@h[(*@"P0qpQQpwc0<#t ;1a&W#@Ҹ!QN U6@O Jʲ1/O24k>aa# K ;aQH@VJ$|&#dg5/v `2# )ɘ}벗负**R*,"PW +1FO@#\PB ]sĸGsb,#Z8 s\QA,qf 2eGUv 'y"(2ʨamdw,P#y p WB2œOFp jcAt*_1w,`=fwV#Albbm,`o+P" , !LPa#]@`М%<|ٜ'}|;f-6e8!W 0_3scTre@0 8{"!7E `TwӉce28kPD0\ii ,7yM}5Y/8mpi@#46pcCm06c< 󔺲q]Lm#aR1W0@c0dsp &eC1Oe~'5 ,FoC,(*tXŴ!6m6~M3=o65Ҹ0~jNdixPp-KPEpc6q6ۺ-TՂţ]d8b-8Qڏԓ&p 0N,гiCVfXDAvA!@qK0Bz)$S}i3Q 1?>C`r)th^Az}1Abv芸bDQ-2 AIIF a^]Kj NCb?HLD9?.ڢpDMtj`jOI# KS^HH`}# /? Q{nBciK Py&.lFF=Kp0t:O:KrFO! {'n}̷w9ٗ= =(o8Q61x3f{20:8RbHEETRM>UTU^ŚUV]~VXe͞E*M;N*ՔwÑT|<=OhົE"wnEoܥQp@"1c`#8Ц8̻P9{u:=iAu/t/&iAҠn " ѭ( !ʜ2sBc D1@>e 0 ҩ1S5pXGd.9!ͣ.`e*Hmz1H5AAib$!e3\JyɃ.HǞ "` I}z0/cD(#G1pSU/2!\tՅ/X2Q)MBl V-o jY@PsIwuupMIbyV[n `d18''{+͟tk(X֑Բw8A dR^yo!c1pLP$OJ4)#24U^햷XZyz{sy,s!W)!@Lڰ*GP1&u!Vzm"2(_r :t:hZ秿~?GR:pE Xst)lt(`;pHp @'̂axa0@=F`P>@= X}cPK:V%@#""̣A1k:0|7a܃A<|0 Ƥp=T FAs*qDh)%`p!B؃ha7z|0Wɘ3qsdyC=/H>0`Ҁ7(Gp%Q!b>(0!d80!̃@:QyHGD4b:hcriWA!P|W ע%FDCDH##h\G=F mDn'NI]IljAHB28!N@ rd 1wt&pBء(hzCڠR"S~Ѩ8xl`;XְElbg͝ေdr eʅJ왫dG )s׃L B/ 8ڠ.am(7 %0(9h˕@LBy' @2{U6#z)%mTJmoݦC,B#*t',5UtcAъw=nrFwmm&]Xywo~Wp4q.xp7x%>q`UmyE>rU\--wye>s7yus?zЅ>tGGzҕt7Ozԥ>uWWzֵuw_{>v+f'{վvoVBȯ؛>ם*GCKG|xu(JxNCx|Uĉ V:xҗG}U|(u!,+D ~~?|W|~ɄbQ?,'=lS?~ VQq%/"T9{f/`H_xG: pu8*'Qx"`{3Y2ű=xQ a -w)t?etHKAcYؒ'P Ycz(/01l(!}'h$!*L `'K`AA'N( zOB|'X|`J€x>cx{@ )}PӀ@DF< zwrG HLI܇z ESUĘl;B2TedftFk `(PX J1TՇ Tf=``˓vh ͌v#l X(xy0P!2FiyiLTp.jiP 'x/ΌIcYrZ蘢HV~{h(|Bހk(fc<xa pA  Yjyju L.9}H䗈]̐t0V jf{3@ 8I`<\ЅEsp(8\lQulcmmB~ !4؊ddʷx \a/vsjaF$Ӊs@}O1OH $‹ 8%Ao p4 .&|P= *5dhQ pn~tOtVs~? HLI wkGwQϱ8n a  ! >y1h,HI w'>nXRmɞHn`oRɇ.1uȔxkupx v|if(@o%uD~pqyAHB%HP)Iި⁥ 5- n8b-.^χpEZFbAuI7Xrd8aC ( A zP"2CwB}j, 8l ju脿8p +% Yj6&h[}׺v?\ |v`!KA;{h>j(Ќ쉝@Dʰ׏ {@kAPD' w4u yJ@Țfu?jXxf~mp & jsZЙO | \vĝ"n]Pq"PAXb Pǫpxr?"D(8zS7:1!g%Gɧ||'7GWgwׇؗ٧ڷ'7GWgw'7GWgw|'p "Lp!ÅB(q"Ŋ/b̨q#ǎ? )r$Ƀ4yc>:*)s&͚6o̩s'Ϟ> *t(ѢF"N: \J4+oRZ4Ն 'לe~ ;h ҝ3Qu<ͫw/߾~,x0†*7x : Ytd hdѱdʖ1K9i:{D;pPuIزڞ={JҶ\gny|`߇mZ}И|;޿/~<*X74{esaK'|Ba<=P6䷟D]Ds1XRuA:aE"!H$n(!N( !a@:C أ?CY?m=uQM QNY56E7e}J6T &Isi=c!'С6JПTe I*,YQ1==ZE@ 46;~pOB EIJЭ Ѝ4I Q<:$E+Ql:J k-ՆbTnQTNSI\pN*OpMk]A:Ը;#سteva@U]ؓϹؓ B82]J<:s 86hɂTAt4Ed!ɖ@=y^:0XI:`1B"أ$C3 0sℇ9)PZI=桱zģN0\1aR[(zL0@b((N"p:qg2\PY1yC{!NgP UNXd#2pR& zA )G:ڑ P+ o|blA bHbA}xA&BC@<@6d!N όx9_2-O'D(&h9>H4d>&}t|QR2΄4JkbS$Kcb/:Rzt6)os B"jSyH%@ c,'aBTf)a2ґ&)PiԊX|R^h>#sFШqIE-Er@tEЌh"6],cAªV" &}vrt`5=d!!Fe{c6bߦ)Ap5ۂ<vf9 v iQڂ( r99@ +66ժ^5[QoX@CWG"(+E"\! b2$D ?DE PQ ,#Έƅ?_qހzo\hJ1Hx@L#'x4PݴL<sVM >Hpt$<{@~ᰌO P@+y"e#:AA=#5g7Aֱq\- qsA?e#"E򕷜MNϧ5v$J)p,Wⵞwp ^ Ȭ,a vB n}6T:_=[z$G@Q92qm[Z msPi@2V6A{7$ݯu>$C:~a "ѕz KP}XT>ePAA\"LCt:CDԃkCxA,䝓׆`5% ą@4Y>D9b[ ПA$ E:L@<0|@!a:P@,!Q]`jRյ,oG1d-A<daAԃB Ń<,[hC<$A@oAf !*D^'z'b(B{C:C,?x:\@@?l.Fl!bX@FE蒄16 za[[D @:ԁHb:(jҝZ<< ȁd3"W̭6C7~c8 + ;jCʠ߬Lgu w h@ ^T]:ħ-mDNA0JfiGJ r=Pr@B`iCTSXĖ2)ه78ֹ<:ӀZ=@J8&E:OŵɃ X j<$dN :؇M>|(R ݯjD+jlо*T=D>[P>~=D<_0Eh 9z @D49@4xؑC.٣<>$.I 8̦%"4gr;.@4\lh /u/5o'JpY@ B/o>/Jڰ:+qBjnm=l%ɤdٚ,J>R؇ gUJ:`m=0@<L=ܭqA$@& qDdQ@%<&J$Sr%[r B}x<ZCSoՃ?Plt)?d_B$&B>@@}4E}(h5Jܒd X@4hB+< Ԧ7<(T&IAGbܫvP>0 YZ0.2(;ybt2GoeLTV RLdc2DoxxoC%]>ۇ>G=2Bԁb4 1:4ܠ$0&yC{?x[Գn7DXp7T{Fbac<rLDttdPXmf=Dz&RxFrLAK%{805-L{;:A0={ )x P T-B 3Jd g9R Jց`g`@Y'ŁmC [ R!,#LR%l'T``{, yH1yBtʁTʁ {TuSϨHRA {@zg"\ΫQj19'% ́tK j̩] 'F $Z,T]y_ Va-ئ:x>:Ciʀut,@`G?3TSNt` 7&=VyN }{4x/8u4j{ʟ ,̧@,a{PYDP!}8P G乲v m!U S`m:H}飛IgRtE8"A]I/'ԼFþ9{mʁ{.lrya!3ȆL㑗RZg$G|GLߘbZ})Y%w {$ (D_uQF3:o@#>~rsh#x P`{ 杣1 ){08D!Ât`FIӔw2@Y"e0|uv a=0DeR!),txIpHX%xJ@DTrKOA Bz P\~'>) `z {5MmnQq8%xd >rxH 8I6 ae5YњV$0!m W[W}_5aX.kc!YNe1YngAZю5iQZծuka[ΖmKvfcax\X-X@֦OJKZA;-q]n*O@A5=PSBJ9Z]4 :c8&J:]q8AF4 d Ab&=t[:pGaQ i&>'nӧm,5[ց|H WԒۃx ZHt:bqtB9!)A)+s>#K,b<и~ >7ärz 9QAA58KB4X:{ m#Фy);AQHDĢyc>02F)K5QbRH<wRٸ*vNpA 4FǴ)!;Ɂ &Gd" fR$.yv`1Bo>B0]~%9'Cֻ 8qADt/pTH@ %\Z{80ưD%.AKFҒHA  D ɓ)͏i)IR.hb'zėب|4P(GcQB@Nn @ t 6` k>(n$mڮO"` !,K c``ZP'(aHQAr!%r'B"3v/*#L|S"N`C怭T⑴E A#!b!*/(!f*"_D Fd Jx $zBpr++ǦCQQrb&n*H+ @ fwdʂZ MSE @Т(Aߒ2 NE9n|&a.!$*nuʱ @_?.ےM-wP%do)@Uc'g43, ]qiS P`.B'^B(&DT.$("Ύ%\"GgˆpB'x)"!B*ﴓc @o7#V a!u b Vu] -`p{=KqngvL|fbb a$ByLlND9#ց>=)>3߾/P  ?F`dVNQ` 0⼷]r'Dx'11a/W b"Z"~k1bppF,`4&NO6(g@DDbX v0x|h A8'hċ @(b#\ +&)*'KLER}ACsum! "yJb\\]%[1tpKneql щbNR8uٯhec4ghyzX~ B)S#6t}/)!,>iAjjFEma\MCpuz&/,/@֦mSw2"'@$׷,TdrsbXTA+>FCπ ]nr l@FbnE11 n 8Bdr bC :muGbv!h9C&2<}w؇Lpm_uQ˱zi4pÅ/92jBqaa;$daAY`4^z'f1yE;)qJ J_Xx*Dw14CĞRwaP7sEm30FF%d xt n: F.R0J('~GYu|yBBz<ȅ|KKAbȑ<ɕ|əɝɡ<ʥ|ʩʭʱ<˵|˹˽<|̛.t Q|ٜ7Rq@5o#KSOS]5`+WsWbel+z_X1 }9=/sZwŲ7ucZuD̵B׺ȦR\;q=+^z_#gb_B_*h4,c0ca`s=ڥ|H6H#ذbbk<6l h=?v+')}]סm0jwXjjMmՖ2mlrjj["ᶶ .Pl}#G[/nn ]>"uW\awd2P6lxG=3ɮu_7bh.nWEA8& \pbxY=o[ywzĹ)."_|}o Oo^$PTx,3Pe|/X3X>A!g$x;(x?`a[bW bZP >\ KҳXNa^ b#4Wx |㡂]X_D8NUc0CĹnPٛ{_ "a]u^ g@I880y"Kmx)3OEdH${H;g࠽Q .$/e&&0As88|h ݾtd#Kjʵׯ`ÊKٳhӪztK:$1Po߿ LÈ+^̸ǐ#KL˘3k̹` 2\YmՃ+i@dwy1ҟ'2\w,h9(ԫIKg'ٲ+ Dw1{wI'uc6*sS:t@?œ q~F(Vhfv X=(yNtr%)< Ă>)E|MR)bI:F7[ä@PN'`E<@~h' &A'kt9T)O[tT=!@a$A0jc܊Hh:vd<W+k/' @? A>(N>DB;0'^:pJ)h\\ \<'; ; q4Ɩ&P#|(أ#QfL:p'H Z̠7z GH(L W0 gH8̡w@ H"HLb$0.8@> *ZX"BJ"y_.zCH\1:`mẒ>4h6 G<,!;ХC",fʡmHA=ȐtcG=&HZCtO*c8`G=&Bi&J> \Q(dԢ:H XGpv.4q08`K͒+LK=H_&*В<<πf1E% + cI"" c~R<k*6aT`{bRo>H܌8SXKİjdD(r-CR:P% n#M"Pk-x1#3DM{ `[Ak%C.pIFY s$)V*O7 Atȇ mt8H? CZ{bup\ ّf9 ,Oʨ..oQ@QB)(,] <b]M)sWaHh`s'AKgz\䁀QIU-ұ11WݠQ80$ ..O{l35&Iڐ_P @F"YC1tT? P2wqE&a6Uڱ#99@>1>bxВo\L58p_ғdx8`d7 s X >B$j\H1g/>'IS3Ċg%Q0#f#qs@Qs -g'PZ^ӓsBkE{0 |H%rS~s:+4!QBF5YӴuc,f$%=&%P  ^`X^0 Gc+xLP{sq_u6 %T  wUfH NT !jt&0?(F X>P48+WBLN_c.6OAI;"Qe@%'o60# 0XQ ."X"~Ǵ6KpfG0F4Ћ %.sV=pr& &o ,Q=+% 5) w_c8Y,6#jF- 6xR.g"%ms%.,v84Y=TiXM]G}*^p`pX30pd@4am0K} شL`81Yb!^;bu <_ep >P0TfJ4D)`_Pe"%*c0r@ 2[5a8c ~Ggut4P#52@W]Ac16;@ i0#69A%0Q(`H a<ɔB `)CɞBbLDʪwyZO˴\dm3 l˾<\|ȜʼҬ+| @@J^<\Νasdyr`E|(fP HkYã|JB%U9TА }pHP*Vb@lGPES%^,M.=16}kN#Pt9@cAr[QN\MaT] X$yAԎkV,E'hj !64 QVr=4[y)|\񬏁dQP1_kjzGTrFs3 g=3Vh}tڢ]p|3SC3 PgAyL1ykc΁QGO$E_k(bf PgMI<-'04BY' ZWQʰz@d>قe ˯X*YXU[YYUĝmU`(C\v2p<1='%QD1дL(-kD} gd0&cK&\aa';g+[d 1%dK~b)6b.F_u_0`#x()E#py Y15]# BvqP5[E]G@d%oJUn~{oy̥'De= n%,UX{RkdT޿ok6h6m'`uՋZ .fa' 3dz}foX&  &0 "`@^NGGwUs|ٕ<૯Z6>cC8O@HGyr ֙J yh.^@4v\k.LdCzI0}h ()섟+j&Dm,@8I}5|r+r3|s;y|xXW$3`1ktc}vkvs}w1|`qw`INw裗~z꫷z~1i\,{{W}w}ҡTP$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BrhPIa}C QCh0f"HKX4-=~bV"bE0Qc 00+ȉi=thghlT>e&F#cd֗udd#H!]`JaQXH䂑$"dm@ $)灜\yK\R ؝9>&rIBQ#m&cC x/@5MpӕD5NeD< O%'O\IAQ@Vz @HC>?fLIHdtkxw#'3>"An7h˖UKejSHl80 @=d""vLIcR^>޴X*3:ZMkqK"@'h98xDu\M2TyéA*^fVl|؃ XT3t>IF8\@v00('Yi bV"ЇpT n€w-Nng32xW%oy7j L1AGbĎNzYEUPw8ǧ 2d"9@:RP-I <(,3ysty#&qM$vaH$0;Mo| j9 r !5HZ wp J4Gʱ4˃!{Zd Z>F1`"Iz~vH~;㖇y"c?8yV [ I[0DΧŃ#+j9^pk)~@q{H>%6{3=0Ч^g=eJw:%z^\w䱅yW|'_"_ҍnoӧ~~}_'~_g~_}_ށjЀ8?[@lS}F0a S18N; twK "s@5!x l5x z {S?`A}TA(B= X;؊& о 8' h.B8ók!+0 ^0:;29r%CG|D5'x&;]7ȉ tkp '1P<uw|8B #s@=yuDuD Q!#Zq2b2 k XnDsty°dy74mdLN/tuhn!s ^I83rʘK2}m%x1Haܐ̵Щ,|+vmmE 8z8N PZspx8L0mى{Nyh2T yup88CAc|B㢃Tc <9]Q(QD n*OBг*CxP0 Sr̂x]0"Ԕj8(1P. V鋍yW{W}M Km )K";50x%lNs Z]  mȉ`NhUЙ*{{;+6òN{RX0@u"lȄ7eRwY8)Пy`<)@LZ˽\G\\R ]Pk$]M]%5}]؍]ٝ]ڭ]۽]]]]] ^Z=^M^"U^^m t a0{̹^]rbDqM_]txXDN˨_ȨH ]_` Eh `_{ʰ# =<ˌq`͈` 32*<CE6xx f|(C`a)D*JXJLlNet F  !.#և{)r2Am(E[(](()8YU)>^m@blŬ2yYc pcaE^d.`F3z6Ky@tGwKdPMV +&*oц89J'+2)(zKMR5Ѐ[ƅlȧ,9TYFfp>8,1tˡ)9 $sKB\uv g,mrQ`-!} H"N=d,21@-ysPpԮpp>i>8{1O߼> P 3}X0 xZ倹؈ZwxHmij XQ+_vWvMb ȫx?yH/*Fy9H;xy3,iy/z?zOz_zozzzzw{x(xsl5zz5&W!5TRECaҪ{3)A(z q^}/<4 3Jt ;$`( 5('ˆt`hmR϶0@}h!s p콱`[@ tAO2^P"yֱ@ߨ(_h~~ =# j q Bkᷢ (l }/c8S a!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:wN΀D[gCtkZo 4*(*Bu v0@tTbPA:{Lx#aOB넼@oRy g z XOP}X]1f:NgzīH=U(p0@>1q("im>? 8 x<]DBFQ(O<QBs@P3Bp!xP<(,XOxAQԗ=k5`>f4,|QV(]On0sci[ZVD@rbjlDpd&HCYDLV_U^9<\::&xRa"<9cφp*sBQ HT:y***:* Tc]$: txD!A"<L>1&pX@ :EBÀbh =btZ'5W0eL,rNE JD=Qn0C?bЁ24WVH&='#;0η*4M;4QK=5*x\D?sD"k˳aNTiAmA:1)Az9D<;9+KNQ<'I6ho4r#}Ḷ:0CO< tJ.:馣CЉs ЁF =gl3Q4|< CQē:~߇?>)[F:;')_' 8@sH`ؿYlDqXLN;P򁱇0 t0AvO# X4X:<ʡH~t  l9)lCU#=~# _rmT"C`& CR;*7^st'X>&g=r$+ywdRq려%M[9} H"R7$r@%瘒#<X v$ M9cV֍8fO=p ȃĦ6 bDC}xAǼBC07   EfFv=7 m!f6ˢ4`=882=HLg!4#K; 01F4%jNSb P,L! ɣ&bz6t=lXlq\;x"8P.B do1 +ؐ =!x&δ b0?:AEx`; $jSղ}-l[r1/1 `K(Ȃ4]Q Eܐ$ !N[v_Pb-Bet:8@f =xAF>AN=C׌2TLD\ PC:ԃ빋:@BO$PP%#D4TE^D =h[-CI踅CW`HZ^ZCrGibRY:We|,E& T`&2s%Q  ΈF<(Aҍ8Dle$&`?\KM R~0ޒA|f FN`xB!@I pa[\@c0Ќ5˼4GX'@ ׿mXQ\PxB|EL&X.f90۸̡zAD <|IUU;V}IC PQĚ1gE@u!6)S݌G 9걌xH~J1REB]B \(+M8CaC贃aX$<= Xq<\dE=:Xy<,gs0 {D@Tn9A<\!A̝Cbke䃉A=D1{Xc\3qA,Ҁq5t pS[eRF` ԎLTSX)Ͳ]ĥ =F~~Ñ/ƯBHxHQL8NXޗ̑L'chC;hnM>DGPp8 PŲ[hND(#aFDp< EC BAI(O8@PlQ(c,':(xx<搄Ƃ4*׮)i:?\b@䌌q>P`qPGDD tR@ExKā,Z2W#dG@.RJ< $а>|Ճ?8h`1^?+EH`q\ܙG%P  11FX*B_ I0 $YB}^X@)Gcί7388皂[*89 CT`n@V"/ Tj:3@@ S.Ü t.۱>,L$%Ўd0A4HH}3IWO^* >I4M״M4NKI? o C*kRtNN5R'R/5S7S?5TGTO5UWU_5VgVo5WwW5XX5YY5ZZ5[5SǮJHu]]@Xg^Jd\VPKH acD)[7c?Hh 'Fa za]siCj6k`6G%:7fxq:\kF4B@ _,!E@7Wx;6LH̘Dh\tn3:RDѩ1nFlD &O\PBw1 0.CDX)Cg&y0BncQCC8@D76׸!WPdS@EwdDU`Y8PW|EXlĐ_EVP<\]"ڃD"o,a$b4cDdTf,$biƪ<@Y6 SLBS3*t4NqCvр p/bC ON\]4QP@pǷnR'&OGQl\ *S8vl=yzq>8"@<p< NZȉȊ ȷ>_ `423D} Y{OH5`C_ȈH9@}$@=`TT]̞wN'xnJ‹J BBGjubQ+ΰrp_KoьRt_fА ; {LJb dqf>>JC>$E4iЦtdDIM }X|(޼M6_ c; '@7utȇśqbň9;h1:Ȼ@ TȧρKI]g/_LjhG'f$iBuX,x0a_ $`mL@?O]h `ϧ;mѬMB^ nƬ7nntNEt(``3OVEP_g6:׷~ <\|% -4ms1Z`k2ǞunPnpEIұ0C NLqŋ8dž 8AF/2E .#}6%H2u(EPTQ?ұ'wǞj"P'p)&s҉ @׹ A)8\΋ >t1IT"Rjԓ9MQ.}8ȧ|z9 3A# XAG41B7M:@|CA v' %HYYGns✄HуĨV`RԠty=6qS b]x/N ~'ΈRIzz⩇ϋg\'7 $M.*x]|n>)S@GK`uD[c<'$@z^Db܃DC"{L#A&Vx9Bp'/]<s`j=" :s bXGxN($@ Zd&zn wy`` ^JGӹE #e2S u\#,iL S8Cc Fql YHCT"HG'Cg[R2򓅜 X(sD&@:8 0i{B{@n\9z6GC2Ź]U"Frt?(▹Mt|`|yGbiJ q6 jH:1D$ '%5XG֡ f;մ:fO,/[m%(`M'ց(@<ЕN:K$ q 1c4nܣV@ڭcuH{C;`A^AU_DXy1} S:QS1"%}\5FDB61cЇ0Y(E=x Cl O C cbKLѮ"wІ.|03%ɗ62984֛2ܕ<͈CV:,N؞`5+iW}L'x3;x{uj Nq<:Ў0:d>N`@m!8;##PnJ=*tww<&Yq?Pۋ&<Ҋ3:JG+:z~(yd-Pyk/?m4 {E`eӔ?:ChwWp0LPZ-m;}Lk~+pFjM"ht%\*0ԫ#NmqDNL /h asxKzn~P$i4g+B40"f耢"®Bq0 <6*"b*"@GbDbh;ABtЍBb Nĥt<.!\ |'eJ:.B( r ٬H`# vg vy CH/"!2 DRН F1 1BA _NQn[f gjEK`ה>.(@3R"`VÄLd71. j!e,,` !#ց>C϶.m! i%R O&o'sR'w'{R/"ph`#F]i Eg:r"*# ;""0 } v)p0rͷNKd\B^桗ȤG* ?Qaw&n& F.`ڤ/f"g2%P,2% NAlE+JO/5'p|16X08|Ec64Sxh53"QF "BC.rr+1:(t"5#"P/GDB^[hB-0уG'HGR'!`\2E7N;h|C1B~-RBx^H!*CoW&5eA(r(" Ep .S22@S }JTJJJ!ҡ?#">?!]X v7&2@9i))b$ дaKz”Aˇ \EP`)PoG=ށh@I\b"t>"@P>EsB꩞ IlHF FjPL178`Mjbqb7ĀP h& 2DK!q20@(`ΥIP'ցq`V^24#555@*\#S:UFg+ڲμH@n~QQQBaKaabr\zN}u|1UP%!8@ Ra$v"5"q+. a'R]"""v2=JVkkk,2Wk d|e33"J߶m+loVoov'iUo#p?F/* eࠆqV4ry p3Ws7s;s?wktItu*!q$ELbg1?GvowsWwww{wF0%R afol\ s}zz{W{{{|W|Z|}W}ח}}pD}~~WcX X؁X'+؂/+$3;؃?C7XK؄OSXyW؅_cXg[osXw Ɇ{X?~؈X؅؉X؊Xw؋Xǘ˸J،Xט؍X瘎l؎XX@؏Y Yي#Yiؑ'ْ/3+Y;ٓ?闓CKٔOzGW[ٕ_cYgkٖosYw{ٗY٘YٙYٚYٛYǙٜYיٝY癞ٞYٟZ ڠZڡ#Z'+ڢ/3Z7;ڣ?CZGKڤOSZW[ڥ_cZgkڦosZw{ڧ3M~Zڨ:[ݐ@ZzZ٪hڗ:~ڬ:њ:ڭ皮 KZ%گ۰ێ۱K`۲/ ?J"*;S[exL`_8Z`jcow3X{[۸[۹[ۺ[ۻ[Ǜۼ[כ۽[盾۾[ۿ\ \#\'+/3\7;?C\GKOS\W[_c\gkos\w{ȃ\ȇȋȏɓ\ɗɛɟʣ\ʧʫʯ˳\˷˻˿\ǜ\ל\\] ]#]'+/3]7;?C]GKOS]W[_c]gkos]w{؃]؇؋؏ٓ]ٟٗٛڣ]ڧګگ۳]۷ۻۿ]ǝ]ם]]^ ^#^'+/3^7;?C^GKOS^W[_c^gkos^w{^臞^闞^꧞^뷞^Ǟ^מ^^_ _#_'+/! ,f664^^\jjl&&$nnl VVT..,224JJLZZ\**,::<BBDzz|""$bbd>>@̜Ț4vrx|b\` Ģ<6<ΰ^d`$(8 讪<08FB@Ж0(($00pfp0@LF@ ltt~xrvx.(8h\`|vnfHx$x഼İxd\t`ԺnpNf86(bxtp||80L0@0.l(:0`xnf`0.XPX (6L ~zfh0|p|tfblh*$LTT@vVl<<4 ``ZbhԴ08:Pľ¼rr| vvt ĚFFDĖvv|ƼFF3= N@<F)TV Y<#(O% Ih&QlIGqvdP=l,`堄jj _wLPE# F脨A22dCڳ,iIt:*B6Īz&sFA:f+[:ؓ<@ ;2&HxpFAHn[Sd`% -ښACQ:``,pA>tϑh Bxˣ=K~POa𠷩̒<|PPHZ뤳qβ,@ @4:H;,2a(X(6㜫ls=>C r S@)=sںM< @BCIHHA? aS rAIu@ 838 xȠZb @=t .PRˈ8 % WiHΪTXGMqӜhTS] G:*qcCjԙdũ0ZA!}*Wdtjψ Ї0MmfnC ) d$>{O SE,E`bTU>? wŪ@$˂0׹ `+ J[K›$0VQ +C]yYdH@Z\ YTˀnD~=-/tY1LBZP]ylM0^yL-hGd~P÷gLc8'@ ' A6[#Bu8"/юbYtY.wh!OeYT)e{\Y PQGkϭ,OL= ҥkbfC<%AnI{wNiFǚm[M@·Y D0lpXnkLb6Hl2A5Rɴq0? ·"rApJ4c W5WA!b ͤR^OB9f!#RBHS{Nr :`ڹqԣQ@ [ !]B$fU?^@ 汷A Iq BЇN$:V 99A& ]4CI1^Em< P`E=]d)'{[Yjp]"8c B*j.Α`]p#S%, \ $h#/{$l[>3 24 &Azf8A:֔N[Ly:|!P?lf!s1 ۹$6$bU7d>;x6$@~'O`@Rjܓv 77PW5P rUp A<frH0|=G& y&<%!d0 .H"%.p'G9`r h;*Q:#` @.gwVp q$'\`XWvxx G@VC?r `d U, PvgG2E'Rh۴w q p 8$ =,h*PO 1PS " Q 4q') ّ{@p)A&Ph(0293/KgPP& .0ebpvPpILzxw؈G2Q0eK)`PS0fq`A]H%  p+Jl qOvO#W!6С -4+p*0d`zڬdħ*TJ9B;c/WZυq "%"]b*U$`^Qp@):D{hzqT =Kښ##F#mzh<;r+f?dN@j۸Aq50WV f h =8P5(`4SH #Kiu$H5j٥#FWs.yƵ1 VO8׻;9AR 5w8$$ۿu<WW <\|h}!# rp)#+a0waV $OQ E)6,@O+<.kOTa;';[ u1/v.6HZ̙]\Bi1S8 "Dz)i)|X8[""T*Nj93 $%Jœp2Ŝ9%3xʉqrk,':ʝ p0p [깜ǾR!}/B?L\"*Cu)2џi#u(Ȥ gμsqP ʫ3 jސ?`*' ]42,<(W\Ȭ#1/])g|,hzk5V01a0,mA.ma58E:=_+J'"Dj#mL' 00$і ÈSd&Z:$A173p#7tc79P,>@:J?9!`vr z#-!m Xے!*I ^nQ$;?60IvX% PYaXe4b@ PnS1 rR%aǵk;ym`!&%aߥp/fqBA~QF~Ws = @ =e&` CwE[} -$To@Ev}׭ %_*׮r*+5\M" Q"` PȔ/@:JJ67t_ox's@leck<oCP5T-0a H04U_g0 P>9"@ ;/ʇ [$ ۫{t. ~1 XA]00@ ['*go:W|CGPǁKwBKY޺ͻ w.<SuIO\QFEKqu޺ *0ߺ+Fװu Yw8}8> PzD . nz!dym/tu8H5{pdA*]_ɕ/gsѥO^uٵowŏ'_yկg޽|d+*t.O{*yj 2FzǞ `o8 J` &?Kgj9BBPAGpgCyN|.+`" (B ,iN{HN-!Fs.1lB{ұǞsC:- uH%*3PDUtQFuQH#tRJ+RL3M@ ܬDZ >Py`,y*GK9g`(I@{#/ z^ A`ՐsJHǁZo4?F朔bVFibi@u uZ`Tmu,X *'8<@:p;Gx%m ᣉq"j֠ 'ΙY (W `JSzh6hVzivZi >7LgaY  (lg\} 0 *#8f6G>kvW)"0h,|0hSr "%(8[tnǔzIF\ss `ښ! g0 "#|+J Nfta}8 <; 07( dYg ?_'G-r},9 `G\4&P d`@FP`x@#P]e]["@20k< tXW2|< f1Az`9@@/8d:+4B{CB@GA ̰ ', ^])9λx8Ȣ(!tH & rA3!H`E;1  x!2XGneƐH>,&Px}:] PXGwXA@zLe/}K`S$f14t@x6t@g#(Ǥf5yMlfSf7@ 4-eSdg;NxSg|=shɫg?OT%hA z4lh?&BPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]_hoyKYv3й (S,B4e˛^.=oT$if%H@sHNntd8}2W⁷p\G=PPN7a`/YebD$8Fqy!3fζ lm%_p1z֚(2#K'5؞gc L1YDkvK[4X{)V95@@y ><f A?'U!億lLͣN^W*HR'I k>[9 ( .IcBg9Νz֞T0``u3v,0Ύ[vp2oQZ'u[&x/BM+ZJXA|T%^I>?TPVr&I^<3y˶ Ii=?bvWzN &)Ӯ\IL}bЕ%kȒ@Azl#7/초u (X%rk } u;q,20)d{|[ن!yxz(ـzv` V≎ ؇̐;A,OM5HA?Xvhɀ|P 1??{3"QˌЫ!8 zx@@4@@@C1  !#ù=<)SAg=B}?]Ey*BI?(kp !q ;Da_4 C+рfG (<1@9NUz>yθTSjF&D`MӂMŚhZY¸P{H(W}bS8 X }(V?H&<@ tvQ@" ]!9X5{@Ӡpu}uy- Vx&5w%0ی㹇4z9D DuJE8(Msȁ@}(9ځIY+3XX1j= H9H4 q 4 sEҕ iu}\ύ (;PVy9xU5F1W-up:`=8J4Qʀk5 =͌{  q 0ϋ} r-]9@zpE S%28héԇ0-1YZRX!W !9 cqs mp%Hp ĉ]A1Hy_|z H Ͻav%-k)psud`Cy7::ZsIё5#b1ZWL 5E\ ͎N]A_#ɘX$.HXS0"C aHSKtxza8HTZScdueflٖx;ð2уsh2po )93odxQ+yr,q<̈`a7<Ɖ<0fn^EY(*@xaF bcy.19t؀e ٛ?ZAeS+uyC(И$e mD o xؖq֗{ d[u0Ɋgא EC9Yyș[*{` J>Õꃰ t( )hqՠI8Hl!Qzi88NdzAzjX8ji1k1 hm϶2fmQܼ">9́vx p#:{܀ PR<"^^,*Hà1yؕ T19MD:^@izA0@4Z#>{X?"$иvws(s` G98 xIy(i^tF7(}: 1NhGߦ ZXFtP-& HNvumB)SuYuu`X`8sml⧦vpLiZ?vd&& pAeWvp 0dvnvovpwqwr/ws?wtOwu_wvo€ 0ho|}G~7ww/ʸ'0]p1G @\lx +T?ׇ7  / ?2?'Ĝ(? > tq1栀3,88Hx:tx8p`zyz gYh7(_Sz|c\À|H|||}{{˄^ 6i{y q|ʇx^;+7["2Y\}>.Â7tj)`?dY~E42#o ;d] X6 xT;}y W 2lp?(0\gϡEt7>4@ >6̧Ȕ*Wlru/XǙ:w”e̟)MT(Ёb(]qᏅx^o R/ʌs&m-ܸrҭk.޼z/`,A zj8%,xa>{^Ro!˛oqB5SYb]Kkx9= a7Г8Cm{tds"NĹ #R jn9xv8~{[f{`A%CLE>Fd'O} -O'Oc 9m߄@]ԗx5et]]BCaKA'Y9#=#A 9$E=p#w5B$eBGu=/4BT@04@e*@c@6 c=_Q3miϜ8d. 賏M QI|9%a\6\4yϤq)CBa$`VSBya ,eÚY5R\K!Y衉TbCC2FzZ+;.{.` 5nH%GB=XPĄ;@Etc@HOcX<0* ` !@3As{wF*=@we p ,t'[>;,3oBC ccl06 \2.n{p,Ogioq/,#f3'1PO2-?5T;&k;ġ//:$ؓA&d8J)7O ToH Lr'R3(ͧ4?p4kO:DẊ(%ݐN% -[G.#/@Nj«Z#Q5=0G }2n3Η? ].&( b!<EVh)Ԗ?╎ 1ʋ:2 mdu \c2%3HC06.@:$ 8aS FPc$dؠ<4lA0eK^f)rh1D*JM>x=KitT!-1y7'd1d s=恀aTr 08<&ytcp8^Pr Jlǁt HAE5PZ@`3!36@ ds6fi6#yUC0{.uS_j9!L:NsQ goMۤq|.5Ad a;O` aҴ| ,sk6牗:ې@{1ycҮ3<&gD}p@1C*:NxWszu8ԥm>ͩq=b H X`:@8 Uq*!7@`@CENX@5vɛ,Sֿ!{'oټa1nMhpX 2˴a1@:*0@Q8%RK QȞޫĝ@@CQ-=tB(:`m<`C 1e: A:H?|@ ȃ:EEYٓB,< Ehl@ay 6FtAӌ\2DIϗc_~`N]\UƟ=AZ @ : X`fd CKi؃C,nVn><(<0@Ϝ*+RbEm N   Q+4ЈH 4F-:nM$N$OOŌBtVH#p@VO SI=:KF HAK܃=|B(G=˽`@i)D$19e1xNC0Z$a\B@:`B@ (I)T @Cg%XTGQKOZ=0@RxRZqDbDC ra!srxRLL0rcGO)Ʃ)J j @,mCZ Di$Tj=dBā=GhĴ. !9Ff=a  HIc"*$C!tU'*D4Q>Ǿ?:T@FDC;` NTCdf'Lz.+$(>XA(CC(&Ą  AHHl?Z@*jdOG";:qB:H@ciQ#C ;$?Ʈ.$-A&ҀxZC<($B2җyFB4ta"jV%#▩YnD"JC8@l6BD1Z@HA'&@l$I'CChDMo1,AhoppxI79an9Lc=$!AO`Jc/l/4Fx4*ec*mK2܎F)PQ!Aކzaڃ LJ !pX"F0C!@jUBC\ -o3HZ|} qB, e1c.G{Vc vS_˃$ 0JCX~42"!Hc*$D:D6ҩBnF<4JĒ4 >8ÅPrJYF jgg8, 8@9P'K@ JיO˚Tw O5Nok3go8s3Z6ĔC$C<4Bx'fmX@aY'7B]7DxY@{,voMfa6GhC- THx>X =)]dFT6MڀU=߃0PzK"E+CTTe*88b,V?9GDQUז(TD<8멸 Af\<:9z>?,l.X U<[SVA̯:)#G)'F$^ VM<D${.CԸe'Ğ4B:H@ 9cl}1KxYюrayTzRCW8<l7NB4.,+prw8>!`NT<(aTā,&l1'뽃,|n\|j8@@YcHG+x0C AhDy 48:{γg]2ds?{ Ju|8x`u [o;}#p]A0Sa0(7amXX2 KG&]@O ˃dĠ 0{Az鄜!sA44xo$Y FBK\udՀc ␒'X8lwilON= ) bG``CcpPº3!A,!MU8Z 24NZD_'f!Q;y/) 6*DXz#2otȞ & ;"ɠ 0C+@p8,p0}M&|dz&{" Vs"CĨ r6r0)mq{p )*O Guq͂0p:lybJ6ouj>9lō։@Ċ%'3.*G[Kd&r t p@hg(02ԓ 8GxTlݖnpr=t]v}7\Hة| N;HP^ ^`֗_-5ޘ=EM>%FQ0FEq֢]Z;ADgx(N墍s$9iviyꪭ묵ޚ뮽lD FdqqyI^5Lq¾;b{܆{ ?_kYF ?aՃGS F-ot31_HsK_]emuߝ}?_襟ꭿߞ?k|}域_w,Ye|!~ } !`VbYjҘSmqǿdp*7A)T }` %Z@{QfҌ>␀αkYHXU9ݐ˅0 i."K%JH>)#P=~(. X@Q wx.cBnKpzø1o"X*Z-6I,T"HGOp MJs# Ҏ *Qe09.ZjQ Ln H`S4;Mq>T:ى|C@:Dp;nK#l9) xq'L0:Ozg<1zs9&<,G{M]&DB {db]HG?rU`x<4OnlҥDJoMTYfESrQc^Aǽ2IURԚ >쨪%dliAJZN) R+n`,S:ժάgV{ѷLG=͵㞴ZQƗnʹctgH]͒|+RY~{'b0C P( "G<v! @wJR(E23ا\] -QK! &Q>;ȃYYSzdP=(\ d>3%EjYZDAG, lDrvS\FPƅ`E_I&dyavCjSj&60Ar@_dR1t(꾪*=`R/}^7yŀ=DE(=IsLh& |D"@v\w;^t7AA\J iHs;\0 f(֣ <  B :ZOԡ tL ^%H ^ Ƭt <Gt! sEjSZakyz!Ktt-!b7A@ziExt<@VqIESx_pC@P(oQl`fM{-ʿENBQC"/ @젲9~ry/9bg$8G<$a^ x$DpËq7Z y<&$<xy<pm,:j"Xަ}uM N{e$9S\DqPDxD>2h 0A1a1r,l!ro^zoLHEFo : 'P "Jmژ 8@ z,nRJ@"i\)2%(1@h\>G`AEp %Jp!A L` A0N7@q) \0ҋD`!,ga b@A/' .  ڠAԀchCQGpMl(P%V>a PF>@}0"cH<-:'$eP l6`AoƬ9<124,P7\LU jP, l lhaa4p y>j @ l @q)X~M W:jt cqbQ @ 7O B2  (@!!B!X"@d哺<ުVC>4#A2 &UHGr("Af3˦$t' HvBDD*Ԁm*!&8,HIav̊h(!f+^ n)?sr$R BH!$,* dSN O8Yt;C >`$@48QBG@,` %O|r[4#4̍Ԧ b S^@FS`DbLjɣ@t ,0Ҡ:9RR S)d j,P,E a;Sc+QRE !R%J3O TU R*[UϨ(ޢNu)#&}DT#_A_ bJ"r0ǩ&Ec;c?֚3)QEal CXS Q b4Kt|'טd :a@(AB!^r-< &&z}5[|#wB4]2'%h&䏬Ă\`TT@!M RY|!>E vၹ*h1\d^n @&X%HM̂b'! ΗZ ph; 6C!^aMxy.lJ*ߡ`).-P\cԢb#p $`  pvluct~]ɚIUrc^u;\ا3_Qhɚ$ r FrFjC+r@ dl3j-,˦,|V`,&뱢MK]"Jt?R__7@G8Sh4G ?VLd?Øm rR ?8H'bʡD=4ҥL:} 5ԩTZ5֭\z 6رd˚=6ڵlۺ} 7Qt"Ҁ=i`<{6䫗 p#upm2o^nC=`a1_>{]WoIX'aʗ3ovIҋM#M\w'@$y (dӫ_ǐ}tֱk7aĊJas7gbd@IlhƙgFqj6lfnxـ pšr\{I9s=89Գ=5Dx"l?r IdFdJ.dN> eRNIeV^UG3pA:8dp0=Q:}p&(` B#b<c1xC, D(M 7qF'S>Փ>bDʪܳΘĚm:84m {?ddrƒ瞡50P $ >h=P*IX.p? qOLq_qsD1q0 0z \fmQH::$c_>`!j32<bQr'M2MچF A= @2=ŝm6R\,O$]DpNq=4R|PCgdtLI/mO<$DYuZsAK7:t> %`p@qvs/|?}OO}SD<БG 9BCF<9@2Ц F̓9̥>5#;d@Sz8 Ix 'P<1o,Y=@ C/G=&8s`7A@|Czv4_X]xa}D2r#XLaqp!DcM<(0ģfުK$Dl:q;:?e*H;jئԭlE*Q5!/ *-iOԪvmmItHC:2 #|rőw#A@ő#ԍ\;5u=FyM٫C`bNmXT ETz[؃]"{[sw [9$vp;AsY."9P(j_= x{"osW6Da1Y|9:.S0F *'Ψ|`57n>\S7?:G^죫]D9u5,Q;N@8o_~FQ8i /cOЯkFRr_+o;b@t{(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hhȉ艟(HhȊ(HhZg}hh  @fa8dq 5@'ьw@"e1ޘ+}HĨC]Ulqp@5d1(aQ\o1FAe~b~y !+!PSa&,YZ. P> C!Hd1rngV1[SɔF(@q4W F?> \[WSW9N3o1$@}W|G9BN/ii9Smk)ؖUu ٔ)!X%"LQ' OMUaYx騍Iϗ)QTI9^d OCq-3ҙPDy%F;éj+0X!4X}WqPc2Bޅ,aD0 95w> wYh#Q a`KQq@j V`]頟3V.ji#P)"XɈ:hz' aP FPtY: >`h>p." a )(:%<,zJ,S6*:_zx)p4R3 +04!=6Rj IKQ!$.)71qy/A w2&j *ʗsXZʥ `bg-!j*ua  t#*67*&3ªԩuWC @|v3R# \P`#fQ!#4b#8B `ϡ)4wF1!0b0i"K?z(1! Pz10JR@PfH"ppK0+A Y" ChAAk4#!QCG V  ˴ ⴮RTk^1;3k(",")$˰!;>(;I!lVj(I 4G%?"3 ::`a#“+nQu7SQ2Gq 2Ih[8k#K{9[?KCFkH k$Us[c $s{8RD++"۴B;#EXfKj *ӿFQ Nq˽ +G^/#0sBjdzO5|c7 ."i$7.2 T(H|(#f2230!dB0'bZ&Cq@/QP*'-sR'U%А*+,#<(#"@''ظ--ibrLz,Da/h \aLY|"Bg7"t&>0]ktLDdDqJ!b?'cFKy|>VwN耻DQBA>9 k~EtDB5d饓.{IqKa}Lho놎'\2*DaqJmc-A@iY@A~B.~!AK"#4k!qf3T>l]P&F3F+lt?bB)bo ZO[oJ/&1PU~LKH$i#n.1E3Xv>9();aۘ\.Gz  P &=ޤtPP4t3>M#j`;Jqh/ o _g'OPUuD! + Nt%: PA#IF;w*J"ƎKKCt3ۊ.N P u/P2TA[?H* + "ndޔjRA&j.-NOKT~eOj= dՎR~naw޽@B Y7:yjP{au)PCGQ@`1 UGFO o洧/E[9 #3}E?s@П?(jP쁚9!!C^EU.;z.#tH št FXbƍ?Ydʕ-_ƜYfΝ=ZhҥMFMnCVC!uw!ih7$C @Ϻ򊯫m{uSnރLa ᭗n 2 OƼ V3; !1ZȂt ;A8gtŇ|αl"7zN3!0tZ۫(ͦ{.=(p-2}ցP4Jy 9'9`['K#"klB 1ԐÅÍ! Ik{B8a{V Q1,,RG!kp : z*&sPa!+tXE̓Q {ruRu+=I"w, 2FD{[LPB5NDRQS[o7\q%\sE7]ue3vĀ@W)*FF=y,Γy.S-O>vb:-˅/a e8CІ7au(Am!y"\PH;XHP"Pz%z,upM:dg0@<\ p<ڑ`k:" t1D#h0"E2㔈= @ Ah0]R:!IbA!Jd!|Vb=C{\De(GYJW.&wc-C(0c hFk 7Y2`CzSʈ?xlBhC5dK vÙ !p3b8S|3 r9yddG=2d/AmͨȣZ k@2G (lS^@ u4.^m dHhԠ6 d{ȓZ+b G:1DhSGE% MQV1Gt/}[; 3cO^tG͍tLӡ>uWWzֵu__.hqgG{վvZW.=5u{w|?xG|x7|%?yW|5yw}E?zҗG}U t3g}e?{ǽf@Н>~2;Maχ~?}֊ 7#>e@z{xf_}埘|*x?bL5w(Ϩ?ٚDTd[>h N1"@x {ȄkDTd@X'^uxQ.0i !$"4w ?h/`(3xP{w ?0C@yuۀ S 0K #w67$>TtC(ԁDTD7ߩP#4SDTT+0҇ H*"YpvOЪI\;8؄\Û881Æ(z et(H0H&ixxx{ xcLFj\`"؀zjk lFy؇z`GwDGex`hL\ňȉȊԼ{0BDžH#txH4Yz1n@zLI2`X ( PIA + X .|ؘA3 [q@{q hJF@J2˼˽˶ Xu`I: 2 XdP \c¶l <&(Ld{鸑EuЁPiI1܈ PШ RuxtΛ!xp1 2w:bLA IfI6)#8Ҕ5suښRJ8N}X12 dKx8 p" u!xXz8TA 8O (P@H, : ˜ %\0 }$@䯣pq[0R@R6i }$Ih./0Ad@PjPRY412pwqCdYCÀxAS2FGf95tXT;!3P1OP:hɋH8 À @9ԪqU&`A á8^seUPdpq%"8}8: A fx(P1xB$}(* 8h)(p)Z)DRX8J*Kvxy'6QMjʇHl"\1P%CB@|=؅8'<JL2,פUڥe;1~ˋzXM#ȅ4PVs{& 4X]qUe4zz+DÞe ÀZ3;Ӡ%\(.2zsZ1s&#0v]1IrTɦ%u5UeEuؕ٥Ե=k%5EUeu%5EUeu&6FVfv &6FVfv !&"6#F$V%f&T2\O4Πb̸b̀y*'/޿*7;5fz("s/ʵXp IpN ?dyXxHE `DMDPI}}0<ن&P6FTfݼ5ڈ͜ vBudrH] WB1}dw2!XV=xh-9B:҇!Rr6禅]O/G+Ø1>QɚpPUz{;8M:5Ld h&҆s{HYc\ITb?u&R|WX~`~{҈;M}W}B>S^y 1>y+O誢/aύiY2* ^kkft t(8PJ{@eZA]rlkvǞ{hx*x2ZosȄ9 IN;8l϶kmy miĖs ZwrHd qmȆ6{)@ys"ux]F=@Rgyޖ>_T0dp/wȓ*HR+ Vk _@FljeJ @1ȄN0= B hA@q(h : DD|hji9)\Xdu gд1+nVtRtys~MgP ؐ2?sVԔ8k,%7 ,# H}8Gtpwzoqkh P[ɇNUu>mM-vP*ZsXN~u H"!u*`z=pkdAKQ]ILn _>DPƖRCw(fx 8 nϸbu ? Msh''YGǀk/ʇ>l3)+ʇ F蠀4 ;(!!  ,@`蚇^- Oqy򭱊h. 3t@m-C uhŏ$JcK0ȷt$0)wd/ H JϤr5v$hlU GǼ6FW~'7GWgw'p "Lp!ÆB(q"Ŋ/b̨q#ǎ? )r$ɒ&OLr%˖._Œ)s&͚6o̩s'Ϟ> *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy3Ξ?-z4ҦONz5֮_-{6ڶoέ{7޾.|8Ə#O|9ΟC.}:֯cϮ};޿/~<ϣO~=Ï/>ϯ?X" 2ؠB:oM~d;fOL`#8:c:nx>aJ/ƈ22>x֍,8<sN#:tPS>>hO< pP,xrAӥD=Tec j=7p9R4(it=(EdG"$iJ(wQgx4?bZ`=)3 aASECQϮB==yS>5lZ#M[MtAGND.KzdnԮ@+ G3̚: A>#E pC( @g2Y: ;NM|"SړA5WrK3˳B@3A8묒)--PCDMF[9R >cO2*`$Du |6Ai7B:xE cwPPnP.xA66EW anxuxo0-9Γ!4@\{z-I^:cA:[;"س(*OZ`6#ϓؓBw*e><(kBjC૆`C?l) [ؽY=BuH a^GU`Is!W8:/+CFA@(hA juZXrH!w}1b(D" T"@=\~IH=xa f C.)Dȣed1XI2AnYFp{MARJBGJ-Wuѿtϸm9әvƳ@@,#@C_*Qu\2ZFayӺk85kGs6!-uݰ .{JhilT')p,.g<7 P|(򑓼$ K:7xVWH8JO$e=Fy i8 c ^_Zk!AB` !k@Hr88v 0`Y?$--U)H,\!)quڝ'!l<|JZ~ >OG Idz=\o DI+PL!H<}|ͭ9m$wݯ}W:.iiH?d:y~ @A^!!U_%Im9_Bh4̃E MHP@8 |]B ս، !anC4=/t9O1@xqU\BPYAa 4A@h<DL6$.p[->@I運 D D_8͢Z^=QD:)[ɡACQ?(:Tx1 ?ĢS> u"ĕ#q!Dլu* C PQ?l{!F]:HN !B$NC>A$!bAX8aR@PG6̫=/Z_Z&>F9D!8@Q! <|aΐ2KX?\֥@A=D$g]>&;.īusz&qED=[9?$@@> B$OCUCCje'g H%C S7$TdugQ@h,zMz,ēF7D&B=Cx9<Ԕ_WL9D AW/ñe͛ƩyAP@ DA*A@ !D&P!_:*W݈+kAl*kh؃t@ᬙ̫A kCLPLH{:A;CD4,8NH2SJ7d$`<@"l:@ʃ؃TCevW̝ (<V'ӖlN<+k@:6iD6KDᾋ@Y֪7x̞lf٬IQx B94bmL=D6x&=̃8.Dh>,H>CMH3-LɈCY:,A@:8EoCLFe:%aY@=(nFxHC'bC<$Dop(DXAUQA @,jQZ7bŊ=A<$X2D 4C D W*;('%>@%b06"_""-"XTn}Ǔn Tp aϯ^KJ# @ =)b IGٰn78H d@>iI t P ! 7dJ7$:PbDž );CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KhD$^]CV ,ŋrDj4 U|wpWDDPo^=touYcNKB}],5*\.׫華 J/ث]TļԋADvjD{„@tE^RCX@;l]0@'ZQ,!^ʘ} ߋ簻Ddb 6pHC'k=Kt$3-a9@z۽G렡$h(RxFP#)a08 6zp i$C֩n#xF`"*AE:`+" R!,#LR%l'$r/t`%> yFH- A8 A(|@{h 1Ay,x§{s'5v8RE#: nzB@&N\GHgß(&u3L6ĨI4tR@ȘSuis-cMVemg9 0U:G{/HPeڄL7r c u( X`d߱iקw $XB?{*$H`$)sUT ~*e!NJ{iqYy矁7‹#Wu XGA./jXGHD?<cx8/{ 'Ms6 xzɀ# '!<]Wd1R{!Iy*'sVR}裶I/QO]Yr/{K'nw)tyሚN{'YwIޟEĐ8zֹ^)t`yz'|^#Ÿ}(@!j}Sa|h #qg &};H=1t0Lx1FtA nAh,jU'(]o>@ZOāj:'d!^6?8y0dA5]f1#d>x2`@:A "uG=z7pBw.p'M' h#sr'U:(B2uOZO 5"MAմ5Mmn7{N#NȨxAjD`*.&y?\G:^xOs!OzpJBG ȨGEDP Q@/% !푹("81%OĤ&dd>d9G,HeCUNU (xiYG,ģ!#@ E$1`HK^? V5,n  H`2H>2f@?A81 ! ЄFA =6, }Ct4 !'`yR}$5q\.U|@~sIpf\nw^"9A d> Pu{_Ηǚ$'_|6`/ v!a O1a oAb%6Q 8u,Vgx5`it;|DILpl:kIv%M 4,$R˫:@G܈:Kg:u$$k&␥/` ܳP C<A5$#4ύv!MXK1Ƞ`@u4%{eH o=H:\c8!.RƁ| u5OzP$PxaivmpҞ%F;@BVRIR2}(GK4D@X&Q$G&{@1T1 wß]088pkdB愴ZeP@ 5[;!ex7Y)J%}~!졜|ёodz= 'pM'"7wx2I@F5:P\qB>&*aduH<;A;D ^D騹GxqvKsC8*c_oNe23t|[dxb gC zկ~*P !Սd2D ґ;D,s<ـ$cX-ɰz" Lz C hP ]gx'|`%=c0`Bc@Z&!0KD'J؊Ԩq"Cm'A[&CKL`64Pő %%8P$ub@tPEAc$H`T`M*!cB ?  0 f7hG%h/)jL- #O.av[^b^2!!_pp 0Ra\"\kwnXN B@d d!dFpoz7,!2֡ }tq$ <G.NrxOCd(`G͸&"l`BB=D;vbtxB[.4bvM..7ZM6pG96") : 1!2"%$`N `b1v6(m*ip't3oyA@"zblFi}x$w%Ge"`ޡ"D ~'"ba&jjq =`%)ٲ-t&'|.BF>.(bOq'8F't!N*O2(fBGցhN@8+`Diz8-!A &AU|hc('Ai3y7}3Z&HE&8'D@3Bm^b-!vR+>v))N 0{j 0"[x(k<-D]Z ,@7~I!A|m7tAXnJ(`q(JۮN(_23!©x! >8B)!^h1#KtC=hk7nCH!A&XT'3#"A(&+NhSRS'mٞAɴLH6!h8ށ9a\13'Sʫ *C䡮@ CPz@F&&*CK6C&zLi)&@h L ϝzn_@aa&w9q8((b,V#0 dZ^A x6ejG1SeKT T$y D&b7Gyb ' Ea{m_ᤴJ8|/M'&@F. ߋ m|P@*!΅ ,Sii|d'.0Ab267"[(`h!%V_Q"d"Ko5Q:t$wQ$@.|:8'ֈ H[(0lb80R7Qd)JWK1wb!1!flp/A'ࠝDoq# gub^|tn&%9%ڹ*qUd>(E\hɵ<Pt 'FRx%{ҁHy z4)8co vz'<3ѐu|`j_'r.l#@H暅/٨2#h^e eQ'ʦ (N#"d p[HGc D!aqw<8Sp_Pf0/bסXCdK?ŘO (:{ ~X@ .[Q`{L,aO_ DȲ˗0cʜI͛8s3u$0cu^NذDϧPJJիXjʵׯ`ÊKٳhӪ]˶۷,(7^QteLg@|>cn@ej U@Gr]Gd ^o=yiy w&<0d1d/g `  wFD(n]ËOӫ_Ͼg`Os{ zu<x: A<< Ax}l@|e_s/p @:' dP>_CrwiXra1`OeH`?Gf\v`)di&Ntx:?u6I X D@s~o0P@J'x9gy2Pn<t5 Yj) 9oN>3D:&6F=dƊi,s5@Qc, t>Dpvm:q\= d:9BG|)кR(n% Ab<E3,0,si+~sC<<$: HȨ81L9ʓg}tpKCqr=#k#@ňAqՑ8POw:QNdl :E#W.Wngys, @>N>=t;E@:dl6ސ{a e~zú0DPvAuO#cY IB!F:򑐌$'II$ >&7Nz (8L*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZfOLMp3J@>rL&|WߌJ<Dzv2 .Oha3U. tMh%1H19 xcJi Cql(Eoҍ{+Haα+k |x|0& jy8 T@ PA X"呏дU:$PzD \KS:|`n أތbF},xͫ^ɄDs0OO_է6'Y [S<|m'ߔNCkJҚf"LYeaUx2rF[{4^K[WZ(Qe:Ѝ.| bpCuÈ@czT h2g*Y (%UR$#D?(0@Y:(P|du&B"GIG=PO\/A̷(r,iC\e$ @.6eXxK2QQKJpSAP U2) ʜ,$:0*@A vHRƣc5`4b hphGDգ340Qưia2Q:} GK Ihԃ!|!@2zl@aG8ClF<@520~&< 8;#@RXa2y.{@q>DryX -(KV7 !>c,AE 4)Xu$"oT.Gi` a0'@}ՄY(8>c5 !@QK>y$bf(W Y~2bk0q9Dp/ {}$<#$hY#WYc\JL"yO%SAp`bxNgpV5Q'wPqB$T@o'0)*A7.(2{q0U:W/1p(*h/5kES !)!B'v'z"Z=UC$ U[f(PIeX+2c،-Q X%PNgE gq08h1V#H?q@tEN! OQ3.S3ohB:Pp}SBWU8e5X|Rc6H+*I&.% 4Y6Ke+`YsQ}NHzu0hv`bpm} P e8!qrh9E+rr=5t4M)6!; 6n."f7* {S'I}C2H0 87I#79Yp0VD.1 &X!6p{m  ceU(hP9;aS!SPyjA >?PFQf)Pn6#y>1Q`^'i7dD<6<gpdC@CG:݃+h%dnw>;C1?q?'CDW 1@ *b2:4JI9 H]&Q`> F T&p4D)E)t' `";J=3 p4@348rbA1ՉtI CCA 4l /Z:*vLѣŷ E\4*r3te4W#"p8@Gd v0d5ZzwZ z8_qƺڬϥ::jVؚںڭ:Zz蚮꺮ڮ:!NH:O$:+AP{K^P k^aS8Ssg3_LjPTN%{teW)۲.{}i WX&/0C.@7S3=dBNF"``مg# # feX=Aa\GH;vQPAebe-Af`&fn|KT5"@#i&Sn,i C 6px.KU.n1ҷ>n6oFg8Zh˹G-+v~7mYwpAG bA-2{!bw+vFJĻ{ bppb#6x y6F1ءػLM +!BҠR \ApQW8Y[X%T#*{"$y, g,:Q++r,<,"<÷dUqrm!aG'wb#1L/8>&F(%s2U`J$a!b~a>ȘЇ“+ЙFӀpcby=\8, 9ƈȋDIc /h=>*.|D@bh\rB >C?` ?,ĢdȺ A0d 1h>d"&UZjړ7AnddF`|l$oGsTGwyΡ@fHKϠ4 8bqI ]Ѕ Kфd! - "=$]&}(*,ҜWp@O0z%.@ Pȅ:+3t1"PV}գya[TK rS%" aq`'%cAe0Qe4S_b{WM0c,_S}Ր5AW"Pp0CP6y.W/U_ hue6U`&`5nd -C qb 'Qs;dGaAΧpA0^jy\M` PGI4$؂bO%@hݣ˝G EZ=~;[:a~. P <=4I!\As)c cV,t28aՋV`W&!hp V_*pdRBaa ^cb7'Gf.p _V0&\ 8Wt# UEG',e ec K7SsPp(-.+. CѾkY^i?乎 Fn;ԵTonjfjVgg@h)Cr)&bIQ8e"La,vq@#HLay) c^ H .2˥$=⿫~/Qi3Ȼ;Lvv : gv pBD'u)$`}" L{-Q5=Σ$4'%,p]L8礱E@I<;Tχ!1mMgSX;IA#!iJHӸb p#+: b _Ҿri#‚.XXN,ak렃H!5m- 7q x c^kw&`%9A-6Ȗ-+(D M8R:PI(9#ps`$XA .dC%NXE5nG!E$YI)M8go^x D?u(ΞB I:vŬ'uO!ghҁK [w WeN|`O< 0o݆z+J09mCx.y-0]pέKW : ٺ.|Bwuq=-pW٠uo'^qɕ/gs 5OL}(8Cu)ϟ1(*9#q=vZ<sz uJhu*H K̞{P Jpy$|z+{+{N :ctu#{u( Ȃsqj$$HtI(rJ*J,rK).!N  t,H:)!C졀X f֩;*ax;{ \{& {.H Ġ8) <0YLV*HIЩM,.5@TA(֑?Y@wTsGXpw\r5\tUw]vb2G8,@d H(s⁣_|$8vB tH8& z'ҙx  8ǂz7Z1Ȱ |yg8**ȇu (`4|"_vu@Cy|zᐅ I@ %>0]a 쉧2ȇ3dqNdNK#c1n#|r+r3| tf|w6WwZ}ju*6|Z)|ZǂpJpAȯ@PZ.` ,XRC Dt!ECXuJYj>摞T@E%H3Hh@2PR@<H$G: 58P+da ]BP3 ae6k4$bxD$&QKdb8D@; pLс@G0'Qc$cxF4Q:רP|xG3#vwLᔏI :լA/C=أbf΢Y uG_7e?OB*<}0zFS/wAz|`H]<zx fHG(02"#c/ @ @!ʯ @A,ó",""|AA89qAA6; B",B#!B0 C1Cx  1/$C9C:Ї? t1p7TЌt؀w+.D bCK!`SxF1 61CDgɋD})DZ|@ b48L;`Î1 al xQ R¿zmF[Fk8 !E/|b* s ԰F 1*FzG(8x3KIб -0&/y>1,wج|XEJ񬨈06h -L}uH (t8HP8X"HxI[u(+{Y&d4ʘ c19yȵtuhDG{O2yg"yyP!rT! 8Q./HY"wQ)s /!7 32HɈ5blJ ˂(4/ "#Ex{ ( sS> ,9 8s3̑! `RMyu`pR۸؉ $zDT PT#mT'K-z =@t}p> Vaؿ>DRpKG!8k3Es@@fISyxuȄ+E>aW}(/001 tx5qTZyIغe zm阉:`-3&PU*ՇĨ+ۏx{?H:0@x{ ?ـ Xݱ+7E5(pG `(Z8 39>\_1|+p__M3_`Ų_.`>ೢ^`n`~`` ` ` ` ` ``aavn2na~\p{Oa(SL a!bFȦ!*Dԇ yb4Ԩ+(&b-m&Gl^{0ԏ'37^BcAb:(e\ǬWO]d8̫, dA6шc;dI.Bt ̩8II1uTtH&P \MPeRX*b?@ tЉڱH, ȄhYj彇{^@2e 6y _HL`\dtNgLY( yQ¼=g깋zg5XD0 (K#(mI bp8M/yHzg"06=$UyP @䗷RRhs6Vg <-2_-,L 98dXj2xy2*1!8sc  bxAѐb<OJj>L p;$σ Q 0QU M+ ANH:y4:E!xe̳H1U4~9"E 2@m kU$^n65 '2j!Ҥւ`S7SH26D*010c i ^䖠 9D<8,R1邸J<poJ^X6ʼnlX tSxNlAru 8qOQ#IkUsiPM Xs.pRӕ3O?e?LyH;q\VݶH{>לHr?V9;53Hq]Us\u?󃠑{y`+B{cYHeEX`,m[y8p jYݏPtFw'P=plE7k5Xx֌;4Ady+G/q43z8Hseuu 4y@8\i v/ Uv٫![)X[ I  SimH9yݙeG 5\^\v Rч X9^O} (-:!RO07uy]/H(ؿPЇ9V^f)P@} zw?(5^E)! s/b/y_`?&{8d" >v?|c"\`𐄹O|ɟ |$x|||}}/}?}O}_}{,Ho32=j0--lt8X,(3! | :!r! 3`}̧{Hf :Ĭ@>1BNyqR>9Sr:VP-O7pJm-ܸ^ 2&P003ma/P_5Ӏn>#+ Nx xgBWn5زgӮm6ܺw7‡-D쑴:`$H IH}{u%Hg^w}cwO> )`s@<3tfCCCCj3A.SC=ub[dc5Wc|Dsl0:St>#?L3"tMGMptYl@O=NK`48'uy'y'}' Z= =xA>" 0Wfi p:SԟCdU؃AL AȲEZ(=XG86CrI  Kgorn< =CVi ӉLC<9ݶ3Os:#@16!<2%|2)2-uϿP$l0A`&G!x] ]@āp$tA=>kvD x"F#jgvŮC=Sڒ{/x48l~}CdS)QM.pA:#-Β )5 #Q(<;0O .; ?<<*dHNAcdKO[GC1:DAe^#8ҍmo+AE:1@= ak 5.PYA0Pt?xpT22Xua'z:3) nqaXd$E@:ѣ!RH6q#Dt h :F8ьhCqH D@]#2r8(%7O|!A\X q:D`Gd? I2CWr @Ӊt\ H91hS;':өu|'< r2!F. a"7vLp`?y>j'p␁s @ zЄo5ס\!8?2j[2IHTL Pv"CP';zWEǒ`:}q8!TJ v1D=V%q(A03!y 6H\Е=JdkAZ 5!$p%#,`K~vibï< Zƶ` LšBXA|*8a(sR#ZB|sL`F\% UJ0&2͡< 29~"15?玶!v\յLsGzbxA̠Yu_JLYUC "28 2J:gTٓ AlxGvn(Iy9jBQꮴA@1 ʱQkn9!2(6H7J J!80s8C.f"&xɨw]C&:1c @:6 4!`.s{-[DsJI9jWa.92sg~D-p i0#u  Zs\LAIܕ@:j0a¡C:XßňY8 N@:|GL8YVʬD:DC@x`d|!Nl D!: by$Ċ<7DdPCHZS~KRC 4!IxE^<8BN\afX&CQ!Y|cd $غlC܎5b ~_Y 88#99*0G\G< =]KB,31C%|Z>#,YfMp:0@<  t90:DIa~p>XIb<;OrTib4A0'K":D/CNd$DID$%% -%A,GSztCr,K(%P)@-??t@Cҙ؃'G āZb-zlT>AP=C8V*PprC::H͍:]k&lƦlfYݷ GC@ FpH_AHlDCs؆uÍd$IR:CڍcHb0DKCA]4L<[AzʃvJx录KYè瑈A'|?@,9 nKTA@ebrD%Ҁ<@(Ap<ĔpDdL؊ɧTϟ}~Q4aDJ< Yfh$ k[!EQj+nW9,xX`J;A=1S=:y: D7,)FN-V[AHC <4>Ch9OdDP5I̓laS.I8VʆR֬A D0HH@@s f,CU:܀!dؠK&o7FMvfFꟘmO7r=s>Z5[[ XtZ8k5義LԴM h'[/6c7c?vn5dLЄXDfced6hh6idP,vSii6m׶m6nn6oo6pp7qq7r'r/7s7s?7tGtO7uWu_7vg7ȉ0M[GDvodĜ- m)kxæz,TDzj7~~p>4[=opw81xKvﷅ_8G 3.IA :|UFfPJDdDEQB,vDkCpb|FHDITJD'MHVN\2PjYeФdtX@ xE8+B4](蠌\ă̎@~ lx|QLo;`[ <4`FȃbBfDe\MKe -u'(%ڞUfeEkzGG؇"w 8rF ,HY#4tEIr  ܕ域G~'b? p p !HC@k"B C%Iyk@ x] b 1a4 Ch * [8zd0<>2`wb1dq  & 2 d׺'A~""!ΑP3bOu4 ADqHy-u"局t" BDFzM& ԃ@&p@uR>YHlyd:ޣ !yh,HȁdRbXǥp @ 8<K5;eG` cx1P]/ɢL  @*5$m=&s9 (ZQ^F9QvWbP@(h)£'1II>3E=H>'-ZƖ|L9,H&`6Yn TAo*<@O$O'8M*?blX_>z{u!% C- cб"#v>zLH3,-dz+^Aׁ0@"_!pžCH@ DmmaBB}J֟f*4摨茲;+gAL5P  B( 8 19FEx|=sӣD4@ cAaÊ28`'郞APxtG9a!I\U/; PQ%8A=n^: ``knH<H"<"H a)=!}EC4{d4^mltDQ@q4`UQiP 8 @y,v(#!E< T0Av>Q uuO J<Φ'HAJ85~jq8\zDC Ptb]lmx R ʧO"Dl"$("DB a6: "Ͽut6J4fbDɹFD#0Ha'z /)!n jc^'!| `NvD,B졻 Dv`Դg@,( " "$?HcrP)$ :CX Z'8(  ց+D-lqLPG0E; < &` t6 D.Ehܫ  f(EFP+>Dd!H Ip& lC, 4d.%DA8a I wbnǞh! wB0h E>i'8QNF`9@7RLB@ PA! @y*GlR3 84/+bסC!%dmbQ{n1bOc6L8S88Ubp p`, h)(u"Lj e"*@GAG*#8 @ E;j  (:c*-*j&"0_qm?% Ndc? zd3s]9A R(qFƫ!*4*@!(4`k,6v>B|{;JdCʑ53>NA &AjF  dZ&8h} ;ޡ'4!I2AD⁂j#6[6R8s;(@M!O!Z&A4PA$,?S[F q1= ;fkp!%Ŕ3:G. a;nM4D8U[[[aBOI6Npbm `:(O"X,Q?. $Pc:"5@ \L+0% rG  8$a΅JZ8@4\dA+a J3mIfQM['v;uc{`@nk'Êb%@%6`W{A p -0te)., $]@|-I r6p$ *_rja4i(@;^>6}8b=$|oHX,` rq [{Xf-,.Z[@#oըA%~had 66 V(ND#$=@6Ң5 $ PRQoj[{|W|),jt|-FDۇܔ'8A@~=D$6}Wvf)wbwmE4&`H<ǁ9gsס<=;؃?CXei/3v;㡃6{Tu!5KPKsXw{؇ӀU˶Ц@+)P ^@u`Q؊X؋XǘXט؍x~ ᘎ؎X؏Y YّY'+ْ/"3;ٓ?CEKٔOS{7Y[ٕ_cY;gٖosYw,jY}YYYyٚY=ؙٛYٜY-ٝYŢٞY{ٟY ڠڡړ'+ڢX/Z7;3ڣCZGKSZW8瘥_cZgkڦosZw{ڧZڨZکZڪZګZǚڬZךڭZ皮ڮZگ[ ۰[۱#['+۲/3[7;۳?C[GK۴OS[W[۵_c[gkos[w{۷[۸[۹[ۺ[ۻ[Ǜۼ[כ۽[盾۾[ۿ\ \#\'+/3\7;?C\GKOS\W[_c\gkos\w{ȃ\ȇȋȏɓ\ɗɛɟʣ\ʧʫʯ˳\˷˻˿\ǜ\ל\\] ]#]'+/3]7;?C]GKOS]W[_c]gkos]w{؃]؇؋؏ٓ]ٟٗٛڣ]ڧګگ۳]۷ۻۿ]ǝ]ם]]^ ^#^'+/3^7;?C^GKOS^W[_c^gkos^w{^臞^闞^꧞^뷞^Ǟ^מ^^_ _#_'+/3_7;?C_GKOS_W[_c_g3kos_w{___! ,f664^^\jjl&&$nnl VVT..,224JJLZZ\**,::<BBDzz|""$bbd>>@̜Ț4vrx|b\` Ģ<6<ΰ^d`$(8 讪<08FB@Ж0(($00pfp0@LF@ ltt~xrvx.(8h\`|vnfHx$x഼İxd\t`ԺnpNf86(bxtp||80L0@0.l(:0`xnf`0.XPX (6L ~zfh0|p|tfblh*$LTT@vVl<<4 ``ZbhԴ08:Pľ¼rr| vvt ĚFFDĖvv|ƼFF3= N@<F)TV Y<#(O% Ih&QlIGqvdP=l,`堄jj _wLPE# F脨A22dCڳ,iIt:*B6Īz&sFA:f+[:ؓ<@ ;2&HxpFAHn[Sd`% -ښACQ:``,pA>tϑh Bxˣ=K~POa𠷩̒<|PPHZ뤳qβ,@ @4:H;,2a(X(6㜫ls=>C r S@)=sںM< @BCIHHA? aS rAIu@ 838 xȠZb @=t .PRˈ8 % WiHΪTXGMqӜhTS] G:*qcCjԙdũ0ZA!}*Wdtjψ Ї0MmfnC ) d$>{O SE,E`bTU>? wŪ@$˂0׹ `+ J[K›$0VQ +C]yYdH@Z\ YTˀnD~=-/tY1LBZP]ylM0^yL-hGd~P÷gLc8'@ ' A6[#Bu8"/юbYtY.wh!OeYT)e{\Y PQGkϭ,OL= ҥkbfC<%AnI{wNiFǚm[M@·Y D0lpXnkLb6Hl2A5Rɴq0? ·"rApJ4c W5WA!b ͤR^OB9f!#RBHS{Nr :`ڹqԣQ@ [ !]B$fU?^@ 汷A Iq BЇN$:V 99A& ]4CI1^Em< P`E=]d)'{[Yjp]"8c B*j.Α`]p#S%, \ $h#/{$l[>3 24 &Azf8A:֔N[Ly:|!P?lf!s1 ۹$6$bU7d>;x6$@~'O`@Rjܓv 77PW5P rUp A<frH0|=G& y&<%!d0 .H"%.p'G9`r h;*Q:#` @.gwVp q$'\`XWvxx G@VC?r `d U, PvgG2E'Rh۴w q p 8$ =,h*PO 1PS " Q 4q') ّ{@p)A&Ph(0293/KgPP& .0ebpvPpILzxw؈G2Q0eK)`PS0fq`A]H%  p+Jl qOvO#W!6С -4+p*0d`zڬdħ*TJ9B;c/WZυq "%"]b*U$`^Qp@):D{hzqT =Kښ##F#mzh<;r+f?dN@j۸Aq50WV f h =8P5(`4SH #Kiu$H5j٥#FWs.yƵ1 VO8׻;9AR 5w8$$ۿu<WW <\|h}!# rp)#+a0waV $OQ E)6,@O+<.kOTa;';[ u1/v.6HZ̙]\Bi1S8 "Dz)i)|X8[""T*Nj93 $%Jœp2Ŝ9%3xʉqrk,':ʝ p0p [깜ǾR!}/B?L\"*Cu)2џi#u(Ȥ gμsqP ʫ3 jސ?`*' ]42,<(W\Ȭ#1/])g|,hzk5V01a0,mA.ma58E:=_+J'"Dj#mL' 00$і ÈSd&Z:$A173p#7tc79P,>@:J?9!`vr z#-!m Xے!*I ^nQ$;?60IvX% PYaXe4b@ PnS1 rR%aǵk;ym`!&%aߥp/fqBA~QF~Ws = @ =e&` CwE[} -$To@Ev}׭ %_*׮r*+5\M" Q"` PȔ/@:JJ67t_ox's@leck<oCP5T-0a H04U_g0 P>9"@ ;/ʇ [$ ۫{t. ~1 XA]00@ ['*go:W|CGPǁKwBKY޺ͻ w.<SuIO\QFEKqu޺ *0ߺ+Fװu Yw8}8> PzD . nz!dym/tu8H5{pdA*]_ɕ/gsѥO^uٵowŏ'_yկg޽|d+*t.O{*yj 2FzǞ `o8 J` &?Kgj9BBPAGpgCyN|.+`" (B ,iN{HN-!Fs.1lB{ұǞsC:- uH%*3PDUtQFuQH#tRJ+RL3M@ ܬDZ >Py`,y*GK9g`(I@{#/ z^ A`ՐsJHǁZo4?F朔bVFibi@u uZ`Tmu,X *'8<@:p;Gx%m ᣉq"j֠ 'ΙY (W `JSzh6hVzivZi >7LgaY  (lg\} 0 *#8f6G>kvW)"0h,|0hSr "%(8[tnǔzIF\ss `ښ! g0 "#|+J Nfta}8 <; 07( dYg ?_'G-r},9 `G\4&P d`@FP`x@#P]e]["@20k< tXW2|< f1Az`9@@/8d:+4B{CB@GA ̰ ', ^])9λx8Ȣ(!tH & rA3!H`E;1  x!2XGneƐH>,&Px}:] PXGwXA@zLe/}K`S$f14t@x6t@g#(Ǥf5yMlfSf7@ 4-eSdg;NxSg|=shɫg?OT%hA z4lh?&BPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]_hoyKYv3й (S,B4e˛^.=oT$if%H@sHNntd8}2W⁷p\G=PPN7a`/YebD$8Fqy!3fζ lm%_p1z֚(2#K'5؞gc L1YDkvK[4X{)V95@@y ><f A?'U!億lLͣN^W*HR'I k>[9 ( .IcBg9Νz֞T0``u3v,0Ύ[vp2oQZ'u[&x/BM+ZJXA|T%^I>?TPVr&I^<3y˶ Ii=?bvWzN &)Ӯ\IL}bЕ%kȒ@Azl#7/초u (X%rk } u;q,20)d{|[ن!yxz(ـzv` V≎ ؇̐;A,OM5HA?Xvhɀ|P 1??{3"QˌЫ!8 zx@@4@@@C1  !#ù=<)SAg=B}?]Ey*BI?(kp !q ;Da_4 C+рfG (<1@9NUz>yθTSjF&D`MӂMŚhZY¸P{H(W}bS8 X }(V?H&<@ tvQ@" ]!9X5{@Ӡpu}uy- Vx&5w%0ی㹇4z9D DuJE8(Msȁ@}(9ځIY+3XX1j= H9H4 q 4 sEҕ iu}\ύ (;PVy9xU5F1W-up:`=8J4Qʀk5 =͌{  q 0ϋ} r-]9@zpE S%28héԇ0-1YZRX!W !9 cqs mp%Hp ĉ]A1Hy_|z H Ͻav%-k)psud`Cy7::ZsIё5#b1ZWL 5E\ ͎N]A_#ɘX$.HXS0"C aHSKtxza8HTZScdueflٖx;ð2уsh2po )93odxQ+yr,q<̈`a7<Ɖ<0fn^EY(*@xaF bcy.19t؀e ٛ?ZAeS+uyC(И$e mD o xؖq֗{ d[u0Ɋgא EC9Yyș[*{` J>Õꃰ t( )hqՠI8Hl!Qzi88NdzAzjX8ji1k1 hm϶2fmQܼ">9́vx p#:{܀ PR<"^^,*Hà1yؕ T19MD:^@izA0@4Z#>{X?"$иvws(s` G98 xIy(i^tF7(}: 1NhGߦ ZXFtP-& HNvumB)SuYuu`X`8sml⧦vpLiZ?vd&& pAeWvp 0dvnvovpwqwr/ws?wtOwu_wvo€ 0ho|}G~7ww/ʸ'0]p1G @\lx +T?ׇ7  / ?2?'Ĝ(? > tq1栀3,88Hx:tx8p`zyz gYh7(_Sz|c\À|H|||}{{˄^ 6i{y q|ʇx^;+7["2Y\}>.Â7tj)`?dY~E42#o ;d] X6 xT;}y W 2lp?(0\gϡEt7>4@ >6̧Ȕ*Wlru/XǙ:w”e̟)MT(Ёb(]qᏅx^o R/ʌs&m-ܸrҭk.޼z/`,A zj8%,xa>{^Ro!˛oqB5SYb]Kkx9= a7Г8Cm{tds"NĹ #R jn9xv8~{[f{`A%CLE>Fd'O} -O'Oc 9m߄@]ԗx5et]]BCaKA'Y9#=#A 9$E=p#w5B$eBGu=/4BT@04@e*@c@6 c=_Q3miϜ8d. 賏M QI|9%a\6\4yϤq)CBa$`VSBya ,eÚY5R\K!Y衉TbCC2FzZ+;.{.` 5nH%GB=XPĄ;@Etc@HOcX<0* ` !@3As{wF*=@we p ,t'[>;,3oBC ccl06 \2.n{p,Ogioq/,#f3'1PO2-?5T;&k;ġ//:$ؓA&d8J)7O ToH Lr'R3(ͧ4?p4kO:DẊ(%ݐN% -[G.#/@Nj«Z#Q5=0G }2n3Η? ].&( b!<EVh)Ԗ?╎ 1ʋ:2 mdu \c2%3HC06.@:$ 8aS FPc$dؠ<4lA0eK^f)rh1D*JM>x=KitT!-1y7'd1d s=恀aTr 08<&ytcp8^Pr Jlǁt HAE5PZ@`3!36@ ds6fi6#yUC0{.uS_j9!L:NsQ goMۤq|.5Ad a;O` aҴ| ,sk6牗:ې@{1ycҮ3<&gD}p@1C*:NxWszu8ԥm>ͩq=b H X`:@8 Uq*!7@`@CENX@5vɛ,Sֿ!{'oټa1nMhpX 2˴a1@:*0@Q8%RK QȞޫĝ@@CQ-=tB(:`m<`C 1e: A:H?|@ ȃ:EEYٓB,< Ehl@ay 6FtAӌ\2DIϗc_~`N]\UƟ=AZ @ : X`fd CKi؃C,nVn><(<0@Ϝ*+RbEm N   Q+4ЈH 4F-:nM$N$OOŌBtVH#p@VO SI=:KF HAK܃=|B(G=˽`@i)D$19e1xNC0Z$a\B@:`B@ (I)T @Cg%XTGQKOZ=0@RxRZqDbDC ra!srxRLL0rcGO)Ʃ)J j @,mCZ Di$Tj=dBā=GhĴ. !9Ff=a  HIc"*$C!tU'*D4Q>Ǿ?:T@FDC;` NTCdf'Lz.+$(>XA(CC(&Ą  AHHl?Z@*jdOG";:qB:H@ciQ#C ;$?Ʈ.$-A&ҀxZC<($B2җyFB4ta"jV%#▩YnD"JC8@l6BD1Z@HA'&@l$I'CChDMo1,AhoppxI79an9Lc=$!AO`Jc/l/4Fx4*ec*mK2܎F)PQ!Aކzaڃ LJ !pX"F0C!@jUBC\ -o3HZ|} qB, e1c.G{Vc vS_˃$ 0JCX~42"!Hc*$D:D6ҩBnF<4JĒ4 >8ÅPrJYF jgg8, 8@9P'K@ JיO˚Tw O5Nok3go8s3Z6ĔC$C<4Bx'fmX@aY'7B]7DxY@{,voMfa6GhC- THx>X =)]dFT6MڀU=߃0PzK"E+CTTe*88b,V?9GDQUז(TD<8멸 Af\<:9z>?,l.X U<[SVA̯:)#G)'F$^ VM<D${.CԸe'Ğ4B:H@ 9cl}1KxYюrayTzRCW8<l7NB4.,+prw8>!`NT<(aTā,&l1'뽃,|n\|j8@@YcHG+x0C AhDy 48:{γg]2ds?{ Ju|8x`u [o;}#p]A0Sa0(7amXX2 KG&]@O ˃dĠ 0{Az鄜!sA44xo$Y FBK\udՀc ␒'X8lwilON= ) bG``CcpPº3!A,!MU8Z 24NZD_'f!Q;y/) 6*DXz#2otȞ & ;"ɠ 0C+@p8,p0}M&|dz&{" Vs"CĨ r6r0)mq{p )*O Guq͂0p:lybJ6ouj>9lō։@Ċ%'3.*G[Kd&r t p@hg(02ԓ 8GxTlݖnpr=t]v}7\Hة| N;HP^ ^`֗_-5ޘ=EM>%FQ0FEq֢]Z;ADgx(N墍s$9iviyꪭ묵ޚ뮽lD FdqqyI^5Lq¾;b{܆{ ?_kYF ?aՃGS F-ot31_HsK_]emuߝ}?_襟ꭿߞ?k|}域_w,Ye|!~ } !`VbYjҘSmqǿdp*7A)T }` %Z@{QfҌ>␀αkYHXU9ݐ˅0 i."K%JH>)#P=~(. X@Q wx.cBnKpzø1o"X*Z-6I,T"HGOp MJs# Ҏ *Qe09.ZjQ Ln H`S4;Mq>T:ى|C@:Dp;nK#l9) xq'L0:Ozg<1zs9&<,G{M]&DB {db]HG?rU`x<4OnlҥDJoMTYfESrQc^Aǽ2IURԚ >쨪%dliAJZN) R+n`,S:ժάgV{ѷLG=͵㞴ZQƗnʹctgH]͒|+RY~{'b0C P( "G<v! @wJR(E23ا\] -QK! &Q>;ȃYYSzdP=(\ d>3%EjYZDAG, lDrvS\FPƅ`E_I&dyavCjSj&60Ar@_dR1t(꾪*=`R/}^7yŀ=DE(=IsLh& |D"@v\w;^t7AA\J iHs;\0 f(֣ <  B :ZOԡ tL ^%H ^ Ƭt <Gt! sEjSZakyz!Ktt-!b7A@ziExt<@VqIESx_pC@P(oQl`fM{-ʿENBQC"/ @젲9~ry/9bg$8G<$a^ x$DpËq7Z y<&$<xy<pm,:j"Xަ}uM N{e$9S\DqPDxD>2h 0A1a1r,l!ro^zoLHEFo : 'P "Jmژ 8@ z,nRJ@"i\)2%(1@h\>G`AEp %Jp!A L` A0N7@q) \0ҋD`!,ga b@A/' .  ڠAԀchCQGpMl(P%V>a PF>@}0"cH<-:'$eP l6`AoƬ9<124,P7\LU jP, l lhaa4p y>j @ l @q)X~M W:jt cqbQ @ 7O B2  (@!!B!X"@d哺<ުVC>4#A2 &UHGr("Af3˦$t' HvBDD*Ԁm*!&8,HIav̊h(!f+^ n)?sr$R BH!$,* dSN O8Yt;C >`$@48QBG@,` %O|r[4#4̍Ԧ b S^@FS`DbLjɣ@t ,0Ҡ:9RR S)d j,P,E a;Sc+QRE !R%J3O TU R*[UϨ(ޢNu)#&}DT#_A_ bJ"r0ǩ&Ec;c?֚3)QEal CXS Q b4Kt|'טd :a@(AB!^r-< &&z}5[|#wB4]2'%h&䏬Ă\`TT@!M RY|!>E vၹ*h1\d^n @&X%HM̂b'! ΗZ ph; 6C!^aMxy.lJ*ߡ`).-P\cԢb#p $`  pvluct~]ɚIUrc^u;\ا3_Qhɚ$ r FrFjC+r@ dl3j-,˦,|V`,&뱢MK]"Jt?R__7@G8Sh4G ?VLd?Øm rR ?8H'bʡD=4ҥL:} 5ԩTZ5֭\z 6رd˚=6ڵlۺ} 7Qt"Ҁ=i`<{6䫗 p#upm2o^nC=`a1_>{]WoIX'aʗ3ovIҋM#M\w'@$y (dӫ_ǐ}tֱk7aĊJas7gbd@IlhƙgFqj6lfnxـ pšr\{I9s=89Գ=5Dx"l?r IdFdJ.dN> eRNIeV^UG3pA:8dp0=Q:}p&(` B#b<c1xC, D(M 7qF'S>Փ>bDʪܳΘĚm:84m {?ddrƒ瞡50P $ >h=P*IX.p? qOLq_qsD1q0 0z \fmQH::$c_>`!j32<bQr'M2MچF A= @2=ŝm6R\,O$]DpNq=4R|PCgdtLI/mO<$DYuZsAK7:t> %`p@qvs/|?}OO}SD<БG 9BCF<9@2Ц F̓9̥>5#;d@Sz8 Ix 'P<1o,Y=@ C/G=&8s`7A@|Czv4_X]xa}D2r#XLaqp!DcM<(0ģfުK$Dl:q;:?e*H;jئԭlE*Q5!/ *-iOԪvmmItHC:2 #|rőw#A@ő#ԍ\;5u=FyM٫C`bNmXT ETz[؃]"{[sw [9$vp;AsY."9P(j_= x{"osW6Da1Y|9:.S0F *'Ψ|`57n>\S7?:G^죫]D9u5,Q;N@8o_~FQ8i /cOЯkFRr_+o;b@t{(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hhȉ艟(HhȊ(HhZg}hh  @fa8dq 5@'ьw@"e1ޘ+}HĨC]Ulqp@5d1(aQ\o1FAe~b~y !+!PSa&,YZ. P> C!Hd1rngV1[SɔF(@q4W F?> \[WSW9N3o1$@}W|G9BN/ii9Smk)ؖUu ٔ)!X%"LQ' OMUaYx騍Iϗ)QTI9^d OCq-3ҙPDy%F;éj+0X!4X}WqPc2Bޅ,aD0 95w> wYh#Q a`KQq@j V`]頟3V.ji#P)"XɈ:hz' aP FPtY: >`h>p." a )(:%<,zJ,S6*:_zx)p4R3 +04!=6Rj IKQ!$.)71qy/A w2&j *ʗsXZʥ `bg-!j*ua  t#*67*&3ªԩuWC @|v3R# \P`#fQ!#4b#8B `ϡ)4wF1!0b0i"K?z(1! Pz10JR@PfH"ppK0+A Y" ChAAk4#!QCG V  ˴ ⴮RTk^1;3k(",")$˰!;>(;I!lVj(I 4G%?"3 ::`a#“+nQu7SQ2Gq 2Ih[8k#K{9[?KCFkH k$Us[c $s{8RD++"۴B;#EXfKj *ӿFQ Nq˽ +G^/#0sBjdzO5|c7 ."i$7.2 T(H|(#f2230!dB0'bZ&Cq@/QP*'-sR'U%А*+,#<(#"@''ظ--ibrLz,Da/h \aLY|"Bg7"t&>0]ktLDdDqJ!b?'cFKy|>VwN耻DQBA>9 k~EtDB5d饓.{IqKa}Lho놎'\2*DaqJmc-A@iY@A~B.~!AK"#4k!qf3T>l]P&F3F+lt?bB)bo ZO[oJ/&1PU~LKH$i#n.1E3Xv>9();aۘ\.Gz  P &=ޤtPP4t3>M#j`;Jqh/ o _g'OPUuD! + Nt%: PA#IF;w*J"ƎKKCt3ۊ.N P u/P2TA[?H* + "ndޔjRA&j.-NOKT~eOj= dՎR~naw޽@B Y7:yjP{au)PCGQ@`1 UGFO o洧/E[9 #3}E?s@П?(jP쁚9!!C^EU.;z.#tH št FXbƍ?Ydʕ-_ƜYfΝ=ZhҥMFMnCVC!uw!ih7$C @Ϻ򊯫m{uSnރLa ᭗n 2 OƼ V3; !1ZȂt ;A8gtŇ|αl"7zN3!0tZ۫(ͦ{.=(p-2}ցP4Jy 9'9`['K#"klB 1ԐÅÍ! Ik{B8a{V Q1,,RG!kp : z*&sPa!+tXE̓Q {ruRu+=I"w, 2FD{[LPB5NDRQS[o7\q%\sE7]ue3vĀ@W)*FF=y,Γy.S-O>vb:-˅/a e8CІ7au(Am!y"\PH;XHP"Pz%z,upM:dg0@<\ p<ڑ`k:" t1D#h0"E2㔈= @ Ah0]R:!IbA!Jd!|Vb=C{\De(GYJW.&wc-C(0c hFk 7Y2`CzSʈ?xlBhC5dK vÙ !p3b8S|3 r9yddG=2d/AmͨȣZ k@2G (lS^@ u4.^m dHhԠ6 d{ȓZ+b G:1DhSGE% MQV1Gt/}[; 3cO^tG͍tLӡ>uWWzֵu__.hqgG{վvZW.=5u{w|?xG|x7|%?yW|5yw}E?zҗG}U t3g}e?{ǽf@Н>~2;Maχ~?}֊ 7#>e@z{xf_}埘|*x?bL5w(Ϩ?ٚDTd[>h N1"@x {ȄkDTd@X'^uxQ.0i !$"4w ?h/`(3xP{w ?0C@yuۀ S 0K #w67$>TtC(ԁDTD7ߩP#4SDTT+0҇ H*"YpvOЪI\;8؄\Û881Æ(z et(H0H&ixxx{ xcLFj\`"؀zjk lFy؇z`GwDGex`hL\ňȉȊԼ{0BDžH#txH4Yz1n@zLI2`X ( PIA + X .|ؘA3 [q@{q hJF@J2˼˽˶ Xu`I: 2 XdP \c¶l <&(Ld{鸑EuЁPiI1܈ PШ RuxtΛ!xp1 2w:bLA IfI6)#8Ҕ5suښRJ8N}X12 dKx8 p" u!xXz8TA 8O (P@H, : ˜ %\0 }$@䯣pq[0R@R6i }$Ih./0Ad@PjPRY412pwqCdYCÀxAS2FGf95tXT;!3P1OP:hɋH8 À @9ԪqU&`A á8^seUPdpq%"8}8: A fx(P1xB$}(* 8h)(p)Z)DRX8J*Kvxy'6QMjʇHl"\1P%CB@|=؅8'<JL2,פUڥe;1~ˋzXM#ȅ4PVs{& 4X]qUe4zz+DÞe ÀZ3;Ӡ%\(.2zsZ1s&#0v]1IrTɦ%u5UeEuؕ٥Ե=k%5EUeu%5EUeu&6FVfv &6FVfv !&"6#F$V%f&T2\O4Πb̸b̀y*'/޿*7;5fz("s/ʵXp IpN ?dyXxHE `DMDPI}}0<ن&P6FTfݼ5ڈ͜ vBudrH] WB1}dw2!XV=xh-9B:҇!Rr6禅]O/G+Ø1>QɚpPUz{;8M:5Ld h&҆s{HYc\ITb?u&R|WX~`~{҈;M}W}B>S^y 1>y+O誢/aύiY2* ^kkft t(8PJ{@eZA]rlkvǞ{hx*x2ZosȄ9 IN;8l϶kmy miĖs ZwrHd qmȆ6{)@ys"ux]F=@Rgyޖ>_T0dp/wȓ*HR+ Vk _@FljeJ @1ȄN0= B hA@q(h : DD|hji9)\Xdu gд1+nVtRtys~MgP ؐ2?sVԔ8k,%7 ,# H}8Gtpwzoqkh P[ɇNUu>mM-vP*ZsXN~u H"!u*`z=pkdAKQ]ILn _>DPƖRCw(fx 8 nϸbu ? Msh''YGǀk/ʇ>l3)+ʇ F蠀4 ;(!!  ,@`蚇^- Oqy򭱊h. 3t@m-C uhŏ$JcK0ȷt$0)wd/ H JϤr5v$hlU GǼ6FW~'7GWgw'p "Lp!ÆB(q"Ŋ/b̨q#ǎ? )r$ɒ&OLr%˖._Œ)s&͚6o̩s'Ϟ> *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy3Ξ?-z4ҦONz5֮_-{6ڶoέ{7޾.|8Ə#O|9ΟC.}:֯cϮ};޿/~<ϣO~=Ï/>ϯ?X" 2ؠB:oM~d;fOL`#8:c:nx>aJ/ƈ22>x֍,8<sN#:tPS>>hO< pP,xrAӥD=Tec j=7p9R4(it=(EdG"$iJ(wQgx4?bZ`=)3 aASECQϮB==yS>5lZ#M[MtAGND.KzdnԮ@+ G3̚: A>#E pC( @g2Y: ;NM|"SړA5WrK3˳B@3A8묒)--PCDMF[9R >cO2*`$Du |6Ai7B:xE cwPPnP.xA66EW anxuxo0-9Γ!4@\{z-I^:cA:[;"س(*OZ`6#ϓؓBw*e><(kBjC૆`C?l) [ؽY=BuH a^GU`Is!W8:/+CFA@(hA juZXrH!w}1b(D" T"@=\~IH=xa f C.)Dȣed1XI2AnYFp{MARJBGJ-Wuѿtϸm9әvƳ@@,#@C_*Qu\2ZFayӺk85kGs6!-uݰ .{JhilT')p,.g<7 P|(򑓼$ K:7xVWH8JO$e=Fy i8 c ^_Zk!AB` !k@Hr88v 0`Y?$--U)H,\!)quڝ'!l<|JZ~ >OG Idz=\o DI+PL!H<}|ͭ9m$wݯ}W:.iiH?d:y~ @A^!!U_%Im9_Bh4̃E MHP@8 |]B ս، !anC4=/t9O1@xqU\BPYAa 4A@h<DL6$.p[->@I運 D D_8͢Z^=QD:)[ɡACQ?(:Tx1 ?ĢS> u"ĕ#q!Dլu* C PQ?l{!F]:HN !B$NC>A$!bAX8aR@PG6̫=/Z_Z&>F9D!8@Q! <|aΐ2KX?\֥@A=D$g]>&;.īusz&qED=[9?$@@> B$OCUCCje'g H%C S7$TdugQ@h,zMz,ēF7D&B=Cx9<Ԕ_WL9D AW/ñe͛ƩyAP@ DA*A@ !D&P!_:*W݈+kAl*kh؃t@ᬙ̫A kCLPLH{:A;CD4,8NH2SJ7d$`<@"l:@ʃ؃TCevW̝ (<V'ӖlN<+k@:6iD6KDᾋ@Y֪7x̞lf٬IQx B94bmL=D6x&=̃8.Dh>,H>CMH3-LɈCY:,A@:8EoCLFe:%aY@=(nFxHC'bC<$Dop(DXAUQA @,jQZ7bŊ=A<$X2D 4C D W*;('%>@%b06"_""-"XTn}Ǔn Tp aϯ^KJ# @ =)b IGٰn78H d@>iI t P ! 7dJ7$:PbDž );CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KhD$^]CV ,ŋrDj4 U|wpWDDPo^=touYcNKB}],5*\.׫華 J/ث]TļԋADvjD{„@tE^RCX@;l]0@'ZQ,!^ʘ} ߋ簻Ddb 6pHC'k=Kt$3-a9@z۽G렡$h(RxFP#)a08 6zp i$C֩n#xF`"*AE:`+" R!,#LR%l'$r/t`%> yFH- A8 A(|@{h 1Ay,x§{s'5v8RE#: nzB@&N\GHgß(&u3L6ĨI4tR@ȘSuis-cMVemg9 0U:G{/HPeڄL7r c u( X`d߱iקw $XB?{*$H`$)sUT ~*e!NJ{iqYy矁7‹#Wu XGA./jXGHD?<cx8/{ 'Ms6 xzɀ# '!<]Wd1R{!Iy*'sVR}裶I/QO]Yr/{K'nw)tyሚN{'YwIޟEĐ8zֹ^)t`yz'|^#Ÿ}(@!j}Sa|h #qg &};H=1t0Lx1FtA nAh,jU'(]o>@ZOāj:'d!^6?8y0dA5]f1#d>x2`@:A "uG=z7pBw.p'M' h#sr'U:(B2uOZO 5"MAմ5Mmn7{N#NȨxAjD`*.&y?\G:^xOs!OzpJBG ȨGEDP Q@/% !푹("81%OĤ&dd>d9G,HeCUNU (xiYG,ģ!#@ E$1`HK^? V5,n  H`2H>2f@?A81 ! ЄFA =6, }Ct4 !'`yR}$5q\.U|@~sIpf\nw^"9A d> Pu{_Ηǚ$'_|6`/ v!a O1a oAb%6Q 8u,Vgx5`it;|DILpl:kIv%M 4,$R˫:@G܈:Kg:u$$k&␥/` ܳP C<A5$#4ύv!MXK1Ƞ`@u4%{eH o=H:\c8!.RƁ| u5OzP$PxaivmpҞ%F;@BVRIR2}(GK4D@X&Q$G&{@1T1 wß]088pkdB愴ZeP@ 5[;!ex7Y)J%}~!졜|ёodz= 'pM'"7wx2I@F5:P\qB>&*aduH<;A;D ^D騹GxqvKsC8*c_oNe23t|[dxb gC zկ~*P !Սd2D ґ;D,s<ـ$cX-ɰz" Lz C hP ]gx'|`%=c0`Bc@Z&!0KD'J؊Ԩq"Cm'A[&CKL`64Pő %%8P$ub@tPEAc$H`T`M*!cB ?  0 f7hG%h/)jL- #O.av[^b^2!!_pp 0Ra\"\kwnXN B@d d!dFpoz7,!2֡ }tq$ <G.NrxOCd(`G͸&"l`BB=D;vbtxB[.4bvM..7ZM6pG96") : 1!2"%$`N `b1v6(m*ip't3oyA@"zblFi}x$w%Ge"`ޡ"D ~'"ba&jjq =`%)ٲ-t&'|.BF>.(bOq'8F't!N*O2(fBGցhN@8+`Diz8-!A &AU|hc('Ai3y7}3Z&HE&8'D@3Bm^b-!vR+>v))N 0{j 0"[x(k<-D]Z ,@7~I!A|m7tAXnJ(`q(JۮN(_23!©x! >8B)!^h1#KtC=hk7nCH!A&XT'3#"A(&+NhSRS'mٞAɴLH6!h8ށ9a\13'Sʫ *C䡮@ CPz@F&&*CK6C&zLi)&@h L ϝzn_@aa&w9q8((b,V#0 dZ^A x6ejG1SeKT T$y D&b7Gyb ' Ea{m_ᤴJ8|/M'&@F. ߋ m|P@*!΅ ,Sii|d'.0Ab267"[(`h!%V_Q"d"Ko5Q:t$wQ$@.|:8'ֈ H[(0lb80R7Qd)JWK1wb!1!flp/A'ࠝDoq# gub^|tn&%9%ڹ*qUd>(E\hɵ<Pt 'FRx%{ҁHy z4)8co vz'<3ѐu|`j_'r.l#@H暅/٨2#h^e eQ'ʦ (N#"d p[HGc D!aqw<8Sp_Pf0/bסXCdK?ŘO (:{ ~X@ .[Q`{L,aO_ DȲ˗0cʜI͛8s3u$0cu^NذDϧPJJիXjʵׯ`ÊKٳhӪ]˶۷,(7^QteLg@|>cn@ej U@Gr]Gd ^o=yiy w&<0d1d/g `  wFD(n]ËOӫ_Ͼg`Os{ zu<x: A<< Ax}l@|e_s/p @:' dP>_CrwiXra1`OeH`?Gf\v`)di&Ntx:?u6I X D@s~o0P@J'x9gy2Pn<t5 Yj) 9oN>3D:&6F=dƊi,s5@Qc, t>Dpvm:q\= d:9BG|)кR(n% Ab<E3,0,si+~sC<<$: HȨ81L9ʓg}tpKCqr=#k#@ňAqՑ8POw:QNdl :E#W.Wngys, @>N>=t;E@:dl6ސ{a e~zú0DPvAuO#cY IB!F:򑐌$'II$ >&7Nz (8L*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZfOLMp3J@>rL&|WߌJ<Dzv2 .Oha3U. tMh%1H19 xcJi Cql(Eoҍ{+Haα+k |x|0& jy8 T@ PA X"呏дU:$PzD \KS:|`n أތbF},xͫ^ɄDs0OO_է6'Y [S<|m'ߔNCkJҚf"LYeaUx2rF[{4^K[WZ(Qe:Ѝ.| bpCuÈ@czT h2g*Y (%UR$#D?(0@Y:(P|du&B"GIG=PO\/A̷(r,iC\e$ @.6eXxK2QQKJpSAP U2) ʜ,$:0*@A vHRƣc5`4b hphGDգ340Qưia2Q:} GK Ihԃ!|!@2zl@aG8ClF<@520~&< 8;#@RXa2y.{@q>DryX -(KV7 !>c,AE 4)Xu$"oT.Gi` a0'@}ՄY(8>c5 !@QK>y$bf(W Y~2bk0q9Dp/ {}$<#$hY#WYc\JL"yO%SAp`bxNgpV5Q'wPqB$T@o'0)*A7.(2{q0U:W/1p(*h/5kES !)!B'v'z"Z=UC$ U[f(PIeX+2c،-Q X%PNgE gq08h1V#H?q@tEN! OQ3.S3ohB:Pp}SBWU8e5X|Rc6H+*I&.% 4Y6Ke+`YsQ}NHzu0hv`bpm} P e8!qrh9E+rr=5t4M)6!; 6n."f7* {S'I}C2H0 87I#79Yp0VD.1 &X!6p{m  ceU(hP9;aS!SPyjA >?PFQf)Pn6#y>1Q`^'i7dD<6<gpdC@CG:݃+h%dnw>;C1?q?'CDW 1@ *b2:4JI9 H]&Q`> F T&p4D)E)t' `";J=3 p4@348rbA1ՉtI CCA 4l /Z:*vLѣŷ E\4*r3te4W#"p8@Gd v0d5ZzwZ z8_qƺڬϥ::jVؚںڭ:Zz蚮꺮ڮ:!NH:O$:+AP{K^P k^aS8Ssg3_LjPTN%{teW)۲.{}i WX&/0C.@7S3=dBNF"``مg# # feX=Aa\GH;vQPAebe-Af`&fn|KT5"@#i&Sn,i C 6px.KU.n1ҷ>n6oFg8Zh˹G-+v~7mYwpAG bA-2{!bw+vFJĻ{ bppb#6x y6F1ءػLM +!BҠR \ApQW8Y[X%T#*{"$y, g,:Q++r,<,"<÷dUqrm!aG'wb#1L/8>&F(%s2U`J$a!b~a>ȘЇ“+ЙFӀpcby=\8, 9ƈȋDIc /h=>*.|D@bh\rB >C?` ?,ĢdȺ A0d 1h>d"&UZjړ7AnddF`|l$oGsTGwyΡ@fHKϠ4 8bqI ]Ѕ Kфd! - "=$]&}(*,ҜWp@O0z%.@ Pȅ:+3t1"PV}գya[TK rS%" aq`'%cAe0Qe4S_b{WM0c,_S}Ր5AW"Pp0CP6y.W/U_ hue6U`&`5nd -C qb 'Qs;dGaAΧpA0^jy\M` PGI4$؂bO%@hݣ˝G EZ=~;[:a~. P <=4I!\As)c cV,t28aՋV`W&!hp V_*pdRBaa ^cb7'Gf.p _V0&\ 8Wt# UEG',e ec K7SsPp(-.+. CѾkY^i?乎 Fn;ԵTonjfjVgg@h)Cr)&bIQ8e"La,vq@#HLay) c^ H .2˥$=⿫~/Qi3Ȼ;Lvv : gv pBD'u)$`}" L{-Q5=Σ$4'%,p]L8礱E@I<;Tχ!1mMgSX;IA#!iJHӸb p#+: b _Ҿri#‚.XXN,ak렃H!5m- 7q x c^kw&`%9A-6Ȗ-+(D M8R:PI(9#ps`$XA .dC%NXE5nG!E$YI)M8go^x D?u(ΞB I:vŬ'uO!ghҁK [w WeN|`O< 0o݆z+J09mCx.y-0]pέKW : ٺ.|Bwuq=-pW٠uo'^qɕ/gs 5OL}(8Cu)ϟ1(*9#q=vZ<sz uJhu*H K̞{P Jpy$|z+{+{N :ctu#{u( Ȃsqj$$HtI(rJ*J,rK).!N  t,H:)!C졀X f֩;*ax;{ \{& {.H Ġ8) <0YLV*HIЩM,.5@TA(֑?Y@wTsGXpw\r5\tUw]vb2G8,@d H(s⁣_|$8vB tH8& z'ҙx  8ǂz7Z1Ȱ |yg8**ȇu (`4|"_vu@Cy|zᐅ I@ %>0]a 쉧2ȇ3dqNdNK#c1n#|r+r3| tf|w6WwZ}ju*6|Z)|ZǂpJpAȯ@PZ.` ,XRC Dt!ECXuJYj>摞T@E%H3Hh@2PR@<H$G: 58P+da ]BP3 ae6k4$bxD$&QKdb8D@; pLс@G0'Qc$cxF4Q:רP|xG3#vwLᔏI :լA/C=أbf΢Y uG_7e?OB*<}0zFS/wAz|`H]<zx fHG(02"#c/ @ @!ʯ @A,ó",""|AA89qAA6; B",B#!B0 C1Cx  1/$C9C:Ї? t1p7TЌt؀w+.D bCK!`SxF1 61CDgɋD})DZ|@ b48L;`Î1 al xQ R¿zmF[Fk8 !E/|b* s ԰F 1*FzG(8x3KIб -0&/y>1,wج|XEJ񬨈06h -L}uH (t8HP8X"HxI[u(+{Y&d4ʘ c19yȵtuhDG{O2yg"yyP!rT! 8Q./HY"wQ)s /!7 32HɈ5blJ ˂(4/ "#Ex{ ( sS> ,9 8s3̑! `RMyu`pR۸؉ $zDT PT#mT'K-z =@t}p> Vaؿ>DRpKG!8k3Es@@fISyxuȄ+E>aW}(/001 tx5qTZyIغe zm阉:`-3&PU*ՇĨ+ۏx{?H:0@x{ ?ـ Xݱ+7E5(pG `(Z8 39>\_1|+p__M3_`Ų_.`>ೢ^`n`~`` ` ` ` ` ``aavn2na~\p{Oa(SL a!bFȦ!*Dԇ yb4Ԩ+(&b-m&Gl^{0ԏ'37^BcAb:(e\ǬWO]d8̫, dA6шc;dI.Bt ̩8II1uTtH&P \MPeRX*b?@ tЉڱH, ȄhYj彇{^@2e 6y _HL`\dtNgLY( yQ¼=g깋zg5XD0 (K#(mI bp8M/yHzg"06=$UyP @䗷RRhs6Vg <-2_-,L 98dXj2xy2*1!8sc  bxAѐb<OJj>L p;$σ Q 0QU M+ ANH:y4:E!xe̳H1U4~9"E 2@m kU$^n65 '2j!Ҥւ`S7SH26D*010c i ^䖠 9D<8,R1邸J<poJ^X6ʼnlX tSxNlAru 8qOQ#IkUsiPM Xs.pRӕ3O?e?LyH;q\VݶH{>לHr?V9;53Hq]Us\u?󃠑{y`+B{cYHeEX`,m[y8p jYݏPtFw'P=plE7k5Xx֌;4Ady+G/q43z8Hseuu 4y@8\i v/ Uv٫![)X[ I  SimH9yݙeG 5\^\v Rч X9^O} (-:!RO07uy]/H(ؿPЇ9V^f)P@} zw?(5^E)! s/b/y_`?&{8d" >v?|c"\`𐄹O|ɟ |$x|||}}/}?}O}_}{,Ho32=j0--lt8X,(3! | :!r! 3`}̧{Hf :Ĭ@>1BNyqR>9Sr:VP-O7pJm-ܸ^ 2&P003ma/P_5Ӏn>#+ Nx xgBWn5زgӮm6ܺw7‡-D쑴:`$H IH}{u%Hg^w}cwO> )`s@<3tfCCCCj3A.SC=ub[dc5Wc|Dsl0:St>#?L3"tMGMptYl@O=NK`48'uy'y'}' Z= =xA>" 0Wfi p:SԟCdU؃AL AȲEZ(=XG86CrI  Kgorn< =CVi ӉLC<9ݶ3Os:#@16!<2%|2)2-uϿP$l0A`&G!x] ]@āp$tA=>kvD x"F#jgvŮC=Sڒ{/x48l~}CdS)QM.pA:#-Β )5 #Q(<;0O .; ?<<*dHNAcdKO[GC1:DAe^#8ҍmo+AE:1@= ak 5.PYA0Pt?xpT22Xua'z:3) nqaXd$E@:ѣ!RH6q#Dt h :F8ьhCqH D@]#2r8(%7O|!A\X q:D`Gd? I2CWr @Ӊt\ H91hS;':өu|'< r2!F. a"7vLp`?y>j'p␁s @ zЄo5ס\!8?2j[2IHTL Pv"CP';zWEǒ`:}q8!TJ v1D=V%q(A03!y 6H\Е=JdkAZ 5!$p%#,`K~vibï< Zƶ` LšBXA|*8a(sR#ZB|sL`F\% UJ0&2͡< 29~"15?玶!v\յLsGzbxA̠Yu_JLYUC "28 2J:gTٓ AlxGvn(Iy9jBQꮴA@1 ʱQkn9!2(6H7J J!80s8C.f"&xɨw]C&:1c @:6 4!`.s{-[DsJI9jWa.92sg~D-p i0#u  Zs\LAIܕ@:j0a¡C:XßňY8 N@:|GL8YVʬD:DC@x`d|!Nl D!: by$Ċ<7DdPCHZS~KRC 4!IxE^<8BN\afX&CQ!Y|cd $غlC܎5b ~_Y 88#99*0G\G< =]KB,31C%|Z>#,YfMp:0@<  t90:DIa~p>XIb<;OrTib4A0'K":D/CNd$DID$%% -%A,GSztCr,K(%P)@-??t@Cҙ؃'G āZb-zlT>AP=C8V*PprC::H͍:]k&lƦlfYݷ GC@ FpH_AHlDCs؆uÍd$IR:CڍcHb0DKCA]4L<[AzʃvJx录KYè瑈A'|?@,9 nKTA@ebrD%Ҁ<@(Ap<ĔpDdL؊ɧTϟ}~Q4aDJ< Yfh$ k[!EQj+nW9,xX`J;A=1S=:y: D7,)FN-V[AHC <4>Ch9OdDP5I̓laS.I8VʆR֬A D0HH@@s f,CU:܀!dؠK&o7FMvfFꟘmO7r=s>Z5[[ XtZ8k5義LԴM h'[/6c7c?vn5dLЄXDfced6hh6idP,vSii6m׶m6nn6oo6pp7qq7r'r/7s7s?7tGtO7uWu_7vg7ȉ0M[GDvodĜ- m)kxæz,TDzj7~~p>4[=opw81xKvﷅ_8G 3.IA :|UFfPJDdDEQB,vDkCpb|FHDITJD'MHVN\2PjYeФdtX@ xE8+B4](蠌\ă̎@~ lx|QLo;`[ <4`FȃbBfDe\MKe -u'(%ڞUfeEkzGG؇"w 8rF ,HY#4tEIr  ܕ域G~'b? p p !HC@k"B C%Iyk@ x] b 1a4 Ch * [8zd0<>2`wb1dq  & 2 d׺'A~""!ΑP3bOu4 ADqHy-u"局t" BDFzM& ԃ@&p@uR>YHlyd:ޣ !yh,HȁdRbXǥp @ 8<K5;eG` cx1P]/ɢL  @*5$m=&s9 (ZQ^F9QvWbP@(h)£'1II>3E=H>'-ZƖ|L9,H&`6Yn TAo*<@O$O'8M*?blX_>z{u!% C- cб"#v>zLH3,-dz+^Aׁ0@"_!pžCH@ DmmaBB}J֟f*4摨茲;+gAL5P  B( 8 19FEx|=sӣD4@ cAaÊ28`'郞APxtG9a!I\U/; PQ%8A=n^: ``knH<H"<"H a)=!}EC4{d4^mltDQ@q4`UQiP 8 @y,v(#!E< T0Av>Q uuO J<Φ'HAJ85~jq8\zDC Ptb]lmx R ʧO"Dl"$("DB a6: "Ͽut6J4fbDɹFD#0Ha'z /)!n jc^'!| `NvD,B졻 Dv`Դg@,( " "$?HcrP)$ :CX Z'8(  ց+D-lqLPG0E; < &` t6 D.Ehܫ  f(EFP+>Dd!H Ip& lC, 4d.%DA8a I wbnǞh! wB0h E>i'8QNF`9@7RLB@ PA! @y*GlR3 84/+bסC!%dmbQ{n1bOc6L8S88Ubp p`, h)(u"Lj e"*@GAG*#8 @ E;j  (:c*-*j&"0_qm?% Ndc? zd3s]9A R(qFƫ!*4*@!(4`k,6v>B|{;JdCʑ53>NA &AjF  dZ&8h} ;ޡ'4!I2AD⁂j#6[6R8s;(@M!O!Z&A4PA$,?S[F q1= ;fkp!%Ŕ3:G. a;nM4D8U[[[aBOI6Npbm `:(O"X,Q?. $Pc:"5@ \L+0% rG  8$a΅JZ8@4\dA+a J3mIfQM['v;uc{`@nk'Êb%@%6`W{A p -0te)., $]@|-I r6p$ *_rja4i(@;^>6}8b=$|oHX,` rq [{Xf-,.Z[@#oըA%~had 66 V(ND#$=@6Ң5 $ PRQoj[{|W|),jt|-FDۇܔ'8A@~=D$6}Wvf)wbwmE4&`H<ǁ9gsס<=;؃?CXei/3v;㡃6{Tu!5KPKsXw{؇ӀU˶Ц@+)P ^@u`Q؊X؋XǘXט؍x~ ᘎ؎X؏Y YّY'+ْ/"3;ٓ?CEKٔOS{7Y[ٕ_cY;gٖosYw,jY}YYYyٚY=ؙٛYٜY-ٝYŢٞY{ٟY ڠڡړ'+ڢX/Z7;3ڣCZGKSZW8瘥_cZgkڦosZw{ڧZڨZکZڪZګZǚڬZךڭZ皮ڮZگ[ ۰[۱#['+۲/3[7;۳?C[GK۴OS[W[۵_c[gkos[w{۷[۸[۹[ۺ[ۻ[Ǜۼ[כ۽[盾۾[ۿ\ \#\'+/3\7;?C\GKOS\W[_c\gkos\w{ȃ\ȇȋȏɓ\ɗɛɟʣ\ʧʫʯ˳\˷˻˿\ǜ\ל\\] ]#]'+/3]7;?C]GKOS]W[_c]gkos]w{؃]؇؋؏ٓ]ٟٗٛڣ]ڧګگ۳]۷ۻۿ]ǝ]ם]]^ ^#^'+/3^7;?C^GKOS^W[_c^gkos^w{^臞^闞^꧞^뷞^Ǟ^מ^^_ _#_'+/3_7;?C_GKOS_W[_c_g3kos_w{___! ,f664^^\jjl&&$nnlVVT ..,224ZZ\JJL**,::<BBDzz|""$bbd>>@tv`xp@t~nfHlttFB@tnt~x`Z(:0h\` <<4 `ԺPXX̞xbhd\tH@hH:HlTbP80L86(Nfbxtttl0 0.l0.0.(8FJ@xnf`4< N>JF)TV Y#@=3(ͣ % O Ih&QlIGqvdP>p(`堄jj_wL@@A#iFA22dC,iIt:*B6Īz&sFA?f 2+[T>3;@ :6&H|FAHn[Sd鲏% -ښACQ?``,p<ΑhBx@:K~pa@O=xPHZi ϲ,@ @t>H,:3,2a7X6q>>C(́ C@)=sںM< @BC;F#]MhE@Iу2.PΈ<4:/v "!xr3v9p9;@3\ 77Tsl{::'V  =#=Q |%e#~LBF#x" XP |C77 +1AzP  {$uhG2өD (C0YS z 2dCP!IHHA? dSrA!Ƀ=,`U%@a}s!wp؁'XFđ$2K@'J `GnyVWH_ L j MB X`PL%(@D=Alx:&]0jV`A"Џ @m*Cgy 0)A"x2y/ n J@dpwZUWlU1V:u LmS&Fd`>2Mj3s+]md"p~D I n"!>C~jb)Ҁ}cG*߭я0k\nV2Q`-H[yPDLZ,zYr0s2#Vk>umJ""ykMϊe2<HA?CXlA'8"x# `]gL%+X@V$H >E'H>܂0U` ٿrGԣQ;@ [ !]B&ꁢju?x@ $汷A[ޣ IqãrëBЇN%$R>F = }A&*]CI1^En< P`!9]dǬ)7{_˺@ZKQpyDB\=4k 1jbDu ɄKa-@;ߑ)b|`C;9A߃.1 #ۚ2\ѧO[)/>69" {F\ w~H|@Ph<IRP{T'EV== 0` 77@W5@M}kc_0pwV $ '3ydRgS H`(+H# 0 'G9`r 8*p`8@/gV  q$7\pXpr!@WC?r `S\=%aw6p$@aPԈ|Mpq٠` 0$zS(0nL 3&D &G &vcgMM&" \p O6p%WD`KRxV$(/ LP CRݳ C"1+@"rsx Y@Jw! iy ّp>P)A&@h(029E9HJLٔNPR9TYVyXZ\ٕ^`b }=Wf.Ӊ^T!9<.scYvyx ~d /Ȃ*{Xv"2ygC@SEmæ.#p4\1F])"" !`yz }#0q!"40C\cMc S,`_ $v0[U"0xňٞ`{Ep /%u:dT{p$WPS@pNI`j١MuP)y'P27v) q% 0w z5,"K" Ŝ HJ q,:R>3/gmP@ .0eـƄ vzxz}"*,Չ"bgY``S0fq`waH%  +Jl@l[Ve 6 -4}ڒᡊ0OA`dzJF@3mP /D?#ըpXme P# :,f0Yq$p"Aɕ a/dOf"`6-[KAR#!P0"W$  (77+ p-y:<x>p1r]/@\"%"Ziuh:p@:=`!qT =KӚ"#F#ud`V#HBmI$*{MGP[} a&p hTc =gP5(04<䥉[{q^HٶA$Z]ZA1aX@WgU;bes۽!$!e껾 Qq;`||2?@.Q16 \,|l IB>-<RE<SxـC; @PRnk0QŚљ,!3S m !i=|x%"N"H3SBr\ž$!O ')Zٜ3~Zr0oɜarf,':٩e<)癞ǺR\}0*B:L\*Cuq2@Vuz(T [;'W@g*/РjDZ>:'4R,98WXX䂰l1/]|)7F*hzlEV0Ӣ1a0(mA*}aL58E:j=pS2˵DJ-H'K 0y05$@љ Sd&Z:A173p#7tc790,>@>%TD't)ԩ ? {gp%|"%]29 $>DԆ^70Q"]@ V D ߤ:qAAE+zaLRFRǧq㈪eq$Rd.J;QtVPF1G P X 6׀4{Y#LۭTYK*LI&f+M?4 #hMK/'4l @Ji,4lt۬Қhw5<>HC{+&ZtT ˇEi!K:%>9 `vmz#-a릫@S }^ P5QMR  de:'5%!PYqXf4P2YRTPQ5UqUVSPrR!VY]J^tf*rP5mf Rf7Ws < װ p \f R3_WUWA2ORvE(`W'aO֊I +/_am誮jxr*+5\M#0Q#`V Pɔ/P *CEv/MU[YlFW:J|:@F9r-f,o#L5cT-<60,,&4_y"YK~@| ʯZ|m,[$K m^x^m.{l6$ G߼}5诟(o_|Dq{$)P<1R_t%Q y"=.L$6gSbwD!,1 LL2/wɓ1𛷢30rb`媔cй2EӇ x74omE'21|}gay}wOOХ}\mܹuo'^qɕ/gsѥO^uٵ+ՎG` FG!l}Xq߄mn_,甼8LJ ~}zG\wNدO bϟ d!, G 7Xa$h3?7 / /!1 sL7@ g}'}JBH4J0偊wGCM8sN:NO@|HAs(ǐ/ x@!L 8zaє{@௓@ "ا-:r$;YwGXD-z4ԁ(/#h*#[iʡZ}"˦*:2&2@mKF!! |C{L|gDx W&ϑi[I`meڸc*( ASVye[vecyfk+P ܧlb8y8ч oj C,@3F؁y֪y(3KPʂ + `} RE{R*ͮa:Gڶb's:zPZʌs *s{iŎVtyR'I|FE)[W\|Rot +R$"0wvP(C~~o.,uE" 9?8 p(1 Ѻ#n66p8H! 0 (EHt̃M$Iq}c,B|p |W/h*k9VT@\x oH<n|40KvB$]nҠāQB* g.xG?ad0682AA#<@$A@AOde+]JXR%Aw2xyR$f1yLd&Sdf3GėZI.yMlfSf7MpSP>Gzɲ Qdg;NxSg=ul%g?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens,ϥnu ;fb7 vtwǙTw^żeo{{*X bqHua5P >v H8G1E:Kͣuؼҝ*|Dxn9G+eqWxcɐԍeHc=Z# f ^b"IK )W.[J/,Xkhlx7 х@Pz<4eȀ9fR N$C˓N#gOE_^4X*=MˤXAHj6Z=ȥ >&#Cܲ:Cf7fdPsՉj$cb&>eIuqX{L rn9}u{AD O("WL: &@a Q@B DAH$6XȈ&xcPU2/DC^2nIHDm2Y4I DX%5mLHI@@(;0 ( @'LRGOқ:P<G^򓇥C`p4H:zDV(2t9by@ ȶK2#! Z /}yxHV>z 8883؁$@ ~ o>A$A O<ij@ |>?x?ɀyC} ?{I# ;b# }i 88x,iӠ '¿ЅDAdAAH ш0ĕFLD"`>R,o5r3xw p}pWHyCVTy, } hg̋、@3/ NᐹPrt$ X-CX6= 0 yEq y}`2Z}ƁP W,w8C, <) zܳ&hFaE EYFE\L7H##y HH~G }x.bd|e{PilʹH[l'ȯDCZ 6X , ϓ4EKf8(Ik@SAP;0K0CF2+ˈ|ј";m+ Y @`4yhd(Ȇ!8 PDxXF;3a4[C0ȇPZĊ &"㴍д K@y0͑p̐mq5Pcx0PP9Jq p:˴̤4 7C |@ȋi۸8{ȀsˍTh@Zy}P> QRiH2yȆq{k 0&8z脒HS;R,H" 9T#}%3K RBP}O P+Q KE|=RdRYF@DLӬʔ LQ%EՌywFQr-X5-|OӶ' VM  8Fd }= ~ R8`}Tۈ`978 PΑ%HEtu(3>J Y2\s]y %2B\R P)_yvD֒( @8CN\yRN[PSb؇ +aU0w2 OyEijq͖KږX  `5Ŋu9004}.>ҐNF=T+ ȆF"a %,1JY 1aXZ>(_ѥ`b7S =豯xdYiAFPvo <Д 1& (571 1>Iac>!ْ`"(nHUTQy^TՃxIV`ֲ9e'I@*U|Z?`" 2n(JnS",".Jt!& ظCk1n /҇9ǁ00* Qm=z:Z|Nmd2W$>otG_'% ?lc&I*H~tPk2WMُ3CgdJxhQu[O&|tiLXueڧYs;udOve_vfovgvhvivjvkvlvm- ȀVp2#Ou1wRDQovvx Q ȕ }ny Ȁ(5ǎ躼wå؏KrHxw> (`&y|hpX1ܨ @,@ @G&K:<8ՒP^&ӦKܒyF؄V0pyPywy ]nq ;{vx{Z[p<|@|{X }zx=@lN o-QA2K GySd y-0ۈdԟ)|IʇϊTQcwЅY);<CЇ埣9 &/2=50گ W}OiA9V&4T,R.P(m@> XfK p O} 4ԣϏ,(p#+ @?Qۉɧ@ԣ@,;_Ž/ N[?Ӓ؋/^v@h^p\J;d I Xʫm A"^˃;P8}oHt9h_6 .:R.hm>$Q>FI5V9 3]NL賵MQw,$?HmO?@WsER' Zo[h0H,d B3ь4 d|Ӟ@ҡ] `B`&&;J{!G!q(&H Cl8J{JC#6 @ 8^Ɂsa.tH: ~v6.]DyI"2CXφB$PZqaӘ)3R)}ЇEQĔ񀆮!IC/GK}t/8@jE0l qac21ߑJҜ=#7Clg=X~ؘA)Q$K:yp +cOZ/bO :mZ(L| RC:C"# R8l#C^!|X [B|C=!VWj VJ`s`UP8m ن4u-s}r  lSty% akAg'>ρ}XK xnt š㺃1s H w6"m%-A?4bǓ4 &&tб8"(t~dIȃ;> {q CzIZa R $^>dCE> }w"G6x@o1ZS(>~CiHy @ Xò j +!RF5oox(8V= zUNEiu F2i^,_C(ُ|$aa@\= |at,rK3 ʒk]#´@2m `,xG.m`+_n|(Az=w(C`!Yx ^%^cYbG<عȲ\/?~^X$@Kq)<|%Ka<VhY$"9@?(0c==8BC1GfBYC dC:_6=QD:hB7„<`4;91A>4`_>؁!D?8@8 ,R,ICR`>N] 81J(B T; P߱9_yCҼCȃu.DZuCm5 AVԽ@ZaXZ3}_B@ԟ ) >IԃEIElb 1Akjm@|sC_,i|@|*!j- VDCA4  u7N6FGDC oDD#_>@bjQA4c>j z LJ|&.D'p^C@$*z"a@,@n%2**Y^>"J$KK$yxDd̓!XT@ <NID.= LTX2Gt∍<E !`Ce==e17!DcIDľL"E ?L6TH!CH@WJ㢥CVd+)CT cg>, 2BE%e ;dfd9;`,͟ C =)DuPyRDSSsHA>>'g =,e=&xb-C vp)L))F@=\s|< dC@BQ=`e@0]+C-1!|_T)R$BtH CsG؂B@ aX8$|#] ,DmA@k࠽)P.؁ܢTZvD62jB*J Pk3 d TCALA*N!B0-胇m꠱I(DɃ;Z(-b+*{CB\!*I >"D<܀&UyEAC?T?Ǣ?[>P@d?:£ ;?h֫Hc*;jJLTr,O$؆>A87.h_3CXs&[D:-: > Wl?T;jBsl%V?ɫ^Lm,e@4W8:t$?x.Ʈή4[rl<_ò<_C>b_&bm^ S(>*6"gCU2#|E@C6$!Ad+T,/%}& &hfD?6m-Я<ĨA$BFɒDCúE1CDRbʚp[AD6Hnj" 7܀tV47 bĦ0B, #'ƔS#HP23m 4Cr"f?76;xDL |iP_#˜ EJ!\">b$e<1,u8{>g ܉H/w^ D*|.=E3aP5k=,ssXIO5܃!_>t|/:ovHDtOz]ݵd+wt!!P=vQ+A 'Bt 8kY=P0׈ ^FWiC fcpCDAm+ŒMHwV n}`\C9,79Ez'D7 \ȝCm[O8W85@30DCe!Jd[ C<hXKxql T93FY,%C s(*̕t8Ax!uB0\dG ^ Z'yѕ")+chTD77\HTC1|F;BjV@SaD6\䕑#9C@N"TYTF=x>ad\\(R+:=<,? 5p-@Y랍㸎Fx DS;lQփ2DmCd>@4и'ċҜہB?D/GJP+؁F-(DC$Xن>H 1Ak F8Q\JIG"!wNF1^S}.}0=p^tC?(8OgC[8׾J"@N؆*F54' APhkg]BDh@3KZ;qT+ ET@oPs '@]6B,Im5D|o>y c;#cwݓBy {'BIy1xaz d珃sHp`_?4`O9N eؒB zAsݛ!?>ISCĘNY+b>]~>\ *ZJ\ M]0a۴k#hو3R8׌5A !#6衟ɝa$)/%~,9#F1\G^X<.}<1@ Xd1H&Skh `vK%d4Ȼp ntA$Yl!\I&lj  {ܙɦAgz<>kp}Rl(C"3<D-#fj.yi!;DO NCȈ0!yLF .Q$yKjO9Ұ;ilVr)|$x@gG| )=FOB9{gk|n4L=d]f}hjlݖn=䁤jGoE!%eԡlJ|ݗߌwv>^~%-5Z€} 6 تoIz2y്mytęgnK>Y{袍>餕^馝~ͼ sGi񚰞zo B/>[`E;l垛ޛマ* 8N}6D#' 1>ȿymqN\=EM?U_]emuߝ}?_襟ꭿ7r-~a?}cѱeC!}?Lm'%_O~VrX msFFه]V%} G(JI9 mjy! 5hU)>0`pa0`;-9S4k ÞqVC k#9▀!Q7&U|h]>uG?ck @A"n< 2C<8y$<`oQҒ)I&XBrZVFy` Wp-  Ik#  N {e,gJGlG) R%T^%`1?G6Mlqd@?Fp36 !s= h./z->8iL%;ݸi *amtڬEy@<)D%QmAu]NsSo9թNG[$@(珙k)>Hz&EJ%U|ٲZ=iPJXI]Au!:13s{XV R>gOf=u#,MQT|bXǞQ0}TXDSg}8"DVG0#Q> R5EH|k&L%\ҁ :x)KF9ھnA X/9@Cd)kYCg QEfA+\".*Dy$CVTq2Dya6nv]4_ @2 Sz3E}2ǀB^ q-a`#pa,bH#AHH$<` Z.;Cn>;nxb0bU@f18=@42=GFx"b+"č?hⱑ)}<9`(C'j8 |]sqm="C's5HDg,!94.$|vh"1Z|Cצ j |c)XC8(щ>:١>ŬKgzӝ.ȧCR @TqہFwA`sdIeJ(XgI&ؾA-\?G 9 `hHApl8,R+jqoyNQm#xD`;DAߌ(`\bK; 50HxB:ҡIF}\25^# - cE" @W\-1q\kH.7Y d $(! .9A byV_ Q=zy &eDjOn/"V\¢R @@@ ׊ ^#iGx*tfP) Sdl!(#L`J0#B#.2p8! ZhP:@ 2p" #\i(4B ШA583ސJ/QNԮ"Q'F(` S@o6! 2~b|.&pl\p+PD4 ̎)"d8S ʉ,`72BALr%Y.17 2DGIʄ(؈ER(# V* Bh d բ )QVdID'_5pk"D  A ή 1]q3f#òzY Je+ !"  R"aVD¶O#!<㺒R-ג-ƙ"8/) B!$@#.rB!AhTo,#h#J0AZb "CbsI$ne31 ".2r!Hj/|. _2M4)17b.PCZors717j fQJx(8ӏ#5]"6omXB d pS) ; .TB!^0v:'J"O;3C2 b;0"#b< "f /9/,)Oe& ,pO=TcCMAR uR ò$)Yb?Hё΁G%L4# r6P faQ[(\q> CE "]а_i` `Z,- !2 L QM bkrf%%8TE&Mau"b+ 2: /Cr*^K69SaaU&#bg?3s+8Oc; A8h3D#(6#aUpe*끺V@l4h+6hpeߡWԦB ȶl%-! Zg%n.'  xf3 ld js \ eA>`+I,nZ4peD&``WG-T|\8( b{Ss\l@!,2E*C4)q U\8/!۶slV %lH`) )0 H=˺HT:0ρ "gF7_} v035X7SNy$OYye#hnY"`n%(Quj&|, ǥ[cy ڠ-,P]8Bq uBƐ1b6Y 9@ضS B ii}&!,ԲD}bКl?iJt GU4`, *0ZG7VHQE*%+oy M k π"` c;8an 0͝KK۴#ʲx&L?sFd@! NQ+#)/G& 2a'< ):W (baFB&fNܘ.@dICD%0HT *j"PdCrZ"䡅*PW Z"Af$ qNbB*4fbmԂ-\F7!$bt}L<: ?,C=ZeB!QZąHfkmiCC _|"R%Ȫd`|A$:vRO`$ bXfV##⠮m410lH2@_Z7(<,{JɉP@XSRV@?V#s&N?C=v^ݫ芲(%_(`0whO*^a0^Gt|ɘ8Qf&tXXabs^w- b:J#J6}ƪ6ELߙx^덷EfJYHZ_ f߿U%~>L41"+ursoeOKx, TL  Pn9qBT|K[GO;(_'R\_j_$o>U} -%I>"J̬2.6/FW_ ,@_ AʨlFn'N4)j:B9ۧüs,>|A^+}|ԫspyȓ7o޾~w޾E`ƍ?|NXP=6 "T"ԭ\z}@wXd͢Uvlٳ~-X`… 2%q1yCA#H$MTK2iVũOB5F6z1Ҧ/JZP/־w/}B'}:<l2p篶ԫ[=ܻ{>˛?>ۻ?ۿ?2XO=U AA#@wCc/XPUACW!`>&\dH68;ri!W O[#WFKJKL!T@AQNY;ȃ;[Ri%)V CC"4)!cHte$ <t·!nI D0Hㆀ>cCUFHbTd<$ϟQ;MO݊kk lKll.;]2DgZ@Aȓei(p]ܣ<@SP}( W 3^TkN>2yMAU Tm4@@LG&2sNX$<{ȵe0W;ZK.T2A{чnUA=;o݋׾Oa$@?4 >2wzw~ xNxn]*|@CЋ/K 7OttP}Z?{dC-;1C;>M2q@=lE\W_C9!?;J',??k;>RnoO6v> L^t\#ME?6Uvxz;o+&HLQI'xVp- 9ޡ !n$, Op,l _0H󎟤&rOpBĈ t\ _,HrX(t7*sl3 hJsl'p!.R 1_y&aL) :괕0j8ד{ >Ĩw$LRL$ mCQƠ|&`EH,mqUge (s,?])О9nx!m;e%\W ְud-H $!*DR9T> vfL<ȇ` lbO#i"׌(WnT;hwCh,hE cs}Gfaׂt 9 +lr>=Z;q65@G+\|m(CA!VIP < JgTYD ށ}dü.yj(">8pN$O0O88IG=,0~eXGe=9ʃE:W|JYr clL@?9DL8A6$awmƟsk֩cA($Yq \ " 1EJPh#yUZ+zִo\+Apz9U.rvD*0G~"cRLqKT$~Jk0@ d%QQK>N4 r?RK2ڞA؄E8Sewq𭾃moq;76dku+xcocQ2')A+~o+[<')c?Ћ~;e( X~o~ /+oKԯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmo+xx7Q0xq2>y{ч(k ⇀"/ {(!@>/Sgg{g\ኰV PnPQEaAE^h{H88~&0gr|2eщޑH׎ߡ\qH7frj[!6`IuщY8BmMs!@$914she !)f KQg)Iდ߁ɔ1"5ԱP4KW\yYݱjW\>u'1b08VT҉uӗfIwI}%`bO@2LpP0_2 (4? L92(m3"m /qx' QL6PeӚMe} L`jI0!0Df&INћc (#/\&В^qjNPE$?`i>0)X\eɚ#&ivӞ ב@CٝF嚰)*y:-G$/^4BTTǙYu: i)_r$PP @j2Tj`/FU! Vz)Y]*?xќO9)s6q)Ӛ ( /qbD/\  '% 0)_9%#|ţ6Pyvj WznW{6\P2$!LB g@hb3q#Q'+!1*ߐ0)!XG8KT0AWZ+S PqJ = [BՒv?봺QPP GP?CmC9:&0AՑ7:^zf;#+ sٳ<Dr9FN:ӪrS^\9~]F^4-n;/$w>DzDIe+V7O@ `ӱ bQJ嵡56A@ң$)^n44Կ:3# PF `[^ӎ3rK3ȝcKP? ā`<3q_ x4.4I9(5 xSK6!JJ!KKN+&~Y@p cCz3 %TEI;*-L$ p NJd y );N J!yQ}0 ~t%!w)ac"b <߱@ 2s(wFnN(~Lɓ+Oy`1y1IE[ %d ElL}biq!G:4RI'RK/4SM7SO?T{:Ilk"Ei('䑭GG 2`Q/"R! g `XJG}Hh)J]N!`wGt&}W% $S4H2fj}EiM}zP\I  ,$MO9ڵ״<طߔ`kՖO[)dNczwDࣼs*ϟ_"' dtqT!@nIc8da`J%@V!fN|^"8ȕ6i;eˁ?mXC r-KC^hlU nRWhul-N Ato%z1,6$}%uP?|'|G?}׏F5iZ9<9v 8@GGD ۓG=ഒC>Æq 8v~pZCy.!q0 G<ǽ„38ߑ Ã܇SRP:‴UE!<pHt8C\pTw}D`,xja*Zad QBY@?a y)A=1c "鄎` RT 8> C Xidp"1a?竖p Qn,L}q*%pzTb#ղ<΁KhG+AUlHdEpmgM|d H<_Q`J?B:P? x_-o9JBZŖ&\iBDpC!%]JzҔe>SV:['AGH ^<>a1$8%AЋ-CkZպVխok\Z{,Á`ف;;&K؇bX#0gR1]ؘ.v'PrX;|cto+$, ]`]q@CVz{[j9X!ꗍs @ C T iM(6XrA%n|V!<0!`[t\DVW#F6!BWduW"Ӧv5`z0 P74̣lm"bU fԠSj@ aI+g e w%r6#GC2p}C!K\xo}tBmfb\sZULYڔ!ԕ &;bAk1xM@/@.BG:]ރEJ<9袁(`!YF XeH,|BJ= uJg9 ΄~_jsvmnwwfqF!ѹnuw=ozozw+o.>pGxp|ws7yus?zЅ>tGGzҕt7Ozԥ>uWWzֵ^O[{>vgI|Oj k v[Hw|?x%st4" yw}U2$PYIHU(/>V؋}u$yL.D  4gB!Eeه |e~&]Wb~?&0,?D裷F 082рl"ZH8w'caj < ty h h t &-d~,|y  wx2At O8X+,B£'p:kxx)ɋ: JZVȃr`C@A9y=d(ЭyHIB|`|}P }`; ąp 83!0~@D~8MDQC<Æ8C8-`a$Ƥ;RĄ~X6dȐq%xs ޺0:hIs0 w }`  y0p! p1J/ry}`G X"w0}@wPHW5qb4ɓDɔTIC PѺQH"whRa @Rh0 9i *p\ ~ i ar!˩i 6ڇrq}㏴yI}X20D 8K+\ɾ˿,7O‡X `ٖXH>,rH`LS = +ìɆ`@IMX L$4N9!@}-:|HNLVO' %ҔkB ]pJxN~؍[TnXt,pO| e+Ӛ A4#5 +,R A!n@AihD,8X@S#`bЮS&MKd{Fp,qRBjіs-MNl;{!hV M"ZȦoz0y(ǸLl&n`͇]fp $b|#*s8ѧX~8DB b ܇l"g}(VX%q͡`դ/LG؀X.d7Q<0HƄ`.J{5: &_lAٜ! C-PS ثڬھگ۰۱eRE۴U۵e[ڶ۸۹ۖ8ۼ۽۾ۿ%5EUeuDžȕɥʵ%5EUeuׅؕ٥ڵ%5EUeu%5EUeu&"R,   E) `moק';aEsЀFґ*~8Phtt (Rax~ ⟐4Ԓ&ڴԇY`i/n3jSP : H.ya IG㭘t0.}80Q!6b n83Šq*(!}UN5OHY"v#X]VއWey]9۟*j˻Z]YB8POjtRL;к8wS̓рF LsVt^gwaxV0B! lCSde~UVh~phXkVP> C\|܏zHqL`Is詄"y~ v(X(K} h ^* :i6&t0yzo¼ZOy8{.Ѡ(@jՠjy.{ 0vZQr#iFF+؁pP{xCypnw{h!/\Gʦ&N7dZaaQYX섐ύzVaNffmn( {clM89 j hyn6\  |y؁o> }^{ sPѣ C0ҀN ߽ݎ}RUNxF?0 C3{Bo7p|nc& t0pU#Ydž W%>fjf%Fy v x'X-?8|&n޺l|j^vi l&?< ox=0 C+|P~C7lh KOop, ` m6XφCYu{+fm1)'Nn7ڡ&W"^8+t(TiwIɀl$o `ZA~Gy) g?`|t[yhxXTrz86CHxsj!(k;Ж~ןGЖt~ KȪ>_}W:' `IKJ)nN Z8d Ȁ xKɞĜ/"WّXZ' H&֌)a~ HsuO $ø^o"'n9&0:—9Ƨ '7GWgwׇؗ٧ڷ'7GWgw'7GWgwy|x'p "Lp!Æ9(q"Ŋ/b̨q#ǎ? )r$I2B<&)s&͚6o̩s'Ϟ> *t(ѢF")O< \J4+oRZ4Ն 'לe~ ;֨ #Q_6y:ͫw/߾~,x0†&W>| 4k<] h*dεڧdʖ1K9i}D;pPuIزڞ`}JҶ\gny|`߇mVMH1|;޿/~<&74}e{yV`$O=1P!䷟D]Ds1XRuA<aE"!H$n(!N( !aA?D أ?CY#?m0>uQMNv56E O"e}J6 &IsiP:c!'С6JПTe I*,YQ}>ZEܓ@ 46:u}NB EIJЭ͓B7$<,FUe봚 d-vaCT*ir YbKRRSI\pNp=D]cA?Ը:##te]+vY@U"3]3Ϲ B8,2J>؅;PIqASQل`R\>^ 0>Dڐ]`3LR; uLhLp]Dl4\o)ޢ#5 w΄7vo@xjA+_C0a;b*>~~t҅!]gՐ.3K.LOJ,(LL@gv>9cUTTݢJ_%DZu矇P/Пd-w#.#ID~<ЀLd+zh 7$6`ɂsA3~4Ed!ɖx@='0d2 1B"h% @z܃_>"0(J@ EDd0P:Y|}1|GLJU:5MmvhEPLJS4ylnf8)H48@K$#@t OƄL?6S l# LF,èD'IQp jИH..YcI΃h}Zք툂,a k"$JhE\` Ї W $!V# 1CDu>6@l vm?-V#;(`ɾtUz [pb(c Vh!&FB!Wjyy ]Uw 4@VƬ$l8(^:{&];(9Ȉ7$fD x? ~=C`]},EP6?R`% wC *Pn d)ͱ~➈ɖ.t"&<0N~۰$\ %A2 %ks(W9nތ<[qw t w*C=&>8:^q̪]1J0:Qu 29 DHȭ1>mf[>?JW|d D(l#co\ Oۖ=`ZC<$z $cAaT䃸c!ֽZpj=l ڧz] EAW6}A `@|CD)R]@ȃ999?CYB]OuY?Е@tغ,! Nj`>t]D  SM=t-A@8!l`2] ,nG1'70o< "y9,5 ,@xB68>4@ǽ2!C ~o !&BPb((b)&=>$AߝC?T?C-?pO>PexAbDD7LYB(FERݘ-4 @ڽT-z?%^?U^Bb =< Ah#_A!Ԝ9У=@"=IAC@?@6Hb99<n\׵4|?8@A@cc0xM]9Jz v}5dPD2H >.C$CM.D+B=T݃Fޢ&x Ĝ C)$1^aؕX6e-@%2A^̟)BfdJdRf!BA5 $ g18'>T IBRWTI9D aS0ڜ<.wq&IƱAC9 0ED;%@xS=STdX=́ Uΐ.=A@ ]Y- 9A OxP)}ܥYg?HˬJc! En6"Df !!㍞:{@;X}L( DXa§|N}2 ~2^R(U@?D! @XqeCv$ 68E De fC6L_>,B=DL@3\%D)C|W]H[rֹ`@=#dLʽC}˔ 'Ů5jD, 9|kRt DJD$J(*DtjH64ʿm]A+C^+i m}yBctB&8R_ kD뉉(C=JDúM@K|AD0E1+,>hNW:q$؅iDÐlBmmrmzD@JB+h(X<0A{{q>42T+AJ 83M*: @Wf>TDqx@ہ^A^E TQ^$2r Dȃf"p٢ݍ@@-<{>Ḋ *@+h[CۦI*oyr>wɚL@DX@p- @S|nnN4~>-:Lc}ŇC@ d!/#'J0~.P/D@?ځ/m΃o02LR8}-8L?p@f-B؇g0UJ?XiN:0*Ʉm D?dBqA4VD_pm%[%cr&O \tX@@9CbjC%4>d5˚GS d `e5F ܒ9@I%?k`)V)HځV@̓= A,q>=[r/[@<, AnnVA.`ɤ1<&CF)7`g8}4pNP3>[dlZ@h@ 73@|.#ߌ41Ek!-TSDE#NK]4I<lE*DAtY/0<<ӥM{7,5*+8AE(k7s!DdUAS8mqȲ&lvmmQ,nnT4wh<RnY1o+r3ws;s(@3ȃ2@wLH7u[XvH<vAPuwzzw{t=dlF]7}Epx 8CHЯvX' ź̔h3[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {IDW܋D:iCU l*[c>+GT8FM1*>sEbac<rLDttT-^@:@{*tRrn &|?c4А̣[#z{x*Ɠ<Ռ@A@7@Cj{D@ =r X< ;QKC/ TCc;ڙ NlʷC$JE\vtU@=hTҥ,- L dLUf} L@ %;FhT BLUdQ@Z۳ #<[KCI$HWeM>8LDL dPbw QMpȨ Cj8A/@:TS?' C\)*dt۷(&,9ܰ6@K'ǻw2 `Cs8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹgO?N'CS,B޽E!{Paطo@Uy_|ՓsPU3ιVEj=paÇ'AT|ChǙCg[5tp=X@`>SSQ-o mmX""耛YϡG>zuױg׾{wuϟN7;!xlw =A_J` a&0(5}L0(z,HƢt0# A8!1"KeyCI" @l(}hhsh' G*2E+$ Z@ bN{>R-/ S1,1`-G37ɦև^/Ryp{  8dG3> N1H87#S|؇~ pP hVCHx ٳ$r8X]X&xtD5 pHpQDLOD6TtH)P\DN`SxYYD9Αu(LQt@>APDP74*iIJC8(pu#`Vayy_@<1u)C @+H>ͪ[4{B<x$B@@0`Mʮp?230C裏,R$4yD1Q>DTt;1YР*0&hHpc\ d|oRH KA` 4@7ޡ~P|,EiH,58HbW:K6 8P*0dtODVe5YњV1hTC {j]W} [T;@X.uc!{!e1YnjkgAZю5iQZծuka[Ζmq[o\%g\b{EgBn,B-np$-&{Jd$"0$dS5c58%&g>8mZP$J m$!,76gu7EBJ(oF GkJڪ1" ,>?.hA27nnS n&m4*@>.pD-J2+RnT{(NVvg!7r#k\pXh281 `sJ@X3;93"40_4e[A."b,BJ73!b6b$:G+$aGBRFRR7*cv%}#jn# bHSZ1D2 XE{?O!,e,o$<.GDD ppc~/p4P"0dzq[LRatԂ&b#o!1v"v2MM1DWl-Fl =FXF$v5Zp"'A8"QP("xGOLNf " ~`8!@"D"`-*z-j-"ZMgHXWQB!t{-&cxQlI4avh {)h,"i}Fi۬=? l"Lhlb|X#&oFk4RZ@, 2KHHR6:\[E=j׭HGZV"/ɝ|B|ʩODʵ|˹˽<|ɼ<|ټ<|荒1SCu\'뺘}c:?KʧCV}) u'9R.lu&,EbXIZ_t a=']I]qa{"b+֑LpWI# V^eٝ}!{fx&&#v")Eauݻ]xV0b=]Y_؎M',Ejqk^x)!,}=ۿ6lu%mdm%7 E7pH6--~VSmlb#nan=.'! H.,Uo=+mp p-BB'Έq ><ÿVخv4uyW<x-)L]Aw&oiWa8@BfwwW.x;^yw/9z_{ݺ{w|#%[72^!K2;1'oT8թӋoo,*لAB&"2% JX}K[x,h؆-tE/<̻XaMapNtQ`)*ZW 5"W!礌PE8wV  } *,oÇ#JHŋ3jȱǏ -bA}"7bEtI͛8sɳϟ@ JѣH*]ʴӧPJ þ#p_=I8ϫžRBd,va{NW* ;y,oVy }-H Ux^i_̀7/l|mZ_ Nȓ+_μ{bW޹̥꫗"} aCG? u(^^YꚽaH'?( J(v S:  m FafE'FdGC;##>c G<@)DiHj>{e%lY:?(>(ӏ^! 4ђ4+R 'ey}#<*>#CWfڕ$)ߊ ԓD(?駠*ꨤjꩨ ti]CaUP:CxuAAD 7 @=V*_Z )ЁQp!z4<TL6p ><@?lXpIȓ #G,WlgU}]7e3f̣CP%>c, D@y1Y ZP#S,C!!g9z

O:] >.i5INj O,{㏬7G.S=뤴y=p\Z(gOacH68AY~ y}[WU \O l-"kX8 A#e{D_'od .5Js Hb!:'H N07z GHBC~%L W0 gH8̡w@ H"HL&:PH*ZX̢.^ oC aL6r$>21ĎGsQ'Ї;\dFDlF:IAG<8C;'# K?8A܈)ҁ`uL,~H(KFq" ",JHL& epԨd6Z;]Niܥ<"p# 5iycD@+z We2rjD3\ ) @! UDvl2{0mU1'͐ #eR664ψ'h5Ж0]*ƅ֤3* t­lyR#WGӚJS! XͪVM5FH ­ihI PцbH!!ְp AN4! HGfp,xpbeE DA^y >e!Xff {!#N]]F TѰ 9:gRLo[#җ~lLqM.ZI ltzp$ !e@sS[HA-^ROф!vJ$nH1Ԉ4t^Q%6"12#5b²r8hEkj.%RTP# AQ a0Pr}7rEj >F o P HV"nhR23WFr" PbP+c^{sD&%^L1x )7%XN@ؘEHS2 0#!ϧMUʐ6 uA'a  taP ^0 aak`aW."UI&B-AfE#%pv.#vV/ʢru'BU_ W0.)۸Lٔ8h{NP<0~P)nHqh2,2oK(q&++3fT53"3Z Ce %_S9cyy;V32ĐrK6'wc,M@o^շ;>9G#2$c2C"c\Tc5`Ѓ9 c Tw k6o3?cA7&Bvhi 7ȓ="#0 Nٝ7ԍא߷ %p7F`OVs C;0:f‚;Y+{ i3L1Kg! ,P"`V$U2 ͅ`+ =>Lk Bբ 5 qc 5idZfzh!prJ/8Iav|ڧ~::}Ѣڨ:Zzک:JBf$:xGJ3rPWp pwdBK1Lڬ~Gvb9MdiO*x sQ*p;֮:Mi|!]Prh#Vؐ`^# ^d= ]]k^s~^50R0W%`bq"ED~敁v`dg'gVyWTaK \۵0 _o"ZTp8'?`Z%1p00^gp =–!qP{FP  Cp' r {.x z;Z"xPyA*+/Fy`!))n |tzQт E("1T26uRJ(lh##Vi1!a"Y "jg{#9b;K5yP) ˀVǻ7%]Bi|x((76U))Ո[,C$@q Px 6NHHќE ,oi3+C0b C@\B N\7i&+ 1S82B 56sS7A7SCr<! :Pqh#60`NnJԽ'%\j^ 2GInkʴ?C??t\ʦC +̦ ʮB4 P0JAh˺)(qz:lB <|42Œ<\|؜ڼ< S P=i ]F=4 S 1'44OkmKDSqq<52]<Au[ E[<#c}~MzP>̇M(Bq])= i!4̲GG ;"{Tދ ذe CT5Ů'ڪ#AAZ  p|^i A PUƞ͆A0` zŲ=~O2%U;VHY& { $J[(YYŗmWxU.%.Ӥ [f)TRoRa4aIpc.2olҤ&foi 1;n$ ϶a 01]->N QPJp%D1'+a@孇|~N# ޠ_~OTxOPQWTv>nQ-rgsu(`0Qi}'[Zp8s!p(t$Ô: ˑEY*O@ h"`Ӕ?%_l^vr/gt}Q.i½aGkdJ(!h0Wna݄#[vߕ!K;@ #"pfkFB.|p 1P6>2Q $XA .dC%NXE5nG!E$YI)UdK1eΤ2< e#PP>ӠP޽ πA  {"mbԞPRZ@pOK< e[Ztɕ']\]췯 'Lo) &#D\g `ؾs0ć-ko'^qɕ/g9o8]~'0~.`} 4ݾsOU_` yI w<Zja(b炁@'db* -駴~"K1! MsC Ω9 @d'(䉀 GЩ$Yr ($rK.K0sL24L]HT(}i}I <'|Zs Z!``y(* B"S!;9QF z ǂ79ȳl Q|YM‡ {,y }$[ Jn!tՇBG:k{"CmlC@}" ]3A-sm)t fF4qP dy1wva#xb+bCK\9󇏡1XVIM&{=q 2yK2h.fx`C(pս#sF8Qs!,P3ȋ>j|gk^t ~d?A e$I*Nr5RԢ2ڈMB#H`zd9 B`=beH: m@!=Xp~emk]8fC?$=0-X(р hp,X G?hQs;@XKfagR֩,X!!8 Z)o}{_.O?ZK>g`- |28ƍrO80!񀸘GAњ0e  ( !Rtc/qm|cXtG= ' ĐY{Y6ldc^ ;dQ_g?ks#r|(؇!чϩǠY"Yss/-9@? (l r?Ą}ā Pu xզAOB "BqM2fgآPum}5GUD?u"bzP)An0tυa>(t ZHeq0b3.5IQ}кfwg^C &1c{U;(HUg eg>4߂ǯ2D3A,%FtC}C'yMLZz-Zx#B:5X͔ gX>VQV>sk|.PL*ZeRLaNE َՙʴor 2}ڇzqrFBԧo]s"σP(Da0j"9ߡˀ&93mVl(R A 2íqB9m}m{/Dw#C恰l@'~|cO{܋0G_ӧw?| ~}=~_g~__ ?@,@ t @Ȇ?`@ @K}` 6 c@|jc~t((D G,@ n8@ 03S%ԇsB,׳0&/l ܑ[ #Ŀ^ >,C<4IBrAP{0C`&CKֻ (X0{?|@h㢀(x;9Ā~ɆD\w@'])ز{i9*PQRSTTł"o@*X!Θ*|ƸSyh'LlGwt7  0PıR% ya I82){x(85>K"Fmj\5ƪ~HZ*x8lȏB΢2ђ;wItAI\aF)wcX ؐ ~X&dPGH xEkpݸzL9VlA9_LD!7T͈ hlzw`/:9XGnI|‣ZKwhH|0Ay`tZ&k(X v| k;R~My2\d}L\ 2;9뀴1`HȼN쬯P+tX4P='1 S lH=;DX*oȆRG9܌{"KChuL" sN PJр{h|Т3ˊ čwpyhB+BA4sDyM0],9]$P{(N'C((p8q P0 ẃؼ \hD0g[}x. PiZA؉Y/\#ؑԻϒ cS`{xSe.H=SMM"Ɇ>(]]01Eaз!́It"} TX:h*(!"TUUEV'Ӈ7#"H8 '8s786N-Ws$ͫ){d|Ҙ tЇ&$~9Mn8 јc?pU؇lP }8spjE8hnW{WE}{X\ؾ#[(8as ZuȕI0CȚ`wX8;t<#@7"S]؄8t༆ǹ ˢFi u'?@{V93 @t7XPLZ\ 7\[{2A]-]u-=]]]ֵ*i]؍]ٝ]ڭ]۽]]]]] ^^,^M^U1:8^^ȇY#USH¼^D?XIKlFFa@ y(`v `ˇ8\P,h䖹d)ӇFƑE!"#N%>Zǡڮݩ &]œVڂ>hk`.MH5eb4FȈw20*H96s_ndGʀWǐLs88lߜLcOUȚ* ~7Y+"b 3@8w"D0;`6<(Il`]ȍQy`gc'804 Kh&k=1'EmEgD(O0|~xa9 #}萅&lAf@'Ϻ^m֖; h\gO͈g.Ϧ>8C{n&ZMFx)~R>΄H,a[.qd%<˨B.f叵(:>X1w@BS}&xzX8a#PP S0[%C$9 +C"?8< ,9{87cdSs87q9# ڛxWd O-+gs#}dWA,\t1@yn8D9X[%XAX*'SAO4I͒ QX[iXi"y;`9oF]}[yh8lȚ T$)! AO0]ڦ}Z9o&@fXw# }@!yR͐idt<ذxѩÙ[c/`sgyBOy?T8_y"豅8 ;yy ?zOz_zozzzzzKy zD?d ףc *#Bb͢CRBA򔽲^- |׈|D!2ʣH${V VрH,0"|P8HPΑG &k @ԇ2cЀ4sHoEK ]ݒ?o (L~XFR t ]Xg者}3v: ɓ/ Egˆ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:wY1<۷O޾tɫw,ਝQy ZŪkӪLSg<; vD;XJGq(oByVM?}LZ 6nԣEbwnDPO^y߾y M!t㦋pCB;h`;7? 8 x =Mx0O=)#MP>!8w7;D$>0}%*=N ^ͳ D 죏) AΝ#셙*Ȼ3D4B=J4<4M;4QK=5UȠ,/8?p1)D9[Qg] $>yτD|A> k=.SQDg QIQhwts+} 4ԣO6P @D> cAtM.:馣 ń3MuΜP+bG =ho3RLh<K<~z|:3p6r$~_B|?)7@4@sP`x|H>0TIhEApG8p[)<83! ֝K;qD4'$K!U| )` p4я%$-1D% jv#=~cLaw X;;" K(=l~; Џ DHy<24d%qIC<0IqMGa!IH_H:"Po"tH|m#ypg؁J@e_pf;IiV  Q{%ЇaU(3Й= 5:L$& >m#T:iMlFġ튨<& CxhOq"&DҖr2}`#aK}:ӄMH@s(jhA1~#u8q(hj YjO0"Awāg8DANiRs!k 6y(KxBR+# Uq @AVS@=-jSղ%6'bq"8 <t(5SUUc)";<SDzaM HUPAs^ZUՅ<5ZwF5[!(DXxn1#bQH0?D *zKͅCH;& y{ݖbd]Qy Ƀ/$jn|)(xXUPwMs* )4]ȯ0i$BhqD q&OdqEǕ-ҐH &J0<՘p53soyX:'.DK{R|, y0^#W=]CMB?+32[@MG/}P-@@@aG90'MŅQZS.ty+)Z[MWHD7P?WD_fCfmYQG` E8`h@`Fp(BlvN,ʼnuAźC&xB))'dCFD8W5FDDZKh\C"_-A^d>P}u C<)Dĵm=\I  vd ĉN.B.!Ẽ2` TG¼-6.c3&7Jġd=݉9>@,BV`T:?CL>P >xBD? 4FC02b^B>fbF>RB9h<,B6X@E8< Q܃59LcZ /XO$PP¡͝E ǁEE\4>R>(C?E8X\t@?|Da^YѠǹQbUU<E[Řt Tޛ4. 0`ԃ$&B0L6pD]B$|?=RfC'$&`&?l C]5D6̟p%gjLAdE hԃfl 9%KEHeWAL}0Q 1ݏ`&7XK-&"iD>(EZ FUBqA 圀E^B\%(0SL*ZC7Ӄj͈ :#hd@6ńs78 05B%TH }DI^bD8FF@8YnŗQT!D'8(Q@}ۥ#DCABi #1nq>d8XR__eNHmQPeՈDžR LvÝ5*jB 8%( R`B8 ;C} ):=Bu'$ xd<'Ui?aD4Q H=T`H|STݛ*MJ]> $)LS%+kN-$<<YBX>,;@> ԃ!=VC`CH#RjC|:G2Ac\Ta@,݃%{ԃC?̅u[)%,m0CdCE=X@+=d%)t R<,BD@=DVc`q<4m<mߣfiKlNub{Qy[i[lӾ]Ŧȃ"> V`NDAK߾-R~^F.jL>@6;p=dVFhU1Qv:*(F:@50l+zRX@\@N &@q\uRY *iQt*0FD:F0@x>D >T:3;1Jl; R( VI+o X*='B/4C77C)j1pC(P.L N|C4KKt~ 4LP\17 ea(4PP5QtD+I TWU_5VgVo5WwW5XX5YY5ZZ5[[5\ǵ\5]׵]5^^k^qɖUcD` N 6JDlŀ$q` %c(d[adfo6gooŮ*;lJ0Guq̂sf`tlwm6nNoLqìVhWCn[c@ hWDrr{EJ?LH\>0A%nh8ZpVG>@ hx(;Q` f@S6C]Prw1xQ:ZI @2>`\Bu'D,qAF#E?;A:綏8!PfS8THwlU0YWXtēgVQ<ڄ\Ѕ]CGboWb,FcB!f0LD0R|#tŋ/=ҧ U F>̐TճD H\ \h\94K){ ;L@$g~$>t6p-EDit&DaFdNM~ƢLȝhՃ(P.݀0+e8wk‹Ɏ>kD,»wO ';((ͣ24y}!Pu )ϟɛZL/tnE}c~M< @?}Kh~ I$C tO{*B(0$ၾk$Ec t;%bA$O@/fD'# G0vl>XAE F1E'=9F<;zf'oBþdjds(!Tof <\|% - 5ܐ=#Lǐ4K'XM% :9yVȤcAG1 x@2 Oj4{D;L<ǟdQVzRj{zQ Ġ}PBz(#;x`A@~@aTh"~ܳOy4 N9G/C-8@ZiEC2"|чyΙwJ8\3 QEu \NşP@![ U(k '/Ȳ93'J7ys{`U^{5 =#Hv=A^h IȆ<CPٸ 0""BzX gT:m$3I ` x%; $8m\0`jmT"HG>$)YIK#Ɋ`z @ [x]"(@?8" c6V}8HNIdjve(ULP`L@0ճ$ГuaNۇ( 0ѳw. >ܙnFeyGIyZ 9tTH0}1XCg-P}G<}$,[#|$@#""@0\T˹c9i$Q=eGw@IДUc8  abHwMǐJ઀(RUA U@ -D@{tATO?C8.Y~hI[ZӞVf| YՀRч@ސGd DUa\.Z+ ;tuhF6Q&|TNՒzEwLcj| { t8cov~Bԅp|X!^oKQ(̡ye! N܃%AhDlt1>Řm& :FyIg 9q<{s l 錅M}{/){&CRtX0ޡDi!P!gh!6V ^ҿ#7 Gfu7) С9.Ir> x$G0[}< csSZb6eN~\:mfUW>~L؞ (cppؘ"[J\3ΌG=Pj͸% u.+jWxCKo p=1nMbC5I  ^wh-.6E[@,zNi":< |߶- ;8pfcS@c3n@!rb Q~x0F*?Cvb Mb &()*R**/ƥ%lA~v`ZO!ZHю2fȃ~cX0NW!-A*"8A R21EB"4,ல0Hj#q0a+%0! "aܡ0Dx("<`HF*d/<N1d/;301cE5e:3$%Y.)0`J$L"r,$&@pqp MMNTNDZbASea] bjLH9 . Z:TpF !PN{.&_Wv /-$$4" 'f%(`$?$0QRetR2(@hK14-0 >,cpR13Z7Bxf(5K21hX@ya\-@,ip\ĥ#.[O@C`d86 <`\ExNd37d( @`A]:^l>Ukr b;+|m@zCҩ.$צ}ڎ^zAb:Wl:S5#bTHqhx"?\MPƓ a["TkX1-F[[? aL!dvMu!U_"vhHfV!" D%l#-{"_*T/ * o#74DÎ^!>~9쟌Ʉ #/  xN6|8pb0PW=K7^:s0_=.ME`z3sL S'O@)j\i4;O@]QD@ngU`s D/tx̗R 8 >8Ō;~ 9ɔ+[9͜+c0} s+p>wS Hri*Px`P _&8{PNTpf])rډw={KE ^Iװs>0 z;>'<֏?Ip '? DWhSO%3B@($IE I3Ј TB6M(tgg? qOLq_qoqcMNA_Qp E!' Z4 !* 2 &*36MIS_Nݏ>0ȓ;O&Vђ%_0AȀ@3 PВi>&d/+OH iJډ A3Q5ߜs_NVrD.,@X(i< P{>`Љs8Al U>,~ZL8P@t$r}Ll@?_$hB<9񮹬 ΓzHwzo|dyP3TsKؗ&a>r4*ʙ^'$CZr[P%"`HᬁT =M}yU(܇wf5K\7Hw|*t@%/|-<'-JDeR nB;6d? b9ԡ$jFV9(STȎPuXtX> U }֐_q ӝ#6D?IyLt a [Ud(i_d$`AVH/dGz"  (@Avmov|S\`D  5VJ:+o#1Yr[ɝAL:BfB@.C@}W|> ? v}3&cF2cAc@^;@@mD Si(=+kBÉ{s\/ gA;5$@4S0Y<=LF׏tyR2ʭʲy637c;}ܕ%<,}tzJ ҂p"!ɦ/,uC]!A,:WD<&4r]˹ 6~q#d$L6MÿDgt"]J%%t8].E$8=lbt_@?5@5歱d+{n-5#g2∝:Q!r~44TcMVȣEePGd]+рrkS> HOcvm?,iBG=^˞?.~q:=~jr:8៞B'bJw[#x35Cj'TӾbG8]ey M 8Qy82؇Ԙ Җ +#b;W +Tf=?if]9#5ƥau Q7G E?-ƷŦ㻔Wx]*_`u!MV۽@Zq\.+̯RN^ gu6][~ j A<"/Z@6h-yy)%T )E|} ِKIlRRy AmRz VA6Zr=Z6/5#}p$=B''UqzVMz}ȁ%IAI0b`8s21R R' NE(p&!1~#f_$73*,Ai{:"Eo(~'(~8(`PZ4G`f%pOHW pbhAZHuSSﱄh҈'`<ͧȋ苿bkVwv[E{`8w;4(AS~n60$ 7V6hX 8s/7Ȍ1>@4Q pou p DM&E%"On!|p*n+1r4OX10xR`@R`k''h[\%!Ց2w'AF '|:ɍ"sb9&``Mє''g'u 1f@k=!`(8&P7h >3O 8Osx1L(zi@( yvF{ L x`k^8^G3PW#[xis4 Жwau,%!kEM 0xɞ 1fkKV&c7>yQQqejP:k!Xr `a Mk&5q"k?hC&;;A 0x L (e;=R0 7#aX4G@P`#q9auIiQID$ݐcK:GJap2;Zq x0: c` 1@wgCq K`,uTJ(fSAO >$*:Ez|gQ1(Uc`L4 - 0`*2q|&d1@{ :$…hԭ~q:g0+ `xW%E7P5h K3T-p Q'@ ʩΊ%RK(H&eZ g66E:'@S[wy/*@rVCp? A+Ck[f[A;'N!Uoscu#y1t6;UV QA`'r`>@/SUo$&u+1%TR/|` Y9rK`<[J-@'yk}aF0"P`NYbq%19('e߀@@K[8Bߐia0װE)pP0%ru.rye 0TҼ@qI7Q2FpAȐp Wna p`R!߻70fv#0Z+` V8P2'굴h"Q Tbl[6u0p |0*\b{0mHV#U|Z>Ăۍ,V[` "6`+*?bcC!*Ƥx@;r|N#C'=%CKLɕlɗɍ1fLÙ@mp(T *Գaf$,faUs5˿ ,LP#o6Ỷq:@kr3 `~G .JpK~1f'V4ͭd |,\ʜ93\Ϛ)Dm ]S |tqq":e }F !-#M%m')+-/3M5m79;2? A-CMEmCGKMO Q0I-UmWY[ T_ a-cMe͞^mikmoM1h sMumwj-y} ؁{-؅m؇؉H؍؏ ّ-ټEؓmٟٗٙٛ ڡ-ڣ؞Mڧکګզگ ۱-۳ҮM۷۹ۻ=̶ۿ -|MǍɭ˽G - M׍٭m --mސM MmO-.Nn .Nn!.#N%n')+-/1.3N5n79;=?A.CNEnGIKMOQ.SNUnWY[]_a.cNengikmoq.sNunwy{}.Nn臎艮.Nn闎陮.Nn꧎ꩮ.Nn뷎빮.Nnǎɮ.Nn׎ٮ.Nn.Nn/Oo /Oo!/#O%o')+-/1/3O5o79;=?A/COEoGIKMOQ/SOUoWY[]_a/cOeogikmoq/sOuowy{}/Oo/Oo/Oo/Oo/OoǏɯ/Oo׏ٯ/Oo/OoN@ DPB >QD-^ĘQF=~RH%MDRJ-]SL5męSN=}TPEETRM>UTU^ŚUV]~VXe͞EVZmݾW\uśW^}X`… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥMFZj֭][lڵmƝ[n޽}\pōG\r͝?]tխ_Ǟ]vݽ^x͟G^zݿ_|ǟ_~0@$@D0AdA0B 'B /0C 7C?1DG$DOD1EWdE_1FgFo1GwG2H!$H#D2I%dI'2J)J+2K-K/3L1$L3D3M5dM7߄3N9礳N;3O=O?4PA%PCE4QEeQG4RI'RK/4SM7SO?5TQG%TSOE5UUWeUW_5VYgV[o5W]wW_6Xa%XcE6YeeYg6ZiZk6[m[o7\q%Ӏ! ,f664^^\jjl&&$nnlVVT ..,224ZZ\JJL**,::<BBDzz|""$bbd>>@|$00<08  ¾b\` ^d`̜Ȧtv`xp@t~nfHLF@tntĒx\~xltt䘠|vpfp<<4 `ԺPXX̞xbhd\tH@hH:HlvVl80L86(Nfbxtttl0 0.l0.0(:0FJ@xnf`0@XPX ʔ||4<<~zfhtfİ*$L@:$<`p||rvx `4ԴvvtFFDFF N>ԳEF)TV Y#@=#(ͣ % O Ih&QlIGqvdP>p(`堄jj_wL@@A# FA22dC,iIt:*B6Īz&sFA?f 2+[T>3;@ :6&H|FAHn[Sd鲏% -ښACQ?``,p<ΑhBx@:K~pa@O=xPHZi ϲ,@ @t>H,:3,2a7X6@r>>C(́ C@)=sںM< @BC;F#]MhE@Iу2.PΈ,4:/v [!xrN(3v9p9;@#\ 77Tsl{::'-  =#=o #Q |%e#~LJF#x"G$ XP |C77 +1AzP  {$uhG2өD (C YS z 2dCP!IHHA? dSrA!Ƀ=,`U%@a}s!wp؁'XFđ$2K@'J `GnyVWH_ L j MB X`PL%(@D=Alx:&]0jV`A"Џ @m*Cgy 0)A"x2y/ n J@dpwZUWlU1V:u LmS&Fd`>2Mj3s+]md"p~D I n"!>C~jb)Ҁ}cG*߭я0k\nV2Q`-H[yPDLZ,zYr0s2#Vk>umJ""ykMϊe2<HA?CXlA'8"x# `]gL%+X@t-H >E'H>܂0U`ٿrGԣQ;@ [ !]B&ꁢju?x@ $汷A[ޣ IqãrëBЇN%$R>F =|A&*]CI1^En< P`!9]dǬ)7{_˺@ZKQpyDB\=4k 1jbDu Ka-@;ߑ)b|BaC;9A߃.1 "ۚ2\ѧO[)/>69" *D\ w~H|@Ph<IRP{T'EV== 0 ` 77@W5@M}kc_0pwV $ '3ydRgS H`(+H# 0['G9`r 8*p`8@/gV q$7\pXpr!G@WC?r `S\=%aw6p$@aPԈ|Mpq٠` 0$z(G0nL 3&D &G &cgMM&" \p O6p%WD`KRxV$(/ LP CRݳ C#1+@"rsx Y@Jw! iy ّp>P)A&@h(029E9HJLٔNPR9TYVyXZ\ٕ^`b }=Wf.Ӊ^T!9<.scYvyx ~d /Ȃ*{Xv"2ygC@SEmæ.3p4\1F])"" !`yz }"0q!"4 C\cMc S,`_ $0[U#0xňٞ`{Ep /%u: dT{p$WPS@pNI`j١Mu[P)y'P27v) q% 0w z5,"K" Ŝ HJ q,:R>3/gmCP@ .0eـƄ` vzxz}"*,Չ"gY``S0fq`waH%  +Jl@l[Ve 6 -4}ڒᡊ0OA`dzJF@3mP /D?#ըpXme P" :,f0Yq$p"Aɕ a/dOf#`6-[KAR#!P0"W$  (77+ p-y:<x>p1r]/@\"%"Ziuh:p@:=`!qT =KӚ##F#ud`V#HBmI$*{MGP[} a&p hTc =P5(04<䥉[{q^HٶA$Z]ZA1aX@WgU;bes۽!$!e껾 Qq;`||2?@.Q16 \,|l IB>-<RE<SxـC; @PRnk0QŚљ,!3S m !i=|x%"N"H3SBr[\ž$!O ')Zٜ3~Zr0oɜarf,':٩e<)癞ǺR\}0*B:L\*Cuq2@Vuz(T [;'W@g*/РjDZ>*'4R,98WXX䂰l1/]|)7F*hzlEV0Ӣ1a0(mA*}aL58E:j=pS2˵DJ-H'K 0o05$@6 Sd&Z:A173p#7tc7906,>@>%TD't)ԩ ? {gp% |"%]29 $>DԆ^'0Q"]@ V D ߤ:qAAE+zaLRFRǧq㈪eq$Rd.J;QtVPF1G P X 6׀4{Y#LۭTYK*LI&f+M?4 #hMK/'4l @Ji,4lt۬Қhw5<>HC{+&ZtTˇEi!K:%>9 `vmz#-a릫@S }^ P5QMR  de:'5%!YqXf4P2YRTPQ5UqUVSPrR!VY]J^tf*rP5mf R7Ws < װ Gp \f R3_WUWA2ORvE(`W'aO֊I +/_am誮jxr*+5\M"0Q"`V Pɔ/P *CEv/MU[YlFW:J|:@F9r-f,o#L5cT-<60,,64_y"YK~@| ʯZ|m,[$K m^x^m.{l6$7 G߼}5诟(o_|Dq{$)P<1R_t%Q y"=.L$6gSbwD!,1 LL2/wɓ1𛷢30rb`媔cй2GӇ x/>omE'21|}gay}wOOڐХ}\mܹuo'^qɕ/gsѥO^uٵ+G` FG!l}Xq߄mn_,甼LJ ~}zG\wNدO bϟ d!, G 7FYa$h3?7 /7 /y!1 sL7@ g}'}JBH4J0偊wGCM8sN:NO@|HAs(ǐ/ x@!L 8zaє{@௓@ "ا-:r$;YwGXD-z4ԁ(/ i*#[iʡZ}"˦*>2&2@tmKF!! |C{L|gFx W&ϑi[I`meڸc*( ASVye[vecyfk+P ܧ2b8y8ч o"C,@3D؁y֪y(3KPʂ + `} RE{R*ͮa:Gڶb's:zP:ʌs *s{ق-tyR'I|FE)[W\|Rot +R$"0wvP(C~~o.u#C" 9?8 p(3 Ѻ#n66p8H0" 0 (EHt̃M$Iq}c,B|p |W/h*k9VT@\x oH<n|40KB$]nҠāQB* g.xG?ad0682AA#<@$A@AOde+]JXR%Aw2xyR$f1yLd&Sdf3GėZI.yMlfSf7MpSP>Gzɲ Qdg;NxSg=ul%g?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens,ϥnu ;fb7 vtwǙTw^żeo{{*X bqHua5P >v H8G1E:Kͣuؼҝ*|Dxn9eqW xcɐԍeHc=Z# f ^b"IK )W.[J/,Xkhlx7 х@Pz<4eȀ 9fR N$CL˓N#gOE_^4X*=MˤXAHj6Z=ȥ >&#Cܲ:Cf7fdPsՉj$cb&>eIuqX{L rn9}u{AD O("WL: &@a Q@B DAH$6XȈ&xcPUl/DC^2nIHDm2Y4I dX%5mLHI@@(;0$( @'LRGOқ:P<G^򓇥C`p4H:zF-(2t9byA$A O<ij@ |>?x?ɀyC} ?{I# ;b# } 88x,iӠ '¿ЅDAdAAaH ш0ĕFLD"`>R,o5r3xw p}pWсHyCVTy, } hg̋、@3/ NᐹPrt$ 8-CX6= 0 yEq y}`2Z}ƁP W,w8C, <) zܳ&hFaE EYFE\L7H##y H~G }x.bd|e{PilʹH[l'ȯDCZ 6X , ϓ4EKf8(Ik@SAP;0K0CF2+ˈ|ј";m+ Y @`4ayh1(ȆQ PDxXF;3a4[C0ȇRPZĊ &"㴍д K@y0͑p̐mq5Pcx0PP9Jq p:˴̤ 4 7C |@ QRiH2yȆq{k 0&8zЄHS;R,H" 9T#}%3K RBP}O X+Q KE|=RdRYF@DLӬʔ LQ%EՌywGQr-X5-|OӶ' VM  8Fd }= ~ R8`}Tۈ`978 PΑ%HEtu(3>J Y2\s]y %2B\R P)_yvD֒( @8CN\yRN[PSb؇ +aU0w2 OyEijq͖KږX  `5Ŋu9004}.>Ґ!F=T+ ȆF"a %,1JY aaXZ>(_ѥ`b7S =豯xdYiAFPvo Д 1& (571 14>Iac>!ْ`"(nHUTQy^TՃxIV`ֲ9e'I@*U|Z?`" 2n(JnS",".Jt!& ظCk1n /҇9ǁ00* Qm=z:Z|Ȇ!md2W$>otG_'% ?lc&I*H~tPk2WMُPCgdJxhQu[O&|tiLXueڧYs;udOve_vfovgvhvivjvkvlvm- Ȁ-p2#Ou1wRDQovvx Q ȕ }ny Ȁ(5ǎ躼wå؏KrHxw> (`&y|hpX1ܨ @,@ @&K:<8ՒP^&ӦKܒyFȁ-0pyPywy ]nq ;{vx{Z[p<|@|{X }zxL@lN o-QA2K GySd y-0ۈdԟ)|IʇϊTQcwЅ`Y);<CЇ埣9 &/2=50گ W}OiA9V&4`T,R.P(m@>XfK p O} 4ԣϏ,(p#+ @?Qۉɧ@ԣ@,;_0Ž/ N[?Ӓ؋/^v@h^p\J;d I Xʫm A"^˃;P8}oHt9h_6 .:R.hm>$Q>FI5V9 3]NL賵MQw,4?[HmO?@WsER' Zo[h0H,d B3ь4 d|Ӟ@ҡ] @B`&yI"2CXφB$PpaӘ)3R)}ЇEQĔ񀆮!IC/GK}t/8@ʈ#0l qA(ac21ߑJҜ=#7Cl=X~ؘA)Q$K:yp +cOZ/bO :mZ(L| RC:C"" R8l#C^!|X[nA`D=!VWj VJ`s`UP8m ن4u-s}r  lSty% akA'>ρ}XK xnt š㺃1s dH w6#m-A?4bǓ4 &&tб8"(t~dIȃ;> {q CzI d $^>dCE> }w"[G6x@o1ZS(>~CiHy @ Xò j +!RF5oox(8V= zUNEiu F2i^,_C(ُ|$aac@\= at,rK3 ʒk]#´@2 `,xG.m`+_n|(Az=w,C`!Yx ^%^cYbG<عȲ\/?~^X$@Kq),|%Ka<VhY$"9@?(0c==8BC1GfBYC dC:_6=QD:|B7„<`4;91A>4`_>0!D?8@8 ,R,ICR`>N] 81J(B T;P߱9_yCҼCȃu.DZuCm5BVԽ@ZaXZ3}_B@ԟ ) >IԃEIElb 1Akjm@|sC_,i|@(|*!j- VDCA4  u7N6FGDC oDD#_>@bjQA4c>j z LJ|&.&p^C@$*z"a@,@n%2**Y^>"J$KK$yxDd̓!XT@ <NID.= LTX2Gt∍<E !`Ce==e17!DcIDľL"E ?L6TH!CH@WJ㢥CVd+)CT cg>,M2BE%e ;dfd9;`,_&$C =)DuPyRDSSsHA>>g =,e=Cxb-C vp)L))F@=\s<dC@BQ=`e@0]+C-1!|_T)R$BtH CsG؂B@ aX8$|#] ,DmA@k࠽2P.0ܢTZvD62jB*J Pk3f&d# TCALA*N!B0-胇m꠱I(DɃ;Z(-b+*{CB\!*I >"D<'UyEAC?T?Ǣ?[>P@d?:£ ;?|֫Hc*;jJLTr,O$#؆>87.h_3CXs&[D:-: > Wl?T;jBsl%V?ɫ^Lm,e@4W8:t$?x.Ʈή4[rl<_ò<_C>b_&bm^ S(>*6"gCU2#|E@C6$!Ad+T,/%}'&hfD?6m¦-Я<ĨA$BFɒDCúE1DRbʚp[AD6Hnj" 7tV47 bĦ0B, BB -r~;&pc#D$Zwx)/^*HKU^ 26Ҹ;P+.EXdgmZ'D(sPhq 2 F4O35WXL hTh_T5s:EMU@C1kǒ0`23Fz01DtR! >#'ƔS#HP23m 4Cr"f?76;xDL iP_ȃ#˜ EJ!\">b$e<3,u8{>g ܉H/w^ D*|.=E3aP5k=,ssXIO5܃!_>t|/:ovDtOz]ݵd+wt!!P=vQ+A 'Bt 8kY=P0׌ ^FWiC fcpCDAm+ŒMHwV n}`\C9,79Ez'D7 \ȝCm[O8W85@30DCe!Jd[ C<hXKxql T93FY,%C s(*̕t8Ax!uB0\dG ^ Z'yѕ")+chTD77\HTC1|F;B(BjV@SaD6\䕑#9C@N"TYTF=x>ad\\(:=<,?5p-@Y랍㸎Fx DS;lQփ2DmCd>@4и'ċҜ3B?D/GJ0F-(DC$Xن>H 1Ak F8Q\JIGx(!wNF1^S}.}0=p^tC?(8OgC[8׾J"@N#*F54' A(Phkg]BDh@3KZ;qT+ ET@oPs '@]6B,Im5D|o>y c;"cwݓBy {'BIy1xaz d珃sp`_?4`O߹! eؒB zAsݛ!?HISCĘNY+b>]~>\"ZJ\2 M]0a۴k#hpو3R8׌5A !#6衟ɝa$)/%~,9#F1\G^X<.}<1@ 8b1#Skh `vK%d4Ȼp ntA$Yl!\I&lj  {ܙɦAgz<>kp}Rl(C"3<D-#fj.yi!FDO骠!CȈ0!yLF .Q$yKjO9Ұ;ilVr)|$x@gG| )=FOB9{gk|n4L=d]f}hjlݖnѣjGoG!%eԡlJ|ݗߌwv>^~%-5Z} 6 تoIz2y്mytęgnK>Y{袍>餕^馝~ͼ sgi񚰞zo BX>[`E;l垛ޛマ* N}6D#' 1>ȿymqN\=EM?U_]emuߝ}?_襟ꭿ7r-~a?}cѱeC!}?Lm'%_O~VrX msFFه]V%} G(JI9 mjy! 5hU)>0`pa0`;-9S4k Þq-C k#9▀!Q7&U|h]>uG?ck @A"n< 2C<8y$<`oQҒ)I&XBrZVFy` Wp- l Ik#  N {e,gJGlG) R%T^%`1?G6MlqD@?Dp36 !s= h./z->8iL%;ݸi *mtڬEy@<)D%QmAu]NsSo9թNG[$@(珙k)>Hz&EJ%U|ٲZ=iPJXI]Au!:13s{XV R>gOf=u#,MQT|bXǞQ0#}TXDSg}8"DVG0#Q> R5EH|k&L%\ :x)KF9ھnA X/9@Cd)kYCg QEfA+\".*Dy$CVTq2Ddya6nv]4_ @2$Sz3E}2ǀB^ q-a`"pa,bH#AHH$<`! Z.;cn>;nxb0bU@f18=@42=GFxb b+"č?|ⱑ)}<9`(&j8 |]sqm="C's5HDg,!9$.n$|1Z`Dצ j |c)XC8(щ>:19>ŬKgzӝ.ȧCR @Tq3FwA`sdIeJ(XgI&ؾA-\?G 9 `hHApl,R+jqoyN[Qm"xDFDAߌ(`\b F$50HxB:ҡIF}\25^# - cE" @W\-1q\kH.7Y d $(! .9A byV_ Q=zy &eDjOn/"V\¢R @@@ ׊ ^#iGx*tfP) Sdl!(#L`J0#B#.2p8! ZhP:@ lpt" #\i(4B ШA583ސJ/QNԮ"Q'F(` S@o6! 2~b|.&pl\p+PD4 ̎)"d8S ʉ,`72BALr%Y.17 2DGIʄ(؈ER(# V* Bh d բ )QVdID'_5pk"D  A ή 1]q3f#òzY Je+ !"  R"aVD¶O#!<㺒R-ג-ƙ"B8/) B!$@#.rB!AhTo,#h#J0AZb "CbsI$ne31 ".2r!Hj/|. _2M4)17b.PCCors717j BfQJx(8ӏ#5]"6omXB d pS) ; .TB!^0v:'J"O;3C2 b;0"#b< "f /9/,)Oe& ,pO=TcCMAR uR ò$)Yb?Hё΁G%L4#t r6P faQ[(\q> CE "]а_i` `Z,- !2 L QM bkrf%%8TE&Mau"b+ 2: /Cr*^K69SaaU&#bg?3s+8Oc; A8h3D#(6#aUpe*끺V@l>h+6hpeߡWԦB ȶl%-! Zg%n.'  xf3 Kld js \ eA>`+I,nZ4peF&``WG-T|\8( b{Ss\2A!,2E*C4)q U\8/!۶s2!V!%lH`) )0 H=˺HT:0ρ "gF7_} v035X7SNy$OYye#hnY"`n%(Quj&|, ǥ[cy ڠ-,P]8Bq uBƐ1b6Y 9@ضS B ii}&!,ԲD}bКl?iJt GU4`, *0G7VHQE*%+oy M k C"` c;8^ 0͝KK۴#ʲx&L?sFd@! NQ+#)/G& 2a'< ):W (bFaFB&fNܘ.AdICD%0HT *j"PdCrZ"䡅*PW Z"Af$ qNbB*4fbmԂ-\F7!$bt}L<: ?,C=ZeB!QZąHfkmiCC _|"R%Ȫd a|A$:vRO`$ bXfV##⠮m410lH2@_Z7(<,[JɉP@XSRV@?Vn#s&N?C=v^ݫ芲(%_(`0whO*^a0^Gt|ɘ8Qf&tXXabs^w- b:J#J6}ƪ6ELߙx^덷EfJYHZ_ f߿U%~>L41"+ursoeOKx, TL  Pn9qbT|K[GO;(_'R\_j_$o>U} -%I>"J̬2.6/FW_ ,@_ AʨlDn'N4)j:B9ۧüs,a #>|A}իsp.yȓ7o޾~w޾E`ƍ?|іXP=6 "T"ԭ\z}@wȍXd͢Uvlٳ~-X`… 2%q1yCA#H$MTK2iVũOB5F6z1Ҧ/JZP/־w/}B'}:<lG2p篶ԫ[=ܻ{>˛?>ۻ?ۿ?28O=U AA#@wCc/XPUACW!`>&\dH68;ri!W O[#WFKJKL!T@AQNY;ȃ;[Ri%)V CC#4)!cHte$ <t·!nI D0Hㆀ>cCUFHbTd<$ϟQ;MO݊kk lKll.;D(Z@Aȓei(p]ܣ<@SP}( W 3^TkN>2yMAU Tm4#@@LG&@2sNX$<{ȵe0W;ZK.T2A{чnUA=;o݋׾Oa$@?4 >2wzw~ xNxn]*@CЋ/K 7CttP}Z?{dC-;2C;>M2q@=lE\W_C9!@?;C&,??k;>RnoO6v>4L^t\#ME?6Uvxz;o+&HLQI'xVp- 9ޡ !n$, Op,l _0H󎟤x'rOpBĈ<!ଫP(FDil !J,.^7x*Tzz= !Dim|ZR uvů"^( ƽpXABre\.+Z%2P~LKN\6ZEq!b,;M> t\ :(,HrX(t7*sl3 hJsl'p!.R 1_y&aL) :괕0j8ד{ >Ĩw$LR$ mCQƠ|H`EH,mFqUge (s,?])О9nx!m;e%\W ְud-H $!*DR9T> vfL<ȇ` lbO#i"׌(WnT;wCh,hE cs}Gfaׂt 9 +lr>=Z;q65@\|(CA!-IP 7 JgTYD ށ}dü.yj(">8pN$O0O88IG=,0~eXGe=9ʃE:W|JYr ClL@?9DL8A6$awmƟsk֩cA($Yq \ " 1EJPh#yUZ+zִo\+Apz9U.rvD*0G~"cRLqKT$~Jk0@ d%QQK>N4 ?RK2ڞA(؄E8Sewq𭾃moq;76dku+xcocQ2')A+~o+[<')cg ?Ћ~;e( X~o~ /+oKԯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmo+xx7Q0xq2>y{ч(k ⇀"/ {(!@>/Sgg{g\ኰV[PnPQEaAE^h{H88~&0gr|2eщޑH׎ߡ\qH7frj[!`IuщY8BmMs!@$914she !)f KQg)Iდ߁ɔ1"5ԱP4KW\yYݱjW\>u'1b08VT҉uӗfIwI}%bO@2LpP0_2 (4? L92(m3#m /qx' QL6PeӚM | L`jI010Df&INћc ("/\&В^qjNPE$?`i>0)X\eɚ"&ivӞ ב@CٝF嚰)*y:-G$/^4BTTǙYu: i)_r$PP @j2Tj`/FU! Vz)Y]*?xќO9)s6q)Ӛ (/qbD/\a '% 0)_9%"ţ6Pyvj WznW{6\P2$!LB @hb#q#Q'+!1*ߐ0)!XG8KT0AWZ+S PqJ =[BՒv?봺QPP GP?CmC9:&0AՑ7:^zf;#+ sٳ<Dr9FN:ӪrS^\9~]F^4-n;/$w>DzDIe+V7O@ `ӱ bQJ嵡56A@ң$)^n44Կ:3# PF`[^ӎ3rK3ȝcKP? ā`<3q: x4.4I9(5 xSK6!JJ!KKN+&~Y@p cCz3 %TEI;*-L$ p NJd y );N J!yQ}0 ~t%!w)ac"b <߱@ 2st(wFnN(~Lɓ+Oy`1y1IE[ %d ElL}biq!G:4RI'RK/4SM7SO?T{4Ilk"Ei('䑭GG 2`Q/"R! g @XJG}Hh)J]N!`wGt&}W% $S4=bfj}#iM}zP\I  ,$MO9ڵ״<طߔ`kՖO[)dNczwFs*ϟ_"' dtqT!@nIc8da`J%@V!fN|^"8ȕ6i;eˁ?mXC r-KC^hlU nRWhul-M Ato%z1,6$}%uP?|'|G?}׏F5i879v 8@GGD ۓG=ഒC>Pq 8v~pZCy.!q0 G<ǽ„P8ߑ Ã܇SR:‴UE!<pHt8C\pTw}D`,xja*Zad QBY@?a y)A=1c "鄎` RT 8> C Xidp"1a?竖p QnL}q*%pzTb#ղ<΁KhG+AUlHdEpmgM|d H<_Q`J?B:P? x_-o9JBZŖ&\iBF C!%]JzҔe>SV:['AGH ^<>a1$8%AЋ-CkZպVխok\Z{,ЄÁ`1b;;&K؇bX#0gR1]ؘ.v'PrX;|cto+$, ]`]q@CVz{[j98!ꗍs @ C T iM(6XrA%n|VQ<0!`[t\DVW#F6!BWduW"Ӧv5`z0 P7>̣lm"bUI&fԠSj@ aI+g e w%r6#GC2p}C!K\xo}tBmfb\sZULYڔ!ԕ &;bAk1xM@/@AG:ƀ]ރEJ<9袁(`!YN XeH,|BJ= uJg9 ΄~_jsvmnwwfqF!ѹnuw=ozozw+o.>pGxp|ws7yus?zЅ>tGGzҕt7Ozԥ>uWWzֵ^O[{>vgI|Oj k v[Hw|?x%st4" yw}U2$PYIHU(/>V؋}u$yL.D  4gB!EeG&|e~&]Wb~?&0,?d裷F 082рl"ZH8w'caj < ty h h t &d~,|y  wx2At O8X+,B£'p:kxx)ɋ: J:-xr``C@A9y=d(ЭyHIB|`|}P }`; ąp 8P!0~@D~8MDQC<ÆC8-`a$Ƥ;RĄ~86dȐq%(s ޺0:hIs0 w }`  y0p! p1Jry}`G X"w0}@wPHW5qb4ɓDɔTIC PѺQH"whRa @dh0 9i *p\ ~ i ar!˩i 6ڇrq}㏴yI}X20D 8K+\ɾ˿,7O‡X `ٖXH>,rH`LS = +ìɆ`@IMX L$4N9QH}-:|HNL-O' %ҔkB ]pJxN~؍[TnXt,pO|< O"}s} ОNn`-D0}X':I5-<ُ( %s )"t0Gˇ> e+Ӛ A4#5 +,R A!n@AihD,8X@S#`bЮS&݇OKd{Fp,qRBjіs-MNF{!h- "ZȦoz0y(ǸLl&n`͇]fp $b|#*s8ѧX~8DB b ܇l"g}(VX%q͡`դ/LG؀X.d7Q70HƄ`.J{5:4 &_˄lAٜ! C-PS ثڬھگ۰۱eRE۴U۵e[ڶ۸۹ۖ8ۼ۽۾ۿ%5EUeuDžȕɥʵ%5EUeuׅؕ٥ڵ%5EUeu%5EUeu&"R,   E) `moק'FaEsЀFґ*~8Phtt (Rax~ ⟐4Ԓ&ڴԇY`i/n3jSP : H.ya IG㭘t0.}80Q!6b n3Šq*(!}`UN5OHY"v=XM]VއWey]9۟*j˻Z]YB8POjtRLFк8wS̓рF LsVt^gwaxV0B! lCSde~UVh~phXkVP> C\|܏zHqD`Is詄"y~ v(8(K} ؂ ^* :i6&t0yzo¼2Oy8{Ȅ.Ѡ(@jՠjy.{ 0vZQr#iFF+؁pP{xCypnw{h!/\Gʦ&N7dZaaQYX섐ύzVaNffmn( {clȄO89 j hyn6\  |by؁o> }^{ sPѣ C0ҀN ߽ݎ}RUNƀ(F?0 C3{Bo7p|nc& t0pU#Ydž W%>fjf%Fy v xRX-?8|&n޺l|j^vi l&?< ox=0 C+|X~C7lh KOop, ` m6XφCYu{+fm1)'Nn7ڡ&W"^8+t(TiwIɀl$o `ZA~Gy) g?`|t[yhxXTrz86CHxsj!(kFЖ~ןGЖt~ KȪ>_}W:' `IKJ)nN Z8d  xKɞĜ/"WّXZ' H&֌)a~ HsuO $ø^o"'n9&0:—9Ƨ '7GWgwׇؗ٧ڷ'7GWgw'7GWgwy|x'p "Lp!Æ9(q"Ŋ/b̨q#ǎ? )r$I2lA<&)s&͚6o̩s'Ϟ> *t(ѢF")O< \J4+oRZ4Ն 'לe~ ;֨ #Q_6y:ͫw/߾~,x0†&W>| 4k<] h*dm٧dʖ1K9i}D;pPuIزڞ`}JҶ\gny|`߇mVM1|;޿/~<&'4}e{yV`$O=1P!䷟D]Ds1XRuA<aE"!H$n(!N( !aA?D أ?CY#?m0>uQMN5E6 O#e}J6 &IsiP:c!'С6JПTe I*,YQ}>ZEܓ@ 46:u}NB EIJЭ͓B7$<,FUe봚 d-vaCT*ir YbKRRSI\pNp=D]cA?Ը:"#tevY@U#3]3Ϲ B8l2J>؅;PIqASQل`R\>^ >Dڐ]`#LR; uL|ҁLp]Dl4\o)ޢ#5 w΄7vo@xjl_C0;b*>~~t҅!]gՐ.3K.LOJ,(LL@gv>9cUTTݢJ_%DZu矇P/Пd-w#.#ID~<d+zh '$`ɂsA3~4Ed!ɖx@='0d2 1B"h% @z܃_>"0(J@ EDd0P:Y|}1|GLJU:5MmBPLJS4ylnf8)H48@K$#@t OƄL?6S l# LF,èD'IQp j#H..YcI΃h}Zք툂,a k"$JhE\` Ї W !V# 1CD}>6@l vm?-V#;(`ɾtUz [pb(c Vh!&FB!Wʈyy ]Uw 4@VƬ$l8(^:{&];(9Ȉ7$fD x? ~=C`]},EP6?R`% wC *Pn d)ͱ~➈ɖ.t"&<0N~۰$\ %A2 %ks(W9nތ<[qw t w*C=&>8:^q̪]1J0:Qu 29 DHȭ1>mf[>?JW|d D(l#co\Oۖ=`ZC<$z $cAaT䃸c!ֽZpj=l ڧz] EAW6}A `@|CD)R]@ȃ999$?CYB]OuY?Е@tغ,! Nj`>t]D  SM=h-A@8!l`2] ,nG170o< "y9,5 ,@xB68>4@ǽ2!C ~o !&BPb((b)&=>$AߝC?T?C-?pO>PexAbDD7LYB(FERݘ-4 @ڽT-z?%^?U^Bb =.C$CM.D+B=T݃F'x Ĝ C)$1^aؕX6e-@%2A^̟)BfdJdRf!BAd5 g38'>T IBRWTI9D aS0ڜ<.wq&IƱAC9 0ED;%@xS=STdX=́ Uΐ.=A@ ]Y- 9A OxP)}ܥYg?HˬJc! En6"Df !!㍞:{@;X}L( DXa§|N}2 ~2^R(U@?D! @XqeCv 68E De fC6L_>A=DL@3\%D)C|W]H[rֹ`@=#dLʽC}˔ Ů5jD, 90(|kRt DJD$$J(*$DtjH64ʿm]A+C^+i m}yBctB'8R_ kD뉉(C=JDúM@K|AD0E1+,>hNW:q؅iDÐlBmmrmzD@JM(h(X<0A{{q>420BJ 83M*:@Wf>TDqx@ہ^A^E TQ^$2r Dȃf"p٢ݍ@@-<{>Ḋ *h[CۦI*oyr>wɚL@DX@p- @S|nnN4~>-:Lc}ŇC@ d!/#'J0~.P/D@?ځ/m΃o02LR8}-8L?p@f-B؇g0UJ?XiN:0*Ʉm D?dlAqA4VD_pm%[%cr&O \tX@@9CbjC%4>d5˚GS d `e5F ܒ9@I%?k`)V)H2V@̓= A,q>=[r/[@<, AnnVA.`ɤ 3<&CF)7`g8}4pNP3>[dlZ@h@ 73@.'ߌ41Ek!-TSDE#NK]4I<lE*D1BtY/0<<ӥM{t(75*+V(8AE(k7s!DdUAS8mqȲ&lvmmQ,nnT4wh<RnY1o+r3ws;s(@32@wLH7u[XvH<vABPuwzzw{t=dlF]7}Epx 8CHЯvX' ź̔h3[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {IDW܋D:iCU l*[c>+GT8FM1*>sEbac<rLDttT-^@:@{*tRrn &|?c4А̣[#z{x*Ɠ<Ռ@A@7@Cj{D@ =r X< ;QKC/ TCc;ڙ NlʷC$JE\vtAU@=|Tҥ,- ܃L dLUf} L@ %;FhT BLUdQ@Z۳  <[KCI$HWeM>8LDL dPbw QMpȨ Cj8A/@:TS?' CĐ\)*dt۷(',9ܰ6@K'ǻwl0`Cs8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹgO?N'CS,B޽E!{P!aطo@Uy_|ՓsPU3ѹ-Ej=paÇ'AT|ChGCg4tpB=X@`>SeTQ퐊o mmX""耛YϡG>zuױg׾{wuϟN7!xlw =A:J` a&0(5}L0(z,ât0# A8!1"KeyCI" @l(}hhsh'G*2E+$ Z@ bN{>R-/ S1,1`-G37* G3bK1 ti /yXQ!Aǟ}F{Ɗ |6; y"Nu?"#5VikVmEꀴ H\"醹y2(.R}'|}VXsd0<^|ۃ.}ʳ(G e{PB|4s7Bƛ8͊DgwXD'㉴JX衉.裑NZi0ۧ~s"}eRBЧbt)۟̇ȆjO}^ZI[-uh(}@^1=FGil,ص!y p'|F_q]yL4e, JՀ}ƭOwFn({(zVU.p1*=Jy>ɦև^/Ryp{  8dG3> N1H87#S|؇~ pP hVCHx ٳ8X]X&xtD5 縁HpQDLOD6TtH)P\DN`SxYYD9Αu(LQt@>APDP74*iIJC8(pu#`B(Vayy_@<1u)C H>ͪ[4{B< x$B@@0`Mʮp?230C裏,R$4yD1Q>DTt;1YР*0&hHpc< d|oRH KA` 4@7ޡ~P|,EiH,58HbW:K6 8P* dtODVe5YњV1hTC{j]W} [T;@X.uc!{!e1YnjkgAZю5iQZծuka[Ζmq[o\%g\b{EgBn,B-np$-&{Jd$"0$dS5c58%&g>8mZP$J m$!,76gu7EBJ(oD GkJڪ1" ,> ?.hA27nnS n&m4*@>.pD-J2+RnT{(NVvg!7r#k\pXH281 `sJ@X3;93"40_4e@."b,BJ73!b6b$:G+$e aGBRFRR7*cv%}#jn# bHSZ1D2 XE{?O!,e,o$<.GDD ppc~/p4P"0Dzq[LRatԂ&b#o!1v"v2MM1DWl-Fl =FXF$v5Zp"'A8"QP("xGOLNf " ~`8!@"D"`-*z-j-"ZMgHXWQB96 |8xW;id ec&B*̆lfmm7F-* Ճ)+v"THjp  V!ڝJ{VeWAW.2?dUd$}6A.!B=e(G"aQB'**)0d !169'}k"zF(-2? ڎZe-x4ٍ"3pEEH1m!Nк&3*?:/Fg H"o*PHszZ]8_7HA!t{-&cxQlI>avh {)h,"i}Fi۬=? l"Lhlb|X#&oFk4RZ@, 2KHHR6:\[E=j׭HEZV"/ɝ|B|ʩODʵ|˹˽<|ɼ<|ټ<|荒1SCu\'뺘}c:?KʧCV}) u'9R.lu&,EbXIZ_t a=']I]qa{"b+֑LpWI# V^eٝ}!{fx&&#v")Eauݻ]xV0b=]Y_؎M',Ejqk^x)!,}=ۿ6lu%mdm%7 E7pH6--~VSmlb#nan=.'! H.,Uo=+mp p-BB'Έq ><ÿVخv4uyW<x-)L]AW&oiWa8@BfwwW.x;^yw/9z_{ݺ{w|#%[72^!K2;1'oT8թӋoo,*لAB&"2% JX}K[x,h؆-tE/<̻XaMapNtQ`)*ZW 5"W!礌PE8wV  } *,oÇ#JHŋ3jȱǏ -bA}"'bEtI͛8sɳϟ@ JѣH*]ʴӧPJ þ#p_=I8ϫžRd,va{NW* ;y,Vy }-H[ Ux^i_̀7/l|mZ_ Nȓ+_μ{bW޹̥꫗"} aDǛ? u(^^Ym隽bH'?(l J(v S:  m FafE'FHC;##> G<@)DiHj>{e%lY:?(>(ӏ^! 4ђ4+R 'ey}#<*>3CWfڕ$)ߊ ԓD(?駠*ꨤjꩨ ti]CaUP:CxuAAD 7 @=V*_Z )ЁQp!z4<TL6p ><@?lXpIȓ "G,WlgU}]7e3f̣CP%>c, D@y1Y# ZP#S,C!!9z

O:] >.i5INj O,*㏬7G.S=뤴y=p\Z(gOacH68AY~ y}[WU \O l!kX81ԷA#e{D_od .5Js Hb!:'H N07z GHBC~%L W0 gH8̡w@ H"HL&:PH*ZX̢.^ oC aL6r$>21ĎGsQ'Ї;\dFDlF:IAG<8CF'# K?8A܈)ҁ`uL,~H(KFq" ",JHL& epԨd6Z;]Niܥ<"p# 5iycDz We2rjD3\ ) @!8UDvl2{0mU1'͐ #eR664ψ'h5Ж0]*ƅ֤3* t­lyR#WGӚJS! XͪVM5FH ­ihI PцbH!!ְp AN4! HGfp,xpbeE AA^y$>e!Xff {!#N]]F TѰ 9:gRLo[#җ~lLqM.ZI ltzp$ !e@sS[HA-^RO!vJ$nH1Ԉ4t^Q%6"12#5²r8hEkj.%RTP# AQ 0 zPr}7rEj >F o P HV"nhR23WFr" PbP+c^{sD&%^L1x )7%XN@ؘEHS2 0#!ϧMː6 uA'a  taP ^0 aak`aW."UI&B-AfE#%pv."vV/ʢru'BU_ W0.)۸Lٔ8h{NP<0~P) nHqh2,2oK(q&++3fT53"3Z Ce %_S9coo;V32ĐrK6'wc,M@o^շ;>9G#2$c2"c\Tc5`Ѓ9 c Twk6o3?cA7&Bvhi 7ȓ="#0  Nٝ7ԍא߷ %p7F`OVs C;0:f‚;Y+{ i3L1K! ,P"`V$U2 ͅ`+ =>Lk Bբ % qc 5idZfzh!prJ/8Iav|ڧ~::}Ѣڨ:Zzک:JBf$:xGJ3rPWp pwdBK1Lڬ~Gvb9MdiO*x sQ*p;֮:Mi|!]Prh"Vؐ[`^" ^d= ]]k^s~^50R W%`bq"ED~敁vdg'gVyWTaK \۵G0 _o"ZTp8'?`Z%1p00^gp =–!qP{FcP   ' r {.x z;Z"xPyA*+/F y`!))n |tzQт E(21T26uRJ(lh##Vi1!a"Y "jg{#9b;K5yP) ˀVǻ7%]Bi|x((76U))Ո[,C$@q Px 6NHHќE ,oi3+C0b C@\B N\7i&+ 1S82B 56sS7A7SCr<! :Pqh#60`NnJԽ'%\j^ 2{Inkʴ?C??t\ʦC +̦ ʮB4 P0JAh˺)(qz:lB <|4"Œ<\|؜ڼ< S P=i ]F=$S 1'44OkmKDSqq<52]<Au[ E[<#c}~MzP>̇M(Bq])= i!4̲G{ ;"{Tދ ذe CT5Ů'ڪ#AAZ  p|^i A PUƞ͆A0` zŲ=~O2%U;VHY& {$J[(YYŗmWxU.%.Ӥ [f)TRoRa4aIpc.2olҤ&foi 1;n$ ϶a 01]->N QPJp%D1'+a@孇|~N# ޠ_~OTxOPQWTv>nQ-rgsu(`0Qi}'[Zp8s!p(t$Ô: ˑEY:@h#`Ӕ?%_l^vr/gt}Q.i½aGkdJ(!h0Wna݄#[vߕ!K;@ #"pfkFB.|p 1P6>2Q $XA .dC%NXE5nG!E$YI)UdK1eΤ2< e#PP>ӠP޽ πA  {"mbԞPRZ@pOK< e[Ztɕ7]\]췯 'Lo) &#D\g `ؾs0ć-ko'^qɕ/g9o8]~'0~.`} 4ݾsOU_` yI w<Zja(Be炁@'db* -駴~"K1! MsC 9 @d'(䉀 GЩ$Yr ($rK.K0sL24L]HT(}}I <'|s  ``y(* B"S!;9QF z ǂ79ȳl Q|YM‡ {,y }$[ Jn!tՇBG:k{"CmCA}" ]3A-sm)t fFF>qP dy1wva#xb+bCK\91XVIM&{=q 2yK2h.fx`C(pս#sF8Qs!,P3ȋ>j|gk^t ~d?A e$I*Nr5RԢ2ڈlB#H`zd9 B`=beH: m@!=Xp~emk]8fC?$=0-X(р hp,X` G?Ps;@XKfagR֩,X!!8 Z)o}{_.O?ZK>g`- |2f¯8ƍrO80!񀸘GAњ0e  ( !Rtc/qm|cXtG= ' ĐY{Y6ldc^ ;dQ_g?ks#r|(؇!ϩǠY"Yss/-9@? (l r?Ą}ā Pu xզAOB "BO2fgآPum}5GUD?u"bzP)An0tυa>(t ZHe8b3.5IQ}кfwg^C &1c{U;(HUg eg>4߂ǯ2D3A,%FtC}C'yMLZz-Zx#B:5X͔ X>VQV>sk|.PL*ZeRLaNE َՙlor 2}ڇzqrFBԧo]s"σP(Da0j9ߡˀ&93mVl(R A 2íqB9m}m{/Dw#C恰l@'~|cO{܋0G_ӧw?@~}=~_g~__ ?@,@ t @Ȇ?`@ @K}` 6 c@|ڂc~t((D G,@ n@ 03S%ԇsB,׳0&/l ܑ[ #Ŀ^ H,C<4IBrAP{0C`&CKֻ (80{?|@h㢀(x;9Ā~ɆD\w@'])ز{i9*PQRSTTł"o@*X!Θ*|ƸSyh'LlGwt7  0PıR% ya I82){x(85>K"Fmj\5ƪ~HZ*x8lȏB΢2ђ;wItAI\aF)wcX ؐ ~8&dPGH xEkpݸzL9-lA9_LD!7T͈ hlzw`/:9XGnI|‣ZKwhH|0Ay`tZ&k(X v| k;R~My2\d}L\ 2;9뀴1`HȼN쬯P+tX4P='1 S lH=;DX*oȆRG9܌{"KChuL" sN PJр{h|Т3ˊ čwpyhB+BA4sDЁyM0],9]$P{(N'C((p8q P0 ẃؼ \hD0g[}x. PiZA؉Y/\#ؑԻϒ cS`{xSe.HL=SMM"ɆH(]]01Eaз!́It"} TX>h*(!"TUUEV'Ӈ7#"=8 '8s86N-Ws$ͫ){d|Ҙ tЇ&$~9Mn8 јc?pU؇lP }8spjE8hnW{WE}{GX\ؾ#[(8as ZuȕI`CȚ`wX8a;t<#@7"S]ȁ8t༆ǹ ˢFi u'c?@{V 3 @t7XPLZ\ 7\[{2A]-]u-=]]]ֵ*i]؍]ٝ]ڭ]۽]]]]] ^^,^M^U1:8^^ȇY#USH¼^D?XIKlFFa@ y(`v `ˇ8\P,h䖹d)ӇFƑE!"#N%>Zǡڮݩ &]œVڂ>hk`.MH5eb4FȈw20*H96s_ndGʀWǐLs8lߜLcOUȚ* ~79+"b 3@87hwHsU䭱sH! =iȉ< ρ2}dpgC42O\q2yILWr猽0.C_Ee' yT0 Ȳb߂Ky(Kʭlحw{`I t$gn wpD g  ';JL|l(fg>w"D0F`6<(Il`]ȍQy`gc'804 Kh&k=1'EmEgD(O0|~xa9 #}萅&lAf@RϺ^m֖; h\gO͈g.Ϧ>C{n&ZMFx)~R>΄7X .o6|`6B֙TS@l %u ̎kD5zosk:O1 =O؇_gX"m(&>H,a[.qd%<˨B.f叵(:HX1w@BS}&xzX8a#PP S0[%C$9 +C"?8< ,9{87cdSs87q9# ڛxWd O-+g-s#}dWA,\t1@yn8D9X[%XAX*'SIO4I͒ QX[iXi"y;`9oF]}[yh8xlȚ T$)! AO0]ڦ}Z9o&@fLXw# }@!yR͐idt<ذxѩÙ[c/`sgyBOy?T8_y"豅8 Fyy ?zOz_zozzzzzKy zD?d ףc *#Bb͢CRBA򔽲^- |׈|D!2ʣH${V VрH,0"|P8HPΑG &k @ԇ2cЀ4sHoEK ]ݒ?o (L~XFR t ]X者}3v> ɓ/ Ggˆ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:wY1<۷O޾tɫw,(Qy ZŪkӪLSgFXJGq(oByVM?}LZ 6nԣEbwnDPO^y߾y M!t㦋p+#C;h`;7? 8 x =Mx0O=)#MP>!87;D4>0}%*=N ^ͳ D 죏) AΝ#셙*7Ȼ3D$B=J4<4M;4QK=5UȠ,/8?p1)cD9[Qg] $>yτD|Aq> k=.SQDg QIQhwts+} 4ԣO6P @D> cAtM.:馣 ń3MuΜlaG -ho#RL|<K<~z|:3p6r$~_B|?)7@4@sP`x|H>0TiBApG8p[)<83! ֝K;qD4'$K!U| )` p>я%$-16D% jv#=~cLaw X;;" K(=2~; Џ DHy<24d%qIC<0IqMGa!IH:H:"Po"tH|M#yp؁J@e:pf;IiV  f #Q{%ЇaU(3Й= 5:$L$& >m#T:iMlFġ튨<& CxhOq"&DҖr2}`#aK}:ӄMH@s(jhA1~#u8q(hj&#αYjO0"Awā8DANiRs!k 6y(KCxBTR+# Uq @AVS@=-jSղ%6'bq"8 <t(5SUUc)";<SDzO HUPAs^ZUՅ<5ZeBwF5[!(DXxn1#bQH0?D *zKͅCH;& y{ݖbd]Qy Ƀ/$jn|)(xXUPwMs* )4]ȯ0i$BpD q&OdqEǕ-ҐH 'J <՘p53soyX:'.FP K{R|, y0^#W=]CMB?+32[@MG/}P-@@@aG90'MŅQZS.ty+)Z[MWHD7P?WD_fCfmYQG` E8`h@`F (BlvN,ʼnuAźC]xB))'dFD8W5FDDZKh\C"_-A^d>P}u C<)Dĵm=\I vd ĉN.B.!Ẽ2` TG¼-6.c3&7Jġd=݉9>@,BV`T:?CL>P >xBD? 4FC02b^B>fb@F>RB9h<A6X@E8< Q܃59LcZ /XO$PP¡͝E ǁEE\4>R>,C?E8X\t@?|Da^YѠǹQbUU<E[Řt Tޛ4. 0`ԃ$&B0L6pD]B$|?=Rf&$&`&?l C]5D6̟p%gjLAdE hԃfl 9%KEHeWAL}0QD&3ݏ`&7XK-&"iD>(EZ FUBqA 圀E^B\%(0SL*ZC7Ӄj͈ :#hd@6ńs78 05B%TH }DI^bD8FF@8YnŗQT!D'8(Q@}ۥ#DCABi #1nq>d8XR__eNHmQPeՈDžR LvÝ5*jB 8%( R`B8 ;C} ):=Bu xd<'Ui?aD4Q H=T`H|STݛ*MJ]> $)LS%+kN-$<<YBX>,;@> ԃ!=VC`CH#RjC|:G21Bc\Ta@,݃%{ԃC?̅u[)%,m0CdCE=X=d%)t R<,lAD@=DVc`q<4m<mߣfiKlNub{Qy[i[lӾ]Ŧȃ"> V`NDAK߾-R~^F.jL>@6;p=dVFhU1Qv:*(F:@50zRX@\@N &@q\uRY *iQt*0FD:F0@x>D >T:3;1Jl; R( Vo X*='B/4C77C)j1pC(P.L N|C4KKt~ 4LP\17 ea(4PP5QtD+I TWU_5VgVo5WwW5XX5YY5ZZ5[[5\ǵ\5]׵]5^^k^qɖUcD` N 6JDlŀ$q` %c(d[adfo6gooŮ*;#lJ0Guq̂sf`tlwm6nNoLqìVhWCn[c@ hWDrr{EJ?LH\>0A%nh8$ZpVG>@ hx(;Q` f@S6C]Prw1xQ:ZI @2>`\Bu'D,qAF#E?;A:綏8!PfS8THwlU0YWXtēgVQ<ڄ\Ѕ]CGboWb,FcB!f0LD0R|#tŋ/=ҧ U F>̐TճD H\ \h\94K){ ;L@$g~$>t6p-EDit&DaFdNM~ƢLȝhՃ(P.݀0+e8w‹Ɏ>lkD,l»wO ';((ͣl4y}!Pu )ϟɛZL/tnE}c~M< @?}[Kh~ I$C qO{:B(0!ၾk$Ec t;%bA$O@/fD'# E0vla&>XAoE F1E'=9D<;zf'oBþ9d~ds(!Tof <\|% - 5ܐ=#Lǐ4K'XM!% :9yVcAG1 x@2 OL4{D;L<ǟdQ-zRj{zQ Ġ}PBz(#Fx`A@~@aTh"~ܳOy4 N9G/C-8@ZiEC2"|чyΙwJ8\3 QEu \NşP@![ U(k ' Ȳ9P'J7ys{`U^{5 =#Hv=A^hZyB؇ B? x3&^!";~t1i{Q=lL|'@䖃<y؞8$pQ=!Ah<2 .C(pZox(PrֲcI2> IȆ<CPٸ 0""BzX` gT:m$3I ` x%;ь8m\0`jmT"HG>$)YIK#Ɋ`z @ [x]"(@?8" c6V}8HNIdje(ULBQ`L@0ճ$ГuaNۇ( 0ѳw. >ܙnFeyGIyZ 9tTH0}1XCg-P}G<}$,[#|$`"""@0\T˹c9i($Q=eGw@IДUc8  bbHwMǐJ઀(RUA U@ -D@{tATO?8.Y~hI[ZӞVf| YՀRч@ސGd DUa\.Z+1FtuhF6Q&|TNՒzEwLcj| { t8cov~Bԅp|X!^oKQ(̡ye!!܃%AhDlt1>ŘmG:FyIg 9<{s l 錅M}{/){&CRtX0ޡDi!P!gh!6V ^ҿ#/ Gfu7) С9.Ir>ƣ x$G0[}<  csSZb6eN~\:mfUW>~L؞ (cppؘ"[J\3ΌG=Pj͸% u.+jWxCKo p=1nMbC5I  ^wh-.6E[@,zNi":< |߶- ;8pfcS@c3n@!rb Q~x0F*?cvb MB &()*R**/ƥ%lA~v`ZO!ZHю2fȃ~cX0NW!-AB*"8A R21EB"4,ல0Hj#q0a+%0! "aܡ0Dx(",cpR13Z7Bxf(5K21hX@ya\-@,ip\ĥ#.[O@c C`d86 <`\ExNd37d( @`A]:^l>Ukr b;+|m@zCҩ.$צ}ڎ^zAb:Wl:S5#bTHqhx" T?\MPƓ a["TkX1-F[[? AL!dvMu8Ō;~ 9w1tքu6(B;a: Hrg*Px`P M&{P"TpoKLT5Nډw=L{Nƴrҧ's>p z;a_܏?p g?fSO%#BA'> "Du}XՀt>"0!GXw^)&wupKQ3ZZ<_)'QQ(W[%F5!Y\updӡqkQAX[yݓɩi>نn%DoyԬp~З)X@[I0fCptІ kІTB6M(t'ep /p? qOLqcMRBNDa>!NuO<܈A#)̏<4>C_%^4P" Oq|&Q;lr]V0O72`P$f%i"`>&ed&E]$'H͕هA3*2T`rsaxp 萏Xr>* zA@T,F#PvaUzMkзxrh=f2̏ אF Ar ,}8_)$̐P}X3<,%F/PQ WPũ#Dap{Bf#@6ּ%V`ps9;H"BLX*0Ǿ0w BzvɝGh<̋Hp{ZAt52;>_R2t ` {ṽ5A'OKu=9G?d\qFI"@cl}jhZ |)LjAH@a0&FP4ΣH4Ca  g8r=yC]Y*reJZ-mpץȜC]0@h F bAYLU C"C;cEO뒏#d<'Nkvq~Ǹ˽6t݇ s{{X\WS~Bԙ|Wi͐eD&dk ø5Z{ _a STmZdG D] @&;H ԭ տO\p9l#*Rz Jlr!z LcVf`q`dq.|u|g`Ms4ssQp%VrQշ!Me!e I~fr'xSlT'1vMG!WNAXH1Ew)NbF'#~&"g6З`}wx>>z3+ }`] 'dr5 3 z qx.4p>(Gq!~/|1R8|Ȋ芯Z(GRVkfUS*`7fCvS0MH5c8BYP /r ';h LN:vp:P,& M`@08Pd3' j1*a q`fNOA(tlP?rt}5'\sZR~!"F&t]17Y rג|sNy&_Ew$'c$pyZX4&i\"@iq!"pӈ)6P4"H 0 b}q M}`.zƔ L ?{c0^i=sėF#Sw)Yx 6S&]Qjd8$y٩ɝueE[KL&EpY`O1+v籇$QbApa hp@#5/sLf4@H)Qsd /7ٰQ[b#uKF HaP>e`@71g&P,4Hឦ U=*CdA?::`ol.e0//q `c)pzpV`eJvGP .u)6U'OJp >2 p&`C`zLS R4r-` 0ܐ*'AdKj1gj6"`hu/pRRZPЁ@&% p x %SKxra jT%x 'qp A& ^5ըEʚ!ԁ]' я@-Fs↧Fz[x;A(;41+3K5keuo.*'.` 96, wB,! dVs#pLwben.SKo<ހ%H`Qˌz1%L._08`m"'F .@Pj!b% ` Q[!%FAGr cDK#rŕ 0 3iO bd`LaK:7#]Z$QQPL `Iм(PlX oQsд ˉ;LC$}dдw&^=ˉ+a$ .$}'2*\VUy ~414,2D瑴 qPr4AR|0+=AC!KcM\Rd7id!LaPQ#7 ȁ,ȃ\X:'Lȏas:Ƕ0!P0!/A4tej+]mIKMOH SMUmWY0R]_ a-Tcmgikmeo q-sM2]wy{׳} ؁-؃M؅Mm؉؋؍M׈ؑ-ٓMٕ]Ԑmٙٛٝј١-ڣMڥʠmکګڭ=|ڱ-۳M۵Fm۹ۻ۽}-Mܾ ōɭ -zm׍ٝխ 9Mm -Mm .Nn .Nn!.#N%n')+-/1.3N5n79;=?A.CNEnGIKMOQ.SNUnWY[]_a.cNengikmoq.sNunwy{}.Nn臎艮.Nn闎陮.Nn꧎ꩮ.Nn뷎빮.Nnǎɮ.Nn׎ٮ.Nn.Nn/Oo /Oo!/#O%o')+-/1/3O5o79;=?A/COEoGIKMOQ/SOUoWY[]_a/cOeogikmoq/sOuowy{}/Oo/Oo/Oo/Oo/OoǏɯ/Oo׏ٯ/Oo/OoN@ DPB >QD-^ĘQF=~RH%MDRJ-]SL5męSN=}TPEETRM>UTU^ŚUV]~VXe͞EVZmݾW\uśW^}X`… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥMFZj֭][lڵmƝ[n޽}\pōG\r͝?]tխ_Ǟ]vݽ^x͟G^zݿ_|ǟ_~0@$@D0AdA0B 'B /0C 7C?1DG$DOD1EWdE_1FgFo1GwG2H!$H#D2I%dI'2J)J+2K-K/3L1$L3D3M5dM7߄3N9礳N;3O=O?4PA%PCE4QEeQG4RI'RK/4SM7SO?5TQG%TSOE5UUWeUW_5VYgV[o5W]w嵡! ,f664^^\jjl&&$nnlVVT ..,224ZZ\JJL**,::<BBDzz|""$bbd>>@|$00<08  ¾b\` ^d`̜Ȧtv`xp@t~nfHLF@tntĒx\~xltt䘠|vpfp<<4 `ԺPXX̞xbhd\tH@hH:HlvVl80L86(Nfbxtttl0 0.l0.0(:0FJ@xnf`0@XPX ʔ||4<<~zfhtfİ*$L@:$<`p||rvx `4ԴvvtFFDFF N>ԳEF)TV Y#@=#(ͣ % O Ih&QlIGqvdP>p(`堄jj_wL@@A# FA22dC,iIt:*B6Īz&sFA?f 2+[T>3;@ :6&H|FAHn[Sd鲏% -ښACQ?``,p<ΑhBx@:K~pa@O=xPHZi ϲ,@ @t>H,:3,2a7X6@r>>C(́ C@)=sںM< @BC;F#]MhE@Iу2.PΈ,4:/v [!xrN(3v9p9;@#\ 77Tsl{::'-  =#=o #Q |%e#~LJF#x"G$ XP |C77 +1AzP  {$uhG2өD (C YS z 2dCP!IHHA? dSrA!Ƀ=,`U%@a}s!wp؁'XFđ$2K@'J `GnyVWH_ L j MB X`PL%(@D=Alx:&]0jV`A"Џ @m*Cgy 0)A"x2y/ n J@dpwZUWlU1V:u LmS&Fd`>2Mj3s+]md"p~D I n"!>C~jb)Ҁ}cG*߭я0k\nV2Q`-H[yPDLZ,zYr0s2#Vk>umJ""ykMϊe2<HA?CXlA'8"x# `]gL%+X@t-H >E'H>܂0U`ٿrGԣQ;@ [ !]B&ꁢju?x@ $汷A[ޣ IqãrëBЇN%$R>F =|A&*]CI1^En< P`!9]dǬ)7{_˺@ZKQpyDB\=4k 1jbDu Ka-@;ߑ)b|BaC;9A߃.1 "ۚ2\ѧO[)/>69" *D\ w~H|@Ph<IRP{T'EV== 0 ` 77@W5@M}kc_0pwV $ '3ydRgS H`(+H# 0['G9`r 8*p`8@/gV q$7\pXpr!G@WC?r `S\=%aw6p$@aPԈ|Mpq٠` 0$z(G0nL 3&D &G &cgMM&" \p O6p%WD`KRxV$(/ LP CRݳ C#1+@"rsx Y@Jw! iy ّp>P)A&@h(029E9HJLٔNPR9TYVyXZ\ٕ^`b }=Wf.Ӊ^T!9<.scYvyx ~d /Ȃ*{Xv"2ygC@SEmæ.3p4\1F])"" !`yz }"0q!"4 C\cMc S,`_ $0[U#0xňٞ`{Ep /%u: dT{p$WPS@pNI`j١Mu[P)y'P27v) q% 0w z5,"K" Ŝ HJ q,:R>3/gmCP@ .0eـƄ` vzxz}"*,Չ"gY``S0fq`waH%  +Jl@l[Ve 6 -4}ڒᡊ0OA`dzJF@3mP /D?#ըpXme P" :,f0Yq$p"Aɕ a/dOf#`6-[KAR#!P0"W$  (77+ p-y:<x>p1r]/@\"%"Ziuh:p@:=`!qT =KӚ##F#ud`V#HBmI$*{MGP[} a&p hTc =P5(04<䥉[{q^HٶA$Z]ZA1aX@WgU;bes۽!$!e껾 Qq;`||2?@.Q16 \,|l IB>-<RE<SxـC; @PRnk0QŚљ,!3S m !i=|x%"N"H3SBr[\ž$!O ')Zٜ3~Zr0oɜarf,':٩e<)癞ǺR\}0*B:L\*Cuq2@Vuz(T [;'W@g*/РjDZ>*'4R,98WXX䂰l1/]|)7F*hzlEV0Ӣ1a0(mA*}aL58E:j=pS2˵DJ-H'K 0o05$@6 Sd&Z:A173p#7tc7906,>@>%TD't)ԩ ? {gp% |"%]29 $>DԆ^'0Q"]@ V D ߤ:qAAE+zaLRFRǧq㈪eq$Rd.J;QtVPF1G P X 6׀4{Y#LۭTYK*LI&f+M?4 #hMK/'4l @Ji,4lt۬Қhw5<>HC{+&ZtTˇEi!K:%>9 `vmz#-a릫@S }^ P5QMR  de:'5%!YqXf4P2YRTPQ5UqUVSPrR!VY]J^tf*rP5mf R7Ws < װ Gp \f R3_WUWA2ORvE(`W'aO֊I +/_am誮jxr*+5\M"0Q"`V Pɔ/P *CEv/MU[YlFW:J|:@F9r-f,o#L5cT-<60,,64_y"YK~@| ʯZ|m,[$K m^x^m.{l6$7 G߼}5诟(o_|Dq{$)P<1R_t%Q y"=.L$6gSbwD!,1 LL2/wɓ1𛷢30rb`媔cй2GӇ x/>omE'21|}gay}wOOڐХ}\mܹuo'^qɕ/gsѥO^uٵ+G` FG!l}Xq߄mn_,甼LJ ~}zG\wNدO bϟ d!, G 7FYa$h3?7 /7 /y!1 sL7@ g}'}JBH4J0偊wGCM8sN:NO@|HAs(ǐ/ x@!L 8zaє{@௓@ "ا-:r$;YwGXD-z4ԁ(/ i*#[iʡZ}"˦*>2&2@tmKF!! |C{L|gFx W&ϑi[I`meڸc*( ASVye[vecyfk+P ܧ2b8y8ч o"C,@3D؁y֪y(3KPʂ + `} RE{R*ͮa:Gڶb's:zP:ʌs *s{ق-tyR'I|FE)[W\|Rot +R$"0wvP(C~~o.u#C" 9?8 p(3 Ѻ#n66p8H0" 0 (EHt̃M$Iq}c,B|p |W/h*k9VT@\x oH<n|40KB$]nҠāQB* g.xG?ad0682AA#<@$A@AOde+]JXR%Aw2xyR$f1yLd&Sdf3GėZI.yMlfSf7MpSP>Gzɲ Qdg;NxSg=ul%g?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens,ϥnu ;fb7 vtwǙTw^żeo{{*X bqHua5P >v H8G1E:Kͣuؼҝ*|Dxn9eqW xcɐԍeHc=Z# f ^b"IK )W.[J/,Xkhlx7 х@Pz<4eȀ 9fR N$CL˓N#gOE_^4X*=MˤXAHj6Z=ȥ >&#Cܲ:Cf7fdPsՉj$cb&>eIuqX{L rn9}u{AD O("WL: &@a Q@B DAH$6XȈ&xcPUl/DC^2nIHDm2Y4I dX%5mLHI@@(;0$( @'LRGOқ:P<G^򓇥C`p4H:zF-(2t9byA$A O<ij@ |>?x?ɀyC} ?{I# ;b# } 88x,iӠ '¿ЅDAdAAaH ш0ĕFLD"`>R,o5r3xw p}pWсHyCVTy, } hg̋、@3/ NᐹPrt$ 8-CX6= 0 yEq y}`2Z}ƁP W,w8C, <) zܳ&hFaE EYFE\L7H##y H~G }x.bd|e{PilʹH[l'ȯDCZ 6X , ϓ4EKf8(Ik@SAP;0K0CF2+ˈ|ј";m+ Y @`4ayh1(ȆQ PDxXF;3a4[C0ȇRPZĊ &"㴍д K@y0͑p̐mq5Pcx0PP9Jq p:˴̤ 4 7C |@ QRiH2yȆq{k 0&8zЄHS;R,H" 9T#}%3K RBP}O X+Q KE|=RdRYF@DLӬʔ LQ%EՌywGQr-X5-|OӶ' VM  8Fd }= ~ R8`}Tۈ`978 PΑ%HEtu(3>J Y2\s]y %2B\R P)_yvD֒( @8CN\yRN[PSb؇ +aU0w2 OyEijq͖KږX  `5Ŋu9004}.>Ґ!F=T+ ȆF"a %,1JY aaXZ>(_ѥ`b7S =豯xdYiAFPvo Д 1& (571 14>Iac>!ْ`"(nHUTQy^TՃxIV`ֲ9e'I@*U|Z?`" 2n(JnS",".Jt!& ظCk1n /҇9ǁ00* Qm=z:Z|Ȇ!md2W$>otG_'% ?lc&I*H~tPk2WMُPCgdJxhQu[O&|tiLXueڧYs;udOve_vfovgvhvivjvkvlvm- Ȁ-p2#Ou1wRDQovvx Q ȕ }ny Ȁ(5ǎ躼wå؏KrHxw> (`&y|hpX1ܨ @,@ @&K:<8ՒP^&ӦKܒyFȁ-0pyPywy ]nq ;{vx{Z[p<|@|{X }zxL@lN o-QA2K GySd y-0ۈdԟ)|IʇϊTQcwЅ`Y);<CЇ埣9 &/2=50گ W}OiA9V&4`T,R.P(m@>XfK p O} 4ԣϏ,(p#+ @?Qۉɧ@ԣ@,;_0Ž/ N[?Ӓ؋/^v@h^p\J;d I Xʫm A"^˃;P8}oHt9h_6 .:R.hm>$Q>FI5V9 3]NL賵MQw,4?[HmO?@WsER' Zo[h0H,d B3ь4 d|Ӟ@ҡ] @B`&yI"2CXφB$PpaӘ)3R)}ЇEQĔ񀆮!IC/GK}t/8@ʈ#0l qA(ac21ߑJҜ=#7Cl=X~ؘA)Q$K:yp +cOZ/bO :mZ(L| RC:C"" R8l#C^!|X[nA`D=!VWj VJ`s`UP8m ن4u-s}r  lSty% akA'>ρ}XK xnt š㺃1s dH w6#m-A?4bǓ4 &&tб8"(t~dIȃ;> {q CzI d $^>dCE> }w"[G6x@o1ZS(>~CiHy @ Xò j +!RF5oox(8V= zUNEiu F2i^,_C(ُ|$aac@\= at,rK3 ʒk]#´@2 `,xG.m`+_n|(Az=w,C`!Yx ^%^cYbG<عȲ\/?~^X$@Kq),|%Ka<VhY$"9@?(0c==8BC1GfBYC dC:_6=QD:|B7„<`4;91A>4`_>0!D?8@8 ,R,ICR`>N] 81J(B T;P߱9_yCҼCȃu.DZuCm5BVԽ@ZaXZ3}_B@ԟ ) >IԃEIElb 1Akjm@|sC_,i|@(|*!j- VDCA4  u7N6FGDC oDD#_>@bjQA4c>j z LJ|&.&p^C@$*z"a@,@n%2**Y^>"J$KK$yxDd̓!XT@ <NID.= LTX2Gt∍<E !`Ce==e17!DcIDľL"E ?L6TH!CH@WJ㢥CVd+)CT cg>,M2BE%e ;dfd9;`,_&$C =)DuPyRDSSsHA>>g =,e=Cxb-C vp)L))F@=\s<dC@BQ=`e@0]+C-1!|_T)R$BtH CsG؂B@ aX8$|#] ,DmA@k࠽2P.0ܢTZvD62jB*J Pk3f&d# TCALA*N!B0-胇m꠱I(DɃ;Z(-b+*{CB\!*I >"D<'UyEAC?T?Ǣ?[>P@d?:£ ;?|֫Hc*;jJLTr,O$#؆>87.h_3CXs&[D:-: > Wl?T;jBsl%V?ɫ^Lm,e@4W8:t$?x.Ʈή4[rl<_ò<_C>b_&bm^ S(>*6"gCU2#|E@C6$!Ad+T,/%}'&hfD?6m¦-Я<ĨA$BFɒDCúE1DRbʚp[AD6Hnj" 7tV47 bĦ0B, BB -r~;&pc#D$Zwx)/^*HKU^ 26Ҹ;P+.EXdgmZ'D(sPhq 2 F4O35WXL hTh_T5s:EMU@C1kǒ0`23Fz01DtR! >#'ƔS#HP23m 4Cr"f?76;xDL iP_ȃ#˜ EJ!\">b$e<3,u8{>g ܉H/w^ D*|.=E3aP5k=,ssXIO5܃!_>t|/:ovDtOz]ݵd+wt!!P=vQ+A 'Bt 8kY=P0׌ ^FWiC fcpCDAm+ŒMHwV n}`\C9,79Ez'D7 \ȝCm[O8W85@30DCe!Jd[ C<hXKxql T93FY,%C s(*̕t8Ax!uB0\dG ^ Z'yѕ")+chTD77\HTC1|F;B(BjV@SaD6\䕑#9C@N"TYTF=x>ad\\(:=<,?5p-@Y랍㸎Fx DS;lQփ2DmCd>@4и'ċҜ3B?D/GJ0F-(DC$Xن>H 1Ak F8Q\JIGx(!wNF1^S}.}0=p^tC?(8OgC[8׾J"@N#*F54' A(Phkg]BDh@3KZ;qT+ ET@oPs '@]6B,Im5D|o>y c;"cwݓBy {'BIy1xaz d珃sp`_?4`O߹! eؒB zAsݛ!?HISCĘNY+b>]~>\"ZJ\2 M]0a۴k#hpو3R8׌5A !#6衟ɝa$)/%~,9#F1\G^X<.}<1@ 8b1#Skh `vK%d4Ȼp ntA$Yl!\I&lj  {ܙɦAgz<>kp}Rl(C"3<D-#fj.yi!FDO骠!CȈ0!yLF .Q$yKjO9Ұ;ilVr)|$x@gG| )=FOB9{gk|n4L=d]f}hjlݖnѣjGoG!%eԡlJ|ݗߌwv>^~%-5Z} 6 تoIz2y്mytęgnK>Y{袍>餕^馝~ͼ sgi񚰞zo BX>[`E;l垛ޛマ* N}6D#' 1>ȿymqN\=EM?U_]emuߝ}?_襟ꭿ7r-~a?}cѱeC!}?Lm'%_O~VrX msFFه]V%} G(JI9 mjy! 5hU)>0`pa0`;-9S4k Þq-C k#9▀!Q7&U|h]>uG?ck @A"n< 2C<8y$<`oQҒ)I&XBrZVFy` Wp- l Ik#  N {e,gJGlG) R%T^%`1?G6MlqD@?Dp36 !s= h./z->8iL%;ݸi *mtڬEy@<)D%QmAu]NsSo9թNG[$@(珙k)>Hz&EJ%U|ٲZ=iPJXI]Au!:13s{XV R>gOf=u#,MQT|bXǞQ0#}TXDSg}8"DVG0#Q> R5EH|k&L%\ :x)KF9ھnA X/9@Cd)kYCg QEfA+\".*Dy$CVTq2Ddya6nv]4_ @2$Sz3E}2ǀB^ q-a`"pa,bH#AHH$<`! Z.;cn>;nxb0bU@f18=@42=GFxb b+"č?|ⱑ)}<9`(&j8 |]sqm="C's5HDg,!9$.n$|1Z`Dצ j |c)XC8(щ>:19>ŬKgzӝ.ȧCR @Tq3FwA`sdIeJ(XgI&ؾA-\?G 9 `hHApl,R+jqoyN[Qm"xDFDAߌ(`\b F$50HxB:ҡIF}\25^# - cE" @W\-1q\kH.7Y d $(! .9A byV_ Q=zy &eDjOn/"V\¢R @@@ ׊ ^#iGx*tfP) Sdl!(#L`J0#B#.2p8! ZhP:@ lpt" #\i(4B ШA583ސJ/QNԮ"Q'F(` S@o6! 2~b|.&pl\p+PD4 ̎)"d8S ʉ,`72BALr%Y.17 2DGIʄ(؈ER(# V* Bh d բ )QVdID'_5pk"D  A ή 1]q3f#òzY Je+ !"  R"aVD¶O#!<㺒R-ג-ƙ"B8/) B!$@#.rB!AhTo,#h#J0AZb "CbsI$ne31 ".2r!Hj/|. _2M4)17b.PCCors717j BfQJx(8ӏ#5]"6omXB d pS) ; .TB!^0v:'J"O;3C2 b;0"#b< "f /9/,)Oe& ,pO=TcCMAR uR ò$)Yb?Hё΁G%L4#t r6P faQ[(\q> CE "]а_i` `Z,- !2 L QM bkrf%%8TE&Mau"b+ 2: /Cr*^K69SaaU&#bg?3s+8Oc; A8h3D#(6#aUpe*끺V@l>h+6hpeߡWԦB ȶl%-! Zg%n.'  xf3 Kld js \ eA>`+I,nZ4peF&``WG-T|\8( b{Ss\2A!,2E*C4)q U\8/!۶s2!V!%lH`) )0 H=˺HT:0ρ "gF7_} v035X7SNy$OYye#hnY"`n%(Quj&|, ǥ[cy ڠ-,P]8Bq uBƐ1b6Y 9@ضS B ii}&!,ԲD}bКl?iJt GU4`, *0G7VHQE*%+oy M k C"` c;8^ 0͝KK۴#ʲx&L?sFd@! NQ+#)/G& 2a'< ):W (bFaFB&fNܘ.AdICD%0HT *j"PdCrZ"䡅*PW Z"Af$ qNbB*4fbmԂ-\F7!$bt}L<: ?,C=ZeB!QZąHfkmiCC _|"R%Ȫd a|A$:vRO`$ bXfV##⠮m410lH2@_Z7(<,[JɉP@XSRV@?Vn#s&N?C=v^ݫ芲(%_(`0whO*^a0^Gt|ɘ8Qf&tXXabs^w- b:J#J6}ƪ6ELߙx^덷EfJYHZ_ f߿U%~>L41"+ursoeOKx, TL  Pn9qbT|K[GO;(_'R\_j_$o>U} -%I>"J̬2.6/FW_ ,@_ AʨlDn'N4)j:B9ۧüs,a #>|A}իsp.yȓ7o޾~w޾E`ƍ?|іXP=6 "T"ԭ\z}@wȍXd͢Uvlٳ~-X`… 2%q1yCA#H$MTK2iVũOB5F6z1Ҧ/JZP/־w/}B'}:<lG2p篶ԫ[=ܻ{>˛?>ۻ?ۿ?28O=U AA#@wCc/XPUACW!`>&\dH68;ri!W O[#WFKJKL!T@AQNY;ȃ;[Ri%)V CC#4)!cHte$ <t·!nI D0Hㆀ>cCUFHbTd<$ϟQ;MO݊kk lKll.;D(Z@Aȓei(p]ܣ<@SP}( W 3^TkN>2yMAU Tm4#@@LG&@2sNX$<{ȵe0W;ZK.T2A{чnUA=;o݋׾Oa$@?4 >2wzw~ xNxn]*@CЋ/K 7CttP}Z?{dC-;2C;>M2q@=lE\W_C9!@?;C&,??k;>RnoO6v>4L^t\#ME?6Uvxz;o+&HLQI'xVp- 9ޡ !n$, Op,l _0H󎟤x'rOpBĈ<!ଫP(FDil !J,.^7x*Tzz= !Dim|ZR uvů"^( ƽpXABre\.+Z%2P~LKN\6ZEq!b,;M> t\ :(,HrX(t7*sl3 hJsl'p!.R 1_y&aL) :괕0j8ד{ >Ĩw$LR$ mCQƠ|H`EH,mFqUge (s,?])О9nx!m;e%\W ְud-H $!*DR9T> vfL<ȇ` lbO#i"׌(WnT;wCh,hE cs}Gfaׂt 9 +lr>=Z;q65@\|(CA!-IP 7 JgTYD ށ}dü.yj(">8pN$O0O88IG=,0~eXGe=9ʃE:W|JYr ClL@?9DL8A6$awmƟsk֩cA($Yq \ " 1EJPh#yUZ+zִo\+Apz9U.rvD*0G~"cRLqKT$~Jk0@ d%QQK>N4 ?RK2ڞA(؄E8Sewq𭾃moq;76dku+xcocQ2')A+~o+[<')cg ?Ћ~;e( X~o~ /+oKԯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmo+xx7Q0xq2>y{ч(k ⇀"/ {(!@>/Sgg{g\ኰV[PnPQEaAE^h{H88~&0gr|2eщޑH׎ߡ\qH7frj[!`IuщY8BmMs!@$914she !)f KQg)Iდ߁ɔ1"5ԱP4KW\yYݱjW\>u'1b08VT҉uӗfIwI}%bO@2LpP0_2 (4? L92(m3#m /qx' QL6PeӚM | L`jI010Df&INћc ("/\&В^qjNPE$?`i>0)X\eɚ"&ivӞ ב@CٝF嚰)*y:-G$/^4BTTǙYu: i)_r$PP @j2Tj`/FU! Vz)Y]*?xќO9)s6q)Ӛ (/qbD/\a '% 0)_9%"ţ6Pyvj WznW{6\P2$!LB @hb#q#Q'+!1*ߐ0)!XG8KT0AWZ+S PqJ =[BՒv?봺QPP GP?CmC9:&0AՑ7:^zf;#+ sٳ<Dr9FN:ӪrS^\9~]F^4-n;/$w>DzDIe+V7O@ `ӱ bQJ嵡56A@ң$)^n44Կ:3# PF`[^ӎ3rK3ȝcKP? ā`<3q: x4.4I9(5 xSK6!JJ!KKN+&~Y@p cCz3 %TEI;*-L$ p NJd y );N J!yQ}0 ~t%!w)ac"b <߱@ 2st(wFnN(~Lɓ+Oy`1y1IE[ %d ElL}biq!G:4RI'RK/4SM7SO?T{4Ilk"Ei('䑭GG 2`Q/"R! g @XJG}Hh)J]N!`wGt&}W% $S4=bfj}#iM}zP\I  ,$MO9ڵ״<طߔ`kՖO[)dNczwFs*ϟ_"' dtqT!@nIc8da`J%@V!fN|^"8ȕ6i;eˁ?mXC r-KC^hlU nRWhul-M Ato%z1,6$}%uP?|'|G?}׏F5i879v 8@GGD ۓG=ഒC>Pq 8v~pZCy.!q0 G<ǽ„P8ߑ Ã܇SR:‴UE!<pHt8C\pTw}D`,xja*Zad QBY@?a y)A=1c "鄎` RT 8> C Xidp"1a?竖p QnL}q*%pzTb#ղ<΁KhG+AUlHdEpmgM|d H<_Q`J?B:P? x_-o9JBZŖ&\iBF C!%]JzҔe>SV:['AGH ^<>a1$8%AЋ-CkZպVխok\Z{,ЄÁ`1b;;&K؇bX#0gR1]ؘ.v'PrX;|cto+$, ]`]q@CVz{[j98!ꗍs @ C T iM(6XrA%n|VQ<0!`[t\DVW#F6!BWduW"Ӧv5`z0 P7>̣lm"bUI&fԠSj@ aI+g e w%r6#GC2p}C!K\xo}tBmfb\sZULYڔ!ԕ &;bAk1xM@/@AG:ƀ]ރEJ<9袁(`!YN XeH,|BJ= uJg9 ΄~_jsvmnwwfqF!ѹnuw=ozozw+o.>pGxp|ws7yus?zЅ>tGGzҕt7Ozԥ>uWWzֵ^O[{>vgI|Oj k v[Hw|?x%st4" yw}U2$PYIHU(/>V؋}u$yL.D  4gB!EeG&|e~&]Wb~?&0,?d裷F 082рl"ZH8w'caj < ty h h t &d~,|y  wx2At O8X+,B£'p:kxx)ɋ: J:-xr``C@A9y=d(ЭyHIB|`|}P }`; ąp 8P!0~@D~8MDQC<ÆC8-`a$Ƥ;RĄ~86dȐq%(s ޺0:hIs0 w }`  y0p! p1Jry}`G X"w0}@wPHW5qb4ɓDɔTIC PѺQH"whRa @dh0 9i *p\ ~ i ar!˩i 6ڇrq}㏴yI}X20D 8K+\ɾ˿,7O‡X `ٖXH>,rH`LS = +ìɆ`@IMX L$4N9QH}-:|HNL-O' %ҔkB ]pJxN~؍[TnXt,pO|< O"}s} ОNn`-D0}X':I5-<ُ( %s )"t0Gˇ> e+Ӛ A4#5 +,R A!n@AihD,8X@S#`bЮS&݇OKd{Fp,qRBjіs-MNF{!h- "ZȦoz0y(ǸLl&n`͇]fp $b|#*s8ѧX~8DB b ܇l"g}(VX%q͡`դ/LG؀X.d7Q70HƄ`.J{5:4 &_˄lAٜ! C-PS ثڬھگ۰۱eRE۴U۵e[ڶ۸۹ۖ8ۼ۽۾ۿ%5EUeuDžȕɥʵ%5EUeuׅؕ٥ڵ%5EUeu%5EUeu&"R,   E) `moק'FaEsЀFґ*~8Phtt (Rax~ ⟐4Ԓ&ڴԇY`i/n3jSP : H.ya IG㭘t0.}80Q!6b n3Šq*(!}`UN5OHY"v=XM]VއWey]9۟*j˻Z]YB8POjtRLFк8wS̓рF LsVt^gwaxV0B! lCSde~UVh~phXkVP> C\|܏zHqD`Is詄"y~ v(8(K} ؂ ^* :i6&t0yzo¼2Oy8{Ȅ.Ѡ(@jՠjy.{ 0vZQr#iFF+؁pP{xCypnw{h!/\Gʦ&N7dZaaQYX섐ύzVaNffmn( {clȄO89 j hyn6\  |by؁o> }^{ sPѣ C0ҀN ߽ݎ}RUNƀ(F?0 C3{Bo7p|nc& t0pU#Ydž W%>fjf%Fy v xRX-?8|&n޺l|j^vi l&?< ox=0 C+|X~C7lh KOop, ` m6XφCYu{+fm1)'Nn7ڡ&W"^8+t(TiwIɀl$o `ZA~Gy) g?`|t[yhxXTrz86CHxsj!(kFЖ~ןGЖt~ KȪ>_}W:' `IKJ)nN Z8d  xKɞĜ/"WّXZ' H&֌)a~ HsuO $ø^o"'n9&0:—9Ƨ '7GWgwׇؗ٧ڷ'7GWgw'7GWgwy|x'p "Lp!Æ9(q"Ŋ/b̨q#ǎ? )r$I2lA<&)s&͚6o̩s'Ϟ> *t(ѢF")O< \J4+oRZ4Ն 'לe~ ;֨ #Q_6y:ͫw/߾~,x0†&W>| 4k<] h*dm٧dʖ1K9i}D;pPuIزڞ`}JҶ\gny|`߇mVM1|;޿/~<&'4}e{yV`$O=1P!䷟D]Ds1XRuA<aE"!H$n(!N( !aA?D أ?CY#?m0>uQMN5E6 O#e}J6 &IsiP:c!'С6JПTe I*,YQ}>ZEܓ@ 46:u}NB EIJЭ͓B7$<,FUe봚 d-vaCT*ir YbKRRSI\pNp=D]cA?Ը:"#tevY@U#3]3Ϲ B8l2J>؅;PIqASQل`R\>^ >Dڐ]`#LR; uL|ҁLp]Dl4\o)ޢ#5 w΄7vo@xjl_C0;b*>~~t҅!]gՐ.3K.LOJ,(LL@gv>9cUTTݢJ_%DZu矇P/Пd-w#.#ID~<d+zh '$`ɂsA3~4Ed!ɖx@='0d2 1B"h% @z܃_>"0(J@ EDd0P:Y|}1|GLJU:5MmBPLJS4ylnf8)H48@K$#@t OƄL?6S l# LF,èD'IQp j#H..YcI΃h}Zք툂,a k"$JhE\` Ї W !V# 1CD}>6@l vm?-V#;(`ɾtUz [pb(c Vh!&FB!Wʈyy ]Uw 4@VƬ$l8(^:{&];(9Ȉ7$fD x? ~=C`]},EP6?R`% wC *Pn d)ͱ~➈ɖ.t"&<0N~۰$\ %A2 %ks(W9nތ<[qw t w*C=&>8:^q̪]1J0:Qu 29 DHȭ1>mf[>?JW|d D(l#co\Oۖ=`ZC<$z $cAaT䃸c!ֽZpj=l ڧz] EAW6}A `@|CD)R]@ȃ999$?CYB]OuY?Е@tغ,! Nj`>t]D  SM=h-A@8!l`2] ,nG170o< "y9,5 ,@xB68>4@ǽ2!C ~o !&BPb((b)&=>$AߝC?T?C-?pO>PexAbDD7LYB(FERݘ-4 @ڽT-z?%^?U^Bb =.C$CM.D+B=T݃F'x Ĝ C)$1^aؕX6e-@%2A^̟)BfdJdRf!BAd5 g38'>T IBRWTI9D aS0ڜ<.wq&IƱAC9 0ED;%@xS=STdX=́ Uΐ.=A@ ]Y- 9A OxP)}ܥYg?HˬJc! En6"Df !!㍞:{@;X}L( DXa§|N}2 ~2^R(U@?D! @XqeCv 68E De fC6L_>A=DL@3\%D)C|W]H[rֹ`@=#dLʽC}˔ Ů5jD, 90(|kRt DJD$$J(*$DtjH64ʿm]A+C^+i m}yBctB'8R_ kD뉉(C=JDúM@K|AD0E1+,>hNW:q؅iDÐlBmmrmzD@JM(h(X<0A{{q>420BJ 83M*:@Wf>TDqx@ہ^A^E TQ^$2r Dȃf"p٢ݍ@@-<{>Ḋ *h[CۦI*oyr>wɚL@DX@p- @S|nnN4~>-:Lc}ŇC@ d!/#'J0~.P/D@?ځ/m΃o02LR8}-8L?p@f-B؇g0UJ?XiN:0*Ʉm D?dlAqA4VD_pm%[%cr&O \tX@@9CbjC%4>d5˚GS d `e5F ܒ9@I%?k`)V)H2V@̓= A,q>=[r/[@<, AnnVA.`ɤ 3<&CF)7`g8}4pNP3>[dlZ@h@ 73@.'ߌ41Ek!-TSDE#NK]4I<lE*D1BtY/0<<ӥM{t(75*+V(8AE(k7s!DdUAS8mqȲ&lvmmQ,nnT4wh<RnY1o+r3ws;s(@32@wLH7u[XvH<vABPuwzzw{t=dlF]7}Epx 8CHЯvX' ź̔h3[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {IDW܋D:iCU l*[c>+GT8FM1*>sEbac<rLDttT-^@:@{*tRrn &|?c4А̣[#z{x*Ɠ<Ռ@A@7@Cj{D@ =r X< ;QKC/ TCc;ڙ NlʷC$JE\vtAU@=|Tҥ,- ܃L dLUf} L@ %;FhT BLUdQ@Z۳  <[KCI$HWeM>8LDL dPbw QMpȨ Cj8A/@:TS?' CĐ\)*dt۷(',9ܰ6@K'ǻwl0`Cs8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹgO?N'CS,B޽E!{P!aطo@Uy_|ՓsPU3ѹ-Ej=paÇ'AT|ChGCg4tpB=X@`>SeTQ퐊o mmX""耛YϡG>zuױg׾{wuϟN7!xlw =A:J` a&0(5}L0(z,ât0# A8!1"KeyCI" @l(}hhsh'G*2E+$ Z@ bN{>R-/ S1,1`-G37* G3bK1 ti /yXQ!Aǟ}F{Ɗ |6; y"Nu?"#5VikVmEꀴ H\"醹y2(.R}'|}VXsd0<^|ۃ.}ʳ(G e{PB|4s7Bƛ8͊DgwXD'㉴JX衉.裑NZi0ۧ~s"}eRBЧbt)۟̇ȆjO}^ZI[-uh(}@^1=FGil,ص!y p'|F_q]yL4e, JՀ}ƭOwFn({(zVU.p1*=Jy>ɦև^/Ryp{  8dG3> N1H87#S|؇~ pP hVCHx ٳ8X]X&xtD5 縁HpQDLOD6TtH)P\DN`SxYYD9Αu(LQt@>APDP74*iIJC8(pu#`B(Vayy_@<1u)C H>ͪ[4{B< x$B@@0`Mʮp?230C裏,R$4yD1Q>DTt;1YР*0&hHpc< d|oRH KA` 4@7ޡ~P|,EiH,58HbW:K6 8P* dtODVe5YњV1hTC{j]W} [T;@X.uc!{!e1YnjkgAZю5iQZծuka[Ζmq[o\%g\b{EgBn,B-np$-&{Jd$"0$dS5c58%&g>8mZP$J m$!,76gu7EBJ(oD GkJڪ1" ,> ?.hA27nnS n&m4*@>.pD-J2+RnT{(NVvg!7r#k\pXH281 `sJ@X3;93"40_4e@."b,BJ73!b6b$:G+$e aGBRFRR7*cv%}#jn# bHSZ1D2 XE{?O!,e,o$<.GDD ppc~/p4P"0Dzq[LRatԂ&b#o!1v"v2MM1DWl-Fl =FXF$v5Zp"'A8"QP("xGOLNf " ~`8!@"D"`-*z-j-"ZMgHXWQB96 |8xW;id ec&B*̆lfmm7F-* Ճ)+v"THjp  V!ڝJ{VeWAW.2?dUd$}6A.!B=e(G"aQB'**)0d !169'}k"zF(-2? ڎZe-x4ٍ"3pEEH1m!Nк&3*?:/Fg H"o*PHszZ]8_7HA!t{-&cxQlI>avh {)h,"i}Fi۬=? l"Lhlb|X#&oFk4RZ@, 2KHHR6:\[E=j׭HEZV"/ɝ|B|ʩODʵ|˹˽<|ɼ<|ټ<|荒1SCu\'뺘}c:?KʧCV}) u'9R.lu&,EbXIZ_t a=']I]qa{"b+֑LpWI# V^eٝ}!{fx&&#v")Eauݻ]xV0b=]Y_؎M',Ejqk^x)!,}=ۿ6lu%mdm%7 E7pH6--~VSmlb#nan=.'! H.,Uo=+mp p-BB'Έq ><ÿVخv4uyW<x-)L]AW&oiWa8@BfwwW.x;^yw/9z_{ݺ{w|#%[72^!K2;1'oT8թӋoo,*لAB&"2% JX}K[x,h؆-tE/<̻XaMapNtQ`)*ZW 5"W!礌PE8wV  } *,oÇ#JHŋ3jȱǏ -bA}"'bEtI͛8sɳϟ@ JѣH*]ʴӧPJ þ#p_=I8ϫžRd,va{NW* ;y,Vy }-H[ Ux^i_̀7/l|mZ_ Nȓ+_μ{bW޹̥꫗"} aDǛ? u(^^Ym隽bH'?(l J(v S:  m FafE'FHC;##> G<@)DiHj>{e%lY:?(>(ӏ^! 4ђ4+R 'ey}#<*>3CWfڕ$)ߊ ԓD(?駠*ꨤjꩨ ti]CaUP:CxuAAD 7 @=V*_Z )ЁQp!z4<TL6p ><@?lXpIȓ "G,WlgU}]7e3f̣CP%>c, D@y1Y# ZP#S,C!!9z

O:] >.i5INj O,*㏬7G.S=뤴y=p\Z(gOacH68AY~ y}[WU \O l!kX81ԷA#e{D_od .5Js Hb!:'H N07z GHBC~%L W0 gH8̡w@ H"HL&:PH*ZX̢.^ oC aL6r$>21ĎGsQ'Ї;\dFDlF:IAG<8CF'# K?8A܈)ҁ`uL,~H(KFq" ",JHL& epԨd6Z;]Niܥ<"p# 5iycDz We2rjD3\ ) @!8UDvl2{0mU1'͐ #eR664ψ'h5Ж0]*ƅ֤3* t­lyR#WGӚJS! XͪVM5FH ­ihI PцbH!!ְp AN4! HGfp,xpbeE AA^y$>e!Xff {!#N]]F TѰ 9:gRLo[#җ~lLqM.ZI ltzp$ !e@sS[HA-^RO!vJ$nH1Ԉ4t^Q%6"12#5²r8hEkj.%RTP# AQ 0 zPr}7rEj >F o P HV"nhR23WFr" PbP+c^{sD&%^L1x )7%XN@ؘEHS2 0#!ϧMː6 uA'a  taP ^0 aak`aW."UI&B-AfE#%pv."vV/ʢru'BU_ W0.)۸Lٔ8h{NP<0~P) nHqh2,2oK(q&++3fT53"3Z Ce %_S9coo;V32ĐrK6'wc,M@o^շ;>9G#2$c2"c\Tc5`Ѓ9 c Twk6o3?cA7&Bvhi 7ȓ="#0  Nٝ7ԍא߷ %p7F`OVs C;0:f‚;Y+{ i3L1K! ,P"`V$U2 ͅ`+ =>Lk Bբ % qc 5idZfzh!prJ/8Iav|ڧ~::}Ѣڨ:Zzک:JBf$:xGJ3rPWp pwdBK1Lڬ~Gvb9MdiO*x sQ*p;֮:Mi|!]Prh"Vؐ[`^" ^d= ]]k^s~^50R W%`bq"ED~敁vdg'gVyWTaK \۵G0 _o"ZTp8'?`Z%1p00^gp =–!qP{FcP   ' r {.x z;Z"xPyA*+/F y`!))n |tzQт E(21T26uRJ(lh##Vi1!a"Y "jg{#9b;K5yP) ˀVǻ7%]Bi|x((76U))Ո[,C$@q Px 6NHHќE ,oi3+C0b C@\B N\7i&+ 1S82B 56sS7A7SCr<! :Pqh#60`NnJԽ'%\j^ 2{Inkʴ?C??t\ʦC +̦ ʮB4 P0JAh˺)(qz:lB <|4"Œ<\|؜ڼ< S P=i ]F=$S 1'44OkmKDSqq<52]<Au[ E[<#c}~MzP>̇M(Bq])= i!4̲G{ ;"{Tދ ذe CT5Ů'ڪ#AAZ  p|^i A PUƞ͆A0` zŲ=~O2%U;VHY& {$J[(YYŗmWxU.%.Ӥ [f)TRoRa4aIpc.2olҤ&foi 1;n$ ϶a 01]->N QPJp%D1'+a@孇|~N# ޠ_~OTxOPQWTv>nQ-rgsu(`0Qi}'[Zp8s!p(t$Ô: ˑEY:@h#`Ӕ?%_l^vr/gt}Q.i½aGkdJ(!h0Wna݄#[vߕ!K;@ #"pfkFB.|p 1P6>2Q $XA .dC%NXE5nG!E$YI)UdK1eΤ2< e#PP>ӠP޽ πA  {"mbԞPRZ@pOK< e[Ztɕ7]\]췯 'Lo) &#D\g `ؾs0ć-ko'^qɕ/g9o8]~'0~.`} 4ݾsOU_` yI w<Zja(Be炁@'db* -駴~"K1! MsC 9 @d'(䉀 GЩ$Yr ($rK.K0sL24L]HT(}}I <'|s  ``y(* B"S!;9QF z ǂ79ȳl Q|YM‡ {,y }$[ Jn!tՇBG:k{"CmCA}" ]3A-sm)t fFF>qP dy1wva#xb+bCK\91XVIM&{=q 2yK2h.fx`C(pս#sF8Qs!,P3ȋ>j|gk^t ~d?A e$I*Nr5RԢ2ڈlB#H`zd9 B`=beH: m@!=Xp~emk]8fC?$=0-X(р hp,X` G?Ps;@XKfagR֩,X!!8 Z)o}{_.O?ZK>g`- |2f¯8ƍrO80!񀸘GAњ0e  ( !Rtc/qm|cXtG= ' ĐY{Y6ldc^ ;dQ_g?ks#r|(؇!ϩǠY"Yss/-9@? (l r?Ą}ā Pu xզAOB "BO2fgآPum}5GUD?u"bzP)An0tυa>(t ZHe8b3.5IQ}кfwg^C &1c{U;(HUg eg>4߂ǯ2D3A,%FtC}C'yMLZz-Zx#B:5X͔ X>VQV>sk|.PL*ZeRLaNE َՙlor 2}ڇzqrFBԧo]s"σP(Da0j9ߡˀ&93mVl(R A 2íqB9m}m{/Dw#C恰l@'~|cO{܋0G_ӧw?@~}=~_g~__ ?@,@ t @Ȇ?`@ @K}` 6 c@|ڂc~t((D G,@ n@ 03S%ԇsB,׳0&/l ܑ[ #Ŀ^ H,C<4IBrAP{0C`&CKֻ (80{?|@h㢀(x;9Ā~ɆD\w@'])ز{i9*PQRSTTł"o@*X!Θ*|ƸSyh'LlGwt7  0PıR% ya I82){x(85>K"Fmj\5ƪ~HZ*x8lȏB΢2ђ;wItAI\aF)wcX ؐ ~8&dPGH xEkpݸzL9-lA9_LD!7T͈ hlzw`/:9XGnI|‣ZKwhH|0Ay`tZ&k(X v| k;R~My2\d}L\ 2;9뀴1`HȼN쬯P+tX4P='1 S lH=;DX*oȆRG9܌{"KChuL" sN PJр{h|Т3ˊ čwpyhB+BA4sDЁyM0],9]$P{(N'C((p8q P0 ẃؼ \hD0g[}x. PiZA؉Y/\#ؑԻϒ cS`{xSe.HL=SMM"ɆH(]]01Eaз!́It"} TX>h*(!"TUUEV'Ӈ7#"=8 '8s86N-Ws$ͫ){d|Ҙ tЇ&$~9Mn8 јc?pU؇lP }8spjE8hnW{WE}{GX\ؾ#[(8as ZuȕI`CȚ`wX8a;t<#@7"S]ȁ8t༆ǹ ˢFi u'c?@{V 3 @t7XPLZ\ 7\[{2A]-]u-=]]]ֵ*i]؍]ٝ]ڭ]۽]]]]] ^^,^M^U1:8^^ȇY#USH¼^D?XIKlFFa@ y(`v `ˇ8\P,h䖹d)ӇFƑE!"#N%>Zǡڮݩ &]œVڂ>hk`.MH5eb4FȈw20*H96s_ndGʀWǐLs8lߜLcOUȚ* ~79+"b 3@87hwHsU䭱sH! =iȉ< ρ2}dpgC42O\q2yILWr猽0.C_Ee' yT0 Ȳb߂Ky(Kʭlحw{`I t$gn wpD g  ';JL|l(fg>w"D0F`6<(Il`]ȍQy`gc'804 Kh&k=1'EmEgD(O0|~xa9 #}萅&lAf@RϺ^m֖; h\gO͈g.Ϧ>C{n&ZMFx)~R>΄7X .o6|`6B֙TS@l %u ̎kD5zosk:O1 =O؇_gX"m(&>H,a[.qd%<˨B.f叵(:HX1w@BS}&xzX8a#PP S0[%C$9 +C"?8< ,9{87cdSs87q9# ڛxWd O-+g-s#}dWA,\t1@yn8D9X[%XAX*'SIO4I͒ QX[iXi"y;`9oF]}[yh8xlȚ T$)! AO0]ڦ}Z9o&@fLXw# }@!yR͐idt<ذxѩÙ[c/`sgyBOy?T8_y"豅8 Fyy ?zOz_zozzzzzKy zD?d ףc *#Bb͢CRBA򔽲^- |׈|D!2ʣH${V VрH,0"|P8HPΑG &k @ԇ2cЀ4sHoEK ]ݒ?o (L~XFR t ]X者}3v> ɓ/ Ggˆ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:wY1<۷O޾tɫw,(Qy ZŪkӪLSgFXJGq(oByVM?}LZ 6nԣEbwnDPO^y߾y M!t㦋p+#C;h`;7? 8 x =Mx0O=)#MP>!87;D4>0}%*=N ^ͳ D 죏) AΝ#셙*7Ȼ3D$B=J4<4M;4QK=5UȠ,/8?p1)cD9[Qg] $>yτD|Aq> k=.SQDg QIQhwts+} 4ԣO6P @D> cAtM.:馣 ń3MuΜlaG -ho#RL|<K<~z|:3p6r$~_B|?)7@4@sP`x|H>0TiBApG8p[)<83! ֝K;qD4'$K!U| )` p>я%$-16D% jv#=~cLaw X;;" K(=2~; Џ DHy<24d%qIC<0IqMGa!IH:H:"Po"tH|M#yp؁J@e:pf;IiV  f #Q{%ЇaU(3Й= 5:$L$& >m#T:iMlFġ튨<& CxhOq"&DҖr2}`#aK}:ӄMH@s(jhA1~#u8q(hj&#αYjO0"Awā8DANiRs!k 6y(KCxBTR+# Uq @AVS@=-jSղ%6'bq"8 <t(5SUUc)";<SDzO HUPAs^ZUՅ<5ZeBwF5[!(DXxn1#bQH0?D *zKͅCH;& y{ݖbd]Qy Ƀ/$jn|)(xXUPwMs* )4]ȯ0i$BpD q&OdqEǕ-ҐH 'J <՘p53soyX:'.FP K{R|, y0^#W=]CMB?+32[@MG/}P-@@@aG90'MŅQZS.ty+)Z[MWHD7P?WD_fCfmYQG` E8`h@`F (BlvN,ʼnuAźC]xB))'dFD8W5FDDZKh\C"_-A^d>P}u C<)Dĵm=\I vd ĉN.B.!Ẽ2` TG¼-6.c3&7Jġd=݉9>@,BV`T:?CL>P >xBD? 4FC02b^B>fb@F>RB9h<A6X@E8< Q܃59LcZ /XO$PP¡͝E ǁEE\4>R>,C?E8X\t@?|Da^YѠǹQbUU<E[Řt Tޛ4. 0`ԃ$&B0L6pD]B$|?=Rf&$&`&?l C]5D6̟p%gjLAdE hԃfl 9%KEHeWAL}0QD&3ݏ`&7XK-&"iD>(EZ FUBqA 圀E^B\%(0SL*ZC7Ӄj͈ :#hd@6ńs78 05B%TH }DI^bD8FF@8YnŗQT!D'8(Q@}ۥ#DCABi #1nq>d8XR__eNHmQPeՈDžR LvÝ5*jB 8%( R`B8 ;C} ):=Bu xd<'Ui?aD4Q H=T`H|STݛ*MJ]> $)LS%+kN-$<<YBX>,;@> ԃ!=VC`CH#RjC|:G21Bc\Ta@,݃%{ԃC?̅u[)%,m0CdCE=X=d%)t R<,lAD@=DVc`q<4m<mߣfiKlNub{Qy[i[lӾ]Ŧȃ"> V`NDAK߾-R~^F.jL>@6;p=dVFhU1Qv:*(F:@50zRX@\@N &@q\uRY *iQt*0FD:F0@x>D >T:3;1Jl; R( Vo X*='B/4C77C)j1pC(P.L N|C4KKt~ 4LP\17 ea(4PP5QtD+I TWU_5VgVo5WwW5XX5YY5ZZ5[[5\ǵ\5]׵]5^^k^qɖUcD` N 6JDlŀ$q` %c(d[adfo6gooŮ*;#lJ0Guq̂sf`tlwm6nNoLqìVhWCn[c@ hWDrr{EJ?LH\>0A%nh8$ZpVG>@ hx(;Q` f@S6C]Prw1xQ:ZI @2>`\Bu'D,qAF#E?;A:綏8!PfS8THwlU0YWXtēgVQ<ڄ\Ѕ]CGboWb,FcB!f0LD0R|#tŋ/=ҧ U F>̐TճD H\ \h\94K){ ;L@$g~$>t6p-EDit&DaFdNM~ƢLȝhՃ(P.݀0+e8w‹Ɏ>lkD,l»wO ';((ͣl4y}!Pu )ϟɛZL/tnE}c~M< @?}[Kh~ I$C qO{:B(0!ၾk$Ec t;%bA$O@/fD'# E0vla&>XAoE F1E'=9D<;zf'oBþ9d~ds(!Tof <\|% - 5ܐ=#Lǐ4K'XM!% :9yVcAG1 x@2 OL4{D;L<ǟdQ-zRj{zQ Ġ}PBz(#Fx`A@~@aTh"~ܳOy4 N9G/C-8@ZiEC2"|чyΙwJ8\3 QEu \NşP@![ U(k ' Ȳ9P'J7ys{`U^{5 =#Hv=A^hZyB؇ B? x3&^!";~t1i{Q=lL|'@䖃<y؞8$pQ=!Ah<2 .C(pZox(PrֲcI2> IȆ<CPٸ 0""BzX` gT:m$3I ` x%;ь8m\0`jmT"HG>$)YIK#Ɋ`z @ [x]"(@?8" c6V}8HNIdje(ULBQ`L@0ճ$ГuaNۇ( 0ѳw. >ܙnFeyGIyZ 9tTH0}1XCg-P}G<}$,[#|$`"""@0\T˹c9i($Q=eGw@IДUc8  bbHwMǐJ઀(RUA U@ -D@{tATO?8.Y~hI[ZӞVf| YՀRч@ސGd DUa\.Z+1FtuhF6Q&|TNՒzEwLcj| { t8cov~Bԅp|X!^oKQ(̡ye!!܃%AhDlt1>ŘmG:FyIg 9<{s l 錅M}{/){&CRtX0ޡDi!P!gh!6V ^ҿ#/ Gfu7) С9.Ir>ƣ x$G0[}<  csSZb6eN~\:mfUW>~L؞ (cppؘ"[J\3ΌG=Pj͸% u.+jWxCKo p=1nMbC5I  ^wh-.6E[@,zNi":< |߶- ;8pfcS@c3n@!rb Q~x0F*?cvb MB &()*R**/ƥ%lA~v`ZO!ZHю2fȃ~cX0NW!-AB*"8A R21EB"4,ல0Hj#q0a+%0! "aܡ0Dx(",cpR13Z7Bxf(5K21hX@ya\-@,ip\ĥ#.[O@c C`d86 <`\ExNd37d( @`A]:^l>Ukr b;+|m@zCҩ.$צ}ڎ^zAb:Wl:S5#bTHqhx" T?\MPƓ a["TkX1-F[[? AL!dvMu8Ō;~ 9w1tքu6(B;a: Hrg*Px`P M&{P"TpoKLT5Nډw=L{Nƴrҧ's>p z;a_܏?p g?fSO%#BA'> "Du}XՀt>"0!GXw^)&wupKQ3ZZ<_)'QQ(W[%F5!Y\updӡqkQAX[yݓɩi>نn%DoyԬp~З)X@[I0fCptІ kІTB6M(t'ep /p? qOLqcMRBNDa>!NuO<܈A#)̏<4>C_%^4P" Oq|&Q;lr]V0O72`P$f%i"`>&ed&E]$'H͕هA3*2T`rsaxp 萏Xr>* zA@T,F#PvaUzMkзxrh=f2̏ אF Ar ,}8_)$̐P}X3<,%F/PQ WPũ#Dap{Bf#@6ּ%V`ps9;H"BLX*0Ǿ0w BzvɝGh<̋Hp{ZAt52;>_R2t ` {ṽ5A'OKu=9G?d\qFI"@cl}jhZ |)LjAH@a0&FP4ΣH4Ca  g8r=yC]Y*reJZ-mpץȜC]0@h F bAYLU C"C;cEO뒏#d<'Nkvq~Ǹ˽6t݇ s{{X\WS~Bԙ|Wi͐eD&dk ø5Z{ _a STmZdG D] @&;H ԭ տO\p9l#*Rz Jlr!z LcVf`q`dq.|u|g`Ms4ssQp%VrQշ!Me!e I~fr'xSlT'1vMG!WNAXH1Ew)NbF'#~&"g6З`}wx>>z3+ }`] 'dr5 3 z qx.4p>(Gq!~/|1R8|Ȋ芯Z(GRVkfUS*`7fCvS0MH5c8BYP /r ';h LN:vp:P,& M`@08Pd3' j1*a q`fNOA(tlP?rt}5'\sZR~!"F&t]17Y rג|sNy&_Ew$'c$pyZX4&i\"@iq!"pӈ)6P4"H 0 b}q M}`.zƔ L ?{c0^i=sėF#Sw)Yx 6S&]Qjd8$y٩ɝueE[KL&EpY`O1+v籇$QbApa hp@#5/sLf4@H)Qsd /7ٰQ[b#uKF HaP>e`@71g&P,4Hឦ U=*CdA?::`ol.e0//q `c)pzpV`eJvGP .u)6U'OJp >2 p&`C`zLS R4r-` 0ܐ*'AdKj1gj6"`hu/pRRZPЁ@&% p x %SKxra jT%x 'qp A& ^5ըEʚ!ԁ]' я@-Fs↧Fz[x;A(;41+3K5keuo.*'.` 96, wB,! dVs#pLwben.SKo<ހ%H`Qˌz1%L._08`m"'F .@Pj!b% ` Q[!%FAGr cDK#rŕ 0 3iO bd`LaK:7#]Z$QQPL `Iм(PlX oQsд ˉ;LC$}dдw&^=ˉ+a$ .$}'2*\VUy ~414,2D瑴 qPr4AR|0+=AC!KcM\Rd7id!LaPQ#7 ȁ,ȃ\X:'Lȏas:Ƕ0!P0!/A4tej+]mIKMOH SMUmWY0R]_ a-Tcmgikmeo q-sM2]wy{׳} ؁-؃M؅Mm؉؋؍M׈ؑ-ٓMٕ]Ԑmٙٛٝј١-ڣMڥʠmکګڭ=|ڱ-۳M۵Fm۹ۻ۽}-Mܾ ōɭ -zm׍ٝխ 9Mm -Mm .Nn .Nn!.#N%n')+-/1.3N5n79;=?A.CNEnGIKMOQ.SNUnWY[]_a.cNengikmoq.sNunwy{}.Nn臎艮.Nn闎陮.Nn꧎ꩮ.Nn뷎빮.Nnǎɮ.Nn׎ٮ.Nn.Nn/Oo /Oo!/#O%o')+-/1/3O5o79;=?A/COEoGIKMOQ/SOUoWY[]_a/cOeogikmoq/sOuowy{}/Oo/Oo/Oo/Oo/OoǏɯ/Oo׏ٯ/Oo/OoN@ DPB >QD-^ĘQF=~RH%MDRJ-]SL5męSN=}TPEETRM>UTU^ŚUV]~VXe͞EVZmݾW\uśW^}X`… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥMFZj֭][lڵmƝ[n޽}\pōG\r͝?]tխ_Ǟ]vݽ^x͟G^zݿ_|ǟ_~0@$@D0AdA0B 'B /0C 7C?1DG$DOD1EWdE_1FgFo1GwG2H!$H#D2I%dI'2J)J+2K-K/3L1$L3D3M5dM7߄3N9礳N;3O=O?4PA%PCE4QEeQG4RI'RK/4SM7SO?5TQG%TSOE5UUWeUW_5VYgV[o5W]w嵡! ,f664^^\jjl&&$nnlVVT ..,224ZZ\JJL**,::<BBDzz|""$bbd>>@|$00<08  ¾b\` ^d`̜Ȧtv`xp@t~nfHLF@tntĒx\~xltt䘠|vpfp<<4 `ԺPXX̞xbhd\tH@hH:HlvVl80L86(Nfbxtttl0 0.l0.0(:0FJ@xnf`0@XPX ʔ||4<<~zfhtfİ*$L@:$<`p||rvx `4ԴvvtFFDFF N>ԳEF)TV Y#@=#(ͣ % O Ih&QlIGqvdP>p(`堄jj_wL@@A# FA22dC,iIt:*B6Īz&sFA?f 2+[T>3;@ :6&H|FAHn[Sd鲏% -ښACQ?``,p<ΑhBx@:K~pa@O=xPHZi ϲ,@ @t>H,:3,2a7X6@r>>C(́ C@)=sںM< @BC;F#]MhE@Iу2.PΈ,4:/v [!xrN(3v9p9;@#\ 77Tsl{::'-  =#=o #Q |%e#~LJF#x"G$ XP |C77 +1AzP  {$uhG2өD (C YS z 2dCP!IHHA? dSrA!Ƀ=,`U%@a}s!wp؁'XFđ$2K@'J `GnyVWH_ L j MB X`PL%(@D=Alx:&]0jV`A"Џ @m*Cgy 0)A"x2y/ n J@dpwZUWlU1V:u LmS&Fd`>2Mj3s+]md"p~D I n"!>C~jb)Ҁ}cG*߭я0k\nV2Q`-H[yPDLZ,zYr0s2#Vk>umJ""ykMϊe2<HA?CXlA'8"x# `]gL%+X@t-H >E'H>܂0U`ٿrGԣQ;@ [ !]B&ꁢju?x@ $汷A[ޣ IqãrëBЇN%$R>F =|A&*]CI1^En< P`!9]dǬ)7{_˺@ZKQpyDB\=4k 1jbDu Ka-@;ߑ)b|BaC;9A߃.1 "ۚ2\ѧO[)/>69" *D\ w~H|@Ph<IRP{T'EV== 0 ` 77@W5@M}kc_0pwV $ '3ydRgS H`(+H# 0['G9`r 8*p`8@/gV q$7\pXpr!G@WC?r `S\=%aw6p$@aPԈ|Mpq٠` 0$z(G0nL 3&D &G &cgMM&" \p O6p%WD`KRxV$(/ LP CRݳ C#1+@"rsx Y@Jw! iy ّp>P)A&@h(029E9HJLٔNPR9TYVyXZ\ٕ^`b }=Wf.Ӊ^T!9<.scYvyx ~d /Ȃ*{Xv"2ygC@SEmæ.3p4\1F])"" !`yz }"0q!"4 C\cMc S,`_ $0[U#0xňٞ`{Ep /%u: dT{p$WPS@pNI`j١Mu[P)y'P27v) q% 0w z5,"K" Ŝ HJ q,:R>3/gmCP@ .0eـƄ` vzxz}"*,Չ"gY``S0fq`waH%  +Jl@l[Ve 6 -4}ڒᡊ0OA`dzJF@3mP /D?#ըpXme P" :,f0Yq$p"Aɕ a/dOf#`6-[KAR#!P0"W$  (77+ p-y:<x>p1r]/@\"%"Ziuh:p@:=`!qT =KӚ##F#ud`V#HBmI$*{MGP[} a&p hTc =P5(04<䥉[{q^HٶA$Z]ZA1aX@WgU;bes۽!$!e껾 Qq;`||2?@.Q16 \,|l IB>-<RE<SxـC; @PRnk0QŚљ,!3S m !i=|x%"N"H3SBr[\ž$!O ')Zٜ3~Zr0oɜarf,':٩e<)癞ǺR\}0*B:L\*Cuq2@Vuz(T [;'W@g*/РjDZ>*'4R,98WXX䂰l1/]|)7F*hzlEV0Ӣ1a0(mA*}aL58E:j=pS2˵DJ-H'K 0o05$@6 Sd&Z:A173p#7tc7906,>@>%TD't)ԩ ? {gp% |"%]29 $>DԆ^'0Q"]@ V D ߤ:qAAE+zaLRFRǧq㈪eq$Rd.J;QtVPF1G P X 6׀4{Y#LۭTYK*LI&f+M?4 #hMK/'4l @Ji,4lt۬Қhw5<>HC{+&ZtTˇEi!K:%>9 `vmz#-a릫@S }^ P5QMR  de:'5%!YqXf4P2YRTPQ5UqUVSPrR!VY]J^tf*rP5mf R7Ws < װ Gp \f R3_WUWA2ORvE(`W'aO֊I +/_am誮jxr*+5\M"0Q"`V Pɔ/P *CEv/MU[YlFW:J|:@F9r-f,o#L5cT-<60,,64_y"YK~@| ʯZ|m,[$K m^x^m.{l6$7 G߼}5诟(o_|Dq{$)P<1R_t%Q y"=.L$6gSbwD!,1 LL2/wɓ1𛷢30rb`媔cй2GӇ x/>omE'21|}gay}wOOڐХ}\mܹuo'^qɕ/gsѥO^uٵ+G` FG!l}Xq߄mn_,甼LJ ~}zG\wNدO bϟ d!, G 7FYa$h3?7 /7 /y!1 sL7@ g}'}JBH4J0偊wGCM8sN:NO@|HAs(ǐ/ x@!L 8zaє{@௓@ "ا-:r$;YwGXD-z4ԁ(/ i*#[iʡZ}"˦*>2&2@tmKF!! |C{L|gFx W&ϑi[I`meڸc*( ASVye[vecyfk+P ܧ2b8y8ч o"C,@3D؁y֪y(3KPʂ + `} RE{R*ͮa:Gڶb's:zP:ʌs *s{ق-tyR'I|FE)[W\|Rot +R$"0wvP(C~~o.u#C" 9?8 p(3 Ѻ#n66p8H0" 0 (EHt̃M$Iq}c,B|p |W/h*k9VT@\x oH<n|40KB$]nҠāQB* g.xG?ad0682AA#<@$A@AOde+]JXR%Aw2xyR$f1yLd&Sdf3GėZI.yMlfSf7MpSP>Gzɲ Qdg;NxSg=ul%g?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens,ϥnu ;fb7 vtwǙTw^żeo{{*X bqHua5P >v H8G1E:Kͣuؼҝ*|Dxn9eqW xcɐԍeHc=Z# f ^b"IK )W.[J/,Xkhlx7 х@Pz<4eȀ 9fR N$CL˓N#gOE_^4X*=MˤXAHj6Z=ȥ >&#Cܲ:Cf7fdPsՉj$cb&>eIuqX{L rn9}u{AD O("WL: &@a Q@B DAH$6XȈ&xcPUl/DC^2nIHDm2Y4I dX%5mLHI@@(;0$( @'LRGOқ:P<G^򓇥C`p4H:zF-(2t9byA$A O<ij@ |>?x?ɀyC} ?{I# ;b# } 88x,iӠ '¿ЅDAdAAaH ш0ĕFLD"`>R,o5r3xw p}pWсHyCVTy, } hg̋、@3/ NᐹPrt$ 8-CX6= 0 yEq y}`2Z}ƁP W,w8C, <) zܳ&hFaE EYFE\L7H##y H~G }x.bd|e{PilʹH[l'ȯDCZ 6X , ϓ4EKf8(Ik@SAP;0K0CF2+ˈ|ј";m+ Y @`4ayh1(ȆQ PDxXF;3a4[C0ȇRPZĊ &"㴍д K@y0͑p̐mq5Pcx0PP9Jq p:˴̤ 4 7C |@ QRiH2yȆq{k 0&8zЄHS;R,H" 9T#}%3K RBP}O X+Q KE|=RdRYF@DLӬʔ LQ%EՌywGQr-X5-|OӶ' VM  8Fd }= ~ R8`}Tۈ`978 PΑ%HEtu(3>J Y2\s]y %2B\R P)_yvD֒( @8CN\yRN[PSb؇ +aU0w2 OyEijq͖KږX  `5Ŋu9004}.>Ґ!F=T+ ȆF"a %,1JY aaXZ>(_ѥ`b7S =豯xdYiAFPvo Д 1& (571 14>Iac>!ْ`"(nHUTQy^TՃxIV`ֲ9e'I@*U|Z?`" 2n(JnS",".Jt!& ظCk1n /҇9ǁ00* Qm=z:Z|Ȇ!md2W$>otG_'% ?lc&I*H~tPk2WMُPCgdJxhQu[O&|tiLXueڧYs;udOve_vfovgvhvivjvkvlvm- Ȁ-p2#Ou1wRDQovvx Q ȕ }ny Ȁ(5ǎ躼wå؏KrHxw> (`&y|hpX1ܨ @,@ @&K:<8ՒP^&ӦKܒyFȁ-0pyPywy ]nq ;{vx{Z[p<|@|{X }zxL@lN o-QA2K GySd y-0ۈdԟ)|IʇϊTQcwЅ`Y);<CЇ埣9 &/2=50گ W}OiA9V&4`T,R.P(m@>XfK p O} 4ԣϏ,(p#+ @?Qۉɧ@ԣ@,;_0Ž/ N[?Ӓ؋/^v@h^p\J;d I Xʫm A"^˃;P8}oHt9h_6 .:R.hm>$Q>FI5V9 3]NL賵MQw,4?[HmO?@WsER' Zo[h0H,d B3ь4 d|Ӟ@ҡ] @B`&yI"2CXφB$PpaӘ)3R)}ЇEQĔ񀆮!IC/GK}t/8@ʈ#0l qA(ac21ߑJҜ=#7Cl=X~ؘA)Q$K:yp +cOZ/bO :mZ(L| RC:C"" R8l#C^!|X[nA`D=!VWj VJ`s`UP8m ن4u-s}r  lSty% akA'>ρ}XK xnt š㺃1s dH w6#m-A?4bǓ4 &&tб8"(t~dIȃ;> {q CzI d $^>dCE> }w"[G6x@o1ZS(>~CiHy @ Xò j +!RF5oox(8V= zUNEiu F2i^,_C(ُ|$aac@\= at,rK3 ʒk]#´@2 `,xG.m`+_n|(Az=w,C`!Yx ^%^cYbG<عȲ\/?~^X$@Kq),|%Ka<VhY$"9@?(0c==8BC1GfBYC dC:_6=QD:|B7„<`4;91A>4`_>0!D?8@8 ,R,ICR`>N] 81J(B T;P߱9_yCҼCȃu.DZuCm5BVԽ@ZaXZ3}_B@ԟ ) >IԃEIElb 1Akjm@|sC_,i|@(|*!j- VDCA4  u7N6FGDC oDD#_>@bjQA4c>j z LJ|&.&p^C@$*z"a@,@n%2**Y^>"J$KK$yxDd̓!XT@ <NID.= LTX2Gt∍<E !`Ce==e17!DcIDľL"E ?L6TH!CH@WJ㢥CVd+)CT cg>,M2BE%e ;dfd9;`,_&$C =)DuPyRDSSsHA>>g =,e=Cxb-C vp)L))F@=\s<dC@BQ=`e@0]+C-1!|_T)R$BtH CsG؂B@ aX8$|#] ,DmA@k࠽2P.0ܢTZvD62jB*J Pk3f&d# TCALA*N!B0-胇m꠱I(DɃ;Z(-b+*{CB\!*I >"D<'UyEAC?T?Ǣ?[>P@d?:£ ;?|֫Hc*;jJLTr,O$#؆>87.h_3CXs&[D:-: > Wl?T;jBsl%V?ɫ^Lm,e@4W8:t$?x.Ʈή4[rl<_ò<_C>b_&bm^ S(>*6"gCU2#|E@C6$!Ad+T,/%}'&hfD?6m¦-Я<ĨA$BFɒDCúE1DRbʚp[AD6Hnj" 7tV47 bĦ0B, BB -r~;&pc#D$Zwx)/^*HKU^ 26Ҹ;P+.EXdgmZ'D(sPhq 2 F4O35WXL hTh_T5s:EMU@C1kǒ0`23Fz01DtR! >#'ƔS#HP23m 4Cr"f?76;xDL iP_ȃ#˜ EJ!\">b$e<3,u8{>g ܉H/w^ D*|.=E3aP5k=,ssXIO5܃!_>t|/:ovDtOz]ݵd+wt!!P=vQ+A 'Bt 8kY=P0׌ ^FWiC fcpCDAm+ŒMHwV n}`\C9,79Ez'D7 \ȝCm[O8W85@30DCe!Jd[ C<hXKxql T93FY,%C s(*̕t8Ax!uB0\dG ^ Z'yѕ")+chTD77\HTC1|F;B(BjV@SaD6\䕑#9C@N"TYTF=x>ad\\(:=<,?5p-@Y랍㸎Fx DS;lQփ2DmCd>@4и'ċҜ3B?D/GJ0F-(DC$Xن>H 1Ak F8Q\JIGx(!wNF1^S}.}0=p^tC?(8OgC[8׾J"@N#*F54' A(Phkg]BDh@3KZ;qT+ ET@oPs '@]6B,Im5D|o>y c;"cwݓBy {'BIy1xaz d珃sp`_?4`O߹! eؒB zAsݛ!?HISCĘNY+b>]~>\"ZJ\2 M]0a۴k#hpو3R8׌5A !#6衟ɝa$)/%~,9#F1\G^X<.}<1@ 8b1#Skh `vK%d4Ȼp ntA$Yl!\I&lj  {ܙɦAgz<>kp}Rl(C"3<D-#fj.yi!FDO骠!CȈ0!yLF .Q$yKjO9Ұ;ilVr)|$x@gG| )=FOB9{gk|n4L=d]f}hjlݖnѣjGoG!%eԡlJ|ݗߌwv>^~%-5Z} 6 تoIz2y്mytęgnK>Y{袍>餕^馝~ͼ sgi񚰞zo BX>[`E;l垛ޛマ* N}6D#' 1>ȿymqN\=EM?U_]emuߝ}?_襟ꭿ7r-~a?}cѱeC!}?Lm'%_O~VrX msFFه]V%} G(JI9 mjy! 5hU)>0`pa0`;-9S4k Þq-C k#9▀!Q7&U|h]>uG?ck @A"n< 2C<8y$<`oQҒ)I&XBrZVFy` Wp- l Ik#  N {e,gJGlG) R%T^%`1?G6MlqD@?Dp36 !s= h./z->8iL%;ݸi *mtڬEy@<)D%QmAu]NsSo9թNG[$@(珙k)>Hz&EJ%U|ٲZ=iPJXI]Au!:13s{XV R>gOf=u#,MQT|bXǞQ0#}TXDSg}8"DVG0#Q> R5EH|k&L%\ :x)KF9ھnA X/9@Cd)kYCg QEfA+\".*Dy$CVTq2Ddya6nv]4_ @2$Sz3E}2ǀB^ q-a`"pa,bH#AHH$<`! Z.;cn>;nxb0bU@f18=@42=GFxb b+"č?|ⱑ)}<9`(&j8 |]sqm="C's5HDg,!9$.n$|1Z`Dצ j |c)XC8(щ>:19>ŬKgzӝ.ȧCR @Tq3FwA`sdIeJ(XgI&ؾA-\?G 9 `hHApl,R+jqoyN[Qm"xDFDAߌ(`\b F$50HxB:ҡIF}\25^# - cE" @W\-1q\kH.7Y d $(! .9A byV_ Q=zy &eDjOn/"V\¢R @@@ ׊ ^#iGx*tfP) Sdl!(#L`J0#B#.2p8! ZhP:@ lpt" #\i(4B ШA583ސJ/QNԮ"Q'F(` S@o6! 2~b|.&pl\p+PD4 ̎)"d8S ʉ,`72BALr%Y.17 2DGIʄ(؈ER(# V* Bh d բ )QVdID'_5pk"D  A ή 1]q3f#òzY Je+ !"  R"aVD¶O#!<㺒R-ג-ƙ"B8/) B!$@#.rB!AhTo,#h#J0AZb "CbsI$ne31 ".2r!Hj/|. _2M4)17b.PCCors717j BfQJx(8ӏ#5]"6omXB d pS) ; .TB!^0v:'J"O;3C2 b;0"#b< "f /9/,)Oe& ,pO=TcCMAR uR ò$)Yb?Hё΁G%L4#t r6P faQ[(\q> CE "]а_i` `Z,- !2 L QM bkrf%%8TE&Mau"b+ 2: /Cr*^K69SaaU&#bg?3s+8Oc; A8h3D#(6#aUpe*끺V@l>h+6hpeߡWԦB ȶl%-! Zg%n.'  xf3 Kld js \ eA>`+I,nZ4peF&``WG-T|\8( b{Ss\2A!,2E*C4)q U\8/!۶s2!V!%lH`) )0 H=˺HT:0ρ "gF7_} v035X7SNy$OYye#hnY"`n%(Quj&|, ǥ[cy ڠ-,P]8Bq uBƐ1b6Y 9@ضS B ii}&!,ԲD}bКl?iJt GU4`, *0G7VHQE*%+oy M k C"` c;8^ 0͝KK۴#ʲx&L?sFd@! NQ+#)/G& 2a'< ):W (bFaFB&fNܘ.AdICD%0HT *j"PdCrZ"䡅*PW Z"Af$ qNbB*4fbmԂ-\F7!$bt}L<: ?,C=ZeB!QZąHfkmiCC _|"R%Ȫd a|A$:vRO`$ bXfV##⠮m410lH2@_Z7(<,[JɉP@XSRV@?Vn#s&N?C=v^ݫ芲(%_(`0whO*^a0^Gt|ɘ8Qf&tXXabs^w- b:J#J6}ƪ6ELߙx^덷EfJYHZ_ f߿U%~>L41"+ursoeOKx, TL  Pn9qbT|K[GO;(_'R\_j_$o>U} -%I>"J̬2.6/FW_ ,@_ AʨlDn'N4)j:B9ۧüs,a #>|A}իsp.yȓ7o޾~w޾E`ƍ?|іXP=6 "T"ԭ\z}@wȍXd͢Uvlٳ~-X`… 2%q1yCA#H$MTK2iVũOB5F6z1Ҧ/JZP/־w/}B'}:<lG2p篶ԫ[=ܻ{>˛?>ۻ?ۿ?28O=U AA#@wCc/XPUACW!`>&\dH68;ri!W O[#WFKJKL!T@AQNY;ȃ;[Ri%)V CC#4)!cHte$ <t·!nI D0Hㆀ>cCUFHbTd<$ϟQ;MO݊kk lKll.;D(Z@Aȓei(p]ܣ<@SP}( W 3^TkN>2yMAU Tm4#@@LG&@2sNX$<{ȵe0W;ZK.T2A{чnUA=;o݋׾Oa$@?4 >2wzw~ xNxn]*@CЋ/K 7CttP}Z?{dC-;2C;>M2q@=lE\W_C9!@?;C&,??k;>RnoO6v>4L^t\#ME?6Uvxz;o+&HLQI'xVp- 9ޡ !n$, Op,l _0H󎟤x'rOpBĈ<!ଫP(FDil !J,.^7x*Tzz= !Dim|ZR uvů"^( ƽpXABre\.+Z%2P~LKN\6ZEq!b,;M> t\ :(,HrX(t7*sl3 hJsl'p!.R 1_y&aL) :괕0j8ד{ >Ĩw$LR$ mCQƠ|H`EH,mFqUge (s,?])О9nx!m;e%\W ְud-H $!*DR9T> vfL<ȇ` lbO#i"׌(WnT;wCh,hE cs}Gfaׂt 9 +lr>=Z;q65@\|(CA!-IP 7 JgTYD ށ}dü.yj(">8pN$O0O88IG=,0~eXGe=9ʃE:W|JYr ClL@?9DL8A6$awmƟsk֩cA($Yq \ " 1EJPh#yUZ+zִo\+Apz9U.rvD*0G~"cRLqKT$~Jk0@ d%QQK>N4 ?RK2ڞA(؄E8Sewq𭾃moq;76dku+xcocQ2')A+~o+[<')cg ?Ћ~;e( X~o~ /+oKԯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmo+xx7Q0xq2>y{ч(k ⇀"/ {(!@>/Sgg{g\ኰV[PnPQEaAE^h{H88~&0gr|2eщޑH׎ߡ\qH7frj[!`IuщY8BmMs!@$914she !)f KQg)Iდ߁ɔ1"5ԱP4KW\yYݱjW\>u'1b08VT҉uӗfIwI}%bO@2LpP0_2 (4? L92(m3#m /qx' QL6PeӚM | L`jI010Df&INћc ("/\&В^qjNPE$?`i>0)X\eɚ"&ivӞ ב@CٝF嚰)*y:-G$/^4BTTǙYu: i)_r$PP @j2Tj`/FU! Vz)Y]*?xќO9)s6q)Ӛ (/qbD/\a '% 0)_9%"ţ6Pyvj WznW{6\P2$!LB @hb#q#Q'+!1*ߐ0)!XG8KT0AWZ+S PqJ =[BՒv?봺QPP GP?CmC9:&0AՑ7:^zf;#+ sٳ<Dr9FN:ӪrS^\9~]F^4-n;/$w>DzDIe+V7O@ `ӱ bQJ嵡56A@ң$)^n44Կ:3# PF`[^ӎ3rK3ȝcKP? ā`<3q: x4.4I9(5 xSK6!JJ!KKN+&~Y@p cCz3 %TEI;*-L$ p NJd y );N J!yQ}0 ~t%!w)ac"b <߱@ 2st(wFnN(~Lɓ+Oy`1y1IE[ %d ElL}biq!G:4RI'RK/4SM7SO?T{4Ilk"Ei('䑭GG 2`Q/"R! g @XJG}Hh)J]N!`wGt&}W% $S4=bfj}#iM}zP\I  ,$MO9ڵ״<طߔ`kՖO[)dNczwFs*ϟ_"' dtqT!@nIc8da`J%@V!fN|^"8ȕ6i;eˁ?mXC r-KC^hlU nRWhul-M Ato%z1,6$}%uP?|'|G?}׏F5i879v 8@GGD ۓG=ഒC>Pq 8v~pZCy.!q0 G<ǽ„P8ߑ Ã܇SR:‴UE!<pHt8C\pTw}D`,xja*Zad QBY@?a y)A=1c "鄎` RT 8> C Xidp"1a?竖p QnL}q*%pzTb#ղ<΁KhG+AUlHdEpmgM|d H<_Q`J?B:P? x_-o9JBZŖ&\iBF C!%]JzҔe>SV:['AGH ^<>a1$8%AЋ-CkZպVխok\Z{,ЄÁ`1b;;&K؇bX#0gR1]ؘ.v'PrX;|cto+$, ]`]q@CVz{[j98!ꗍs @ C T iM(6XrA%n|VQ<0!`[t\DVW#F6!BWduW"Ӧv5`z0 P7>̣lm"bUI&fԠSj@ aI+g e w%r6#GC2p}C!K\xo}tBmfb\sZULYڔ!ԕ &;bAk1xM@/@AG:ƀ]ރEJ<9袁(`!YN XeH,|BJ= uJg9 ΄~_jsvmnwwfqF!ѹnuw=ozozw+o.>pGxp|ws7yus?zЅ>tGGzҕt7Ozԥ>uWWzֵ^O[{>vgI|Oj k v[Hw|?x%st4" yw}U2$PYIHU(/>V؋}u$yL.D  4gB!EeG&|e~&]Wb~?&0,?d裷F 082рl"ZH8w'caj < ty h h t &d~,|y  wx2At O8X+,B£'p:kxx)ɋ: J:-xr``C@A9y=d(ЭyHIB|`|}P }`; ąp 8P!0~@D~8MDQC<ÆC8-`a$Ƥ;RĄ~86dȐq%(s ޺0:hIs0 w }`  y0p! p1Jry}`G X"w0}@wPHW5qb4ɓDɔTIC PѺQH"whRa @dh0 9i *p\ ~ i ar!˩i 6ڇrq}㏴yI}X20D 8K+\ɾ˿,7O‡X `ٖXH>,rH`LS = +ìɆ`@IMX L$4N9QH}-:|HNL-O' %ҔkB ]pJxN~؍[TnXt,pO|< O"}s} ОNn`-D0}X':I5-<ُ( %s )"t0Gˇ> e+Ӛ A4#5 +,R A!n@AihD,8X@S#`bЮS&݇OKd{Fp,qRBjіs-MNF{!h- "ZȦoz0y(ǸLl&n`͇]fp $b|#*s8ѧX~8DB b ܇l"g}(VX%q͡`դ/LG؀X.d7Q70HƄ`.J{5:4 &_˄lAٜ! C-PS ثڬھگ۰۱eRE۴U۵e[ڶ۸۹ۖ8ۼ۽۾ۿ%5EUeuDžȕɥʵ%5EUeuׅؕ٥ڵ%5EUeu%5EUeu&"R,   E) `moק'FaEsЀFґ*~8Phtt (Rax~ ⟐4Ԓ&ڴԇY`i/n3jSP : H.ya IG㭘t0.}80Q!6b n3Šq*(!}`UN5OHY"v=XM]VއWey]9۟*j˻Z]YB8POjtRLFк8wS̓рF LsVt^gwaxV0B! lCSde~UVh~phXkVP> C\|܏zHqD`Is詄"y~ v(8(K} ؂ ^* :i6&t0yzo¼2Oy8{Ȅ.Ѡ(@jՠjy.{ 0vZQr#iFF+؁pP{xCypnw{h!/\Gʦ&N7dZaaQYX섐ύzVaNffmn( {clȄO89 j hyn6\  |by؁o> }^{ sPѣ C0ҀN ߽ݎ}RUNƀ(F?0 C3{Bo7p|nc& t0pU#Ydž W%>fjf%Fy v xRX-?8|&n޺l|j^vi l&?< ox=0 C+|X~C7lh KOop, ` m6XφCYu{+fm1)'Nn7ڡ&W"^8+t(TiwIɀl$o `ZA~Gy) g?`|t[yhxXTrz86CHxsj!(kFЖ~ןGЖt~ KȪ>_}W:' `IKJ)nN Z8d  xKɞĜ/"WّXZ' H&֌)a~ HsuO $ø^o"'n9&0:—9Ƨ '7GWgwׇؗ٧ڷ'7GWgw'7GWgwy|x'p "Lp!Æ9(q"Ŋ/b̨q#ǎ? )r$I2lA<&)s&͚6o̩s'Ϟ> *t(ѢF")O< \J4+oRZ4Ն 'לe~ ;֨ #Q_6y:ͫw/߾~,x0†&W>| 4k<] h*dm٧dʖ1K9i}D;pPuIزڞ`}JҶ\gny|`߇mVM1|;޿/~<&'4}e{yV`$O=1P!䷟D]Ds1XRuA<aE"!H$n(!N( !aA?D أ?CY#?m0>uQMN5E6 O#e}J6 &IsiP:c!'С6JПTe I*,YQ}>ZEܓ@ 46:u}NB EIJЭ͓B7$<,FUe봚 d-vaCT*ir YbKRRSI\pNp=D]cA?Ը:"#tevY@U#3]3Ϲ B8l2J>؅;PIqASQل`R\>^ >Dڐ]`#LR; uL|ҁLp]Dl4\o)ޢ#5 w΄7vo@xjl_C0;b*>~~t҅!]gՐ.3K.LOJ,(LL@gv>9cUTTݢJ_%DZu矇P/Пd-w#.#ID~<d+zh '$`ɂsA3~4Ed!ɖx@='0d2 1B"h% @z܃_>"0(J@ EDd0P:Y|}1|GLJU:5MmBPLJS4ylnf8)H48@K$#@t OƄL?6S l# LF,èD'IQp j#H..YcI΃h}Zք툂,a k"$JhE\` Ї W !V# 1CD}>6@l vm?-V#;(`ɾtUz [pb(c Vh!&FB!Wʈyy ]Uw 4@VƬ$l8(^:{&];(9Ȉ7$fD x? ~=C`]},EP6?R`% wC *Pn d)ͱ~➈ɖ.t"&<0N~۰$\ %A2 %ks(W9nތ<[qw t w*C=&>8:^q̪]1J0:Qu 29 DHȭ1>mf[>?JW|d D(l#co\Oۖ=`ZC<$z $cAaT䃸c!ֽZpj=l ڧz] EAW6}A `@|CD)R]@ȃ999$?CYB]OuY?Е@tغ,! Nj`>t]D  SM=h-A@8!l`2] ,nG170o< "y9,5 ,@xB68>4@ǽ2!C ~o !&BPb((b)&=>$AߝC?T?C-?pO>PexAbDD7LYB(FERݘ-4 @ڽT-z?%^?U^Bb =.C$CM.D+B=T݃F'x Ĝ C)$1^aؕX6e-@%2A^̟)BfdJdRf!BAd5 g38'>T IBRWTI9D aS0ڜ<.wq&IƱAC9 0ED;%@xS=STdX=́ Uΐ.=A@ ]Y- 9A OxP)}ܥYg?HˬJc! En6"Df !!㍞:{@;X}L( DXa§|N}2 ~2^R(U@?D! @XqeCv 68E De fC6L_>A=DL@3\%D)C|W]H[rֹ`@=#dLʽC}˔ Ů5jD, 90(|kRt DJD$$J(*$DtjH64ʿm]A+C^+i m}yBctB'8R_ kD뉉(C=JDúM@K|AD0E1+,>hNW:q؅iDÐlBmmrmzD@JM(h(X<0A{{q>420BJ 83M*:@Wf>TDqx@ہ^A^E TQ^$2r Dȃf"p٢ݍ@@-<{>Ḋ *h[CۦI*oyr>wɚL@DX@p- @S|nnN4~>-:Lc}ŇC@ d!/#'J0~.P/D@?ځ/m΃o02LR8}-8L?p@f-B؇g0UJ?XiN:0*Ʉm D?dlAqA4VD_pm%[%cr&O \tX@@9CbjC%4>d5˚GS d `e5F ܒ9@I%?k`)V)H2V@̓= A,q>=[r/[@<, AnnVA.`ɤ 3<&CF)7`g8}4pNP3>[dlZ@h@ 73@.'ߌ41Ek!-TSDE#NK]4I<lE*D1BtY/0<<ӥM{t(75*+V(8AE(k7s!DdUAS8mqȲ&lvmmQ,nnT4wh<RnY1o+r3ws;s(@32@wLH7u[XvH<vABPuwzzw{t=dlF]7}Epx 8CHЯvX' ź̔h3[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {IDW܋D:iCU l*[c>+GT8FM1*>sEbac<rLDttT-^@:@{*tRrn &|?c4А̣[#z{x*Ɠ<Ռ@A@7@Cj{D@ =r X< ;QKC/ TCc;ڙ NlʷC$JE\vtAU@=|Tҥ,- ܃L dLUf} L@ %;FhT BLUdQ@Z۳  <[KCI$HWeM>8LDL dPbw QMpȨ Cj8A/@:TS?' CĐ\)*dt۷(',9ܰ6@K'ǻwl0`Cs8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹgO?N'CS,B޽E!{P!aطo@Uy_|ՓsPU3ѹ-Ej=paÇ'AT|ChGCg4tpB=X@`>SeTQ퐊o mmX""耛YϡG>zuױg׾{wuϟN7!xlw =A:J` a&0(5}L0(z,ât0# A8!1"KeyCI" @l(}hhsh'G*2E+$ Z@ bN{>R-/ S1,1`-G37* G3bK1 ti /yXQ!Aǟ}F{Ɗ |6; y"Nu?"#5VikVmEꀴ H\"醹y2(.R}'|}VXsd0<^|ۃ.}ʳ(G e{PB|4s7Bƛ8͊DgwXD'㉴JX衉.裑NZi0ۧ~s"}eRBЧbt)۟̇ȆjO}^ZI[-uh(}@^1=FGil,ص!y p'|F_q]yL4e, JՀ}ƭOwFn({(zVU.p1*=Jy>ɦև^/Ryp{  8dG3> N1H87#S|؇~ pP hVCHx ٳ8X]X&xtD5 縁HpQDLOD6TtH)P\DN`SxYYD9Αu(LQt@>APDP74*iIJC8(pu#`B(Vayy_@<1u)C H>ͪ[4{B< x$B@@0`Mʮp?230C裏,R$4yD1Q>DTt;1YР*0&hHpc< d|oRH KA` 4@7ޡ~P|,EiH,58HbW:K6 8P* dtODVe5YњV1hTC{j]W} [T;@X.uc!{!e1YnjkgAZю5iQZծuka[Ζmq[o\%g\b{EgBn,B-np$-&{Jd$"0$dS5c58%&g>8mZP$J m$!,76gu7EBJ(oD GkJڪ1" ,> ?.hA27nnS n&m4*@>.pD-J2+RnT{(NVvg!7r#k\pXH281 `sJ@X3;93"40_4e@."b,BJ73!b6b$:G+$e aGBRFRR7*cv%}#jn# bHSZ1D2 XE{?O!,e,o$<.GDD ppc~/p4P"0Dzq[LRatԂ&b#o!1v"v2MM1DWl-Fl =FXF$v5Zp"'A8"QP("xGOLNf " ~`8!@"D"`-*z-j-"ZMgHXWQB96 |8xW;id ec&B*̆lfmm7F-* Ճ)+v"THjp  V!ڝJ{VeWAW.2?dUd$}6A.!B=e(G"aQB'**)0d !169'}k"zF(-2? ڎZe-x4ٍ"3pEEH1m!Nк&3*?:/Fg H"o*PHszZ]8_7HA!t{-&cxQlI>avh {)h,"i}Fi۬=? l"Lhlb|X#&oFk4RZ@, 2KHHR6:\[E=j׭HEZV"/ɝ|B|ʩODʵ|˹˽<|ɼ<|ټ<|荒1SCu\'뺘}c:?KʧCV}) u'9R.lu&,EbXIZ_t a=']I]qa{"b+֑LpWI# V^eٝ}!{fx&&#v")Eauݻ]xV0b=]Y_؎M',Ejqk^x)!,}=ۿ6lu%mdm%7 E7pH6--~VSmlb#nan=.'! H.,Uo=+mp p-BB'Έq ><ÿVخv4uyW<x-)L]AW&oiWa8@BfwwW.x;^yw/9z_{ݺ{w|#%[72^!K2;1'oT8թӋoo,*لAB&"2% JX}K[x,h؆-tE/<̻XaMapNtQ`)*ZW 5"W!礌PE8wV  } *,oÇ#JHŋ3jȱǏ -bA}"'bEtI͛8sɳϟ@ JѣH*]ʴӧPJ þ#p_=I8ϫžRd,va{NW* ;y,Vy }-H[ Ux^i_̀7/l|mZ_ Nȓ+_μ{bW޹̥꫗"} aDǛ? u(^^Ym隽bH'?(l J(v S:  m FafE'FHC;##> G<@)DiHj>{e%lY:?(>(ӏ^! 4ђ4+R 'ey}#<*>3CWfڕ$)ߊ ԓD(?駠*ꨤjꩨ ti]CaUP:CxuAAD 7 @=V*_Z )ЁQp!z4<TL6p ><@?lXpIȓ "G,WlgU}]7e3f̣CP%>c, D@y1Y# ZP#S,C!!9z

O:] >.i5INj O,*㏬7G.S=뤴y=p\Z(gOacH68AY~ y}[WU \O l!kX81ԷA#e{D_od .5Js Hb!:'H N07z GHBC~%L W0 gH8̡w@ H"HL&:PH*ZX̢.^ oC aL6r$>21ĎGsQ'Ї;\dFDlF:IAG<8CF'# K?8A܈)ҁ`uL,~H(KFq" ",JHL& epԨd6Z;]Niܥ<"p# 5iycDz We2rjD3\ ) @!8UDvl2{0mU1'͐ #eR664ψ'h5Ж0]*ƅ֤3* t­lyR#WGӚJS! XͪVM5FH ­ihI PцbH!!ְp AN4! HGfp,xpbeE AA^y$>e!Xff {!#N]]F TѰ 9:gRLo[#җ~lLqM.ZI ltzp$ !e@sS[HA-^RO!vJ$nH1Ԉ4t^Q%6"12#5²r8hEkj.%RTP# AQ 0 zPr}7rEj >F o P HV"nhR23WFr" PbP+c^{sD&%^L1x )7%XN@ؘEHS2 0#!ϧMː6 uA'a  taP ^0 aak`aW."UI&B-AfE#%pv."vV/ʢru'BU_ W0.)۸Lٔ8h{NP<0~P) nHqh2,2oK(q&++3fT53"3Z Ce %_S9coo;V32ĐrK6'wc,M@o^շ;>9G#2$c2"c\Tc5`Ѓ9 c Twk6o3?cA7&Bvhi 7ȓ="#0  Nٝ7ԍא߷ %p7F`OVs C;0:f‚;Y+{ i3L1K! ,P"`V$U2 ͅ`+ =>Lk Bբ % qc 5idZfzh!prJ/8Iav|ڧ~::}Ѣڨ:Zzک:JBf$:xGJ3rPWp pwdBK1Lڬ~Gvb9MdiO*x sQ*p;֮:Mi|!]Prh"Vؐ[`^" ^d= ]]k^s~^50R W%`bq"ED~敁vdg'gVyWTaK \۵G0 _o"ZTp8'?`Z%1p00^gp =–!qP{FcP   ' r {.x z;Z"xPyA*+/F y`!))n |tzQт E(21T26uRJ(lh##Vi1!a"Y "jg{#9b;K5yP) ˀVǻ7%]Bi|x((76U))Ո[,C$@q Px 6NHHќE ,oi3+C0b C@\B N\7i&+ 1S82B 56sS7A7SCr<! :Pqh#60`NnJԽ'%\j^ 2{Inkʴ?C??t\ʦC +̦ ʮB4 P0JAh˺)(qz:lB <|4"Œ<\|؜ڼ< S P=i ]F=$S 1'44OkmKDSqq<52]<Au[ E[<#c}~MzP>̇M(Bq])= i!4̲G{ ;"{Tދ ذe CT5Ů'ڪ#AAZ  p|^i A PUƞ͆A0` zŲ=~O2%U;VHY& {$J[(YYŗmWxU.%.Ӥ [f)TRoRa4aIpc.2olҤ&foi 1;n$ ϶a 01]->N QPJp%D1'+a@孇|~N# ޠ_~OTxOPQWTv>nQ-rgsu(`0Qi}'[Zp8s!p(t$Ô: ˑEY:@h#`Ӕ?%_l^vr/gt}Q.i½aGkdJ(!h0Wna݄#[vߕ!K;@ #"pfkFB.|p 1P6>2Q $XA .dC%NXE5nG!E$YI)UdK1eΤ2< e#PP>ӠP޽ πA  {"mbԞPRZ@pOK< e[Ztɕ7]\]췯 'Lo) &#D\g `ؾs0ć-ko'^qɕ/g9o8]~'0~.`} 4ݾsOU_` yI w<Zja(Be炁@'db* -駴~"K1! MsC 9 @d'(䉀 GЩ$Yr ($rK.K0sL24L]HT(}}I <'|s  ``y(* B"S!;9QF z ǂ79ȳl Q|YM‡ {,y }$[ Jn!tՇBG:k{"CmCA}" ]3A-sm)t fFF>qP dy1wva#xb+bCK\91XVIM&{=q 2yK2h.fx`C(pս#sF8Qs!,P3ȋ>j|gk^t ~d?A e$I*Nr5RԢ2ڈlB#H`zd9 B`=beH: m@!=Xp~emk]8fC?$=0-X(р hp,X` G?Ps;@XKfagR֩,X!!8 Z)o}{_.O?ZK>g`- |2f¯8ƍrO80!񀸘GAњ0e  ( !Rtc/qm|cXtG= ' ĐY{Y6ldc^ ;dQ_g?ks#r|(؇!ϩǠY"Yss/-9@? (l r?Ą}ā Pu xզAOB "BO2fgآPum}5GUD?u"bzP)An0tυa>(t ZHe8b3.5IQ}кfwg^C &1c{U;(HUg eg>4߂ǯ2D3A,%FtC}C'yMLZz-Zx#B:5X͔ X>VQV>sk|.PL*ZeRLaNE َՙlor 2}ڇzqrFBԧo]s"σP(Da0j9ߡˀ&93mVl(R A 2íqB9m}m{/Dw#C恰l@'~|cO{܋0G_ӧw?@~}=~_g~__ ?@,@ t @Ȇ?`@ @K}` 6 c@|ڂc~t((D G,@ n@ 03S%ԇsB,׳0&/l ܑ[ #Ŀ^ H,C<4IBrAP{0C`&CKֻ (80{?|@h㢀(x;9Ā~ɆD\w@'])ز{i9*PQRSTTł"o@*X!Θ*|ƸSyh'LlGwt7  0PıR% ya I82){x(85>K"Fmj\5ƪ~HZ*x8lȏB΢2ђ;wItAI\aF)wcX ؐ ~8&dPGH xEkpݸzL9-lA9_LD!7T͈ hlzw`/:9XGnI|‣ZKwhH|0Ay`tZ&k(X v| k;R~My2\d}L\ 2;9뀴1`HȼN쬯P+tX4P='1 S lH=;DX*oȆRG9܌{"KChuL" sN PJр{h|Т3ˊ čwpyhB+BA4sDЁyM0],9]$P{(N'C((p8q P0 ẃؼ \hD0g[}x. PiZA؉Y/\#ؑԻϒ cS`{xSe.HL=SMM"ɆH(]]01Eaз!́It"} TX>h*(!"TUUEV'Ӈ7#"=8 '8s86N-Ws$ͫ){d|Ҙ tЇ&$~9Mn8 јc?pU؇lP }8spjE8hnW{WE}{GX\ؾ#[(8as ZuȕI`CȚ`wX8a;t<#@7"S]ȁ8t༆ǹ ˢFi u'c?@{V 3 @t7XPLZ\ 7\[{2A]-]u-=]]]ֵ*i]؍]ٝ]ڭ]۽]]]]] ^^,^M^U1:8^^ȇY#USH¼^D?XIKlFFa@ y(`v `ˇ8\P,h䖹d)ӇFƑE!"#N%>Zǡڮݩ &]œVڂ>hk`.MH5eb4FȈw20*H96s_ndGʀWǐLs8lߜLcOUȚ* ~79+"b 3@87hwHsU䭱sH! =iȉ< ρ2}dpgC42O\q2yILWr猽0.C_Ee' yT0 Ȳb߂Ky(Kʭlحw{`I t$gn wpD g  ';JL|l(fg>w"D0F`6<(Il`]ȍQy`gc'804 Kh&k=1'EmEgD(O0|~xa9 #}萅&lAf@RϺ^m֖; h\gO͈g.Ϧ>C{n&ZMFx)~R>΄7X .o6|`6B֙TS@l %u ̎kD5zosk:O1 =O؇_gX"m(&>H,a[.qd%<˨B.f叵(:HX1w@BS}&xzX8a#PP S0[%C$9 +C"?8< ,9{87cdSs87q9# ڛxWd O-+g-s#}dWA,\t1@yn8D9X[%XAX*'SIO4I͒ QX[iXi"y;`9oF]}[yh8xlȚ T$)! AO0]ڦ}Z9o&@fLXw# }@!yR͐idt<ذxѩÙ[c/`sgyBOy?T8_y"豅8 Fyy ?zOz_zozzzzzKy zD?d ףc *#Bb͢CRBA򔽲^- |׈|D!2ʣH${V VрH,0"|P8HPΑG &k @ԇ2cЀ4sHoEK ]ݒ?o (L~XFR t ]X者}3v> ɓ/ Ggˆ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:wY1<۷O޾tɫw,(Qy ZŪkӪLSgFXJGq(oByVM?}LZ 6nԣEbwnDPO^y߾y M!t㦋p+#C;h`;7? 8 x =Mx0O=)#MP>!87;D4>0}%*=N ^ͳ D 죏) AΝ#셙*7Ȼ3D$B=J4<4M;4QK=5UȠ,/8?p1)cD9[Qg] $>yτD|Aq> k=.SQDg QIQhwts+} 4ԣO6P @D> cAtM.:馣 ń3MuΜlaG -ho#RL|<K<~z|:3p6r$~_B|?)7@4@sP`x|H>0TiBApG8p[)<83! ֝K;qD4'$K!U| )` p>я%$-16D% jv#=~cLaw X;;" K(=2~; Џ DHy<24d%qIC<0IqMGa!IH:H:"Po"tH|M#yp؁J@e:pf;IiV  f #Q{%ЇaU(3Й= 5:$L$& >m#T:iMlFġ튨<& CxhOq"&DҖr2}`#aK}:ӄMH@s(jhA1~#u8q(hj&#αYjO0"Awā8DANiRs!k 6y(KCxBTR+# Uq @AVS@=-jSղ%6'bq"8 <t(5SUUc)";<SDzO HUPAs^ZUՅ<5ZeBwF5[!(DXxn1#bQH0?D *zKͅCH;& y{ݖbd]Qy Ƀ/$jn|)(xXUPwMs* )4]ȯ0i$BpD q&OdqEǕ-ҐH 'J <՘p53soyX:'.FP K{R|, y0^#W=]CMB?+32[@MG/}P-@@@aG90'MŅQZS.ty+)Z[MWHD7P?WD_fCfmYQG` E8`h@`F (BlvN,ʼnuAźC]xB))'dFD8W5FDDZKh\C"_-A^d>P}u C<)Dĵm=\I vd ĉN.B.!Ẽ2` TG¼-6.c3&7Jġd=݉9>@,BV`T:?CL>P >xBD? 4FC02b^B>fb@F>RB9h<A6X@E8< Q܃59LcZ /XO$PP¡͝E ǁEE\4>R>,C?E8X\t@?|Da^YѠǹQbUU<E[Řt Tޛ4. 0`ԃ$&B0L6pD]B$|?=Rf&$&`&?l C]5D6̟p%gjLAdE hԃfl 9%KEHeWAL}0QD&3ݏ`&7XK-&"iD>(EZ FUBqA 圀E^B\%(0SL*ZC7Ӄj͈ :#hd@6ńs78 05B%TH }DI^bD8FF@8YnŗQT!D'8(Q@}ۥ#DCABi #1nq>d8XR__eNHmQPeՈDžR LvÝ5*jB 8%( R`B8 ;C} ):=Bu xd<'Ui?aD4Q H=T`H|STݛ*MJ]> $)LS%+kN-$<<YBX>,;@> ԃ!=VC`CH#RjC|:G21Bc\Ta@,݃%{ԃC?̅u[)%,m0CdCE=X=d%)t R<,lAD@=DVc`q<4m<mߣfiKlNub{Qy[i[lӾ]Ŧȃ"> V`NDAK߾-R~^F.jL>@6;p=dVFhU1Qv:*(F:@50zRX@\@N &@q\uRY *iQt*0FD:F0@x>D >T:3;1Jl; R( Vo X*='B/4C77C)j1pC(P.L N|C4KKt~ 4LP\17 ea(4PP5QtD+I TWU_5VgVo5WwW5XX5YY5ZZ5[[5\ǵ\5]׵]5^^k^qɖUcD` N 6JDlŀ$q` %c(d[adfo6gooŮ*;#lJ0Guq̂sf`tlwm6nNoLqìVhWCn[c@ hWDrr{EJ?LH\>0A%nh8$ZpVG>@ hx(;Q` f@S6C]Prw1xQ:ZI @2>`\Bu'D,qAF#E?;A:綏8!PfS8THwlU0YWXtēgVQ<ڄ\Ѕ]CGboWb,FcB!f0LD0R|#tŋ/=ҧ U F>̐TճD H\ \h\94K){ ;L@$g~$>t6p-EDit&DaFdNM~ƢLȝhՃ(P.݀0+e8w‹Ɏ>lkD,l»wO ';((ͣl4y}!Pu )ϟɛZL/tnE}c~M< @?}[Kh~ I$C qO{:B(0!ၾk$Ec t;%bA$O@/fD'# E0vla&>XAoE F1E'=9D<;zf'oBþ9d~ds(!Tof <\|% - 5ܐ=#Lǐ4K'XM!% :9yVcAG1 x@2 OL4{D;L<ǟdQ-zRj{zQ Ġ}PBz(#Fx`A@~@aTh"~ܳOy4 N9G/C-8@ZiEC2"|чyΙwJ8\3 QEu \NşP@![ U(k ' Ȳ9P'J7ys{`U^{5 =#Hv=A^hZyB؇ B? x3&^!";~t1i{Q=lL|'@䖃<y؞8$pQ=!Ah<2 .C(pZox(PrֲcI2> IȆ<CPٸ 0""BzX` gT:m$3I ` x%;ь8m\0`jmT"HG>$)YIK#Ɋ`z @ [x]"(@?8" c6V}8HNIdje(ULBQ`L@0ճ$ГuaNۇ( 0ѳw. >ܙnFeyGIyZ 9tTH0}1XCg-P}G<}$,[#|$`"""@0\T˹c9i($Q=eGw@IДUc8  bbHwMǐJ઀(RUA U@ -D@{tATO?8.Y~hI[ZӞVf| YՀRч@ސGd DUa\.Z+1FtuhF6Q&|TNՒzEwLcj| { t8cov~Bԅp|X!^oKQ(̡ye!!܃%AhDlt1>ŘmG:FyIg 9<{s l 錅M}{/){&CRtX0ޡDi!P!gh!6V ^ҿ#/ Gfu7) С9.Ir>ƣ x$G0[}<  csSZb6eN~\:mfUW>~L؞ (cppؘ"[J\3ΌG=Pj͸% u.+jWxCKo p=1nMbC5I  ^wh-.6E[@,zNi":< |߶- ;8pfcS@c3n@!rb Q~x0F*?cvb MB &()*R**/ƥ%lA~v`ZO!ZHю2fȃ~cX0NW!-AB*"8A R21EB"4,ல0Hj#q0a+%0! "aܡ0Dx(",cpR13Z7Bxf(5K21hX@ya\-@,ip\ĥ#.[O@c C`d86 <`\ExNd37d( @`A]:^l>Ukr b;+|m@zCҩ.$צ}ڎ^zAb:Wl:S5#bTHqhx" T?\MPƓ a["TkX1-F[[? AL!dvMu8Ō;~ 9w1tքu6(B;a: Hrg*Px`P M&{P"TpoKLT5Nډw=L{Nƴrҧ's>p z;a_܏?p g?fSO%#BA'> "Du}XՀt>"0!GXw^)&wupKQ3ZZ<_)'QQ(W[%F5!Y\updӡqkQAX[yݓɩi>نn%DoyԬp~З)X@[I0fCptІ kІTB6M(t'ep /p? qOLqcMRBNDa>!NuO<܈A#)̏<4>C_%^4P" Oq|&Q;lr]V0O72`P$f%i"`>&ed&E]$'H͕هA3*2T`rsaxp 萏Xr>* zA@T,F#PvaUzMkзxrh=f2̏ אF Ar ,}8_)$̐P}X3<,%F/PQ WPũ#Dap{Bf#@6ּ%V`ps9;H"BLX*0Ǿ0w BzvɝGh<̋Hp{ZAt52;>_R2t ` {ṽ5A'OKu=9G?d\qFI"@cl}jhZ |)LjAH@a0&FP4ΣH4Ca  g8r=yC]Y*reJZ-mpץȜC]0@h F bAYLU C"C;cEO뒏#d<'Nkvq~Ǹ˽6t݇ s{{X\WS~Bԙ|Wi͐eD&dk ø5Z{ _a STmZdG D] @&;H ԭ տO\p9l#*Rz Jlr!z LcVf`q`dq.|u|g`Ms4ssQp%VrQշ!Me!e I~fr'xSlT'1vMG!WNAXH1Ew)NbF'#~&"g6З`}wx>>z3+ }`] 'dr5 3 z qx.4p>(Gq!~/|1R8|Ȋ芯Z(GRVkfUS*`7fCvS0MH5c8BYP /r ';h LN:vp:P,& M`@08Pd3' j1*a q`fNOA(tlP?rt}5'\sZR~!"F&t]17Y rג|sNy&_Ew$'c$pyZX4&i\"@iq!"pӈ)6P4"H 0 b}q M}`.zƔ L ?{c0^i=sėF#Sw)Yx 6S&]Qjd8$y٩ɝueE[KL&EpY`O1+v籇$QbApa hp@#5/sLf4@H)Qsd /7ٰQ[b#uKF HaP>e`@71g&P,4Hឦ U=*CdA?::`ol.e0//q `c)pzpV`eJvGP .u)6U'OJp >2 p&`C`zLS R4r-` 0ܐ*'AdKj1gj6"`hu/pRRZPЁ@&% p x %SKxra jT%x 'qp A& ^5ըEʚ!ԁ]' я@-Fs↧Fz[x;A(;41+3K5keuo.*'.` 96, wB,! dVs#pLwben.SKo<ހ%H`Qˌz1%L._08`m"'F .@Pj!b% ` Q[!%FAGr cDK#rŕ 0 3iO bd`LaK:7#]Z$QQPL `Iм(PlX oQsд ˉ;LC$}dдw&^=ˉ+a$ .$}'2*\VUy ~414,2D瑴 qPr4AR|0+=AC!KcM\Rd7id!LaPQ#7 ȁ,ȃ\X:'Lȏas:Ƕ0!P0!/A4tej+]mIKMOH SMUmWY0R]_ a-Tcmgikmeo q-sM2]wy{׳} ؁-؃M؅Mm؉؋؍M׈ؑ-ٓMٕ]Ԑmٙٛٝј١-ڣMڥʠmکګڭ=|ڱ-۳M۵Fm۹ۻ۽}-Mܾ ōɭ -zm׍ٝխ 9Mm -Mm .Nn .Nn!.#N%n')+-/1.3N5n79;=?A.CNEnGIKMOQ.SNUnWY[]_a.cNengikmoq.sNunwy{}.Nn臎艮.Nn闎陮.Nn꧎ꩮ.Nn뷎빮.Nnǎɮ.Nn׎ٮ.Nn.Nn/Oo /Oo!/#O%o')+-/1/3O5o79;=?A/COEoGIKMOQ/SOUoWY[]_a/cOeogikmoq/sOuowy{}/Oo/Oo/Oo/Oo/OoǏɯ/Oo׏ٯ/Oo/OoN@ DPB >QD-^ĘQF=~RH%MDRJ-]SL5męSN=}TPEETRM>UTU^ŚUV]~VXe͞EVZmݾW\uśW^}X`… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥMFZj֭][lڵmƝ[n޽}\pōG\r͝?]tխ_Ǟ]vݽ^x͟G^zݿ_|ǟ_~0@$@D0AdA0B 'B /0C 7C?1DG$DOD1EWdE_1FgFo1GwG2H!$H#D2I%dI'2J)J+2K-K/3L1$L3D3M5dM7߄3N9礳N;3O=O?4PA%PCE4QEeQG4RI'RK/4SM7SO?5TQG%TSOE5UUWeUW_5VYgV[o5W]w嵡! ,f664^^\jjl&&$nnlVVT ..,224ZZ\JJL**,::<BBDzz|""$bbd>>@|$00<08  ¾b\` ^d`̜Ȧtv`xp@t~nfHLF@tntĒx\~xltt䘠|vpfp<<4 `ԺPXX̞xbhd\tH@hH:HlvVl80L86(Nfbxtttl0 0.l0.0(:0FJ@xnf`0@XPX ʔ||4<<~zfhtfİ*$L@:$<`p||rvx `4ԴvvtFFDFF N>ԳEF)TV Y#@=#(ͣ % O Ih&QlIGqvdP>p(`堄jj_wL@@A# FA22dC,iIt:*B6Īz&sFA?f 2+[T>3;@ :6&H|FAHn[Sd鲏% -ښACQ?``,p<ΑhBx@:K~pa@O=xPHZi ϲ,@ @t>H,:3,2a7X6@r>>C(́ C@)=sںM< @BC;F#]MhE@Iу2.PΈ,4:/v [!xrN(3v9p9;@#\ 77Tsl{::'-  =#=o #Q |%e#~LJF#x"G$ XP |C77 +1AzP  {$uhG2өD (C YS z 2dCP!IHHA? dSrA!Ƀ=,`U%@a}s!wp؁'XFđ$2K@'J `GnyVWH_ L j MB X`PL%(@D=Alx:&]0jV`A"Џ @m*Cgy 0)A"x2y/ n J@dpwZUWlU1V:u LmS&Fd`>2Mj3s+]md"p~D I n"!>C~jb)Ҁ}cG*߭я0k\nV2Q`-H[yPDLZ,zYr0s2#Vk>umJ""ykMϊe2<HA?CXlA'8"x# `]gL%+X@t-H >E'H>܂0U`ٿrGԣQ;@ [ !]B&ꁢju?x@ $汷A[ޣ IqãrëBЇN%$R>F =|A&*]CI1^En< P`!9]dǬ)7{_˺@ZKQpyDB\=4k 1jbDu Ka-@;ߑ)b|BaC;9A߃.1 "ۚ2\ѧO[)/>69" *D\ w~H|@Ph<IRP{T'EV== 0 ` 77@W5@M}kc_0pwV $ '3ydRgS H`(+H# 0['G9`r 8*p`8@/gV q$7\pXpr!G@WC?r `S\=%aw6p$@aPԈ|Mpq٠` 0$z(G0nL 3&D &G &cgMM&" \p O6p%WD`KRxV$(/ LP CRݳ C#1+@"rsx Y@Jw! iy ّp>P)A&@h(029E9HJLٔNPR9TYVyXZ\ٕ^`b }=Wf.Ӊ^T!9<.scYvyx ~d /Ȃ*{Xv"2ygC@SEmæ.3p4\1F])"" !`yz }"0q!"4 C\cMc S,`_ $0[U#0xňٞ`{Ep /%u: dT{p$WPS@pNI`j١Mu[P)y'P27v) q% 0w z5,"K" Ŝ HJ q,:R>3/gmCP@ .0eـƄ` vzxz}"*,Չ"gY``S0fq`waH%  +Jl@l[Ve 6 -4}ڒᡊ0OA`dzJF@3mP /D?#ըpXme P" :,f0Yq$p"Aɕ a/dOf#`6-[KAR#!P0"W$  (77+ p-y:<x>p1r]/@\"%"Ziuh:p@:=`!qT =KӚ##F#ud`V#HBmI$*{MGP[} a&p hTc =P5(04<䥉[{q^HٶA$Z]ZA1aX@WgU;bes۽!$!e껾 Qq;`||2?@.Q16 \,|l IB>-<RE<SxـC; @PRnk0QŚљ,!3S m !i=|x%"N"H3SBr[\ž$!O ')Zٜ3~Zr0oɜarf,':٩e<)癞ǺR\}0*B:L\*Cuq2@Vuz(T [;'W@g*/РjDZ>*'4R,98WXX䂰l1/]|)7F*hzlEV0Ӣ1a0(mA*}aL58E:j=pS2˵DJ-H'K 0o05$@6 Sd&Z:A173p#7tc7906,>@>%TD't)ԩ ? {gp% |"%]29 $>DԆ^'0Q"]@ V D ߤ:qAAE+zaLRFRǧq㈪eq$Rd.J;QtVPF1G P X 6׀4{Y#LۭTYK*LI&f+M?4 #hMK/'4l @Ji,4lt۬Қhw5<>HC{+&ZtTˇEi!K:%>9 `vmz#-a릫@S }^ P5QMR  de:'5%!YqXf4P2YRTPQ5UqUVSPrR!VY]J^tf*rP5mf R7Ws < װ Gp \f R3_WUWA2ORvE(`W'aO֊I +/_am誮jxr*+5\M"0Q"`V Pɔ/P *CEv/MU[YlFW:J|:@F9r-f,o#L5cT-<60,,64_y"YK~@| ʯZ|m,[$K m^x^m.{l6$7 G߼}5诟(o_|Dq{$)P<1R_t%Q y"=.L$6gSbwD!,1 LL2/wɓ1𛷢30rb`媔cй2GӇ x/>omE'21|}gay}wOOڐХ}\mܹuo'^qɕ/gsѥO^uٵ+G` FG!l}Xq߄mn_,甼LJ ~}zG\wNدO bϟ d!, G 7FYa$h3?7 /7 /y!1 sL7@ g}'}JBH4J0偊wGCM8sN:NO@|HAs(ǐ/ x@!L 8zaє{@௓@ "ا-:r$;YwGXD-z4ԁ(/ i*#[iʡZ}"˦*>2&2@tmKF!! |C{L|gFx W&ϑi[I`meڸc*( ASVye[vecyfk+P ܧ2b8y8ч o"C,@3D؁y֪y(3KPʂ + `} RE{R*ͮa:Gڶb's:zP:ʌs *s{ق-tyR'I|FE)[W\|Rot +R$"0wvP(C~~o.u#C" 9?8 p(3 Ѻ#n66p8H0" 0 (EHt̃M$Iq}c,B|p |W/h*k9VT@\x oH<n|40KB$]nҠāQB* g.xG?ad0682AA#<@$A@AOde+]JXR%Aw2xyR$f1yLd&Sdf3GėZI.yMlfSf7MpSP>Gzɲ Qdg;NxSg=ul%g?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens,ϥnu ;fb7 vtwǙTw^żeo{{*X bqHua5P >v H8G1E:Kͣuؼҝ*|Dxn9eqW xcɐԍeHc=Z# f ^b"IK )W.[J/,Xkhlx7 х@Pz<4eȀ 9fR N$CL˓N#gOE_^4X*=MˤXAHj6Z=ȥ >&#Cܲ:Cf7fdPsՉj$cb&>eIuqX{L rn9}u{AD O("WL: &@a Q@B DAH$6XȈ&xcPUl/DC^2nIHDm2Y4I dX%5mLHI@@(;0$( @'LRGOқ:P<G^򓇥C`p4H:zF-(2t9byA$A O<ij@ |>?x?ɀyC} ?{I# ;b# } 88x,iӠ '¿ЅDAdAAaH ш0ĕFLD"`>R,o5r3xw p}pWсHyCVTy, } hg̋、@3/ NᐹPrt$ 8-CX6= 0 yEq y}`2Z}ƁP W,w8C, <) zܳ&hFaE EYFE\L7H##y H~G }x.bd|e{PilʹH[l'ȯDCZ 6X , ϓ4EKf8(Ik@SAP;0K0CF2+ˈ|ј";m+ Y @`4ayh1(ȆQ PDxXF;3a4[C0ȇRPZĊ &"㴍д K@y0͑p̐mq5Pcx0PP9Jq p:˴̤ 4 7C |@ QRiH2yȆq{k 0&8zЄHS;R,H" 9T#}%3K RBP}O X+Q KE|=RdRYF@DLӬʔ LQ%EՌywGQr-X5-|OӶ' VM  8Fd }= ~ R8`}Tۈ`978 PΑ%HEtu(3>J Y2\s]y %2B\R P)_yvD֒( @8CN\yRN[PSb؇ +aU0w2 OyEijq͖KږX  `5Ŋu9004}.>Ґ!F=T+ ȆF"a %,1JY aaXZ>(_ѥ`b7S =豯xdYiAFPvo Д 1& (571 14>Iac>!ْ`"(nHUTQy^TՃxIV`ֲ9e'I@*U|Z?`" 2n(JnS",".Jt!& ظCk1n /҇9ǁ00* Qm=z:Z|Ȇ!md2W$>otG_'% ?lc&I*H~tPk2WMُPCgdJxhQu[O&|tiLXueڧYs;udOve_vfovgvhvivjvkvlvm- Ȁ-p2#Ou1wRDQovvx Q ȕ }ny Ȁ(5ǎ躼wå؏KrHxw> (`&y|hpX1ܨ @,@ @&K:<8ՒP^&ӦKܒyFȁ-0pyPywy ]nq ;{vx{Z[p<|@|{X }zxL@lN o-QA2K GySd y-0ۈdԟ)|IʇϊTQcwЅ`Y);<CЇ埣9 &/2=50گ W}OiA9V&4`T,R.P(m@>XfK p O} 4ԣϏ,(p#+ @?Qۉɧ@ԣ@,;_0Ž/ N[?Ӓ؋/^v@h^p\J;d I Xʫm A"^˃;P8}oHt9h_6 .:R.hm>$Q>FI5V9 3]NL賵MQw,4?[HmO?@WsER' Zo[h0H,d B3ь4 d|Ӟ@ҡ] @B`&yI"2CXφB$PpaӘ)3R)}ЇEQĔ񀆮!IC/GK}t/8@ʈ#0l qA(ac21ߑJҜ=#7Cl=X~ؘA)Q$K:yp +cOZ/bO :mZ(L| RC:C"" R8l#C^!|X[nA`D=!VWj VJ`s`UP8m ن4u-s}r  lSty% akA'>ρ}XK xnt š㺃1s dH w6#m-A?4bǓ4 &&tб8"(t~dIȃ;> {q CzI d $^>dCE> }w"[G6x@o1ZS(>~CiHy @ Xò j +!RF5oox(8V= zUNEiu F2i^,_C(ُ|$aac@\= at,rK3 ʒk]#´@2 `,xG.m`+_n|(Az=w,C`!Yx ^%^cYbG<عȲ\/?~^X$@Kq),|%Ka<VhY$"9@?(0c==8BC1GfBYC dC:_6=QD:|B7„<`4;91A>4`_>0!D?8@8 ,R,ICR`>N] 81J(B T;P߱9_yCҼCȃu.DZuCm5BVԽ@ZaXZ3}_B@ԟ ) >IԃEIElb 1Akjm@|sC_,i|@(|*!j- VDCA4  u7N6FGDC oDD#_>@bjQA4c>j z LJ|&.&p^C@$*z"a@,@n%2**Y^>"J$KK$yxDd̓!XT@ <NID.= LTX2Gt∍<E !`Ce==e17!DcIDľL"E ?L6TH!CH@WJ㢥CVd+)CT cg>,M2BE%e ;dfd9;`,_&$C =)DuPyRDSSsHA>>g =,e=Cxb-C vp)L))F@=\s<dC@BQ=`e@0]+C-1!|_T)R$BtH CsG؂B@ aX8$|#] ,DmA@k࠽2P.0ܢTZvD62jB*J Pk3f&d# TCALA*N!B0-胇m꠱I(DɃ;Z(-b+*{CB\!*I >"D<'UyEAC?T?Ǣ?[>P@d?:£ ;?|֫Hc*;jJLTr,O$#؆>87.h_3CXs&[D:-: > Wl?T;jBsl%V?ɫ^Lm,e@4W8:t$?x.Ʈή4[rl<_ò<_C>b_&bm^ S(>*6"gCU2#|E@C6$!Ad+T,/%}'&hfD?6m¦-Я<ĨA$BFɒDCúE1DRbʚp[AD6Hnj" 7tV47 bĦ0B, BB -r~;&pc#D$Zwx)/^*HKU^ 26Ҹ;P+.EXdgmZ'D(sPhq 2 F4O35WXL hTh_T5s:EMU@C1kǒ0`23Fz01DtR! >#'ƔS#HP23m 4Cr"f?76;xDL iP_ȃ#˜ EJ!\">b$e<3,u8{>g ܉H/w^ D*|.=E3aP5k=,ssXIO5܃!_>t|/:ovDtOz]ݵd+wt!!P=vQ+A 'Bt 8kY=P0׌ ^FWiC fcpCDAm+ŒMHwV n}`\C9,79Ez'D7 \ȝCm[O8W85@30DCe!Jd[ C<hXKxql T93FY,%C s(*̕t8Ax!uB0\dG ^ Z'yѕ")+chTD77\HTC1|F;B(BjV@SaD6\䕑#9C@N"TYTF=x>ad\\(:=<,?5p-@Y랍㸎Fx DS;lQփ2DmCd>@4и'ċҜ3B?D/GJ0F-(DC$Xن>H 1Ak F8Q\JIGx(!wNF1^S}.}0=p^tC?(8OgC[8׾J"@N#*F54' A(Phkg]BDh@3KZ;qT+ ET@oPs '@]6B,Im5D|o>y c;"cwݓBy {'BIy1xaz d珃sp`_?4`O߹! eؒB zAsݛ!?HISCĘNY+b>]~>\"ZJ\2 M]0a۴k#hpو3R8׌5A !#6衟ɝa$)/%~,9#F1\G^X<.}<1@ 8b1#Skh `vK%d4Ȼp ntA$Yl!\I&lj  {ܙɦAgz<>kp}Rl(C"3<D-#fj.yi!FDO骠!CȈ0!yLF .Q$yKjO9Ұ;ilVr)|$x@gG| )=FOB9{gk|n4L=d]f}hjlݖnѣjGoG!%eԡlJ|ݗߌwv>^~%-5Z} 6 تoIz2y്mytęgnK>Y{袍>餕^馝~ͼ sgi񚰞zo BX>[`E;l垛ޛマ* N}6D#' 1>ȿymqN\=EM?U_]emuߝ}?_襟ꭿ7r-~a?}cѱeC!}?Lm'%_O~VrX msFFه]V%} G(JI9 mjy! 5hU)>0`pa0`;-9S4k Þq-C k#9▀!Q7&U|h]>uG?ck @A"n< 2C<8y$<`oQҒ)I&XBrZVFy` Wp- l Ik#  N {e,gJGlG) R%T^%`1?G6MlqD@?Dp36 !s= h./z->8iL%;ݸi *mtڬEy@<)D%QmAu]NsSo9թNG[$@(珙k)>Hz&EJ%U|ٲZ=iPJXI]Au!:13s{XV R>gOf=u#,MQT|bXǞQ0#}TXDSg}8"DVG0#Q> R5EH|k&L%\ :x)KF9ھnA X/9@Cd)kYCg QEfA+\".*Dy$CVTq2Ddya6nv]4_ @2$Sz3E}2ǀB^ q-a`"pa,bH#AHH$<`! Z.;cn>;nxb0bU@f18=@42=GFxb b+"č?|ⱑ)}<9`(&j8 |]sqm="C's5HDg,!9$.n$|1Z`Dצ j |c)XC8(щ>:19>ŬKgzӝ.ȧCR @Tq3FwA`sdIeJ(XgI&ؾA-\?G 9 `hHApl,R+jqoyN[Qm"xDFDAߌ(`\b F$50HxB:ҡIF}\25^# - cE" @W\-1q\kH.7Y d $(! .9A byV_ Q=zy &eDjOn/"V\¢R @@@ ׊ ^#iGx*tfP) Sdl!(#L`J0#B#.2p8! ZhP:@ lpt" #\i(4B ШA583ސJ/QNԮ"Q'F(` S@o6! 2~b|.&pl\p+PD4 ̎)"d8S ʉ,`72BALr%Y.17 2DGIʄ(؈ER(# V* Bh d բ )QVdID'_5pk"D  A ή 1]q3f#òzY Je+ !"  R"aVD¶O#!<㺒R-ג-ƙ"B8/) B!$@#.rB!AhTo,#h#J0AZb "CbsI$ne31 ".2r!Hj/|. _2M4)17b.PCCors717j BfQJx(8ӏ#5]"6omXB d pS) ; .TB!^0v:'J"O;3C2 b;0"#b< "f /9/,)Oe& ,pO=TcCMAR uR ò$)Yb?Hё΁G%L4#t r6P faQ[(\q> CE "]а_i` `Z,- !2 L QM bkrf%%8TE&Mau"b+ 2: /Cr*^K69SaaU&#bg?3s+8Oc; A8h3D#(6#aUpe*끺V@l>h+6hpeߡWԦB ȶl%-! Zg%n.'  xf3 Kld js \ eA>`+I,nZ4peF&``WG-T|\8( b{Ss\2A!,2E*C4)q U\8/!۶s2!V!%lH`) )0 H=˺HT:0ρ "gF7_} v035X7SNy$OYye#hnY"`n%(Quj&|, ǥ[cy ڠ-,P]8Bq uBƐ1b6Y 9@ضS B ii}&!,ԲD}bКl?iJt GU4`, *0G7VHQE*%+oy M k C"` c;8^ 0͝KK۴#ʲx&L?sFd@! NQ+#)/G& 2a'< ):W (bFaFB&fNܘ.AdICD%0HT *j"PdCrZ"䡅*PW Z"Af$ qNbB*4fbmԂ-\F7!$bt}L<: ?,C=ZeB!QZąHfkmiCC _|"R%Ȫd a|A$:vRO`$ bXfV##⠮m410lH2@_Z7(<,[JɉP@XSRV@?Vn#s&N?C=v^ݫ芲(%_(`0whO*^a0^Gt|ɘ8Qf&tXXabs^w- b:J#J6}ƪ6ELߙx^덷EfJYHZ_ f߿U%~>L41"+ursoeOKx, TL  Pn9qbT|K[GO;(_'R\_j_$o>U} -%I>"J̬2.6/FW_ ,@_ AʨlDn'N4)j:B9ۧüs,a #>|A}իsp.yȓ7o޾~w޾E`ƍ?|іXP=6 "T"ԭ\z}@wȍXd͢Uvlٳ~-X`… 2%q1yCA#H$MTK2iVũOB5F6z1Ҧ/JZP/־w/}B'}:<lG2p篶ԫ[=ܻ{>˛?>ۻ?ۿ?28O=U AA#@wCc/XPUACW!`>&\dH68;ri!W O[#WFKJKL!T@AQNY;ȃ;[Ri%)V CC#4)!cHte$ <t·!nI D0Hㆀ>cCUFHbTd<$ϟQ;MO݊kk lKll.;D(Z@Aȓei(p]ܣ<@SP}( W 3^TkN>2yMAU Tm4#@@LG&@2sNX$<{ȵe0W;ZK.T2A{чnUA=;o݋׾Oa$@?4 >2wzw~ xNxn]*@CЋ/K 7CttP}Z?{dC-;2C;>M2q@=lE\W_C9!@?;C&,??k;>RnoO6v>4L^t\#ME?6Uvxz;o+&HLQI'xVp- 9ޡ !n$, Op,l _0H󎟤x'rOpBĈ<!ଫP(FDil !J,.^7x*Tzz= !Dim|ZR uvů"^( ƽpXABre\.+Z%2P~LKN\6ZEq!b,;M> t\ :(,HrX(t7*sl3 hJsl'p!.R 1_y&aL) :괕0j8ד{ >Ĩw$LR$ mCQƠ|H`EH,mFqUge (s,?])О9nx!m;e%\W ְud-H $!*DR9T> vfL<ȇ` lbO#i"׌(WnT;wCh,hE cs}Gfaׂt 9 +lr>=Z;q65@\|(CA!-IP 7 JgTYD ށ}dü.yj(">8pN$O0O88IG=,0~eXGe=9ʃE:W|JYr ClL@?9DL8A6$awmƟsk֩cA($Yq \ " 1EJPh#yUZ+zִo\+Apz9U.rvD*0G~"cRLqKT$~Jk0@ d%QQK>N4 ?RK2ڞA(؄E8Sewq𭾃moq;76dku+xcocQ2')A+~o+[<')cg ?Ћ~;e( X~o~ /+oKԯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmo+xx7Q0xq2>y{ч(k ⇀"/ {(!@>/Sgg{g\ኰV[PnPQEaAE^h{H88~&0gr|2eщޑH׎ߡ\qH7frj[!`IuщY8BmMs!@$914she !)f KQg)Iდ߁ɔ1"5ԱP4KW\yYݱjW\>u'1b08VT҉uӗfIwI}%bO@2LpP0_2 (4? L92(m3#m /qx' QL6PeӚM | L`jI010Df&INћc ("/\&В^qjNPE$?`i>0)X\eɚ"&ivӞ ב@CٝF嚰)*y:-G$/^4BTTǙYu: i)_r$PP @j2Tj`/FU! Vz)Y]*?xќO9)s6q)Ӛ (/qbD/\a '% 0)_9%"ţ6Pyvj WznW{6\P2$!LB @hb#q#Q'+!1*ߐ0)!XG8KT0AWZ+S PqJ =[BՒv?봺QPP GP?CmC9:&0AՑ7:^zf;#+ sٳ<Dr9FN:ӪrS^\9~]F^4-n;/$w>DzDIe+V7O@ `ӱ bQJ嵡56A@ң$)^n44Կ:3# PF`[^ӎ3rK3ȝcKP? ā`<3q: x4.4I9(5 xSK6!JJ!KKN+&~Y@p cCz3 %TEI;*-L$ p NJd y );N J!yQ}0 ~t%!w)ac"b <߱@ 2st(wFnN(~Lɓ+Oy`1y1IE[ %d ElL}biq!G:4RI'RK/4SM7SO?T{4Ilk"Ei('䑭GG 2`Q/"R! g @XJG}Hh)J]N!`wGt&}W% $S4=bfj}#iM}zP\I  ,$MO9ڵ״<طߔ`kՖO[)dNczwFs*ϟ_"' dtqT!@nIc8da`J%@V!fN|^"8ȕ6i;eˁ?mXC r-KC^hlU nRWhul-M Ato%z1,6$}%uP?|'|G?}׏F5i879v 8@GGD ۓG=ഒC>Pq 8v~pZCy.!q0 G<ǽ„P8ߑ Ã܇SR:‴UE!<pHt8C\pTw}D`,xja*Zad QBY@?a y)A=1c "鄎` RT 8> C Xidp"1a?竖p QnL}q*%pzTb#ղ<΁KhG+AUlHdEpmgM|d H<_Q`J?B:P? x_-o9JBZŖ&\iBF C!%]JzҔe>SV:['AGH ^<>a1$8%AЋ-CkZպVխok\Z{,ЄÁ`1b;;&K؇bX#0gR1]ؘ.v'PrX;|cto+$, ]`]q@CVz{[j98!ꗍs @ C T iM(6XrA%n|VQ<0!`[t\DVW#F6!BWduW"Ӧv5`z0 P7>̣lm"bUI&fԠSj@ aI+g e w%r6#GC2p}C!K\xo}tBmfb\sZULYڔ!ԕ &;bAk1xM@/@AG:ƀ]ރEJ<9袁(`!YN XeH,|BJ= uJg9 ΄~_jsvmnwwfqF!ѹnuw=ozozw+o.>pGxp|ws7yus?zЅ>tGGzҕt7Ozԥ>uWWzֵ^O[{>vgI|Oj k v[Hw|?x%st4" yw}U2$PYIHU(/>V؋}u$yL.D  4gB!EeG&|e~&]Wb~?&0,?d裷F 082рl"ZH8w'caj < ty h h t &d~,|y  wx2At O8X+,B£'p:kxx)ɋ: J:-xr``C@A9y=d(ЭyHIB|`|}P }`; ąp 8P!0~@D~8MDQC<ÆC8-`a$Ƥ;RĄ~86dȐq%(s ޺0:hIs0 w }`  y0p! p1Jry}`G X"w0}@wPHW5qb4ɓDɔTIC PѺQH"whRa @dh0 9i *p\ ~ i ar!˩i 6ڇrq}㏴yI}X20D 8K+\ɾ˿,7O‡X `ٖXH>,rH`LS = +ìɆ`@IMX L$4N9QH}-:|HNL-O' %ҔkB ]pJxN~؍[TnXt,pO|< O"}s} ОNn`-D0}X':I5-<ُ( %s )"t0Gˇ> e+Ӛ A4#5 +,R A!n@AihD,8X@S#`bЮS&݇OKd{Fp,qRBjіs-MNF{!h- "ZȦoz0y(ǸLl&n`͇]fp $b|#*s8ѧX~8DB b ܇l"g}(VX%q͡`դ/LG؀X.d7Q70HƄ`.J{5:4 &_˄lAٜ! C-PS ثڬھگ۰۱eRE۴U۵e[ڶ۸۹ۖ8ۼ۽۾ۿ%5EUeuDžȕɥʵ%5EUeuׅؕ٥ڵ%5EUeu%5EUeu&"R,   E) `moק'FaEsЀFґ*~8Phtt (Rax~ ⟐4Ԓ&ڴԇY`i/n3jSP : H.ya IG㭘t0.}80Q!6b n3Šq*(!}`UN5OHY"v=XM]VއWey]9۟*j˻Z]YB8POjtRLFк8wS̓рF LsVt^gwaxV0B! lCSde~UVh~phXkVP> C\|܏zHqD`Is詄"y~ v(8(K} ؂ ^* :i6&t0yzo¼2Oy8{Ȅ.Ѡ(@jՠjy.{ 0vZQr#iFF+؁pP{xCypnw{h!/\Gʦ&N7dZaaQYX섐ύzVaNffmn( {clȄO89 j hyn6\  |by؁o> }^{ sPѣ C0ҀN ߽ݎ}RUNƀ(F?0 C3{Bo7p|nc& t0pU#Ydž W%>fjf%Fy v xRX-?8|&n޺l|j^vi l&?< ox=0 C+|X~C7lh KOop, ` m6XφCYu{+fm1)'Nn7ڡ&W"^8+t(TiwIɀl$o `ZA~Gy) g?`|t[yhxXTrz86CHxsj!(kFЖ~ןGЖt~ KȪ>_}W:' `IKJ)nN Z8d  xKɞĜ/"WّXZ' H&֌)a~ HsuO $ø^o"'n9&0:—9Ƨ '7GWgwׇؗ٧ڷ'7GWgw'7GWgwy|x'p "Lp!Æ9(q"Ŋ/b̨q#ǎ? )r$I2lA<&)s&͚6o̩s'Ϟ> *t(ѢF")O< \J4+oRZ4Ն 'לe~ ;֨ #Q_6y:ͫw/߾~,x0†&W>| 4k<] h*dm٧dʖ1K9i}D;pPuIزڞ`}JҶ\gny|`߇mVM1|;޿/~<&'4}e{yV`$O=1P!䷟D]Ds1XRuA<aE"!H$n(!N( !aA?D أ?CY#?m0>uQMN5E6 O#e}J6 &IsiP:c!'С6JПTe I*,YQ}>ZEܓ@ 46:u}NB EIJЭ͓B7$<,FUe봚 d-vaCT*ir YbKRRSI\pNp=D]cA?Ը:"#tevY@U#3]3Ϲ B8l2J>؅;PIqASQل`R\>^ >Dڐ]`#LR; uL|ҁLp]Dl4\o)ޢ#5 w΄7vo@xjl_C0;b*>~~t҅!]gՐ.3K.LOJ,(LL@gv>9cUTTݢJ_%DZu矇P/Пd-w#.#ID~<d+zh '$`ɂsA3~4Ed!ɖx@='0d2 1B"h% @z܃_>"0(J@ EDd0P:Y|}1|GLJU:5MmBPLJS4ylnf8)H48@K$#@t OƄL?6S l# LF,èD'IQp j#H..YcI΃h}Zք툂,a k"$JhE\` Ї W !V# 1CD}>6@l vm?-V#;(`ɾtUz [pb(c Vh!&FB!Wʈyy ]Uw 4@VƬ$l8(^:{&];(9Ȉ7$fD x? ~=C`]},EP6?R`% wC *Pn d)ͱ~➈ɖ.t"&<0N~۰$\ %A2 %ks(W9nތ<[qw t w*C=&>8:^q̪]1J0:Qu 29 DHȭ1>mf[>?JW|d D(l#co\Oۖ=`ZC<$z $cAaT䃸c!ֽZpj=l ڧz] EAW6}A `@|CD)R]@ȃ999$?CYB]OuY?Е@tغ,! Nj`>t]D  SM=h-A@8!l`2] ,nG170o< "y9,5 ,@xB68>4@ǽ2!C ~o !&BPb((b)&=>$AߝC?T?C-?pO>PexAbDD7LYB(FERݘ-4 @ڽT-z?%^?U^Bb =.C$CM.D+B=T݃F'x Ĝ C)$1^aؕX6e-@%2A^̟)BfdJdRf!BAd5 g38'>T IBRWTI9D aS0ڜ<.wq&IƱAC9 0ED;%@xS=STdX=́ Uΐ.=A@ ]Y- 9A OxP)}ܥYg?HˬJc! En6"Df !!㍞:{@;X}L( DXa§|N}2 ~2^R(U@?D! @XqeCv 68E De fC6L_>A=DL@3\%D)C|W]H[rֹ`@=#dLʽC}˔ Ů5jD, 90(|kRt DJD$$J(*$DtjH64ʿm]A+C^+i m}yBctB'8R_ kD뉉(C=JDúM@K|AD0E1+,>hNW:q؅iDÐlBmmrmzD@JM(h(X<0A{{q>420BJ 83M*:@Wf>TDqx@ہ^A^E TQ^$2r Dȃf"p٢ݍ@@-<{>Ḋ *h[CۦI*oyr>wɚL@DX@p- @S|nnN4~>-:Lc}ŇC@ d!/#'J0~.P/D@?ځ/m΃o02LR8}-8L?p@f-B؇g0UJ?XiN:0*Ʉm D?dlAqA4VD_pm%[%cr&O \tX@@9CbjC%4>d5˚GS d `e5F ܒ9@I%?k`)V)H2V@̓= A,q>=[r/[@<, AnnVA.`ɤ 3<&CF)7`g8}4pNP3>[dlZ@h@ 73@.'ߌ41Ek!-TSDE#NK]4I<lE*D1BtY/0<<ӥM{t(75*+V(8AE(k7s!DdUAS8mqȲ&lvmmQ,nnT4wh<RnY1o+r3ws;s(@32@wLH7u[XvH<vABPuwzzw{t=dlF]7}Epx 8CHЯvX' ź̔h3[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {IDW܋D:iCU l*[c>+GT8FM1*>sEbac<rLDttT-^@:@{*tRrn &|?c4А̣[#z{x*Ɠ<Ռ@A@7@Cj{D@ =r X< ;QKC/ TCc;ڙ NlʷC$JE\vtAU@=|Tҥ,- ܃L dLUf} L@ %;FhT BLUdQ@Z۳  <[KCI$HWeM>8LDL dPbw QMpȨ Cj8A/@:TS?' CĐ\)*dt۷(',9ܰ6@K'ǻwl0`Cs8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹgO?N'CS,B޽E!{P!aطo@Uy_|ՓsPU3ѹ-Ej=paÇ'AT|ChGCg4tpB=X@`>SeTQ퐊o mmX""耛YϡG>zuױg׾{wuϟN7!xlw =A:J` a&0(5}L0(z,ât0# A8!1"KeyCI" @l(}hhsh'G*2E+$ Z@ bN{>R-/ S1,1`-G37* G3bK1 ti /yXQ!Aǟ}F{Ɗ |6; y"Nu?"#5VikVmEꀴ H\"醹y2(.R}'|}VXsd0<^|ۃ.}ʳ(G e{PB|4s7Bƛ8͊DgwXD'㉴JX衉.裑NZi0ۧ~s"}eRBЧbt)۟̇ȆjO}^ZI[-uh(}@^1=FGil,ص!y p'|F_q]yL4e, JՀ}ƭOwFn({(zVU.p1*=Jy>ɦև^/Ryp{  8dG3> N1H87#S|؇~ pP hVCHx ٳ8X]X&xtD5 縁HpQDLOD6TtH)P\DN`SxYYD9Αu(LQt@>APDP74*iIJC8(pu#`B(Vayy_@<1u)C H>ͪ[4{B< x$B@@0`Mʮp?230C裏,R$4yD1Q>DTt;1YР*0&hHpc< d|oRH KA` 4@7ޡ~P|,EiH,58HbW:K6 8P* dtODVe5YњV1hTC{j]W} [T;@X.uc!{!e1YnjkgAZю5iQZծuka[Ζmq[o\%g\b{EgBn,B-np$-&{Jd$"0$dS5c58%&g>8mZP$J m$!,76gu7EBJ(oD GkJڪ1" ,> ?.hA27nnS n&m4*@>.pD-J2+RnT{(NVvg!7r#k\pXH281 `sJ@X3;93"40_4e@."b,BJ73!b6b$:G+$e aGBRFRR7*cv%}#jn# bHSZ1D2 XE{?O!,e,o$<.GDD ppc~/p4P"0Dzq[LRatԂ&b#o!1v"v2MM1DWl-Fl =FXF$v5Zp"'A8"QP("xGOLNf " ~`8!@"D"`-*z-j-"ZMgHXWQB96 |8xW;id ec&B*̆lfmm7F-* Ճ)+v"THjp  V!ڝJ{VeWAW.2?dUd$}6A.!B=e(G"aQB'**)0d !169'}k"zF(-2? ڎZe-x4ٍ"3pEEH1m!Nк&3*?:/Fg H"o*PHszZ]8_7HA!t{-&cxQlI>avh {)h,"i}Fi۬=? l"Lhlb|X#&oFk4RZ@, 2KHHR6:\[E=j׭HEZV"/ɝ|B|ʩODʵ|˹˽<|ɼ<|ټ<|荒1SCu\'뺘}c:?KʧCV}) u'9R.lu&,EbXIZ_t a=']I]qa{"b+֑LpWI# V^eٝ}!{fx&&#v")Eauݻ]xV0b=]Y_؎M',Ejqk^x)!,}=ۿ6lu%mdm%7 E7pH6--~VSmlb#nan=.'! H.,Uo=+mp p-BB'Έq ><ÿVخv4uyW<x-)L]AW&oiWa8@BfwwW.x;^yw/9z_{ݺ{w|#%[72^!K2;1'oT8թӋoo,*لAB&"2% JX}K[x,h؆-tE/<̻XaMapNtQ`)*ZW 5"W!礌PE8wV  } *,oÇ#JHŋ3jȱǏ -bA}"'bEtI͛8sɳϟ@ JѣH*]ʴӧPJ þ#p_=I8ϫžRd,va{NW* ;y,Vy }-H[ Ux^i_̀7/l|mZ_ Nȓ+_μ{bW޹̥꫗"} aDǛ? u(^^Ym隽bH'?(l J(v S:  m FafE'FHC;##> G<@)DiHj>{e%lY:?(>(ӏ^! 4ђ4+R 'ey}#<*>3CWfڕ$)ߊ ԓD(?駠*ꨤjꩨ ti]CaUP:CxuAAD 7 @=V*_Z )ЁQp!z4<TL6p ><@?lXpIȓ "G,WlgU}]7e3f̣CP%>c, D@y1Y# ZP#S,C!!9z

O:] >.i5INj O,*㏬7G.S=뤴y=p\Z(gOacH68AY~ y}[WU \O l!kX81ԷA#e{D_od .5Js Hb!:'H N07z GHBC~%L W0 gH8̡w@ H"HL&:PH*ZX̢.^ oC aL6r$>21ĎGsQ'Ї;\dFDlF:IAG<8CF'# K?8A܈)ҁ`uL,~H(KFq" ",JHL& epԨd6Z;]Niܥ<"p# 5iycDz We2rjD3\ ) @!8UDvl2{0mU1'͐ #eR664ψ'h5Ж0]*ƅ֤3* t­lyR#WGӚJS! XͪVM5FH ­ihI PцbH!!ְp AN4! HGfp,xpbeE AA^y$>e!Xff {!#N]]F TѰ 9:gRLo[#җ~lLqM.ZI ltzp$ !e@sS[HA-^RO!vJ$nH1Ԉ4t^Q%6"12#5²r8hEkj.%RTP# AQ 0 zPr}7rEj >F o P HV"nhR23WFr" PbP+c^{sD&%^L1x )7%XN@ؘEHS2 0#!ϧMː6 uA'a  taP ^0 aak`aW."UI&B-AfE#%pv."vV/ʢru'BU_ W0.)۸Lٔ8h{NP<0~P) nHqh2,2oK(q&++3fT53"3Z Ce %_S9coo;V32ĐrK6'wc,M@o^շ;>9G#2$c2"c\Tc5`Ѓ9 c Twk6o3?cA7&Bvhi 7ȓ="#0  Nٝ7ԍא߷ %p7F`OVs C;0:f‚;Y+{ i3L1K! ,P"`V$U2 ͅ`+ =>Lk Bբ % qc 5idZfzh!prJ/8Iav|ڧ~::}Ѣڨ:Zzک:JBf$:xGJ3rPWp pwdBK1Lڬ~Gvb9MdiO*x sQ*p;֮:Mi|!]Prh"Vؐ[`^" ^d= ]]k^s~^50R W%`bq"ED~敁vdg'gVyWTaK \۵G0 _o"ZTp8'?`Z%1p00^gp =–!qP{FcP   ' r {.x z;Z"xPyA*+/F y`!))n |tzQт E(21T26uRJ(lh##Vi1!a"Y "jg{#9b;K5yP) ˀVǻ7%]Bi|x((76U))Ո[,C$@q Px 6NHHќE ,oi3+C0b C@\B N\7i&+ 1S82B 56sS7A7SCr<! :Pqh#60`NnJԽ'%\j^ 2{Inkʴ?C??t\ʦC +̦ ʮB4 P0JAh˺)(qz:lB <|4"Œ<\|؜ڼ< S P=i ]F=$S 1'44OkmKDSqq<52]<Au[ E[<#c}~MzP>̇M(Bq])= i!4̲G{ ;"{Tދ ذe CT5Ů'ڪ#AAZ  p|^i A PUƞ͆A0` zŲ=~O2%U;VHY& {$J[(YYŗmWxU.%.Ӥ [f)TRoRa4aIpc.2olҤ&foi 1;n$ ϶a 01]->N QPJp%D1'+a@孇|~N# ޠ_~OTxOPQWTv>nQ-rgsu(`0Qi}'[Zp8s!p(t$Ô: ˑEY:@h#`Ӕ?%_l^vr/gt}Q.i½aGkdJ(!h0Wna݄#[vߕ!K;@ #"pfkFB.|p 1P6>2Q $XA .dC%NXE5nG!E$YI)UdK1eΤ2< e#PP>ӠP޽ πA  {"mbԞPRZ@pOK< e[Ztɕ7]\]췯 'Lo) &#D\g `ؾs0ć-ko'^qɕ/g9o8]~'0~.`} 4ݾsOU_` yI w<Zja(Be炁@'db* -駴~"K1! MsC 9 @d'(䉀 GЩ$Yr ($rK.K0sL24L]HT(}}I <'|s  ``y(* B"S!;9QF z ǂ79ȳl Q|YM‡ {,y }$[ Jn!tՇBG:k{"CmCA}" ]3A-sm)t fFF>qP dy1wva#xb+bCK\91XVIM&{=q 2yK2h.fx`C(pս#sF8Qs!,P3ȋ>j|gk^t ~d?A e$I*Nr5RԢ2ڈlB#H`zd9 B`=beH: m@!=Xp~emk]8fC?$=0-X(р hp,X` G?Ps;@XKfagR֩,X!!8 Z)o}{_.O?ZK>g`- |2f¯8ƍrO80!񀸘GAњ0e  ( !Rtc/qm|cXtG= ' ĐY{Y6ldc^ ;dQ_g?ks#r|(؇!ϩǠY"Yss/-9@? (l r?Ą}ā Pu xզAOB "BO2fgآPum}5GUD?u"bzP)An0tυa>(t ZHe8b3.5IQ}кfwg^C &1c{U;(HUg eg>4߂ǯ2D3A,%FtC}C'yMLZz-Zx#B:5X͔ X>VQV>sk|.PL*ZeRLaNE َՙlor 2}ڇzqrFBԧo]s"σP(Da0j9ߡˀ&93mVl(R A 2íqB9m}m{/Dw#C恰l@'~|cO{܋0G_ӧw?@~}=~_g~__ ?@,@ t @Ȇ?`@ @K}` 6 c@|ڂc~t((D G,@ n@ 03S%ԇsB,׳0&/l ܑ[ #Ŀ^ H,C<4IBrAP{0C`&CKֻ (80{?|@h㢀(x;9Ā~ɆD\w@'])ز{i9*PQRSTTł"o@*X!Θ*|ƸSyh'LlGwt7  0PıR% ya I82){x(85>K"Fmj\5ƪ~HZ*x8lȏB΢2ђ;wItAI\aF)wcX ؐ ~8&dPGH xEkpݸzL9-lA9_LD!7T͈ hlzw`/:9XGnI|‣ZKwhH|0Ay`tZ&k(X v| k;R~My2\d}L\ 2;9뀴1`HȼN쬯P+tX4P='1 S lH=;DX*oȆRG9܌{"KChuL" sN PJр{h|Т3ˊ čwpyhB+BA4sDЁyM0],9]$P{(N'C((p8q P0 ẃؼ \hD0g[}x. PiZA؉Y/\#ؑԻϒ cS`{xSe.HL=SMM"ɆH(]]01Eaз!́It"} TX>h*(!"TUUEV'Ӈ7#"=8 '8s86N-Ws$ͫ){d|Ҙ tЇ&$~9Mn8 јc?pU؇lP }8spjE8hnW{WE}{GX\ؾ#[(8as ZuȕI`CȚ`wX8a;t<#@7"S]ȁ8t༆ǹ ˢFi u'c?@{V 3 @t7XPLZ\ 7\[{2A]-]u-=]]]ֵ*i]؍]ٝ]ڭ]۽]]]]] ^^,^M^U1:8^^ȇY#USH¼^D?XIKlFFa@ y(`v `ˇ8\P,h䖹d)ӇFƑE!"#N%>Zǡڮݩ &]œVڂ>hk`.MH5eb4FȈw20*H96s_ndGʀWǐLs8lߜLcOUȚ* ~79+"b 3@87hwHsU䭱sH! =iȉ< ρ2}dpgC42O\q2yILWr猽0.C_Ee' yT0 Ȳb߂Ky(Kʭlحw{`I t$gn wpD g  ';JL|l(fg>w"D0F`6<(Il`]ȍQy`gc'804 Kh&k=1'EmEgD(O0|~xa9 #}萅&lAf@RϺ^m֖; h\gO͈g.Ϧ>C{n&ZMFx)~R>΄7X .o6|`6B֙TS@l %u ̎kD5zosk:O1 =O؇_gX"m(&>H,a[.qd%<˨B.f叵(:HX1w@BS}&xzX8a#PP S0[%C$9 +C"?8< ,9{87cdSs87q9# ڛxWd O-+g-s#}dWA,\t1@yn8D9X[%XAX*'SIO4I͒ QX[iXi"y;`9oF]}[yh8xlȚ T$)! AO0]ڦ}Z9o&@fLXw# }@!yR͐idt<ذxѩÙ[c/`sgyBOy?T8_y"豅8 Fyy ?zOz_zozzzzzKy zD?d ףc *#Bb͢CRBA򔽲^- |׈|D!2ʣH${V VрH,0"|P8HPΑG &k @ԇ2cЀ4sHoEK ]ݒ?o (L~XFR t ]X者}3v> ɓ/ Ggˆ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:wY1<۷O޾tɫw,(Qy ZŪkӪLSgFXJGq(oByVM?}LZ 6nԣEbwnDPO^y߾y M!t㦋p+#C;h`;7? 8 x =Mx0O=)#MP>!87;D4>0}%*=N ^ͳ D 죏) AΝ#셙*7Ȼ3D$B=J4<4M;4QK=5UȠ,/8?p1)cD9[Qg] $>yτD|Aq> k=.SQDg QIQhwts+} 4ԣO6P @D> cAtM.:馣 ń3MuΜlaG -ho#RL|<K<~z|:3p6r$~_B|?)7@4@sP`x|H>0TiBApG8p[)<83! ֝K;qD4'$K!U| )` p>я%$-16D% jv#=~cLaw X;;" K(=2~; Џ DHy<24d%qIC<0IqMGa!IH:H:"Po"tH|M#yp؁J@e:pf;IiV  f #Q{%ЇaU(3Й= 5:$L$& >m#T:iMlFġ튨<& CxhOq"&DҖr2}`#aK}:ӄMH@s(jhA1~#u8q(hj&#αYjO0"Awā8DANiRs!k 6y(KCxBTR+# Uq @AVS@=-jSղ%6'bq"8 <t(5SUUc)";<SDzO HUPAs^ZUՅ<5ZeBwF5[!(DXxn1#bQH0?D *zKͅCH;& y{ݖbd]Qy Ƀ/$jn|)(xXUPwMs* )4]ȯ0i$BpD q&OdqEǕ-ҐH 'J <՘p53soyX:'.FP K{R|, y0^#W=]CMB?+32[@MG/}P-@@@aG90'MŅQZS.ty+)Z[MWHD7P?WD_fCfmYQG` E8`h@`F (BlvN,ʼnuAźC]xB))'dFD8W5FDDZKh\C"_-A^d>P}u C<)Dĵm=\I vd ĉN.B.!Ẽ2` TG¼-6.c3&7Jġd=݉9>@,BV`T:?CL>P >xBD? 4FC02b^B>fb@F>RB9h<A6X@E8< Q܃59LcZ /XO$PP¡͝E ǁEE\4>R>,C?E8X\t@?|Da^YѠǹQbUU<E[Řt Tޛ4. 0`ԃ$&B0L6pD]B$|?=Rf&$&`&?l C]5D6̟p%gjLAdE hԃfl 9%KEHeWAL}0QD&3ݏ`&7XK-&"iD>(EZ FUBqA 圀E^B\%(0SL*ZC7Ӄj͈ :#hd@6ńs78 05B%TH }DI^bD8FF@8YnŗQT!D'8(Q@}ۥ#DCABi #1nq>d8XR__eNHmQPeՈDžR LvÝ5*jB 8%( R`B8 ;C} ):=Bu xd<'Ui?aD4Q H=T`H|STݛ*MJ]> $)LS%+kN-$<<YBX>,;@> ԃ!=VC`CH#RjC|:G21Bc\Ta@,݃%{ԃC?̅u[)%,m0CdCE=X=d%)t R<,lAD@=DVc`q<4m<mߣfiKlNub{Qy[i[lӾ]Ŧȃ"> V`NDAK߾-R~^F.jL>@6;p=dVFhU1Qv:*(F:@50zRX@\@N &@q\uRY *iQt*0FD:F0@x>D >T:3;1Jl; R( Vo X*='B/4C77C)j1pC(P.L N|C4KKt~ 4LP\17 ea(4PP5QtD+I TWU_5VgVo5WwW5XX5YY5ZZ5[[5\ǵ\5]׵]5^^k^qɖUcD` N 6JDlŀ$q` %c(d[adfo6gooŮ*;#lJ0Guq̂sf`tlwm6nNoLqìVhWCn[c@ hWDrr{EJ?LH\>0A%nh8$ZpVG>@ hx(;Q` f@S6C]Prw1xQ:ZI @2>`\Bu'D,qAF#E?;A:綏8!PfS8THwlU0YWXtēgVQ<ڄ\Ѕ]CGboWb,FcB!f0LD0R|#tŋ/=ҧ U F>̐TճD H\ \h\94K){ ;L@$g~$>t6p-EDit&DaFdNM~ƢLȝhՃ(P.݀0+e8w‹Ɏ>lkD,l»wO ';((ͣl4y}!Pu )ϟɛZL/tnE}c~M< @?}[Kh~ I$C qO{:B(0!ၾk$Ec t;%bA$O@/fD'# E0vla&>XAoE F1E'=9D<;zf'oBþ9d~ds(!Tof <\|% - 5ܐ=#Lǐ4K'XM!% :9yVcAG1 x@2 OL4{D;L<ǟdQ-zRj{zQ Ġ}PBz(#Fx`A@~@aTh"~ܳOy4 N9G/C-8@ZiEC2"|чyΙwJ8\3 QEu \NşP@![ U(k ' Ȳ9P'J7ys{`U^{5 =#Hv=A^hZyB؇ B? x3&^!";~t1i{Q=lL|'@䖃<y؞8$pQ=!Ah<2 .C(pZox(PrֲcI2> IȆ<CPٸ 0""BzX` gT:m$3I ` x%;ь8m\0`jmT"HG>$)YIK#Ɋ`z @ [x]"(@?8" c6V}8HNIdje(ULBQ`L@0ճ$ГuaNۇ( 0ѳw. >ܙnFeyGIyZ 9tTH0}1XCg-P}G<}$,[#|$`"""@0\T˹c9i($Q=eGw@IДUc8  bbHwMǐJ઀(RUA U@ -D@{tATO?8.Y~hI[ZӞVf| YՀRч@ސGd DUa\.Z+1FtuhF6Q&|TNՒzEwLcj| { t8cov~Bԅp|X!^oKQ(̡ye!!܃%AhDlt1>ŘmG:FyIg 9<{s l 錅M}{/){&CRtX0ޡDi!P!gh!6V ^ҿ#/ Gfu7) С9.Ir>ƣ x$G0[}<  csSZb6eN~\:mfUW>~L؞ (cppؘ"[J\3ΌG=Pj͸% u.+jWxCKo p=1nMbC5I  ^wh-.6E[@,zNi":< |߶- ;8pfcS@c3n@!rb Q~x0F*?cvb MB &()*R**/ƥ%lA~v`ZO!ZHю2fȃ~cX0NW!-AB*"8A R21EB"4,ல0Hj#q0a+%0! "aܡ0Dx(",cpR13Z7Bxf(5K21hX@ya\-@,ip\ĥ#.[O@c C`d86 <`\ExNd37d( @`A]:^l>Ukr b;+|m@zCҩ.$צ}ڎ^zAb:Wl:S5#bTHqhx" T?\MPƓ a["TkX1-F[[? AL!dvMu8Ō;~ 9w1tքu6(B;a: Hrg*Px`P M&{P"TpoKLT5Nډw=L{Nƴrҧ's>p z;a_܏?p g?fSO%#BA'> "Du}XՀt>"0!GXw^)&wupKQ3ZZ<_)'QQ(W[%F5!Y\updӡqkQAX[yݓɩi>نn%DoyԬp~З)X@[I0fCptІ kІTB6M(t'ep /p? qOLqcMRBNDa>!NuO<܈A#)̏<4>C_%^4P" Oq|&Q;lr]V0O72`P$f%i"`>&ed&E]$'H͕هA3*2T`rsaxp 萏Xr>* zA@T,F#PvaUzMkзxrh=f2̏ אF Ar ,}8_)$̐P}X3<,%F/PQ WPũ#Dap{Bf#@6ּ%V`ps9;H"BLX*0Ǿ0w BzvɝGh<̋Hp{ZAt52;>_R2t ` {ṽ5A'OKu=9G?d\qFI"@cl}jhZ |)LjAH@a0&FP4ΣH4Ca  g8r=yC]Y*reJZ-mpץȜC]0@h F bAYLU C"C;cEO뒏#d<'Nkvq~Ǹ˽6t݇ s{{X\WS~Bԙ|Wi͐eD&dk ø5Z{ _a STmZdG D] @&;H ԭ տO\p9l#*Rz Jlr!z LcVf`q`dq.|u|g`Ms4ssQp%VrQշ!Me!e I~fr'xSlT'1vMG!WNAXH1Ew)NbF'#~&"g6З`}wx>>z3+ }`] 'dr5 3 z qx.4p>(Gq!~/|1R8|Ȋ芯Z(GRVkfUS*`7fCvS0MH5c8BYP /r ';h LN:vp:P,& M`@08Pd3' j1*a q`fNOA(tlP?rt}5'\sZR~!"F&t]17Y rג|sNy&_Ew$'c$pyZX4&i\"@iq!"pӈ)6P4"H 0 b}q M}`.zƔ L ?{c0^i=sėF#Sw)Yx 6S&]Qjd8$y٩ɝueE[KL&EpY`O1+v籇$QbApa hp@#5/sLf4@H)Qsd /7ٰQ[b#uKF HaP>e`@71g&P,4Hឦ U=*CdA?::`ol.e0//q `c)pzpV`eJvGP .u)6U'OJp >2 p&`C`zLS R4r-` 0ܐ*'AdKj1gj6"`hu/pRRZPЁ@&% p x %SKxra jT%x 'qp A& ^5ըEʚ!ԁ]' я@-Fs↧Fz[x;A(;41+3K5keuo.*'.` 96, wB,! dVs#pLwben.SKo<ހ%H`Qˌz1%L._08`m"'F .@Pj!b% ` Q[!%FAGr cDK#rŕ 0 3iO bd`LaK:7#]Z$QQPL `Iм(PlX oQsд ˉ;LC$}dдw&^=ˉ+a$ .$}'2*\VUy ~414,2D瑴 qPr4AR|0+=AC!KcM\Rd7id!LaPQ#7 ȁ,ȃ\X:'Lȏas:Ƕ0!P0!/A4tej+]mIKMOH SMUmWY0R]_ a-Tcmgikmeo q-sM2]wy{׳} ؁-؃M؅Mm؉؋؍M׈ؑ-ٓMٕ]Ԑmٙٛٝј١-ڣMڥʠmکګڭ=|ڱ-۳M۵Fm۹ۻ۽}-Mܾ ōɭ -zm׍ٝխ 9Mm -Mm .Nn .Nn!.#N%n')+-/1.3N5n79;=?A.CNEnGIKMOQ.SNUnWY[]_a.cNengikmoq.sNunwy{}.Nn臎艮.Nn闎陮.Nn꧎ꩮ.Nn뷎빮.Nnǎɮ.Nn׎ٮ.Nn.Nn/Oo /Oo!/#O%o')+-/1/3O5o79;=?A/COEoGIKMOQ/SOUoWY[]_a/cOeogikmoq/sOuowy{}/Oo/Oo/Oo/Oo/OoǏɯ/Oo׏ٯ/Oo/OoN@ DPB >QD-^ĘQF=~RH%MDRJ-]SL5męSN=}TPEETRM>UTU^ŚUV]~VXe͞EVZmݾW\uśW^}X`… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥMFZj֭][lڵmƝ[n޽}\pōG\r͝?]tխ_Ǟ]vݽ^x͟G^zݿ_|ǟ_~0@$@D0AdA0B 'B /0C 7C?1DG$DOD1EWdE_1FgFo1GwG2H!$H#D2I%dI'2J)J+2K-K/3L1$L3D3M5dM7߄3N9礳N;3O=O?4PA%PCE4QEeQG4RI'RK/4SM7SO?5TQG%TSOE5UUWeUW_5VYgV[o5W]w嵡! ,f664^^\jjl&&$nnlVVT ..,224ZZ\JJL**,::<BBDzz|""$bbd>>@|$00<08  ¾b\` ^d`̜Ȧtv`xp@t~nfHLF@tntĒx\~xltt䘠|vpfp<<4 `ԺPXX̞xbhd\tH@hH:HlvVl80L86(Nfbxtttl0 0.l0.0(:0FJ@xnf`0@XPX ʔ||4<<~zfhtfİ*$L@:$<`p||rvx `4ԴvvtFFDFF N>ԳEF)TV Y#@=#(ͣ % O Ih&QlIGqvdP>p(`堄jj_wL@@A# FA22dC,iIt:*B6Īz&sFA?f 2+[T>3;@ :6&H|FAHn[Sd鲏% -ښACQ?``,p<ΑhBx@:K~pa@O=xPHZi ϲ,@ @t>H,:3,2a7X6@r>>C(́ C@)=sںM< @BC;F#]MhE@Iу2.PΈ,4:/v [!xrN(3v9p9;@#\ 77Tsl{::'-  =#=o #Q |%e#~LJF#x"G$ XP |C77 +1AzP  {$uhG2өD (C YS z 2dCP!IHHA? dSrA!Ƀ=,`U%@a}s!wp؁'XFđ$2K@'J `GnyVWH_ L j MB X`PL%(@D=Alx:&]0jV`A"Џ @m*Cgy 0)A"x2y/ n J@dpwZUWlU1V:u LmS&Fd`>2Mj3s+]md"p~D I n"!>C~jb)Ҁ}cG*߭я0k\nV2Q`-H[yPDLZ,zYr0s2#Vk>umJ""ykMϊe2<HA?CXlA'8"x# `]gL%+X@t-H >E'H>܂0U`ٿrGԣQ;@ [ !]B&ꁢju?x@ $汷A[ޣ IqãrëBЇN%$R>F =|A&*]CI1^En< P`!9]dǬ)7{_˺@ZKQpyDB\=4k 1jbDu Ka-@;ߑ)b|BaC;9A߃.1 "ۚ2\ѧO[)/>69" *D\ w~H|@Ph<IRP{T'EV== 0 ` 77@W5@M}kc_0pwV $ '3ydRgS H`(+H# 0['G9`r 8*p`8@/gV q$7\pXpr!G@WC?r `S\=%aw6p$@aPԈ|Mpq٠` 0$z(G0nL 3&D &G &cgMM&" \p O6p%WD`KRxV$(/ LP CRݳ C#1+@"rsx Y@Jw! iy ّp>P)A&@h(029E9HJLٔNPR9TYVyXZ\ٕ^`b }=Wf.Ӊ^T!9<.scYvyx ~d /Ȃ*{Xv"2ygC@SEmæ.3p4\1F])"" !`yz }"0q!"4 C\cMc S,`_ $0[U#0xňٞ`{Ep /%u: dT{p$WPS@pNI`j١Mu[P)y'P27v) q% 0w z5,"K" Ŝ HJ q,:R>3/gmCP@ .0eـƄ` vzxz}"*,Չ"gY``S0fq`waH%  +Jl@l[Ve 6 -4}ڒᡊ0OA`dzJF@3mP /D?#ըpXme P" :,f0Yq$p"Aɕ a/dOf#`6-[KAR#!P0"W$  (77+ p-y:<x>p1r]/@\"%"Ziuh:p@:=`!qT =KӚ##F#ud`V#HBmI$*{MGP[} a&p hTc =P5(04<䥉[{q^HٶA$Z]ZA1aX@WgU;bes۽!$!e껾 Qq;`||2?@.Q16 \,|l IB>-<RE<SxـC; @PRnk0QŚљ,!3S m !i=|x%"N"H3SBr[\ž$!O ')Zٜ3~Zr0oɜarf,':٩e<)癞ǺR\}0*B:L\*Cuq2@Vuz(T [;'W@g*/РjDZ>*'4R,98WXX䂰l1/]|)7F*hzlEV0Ӣ1a0(mA*}aL58E:j=pS2˵DJ-H'K 0o05$@6 Sd&Z:A173p#7tc7906,>@>%TD't)ԩ ? {gp% |"%]29 $>DԆ^'0Q"]@ V D ߤ:qAAE+zaLRFRǧq㈪eq$Rd.J;QtVPF1G P X 6׀4{Y#LۭTYK*LI&f+M?4 #hMK/'4l @Ji,4lt۬Қhw5<>HC{+&ZtTˇEi!K:%>9 `vmz#-a릫@S }^ P5QMR  de:'5%!YqXf4P2YRTPQ5UqUVSPrR!VY]J^tf*rP5mf R7Ws < װ Gp \f R3_WUWA2ORvE(`W'aO֊I +/_am誮jxr*+5\M"0Q"`V Pɔ/P *CEv/MU[YlFW:J|:@F9r-f,o#L5cT-<60,,64_y"YK~@| ʯZ|m,[$K m^x^m.{l6$7 G߼}5诟(o_|Dq{$)P<1R_t%Q y"=.L$6gSbwD!,1 LL2/wɓ1𛷢30rb`媔cй2GӇ x/>omE'21|}gay}wOOڐХ}\mܹuo'^qɕ/gsѥO^uٵ+G` FG!l}Xq߄mn_,甼LJ ~}zG\wNدO bϟ d!, G 7FYa$h3?7 /7 /y!1 sL7@ g}'}JBH4J0偊wGCM8sN:NO@|HAs(ǐ/ x@!L 8zaє{@௓@ "ا-:r$;YwGXD-z4ԁ(/ i*#[iʡZ}"˦*>2&2@tmKF!! |C{L|gFx W&ϑi[I`meڸc*( ASVye[vecyfk+P ܧ2b8y8ч o"C,@3D؁y֪y(3KPʂ + `} RE{R*ͮa:Gڶb's:zP:ʌs *s{ق-tyR'I|FE)[W\|Rot +R$"0wvP(C~~o.u#C" 9?8 p(3 Ѻ#n66p8H0" 0 (EHt̃M$Iq}c,B|p |W/h*k9VT@\x oH<n|40KB$]nҠāQB* g.xG?ad0682AA#<@$A@AOde+]JXR%Aw2xyR$f1yLd&Sdf3GėZI.yMlfSf7MpSP>Gzɲ Qdg;NxSg=ul%g?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens,ϥnu ;fb7 vtwǙTw^żeo{{*X bqHua5P >v H8G1E:Kͣuؼҝ*|Dxn9eqW xcɐԍeHc=Z# f ^b"IK )W.[J/,Xkhlx7 х@Pz<4eȀ 9fR N$CL˓N#gOE_^4X*=MˤXAHj6Z=ȥ >&#Cܲ:Cf7fdPsՉj$cb&>eIuqX{L rn9}u{AD O("WL: &@a Q@B DAH$6XȈ&xcPUl/DC^2nIHDm2Y4I dX%5mLHI@@(;0$( @'LRGOқ:P<G^򓇥C`p4H:zF-(2t9byA$A O<ij@ |>?x?ɀyC} ?{I# ;b# } 88x,iӠ '¿ЅDAdAAaH ш0ĕFLD"`>R,o5r3xw p}pWсHyCVTy, } hg̋、@3/ NᐹPrt$ 8-CX6= 0 yEq y}`2Z}ƁP W,w8C, <) zܳ&hFaE EYFE\L7H##y H~G }x.bd|e{PilʹH[l'ȯDCZ 6X , ϓ4EKf8(Ik@SAP;0K0CF2+ˈ|ј";m+ Y @`4ayh1(ȆQ PDxXF;3a4[C0ȇRPZĊ &"㴍д K@y0͑p̐mq5Pcx0PP9Jq p:˴̤ 4 7C |@ QRiH2yȆq{k 0&8zЄHS;R,H" 9T#}%3K RBP}O X+Q KE|=RdRYF@DLӬʔ LQ%EՌywGQr-X5-|OӶ' VM  8Fd }= ~ R8`}Tۈ`978 PΑ%HEtu(3>J Y2\s]y %2B\R P)_yvD֒( @8CN\yRN[PSb؇ +aU0w2 OyEijq͖KږX  `5Ŋu9004}.>Ґ!F=T+ ȆF"a %,1JY aaXZ>(_ѥ`b7S =豯xdYiAFPvo Д 1& (571 14>Iac>!ْ`"(nHUTQy^TՃxIV`ֲ9e'I@*U|Z?`" 2n(JnS",".Jt!& ظCk1n /҇9ǁ00* Qm=z:Z|Ȇ!md2W$>otG_'% ?lc&I*H~tPk2WMُPCgdJxhQu[O&|tiLXueڧYs;udOve_vfovgvhvivjvkvlvm- Ȁ-p2#Ou1wRDQovvx Q ȕ }ny Ȁ(5ǎ躼wå؏KrHxw> (`&y|hpX1ܨ @,@ @&K:<8ՒP^&ӦKܒyFȁ-0pyPywy ]nq ;{vx{Z[p<|@|{X }zxL@lN o-QA2K GySd y-0ۈdԟ)|IʇϊTQcwЅ`Y);<CЇ埣9 &/2=50گ W}OiA9V&4`T,R.P(m@>XfK p O} 4ԣϏ,(p#+ @?Qۉɧ@ԣ@,;_0Ž/ N[?Ӓ؋/^v@h^p\J;d I Xʫm A"^˃;P8}oHt9h_6 .:R.hm>$Q>FI5V9 3]NL賵MQw,4?[HmO?@WsER' Zo[h0H,d B3ь4 d|Ӟ@ҡ] @B`&yI"2CXφB$PpaӘ)3R)}ЇEQĔ񀆮!IC/GK}t/8@ʈ#0l qA(ac21ߑJҜ=#7Cl=X~ؘA)Q$K:yp +cOZ/bO :mZ(L| RC:C"" R8l#C^!|X[nA`D=!VWj VJ`s`UP8m ن4u-s}r  lSty% akA'>ρ}XK xnt š㺃1s dH w6#m-A?4bǓ4 &&tб8"(t~dIȃ;> {q CzI d $^>dCE> }w"[G6x@o1ZS(>~CiHy @ Xò j +!RF5oox(8V= zUNEiu F2i^,_C(ُ|$aac@\= at,rK3 ʒk]#´@2 `,xG.m`+_n|(Az=w,C`!Yx ^%^cYbG<عȲ\/?~^X$@Kq),|%Ka<VhY$"9@?(0c==8BC1GfBYC dC:_6=QD:|B7„<`4;91A>4`_>0!D?8@8 ,R,ICR`>N] 81J(B T;P߱9_yCҼCȃu.DZuCm5BVԽ@ZaXZ3}_B@ԟ ) >IԃEIElb 1Akjm@|sC_,i|@(|*!j- VDCA4  u7N6FGDC oDD#_>@bjQA4c>j z LJ|&.&p^C@$*z"a@,@n%2**Y^>"J$KK$yxDd̓!XT@ <NID.= LTX2Gt∍<E !`Ce==e17!DcIDľL"E ?L6TH!CH@WJ㢥CVd+)CT cg>,M2BE%e ;dfd9;`,_&$C =)DuPyRDSSsHA>>g =,e=Cxb-C vp)L))F@=\s<dC@BQ=`e@0]+C-1!|_T)R$BtH CsG؂B@ aX8$|#] ,DmA@k࠽2P.0ܢTZvD62jB*J Pk3f&d# TCALA*N!B0-胇m꠱I(DɃ;Z(-b+*{CB\!*I >"D<'UyEAC?T?Ǣ?[>P@d?:£ ;?|֫Hc*;jJLTr,O$#؆>87.h_3CXs&[D:-: > Wl?T;jBsl%V?ɫ^Lm,e@4W8:t$?x.Ʈή4[rl<_ò<_C>b_&bm^ S(>*6"gCU2#|E@C6$!Ad+T,/%}'&hfD?6m¦-Я<ĨA$BFɒDCúE1DRbʚp[AD6Hnj" 7tV47 bĦ0B, BB -r~;&pc#D$Zwx)/^*HKU^ 26Ҹ;P+.EXdgmZ'D(sPhq 2 F4O35WXL hTh_T5s:EMU@C1kǒ0`23Fz01DtR! >#'ƔS#HP23m 4Cr"f?76;xDL iP_ȃ#˜ EJ!\">b$e<3,u8{>g ܉H/w^ D*|.=E3aP5k=,ssXIO5܃!_>t|/:ovDtOz]ݵd+wt!!P=vQ+A 'Bt 8kY=P0׌ ^FWiC fcpCDAm+ŒMHwV n}`\C9,79Ez'D7 \ȝCm[O8W85@30DCe!Jd[ C<hXKxql T93FY,%C s(*̕t8Ax!uB0\dG ^ Z'yѕ")+chTD77\HTC1|F;B(BjV@SaD6\䕑#9C@N"TYTF=x>ad\\(:=<,?5p-@Y랍㸎Fx DS;lQփ2DmCd>@4и'ċҜ3B?D/GJ0F-(DC$Xن>H 1Ak F8Q\JIGx(!wNF1^S}.}0=p^tC?(8OgC[8׾J"@N#*F54' A(Phkg]BDh@3KZ;qT+ ET@oPs '@]6B,Im5D|o>y c;"cwݓBy {'BIy1xaz d珃sp`_?4`O߹! eؒB zAsݛ!?HISCĘNY+b>]~>\"ZJ\2 M]0a۴k#hpو3R8׌5A !#6衟ɝa$)/%~,9#F1\G^X<.}<1@ 8b1#Skh `vK%d4Ȼp ntA$Yl!\I&lj  {ܙɦAgz<>kp}Rl(C"3<D-#fj.yi!FDO骠!CȈ0!yLF .Q$yKjO9Ұ;ilVr)|$x@gG| )=FOB9{gk|n4L=d]f}hjlݖnѣjGoG!%eԡlJ|ݗߌwv>^~%-5Z} 6 تoIz2y്mytęgnK>Y{袍>餕^馝~ͼ sgi񚰞zo BX>[`E;l垛ޛマ* N}6D#' 1>ȿymqN\=EM?U_]emuߝ}?_襟ꭿ7r-~a?}cѱeC!}?Lm'%_O~VrX msFFه]V%} G(JI9 mjy! 5hU)>0`pa0`;-9S4k Þq-C k#9▀!Q7&U|h]>uG?ck @A"n< 2C<8y$<`oQҒ)I&XBrZVFy` Wp- l Ik#  N {e,gJGlG) R%T^%`1?G6MlqD@?Dp36 !s= h./z->8iL%;ݸi *mtڬEy@<)D%QmAu]NsSo9թNG[$@(珙k)>Hz&EJ%U|ٲZ=iPJXI]Au!:13s{XV R>gOf=u#,MQT|bXǞQ0#}TXDSg}8"DVG0#Q> R5EH|k&L%\ :x)KF9ھnA X/9@Cd)kYCg QEfA+\".*Dy$CVTq2Ddya6nv]4_ @2$Sz3E}2ǀB^ q-a`"pa,bH#AHH$<`! Z.;cn>;nxb0bU@f18=@42=GFxb b+"č?|ⱑ)}<9`(&j8 |]sqm="C's5HDg,!9$.n$|1Z`Dצ j |c)XC8(щ>:19>ŬKgzӝ.ȧCR @Tq3FwA`sdIeJ(XgI&ؾA-\?G 9 `hHApl,R+jqoyN[Qm"xDFDAߌ(`\b F$50HxB:ҡIF}\25^# - cE" @W\-1q\kH.7Y d $(! .9A byV_ Q=zy &eDjOn/"V\¢R @@@ ׊ ^#iGx*tfP) Sdl!(#L`J0#B#.2p8! ZhP:@ lpt" #\i(4B ШA583ސJ/QNԮ"Q'F(` S@o6! 2~b|.&pl\p+PD4 ̎)"d8S ʉ,`72BALr%Y.17 2DGIʄ(؈ER(# V* Bh d բ )QVdID'_5pk"D  A ή 1]q3f#òzY Je+ !"  R"aVD¶O#!<㺒R-ג-ƙ"B8/) B!$@#.rB!AhTo,#h#J0AZb "CbsI$ne31 ".2r!Hj/|. _2M4)17b.PCCors717j BfQJx(8ӏ#5]"6omXB d pS) ; .TB!^0v:'J"O;3C2 b;0"#b< "f /9/,)Oe& ,pO=TcCMAR uR ò$)Yb?Hё΁G%L4#t r6P faQ[(\q> CE "]а_i` `Z,- !2 L QM bkrf%%8TE&Mau"b+ 2: /Cr*^K69SaaU&#bg?3s+8Oc; A8h3D#(6#aUpe*끺V@l>h+6hpeߡWԦB ȶl%-! Zg%n.'  xf3 Kld js \ eA>`+I,nZ4peF&``WG-T|\8( b{Ss\2A!,2E*C4)q U\8/!۶s2!V!%lH`) )0 H=˺HT:0ρ "gF7_} v035X7SNy$OYye#hnY"`n%(Quj&|, ǥ[cy ڠ-,P]8Bq uBƐ1b6Y 9@ضS B ii}&!,ԲD}bКl?iJt GU4`, *0G7VHQE*%+oy M k C"` c;8^ 0͝KK۴#ʲx&L?sFd@! NQ+#)/G& 2a'< ):W (bFaFB&fNܘ.AdICD%0HT *j"PdCrZ"䡅*PW Z"Af$ qNbB*4fbmԂ-\F7!$bt}L<: ?,C=ZeB!QZąHfkmiCC _|"R%Ȫd a|A$:vRO`$ bXfV##⠮m410lH2@_Z7(<,[JɉP@XSRV@?Vn#s&N?C=v^ݫ芲(%_(`0whO*^a0^Gt|ɘ8Qf&tXXabs^w- b:J#J6}ƪ6ELߙx^덷EfJYHZ_ f߿U%~>L41"+ursoeOKx, TL  Pn9qbT|K[GO;(_'R\_j_$o>U} -%I>"J̬2.6/FW_ ,@_ AʨlDn'N4)j:B9ۧüs,a #>|A}իsp.yȓ7o޾~w޾E`ƍ?|іXP=6 "T"ԭ\z}@wȍXd͢Uvlٳ~-X`… 2%q1yCA#H$MTK2iVũOB5F6z1Ҧ/JZP/־w/}B'}:<lG2p篶ԫ[=ܻ{>˛?>ۻ?ۿ?28O=U AA#@wCc/XPUACW!`>&\dH68;ri!W O[#WFKJKL!T@AQNY;ȃ;[Ri%)V CC#4)!cHte$ <t·!nI D0Hㆀ>cCUFHbTd<$ϟQ;MO݊kk lKll.;D(Z@Aȓei(p]ܣ<@SP}( W 3^TkN>2yMAU Tm4#@@LG&@2sNX$<{ȵe0W;ZK.T2A{чnUA=;o݋׾Oa$@?4 >2wzw~ xNxn]*@CЋ/K 7CttP}Z?{dC-;2C;>M2q@=lE\W_C9!@?;C&,??k;>RnoO6v>4L^t\#ME?6Uvxz;o+&HLQI'xVp- 9ޡ !n$, Op,l _0H󎟤x'rOpBĈ<!ଫP(FDil !J,.^7x*Tzz= !Dim|ZR uvů"^( ƽpXABre\.+Z%2P~LKN\6ZEq!b,;M> t\ :(,HrX(t7*sl3 hJsl'p!.R 1_y&aL) :괕0j8ד{ >Ĩw$LR$ mCQƠ|H`EH,mFqUge (s,?])О9nx!m;e%\W ְud-H $!*DR9T> vfL<ȇ` lbO#i"׌(WnT;wCh,hE cs}Gfaׂt 9 +lr>=Z;q65@\|(CA!-IP 7 JgTYD ށ}dü.yj(">8pN$O0O88IG=,0~eXGe=9ʃE:W|JYr ClL@?9DL8A6$awmƟsk֩cA($Yq \ " 1EJPh#yUZ+zִo\+Apz9U.rvD*0G~"cRLqKT$~Jk0@ d%QQK>N4 ?RK2ڞA(؄E8Sewq𭾃moq;76dku+xcocQ2')A+~o+[<')cg ?Ћ~;e( X~o~ /+oKԯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmo+xx7Q0xq2>y{ч(k ⇀"/ {(!@>/Sgg{g\ኰV[PnPQEaAE^h{H88~&0gr|2eщޑH׎ߡ\qH7frj[!`IuщY8BmMs!@$914she !)f KQg)Iდ߁ɔ1"5ԱP4KW\yYݱjW\>u'1b08VT҉uӗfIwI}%bO@2LpP0_2 (4? L92(m3#m /qx' QL6PeӚM | L`jI010Df&INћc ("/\&В^qjNPE$?`i>0)X\eɚ"&ivӞ ב@CٝF嚰)*y:-G$/^4BTTǙYu: i)_r$PP @j2Tj`/FU! Vz)Y]*?xќO9)s6q)Ӛ (/qbD/\a '% 0)_9%"ţ6Pyvj WznW{6\P2$!LB @hb#q#Q'+!1*ߐ0)!XG8KT0AWZ+S PqJ =[BՒv?봺QPP GP?CmC9:&0AՑ7:^zf;#+ sٳ<Dr9FN:ӪrS^\9~]F^4-n;/$w>DzDIe+V7O@ `ӱ bQJ嵡56A@ң$)^n44Կ:3# PF`[^ӎ3rK3ȝcKP? ā`<3q: x4.4I9(5 xSK6!JJ!KKN+&~Y@p cCz3 %TEI;*-L$ p NJd y );N J!yQ}0 ~t%!w)ac"b <߱@ 2st(wFnN(~Lɓ+Oy`1y1IE[ %d ElL}biq!G:4RI'RK/4SM7SO?T{4Ilk"Ei('䑭GG 2`Q/"R! g @XJG}Hh)J]N!`wGt&}W% $S4=bfj}#iM}zP\I  ,$MO9ڵ״<طߔ`kՖO[)dNczwFs*ϟ_"' dtqT!@nIc8da`J%@V!fN|^"8ȕ6i;eˁ?mXC r-KC^hlU nRWhul-M Ato%z1,6$}%uP?|'|G?}׏F5i879v 8@GGD ۓG=ഒC>Pq 8v~pZCy.!q0 G<ǽ„P8ߑ Ã܇SR:‴UE!<pHt8C\pTw}D`,xja*Zad QBY@?a y)A=1c "鄎` RT 8> C Xidp"1a?竖p QnL}q*%pzTb#ղ<΁KhG+AUlHdEpmgM|d H<_Q`J?B:P? x_-o9JBZŖ&\iBF C!%]JzҔe>SV:['AGH ^<>a1$8%AЋ-CkZպVխok\Z{,ЄÁ`1b;;&K؇bX#0gR1]ؘ.v'PrX;|cto+$, ]`]q@CVz{[j98!ꗍs @ C T iM(6XrA%n|VQ<0!`[t\DVW#F6!BWduW"Ӧv5`z0 P7>̣lm"bUI&fԠSj@ aI+g e w%r6#GC2p}C!K\xo}tBmfb\sZULYڔ!ԕ &;bAk1xM@/@AG:ƀ]ރEJ<9袁(`!YN XeH,|BJ= uJg9 ΄~_jsvmnwwfqF!ѹnuw=ozozw+o.>pGxp|ws7yus?zЅ>tGGzҕt7Ozԥ>uWWzֵ^O[{>vgI|Oj k v[Hw|?x%st4" yw}U2$PYIHU(/>V؋}u$yL.D  4gB!EeG&|e~&]Wb~?&0,?d裷F 082рl"ZH8w'caj < ty h h t &d~,|y  wx2At O8X+,B£'p:kxx)ɋ: J:-xr``C@A9y=d(ЭyHIB|`|}P }`; ąp 8P!0~@D~8MDQC<ÆC8-`a$Ƥ;RĄ~86dȐq%(s ޺0:hIs0 w }`  y0p! p1Jry}`G X"w0}@wPHW5qb4ɓDɔTIC PѺQH"whRa @dh0 9i *p\ ~ i ar!˩i 6ڇrq}㏴yI}X20D 8K+\ɾ˿,7O‡X `ٖXH>,rH`LS = +ìɆ`@IMX L$4N9QH}-:|HNL-O' %ҔkB ]pJxN~؍[TnXt,pO|< O"}s} ОNn`-D0}X':I5-<ُ( %s )"t0Gˇ> e+Ӛ A4#5 +,R A!n@AihD,8X@S#`bЮS&݇OKd{Fp,qRBjіs-MNF{!h- "ZȦoz0y(ǸLl&n`͇]fp $b|#*s8ѧX~8DB b ܇l"g}(VX%q͡`դ/LG؀X.d7Q70HƄ`.J{5:4 &_˄lAٜ! C-PS ثڬھگ۰۱eRE۴U۵e[ڶ۸۹ۖ8ۼ۽۾ۿ%5EUeuDžȕɥʵ%5EUeuׅؕ٥ڵ%5EUeu%5EUeu&"R,   E) `moק'FaEsЀFґ*~8Phtt (Rax~ ⟐4Ԓ&ڴԇY`i/n3jSP : H.ya IG㭘t0.}80Q!6b n3Šq*(!}`UN5OHY"v=XM]VއWey]9۟*j˻Z]YB8POjtRLFк8wS̓рF LsVt^gwaxV0B! lCSde~UVh~phXkVP> C\|܏zHqD`Is詄"y~ v(8(K} ؂ ^* :i6&t0yzo¼2Oy8{Ȅ.Ѡ(@jՠjy.{ 0vZQr#iFF+؁pP{xCypnw{h!/\Gʦ&N7dZaaQYX섐ύzVaNffmn( {clȄO89 j hyn6\  |by؁o> }^{ sPѣ C0ҀN ߽ݎ}RUNƀ(F?0 C3{Bo7p|nc& t0pU#Ydž W%>fjf%Fy v xRX-?8|&n޺l|j^vi l&?< ox=0 C+|X~C7lh KOop, ` m6XφCYu{+fm1)'Nn7ڡ&W"^8+t(TiwIɀl$o `ZA~Gy) g?`|t[yhxXTrz86CHxsj!(kFЖ~ןGЖt~ KȪ>_}W:' `IKJ)nN Z8d  xKɞĜ/"WّXZ' H&֌)a~ HsuO $ø^o"'n9&0:—9Ƨ '7GWgwׇؗ٧ڷ'7GWgw'7GWgwy|x'p "Lp!Æ9(q"Ŋ/b̨q#ǎ? )r$I2lA<&)s&͚6o̩s'Ϟ> *t(ѢF")O< \J4+oRZ4Ն 'לe~ ;֨ #Q_6y:ͫw/߾~,x0†&W>| 4k<] h*dm٧dʖ1K9i}D;pPuIزڞ`}JҶ\gny|`߇mVM1|;޿/~<&'4}e{yV`$O=1P!䷟D]Ds1XRuA<aE"!H$n(!N( !aA?D أ?CY#?m0>uQMN5E6 O#e}J6 &IsiP:c!'С6JПTe I*,YQ}>ZEܓ@ 46:u}NB EIJЭ͓B7$<,FUe봚 d-vaCT*ir YbKRRSI\pNp=D]cA?Ը:"#tevY@U#3]3Ϲ B8l2J>؅;PIqASQل`R\>^ >Dڐ]`#LR; uL|ҁLp]Dl4\o)ޢ#5 w΄7vo@xjl_C0;b*>~~t҅!]gՐ.3K.LOJ,(LL@gv>9cUTTݢJ_%DZu矇P/Пd-w#.#ID~<d+zh '$`ɂsA3~4Ed!ɖx@='0d2 1B"h% @z܃_>"0(J@ EDd0P:Y|}1|GLJU:5MmBPLJS4ylnf8)H48@K$#@t OƄL?6S l# LF,èD'IQp j#H..YcI΃h}Zք툂,a k"$JhE\` Ї W !V# 1CD}>6@l vm?-V#;(`ɾtUz [pb(c Vh!&FB!Wʈyy ]Uw 4@VƬ$l8(^:{&];(9Ȉ7$fD x? ~=C`]},EP6?R`% wC *Pn d)ͱ~➈ɖ.t"&<0N~۰$\ %A2 %ks(W9nތ<[qw t w*C=&>8:^q̪]1J0:Qu 29 DHȭ1>mf[>?JW|d D(l#co\Oۖ=`ZC<$z $cAaT䃸c!ֽZpj=l ڧz] EAW6}A `@|CD)R]@ȃ999$?CYB]OuY?Е@tغ,! Nj`>t]D  SM=h-A@8!l`2] ,nG170o< "y9,5 ,@xB68>4@ǽ2!C ~o !&BPb((b)&=>$AߝC?T?C-?pO>PexAbDD7LYB(FERݘ-4 @ڽT-z?%^?U^Bb =.C$CM.D+B=T݃F'x Ĝ C)$1^aؕX6e-@%2A^̟)BfdJdRf!BAd5 g38'>T IBRWTI9D aS0ڜ<.wq&IƱAC9 0ED;%@xS=STdX=́ Uΐ.=A@ ]Y- 9A OxP)}ܥYg?HˬJc! En6"Df !!㍞:{@;X}L( DXa§|N}2 ~2^R(U@?D! @XqeCv 68E De fC6L_>A=DL@3\%D)C|W]H[rֹ`@=#dLʽC}˔ Ů5jD, 90(|kRt DJD$$J(*$DtjH64ʿm]A+C^+i m}yBctB'8R_ kD뉉(C=JDúM@K|AD0E1+,>hNW:q؅iDÐlBmmrmzD@JM(h(X<0A{{q>420BJ 83M*:@Wf>TDqx@ہ^A^E TQ^$2r Dȃf"p٢ݍ@@-<{>Ḋ *h[CۦI*oyr>wɚL@DX@p- @S|nnN4~>-:Lc}ŇC@ d!/#'J0~.P/D@?ځ/m΃o02LR8}-8L?p@f-B؇g0UJ?XiN:0*Ʉm D?dlAqA4VD_pm%[%cr&O \tX@@9CbjC%4>d5˚GS d `e5F ܒ9@I%?k`)V)H2V@̓= A,q>=[r/[@<, AnnVA.`ɤ 3<&CF)7`g8}4pNP3>[dlZ@h@ 73@.'ߌ41Ek!-TSDE#NK]4I<lE*D1BtY/0<<ӥM{t(75*+V(8AE(k7s!DdUAS8mqȲ&lvmmQ,nnT4wh<RnY1o+r3ws;s(@32@wLH7u[XvH<vABPuwzzw{t=dlF]7}Epx 8CHЯvX' ź̔h3[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {IDW܋D:iCU l*[c>+GT8FM1*>sEbac<rLDttT-^@:@{*tRrn &|?c4А̣[#z{x*Ɠ<Ռ@A@7@Cj{D@ =r X< ;QKC/ TCc;ڙ NlʷC$JE\vtAU@=|Tҥ,- ܃L dLUf} L@ %;FhT BLUdQ@Z۳  <[KCI$HWeM>8LDL dPbw QMpȨ Cj8A/@:TS?' CĐ\)*dt۷(',9ܰ6@K'ǻwl0`Cs8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹgO?N'CS,B޽E!{P!aطo@Uy_|ՓsPU3ѹ-Ej=paÇ'AT|ChGCg4tpB=X@`>SeTQ퐊o mmX""耛YϡG>zuױg׾{wuϟN7!xlw =A:J` a&0(5}L0(z,ât0# A8!1"KeyCI" @l(}hhsh'G*2E+$ Z@ bN{>R-/ S1,1`-G37* G3bK1 ti /yXQ!Aǟ}F{Ɗ |6; y"Nu?"#5VikVmEꀴ H\"醹y2(.R}'|}VXsd0<^|ۃ.}ʳ(G e{PB|4s7Bƛ8͊DgwXD'㉴JX衉.裑NZi0ۧ~s"}eRBЧbt)۟̇ȆjO}^ZI[-uh(}@^1=FGil,ص!y p'|F_q]yL4e, JՀ}ƭOwFn({(zVU.p1*=Jy>ɦև^/Ryp{  8dG3> N1H87#S|؇~ pP hVCHx ٳ8X]X&xtD5 縁HpQDLOD6TtH)P\DN`SxYYD9Αu(LQt@>APDP74*iIJC8(pu#`B(Vayy_@<1u)C H>ͪ[4{B< x$B@@0`Mʮp?230C裏,R$4yD1Q>DTt;1YР*0&hHpc< d|oRH KA` 4@7ޡ~P|,EiH,58HbW:K6 8P* dtODVe5YњV1hTC{j]W} [T;@X.uc!{!e1YnjkgAZю5iQZծuka[Ζmq[o\%g\b{EgBn,B-np$-&{Jd$"0$dS5c58%&g>8mZP$J m$!,76gu7EBJ(oD GkJڪ1" ,> ?.hA27nnS n&m4*@>.pD-J2+RnT{(NVvg!7r#k\pXH281 `sJ@X3;93"40_4e@."b,BJ73!b6b$:G+$e aGBRFRR7*cv%}#jn# bHSZ1D2 XE{?O!,e,o$<.GDD ppc~/p4P"0Dzq[LRatԂ&b#o!1v"v2MM1DWl-Fl =FXF$v5Zp"'A8"QP("xGOLNf " ~`8!@"D"`-*z-j-"ZMgHXWQB96 |8xW;id ec&B*̆lfmm7F-* Ճ)+v"THjp  V!ڝJ{VeWAW.2?dUd$}6A.!B=e(G"aQB'**)0d !169'}k"zF(-2? ڎZe-x4ٍ"3pEEH1m!Nк&3*?:/Fg H"o*PHszZ]8_7HA!t{-&cxQlI>avh {)h,"i}Fi۬=? l"Lhlb|X#&oFk4RZ@, 2KHHR6:\[E=j׭HEZV"/ɝ|B|ʩODʵ|˹˽<|ɼ<|ټ<|荒1SCu\'뺘}c:?KʧCV}) u'9R.lu&,EbXIZ_t a=']I]qa{"b+֑LpWI# V^eٝ}!{fx&&#v")Eauݻ]xV0b=]Y_؎M',Ejqk^x)!,}=ۿ6lu%mdm%7 E7pH6--~VSmlb#nan=.'! H.,Uo=+mp p-BB'Έq ><ÿVخv4uyW<x-)L]AW&oiWa8@BfwwW.x;^yw/9z_{ݺ{w|#%[72^!K2;1'oT8թӋoo,*لAB&"2% JX}K[x,h؆-tE/<̻XaMapNtQ`)*ZW 5"W!礌PE8wV  } *,oÇ#JHŋ3jȱǏ -bA}"'bEtI͛8sɳϟ@ JѣH*]ʴӧPJ þ#p_=I8ϫžRd,va{NW* ;y,Vy }-H[ Ux^i_̀7/l|mZ_ Nȓ+_μ{bW޹̥꫗"} aDǛ? u(^^Ym隽bH'?(l J(v S:  m FafE'FHC;##> G<@)DiHj>{e%lY:?(>(ӏ^! 4ђ4+R 'ey}#<*>3CWfڕ$)ߊ ԓD(?駠*ꨤjꩨ ti]CaUP:CxuAAD 7 @=V*_Z )ЁQp!z4<TL6p ><@?lXpIȓ "G,WlgU}]7e3f̣CP%>c, D@y1Y# ZP#S,C!!9z

O:] >.i5INj O,*㏬7G.S=뤴y=p\Z(gOacH68AY~ y}[WU \O l!kX81ԷA#e{D_od .5Js Hb!:'H N07z GHBC~%L W0 gH8̡w@ H"HL&:PH*ZX̢.^ oC aL6r$>21ĎGsQ'Ї;\dFDlF:IAG<8CF'# K?8A܈)ҁ`uL,~H(KFq" ",JHL& epԨd6Z;]Niܥ<"p# 5iycDz We2rjD3\ ) @!8UDvl2{0mU1'͐ #eR664ψ'h5Ж0]*ƅ֤3* t­lyR#WGӚJS! XͪVM5FH ­ihI PцbH!!ְp AN4! HGfp,xpbeE AA^y$>e!Xff {!#N]]F TѰ 9:gRLo[#җ~lLqM.ZI ltzp$ !e@sS[HA-^RO!vJ$nH1Ԉ4t^Q%6"12#5²r8hEkj.%RTP# AQ 0 zPr}7rEj >F o P HV"nhR23WFr" PbP+c^{sD&%^L1x )7%XN@ؘEHS2 0#!ϧMː6 uA'a  taP ^0 aak`aW."UI&B-AfE#%pv."vV/ʢru'BU_ W0.)۸Lٔ8h{NP<0~P) nHqh2,2oK(q&++3fT53"3Z Ce %_S9coo;V32ĐrK6'wc,M@o^շ;>9G#2$c2"c\Tc5`Ѓ9 c Twk6o3?cA7&Bvhi 7ȓ="#0  Nٝ7ԍא߷ %p7F`OVs C;0:f‚;Y+{ i3L1K! ,P"`V$U2 ͅ`+ =>Lk Bբ % qc 5idZfzh!prJ/8Iav|ڧ~::}Ѣڨ:Zzک:JBf$:xGJ3rPWp pwdBK1Lڬ~Gvb9MdiO*x sQ*p;֮:Mi|!]Prh"Vؐ[`^" ^d= ]]k^s~^50R W%`bq"ED~敁vdg'gVyWTaK \۵G0 _o"ZTp8'?`Z%1p00^gp =–!qP{FcP   ' r {.x z;Z"xPyA*+/F y`!))n |tzQт E(21T26uRJ(lh##Vi1!a"Y "jg{#9b;K5yP) ˀVǻ7%]Bi|x((76U))Ո[,C$@q Px 6NHHќE ,oi3+C0b C@\B N\7i&+ 1S82B 56sS7A7SCr<! :Pqh#60`NnJԽ'%\j^ 2{Inkʴ?C??t\ʦC +̦ ʮB4 P0JAh˺)(qz:lB <|4"Œ<\|؜ڼ< S P=i ]F=$S 1'44OkmKDSqq<52]<Au[ E[<#c}~MzP>̇M(Bq])= i!4̲G{ ;"{Tދ ذe CT5Ů'ڪ#AAZ  p|^i A PUƞ͆A0` zŲ=~O2%U;VHY& {$J[(YYŗmWxU.%.Ӥ [f)TRoRa4aIpc.2olҤ&foi 1;n$ ϶a 01]->N QPJp%D1'+a@孇|~N# ޠ_~OTxOPQWTv>nQ-rgsu(`0Qi}'[Zp8s!p(t$Ô: ˑEY:@h#`Ӕ?%_l^vr/gt}Q.i½aGkdJ(!h0Wna݄#[vߕ!K;@ #"pfkFB.|p 1P6>2Q $XA .dC%NXE5nG!E$YI)UdK1eΤ2< e#PP>ӠP޽ πA  {"mbԞPRZ@pOK< e[Ztɕ7]\]췯 'Lo) &#D\g `ؾs0ć-ko'^qɕ/g9o8]~'0~.`} 4ݾsOU_` yI w<Zja(Be炁@'db* -駴~"K1! MsC 9 @d'(䉀 GЩ$Yr ($rK.K0sL24L]HT(}}I <'|s  ``y(* B"S!;9QF z ǂ79ȳl Q|YM‡ {,y }$[ Jn!tՇBG:k{"CmCA}" ]3A-sm)t fFF>qP dy1wva#xb+bCK\91XVIM&{=q 2yK2h.fx`C(pս#sF8Qs!,P3ȋ>j|gk^t ~d?A e$I*Nr5RԢ2ڈlB#H`zd9 B`=beH: m@!=Xp~emk]8fC?$=0-X(р hp,X` G?Ps;@XKfagR֩,X!!8 Z)o}{_.O?ZK>g`- |2f¯8ƍrO80!񀸘GAњ0e  ( !Rtc/qm|cXtG= ' ĐY{Y6ldc^ ;dQ_g?ks#r|(؇!ϩǠY"Yss/-9@? (l r?Ą}ā Pu xզAOB "BO2fgآPum}5GUD?u"bzP)An0tυa>(t ZHe8b3.5IQ}кfwg^C &1c{U;(HUg eg>4߂ǯ2D3A,%FtC}C'yMLZz-Zx#B:5X͔ X>VQV>sk|.PL*ZeRLaNE َՙlor 2}ڇzqrFBԧo]s"σP(Da0j9ߡˀ&93mVl(R A 2íqB9m}m{/Dw#C恰l@'~|cO{܋0G_ӧw?@~}=~_g~__ ?@,@ t @Ȇ?`@ @K}` 6 c@|ڂc~t((D G,@ n@ 03S%ԇsB,׳0&/l ܑ[ #Ŀ^ H,C<4IBrAP{0C`&CKֻ (80{?|@h㢀(x;9Ā~ɆD\w@'])ز{i9*PQRSTTł"o@*X!Θ*|ƸSyh'LlGwt7  0PıR% ya I82){x(85>K"Fmj\5ƪ~HZ*x8lȏB΢2ђ;wItAI\aF)wcX ؐ ~8&dPGH xEkpݸzL9-lA9_LD!7T͈ hlzw`/:9XGnI|‣ZKwhH|0Ay`tZ&k(X v| k;R~My2\d}L\ 2;9뀴1`HȼN쬯P+tX4P='1 S lH=;DX*oȆRG9܌{"KChuL" sN PJр{h|Т3ˊ čwpyhB+BA4sDЁyM0],9]$P{(N'C((p8q P0 ẃؼ \hD0g[}x. PiZA؉Y/\#ؑԻϒ cS`{xSe.HL=SMM"ɆH(]]01Eaз!́It"} TX>h*(!"TUUEV'Ӈ7#"=8 '8s86N-Ws$ͫ){d|Ҙ tЇ&$~9Mn8 јc?pU؇lP }8spjE8hnW{WE}{GX\ؾ#[(8as ZuȕI`CȚ`wX8a;t<#@7"S]ȁ8t༆ǹ ˢFi u'c?@{V 3 @t7XPLZ\ 7\[{2A]-]u-=]]]ֵ*i]؍]ٝ]ڭ]۽]]]]] ^^,^M^U1:8^^ȇY#USH¼^D?XIKlFFa@ y(`v `ˇ8\P,h䖹d)ӇFƑE!"#N%>Zǡڮݩ &]œVڂ>hk`.MH5eb4FȈw20*H96s_ndGʀWǐLs8lߜLcOUȚ* ~79+"b 3@87hwHsU䭱sH! =iȉ< ρ2}dpgC42O\q2yILWr猽0.C_Ee' yT0 Ȳb߂Ky(Kʭlحw{`I t$gn wpD g  ';JL|l(fg>w"D0F`6<(Il`]ȍQy`gc'804 Kh&k=1'EmEgD(O0|~xa9 #}萅&lAf@RϺ^m֖; h\gO͈g.Ϧ>C{n&ZMFx)~R>΄7X .o6|`6B֙TS@l %u ̎kD5zosk:O1 =O؇_gX"m(&>H,a[.qd%<˨B.f叵(:HX1w@BS}&xzX8a#PP S0[%C$9 +C"?8< ,9{87cdSs87q9# ڛxWd O-+g-s#}dWA,\t1@yn8D9X[%XAX*'SIO4I͒ QX[iXi"y;`9oF]}[yh8xlȚ T$)! AO0]ڦ}Z9o&@fLXw# }@!yR͐idt<ذxѩÙ[c/`sgyBOy?T8_y"豅8 Fyy ?zOz_zozzzzzKy zD?d ףc *#Bb͢CRBA򔽲^- |׈|D!2ʣH${V VрH,0"|P8HPΑG &k @ԇ2cЀ4sHoEK ]ݒ?o (L~XFR t ]X者}3v> ɓ/ Ggˆ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:wY1<۷O޾tɫw,(Qy ZŪkӪLSgFXJGq(oByVM?}LZ 6nԣEbwnDPO^y߾y M!t㦋p+#C;h`;7? 8 x =Mx0O=)#MP>!87;D4>0}%*=N ^ͳ D 죏) AΝ#셙*7Ȼ3D$B=J4<4M;4QK=5UȠ,/8?p1)cD9[Qg] $>yτD|Aq> k=.SQDg QIQhwts+} 4ԣO6P @D> cAtM.:馣 ń3MuΜlaG -ho#RL|<K<~z|:3p6r$~_B|?)7@4@sP`x|H>0TiBApG8p[)<83! ֝K;qD4'$K!U| )` p>я%$-16D% jv#=~cLaw X;;" K(=2~; Џ DHy<24d%qIC<0IqMGa!IH:H:"Po"tH|M#yp؁J@e:pf;IiV  f #Q{%ЇaU(3Й= 5:$L$& >m#T:iMlFġ튨<& CxhOq"&DҖr2}`#aK}:ӄMH@s(jhA1~#u8q(hj&#αYjO0"Awā8DANiRs!k 6y(KCxBTR+# Uq @AVS@=-jSղ%6'bq"8 <t(5SUUc)";<SDzO HUPAs^ZUՅ<5ZeBwF5[!(DXxn1#bQH0?D *zKͅCH;& y{ݖbd]Qy Ƀ/$jn|)(xXUPwMs* )4]ȯ0i$BpD q&OdqEǕ-ҐH 'J <՘p53soyX:'.FP K{R|, y0^#W=]CMB?+32[@MG/}P-@@@aG90'MŅQZS.ty+)Z[MWHD7P?WD_fCfmYQG` E8`h@`F (BlvN,ʼnuAźC]xB))'dFD8W5FDDZKh\C"_-A^d>P}u C<)Dĵm=\I vd ĉN.B.!Ẽ2` TG¼-6.c3&7Jġd=݉9>@,BV`T:?CL>P >xBD? 4FC02b^B>fb@F>RB9h<A6X@E8< Q܃59LcZ /XO$PP¡͝E ǁEE\4>R>,C?E8X\t@?|Da^YѠǹQbUU<E[Řt Tޛ4. 0`ԃ$&B0L6pD]B$|?=Rf&$&`&?l C]5D6̟p%gjLAdE hԃfl 9%KEHeWAL}0QD&3ݏ`&7XK-&"iD>(EZ FUBqA 圀E^B\%(0SL*ZC7Ӄj͈ :#hd@6ńs78 05B%TH }DI^bD8FF@8YnŗQT!D'8(Q@}ۥ#DCABi #1nq>d8XR__eNHmQPeՈDžR LvÝ5*jB 8%( R`B8 ;C} ):=Bu xd<'Ui?aD4Q H=T`H|STݛ*MJ]> $)LS%+kN-$<<YBX>,;@> ԃ!=VC`CH#RjC|:G21Bc\Ta@,݃%{ԃC?̅u[)%,m0CdCE=X=d%)t R<,lAD@=DVc`q<4m<mߣfiKlNub{Qy[i[lӾ]Ŧȃ"> V`NDAK߾-R~^F.jL>@6;p=dVFhU1Qv:*(F:@50zRX@\@N &@q\uRY *iQt*0FD:F0@x>D >T:3;1Jl; R( Vo X*='B/4C77C)j1pC(P.L N|C4KKt~ 4LP\17 ea(4PP5QtD+I TWU_5VgVo5WwW5XX5YY5ZZ5[[5\ǵ\5]׵]5^^k^qɖUcD` N 6JDlŀ$q` %c(d[adfo6gooŮ*;#lJ0Guq̂sf`tlwm6nNoLqìVhWCn[c@ hWDrr{EJ?LH\>0A%nh8$ZpVG>@ hx(;Q` f@S6C]Prw1xQ:ZI @2>`\Bu'D,qAF#E?;A:綏8!PfS8THwlU0YWXtēgVQ<ڄ\Ѕ]CGboWb,FcB!f0LD0R|#tŋ/=ҧ U F>̐TճD H\ \h\94K){ ;L@$g~$>t6p-EDit&DaFdNM~ƢLȝhՃ(P.݀0+e8w‹Ɏ>lkD,l»wO ';((ͣl4y}!Pu )ϟɛZL/tnE}c~M< @?}[Kh~ I$C qO{:B(0!ၾk$Ec t;%bA$O@/fD'# E0vla&>XAoE F1E'=9D<;zf'oBþ9d~ds(!Tof <\|% - 5ܐ=#Lǐ4K'XM!% :9yVcAG1 x@2 OL4{D;L<ǟdQ-zRj{zQ Ġ}PBz(#Fx`A@~@aTh"~ܳOy4 N9G/C-8@ZiEC2"|чyΙwJ8\3 QEu \NşP@![ U(k ' Ȳ9P'J7ys{`U^{5 =#Hv=A^hZyB؇ B? x3&^!";~t1i{Q=lL|'@䖃<y؞8$pQ=!Ah<2 .C(pZox(PrֲcI2> IȆ<CPٸ 0""BzX` gT:m$3I ` x%;ь8m\0`jmT"HG>$)YIK#Ɋ`z @ [x]"(@?8" c6V}8HNIdje(ULBQ`L@0ճ$ГuaNۇ( 0ѳw. >ܙnFeyGIyZ 9tTH0}1XCg-P}G<}$,[#|$`"""@0\T˹c9i($Q=eGw@IДUc8  bbHwMǐJ઀(RUA U@ -D@{tATO?8.Y~hI[ZӞVf| YՀRч@ސGd DUa\.Z+1FtuhF6Q&|TNՒzEwLcj| { t8cov~Bԅp|X!^oKQ(̡ye!!܃%AhDlt1>ŘmG:FyIg 9<{s l 錅M}{/){&CRtX0ޡDi!P!gh!6V ^ҿ#/ Gfu7) С9.Ir>ƣ x$G0[}<  csSZb6eN~\:mfUW>~L؞ (cppؘ"[J\3ΌG=Pj͸% u.+jWxCKo p=1nMbC5I  ^wh-.6E[@,zNi":< |߶- ;8pfcS@c3n@!rb Q~x0F*?cvb MB &()*R**/ƥ%lA~v`ZO!ZHю2fȃ~cX0NW!-AB*"8A R21EB"4,ல0Hj#q0a+%0! "aܡ0Dx(",cpR13Z7Bxf(5K21hX@ya\-@,ip\ĥ#.[O@c C`d86 <`\ExNd37d( @`A]:^l>Ukr b;+|m@zCҩ.$צ}ڎ^zAb:Wl:S5#bTHqhx" T?\MPƓ a["TkX1-F[[? AL!dvMu8Ō;~ 9w1tքu6(B;a: Hrg*Px`P M&{P"TpoKLT5Nډw=L{Nƴrҧ's>p z;a_܏?p g?fSO%#BA'> "Du}XՀt>"0!GXw^)&wupKQ3ZZ<_)'QQ(W[%F5!Y\updӡqkQAX[yݓɩi>نn%DoyԬp~З)X@[I0fCptІ kІTB6M(t'ep /p? qOLqcMRBNDa>!NuO<܈A#)̏<4>C_%^4P" Oq|&Q;lr]V0O72`P$f%i"`>&ed&E]$'H͕هA3*2T`rsaxp 萏Xr>* zA@T,F#PvaUzMkзxrh=f2̏ אF Ar ,}8_)$̐P}X3<,%F/PQ WPũ#Dap{Bf#@6ּ%V`ps9;H"BLX*0Ǿ0w BzvɝGh<̋Hp{ZAt52;>_R2t ` {ṽ5A'OKu=9G?d\qFI"@cl}jhZ |)LjAH@a0&FP4ΣH4Ca  g8r=yC]Y*reJZ-mpץȜC]0@h F bAYLU C"C;cEO뒏#d<'Nkvq~Ǹ˽6t݇ s{{X\WS~Bԙ|Wi͐eD&dk ø5Z{ _a STmZdG D] @&;H ԭ տO\p9l#*Rz Jlr!z LcVf`q`dq.|u|g`Ms4ssQp%VrQշ!Me!e I~fr'xSlT'1vMG!WNAXH1Ew)NbF'#~&"g6З`}wx>>z3+ }`] 'dr5 3 z qx.4p>(Gq!~/|1R8|Ȋ芯Z(GRVkfUS*`7fCvS0MH5c8BYP /r ';h LN:vp:P,& M`@08Pd3' j1*a q`fNOA(tlP?rt}5'\sZR~!"F&t]17Y rג|sNy&_Ew$'c$pyZX4&i\"@iq!"pӈ)6P4"H 0 b}q M}`.zƔ L ?{c0^i=sėF#Sw)Yx 6S&]Qjd8$y٩ɝueE[KL&EpY`O1+v籇$QbApa hp@#5/sLf4@H)Qsd /7ٰQ[b#uKF HaP>e`@71g&P,4Hឦ U=*CdA?::`ol.e0//q `c)pzpV`eJvGP .u)6U'OJp >2 p&`C`zLS R4r-` 0ܐ*'AdKj1gj6"`hu/pRRZPЁ@&% p x %SKxra jT%x 'qp A& ^5ըEʚ!ԁ]' я@-Fs↧Fz[x;A(;41+3K5keuo.*'.` 96, wB,! dVs#pLwben.SKo<ހ%H`Qˌz1%L._08`m"'F .@Pj!b% ` Q[!%FAGr cDK#rŕ 0 3iO bd`LaK:7#]Z$QQPL `Iм(PlX oQsд ˉ;LC$}dдw&^=ˉ+a$ .$}'2*\VUy ~414,2D瑴 qPr4AR|0+=AC!KcM\Rd7id!LaPQ#7 ȁ,ȃ\X:'Lȏas:Ƕ0!P0!/A4tej+]mIKMOH SMUmWY0R]_ a-Tcmgikmeo q-sM2]wy{׳} ؁-؃M؅Mm؉؋؍M׈ؑ-ٓMٕ]Ԑmٙٛٝј١-ڣMڥʠmکګڭ=|ڱ-۳M۵Fm۹ۻ۽}-Mܾ ōɭ -zm׍ٝխ 9Mm -Mm .Nn .Nn!.#N%n')+-/1.3N5n79;=?A.CNEnGIKMOQ.SNUnWY[]_a.cNengikmoq.sNunwy{}.Nn臎艮.Nn闎陮.Nn꧎ꩮ.Nn뷎빮.Nnǎɮ.Nn׎ٮ.Nn.Nn/Oo /Oo!/#O%o')+-/1/3O5o79;=?A/COEoGIKMOQ/SOUoWY[]_a/cOeogikmoq/sOuowy{}/Oo/Oo/Oo/Oo/OoǏɯ/Oo׏ٯ/Oo/OoN@ DPB >QD-^ĘQF=~RH%MDRJ-]SL5męSN=}TPEETRM>UTU^ŚUV]~VXe͞EVZmݾW\uśW^}X`… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥMFZj֭][lڵmƝ[n޽}\pōG\r͝?]tխ_Ǟ]vݽ^x͟G^zݿ_|ǟ_~0@$@D0AdA0B 'B /0C 7C?1DG$DOD1EWdE_1FgFo1GwG2H!$H#D2I%dI'2J)J+2K-K/3L1$L3D3M5dM7߄3N9礳N;3O=O?4PA%PCE4QEeQG4RI'RK/4SM7SO?5TQG%TSOE5UUWeUW_5VYgV[o5W]w嵡! ,f664^^\jjl&&$nnlVVT ..,224ZZ\JJL**,::<BBDzz|""$bbd>>@|$00<08  ¾b\` ^d`̜Ȧtv`xp@t~nfHLF@tntĒx\~xltt䘠|vpfp<<4 `ԺPXX̞xbhd\tH@hH:HlvVl80L86(Nfbxtttl0 0.l0.0(:0FJ@xnf`0@XPX ʔ||4<<~zfhtfİ*$L@:$<`p||rvx `4ԴvvtFFDFF N>ԳEF)TV Y#@=#(ͣ % O Ih&QlIGqvdP>p(`堄jj_wL@@A# FA22dC,iIt:*B6Īz&sFA?f 2+[T>3;@ :6&H|FAHn[Sd鲏% -ښACQ?``,p<ΑhBx@:K~pa@O=xPHZi ϲ,@ @t>H,:3,2a7X6@r>>C(́ C@)=sںM< @BC;F#]MhE@Iу2.PΈ,4:/v [!xrN(3v9p9;@#\ 77Tsl{::'-  =#=o #Q |%e#~LJF#x"G$ XP |C77 +1AzP  {$uhG2өD (C YS z 2dCP!IHHA? dSrA!Ƀ=,`U%@a}s!wp؁'XFđ$2K@'J `GnyVWH_ L j MB X`PL%(@D=Alx:&]0jV`A"Џ @m*Cgy 0)A"x2y/ n J@dpwZUWlU1V:u LmS&Fd`>2Mj3s+]md"p~D I n"!>C~jb)Ҁ}cG*߭я0k\nV2Q`-H[yPDLZ,zYr0s2#Vk>umJ""ykMϊe2<HA?CXlA'8"x# `]gL%+X@t-H >E'H>܂0U`ٿrGԣQ;@ [ !]B&ꁢju?x@ $汷A[ޣ IqãrëBЇN%$R>F =|A&*]CI1^En< P`!9]dǬ)7{_˺@ZKQpyDB\=4k 1jbDu Ka-@;ߑ)b|BaC;9A߃.1 "ۚ2\ѧO[)/>69" *D\ w~H|@Ph<IRP{T'EV== 0 ` 77@W5@M}kc_0pwV $ '3ydRgS H`(+H# 0['G9`r 8*p`8@/gV q$7\pXpr!G@WC?r `S\=%aw6p$@aPԈ|Mpq٠` 0$z(G0nL 3&D &G &cgMM&" \p O6p%WD`KRxV$(/ LP CRݳ C#1+@"rsx Y@Jw! iy ّp>P)A&@h(029E9HJLٔNPR9TYVyXZ\ٕ^`b }=Wf.Ӊ^T!9<.scYvyx ~d /Ȃ*{Xv"2ygC@SEmæ.3p4\1F])"" !`yz }"0q!"4 C\cMc S,`_ $0[U#0xňٞ`{Ep /%u: dT{p$WPS@pNI`j١Mu[P)y'P27v) q% 0w z5,"K" Ŝ HJ q,:R>3/gmCP@ .0eـƄ` vzxz}"*,Չ"gY``S0fq`waH%  +Jl@l[Ve 6 -4}ڒᡊ0OA`dzJF@3mP /D?#ըpXme P" :,f0Yq$p"Aɕ a/dOf#`6-[KAR#!P0"W$  (77+ p-y:<x>p1r]/@\"%"Ziuh:p@:=`!qT =KӚ##F#ud`V#HBmI$*{MGP[} a&p hTc =P5(04<䥉[{q^HٶA$Z]ZA1aX@WgU;bes۽!$!e껾 Qq;`||2?@.Q16 \,|l IB>-<RE<SxـC; @PRnk0QŚљ,!3S m !i=|x%"N"H3SBr[\ž$!O ')Zٜ3~Zr0oɜarf,':٩e<)癞ǺR\}0*B:L\*Cuq2@Vuz(T [;'W@g*/РjDZ>*'4R,98WXX䂰l1/]|)7F*hzlEV0Ӣ1a0(mA*}aL58E:j=pS2˵DJ-H'K 0o05$@6 Sd&Z:A173p#7tc7906,>@>%TD't)ԩ ? {gp% |"%]29 $>DԆ^'0Q"]@ V D ߤ:qAAE+zaLRFRǧq㈪eq$Rd.J;QtVPF1G P X 6׀4{Y#LۭTYK*LI&f+M?4 #hMK/'4l @Ji,4lt۬Қhw5<>HC{+&ZtTˇEi!K:%>9 `vmz#-a릫@S }^ P5QMR  de:'5%!YqXf4P2YRTPQ5UqUVSPrR!VY]J^tf*rP5mf R7Ws < װ Gp \f R3_WUWA2ORvE(`W'aO֊I +/_am誮jxr*+5\M"0Q"`V Pɔ/P *CEv/MU[YlFW:J|:@F9r-f,o#L5cT-<60,,64_y"YK~@| ʯZ|m,[$K m^x^m.{l6$7 G߼}5诟(o_|Dq{$)P<1R_t%Q y"=.L$6gSbwD!,1 LL2/wɓ1𛷢30rb`媔cй2GӇ x/>omE'21|}gay}wOOڐХ}\mܹuo'^qɕ/gsѥO^uٵ+G` FG!l}Xq߄mn_,甼LJ ~}zG\wNدO bϟ d!, G 7FYa$h3?7 /7 /y!1 sL7@ g}'}JBH4J0偊wGCM8sN:NO@|HAs(ǐ/ x@!L 8zaє{@௓@ "ا-:r$;YwGXD-z4ԁ(/ i*#[iʡZ}"˦*>2&2@tmKF!! |C{L|gFx W&ϑi[I`meڸc*( ASVye[vecyfk+P ܧ2b8y8ч o"C,@3D؁y֪y(3KPʂ + `} RE{R*ͮa:Gڶb's:zP:ʌs *s{ق-tyR'I|FE)[W\|Rot +R$"0wvP(C~~o.u#C" 9?8 p(3 Ѻ#n66p8H0" 0 (EHt̃M$Iq}c,B|p |W/h*k9VT@\x oH<n|40KB$]nҠāQB* g.xG?ad0682AA#<@$A@AOde+]JXR%Aw2xyR$f1yLd&Sdf3GėZI.yMlfSf7MpSP>Gzɲ Qdg;NxSg=ul%g?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens,ϥnu ;fb7 vtwǙTw^żeo{{*X bqHua5P >v H8G1E:Kͣuؼҝ*|Dxn9eqW xcɐԍeHc=Z# f ^b"IK )W.[J/,Xkhlx7 х@Pz<4eȀ 9fR N$CL˓N#gOE_^4X*=MˤXAHj6Z=ȥ >&#Cܲ:Cf7fdPsՉj$cb&>eIuqX{L rn9}u{AD O("WL: &@a Q@B DAH$6XȈ&xcPUl/DC^2nIHDm2Y4I dX%5mLHI@@(;0$( @'LRGOқ:P<G^򓇥C`p4H:zF-(2t9byA$A O<ij@ |>?x?ɀyC} ?{I# ;b# } 88x,iӠ '¿ЅDAdAAaH ш0ĕFLD"`>R,o5r3xw p}pWсHyCVTy, } hg̋、@3/ NᐹPrt$ 8-CX6= 0 yEq y}`2Z}ƁP W,w8C, <) zܳ&hFaE EYFE\L7H##y H~G }x.bd|e{PilʹH[l'ȯDCZ 6X , ϓ4EKf8(Ik@SAP;0K0CF2+ˈ|ј";m+ Y @`4ayh1(ȆQ PDxXF;3a4[C0ȇRPZĊ &"㴍д K@y0͑p̐mq5Pcx0PP9Jq p:˴̤ 4 7C |@ QRiH2yȆq{k 0&8zЄHS;R,H" 9T#}%3K RBP}O X+Q KE|=RdRYF@DLӬʔ LQ%EՌywGQr-X5-|OӶ' VM  8Fd }= ~ R8`}Tۈ`978 PΑ%HEtu(3>J Y2\s]y %2B\R P)_yvD֒( @8CN\yRN[PSb؇ +aU0w2 OyEijq͖KږX  `5Ŋu9004}.>Ґ!F=T+ ȆF"a %,1JY aaXZ>(_ѥ`b7S =豯xdYiAFPvo Д 1& (571 14>Iac>!ْ`"(nHUTQy^TՃxIV`ֲ9e'I@*U|Z?`" 2n(JnS",".Jt!& ظCk1n /҇9ǁ00* Qm=z:Z|Ȇ!md2W$>otG_'% ?lc&I*H~tPk2WMُPCgdJxhQu[O&|tiLXueڧYs;udOve_vfovgvhvivjvkvlvm- Ȁ-p2#Ou1wRDQovvx Q ȕ }ny Ȁ(5ǎ躼wå؏KrHxw> (`&y|hpX1ܨ @,@ @&K:<8ՒP^&ӦKܒyFȁ-0pyPywy ]nq ;{vx{Z[p<|@|{X }zxL@lN o-QA2K GySd y-0ۈdԟ)|IʇϊTQcwЅ`Y);<CЇ埣9 &/2=50گ W}OiA9V&4`T,R.P(m@>XfK p O} 4ԣϏ,(p#+ @?Qۉɧ@ԣ@,;_0Ž/ N[?Ӓ؋/^v@h^p\J;d I Xʫm A"^˃;P8}oHt9h_6 .:R.hm>$Q>FI5V9 3]NL賵MQw,4?[HmO?@WsER' Zo[h0H,d B3ь4 d|Ӟ@ҡ] @B`&yI"2CXφB$PpaӘ)3R)}ЇEQĔ񀆮!IC/GK}t/8@ʈ#0l qA(ac21ߑJҜ=#7Cl=X~ؘA)Q$K:yp +cOZ/bO :mZ(L| RC:C"" R8l#C^!|X[nA`D=!VWj VJ`s`UP8m ن4u-s}r  lSty% akA'>ρ}XK xnt š㺃1s dH w6#m-A?4bǓ4 &&tб8"(t~dIȃ;> {q CzI d $^>dCE> }w"[G6x@o1ZS(>~CiHy @ Xò j +!RF5oox(8V= zUNEiu F2i^,_C(ُ|$aac@\= at,rK3 ʒk]#´@2 `,xG.m`+_n|(Az=w,C`!Yx ^%^cYbG<عȲ\/?~^X$@Kq),|%Ka<VhY$"9@?(0c==8BC1GfBYC dC:_6=QD:|B7„<`4;91A>4`_>0!D?8@8 ,R,ICR`>N] 81J(B T;P߱9_yCҼCȃu.DZuCm5BVԽ@ZaXZ3}_B@ԟ ) >IԃEIElb 1Akjm@|sC_,i|@(|*!j- VDCA4  u7N6FGDC oDD#_>@bjQA4c>j z LJ|&.&p^C@$*z"a@,@n%2**Y^>"J$KK$yxDd̓!XT@ <NID.= LTX2Gt∍<E !`Ce==e17!DcIDľL"E ?L6TH!CH@WJ㢥CVd+)CT cg>,M2BE%e ;dfd9;`,_&$C =)DuPyRDSSsHA>>g =,e=Cxb-C vp)L))F@=\s<dC@BQ=`e@0]+C-1!|_T)R$BtH CsG؂B@ aX8$|#] ,DmA@k࠽2P.0ܢTZvD62jB*J Pk3f&d# TCALA*N!B0-胇m꠱I(DɃ;Z(-b+*{CB\!*I >"D<'UyEAC?T?Ǣ?[>P@d?:£ ;?|֫Hc*;jJLTr,O$#؆>87.h_3CXs&[D:-: > Wl?T;jBsl%V?ɫ^Lm,e@4W8:t$?x.Ʈή4[rl<_ò<_C>b_&bm^ S(>*6"gCU2#|E@C6$!Ad+T,/%}'&hfD?6m¦-Я<ĨA$BFɒDCúE1DRbʚp[AD6Hnj" 7tV47 bĦ0B, BB -r~;&pc#D$Zwx)/^*HKU^ 26Ҹ;P+.EXdgmZ'D(sPhq 2 F4O35WXL hTh_T5s:EMU@C1kǒ0`23Fz01DtR! >#'ƔS#HP23m 4Cr"f?76;xDL iP_ȃ#˜ EJ!\">b$e<3,u8{>g ܉H/w^ D*|.=E3aP5k=,ssXIO5܃!_>t|/:ovDtOz]ݵd+wt!!P=vQ+A 'Bt 8kY=P0׌ ^FWiC fcpCDAm+ŒMHwV n}`\C9,79Ez'D7 \ȝCm[O8W85@30DCe!Jd[ C<hXKxql T93FY,%C s(*̕t8Ax!uB0\dG ^ Z'yѕ")+chTD77\HTC1|F;B(BjV@SaD6\䕑#9C@N"TYTF=x>ad\\(:=<,?5p-@Y랍㸎Fx DS;lQփ2DmCd>@4и'ċҜ3B?D/GJ0F-(DC$Xن>H 1Ak F8Q\JIGx(!wNF1^S}.}0=p^tC?(8OgC[8׾J"@N#*F54' A(Phkg]BDh@3KZ;qT+ ET@oPs '@]6B,Im5D|o>y c;"cwݓBy {'BIy1xaz d珃sp`_?4`O߹! eؒB zAsݛ!?HISCĘNY+b>]~>\"ZJ\2 M]0a۴k#hpو3R8׌5A !#6衟ɝa$)/%~,9#F1\G^X<.}<1@ 8b1#Skh `vK%d4Ȼp ntA$Yl!\I&lj  {ܙɦAgz<>kp}Rl(C"3<D-#fj.yi!FDO骠!CȈ0!yLF .Q$yKjO9Ұ;ilVr)|$x@gG| )=FOB9{gk|n4L=d]f}hjlݖnѣjGoG!%eԡlJ|ݗߌwv>^~%-5Z} 6 تoIz2y്mytęgnK>Y{袍>餕^馝~ͼ sgi񚰞zo BX>[`E;l垛ޛマ* N}6D#' 1>ȿymqN\=EM?U_]emuߝ}?_襟ꭿ7r-~a?}cѱeC!}?Lm'%_O~VrX msFFه]V%} G(JI9 mjy! 5hU)>0`pa0`;-9S4k Þq-C k#9▀!Q7&U|h]>uG?ck @A"n< 2C<8y$<`oQҒ)I&XBrZVFy` Wp- l Ik#  N {e,gJGlG) R%T^%`1?G6MlqD@?Dp36 !s= h./z->8iL%;ݸi *mtڬEy@<)D%QmAu]NsSo9թNG[$@(珙k)>Hz&EJ%U|ٲZ=iPJXI]Au!:13s{XV R>gOf=u#,MQT|bXǞQ0#}TXDSg}8"DVG0#Q> R5EH|k&L%\ :x)KF9ھnA X/9@Cd)kYCg QEfA+\".*Dy$CVTq2Ddya6nv]4_ @2$Sz3E}2ǀB^ q-a`"pa,bH#AHH$<`! Z.;cn>;nxb0bU@f18=@42=GFxb b+"č?|ⱑ)}<9`(&j8 |]sqm="C's5HDg,!9$.n$|1Z`Dצ j |c)XC8(щ>:19>ŬKgzӝ.ȧCR @Tq3FwA`sdIeJ(XgI&ؾA-\?G 9 `hHApl,R+jqoyN[Qm"xDFDAߌ(`\b F$50HxB:ҡIF}\25^# - cE" @W\-1q\kH.7Y d $(! .9A byV_ Q=zy &eDjOn/"V\¢R @@@ ׊ ^#iGx*tfP) Sdl!(#L`J0#B#.2p8! ZhP:@ lpt" #\i(4B ШA583ސJ/QNԮ"Q'F(` S@o6! 2~b|.&pl\p+PD4 ̎)"d8S ʉ,`72BALr%Y.17 2DGIʄ(؈ER(# V* Bh d բ )QVdID'_5pk"D  A ή 1]q3f#òzY Je+ !"  R"aVD¶O#!<㺒R-ג-ƙ"B8/) B!$@#.rB!AhTo,#h#J0AZb "CbsI$ne31 ".2r!Hj/|. _2M4)17b.PCCors717j BfQJx(8ӏ#5]"6omXB d pS) ; .TB!^0v:'J"O;3C2 b;0"#b< "f /9/,)Oe& ,pO=TcCMAR uR ò$)Yb?Hё΁G%L4#t r6P faQ[(\q> CE "]а_i` `Z,- !2 L QM bkrf%%8TE&Mau"b+ 2: /Cr*^K69SaaU&#bg?3s+8Oc; A8h3D#(6#aUpe*끺V@l>h+6hpeߡWԦB ȶl%-! Zg%n.'  xf3 Kld js \ eA>`+I,nZ4peF&``WG-T|\8( b{Ss\2A!,2E*C4)q U\8/!۶s2!V!%lH`) )0 H=˺HT:0ρ "gF7_} v035X7SNy$OYye#hnY"`n%(Quj&|, ǥ[cy ڠ-,P]8Bq uBƐ1b6Y 9@ضS B ii}&!,ԲD}bКl?iJt GU4`, *0G7VHQE*%+oy M k C"` c;8^ 0͝KK۴#ʲx&L?sFd@! NQ+#)/G& 2a'< ):W (bFaFB&fNܘ.AdICD%0HT *j"PdCrZ"䡅*PW Z"Af$ qNbB*4fbmԂ-\F7!$bt}L<: ?,C=ZeB!QZąHfkmiCC _|"R%Ȫd a|A$:vRO`$ bXfV##⠮m410lH2@_Z7(<,[JɉP@XSRV@?Vn#s&N?C=v^ݫ芲(%_(`0whO*^a0^Gt|ɘ8Qf&tXXabs^w- b:J#J6}ƪ6ELߙx^덷EfJYHZ_ f߿U%~>L41"+ursoeOKx, TL  Pn9qbT|K[GO;(_'R\_j_$o>U} -%I>"J̬2.6/FW_ ,@_ AʨlDn'N4)j:B9ۧüs,a #>|A}իsp.yȓ7o޾~w޾E`ƍ?|іXP=6 "T"ԭ\z}@wȍXd͢Uvlٳ~-X`… 2%q1yCA#H$MTK2iVũOB5F6z1Ҧ/JZP/־w/}B'}:<lG2p篶ԫ[=ܻ{>˛?>ۻ?ۿ?28O=U AA#@wCc/XPUACW!`>&\dH68;ri!W O[#WFKJKL!T@AQNY;ȃ;[Ri%)V CC#4)!cHte$ <t·!nI D0Hㆀ>cCUFHbTd<$ϟQ;MO݊kk lKll.;D(Z@Aȓei(p]ܣ<@SP}( W 3^TkN>2yMAU Tm4#@@LG&@2sNX$<{ȵe0W;ZK.T2A{чnUA=;o݋׾Oa$@?4 >2wzw~ xNxn]*@CЋ/K 7CttP}Z?{dC-;2C;>M2q@=lE\W_C9!@?;C&,??k;>RnoO6v>4L^t\#ME?6Uvxz;o+&HLQI'xVp- 9ޡ !n$, Op,l _0H󎟤x'rOpBĈ<!ଫP(FDil !J,.^7x*Tzz= !Dim|ZR uvů"^( ƽpXABre\.+Z%2P~LKN\6ZEq!b,;M> t\ :(,HrX(t7*sl3 hJsl'p!.R 1_y&aL) :괕0j8ד{ >Ĩw$LR$ mCQƠ|H`EH,mFqUge (s,?])О9nx!m;e%\W ְud-H $!*DR9T> vfL<ȇ` lbO#i"׌(WnT;wCh,hE cs}Gfaׂt 9 +lr>=Z;q65@\|(CA!-IP 7 JgTYD ށ}dü.yj(">8pN$O0O88IG=,0~eXGe=9ʃE:W|JYr ClL@?9DL8A6$awmƟsk֩cA($Yq \ " 1EJPh#yUZ+zִo\+Apz9U.rvD*0G~"cRLqKT$~Jk0@ d%QQK>N4 ?RK2ڞA(؄E8Sewq𭾃moq;76dku+xcocQ2')A+~o+[<')cg ?Ћ~;e( X~o~ /+oKԯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmo+xx7Q0xq2>y{ч(k ⇀"/ {(!@>/Sgg{g\ኰV[PnPQEaAE^h{H88~&0gr|2eщޑH׎ߡ\qH7frj[!`IuщY8BmMs!@$914she !)f KQg)Iდ߁ɔ1"5ԱP4KW\yYݱjW\>u'1b08VT҉uӗfIwI}%bO@2LpP0_2 (4? L92(m3#m /qx' QL6PeӚM | L`jI010Df&INћc ("/\&В^qjNPE$?`i>0)X\eɚ"&ivӞ ב@CٝF嚰)*y:-G$/^4BTTǙYu: i)_r$PP @j2Tj`/FU! Vz)Y]*?xќO9)s6q)Ӛ (/qbD/\a '% 0)_9%"ţ6Pyvj WznW{6\P2$!LB @hb#q#Q'+!1*ߐ0)!XG8KT0AWZ+S PqJ =[BՒv?봺QPP GP?CmC9:&0AՑ7:^zf;#+ sٳ<Dr9FN:ӪrS^\9~]F^4-n;/$w>DzDIe+V7O@ `ӱ bQJ嵡56A@ң$)^n44Կ:3# PF`[^ӎ3rK3ȝcKP? ā`<3q: x4.4I9(5 xSK6!JJ!KKN+&~Y@p cCz3 %TEI;*-L$ p NJd y );N J!yQ}0 ~t%!w)ac"b <߱@ 2st(wFnN(~Lɓ+Oy`1y1IE[ %d ElL}biq!G:4RI'RK/4SM7SO?T{4Ilk"Ei('䑭GG 2`Q/"R! g @XJG}Hh)J]N!`wGt&}W% $S4=bfj}#iM}zP\I  ,$MO9ڵ״<طߔ`kՖO[)dNczwFs*ϟ_"' dtqT!@nIc8da`J%@V!fN|^"8ȕ6i;eˁ?mXC r-KC^hlU nRWhul-M Ato%z1,6$}%uP?|'|G?}׏F5i879v 8@GGD ۓG=ഒC>Pq 8v~pZCy.!q0 G<ǽ„P8ߑ Ã܇SR:‴UE!<pHt8C\pTw}D`,xja*Zad QBY@?a y)A=1c "鄎` RT 8> C Xidp"1a?竖p QnL}q*%pzTb#ղ<΁KhG+AUlHdEpmgM|d H<_Q`J?B:P? x_-o9JBZŖ&\iBF C!%]JzҔe>SV:['AGH ^<>a1$8%AЋ-CkZպVխok\Z{,ЄÁ`1b;;&K؇bX#0gR1]ؘ.v'PrX;|cto+$, ]`]q@CVz{[j98!ꗍs @ C T iM(6XrA%n|VQ<0!`[t\DVW#F6!BWduW"Ӧv5`z0 P7>̣lm"bUI&fԠSj@ aI+g e w%r6#GC2p}C!K\xo}tBmfb\sZULYڔ!ԕ &;bAk1xM@/@AG:ƀ]ރEJ<9袁(`!YN XeH,|BJ= uJg9 ΄~_jsvmnwwfqF!ѹnuw=ozozw+o.>pGxp|ws7yus?zЅ>tGGzҕt7Ozԥ>uWWzֵ^O[{>vgI|Oj k v[Hw|?x%st4" yw}U2$PYIHU(/>V؋}u$yL.D  4gB!EeG&|e~&]Wb~?&0,?d裷F 082рl"ZH8w'caj < ty h h t &d~,|y  wx2At O8X+,B£'p:kxx)ɋ: J:-xr``C@A9y=d(ЭyHIB|`|}P }`; ąp 8P!0~@D~8MDQC<ÆC8-`a$Ƥ;RĄ~86dȐq%(s ޺0:hIs0 w }`  y0p! p1Jry}`G X"w0}@wPHW5qb4ɓDɔTIC PѺQH"whRa @dh0 9i *p\ ~ i ar!˩i 6ڇrq}㏴yI}X20D 8K+\ɾ˿,7O‡X `ٖXH>,rH`LS = +ìɆ`@IMX L$4N9QH}-:|HNL-O' %ҔkB ]pJxN~؍[TnXt,pO|< O"}s} ОNn`-D0}X':I5-<ُ( %s )"t0Gˇ> e+Ӛ A4#5 +,R A!n@AihD,8X@S#`bЮS&݇OKd{Fp,qRBjіs-MNF{!h- "ZȦoz0y(ǸLl&n`͇]fp $b|#*s8ѧX~8DB b ܇l"g}(VX%q͡`դ/LG؀X.d7Q70HƄ`.J{5:4 &_˄lAٜ! C-PS ثڬھگ۰۱eRE۴U۵e[ڶ۸۹ۖ8ۼ۽۾ۿ%5EUeuDžȕɥʵ%5EUeuׅؕ٥ڵ%5EUeu%5EUeu&"R,   E) `moק'FaEsЀFґ*~8Phtt (Rax~ ⟐4Ԓ&ڴԇY`i/n3jSP : H.ya IG㭘t0.}80Q!6b n3Šq*(!}`UN5OHY"v=XM]VއWey]9۟*j˻Z]YB8POjtRLFк8wS̓рF LsVt^gwaxV0B! lCSde~UVh~phXkVP> C\|܏zHqD`Is詄"y~ v(8(K} ؂ ^* :i6&t0yzo¼2Oy8{Ȅ.Ѡ(@jՠjy.{ 0vZQr#iFF+؁pP{xCypnw{h!/\Gʦ&N7dZaaQYX섐ύzVaNffmn( {clȄO89 j hyn6\  |by؁o> }^{ sPѣ C0ҀN ߽ݎ}RUNƀ(F?0 C3{Bo7p|nc& t0pU#Ydž W%>fjf%Fy v xRX-?8|&n޺l|j^vi l&?< ox=0 C+|X~C7lh KOop, ` m6XφCYu{+fm1)'Nn7ڡ&W"^8+t(TiwIɀl$o `ZA~Gy) g?`|t[yhxXTrz86CHxsj!(kFЖ~ןGЖt~ KȪ>_}W:' `IKJ)nN Z8d  xKɞĜ/"WّXZ' H&֌)a~ HsuO $ø^o"'n9&0:—9Ƨ '7GWgwׇؗ٧ڷ'7GWgw'7GWgwy|x'p "Lp!Æ9(q"Ŋ/b̨q#ǎ? )r$I2lA<&)s&͚6o̩s'Ϟ> *t(ѢF")O< \J4+oRZ4Ն 'לe~ ;֨ #Q_6y:ͫw/߾~,x0†&W>| 4k<] h*dm٧dʖ1K9i}D;pPuIزڞ`}JҶ\gny|`߇mVM1|;޿/~<&'4}e{yV`$O=1P!䷟D]Ds1XRuA<aE"!H$n(!N( !aA?D أ?CY#?m0>uQMN5E6 O#e}J6 &IsiP:c!'С6JПTe I*,YQ}>ZEܓ@ 46:u}NB EIJЭ͓B7$<,FUe봚 d-vaCT*ir YbKRRSI\pNp=D]cA?Ը:"#tevY@U#3]3Ϲ B8l2J>؅;PIqASQل`R\>^ >Dڐ]`#LR; uL|ҁLp]Dl4\o)ޢ#5 w΄7vo@xjl_C0;b*>~~t҅!]gՐ.3K.LOJ,(LL@gv>9cUTTݢJ_%DZu矇P/Пd-w#.#ID~<d+zh '$`ɂsA3~4Ed!ɖx@='0d2 1B"h% @z܃_>"0(J@ EDd0P:Y|}1|GLJU:5MmBPLJS4ylnf8)H48@K$#@t OƄL?6S l# LF,èD'IQp j#H..YcI΃h}Zք툂,a k"$JhE\` Ї W !V# 1CD}>6@l vm?-V#;(`ɾtUz [pb(c Vh!&FB!Wʈyy ]Uw 4@VƬ$l8(^:{&];(9Ȉ7$fD x? ~=C`]},EP6?R`% wC *Pn d)ͱ~➈ɖ.t"&<0N~۰$\ %A2 %ks(W9nތ<[qw t w*C=&>8:^q̪]1J0:Qu 29 DHȭ1>mf[>?JW|d D(l#co\Oۖ=`ZC<$z $cAaT䃸c!ֽZpj=l ڧz] EAW6}A `@|CD)R]@ȃ999$?CYB]OuY?Е@tغ,! Nj`>t]D  SM=h-A@8!l`2] ,nG170o< "y9,5 ,@xB68>4@ǽ2!C ~o !&BPb((b)&=>$AߝC?T?C-?pO>PexAbDD7LYB(FERݘ-4 @ڽT-z?%^?U^Bb =.C$CM.D+B=T݃F'x Ĝ C)$1^aؕX6e-@%2A^̟)BfdJdRf!BAd5 g38'>T IBRWTI9D aS0ڜ<.wq&IƱAC9 0ED;%@xS=STdX=́ Uΐ.=A@ ]Y- 9A OxP)}ܥYg?HˬJc! En6"Df !!㍞:{@;X}L( DXa§|N}2 ~2^R(U@?D! @XqeCv 68E De fC6L_>A=DL@3\%D)C|W]H[rֹ`@=#dLʽC}˔ Ů5jD, 90(|kRt DJD$$J(*$DtjH64ʿm]A+C^+i m}yBctB'8R_ kD뉉(C=JDúM@K|AD0E1+,>hNW:q؅iDÐlBmmrmzD@JM(h(X<0A{{q>420BJ 83M*:@Wf>TDqx@ہ^A^E TQ^$2r Dȃf"p٢ݍ@@-<{>Ḋ *h[CۦI*oyr>wɚL@DX@p- @S|nnN4~>-:Lc}ŇC@ d!/#'J0~.P/D@?ځ/m΃o02LR8}-8L?p@f-B؇g0UJ?XiN:0*Ʉm D?dlAqA4VD_pm%[%cr&O \tX@@9CbjC%4>d5˚GS d `e5F ܒ9@I%?k`)V)H2V@̓= A,q>=[r/[@<, AnnVA.`ɤ 3<&CF)7`g8}4pNP3>[dlZ@h@ 73@.'ߌ41Ek!-TSDE#NK]4I<lE*D1BtY/0<<ӥM{t(75*+V(8AE(k7s!DdUAS8mqȲ&lvmmQ,nnT4wh<RnY1o+r3ws;s(@32@wLH7u[XvH<vABPuwzzw{t=dlF]7}Epx 8CHЯvX' ź̔h3[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {IDW܋D:iCU l*[c>+GT8FM1*>sEbac<rLDttT-^@:@{*tRrn &|?c4А̣[#z{x*Ɠ<Ռ@A@7@Cj{D@ =r X< ;QKC/ TCc;ڙ NlʷC$JE\vtAU@=|Tҥ,- ܃L dLUf} L@ %;FhT BLUdQ@Z۳  <[KCI$HWeM>8LDL dPbw QMpȨ Cj8A/@:TS?' CĐ\)*dt۷(',9ܰ6@K'ǻwl0`Cs8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹgO?N'CS,B޽E!{P!aطo@Uy_|ՓsPU3ѹ-Ej=paÇ'AT|ChGCg4tpB=X@`>SeTQ퐊o mmX""耛YϡG>zuױg׾{wuϟN7!xlw =A:J` a&0(5}L0(z,ât0# A8!1"KeyCI" @l(}hhsh'G*2E+$ Z@ bN{>R-/ S1,1`-G37* G3bK1 ti /yXQ!Aǟ}F{Ɗ |6; y"Nu?"#5VikVmEꀴ H\"醹y2(.R}'|}VXsd0<^|ۃ.}ʳ(G e{PB|4s7Bƛ8͊DgwXD'㉴JX衉.裑NZi0ۧ~s"}eRBЧbt)۟̇ȆjO}^ZI[-uh(}@^1=FGil,ص!y p'|F_q]yL4e, JՀ}ƭOwFn({(zVU.p1*=Jy>ɦև^/Ryp{  8dG3> N1H87#S|؇~ pP hVCHx ٳ8X]X&xtD5 縁HpQDLOD6TtH)P\DN`SxYYD9Αu(LQt@>APDP74*iIJC8(pu#`B(Vayy_@<1u)C H>ͪ[4{B< x$B@@0`Mʮp?230C裏,R$4yD1Q>DTt;1YР*0&hHpc< d|oRH KA` 4@7ޡ~P|,EiH,58HbW:K6 8P* dtODVe5YњV1hTC{j]W} [T;@X.uc!{!e1YnjkgAZю5iQZծuka[Ζmq[o\%g\b{EgBn,B-np$-&{Jd$"0$dS5c58%&g>8mZP$J m$!,76gu7EBJ(oD GkJڪ1" ,> ?.hA27nnS n&m4*@>.pD-J2+RnT{(NVvg!7r#k\pXH281 `sJ@X3;93"40_4e@."b,BJ73!b6b$:G+$e aGBRFRR7*cv%}#jn# bHSZ1D2 XE{?O!,e,o$<.GDD ppc~/p4P"0Dzq[LRatԂ&b#o!1v"v2MM1DWl-Fl =FXF$v5Zp"'A8"QP("xGOLNf " ~`8!@"D"`-*z-j-"ZMgHXWQB96 |8xW;id ec&B*̆lfmm7F-* Ճ)+v"THjp  V!ڝJ{VeWAW.2?dUd$}6A.!B=e(G"aQB'**)0d !169'}k"zF(-2? ڎZe-x4ٍ"3pEEH1m!Nк&3*?:/Fg H"o*PHszZ]8_7HA!t{-&cxQlI>avh {)h,"i}Fi۬=? l"Lhlb|X#&oFk4RZ@, 2KHHR6:\[E=j׭HEZV"/ɝ|B|ʩODʵ|˹˽<|ɼ<|ټ<|荒1SCu\'뺘}c:?KʧCV}) u'9R.lu&,EbXIZ_t a=']I]qa{"b+֑LpWI# V^eٝ}!{fx&&#v")Eauݻ]xV0b=]Y_؎M',Ejqk^x)!,}=ۿ6lu%mdm%7 E7pH6--~VSmlb#nan=.'! H.,Uo=+mp p-BB'Έq ><ÿVخv4uyW<x-)L]AW&oiWa8@BfwwW.x;^yw/9z_{ݺ{w|#%[72^!K2;1'oT8թӋoo,*لAB&"2% JX}K[x,h؆-tE/<̻XaMapNtQ`)*ZW 5"W!礌PE8wV  } *,oÇ#JHŋ3jȱǏ -bA}"'bEtI͛8sɳϟ@ JѣH*]ʴӧPJ þ#p_=I8ϫžRd,va{NW* ;y,Vy }-H[ Ux^i_̀7/l|mZ_ Nȓ+_μ{bW޹̥꫗"} aDǛ? u(^^Ym隽bH'?(l J(v S:  m FafE'FHC;##> G<@)DiHj>{e%lY:?(>(ӏ^! 4ђ4+R 'ey}#<*>3CWfڕ$)ߊ ԓD(?駠*ꨤjꩨ ti]CaUP:CxuAAD 7 @=V*_Z )ЁQp!z4<TL6p ><@?lXpIȓ "G,WlgU}]7e3f̣CP%>c, D@y1Y# ZP#S,C!!9z

O:] >.i5INj O,*㏬7G.S=뤴y=p\Z(gOacH68AY~ y}[WU \O l!kX81ԷA#e{D_od .5Js Hb!:'H N07z GHBC~%L W0 gH8̡w@ H"HL&:PH*ZX̢.^ oC aL6r$>21ĎGsQ'Ї;\dFDlF:IAG<8CF'# K?8A܈)ҁ`uL,~H(KFq" ",JHL& epԨd6Z;]Niܥ<"p# 5iycDz We2rjD3\ ) @!8UDvl2{0mU1'͐ #eR664ψ'h5Ж0]*ƅ֤3* t­lyR#WGӚJS! XͪVM5FH ­ihI PцbH!!ְp AN4! HGfp,xpbeE AA^y$>e!Xff {!#N]]F TѰ 9:gRLo[#җ~lLqM.ZI ltzp$ !e@sS[HA-^RO!vJ$nH1Ԉ4t^Q%6"12#5²r8hEkj.%RTP# AQ 0 zPr}7rEj >F o P HV"nhR23WFr" PbP+c^{sD&%^L1x )7%XN@ؘEHS2 0#!ϧMː6 uA'a  taP ^0 aak`aW."UI&B-AfE#%pv."vV/ʢru'BU_ W0.)۸Lٔ8h{NP<0~P) nHqh2,2oK(q&++3fT53"3Z Ce %_S9coo;V32ĐrK6'wc,M@o^շ;>9G#2$c2"c\Tc5`Ѓ9 c Twk6o3?cA7&Bvhi 7ȓ="#0  Nٝ7ԍא߷ %p7F`OVs C;0:f‚;Y+{ i3L1K! ,P"`V$U2 ͅ`+ =>Lk Bբ % qc 5idZfzh!prJ/8Iav|ڧ~::}Ѣڨ:Zzک:JBf$:xGJ3rPWp pwdBK1Lڬ~Gvb9MdiO*x sQ*p;֮:Mi|!]Prh"Vؐ[`^" ^d= ]]k^s~^50R W%`bq"ED~敁vdg'gVyWTaK \۵G0 _o"ZTp8'?`Z%1p00^gp =–!qP{FcP   ' r {.x z;Z"xPyA*+/F y`!))n |tzQт E(21T26uRJ(lh##Vi1!a"Y "jg{#9b;K5yP) ˀVǻ7%]Bi|x((76U))Ո[,C$@q Px 6NHHќE ,oi3+C0b C@\B N\7i&+ 1S82B 56sS7A7SCr<! :Pqh#60`NnJԽ'%\j^ 2{Inkʴ?C??t\ʦC +̦ ʮB4 P0JAh˺)(qz:lB <|4"Œ<\|؜ڼ< S P=i ]F=$S 1'44OkmKDSqq<52]<Au[ E[<#c}~MzP>̇M(Bq])= i!4̲G{ ;"{Tދ ذe CT5Ů'ڪ#AAZ  p|^i A PUƞ͆A0` zŲ=~O2%U;VHY& {$J[(YYŗmWxU.%.Ӥ [f)TRoRa4aIpc.2olҤ&foi 1;n$ ϶a 01]->N QPJp%D1'+a@孇|~N# ޠ_~OTxOPQWTv>nQ-rgsu(`0Qi}'[Zp8s!p(t$Ô: ˑEY:@h#`Ӕ?%_l^vr/gt}Q.i½aGkdJ(!h0Wna݄#[vߕ!K;@ #"pfkFB.|p 1P6>2Q $XA .dC%NXE5nG!E$YI)UdK1eΤ2< e#PP>ӠP޽ πA  {"mbԞPRZ@pOK< e[Ztɕ7]\]췯 'Lo) &#D\g `ؾs0ć-ko'^qɕ/g9o8]~'0~.`} 4ݾsOU_` yI w<Zja(Be炁@'db* -駴~"K1! MsC 9 @d'(䉀 GЩ$Yr ($rK.K0sL24L]HT(}}I <'|s  ``y(* B"S!;9QF z ǂ79ȳl Q|YM‡ {,y }$[ Jn!tՇBG:k{"CmCA}" ]3A-sm)t fFF>qP dy1wva#xb+bCK\91XVIM&{=q 2yK2h.fx`C(pս#sF8Qs!,P3ȋ>j|gk^t ~d?A e$I*Nr5RԢ2ڈlB#H`zd9 B`=beH: m@!=Xp~emk]8fC?$=0-X(р hp,X` G?Ps;@XKfagR֩,X!!8 Z)o}{_.O?ZK>g`- |2f¯8ƍrO80!񀸘GAњ0e  ( !Rtc/qm|cXtG= ' ĐY{Y6ldc^ ;dQ_g?ks#r|(؇!ϩǠY"Yss/-9@? (l r?Ą}ā Pu xզAOB "BO2fgآPum}5GUD?u"bzP)An0tυa>(t ZHe8b3.5IQ}кfwg^C &1c{U;(HUg eg>4߂ǯ2D3A,%FtC}C'yMLZz-Zx#B:5X͔ X>VQV>sk|.PL*ZeRLaNE َՙlor 2}ڇzqrFBԧo]s"σP(Da0j9ߡˀ&93mVl(R A 2íqB9m}m{/Dw#C恰l@'~|cO{܋0G_ӧw?@~}=~_g~__ ?@,@ t @Ȇ?`@ @K}` 6 c@|ڂc~t((D G,@ n@ 03S%ԇsB,׳0&/l ܑ[ #Ŀ^ H,C<4IBrAP{0C`&CKֻ (80{?|@h㢀(x;9Ā~ɆD\w@'])ز{i9*PQRSTTł"o@*X!Θ*|ƸSyh'LlGwt7  0PıR% ya I82){x(85>K"Fmj\5ƪ~HZ*x8lȏB΢2ђ;wItAI\aF)wcX ؐ ~8&dPGH xEkpݸzL9-lA9_LD!7T͈ hlzw`/:9XGnI|‣ZKwhH|0Ay`tZ&k(X v| k;R~My2\d}L\ 2;9뀴1`HȼN쬯P+tX4P='1 S lH=;DX*oȆRG9܌{"KChuL" sN PJр{h|Т3ˊ čwpyhB+BA4sDЁyM0],9]$P{(N'C((p8q P0 ẃؼ \hD0g[}x. PiZA؉Y/\#ؑԻϒ cS`{xSe.HL=SMM"ɆH(]]01Eaз!́It"} TX>h*(!"TUUEV'Ӈ7#"=8 '8s86N-Ws$ͫ){d|Ҙ tЇ&$~9Mn8 јc?pU؇lP }8spjE8hnW{WE}{GX\ؾ#[(8as ZuȕI`CȚ`wX8a;t<#@7"S]ȁ8t༆ǹ ˢFi u'c?@{V 3 @t7XPLZ\ 7\[{2A]-]u-=]]]ֵ*i]؍]ٝ]ڭ]۽]]]]] ^^,^M^U1:8^^ȇY#USH¼^D?XIKlFFa@ y(`v `ˇ8\P,h䖹d)ӇFƑE!"#N%>Zǡڮݩ &]œVڂ>hk`.MH5eb4FȈw20*H96s_ndGʀWǐLs8lߜLcOUȚ* ~79+"b 3@87hwHsU䭱sH! =iȉ< ρ2}dpgC42O\q2yILWr猽0.C_Ee' yT0 Ȳb߂Ky(Kʭlحw{`I t$gn wpD g  ';JL|l(fg>w"D0F`6<(Il`]ȍQy`gc'804 Kh&k=1'EmEgD(O0|~xa9 #}萅&lAf@RϺ^m֖; h\gO͈g.Ϧ>C{n&ZMFx)~R>΄7X .o6|`6B֙TS@l %u ̎kD5zosk:O1 =O؇_gX"m(&>H,a[.qd%<˨B.f叵(:HX1w@BS}&xzX8a#PP S0[%C$9 +C"?8< ,9{87cdSs87q9# ڛxWd O-+g-s#}dWA,\t1@yn8D9X[%XAX*'SIO4I͒ QX[iXi"y;`9oF]}[yh8xlȚ T$)! AO0]ڦ}Z9o&@fLXw# }@!yR͐idt<ذxѩÙ[c/`sgyBOy?T8_y"豅8 Fyy ?zOz_zozzzzzKy zD?d ףc *#Bb͢CRBA򔽲^- |׈|D!2ʣH${V VрH,0"|P8HPΑG &k @ԇ2cЀ4sHoEK ]ݒ?o (L~XFR t ]X者}3v> ɓ/ Ggˆ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:wY1<۷O޾tɫw,(Qy ZŪkӪLSgFXJGq(oByVM?}LZ 6nԣEbwnDPO^y߾y M!t㦋p+#C;h`;7? 8 x =Mx0O=)#MP>!87;D4>0}%*=N ^ͳ D 죏) AΝ#셙*7Ȼ3D$B=J4<4M;4QK=5UȠ,/8?p1)cD9[Qg] $>yτD|Aq> k=.SQDg QIQhwts+} 4ԣO6P @D> cAtM.:馣 ń3MuΜlaG -ho#RL|<K<~z|:3p6r$~_B|?)7@4@sP`x|H>0TiBApG8p[)<83! ֝K;qD4'$K!U| )` p>я%$-16D% jv#=~cLaw X;;" K(=2~; Џ DHy<24d%qIC<0IqMGa!IH:H:"Po"tH|M#yp؁J@e:pf;IiV  f #Q{%ЇaU(3Й= 5:$L$& >m#T:iMlFġ튨<& CxhOq"&DҖr2}`#aK}:ӄMH@s(jhA1~#u8q(hj&#αYjO0"Awā8DANiRs!k 6y(KCxBTR+# Uq @AVS@=-jSղ%6'bq"8 <t(5SUUc)";<SDzO HUPAs^ZUՅ<5ZeBwF5[!(DXxn1#bQH0?D *zKͅCH;& y{ݖbd]Qy Ƀ/$jn|)(xXUPwMs* )4]ȯ0i$BpD q&OdqEǕ-ҐH 'J <՘p53soyX:'.FP K{R|, y0^#W=]CMB?+32[@MG/}P-@@@aG90'MŅQZS.ty+)Z[MWHD7P?WD_fCfmYQG` E8`h@`F (BlvN,ʼnuAźC]xB))'dFD8W5FDDZKh\C"_-A^d>P}u C<)Dĵm=\I vd ĉN.B.!Ẽ2` TG¼-6.c3&7Jġd=݉9>@,BV`T:?CL>P >xBD? 4FC02b^B>fb@F>RB9h<A6X@E8< Q܃59LcZ /XO$PP¡͝E ǁEE\4>R>,C?E8X\t@?|Da^YѠǹQbUU<E[Řt Tޛ4. 0`ԃ$&B0L6pD]B$|?=Rf&$&`&?l C]5D6̟p%gjLAdE hԃfl 9%KEHeWAL}0QD&3ݏ`&7XK-&"iD>(EZ FUBqA 圀E^B\%(0SL*ZC7Ӄj͈ :#hd@6ńs78 05B%TH }DI^bD8FF@8YnŗQT!D'8(Q@}ۥ#DCABi #1nq>d8XR__eNHmQPeՈDžR LvÝ5*jB 8%( R`B8 ;C} ):=Bu xd<'Ui?aD4Q H=T`H|STݛ*MJ]> $)LS%+kN-$<<YBX>,;@> ԃ!=VC`CH#RjC|:G21Bc\Ta@,݃%{ԃC?̅u[)%,m0CdCE=X=d%)t R<,lAD@=DVc`q<4m<mߣfiKlNub{Qy[i[lӾ]Ŧȃ"> V`NDAK߾-R~^F.jL>@6;p=dVFhU1Qv:*(F:@50zRX@\@N &@q\uRY *iQt*0FD:F0@x>D >T:3;1Jl; R( Vo X*='B/4C77C)j1pC(P.L N|C4KKt~ 4LP\17 ea(4PP5QtD+I TWU_5VgVo5WwW5XX5YY5ZZ5[[5\ǵ\5]׵]5^^k^qɖUcD` N 6JDlŀ$q` %c(d[adfo6gooŮ*;#lJ0Guq̂sf`tlwm6nNoLqìVhWCn[c@ hWDrr{EJ?LH\>0A%nh8$ZpVG>@ hx(;Q` f@S6C]Prw1xQ:ZI @2>`\Bu'D,qAF#E?;A:綏8!PfS8THwlU0YWXtēgVQ<ڄ\Ѕ]CGboWb,FcB!f0LD0R|#tŋ/=ҧ U F>̐TճD H\ \h\94K){ ;L@$g~$>t6p-EDit&DaFdNM~ƢLȝhՃ(P.݀0+e8w‹Ɏ>lkD,l»wO ';((ͣl4y}!Pu )ϟɛZL/tnE}c~M< @?}[Kh~ I$C qO{:B(0!ၾk$Ec t;%bA$O@/fD'# E0vla&>XAoE F1E'=9D<;zf'oBþ9d~ds(!Tof <\|% - 5ܐ=#Lǐ4K'XM!% :9yVcAG1 x@2 OL4{D;L<ǟdQ-zRj{zQ Ġ}PBz(#Fx`A@~@aTh"~ܳOy4 N9G/C-8@ZiEC2"|чyΙwJ8\3 QEu \NşP@![ U(k ' Ȳ9P'J7ys{`U^{5 =#Hv=A^hZyB؇ B? x3&^!";~t1i{Q=lL|'@䖃<y؞8$pQ=!Ah<2 .C(pZox(PrֲcI2> IȆ<CPٸ 0""BzX` gT:m$3I ` x%;ь8m\0`jmT"HG>$)YIK#Ɋ`z @ [x]"(@?8" c6V}8HNIdje(ULBQ`L@0ճ$ГuaNۇ( 0ѳw. >ܙnFeyGIyZ 9tTH0}1XCg-P}G<}$,[#|$`"""@0\T˹c9i($Q=eGw@IДUc8  bbHwMǐJ઀(RUA U@ -D@{tATO?8.Y~hI[ZӞVf| YՀRч@ސGd DUa\.Z+1FtuhF6Q&|TNՒzEwLcj| { t8cov~Bԅp|X!^oKQ(̡ye!!܃%AhDlt1>ŘmG:FyIg 9<{s l 錅M}{/){&CRtX0ޡDi!P!gh!6V ^ҿ#/ Gfu7) С9.Ir>ƣ x$G0[}<  csSZb6eN~\:mfUW>~L؞ (cppؘ"[J\3ΌG=Pj͸% u.+jWxCKo p=1nMbC5I  ^wh-.6E[@,zNi":< |߶- ;8pfcS@c3n@!rb Q~x0F*?cvb MB &()*R**/ƥ%lA~v`ZO!ZHю2fȃ~cX0NW!-AB*"8A R21EB"4,ல0Hj#q0a+%0! "aܡ0Dx(",cpR13Z7Bxf(5K21hX@ya\-@,ip\ĥ#.[O@c C`d86 <`\ExNd37d( @`A]:^l>Ukr b;+|m@zCҩ.$צ}ڎ^zAb:Wl:S5#bTHqhx" T?\MPƓ a["TkX1-F[[? AL!dvMu8Ō;~ 9w1tքu6(B;a: Hrg*Px`P M&{P"TpoKLT5Nډw=L{Nƴrҧ's>p z;a_܏?p g?fSO%#BA'> "Du}XՀt>"0!GXw^)&wupKQ3ZZ<_)'QQ(W[%F5!Y\updӡqkQAX[yݓɩi>نn%DoyԬp~З)X@[I0fCptІ kІTB6M(t'ep /p? qOLqcMRBNDa>!NuO<܈A#)̏<4>C_%^4P" Oq|&Q;lr]V0O72`P$f%i"`>&ed&E]$'H͕هA3*2T`rsaxp 萏Xr>* zA@T,F#PvaUzMkзxrh=f2̏ אF Ar ,}8_)$̐P}X3<,%F/PQ WPũ#Dap{Bf#@6ּ%V`ps9;H"BLX*0Ǿ0w BzvɝGh<̋Hp{ZAt52;>_R2t ` {ṽ5A'OKu=9G?d\qFI"@cl}jhZ |)LjAH@a0&FP4ΣH4Ca  g8r=yC]Y*reJZ-mpץȜC]0@h F bAYLU C"C;cEO뒏#d<'Nkvq~Ǹ˽6t݇ s{{X\WS~Bԙ|Wi͐eD&dk ø5Z{ _a STmZdG D] @&;H ԭ տO\p9l#*Rz Jlr!z LcVf`q`dq.|u|g`Ms4ssQp%VrQշ!Me!e I~fr'xSlT'1vMG!WNAXH1Ew)NbF'#~&"g6З`}wx>>z3+ }`] 'dr5 3 z qx.4p>(Gq!~/|1R8|Ȋ芯Z(GRVkfUS*`7fCvS0MH5c8BYP /r ';h LN:vp:P,& M`@08Pd3' j1*a q`fNOA(tlP?rt}5'\sZR~!"F&t]17Y rג|sNy&_Ew$'c$pyZX4&i\"@iq!"pӈ)6P4"H 0 b}q M}`.zƔ L ?{c0^i=sėF#Sw)Yx 6S&]Qjd8$y٩ɝueE[KL&EpY`O1+v籇$QbApa hp@#5/sLf4@H)Qsd /7ٰQ[b#uKF HaP>e`@71g&P,4Hឦ U=*CdA?::`ol.e0//q `c)pzpV`eJvGP .u)6U'OJp >2 p&`C`zLS R4r-` 0ܐ*'AdKj1gj6"`hu/pRRZPЁ@&% p x %SKxra jT%x 'qp A& ^5ըEʚ!ԁ]' я@-Fs↧Fz[x;A(;41+3K5keuo.*'.` 96, wB,! dVs#pLwben.SKo<ހ%H`Qˌz1%L._08`m"'F .@Pj!b% ` Q[!%FAGr cDK#rŕ 0 3iO bd`LaK:7#]Z$QQPL `Iм(PlX oQsд ˉ;LC$}dдw&^=ˉ+a$ .$}'2*\VUy ~414,2D瑴 qPr4AR|0+=AC!KcM\Rd7id!LaPQ#7 ȁ,ȃ\X:'Lȏas:Ƕ0!P0!/A4tej+]mIKMOH SMUmWY0R]_ a-Tcmgikmeo q-sM2]wy{׳} ؁-؃M؅Mm؉؋؍M׈ؑ-ٓMٕ]Ԑmٙٛٝј١-ڣMڥʠmکګڭ=|ڱ-۳M۵Fm۹ۻ۽}-Mܾ ōɭ -zm׍ٝխ 9Mm -Mm .Nn .Nn!.#N%n')+-/1.3N5n79;=?A.CNEnGIKMOQ.SNUnWY[]_a.cNengikmoq.sNunwy{}.Nn臎艮.Nn闎陮.Nn꧎ꩮ.Nn뷎빮.Nnǎɮ.Nn׎ٮ.Nn.Nn/Oo /Oo!/#O%o')+-/1/3O5o79;=?A/COEoGIKMOQ/SOUoWY[]_a/cOeogikmoq/sOuowy{}/Oo/Oo/Oo/Oo/OoǏɯ/Oo׏ٯ/Oo/OoN@ DPB >QD-^ĘQF=~RH%MDRJ-]SL5męSN=}TPEETRM>UTU^ŚUV]~VXe͞EVZmݾW\uśW^}X`… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥMFZj֭][lڵmƝ[n޽}\pōG\r͝?]tխ_Ǟ]vݽ^x͟G^zݿ_|ǟ_~0@$@D0AdA0B 'B /0C 7C?1DG$DOD1EWdE_1FgFo1GwG2H!$H#D2I%dI'2J)J+2K-K/3L1$L3D3M5dM7߄3N9礳N;3O=O?4PA%PCE4QEeQG4RI'RK/4SM7SO?5TQG%TSOE5UUWeUW_5VYgV[o5W]w嵡! ,f664^^\jjl&&$nnlVVT ..,224ZZ\JJL**,::<BBDzz|""$bbd>>@|$00<08  ¾b\` ^d`̜Ȧtv`xp@t~nfHLF@tntĒx\~xltt䘠|vpfp<<4 `ԺPXX̞xbhd\tH@hH:HlvVl80L86(Nfbxtttl0 0.l0.0(:0FJ@xnf`0@XPX ʔ||4<<~zfhtfİ*$L@:$<`p||rvx `4ԴvvtFFDFF N>ԳEF)TV Y#@=#(ͣ % O Ih&QlIGqvdP>p(`堄jj_wL@@A# FA22dC,iIt:*B6Īz&sFA?f 2+[T>3;@ :6&H|FAHn[Sd鲏% -ښACQ?``,p<ΑhBx@:K~pa@O=xPHZi ϲ,@ @t>H,:3,2a7X6@r>>C(́ C@)=sںM< @BC;F#]MhE@Iу2.PΈ,4:/v [!xrN(3v9p9;@#\ 77Tsl{::'-  =#=o #Q |%e#~LJF#x"G$ XP |C77 +1AzP  {$uhG2өD (C YS z 2dCP!IHHA? dSrA!Ƀ=,`U%@a}s!wp؁'XFđ$2K@'J `GnyVWH_ L j MB X`PL%(@D=Alx:&]0jV`A"Џ @m*Cgy 0)A"x2y/ n J@dpwZUWlU1V:u LmS&Fd`>2Mj3s+]md"p~D I n"!>C~jb)Ҁ}cG*߭я0k\nV2Q`-H[yPDLZ,zYr0s2#Vk>umJ""ykMϊe2<HA?CXlA'8"x# `]gL%+X@t-H >E'H>܂0U`ٿrGԣQ;@ [ !]B&ꁢju?x@ $汷A[ޣ IqãrëBЇN%$R>F =|A&*]CI1^En< P`!9]dǬ)7{_˺@ZKQpyDB\=4k 1jbDu Ka-@;ߑ)b|BaC;9A߃.1 "ۚ2\ѧO[)/>69" *D\ w~H|@Ph<IRP{T'EV== 0 ` 77@W5@M}kc_0pwV $ '3ydRgS H`(+H# 0['G9`r 8*p`8@/gV q$7\pXpr!G@WC?r `S\=%aw6p$@aPԈ|Mpq٠` 0$z(G0nL 3&D &G &cgMM&" \p O6p%WD`KRxV$(/ LP CRݳ C#1+@"rsx Y@Jw! iy ّp>P)A&@h(029E9HJLٔNPR9TYVyXZ\ٕ^`b }=Wf.Ӊ^T!9<.scYvyx ~d /Ȃ*{Xv"2ygC@SEmæ.3p4\1F])"" !`yz }"0q!"4 C\cMc S,`_ $0[U#0xňٞ`{Ep /%u: dT{p$WPS@pNI`j١Mu[P)y'P27v) q% 0w z5,"K" Ŝ HJ q,:R>3/gmCP@ .0eـƄ` vzxz}"*,Չ"gY``S0fq`waH%  +Jl@l[Ve 6 -4}ڒᡊ0OA`dzJF@3mP /D?#ըpXme P" :,f0Yq$p"Aɕ a/dOf#`6-[KAR#!P0"W$  (77+ p-y:<x>p1r]/@\"%"Ziuh:p@:=`!qT =KӚ##F#ud`V#HBmI$*{MGP[} a&p hTc =P5(04<䥉[{q^HٶA$Z]ZA1aX@WgU;bes۽!$!e껾 Qq;`||2?@.Q16 \,|l IB>-<RE<SxـC; @PRnk0QŚљ,!3S m !i=|x%"N"H3SBr[\ž$!O ')Zٜ3~Zr0oɜarf,':٩e<)癞ǺR\}0*B:L\*Cuq2@Vuz(T [;'W@g*/РjDZ>*'4R,98WXX䂰l1/]|)7F*hzlEV0Ӣ1a0(mA*}aL58E:j=pS2˵DJ-H'K 0o05$@6 Sd&Z:A173p#7tc7906,>@>%TD't)ԩ ? {gp% |"%]29 $>DԆ^'0Q"]@ V D ߤ:qAAE+zaLRFRǧq㈪eq$Rd.J;QtVPF1G P X 6׀4{Y#LۭTYK*LI&f+M?4 #hMK/'4l @Ji,4lt۬Қhw5<>HC{+&ZtTˇEi!K:%>9 `vmz#-a릫@S }^ P5QMR  de:'5%!YqXf4P2YRTPQ5UqUVSPrR!VY]J^tf*rP5mf R7Ws < װ Gp \f R3_WUWA2ORvE(`W'aO֊I +/_am誮jxr*+5\M"0Q"`V Pɔ/P *CEv/MU[YlFW:J|:@F9r-f,o#L5cT-<60,,64_y"YK~@| ʯZ|m,[$K m^x^m.{l6$7 G߼}5诟(o_|Dq{$)P<1R_t%Q y"=.L$6gSbwD!,1 LL2/wɓ1𛷢30rb`媔cй2GӇ x/>omE'21|}gay}wOOڐХ}\mܹuo'^qɕ/gsѥO^uٵ+G` FG!l}Xq߄mn_,甼LJ ~}zG\wNدO bϟ d!, G 7FYa$h3?7 /7 /y!1 sL7@ g}'}JBH4J0偊wGCM8sN:NO@|HAs(ǐ/ x@!L 8zaє{@௓@ "ا-:r$;YwGXD-z4ԁ(/ i*#[iʡZ}"˦*>2&2@tmKF!! |C{L|gFx W&ϑi[I`meڸc*( ASVye[vecyfk+P ܧ2b8y8ч o"C,@3D؁y֪y(3KPʂ + `} RE{R*ͮa:Gڶb's:zP:ʌs *s{ق-tyR'I|FE)[W\|Rot +R$"0wvP(C~~o.u#C" 9?8 p(3 Ѻ#n66p8H0" 0 (EHt̃M$Iq}c,B|p |W/h*k9VT@\x oH<n|40KB$]nҠāQB* g.xG?ad0682AA#<@$A@AOde+]JXR%Aw2xyR$f1yLd&Sdf3GėZI.yMlfSf7MpSP>Gzɲ Qdg;NxSg=ul%g?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens,ϥnu ;fb7 vtwǙTw^żeo{{*X bqHua5P >v H8G1E:Kͣuؼҝ*|Dxn9eqW xcɐԍeHc=Z# f ^b"IK )W.[J/,Xkhlx7 х@Pz<4eȀ 9fR N$CL˓N#gOE_^4X*=MˤXAHj6Z=ȥ >&#Cܲ:Cf7fdPsՉj$cb&>eIuqX{L rn9}u{AD O("WL: &@a Q@B DAH$6XȈ&xcPUl/DC^2nIHDm2Y4I dX%5mLHI@@(;0$( @'LRGOқ:P<G^򓇥C`p4H:zF-(2t9byA$A O<ij@ |>?x?ɀyC} ?{I# ;b# } 88x,iӠ '¿ЅDAdAAaH ш0ĕFLD"`>R,o5r3xw p}pWсHyCVTy, } hg̋、@3/ NᐹPrt$ 8-CX6= 0 yEq y}`2Z}ƁP W,w8C, <) zܳ&hFaE EYFE\L7H##y H~G }x.bd|e{PilʹH[l'ȯDCZ 6X , ϓ4EKf8(Ik@SAP;0K0CF2+ˈ|ј";m+ Y @`4ayh1(ȆQ PDxXF;3a4[C0ȇRPZĊ &"㴍д K@y0͑p̐mq5Pcx0PP9Jq p:˴̤ 4 7C |@ QRiH2yȆq{k 0&8zЄHS;R,H" 9T#}%3K RBP}O X+Q KE|=RdRYF@DLӬʔ LQ%EՌywGQr-X5-|OӶ' VM  8Fd }= ~ R8`}Tۈ`978 PΑ%HEtu(3>J Y2\s]y %2B\R P)_yvD֒( @8CN\yRN[PSb؇ +aU0w2 OyEijq͖KږX  `5Ŋu9004}.>Ґ!F=T+ ȆF"a %,1JY aaXZ>(_ѥ`b7S =豯xdYiAFPvo Д 1& (571 14>Iac>!ْ`"(nHUTQy^TՃxIV`ֲ9e'I@*U|Z?`" 2n(JnS",".Jt!& ظCk1n /҇9ǁ00* Qm=z:Z|Ȇ!md2W$>otG_'% ?lc&I*H~tPk2WMُPCgdJxhQu[O&|tiLXueڧYs;udOve_vfovgvhvivjvkvlvm- Ȁ-p2#Ou1wRDQovvx Q ȕ }ny Ȁ(5ǎ躼wå؏KrHxw> (`&y|hpX1ܨ @,@ @&K:<8ՒP^&ӦKܒyFȁ-0pyPywy ]nq ;{vx{Z[p<|@|{X }zxL@lN o-QA2K GySd y-0ۈdԟ)|IʇϊTQcwЅ`Y);<CЇ埣9 &/2=50گ W}OiA9V&4`T,R.P(m@>XfK p O} 4ԣϏ,(p#+ @?Qۉɧ@ԣ@,;_0Ž/ N[?Ӓ؋/^v@h^p\J;d I Xʫm A"^˃;P8}oHt9h_6 .:R.hm>$Q>FI5V9 3]NL賵MQw,4?[HmO?@WsER' Zo[h0H,d B3ь4 d|Ӟ@ҡ] @B`&yI"2CXφB$PpaӘ)3R)}ЇEQĔ񀆮!IC/GK}t/8@ʈ#0l qA(ac21ߑJҜ=#7Cl=X~ؘA)Q$K:yp +cOZ/bO :mZ(L| RC:C"" R8l#C^!|X[nA`D=!VWj VJ`s`UP8m ن4u-s}r  lSty% akA'>ρ}XK xnt š㺃1s dH w6#m-A?4bǓ4 &&tб8"(t~dIȃ;> {q CzI d $^>dCE> }w"[G6x@o1ZS(>~CiHy @ Xò j +!RF5oox(8V= zUNEiu F2i^,_C(ُ|$aac@\= at,rK3 ʒk]#´@2 `,xG.m`+_n|(Az=w,C`!Yx ^%^cYbG<عȲ\/?~^X$@Kq),|%Ka<VhY$"9@?(0c==8BC1GfBYC dC:_6=QD:|B7„<`4;91A>4`_>0!D?8@8 ,R,ICR`>N] 81J(B T;P߱9_yCҼCȃu.DZuCm5BVԽ@ZaXZ3}_B@ԟ ) >IԃEIElb 1Akjm@|sC_,i|@(|*!j- VDCA4  u7N6FGDC oDD#_>@bjQA4c>j z LJ|&.&p^C@$*z"a@,@n%2**Y^>"J$KK$yxDd̓!XT@ <NID.= LTX2Gt∍<E !`Ce==e17!DcIDľL"E ?L6TH!CH@WJ㢥CVd+)CT cg>,M2BE%e ;dfd9;`,_&$C =)DuPyRDSSsHA>>g =,e=Cxb-C vp)L))F@=\s<dC@BQ=`e@0]+C-1!|_T)R$BtH CsG؂B@ aX8$|#] ,DmA@k࠽2P.0ܢTZvD62jB*J Pk3f&d# TCALA*N!B0-胇m꠱I(DɃ;Z(-b+*{CB\!*I >"D<'UyEAC?T?Ǣ?[>P@d?:£ ;?|֫Hc*;jJLTr,O$#؆>87.h_3CXs&[D:-: > Wl?T;jBsl%V?ɫ^Lm,e@4W8:t$?x.Ʈή4[rl<_ò<_C>b_&bm^ S(>*6"gCU2#|E@C6$!Ad+T,/%}'&hfD?6m¦-Я<ĨA$BFɒDCúE1DRbʚp[AD6Hnj" 7tV47 bĦ0B, BB -r~;&pc#D$Zwx)/^*HKU^ 26Ҹ;P+.EXdgmZ'D(sPhq 2 F4O35WXL hTh_T5s:EMU@C1kǒ0`23Fz01DtR! >#'ƔS#HP23m 4Cr"f?76;xDL iP_ȃ#˜ EJ!\">b$e<3,u8{>g ܉H/w^ D*|.=E3aP5k=,ssXIO5܃!_>t|/:ovDtOz]ݵd+wt!!P=vQ+A 'Bt 8kY=P0׌ ^FWiC fcpCDAm+ŒMHwV n}`\C9,79Ez'D7 \ȝCm[O8W85@30DCe!Jd[ C<hXKxql T93FY,%C s(*̕t8Ax!uB0\dG ^ Z'yѕ")+chTD77\HTC1|F;B(BjV@SaD6\䕑#9C@N"TYTF=x>ad\\(:=<,?5p-@Y랍㸎Fx DS;lQփ2DmCd>@4и'ċҜ3B?D/GJ0F-(DC$Xن>H 1Ak F8Q\JIGx(!wNF1^S}.}0=p^tC?(8OgC[8׾J"@N#*F54' A(Phkg]BDh@3KZ;qT+ ET@oPs '@]6B,Im5D|o>y c;"cwݓBy {'BIy1xaz d珃sp`_?4`O߹! eؒB zAsݛ!?HISCĘNY+b>]~>\"ZJ\2 M]0a۴k#hpو3R8׌5A !#6衟ɝa$)/%~,9#F1\G^X<.}<1@ 8b1#Skh `vK%d4Ȼp ntA$Yl!\I&lj  {ܙɦAgz<>kp}Rl(C"3<D-#fj.yi!FDO骠!CȈ0!yLF .Q$yKjO9Ұ;ilVr)|$x@gG| )=FOB9{gk|n4L=d]f}hjlݖnѣjGoG!%eԡlJ|ݗߌwv>^~%-5Z} 6 تoIz2y്mytęgnK>Y{袍>餕^馝~ͼ sgi񚰞zo BX>[`E;l垛ޛマ* N}6D#' 1>ȿymqN\=EM?U_]emuߝ}?_襟ꭿ7r-~a?}cѱeC!}?Lm'%_O~VrX msFFه]V%} G(JI9 mjy! 5hU)>0`pa0`;-9S4k Þq-C k#9▀!Q7&U|h]>uG?ck @A"n< 2C<8y$<`oQҒ)I&XBrZVFy` Wp- l Ik#  N {e,gJGlG) R%T^%`1?G6MlqD@?Dp36 !s= h./z->8iL%;ݸi *mtڬEy@<)D%QmAu]NsSo9թNG[$@(珙k)>Hz&EJ%U|ٲZ=iPJXI]Au!:13s{XV R>gOf=u#,MQT|bXǞQ0#}TXDSg}8"DVG0#Q> R5EH|k&L%\ :x)KF9ھnA X/9@Cd)kYCg QEfA+\".*Dy$CVTq2Ddya6nv]4_ @2$Sz3E}2ǀB^ q-a`"pa,bH#AHH$<`! Z.;cn>;nxb0bU@f18=@42=GFxb b+"č?|ⱑ)}<9`(&j8 |]sqm="C's5HDg,!9$.n$|1Z`Dצ j |c)XC8(щ>:19>ŬKgzӝ.ȧCR @Tq3FwA`sdIeJ(XgI&ؾA-\?G 9 `hHApl,R+jqoyN[Qm"xDFDAߌ(`\b F$50HxB:ҡIF}\25^# - cE" @W\-1q\kH.7Y d $(! .9A byV_ Q=zy &eDjOn/"V\¢R @@@ ׊ ^#iGx*tfP) Sdl!(#L`J0#B#.2p8! ZhP:@ lpt" #\i(4B ШA583ސJ/QNԮ"Q'F(` S@o6! 2~b|.&pl\p+PD4 ̎)"d8S ʉ,`72BALr%Y.17 2DGIʄ(؈ER(# V* Bh d բ )QVdID'_5pk"D  A ή 1]q3f#òzY Je+ !"  R"aVD¶O#!<㺒R-ג-ƙ"B8/) B!$@#.rB!AhTo,#h#J0AZb "CbsI$ne31 ".2r!Hj/|. _2M4)17b.PCCors717j BfQJx(8ӏ#5]"6omXB d pS) ; .TB!^0v:'J"O;3C2 b;0"#b< "f /9/,)Oe& ,pO=TcCMAR uR ò$)Yb?Hё΁G%L4#t r6P faQ[(\q> CE "]а_i` `Z,- !2 L QM bkrf%%8TE&Mau"b+ 2: /Cr*^K69SaaU&#bg?3s+8Oc; A8h3D#(6#aUpe*끺V@l>h+6hpeߡWԦB ȶl%-! Zg%n.'  xf3 Kld js \ eA>`+I,nZ4peF&``WG-T|\8( b{Ss\2A!,2E*C4)q U\8/!۶s2!V!%lH`) )0 H=˺HT:0ρ "gF7_} v035X7SNy$OYye#hnY"`n%(Quj&|, ǥ[cy ڠ-,P]8Bq uBƐ1b6Y 9@ضS B ii}&!,ԲD}bКl?iJt GU4`, *0G7VHQE*%+oy M k C"` c;8^ 0͝KK۴#ʲx&L?sFd@! NQ+#)/G& 2a'< ):W (bFaFB&fNܘ.AdICD%0HT *j"PdCrZ"䡅*PW Z"Af$ qNbB*4fbmԂ-\F7!$bt}L<: ?,C=ZeB!QZąHfkmiCC _|"R%Ȫd a|A$:vRO`$ bXfV##⠮m410lH2@_Z7(<,[JɉP@XSRV@?Vn#s&N?C=v^ݫ芲(%_(`0whO*^a0^Gt|ɘ8Qf&tXXabs^w- b:J#J6}ƪ6ELߙx^덷EfJYHZ_ f߿U%~>L41"+ursoeOKx, TL  Pn9qbT|K[GO;(_'R\_j_$o>U} -%I>"J̬2.6/FW_ ,@_ AʨlDn'N4)j:B9ۧüs,a #>|A}իsp.yȓ7o޾~w޾E`ƍ?|іXP=6 "T"ԭ\z}@wȍXd͢Uvlٳ~-X`… 2%q1yCA#H$MTK2iVũOB5F6z1Ҧ/JZP/־w/}B'}:<lG2p篶ԫ[=ܻ{>˛?>ۻ?ۿ?28O=U AA#@wCc/XPUACW!`>&\dH68;ri!W O[#WFKJKL!T@AQNY;ȃ;[Ri%)V CC#4)!cHte$ <t·!nI D0Hㆀ>cCUFHbTd<$ϟQ;MO݊kk lKll.;D(Z@Aȓei(p]ܣ<@SP}( W 3^TkN>2yMAU Tm4#@@LG&@2sNX$<{ȵe0W;ZK.T2A{чnUA=;o݋׾Oa$@?4 >2wzw~ xNxn]*@CЋ/K 7CttP}Z?{dC-;2C;>M2q@=lE\W_C9!@?;C&,??k;>RnoO6v>4L^t\#ME?6Uvxz;o+&HLQI'xVp- 9ޡ !n$, Op,l _0H󎟤x'rOpBĈ<!ଫP(FDil !J,.^7x*Tzz= !Dim|ZR uvů"^( ƽpXABre\.+Z%2P~LKN\6ZEq!b,;M> t\ :(,HrX(t7*sl3 hJsl'p!.R 1_y&aL) :괕0j8ד{ >Ĩw$LR$ mCQƠ|H`EH,mFqUge (s,?])О9nx!m;e%\W ְud-H $!*DR9T> vfL<ȇ` lbO#i"׌(WnT;wCh,hE cs}Gfaׂt 9 +lr>=Z;q65@\|(CA!-IP 7 JgTYD ށ}dü.yj(">8pN$O0O88IG=,0~eXGe=9ʃE:W|JYr ClL@?9DL8A6$awmƟsk֩cA($Yq \ " 1EJPh#yUZ+zִo\+Apz9U.rvD*0G~"cRLqKT$~Jk0@ d%QQK>N4 ?RK2ڞA(؄E8Sewq𭾃moq;76dku+xcocQ2')A+~o+[<')cg ?Ћ~;e( X~o~ /+oKԯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmo+xx7Q0xq2>y{ч(k ⇀"/ {(!@>/Sgg{g\ኰV[PnPQEaAE^h{H88~&0gr|2eщޑH׎ߡ\qH7frj[!`IuщY8BmMs!@$914she !)f KQg)Iდ߁ɔ1"5ԱP4KW\yYݱjW\>u'1b08VT҉uӗfIwI}%bO@2LpP0_2 (4? L92(m3#m /qx' QL6PeӚM | L`jI010Df&INћc ("/\&В^qjNPE$?`i>0)X\eɚ"&ivӞ ב@CٝF嚰)*y:-G$/^4BTTǙYu: i)_r$PP @j2Tj`/FU! Vz)Y]*?xќO9)s6q)Ӛ (/qbD/\a '% 0)_9%"ţ6Pyvj WznW{6\P2$!LB @hb#q#Q'+!1*ߐ0)!XG8KT0AWZ+S PqJ =[BՒv?봺QPP GP?CmC9:&0AՑ7:^zf;#+ sٳ<Dr9FN:ӪrS^\9~]F^4-n;/$w>DzDIe+V7O@ `ӱ bQJ嵡56A@ң$)^n44Կ:3# PF`[^ӎ3rK3ȝcKP? ā`<3q: x4.4I9(5 xSK6!JJ!KKN+&~Y@p cCz3 %TEI;*-L$ p NJd y );N J!yQ}0 ~t%!w)ac"b <߱@ 2st(wFnN(~Lɓ+Oy`1y1IE[ %d ElL}biq!G:4RI'RK/4SM7SO?T{4Ilk"Ei('䑭GG 2`Q/"R! g @XJG}Hh)J]N!`wGt&}W% $S4=bfj}#iM}zP\I  ,$MO9ڵ״<طߔ`kՖO[)dNczwFs*ϟ_"' dtqT!@nIc8da`J%@V!fN|^"8ȕ6i;eˁ?mXC r-KC^hlU nRWhul-M Ato%z1,6$}%uP?|'|G?}׏F5i879v 8@GGD ۓG=ഒC>Pq 8v~pZCy.!q0 G<ǽ„P8ߑ Ã܇SR:‴UE!<pHt8C\pTw}D`,xja*Zad QBY@?a y)A=1c "鄎` RT 8> C Xidp"1a?竖p QnL}q*%pzTb#ղ<΁KhG+AUlHdEpmgM|d H<_Q`J?B:P? x_-o9JBZŖ&\iBF C!%]JzҔe>SV:['AGH ^<>a1$8%AЋ-CkZպVխok\Z{,ЄÁ`1b;;&K؇bX#0gR1]ؘ.v'PrX;|cto+$, ]`]q@CVz{[j98!ꗍs @ C T iM(6XrA%n|VQ<0!`[t\DVW#F6!BWduW"Ӧv5`z0 P7>̣lm"bUI&fԠSj@ aI+g e w%r6#GC2p}C!K\xo}tBmfb\sZULYڔ!ԕ &;bAk1xM@/@AG:ƀ]ރEJ<9袁(`!YN XeH,|BJ= uJg9 ΄~_jsvmnwwfqF!ѹnuw=ozozw+o.>pGxp|ws7yus?zЅ>tGGzҕt7Ozԥ>uWWzֵ^O[{>vgI|Oj k v[Hw|?x%st4" yw}U2$PYIHU(/>V؋}u$yL.D  4gB!EeG&|e~&]Wb~?&0,?d裷F 082рl"ZH8w'caj < ty h h t &d~,|y  wx2At O8X+,B£'p:kxx)ɋ: J:-xr``C@A9y=d(ЭyHIB|`|}P }`; ąp 8P!0~@D~8MDQC<ÆC8-`a$Ƥ;RĄ~86dȐq%(s ޺0:hIs0 w }`  y0p! p1Jry}`G X"w0}@wPHW5qb4ɓDɔTIC PѺQH"whRa @dh0 9i *p\ ~ i ar!˩i 6ڇrq}㏴yI}X20D 8K+\ɾ˿,7O‡X `ٖXH>,rH`LS = +ìɆ`@IMX L$4N9QH}-:|HNL-O' %ҔkB ]pJxN~؍[TnXt,pO|< O"}s} ОNn`-D0}X':I5-<ُ( %s )"t0Gˇ> e+Ӛ A4#5 +,R A!n@AihD,8X@S#`bЮS&݇OKd{Fp,qRBjіs-MNF{!h- "ZȦoz0y(ǸLl&n`͇]fp $b|#*s8ѧX~8DB b ܇l"g}(VX%q͡`դ/LG؀X.d7Q70HƄ`.J{5:4 &_˄lAٜ! C-PS ثڬھگ۰۱eRE۴U۵e[ڶ۸۹ۖ8ۼ۽۾ۿ%5EUeuDžȕɥʵ%5EUeuׅؕ٥ڵ%5EUeu%5EUeu&"R,   E) `moק'FaEsЀFґ*~8Phtt (Rax~ ⟐4Ԓ&ڴԇY`i/n3jSP : H.ya IG㭘t0.}80Q!6b n3Šq*(!}`UN5OHY"v=XM]VއWey]9۟*j˻Z]YB8POjtRLFк8wS̓рF LsVt^gwaxV0B! lCSde~UVh~phXkVP> C\|܏zHqD`Is詄"y~ v(8(K} ؂ ^* :i6&t0yzo¼2Oy8{Ȅ.Ѡ(@jՠjy.{ 0vZQr#iFF+؁pP{xCypnw{h!/\Gʦ&N7dZaaQYX섐ύzVaNffmn( {clȄO89 j hyn6\  |by؁o> }^{ sPѣ C0ҀN ߽ݎ}RUNƀ(F?0 C3{Bo7p|nc& t0pU#Ydž W%>fjf%Fy v xRX-?8|&n޺l|j^vi l&?< ox=0 C+|X~C7lh KOop, ` m6XφCYu{+fm1)'Nn7ڡ&W"^8+t(TiwIɀl$o `ZA~Gy) g?`|t[yhxXTrz86CHxsj!(kFЖ~ןGЖt~ KȪ>_}W:' `IKJ)nN Z8d  xKɞĜ/"WّXZ' H&֌)a~ HsuO $ø^o"'n9&0:—9Ƨ '7GWgwׇؗ٧ڷ'7GWgw'7GWgwy|x'p "Lp!Æ9(q"Ŋ/b̨q#ǎ? )r$I2lA<&)s&͚6o̩s'Ϟ> *t(ѢF")O< \J4+oRZ4Ն 'לe~ ;֨ #Q_6y:ͫw/߾~,x0†&W>| 4k<] h*dm٧dʖ1K9i}D;pPuIزڞ`}JҶ\gny|`߇mVM1|;޿/~<&'4}e{yV`$O=1P!䷟D]Ds1XRuA<aE"!H$n(!N( !aA?D أ?CY#?m0>uQMN5E6 O#e}J6 &IsiP:c!'С6JПTe I*,YQ}>ZEܓ@ 46:u}NB EIJЭ͓B7$<,FUe봚 d-vaCT*ir YbKRRSI\pNp=D]cA?Ը:"#tevY@U#3]3Ϲ B8l2J>؅;PIqASQل`R\>^ >Dڐ]`#LR; uL|ҁLp]Dl4\o)ޢ#5 w΄7vo@xjl_C0;b*>~~t҅!]gՐ.3K.LOJ,(LL@gv>9cUTTݢJ_%DZu矇P/Пd-w#.#ID~<d+zh '$`ɂsA3~4Ed!ɖx@='0d2 1B"h% @z܃_>"0(J@ EDd0P:Y|}1|GLJU:5MmBPLJS4ylnf8)H48@K$#@t OƄL?6S l# LF,èD'IQp j#H..YcI΃h}Zք툂,a k"$JhE\` Ї W !V# 1CD}>6@l vm?-V#;(`ɾtUz [pb(c Vh!&FB!Wʈyy ]Uw 4@VƬ$l8(^:{&];(9Ȉ7$fD x? ~=C`]},EP6?R`% wC *Pn d)ͱ~➈ɖ.t"&<0N~۰$\ %A2 %ks(W9nތ<[qw t w*C=&>8:^q̪]1J0:Qu 29 DHȭ1>mf[>?JW|d D(l#co\Oۖ=`ZC<$z $cAaT䃸c!ֽZpj=l ڧz] EAW6}A `@|CD)R]@ȃ999$?CYB]OuY?Е@tغ,! Nj`>t]D  SM=h-A@8!l`2] ,nG170o< "y9,5 ,@xB68>4@ǽ2!C ~o !&BPb((b)&=>$AߝC?T?C-?pO>PexAbDD7LYB(FERݘ-4 @ڽT-z?%^?U^Bb =.C$CM.D+B=T݃F'x Ĝ C)$1^aؕX6e-@%2A^̟)BfdJdRf!BAd5 g38'>T IBRWTI9D aS0ڜ<.wq&IƱAC9 0ED;%@xS=STdX=́ Uΐ.=A@ ]Y- 9A OxP)}ܥYg?HˬJc! En6"Df !!㍞:{@;X}L( DXa§|N}2 ~2^R(U@?D! @XqeCv 68E De fC6L_>A=DL@3\%D)C|W]H[rֹ`@=#dLʽC}˔ Ů5jD, 90(|kRt DJD$$J(*$DtjH64ʿm]A+C^+i m}yBctB'8R_ kD뉉(C=JDúM@K|AD0E1+,>hNW:q؅iDÐlBmmrmzD@JM(h(X<0A{{q>420BJ 83M*:@Wf>TDqx@ہ^A^E TQ^$2r Dȃf"p٢ݍ@@-<{>Ḋ *h[CۦI*oyr>wɚL@DX@p- @S|nnN4~>-:Lc}ŇC@ d!/#'J0~.P/D@?ځ/m΃o02LR8}-8L?p@f-B؇g0UJ?XiN:0*Ʉm D?dlAqA4VD_pm%[%cr&O \tX@@9CbjC%4>d5˚GS d `e5F ܒ9@I%?k`)V)H2V@̓= A,q>=[r/[@<, AnnVA.`ɤ 3<&CF)7`g8}4pNP3>[dlZ@h@ 73@.'ߌ41Ek!-TSDE#NK]4I<lE*D1BtY/0<<ӥM{t(75*+V(8AE(k7s!DdUAS8mqȲ&lvmmQ,nnT4wh<RnY1o+r3ws;s(@32@wLH7u[XvH<vABPuwzzw{t=dlF]7}Epx 8CHЯvX' ź̔h3[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {IDW܋D:iCU l*[c>+GT8FM1*>sEbac<rLDttT-^@:@{*tRrn &|?c4А̣[#z{x*Ɠ<Ռ@A@7@Cj{D@ =r X< ;QKC/ TCc;ڙ NlʷC$JE\vtAU@=|Tҥ,- ܃L dLUf} L@ %;FhT BLUdQ@Z۳  <[KCI$HWeM>8LDL dPbw QMpȨ Cj8A/@:TS?' CĐ\)*dt۷(',9ܰ6@K'ǻwl0`Cs8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹgO?N'CS,B޽E!{P!aطo@Uy_|ՓsPU3ѹ-Ej=paÇ'AT|ChGCg4tpB=X@`>SeTQ퐊o mmX""耛YϡG>zuױg׾{wuϟN7!xlw =A:J` a&0(5}L0(z,ât0# A8!1"KeyCI" @l(}hhsh'G*2E+$ Z@ bN{>R-/ S1,1`-G37* G3bK1 ti /yXQ!Aǟ}F{Ɗ |6; y"Nu?"#5VikVmEꀴ H\"醹y2(.R}'|}VXsd0<^|ۃ.}ʳ(G e{PB|4s7Bƛ8͊DgwXD'㉴JX衉.裑NZi0ۧ~s"}eRBЧbt)۟̇ȆjO}^ZI[-uh(}@^1=FGil,ص!y p'|F_q]yL4e, JՀ}ƭOwFn({(zVU.p1*=Jy>ɦև^/Ryp{  8dG3> N1H87#S|؇~ pP hVCHx ٳ8X]X&xtD5 縁HpQDLOD6TtH)P\DN`SxYYD9Αu(LQt@>APDP74*iIJC8(pu#`B(Vayy_@<1u)C H>ͪ[4{B< x$B@@0`Mʮp?230C裏,R$4yD1Q>DTt;1YР*0&hHpc< d|oRH KA` 4@7ޡ~P|,EiH,58HbW:K6 8P* dtODVe5YњV1hTC{j]W} [T;@X.uc!{!e1YnjkgAZю5iQZծuka[Ζmq[o\%g\b{EgBn,B-np$-&{Jd$"0$dS5c58%&g>8mZP$J m$!,76gu7EBJ(oD GkJڪ1" ,> ?.hA27nnS n&m4*@>.pD-J2+RnT{(NVvg!7r#k\pXH281 `sJ@X3;93"40_4e@."b,BJ73!b6b$:G+$e aGBRFRR7*cv%}#jn# bHSZ1D2 XE{?O!,e,o$<.GDD ppc~/p4P"0Dzq[LRatԂ&b#o!1v"v2MM1DWl-Fl =FXF$v5Zp"'A8"QP("xGOLNf " ~`8!@"D"`-*z-j-"ZMgHXWQB96 |8xW;id ec&B*̆lfmm7F-* Ճ)+v"THjp  V!ڝJ{VeWAW.2?dUd$}6A.!B=e(G"aQB'**)0d !169'}k"zF(-2? ڎZe-x4ٍ"3pEEH1m!Nк&3*?:/Fg H"o*PHszZ]8_7HA!t{-&cxQlI>avh {)h,"i}Fi۬=? l"Lhlb|X#&oFk4RZ@, 2KHHR6:\[E=j׭HEZV"/ɝ|B|ʩODʵ|˹˽<|ɼ<|ټ<|荒1SCu\'뺘}c:?KʧCV}) u'9R.lu&,EbXIZ_t a=']I]qa{"b+֑LpWI# V^eٝ}!{fx&&#v")Eauݻ]xV0b=]Y_؎M',Ejqk^x)!,}=ۿ6lu%mdm%7 E7pH6--~VSmlb#nan=.'! H.,Uo=+mp p-BB'Έq ><ÿVخv4uyW<x-)L]AW&oiWa8@BfwwW.x;^yw/9z_{ݺ{w|#%[72^!K2;1'oT8թӋoo,*لAB&"2% JX}K[x,h؆-tE/<̻XaMapNtQ`)*ZW 5"W!礌PE8wV  } *,oÇ#JHŋ3jȱǏ -bA}"'bEtI͛8sɳϟ@ JѣH*]ʴӧPJ þ#p_=I8ϫžRd,va{NW* ;y,Vy }-H[ Ux^i_̀7/l|mZ_ Nȓ+_μ{bW޹̥꫗"} aDǛ? u(^^Ym隽bH'?(l J(v S:  m FafE'FHC;##> G<@)DiHj>{e%lY:?(>(ӏ^! 4ђ4+R 'ey}#<*>3CWfڕ$)ߊ ԓD(?駠*ꨤjꩨ ti]CaUP:CxuAAD 7 @=V*_Z )ЁQp!z4<TL6p ><@?lXpIȓ "G,WlgU}]7e3f̣CP%>c, D@y1Y# ZP#S,C!!9z

O:] >.i5INj O,*㏬7G.S=뤴y=p\Z(gOacH68AY~ y}[WU \O l!kX81ԷA#e{D_od .5Js Hb!:'H N07z GHBC~%L W0 gH8̡w@ H"HL&:PH*ZX̢.^ oC aL6r$>21ĎGsQ'Ї;\dFDlF:IAG<8CF'# K?8A܈)ҁ`uL,~H(KFq" ",JHL& epԨd6Z;]Niܥ<"p# 5iycDz We2rjD3\ ) @!8UDvl2{0mU1'͐ #eR664ψ'h5Ж0]*ƅ֤3* t­lyR#WGӚJS! XͪVM5FH ­ihI PцbH!!ְp AN4! HGfp,xpbeE AA^y$>e!Xff {!#N]]F TѰ 9:gRLo[#җ~lLqM.ZI ltzp$ !e@sS[HA-^RO!vJ$nH1Ԉ4t^Q%6"12#5²r8hEkj.%RTP# AQ 0 zPr}7rEj >F o P HV"nhR23WFr" PbP+c^{sD&%^L1x )7%XN@ؘEHS2 0#!ϧMː6 uA'a  taP ^0 aak`aW."UI&B-AfE#%pv."vV/ʢru'BU_ W0.)۸Lٔ8h{NP<0~P) nHqh2,2oK(q&++3fT53"3Z Ce %_S9coo;V32ĐrK6'wc,M@o^շ;>9G#2$c2"c\Tc5`Ѓ9 c Twk6o3?cA7&Bvhi 7ȓ="#0  Nٝ7ԍא߷ %p7F`OVs C;0:f‚;Y+{ i3L1K! ,P"`V$U2 ͅ`+ =>Lk Bբ % qc 5idZfzh!prJ/8Iav|ڧ~::}Ѣڨ:Zzک:JBf$:xGJ3rPWp pwdBK1Lڬ~Gvb9MdiO*x sQ*p;֮:Mi|!]Prh"Vؐ[`^" ^d= ]]k^s~^50R W%`bq"ED~敁vdg'gVyWTaK \۵G0 _o"ZTp8'?`Z%1p00^gp =–!qP{FcP   ' r {.x z;Z"xPyA*+/F y`!))n |tzQт E(21T26uRJ(lh##Vi1!a"Y "jg{#9b;K5yP) ˀVǻ7%]Bi|x((76U))Ո[,C$@q Px 6NHHќE ,oi3+C0b C@\B N\7i&+ 1S82B 56sS7A7SCr<! :Pqh#60`NnJԽ'%\j^ 2{Inkʴ?C??t\ʦC +̦ ʮB4 P0JAh˺)(qz:lB <|4"Œ<\|؜ڼ< S P=i ]F=$S 1'44OkmKDSqq<52]<Au[ E[<#c}~MzP>̇M(Bq])= i!4̲G{ ;"{Tދ ذe CT5Ů'ڪ#AAZ  p|^i A PUƞ͆A0` zŲ=~O2%U;VHY& {$J[(YYŗmWxU.%.Ӥ [f)TRoRa4aIpc.2olҤ&foi 1;n$ ϶a 01]->N QPJp%D1'+a@孇|~N# ޠ_~OTxOPQWTv>nQ-rgsu(`0Qi}'[Zp8s!p(t$Ô: ˑEY:@h#`Ӕ?%_l^vr/gt}Q.i½aGkdJ(!h0Wna݄#[vߕ!K;@ #"pfkFB.|p 1P6>2Q $XA .dC%NXE5nG!E$YI)UdK1eΤ2< e#PP>ӠP޽ πA  {"mbԞPRZ@pOK< e[Ztɕ7]\]췯 'Lo) &#D\g `ؾs0ć-ko'^qɕ/g9o8]~'0~.`} 4ݾsOU_` yI w<Zja(Be炁@'db* -駴~"K1! MsC 9 @d'(䉀 GЩ$Yr ($rK.K0sL24L]HT(}}I <'|s  ``y(* B"S!;9QF z ǂ79ȳl Q|YM‡ {,y }$[ Jn!tՇBG:k{"CmCA}" ]3A-sm)t fFF>qP dy1wva#xb+bCK\91XVIM&{=q 2yK2h.fx`C(pս#sF8Qs!,P3ȋ>j|gk^t ~d?A e$I*Nr5RԢ2ڈlB#H`zd9 B`=beH: m@!=Xp~emk]8fC?$=0-X(р hp,X` G?Ps;@XKfagR֩,X!!8 Z)o}{_.O?ZK>g`- |2f¯8ƍrO80!񀸘GAњ0e  ( !Rtc/qm|cXtG= ' ĐY{Y6ldc^ ;dQ_g?ks#r|(؇!ϩǠY"Yss/-9@? (l r?Ą}ā Pu xզAOB "BO2fgآPum}5GUD?u"bzP)An0tυa>(t ZHe8b3.5IQ}кfwg^C &1c{U;(HUg eg>4߂ǯ2D3A,%FtC}C'yMLZz-Zx#B:5X͔ X>VQV>sk|.PL*ZeRLaNE َՙlor 2}ڇzqrFBԧo]s"σP(Da0j9ߡˀ&93mVl(R A 2íqB9m}m{/Dw#C恰l@'~|cO{܋0G_ӧw?@~}=~_g~__ ?@,@ t @Ȇ?`@ @K}` 6 c@|ڂc~t((D G,@ n@ 03S%ԇsB,׳0&/l ܑ[ #Ŀ^ H,C<4IBrAP{0C`&CKֻ (80{?|@h㢀(x;9Ā~ɆD\w@'])ز{i9*PQRSTTł"o@*X!Θ*|ƸSyh'LlGwt7  0PıR% ya I82){x(85>K"Fmj\5ƪ~HZ*x8lȏB΢2ђ;wItAI\aF)wcX ؐ ~8&dPGH xEkpݸzL9-lA9_LD!7T͈ hlzw`/:9XGnI|‣ZKwhH|0Ay`tZ&k(X v| k;R~My2\d}L\ 2;9뀴1`HȼN쬯P+tX4P='1 S lH=;DX*oȆRG9܌{"KChuL" sN PJр{h|Т3ˊ čwpyhB+BA4sDЁyM0],9]$P{(N'C((p8q P0 ẃؼ \hD0g[}x. PiZA؉Y/\#ؑԻϒ cS`{xSe.HL=SMM"ɆH(]]01Eaз!́It"} TX>h*(!"TUUEV'Ӈ7#"=8 '8s86N-Ws$ͫ){d|Ҙ tЇ&$~9Mn8 јc?pU؇lP }8spjE8hnW{WE}{GX\ؾ#[(8as ZuȕI`CȚ`wX8a;t<#@7"S]ȁ8t༆ǹ ˢFi u'c?@{V 3 @t7XPLZ\ 7\[{2A]-]u-=]]]ֵ*i]؍]ٝ]ڭ]۽]]]]] ^^,^M^U1:8^^ȇY#USH¼^D?XIKlFFa@ y(`v `ˇ8\P,h䖹d)ӇFƑE!"#N%>Zǡڮݩ &]œVڂ>hk`.MH5eb4FȈw20*H96s_ndGʀWǐLs8lߜLcOUȚ* ~79+"b 3@87hwHsU䭱sH! =iȉ< ρ2}dpgC42O\q2yILWr猽0.C_Ee' yT0 Ȳb߂Ky(Kʭlحw{`I t$gn wpD g  ';JL|l(fg>w"D0F`6<(Il`]ȍQy`gc'804 Kh&k=1'EmEgD(O0|~xa9 #}萅&lAf@RϺ^m֖; h\gO͈g.Ϧ>C{n&ZMFx)~R>΄7X .o6|`6B֙TS@l %u ̎kD5zosk:O1 =O؇_gX"m(&>H,a[.qd%<˨B.f叵(:HX1w@BS}&xzX8a#PP S0[%C$9 +C"?8< ,9{87cdSs87q9# ڛxWd O-+g-s#}dWA,\t1@yn8D9X[%XAX*'SIO4I͒ QX[iXi"y;`9oF]}[yh8xlȚ T$)! AO0]ڦ}Z9o&@fLXw# }@!yR͐idt<ذxѩÙ[c/`sgyBOy?T8_y"豅8 Fyy ?zOz_zozzzzzKy zD?d ףc *#Bb͢CRBA򔽲^- |׈|D!2ʣH${V VрH,0"|P8HPΑG &k @ԇ2cЀ4sHoEK ]ݒ?o (L~XFR t ]X者}3v> ɓ/ Ggˆ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:wY1<۷O޾tɫw,(Qy ZŪkӪLSgFXJGq(oByVM?}LZ 6nԣEbwnDPO^y߾y M!t㦋p+#C;h`;7? 8 x =Mx0O=)#MP>!87;D4>0}%*=N ^ͳ D 죏) AΝ#셙*7Ȼ3D$B=J4<4M;4QK=5UȠ,/8?p1)cD9[Qg] $>yτD|Aq> k=.SQDg QIQhwts+} 4ԣO6P @D> cAtM.:馣 ń3MuΜlaG -ho#RL|<K<~z|:3p6r$~_B|?)7@4@sP`x|H>0TiBApG8p[)<83! ֝K;qD4'$K!U| )` p>я%$-16D% jv#=~cLaw X;;" K(=2~; Џ DHy<24d%qIC<0IqMGa!IH:H:"Po"tH|M#yp؁J@e:pf;IiV  f #Q{%ЇaU(3Й= 5:$L$& >m#T:iMlFġ튨<& CxhOq"&DҖr2}`#aK}:ӄMH@s(jhA1~#u8q(hj&#αYjO0"Awā8DANiRs!k 6y(KCxBTR+# Uq @AVS@=-jSղ%6'bq"8 <t(5SUUc)";<SDzO HUPAs^ZUՅ<5ZeBwF5[!(DXxn1#bQH0?D *zKͅCH;& y{ݖbd]Qy Ƀ/$jn|)(xXUPwMs* )4]ȯ0i$BpD q&OdqEǕ-ҐH 'J <՘p53soyX:'.FP K{R|, y0^#W=]CMB?+32[@MG/}P-@@@aG90'MŅQZS.ty+)Z[MWHD7P?WD_fCfmYQG` E8`h@`F (BlvN,ʼnuAźC]xB))'dFD8W5FDDZKh\C"_-A^d>P}u C<)Dĵm=\I vd ĉN.B.!Ẽ2` TG¼-6.c3&7Jġd=݉9>@,BV`T:?CL>P >xBD? 4FC02b^B>fb@F>RB9h<A6X@E8< Q܃59LcZ /XO$PP¡͝E ǁEE\4>R>,C?E8X\t@?|Da^YѠǹQbUU<E[Řt Tޛ4. 0`ԃ$&B0L6pD]B$|?=Rf&$&`&?l C]5D6̟p%gjLAdE hԃfl 9%KEHeWAL}0QD&3ݏ`&7XK-&"iD>(EZ FUBqA 圀E^B\%(0SL*ZC7Ӄj͈ :#hd@6ńs78 05B%TH }DI^bD8FF@8YnŗQT!D'8(Q@}ۥ#DCABi #1nq>d8XR__eNHmQPeՈDžR LvÝ5*jB 8%( R`B8 ;C} ):=Bu xd<'Ui?aD4Q H=T`H|STݛ*MJ]> $)LS%+kN-$<<YBX>,;@> ԃ!=VC`CH#RjC|:G21Bc\Ta@,݃%{ԃC?̅u[)%,m0CdCE=X=d%)t R<,lAD@=DVc`q<4m<mߣfiKlNub{Qy[i[lӾ]Ŧȃ"> V`NDAK߾-R~^F.jL>@6;p=dVFhU1Qv:*(F:@50zRX@\@N &@q\uRY *iQt*0FD:F0@x>D >T:3;1Jl; R( Vo X*='B/4C77C)j1pC(P.L N|C4KKt~ 4LP\17 ea(4PP5QtD+I TWU_5VgVo5WwW5XX5YY5ZZ5[[5\ǵ\5]׵]5^^k^qɖUcD` N 6JDlŀ$q` %c(d[adfo6gooŮ*;#lJ0Guq̂sf`tlwm6nNoLqìVhWCn[c@ hWDrr{EJ?LH\>0A%nh8$ZpVG>@ hx(;Q` f@S6C]Prw1xQ:ZI @2>`\Bu'D,qAF#E?;A:綏8!PfS8THwlU0YWXtēgVQ<ڄ\Ѕ]CGboWb,FcB!f0LD0R|#tŋ/=ҧ U F>̐TճD H\ \h\94K){ ;L@$g~$>t6p-EDit&DaFdNM~ƢLȝhՃ(P.݀0+e8w‹Ɏ>lkD,l»wO ';((ͣl4y}!Pu )ϟɛZL/tnE}c~M< @?}[Kh~ I$C qO{:B(0!ၾk$Ec t;%bA$O@/fD'# E0vla&>XAoE F1E'=9D<;zf'oBþ9d~ds(!Tof <\|% - 5ܐ=#Lǐ4K'XM!% :9yVcAG1 x@2 OL4{D;L<ǟdQ-zRj{zQ Ġ}PBz(#Fx`A@~@aTh"~ܳOy4 N9G/C-8@ZiEC2"|чyΙwJ8\3 QEu \NşP@![ U(k ' Ȳ9P'J7ys{`U^{5 =#Hv=A^hZyB؇ B? x3&^!";~t1i{Q=lL|'@䖃<y؞8$pQ=!Ah<2 .C(pZox(PrֲcI2> IȆ<CPٸ 0""BzX` gT:m$3I ` x%;ь8m\0`jmT"HG>$)YIK#Ɋ`z @ [x]"(@?8" c6V}8HNIdje(ULBQ`L@0ճ$ГuaNۇ( 0ѳw. >ܙnFeyGIyZ 9tTH0}1XCg-P}G<}$,[#|$`"""@0\T˹c9i($Q=eGw@IДUc8  bbHwMǐJ઀(RUA U@ -D@{tATO?8.Y~hI[ZӞVf| YՀRч@ސGd DUa\.Z+1FtuhF6Q&|TNՒzEwLcj| { t8cov~Bԅp|X!^oKQ(̡ye!!܃%AhDlt1>ŘmG:FyIg 9<{s l 錅M}{/){&CRtX0ޡDi!P!gh!6V ^ҿ#/ Gfu7) С9.Ir>ƣ x$G0[}<  csSZb6eN~\:mfUW>~L؞ (cppؘ"[J\3ΌG=Pj͸% u.+jWxCKo p=1nMbC5I  ^wh-.6E[@,zNi":< |߶- ;8pfcS@c3n@!rb Q~x0F*?cvb MB &()*R**/ƥ%lA~v`ZO!ZHю2fȃ~cX0NW!-AB*"8A R21EB"4,ல0Hj#q0a+%0! "aܡ0Dx(",cpR13Z7Bxf(5K21hX@ya\-@,ip\ĥ#.[O@c C`d86 <`\ExNd37d( @`A]:^l>Ukr b;+|m@zCҩ.$צ}ڎ^zAb:Wl:S5#bTHqhx" T?\MPƓ a["TkX1-F[[? AL!dvMu8Ō;~ 9w1tքu6(B;a: Hrg*Px`P M&{P"TpoKLT5Nډw=L{Nƴrҧ's>p z;a_܏?p g?fSO%#BA'> "Du}XՀt>"0!GXw^)&wupKQ3ZZ<_)'QQ(W[%F5!Y\updӡqkQAX[yݓɩi>نn%DoyԬp~З)X@[I0fCptІ kІTB6M(t'ep /p? qOLqcMRBNDa>!NuO<܈A#)̏<4>C_%^4P" Oq|&Q;lr]V0O72`P$f%i"`>&ed&E]$'H͕هA3*2T`rsaxp 萏Xr>* zA@T,F#PvaUzMkзxrh=f2̏ אF Ar ,}8_)$̐P}X3<,%F/PQ WPũ#Dap{Bf#@6ּ%V`ps9;H"BLX*0Ǿ0w BzvɝGh<̋Hp{ZAt52;>_R2t ` {ṽ5A'OKu=9G?d\qFI"@cl}jhZ |)LjAH@a0&FP4ΣH4Ca  g8r=yC]Y*reJZ-mpץȜC]0@h F bAYLU C"C;cEO뒏#d<'Nkvq~Ǹ˽6t݇ s{{X\WS~Bԙ|Wi͐eD&dk ø5Z{ _a STmZdG D] @&;H ԭ տO\p9l#*Rz Jlr!z LcVf`q`dq.|u|g`Ms4ssQp%VrQշ!Me!e I~fr'xSlT'1vMG!WNAXH1Ew)NbF'#~&"g6З`}wx>>z3+ }`] 'dr5 3 z qx.4p>(Gq!~/|1R8|Ȋ芯Z(GRVkfUS*`7fCvS0MH5c8BYP /r ';h LN:vp:P,& M`@08Pd3' j1*a q`fNOA(tlP?rt}5'\sZR~!"F&t]17Y rג|sNy&_Ew$'c$pyZX4&i\"@iq!"pӈ)6P4"H 0 b}q M}`.zƔ L ?{c0^i=sėF#Sw)Yx 6S&]Qjd8$y٩ɝueE[KL&EpY`O1+v籇$QbApa hp@#5/sLf4@H)Qsd /7ٰQ[b#uKF HaP>e`@71g&P,4Hឦ U=*CdA?::`ol.e0//q `c)pzpV`eJvGP .u)6U'OJp >2 p&`C`zLS R4r-` 0ܐ*'AdKj1gj6"`hu/pRRZPЁ@&% p x %SKxra jT%x 'qp A& ^5ըEʚ!ԁ]' я@-Fs↧Fz[x;A(;41+3K5keuo.*'.` 96, wB,! dVs#pLwben.SKo<ހ%H`Qˌz1%L._08`m"'F .@Pj!b% ` Q[!%FAGr cDK#rŕ 0 3iO bd`LaK:7#]Z$QQPL `Iм(PlX oQsд ˉ;LC$}dдw&^=ˉ+a$ .$}'2*\VUy ~414,2D瑴 qPr4AR|0+=AC!KcM\Rd7id!LaPQ#7 ȁ,ȃ\X:'Lȏas:Ƕ0!P0!/A4tej+]mIKMOH SMUmWY0R]_ a-Tcmgikmeo q-sM2]wy{׳} ؁-؃M؅Mm؉؋؍M׈ؑ-ٓMٕ]Ԑmٙٛٝј١-ڣMڥʠmکګڭ=|ڱ-۳M۵Fm۹ۻ۽}-Mܾ ōɭ -zm׍ٝխ 9Mm -Mm .Nn .Nn!.#N%n')+-/1.3N5n79;=?A.CNEnGIKMOQ.SNUnWY[]_a.cNengikmoq.sNunwy{}.Nn臎艮.Nn闎陮.Nn꧎ꩮ.Nn뷎빮.Nnǎɮ.Nn׎ٮ.Nn.Nn/Oo /Oo!/#O%o')+-/1/3O5o79;=?A/COEoGIKMOQ/SOUoWY[]_a/cOeogikmoq/sOuowy{}/Oo/Oo/Oo/Oo/OoǏɯ/Oo׏ٯ/Oo/OoN@ DPB >QD-^ĘQF=~RH%MDRJ-]SL5męSN=}TPEETRM>UTU^ŚUV]~VXe͞EVZmݾW\uśW^}X`… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥMFZj֭][lڵmƝ[n޽}\pōG\r͝?]tխ_Ǟ]vݽ^x͟G^zݿ_|ǟ_~0@$@D0AdA0B 'B /0C 7C?1DG$DOD1EWdE_1FgFo1GwG2H!$H#D2I%dI'2J)J+2K-K/3L1$L3D3M5dM7߄3N9礳N;3O=O?4PA%PCE4QEeQG4RI'RK/4SM7SO?5TQG%TSOE5UUWeUW_5VYgV[o5W]w嵡! ,f664^^\&&$nnljjlVVT.., ZZ\224JJL**,::<BBD""$zz|bbd>>@<08|tnt`ZLDP$(8H@htv`ľxΰжFB@p@t`ZnVlttnfH~x~x$b\`.(8Ժ<6УKNH:Dv3|{ξ5.H󗐝>F!O#VD|f> AJ@s"FPNH-EA8F;EJ@=sF)TV Y#:3( ! Ih&QlΚgzĎ;tg;A Xi衈&T| A;`@ HCڀQ<"f = ^ :ҝ'=>;GB4kuŢ&N;0&H|0F4hЅ|RD]Cm#@ +n{sl' -p;4ϐ4(Bx]0SAs>}T cȲ:kxPL#><0.o+H{s!ͣ T;*_*p0>s! w@A xw642N,7=tG'MN8AgvIM@Vg>zBd°.mP*94;#`:A>r$c1l 2(8@<;:CZat}~ţ:G?Ys1vc ;@@uc;$`]/{CGlCH!9K1p<r'Q 4npQGa˄sꇏoA>l @ x@+CzG8]vhL8 IB؀A>4`#;*S)KC@t$8:BETH4'4L0ppѦ! @&E 7Q?vJF:R"@

ԜE^Ξي $%fQq] =Zp J @ (*R .x9Mk<:6FXb쀼!g&'@F!rypJϾ}̐d*Č oϟFm@X(Rg ew`Dw)|b#O@~zTqZso(f:>w"<`kErB1bmdRRw% e6H% +0WCX|b>#-46p sņnC}|؇~0!P T?Uc !- pn=^>%0$@ DhP{V5 @pxP :Sk]0b4Xa "tdwMM&T S9=]E(a: XWAࣆԏX!527@.crY3?QJW$ё"9$Y@p>), @h.Y6y8 eZU}5zd`$p#0J*,:Yq A1,y቞m@W yve]@3']+`ՙ-zX$9ܐmϕ`i /1v0st`l>z\6py z}/05# gP:kuZG:.;J^H%  /B:֟ v%0a 7 k:qs+#zںi4e ; P #@3KM@Q,~?|֧V%00a:[bBe`qJ@p`"RT`)p /!63i(*+mAWSeJ8" sɵq q-PRx>p8Y#Zr 5"]I\oawv o\S[v{uT >XK!#LZ'XwNNK\ZG'a& h_@2qsk8%<x[{q AATZ 3=2aȄv(PT(feesџ'$ͩځeеۿa5 a:=E$ <'L "<$\&|ˆ,.!\U(\t1x)+z>wA1@/A QaZ1×ј@P’YL!` J `u2a)0`{/7h'j,m\y6ɚP3f#B r QȎ=%\_ t %O("q2E9%3<׉iR{':I扞ـ =Y<7OA@WN*$!U."'8LA (awLlV&á:d Z#Z\]ͲZB-Xnقa*±8b/$}%:r˧0Bh8@:9 V37BEFH1"N*!Q:QZ&P/1(k1$ Ќ==fR?:S7w3) 5m-[` 02w2 ׳Gׂ7.Bv]6%c.c٩L&7-9j6S$)!֯c66gikک5~z৵[= P E60ǹ# P 6R@P !~v$$DuKmv#% . }[f% LPj9:qEa$y$+1}RY|C´f:q\r^(!YB@wdQPpq N#6[OE9+LE"R'|;MC$@]rKS/ Ŷ4dO dl~݌A i5{l>HCYZ֖ǀ1sǐ4Cp-Y/F%uOZrzi q܎7k@*ĺQ+L9DbЈs>:UQcO PdPt:&5 ;LZ"p@=VVzu Q >ZUWM W RX8$?skwB0 #0Xv Zs R p\f O Q?ZVXA:iXEC(cW'}*Sd> aݽ[_aP #`Q#` 5_`bLE6P^~t;!pPx'c>H~ea%0ߢo)g:y3P f=` \!60  f A FÀ]<40;n6gP)vؗ!voF)UdK1eΤYM9uOA%ZQI.eSQNZ<+$u f'@; Zh;v4_C 5d.Vtq {{{^btsGpEJnz$/ԑ "f#p Xn+:]8q w$ t 1{޼Gu`v`WW q?zO ^j9SslJKƽC}K@`G(T"cG=KVщ@8=M3a mxCP;aDRzڠKЊmp#.GTAYyC![ c! p^!m!#8;9E-(lUך\}t1".a'HL@6dԩt/5$T0!AsR&D.q!WtZc@H? /|lCJ(BHPb ia9yNtSdg;IxXC{VUg?OT%hA :1$,yPFThE-zQfT>+=T#%iIMzRT+e`+T3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^Wo}{_Wo_s&pXP"H }̨ՂcI%6p=Uв ab(-6dd$;DD.ǒ)r ^SG=f椯8-dar%1FpT %K=y'DcgF/ V'v0hJ$5}$˛4PԐ уG CQh%`Ό\':(3Ox@Zq2d,deB&Ot}]?&PYb3[#NY"N[m=P?$a2!]S7&VCB|C1`⮣ 9dAѶ#\ށJ$oI>2&y M~!:wj+;;E `PE3ecDAĜ<@(}P/ v1>A÷$% Q:z"PFPܡ L@I`,1u.xV% /$w}0؛;Pƣ!{\Z4Y#_H 4<O9Lj|Poǝ<7 `$b?=Su)IBx#!u IÎ7X"*CڀK @$:t8 0({5| h(@|h (w@胘 h vP HЀn1 4YS}X p:=hpц"0˟w0P$ccЇ\uP 0P`x ؊v @t@+-†{h&T2d, x‘!@  ԟO4dN9}:x PpO w o9$:|B].(Ҝ'`DzmH )و_蝒ma뉓) ؊6Yu+$ P= _m`])b]&GҊt,)wpGQ IPrpG*\yC}рXn3 ]HXwXdž`M$Aa`ZvV̆H3 G2YPz`/T2Yz fN u8.v=(PUz苹"؆R8%? Z h8|u`Ek HQzE>S9Y٩q? k,RRKPžwA at&yJI'Q8(IPckPRw8  ؆K}nCgx jw`O0րƢ|*: uq$<#b PnP">FHe¥݉x u| BH^ tus}vb PvUrq08 98N `iQNᒆ!yX@"nH"d '0#4R#67#|#;2_أ>##xRBs'%t-w :M$)FIK<#Uxx:]Lp:$1`%stNB xJt( uY* v'  ub/s€zNBv))3vlsun1`tvu bycHjmowwס! hh́h_ `wxx/x?xOx_xoxxxx 88A6tTy 1yOy0@p 3{ ޖqaay N]uy0ӛ S)W0`py! [ o וSz7 VP]O02"g-3>%\bXnPQEqz(}pf `U`UG|?`ufGc:2?W ͷaw^bi8%X{Hrr?}oˏ Nqy4+˔'~dK{zSǴL}8f6[WęxQ{`v|ܱ 6I !vܦO„ {wl wl%̘2?jVoCwnl½mV'ҤJ{ S%˥RVP΂Kv`j7JE}+ڴj׶6!|3ԭݤxrlټ"ّDg% BuPU=d)Cw!wםWa.m4ԪWn5زgӮmp3\aӃ ';XXMVpec2)/($[CxVo!pt2xTI&jArh 2<moQ3YKq&JVi"Y뭹fKsT^6\.K<1[|1$K3Vpܩ*( >0ЉWcQ+O:>l*s *Y tA}0,3K#@ORyH XD6Bq3uOr d ; <T]ACmϱ'䙃DHT.Zs@dͲl3:8S~%? ;*o@?hMN=@1΂z"< Vp>-_n:Á)C] C;KS7Ap~Ff4) !Ӡ&5UuYBBtW| ^FBcH$3CHQ(Kw!1Y΃ Dl@ahi;pWR;ǩ™>0,ٜNTQxG(D}ш/с1Ƒ~с3dρ 5洡YaRԷLb*;7^(`GE)b-v32/%0)aƴM<ء@dADnE⁇xH@H(@>"3؆L$(yǎl<0S |AǙ L3k>HEP G6g [HcEG a +EvH{H QZucxOyf>3pH!X!?bD EB{LD[0UdQA< &]X3AzC'ATfPC1G(s-hPtThS>:wC~o1>mJݒ 9͉N.>2zg?鎀_M(о}IlݚNw(y6>FBFϚ:3>"âBT* D@3IILIeoӝ/&_F!`37Qӭk@=KT Qpc9o\dC0-&w8%X>.( LYhF> HaKa*S'LS.1UL0#N?SIp}<580FVl\ ;8|=~3}'%G@À `E d$ NˑI#a2€4:VR1q錌EzRz,݀}D$>v6HHT Hd 8FNjPčDьN"qAA 42Ez)vFH(= 5&;dgXD>b&oaF 𴑑/![Ij{э<%:p[G^Bn#Q͛UikiἙA}IMj9@qTp!k=Hn @HQޔ9*!tH+Z(\TO Dh~c5$ I FCʒ5͌#հF}QHk'ѓ6 $2аUd8:xs+YO; ^PWA 6> F`X BLNA[aT;X:`ԋ;W<`ü! #CFHEx)̈́7 C*Ъ|H%x6\YP@hÒ`V f6l:L5L]P Cf;^_DT L fVW)a>Ax :U:8:\bh0;LQxWH8b f>lUщqq֖VNT 6 A`p+T`$`AX:dWX;8BK|W:Z"8q4Ǒ | <9ʣ ŵĺ|DaFġC@:2Oh(zL<;J4dO,$B=5"O$:,IH+0 hKFT6{َ@JaE(1"C"DW9Eb] De. x#㉴J \ƥ\%]mDpC<6dZYdD۬AUbmY<ԂyքHE'IA,݈ʰm@c~/]=f1hUƜLPJH<>G6v:pZDl>X@(>S!)Vl %Rh;ATg}S:LXQPgQ'䌁#"fjgw`Zw _fe6Z><~4HLT(GPAdJJeMfD|Ml#,=AI&"MJ7x.6۹D[A'H@_D.pIhET.E)$np 'n ' A$&YQA0HlD[̟PTO$$ B0BT"YK2N|@鋢úqcņ~eґeՃA }nfo']h'8'|dey b=X@фi]*J:pKL;< w2ă'B{=&AV!N3 XCHT҉`0@ TaJ[FTaF4@JLa3PA*BA6|N?zE)Ap6aDCFԡ7d٭WF`lKIn!L ">Y2X^b#Z,;4"~ vDӱa-6A<+"H)\`'(Eт>?|m>7X-BL׶|H:lK6TA=8?%@A;k"~JD)ګ~m]):8pdAq]l?A;@ Fބ^Ʈ=ЦIiU݈Fn> >򊭫Ư/֯0!U"d ,&G+PK1]FCAD@@|aLf_ںCL~jg R(A7L. Hd=-S0z\\!g,>QCZ mD}tPd="=Lh;l{bFdGa[dh0 c>q1 sCR6<WhZ~NugOHPGH0Sɟf"¯EA]X @#$࠱>)$wfKLŃ nN$"rF,\X쒉2yD+ g"p:]v05)@/ۤ 8RTg2ҥ z!A\>G0}E#sZ+A89# N,2RfG:@с^v2R@|փ)"pW$STCZ50٨<>(O|K@:/ApN=$#C/A@sCúxԃPFo2:Dp LBD'>jr |Ӭ+4vϲ ` }8#M_a4Wh T> (vAlK>XX"O ;RthrO[b1vaGg߃C? MΧL6`<씱p>0ܖ X?n6L, ZZO^ڤd8S`d˷aNQԘT7rI;¶}u8x.z"x}\ld6L>wFW_9_CN`yL=`=8B=7t"l@VJ=@W PW6FRk%MDsu#DT mUgD7;BkD|VM.0Â@-uzslm9>PjK(@W ؖ{ѐ;$TQߘr0;TW 7C=RCXG=xK@g8>HHd@KO:=q;cC6tK|;`r;C̓*8wZ`dmC|{K6]!=l=xy9#b O ;ロ; ::: ֛9n=݇Fg;@*9HdATC'4tv==7H=Ķ7<:3=Q Û- AAmΣJE˷$;t*Ǟxs*>=Dh`>8yCst1N e j.s睿 t{v0HvL(GvʝzZd'x)24 6ΒZ؉jJ+JJlO%>1zz'0h6JRs͉ .rG{G( 摇UJbua,w U^]~eyeF0\7PGCA34fwT^~S8! r簒ǚ@lz9_6D5a ,:\fo5ߜ=EM?lӄ=ڳ'I|bh}j7=<9թ_襟깝6UUx`@G[ Iж :'I|۟ߟ X@ T@>)XA ^9A~!IXB)T YBpta7ñ0e2yC+P"!ːDBX"ښ8lPb(v@ ]E !#RE+ dAXG;2VH@euUmz"e;Ady#:5rd@ޡrym#<92 T@na^Ȕm #pG IӇNʠrdTH(It dC)!ͼ4YMk^l @$4,,F:Pw@'F|;8u3"qȴMoqLv$3kA)H'o2 %"O#$G" DD(o|AP|³;9X!@A%$ؔLiZS,A>Fp`6dr QRtP@̖j3ԧ(:ɢ;#P"-#>88Eёx"{@˶ֶeLjҰ:d vd7d)[ٚ@>ڱJlՙ/_ R}i[M-YZn =f5YϾv"S̗DHkX~{}l?%P ek2Wzd-BZiutёZťPAwu!ֵz^p\H@6|A9>@Wq(A(X* [Ǐ@`i,dyA<M(`hv Á%H9A'p@Xi#a g1 (*W!o}ݡxW/:\thxc2GSXe,$ rʣ@T;zdJ Ur<D)1bDC~Y+!HxAdvO(SZ cK;$g O-9@@F 5ȝ]L ')nIv`w/`:́SƤǂ8ǰ;. {nwg&; ?v @ȣՁ H|S" LLr#dgKY.>R9\`Gp8F)؆[\/H傏 <3Bsъm| ȉQC+1Dgϻ6#$!8> >#@tZ) aw$ >%}c]G%:->@0>I: 6Mҗth#+WG;u`B6!N &L\ǣ:XJ@ѿf|:A@S \_{AcL|Ԯ>P MIȆ,)C_=8qh]6T %H"K%8qn Ʃ0hJ GȋN؁:`,H,"A.|a$:aܤ< /( B 7@ bT-O @@:,Dء.*v |r  ! "<a N| @ P %< QHN$` &@ b>" P *0&"qtL 0Q& 0N@ J#ޮ pN0J$;C J.'aQ/Ƒ}(`-!O<56t! Ĉ4PlIB Q%ԁ "PɩЁ$'aD Q`")42dqQ(٠LH )QEԁA(w|Aja v zr,N  fahҤA`OBL#&gr*"R-b@Cp ` BC "**a@2"dQdЉ,;#"K$e2= `2-!Ri2eС- 0 A\Ph ڀr88׆,:i93-*6֍ H"6k! O?B>Ti.dXa*%<*:3j &!պ1ZV,CUZA'Bp:E.HB#2E )&١":+@:s,4+ bC *$1G9tM] BQk2p78UQQ>C@8~B0&I JBB< \"%;j$A P aJQT;#!bB'*1!,iͩ. T" #olWF,i|! :3Ҡ.-t4ZO At 8a8,b*YbY%jلמR O_ `!] Ar %ԩ"b;iFR? Xbrxt 5+\BhRы*PQ6T KkVkc 0vgau`2\Xb,!Ah Vr,SLc7ab{(,[@oavTb,JVV 6 >7$I B 8Hn6B ;w,@Wt&  c@bn w.aI+r_QWY/6"8Ėl"vN+Cu*bcWWwl "d&7CArVw\˪}$?AtLnX*U-Bk+؂/0:A0zdɨ@"(Oʫb%`. o)$BbOW=Vc2$rSD@"q B90;&'"V d48$8X >X FXzMx53AD k@0RoTu F06<@U%,@ = Jq:4d>dN LtN<8AEȐWCD˷>b $~f`|b\%'"S[\vɛ<" `! B _\,@(9>C"F [uс|\^H"CB3@ۿKP,K㝀V<_]ߏgMm1^᱖h} ~'+K v(7ށ:C^Ghx(K[_c^gkos^w{^臞'H !"Ƌz!(aIhI/I"Ft)!k>^]$,V*:& ($>J i u*fot@K"""i '}O]d2?j<+F [` GFMv+>-b T7!4,(OPwPH >-AL [-| Rl4LKMFpHšBӴo:tءà*y4P!CZ]|رӷ@$`lSō?96vT!䃉cdSo$|#ܱf<By9wi1E͈#x,=6B B+0pD\Tk 1AŌ;~ 9ɔ+[9͜;{ :ѤK>:լ[~ ;ٴkopGb} N_w廨X_\ԩ0>E(߽svԹ\oEds^FL)ǜs=$!b!nb&\sc`pp+BE%46wށx䙇^ǎ{7}$i'd XJ^`DZuaxAq;To'ܔAs[Jhh.h> iNJi-P;HFE'p.O|@#T@:T mM;N@Ҋ{>ey>T>1 b *:nujF @!* ym<#@ܚS D`! [.L*EֲEڢedx@ @ @ ̓1diFtJ/tN? uROMuh#7O@ UqO@v`Qbԑh1yc`n):A<\pcEafjK;ټ ɘcL.6:<c~>3Vyhm<ٺ+rO=3E-8~Kx^N=  i);W p,*p r! 9o Dc#?adMR:vMS;YTڛ`!%,ǸTqu!#NK7Çr!g LDs1?pzUb#rЃaAw 3n("(N<Ëа7T Lv0CH3bg }ܤd H=@GTrl+_ XrIBXi?Bu ,!3MZH'ʴFujwwcIl8E8P6 6قj|H)bKQvc7qA$,Ӧe]Y):b"xi @LَCȰ;s c.ٯuͺ|/!{|ɯ֊E2uI Y3a gDb1F^_v[|%B-aQ 8ytM˩MР>s |KH4@TdMYIT02BG> 4`;~=tuhq9O1oezGF Aty074ma#>հf_$}hkюޏ#3itL0Ds"{H=San%jXO5cqk 6Fm틠bpOtYމYZ7y$/OhA ul-2M,gAMG2X<KPj);׵`@yZ1i!;#q]E KS.DYTݫ 1^;ݞC87#q":f@*@"J/$H׿i!veT'H% .ZCCnFʟKԯJ>mB'z/Ϗj>4f)Ao ~XgNq og (J }h7`ǁ#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hhȉ艟(HhȊ(Hhȋ苿(HhLjɨȌ(Hh׈٨ȍݨ]⨉H""`&ghr nЎI/)X9FZo@0 8nqhTY_p T!<͑%1[Fhq  E"5\ΣvIՔDR4ѐSP# xAN $gop+Qq+dA 4 q}995YYC񗖦AB`M,$I!!- كi@> ReT2 R!図TvW)c  řiAIG7ٛ"I:($zrPfyBGEqI1[LA] qp %8*9z#a `֦Nmp!0Ҏ"J&*1]>e 1?UBP3j2AdDaHL'*0DjӤ# kP*@s6D6j":Mt-X ӥJQ` *ʢ. DB ZQeiBB~"`qmNa0@ڦ F %q+*-0iJZF9=*ʨCz qKZl!s_J  6u6bfDJY:/Zjʫ[;`?T` ~@fK'sR' <7c3>rFRp#K'@5|3 p7"Ā <WWu>A'r!&0aP0ij#J˴ %:P?P#F%"($EXrR&1% ##Hbe$g+j˶pIд&j&$U7W+$h 1@bƔlduu_#'O!n WFo. \ KbOb{"""ؑ |Vp;',KI_T+Na0!P b P4aς.Ȭ!|~<b+b3B–,$/+,+P+ %| )@LzɆfcM-0=Fl@XQYsS7<d7?U?3 |?$$"ӏP 0Z40e?#i>#P#7@# `ؔc{7m:ĭnO7jzDpuZLhE>6ش`U`I?X:>mFy#ۓaEΘ6`MV-*l5=E=c^c!Cq M؊Q1%~gM0Iӳԓ`G`γE|k7U e>(@1Ngw{QIUG0tAC_dI.>C~qEOEϪ-l)czG"G~.z걎nIh:H5*U<$-4? 2 ޗ  B{HkE>ER3uusv8u } 2dEGrq^ [n?N=X|Q,B0dfR 0I^IBH11T+5,-DWN q=! 7(7_ u{S>^+iŚQ!;S$E xB@0M$TJx" ~V:[S:ap RzS5İV@2k` yʴ[;9OOsI"QQX`DA4F8Squ ̠5MiQN_,i"ɤ8x* @ޱ$?P(1b}Epݼؽ+Ȏw 1mdQ"{ ޫ; iȷ͈`Ã<}>h> 〮AN]%N]X .UD-"uu @u% BBjO| jC"*a[8QlS"6 #H$*ا7 {|8(\10$i?,<mqyп ǟg 1" 8}QIܱ AtEFi1I@cg>2 D`MgR8'JvDB  A) HpmJpO:tJ TQ `g 4FJv&uΓn;v*xajZ'-vI&Z}H]܁08^}7  bMpzKejw UqwA<饛~a_7u.(X؇BM{\ $`'!xчbF؇۸<; Gm@ŽG_X\Af%ϱ {xA@Z1w"P \ ǎe*$   ~@D4}&@MRA|9CQ6V̀@NL8F2ьgDcոF6эʓ A+< 0#1Q?v;PhACNju 8`|}Co^R C(1JһxYHiȰG= U@hL #t6}JU@F~{ p|˯Ö T$#ȕc&bQkf3!*[J7M*@?bA%P,XɭaRW>h"N7FS'd*3ҖpGXm #$Rv 4Dh%>lz`8`MjVWʯL5,P*\O>쁈'x@xY4 'jzd[7)# vL@Bmd(gEіkMqc[M|yj P7Q1lCi-JMJj=F׽o|;_%IP>IT4#G$4a6~] 8@Jߏ /Q)E΁<@"^ 0ېїm0!8Qb fDA|G$r#G D`m(6 |C@ōm SuMO (&zIx|ւ'Hr ¶"&PhAwI 'GyU2pČbxMPβC %,wXΟDhwhn,E](Aq{ ѯO"' ` m>cX>t{j s3g*"pO43p8y{Ri!۪( ܯ}ةNTG 3\,0o}Mc`Yಗ,y'l=f0mԇf#2q}Ӥ5 j3p@P0G#{.8:|zֵuw_{طnyI6zs}l{>ww{.uw.G|x7z'%_Od|5ywzғQzַ}e?{}u{~?|G~|7χ~?}W~}w_;a?~G?@߀}A"r:_$4|#E:؀;zop.P@倪@yX@$x̺ <*Ҏ }tNx][49C9 k݈ȇ׍]5IK1tP۲D HV}(ݘ%EUc&6FVfv &6FVfv !&"6#F$V%f&v'()*+,-./01&263F4V5f6v789:;<=vy{3|84BCFv}M"fErJ"GMޗ 5\1a8iK8JW etPz]EFpA}P!O} AT6@f(v^ivȿp_.OaYKlY视jg}0lS&{v 8nEby뱶"p9َ5GK5jt i:i9:ˍ6l"hgluANu U譁ȀTjt`z.|ltp}Ї˾ĖvR6pic0HN>&m 7#mx(@N H  XGa醣df{ (O%s{O!l&&Fض f؈`  ~0;)v,8Iiq 'd p )~)[n'ۇ#ڢۗ0ԡ .L 7#G9ꪖ؇yp Z{y nK Я{ ^)+-rpMTn^ʆw`loyCI#Ar|r҈ͱtM$gFA w`'*i( |( E9'2{tNO MOIq7x? E# Btu,A"pb7+ *t(ѢFƜO;NC**n]u+׮^ +v,ٲfϢMv-۶nF}+w.ݺvͫw/߾~,x0yNx1ƎC,y2ʖ/cάy3Ξ?-z4ҦONz5֮_-{6ڶoέ{7޾.|8Ə#O|9ΟC.}:֯cϮ};޿/~<ϣO~=Ï/>ϯ?X" 2ؠBRXbrء#X'+آ/3X7☣;أ?CYG"K2٤OBSRYWb[r٥_cYgk٦osYwh"C'űT4XBTCiCuzS>*jeX>p>ܰ+O`Ŕ; V@ъ*H 1 ;D*[QGAp mRu.24;TGnJ6d/M".Y 6E?ܨ 3,쌀1N="Հ-N6M !u4*D T=H+rE%TBɿ R;3C=/;@D4FJ$tJLMPd4ҐaU<p# ]IBH}PmrͭIk`t0AD}WGB-ACyQ ;>k8atN u5q;ŎSٿQ~J;I07_6 E:3y-|R!ң;P\BVK*G4>+"s_H8%L`'Z!%\*hAZ}FPؑwTq"'L [/}a#8pZ @1Da*. 6: $C,w/pHБka#!IUlt#B D0lC)RFHw<2B"%x`ܦ yX9tH[]6X1$R x#M2LۈxX#6Loӗ*Ui72H7d*DH(~VĖ!tBn$(L26؄TQHΒ$8bw2AjxF1CYF:!C D\0R=  ܃P :1A|H@@(}-.P Q|@AkrvOpAu<`5=Impc+3xq_:2cȅ 'zXuCQ  [a:,Pi`Ńf9k+REB( X6!=o R)d1lC=CD {#Z&"py"#s/ \=p;J `~Qεlt%fuh۱Vw(6Em[z=`yϛ8rXCxk^o/#`@mHp!rcgb%݃LwM HqhIl# +[֫Ubx.wM50@G^)03>NpLuT >x wlC32VS:9Tjf :(PM͝ QԤeG1 xV EG!!{"Ji .F nc 647e3>nz*GB&aaF샎BV&Gx,စ o u:{{4.w ~J$xj_Nb׹,KgFm!xNǑMsqv"Fz4\-;0tdAWz#$OD;A H[j `b;G>WaGIaި$ 1gKJC+i@Akv!pGq +Gt6 Cė~١?̻CUe&v>*y=ɢ#\Ft,7'(_.V0D 1@6$;H`;<]լB4@!_D;.xu U&_|܈A8 b Uq6A1:Q韫 [ W2pU 6Dx>@.?a> ?*D$m! AM2H 7z#8f`,6%u:%B&Bc3>@=0E"CX)!P*#9CDJ$aI#m˰CLE# ˻`@2I~R6G|.4RG#:x7,_=0@60& 1\v%."D^e_>dT=C=4_BP2>X@;h?S Y@i?p@U1$:>(ZTRf_hM CYgB6V$x&gn_*ùSmE>7Dfv:#y^bOpaTPs>'t&}&cWEwZB\Bg5YJ  X>^ꧺ(BH x=h? @A;D8<"gC22C~&C%$iFl;>iY!p"DR*iQe3RI@dh\hUB؀.<4ġCL'C=;g ;ln;]E:tU;@A 3WNDÒƃ 0E#:!CL=2Dp\LjThj<;0A$} h 9PƅU)MVVn(OXqUMEdYpq62DN!~~۵>)Bh+:P)LMQ&$:lq|kDkA >TEL;\C&c>C{Ŕ':ABp:C-HCrOB2Ľ*R;Ďqb,:A#DL@X@EŒWJ7f<:EL p$PT(mD,}eT@(Nz uA8;8@\0jmg_^qV$70# 蚝tyJ;A0; +o6_>DPX >d JlGn=_GDDЊ D>DEBzE/6q#hvl**D.9$a y¯dbCh%ԯ $Bn\EM:6ZDM@E %#0EL%qqp-?Ԋ"DCVM O mgRV B@@tD=B(Gbb*G1`<T[pY@B@|Y v; K@pF@HL6BS |w[CD> =;lo=JUFĭ"m#1uc<<gw (p {X<@rX;dfum@#QD<FH:HI1:rϲ6,ogCwLHTt- @ @%;2$k ۫l;O*278+[k)u3ڬE;C .90U!su33CsEGyZzj52>LDe= C,Kߐ:W>C#|t@b(>#,&c+Dwww$!:A=2A21([I j:m m m[ Q3C,U|",x;}- |ȇq:7p`lgϟA=tiӧQVukp¾{ 7nF¾w;]I .7bdC;;bC{V_qHu{]_g痭m >v>C}缑<`g"KvȨ"q3y0 .ه qa0 q R!,#LR%k2 @{` ܑ!(28Dzdʵpuz";|i#**EmlSO@dxpu6D| O|x`S0 hK$I7)xAvn ^`rTikVmmɩ;* tB": g:xVtDp[թGFKV≙jJJ @2`0gU (&v2r [?i}# .ĨF|\q (NZ饙n駡h`VZwbXѱ BVEj)vDhRS?%@@,y2v|l]wƁ#(8FW\iq}IS!-=6Bw(m9a>GɿDQL`@m걀qɏ:w:z6>#GiJ | +1hFB BkLpӡk_CT> nAAJGCp >HE.t#ALQ$ka\VrsYHGx;`r$a&$&QwlIȷX{$7QyGJ*.   -cNq4' $ _<Ŏ2ŐKV !LC=EB{lCdZT~ppI6pZtP@=:{[TO]@. P"9 @ @d!x*y,N Ww| @*,C p&}acϘ5Bm`U9ޘE6򑑜d%/%&,Xd򕱜e-o]%@Ie1e6ќMmvg9ϙug=}hAЅ6hE/эv!6Gmґ^R!Koӝ4|*M EB]˵ԋ#ק:ֵa2(B'. @DEzPEe4Z&NaPHP YN,@I@ADE0!IV"/$"!/:N1>b&c,z\az"@:K*C`"E^)FVfkbC4oq@0Q"6mji'N /P`-C~ F!B!0"kmBnl@ơ0":`<"Jl##`mt%2A%@u/"Z0$M$%G #a$ NGNd!RQU" !<jArPe *$# %< $&AzT"6 hDb`ժ+/rI$@Y0:|g#>#B"FС/! a<T2&ꅌP+!S0/Kء!됈Czr d8rUE<5hS[7=vF4Vo?!Cw~x}p>^C, F@e6QKZau >%TFTNo7xx/'M*KޡNbpdTp!.:{l PKPIٓ %+?iԎAr!At,xK=yp$:z E68"/С%yad7#8EEݡ-@Mf Fj*+F<#t?aF/DQJChb?J$T!:l:GrGe3$nt|3kƥ,@*-n@0Oil !R2=})7:!=1$>L q:I1 vbC# >DF2d\<[ ^BÑq6$ndrKmg{T} !~9Fx FIק}.Az)0I;D:06ltßQ bd0SROQT!,$x`,v(|AܡBO[!@`ag6u5RS,(3P劲aRږ}(o'#@>'bۨ_yfhZCFxW<،,l@@ T/>  2>f!VV:vM:|q'FYjt ju#53ZrC#%ܱ}A"Ug%uTRuHA "SMa_O6Ža_Qmb#K"7("vF,jQUɩ|X$>~!>%~)-1>5~9jI>j;MI-efbP-2lYmO>u>@ p-vxOp(Yۚ~|^C"n8Y(ntQs3u#%V$¾_#L U~$5@Yx7V+iP41>|O,d% }Դ$#} h}K>MЇ/|5o#g`IU.F\c";>H8aP<"}/գoo8C(nʂq?O N1*yߘnaP1%ޘ NܹCǰÇ 1[pzsOCԹvBaWG1 ɮzDdѷc K8԰qD "Tџ;vjʵׯ`ÊKٳhӪe1}SbzDIw LÈ+^̸ǐ#KL˘3k̹ϠC#{0Pp/C ۠):,`HA@\3Ё98;}dIStxZjt- QXAstU0բ;[3 iXi=B% Sp uZgv ($h(,{]W<ß; RV 3^X ZAq/  -;dX;<4;14Q d># U> p襘f馜v駠*ꨤ%i;6NOKXSFCckRtUt3UB ;Tj'6T=5ĎӎC3>EhhQZ*,P<>YS' 7GDY2d> Pg>D>?`E Q Ƞ 陱ScQ#hO,?G?pS' N>Y诸oS\+זk;AATŎ> tmx|38Oԕ4s_>-LZ ^#71d>DIOWRyRM:HfސU6$mVe(KN}nؽNj]O^#'7Ѓf3+U7W;w \׊D7n%:?U6pCܳMmf*`ǒR n!# }8`/ PC P|.zd ObGl E^2e(L WPSE3K;(\E7G>b! ;`\/0InW3i:lC!pBgoekq>P1v! =q @&@%0= X ;qk`V((JNz (GiU1+6Z 8HQt\Ғ*}4k7d+;QլO@#w!(EQ'!mbfCuz4 T<@wC;P̬Q@ )pi!Ǽ6\>pІ:D'JъzHE7юz HGB#{$MJWҖ0)db"Ӛ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲ~f Zk:w8 p\zS@¡ֺNƮxMD[胰e%ՕGǣd'Kʺ^iG=qx*@>Bς,@>^rE,z?͕cy>\ϧl-:yڦCipWxI8ٙn+ $Cc pM4>- 3"LMWHK0`u`[nZl21 \o$ܯh/Wdxvd2gLHl VT,r%_D V(^3WhO\{`gr?*~E!(aMS!"`bt X_`-tX"JB^4WQ/ 0l }C2a4,X>4=U>р>3"w{#9%q5ry<>AQרx%QLz቙8Vl#CVҒKt~C&6I |eLH8%2MxIP7f| 63pf$*ƒޑf5s2yp xIN0%2>PlH|'=IPR$9CR$$kVUG .N_b_|xq[ށVy#'6&2!$I+Yr->$(|&Oa : y#DeVbA]zr a'3ېHܐNa!%S3 p#\]#H&Bam1kw(Q'w'b$ ~BEovn5'3R$ll؆bO^azxLqL-OW1\pQ#]* /- p K> ~N!_aIܠ E,WvkVd1**z ܠ3H2ajwG?VY8x$U8c!$`0 KHUҨ^wyrL^2#P$f]`H2N`p4I4z@F gB1eROp  J?IzEw)q!FDC!¥G50qF%hD7jA.:Y&r((pgT%tt0Dw6o#35tCEOBmgFBʄJqT67 vrG}t4RTaQOIBA(P` `!ڪT@  @MR>PK^!O,XPut2qE)D1C*'QĐxz@!`L%1mqj2bAL(+ Lh4tH:/%=P4 ?#pPP :%02W:5:b&< %D[F+Y4{JL۴_fR;T[V{XZ\۵^`b;d[f{hjl۔mmr˴kXzkXs["շ5}ؚ$@E\K"u~; Q j^_!`[ۆy aۓ`L:b[`qkc0{3F# 0Y.p i6vzp4/V䆼gannZ!K3i[;U.#v!rdg[;q1 Ga_XW+lwow{1w6]*[ 1s2;t+2&Z"W~=a~r}s!\<\FUP  O:|$-{4;4rL ZY(G̑ac)]A)lD5 vxM#8,(0ǩn|I/0H0I9Ȏ1! -(m3߂,lqGNLʝZ9Nʊ쀡%I=  OB ^T pW7Hk GHd5Q6~tH˔H4IQTO,)"KܬF^7KF̊tX}Y wtOI 5P `&֔Qugj5 @֐aR)v}׋ᇆxm;ׂ=-E1~M،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞjKp ܻ@p%ڠڰyXe{v7ufB-8Y7}5$ + =\ҽ jWfܕYYڀ>!hܠ U0u$O+ %wgp Ƥ^㹐7^s+W1XD{= !'<]=ve -wltdאۈԌQzӾI'Cl]tjޛ A㾄m5Bqw]{$4rNwm8M9]=u7_ ߫ǠJeϦ͒b1C|d;Vwo8.ymѥO^uٵowGosϝ:3ݓ Q4 Ok83b3Hw6b@?ܰb(1@##wF@'}Hu|'G%r} SP,ڢcag:'SrIݶAtI@B*IʒI0sL24L4TsM6v1#1#{6O# JL AtTgC `%,7"@Cǂ{c<Ԩv(@݁|܁ѠB@SbԾA4#@-P7/4*I 4U ZXpw\r5\tUwݟlOt8GF|^Rq 1v1=ՠSݨvS19`@Cwǝ 4rx@vHwQ)N;Ѱ}L# Vx#*Gvh&g " v$hUQ|`16{ivm{nf<9?}9>pc$L# 7 ! ԑ)(  U  Ix`tI/1 8 p٦ɇ=F?^5H9f#9\^쪃h3BDꁜD`G&FGrY˕]ɦ#.x >ÇlgnO54rAne6AR~`-xA fPlx#Bzfŀg} B0a>(ƎeGy>Ѕ"hQ ;p-vT@v!V 2`z DeCG PvBDq6҇C* F@{>C` N -m8x&pqnZmX 7TFpˀGRde+]JXƲ:$P*8PE|JR$f1yLd&Sd'P=&,, 3MpS$g99AtmQ$g=yO|S'(fg? zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3 IAE cw%'RFSUC%jQU91RUBC4`$A,a3$`hTUc%kYᆁ 8Aj%$"O$?&QNYgCelcXRo@Q Ylؒ-A&>0j@ K& F8@WLZV5(ʑZ#H:D@"Ii*$xx$q@(;x]WE<Fo(`b&i`~ʒpމG7[[W&p[De? xgh@ гt*z>5x/~9&:1Ev#!B,wQ Ggbod(GYMM qa5)>Ԛ_e-#X; ^^t# *f+g9>X/ )*X}n؁L:$7p<S\2s=y73L~1iqD5)Ft uPE,~P Jy! $"Lё k?ԡ3_ӧ~L˾;LrDC=:K)m^`/ CIpƟgD^G>HIzЇzȽ\@lJ9쫡ɜAuw1yByPz9࢔&+!,!9 3 !cӈpGdp@h+?'B,}SA-{"l P+,R $3?w`jš3k04#<2B9 $HH$XvŽxu wHDLDML7\%;wp nDS VCЀ 9 @-l䀌|II>Ic / <ci/ h|IJP+R!̿0Ȭi0P + 侖(Z-Jˑ(( Ktr#5 B4:؀=lې|wI`8{41T0}(Lv8 H}XLQ_9@R 20zSv.\N4}縡T R8@ʟwx9 p YI  \8P1N䬨N8Ks42KP uP8dSBi!؇RHxG2 [@  oQ6f|n@l9 Q1\Ia1 w -RJ[61:HNP6mSBD@9N;;))[vXJӝTCTJ+ۇIeyH䊠s;<wSN|u8 ;>PD XO7U\ŭȢ )8 ! (B}m!y9K xxsE1A"_m8 | \W|](  }-b勼`zB U8Јۈm =Ҍ$p%q=Q=(A, x5WYSǰh8B$W^18 0zL<;шgʮ{H$rӐ] 2ۣj]@}yZm[%p @#n vt`aBي0# :!٤P?iٞ8aA`p ̰Yш=8=7̼ #a}[]R9=dq{x@|`XIÂ'؞ǩRt (Ž{wPx1A h| }0 x@E^Օh^se F5T$^\BЃ +]`({ɍy ( ؆M6+lH YYu^2瓹Nk6y D R M(I&ݞNxx{@DEb;@{`[ >c4nKc6nc7;7c:cZc;c=Z0>c@dAdB.dC>dDNdE^dFndG~dHdIY{dKdL>LeQfʅy(SPeV+@| We[eݍlĈ`fw܉beg~|(awؚ+m-@((n Pfs>Z` X3^*zy rFgS]{Aդ,1ӇOA*_xܤ_\hlH}舞Rt&˥QD0ذx`M]P*AwЅ0Սi:tH|A|ej^@Ⓟ۱tyfP=;k"&,42_(}xc(1;/233b:92^OA<ЀP|MYj5JSNmծ>(`XvR.R]V߃+hb5WC')} 8=Kc(c4"5$f;:nh5!I鄮01~o<؀'m:9Tja.+% FrO/VX=s|o8?% z55_%[ l,h „ 2l!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:w9]B/bWςJ2m)ԨRRj*֬Zr+ذbǒ-k,ڴjײm-ܸrҭk.޼z/.l0Ċ3n1Ȓ'Sl2̚7s3h*cn>>k.ظUbp,_l3$0q{WҧSn.v#:wsNr"|Hu}{4Ʃx,M {I[xHP<!PZ66cA0\[3>NPAHFkvC@=\f#m/">PZ=&yH 7'q9ԃf~W>|NbPx?DpKd[6؃A!Í>tPZO6;p<+Yk5ׇs#'j>4:"# Dp˽vd=W,AXA︃TA0B}D;A/+ 'y -CiW+;LpCB(n{EAOZ\:<0`;i+գ6}y3=# AW!5?fs}BNPl k#6uh4i  :6`2Ω'a3H}HKrCO.w) ؇Bc["@kNؿE2|MȄH{ uPNG' %:25 AFYSXʔH!`JQPIxJc]B\ ʉq DtĎAP>xAlyinz6zu1(p D4@(`$5[;D`^"AO~bSf86JiR#k4`ԥVJSBğX2j,Ӗ6؄TQNb4!kReM5wJ%z$:Iu txߓRiH=-j+2ma4^#v 1cG,v\J ё}X4`Aۖ& moW \b-;f".@["d s#B A@%|, t6[ o_ h؆/c#P:rH@x' PuXՀ#/6 yH"&q "gl9þx;`ni"Qk|c<9옲HP7*e)+X2q b79稡 *8G cC"ý'gi#|uB#﷿daU`8qc &K 1؞Qnxxs>6zft +;@[ W3 8P`Óp!}CloD~-U!!depy wB~ʩAzt_! (E$K1b}p#@i@EmD!)lMSxUYgTpFCuT ++GvP:L g[$[|1t )7븐=FaalKTϨ\uV,h1n=@>7}tW;@XJ2Ȏ܀Hʐ;~ `MīW>LMB8Q1<|CDv});`@k`[C8N=ԃ`JA,.DT샭AQ>CB%f>&y7``Cd7;   &)G-U%":HX 8b;0 9j BAE *n^ABh= kPpC; sLC-8A@'%m**d%#8$ެQ`=hG[iLh-3"ڜrp> ]ChKL̄Mp›,!{%(!pCFT D&En;d<6#$NA|fmȣAAM-'_i -7xB| 0@h"C ̩GD SC H0y%,G !D!%1CQ8"]֥]%^Vk1ij`,!_.j0rQ>ҽaęwl;0@=1Xp(A;XAHXcwmʹ$>ԛ* XH*D̠A|?`¡Cpb=ԏ}ikHno"BL;8gKZArDlCTv>wx8D"CCD呠g4@3&&;X@>Q@kAC&;|^܃C=ef Y;4B`m41@@kH$sen_ N\qqCD$:$""xa=%&ėF*}P \ '>Ĕ"HʪJF.DIGk$:@mu!^ A Wcʩ;B"C@: *!BEYT r :iKМXBij,$ґ, E=>`,V}U>( Čuj[Hx6%A,v(r:t@{llr*B8 ḽ-IM Ym@A"daߝlr;MvE(oP赯4_KDf8X_D;0C!bBi|bNs>@)Fi<6: h64BD@T| ޡQW`:&jP*pKCnAVCp1$mC9q;PXTD=7{~͋O`;GIúbFtiU"{'/x*ʧp"-Hq>0E[q&XNQ0W28ۄ84̺l}8fgx8XLH3vx68^ 9?9GO9W_9go9w99999XjI89EEFmnT`k9ODѠr/:W9lGw<ֈyNCEWEz(lF\zwvdCۅ >XC0Ԋ4ZA ëDȎH 7LC9F(a9Pl@A+xrR_{ITY*VȁC(ny=it@>0mF , "&MLJtdʦP<ʨzgBԣ D PT˷8 XsC|, {HG˸lD KK F(u@&=EPV,@/2p{7XjK{1e;t=B6t@@!g< ˝ܔEp@p=<͔ > 3 Ҹ4Y 8ȗW 1*˗PI5DCG1| .O4xaB .bDRplkCu6\l8 e1;Wp޹w:F; D @o!p΀I[vlXcɖ5{mZkٶun\sֵ{o^nm{Dl~LZvJF (Xݻ[9 Pp27:nƿk;nKe;O0ا!{isbEɷ>d>6c ZϟAnc1{"P,]81(ARDb/:/ﹰ)H5Π>k0pG:pڸg5tCpGrg&N>@ "uܑ} "<$kCz1ށ ԡ! $4Pa2`I@m<S )ƫͦJ iZ˭&܇#vlB' |&)U.A9w*0*8cN-Aқxaw(8Q(O!= zQ?+IЧLѧn}"sv9Z uQK}|dݧزܲч0ШN йة* T&`wa "Mb @|8C"}y@4\)Wb aT WU܂BI+"k'1“{hDGvF^`3ه; ѧzbMd, (Aj{Uޛpڈ!FDXёX :ٹWT@ûdž   "`E{)A i9#4]St5|Qǝe\˲Am\@4H ^磟 JޤxbeǯcP6| EꁢXZ @ U>hbaǜ9`m^IXa\]p$;@@6U8@nC;; :X S=H $`AwD ;fB籣>cy0RM5UA;P@RTBGy>x6^`48j3t ѰU17.t$7 `RG}+<ȂjϩN+ALU - &=`Y6`l,[\Ur\mQn $XAM6l#Zn@a(W $@|#%Jޑw0CJp"iOmFPA6x!=ݑt|`D:Q9C:X쐓z N oD@$_ 0C48(1Aܸz}_Ba|%n ƕnCZttԢ~y: _APfX 9'x,P2)#R КW ɢWuH2Ҏ^%ȡ6| PD=.fxҹVlg?h9BlȀ7Y%:|^GdAAN$twSt<` 83ppCPŖg(JH(\%.D>#e<顜UhCF|v]}H}c҇:@009No]O ۨ&njC::{:' C}SB7z<@apE?>d#AK;~euYML1}@JJ ⛌#X$t N"f; lcEF L̇7 ±7r_s#_|WV*5j78$Ͷ! At}S/;[tpހZ sBa]Y0pl)V B0!d"h+u&R-|:|b`h& Lbkg06ܯ"p!t6!ƤpYdMaL""&^ xBPD0#al0 %0!. Axb:NC!?Ԥ H"AgjTkdl@?NV[_c2F" *`F J@i$ 8AOb^OCRB Cy P"4(r.!(> &k*+(L4ng!$eDD,<a@-!:!(b2c!L)fpp* `º !blY@ L#`7$M|m I$c  B"f TXBބ!@D l $1ohBa) `@r12 bZBe/R///٢//JKV\fVeCܡd3*`4J< i .4#aB^!.{RiTᆴ1)Ũ|*k!a c29!|9j([4ܡ&lF“.@r! @a1!b^ ! b; 1Eb F2%h3q9qB+ 3 ?`, (F܁.F.'s!2`b$@B@b nB>!sCBbr!(`D,9@R?P96@$@wS3%")Ata- B=3#&-G@MMNI@J|+j1%FKA L&F  EVء j -@JrkBw2ab $)pqWqn'!N6(!."q!`LӰAҹg]OP!TAmm"h۱k:)P"EԶ/;[Mb8`g8" ĸb0`4ڀ!u1ۯY˻B/3Pq\*jK.%`@*@.%4", ˾*$ "ųaPQ5*{'F0EtjUA.AbGt(N"PBt%`B&hqB'xbԃRb76*+x Bp =C "434+j: ɰk6^OlRpx7D nu,:L-> d+4@4D⣚Y>Éh+"94)qR'CLg* mGJo _;!?E\u;:'i?)3 "I4F=""$(B.&C"^}`zB.ad+nDz:(/RSF@rUcȲD;G;ছIq 8`8Q X`B Ȏ :XP≣N>Ht%d.e 9+!NWUUD;!uuU UܵUW3iyCUWeP^%Bb"D&BlesUIP^TgILE(:ڢPٚ;"2ur!4jj kJkފLlcTDkIPVذ$H$U : ')Gh.:T $(^H{t,;ƴ6>!z >#ABP6>LVYBcA 쌠A\d#17β>O,ܳOHSnQ1䒍:hR Ce#>3p@f1˒A#wqdVP(s?aвlpPH 7v]y;'&a?#d6DnwJwAzjB[+-FDlLSR]Il|"D$f>yʣC;mAōZCIS1l6s`x#!6{BJ x@Jp/ jp`_X @%HBBXCr,lvpz#8!BRƅ S}i%ivF 7[7pVFxiYHB@-%@d!KW܃ @!#Yْ3vH@>NGB3+!(;HHt0tz%]Ј4tI,@$!+WURDJ(#W< @V؀;af";|*S 9I G d*K[.9w%dG1tLdL8A @ "]A툨@2ǤD5OIsfr2B5(PE(Jm(j&]I %eCꐇ)-7Jїns8DafD/G0;լju\W ְvucv҉  bPnP@`}t!?Mεw:P>Lx3]'A=@R6d_}>$vLVyX px`ZT;TX@ʒNX>P:b=LjԵz|:^ODtu]فW7#B!x_-Qô谀,t)nuyRC(2.}͜dD?@ Sޠh dÈR D|eLNKa@^aQ6,Ro$vlcV(EI;A/D Nٻ^׃oL> 3a`p@؆ +!|aV4ڇl:U`X HKzҔ/Mn#_a 3(V>8ȩ@`Q1yQ4qNh:$:`jԇ:*StxR-$JʤvhϘ@Hv1=(ߕeBຄ <_#G]^ImZ$2/GR3ˮB!mght(#A0' p#pPR~9v(Ύ ~PV[rBt-^8xS6y: /Vf \YgeytZwuZ!r6I-"9dlxh79/k~c^$lSH iJ-.@0HP^>f0x$sGuŐPgaҒiT2IA'e'ČC7vy 'U\̺ KF⑨0Y%?m7#&@NW5_qI#r_W{`X~` tf GfS`)kP nIfyS,Re\pk oCr!!8{!v2W QW]X{eQ  b${I4{saxJ18x.Q`q x0cyhiDt2#h j!QP) PmAMr=wx ĥ.I8%YXf{ Ut3Qf$pq e+QpQZq 1_{nor02Lߔ Fn.C_ ֦ ! wx dvJ@id6e[>憌%&i%c*^'Ht.ȋ'9VP)qSH 2`cTTנ0GhXw谊HtY3-?nr U(C A*!3L>mɘ阏 8AVz[WquWd!1 H9P) ?`z s O#Wc0% A W%Ft` 騏Xn&   Dډ ppbPqVp$`.$u^g5! q-sa~A] P /! 6 3coy+ jqV@bu<'?3&JT.Gcqr~cc]2u 3%*`!c<6e y~萛0țaYL5[(GY Y'9DP lZ^XP]'3Zti9c}VY jPd&&2†&(!0BDʫ a RBu2T`ڣpgapڥ[/f(!Y`?`#6(ZDYjD0fd5.1ڊS|04cI஁-Q p\DU@gFH EV`%zu+Q rLX`[P`/@z 4m!a 1O Tg wePS5k$qq BDDwmop3 ^:[_a@ǀpO ID3S>֩G (;,6)k1:;{v,60* }<@) p7{{0QP{zʚj,ZcrI oJ([U7?'/Ûz  *K ZYK'|9@9`oP *gCP&VUJF`qB5n+B`15_DgS85_P9VYBx@"!b{Z\p{ ߆ #U{26>K `3PA W \ԕ "$@ L? `f22nI@Oad +#\'#pPRW-@(Ѷ ,D3&BHE)@)эȵ$W O Q-SOѱT-WRvJ!p, *e!?L"p_Pty{}׏ = */} NXկ+sG%dPYD6چکګڭAx} ֨2I  NHG-MmǍ]L/PM?;ҍ٭ -Mm -]=ߔ-Nn  . Ny!.#N%n'n +-/1N5n79n3=?A.CnGIK>AEOQ.SN0UY[0~]a.cNeik}mq.sN uy{v}.N煎艮5q.N闎陮[nꡞ.n꧎Nꯞ߫Nn뷎빮.Nnǎɮ.Nn׎ٮ.Nn.Nn/Oo /Oo!/#O%o')+-/1/3O5o79;=?A/COEoGIKMOQ/SOUoWY[]_a/cOeogikmoq/sOuowy{}/Oo/Oo/Oo/Oo/OoǏɯ/Oo׏ٯ/Oo/OoN@ DPB >QD-^ĘQF=~RH%MDRJ-]SL5męSN=}TPEETRM>UTU^ŚUV]~VXe͞EVZmݾW\uśW^}X`… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥMFZj֭][lڵmƝ[n޽}\pōG\r͝?]tխ_Ǟ]vݽ^x͟G^zݿ_|ǟ_~0@$@D0AdA0B 'B /0C 7C?1DG$DOD1EWdE_1FgFo1GwG2H!$H#D2I%dI'2J)J+2K-K/3L1$L3D3M5dM7߄3N9礳N;3O=O?4PA%PCE4QEeQG4RI'RK/4SM7SO?5TQG%TSOE5UUWeUW_5VYgV[o5W]wW_6Xa%XcE6YeeYg6ZiZk6[m[o7\q%\sE7]ue]w߅7^y祷^{7_}_8`&`F8afa8b'b/8c7c?9dG&dOF9eWfe_9fgfo9gwg:h&hF:ifi:jj:kk;l&lF;mfm߆;n离n;oox'x G>y75 ! ,fBBD^^\jjlnnl&&$..,VVT 224JJLZZ\**,::<zz|bbd""$>>@~ΰ<6УKNH:aDv3|{Wi˟}>|ϑ6w/s"N%t`Fc<#G߅fᆳ:!>d)QXA.cQ4hЍ 3;@ :6&HxFAHn[SdqÎ%$-ښACQ:`,Pp<ϑhAx>pK~OKN=tPH@Z|Oe ϲ,@@t>H,:3,2D6pX86+@;>Cb(" C@)=sںM< @BC;F#]MhE@Iу2.Pψ4:/j :p"Sv=9};7B\ă7TOl{ܐ::' >? C=OD/Q |%"~LZ#!{$$P |C77 +1AzP  {$uhG2өD ,@CY[z2 BP<q#=q t $ "J>H!IHA?SrI!Ƀ>,`U%@ass!wp聒'XFđ$2K@' `ŎGnyVWH_ L j MB XXL%g@$>Apx:&]0jV$`A$ DH@pm*Cwy 0)A"x:y/ n J@dwZumJ""ykMϊe2I 'H>܂0u\>e="&ث \=`qh@;Ԟc옍8&zk}uX@k) H@ĨBC).v>-!P O|  t ! )HЏByjC40!H [|p)e- x!܇L'  eu8tT'EV=~= P#` 77@W5@M}5QCg A<gqH0|=G&!y&<%10Sf1R`rp+v02> h_P=@Ѐh b}~hQ: \G~%P5}jl؆0 ?pU7$3-`0n9e˕# PvgGRE'Ih$׈  Cz<} 2k&br4`܀a :vy֔yd+.bT#Pa ]rE ,Gaa+% 0$ =X>h*`O !Ps !9YA$q'&iyM1 0|q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕp3{n1EB q2Bpr9/`GM'R0t9YLhd'"1q6T4Qv[.#4\1F])"Ҋ~ !9Yz|t!0q!"4uCWcMc S,`_ $0[U"08깞[xq$גYYsLLW` ymP@pNI`j왡Hu:P$y'P27v)Wa mrwe\2*_*_ș:DZG̢sR>C .gm!-*.` rP dpr:}ڑ," gY``S0֢qt]`waH% z  +4Jlk[Re 6 -40wQ0OA`dZJF#3@hj/D?#u\" gJeP! :蚮:,zT Yq$"AV*~PO@d&b*fڰzJj$ 5jr8 3!~E¤ (67+Rb@a-{ 2;4fc.gZЅ~ 2%"]b*U$]ǭQp@H5ZqT =K͚"#F#odv aHBmpYNʵ~KHGP[y}Ya& hTc =x`Q@srm @HZۺupg$HՏd#Rt.y1 VPv7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 005$5 Sd&Z:A173p#7tc795,>0@u| #UUj*jp!BR1``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLScL 5a"p@Sq'K>|P$AӯEBd9wUrcFpgH6$p`.pG"!7W9„,G |7O 'o^†o$ a>N;'o;LϢw`(oY>YB;z4>y2~rtV&]iԩUfkرeϦ]mܹuo'^q%;tvēC2 @عѱ Ђdfȓ<d_D=A&ؑS9=4OTH{ o:RC((⌄Z,{ocB`׆bk/c'v'PY1.*AJ*A>{eK0sL24L4TsM6tM8ˇ‡t Yd x (PI2 p(jH2Ey:Hy`sh *Cv[,}P49g -  v"IHp"ԛi&N=}G )cz @qFl `0oz%2!!J̀0cƬ9GU]@Pi݋t"h\hva6 @b3xc;cCydA@%u, |bWJ5U2d{|7|y=4ȏ`C@Q { ұfBs$%4Ї!! a 5nc2Bz@ zpa $@V$Izؓy|bhF8=QGy2H@ P=DI`B`T P3fM!cKKJHY;`  &X 2yOY "4XHG&dc~Tjܸ@KjpHjBD }E8L@B L%"r9{K%>;!1yͷs2vP-YH/_xc!uIUn=th]WL =2Ϩ /u8-j9C |LOT"_yy\vPI Ԟ IJ Çq y8` |(( y>>>xn | L^XhA>CC@p@B , ?=IDci ?zRwX xsN@y 0Ä(:\" 9f`H3%;FIDS 3  û ɵ0{0yp yВv'Җs@FǸ"wHCzulDžSчG1A`_ FMdQ̀O YR4Ea>8sT;' zQ(}Hq$ `GQYZ,[|\\f SrGx,)Ch NC5L|DZ*ȓ8p KA ;8ˁ0D%K4x҉*2ؐ D3&" @BS^ 1AbP( 5k:0J$.+ax+C`˫`ȇ Db, ܡoMPL `LQiKy wKXLt"P FL9R0t e L܉PhP< *;=C0q 1ą6ͅ 8z. K]Wj  y̎e X$ $ ű ]k#vw$$ | 6HH`?#la*-*]2L%k B8yR"#"'h|a=XY1-3#e$%RHz«с1@$ Sh`MH-*e4{< 1]L }Ӓtզ(֭V Nx\Vi$N#Q䜈(݊!PHsԁI#tx( [5  h2Iѷ4x xyywh$ 9<= bP*yt+CN!-B5yȈiL>PlXg $aP S@|t P4 ]w 쉟؞HJ{et0ǒ%1 9Oyi[-ok *qԐGQ+ą" ۷c X3JKEuAHV.PT+`qA%JQ$?es!Г[P/:{tc[\B]8EJy8l#QyP HJݯ@`}( ՠĐؐzF d]  XN5eh߽=`&Ͷ2|dxb`!!Ww胼' F`ya!zOf5PJ܋|Nԟv۠+v">P" M>5LA [e5%"ٰh@Q yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDxHa]=cb'u(05sneWY=.(Q5!ntPO Й ćI @#Ij< EEdλvwP6\{ʀ9B!vJPXI&yh ʠ!eR!&UhɁ4UpȄB9mRF"!""#}!&4C1!jܣ990% PHYl-mr&Ou%/TKq._s6Oy$P! M`zW"h*;ns?s2/MDAk3Y^[")pDtJNJ{iLV< rK?uTOuU_uVouWuXuYuZu[u\u Ё]2 Obc$H6av]v᲋⬉L^#_n3 !W 1vw tjwvIݘ3w).x? }g& kc|h呂0Ө¿,?H ? FH&`efՅXHa3]y?Q ]7 s0(/@xgx77Q)94?$U ?獴 8W> !}>iЬw 4Uoe@3&5"+ 2q[AoQ|VyLY>RP#}04C8Y_˗|PanXC "@oh8!~J}&Sqc{V^ifN|Ҙ$W﷍{'w`U 7up^y  |^ܽ+h ‚Kxp|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5qyCc dfs ~"]%i`P;jzٸjN[t3BBChwKAJEbrO;ޔ@^\+bXi-B󧎎S6YCAPr"%HT<쳞<8tOR 5I!gAcAe @Aq>j!UP+& p?<.тIƒ2PGRy!xGdLFс-^)X # n5җIF%#-4-'r"iК,#;>)$N@:}^Ep oj)z):*}AqB", 94PCC 7 3A>9$4霣X`R<S9E6D!@Fl[@:Q<$SO8Pza u@/XA2CT 8"Ԫj=> !m:P ꐽ Z0梻VTrR>+[F Ѐ >=FC=X @(SG>05d]lYH9nyk2_r,a#"tPh"MI@]L7/ D7:k#()RV"Q#zXp$2~ꈖ>poCbA8G!vH % 1@ա"M`&t !7 ه>~spQ#gd^$."@0, n+aY"a2|~< :$R`1i ^bsl 3x ^A(|dr$-2sC8;fG<:h@ypc(Hsh (<5ً=t XZ'@қ_G"P8`>f8rx`WBc&%uẉA ỹUp! Eȑ$;(֓+D9d"F%Ta[AIՁgDCfA*HZc.SY@!p@zTt&4:PȉQ I׺"Dם 8v`H TUD/Q&&d}ld[Twr>T^'jUIDI!__so<ɠH \/B`e"ό4ךA&qaZyVk,2~0#,awf8s&`Z;LH/` ^M ^Aɥr(@xh Cxr$LtzifRV^pT0'p@@A\̢  H (a%FDLq}L$z)ƪ}b+LdT1P1݋ߑkrd dY`O9-s;wpd7> y|n$`Bqꡇ,A 9Oo>,IoXc [ak[>BM\M0a{ƣ,ppq7-. `/k6HQcM}T}vD>3-HK#ϹYlģ Jpp?65i6F\1y 6_y:`<[H>,2[1m; !l#ʃiY?xd ߐA"G @03s7NB !KF#CFUG!LS:h)H yԦdΑCz%[ BP>vz݇GV6lBK(@w<$G!=^A ,a䃊`\BD-5FCUD39A, ;ަOE OўIʽ={ ;AY_A _!`%,MJCSLHԃ;5DCC8`; EZ쁀4r ǘDaD ;A_#bMPv4,-Zb$VbFdB ɀ>l@)H4;(-C+nBCXJahA4m @4B_v8 zLAA;TXPġ+b ! `m@$AAGzC(<;qG1" #B@ԋAbAjmI䑜*GGЌ<\^aE4DЊ!@g%H >d17MDHc%DZY!IJ8>rL=CB@m>TXM:Rt2@bC 6m] nH2ԃ'5EYbdC]",!xIeZR\CF4!̋Ie@B8SEXiBP!\HdI>J:\! Gh$S2dHŸAHn afY-DzGD8CC$ɘ,o9 }abOƑT.I_fj_`MH㡠mX'mvF!#Đ^`)du ;]EPChyL贅b&R.fKR}zh:DCT&eAH'g#yzZ,:TrC$()FH@= fL< W42䃆gABGK*߅DٽmIiA|niE<&e,GOAK!;<-Yi&_BܟA0@E(ߎD a; pC/ #6Dt]ϢFA!NA0\*)e&B/XiZ*M`E02})5gɃ;< 2m#FhE4a~ V'(fC=+:܃((Ljr=:ؽë^Zi!;>8@C8?ĞP(~GRjJޫN>_V G*d=p?8Cҵ]i&x;סPlʢ^A 28e,=$,;Cޕc~^O>@V\!Ţ,ZEJF&i*C78Ì .&:]`C^!5 RC:>@2 r.Gx@*[泪زJ^ GjA(YnBH.vw7@eFÍ$_: <(/bhrE .xpZҮE1BZ.Z<8薘B (Ц=FJ[8ӜLC><($G`oӟ!.v E/q )5/B؅b-|0ȃxa0fnpEp \hED h~%r;LNDxi oyl T~psS~VP \bS1-G۸p ZhT->o# $G oHN/wh``B-C!ԃ =N⦲*2+kL ȃ^C]aCA@I^T90`U@:o՞aMohALX[-/ g:ZPtE99;DCW"9Xѣ24 RPٰH3L XÌZC6X%A0Irdv, \djTĚZbH3CKFsnIAOTF8!_>8Ӆ/:ln¢'%{so^ӳX>uEו>\[Vs3AȈv# nv}[($5(a@XσCZyA%%ׅhT0 w=jEP9tSGz:dȺ9E`@/!0l@ܱpz 91U7Dg {B 7W?#`[|-ĦyBpX=l| L#8<&,C̕@Kxo=:p;7JD)83#F3z!0kD<1P1պj<pDE7ìxoA`H7&@HD EE/(~ s֕XqÃ5tjg>,BrD`F\8~}ycO9^/E@ 3"5AD؈w ZT  )hF:dH >!`hR@3xaw JKF< A2$9y!y*C?Dމ`wh;tb+Ƀ/I3R0!BkP 1WoCu[6at;7/!:ӚosPz0,⃃[TΔ7^Z'p Zʮ{rZŧjda`Gu 0҄2(U a PJ`XLZd]XgehjlݖnpY HɆS&X L5S>b |Q`F0Iu^y5~%-MU-[d65zG`1HeQf2euޙ}蠅#5w-/t#%'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGѱ_r?C=Fm9'ݷ] A-0V2f;~k'O4`Gyqg>i zN.EIӀaw4jZOST hyIRBLi H䁎-S@Gq2Qqkep`?LpK D#HO- <7#!IT U7.}IBP<@jC8Ō !E&PQSefX{RKA( tLT0Ѱuʕ%-bQt ;5*I*{dG&FEtHXaGA>^(=f˛3%rғ|*!yJ U;[ 蠣T'42*)9kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&9@/vL<ěPf?Sv+"&ӎ8"EG`٪*L $G @KHy *ȀH)d €}T+ 0O40RP*_JVn6j-g[jo^*ZɂT*!pЃZBHĽװ؇LG]|! 7Bы^H`j聆Lt׏xTc-=1֧ߡm:!#`%}>쁾Cꐫ 7 ̣$Eҡ}KeC0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_xyTTx]J! s@|c|M@l,'HKd"[b…:k O$NFD pG:$&#6 HKE  jijdZƏL&0IΡ! !L P 0f( D"@:@: n86nC @ ‚ ƻb k !d@6` #4,R-@q!)(R p-H!@:iQ{!cM!(T !@LD qqȐBNgJj$ X|_b[F Q[k$@ A a-!tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzH!n%l# * @-N$~%bMba c&%!J*N bϖ!;!)JP瘔b  "((H<  XL. @BVtB@aRS11A*b 3dT*"SdR-7NHR>@] S65[N39>_fb!aTS$,5 -4%P!`2c4ܔP>;[h0O62Ʉ(" {?@tY* `BxʬZh%2j!##LH`%(I1K4Ũz`A1S@ : s-c;#AҒF,00@OH>L$0p!`emKkvIt@ i! Z ҬmI !@ b⏓6eDb΁JJG&4R h3 BƐt D!*LrìHRh֮pAA$ lT!@pr,I=0XU^硝ʸ3 nT<TZZuR2s+ a@D A3`j"5Gbjkԣbm?R<7 BQm{.14a8, 끵ZpkQpo[[6y 0-킶,ܨHQuU\Z(V:bB\B A FﵤJ@ V&II3),5Rl:aff]'iAWPG6hKhA.! `A-5fF6m+!iP^R>B|L!p`B5l R,5xcI/7Y!k@:Do7W5A6BN,e|W TinvD`¸r R"wiGX喆`LaIau2E2*qG26q-N/V$AVs2a V< A@$ D{S[ 6L&Z0 $@ fXvT a^O2{Ȋx Z8Ձ lkn$P ayYl tS䎝(͏"ٚ,Ğ`Th&P;vKlCh+"b6tE@ *m5A t)c$j ĕq)Qkp,"t $ x9nVZMDJ! DZL6 eq$ g]:2` H̗Zjʬ"R=@d*Ρ cxWjH//0#XF^)"@1RC{l#K:> cC3,6DdXC.P*΁LBY hL@ $?-Z׿ "cKC=0kk("Ȩ8F38d<"nz;{0;{6*$"F`z?>#4!"`!e@*|⧇VY[ٟ>:ĠDy%AhM@AJ`F?|ءd0RGTLUQ \N%맦PFn*`'b&v@iu/sW;;HTPPN(LĄ@*l7@@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿj@X'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.ϡ^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1XρƲ0K+@"Z;= $AKu/!E@Y۱DEit^OK~+i >b+ɾC^Cu6(_wbfFh OGx,臟_qD.!"e0@7ND!;.>NCX؁VFo;6MIi6֦yT"9w3^4P!C&\.ƍeT܆y(iH&7(9P68Wz2>G@ pљ:լ[~ ;ٴk۾;ݼ{ <ċ?^Zv$!]&@ːq;9swYq<@|?3! Ll4*wرN2AF!\×vܕ6U3>s;P8>L8gv'v7cgF=CB iNJiRe 9 d4<$% \7p1p;' _ 3@GTΞ;XA>s7jk_FtՓV<UՙK0y ;{>׻9v|e@ߨD'Lnf$>Q#,Gӫk-!,;q|M[cuɅ#OgdLbF@FW1CFtJ/tN? uROMuճ +~hqF@=od,{g6Z)6ٰ[=QOo%t<`8U.8txG/E. _Nuw;g\˼ VOߏ)ƒCr"4@m jDT q$+K7 &( rj'C IL%0-X@Tȍ 1t|>PϕqM 0Cpjkfsݔ7יiV <R.(Ðǘ,#fVW ΙvCa&Ιj]B jhFv&%C#K_ Әt4Mo?4HcWF4` #l } w 9Rye ¶$ 3B)tm@,;%UI Acj wb`wȕb>XԵ5#LQ(Vȁ-7=DU HaGT֑ʇr1+ZV,V>UrzdWi+@Kwl.P$N*wms]1a$L=<ڂ iYR‰8#;e|3$;PvH;0H|,15y]RA x^]7,PW#qxY[=:6wt3^)yK*MH{4І<歯Fk#:6 f0f^tN5rNP ؤPZR | @ zЄ&M>>A5 mdb UAÜAR{Y׃m3W5]˃u]lRUZ˦@1RF$%B|,o_[-<MG }D/я 9Gzo4Tկk}늲e6wr6.ct}lopלw ~/+~oK~򔯼/k~?Ћ~/Oԫ~o_~o~ /+oKԯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ7u\7=h>ExpKgN~ C0OKSq =LdhZGG膴P;SOd!iWxdq||(S~xV :kvS!![(xhz" L 1C Rr@xvӊŁfÇPhfwAψz9fTc|a hAHXH5hBMǍ9vdEy?(яDȐe pHx'(Q$;  ih^q!IH)֒ PXT$IEx(r<+Hr I'*ru˴ po~p WPeA@ʳ7瀑o>o3)  FE<0`b Id,|R~93x z9Z蕌"p 7v9B` ֘Kg_uH+b$RL!Ie^Rht:N%%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST c9RY*0:3nd7ݸ,r}YS=̃!| aN|I.*S>ϻx7~4>q7yaHDYV~钴SpϟENb!t\w!OHInja͛FTqQ+>gEb36t7`Y^SBE=T$ p9FqčT@ d 9 )BȔdHMDBT7&*A#F! NXaZj;.H".=p-/c54'eg*A !CdF $DCyrFpoپ]xGS GaZo~Fe0A1BG@K_Z tSd-i*~Bf$L BzC Q  0rmvtF|/nw T. 0Z=30[VҤ0OT!(d*fE N;&dD o@K;аa>†ԣ Q`&}h(1^ h!]'Υ1O1,$4Ϋ *՘E9$)^{^S.1뻗G%Vw,sh S,{%[(;5~R*X"|Ȃ|I!޲u T-c7;9Ki؁nKv+N@f%SG`bk/ǔ@tl@9 &F! L`_ٵ2,A 6PlSx{7(C?1DG$DOD1EWdE_1FgFo1G[MG(=,(}6SE$*Au2hv䡀 ( 50ˇv.hmsh );@wt8v 3 qwx6݄r{Ɂ`ǁ'6ӸpYF(|*I+Lj8,kW&&t<}0,3Ф9DqU Xe}tHH̴M ;+U@yPss6v"jh8JA[qU_yahˁaUy0@uBeh%Ig%Ԭ}W!Lz`.z@@CӊSP 5h8-= 9}Ոc^UՐFx#LFys9iwb#v{+>?7 t7lF8 :&$` dp( U3Ry-ɥ.aYd৐NnBg>P;tI"Z!M:ORMk4UU@ ԡ|#1!ATI Emb&Lg7 X0Dr岘41]FId&uHd:}p{@JGFmUeP>QT2Pn |P=պI76З(r7NJ'qU°Շb[_t 2􁏒d `H0.7ekC@b7ɃY,FYh@y̬ wXNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW (~5>jH -r/yK:$c&wМDy%b}9EByҕt7O<  X =e)8ËugG{ˍrQf)E4"P.'qQI`s#?xQߙvG|I5\"Jx-| .o e+}E?z#ֻJ&c0}9PC'1.}˄`5d>ltIVFj \-о}:ϺVèo+8nޓ|v,)I dIȣ-IHd Jٰ 4 6y hG`>Ev耤x y G|tr* op@DlTɕdɖtb5,upQ5L.$ VEƐ苗Ȇ; /|;Ph Jj t˷˸G"Xv &Ȇ{p{U  Ԉ>2}p{@{0L~cd85ȼQȭL1$8?$NK5(88Ev@eP+lq vMhA?<ڱ|H$ί_tN !ė|H(%;}x HY> x (\ РQ j#} Ia9$@xo(f 9L o4"5#ERlK?Ȟh MpR$Cz`y'(J$|$5H5͇fpxp ';Y"|h"Q% 3M9}!ׁ|vS%PT-F5yDKTUUeU;(9yq<0  ȯ֢ՆL0: '0ۘbX v.!-Y#;LJaf\zv}0T:FL ǔdhM(EhA ևv^Nhy0!9eЇ{s ,՚IiPike  &3@yxn@w}hU(cP$= ɱLnjڇta-B_l*$r: PM|@g}Y,WqgMb7,CfHE p}p`,hPȄ() h،`lfȖ8jZx^0yevp y\T Hb鐊k_Y), ЄF!( <11m}h><9KkǐH}o{8}(|w&H8 8Cih+z؀tn ?hij &.8"رÐ?~Z~>LJ6SGutۙ탇,!Hz ЇzȁDZ [L+1r9ITuI$9|DU:UYϐ :^q}HTWu/:$=  t_Vi,ʣFw$f @y>IWgW|Xy7C \y˾5ޅ7&'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF ЁPӯdN+9Q9˸O[hN/wXˀp'y/_fęڳt !)99Hw3Ģ{0"Lp!ÆLhj_sQĊv(rÁ$?l$K-bl)s&͚ + &B@1s(ѢF"Mt)ӦNB*u*ժVbͪu+׮ Ov]𺐁- ZΝ)^Kn ͓Kwݼjʓvސ /exqc7eJ>re f|x5tF.PҲέ{7޾.|8Ə'AݓmSzC'3Xc^ˤW5Qwų.R_j~-3OdUe CFA8uVMP9Ps,]7S r#X'+آqφ-:d0A܎ޏx`lB~T y%yҔ5yL'Cj*4ЛT Ob05@/"2ڨBi`3 t<D`O:$fԉ<g:`D<2&\-GZ-qS<{Ds6! {#O&|׵|<ꑵJuz=A ȣCS_ק:P>#; ϥts*>㌖1Cd ,x P$)A\ECD/Q<$|$p;fc,#8@*n  6vڡA+nēLdǎIc(wKPL_ q %\&< e?AL`H q3h,a4(G;яJ*Fb<"R40AAQ b!H4 cA t60x/ob :N!cֳ;vS2A(@{1t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6PlϹ^H>x=i¾;}$9m3LI" AkZ6Ȩe Xq@}eef]Nȗ@:ͱ sy#q62ӛC=Rr PuJ53 _Tnر z\:ސ1p{Ap b Ny]!`ʮmE,|RgFA>$gm@+e|5Ał |B>k;A q|#)}H|`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^:z$^ڬ TEhDfD͞B@=Xߵ;H%>@0|\A(:4!C \} TUbA` `C, a"x:AԊC:T?=lPlB@-7zĉu,9QAl<;Jda6:@SU ]^ɥDHE<A-a\M%ZAa1gḀ1 T}D8fBeB@HXC=:j'!W ރ !D*I$۪Ɉ*J 7$6'$cBZh"8+⃐;jp= 8?PCD=.փ@*R)û8b@?rWA=1Ԟ) @FJ ;\cC^DDE^dFZX^dLLdM& 8Db ND&AB%;0G> ,"B=F=8e]C^އ|̣p;x` AL;D6i uI&EMa&Ie:IIWVr A.N* 9TfA\f<4BmA <$;\ff6gnn`Хdf+u<8:b2f-#BT`nO0 A=BdBf.QI~g"mM:BhJ!pb;ĉWZG0LndGlc (u(x_>A=IL@3LlFZDօ<@= Ŝ\?8`5), tnHC/0:*ę/ }_z2l$t($I*(q"DvW՛.") $cB cRDD0*MM0bɆTUi\9u\IJ~WD$QDȃyV2+CDjშRk!%æ4$ ̓:*NX>ŪCDQDXRaỸ};:jĽTH$yROkCC=liBv`9Sce^A ``)֖̟ C#zn ib(BŪܔD@ܭX<<, @0Hحؖ4I@=HC-톕,ےVfd'9|4;x؂A$ H]4: gF-(ڎb@*ǩt-m-H@:@ n`<nҮ`u&b$1,>^J:l@Z"40uH:X>0AĪ*dfK$@ 4lO*T0'II)G=% p 0 @7z>EAD@I>î@>Rރ2D4:EHK_`HI0^>m,B`=h@C2@i"6 (`/<@YX)kʖAo>>)Exe[Ơ#If KcJ\^̊0KjE q><&: ZBd[lݩwr:-I 41bZ>K VC. 1V(*D$SeAd@æALA/rU͇!L:ۣl@++F5'F4s)%lC" HX1U23pBpQp^+b3vc;c;]r=SCSHvbPeFXtehvii7 sSLkw_{ԅknvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyy7`uĞ0bN<@y w`(raINU=bzK: @U mODKDM@|^>Ldrh𥕲9sT!AtgmXYiGikAD%CDRloA ^^`,rX<\,; 0]ZI{#6s%D,G$PGC|>b?GXR1-/a]ц>Z;RüW,AԈ ~Kn|R1 BLu8̳lADU#) ȃ{@1 +]΃}SNĥdJ>lJxt ^Iο̎VA < ӄ3>T@v}$C$YTI&]惩U]>lBp@}>ThxOA$!^C=TA@ݏDXcJ:ß:1,BbA)-BmDLKU#=0>)rUA܀׾i<}-(@&A|&D(OB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7}`G@!;yN_w#&}✀&;7`A( n#,3p_= "c"12Իo_)&.BLALA^* Q lB$>xqǑ'WysϡC +|yp[@:?7 \R=(v\1uΑ1}&H.u*|*AE$g5 (zJEO F2Yi[qU]y#ةGtΡsCqrG8'Pށt rˇ{tY*{a vwTsԙ?} X3 D8gP,8Q%z@C2sO>|i4}WYnaYf"+!FI@`JToG `0f:z櫱By$G1j1Ja xBI'D1SJ  @؁@l~'N\o!_Mª'o)J n1!%@CVPá,q7+i5· ´@Gч2 !a'/йm=ߡ4$g^ 6;!SgG,_}ZɒuPMP 0Dr @I@>UR>jPJh`s?.)`9,@2*n  aHH#y$z@b۲&Il䱉U 1 9/!@=0!! `B9Αu$"`<E7P`z38`]QGDDH). C@dD$呕@,H}C@,` tH(Ttp Ї> # c ` hB7CƷ+ @{r*ZA@+OyΓ=O%Tj4AP. upB>ĀgWPnGARx"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:0o5O[9zYgVCx_X\Ms`$8N'w&Dba5e2`G/jtM#C49."7K>@%d:* HHj\G 汌_BE tzpzYQBҵP`؀8H6&GVWWtT: :`•`zqy0c}>ttiZ}UGby5"` \h c!$0=aYaG2Q4pRd!9CL  s]4هjC&_%biE 7>W;NB g(OX,=!A-hAQɌO 7}u-SV3y@ @OQ} 6apBqQ 200vM|r"iFaTBJ kݓ@B(SF{Ag$,؄@+ U|# @C,x$h(0bLJb/0 `C=bP "tpH߷guoDY.3}lK@8wdCNI+6PwP@\ 1ULStUJC ^Βݐ@3.>Щ2 G`@%tϞWi>Î6XPCdٖ^#ڧ}| A [&T>@Hs;gR Î$<EC *Pc=K8fqVqgI& !2aF!8d$J(Y,!z"N** VAp즱bMND*gM6KbB!Y:xB#@i!g2>g@xɰ $hPXa!& /߀0 H!Xa{8 !]ԅ!P!ڧ_#P*7R I"!a| 6(@A++T( A&L &{A@P~Dޤ1"bk gFL *@aj6 ޡG#!}Rh)pamN/¹ahuazAz]*@Y@ B#!`GaZ1#5r#[fa3uB("bc'5LA! (t0r"(@f3'xƯMejHF R@#: -g F|'4O#r-rOԠ*@g1"CPaøl af !((J2hVa0>PƀD)'P8HH LYHء-F%& %8>R R!H@6+\s88$`KH2T2$ n6` # ಩>B$&C`&v|2!'B4"0 }'U46/QIX8 $&$@ 7)^ |FZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2'`XeHtISH?j&bJ5B+ (=JI4Lݍ k& @ "La2 8-Ae"=´)3TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#z3[\Ȅ#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r*d>ez6i=@<@E;Hүu/a|˷d#B0$@"wy5#p dJEnPs-uvqQ>a)%XuS">|7\!܄DN8-ҁB(NdP>83Pr9O* uEkZEAqLӁa.QJ7%q;"p*[[e\PMl",1qIVu.>%_z{T9*sCAEؘa7HÀv#R.r[!xh0!2A PReInoYnb2!&^ZkFgYy ڠ>?!]G?+s!4!rI6n0ҁWj ||!<%|)-1<5|9=Ad3vOSXyѳb/ BԿ]r_guKX#X8(pEx8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIA'_AP !sw3;2NCqv-]t` -z *7`> t:ǎAo^=t `+ByI땏'ཀྵsN+װc˞M۸sͻ.Ny Bn,u~\tt s%W2̝N|S~&O {y{s"T}A -^AԃB|0= ($h(,&Nd(vNsSv 4dC8@ CC/Td5ިAb .D>Oi7Xgȓŀ"@95;XOi-Jb~gOS!'褔Vj饘f馜viHE'YʑW;=9x+ —k7\ 鿗IXjA@B #,Wlg!FI>̾@ܨO=[P>`\8(?XPO: >3{6_QN_B`@P{8{#>~:_a(;DW0HM&;N ؜-_Sތ7G.Wn?A=!g砇.褗n{?< {|K9c LE| hGH@0Aԡ^$Q:6EQ2)7@gчt%QD恏y!9 ,PDz` dU;1)GI-vH ba2sa%A7`v[Ҍ4ʃq01Zd4S&_ġ>ŀ 쨋 #F>Y+f%f2Ur!r#Rz-5Ib R]z!8iZ2adY<:쑖͜ E@@C#%%䅃LgM% bg9x|>ς0hPHX+QF4\ ⃔ TGJT@@5Ct%@R:QĢpV! 0㮂 5gv)^ sHuwS0KcôbƮ'ODH 8Cx+*3 ⰵ!P]DzYX1:>PC#[@NF$v mp΁C %2*k$"G @=@j-z2g|Qys@ NŇd9DAJYN0h/wЁF 8 @YD !pLsdO3:J/a!%K oPK$7P\q0 k4/{w|sX,pB8 duhF'.v8rAR 8Ǜ b-*-c,ad[ɣ]22 3G$''a24~G|HԹq  fA2Űg XT CP1)ݙ q=$blhT/d+v$cńϯ!jeG< AjHc YbPArrXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ Zek9 P ;6 $ZȍzOpa-%fz@CY (\>P(Yz , (A+:M :@tu4cJ7y*M}7oHΑ9!cA`D@r0қg>Y^x+EKURrg;qAH t&U=ST{aE/|v>r e!Z:BF1 SG<zfʋ4)P(?H2< zb}  hjZ[ai v aDz7X&Ydʀ A% Gv! % EPw?" $P g\E?@Av212W*e! CPbK"2"X">(rS}g2"SR`xzXOJ )tb!G } i+@tb2AL ON(L z Nh P AX(17e [F1LG31 V#;Qk".%6B&F!Dh'L 4b}7сDS@ j+R+AvDEj``-b- H\!Et*>5`Ej*% > `& `T"l.7BBuPTwLe8**E@+e% 9}2%p] y:0/r/b,p`dÃ06c5h0E 1؎>|cmb $*%`72>^E@ H22v5D@p8g:v#t#+.E0@ 9FP29PDΡ=48& 3!Ls2F -1s5{0#MWXEYܐV0 6m6AeDivӇ_X!GP8  9ZZyP ^82qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;UI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*!*O=؊t:0` }WvQ\^u hxz% W!Wqx`X%3K^UY7^Daa0|HS!V'aF'P!V[گ{0 fiLSGj֌1@Up%6VjKsjh y&(4 P8Te]qMGd0qE6"ȫN*{%wrSRvE;T+F {lF8Hzf U{^y^zsk{x?!:| K'q[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv. !4^c?!'kb(,)v۽蛾BLO /~P0[#/b ca 0aPƫj1//3'ZQ0~j cP2“2bP. +\}Ԡ0yp,iПf 0yus7 7c88Pܳ;"69jZ3 (2:(f||!t^*hr<ƣnL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#":pqKktIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2 ng$j斒V (!3.yՒpJEWi&@dk$g7pפnբr C0`Y[~Vt%m 9~ p-*°s0ʧa*̢vl8yM'H'1 m\"o~?tx]+ |3n6V{l]P,a$M" 0PYq p[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*/a}e_L q Na_j j!ŗrqqR$ʵ`ӁrniEbQ^*+MWac9]}K-W o;hV\ o@ .dC%NXE5nG!E$YI)UdK1eΤYM0ɻpu:\< `yJG~g `"S!)wP3J},Po T0+uJ>JǸ| 9'*y6%!PCSyH@ K!A CZHs$k!nN,`G>C@g"Đ%Xаy BtQH#tRJ+RL3tMF}jQ8TU3*YŬ.js gtsc',@\Yh ǂ c:XPz0 Miy &Ԑg6!1xܫ}Bʁ.̳Z`11{LsA3 SO"[؛70Đ ruz`s o2fsyg{g0`hDQJyb`jzkkt ( aKؤҶn{oo* W.k~q#|r+r%p扢3r$7A^E|@|@wd)MyJT!24!Z:`3vR@=_ΣZ dAP"t(1;&C 50A*CUѝg=퉻ő*pypk %; d7V`:I%|(HTFlBqB0,|l \lK2U]1]ѧDѿ De1Hɸ'wֶtC%jQ U:K!/eG^сiQ0x;2`¤P@( \g(RtТ[Q)w@L C3(a:ῥC6BĀGXFVȨ4!U::(8U Ep,A(a>eᖅ UdUtCXXy֑G=\FWӕ*[:6EP{ kV@95ekيfꁐXt t*B&VbE9:5m\B.`4`GX9'# $b[{38Rta; "Ta@5$yሜG rPsm&[(Or|匜e$4F0P ` 'Ubare2v>e @rKQsLЋft\c ,ߡE4Wfhґ9J݊E= lR Gd2 UB H) Aj<@P}ld'%#F dh/B&p u"+CdֳRRpESFCX@\(Iq~A/#H"d8b&vt7<9 x-EHSKX ]T&ހ 0=I`XjC).WCcm(U7_TbTf-X+fWd';,pӨg][:JƴNd3~u]kg{IֶUDn S~w]Q.2)(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}a>'(0}Cs0A=3&EFuv*@&[ H`AꨯͻY <tE:0"N YW!W3 ˈ.A#P {ؠ5r?$ " @ #Q!؉kqe5 J6K UA ;7s=/ dpUsk M ch gPйYAHztХy?Iꥬ&/ {(wPeigB tal?h'ȀaruRC̺A BJDOs θz X؉a99 DA*qh*}8XH2;HmO2'Rh1N}h11PWu`X.{Y`3%1pͭOCB0d8͇^Q|CP5eG@Jl CPPcX fhZ+Ovc$ڇ|h7@7T=T^2dvh`F$MP`)d0/M0M~jn;XOƬd P2ɠHPLQXbkaʍ ~Tτ(|B0y^lf8ҨSГi\BAE&Þzlœ>ó-oȁ"@xCd{@YbTfۇE^n9(OƱStd }Xw#}pzpwhv .)KCo/ u`yPP5k$^^Sle|8fn[ϊm [VyMT#Ai 5leAof=qv#oˇd P)7[ .(rXqw#B!Y"xȀ|@D}-wŅ_Çk>iE ĞӼ}`"nd[56c|OA >ಀ;zgGf4 F p?Cr 2>y +ۿJU~4Ddz0 e3?SgӪs\mzxώ(wxOͅхyyμ+h „ 2| 'Rh"ƌ7jH#tF$ yɋr9KiДdA΅ "c͝?LOw%4὜cm| ;g`s&(ٖ<q `LqO,Ձ[ L_؞/SA=AZ^ДN/c@3AA}GY=$> ;3>! :%> )"-"18#5x#9GB&ԋ<#ADE A I)dANBY`N'm!č>AANp Uv;0@:(>mÎp ぐР&tE5GhCƥL Y*Wmc %, A3Yn:dW`d@qΫB="4 j>0p霣Xq'r/!91qLdAN{#:P:P0p̥N9A9@!4 -,)j}¡#@:Dy^wJC ^~@@.^i7P>8 !ApLzϳ9)zTADp(Mu OtKӇhr\goB@9nA3|i2?ՠ"āf?(< Cc"Bn CB<(}d" aw XD  T: v8ACmG?(9y.e>s7 s6LDA6 Y!@BcAU`'Lqs~ЇޡEpы`cS`l 9 ыzCO!y5^GJ= l?qk `nbaJS6 =!AhQL Lc*әҴ6)Ns5Z?P1(;x cp2jBz%UKmSS9 1#@;SSUgO (՛⊐&qBԊ(`3CL >` 03&&nT,%ppEiʉRDI}E3xACQUk[E2'>@ rqb\i>4-( iD#0+wh|A|sD#8Xȟ ̑$ǘJ·Q$S| MOR aCEjPt>1,!9P AN/ hON2;L实ax@nsb= 8/p /!Hʒ8\WQ)sH<N$7- #x"v%vxMbІI|嵋9ꡐ͊J^f7M^%(4m9 <XC|Zu!`~A\! !Πa1UD>Ab9T H"B5ğ@E9QA ><(XlB<<B0kþ>OLY0].#363>#4F#X1$%$AX!DICU zLh@:@z|胹mXC9@Fp $q\c{;~b4N&eVe^&fZ>C>0J>ȎC090AS@SY@PV&>̮|:W`(L ^]6 0 m,; tũZiZ L@ԣ`D D]ʆB0@MO8;T.^ƫM]k(tL`‰dB]lDDBNP H OBBI*CZv(U'*(Wxɑi;XG!D>BYePfWzR{"D@lD6Pf GWB)B@A\A0Lf֩)橞5 )EXA@9x;;(˹ԃ!>ïRT@B(*e=iL`P/مs,)\AlE=CmOhBDѮD E l<(A$ChEm}Ga)KN}KIN,ҰvC*ӡE>=ElrjJYY,B+~ld$sABmY @+8]@)&Bס"ÕJA&..6 %hN脐`<VzDD`@<[BP@A nIOaO0^M MB\PPan.FAεc4HĂN0\kBm[[UAHa ģ.E!=lEXH~&M1kp)o:<0 KdFIJ@pP䚩ޜ54C;D0S\I 8R:<"@/cR> H2p|ztHCmpfET@A|&rP|Jɒ$fTC~$=1  tڢ)U!sE}@\.̍@&'2((*>T@20031*MنN 1fQIc2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH<1?W/`G@lK[Kf"5\p1#L7S?5<i.[p:E,p@Zh@VH&|z&׹V+o>$2rhGoF$+$K88@ 1 Y,%@(CCԔFfu]2o:XZ$@@pJV[*BVs5sDrD:X;Ah 1T_7vgچ"kKP> ESp!D0NH@NzRk1)jX[bMFHľQćC/Rh=(oZl)m,*xG,(<>2P1m^ EP4Y^> hH8Ŭ;c>0A/l2̸Z%he:w' ENHXqV KK pNOxQ;)C/TP;XVhWh7۩a,Fc<ZȜ`!mA=hiĆgt7\2Nn>TtLY&Gv]"6JxL EC'I*X}JkDdJY<$LACel"05Z Pr mT93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/S C>!˃ @9jAoȀ!CAÒzZ4K'^dYA ;J<1\ 1#˱$ ٟ=(ey'Mm|ü /DLûT=dAlLstF PPDu\hΜ<`p WO|p8 N\=F՝L|ZVD^~CX@̈>B~:|퓎q@ݝ0&@,4MӠ8H)DĻw|ȓ:(]y}(0߻L|0F!!Et@w"3x̋;y ܧo^y /OS\̗N%o;<p(0G:.>[>"p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}>  V{%yFc }w ]E-pA6m:e0o; ;ם+qû|u-GzꞝFqTy@RRs6y,| HwlA %(GA4P$ӂ3B@ CiA` HJ"@HiyA}jhσЋ@O'"0Ĕ3 uq I),; &BQ9 0+ʋt|J8*x.ڀNJ{)Mr=t]v}xWvvRʀ2 }@`ai@NԑGa4(n ɦ2!̠9 W]|ؑ'Jzק20Ftx " oxvظzΡh /9&PPv2j: CVèfQG njAO6+, [tH@A iǭz|9'2a y9믌(0w@0%  Dd'8hFu;8y]EmhHTL: }`q\1yqw~]c&!QߪmA+S> !:0UA ^9A~!!ah_;GFDH \a$(<x(v<mBxhGDLg MhnIIxBy>ֆ0N C2YQ)E鐀!sF8HH#>Qau:XFz,~y#'aeXeq́`;b| r!`E;`)I51e҅S|P[9K (zrH;/Ҁcvy0_lٰz1GIAv"5JQ8t';p7-dH aP<a@ E}G`%QH#!F5<(BeQM8_~WϵT,L EdX:hE&`6@>bF,"ff v00:##o;"#H {䁂LO@ͬb !B*BޡR" ءJA TN@c&#fb³)*xbTZi^cj+ bX'*MJƮS:SRpΆcJ"$ޡRma.Ρ&@$XACTZ/(H' pEPk&R%* CD B AìbV *BuQǑ5n)lԁo,xv dT1j+6@+mjȫ(Pʬ!ì0 =C~"@e7($nB&B# a"JB" ''ȃ0HҞzbbbb" 08I, kafIZe'+L-Dr+42"݌'&)/" B<1Y $G[ٌ/D Ԣn)ma$"Kª$!eCR-q`\%ljr"/.2"A0j6P' pLI$qo'L$60 (s??@;L),Ez ĸ6qd"T'0@"b@)qF FA3C#B2({DE/2$ *Rhb3K3%BZebO e؊4ҡzB sTjރHcG"`? ;F% i6;bAH)n>ҡq.^NN'lB|`G AK$Nc:'Dg*!s//f$!dS/D$`,%O=@p@ʔ'RP( 6RRաT"n#lP$P/2$2Dʎ &*\BD)U@ `aVa'42Isa#3*>X@@5c5U#VdGdKdOe`a^0ee%%&` R'pA?qĠQLciViiif6T' "Nuڲ$ B7.dllmVm׶vܥi$Bk@E`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2&`Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvThJ  Bɰ `k3 `k"`#F)xh z6@Ge$cJ%H%jg1b32|V0n؇eAzb:kxXǚA9S*wB/H3c k84@Q04&/΂N%08γر "◒+ْ3.tNFp$EZ-!$A0h٠zx"$$6{AiG A""[E, ԘMԀ$]-1'ϡV+Ưn1la"MR3]To\fm*513 #喩>1jJK–qI a/?ٝpb +΂EL-G6::0Yٕ)WYA5C! v8r6KM@A7fbJ[h/ڨq%$CxΓ/bb)&?> #A z`'DB`*@V 6CF,`c()gf"H3X]RC@x`c&/s,ߓ)0M*C:t,!$vwjYv |(B| a"Y@"r}'v}CbnF`Hbn߳ATSЁL%0 A b1`=` XJaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0th rK/[ ~>*y}?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K Z?+Ĺ;0ߖH'BQ2>h?0@!|)3JZQ TYFCPvAB  MsP.0xeQ@=P<0<}2 9t +!@|KN[B"dHpmi}#)ȣA #@B^;5;թXcBs8h s7 mMɪdqЌ}NS6PG`Y$(@X$GSdi_jN="4  E3GВj8d>[)!aM;3E &0c e; NȮ!>瀐;(+dMfEמb29M锗F k)B Cd\ H?U^IAv^yd&<8{=ϛh$OԣOv峏 ?yONy_yoy4sc0OC\{ J&9: d:DGA0/hBD3~}ЦkU$HkϏEa#@:|4V] 2Ρ>)%ߞޑ-uQH2#dG; P|P Ҁs\ Adu{GT d$n{%v:ʹ@4@ B!Z݈0&Qn P yHIO@D ,7R 5p3_a6J` NB3}0!WB )-5 Ȓ8o>8Ccq&80 V''v]mzWXV(cs45BK^uM/=Hh v9ԁ@ 7 ps,9ωt~Oq!P\򱁠dh!&!*3%R6飞>v|s#}{#!9aȖs򨬄 ѡ2!`IJ/rb |@PMPXf< ?d 7N.#`Xf =#@-y NۂWP5 7tnRWe| t4­fswel<* #TLOeJ qS)\:sMyϽP>G!_7iB8tyBgw Zi #rps,֤(=*W `i W8zl`<1bxj8ovс#w|{ߎcg 9@bCD Hs\@XA(YJ(9'E;Kh(T˫Pu!EZ!• `} ?(PJ (<M&A1  P aB2[xф ^KTCyMpa_j s8MQ֒A8D1Tsb%>P'b 707cdT|Rxg&opbP*6([}2%1&Y5 Nmd##@#` 0(BP*n)vnnq}gPrݠVޓ@#_I}xE "gjp#cZ aqnIPt IOV<)>ptCY? Ir@:LF1$&!p<4Xj)@V`71X!P ED)OIm7!9p1<~1s`dF9n}|ypm){p> 2I6fRh#{gCR1ѩ"igqwj,>3(5p p`%&֑mo q*s=fS@[|Z@.vs0L!DcCmM|)4DCyXR`%&jqP1rZ,* bySu 6 ^h2-@jq qzOb% oч^h7(@0@ : jPͪ $'PAH}͕ bPb`gBxbي#7W`zC($#:x p @%#L ` S) QUsך S!D&@ҩwS鲧ejRb芭- ؎GmjdM>X!jA#QI[>Z0 A&F+sA` PEqp*I˻U>g<8`Hś!644Q̛!MCŽlڑJ4k狾髾_&Cɾ5ɒ,{72 = 3>@~ΰ<6УKNH:aDv3|{Wi˟}>|ϑ6w/s"N%t`Fc<#G߅fᆳ:!>d)QXA.cQ4hЍ 3;@ :6&HxFAHn[SdqÎ%$-ښACQ:`,Pp<ϑhAx>pK~OKN=tPH@Z|Oe ϲ,@@t>H,:3,2D6pX86+@;>Cb(" C@)=sںM< @BC;F#]MhE@Iу2.Pψ4:/j :p"Sv=9};7B\ă7TOl{ܐ::' >? C=OD/Q |%"~LZ#!{$$P |C77 +1AzP  {$uhG2өD ,@CY[z2 BP<q#=q t $ "J>H!IHA?SrI!Ƀ>,`U%@ass!wp聒'XFđ$2K@' `ŎGnyVWH_ L j MB XXL%g@$>Apx:&]0jV$`A$ DH@pm*Cwy 0)A"x:y/ n J@dwZumJ""ykMϊe2I 'H>܂0u\>e="&ث \=`qh@;Ԟc옍8&zk}uX@k) H@ĨBC).v>-!P O|  t ! )HЏByjC40!H [|p)e- x!܇L'  eu8tT'EV=~= P#` 77@W5@M}5QCg A<gqH0|=G&!y&<%10Sf1R`rp+v02> h_P=@Ѐh b}~hQ: \G~%P5}jl؆0 ?pU7$3-`0n9e˕# PvgGRE'Ih$׈  Cz<} 2k&br4`܀a :vy֔yd+.bT#Pa ]rE ,Gaa+% 0$ =X>h*`O !Ps !9YA$q'&iyM1 0|q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕp3{n1EB q2Bpr9/`GM'R0t9YLhd'"1q6T4Qv[.#4\1F])"Ҋ~ !9Yz|t!0q!"4uCWcMc S,`_ $0[U"08깞[xq$גYYsLLW` ymP@pNI`j왡Hu:P$y'P27v)Wa mrwe\2*_*_ș:DZG̢sR>C .gm!-*.` rP dpr:}ڑ," gY``S0֢qt]`waH% z  +4Jlk[Re 6 -40wQ0OA`dZJF#3@hj/D?#u\" gJeP! :蚮:,zT Yq$"AV*~PO@d&b*fڰzJj$ 5jr8 3!~E¤ (67+Rb@a-{ 2;4fc.gZЅ~ 2%"]b*U$]ǭQp@H5ZqT =K͚"#F#odv aHBmpYNʵ~KHGP[y}Ya& hTc =x`Q@srm @HZۺupg$HՏd#Rt.y1 VPv7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 005$5 Sd&Z:A173p#7tc795,>0@u| #UUj*jp!BR1``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLScL 5a"p@Sq'K>|P$AӯEBd9wUrcFpgH6$p`.pG"!7W9„,G |7O 'o^†o$ a>N;'o;LϢw`(oY>YB;z4>y2~rtV&]iԩUfkرeϦ]mܹuo'^q%;tvēC2 @عѱ Ђdfȓ<d_D=A&ؑS9=4OTH{ o:RC((⌄Z,{ocB`׆bk/c'v'PY1.*AJ*A>{eK0sL24L4TsM6tM8ˇ‡t Yd x (PI2 p(jH2Ey:Hy`sh *Cv[,}P49g -  v"IHp"ԛi&N=}G )cz @qFl `0oz%2!!J̀0cƬ9GU]@Pi݋t"h\hva6 @b3xc;cCydA@%u, |bWJ5U2d{|7|y=4ȏ`C@Q { ұfBs$%4Ї!! a 5nc2Bz@ zpa $@V$Izؓy|bhF8=QGy2H@ P=DI`B`T P3fM!cKKJHY;`  &X 2yOY "4XHG&dc~Tjܸ@KjpHjBD }E8L@B L%"r9{K%>;!1yͷs2vP-YH/_xc!uIUn=th]WL =2Ϩ /u8-j9C |LOT"_yy\vPI Ԟ IJ Çq y8` |(( y>>>xn | L^XhA>CC@p@B , ?=IDci ?zRwX xsN@y 0Ä(:\" 9f`H3%;FIDS 3  û ɵ0{0yp yВv'Җs@FǸ"wHCzulDžSчG1A`_ FMdQ̀O YR4Ea>8sT;' zQ(}Hq$ `GQYZ,[|\\f SrGx,)Ch NC5L|DZ*ȓ8p KA ;8ˁ0D%K4x҉*2ؐ D3&" @BS^ 1AbP( 5k:0J$.+ax+C`˫`ȇ Db, ܡoMPL `LQiKy wKXLt"P FL9R0t e L܉PhP< *;=C0q 1ą6ͅ 8z. K]Wj  y̎e X$ $ ű ]k#vw$$ | 6HH`?#la*-*]2L%k B8yR"#"'h|a=XY1-3#e$%RHz«с1@$ Sh`MH-*e4{< 1]L }Ӓtզ(֭V Nx\Vi$N#Q䜈(݊!PHsԁI#tx( [5  h2Iѷ4x xyywh$ 9<= bP*yt+CN!-B5yȈiL>PlXg $aP S@|t P4 ]w 쉟؞HJ{et0ǒ%1 9Oyi[-ok *qԐGQ+ą" ۷c X3JKEuAHV.PT+`qA%JQ$?es!Г[P/:{tc[\B]8EJy8l#QyP HJݯ@`}( ՠĐؐzF d]  XN5eh߽=`&Ͷ2|dxb`!!Ww胼' F`ya!zOf5PJ܋|Nԟv۠+v">P" M>5LA [e5%"ٰh@Q yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDxHa]=cb'u(05sneWY=.(Q5!ntPO Й ćI @#Ij< EEdλvwP6\{ʀ9B!vJPXI&yh ʠ!eR!&UhɁ4UpȄB9mRF"!""#}!&4C1!jܣ990% PHYl-mr&Ou%/TKq._s6Oy$P! M`zW"h*;ns?s2/MDAk3Y^[")pDtJNJ{iLV< rK?uTOuU_uVouWuXuYuZu[u\u Ё]2 Obc$H6av]v᲋⬉L^#_n3 !W 1vw tjwvIݘ3w).x? }g& kc|h呂0Ө¿,?H ? FH&`efՅXHa3]y?Q ]7 s0(/@xgx77Q)94?$U ?獴 8W> !}>iЬw 4Uoe@3&5"+ 2q[AoQ|VyLY>RP#}04C8Y_˗|PanXC "@oh8!~J}&Sqc{V^ifN|Ҙ$W﷍{'w`U 7up^y  |^ܽ+h ‚Kxp|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5qyCc dfs ~"]%i`P;jzٸjN[t3BBChwKAJEbrO;ޔ@^\+bXi-B󧎎S6YCAPr"%HT<쳞<8tOR 5I!gAcAe @Aq>j!UP+& p?<.тIƒ2PGRy!xGdLFс-^)X # n5җIF%#-4-'r"iК,#;>)$N@:}^Ep oj)z):*}AqB", 94PCC 7 3A>9$4霣X`R<S9E6D!@Fl[@:Q<$SO8Pza u@/XA2CT 8"Ԫj=> !m:P ꐽ Z0梻VTrR>+[F Ѐ >=FC=X @(SG>05d]lYH9nyk2_r,a#"tPh"MI@]L7/ D7:k#()RV"Q#zXp$2~ꈖ>poCbA8G!vH % 1@ա"M`&t !7 ه>~spQ#gd^$."@0, n+aY"a2|~< :$R`1i ^bsl 3x ^A(|dr$-2sC8;fG<:h@ypc(Hsh (<5ً=t XZ'@қ_G"P8`>f8rx`WBc&%uẉA ỹUp! Eȑ$;(֓+D9d"F%Ta[AIՁgDCfA*HZc.SY@!p@zTt&4:PȉQ I׺"Dם 8v`H TUD/Q&&d}ld[Twr>T^'jUIDI!__so<ɠH \/B`e"ό4ךA&qaZyVk,2~0#,awf8s&`Z;LH/` ^M ^Aɥr(@xh Cxr$LtzifRV^pT0'p@@A\̢  H (a%FDLq}L$z)ƪ}b+LdT1P1݋ߑkrd dY`O9-s;wpd7> y|n$`Bqꡇ,A 9Oo>,IoXc [ak[>BM\M0a{ƣ,ppq7-. `/k6HQcM}T}vD>3-HK#ϹYlģ Jpp?65i6F\1y 6_y:`<[H>,2[1m; !l#ʃiY?xd ߐA"G @03s7NB !KF#CFUG!LS:h)H yԦdΑCz%[ BP>vz݇GV6lBK(@w<$G!=^A ,a䃊`\BD-5FCUD39A, ;ަOE OўIʽ={ ;AY_A _!`%,MJCSLHԃ;5DCC8`; EZ쁀4r ǘDaD ;A_#bMPv4,-Zb$VbFdB ɀ>l@)H4;(-C+nBCXJahA4m @4B_v8 zLAA;TXPġ+b ! `m@$AAGzC(<;qG1" #B@ԋAbAjmI䑜*GGЌ<\^aE4DЊ!@g%H >d17MDHc%DZY!IJ8>rL=CB@m>TXM:Rt2@bC 6m] nH2ԃ'5EYbdC]",!xIeZR\CF4!̋Ie@B8SEXiBP!\HdI>J:\! Gh$S2dHŸAHn afY-DzGD8CC$ɘ,o9 }abOƑT.I_fj_`MH㡠mX'mvF!#Đ^`)du ;]EPChyL贅b&R.fKR}zh:DCT&eAH'g#yzZ,:TrC$()FH@= fL< W42䃆gABGK*߅DٽmIiA|niE<&e,GOAK!;<-Yi&_BܟA0@E(ߎD a; pC/ #6Dt]ϢFA!NA0\*)e&B/XiZ*M`E02})5gɃ;< 2m#FhE4a~ V'(fC=+:܃((Ljr=:ؽë^Zi!;>8@C8?ĞP(~GRjJޫN>_V G*d=p?8Cҵ]i&x;סPlʢ^A 28e,=$,;Cޕc~^O>@V\!Ţ,ZEJF&i*C78Ì .&:]`C^!5 RC:>@2 r.Gx@*[泪زJ^ GjA(YnBH.vw7@eFÍ$_: <(/bhrE .xpZҮE1BZ.Z<8薘B (Ц=FJ[8ӜLC><($G`oӟ!.v E/q )5/B؅b-|0ȃxa0fnpEp \hED h~%r;LNDxi oyl T~psS~VP \bS1-G۸p ZhT->o# $G oHN/wh``B-C!ԃ =N⦲*2+kL ȃ^C]aCA@I^T90`U@:o՞aMohALX[-/ g:ZPtE99;DCW"9Xѣ24 RPٰH3L XÌZC6X%A0Irdv, \djTĚZbH3CKFsnIAOTF8!_>8Ӆ/:ln¢'%{so^ӳX>uEו>\[Vs3AȈv# nv}[($5(a@XσCZyA%%ׅhT0 w=jEP9tSGz:dȺ9E`@/!0l@ܱpz 91U7Dg {B 7W?#`[|-ĦyBpX=l| L#8<&,C̕@Kxo=:p;7JD)83#F3z!0kD<1P1պj<pDE7ìxoA`H7&@HD EE/(~ s֕XqÃ5tjg>,BrD`F\8~}ycO9^/E@ 3"5AD؈w ZT  )hF:dH >!`hR@3xaw JKF< A2$9y!y*C?Dމ`wh;tb+Ƀ/I3R0!BkP 1WoCu[6at;7/!:ӚosPz0,⃃[TΔ7^Z'p Zʮ{rZŧjda`Gu 0҄2(U a PJ`XLZd]XgehjlݖnpY HɆS&X L5S>b |Q`F0Iu^y5~%-MU-[d65zG`1HeQf2euޙ}蠅#5w-/t#%'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGѱ_r?C=Fm9'ݷ] A-0V2f;~k'O4`Gyqg>i zN.EIӀaw4jZOST hyIRBLi H䁎-S@Gq2Qqkep`?LpK D#HO- <7#!IT U7.}IBP<@jC8Ō !E&PQSefX{RKA( tLT0Ѱuʕ%-bQt ;5*I*{dG&FEtHXaGA>^(=f˛3%rғ|*!yJ U;[ 蠣T'42*)9kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&9@/vL<ěPf?Sv+"&ӎ8"EG`٪*L $G @KHy *ȀH)d €}T+ 0O40RP*_JVn6j-g[jo^*ZɂT*!pЃZBHĽװ؇LG]|! 7Bы^H`j聆Lt׏xTc-=1֧ߡm:!#`%}>쁾Cꐫ 7 ̣$Eҡ}KeC0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_xyTTx]J! s@|c|M@l,'HKd"[b…:k O$NFD pG:$&#6 HKE  jijdZƏL&0IΡ! !L P 0f( D"@:@: n86nC @ ‚ ƻb k !d@6` #4,R-@q!)(R p-H!@:iQ{!cM!(T !@LD qqȐBNgJj$ X|_b[F Q[k$@ A a-!tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzH!n%l# * @-N$~%bMba c&%!J*N bϖ!;!)JP瘔b  "((H<  XL. @BVtB@aRS11A*b 3dT*"SdR-7NHR>@] S65[N39>_fb!aTS$,5 -4%P!`2c4ܔP>;[h0O62Ʉ(" {?@tY* `BxʬZh%2j!##LH`%(I1K4Ũz`A1S@ : s-c;#AҒF,00@OH>L$0p!`emKkvIt@ i! Z ҬmI !@ b⏓6eDb΁JJG&4R h3 BƐt D!*LrìHRh֮pAA$ lT!@pr,I=0XU^硝ʸ3 nT<TZZuR2s+ a@D A3`j"5Gbjkԣbm?R<7 BQm{.14a8, 끵ZpkQpo[[6y 0-킶,ܨHQuU\Z(V:bB\B A FﵤJ@ V&II3),5Rl:aff]'iAWPG6hKhA.! `A-5fF6m+!iP^R>B|L!p`B5l R,5xcI/7Y!k@:Do7W5A6BN,e|W TinvD`¸r R"wiGX喆`LaIau2E2*qG26q-N/V$AVs2a V< A@$ D{S[ 6L&Z0 $@ fXvT a^O2{Ȋx Z8Ձ lkn$P ayYl tS䎝(͏"ٚ,Ğ`Th&P;vKlCh+"b6tE@ *m5A t)c$j ĕq)Qkp,"t $ x9nVZMDJ! DZL6 eq$ g]:2` H̗Zjʬ"R=@d*Ρ cxWjH//0#XF^)"@1RC{l#K:> cC3,6DdXC.P*΁LBY hL@ $?-Z׿ "cKC=0kk("Ȩ8F38d<"nz;{0;{6*$"F`z?>#4!"`!e@*|⧇VY[ٟ>:ĠDy%AhM@AJ`F?|ءd0RGTLUQ \N%맦PFn*`'b&v@iu/sW;;HTPPN(LĄ@*l7@@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿj@X'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.ϡ^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1XρƲ0K+@"Z;= $AKu/!E@Y۱DEit^OK~+i >b+ɾC^Cu6(_wbfFh OGx,臟_qD.!"e0@7ND!;.>NCX؁VFo;6MIi6֦yT"9w3^4P!C&\.ƍeT܆y(iH&7(9P68Wz2>G@ pљ:լ[~ ;ٴk۾;ݼ{ <ċ?^Zv$!]&@ːq;9swYq<@|?3! Ll4*wرN2AF!\×vܕ6U3>s;P8>L8gv'v7cgF=CB iNJiRe 9 d4<$% \7p1p;' _ 3@GTΞ;XA>s7jk_FtՓV<UՙK0y ;{>׻9v|e@ߨD'Lnf$>Q#,Gӫk-!,;q|M[cuɅ#OgdLbF@FW1CFtJ/tN? uROMuճ +~hqF@=od,{g6Z)6ٰ[=QOo%t<`8U.8txG/E. _Nuw;g\˼ VOߏ)ƒCr"4@m jDT q$+K7 &( rj'C IL%0-X@Tȍ 1t|>PϕqM 0Cpjkfsݔ7יiV <R.(Ðǘ,#fVW ΙvCa&Ιj]B jhFv&%C#K_ Әt4Mo?4HcWF4` #l } w 9Rye ¶$ 3B)tm@,;%UI Acj wb`wȕb>XԵ5#LQ(Vȁ-7=DU HaGT֑ʇr1+ZV,V>UrzdWi+@Kwl.P$N*wms]1a$L=<ڂ iYR‰8#;e|3$;PvH;0H|,15y]RA x^]7,PW#qxY[=:6wt3^)yK*MH{4І<歯Fk#:6 f0f^tN5rNP ؤPZR | @ zЄ&M>>A5 mdb UAÜAR{Y׃m3W5]˃u]lRUZ˦@1RF$%B|,o_[-<MG }D/я 9Gzo4Tկk}늲e6wr6.ct}lopלw ~/+~oK~򔯼/k~?Ћ~/Oԫ~o_~o~ /+oKԯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ7u\7=h>ExpKgN~ C0OKSq =LdhZGG膴P;SOd!iWxdq||(S~xV :kvS!![(xhz" L 1C Rr@xvӊŁfÇPhfwAψz9fTc|a hAHXH5hBMǍ9vdEy?(яDȐe pHx'(Q$;  ih^q!IH)֒ PXT$IEx(r<+Hr I'*ru˴ po~p WPeA@ʳ7瀑o>o3)  FE<0`b Id,|R~93x z9Z蕌"p 7v9B` ֘Kg_uH+b$RL!Ie^Rht:N%%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST c9RY*0:3nd7ݸ,r}YS=̃!| aN|I.*S>ϻx7~4>q7yaHDYV~钴SpϟENb!t\w!OHInja͛FTqQ+>gEb36t7`Y^SBE=T$ p9FqčT@ d 9 )BȔdHMDBT7&*A#F! NXaZj;.H".=p-/c54'eg*A !CdF $DCyrFpoپ]xGS GaZo~Fe0A1BG@K_Z tSd-i*~Bf$L BzC Q  0rmvtF|/nw T. 0Z=30[VҤ0OT!(d*fE N;&dD o@K;аa>†ԣ Q`&}h(1^ h!]'Υ1O1,$4Ϋ *՘E9$)^{^S.1뻗G%Vw,sh S,{%[(;5~R*X"|Ȃ|I!޲u T-c7;9Ki؁nKv+N@f%SG`bk/ǔ@tl@9 &F! L`_ٵ2,A 6PlSx{7(C?1DG$DOD1EWdE_1FgFo1G[MG(=,(}6SE$*Au2hv䡀 ( 50ˇv.hmsh );@wt8v 3 qwx6݄r{Ɂ`ǁ'6ӸpYF(|*I+Lj8,kW&&t<}0,3Ф9DqU Xe}tHH̴M ;+U@yPss6v"jh8JA[qU_yahˁaUy0@uBeh%Ig%Ԭ}W!Lz`.z@@CӊSP 5h8-= 9}Ոc^UՐFx#LFys9iwb#v{+>?7 t7lF8 :&$` dp( U3Ry-ɥ.aYd৐NnBg>P;tI"Z!M:ORMk4UU@ ԡ|#1!ATI Emb&Lg7 X0Dr岘41]FId&uHd:}p{@JGFmUeP>QT2Pn |P=պI76З(r7NJ'qU°Շb[_t 2􁏒d `H0.7ekC@b7ɃY,FYh@y̬ wXNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW (~5>jH -r/yK:$c&wМDy%b}9EByҕt7O<  X =e)8ËugG{ˍrQf)E4"P.'qQI`s#?xQߙvG|I5\"Jx-| .o e+}E?z#ֻJ&c0}9PC'1.}˄`5d>ltIVFj \-о}:ϺVèo+8nޓ|v,)I dIȣ-IHd Jٰ 4 6y hG`>Ev耤x y G|tr* op@DlTɕdɖtb5,upQ5L.$ VEƐ苗Ȇ; /|;Ph Jj t˷˸G"Xv &Ȇ{p{U  Ԉ>2}p{@{0L~cd85ȼQȭL1$8?$NK5(88Ev@eP+lq vMhA?<ڱ|H$ί_tN !ė|H(%;}x HY> x (\ РQ j#} Ia9$@xo(f 9L o4"5#ERlK?Ȟh MpR$Cz`y'(J$|$5H5͇fpxp ';Y"|h"Q% 3M9}!ׁ|vS%PT-F5yDKTUUeU;(9yq<0  ȯ֢ՆL0: '0ۘbX v.!-Y#;LJaf\zv}0T:FL ǔdhM(EhA ևv^Nhy0!9eЇ{s ,՚IiPike  &3@yxn@w}hU(cP$= ɱLnjڇta-B_l*$r: PM|@g}Y,WqgMb7,CfHE p}p`,hPȄ() h،`lfȖ8jZx^0yevp y\T Hb鐊k_Y), ЄF!( <11m}h><9KkǐH}o{8}(|w&H8 8Cih+z؀tn ?hij &.8"رÐ?~Z~>LJ6SGutۙ탇,!Hz ЇzȁDZ [L+1r9ITuI$9|DU:UYϐ :^q}HTWu/:$=  t_Vi,ʣFw$f @y>IWgW|Xy7C \y˾5ޅ7&'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF ЁPӯdN+9Q9˸O[hN/wXˀp'y/_fęڳt !)99Hw3Ģ{0"Lp!ÆLhj_sQĊv(rÁ$?l$K-bl)s&͚ + &B@1s(ѢF"Mt)ӦNB*u*ժVbͪu+׮ Ov]𺐁- ZΝ)^Kn ͓Kwݼjʓvސ /exqc7eJ>re f|x5tF.PҲέ{7޾.|8Ə'AݓmSzC'3Xc^ˤW5Qwų.R_j~-3OdUe CFA8uVMP9Ps,]7S r#X'+آqφ-:d0A܎ޏx`lB~T y%yҔ5yL'Cj*4ЛT Ob05@/"2ڨBi`3 t<D`O:$fԉ<g:`D<2&\-GZ-qS<{Ds6! {#O&|׵|<ꑵJuz=A ȣCS_ק:P>#; ϥts*>㌖1Cd ,x P$)A\ECD/Q<$|$p;fc,#8@*n  6vڡA+nēLdǎIc(wKPL_ q %\&< e?AL`H q3h,a4(G;яJ*Fb<"R40AAQ b!H4 cA t60x/ob :N!cֳ;vS2A(@{1t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6PlϹ^H>x=i¾;}$9m3LI" AkZ6Ȩe Xq@}eef]Nȗ@:ͱ sy#q62ӛC=Rr PuJ53 _Tnر z\:ސ1p{Ap b Ny]!`ʮmE,|RgFA>$gm@+e|5Ał |B>k;A q|#)}H|`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^:z$^ڬ TEhDfD͞B@=Xߵ;H%>@0|\A(:4!C \} TUbA` `C, a"x:AԊC:T?=lPlB@-7zĉu,9QAl<;Jda6:@SU ]^ɥDHE<A-a\M%ZAa1gḀ1 T}D8fBeB@HXC=:j'!W ރ !D*I$۪Ɉ*J 7$6'$cBZh"8+⃐;jp= 8?PCD=.փ@*R)û8b@?rWA=1Ԟ) @FJ ;\cC^DDE^dFZX^dLLdM& 8Db ND&AB%;0G> ,"B=F=8e]C^އ|̣p;x` AL;D6i uI&EMa&Ie:IIWVr A.N* 9TfA\f<4BmA <$;\ff6gnn`Хdf+u<8:b2f-#BT`nO0 A=BdBf.QI~g"mM:BhJ!pb;ĉWZG0LndGlc (u(x_>A=IL@3LlFZDօ<@= Ŝ\?8`5), tnHC/0:*ę/ }_z2l$t($I*(q"DvW՛.") $cB cRDD0*MM0bɆTUi\9u\IJ~WD$QDȃyV2+CDjშRk!%æ4$ ̓:*NX>ŪCDQDXRaỸ};:jĽTH$yROkCC=liBv`9Sce^A ``)֖̟ C#zn ib(BŪܔD@ܭX<<, @0Hحؖ4I@=HC-톕,ےVfd'9|4;x؂A$ H]4: gF-(ڎb@*ǩt-m-H@:@ n`<nҮ`u&b$1,>^J:l@Z"40uH:X>0AĪ*dfK$@ 4lO*T0'II)G=% p 0 @7z>EAD@I>î@>Rރ2D4:EHK_`HI0^>m,B`=h@C2@i"6 (`/<@YX)kʖAo>>)Exe[Ơ#If KcJ\^̊0KjE q><&: ZBd[lݩwr:-I 41bZ>K VC. 1V(*D$SeAd@æALA/rU͇!L:ۣl@++F5'F4s)%lC" HX1U23pBpQp^+b3vc;c;]r=SCSHvbPeFXtehvii7 sSLkw_{ԅknvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyy7`uĞ0bN<@y w`(raINU=bzK: @U mODKDM@|^>Ldrh𥕲9sT!AtgmXYiGikAD%CDRloA ^^`,rX<\,; 0]ZI{#6s%D,G$PGC|>b?GXR1-/a]ц>Z;RüW,AԈ ~Kn|R1 BLu8̳lADU#) ȃ{@1 +]΃}SNĥdJ>lJxt ^Iο̎VA < ӄ3>T@v}$C$YTI&]惩U]>lBp@}>ThxOA$!^C=TA@ݏDXcJ:ß:1,BbA)-BmDLKU#=0>)rUA܀׾i<}-(@&A|&D(OB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7}`G@!;yN_w#&}✀&;7`A( n#,3p_= "c"12Իo_)&.BLALA^* Q lB$>xqǑ'WysϡC +|yp[@:?7 \R=(v\1uΑ1}&H.u*|*AE$g5 (zJEO F2Yi[qU]y#ةGtΡsCqrG8'Pށt rˇ{tY*{a vwTsԙ?} X3 D8gP,8Q%z@C2sO>|i4}WYnaYf"+!FI@`JToG `0f:z櫱By$G1j1Ja xBI'D1SJ  @؁@l~'N\o!_Mª'o)J n1!%@CVPá,q7+i5· ´@Gч2 !a'/йm=ߡ4$g^ 6;!SgG,_}ZɒuPMP 0Dr @I@>UR>jPJh`s?.)`9,@2*n  aHH#y$z@b۲&Il䱉U 1 9/!@=0!! `B9Αu$"`<E7P`z38`]QGDDH). C@dD$呕@,H}C@,` tH(Ttp Ї> # c ` hB7CƷ+ @{r*ZA@+OyΓ=O%Tj4AP. upB>ĀgWPnGARx"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:0o5O[9zYgVCx_X\Ms`$8N'w&Dba5e2`G/jtM#C49."7K>@%d:* HHj\G 汌_BE tzpzYQBҵP`؀8H6&GVWWtT: :`•`zqy0c}>ttiZ}UGby5"` \h c!$0=aYaG2Q4pRd!9CL  s]4هjC&_%biE 7>W;NB g(OX,=!A-hAQɌO 7}u-SV3y@ @OQ} 6apBqQ 200vM|r"iFaTBJ kݓ@B(SF{Ag$,؄@+ U|# @C,x$h(0bLJb/0 `C=bP "tpH߷guoDY.3}lK@8wdCNI+6PwP@\ 1ULStUJC ^Βݐ@3.>Щ2 G`@%tϞWi>Î6XPCdٖ^#ڧ}| A [&T>@Hs;gR Î$<EC *Pc=K8fqVqgI& !2aF!8d$J(Y,!z"N** VAp즱bMND*gM6KbB!Y:xB#@i!g2>g@xɰ $hPXa!& /߀0 H!Xa{8 !]ԅ!P!ڧ_#P*7R I"!a| 6(@A++T( A&L &{A@P~Dޤ1"bk gFL *@aj6 ޡG#!}Rh)pamN/¹ahuazAz]*@Y@ B#!`GaZ1#5r#[fa3uB("bc'5LA! (t0r"(@f3'xƯMejHF R@#: -g F|'4O#r-rOԠ*@g1"CPaøl af !((J2hVa0>PƀD)'P8HH LYHء-F%& %8>R R!H@6+\s88$`KH2T2$ n6` # ಩>B$&C`&v|2!'B4"0 }'U46/QIX8 $&$@ 7)^ |FZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2'`XeHtISH?j&bJ5B+ (=JI4Lݍ k& @ "La2 8-Ae"=´)3TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#z3[\Ȅ#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r*d>ez6i=@<@E;Hүu/a|˷d#B0$@"wy5#p dJEnPs-uvqQ>a)%XuS">|7\!܄DN8-ҁB(NdP>83Pr9O* uEkZEAqLӁa.QJ7%q;"p*[[e\PMl",1qIVu.>%_z{T9*sCAEؘa7HÀv#R.r[!xh0!2A PReInoYnb2!&^ZkFgYy ڠ>?!]G?+s!4!rI6n0ҁWj ||!<%|)-1<5|9=Ad3vOSXyѳb/ BԿ]r_guKX#X8(pEx8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIA'_AP !sw3;2NCqv-]t` -z *7`> t:ǎAo^=t `+ByI땏'ཀྵsN+װc˞M۸sͻ.Ny Bn,u~\tt s%W2̝N|S~&O {y{s"T}A -^AԃB|0= ($h(,&Nd(vNsSv 4dC8@ CC/Td5ިAb .D>Oi7Xgȓŀ"@95;XOi-Jb~gOS!'褔Vj饘f馜viHE'YʑW;=9x+ —k7\ 鿗IXjA@B #,Wlg!FI>̾@ܨO=[P>`\8(?XPO: >3{6_QN_B`@P{8{#>~:_a(;DW0HM&;N ؜-_Sތ7G.Wn?A=!g砇.褗n{?< {|K9c LE| hGH@0Aԡ^$Q:6EQ2)7@gчt%QD恏y!9 ,PDz` dU;1)GI-vH ba2sa%A7`v[Ҍ4ʃq01Zd4S&_ġ>ŀ 쨋 #F>Y+f%f2Ur!r#Rz-5Ib R]z!8iZ2adY<:쑖͜ E@@C#%%䅃LgM% bg9x|>ς0hPHX+QF4\ ⃔ TGJT@@5Ct%@R:QĢpV! 0㮂 5gv)^ sHuwS0KcôbƮ'ODH 8Cx+*3 ⰵ!P]DzYX1:>PC#[@NF$v mp΁C %2*k$"G @=@j-z2g|Qys@ NŇd9DAJYN0h/wЁF 8 @YD !pLsdO3:J/a!%K oPK$7P\q0 k4/{w|sX,pB8 duhF'.v8rAR 8Ǜ b-*-c,ad[ɣ]22 3G$''a24~G|HԹq  fA2Űg XT CP1)ݙ q=$blhT/d+v$cńϯ!jeG< AjHc YbPArrXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ Zek9 P ;6 $ZȍzOpa-%fz@CY (\>P(Yz , (A+:M :@tu4cJ7y*M}7oHΑ9!cA`D@r0қg>Y^x+EKURrg;qAH t&U=ST{aE/|v>r e!Z:BF1 SG<zfʋ4)P(?H2< zb}  hjZ[ai v aDz7X&Ydʀ A% Gv! % EPw?" $P g\E?@Av212W*e! CPbK"2"X">(rS}g2"SR`xzXOJ )tb!G } i+@tb2AL ON(L z Nh P AX(17e [F1LG31 V#;Qk".%6B&F!Dh'L 4b}7сDS@ j+R+AvDEj``-b- H\!Et*>5`Ej*% > `& `T"l.7BBuPTwLe8**E@+e% 9}2%p] y:0/r/b,p`dÃ06c5h0E 1؎>|cmb $*%`72>^E@ H22v5D@p8g:v#t#+.E0@ 9FP29PDΡ=48& 3!Ls2F -1s5{0#MWXEYܐV0 6m6AeDivӇ_X!GP8  9ZZyP ^82qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;UI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*!*O=؊t:0` }WvQ\^u hxz% W!Wqx`X%3K^UY7^Daa0|HS!V'aF'P!V[گ{0 fiLSGj֌1@Up%6VjKsjh y&(4 P8Te]qMGd0qE6"ȫN*{%wrSRvE;T+F {lF8Hzf U{^y^zsk{x?!:| K'q[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv. !4^c?!'kb(,)v۽蛾BLO /~P0[#/b ca 0aPƫj1//3'ZQ0~j cP2“2bP. +\}Ԡ0yp,iПf 0yus7 7c88Pܳ;"69jZ3 (2:(f||!t^*hr<ƣnL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#":pqKktIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2 ng$j斒V (!3.yՒpJEWi&@dk$g7pפnբr C0`Y[~Vt%m 9~ p-*°s0ʧa*̢vl8yM'H'1 m\"o~?tx]+ |3n6V{l]P,a$M" 0PYq p[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*/a}e_L q Na_j j!ŗrqqR$ʵ`ӁrniEbQ^*+MWac9]}K-W o;hV\ o@ .dC%NXE5nG!E$YI)UdK1eΤYM0ɻpu:\< `yJG~g `"S!)wP3J},Po T0+uJ>JǸ| 9'*y6%!PCSyH@ K!A CZHs$k!nN,`G>C@g"Đ%Xаy BtQH#tRJ+RL3tMF}jQ8TU3*YŬ.js gtsc',@\Yh ǂ c:XPz0 Miy &Ԑg6!1xܫ}Bʁ.̳Z`11{LsA3 SO"[؛70Đ ruz`s o2fsyg{g0`hDQJyb`jzkkt ( aKؤҶn{oo* W.k~q#|r+r%p扢3r$7A^E|@|@wd)MyJT!24!Z:`3vR@=_ΣZ dAP"t(1;&C 50A*CUѝg=퉻ő*pypk %; d7V`:I%|(HTFlBqB0,|l \lK2U]1]ѧDѿ De1Hɸ'wֶtC%jQ U:K!/eG^сiQ0x;2`¤P@( \g(RtТ[Q)w@L C3(a:ῥC6BĀGXFVȨ4!U::(8U Ep,A(a>eᖅ UdUtCXXy֑G=\FWӕ*[:6EP{ kV@95ekيfꁐXt t*B&VbE9:5m\B.`4`GX9'# $b[{38Rta; "Ta@5$yሜG rPsm&[(Or|匜e$4F0P ` 'Ubare2v>e @rKQsLЋft\c ,ߡE4Wfhґ9J݊E= lR Gd2 UB H) Aj<@P}ld'%#F dh/B&p u"+CdֳRRpESFCX@\(Iq~A/#H"d8b&vt7<9 x-EHSKX ]T&ހ 0=I`XjC).WCcm(U7_TbTf-X+fWd';,pӨg][:JƴNd3~u]kg{IֶUDn S~w]Q.2)(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}a>'(0}Cs0A=3&EFuv*@&[ H`AꨯͻY <tE:0"N YW!W3 ˈ.A#P {ؠ5r?$ " @ #Q!؉kqe5 J6K UA ;7s=/ dpUsk M ch gPйYAHztХy?Iꥬ&/ {(wPeigB tal?h'ȀaruRC̺A BJDOs θz X؉a99 DA*qh*}8XH2;HmO2'Rh1N}h11PWu`X.{Y`3%1pͭOCB0d8͇^Q|CP5eG@Jl CPPcX fhZ+Ovc$ڇ|h7@7T=T^2dvh`F$MP`)d0/M0M~jn;XOƬd P2ɠHPLQXbkaʍ ~Tτ(|B0y^lf8ҨSГi\BAE&Þzlœ>ó-oȁ"@xCd{@YbTfۇE^n9(OƱStd }Xw#}pzpwhv .)KCo/ u`yPP5k$^^Sle|8fn[ϊm [VyMT#Ai 5leAof=qv#oˇd P)7[ .(rXqw#B!Y"xȀ|@D}-wŅ_Çk>iE ĞӼ}`"nd[56c|OA >ಀ;zgGf4 F p?Cr 2>y +ۿJU~4Ddz0 e3?SgӪs\mzxώ(wxOͅхyyμ+h „ 2| 'Rh"ƌ7jH#tF$ yɋr9KiДdA΅ "c͝?LOw%4὜cm| ;g`s&(ٖ<q `LqO,Ձ[ L_؞/SA=AZ^ДN/c@3AA}GY=$> ;3>! :%> )"-"18#5x#9GB&ԋ<#ADE A I)dANBY`N'm!č>AANp Uv;0@:(>mÎp ぐР&tE5GhCƥL Y*Wmc %, A3Yn:dW`d@qΫB="4 j>0p霣Xq'r/!91qLdAN{#:P:P0p̥N9A9@!4 -,)j}¡#@:Dy^wJC ^~@@.^i7P>8 !ApLzϳ9)zTADp(Mu OtKӇhr\goB@9nA3|i2?ՠ"āf?(< Cc"Bn CB<(}d" aw XD  T: v8ACmG?(9y.e>s7 s6LDA6 Y!@BcAU`'Lqs~ЇޡEpы`cS`l 9 ыzCO!y5^GJ= l?qk `nbaJS6 =!AhQL Lc*әҴ6)Ns5Z?P1(;x cp2jBz%UKmSS9 1#@;SSUgO (՛⊐&qBԊ(`3CL >` 03&&nT,%ppEiʉRDI}E3xACQUk[E2'>@ rqb\i>4-( iD#0+wh|A|sD#8Xȟ ̑$ǘJ·Q$S| MOR aCEjPt>1,!9P AN/ hON2;L实ax@nsb= 8/p /!Hʒ8\WQ)sH<N$7- #x"v%vxMbІI|嵋9ꡐ͊J^f7M^%(4m9 <XC|Zu!`~A\! !Πa1UD>Ab9T H"B5ğ@E9QA ><(XlB<<B0kþ>OLY0].#363>#4F#X1$%$AX!DICU zLh@:@z|胹mXC9@Fp $q\c{;~b4N&eVe^&fZ>C>0J>ȎC090AS@SY@PV&>̮|:W`(L ^]6 0 m,; tũZiZ L@ԣ`D D]ʆB0@MO8;T.^ƫM]k(tL`‰dB]lDDBNP H OBBI*CZv(U'*(Wxɑi;XG!D>BYePfWzR{"D@lD6Pf GWB)B@A\A0Lf֩)橞5 )EXA@9x;;(˹ԃ!>ïRT@B(*e=iL`P/مs,)\AlE=CmOhBDѮD E l<(A$ChEm}Ga)KN}KIN,ҰvC*ӡE>=ElrjJYY,B+~ld$sABmY @+8]@)&Bס"ÕJA&..6 %hN脐`<VzDD`@<[BP@A nIOaO0^M MB\PPan.FAεc4HĂN0\kBm[[UAHa ģ.E!=lEXH~&M1kp)o:<0 KdFIJ@pP䚩ޜ54C;D0S\I 8R:<"@/cR> H2p|ztHCmpfET@A|&rP|Jɒ$fTC~$=1  tڢ)U!sE}@\.̍@&'2((*>T@20031*MنN 1fQIc2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH<1?W/`G@lK[Kf"5\p1#L7S?5<i.[p:E,p@Zh@VH&|z&׹V+o>$2rhGoF$+$K88@ 1 Y,%@(CCԔFfu]2o:XZ$@@pJV[*BVs5sDrD:X;Ah 1T_7vgچ"kKP> ESp!D0NH@NzRk1)jX[bMFHľQćC/Rh=(oZl)m,*xG,(<>2P1m^ EP4Y^> hH8Ŭ;c>0A/l2̸Z%he:w' ENHXqV KK pNOxQ;)C/TP;XVhWh7۩a,Fc<ZȜ`!mA=hiĆgt7\2Nn>TtLY&Gv]"6JxL EC'I*X}JkDdJY<$LACel"05Z Pr mT93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/S C>!˃ @9jAoȀ!CAÒzZ4K'^dYA ;J<1\ 1#˱$ ٟ=(ey'Mm|ü /DLûT=dAlLstF PPDu\hΜ<`p WO|p8 N\=F՝L|ZVD^~CX@̈>B~:|퓎q@ݝ0&@,4MӠ8H)DĻw|ȓ:(]y}(0߻L|0F!!Et@w"3x̋;y ܧo^y /OS\̗N%o;<p(0G:.>[>"p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}>  V{%yFc }w ]E-pA6m:e0o; ;ם+qû|u-GzꞝFqTy@RRs6y,| HwlA %(GA4P$ӂ3B@ CiA` HJ"@HiyA}jhσЋ@O'"0Ĕ3 uq I),; &BQ9 0+ʋt|J8*x.ڀNJ{)Mr=t]v}xWvvRʀ2 }@`ai@NԑGa4(n ɦ2!̠9 W]|ؑ'Jzק20Ftx " oxvظzΡh /9&PPv2j: CVèfQG njAO6+, [tH@A iǭz|9'2a y9믌(0w@0%  Dd'8hFu;8y]EmhHTL: }`q\1yqw~]c&!QߪmA+S> !:0UA ^9A~!!ah_;GFDH \a$(<x(v<mBxhGDLg MhnIIxBy>ֆ0N C2YQ)E鐀!sF8HH#>Qau:XFz,~y#'aeXeq́`;b| r!`E;`)I51e҅S|P[9K (zrH;/Ҁcvy0_lٰz1GIAv"5JQ8t';p7-dH aP<a@ E}G`%QH#!F5<(BeQM8_~WϵT,L EdX:hE&`6@>bF,"ff v00:##o;"#H {䁂LO@ͬb !B*BޡR" ءJA TN@c&#fb³)*xbTZi^cj+ bX'*MJƮS:SRpΆcJ"$ޡRma.Ρ&@$XACTZ/(H' pEPk&R%* CD B AìbV *BuQǑ5n)lԁo,xv dT1j+6@+mjȫ(Pʬ!ì0 =C~"@e7($nB&B# a"JB" ''ȃ0HҞzbbbb" 08I, kafIZe'+L-Dr+42"݌'&)/" B<1Y $G[ٌ/D Ԣn)ma$"Kª$!eCR-q`\%ljr"/.2"A0j6P' pLI$qo'L$60 (s??@;L),Ez ĸ6qd"T'0@"b@)qF FA3C#B2({DE/2$ *Rhb3K3%BZebO e؊4ҡzB sTjރHcG"`? ;F% i6;bAH)n>ҡq.^NN'lB|`G AK$Nc:'Dg*!s//f$!dS/D$`,%O=@p@ʔ'RP( 6RRաT"n#lP$P/2$2Dʎ &*\BD)U@ `aVa'42Isa#3*>X@@5c5U#VdGdKdOe`a^0ee%%&` R'pA?qĠQLciViiif6T' "Nuڲ$ B7.dllmVm׶vܥi$Bk@E`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2&`Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvThJ  Bɰ `k3 `k"`#F)xh z6@Ge$cJ%H%jg1b32|V0n؇eAzb:kxXǚA9S*wB/H3c k84@Q04&/΂N%08γر "◒+ْ3.tNFp$EZ-!$A0h٠zx"$$6{AiG A""[E, ԘMԀ$]-1'ϡV+Ưn1la"MR3]To\fm*513 #喩>1jJK–qI a/?ٝpb +΂EL-G6::0Yٕ)WYA5C! v8r6KM@A7fbJ[h/ڨq%$CxΓ/bb)&?> #A z`'DB`*@V 6CF,`c()gf"H3X]RC@x`c&/s,ߓ)0M*C:t,!$vwjYv |(B| a"Y@"r}'v}CbnF`Hbn߳ATSЁL%0 A b1`=` XJaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0th rK/[ ~>*y}?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K Z?+Ĺ;0ߖH'BQ2>h?0@!|)3JZQ TYFCPvAB  MsP.0xeQ@=P<0<}2 9t +!@|KN[B"dHpmi}#)ȣA #@B^;5;թXcBs8h s7 mMɪdqЌ}NS6PG`Y$(@X$GSdi_jN="4  E3GВj8d>[)!aM;3E &0c e; NȮ!>瀐;(+dMfEמb29M锗F k)B Cd\ H?U^IAv^yd&<8{=ϛh$OԣOv峏 ?yONy_yoy4sc0OC\{ J&9: d:DGA0/hBD3~}ЦkU$HkϏEa#@:|4V] 2Ρ>)%ߞޑ-uQH2#dG; P|P Ҁs\ Adu{GT d$n{%v:ʹ@4@ B!Z݈0&Qn P yHIO@D ,7R 5p3_a6J` NB3}0!WB )-5 Ȓ8o>8Ccq&80 V''v]mzWXV(cs45BK^uM/=Hh v9ԁ@ 7 ps,9ωt~Oq!P\򱁠dh!&!*3%R6飞>v|s#}{#!9aȖs򨬄 ѡ2!`IJ/rb |@PMPXf< ?d 7N.#`Xf =#@-y NۂWP5 7tnRWe| t4­fswel<* #TLOeJ qS)\:sMyϽP>G!_7iB8tyBgw Zi #rps,֤(=*W `i W8zl`<1bxj8ovс#w|{ߎcg 9@bCD Hs\@XA(YJ(9'E;Kh(T˫Pu!EZ!• `} ?(PJ (<M&A1  P aB2[xф ^KTCyMpa_j s8MQ֒A8D1Tsb%>P'b 707cdT|Rxg&opbP*6([}2%1&Y5 Nmd##@#` 0(BP*n)vnnq}gPrݠVޓ@#_I}xE "gjp#cZ aqnIPt IOV<)>ptCY? Ir@:LF1$&!p<4Xj)@V`71X!P ED)OIm7!9p1<~1s`dF9n}|ypm){p> 2I6fRh#{gCR1ѩ"igqwj,>3(5p p`%&֑mo q*s=fS@[|Z@.vs0L!DcCmM|)4DCyXR`%&jqP1rZ,* bySu 6 ^h2-@jq qzOb% oч^h7(@0@ : jPͪ $'PAH}͕ bPb`gBxbي#7W`zC($#:x p @%#L ` S) QUsך S!D&@ҩwS鲧ejRb芭- ؎GmjdM>X!jA#QI[>Z0 A&F+sA` PEqp*I˻U>g<8`Hś!644Q̛!MCŽlڑJ4k狾髾_&Cɾ5ɒ,{72 = 3>@~ΰ<6УKNH:aDv3|{Wi˟}>|ϑ6w/s"N%t`Fc<#G߅fᆳ:!>d)QXA.cQ4hЍ 3;@ :6&HxFAHn[SdqÎ%$-ښACQ:`,Pp<ϑhAx>pK~OKN=tPH@Z|Oe ϲ,@@t>H,:3,2D6pX86+@;>Cb(" C@)=sںM< @BC;F#]MhE@Iу2.Pψ4:/j :p"Sv=9};7B\ă7TOl{ܐ::' >? C=OD/Q |%"~LZ#!{$$P |C77 +1AzP  {$uhG2өD ,@CY[z2 BP<q#=q t $ "J>H!IHA?SrI!Ƀ>,`U%@ass!wp聒'XFđ$2K@' `ŎGnyVWH_ L j MB XXL%g@$>Apx:&]0jV$`A$ DH@pm*Cwy 0)A"x:y/ n J@dwZumJ""ykMϊe2I 'H>܂0u\>e="&ث \=`qh@;Ԟc옍8&zk}uX@k) H@ĨBC).v>-!P O|  t ! )HЏByjC40!H [|p)e- x!܇L'  eu8tT'EV=~= P#` 77@W5@M}5QCg A<gqH0|=G&!y&<%10Sf1R`rp+v02> h_P=@Ѐh b}~hQ: \G~%P5}jl؆0 ?pU7$3-`0n9e˕# PvgGRE'Ih$׈  Cz<} 2k&br4`܀a :vy֔yd+.bT#Pa ]rE ,Gaa+% 0$ =X>h*`O !Ps !9YA$q'&iyM1 0|q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕp3{n1EB q2Bpr9/`GM'R0t9YLhd'"1q6T4Qv[.#4\1F])"Ҋ~ !9Yz|t!0q!"4uCWcMc S,`_ $0[U"08깞[xq$גYYsLLW` ymP@pNI`j왡Hu:P$y'P27v)Wa mrwe\2*_*_ș:DZG̢sR>C .gm!-*.` rP dpr:}ڑ," gY``S0֢qt]`waH% z  +4Jlk[Re 6 -40wQ0OA`dZJF#3@hj/D?#u\" gJeP! :蚮:,zT Yq$"AV*~PO@d&b*fڰzJj$ 5jr8 3!~E¤ (67+Rb@a-{ 2;4fc.gZЅ~ 2%"]b*U$]ǭQp@H5ZqT =K͚"#F#odv aHBmpYNʵ~KHGP[y}Ya& hTc =x`Q@srm @HZۺupg$HՏd#Rt.y1 VPv7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 005$5 Sd&Z:A173p#7tc795,>0@u| #UUj*jp!BR1``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLScL 5a"p@Sq'K>|P$AӯEBd9wUrcFpgH6$p`.pG"!7W9„,G |7O 'o^†o$ a>N;'o;LϢw`(oY>YB;z4>y2~rtV&]iԩUfkرeϦ]mܹuo'^q%;tvēC2 @عѱ Ђdfȓ<d_D=A&ؑS9=4OTH{ o:RC((⌄Z,{ocB`׆bk/c'v'PY1.*AJ*A>{eK0sL24L4TsM6tM8ˇ‡t Yd x (PI2 p(jH2Ey:Hy`sh *Cv[,}P49g -  v"IHp"ԛi&N=}G )cz @qFl `0oz%2!!J̀0cƬ9GU]@Pi݋t"h\hva6 @b3xc;cCydA@%u, |bWJ5U2d{|7|y=4ȏ`C@Q { ұfBs$%4Ї!! a 5nc2Bz@ zpa $@V$Izؓy|bhF8=QGy2H@ P=DI`B`T P3fM!cKKJHY;`  &X 2yOY "4XHG&dc~Tjܸ@KjpHjBD }E8L@B L%"r9{K%>;!1yͷs2vP-YH/_xc!uIUn=th]WL =2Ϩ /u8-j9C |LOT"_yy\vPI Ԟ IJ Çq y8` |(( y>>>xn | L^XhA>CC@p@B , ?=IDci ?zRwX xsN@y 0Ä(:\" 9f`H3%;FIDS 3  û ɵ0{0yp yВv'Җs@FǸ"wHCzulDžSчG1A`_ FMdQ̀O YR4Ea>8sT;' zQ(}Hq$ `GQYZ,[|\\f SrGx,)Ch NC5L|DZ*ȓ8p KA ;8ˁ0D%K4x҉*2ؐ D3&" @BS^ 1AbP( 5k:0J$.+ax+C`˫`ȇ Db, ܡoMPL `LQiKy wKXLt"P FL9R0t e L܉PhP< *;=C0q 1ą6ͅ 8z. K]Wj  y̎e X$ $ ű ]k#vw$$ | 6HH`?#la*-*]2L%k B8yR"#"'h|a=XY1-3#e$%RHz«с1@$ Sh`MH-*e4{< 1]L }Ӓtզ(֭V Nx\Vi$N#Q䜈(݊!PHsԁI#tx( [5  h2Iѷ4x xyywh$ 9<= bP*yt+CN!-B5yȈiL>PlXg $aP S@|t P4 ]w 쉟؞HJ{et0ǒ%1 9Oyi[-ok *qԐGQ+ą" ۷c X3JKEuAHV.PT+`qA%JQ$?es!Г[P/:{tc[\B]8EJy8l#QyP HJݯ@`}( ՠĐؐzF d]  XN5eh߽=`&Ͷ2|dxb`!!Ww胼' F`ya!zOf5PJ܋|Nԟv۠+v">P" M>5LA [e5%"ٰh@Q yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDxHa]=cb'u(05sneWY=.(Q5!ntPO Й ćI @#Ij< EEdλvwP6\{ʀ9B!vJPXI&yh ʠ!eR!&UhɁ4UpȄB9mRF"!""#}!&4C1!jܣ990% PHYl-mr&Ou%/TKq._s6Oy$P! M`zW"h*;ns?s2/MDAk3Y^[")pDtJNJ{iLV< rK?uTOuU_uVouWuXuYuZu[u\u Ё]2 Obc$H6av]v᲋⬉L^#_n3 !W 1vw tjwvIݘ3w).x? }g& kc|h呂0Ө¿,?H ? FH&`efՅXHa3]y?Q ]7 s0(/@xgx77Q)94?$U ?獴 8W> !}>iЬw 4Uoe@3&5"+ 2q[AoQ|VyLY>RP#}04C8Y_˗|PanXC "@oh8!~J}&Sqc{V^ifN|Ҙ$W﷍{'w`U 7up^y  |^ܽ+h ‚Kxp|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5qyCc dfs ~"]%i`P;jzٸjN[t3BBChwKAJEbrO;ޔ@^\+bXi-B󧎎S6YCAPr"%HT<쳞<8tOR 5I!gAcAe @Aq>j!UP+& p?<.тIƒ2PGRy!xGdLFс-^)X # n5җIF%#-4-'r"iК,#;>)$N@:}^Ep oj)z):*}AqB", 94PCC 7 3A>9$4霣X`R<S9E6D!@Fl[@:Q<$SO8Pza u@/XA2CT 8"Ԫj=> !m:P ꐽ Z0梻VTrR>+[F Ѐ >=FC=X @(SG>05d]lYH9nyk2_r,a#"tPh"MI@]L7/ D7:k#()RV"Q#zXp$2~ꈖ>poCbA8G!vH % 1@ա"M`&t !7 ه>~spQ#gd^$."@0, n+aY"a2|~< :$R`1i ^bsl 3x ^A(|dr$-2sC8;fG<:h@ypc(Hsh (<5ً=t XZ'@қ_G"P8`>f8rx`WBc&%uẉA ỹUp! Eȑ$;(֓+D9d"F%Ta[AIՁgDCfA*HZc.SY@!p@zTt&4:PȉQ I׺"Dם 8v`H TUD/Q&&d}ld[Twr>T^'jUIDI!__so<ɠH \/B`e"ό4ךA&qaZyVk,2~0#,awf8s&`Z;LH/` ^M ^Aɥr(@xh Cxr$LtzifRV^pT0'p@@A\̢  H (a%FDLq}L$z)ƪ}b+LdT1P1݋ߑkrd dY`O9-s;wpd7> y|n$`Bqꡇ,A 9Oo>,IoXc [ak[>BM\M0a{ƣ,ppq7-. `/k6HQcM}T}vD>3-HK#ϹYlģ Jpp?65i6F\1y 6_y:`<[H>,2[1m; !l#ʃiY?xd ߐA"G @03s7NB !KF#CFUG!LS:h)H yԦdΑCz%[ BP>vz݇GV6lBK(@w<$G!=^A ,a䃊`\BD-5FCUD39A, ;ަOE OўIʽ={ ;AY_A _!`%,MJCSLHԃ;5DCC8`; EZ쁀4r ǘDaD ;A_#bMPv4,-Zb$VbFdB ɀ>l@)H4;(-C+nBCXJahA4m @4B_v8 zLAA;TXPġ+b ! `m@$AAGzC(<;qG1" #B@ԋAbAjmI䑜*GGЌ<\^aE4DЊ!@g%H >d17MDHc%DZY!IJ8>rL=CB@m>TXM:Rt2@bC 6m] nH2ԃ'5EYbdC]",!xIeZR\CF4!̋Ie@B8SEXiBP!\HdI>J:\! Gh$S2dHŸAHn afY-DzGD8CC$ɘ,o9 }abOƑT.I_fj_`MH㡠mX'mvF!#Đ^`)du ;]EPChyL贅b&R.fKR}zh:DCT&eAH'g#yzZ,:TrC$()FH@= fL< W42䃆gABGK*߅DٽmIiA|niE<&e,GOAK!;<-Yi&_BܟA0@E(ߎD a; pC/ #6Dt]ϢFA!NA0\*)e&B/XiZ*M`E02})5gɃ;< 2m#FhE4a~ V'(fC=+:܃((Ljr=:ؽë^Zi!;>8@C8?ĞP(~GRjJޫN>_V G*d=p?8Cҵ]i&x;סPlʢ^A 28e,=$,;Cޕc~^O>@V\!Ţ,ZEJF&i*C78Ì .&:]`C^!5 RC:>@2 r.Gx@*[泪زJ^ GjA(YnBH.vw7@eFÍ$_: <(/bhrE .xpZҮE1BZ.Z<8薘B (Ц=FJ[8ӜLC><($G`oӟ!.v E/q )5/B؅b-|0ȃxa0fnpEp \hED h~%r;LNDxi oyl T~psS~VP \bS1-G۸p ZhT->o# $G oHN/wh``B-C!ԃ =N⦲*2+kL ȃ^C]aCA@I^T90`U@:o՞aMohALX[-/ g:ZPtE99;DCW"9Xѣ24 RPٰH3L XÌZC6X%A0Irdv, \djTĚZbH3CKFsnIAOTF8!_>8Ӆ/:ln¢'%{so^ӳX>uEו>\[Vs3AȈv# nv}[($5(a@XσCZyA%%ׅhT0 w=jEP9tSGz:dȺ9E`@/!0l@ܱpz 91U7Dg {B 7W?#`[|-ĦyBpX=l| L#8<&,C̕@Kxo=:p;7JD)83#F3z!0kD<1P1պj<pDE7ìxoA`H7&@HD EE/(~ s֕XqÃ5tjg>,BrD`F\8~}ycO9^/E@ 3"5AD؈w ZT  )hF:dH >!`hR@3xaw JKF< A2$9y!y*C?Dމ`wh;tb+Ƀ/I3R0!BkP 1WoCu[6at;7/!:ӚosPz0,⃃[TΔ7^Z'p Zʮ{rZŧjda`Gu 0҄2(U a PJ`XLZd]XgehjlݖnpY HɆS&X L5S>b |Q`F0Iu^y5~%-MU-[d65zG`1HeQf2euޙ}蠅#5w-/t#%'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGѱ_r?C=Fm9'ݷ] A-0V2f;~k'O4`Gyqg>i zN.EIӀaw4jZOST hyIRBLi H䁎-S@Gq2Qqkep`?LpK D#HO- <7#!IT U7.}IBP<@jC8Ō !E&PQSefX{RKA( tLT0Ѱuʕ%-bQt ;5*I*{dG&FEtHXaGA>^(=f˛3%rғ|*!yJ U;[ 蠣T'42*)9kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&9@/vL<ěPf?Sv+"&ӎ8"EG`٪*L $G @KHy *ȀH)d €}T+ 0O40RP*_JVn6j-g[jo^*ZɂT*!pЃZBHĽװ؇LG]|! 7Bы^H`j聆Lt׏xTc-=1֧ߡm:!#`%}>쁾Cꐫ 7 ̣$Eҡ}KeC0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_xyTTx]J! s@|c|M@l,'HKd"[b…:k O$NFD pG:$&#6 HKE  jijdZƏL&0IΡ! !L P 0f( D"@:@: n86nC @ ‚ ƻb k !d@6` #4,R-@q!)(R p-H!@:iQ{!cM!(T !@LD qqȐBNgJj$ X|_b[F Q[k$@ A a-!tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzH!n%l# * @-N$~%bMba c&%!J*N bϖ!;!)JP瘔b  "((H<  XL. @BVtB@aRS11A*b 3dT*"SdR-7NHR>@] S65[N39>_fb!aTS$,5 -4%P!`2c4ܔP>;[h0O62Ʉ(" {?@tY* `BxʬZh%2j!##LH`%(I1K4Ũz`A1S@ : s-c;#AҒF,00@OH>L$0p!`emKkvIt@ i! Z ҬmI !@ b⏓6eDb΁JJG&4R h3 BƐt D!*LrìHRh֮pAA$ lT!@pr,I=0XU^硝ʸ3 nT<TZZuR2s+ a@D A3`j"5Gbjkԣbm?R<7 BQm{.14a8, 끵ZpkQpo[[6y 0-킶,ܨHQuU\Z(V:bB\B A FﵤJ@ V&II3),5Rl:aff]'iAWPG6hKhA.! `A-5fF6m+!iP^R>B|L!p`B5l R,5xcI/7Y!k@:Do7W5A6BN,e|W TinvD`¸r R"wiGX喆`LaIau2E2*qG26q-N/V$AVs2a V< A@$ D{S[ 6L&Z0 $@ fXvT a^O2{Ȋx Z8Ձ lkn$P ayYl tS䎝(͏"ٚ,Ğ`Th&P;vKlCh+"b6tE@ *m5A t)c$j ĕq)Qkp,"t $ x9nVZMDJ! DZL6 eq$ g]:2` H̗Zjʬ"R=@d*Ρ cxWjH//0#XF^)"@1RC{l#K:> cC3,6DdXC.P*΁LBY hL@ $?-Z׿ "cKC=0kk("Ȩ8F38d<"nz;{0;{6*$"F`z?>#4!"`!e@*|⧇VY[ٟ>:ĠDy%AhM@AJ`F?|ءd0RGTLUQ \N%맦PFn*`'b&v@iu/sW;;HTPPN(LĄ@*l7@@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿj@X'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.ϡ^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1XρƲ0K+@"Z;= $AKu/!E@Y۱DEit^OK~+i >b+ɾC^Cu6(_wbfFh OGx,臟_qD.!"e0@7ND!;.>NCX؁VFo;6MIi6֦yT"9w3^4P!C&\.ƍeT܆y(iH&7(9P68Wz2>G@ pљ:լ[~ ;ٴk۾;ݼ{ <ċ?^Zv$!]&@ːq;9swYq<@|?3! Ll4*wرN2AF!\×vܕ6U3>s;P8>L8gv'v7cgF=CB iNJiRe 9 d4<$% \7p1p;' _ 3@GTΞ;XA>s7jk_FtՓV<UՙK0y ;{>׻9v|e@ߨD'Lnf$>Q#,Gӫk-!,;q|M[cuɅ#OgdLbF@FW1CFtJ/tN? uROMuճ +~hqF@=od,{g6Z)6ٰ[=QOo%t<`8U.8txG/E. _Nuw;g\˼ VOߏ)ƒCr"4@m jDT q$+K7 &( rj'C IL%0-X@Tȍ 1t|>PϕqM 0Cpjkfsݔ7יiV <R.(Ðǘ,#fVW ΙvCa&Ιj]B jhFv&%C#K_ Әt4Mo?4HcWF4` #l } w 9Rye ¶$ 3B)tm@,;%UI Acj wb`wȕb>XԵ5#LQ(Vȁ-7=DU HaGT֑ʇr1+ZV,V>UrzdWi+@Kwl.P$N*wms]1a$L=<ڂ iYR‰8#;e|3$;PvH;0H|,15y]RA x^]7,PW#qxY[=:6wt3^)yK*MH{4І<歯Fk#:6 f0f^tN5rNP ؤPZR | @ zЄ&M>>A5 mdb UAÜAR{Y׃m3W5]˃u]lRUZ˦@1RF$%B|,o_[-<MG }D/я 9Gzo4Tկk}늲e6wr6.ct}lopלw ~/+~oK~򔯼/k~?Ћ~/Oԫ~o_~o~ /+oKԯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ7u\7=h>ExpKgN~ C0OKSq =LdhZGG膴P;SOd!iWxdq||(S~xV :kvS!![(xhz" L 1C Rr@xvӊŁfÇPhfwAψz9fTc|a hAHXH5hBMǍ9vdEy?(яDȐe pHx'(Q$;  ih^q!IH)֒ PXT$IEx(r<+Hr I'*ru˴ po~p WPeA@ʳ7瀑o>o3)  FE<0`b Id,|R~93x z9Z蕌"p 7v9B` ֘Kg_uH+b$RL!Ie^Rht:N%%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST c9RY*0:3nd7ݸ,r}YS=̃!| aN|I.*S>ϻx7~4>q7yaHDYV~钴SpϟENb!t\w!OHInja͛FTqQ+>gEb36t7`Y^SBE=T$ p9FqčT@ d 9 )BȔdHMDBT7&*A#F! NXaZj;.H".=p-/c54'eg*A !CdF $DCyrFpoپ]xGS GaZo~Fe0A1BG@K_Z tSd-i*~Bf$L BzC Q  0rmvtF|/nw T. 0Z=30[VҤ0OT!(d*fE N;&dD o@K;аa>†ԣ Q`&}h(1^ h!]'Υ1O1,$4Ϋ *՘E9$)^{^S.1뻗G%Vw,sh S,{%[(;5~R*X"|Ȃ|I!޲u T-c7;9Ki؁nKv+N@f%SG`bk/ǔ@tl@9 &F! L`_ٵ2,A 6PlSx{7(C?1DG$DOD1EWdE_1FgFo1G[MG(=,(}6SE$*Au2hv䡀 ( 50ˇv.hmsh );@wt8v 3 qwx6݄r{Ɂ`ǁ'6ӸpYF(|*I+Lj8,kW&&t<}0,3Ф9DqU Xe}tHH̴M ;+U@yPss6v"jh8JA[qU_yahˁaUy0@uBeh%Ig%Ԭ}W!Lz`.z@@CӊSP 5h8-= 9}Ոc^UՐFx#LFys9iwb#v{+>?7 t7lF8 :&$` dp( U3Ry-ɥ.aYd৐NnBg>P;tI"Z!M:ORMk4UU@ ԡ|#1!ATI Emb&Lg7 X0Dr岘41]FId&uHd:}p{@JGFmUeP>QT2Pn |P=պI76З(r7NJ'qU°Շb[_t 2􁏒d `H0.7ekC@b7ɃY,FYh@y̬ wXNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW (~5>jH -r/yK:$c&wМDy%b}9EByҕt7O<  X =e)8ËugG{ˍrQf)E4"P.'qQI`s#?xQߙvG|I5\"Jx-| .o e+}E?z#ֻJ&c0}9PC'1.}˄`5d>ltIVFj \-о}:ϺVèo+8nޓ|v,)I dIȣ-IHd Jٰ 4 6y hG`>Ev耤x y G|tr* op@DlTɕdɖtb5,upQ5L.$ VEƐ苗Ȇ; /|;Ph Jj t˷˸G"Xv &Ȇ{p{U  Ԉ>2}p{@{0L~cd85ȼQȭL1$8?$NK5(88Ev@eP+lq vMhA?<ڱ|H$ί_tN !ė|H(%;}x HY> x (\ РQ j#} Ia9$@xo(f 9L o4"5#ERlK?Ȟh MpR$Cz`y'(J$|$5H5͇fpxp ';Y"|h"Q% 3M9}!ׁ|vS%PT-F5yDKTUUeU;(9yq<0  ȯ֢ՆL0: '0ۘbX v.!-Y#;LJaf\zv}0T:FL ǔdhM(EhA ևv^Nhy0!9eЇ{s ,՚IiPike  &3@yxn@w}hU(cP$= ɱLnjڇta-B_l*$r: PM|@g}Y,WqgMb7,CfHE p}p`,hPȄ() h،`lfȖ8jZx^0yevp y\T Hb鐊k_Y), ЄF!( <11m}h><9KkǐH}o{8}(|w&H8 8Cih+z؀tn ?hij &.8"رÐ?~Z~>LJ6SGutۙ탇,!Hz ЇzȁDZ [L+1r9ITuI$9|DU:UYϐ :^q}HTWu/:$=  t_Vi,ʣFw$f @y>IWgW|Xy7C \y˾5ޅ7&'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF ЁPӯdN+9Q9˸O[hN/wXˀp'y/_fęڳt !)99Hw3Ģ{0"Lp!ÆLhj_sQĊv(rÁ$?l$K-bl)s&͚ + &B@1s(ѢF"Mt)ӦNB*u*ժVbͪu+׮ Ov]𺐁- ZΝ)^Kn ͓Kwݼjʓvސ /exqc7eJ>re f|x5tF.PҲέ{7޾.|8Ə'AݓmSzC'3Xc^ˤW5Qwų.R_j~-3OdUe CFA8uVMP9Ps,]7S r#X'+آqφ-:d0A܎ޏx`lB~T y%yҔ5yL'Cj*4ЛT Ob05@/"2ڨBi`3 t<D`O:$fԉ<g:`D<2&\-GZ-qS<{Ds6! {#O&|׵|<ꑵJuz=A ȣCS_ק:P>#; ϥts*>㌖1Cd ,x P$)A\ECD/Q<$|$p;fc,#8@*n  6vڡA+nēLdǎIc(wKPL_ q %\&< e?AL`H q3h,a4(G;яJ*Fb<"R40AAQ b!H4 cA t60x/ob :N!cֳ;vS2A(@{1t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6PlϹ^H>x=i¾;}$9m3LI" AkZ6Ȩe Xq@}eef]Nȗ@:ͱ sy#q62ӛC=Rr PuJ53 _Tnر z\:ސ1p{Ap b Ny]!`ʮmE,|RgFA>$gm@+e|5Ał |B>k;A q|#)}H|`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^:z$^ڬ TEhDfD͞B@=Xߵ;H%>@0|\A(:4!C \} TUbA` `C, a"x:AԊC:T?=lPlB@-7zĉu,9QAl<;Jda6:@SU ]^ɥDHE<A-a\M%ZAa1gḀ1 T}D8fBeB@HXC=:j'!W ރ !D*I$۪Ɉ*J 7$6'$cBZh"8+⃐;jp= 8?PCD=.փ@*R)û8b@?rWA=1Ԟ) @FJ ;\cC^DDE^dFZX^dLLdM& 8Db ND&AB%;0G> ,"B=F=8e]C^އ|̣p;x` AL;D6i uI&EMa&Ie:IIWVr A.N* 9TfA\f<4BmA <$;\ff6gnn`Хdf+u<8:b2f-#BT`nO0 A=BdBf.QI~g"mM:BhJ!pb;ĉWZG0LndGlc (u(x_>A=IL@3LlFZDօ<@= Ŝ\?8`5), tnHC/0:*ę/ }_z2l$t($I*(q"DvW՛.") $cB cRDD0*MM0bɆTUi\9u\IJ~WD$QDȃyV2+CDjშRk!%æ4$ ̓:*NX>ŪCDQDXRaỸ};:jĽTH$yROkCC=liBv`9Sce^A ``)֖̟ C#zn ib(BŪܔD@ܭX<<, @0Hحؖ4I@=HC-톕,ےVfd'9|4;x؂A$ H]4: gF-(ڎb@*ǩt-m-H@:@ n`<nҮ`u&b$1,>^J:l@Z"40uH:X>0AĪ*dfK$@ 4lO*T0'II)G=% p 0 @7z>EAD@I>î@>Rރ2D4:EHK_`HI0^>m,B`=h@C2@i"6 (`/<@YX)kʖAo>>)Exe[Ơ#If KcJ\^̊0KjE q><&: ZBd[lݩwr:-I 41bZ>K VC. 1V(*D$SeAd@æALA/rU͇!L:ۣl@++F5'F4s)%lC" HX1U23pBpQp^+b3vc;c;]r=SCSHvbPeFXtehvii7 sSLkw_{ԅknvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyy7`uĞ0bN<@y w`(raINU=bzK: @U mODKDM@|^>Ldrh𥕲9sT!AtgmXYiGikAD%CDRloA ^^`,rX<\,; 0]ZI{#6s%D,G$PGC|>b?GXR1-/a]ц>Z;RüW,AԈ ~Kn|R1 BLu8̳lADU#) ȃ{@1 +]΃}SNĥdJ>lJxt ^Iο̎VA < ӄ3>T@v}$C$YTI&]惩U]>lBp@}>ThxOA$!^C=TA@ݏDXcJ:ß:1,BbA)-BmDLKU#=0>)rUA܀׾i<}-(@&A|&D(OB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7}`G@!;yN_w#&}✀&;7`A( n#,3p_= "c"12Իo_)&.BLALA^* Q lB$>xqǑ'WysϡC +|yp[@:?7 \R=(v\1uΑ1}&H.u*|*AE$g5 (zJEO F2Yi[qU]y#ةGtΡsCqrG8'Pށt rˇ{tY*{a vwTsԙ?} X3 D8gP,8Q%z@C2sO>|i4}WYnaYf"+!FI@`JToG `0f:z櫱By$G1j1Ja xBI'D1SJ  @؁@l~'N\o!_Mª'o)J n1!%@CVPá,q7+i5· ´@Gч2 !a'/йm=ߡ4$g^ 6;!SgG,_}ZɒuPMP 0Dr @I@>UR>jPJh`s?.)`9,@2*n  aHH#y$z@b۲&Il䱉U 1 9/!@=0!! `B9Αu$"`<E7P`z38`]QGDDH). C@dD$呕@,H}C@,` tH(Ttp Ї> # c ` hB7CƷ+ @{r*ZA@+OyΓ=O%Tj4AP. upB>ĀgWPnGARx"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:0o5O[9zYgVCx_X\Ms`$8N'w&Dba5e2`G/jtM#C49."7K>@%d:* HHj\G 汌_BE tzpzYQBҵP`؀8H6&GVWWtT: :`•`zqy0c}>ttiZ}UGby5"` \h c!$0=aYaG2Q4pRd!9CL  s]4هjC&_%biE 7>W;NB g(OX,=!A-hAQɌO 7}u-SV3y@ @OQ} 6apBqQ 200vM|r"iFaTBJ kݓ@B(SF{Ag$,؄@+ U|# @C,x$h(0bLJb/0 `C=bP "tpH߷guoDY.3}lK@8wdCNI+6PwP@\ 1ULStUJC ^Βݐ@3.>Щ2 G`@%tϞWi>Î6XPCdٖ^#ڧ}| A [&T>@Hs;gR Î$<EC *Pc=K8fqVqgI& !2aF!8d$J(Y,!z"N** VAp즱bMND*gM6KbB!Y:xB#@i!g2>g@xɰ $hPXa!& /߀0 H!Xa{8 !]ԅ!P!ڧ_#P*7R I"!a| 6(@A++T( A&L &{A@P~Dޤ1"bk gFL *@aj6 ޡG#!}Rh)pamN/¹ahuazAz]*@Y@ B#!`GaZ1#5r#[fa3uB("bc'5LA! (t0r"(@f3'xƯMejHF R@#: -g F|'4O#r-rOԠ*@g1"CPaøl af !((J2hVa0>PƀD)'P8HH LYHء-F%& %8>R R!H@6+\s88$`KH2T2$ n6` # ಩>B$&C`&v|2!'B4"0 }'U46/QIX8 $&$@ 7)^ |FZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2'`XeHtISH?j&bJ5B+ (=JI4Lݍ k& @ "La2 8-Ae"=´)3TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#z3[\Ȅ#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r*d>ez6i=@<@E;Hүu/a|˷d#B0$@"wy5#p dJEnPs-uvqQ>a)%XuS">|7\!܄DN8-ҁB(NdP>83Pr9O* uEkZEAqLӁa.QJ7%q;"p*[[e\PMl",1qIVu.>%_z{T9*sCAEؘa7HÀv#R.r[!xh0!2A PReInoYnb2!&^ZkFgYy ڠ>?!]G?+s!4!rI6n0ҁWj ||!<%|)-1<5|9=Ad3vOSXyѳb/ BԿ]r_guKX#X8(pEx8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIA'_AP !sw3;2NCqv-]t` -z *7`> t:ǎAo^=t `+ByI땏'ཀྵsN+װc˞M۸sͻ.Ny Bn,u~\tt s%W2̝N|S~&O {y{s"T}A -^AԃB|0= ($h(,&Nd(vNsSv 4dC8@ CC/Td5ިAb .D>Oi7Xgȓŀ"@95;XOi-Jb~gOS!'褔Vj饘f馜viHE'YʑW;=9x+ —k7\ 鿗IXjA@B #,Wlg!FI>̾@ܨO=[P>`\8(?XPO: >3{6_QN_B`@P{8{#>~:_a(;DW0HM&;N ؜-_Sތ7G.Wn?A=!g砇.褗n{?< {|K9c LE| hGH@0Aԡ^$Q:6EQ2)7@gчt%QD恏y!9 ,PDz` dU;1)GI-vH ba2sa%A7`v[Ҍ4ʃq01Zd4S&_ġ>ŀ 쨋 #F>Y+f%f2Ur!r#Rz-5Ib R]z!8iZ2adY<:쑖͜ E@@C#%%䅃LgM% bg9x|>ς0hPHX+QF4\ ⃔ TGJT@@5Ct%@R:QĢpV! 0㮂 5gv)^ sHuwS0KcôbƮ'ODH 8Cx+*3 ⰵ!P]DzYX1:>PC#[@NF$v mp΁C %2*k$"G @=@j-z2g|Qys@ NŇd9DAJYN0h/wЁF 8 @YD !pLsdO3:J/a!%K oPK$7P\q0 k4/{w|sX,pB8 duhF'.v8rAR 8Ǜ b-*-c,ad[ɣ]22 3G$''a24~G|HԹq  fA2Űg XT CP1)ݙ q=$blhT/d+v$cńϯ!jeG< AjHc YbPArrXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ Zek9 P ;6 $ZȍzOpa-%fz@CY (\>P(Yz , (A+:M :@tu4cJ7y*M}7oHΑ9!cA`D@r0қg>Y^x+EKURrg;qAH t&U=ST{aE/|v>r e!Z:BF1 SG<zfʋ4)P(?H2< zb}  hjZ[ai v aDz7X&Ydʀ A% Gv! % EPw?" $P g\E?@Av212W*e! CPbK"2"X">(rS}g2"SR`xzXOJ )tb!G } i+@tb2AL ON(L z Nh P AX(17e [F1LG31 V#;Qk".%6B&F!Dh'L 4b}7сDS@ j+R+AvDEj``-b- H\!Et*>5`Ej*% > `& `T"l.7BBuPTwLe8**E@+e% 9}2%p] y:0/r/b,p`dÃ06c5h0E 1؎>|cmb $*%`72>^E@ H22v5D@p8g:v#t#+.E0@ 9FP29PDΡ=48& 3!Ls2F -1s5{0#MWXEYܐV0 6m6AeDivӇ_X!GP8  9ZZyP ^82qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;UI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*!*O=؊t:0` }WvQ\^u hxz% W!Wqx`X%3K^UY7^Daa0|HS!V'aF'P!V[گ{0 fiLSGj֌1@Up%6VjKsjh y&(4 P8Te]qMGd0qE6"ȫN*{%wrSRvE;T+F {lF8Hzf U{^y^zsk{x?!:| K'q[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv. !4^c?!'kb(,)v۽蛾BLO /~P0[#/b ca 0aPƫj1//3'ZQ0~j cP2“2bP. +\}Ԡ0yp,iПf 0yus7 7c88Pܳ;"69jZ3 (2:(f||!t^*hr<ƣnL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#":pqKktIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2 ng$j斒V (!3.yՒpJEWi&@dk$g7pפnբr C0`Y[~Vt%m 9~ p-*°s0ʧa*̢vl8yM'H'1 m\"o~?tx]+ |3n6V{l]P,a$M" 0PYq p[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*/a}e_L q Na_j j!ŗrqqR$ʵ`ӁrniEbQ^*+MWac9]}K-W o;hV\ o@ .dC%NXE5nG!E$YI)UdK1eΤYM0ɻpu:\< `yJG~g `"S!)wP3J},Po T0+uJ>JǸ| 9'*y6%!PCSyH@ K!A CZHs$k!nN,`G>C@g"Đ%Xаy BtQH#tRJ+RL3tMF}jQ8TU3*YŬ.js gtsc',@\Yh ǂ c:XPz0 Miy &Ԑg6!1xܫ}Bʁ.̳Z`11{LsA3 SO"[؛70Đ ruz`s o2fsyg{g0`hDQJyb`jzkkt ( aKؤҶn{oo* W.k~q#|r+r%p扢3r$7A^E|@|@wd)MyJT!24!Z:`3vR@=_ΣZ dAP"t(1;&C 50A*CUѝg=퉻ő*pypk %; d7V`:I%|(HTFlBqB0,|l \lK2U]1]ѧDѿ De1Hɸ'wֶtC%jQ U:K!/eG^сiQ0x;2`¤P@( \g(RtТ[Q)w@L C3(a:ῥC6BĀGXFVȨ4!U::(8U Ep,A(a>eᖅ UdUtCXXy֑G=\FWӕ*[:6EP{ kV@95ekيfꁐXt t*B&VbE9:5m\B.`4`GX9'# $b[{38Rta; "Ta@5$yሜG rPsm&[(Or|匜e$4F0P ` 'Ubare2v>e @rKQsLЋft\c ,ߡE4Wfhґ9J݊E= lR Gd2 UB H) Aj<@P}ld'%#F dh/B&p u"+CdֳRRpESFCX@\(Iq~A/#H"d8b&vt7<9 x-EHSKX ]T&ހ 0=I`XjC).WCcm(U7_TbTf-X+fWd';,pӨg][:JƴNd3~u]kg{IֶUDn S~w]Q.2)(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}a>'(0}Cs0A=3&EFuv*@&[ H`AꨯͻY <tE:0"N YW!W3 ˈ.A#P {ؠ5r?$ " @ #Q!؉kqe5 J6K UA ;7s=/ dpUsk M ch gPйYAHztХy?Iꥬ&/ {(wPeigB tal?h'ȀaruRC̺A BJDOs θz X؉a99 DA*qh*}8XH2;HmO2'Rh1N}h11PWu`X.{Y`3%1pͭOCB0d8͇^Q|CP5eG@Jl CPPcX fhZ+Ovc$ڇ|h7@7T=T^2dvh`F$MP`)d0/M0M~jn;XOƬd P2ɠHPLQXbkaʍ ~Tτ(|B0y^lf8ҨSГi\BAE&Þzlœ>ó-oȁ"@xCd{@YbTfۇE^n9(OƱStd }Xw#}pzpwhv .)KCo/ u`yPP5k$^^Sle|8fn[ϊm [VyMT#Ai 5leAof=qv#oˇd P)7[ .(rXqw#B!Y"xȀ|@D}-wŅ_Çk>iE ĞӼ}`"nd[56c|OA >ಀ;zgGf4 F p?Cr 2>y +ۿJU~4Ddz0 e3?SgӪs\mzxώ(wxOͅхyyμ+h „ 2| 'Rh"ƌ7jH#tF$ yɋr9KiДdA΅ "c͝?LOw%4὜cm| ;g`s&(ٖ<q `LqO,Ձ[ L_؞/SA=AZ^ДN/c@3AA}GY=$> ;3>! :%> )"-"18#5x#9GB&ԋ<#ADE A I)dANBY`N'm!č>AANp Uv;0@:(>mÎp ぐР&tE5GhCƥL Y*Wmc %, A3Yn:dW`d@qΫB="4 j>0p霣Xq'r/!91qLdAN{#:P:P0p̥N9A9@!4 -,)j}¡#@:Dy^wJC ^~@@.^i7P>8 !ApLzϳ9)zTADp(Mu OtKӇhr\goB@9nA3|i2?ՠ"āf?(< Cc"Bn CB<(}d" aw XD  T: v8ACmG?(9y.e>s7 s6LDA6 Y!@BcAU`'Lqs~ЇޡEpы`cS`l 9 ыzCO!y5^GJ= l?qk `nbaJS6 =!AhQL Lc*әҴ6)Ns5Z?P1(;x cp2jBz%UKmSS9 1#@;SSUgO (՛⊐&qBԊ(`3CL >` 03&&nT,%ppEiʉRDI}E3xACQUk[E2'>@ rqb\i>4-( iD#0+wh|A|sD#8Xȟ ̑$ǘJ·Q$S| MOR aCEjPt>1,!9P AN/ hON2;L实ax@nsb= 8/p /!Hʒ8\WQ)sH<N$7- #x"v%vxMbІI|嵋9ꡐ͊J^f7M^%(4m9 <XC|Zu!`~A\! !Πa1UD>Ab9T H"B5ğ@E9QA ><(XlB<<B0kþ>OLY0].#363>#4F#X1$%$AX!DICU zLh@:@z|胹mXC9@Fp $q\c{;~b4N&eVe^&fZ>C>0J>ȎC090AS@SY@PV&>̮|:W`(L ^]6 0 m,; tũZiZ L@ԣ`D D]ʆB0@MO8;T.^ƫM]k(tL`‰dB]lDDBNP H OBBI*CZv(U'*(Wxɑi;XG!D>BYePfWzR{"D@lD6Pf GWB)B@A\A0Lf֩)橞5 )EXA@9x;;(˹ԃ!>ïRT@B(*e=iL`P/مs,)\AlE=CmOhBDѮD E l<(A$ChEm}Ga)KN}KIN,ҰvC*ӡE>=ElrjJYY,B+~ld$sABmY @+8]@)&Bס"ÕJA&..6 %hN脐`<VzDD`@<[BP@A nIOaO0^M MB\PPan.FAεc4HĂN0\kBm[[UAHa ģ.E!=lEXH~&M1kp)o:<0 KdFIJ@pP䚩ޜ54C;D0S\I 8R:<"@/cR> H2p|ztHCmpfET@A|&rP|Jɒ$fTC~$=1  tڢ)U!sE}@\.̍@&'2((*>T@20031*MنN 1fQIc2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH<1?W/`G@lK[Kf"5\p1#L7S?5<i.[p:E,p@Zh@VH&|z&׹V+o>$2rhGoF$+$K88@ 1 Y,%@(CCԔFfu]2o:XZ$@@pJV[*BVs5sDrD:X;Ah 1T_7vgچ"kKP> ESp!D0NH@NzRk1)jX[bMFHľQćC/Rh=(oZl)m,*xG,(<>2P1m^ EP4Y^> hH8Ŭ;c>0A/l2̸Z%he:w' ENHXqV KK pNOxQ;)C/TP;XVhWh7۩a,Fc<ZȜ`!mA=hiĆgt7\2Nn>TtLY&Gv]"6JxL EC'I*X}JkDdJY<$LACel"05Z Pr mT93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/S C>!˃ @9jAoȀ!CAÒzZ4K'^dYA ;J<1\ 1#˱$ ٟ=(ey'Mm|ü /DLûT=dAlLstF PPDu\hΜ<`p WO|p8 N\=F՝L|ZVD^~CX@̈>B~:|퓎q@ݝ0&@,4MӠ8H)DĻw|ȓ:(]y}(0߻L|0F!!Et@w"3x̋;y ܧo^y /OS\̗N%o;<p(0G:.>[>"p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}>  V{%yFc }w ]E-pA6m:e0o; ;ם+qû|u-GzꞝFqTy@RRs6y,| HwlA %(GA4P$ӂ3B@ CiA` HJ"@HiyA}jhσЋ@O'"0Ĕ3 uq I),; &BQ9 0+ʋt|J8*x.ڀNJ{)Mr=t]v}xWvvRʀ2 }@`ai@NԑGa4(n ɦ2!̠9 W]|ؑ'Jzק20Ftx " oxvظzΡh /9&PPv2j: CVèfQG njAO6+, [tH@A iǭz|9'2a y9믌(0w@0%  Dd'8hFu;8y]EmhHTL: }`q\1yqw~]c&!QߪmA+S> !:0UA ^9A~!!ah_;GFDH \a$(<x(v<mBxhGDLg MhnIIxBy>ֆ0N C2YQ)E鐀!sF8HH#>Qau:XFz,~y#'aeXeq́`;b| r!`E;`)I51e҅S|P[9K (zrH;/Ҁcvy0_lٰz1GIAv"5JQ8t';p7-dH aP<a@ E}G`%QH#!F5<(BeQM8_~WϵT,L EdX:hE&`6@>bF,"ff v00:##o;"#H {䁂LO@ͬb !B*BޡR" ءJA TN@c&#fb³)*xbTZi^cj+ bX'*MJƮS:SRpΆcJ"$ޡRma.Ρ&@$XACTZ/(H' pEPk&R%* CD B AìbV *BuQǑ5n)lԁo,xv dT1j+6@+mjȫ(Pʬ!ì0 =C~"@e7($nB&B# a"JB" ''ȃ0HҞzbbbb" 08I, kafIZe'+L-Dr+42"݌'&)/" B<1Y $G[ٌ/D Ԣn)ma$"Kª$!eCR-q`\%ljr"/.2"A0j6P' pLI$qo'L$60 (s??@;L),Ez ĸ6qd"T'0@"b@)qF FA3C#B2({DE/2$ *Rhb3K3%BZebO e؊4ҡzB sTjރHcG"`? ;F% i6;bAH)n>ҡq.^NN'lB|`G AK$Nc:'Dg*!s//f$!dS/D$`,%O=@p@ʔ'RP( 6RRաT"n#lP$P/2$2Dʎ &*\BD)U@ `aVa'42Isa#3*>X@@5c5U#VdGdKdOe`a^0ee%%&` R'pA?qĠQLciViiif6T' "Nuڲ$ B7.dllmVm׶vܥi$Bk@E`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2&`Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvThJ  Bɰ `k3 `k"`#F)xh z6@Ge$cJ%H%jg1b32|V0n؇eAzb:kxXǚA9S*wB/H3c k84@Q04&/΂N%08γر "◒+ْ3.tNFp$EZ-!$A0h٠zx"$$6{AiG A""[E, ԘMԀ$]-1'ϡV+Ưn1la"MR3]To\fm*513 #喩>1jJK–qI a/?ٝpb +΂EL-G6::0Yٕ)WYA5C! v8r6KM@A7fbJ[h/ڨq%$CxΓ/bb)&?> #A z`'DB`*@V 6CF,`c()gf"H3X]RC@x`c&/s,ߓ)0M*C:t,!$vwjYv |(B| a"Y@"r}'v}CbnF`Hbn߳ATSЁL%0 A b1`=` XJaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0th rK/[ ~>*y}?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K Z?+Ĺ;0ߖH'BQ2>h?0@!|)3JZQ TYFCPvAB  MsP.0xeQ@=P<0<}2 9t +!@|KN[B"dHpmi}#)ȣA #@B^;5;թXcBs8h s7 mMɪdqЌ}NS6PG`Y$(@X$GSdi_jN="4  E3GВj8d>[)!aM;3E &0c e; NȮ!>瀐;(+dMfEמb29M锗F k)B Cd\ H?U^IAv^yd&<8{=ϛh$OԣOv峏 ?yONy_yoy4sc0OC\{ J&9: d:DGA0/hBD3~}ЦkU$HkϏEa#@:|4V] 2Ρ>)%ߞޑ-uQH2#dG; P|P Ҁs\ Adu{GT d$n{%v:ʹ@4@ B!Z݈0&Qn P yHIO@D ,7R 5p3_a6J` NB3}0!WB )-5 Ȓ8o>8Ccq&80 V''v]mzWXV(cs45BK^uM/=Hh v9ԁ@ 7 ps,9ωt~Oq!P\򱁠dh!&!*3%R6飞>v|s#}{#!9aȖs򨬄 ѡ2!`IJ/rb |@PMPXf< ?d 7N.#`Xf =#@-y NۂWP5 7tnRWe| t4­fswel<* #TLOeJ qS)\:sMyϽP>G!_7iB8tyBgw Zi #rps,֤(=*W `i W8zl`<1bxj8ovс#w|{ߎcg 9@bCD Hs\@XA(YJ(9'E;Kh(T˫Pu!EZ!• `} ?(PJ (<M&A1  P aB2[xф ^KTCyMpa_j s8MQ֒A8D1Tsb%>P'b 707cdT|Rxg&opbP*6([}2%1&Y5 Nmd##@#` 0(BP*n)vnnq}gPrݠVޓ@#_I}xE "gjp#cZ aqnIPt IOV<)>ptCY? Ir@:LF1$&!p<4Xj)@V`71X!P ED)OIm7!9p1<~1s`dF9n}|ypm){p> 2I6fRh#{gCR1ѩ"igqwj,>3(5p p`%&֑mo q*s=fS@[|Z@.vs0L!DcCmM|)4DCyXR`%&jqP1rZ,* bySu 6 ^h2-@jq qzOb% oч^h7(@0@ : jPͪ $'PAH}͕ bPb`gBxbي#7W`zC($#:x p @%#L ` S) QUsך S!D&@ҩwS鲧ejRb芭- ؎GmjdM>X!jA#QI[>Z0 A&F+sA` PEqp*I˻U>g<8`Hś!644Q̛!MCŽlڑJ4k狾髾_&Cɾ5ɒ,{72 = 3>@~ΰ<6УKNH:aDv3|{Wi˟}>|ϑ6w/s"N%t`Fc<#G߅fᆳ:!>d)QXA.cQ4hЍ 3;@ :6&HxFAHn[SdqÎ%$-ښACQ:`,Pp<ϑhAx>pK~OKN=tPH@Z|Oe ϲ,@@t>H,:3,2D6pX86+@;>Cb(" C@)=sںM< @BC;F#]MhE@Iу2.Pψ4:/j :p"Sv=9};7B\ă7TOl{ܐ::' >? C=OD/Q |%"~LZ#!{$$P |C77 +1AzP  {$uhG2өD ,@CY[z2 BP<q#=q t $ "J>H!IHA?SrI!Ƀ>,`U%@ass!wp聒'XFđ$2K@' `ŎGnyVWH_ L j MB XXL%g@$>Apx:&]0jV$`A$ DH@pm*Cwy 0)A"x:y/ n J@dwZumJ""ykMϊe2I 'H>܂0u\>e="&ث \=`qh@;Ԟc옍8&zk}uX@k) H@ĨBC).v>-!P O|  t ! )HЏByjC40!H [|p)e- x!܇L'  eu8tT'EV=~= P#` 77@W5@M}5QCg A<gqH0|=G&!y&<%10Sf1R`rp+v02> h_P=@Ѐh b}~hQ: \G~%P5}jl؆0 ?pU7$3-`0n9e˕# PvgGRE'Ih$׈  Cz<} 2k&br4`܀a :vy֔yd+.bT#Pa ]rE ,Gaa+% 0$ =X>h*`O !Ps !9YA$q'&iyM1 0|q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕp3{n1EB q2Bpr9/`GM'R0t9YLhd'"1q6T4Qv[.#4\1F])"Ҋ~ !9Yz|t!0q!"4uCWcMc S,`_ $0[U"08깞[xq$גYYsLLW` ymP@pNI`j왡Hu:P$y'P27v)Wa mrwe\2*_*_ș:DZG̢sR>C .gm!-*.` rP dpr:}ڑ," gY``S0֢qt]`waH% z  +4Jlk[Re 6 -40wQ0OA`dZJF#3@hj/D?#u\" gJeP! :蚮:,zT Yq$"AV*~PO@d&b*fڰzJj$ 5jr8 3!~E¤ (67+Rb@a-{ 2;4fc.gZЅ~ 2%"]b*U$]ǭQp@H5ZqT =K͚"#F#odv aHBmpYNʵ~KHGP[y}Ya& hTc =x`Q@srm @HZۺupg$HՏd#Rt.y1 VPv7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 005$5 Sd&Z:A173p#7tc795,>0@u| #UUj*jp!BR1``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLScL 5a"p@Sq'K>|P$AӯEBd9wUrcFpgH6$p`.pG"!7W9„,G |7O 'o^†o$ a>N;'o;LϢw`(oY>YB;z4>y2~rtV&]iԩUfkرeϦ]mܹuo'^q%;tvēC2 @عѱ Ђdfȓ<d_D=A&ؑS9=4OTH{ o:RC((⌄Z,{ocB`׆bk/c'v'PY1.*AJ*A>{eK0sL24L4TsM6tM8ˇ‡t Yd x (PI2 p(jH2Ey:Hy`sh *Cv[,}P49g -  v"IHp"ԛi&N=}G )cz @qFl `0oz%2!!J̀0cƬ9GU]@Pi݋t"h\hva6 @b3xc;cCydA@%u, |bWJ5U2d{|7|y=4ȏ`C@Q { ұfBs$%4Ї!! a 5nc2Bz@ zpa $@V$Izؓy|bhF8=QGy2H@ P=DI`B`T P3fM!cKKJHY;`  &X 2yOY "4XHG&dc~Tjܸ@KjpHjBD }E8L@B L%"r9{K%>;!1yͷs2vP-YH/_xc!uIUn=th]WL =2Ϩ /u8-j9C |LOT"_yy\vPI Ԟ IJ Çq y8` |(( y>>>xn | L^XhA>CC@p@B , ?=IDci ?zRwX xsN@y 0Ä(:\" 9f`H3%;FIDS 3  û ɵ0{0yp yВv'Җs@FǸ"wHCzulDžSчG1A`_ FMdQ̀O YR4Ea>8sT;' zQ(}Hq$ `GQYZ,[|\\f SrGx,)Ch NC5L|DZ*ȓ8p KA ;8ˁ0D%K4x҉*2ؐ D3&" @BS^ 1AbP( 5k:0J$.+ax+C`˫`ȇ Db, ܡoMPL `LQiKy wKXLt"P FL9R0t e L܉PhP< *;=C0q 1ą6ͅ 8z. K]Wj  y̎e X$ $ ű ]k#vw$$ | 6HH`?#la*-*]2L%k B8yR"#"'h|a=XY1-3#e$%RHz«с1@$ Sh`MH-*e4{< 1]L }Ӓtզ(֭V Nx\Vi$N#Q䜈(݊!PHsԁI#tx( [5  h2Iѷ4x xyywh$ 9<= bP*yt+CN!-B5yȈiL>PlXg $aP S@|t P4 ]w 쉟؞HJ{et0ǒ%1 9Oyi[-ok *qԐGQ+ą" ۷c X3JKEuAHV.PT+`qA%JQ$?es!Г[P/:{tc[\B]8EJy8l#QyP HJݯ@`}( ՠĐؐzF d]  XN5eh߽=`&Ͷ2|dxb`!!Ww胼' F`ya!zOf5PJ܋|Nԟv۠+v">P" M>5LA [e5%"ٰh@Q yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDxHa]=cb'u(05sneWY=.(Q5!ntPO Й ćI @#Ij< EEdλvwP6\{ʀ9B!vJPXI&yh ʠ!eR!&UhɁ4UpȄB9mRF"!""#}!&4C1!jܣ990% PHYl-mr&Ou%/TKq._s6Oy$P! M`zW"h*;ns?s2/MDAk3Y^[")pDtJNJ{iLV< rK?uTOuU_uVouWuXuYuZu[u\u Ё]2 Obc$H6av]v᲋⬉L^#_n3 !W 1vw tjwvIݘ3w).x? }g& kc|h呂0Ө¿,?H ? FH&`efՅXHa3]y?Q ]7 s0(/@xgx77Q)94?$U ?獴 8W> !}>iЬw 4Uoe@3&5"+ 2q[AoQ|VyLY>RP#}04C8Y_˗|PanXC "@oh8!~J}&Sqc{V^ifN|Ҙ$W﷍{'w`U 7up^y  |^ܽ+h ‚Kxp|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5qyCc dfs ~"]%i`P;jzٸjN[t3BBChwKAJEbrO;ޔ@^\+bXi-B󧎎S6YCAPr"%HT<쳞<8tOR 5I!gAcAe @Aq>j!UP+& p?<.тIƒ2PGRy!xGdLFс-^)X # n5җIF%#-4-'r"iК,#;>)$N@:}^Ep oj)z):*}AqB", 94PCC 7 3A>9$4霣X`R<S9E6D!@Fl[@:Q<$SO8Pza u@/XA2CT 8"Ԫj=> !m:P ꐽ Z0梻VTrR>+[F Ѐ >=FC=X @(SG>05d]lYH9nyk2_r,a#"tPh"MI@]L7/ D7:k#()RV"Q#zXp$2~ꈖ>poCbA8G!vH % 1@ա"M`&t !7 ه>~spQ#gd^$."@0, n+aY"a2|~< :$R`1i ^bsl 3x ^A(|dr$-2sC8;fG<:h@ypc(Hsh (<5ً=t XZ'@қ_G"P8`>f8rx`WBc&%uẉA ỹUp! Eȑ$;(֓+D9d"F%Ta[AIՁgDCfA*HZc.SY@!p@zTt&4:PȉQ I׺"Dם 8v`H TUD/Q&&d}ld[Twr>T^'jUIDI!__so<ɠH \/B`e"ό4ךA&qaZyVk,2~0#,awf8s&`Z;LH/` ^M ^Aɥr(@xh Cxr$LtzifRV^pT0'p@@A\̢  H (a%FDLq}L$z)ƪ}b+LdT1P1݋ߑkrd dY`O9-s;wpd7> y|n$`Bqꡇ,A 9Oo>,IoXc [ak[>BM\M0a{ƣ,ppq7-. `/k6HQcM}T}vD>3-HK#ϹYlģ Jpp?65i6F\1y 6_y:`<[H>,2[1m; !l#ʃiY?xd ߐA"G @03s7NB !KF#CFUG!LS:h)H yԦdΑCz%[ BP>vz݇GV6lBK(@w<$G!=^A ,a䃊`\BD-5FCUD39A, ;ަOE OўIʽ={ ;AY_A _!`%,MJCSLHԃ;5DCC8`; EZ쁀4r ǘDaD ;A_#bMPv4,-Zb$VbFdB ɀ>l@)H4;(-C+nBCXJahA4m @4B_v8 zLAA;TXPġ+b ! `m@$AAGzC(<;qG1" #B@ԋAbAjmI䑜*GGЌ<\^aE4DЊ!@g%H >d17MDHc%DZY!IJ8>rL=CB@m>TXM:Rt2@bC 6m] nH2ԃ'5EYbdC]",!xIeZR\CF4!̋Ie@B8SEXiBP!\HdI>J:\! Gh$S2dHŸAHn afY-DzGD8CC$ɘ,o9 }abOƑT.I_fj_`MH㡠mX'mvF!#Đ^`)du ;]EPChyL贅b&R.fKR}zh:DCT&eAH'g#yzZ,:TrC$()FH@= fL< W42䃆gABGK*߅DٽmIiA|niE<&e,GOAK!;<-Yi&_BܟA0@E(ߎD a; pC/ #6Dt]ϢFA!NA0\*)e&B/XiZ*M`E02})5gɃ;< 2m#FhE4a~ V'(fC=+:܃((Ljr=:ؽë^Zi!;>8@C8?ĞP(~GRjJޫN>_V G*d=p?8Cҵ]i&x;סPlʢ^A 28e,=$,;Cޕc~^O>@V\!Ţ,ZEJF&i*C78Ì .&:]`C^!5 RC:>@2 r.Gx@*[泪زJ^ GjA(YnBH.vw7@eFÍ$_: <(/bhrE .xpZҮE1BZ.Z<8薘B (Ц=FJ[8ӜLC><($G`oӟ!.v E/q )5/B؅b-|0ȃxa0fnpEp \hED h~%r;LNDxi oyl T~psS~VP \bS1-G۸p ZhT->o# $G oHN/wh``B-C!ԃ =N⦲*2+kL ȃ^C]aCA@I^T90`U@:o՞aMohALX[-/ g:ZPtE99;DCW"9Xѣ24 RPٰH3L XÌZC6X%A0Irdv, \djTĚZbH3CKFsnIAOTF8!_>8Ӆ/:ln¢'%{so^ӳX>uEו>\[Vs3AȈv# nv}[($5(a@XσCZyA%%ׅhT0 w=jEP9tSGz:dȺ9E`@/!0l@ܱpz 91U7Dg {B 7W?#`[|-ĦyBpX=l| L#8<&,C̕@Kxo=:p;7JD)83#F3z!0kD<1P1պj<pDE7ìxoA`H7&@HD EE/(~ s֕XqÃ5tjg>,BrD`F\8~}ycO9^/E@ 3"5AD؈w ZT  )hF:dH >!`hR@3xaw JKF< A2$9y!y*C?Dމ`wh;tb+Ƀ/I3R0!BkP 1WoCu[6at;7/!:ӚosPz0,⃃[TΔ7^Z'p Zʮ{rZŧjda`Gu 0҄2(U a PJ`XLZd]XgehjlݖnpY HɆS&X L5S>b |Q`F0Iu^y5~%-MU-[d65zG`1HeQf2euޙ}蠅#5w-/t#%'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGѱ_r?C=Fm9'ݷ] A-0V2f;~k'O4`Gyqg>i zN.EIӀaw4jZOST hyIRBLi H䁎-S@Gq2Qqkep`?LpK D#HO- <7#!IT U7.}IBP<@jC8Ō !E&PQSefX{RKA( tLT0Ѱuʕ%-bQt ;5*I*{dG&FEtHXaGA>^(=f˛3%rғ|*!yJ U;[ 蠣T'42*)9kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&9@/vL<ěPf?Sv+"&ӎ8"EG`٪*L $G @KHy *ȀH)d €}T+ 0O40RP*_JVn6j-g[jo^*ZɂT*!pЃZBHĽװ؇LG]|! 7Bы^H`j聆Lt׏xTc-=1֧ߡm:!#`%}>쁾Cꐫ 7 ̣$Eҡ}KeC0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_xyTTx]J! s@|c|M@l,'HKd"[b…:k O$NFD pG:$&#6 HKE  jijdZƏL&0IΡ! !L P 0f( D"@:@: n86nC @ ‚ ƻb k !d@6` #4,R-@q!)(R p-H!@:iQ{!cM!(T !@LD qqȐBNgJj$ X|_b[F Q[k$@ A a-!tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzH!n%l# * @-N$~%bMba c&%!J*N bϖ!;!)JP瘔b  "((H<  XL. @BVtB@aRS11A*b 3dT*"SdR-7NHR>@] S65[N39>_fb!aTS$,5 -4%P!`2c4ܔP>;[h0O62Ʉ(" {?@tY* `BxʬZh%2j!##LH`%(I1K4Ũz`A1S@ : s-c;#AҒF,00@OH>L$0p!`emKkvIt@ i! Z ҬmI !@ b⏓6eDb΁JJG&4R h3 BƐt D!*LrìHRh֮pAA$ lT!@pr,I=0XU^硝ʸ3 nT<TZZuR2s+ a@D A3`j"5Gbjkԣbm?R<7 BQm{.14a8, 끵ZpkQpo[[6y 0-킶,ܨHQuU\Z(V:bB\B A FﵤJ@ V&II3),5Rl:aff]'iAWPG6hKhA.! `A-5fF6m+!iP^R>B|L!p`B5l R,5xcI/7Y!k@:Do7W5A6BN,e|W TinvD`¸r R"wiGX喆`LaIau2E2*qG26q-N/V$AVs2a V< A@$ D{S[ 6L&Z0 $@ fXvT a^O2{Ȋx Z8Ձ lkn$P ayYl tS䎝(͏"ٚ,Ğ`Th&P;vKlCh+"b6tE@ *m5A t)c$j ĕq)Qkp,"t $ x9nVZMDJ! DZL6 eq$ g]:2` H̗Zjʬ"R=@d*Ρ cxWjH//0#XF^)"@1RC{l#K:> cC3,6DdXC.P*΁LBY hL@ $?-Z׿ "cKC=0kk("Ȩ8F38d<"nz;{0;{6*$"F`z?>#4!"`!e@*|⧇VY[ٟ>:ĠDy%AhM@AJ`F?|ءd0RGTLUQ \N%맦PFn*`'b&v@iu/sW;;HTPPN(LĄ@*l7@@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿj@X'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.ϡ^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1XρƲ0K+@"Z;= $AKu/!E@Y۱DEit^OK~+i >b+ɾC^Cu6(_wbfFh OGx,臟_qD.!"e0@7ND!;.>NCX؁VFo;6MIi6֦yT"9w3^4P!C&\.ƍeT܆y(iH&7(9P68Wz2>G@ pљ:լ[~ ;ٴk۾;ݼ{ <ċ?^Zv$!]&@ːq;9swYq<@|?3! Ll4*wرN2AF!\×vܕ6U3>s;P8>L8gv'v7cgF=CB iNJiRe 9 d4<$% \7p1p;' _ 3@GTΞ;XA>s7jk_FtՓV<UՙK0y ;{>׻9v|e@ߨD'Lnf$>Q#,Gӫk-!,;q|M[cuɅ#OgdLbF@FW1CFtJ/tN? uROMuճ +~hqF@=od,{g6Z)6ٰ[=QOo%t<`8U.8txG/E. _Nuw;g\˼ VOߏ)ƒCr"4@m jDT q$+K7 &( rj'C IL%0-X@Tȍ 1t|>PϕqM 0Cpjkfsݔ7יiV <R.(Ðǘ,#fVW ΙvCa&Ιj]B jhFv&%C#K_ Әt4Mo?4HcWF4` #l } w 9Rye ¶$ 3B)tm@,;%UI Acj wb`wȕb>XԵ5#LQ(Vȁ-7=DU HaGT֑ʇr1+ZV,V>UrzdWi+@Kwl.P$N*wms]1a$L=<ڂ iYR‰8#;e|3$;PvH;0H|,15y]RA x^]7,PW#qxY[=:6wt3^)yK*MH{4І<歯Fk#:6 f0f^tN5rNP ؤPZR | @ zЄ&M>>A5 mdb UAÜAR{Y׃m3W5]˃u]lRUZ˦@1RF$%B|,o_[-<MG }D/я 9Gzo4Tկk}늲e6wr6.ct}lopלw ~/+~oK~򔯼/k~?Ћ~/Oԫ~o_~o~ /+oKԯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ7u\7=h>ExpKgN~ C0OKSq =LdhZGG膴P;SOd!iWxdq||(S~xV :kvS!![(xhz" L 1C Rr@xvӊŁfÇPhfwAψz9fTc|a hAHXH5hBMǍ9vdEy?(яDȐe pHx'(Q$;  ih^q!IH)֒ PXT$IEx(r<+Hr I'*ru˴ po~p WPeA@ʳ7瀑o>o3)  FE<0`b Id,|R~93x z9Z蕌"p 7v9B` ֘Kg_uH+b$RL!Ie^Rht:N%%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST c9RY*0:3nd7ݸ,r}YS=̃!| aN|I.*S>ϻx7~4>q7yaHDYV~钴SpϟENb!t\w!OHInja͛FTqQ+>gEb36t7`Y^SBE=T$ p9FqčT@ d 9 )BȔdHMDBT7&*A#F! NXaZj;.H".=p-/c54'eg*A !CdF $DCyrFpoپ]xGS GaZo~Fe0A1BG@K_Z tSd-i*~Bf$L BzC Q  0rmvtF|/nw T. 0Z=30[VҤ0OT!(d*fE N;&dD o@K;аa>†ԣ Q`&}h(1^ h!]'Υ1O1,$4Ϋ *՘E9$)^{^S.1뻗G%Vw,sh S,{%[(;5~R*X"|Ȃ|I!޲u T-c7;9Ki؁nKv+N@f%SG`bk/ǔ@tl@9 &F! L`_ٵ2,A 6PlSx{7(C?1DG$DOD1EWdE_1FgFo1G[MG(=,(}6SE$*Au2hv䡀 ( 50ˇv.hmsh );@wt8v 3 qwx6݄r{Ɂ`ǁ'6ӸpYF(|*I+Lj8,kW&&t<}0,3Ф9DqU Xe}tHH̴M ;+U@yPss6v"jh8JA[qU_yahˁaUy0@uBeh%Ig%Ԭ}W!Lz`.z@@CӊSP 5h8-= 9}Ոc^UՐFx#LFys9iwb#v{+>?7 t7lF8 :&$` dp( U3Ry-ɥ.aYd৐NnBg>P;tI"Z!M:ORMk4UU@ ԡ|#1!ATI Emb&Lg7 X0Dr岘41]FId&uHd:}p{@JGFmUeP>QT2Pn |P=պI76З(r7NJ'qU°Շb[_t 2􁏒d `H0.7ekC@b7ɃY,FYh@y̬ wXNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW (~5>jH -r/yK:$c&wМDy%b}9EByҕt7O<  X =e)8ËugG{ˍrQf)E4"P.'qQI`s#?xQߙvG|I5\"Jx-| .o e+}E?z#ֻJ&c0}9PC'1.}˄`5d>ltIVFj \-о}:ϺVèo+8nޓ|v,)I dIȣ-IHd Jٰ 4 6y hG`>Ev耤x y G|tr* op@DlTɕdɖtb5,upQ5L.$ VEƐ苗Ȇ; /|;Ph Jj t˷˸G"Xv &Ȇ{p{U  Ԉ>2}p{@{0L~cd85ȼQȭL1$8?$NK5(88Ev@eP+lq vMhA?<ڱ|H$ί_tN !ė|H(%;}x HY> x (\ РQ j#} Ia9$@xo(f 9L o4"5#ERlK?Ȟh MpR$Cz`y'(J$|$5H5͇fpxp ';Y"|h"Q% 3M9}!ׁ|vS%PT-F5yDKTUUeU;(9yq<0  ȯ֢ՆL0: '0ۘbX v.!-Y#;LJaf\zv}0T:FL ǔdhM(EhA ևv^Nhy0!9eЇ{s ,՚IiPike  &3@yxn@w}hU(cP$= ɱLnjڇta-B_l*$r: PM|@g}Y,WqgMb7,CfHE p}p`,hPȄ() h،`lfȖ8jZx^0yevp y\T Hb鐊k_Y), ЄF!( <11m}h><9KkǐH}o{8}(|w&H8 8Cih+z؀tn ?hij &.8"رÐ?~Z~>LJ6SGutۙ탇,!Hz ЇzȁDZ [L+1r9ITuI$9|DU:UYϐ :^q}HTWu/:$=  t_Vi,ʣFw$f @y>IWgW|Xy7C \y˾5ޅ7&'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF ЁPӯdN+9Q9˸O[hN/wXˀp'y/_fęڳt !)99Hw3Ģ{0"Lp!ÆLhj_sQĊv(rÁ$?l$K-bl)s&͚ + &B@1s(ѢF"Mt)ӦNB*u*ժVbͪu+׮ Ov]𺐁- ZΝ)^Kn ͓Kwݼjʓvސ /exqc7eJ>re f|x5tF.PҲέ{7޾.|8Ə'AݓmSzC'3Xc^ˤW5Qwų.R_j~-3OdUe CFA8uVMP9Ps,]7S r#X'+آqφ-:d0A܎ޏx`lB~T y%yҔ5yL'Cj*4ЛT Ob05@/"2ڨBi`3 t<D`O:$fԉ<g:`D<2&\-GZ-qS<{Ds6! {#O&|׵|<ꑵJuz=A ȣCS_ק:P>#; ϥts*>㌖1Cd ,x P$)A\ECD/Q<$|$p;fc,#8@*n  6vڡA+nēLdǎIc(wKPL_ q %\&< e?AL`H q3h,a4(G;яJ*Fb<"R40AAQ b!H4 cA t60x/ob :N!cֳ;vS2A(@{1t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6PlϹ^H>x=i¾;}$9m3LI" AkZ6Ȩe Xq@}eef]Nȗ@:ͱ sy#q62ӛC=Rr PuJ53 _Tnر z\:ސ1p{Ap b Ny]!`ʮmE,|RgFA>$gm@+e|5Ał |B>k;A q|#)}H|`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^:z$^ڬ TEhDfD͞B@=Xߵ;H%>@0|\A(:4!C \} TUbA` `C, a"x:AԊC:T?=lPlB@-7zĉu,9QAl<;Jda6:@SU ]^ɥDHE<A-a\M%ZAa1gḀ1 T}D8fBeB@HXC=:j'!W ރ !D*I$۪Ɉ*J 7$6'$cBZh"8+⃐;jp= 8?PCD=.փ@*R)û8b@?rWA=1Ԟ) @FJ ;\cC^DDE^dFZX^dLLdM& 8Db ND&AB%;0G> ,"B=F=8e]C^އ|̣p;x` AL;D6i uI&EMa&Ie:IIWVr A.N* 9TfA\f<4BmA <$;\ff6gnn`Хdf+u<8:b2f-#BT`nO0 A=BdBf.QI~g"mM:BhJ!pb;ĉWZG0LndGlc (u(x_>A=IL@3LlFZDօ<@= Ŝ\?8`5), tnHC/0:*ę/ }_z2l$t($I*(q"DvW՛.") $cB cRDD0*MM0bɆTUi\9u\IJ~WD$QDȃyV2+CDjშRk!%æ4$ ̓:*NX>ŪCDQDXRaỸ};:jĽTH$yROkCC=liBv`9Sce^A ``)֖̟ C#zn ib(BŪܔD@ܭX<<, @0Hحؖ4I@=HC-톕,ےVfd'9|4;x؂A$ H]4: gF-(ڎb@*ǩt-m-H@:@ n`<nҮ`u&b$1,>^J:l@Z"40uH:X>0AĪ*dfK$@ 4lO*T0'II)G=% p 0 @7z>EAD@I>î@>Rރ2D4:EHK_`HI0^>m,B`=h@C2@i"6 (`/<@YX)kʖAo>>)Exe[Ơ#If KcJ\^̊0KjE q><&: ZBd[lݩwr:-I 41bZ>K VC. 1V(*D$SeAd@æALA/rU͇!L:ۣl@++F5'F4s)%lC" HX1U23pBpQp^+b3vc;c;]r=SCSHvbPeFXtehvii7 sSLkw_{ԅknvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyy7`uĞ0bN<@y w`(raINU=bzK: @U mODKDM@|^>Ldrh𥕲9sT!AtgmXYiGikAD%CDRloA ^^`,rX<\,; 0]ZI{#6s%D,G$PGC|>b?GXR1-/a]ц>Z;RüW,AԈ ~Kn|R1 BLu8̳lADU#) ȃ{@1 +]΃}SNĥdJ>lJxt ^Iο̎VA < ӄ3>T@v}$C$YTI&]惩U]>lBp@}>ThxOA$!^C=TA@ݏDXcJ:ß:1,BbA)-BmDLKU#=0>)rUA܀׾i<}-(@&A|&D(OB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7}`G@!;yN_w#&}✀&;7`A( n#,3p_= "c"12Իo_)&.BLALA^* Q lB$>xqǑ'WysϡC +|yp[@:?7 \R=(v\1uΑ1}&H.u*|*AE$g5 (zJEO F2Yi[qU]y#ةGtΡsCqrG8'Pށt rˇ{tY*{a vwTsԙ?} X3 D8gP,8Q%z@C2sO>|i4}WYnaYf"+!FI@`JToG `0f:z櫱By$G1j1Ja xBI'D1SJ  @؁@l~'N\o!_Mª'o)J n1!%@CVPá,q7+i5· ´@Gч2 !a'/йm=ߡ4$g^ 6;!SgG,_}ZɒuPMP 0Dr @I@>UR>jPJh`s?.)`9,@2*n  aHH#y$z@b۲&Il䱉U 1 9/!@=0!! `B9Αu$"`<E7P`z38`]QGDDH). C@dD$呕@,H}C@,` tH(Ttp Ї> # c ` hB7CƷ+ @{r*ZA@+OyΓ=O%Tj4AP. upB>ĀgWPnGARx"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:0o5O[9zYgVCx_X\Ms`$8N'w&Dba5e2`G/jtM#C49."7K>@%d:* HHj\G 汌_BE tzpzYQBҵP`؀8H6&GVWWtT: :`•`zqy0c}>ttiZ}UGby5"` \h c!$0=aYaG2Q4pRd!9CL  s]4هjC&_%biE 7>W;NB g(OX,=!A-hAQɌO 7}u-SV3y@ @OQ} 6apBqQ 200vM|r"iFaTBJ kݓ@B(SF{Ag$,؄@+ U|# @C,x$h(0bLJb/0 `C=bP "tpH߷guoDY.3}lK@8wdCNI+6PwP@\ 1ULStUJC ^Βݐ@3.>Щ2 G`@%tϞWi>Î6XPCdٖ^#ڧ}| A [&T>@Hs;gR Î$<EC *Pc=K8fqVqgI& !2aF!8d$J(Y,!z"N** VAp즱bMND*gM6KbB!Y:xB#@i!g2>g@xɰ $hPXa!& /߀0 H!Xa{8 !]ԅ!P!ڧ_#P*7R I"!a| 6(@A++T( A&L &{A@P~Dޤ1"bk gFL *@aj6 ޡG#!}Rh)pamN/¹ahuazAz]*@Y@ B#!`GaZ1#5r#[fa3uB("bc'5LA! (t0r"(@f3'xƯMejHF R@#: -g F|'4O#r-rOԠ*@g1"CPaøl af !((J2hVa0>PƀD)'P8HH LYHء-F%& %8>R R!H@6+\s88$`KH2T2$ n6` # ಩>B$&C`&v|2!'B4"0 }'U46/QIX8 $&$@ 7)^ |FZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2'`XeHtISH?j&bJ5B+ (=JI4Lݍ k& @ "La2 8-Ae"=´)3TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#z3[\Ȅ#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r*d>ez6i=@<@E;Hүu/a|˷d#B0$@"wy5#p dJEnPs-uvqQ>a)%XuS">|7\!܄DN8-ҁB(NdP>83Pr9O* uEkZEAqLӁa.QJ7%q;"p*[[e\PMl",1qIVu.>%_z{T9*sCAEؘa7HÀv#R.r[!xh0!2A PReInoYnb2!&^ZkFgYy ڠ>?!]G?+s!4!rI6n0ҁWj ||!<%|)-1<5|9=Ad3vOSXyѳb/ BԿ]r_guKX#X8(pEx8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIA'_AP !sw3;2NCqv-]t` -z *7`> t:ǎAo^=t `+ByI땏'ཀྵsN+װc˞M۸sͻ.Ny Bn,u~\tt s%W2̝N|S~&O {y{s"T}A -^AԃB|0= ($h(,&Nd(vNsSv 4dC8@ CC/Td5ިAb .D>Oi7Xgȓŀ"@95;XOi-Jb~gOS!'褔Vj饘f馜viHE'YʑW;=9x+ —k7\ 鿗IXjA@B #,Wlg!FI>̾@ܨO=[P>`\8(?XPO: >3{6_QN_B`@P{8{#>~:_a(;DW0HM&;N ؜-_Sތ7G.Wn?A=!g砇.褗n{?< {|K9c LE| hGH@0Aԡ^$Q:6EQ2)7@gчt%QD恏y!9 ,PDz` dU;1)GI-vH ba2sa%A7`v[Ҍ4ʃq01Zd4S&_ġ>ŀ 쨋 #F>Y+f%f2Ur!r#Rz-5Ib R]z!8iZ2adY<:쑖͜ E@@C#%%䅃LgM% bg9x|>ς0hPHX+QF4\ ⃔ TGJT@@5Ct%@R:QĢpV! 0㮂 5gv)^ sHuwS0KcôbƮ'ODH 8Cx+*3 ⰵ!P]DzYX1:>PC#[@NF$v mp΁C %2*k$"G @=@j-z2g|Qys@ NŇd9DAJYN0h/wЁF 8 @YD !pLsdO3:J/a!%K oPK$7P\q0 k4/{w|sX,pB8 duhF'.v8rAR 8Ǜ b-*-c,ad[ɣ]22 3G$''a24~G|HԹq  fA2Űg XT CP1)ݙ q=$blhT/d+v$cńϯ!jeG< AjHc YbPArrXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ Zek9 P ;6 $ZȍzOpa-%fz@CY (\>P(Yz , (A+:M :@tu4cJ7y*M}7oHΑ9!cA`D@r0қg>Y^x+EKURrg;qAH t&U=ST{aE/|v>r e!Z:BF1 SG<zfʋ4)P(?H2< zb}  hjZ[ai v aDz7X&Ydʀ A% Gv! % EPw?" $P g\E?@Av212W*e! CPbK"2"X">(rS}g2"SR`xzXOJ )tb!G } i+@tb2AL ON(L z Nh P AX(17e [F1LG31 V#;Qk".%6B&F!Dh'L 4b}7сDS@ j+R+AvDEj``-b- H\!Et*>5`Ej*% > `& `T"l.7BBuPTwLe8**E@+e% 9}2%p] y:0/r/b,p`dÃ06c5h0E 1؎>|cmb $*%`72>^E@ H22v5D@p8g:v#t#+.E0@ 9FP29PDΡ=48& 3!Ls2F -1s5{0#MWXEYܐV0 6m6AeDivӇ_X!GP8  9ZZyP ^82qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;UI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*!*O=؊t:0` }WvQ\^u hxz% W!Wqx`X%3K^UY7^Daa0|HS!V'aF'P!V[گ{0 fiLSGj֌1@Up%6VjKsjh y&(4 P8Te]qMGd0qE6"ȫN*{%wrSRvE;T+F {lF8Hzf U{^y^zsk{x?!:| K'q[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv. !4^c?!'kb(,)v۽蛾BLO /~P0[#/b ca 0aPƫj1//3'ZQ0~j cP2“2bP. +\}Ԡ0yp,iПf 0yus7 7c88Pܳ;"69jZ3 (2:(f||!t^*hr<ƣnL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#":pqKktIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2 ng$j斒V (!3.yՒpJEWi&@dk$g7pפnբr C0`Y[~Vt%m 9~ p-*°s0ʧa*̢vl8yM'H'1 m\"o~?tx]+ |3n6V{l]P,a$M" 0PYq p[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*/a}e_L q Na_j j!ŗrqqR$ʵ`ӁrniEbQ^*+MWac9]}K-W o;hV\ o@ .dC%NXE5nG!E$YI)UdK1eΤYM0ɻpu:\< `yJG~g `"S!)wP3J},Po T0+uJ>JǸ| 9'*y6%!PCSyH@ K!A CZHs$k!nN,`G>C@g"Đ%Xаy BtQH#tRJ+RL3tMF}jQ8TU3*YŬ.js gtsc',@\Yh ǂ c:XPz0 Miy &Ԑg6!1xܫ}Bʁ.̳Z`11{LsA3 SO"[؛70Đ ruz`s o2fsyg{g0`hDQJyb`jzkkt ( aKؤҶn{oo* W.k~q#|r+r%p扢3r$7A^E|@|@wd)MyJT!24!Z:`3vR@=_ΣZ dAP"t(1;&C 50A*CUѝg=퉻ő*pypk %; d7V`:I%|(HTFlBqB0,|l \lK2U]1]ѧDѿ De1Hɸ'wֶtC%jQ U:K!/eG^сiQ0x;2`¤P@( \g(RtТ[Q)w@L C3(a:ῥC6BĀGXFVȨ4!U::(8U Ep,A(a>eᖅ UdUtCXXy֑G=\FWӕ*[:6EP{ kV@95ekيfꁐXt t*B&VbE9:5m\B.`4`GX9'# $b[{38Rta; "Ta@5$yሜG rPsm&[(Or|匜e$4F0P ` 'Ubare2v>e @rKQsLЋft\c ,ߡE4Wfhґ9J݊E= lR Gd2 UB H) Aj<@P}ld'%#F dh/B&p u"+CdֳRRpESFCX@\(Iq~A/#H"d8b&vt7<9 x-EHSKX ]T&ހ 0=I`XjC).WCcm(U7_TbTf-X+fWd';,pӨg][:JƴNd3~u]kg{IֶUDn S~w]Q.2)(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}a>'(0}Cs0A=3&EFuv*@&[ H`AꨯͻY <tE:0"N YW!W3 ˈ.A#P {ؠ5r?$ " @ #Q!؉kqe5 J6K UA ;7s=/ dpUsk M ch gPйYAHztХy?Iꥬ&/ {(wPeigB tal?h'ȀaruRC̺A BJDOs θz X؉a99 DA*qh*}8XH2;HmO2'Rh1N}h11PWu`X.{Y`3%1pͭOCB0d8͇^Q|CP5eG@Jl CPPcX fhZ+Ovc$ڇ|h7@7T=T^2dvh`F$MP`)d0/M0M~jn;XOƬd P2ɠHPLQXbkaʍ ~Tτ(|B0y^lf8ҨSГi\BAE&Þzlœ>ó-oȁ"@xCd{@YbTfۇE^n9(OƱStd }Xw#}pzpwhv .)KCo/ u`yPP5k$^^Sle|8fn[ϊm [VyMT#Ai 5leAof=qv#oˇd P)7[ .(rXqw#B!Y"xȀ|@D}-wŅ_Çk>iE ĞӼ}`"nd[56c|OA >ಀ;zgGf4 F p?Cr 2>y +ۿJU~4Ddz0 e3?SgӪs\mzxώ(wxOͅхyyμ+h „ 2| 'Rh"ƌ7jH#tF$ yɋr9KiДdA΅ "c͝?LOw%4὜cm| ;g`s&(ٖ<q `LqO,Ձ[ L_؞/SA=AZ^ДN/c@3AA}GY=$> ;3>! :%> )"-"18#5x#9GB&ԋ<#ADE A I)dANBY`N'm!č>AANp Uv;0@:(>mÎp ぐР&tE5GhCƥL Y*Wmc %, A3Yn:dW`d@qΫB="4 j>0p霣Xq'r/!91qLdAN{#:P:P0p̥N9A9@!4 -,)j}¡#@:Dy^wJC ^~@@.^i7P>8 !ApLzϳ9)zTADp(Mu OtKӇhr\goB@9nA3|i2?ՠ"āf?(< Cc"Bn CB<(}d" aw XD  T: v8ACmG?(9y.e>s7 s6LDA6 Y!@BcAU`'Lqs~ЇޡEpы`cS`l 9 ыzCO!y5^GJ= l?qk `nbaJS6 =!AhQL Lc*әҴ6)Ns5Z?P1(;x cp2jBz%UKmSS9 1#@;SSUgO (՛⊐&qBԊ(`3CL >` 03&&nT,%ppEiʉRDI}E3xACQUk[E2'>@ rqb\i>4-( iD#0+wh|A|sD#8Xȟ ̑$ǘJ·Q$S| MOR aCEjPt>1,!9P AN/ hON2;L实ax@nsb= 8/p /!Hʒ8\WQ)sH<N$7- #x"v%vxMbІI|嵋9ꡐ͊J^f7M^%(4m9 <XC|Zu!`~A\! !Πa1UD>Ab9T H"B5ğ@E9QA ><(XlB<<B0kþ>OLY0].#363>#4F#X1$%$AX!DICU zLh@:@z|胹mXC9@Fp $q\c{;~b4N&eVe^&fZ>C>0J>ȎC090AS@SY@PV&>̮|:W`(L ^]6 0 m,; tũZiZ L@ԣ`D D]ʆB0@MO8;T.^ƫM]k(tL`‰dB]lDDBNP H OBBI*CZv(U'*(Wxɑi;XG!D>BYePfWzR{"D@lD6Pf GWB)B@A\A0Lf֩)橞5 )EXA@9x;;(˹ԃ!>ïRT@B(*e=iL`P/مs,)\AlE=CmOhBDѮD E l<(A$ChEm}Ga)KN}KIN,ҰvC*ӡE>=ElrjJYY,B+~ld$sABmY @+8]@)&Bס"ÕJA&..6 %hN脐`<VzDD`@<[BP@A nIOaO0^M MB\PPan.FAεc4HĂN0\kBm[[UAHa ģ.E!=lEXH~&M1kp)o:<0 KdFIJ@pP䚩ޜ54C;D0S\I 8R:<"@/cR> H2p|ztHCmpfET@A|&rP|Jɒ$fTC~$=1  tڢ)U!sE}@\.̍@&'2((*>T@20031*MنN 1fQIc2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH<1?W/`G@lK[Kf"5\p1#L7S?5<i.[p:E,p@Zh@VH&|z&׹V+o>$2rhGoF$+$K88@ 1 Y,%@(CCԔFfu]2o:XZ$@@pJV[*BVs5sDrD:X;Ah 1T_7vgچ"kKP> ESp!D0NH@NzRk1)jX[bMFHľQćC/Rh=(oZl)m,*xG,(<>2P1m^ EP4Y^> hH8Ŭ;c>0A/l2̸Z%he:w' ENHXqV KK pNOxQ;)C/TP;XVhWh7۩a,Fc<ZȜ`!mA=hiĆgt7\2Nn>TtLY&Gv]"6JxL EC'I*X}JkDdJY<$LACel"05Z Pr mT93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/S C>!˃ @9jAoȀ!CAÒzZ4K'^dYA ;J<1\ 1#˱$ ٟ=(ey'Mm|ü /DLûT=dAlLstF PPDu\hΜ<`p WO|p8 N\=F՝L|ZVD^~CX@̈>B~:|퓎q@ݝ0&@,4MӠ8H)DĻw|ȓ:(]y}(0߻L|0F!!Et@w"3x̋;y ܧo^y /OS\̗N%o;<p(0G:.>[>"p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}>  V{%yFc }w ]E-pA6m:e0o; ;ם+qû|u-GzꞝFqTy@RRs6y,| HwlA %(GA4P$ӂ3B@ CiA` HJ"@HiyA}jhσЋ@O'"0Ĕ3 uq I),; &BQ9 0+ʋt|J8*x.ڀNJ{)Mr=t]v}xWvvRʀ2 }@`ai@NԑGa4(n ɦ2!̠9 W]|ؑ'Jzק20Ftx " oxvظzΡh /9&PPv2j: CVèfQG njAO6+, [tH@A iǭz|9'2a y9믌(0w@0%  Dd'8hFu;8y]EmhHTL: }`q\1yqw~]c&!QߪmA+S> !:0UA ^9A~!!ah_;GFDH \a$(<x(v<mBxhGDLg MhnIIxBy>ֆ0N C2YQ)E鐀!sF8HH#>Qau:XFz,~y#'aeXeq́`;b| r!`E;`)I51e҅S|P[9K (zrH;/Ҁcvy0_lٰz1GIAv"5JQ8t';p7-dH aP<a@ E}G`%QH#!F5<(BeQM8_~WϵT,L EdX:hE&`6@>bF,"ff v00:##o;"#H {䁂LO@ͬb !B*BޡR" ءJA TN@c&#fb³)*xbTZi^cj+ bX'*MJƮS:SRpΆcJ"$ޡRma.Ρ&@$XACTZ/(H' pEPk&R%* CD B AìbV *BuQǑ5n)lԁo,xv dT1j+6@+mjȫ(Pʬ!ì0 =C~"@e7($nB&B# a"JB" ''ȃ0HҞzbbbb" 08I, kafIZe'+L-Dr+42"݌'&)/" B<1Y $G[ٌ/D Ԣn)ma$"Kª$!eCR-q`\%ljr"/.2"A0j6P' pLI$qo'L$60 (s??@;L),Ez ĸ6qd"T'0@"b@)qF FA3C#B2({DE/2$ *Rhb3K3%BZebO e؊4ҡzB sTjރHcG"`? ;F% i6;bAH)n>ҡq.^NN'lB|`G AK$Nc:'Dg*!s//f$!dS/D$`,%O=@p@ʔ'RP( 6RRաT"n#lP$P/2$2Dʎ &*\BD)U@ `aVa'42Isa#3*>X@@5c5U#VdGdKdOe`a^0ee%%&` R'pA?qĠQLciViiif6T' "Nuڲ$ B7.dllmVm׶vܥi$Bk@E`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2&`Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvThJ  Bɰ `k3 `k"`#F)xh z6@Ge$cJ%H%jg1b32|V0n؇eAzb:kxXǚA9S*wB/H3c k84@Q04&/΂N%08γر "◒+ْ3.tNFp$EZ-!$A0h٠zx"$$6{AiG A""[E, ԘMԀ$]-1'ϡV+Ưn1la"MR3]To\fm*513 #喩>1jJK–qI a/?ٝpb +΂EL-G6::0Yٕ)WYA5C! v8r6KM@A7fbJ[h/ڨq%$CxΓ/bb)&?> #A z`'DB`*@V 6CF,`c()gf"H3X]RC@x`c&/s,ߓ)0M*C:t,!$vwjYv |(B| a"Y@"r}'v}CbnF`Hbn߳ATSЁL%0 A b1`=` XJaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0th rK/[ ~>*y}?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K Z?+Ĺ;0ߖH'BQ2>h?0@!|)3JZQ TYFCPvAB  MsP.0xeQ@=P<0<}2 9t +!@|KN[B"dHpmi}#)ȣA #@B^;5;թXcBs8h s7 mMɪdqЌ}NS6PG`Y$(@X$GSdi_jN="4  E3GВj8d>[)!aM;3E &0c e; NȮ!>瀐;(+dMfEמb29M锗F k)B Cd\ H?U^IAv^yd&<8{=ϛh$OԣOv峏 ?yONy_yoy4sc0OC\{ J&9: d:DGA0/hBD3~}ЦkU$HkϏEa#@:|4V] 2Ρ>)%ߞޑ-uQH2#dG; P|P Ҁs\ Adu{GT d$n{%v:ʹ@4@ B!Z݈0&Qn P yHIO@D ,7R 5p3_a6J` NB3}0!WB )-5 Ȓ8o>8Ccq&80 V''v]mzWXV(cs45BK^uM/=Hh v9ԁ@ 7 ps,9ωt~Oq!P\򱁠dh!&!*3%R6飞>v|s#}{#!9aȖs򨬄 ѡ2!`IJ/rb |@PMPXf< ?d 7N.#`Xf =#@-y NۂWP5 7tnRWe| t4­fswel<* #TLOeJ qS)\:sMyϽP>G!_7iB8tyBgw Zi #rps,֤(=*W `i W8zl`<1bxj8ovс#w|{ߎcg 9@bCD Hs\@XA(YJ(9'E;Kh(T˫Pu!EZ!• `} ?(PJ (<M&A1  P aB2[xф ^KTCyMpa_j s8MQ֒A8D1Tsb%>P'b 707cdT|Rxg&opbP*6([}2%1&Y5 Nmd##@#` 0(BP*n)vnnq}gPrݠVޓ@#_I}xE "gjp#cZ aqnIPt IOV<)>ptCY? Ir@:LF1$&!p<4Xj)@V`71X!P ED)OIm7!9p1<~1s`dF9n}|ypm){p> 2I6fRh#{gCR1ѩ"igqwj,>3(5p p`%&֑mo q*s=fS@[|Z@.vs0L!DcCmM|)4DCyXR`%&jqP1rZ,* bySu 6 ^h2-@jq qzOb% oч^h7(@0@ : jPͪ $'PAH}͕ bPb`gBxbي#7W`zC($#:x p @%#L ` S) QUsך S!D&@ҩwS鲧ejRb芭- ؎GmjdM>X!jA#QI[>Z0 A&F+sA` PEqp*I˻U>g<8`Hś!644Q̛!MCŽlڑJ4k狾髾_&Cɾ5ɒ,{72 = 3>@~ΰ<6УKNH:aDv3|{Wi˟}>|ϑ6w/s"N%t`Fc<#G߅fᆳ:!>d)QXA.cQ4hЍ 3;@ :6&HxFAHn[SdqÎ%$-ښACQ:`,Pp<ϑhAx>pK~OKN=tPH@Z|Oe ϲ,@@t>H,:3,2D6pX86+@;>Cb(" C@)=sںM< @BC;F#]MhE@Iу2.Pψ4:/j :p"Sv=9};7B\ă7TOl{ܐ::' >? C=OD/Q |%"~LZ#!{$$P |C77 +1AzP  {$uhG2өD ,@CY[z2 BP<q#=q t $ "J>H!IHA?SrI!Ƀ>,`U%@ass!wp聒'XFđ$2K@' `ŎGnyVWH_ L j MB XXL%g@$>Apx:&]0jV$`A$ DH@pm*Cwy 0)A"x:y/ n J@dwZumJ""ykMϊe2I 'H>܂0u\>e="&ث \=`qh@;Ԟc옍8&zk}uX@k) H@ĨBC).v>-!P O|  t ! )HЏByjC40!H [|p)e- x!܇L'  eu8tT'EV=~= P#` 77@W5@M}5QCg A<gqH0|=G&!y&<%10Sf1R`rp+v02> h_P=@Ѐh b}~hQ: \G~%P5}jl؆0 ?pU7$3-`0n9e˕# PvgGRE'Ih$׈  Cz<} 2k&br4`܀a :vy֔yd+.bT#Pa ]rE ,Gaa+% 0$ =X>h*`O !Ps !9YA$q'&iyM1 0|q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕp3{n1EB q2Bpr9/`GM'R0t9YLhd'"1q6T4Qv[.#4\1F])"Ҋ~ !9Yz|t!0q!"4uCWcMc S,`_ $0[U"08깞[xq$גYYsLLW` ymP@pNI`j왡Hu:P$y'P27v)Wa mrwe\2*_*_ș:DZG̢sR>C .gm!-*.` rP dpr:}ڑ," gY``S0֢qt]`waH% z  +4Jlk[Re 6 -40wQ0OA`dZJF#3@hj/D?#u\" gJeP! :蚮:,zT Yq$"AV*~PO@d&b*fڰzJj$ 5jr8 3!~E¤ (67+Rb@a-{ 2;4fc.gZЅ~ 2%"]b*U$]ǭQp@H5ZqT =K͚"#F#odv aHBmpYNʵ~KHGP[y}Ya& hTc =x`Q@srm @HZۺupg$HՏd#Rt.y1 VPv7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 005$5 Sd&Z:A173p#7tc795,>0@u| #UUj*jp!BR1``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLScL 5a"p@Sq'K>|P$AӯEBd9wUrcFpgH6$p`.pG"!7W9„,G |7O 'o^†o$ a>N;'o;LϢw`(oY>YB;z4>y2~rtV&]iԩUfkرeϦ]mܹuo'^q%;tvēC2 @عѱ Ђdfȓ<d_D=A&ؑS9=4OTH{ o:RC((⌄Z,{ocB`׆bk/c'v'PY1.*AJ*A>{eK0sL24L4TsM6tM8ˇ‡t Yd x (PI2 p(jH2Ey:Hy`sh *Cv[,}P49g -  v"IHp"ԛi&N=}G )cz @qFl `0oz%2!!J̀0cƬ9GU]@Pi݋t"h\hva6 @b3xc;cCydA@%u, |bWJ5U2d{|7|y=4ȏ`C@Q { ұfBs$%4Ї!! a 5nc2Bz@ zpa $@V$Izؓy|bhF8=QGy2H@ P=DI`B`T P3fM!cKKJHY;`  &X 2yOY "4XHG&dc~Tjܸ@KjpHjBD }E8L@B L%"r9{K%>;!1yͷs2vP-YH/_xc!uIUn=th]WL =2Ϩ /u8-j9C |LOT"_yy\vPI Ԟ IJ Çq y8` |(( y>>>xn | L^XhA>CC@p@B , ?=IDci ?zRwX xsN@y 0Ä(:\" 9f`H3%;FIDS 3  û ɵ0{0yp yВv'Җs@FǸ"wHCzulDžSчG1A`_ FMdQ̀O YR4Ea>8sT;' zQ(}Hq$ `GQYZ,[|\\f SrGx,)Ch NC5L|DZ*ȓ8p KA ;8ˁ0D%K4x҉*2ؐ D3&" @BS^ 1AbP( 5k:0J$.+ax+C`˫`ȇ Db, ܡoMPL `LQiKy wKXLt"P FL9R0t e L܉PhP< *;=C0q 1ą6ͅ 8z. K]Wj  y̎e X$ $ ű ]k#vw$$ | 6HH`?#la*-*]2L%k B8yR"#"'h|a=XY1-3#e$%RHz«с1@$ Sh`MH-*e4{< 1]L }Ӓtզ(֭V Nx\Vi$N#Q䜈(݊!PHsԁI#tx( [5  h2Iѷ4x xyywh$ 9<= bP*yt+CN!-B5yȈiL>PlXg $aP S@|t P4 ]w 쉟؞HJ{et0ǒ%1 9Oyi[-ok *qԐGQ+ą" ۷c X3JKEuAHV.PT+`qA%JQ$?es!Г[P/:{tc[\B]8EJy8l#QyP HJݯ@`}( ՠĐؐzF d]  XN5eh߽=`&Ͷ2|dxb`!!Ww胼' F`ya!zOf5PJ܋|Nԟv۠+v">P" M>5LA [e5%"ٰh@Q yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDxHa]=cb'u(05sneWY=.(Q5!ntPO Й ćI @#Ij< EEdλvwP6\{ʀ9B!vJPXI&yh ʠ!eR!&UhɁ4UpȄB9mRF"!""#}!&4C1!jܣ990% PHYl-mr&Ou%/TKq._s6Oy$P! M`zW"h*;ns?s2/MDAk3Y^[")pDtJNJ{iLV< rK?uTOuU_uVouWuXuYuZu[u\u Ё]2 Obc$H6av]v᲋⬉L^#_n3 !W 1vw tjwvIݘ3w).x? }g& kc|h呂0Ө¿,?H ? FH&`efՅXHa3]y?Q ]7 s0(/@xgx77Q)94?$U ?獴 8W> !}>iЬw 4Uoe@3&5"+ 2q[AoQ|VyLY>RP#}04C8Y_˗|PanXC "@oh8!~J}&Sqc{V^ifN|Ҙ$W﷍{'w`U 7up^y  |^ܽ+h ‚Kxp|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5qyCc dfs ~"]%i`P;jzٸjN[t3BBChwKAJEbrO;ޔ@^\+bXi-B󧎎S6YCAPr"%HT<쳞<8tOR 5I!gAcAe @Aq>j!UP+& p?<.тIƒ2PGRy!xGdLFс-^)X # n5җIF%#-4-'r"iК,#;>)$N@:}^Ep oj)z):*}AqB", 94PCC 7 3A>9$4霣X`R<S9E6D!@Fl[@:Q<$SO8Pza u@/XA2CT 8"Ԫj=> !m:P ꐽ Z0梻VTrR>+[F Ѐ >=FC=X @(SG>05d]lYH9nyk2_r,a#"tPh"MI@]L7/ D7:k#()RV"Q#zXp$2~ꈖ>poCbA8G!vH % 1@ա"M`&t !7 ه>~spQ#gd^$."@0, n+aY"a2|~< :$R`1i ^bsl 3x ^A(|dr$-2sC8;fG<:h@ypc(Hsh (<5ً=t XZ'@қ_G"P8`>f8rx`WBc&%uẉA ỹUp! Eȑ$;(֓+D9d"F%Ta[AIՁgDCfA*HZc.SY@!p@zTt&4:PȉQ I׺"Dם 8v`H TUD/Q&&d}ld[Twr>T^'jUIDI!__so<ɠH \/B`e"ό4ךA&qaZyVk,2~0#,awf8s&`Z;LH/` ^M ^Aɥr(@xh Cxr$LtzifRV^pT0'p@@A\̢  H (a%FDLq}L$z)ƪ}b+LdT1P1݋ߑkrd dY`O9-s;wpd7> y|n$`Bqꡇ,A 9Oo>,IoXc [ak[>BM\M0a{ƣ,ppq7-. `/k6HQcM}T}vD>3-HK#ϹYlģ Jpp?65i6F\1y 6_y:`<[H>,2[1m; !l#ʃiY?xd ߐA"G @03s7NB !KF#CFUG!LS:h)H yԦdΑCz%[ BP>vz݇GV6lBK(@w<$G!=^A ,a䃊`\BD-5FCUD39A, ;ަOE OўIʽ={ ;AY_A _!`%,MJCSLHԃ;5DCC8`; EZ쁀4r ǘDaD ;A_#bMPv4,-Zb$VbFdB ɀ>l@)H4;(-C+nBCXJahA4m @4B_v8 zLAA;TXPġ+b ! `m@$AAGzC(<;qG1" #B@ԋAbAjmI䑜*GGЌ<\^aE4DЊ!@g%H >d17MDHc%DZY!IJ8>rL=CB@m>TXM:Rt2@bC 6m] nH2ԃ'5EYbdC]",!xIeZR\CF4!̋Ie@B8SEXiBP!\HdI>J:\! Gh$S2dHŸAHn afY-DzGD8CC$ɘ,o9 }abOƑT.I_fj_`MH㡠mX'mvF!#Đ^`)du ;]EPChyL贅b&R.fKR}zh:DCT&eAH'g#yzZ,:TrC$()FH@= fL< W42䃆gABGK*߅DٽmIiA|niE<&e,GOAK!;<-Yi&_BܟA0@E(ߎD a; pC/ #6Dt]ϢFA!NA0\*)e&B/XiZ*M`E02})5gɃ;< 2m#FhE4a~ V'(fC=+:܃((Ljr=:ؽë^Zi!;>8@C8?ĞP(~GRjJޫN>_V G*d=p?8Cҵ]i&x;סPlʢ^A 28e,=$,;Cޕc~^O>@V\!Ţ,ZEJF&i*C78Ì .&:]`C^!5 RC:>@2 r.Gx@*[泪زJ^ GjA(YnBH.vw7@eFÍ$_: <(/bhrE .xpZҮE1BZ.Z<8薘B (Ц=FJ[8ӜLC><($G`oӟ!.v E/q )5/B؅b-|0ȃxa0fnpEp \hED h~%r;LNDxi oyl T~psS~VP \bS1-G۸p ZhT->o# $G oHN/wh``B-C!ԃ =N⦲*2+kL ȃ^C]aCA@I^T90`U@:o՞aMohALX[-/ g:ZPtE99;DCW"9Xѣ24 RPٰH3L XÌZC6X%A0Irdv, \djTĚZbH3CKFsnIAOTF8!_>8Ӆ/:ln¢'%{so^ӳX>uEו>\[Vs3AȈv# nv}[($5(a@XσCZyA%%ׅhT0 w=jEP9tSGz:dȺ9E`@/!0l@ܱpz 91U7Dg {B 7W?#`[|-ĦyBpX=l| L#8<&,C̕@Kxo=:p;7JD)83#F3z!0kD<1P1պj<pDE7ìxoA`H7&@HD EE/(~ s֕XqÃ5tjg>,BrD`F\8~}ycO9^/E@ 3"5AD؈w ZT  )hF:dH >!`hR@3xaw JKF< A2$9y!y*C?Dމ`wh;tb+Ƀ/I3R0!BkP 1WoCu[6at;7/!:ӚosPz0,⃃[TΔ7^Z'p Zʮ{rZŧjda`Gu 0҄2(U a PJ`XLZd]XgehjlݖnpY HɆS&X L5S>b |Q`F0Iu^y5~%-MU-[d65zG`1HeQf2euޙ}蠅#5w-/t#%'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGѱ_r?C=Fm9'ݷ] A-0V2f;~k'O4`Gyqg>i zN.EIӀaw4jZOST hyIRBLi H䁎-S@Gq2Qqkep`?LpK D#HO- <7#!IT U7.}IBP<@jC8Ō !E&PQSefX{RKA( tLT0Ѱuʕ%-bQt ;5*I*{dG&FEtHXaGA>^(=f˛3%rғ|*!yJ U;[ 蠣T'42*)9kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&9@/vL<ěPf?Sv+"&ӎ8"EG`٪*L $G @KHy *ȀH)d €}T+ 0O40RP*_JVn6j-g[jo^*ZɂT*!pЃZBHĽװ؇LG]|! 7Bы^H`j聆Lt׏xTc-=1֧ߡm:!#`%}>쁾Cꐫ 7 ̣$Eҡ}KeC0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_xyTTx]J! s@|c|M@l,'HKd"[b…:k O$NFD pG:$&#6 HKE  jijdZƏL&0IΡ! !L P 0f( D"@:@: n86nC @ ‚ ƻb k !d@6` #4,R-@q!)(R p-H!@:iQ{!cM!(T !@LD qqȐBNgJj$ X|_b[F Q[k$@ A a-!tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzH!n%l# * @-N$~%bMba c&%!J*N bϖ!;!)JP瘔b  "((H<  XL. @BVtB@aRS11A*b 3dT*"SdR-7NHR>@] S65[N39>_fb!aTS$,5 -4%P!`2c4ܔP>;[h0O62Ʉ(" {?@tY* `BxʬZh%2j!##LH`%(I1K4Ũz`A1S@ : s-c;#AҒF,00@OH>L$0p!`emKkvIt@ i! Z ҬmI !@ b⏓6eDb΁JJG&4R h3 BƐt D!*LrìHRh֮pAA$ lT!@pr,I=0XU^硝ʸ3 nT<TZZuR2s+ a@D A3`j"5Gbjkԣbm?R<7 BQm{.14a8, 끵ZpkQpo[[6y 0-킶,ܨHQuU\Z(V:bB\B A FﵤJ@ V&II3),5Rl:aff]'iAWPG6hKhA.! `A-5fF6m+!iP^R>B|L!p`B5l R,5xcI/7Y!k@:Do7W5A6BN,e|W TinvD`¸r R"wiGX喆`LaIau2E2*qG26q-N/V$AVs2a V< A@$ D{S[ 6L&Z0 $@ fXvT a^O2{Ȋx Z8Ձ lkn$P ayYl tS䎝(͏"ٚ,Ğ`Th&P;vKlCh+"b6tE@ *m5A t)c$j ĕq)Qkp,"t $ x9nVZMDJ! DZL6 eq$ g]:2` H̗Zjʬ"R=@d*Ρ cxWjH//0#XF^)"@1RC{l#K:> cC3,6DdXC.P*΁LBY hL@ $?-Z׿ "cKC=0kk("Ȩ8F38d<"nz;{0;{6*$"F`z?>#4!"`!e@*|⧇VY[ٟ>:ĠDy%AhM@AJ`F?|ءd0RGTLUQ \N%맦PFn*`'b&v@iu/sW;;HTPPN(LĄ@*l7@@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿj@X'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.ϡ^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1XρƲ0K+@"Z;= $AKu/!E@Y۱DEit^OK~+i >b+ɾC^Cu6(_wbfFh OGx,臟_qD.!"e0@7ND!;.>NCX؁VFo;6MIi6֦yT"9w3^4P!C&\.ƍeT܆y(iH&7(9P68Wz2>G@ pљ:լ[~ ;ٴk۾;ݼ{ <ċ?^Zv$!]&@ːq;9swYq<@|?3! Ll4*wرN2AF!\×vܕ6U3>s;P8>L8gv'v7cgF=CB iNJiRe 9 d4<$% \7p1p;' _ 3@GTΞ;XA>s7jk_FtՓV<UՙK0y ;{>׻9v|e@ߨD'Lnf$>Q#,Gӫk-!,;q|M[cuɅ#OgdLbF@FW1CFtJ/tN? uROMuճ +~hqF@=od,{g6Z)6ٰ[=QOo%t<`8U.8txG/E. _Nuw;g\˼ VOߏ)ƒCr"4@m jDT q$+K7 &( rj'C IL%0-X@Tȍ 1t|>PϕqM 0Cpjkfsݔ7יiV <R.(Ðǘ,#fVW ΙvCa&Ιj]B jhFv&%C#K_ Әt4Mo?4HcWF4` #l } w 9Rye ¶$ 3B)tm@,;%UI Acj wb`wȕb>XԵ5#LQ(Vȁ-7=DU HaGT֑ʇr1+ZV,V>UrzdWi+@Kwl.P$N*wms]1a$L=<ڂ iYR‰8#;e|3$;PvH;0H|,15y]RA x^]7,PW#qxY[=:6wt3^)yK*MH{4І<歯Fk#:6 f0f^tN5rNP ؤPZR | @ zЄ&M>>A5 mdb UAÜAR{Y׃m3W5]˃u]lRUZ˦@1RF$%B|,o_[-<MG }D/я 9Gzo4Tկk}늲e6wr6.ct}lopלw ~/+~oK~򔯼/k~?Ћ~/Oԫ~o_~o~ /+oKԯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ7u\7=h>ExpKgN~ C0OKSq =LdhZGG膴P;SOd!iWxdq||(S~xV :kvS!![(xhz" L 1C Rr@xvӊŁfÇPhfwAψz9fTc|a hAHXH5hBMǍ9vdEy?(яDȐe pHx'(Q$;  ih^q!IH)֒ PXT$IEx(r<+Hr I'*ru˴ po~p WPeA@ʳ7瀑o>o3)  FE<0`b Id,|R~93x z9Z蕌"p 7v9B` ֘Kg_uH+b$RL!Ie^Rht:N%%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST c9RY*0:3nd7ݸ,r}YS=̃!| aN|I.*S>ϻx7~4>q7yaHDYV~钴SpϟENb!t\w!OHInja͛FTqQ+>gEb36t7`Y^SBE=T$ p9FqčT@ d 9 )BȔdHMDBT7&*A#F! NXaZj;.H".=p-/c54'eg*A !CdF $DCyrFpoپ]xGS GaZo~Fe0A1BG@K_Z tSd-i*~Bf$L BzC Q  0rmvtF|/nw T. 0Z=30[VҤ0OT!(d*fE N;&dD o@K;аa>†ԣ Q`&}h(1^ h!]'Υ1O1,$4Ϋ *՘E9$)^{^S.1뻗G%Vw,sh S,{%[(;5~R*X"|Ȃ|I!޲u T-c7;9Ki؁nKv+N@f%SG`bk/ǔ@tl@9 &F! L`_ٵ2,A 6PlSx{7(C?1DG$DOD1EWdE_1FgFo1G[MG(=,(}6SE$*Au2hv䡀 ( 50ˇv.hmsh );@wt8v 3 qwx6݄r{Ɂ`ǁ'6ӸpYF(|*I+Lj8,kW&&t<}0,3Ф9DqU Xe}tHH̴M ;+U@yPss6v"jh8JA[qU_yahˁaUy0@uBeh%Ig%Ԭ}W!Lz`.z@@CӊSP 5h8-= 9}Ոc^UՐFx#LFys9iwb#v{+>?7 t7lF8 :&$` dp( U3Ry-ɥ.aYd৐NnBg>P;tI"Z!M:ORMk4UU@ ԡ|#1!ATI Emb&Lg7 X0Dr岘41]FId&uHd:}p{@JGFmUeP>QT2Pn |P=պI76З(r7NJ'qU°Շb[_t 2􁏒d `H0.7ekC@b7ɃY,FYh@y̬ wXNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW (~5>jH -r/yK:$c&wМDy%b}9EByҕt7O<  X =e)8ËugG{ˍrQf)E4"P.'qQI`s#?xQߙvG|I5\"Jx-| .o e+}E?z#ֻJ&c0}9PC'1.}˄`5d>ltIVFj \-о}:ϺVèo+8nޓ|v,)I dIȣ-IHd Jٰ 4 6y hG`>Ev耤x y G|tr* op@DlTɕdɖtb5,upQ5L.$ VEƐ苗Ȇ; /|;Ph Jj t˷˸G"Xv &Ȇ{p{U  Ԉ>2}p{@{0L~cd85ȼQȭL1$8?$NK5(88Ev@eP+lq vMhA?<ڱ|H$ί_tN !ė|H(%;}x HY> x (\ РQ j#} Ia9$@xo(f 9L o4"5#ERlK?Ȟh MpR$Cz`y'(J$|$5H5͇fpxp ';Y"|h"Q% 3M9}!ׁ|vS%PT-F5yDKTUUeU;(9yq<0  ȯ֢ՆL0: '0ۘbX v.!-Y#;LJaf\zv}0T:FL ǔdhM(EhA ևv^Nhy0!9eЇ{s ,՚IiPike  &3@yxn@w}hU(cP$= ɱLnjڇta-B_l*$r: PM|@g}Y,WqgMb7,CfHE p}p`,hPȄ() h،`lfȖ8jZx^0yevp y\T Hb鐊k_Y), ЄF!( <11m}h><9KkǐH}o{8}(|w&H8 8Cih+z؀tn ?hij &.8"رÐ?~Z~>LJ6SGutۙ탇,!Hz ЇzȁDZ [L+1r9ITuI$9|DU:UYϐ :^q}HTWu/:$=  t_Vi,ʣFw$f @y>IWgW|Xy7C \y˾5ޅ7&'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF ЁPӯdN+9Q9˸O[hN/wXˀp'y/_fęڳt !)99Hw3Ģ{0"Lp!ÆLhj_sQĊv(rÁ$?l$K-bl)s&͚ + &B@1s(ѢF"Mt)ӦNB*u*ժVbͪu+׮ Ov]𺐁- ZΝ)^Kn ͓Kwݼjʓvސ /exqc7eJ>re f|x5tF.PҲέ{7޾.|8Ə'AݓmSzC'3Xc^ˤW5Qwų.R_j~-3OdUe CFA8uVMP9Ps,]7S r#X'+آqφ-:d0A܎ޏx`lB~T y%yҔ5yL'Cj*4ЛT Ob05@/"2ڨBi`3 t<D`O:$fԉ<g:`D<2&\-GZ-qS<{Ds6! {#O&|׵|<ꑵJuz=A ȣCS_ק:P>#; ϥts*>㌖1Cd ,x P$)A\ECD/Q<$|$p;fc,#8@*n  6vڡA+nēLdǎIc(wKPL_ q %\&< e?AL`H q3h,a4(G;яJ*Fb<"R40AAQ b!H4 cA t60x/ob :N!cֳ;vS2A(@{1t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6PlϹ^H>x=i¾;}$9m3LI" AkZ6Ȩe Xq@}eef]Nȗ@:ͱ sy#q62ӛC=Rr PuJ53 _Tnر z\:ސ1p{Ap b Ny]!`ʮmE,|RgFA>$gm@+e|5Ał |B>k;A q|#)}H|`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^:z$^ڬ TEhDfD͞B@=Xߵ;H%>@0|\A(:4!C \} TUbA` `C, a"x:AԊC:T?=lPlB@-7zĉu,9QAl<;Jda6:@SU ]^ɥDHE<A-a\M%ZAa1gḀ1 T}D8fBeB@HXC=:j'!W ރ !D*I$۪Ɉ*J 7$6'$cBZh"8+⃐;jp= 8?PCD=.փ@*R)û8b@?rWA=1Ԟ) @FJ ;\cC^DDE^dFZX^dLLdM& 8Db ND&AB%;0G> ,"B=F=8e]C^އ|̣p;x` AL;D6i uI&EMa&Ie:IIWVr A.N* 9TfA\f<4BmA <$;\ff6gnn`Хdf+u<8:b2f-#BT`nO0 A=BdBf.QI~g"mM:BhJ!pb;ĉWZG0LndGlc (u(x_>A=IL@3LlFZDօ<@= Ŝ\?8`5), tnHC/0:*ę/ }_z2l$t($I*(q"DvW՛.") $cB cRDD0*MM0bɆTUi\9u\IJ~WD$QDȃyV2+CDjშRk!%æ4$ ̓:*NX>ŪCDQDXRaỸ};:jĽTH$yROkCC=liBv`9Sce^A ``)֖̟ C#zn ib(BŪܔD@ܭX<<, @0Hحؖ4I@=HC-톕,ےVfd'9|4;x؂A$ H]4: gF-(ڎb@*ǩt-m-H@:@ n`<nҮ`u&b$1,>^J:l@Z"40uH:X>0AĪ*dfK$@ 4lO*T0'II)G=% p 0 @7z>EAD@I>î@>Rރ2D4:EHK_`HI0^>m,B`=h@C2@i"6 (`/<@YX)kʖAo>>)Exe[Ơ#If KcJ\^̊0KjE q><&: ZBd[lݩwr:-I 41bZ>K VC. 1V(*D$SeAd@æALA/rU͇!L:ۣl@++F5'F4s)%lC" HX1U23pBpQp^+b3vc;c;]r=SCSHvbPeFXtehvii7 sSLkw_{ԅknvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyy7`uĞ0bN<@y w`(raINU=bzK: @U mODKDM@|^>Ldrh𥕲9sT!AtgmXYiGikAD%CDRloA ^^`,rX<\,; 0]ZI{#6s%D,G$PGC|>b?GXR1-/a]ц>Z;RüW,AԈ ~Kn|R1 BLu8̳lADU#) ȃ{@1 +]΃}SNĥdJ>lJxt ^Iο̎VA < ӄ3>T@v}$C$YTI&]惩U]>lBp@}>ThxOA$!^C=TA@ݏDXcJ:ß:1,BbA)-BmDLKU#=0>)rUA܀׾i<}-(@&A|&D(OB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7}`G@!;yN_w#&}✀&;7`A( n#,3p_= "c"12Իo_)&.BLALA^* Q lB$>xqǑ'WysϡC +|yp[@:?7 \R=(v\1uΑ1}&H.u*|*AE$g5 (zJEO F2Yi[qU]y#ةGtΡsCqrG8'Pށt rˇ{tY*{a vwTsԙ?} X3 D8gP,8Q%z@C2sO>|i4}WYnaYf"+!FI@`JToG `0f:z櫱By$G1j1Ja xBI'D1SJ  @؁@l~'N\o!_Mª'o)J n1!%@CVPá,q7+i5· ´@Gч2 !a'/йm=ߡ4$g^ 6;!SgG,_}ZɒuPMP 0Dr @I@>UR>jPJh`s?.)`9,@2*n  aHH#y$z@b۲&Il䱉U 1 9/!@=0!! `B9Αu$"`<E7P`z38`]QGDDH). C@dD$呕@,H}C@,` tH(Ttp Ї> # c ` hB7CƷ+ @{r*ZA@+OyΓ=O%Tj4AP. upB>ĀgWPnGARx"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:0o5O[9zYgVCx_X\Ms`$8N'w&Dba5e2`G/jtM#C49."7K>@%d:* HHj\G 汌_BE tzpzYQBҵP`؀8H6&GVWWtT: :`•`zqy0c}>ttiZ}UGby5"` \h c!$0=aYaG2Q4pRd!9CL  s]4هjC&_%biE 7>W;NB g(OX,=!A-hAQɌO 7}u-SV3y@ @OQ} 6apBqQ 200vM|r"iFaTBJ kݓ@B(SF{Ag$,؄@+ U|# @C,x$h(0bLJb/0 `C=bP "tpH߷guoDY.3}lK@8wdCNI+6PwP@\ 1ULStUJC ^Βݐ@3.>Щ2 G`@%tϞWi>Î6XPCdٖ^#ڧ}| A [&T>@Hs;gR Î$<EC *Pc=K8fqVqgI& !2aF!8d$J(Y,!z"N** VAp즱bMND*gM6KbB!Y:xB#@i!g2>g@xɰ $hPXa!& /߀0 H!Xa{8 !]ԅ!P!ڧ_#P*7R I"!a| 6(@A++T( A&L &{A@P~Dޤ1"bk gFL *@aj6 ޡG#!}Rh)pamN/¹ahuazAz]*@Y@ B#!`GaZ1#5r#[fa3uB("bc'5LA! (t0r"(@f3'xƯMejHF R@#: -g F|'4O#r-rOԠ*@g1"CPaøl af !((J2hVa0>PƀD)'P8HH LYHء-F%& %8>R R!H@6+\s88$`KH2T2$ n6` # ಩>B$&C`&v|2!'B4"0 }'U46/QIX8 $&$@ 7)^ |FZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2'`XeHtISH?j&bJ5B+ (=JI4Lݍ k& @ "La2 8-Ae"=´)3TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#z3[\Ȅ#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r*d>ez6i=@<@E;Hүu/a|˷d#B0$@"wy5#p dJEnPs-uvqQ>a)%XuS">|7\!܄DN8-ҁB(NdP>83Pr9O* uEkZEAqLӁa.QJ7%q;"p*[[e\PMl",1qIVu.>%_z{T9*sCAEؘa7HÀv#R.r[!xh0!2A PReInoYnb2!&^ZkFgYy ڠ>?!]G?+s!4!rI6n0ҁWj ||!<%|)-1<5|9=Ad3vOSXyѳb/ BԿ]r_guKX#X8(pEx8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIA'_AP !sw3;2NCqv-]t` -z *7`> t:ǎAo^=t `+ByI땏'ཀྵsN+װc˞M۸sͻ.Ny Bn,u~\tt s%W2̝N|S~&O {y{s"T}A -^AԃB|0= ($h(,&Nd(vNsSv 4dC8@ CC/Td5ިAb .D>Oi7Xgȓŀ"@95;XOi-Jb~gOS!'褔Vj饘f馜viHE'YʑW;=9x+ —k7\ 鿗IXjA@B #,Wlg!FI>̾@ܨO=[P>`\8(?XPO: >3{6_QN_B`@P{8{#>~:_a(;DW0HM&;N ؜-_Sތ7G.Wn?A=!g砇.褗n{?< {|K9c LE| hGH@0Aԡ^$Q:6EQ2)7@gчt%QD恏y!9 ,PDz` dU;1)GI-vH ba2sa%A7`v[Ҍ4ʃq01Zd4S&_ġ>ŀ 쨋 #F>Y+f%f2Ur!r#Rz-5Ib R]z!8iZ2adY<:쑖͜ E@@C#%%䅃LgM% bg9x|>ς0hPHX+QF4\ ⃔ TGJT@@5Ct%@R:QĢpV! 0㮂 5gv)^ sHuwS0KcôbƮ'ODH 8Cx+*3 ⰵ!P]DzYX1:>PC#[@NF$v mp΁C %2*k$"G @=@j-z2g|Qys@ NŇd9DAJYN0h/wЁF 8 @YD !pLsdO3:J/a!%K oPK$7P\q0 k4/{w|sX,pB8 duhF'.v8rAR 8Ǜ b-*-c,ad[ɣ]22 3G$''a24~G|HԹq  fA2Űg XT CP1)ݙ q=$blhT/d+v$cńϯ!jeG< AjHc YbPArrXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ Zek9 P ;6 $ZȍzOpa-%fz@CY (\>P(Yz , (A+:M :@tu4cJ7y*M}7oHΑ9!cA`D@r0қg>Y^x+EKURrg;qAH t&U=ST{aE/|v>r e!Z:BF1 SG<zfʋ4)P(?H2< zb}  hjZ[ai v aDz7X&Ydʀ A% Gv! % EPw?" $P g\E?@Av212W*e! CPbK"2"X">(rS}g2"SR`xzXOJ )tb!G } i+@tb2AL ON(L z Nh P AX(17e [F1LG31 V#;Qk".%6B&F!Dh'L 4b}7сDS@ j+R+AvDEj``-b- H\!Et*>5`Ej*% > `& `T"l.7BBuPTwLe8**E@+e% 9}2%p] y:0/r/b,p`dÃ06c5h0E 1؎>|cmb $*%`72>^E@ H22v5D@p8g:v#t#+.E0@ 9FP29PDΡ=48& 3!Ls2F -1s5{0#MWXEYܐV0 6m6AeDivӇ_X!GP8  9ZZyP ^82qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;UI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*!*O=؊t:0` }WvQ\^u hxz% W!Wqx`X%3K^UY7^Daa0|HS!V'aF'P!V[گ{0 fiLSGj֌1@Up%6VjKsjh y&(4 P8Te]qMGd0qE6"ȫN*{%wrSRvE;T+F {lF8Hzf U{^y^zsk{x?!:| K'q[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv. !4^c?!'kb(,)v۽蛾BLO /~P0[#/b ca 0aPƫj1//3'ZQ0~j cP2“2bP. +\}Ԡ0yp,iПf 0yus7 7c88Pܳ;"69jZ3 (2:(f||!t^*hr<ƣnL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#":pqKktIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2 ng$j斒V (!3.yՒpJEWi&@dk$g7pפnբr C0`Y[~Vt%m 9~ p-*°s0ʧa*̢vl8yM'H'1 m\"o~?tx]+ |3n6V{l]P,a$M" 0PYq p[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*/a}e_L q Na_j j!ŗrqqR$ʵ`ӁrniEbQ^*+MWac9]}K-W o;hV\ o@ .dC%NXE5nG!E$YI)UdK1eΤYM0ɻpu:\< `yJG~g `"S!)wP3J},Po T0+uJ>JǸ| 9'*y6%!PCSyH@ K!A CZHs$k!nN,`G>C@g"Đ%Xаy BtQH#tRJ+RL3tMF}jQ8TU3*YŬ.js gtsc',@\Yh ǂ c:XPz0 Miy &Ԑg6!1xܫ}Bʁ.̳Z`11{LsA3 SO"[؛70Đ ruz`s o2fsyg{g0`hDQJyb`jzkkt ( aKؤҶn{oo* W.k~q#|r+r%p扢3r$7A^E|@|@wd)MyJT!24!Z:`3vR@=_ΣZ dAP"t(1;&C 50A*CUѝg=퉻ő*pypk %; d7V`:I%|(HTFlBqB0,|l \lK2U]1]ѧDѿ De1Hɸ'wֶtC%jQ U:K!/eG^сiQ0x;2`¤P@( \g(RtТ[Q)w@L C3(a:ῥC6BĀGXFVȨ4!U::(8U Ep,A(a>eᖅ UdUtCXXy֑G=\FWӕ*[:6EP{ kV@95ekيfꁐXt t*B&VbE9:5m\B.`4`GX9'# $b[{38Rta; "Ta@5$yሜG rPsm&[(Or|匜e$4F0P ` 'Ubare2v>e @rKQsLЋft\c ,ߡE4Wfhґ9J݊E= lR Gd2 UB H) Aj<@P}ld'%#F dh/B&p u"+CdֳRRpESFCX@\(Iq~A/#H"d8b&vt7<9 x-EHSKX ]T&ހ 0=I`XjC).WCcm(U7_TbTf-X+fWd';,pӨg][:JƴNd3~u]kg{IֶUDn S~w]Q.2)(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}a>'(0}Cs0A=3&EFuv*@&[ H`AꨯͻY <tE:0"N YW!W3 ˈ.A#P {ؠ5r?$ " @ #Q!؉kqe5 J6K UA ;7s=/ dpUsk M ch gPйYAHztХy?Iꥬ&/ {(wPeigB tal?h'ȀaruRC̺A BJDOs θz X؉a99 DA*qh*}8XH2;HmO2'Rh1N}h11PWu`X.{Y`3%1pͭOCB0d8͇^Q|CP5eG@Jl CPPcX fhZ+Ovc$ڇ|h7@7T=T^2dvh`F$MP`)d0/M0M~jn;XOƬd P2ɠHPLQXbkaʍ ~Tτ(|B0y^lf8ҨSГi\BAE&Þzlœ>ó-oȁ"@xCd{@YbTfۇE^n9(OƱStd }Xw#}pzpwhv .)KCo/ u`yPP5k$^^Sle|8fn[ϊm [VyMT#Ai 5leAof=qv#oˇd P)7[ .(rXqw#B!Y"xȀ|@D}-wŅ_Çk>iE ĞӼ}`"nd[56c|OA >ಀ;zgGf4 F p?Cr 2>y +ۿJU~4Ddz0 e3?SgӪs\mzxώ(wxOͅхyyμ+h „ 2| 'Rh"ƌ7jH#tF$ yɋr9KiДdA΅ "c͝?LOw%4὜cm| ;g`s&(ٖ<q `LqO,Ձ[ L_؞/SA=AZ^ДN/c@3AA}GY=$> ;3>! :%> )"-"18#5x#9GB&ԋ<#ADE A I)dANBY`N'm!č>AANp Uv;0@:(>mÎp ぐР&tE5GhCƥL Y*Wmc %, A3Yn:dW`d@qΫB="4 j>0p霣Xq'r/!91qLdAN{#:P:P0p̥N9A9@!4 -,)j}¡#@:Dy^wJC ^~@@.^i7P>8 !ApLzϳ9)zTADp(Mu OtKӇhr\goB@9nA3|i2?ՠ"āf?(< Cc"Bn CB<(}d" aw XD  T: v8ACmG?(9y.e>s7 s6LDA6 Y!@BcAU`'Lqs~ЇޡEpы`cS`l 9 ыzCO!y5^GJ= l?qk `nbaJS6 =!AhQL Lc*әҴ6)Ns5Z?P1(;x cp2jBz%UKmSS9 1#@;SSUgO (՛⊐&qBԊ(`3CL >` 03&&nT,%ppEiʉRDI}E3xACQUk[E2'>@ rqb\i>4-( iD#0+wh|A|sD#8Xȟ ̑$ǘJ·Q$S| MOR aCEjPt>1,!9P AN/ hON2;L实ax@nsb= 8/p /!Hʒ8\WQ)sH<N$7- #x"v%vxMbІI|嵋9ꡐ͊J^f7M^%(4m9 <XC|Zu!`~A\! !Πa1UD>Ab9T H"B5ğ@E9QA ><(XlB<<B0kþ>OLY0].#363>#4F#X1$%$AX!DICU zLh@:@z|胹mXC9@Fp $q\c{;~b4N&eVe^&fZ>C>0J>ȎC090AS@SY@PV&>̮|:W`(L ^]6 0 m,; tũZiZ L@ԣ`D D]ʆB0@MO8;T.^ƫM]k(tL`‰dB]lDDBNP H OBBI*CZv(U'*(Wxɑi;XG!D>BYePfWzR{"D@lD6Pf GWB)B@A\A0Lf֩)橞5 )EXA@9x;;(˹ԃ!>ïRT@B(*e=iL`P/مs,)\AlE=CmOhBDѮD E l<(A$ChEm}Ga)KN}KIN,ҰvC*ӡE>=ElrjJYY,B+~ld$sABmY @+8]@)&Bס"ÕJA&..6 %hN脐`<VzDD`@<[BP@A nIOaO0^M MB\PPan.FAεc4HĂN0\kBm[[UAHa ģ.E!=lEXH~&M1kp)o:<0 KdFIJ@pP䚩ޜ54C;D0S\I 8R:<"@/cR> H2p|ztHCmpfET@A|&rP|Jɒ$fTC~$=1  tڢ)U!sE}@\.̍@&'2((*>T@20031*MنN 1fQIc2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH<1?W/`G@lK[Kf"5\p1#L7S?5<i.[p:E,p@Zh@VH&|z&׹V+o>$2rhGoF$+$K88@ 1 Y,%@(CCԔFfu]2o:XZ$@@pJV[*BVs5sDrD:X;Ah 1T_7vgچ"kKP> ESp!D0NH@NzRk1)jX[bMFHľQćC/Rh=(oZl)m,*xG,(<>2P1m^ EP4Y^> hH8Ŭ;c>0A/l2̸Z%he:w' ENHXqV KK pNOxQ;)C/TP;XVhWh7۩a,Fc<ZȜ`!mA=hiĆgt7\2Nn>TtLY&Gv]"6JxL EC'I*X}JkDdJY<$LACel"05Z Pr mT93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/S C>!˃ @9jAoȀ!CAÒzZ4K'^dYA ;J<1\ 1#˱$ ٟ=(ey'Mm|ü /DLûT=dAlLstF PPDu\hΜ<`p WO|p8 N\=F՝L|ZVD^~CX@̈>B~:|퓎q@ݝ0&@,4MӠ8H)DĻw|ȓ:(]y}(0߻L|0F!!Et@w"3x̋;y ܧo^y /OS\̗N%o;<p(0G:.>[>"p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}>  V{%yFc }w ]E-pA6m:e0o; ;ם+qû|u-GzꞝFqTy@RRs6y,| HwlA %(GA4P$ӂ3B@ CiA` HJ"@HiyA}jhσЋ@O'"0Ĕ3 uq I),; &BQ9 0+ʋt|J8*x.ڀNJ{)Mr=t]v}xWvvRʀ2 }@`ai@NԑGa4(n ɦ2!̠9 W]|ؑ'Jzק20Ftx " oxvظzΡh /9&PPv2j: CVèfQG njAO6+, [tH@A iǭz|9'2a y9믌(0w@0%  Dd'8hFu;8y]EmhHTL: }`q\1yqw~]c&!QߪmA+S> !:0UA ^9A~!!ah_;GFDH \a$(<x(v<mBxhGDLg MhnIIxBy>ֆ0N C2YQ)E鐀!sF8HH#>Qau:XFz,~y#'aeXeq́`;b| r!`E;`)I51e҅S|P[9K (zrH;/Ҁcvy0_lٰz1GIAv"5JQ8t';p7-dH aP<a@ E}G`%QH#!F5<(BeQM8_~WϵT,L EdX:hE&`6@>bF,"ff v00:##o;"#H {䁂LO@ͬb !B*BޡR" ءJA TN@c&#fb³)*xbTZi^cj+ bX'*MJƮS:SRpΆcJ"$ޡRma.Ρ&@$XACTZ/(H' pEPk&R%* CD B AìbV *BuQǑ5n)lԁo,xv dT1j+6@+mjȫ(Pʬ!ì0 =C~"@e7($nB&B# a"JB" ''ȃ0HҞzbbbb" 08I, kafIZe'+L-Dr+42"݌'&)/" B<1Y $G[ٌ/D Ԣn)ma$"Kª$!eCR-q`\%ljr"/.2"A0j6P' pLI$qo'L$60 (s??@;L),Ez ĸ6qd"T'0@"b@)qF FA3C#B2({DE/2$ *Rhb3K3%BZebO e؊4ҡzB sTjރHcG"`? ;F% i6;bAH)n>ҡq.^NN'lB|`G AK$Nc:'Dg*!s//f$!dS/D$`,%O=@p@ʔ'RP( 6RRաT"n#lP$P/2$2Dʎ &*\BD)U@ `aVa'42Isa#3*>X@@5c5U#VdGdKdOe`a^0ee%%&` R'pA?qĠQLciViiif6T' "Nuڲ$ B7.dllmVm׶vܥi$Bk@E`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2&`Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvThJ  Bɰ `k3 `k"`#F)xh z6@Ge$cJ%H%jg1b32|V0n؇eAzb:kxXǚA9S*wB/H3c k84@Q04&/΂N%08γر "◒+ْ3.tNFp$EZ-!$A0h٠zx"$$6{AiG A""[E, ԘMԀ$]-1'ϡV+Ưn1la"MR3]To\fm*513 #喩>1jJK–qI a/?ٝpb +΂EL-G6::0Yٕ)WYA5C! v8r6KM@A7fbJ[h/ڨq%$CxΓ/bb)&?> #A z`'DB`*@V 6CF,`c()gf"H3X]RC@x`c&/s,ߓ)0M*C:t,!$vwjYv |(B| a"Y@"r}'v}CbnF`Hbn߳ATSЁL%0 A b1`=` XJaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0th rK/[ ~>*y}?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K Z?+Ĺ;0ߖH'BQ2>h?0@!|)3JZQ TYFCPvAB  MsP.0xeQ@=P<0<}2 9t +!@|KN[B"dHpmi}#)ȣA #@B^;5;թXcBs8h s7 mMɪdqЌ}NS6PG`Y$(@X$GSdi_jN="4  E3GВj8d>[)!aM;3E &0c e; NȮ!>瀐;(+dMfEמb29M锗F k)B Cd\ H?U^IAv^yd&<8{=ϛh$OԣOv峏 ?yONy_yoy4sc0OC\{ J&9: d:DGA0/hBD3~}ЦkU$HkϏEa#@:|4V] 2Ρ>)%ߞޑ-uQH2#dG; P|P Ҁs\ Adu{GT d$n{%v:ʹ@4@ B!Z݈0&Qn P yHIO@D ,7R 5p3_a6J` NB3}0!WB )-5 Ȓ8o>8Ccq&80 V''v]mzWXV(cs45BK^uM/=Hh v9ԁ@ 7 ps,9ωt~Oq!P\򱁠dh!&!*3%R6飞>v|s#}{#!9aȖs򨬄 ѡ2!`IJ/rb |@PMPXf< ?d 7N.#`Xf =#@-y NۂWP5 7tnRWe| t4­fswel<* #TLOeJ qS)\:sMyϽP>G!_7iB8tyBgw Zi #rps,֤(=*W `i W8zl`<1bxj8ovс#w|{ߎcg 9@bCD Hs\@XA(YJ(9'E;Kh(T˫Pu!EZ!• `} ?(PJ (<M&A1  P aB2[xф ^KTCyMpa_j s8MQ֒A8D1Tsb%>P'b 707cdT|Rxg&opbP*6([}2%1&Y5 Nmd##@#` 0(BP*n)vnnq}gPrݠVޓ@#_I}xE "gjp#cZ aqnIPt IOV<)>ptCY? Ir@:LF1$&!p<4Xj)@V`71X!P ED)OIm7!9p1<~1s`dF9n}|ypm){p> 2I6fRh#{gCR1ѩ"igqwj,>3(5p p`%&֑mo q*s=fS@[|Z@.vs0L!DcCmM|)4DCyXR`%&jqP1rZ,* bySu 6 ^h2-@jq qzOb% oч^h7(@0@ : jPͪ $'PAH}͕ bPb`gBxbي#7W`zC($#:x p @%#L ` S) QUsך S!D&@ҩwS鲧ejRb芭- ؎GmjdM>X!jA#QI[>Z0 A&F+sA` PEqp*I˻U>g<8`Hś!644Q̛!MCŽlڑJ4k狾髾_&Cɾ5ɒ,{72 = 3>@~ΰ<6УKNH:aDv3|{Wi˟}>|ϑ6w/s"N%t`Fc<#G߅fᆳ:!>d)QXA.cQ4hЍ 3;@ :6&HxFAHn[SdqÎ%$-ښACQ:`,Pp<ϑhAx>pK~OKN=tPH@Z|Oe ϲ,@@t>H,:3,2D6pX86+@;>Cb(" C@)=sںM< @BC;F#]MhE@Iу2.Pψ4:/j :p"Sv=9};7B\ă7TOl{ܐ::' >? C=OD/Q |%"~LZ#!{$$P |C77 +1AzP  {$uhG2өD ,@CY[z2 BP<q#=q t $ "J>H!IHA?SrI!Ƀ>,`U%@ass!wp聒'XFđ$2K@' `ŎGnyVWH_ L j MB XXL%g@$>Apx:&]0jV$`A$ DH@pm*Cwy 0)A"x:y/ n J@dwZumJ""ykMϊe2I 'H>܂0u\>e="&ث \=`qh@;Ԟc옍8&zk}uX@k) H@ĨBC).v>-!P O|  t ! )HЏByjC40!H [|p)e- x!܇L'  eu8tT'EV=~= P#` 77@W5@M}5QCg A<gqH0|=G&!y&<%10Sf1R`rp+v02> h_P=@Ѐh b}~hQ: \G~%P5}jl؆0 ?pU7$3-`0n9e˕# PvgGRE'Ih$׈  Cz<} 2k&br4`܀a :vy֔yd+.bT#Pa ]rE ,Gaa+% 0$ =X>h*`O !Ps !9YA$q'&iyM1 0|q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕp3{n1EB q2Bpr9/`GM'R0t9YLhd'"1q6T4Qv[.#4\1F])"Ҋ~ !9Yz|t!0q!"4uCWcMc S,`_ $0[U"08깞[xq$גYYsLLW` ymP@pNI`j왡Hu:P$y'P27v)Wa mrwe\2*_*_ș:DZG̢sR>C .gm!-*.` rP dpr:}ڑ," gY``S0֢qt]`waH% z  +4Jlk[Re 6 -40wQ0OA`dZJF#3@hj/D?#u\" gJeP! :蚮:,zT Yq$"AV*~PO@d&b*fڰzJj$ 5jr8 3!~E¤ (67+Rb@a-{ 2;4fc.gZЅ~ 2%"]b*U$]ǭQp@H5ZqT =K͚"#F#odv aHBmpYNʵ~KHGP[y}Ya& hTc =x`Q@srm @HZۺupg$HՏd#Rt.y1 VPv7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 005$5 Sd&Z:A173p#7tc795,>0@u| #UUj*jp!BR1``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLScL 5a"p@Sq'K>|P$AӯEBd9wUrcFpgH6$p`.pG"!7W9„,G |7O 'o^†o$ a>N;'o;LϢw`(oY>YB;z4>y2~rtV&]iԩUfkرeϦ]mܹuo'^q%;tvēC2 @عѱ Ђdfȓ<d_D=A&ؑS9=4OTH{ o:RC((⌄Z,{ocB`׆bk/c'v'PY1.*AJ*A>{eK0sL24L4TsM6tM8ˇ‡t Yd x (PI2 p(jH2Ey:Hy`sh *Cv[,}P49g -  v"IHp"ԛi&N=}G )cz @qFl `0oz%2!!J̀0cƬ9GU]@Pi݋t"h\hva6 @b3xc;cCydA@%u, |bWJ5U2d{|7|y=4ȏ`C@Q { ұfBs$%4Ї!! a 5nc2Bz@ zpa $@V$Izؓy|bhF8=QGy2H@ P=DI`B`T P3fM!cKKJHY;`  &X 2yOY "4XHG&dc~Tjܸ@KjpHjBD }E8L@B L%"r9{K%>;!1yͷs2vP-YH/_xc!uIUn=th]WL =2Ϩ /u8-j9C |LOT"_yy\vPI Ԟ IJ Çq y8` |(( y>>>xn | L^XhA>CC@p@B , ?=IDci ?zRwX xsN@y 0Ä(:\" 9f`H3%;FIDS 3  û ɵ0{0yp yВv'Җs@FǸ"wHCzulDžSчG1A`_ FMdQ̀O YR4Ea>8sT;' zQ(}Hq$ `GQYZ,[|\\f SrGx,)Ch NC5L|DZ*ȓ8p KA ;8ˁ0D%K4x҉*2ؐ D3&" @BS^ 1AbP( 5k:0J$.+ax+C`˫`ȇ Db, ܡoMPL `LQiKy wKXLt"P FL9R0t e L܉PhP< *;=C0q 1ą6ͅ 8z. K]Wj  y̎e X$ $ ű ]k#vw$$ | 6HH`?#la*-*]2L%k B8yR"#"'h|a=XY1-3#e$%RHz«с1@$ Sh`MH-*e4{< 1]L }Ӓtզ(֭V Nx\Vi$N#Q䜈(݊!PHsԁI#tx( [5  h2Iѷ4x xyywh$ 9<= bP*yt+CN!-B5yȈiL>PlXg $aP S@|t P4 ]w 쉟؞HJ{et0ǒ%1 9Oyi[-ok *qԐGQ+ą" ۷c X3JKEuAHV.PT+`qA%JQ$?es!Г[P/:{tc[\B]8EJy8l#QyP HJݯ@`}( ՠĐؐzF d]  XN5eh߽=`&Ͷ2|dxb`!!Ww胼' F`ya!zOf5PJ܋|Nԟv۠+v">P" M>5LA [e5%"ٰh@Q yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDxHa]=cb'u(05sneWY=.(Q5!ntPO Й ćI @#Ij< EEdλvwP6\{ʀ9B!vJPXI&yh ʠ!eR!&UhɁ4UpȄB9mRF"!""#}!&4C1!jܣ990% PHYl-mr&Ou%/TKq._s6Oy$P! M`zW"h*;ns?s2/MDAk3Y^[")pDtJNJ{iLV< rK?uTOuU_uVouWuXuYuZu[u\u Ё]2 Obc$H6av]v᲋⬉L^#_n3 !W 1vw tjwvIݘ3w).x? }g& kc|h呂0Ө¿,?H ? FH&`efՅXHa3]y?Q ]7 s0(/@xgx77Q)94?$U ?獴 8W> !}>iЬw 4Uoe@3&5"+ 2q[AoQ|VyLY>RP#}04C8Y_˗|PanXC "@oh8!~J}&Sqc{V^ifN|Ҙ$W﷍{'w`U 7up^y  |^ܽ+h ‚Kxp|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5qyCc dfs ~"]%i`P;jzٸjN[t3BBChwKAJEbrO;ޔ@^\+bXi-B󧎎S6YCAPr"%HT<쳞<8tOR 5I!gAcAe @Aq>j!UP+& p?<.тIƒ2PGRy!xGdLFс-^)X # n5җIF%#-4-'r"iК,#;>)$N@:}^Ep oj)z):*}AqB", 94PCC 7 3A>9$4霣X`R<S9E6D!@Fl[@:Q<$SO8Pza u@/XA2CT 8"Ԫj=> !m:P ꐽ Z0梻VTrR>+[F Ѐ >=FC=X @(SG>05d]lYH9nyk2_r,a#"tPh"MI@]L7/ D7:k#()RV"Q#zXp$2~ꈖ>poCbA8G!vH % 1@ա"M`&t !7 ه>~spQ#gd^$."@0, n+aY"a2|~< :$R`1i ^bsl 3x ^A(|dr$-2sC8;fG<:h@ypc(Hsh (<5ً=t XZ'@қ_G"P8`>f8rx`WBc&%uẉA ỹUp! Eȑ$;(֓+D9d"F%Ta[AIՁgDCfA*HZc.SY@!p@zTt&4:PȉQ I׺"Dם 8v`H TUD/Q&&d}ld[Twr>T^'jUIDI!__so<ɠH \/B`e"ό4ךA&qaZyVk,2~0#,awf8s&`Z;LH/` ^M ^Aɥr(@xh Cxr$LtzifRV^pT0'p@@A\̢  H (a%FDLq}L$z)ƪ}b+LdT1P1݋ߑkrd dY`O9-s;wpd7> y|n$`Bqꡇ,A 9Oo>,IoXc [ak[>BM\M0a{ƣ,ppq7-. `/k6HQcM}T}vD>3-HK#ϹYlģ Jpp?65i6F\1y 6_y:`<[H>,2[1m; !l#ʃiY?xd ߐA"G @03s7NB !KF#CFUG!LS:h)H yԦdΑCz%[ BP>vz݇GV6lBK(@w<$G!=^A ,a䃊`\BD-5FCUD39A, ;ަOE OўIʽ={ ;AY_A _!`%,MJCSLHԃ;5DCC8`; EZ쁀4r ǘDaD ;A_#bMPv4,-Zb$VbFdB ɀ>l@)H4;(-C+nBCXJahA4m @4B_v8 zLAA;TXPġ+b ! `m@$AAGzC(<;qG1" #B@ԋAbAjmI䑜*GGЌ<\^aE4DЊ!@g%H >d17MDHc%DZY!IJ8>rL=CB@m>TXM:Rt2@bC 6m] nH2ԃ'5EYbdC]",!xIeZR\CF4!̋Ie@B8SEXiBP!\HdI>J:\! Gh$S2dHŸAHn afY-DzGD8CC$ɘ,o9 }abOƑT.I_fj_`MH㡠mX'mvF!#Đ^`)du ;]EPChyL贅b&R.fKR}zh:DCT&eAH'g#yzZ,:TrC$()FH@= fL< W42䃆gABGK*߅DٽmIiA|niE<&e,GOAK!;<-Yi&_BܟA0@E(ߎD a; pC/ #6Dt]ϢFA!NA0\*)e&B/XiZ*M`E02})5gɃ;< 2m#FhE4a~ V'(fC=+:܃((Ljr=:ؽë^Zi!;>8@C8?ĞP(~GRjJޫN>_V G*d=p?8Cҵ]i&x;סPlʢ^A 28e,=$,;Cޕc~^O>@V\!Ţ,ZEJF&i*C78Ì .&:]`C^!5 RC:>@2 r.Gx@*[泪زJ^ GjA(YnBH.vw7@eFÍ$_: <(/bhrE .xpZҮE1BZ.Z<8薘B (Ц=FJ[8ӜLC><($G`oӟ!.v E/q )5/B؅b-|0ȃxa0fnpEp \hED h~%r;LNDxi oyl T~psS~VP \bS1-G۸p ZhT->o# $G oHN/wh``B-C!ԃ =N⦲*2+kL ȃ^C]aCA@I^T90`U@:o՞aMohALX[-/ g:ZPtE99;DCW"9Xѣ24 RPٰH3L XÌZC6X%A0Irdv, \djTĚZbH3CKFsnIAOTF8!_>8Ӆ/:ln¢'%{so^ӳX>uEו>\[Vs3AȈv# nv}[($5(a@XσCZyA%%ׅhT0 w=jEP9tSGz:dȺ9E`@/!0l@ܱpz 91U7Dg {B 7W?#`[|-ĦyBpX=l| L#8<&,C̕@Kxo=:p;7JD)83#F3z!0kD<1P1պj<pDE7ìxoA`H7&@HD EE/(~ s֕XqÃ5tjg>,BrD`F\8~}ycO9^/E@ 3"5AD؈w ZT  )hF:dH >!`hR@3xaw JKF< A2$9y!y*C?Dމ`wh;tb+Ƀ/I3R0!BkP 1WoCu[6at;7/!:ӚosPz0,⃃[TΔ7^Z'p Zʮ{rZŧjda`Gu 0҄2(U a PJ`XLZd]XgehjlݖnpY HɆS&X L5S>b |Q`F0Iu^y5~%-MU-[d65zG`1HeQf2euޙ}蠅#5w-/t#%'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGѱ_r?C=Fm9'ݷ] A-0V2f;~k'O4`Gyqg>i zN.EIӀaw4jZOST hyIRBLi H䁎-S@Gq2Qqkep`?LpK D#HO- <7#!IT U7.}IBP<@jC8Ō !E&PQSefX{RKA( tLT0Ѱuʕ%-bQt ;5*I*{dG&FEtHXaGA>^(=f˛3%rғ|*!yJ U;[ 蠣T'42*)9kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&9@/vL<ěPf?Sv+"&ӎ8"EG`٪*L $G @KHy *ȀH)d €}T+ 0O40RP*_JVn6j-g[jo^*ZɂT*!pЃZBHĽװ؇LG]|! 7Bы^H`j聆Lt׏xTc-=1֧ߡm:!#`%}>쁾Cꐫ 7 ̣$Eҡ}KeC0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_xyTTx]J! s@|c|M@l,'HKd"[b…:k O$NFD pG:$&#6 HKE  jijdZƏL&0IΡ! !L P 0f( D"@:@: n86nC @ ‚ ƻb k !d@6` #4,R-@q!)(R p-H!@:iQ{!cM!(T !@LD qqȐBNgJj$ X|_b[F Q[k$@ A a-!tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzH!n%l# * @-N$~%bMba c&%!J*N bϖ!;!)JP瘔b  "((H<  XL. @BVtB@aRS11A*b 3dT*"SdR-7NHR>@] S65[N39>_fb!aTS$,5 -4%P!`2c4ܔP>;[h0O62Ʉ(" {?@tY* `BxʬZh%2j!##LH`%(I1K4Ũz`A1S@ : s-c;#AҒF,00@OH>L$0p!`emKkvIt@ i! Z ҬmI !@ b⏓6eDb΁JJG&4R h3 BƐt D!*LrìHRh֮pAA$ lT!@pr,I=0XU^硝ʸ3 nT<TZZuR2s+ a@D A3`j"5Gbjkԣbm?R<7 BQm{.14a8, 끵ZpkQpo[[6y 0-킶,ܨHQuU\Z(V:bB\B A FﵤJ@ V&II3),5Rl:aff]'iAWPG6hKhA.! `A-5fF6m+!iP^R>B|L!p`B5l R,5xcI/7Y!k@:Do7W5A6BN,e|W TinvD`¸r R"wiGX喆`LaIau2E2*qG26q-N/V$AVs2a V< A@$ D{S[ 6L&Z0 $@ fXvT a^O2{Ȋx Z8Ձ lkn$P ayYl tS䎝(͏"ٚ,Ğ`Th&P;vKlCh+"b6tE@ *m5A t)c$j ĕq)Qkp,"t $ x9nVZMDJ! DZL6 eq$ g]:2` H̗Zjʬ"R=@d*Ρ cxWjH//0#XF^)"@1RC{l#K:> cC3,6DdXC.P*΁LBY hL@ $?-Z׿ "cKC=0kk("Ȩ8F38d<"nz;{0;{6*$"F`z?>#4!"`!e@*|⧇VY[ٟ>:ĠDy%AhM@AJ`F?|ءd0RGTLUQ \N%맦PFn*`'b&v@iu/sW;;HTPPN(LĄ@*l7@@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿj@X'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.ϡ^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1XρƲ0K+@"Z;= $AKu/!E@Y۱DEit^OK~+i >b+ɾC^Cu6(_wbfFh OGx,臟_qD.!"e0@7ND!;.>NCX؁VFo;6MIi6֦yT"9w3^4P!C&\.ƍeT܆y(iH&7(9P68Wz2>G@ pљ:լ[~ ;ٴk۾;ݼ{ <ċ?^Zv$!]&@ːq;9swYq<@|?3! Ll4*wرN2AF!\×vܕ6U3>s;P8>L8gv'v7cgF=CB iNJiRe 9 d4<$% \7p1p;' _ 3@GTΞ;XA>s7jk_FtՓV<UՙK0y ;{>׻9v|e@ߨD'Lnf$>Q#,Gӫk-!,;q|M[cuɅ#OgdLbF@FW1CFtJ/tN? uROMuճ +~hqF@=od,{g6Z)6ٰ[=QOo%t<`8U.8txG/E. _Nuw;g\˼ VOߏ)ƒCr"4@m jDT q$+K7 &( rj'C IL%0-X@Tȍ 1t|>PϕqM 0Cpjkfsݔ7יiV <R.(Ðǘ,#fVW ΙvCa&Ιj]B jhFv&%C#K_ Әt4Mo?4HcWF4` #l } w 9Rye ¶$ 3B)tm@,;%UI Acj wb`wȕb>XԵ5#LQ(Vȁ-7=DU HaGT֑ʇr1+ZV,V>UrzdWi+@Kwl.P$N*wms]1a$L=<ڂ iYR‰8#;e|3$;PvH;0H|,15y]RA x^]7,PW#qxY[=:6wt3^)yK*MH{4І<歯Fk#:6 f0f^tN5rNP ؤPZR | @ zЄ&M>>A5 mdb UAÜAR{Y׃m3W5]˃u]lRUZ˦@1RF$%B|,o_[-<MG }D/я 9Gzo4Tկk}늲e6wr6.ct}lopלw ~/+~oK~򔯼/k~?Ћ~/Oԫ~o_~o~ /+oKԯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ7u\7=h>ExpKgN~ C0OKSq =LdhZGG膴P;SOd!iWxdq||(S~xV :kvS!![(xhz" L 1C Rr@xvӊŁfÇPhfwAψz9fTc|a hAHXH5hBMǍ9vdEy?(яDȐe pHx'(Q$;  ih^q!IH)֒ PXT$IEx(r<+Hr I'*ru˴ po~p WPeA@ʳ7瀑o>o3)  FE<0`b Id,|R~93x z9Z蕌"p 7v9B` ֘Kg_uH+b$RL!Ie^Rht:N%%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST c9RY*0:3nd7ݸ,r}YS=̃!| aN|I.*S>ϻx7~4>q7yaHDYV~钴SpϟENb!t\w!OHInja͛FTqQ+>gEb36t7`Y^SBE=T$ p9FqčT@ d 9 )BȔdHMDBT7&*A#F! NXaZj;.H".=p-/c54'eg*A !CdF $DCyrFpoپ]xGS GaZo~Fe0A1BG@K_Z tSd-i*~Bf$L BzC Q  0rmvtF|/nw T. 0Z=30[VҤ0OT!(d*fE N;&dD o@K;аa>†ԣ Q`&}h(1^ h!]'Υ1O1,$4Ϋ *՘E9$)^{^S.1뻗G%Vw,sh S,{%[(;5~R*X"|Ȃ|I!޲u T-c7;9Ki؁nKv+N@f%SG`bk/ǔ@tl@9 &F! L`_ٵ2,A 6PlSx{7(C?1DG$DOD1EWdE_1FgFo1G[MG(=,(}6SE$*Au2hv䡀 ( 50ˇv.hmsh );@wt8v 3 qwx6݄r{Ɂ`ǁ'6ӸpYF(|*I+Lj8,kW&&t<}0,3Ф9DqU Xe}tHH̴M ;+U@yPss6v"jh8JA[qU_yahˁaUy0@uBeh%Ig%Ԭ}W!Lz`.z@@CӊSP 5h8-= 9}Ոc^UՐFx#LFys9iwb#v{+>?7 t7lF8 :&$` dp( U3Ry-ɥ.aYd৐NnBg>P;tI"Z!M:ORMk4UU@ ԡ|#1!ATI Emb&Lg7 X0Dr岘41]FId&uHd:}p{@JGFmUeP>QT2Pn |P=պI76З(r7NJ'qU°Շb[_t 2􁏒d `H0.7ekC@b7ɃY,FYh@y̬ wXNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW (~5>jH -r/yK:$c&wМDy%b}9EByҕt7O<  X =e)8ËugG{ˍrQf)E4"P.'qQI`s#?xQߙvG|I5\"Jx-| .o e+}E?z#ֻJ&c0}9PC'1.}˄`5d>ltIVFj \-о}:ϺVèo+8nޓ|v,)I dIȣ-IHd Jٰ 4 6y hG`>Ev耤x y G|tr* op@DlTɕdɖtb5,upQ5L.$ VEƐ苗Ȇ; /|;Ph Jj t˷˸G"Xv &Ȇ{p{U  Ԉ>2}p{@{0L~cd85ȼQȭL1$8?$NK5(88Ev@eP+lq vMhA?<ڱ|H$ί_tN !ė|H(%;}x HY> x (\ РQ j#} Ia9$@xo(f 9L o4"5#ERlK?Ȟh MpR$Cz`y'(J$|$5H5͇fpxp ';Y"|h"Q% 3M9}!ׁ|vS%PT-F5yDKTUUeU;(9yq<0  ȯ֢ՆL0: '0ۘbX v.!-Y#;LJaf\zv}0T:FL ǔdhM(EhA ևv^Nhy0!9eЇ{s ,՚IiPike  &3@yxn@w}hU(cP$= ɱLnjڇta-B_l*$r: PM|@g}Y,WqgMb7,CfHE p}p`,hPȄ() h،`lfȖ8jZx^0yevp y\T Hb鐊k_Y), ЄF!( <11m}h><9KkǐH}o{8}(|w&H8 8Cih+z؀tn ?hij &.8"رÐ?~Z~>LJ6SGutۙ탇,!Hz ЇzȁDZ [L+1r9ITuI$9|DU:UYϐ :^q}HTWu/:$=  t_Vi,ʣFw$f @y>IWgW|Xy7C \y˾5ޅ7&'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF ЁPӯdN+9Q9˸O[hN/wXˀp'y/_fęڳt !)99Hw3Ģ{0"Lp!ÆLhj_sQĊv(rÁ$?l$K-bl)s&͚ + &B@1s(ѢF"Mt)ӦNB*u*ժVbͪu+׮ Ov]𺐁- ZΝ)^Kn ͓Kwݼjʓvސ /exqc7eJ>re f|x5tF.PҲέ{7޾.|8Ə'AݓmSzC'3Xc^ˤW5Qwų.R_j~-3OdUe CFA8uVMP9Ps,]7S r#X'+آqφ-:d0A܎ޏx`lB~T y%yҔ5yL'Cj*4ЛT Ob05@/"2ڨBi`3 t<D`O:$fԉ<g:`D<2&\-GZ-qS<{Ds6! {#O&|׵|<ꑵJuz=A ȣCS_ק:P>#; ϥts*>㌖1Cd ,x P$)A\ECD/Q<$|$p;fc,#8@*n  6vڡA+nēLdǎIc(wKPL_ q %\&< e?AL`H q3h,a4(G;яJ*Fb<"R40AAQ b!H4 cA t60x/ob :N!cֳ;vS2A(@{1t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6PlϹ^H>x=i¾;}$9m3LI" AkZ6Ȩe Xq@}eef]Nȗ@:ͱ sy#q62ӛC=Rr PuJ53 _Tnر z\:ސ1p{Ap b Ny]!`ʮmE,|RgFA>$gm@+e|5Ał |B>k;A q|#)}H|`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^:z$^ڬ TEhDfD͞B@=Xߵ;H%>@0|\A(:4!C \} TUbA` `C, a"x:AԊC:T?=lPlB@-7zĉu,9QAl<;Jda6:@SU ]^ɥDHE<A-a\M%ZAa1gḀ1 T}D8fBeB@HXC=:j'!W ރ !D*I$۪Ɉ*J 7$6'$cBZh"8+⃐;jp= 8?PCD=.փ@*R)û8b@?rWA=1Ԟ) @FJ ;\cC^DDE^dFZX^dLLdM& 8Db ND&AB%;0G> ,"B=F=8e]C^އ|̣p;x` AL;D6i uI&EMa&Ie:IIWVr A.N* 9TfA\f<4BmA <$;\ff6gnn`Хdf+u<8:b2f-#BT`nO0 A=BdBf.QI~g"mM:BhJ!pb;ĉWZG0LndGlc (u(x_>A=IL@3LlFZDօ<@= Ŝ\?8`5), tnHC/0:*ę/ }_z2l$t($I*(q"DvW՛.") $cB cRDD0*MM0bɆTUi\9u\IJ~WD$QDȃyV2+CDjშRk!%æ4$ ̓:*NX>ŪCDQDXRaỸ};:jĽTH$yROkCC=liBv`9Sce^A ``)֖̟ C#zn ib(BŪܔD@ܭX<<, @0Hحؖ4I@=HC-톕,ےVfd'9|4;x؂A$ H]4: gF-(ڎb@*ǩt-m-H@:@ n`<nҮ`u&b$1,>^J:l@Z"40uH:X>0AĪ*dfK$@ 4lO*T0'II)G=% p 0 @7z>EAD@I>î@>Rރ2D4:EHK_`HI0^>m,B`=h@C2@i"6 (`/<@YX)kʖAo>>)Exe[Ơ#If KcJ\^̊0KjE q><&: ZBd[lݩwr:-I 41bZ>K VC. 1V(*D$SeAd@æALA/rU͇!L:ۣl@++F5'F4s)%lC" HX1U23pBpQp^+b3vc;c;]r=SCSHvbPeFXtehvii7 sSLkw_{ԅknvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyy7`uĞ0bN<@y w`(raINU=bzK: @U mODKDM@|^>Ldrh𥕲9sT!AtgmXYiGikAD%CDRloA ^^`,rX<\,; 0]ZI{#6s%D,G$PGC|>b?GXR1-/a]ц>Z;RüW,AԈ ~Kn|R1 BLu8̳lADU#) ȃ{@1 +]΃}SNĥdJ>lJxt ^Iο̎VA < ӄ3>T@v}$C$YTI&]惩U]>lBp@}>ThxOA$!^C=TA@ݏDXcJ:ß:1,BbA)-BmDLKU#=0>)rUA܀׾i<}-(@&A|&D(OB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7}`G@!;yN_w#&}✀&;7`A( n#,3p_= "c"12Իo_)&.BLALA^* Q lB$>xqǑ'WysϡC +|yp[@:?7 \R=(v\1uΑ1}&H.u*|*AE$g5 (zJEO F2Yi[qU]y#ةGtΡsCqrG8'Pށt rˇ{tY*{a vwTsԙ?} X3 D8gP,8Q%z@C2sO>|i4}WYnaYf"+!FI@`JToG `0f:z櫱By$G1j1Ja xBI'D1SJ  @؁@l~'N\o!_Mª'o)J n1!%@CVPá,q7+i5· ´@Gч2 !a'/йm=ߡ4$g^ 6;!SgG,_}ZɒuPMP 0Dr @I@>UR>jPJh`s?.)`9,@2*n  aHH#y$z@b۲&Il䱉U 1 9/!@=0!! `B9Αu$"`<E7P`z38`]QGDDH). C@dD$呕@,H}C@,` tH(Ttp Ї> # c ` hB7CƷ+ @{r*ZA@+OyΓ=O%Tj4AP. upB>ĀgWPnGARx"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:0o5O[9zYgVCx_X\Ms`$8N'w&Dba5e2`G/jtM#C49."7K>@%d:* HHj\G 汌_BE tzpzYQBҵP`؀8H6&GVWWtT: :`•`zqy0c}>ttiZ}UGby5"` \h c!$0=aYaG2Q4pRd!9CL  s]4هjC&_%biE 7>W;NB g(OX,=!A-hAQɌO 7}u-SV3y@ @OQ} 6apBqQ 200vM|r"iFaTBJ kݓ@B(SF{Ag$,؄@+ U|# @C,x$h(0bLJb/0 `C=bP "tpH߷guoDY.3}lK@8wdCNI+6PwP@\ 1ULStUJC ^Βݐ@3.>Щ2 G`@%tϞWi>Î6XPCdٖ^#ڧ}| A [&T>@Hs;gR Î$<EC *Pc=K8fqVqgI& !2aF!8d$J(Y,!z"N** VAp즱bMND*gM6KbB!Y:xB#@i!g2>g@xɰ $hPXa!& /߀0 H!Xa{8 !]ԅ!P!ڧ_#P*7R I"!a| 6(@A++T( A&L &{A@P~Dޤ1"bk gFL *@aj6 ޡG#!}Rh)pamN/¹ahuazAz]*@Y@ B#!`GaZ1#5r#[fa3uB("bc'5LA! (t0r"(@f3'xƯMejHF R@#: -g F|'4O#r-rOԠ*@g1"CPaøl af !((J2hVa0>PƀD)'P8HH LYHء-F%& %8>R R!H@6+\s88$`KH2T2$ n6` # ಩>B$&C`&v|2!'B4"0 }'U46/QIX8 $&$@ 7)^ |FZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2'`XeHtISH?j&bJ5B+ (=JI4Lݍ k& @ "La2 8-Ae"=´)3TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#z3[\Ȅ#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r*d>ez6i=@<@E;Hүu/a|˷d#B0$@"wy5#p dJEnPs-uvqQ>a)%XuS">|7\!܄DN8-ҁB(NdP>83Pr9O* uEkZEAqLӁa.QJ7%q;"p*[[e\PMl",1qIVu.>%_z{T9*sCAEؘa7HÀv#R.r[!xh0!2A PReInoYnb2!&^ZkFgYy ڠ>?!]G?+s!4!rI6n0ҁWj ||!<%|)-1<5|9=Ad3vOSXyѳb/ BԿ]r_guKX#X8(pEx8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIA'_AP !sw3;2NCqv-]t` -z *7`> t:ǎAo^=t `+ByI땏'ཀྵsN+װc˞M۸sͻ.Ny Bn,u~\tt s%W2̝N|S~&O {y{s"T}A -^AԃB|0= ($h(,&Nd(vNsSv 4dC8@ CC/Td5ިAb .D>Oi7Xgȓŀ"@95;XOi-Jb~gOS!'褔Vj饘f馜viHE'YʑW;=9x+ —k7\ 鿗IXjA@B #,Wlg!FI>̾@ܨO=[P>`\8(?XPO: >3{6_QN_B`@P{8{#>~:_a(;DW0HM&;N ؜-_Sތ7G.Wn?A=!g砇.褗n{?< {|K9c LE| hGH@0Aԡ^$Q:6EQ2)7@gчt%QD恏y!9 ,PDz` dU;1)GI-vH ba2sa%A7`v[Ҍ4ʃq01Zd4S&_ġ>ŀ 쨋 #F>Y+f%f2Ur!r#Rz-5Ib R]z!8iZ2adY<:쑖͜ E@@C#%%䅃LgM% bg9x|>ς0hPHX+QF4\ ⃔ TGJT@@5Ct%@R:QĢpV! 0㮂 5gv)^ sHuwS0KcôbƮ'ODH 8Cx+*3 ⰵ!P]DzYX1:>PC#[@NF$v mp΁C %2*k$"G @=@j-z2g|Qys@ NŇd9DAJYN0h/wЁF 8 @YD !pLsdO3:J/a!%K oPK$7P\q0 k4/{w|sX,pB8 duhF'.v8rAR 8Ǜ b-*-c,ad[ɣ]22 3G$''a24~G|HԹq  fA2Űg XT CP1)ݙ q=$blhT/d+v$cńϯ!jeG< AjHc YbPArrXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ Zek9 P ;6 $ZȍzOpa-%fz@CY (\>P(Yz , (A+:M :@tu4cJ7y*M}7oHΑ9!cA`D@r0қg>Y^x+EKURrg;qAH t&U=ST{aE/|v>r e!Z:BF1 SG<zfʋ4)P(?H2< zb}  hjZ[ai v aDz7X&Ydʀ A% Gv! % EPw?" $P g\E?@Av212W*e! CPbK"2"X">(rS}g2"SR`xzXOJ )tb!G } i+@tb2AL ON(L z Nh P AX(17e [F1LG31 V#;Qk".%6B&F!Dh'L 4b}7сDS@ j+R+AvDEj``-b- H\!Et*>5`Ej*% > `& `T"l.7BBuPTwLe8**E@+e% 9}2%p] y:0/r/b,p`dÃ06c5h0E 1؎>|cmb $*%`72>^E@ H22v5D@p8g:v#t#+.E0@ 9FP29PDΡ=48& 3!Ls2F -1s5{0#MWXEYܐV0 6m6AeDivӇ_X!GP8  9ZZyP ^82qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;UI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*!*O=؊t:0` }WvQ\^u hxz% W!Wqx`X%3K^UY7^Daa0|HS!V'aF'P!V[گ{0 fiLSGj֌1@Up%6VjKsjh y&(4 P8Te]qMGd0qE6"ȫN*{%wrSRvE;T+F {lF8Hzf U{^y^zsk{x?!:| K'q[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv. !4^c?!'kb(,)v۽蛾BLO /~P0[#/b ca 0aPƫj1//3'ZQ0~j cP2“2bP. +\}Ԡ0yp,iПf 0yus7 7c88Pܳ;"69jZ3 (2:(f||!t^*hr<ƣnL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#":pqKktIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2 ng$j斒V (!3.yՒpJEWi&@dk$g7pפnբr C0`Y[~Vt%m 9~ p-*°s0ʧa*̢vl8yM'H'1 m\"o~?tx]+ |3n6V{l]P,a$M" 0PYq p[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*/a}e_L q Na_j j!ŗrqqR$ʵ`ӁrniEbQ^*+MWac9]}K-W o;hV\ o@ .dC%NXE5nG!E$YI)UdK1eΤYM0ɻpu:\< `yJG~g `"S!)wP3J},Po T0+uJ>JǸ| 9'*y6%!PCSyH@ K!A CZHs$k!nN,`G>C@g"Đ%Xаy BtQH#tRJ+RL3tMF}jQ8TU3*YŬ.js gtsc',@\Yh ǂ c:XPz0 Miy &Ԑg6!1xܫ}Bʁ.̳Z`11{LsA3 SO"[؛70Đ ruz`s o2fsyg{g0`hDQJyb`jzkkt ( aKؤҶn{oo* W.k~q#|r+r%p扢3r$7A^E|@|@wd)MyJT!24!Z:`3vR@=_ΣZ dAP"t(1;&C 50A*CUѝg=퉻ő*pypk %; d7V`:I%|(HTFlBqB0,|l \lK2U]1]ѧDѿ De1Hɸ'wֶtC%jQ U:K!/eG^сiQ0x;2`¤P@( \g(RtТ[Q)w@L C3(a:ῥC6BĀGXFVȨ4!U::(8U Ep,A(a>eᖅ UdUtCXXy֑G=\FWӕ*[:6EP{ kV@95ekيfꁐXt t*B&VbE9:5m\B.`4`GX9'# $b[{38Rta; "Ta@5$yሜG rPsm&[(Or|匜e$4F0P ` 'Ubare2v>e @rKQsLЋft\c ,ߡE4Wfhґ9J݊E= lR Gd2 UB H) Aj<@P}ld'%#F dh/B&p u"+CdֳRRpESFCX@\(Iq~A/#H"d8b&vt7<9 x-EHSKX ]T&ހ 0=I`XjC).WCcm(U7_TbTf-X+fWd';,pӨg][:JƴNd3~u]kg{IֶUDn S~w]Q.2)(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}a>'(0}Cs0A=3&EFuv*@&[ H`AꨯͻY <tE:0"N YW!W3 ˈ.A#P {ؠ5r?$ " @ #Q!؉kqe5 J6K UA ;7s=/ dpUsk M ch gPйYAHztХy?Iꥬ&/ {(wPeigB tal?h'ȀaruRC̺A BJDOs θz X؉a99 DA*qh*}8XH2;HmO2'Rh1N}h11PWu`X.{Y`3%1pͭOCB0d8͇^Q|CP5eG@Jl CPPcX fhZ+Ovc$ڇ|h7@7T=T^2dvh`F$MP`)d0/M0M~jn;XOƬd P2ɠHPLQXbkaʍ ~Tτ(|B0y^lf8ҨSГi\BAE&Þzlœ>ó-oȁ"@xCd{@YbTfۇE^n9(OƱStd }Xw#}pzpwhv .)KCo/ u`yPP5k$^^Sle|8fn[ϊm [VyMT#Ai 5leAof=qv#oˇd P)7[ .(rXqw#B!Y"xȀ|@D}-wŅ_Çk>iE ĞӼ}`"nd[56c|OA >ಀ;zgGf4 F p?Cr 2>y +ۿJU~4Ddz0 e3?SgӪs\mzxώ(wxOͅхyyμ+h „ 2| 'Rh"ƌ7jH#tF$ yɋr9KiДdA΅ "c͝?LOw%4὜cm| ;g`s&(ٖ<q `LqO,Ձ[ L_؞/SA=AZ^ДN/c@3AA}GY=$> ;3>! :%> )"-"18#5x#9GB&ԋ<#ADE A I)dANBY`N'm!č>AANp Uv;0@:(>mÎp ぐР&tE5GhCƥL Y*Wmc %, A3Yn:dW`d@qΫB="4 j>0p霣Xq'r/!91qLdAN{#:P:P0p̥N9A9@!4 -,)j}¡#@:Dy^wJC ^~@@.^i7P>8 !ApLzϳ9)zTADp(Mu OtKӇhr\goB@9nA3|i2?ՠ"āf?(< Cc"Bn CB<(}d" aw XD  T: v8ACmG?(9y.e>s7 s6LDA6 Y!@BcAU`'Lqs~ЇޡEpы`cS`l 9 ыzCO!y5^GJ= l?qk `nbaJS6 =!AhQL Lc*әҴ6)Ns5Z?P1(;x cp2jBz%UKmSS9 1#@;SSUgO (՛⊐&qBԊ(`3CL >` 03&&nT,%ppEiʉRDI}E3xACQUk[E2'>@ rqb\i>4-( iD#0+wh|A|sD#8Xȟ ̑$ǘJ·Q$S| MOR aCEjPt>1,!9P AN/ hON2;L实ax@nsb= 8/p /!Hʒ8\WQ)sH<N$7- #x"v%vxMbІI|嵋9ꡐ͊J^f7M^%(4m9 <XC|Zu!`~A\! !Πa1UD>Ab9T H"B5ğ@E9QA ><(XlB<<B0kþ>OLY0].#363>#4F#X1$%$AX!DICU zLh@:@z|胹mXC9@Fp $q\c{;~b4N&eVe^&fZ>C>0J>ȎC090AS@SY@PV&>̮|:W`(L ^]6 0 m,; tũZiZ L@ԣ`D D]ʆB0@MO8;T.^ƫM]k(tL`‰dB]lDDBNP H OBBI*CZv(U'*(Wxɑi;XG!D>BYePfWzR{"D@lD6Pf GWB)B@A\A0Lf֩)橞5 )EXA@9x;;(˹ԃ!>ïRT@B(*e=iL`P/مs,)\AlE=CmOhBDѮD E l<(A$ChEm}Ga)KN}KIN,ҰvC*ӡE>=ElrjJYY,B+~ld$sABmY @+8]@)&Bס"ÕJA&..6 %hN脐`<VzDD`@<[BP@A nIOaO0^M MB\PPan.FAεc4HĂN0\kBm[[UAHa ģ.E!=lEXH~&M1kp)o:<0 KdFIJ@pP䚩ޜ54C;D0S\I 8R:<"@/cR> H2p|ztHCmpfET@A|&rP|Jɒ$fTC~$=1  tڢ)U!sE}@\.̍@&'2((*>T@20031*MنN 1fQIc2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH<1?W/`G@lK[Kf"5\p1#L7S?5<i.[p:E,p@Zh@VH&|z&׹V+o>$2rhGoF$+$K88@ 1 Y,%@(CCԔFfu]2o:XZ$@@pJV[*BVs5sDrD:X;Ah 1T_7vgچ"kKP> ESp!D0NH@NzRk1)jX[bMFHľQćC/Rh=(oZl)m,*xG,(<>2P1m^ EP4Y^> hH8Ŭ;c>0A/l2̸Z%he:w' ENHXqV KK pNOxQ;)C/TP;XVhWh7۩a,Fc<ZȜ`!mA=hiĆgt7\2Nn>TtLY&Gv]"6JxL EC'I*X}JkDdJY<$LACel"05Z Pr mT93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/S C>!˃ @9jAoȀ!CAÒzZ4K'^dYA ;J<1\ 1#˱$ ٟ=(ey'Mm|ü /DLûT=dAlLstF PPDu\hΜ<`p WO|p8 N\=F՝L|ZVD^~CX@̈>B~:|퓎q@ݝ0&@,4MӠ8H)DĻw|ȓ:(]y}(0߻L|0F!!Et@w"3x̋;y ܧo^y /OS\̗N%o;<p(0G:.>[>"p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}>  V{%yFc }w ]E-pA6m:e0o; ;ם+qû|u-GzꞝFqTy@RRs6y,| HwlA %(GA4P$ӂ3B@ CiA` HJ"@HiyA}jhσЋ@O'"0Ĕ3 uq I),; &BQ9 0+ʋt|J8*x.ڀNJ{)Mr=t]v}xWvvRʀ2 }@`ai@NԑGa4(n ɦ2!̠9 W]|ؑ'Jzק20Ftx " oxvظzΡh /9&PPv2j: CVèfQG njAO6+, [tH@A iǭz|9'2a y9믌(0w@0%  Dd'8hFu;8y]EmhHTL: }`q\1yqw~]c&!QߪmA+S> !:0UA ^9A~!!ah_;GFDH \a$(<x(v<mBxhGDLg MhnIIxBy>ֆ0N C2YQ)E鐀!sF8HH#>Qau:XFz,~y#'aeXeq́`;b| r!`E;`)I51e҅S|P[9K (zrH;/Ҁcvy0_lٰz1GIAv"5JQ8t';p7-dH aP<a@ E}G`%QH#!F5<(BeQM8_~WϵT,L EdX:hE&`6@>bF,"ff v00:##o;"#H {䁂LO@ͬb !B*BޡR" ءJA TN@c&#fb³)*xbTZi^cj+ bX'*MJƮS:SRpΆcJ"$ޡRma.Ρ&@$XACTZ/(H' pEPk&R%* CD B AìbV *BuQǑ5n)lԁo,xv dT1j+6@+mjȫ(Pʬ!ì0 =C~"@e7($nB&B# a"JB" ''ȃ0HҞzbbbb" 08I, kafIZe'+L-Dr+42"݌'&)/" B<1Y $G[ٌ/D Ԣn)ma$"Kª$!eCR-q`\%ljr"/.2"A0j6P' pLI$qo'L$60 (s??@;L),Ez ĸ6qd"T'0@"b@)qF FA3C#B2({DE/2$ *Rhb3K3%BZebO e؊4ҡzB sTjރHcG"`? ;F% i6;bAH)n>ҡq.^NN'lB|`G AK$Nc:'Dg*!s//f$!dS/D$`,%O=@p@ʔ'RP( 6RRաT"n#lP$P/2$2Dʎ &*\BD)U@ `aVa'42Isa#3*>X@@5c5U#VdGdKdOe`a^0ee%%&` R'pA?qĠQLciViiif6T' "Nuڲ$ B7.dllmVm׶vܥi$Bk@E`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2&`Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvThJ  Bɰ `k3 `k"`#F)xh z6@Ge$cJ%H%jg1b32|V0n؇eAzb:kxXǚA9S*wB/H3c k84@Q04&/΂N%08γر "◒+ْ3.tNFp$EZ-!$A0h٠zx"$$6{AiG A""[E, ԘMԀ$]-1'ϡV+Ưn1la"MR3]To\fm*513 #喩>1jJK–qI a/?ٝpb +΂EL-G6::0Yٕ)WYA5C! v8r6KM@A7fbJ[h/ڨq%$CxΓ/bb)&?> #A z`'DB`*@V 6CF,`c()gf"H3X]RC@x`c&/s,ߓ)0M*C:t,!$vwjYv |(B| a"Y@"r}'v}CbnF`Hbn߳ATSЁL%0 A b1`=` XJaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0th rK/[ ~>*y}?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K Z?+Ĺ;0ߖH'BQ2>h?0@!|)3JZQ TYFCPvAB  MsP.0xeQ@=P<0<}2 9t +!@|KN[B"dHpmi}#)ȣA #@B^;5;թXcBs8h s7 mMɪdqЌ}NS6PG`Y$(@X$GSdi_jN="4  E3GВj8d>[)!aM;3E &0c e; NȮ!>瀐;(+dMfEמb29M锗F k)B Cd\ H?U^IAv^yd&<8{=ϛh$OԣOv峏 ?yONy_yoy4sc0OC\{ J&9: d:DGA0/hBD3~}ЦkU$HkϏEa#@:|4V] 2Ρ>)%ߞޑ-uQH2#dG; P|P Ҁs\ Adu{GT d$n{%v:ʹ@4@ B!Z݈0&Qn P yHIO@D ,7R 5p3_a6J` NB3}0!WB )-5 Ȓ8o>8Ccq&80 V''v]mzWXV(cs45BK^uM/=Hh v9ԁ@ 7 ps,9ωt~Oq!P\򱁠dh!&!*3%R6飞>v|s#}{#!9aȖs򨬄 ѡ2!`IJ/rb |@PMPXf< ?d 7N.#`Xf =#@-y NۂWP5 7tnRWe| t4­fswel<* #TLOeJ qS)\:sMyϽP>G!_7iB8tyBgw Zi #rps,֤(=*W `i W8zl`<1bxj8ovс#w|{ߎcg 9@bCD Hs\@XA(YJ(9'E;Kh(T˫Pu!EZ!• `} ?(PJ (<M&A1  P aB2[xф ^KTCyMpa_j s8MQ֒A8D1Tsb%>P'b 707cdT|Rxg&opbP*6([}2%1&Y5 Nmd##@#` 0(BP*n)vnnq}gPrݠVޓ@#_I}xE "gjp#cZ aqnIPt IOV<)>ptCY? Ir@:LF1$&!p<4Xj)@V`71X!P ED)OIm7!9p1<~1s`dF9n}|ypm){p> 2I6fRh#{gCR1ѩ"igqwj,>3(5p p`%&֑mo q*s=fS@[|Z@.vs0L!DcCmM|)4DCyXR`%&jqP1rZ,* bySu 6 ^h2-@jq qzOb% oч^h7(@0@ : jPͪ $'PAH}͕ bPb`gBxbي#7W`zC($#:x p @%#L ` S) QUsך S!D&@ҩwS鲧ejRb芭- ؎GmjdM>X!jA#QI[>Z0 A&F+sA` PEqp*I˻U>g<8`Hś!644Q̛!MCŽlڑJ4k狾髾_&Cɾ5ɒ,{72 = 3>@~ΰ<6УKNH:aDv3|{Wi˟}>|ϑ6w/s"N%t`Fc<#G߅fᆳ:!>d)QXA.cQ4hЍ 3;@ :6&HxFAHn[SdqÎ%$-ښACQ:`,Pp<ϑhAx>pK~OKN=tPH@Z|Oe ϲ,@@t>H,:3,2D6pX86+@;>Cb(" C@)=sںM< @BC;F#]MhE@Iу2.Pψ4:/j :p"Sv=9};7B\ă7TOl{ܐ::' >? C=OD/Q |%"~LZ#!{$$P |C77 +1AzP  {$uhG2өD ,@CY[z2 BP<q#=q t $ "J>H!IHA?SrI!Ƀ>,`U%@ass!wp聒'XFđ$2K@' `ŎGnyVWH_ L j MB XXL%g@$>Apx:&]0jV$`A$ DH@pm*Cwy 0)A"x:y/ n J@dwZumJ""ykMϊe2I 'H>܂0u\>e="&ث \=`qh@;Ԟc옍8&zk}uX@k) H@ĨBC).v>-!P O|  t ! )HЏByjC40!H [|p)e- x!܇L'  eu8tT'EV=~= P#` 77@W5@M}5QCg A<gqH0|=G&!y&<%10Sf1R`rp+v02> h_P=@Ѐh b}~hQ: \G~%P5}jl؆0 ?pU7$3-`0n9e˕# PvgGRE'Ih$׈  Cz<} 2k&br4`܀a :vy֔yd+.bT#Pa ]rE ,Gaa+% 0$ =X>h*`O !Ps !9YA$q'&iyM1 0|q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕp3{n1EB q2Bpr9/`GM'R0t9YLhd'"1q6T4Qv[.#4\1F])"Ҋ~ !9Yz|t!0q!"4uCWcMc S,`_ $0[U"08깞[xq$גYYsLLW` ymP@pNI`j왡Hu:P$y'P27v)Wa mrwe\2*_*_ș:DZG̢sR>C .gm!-*.` rP dpr:}ڑ," gY``S0֢qt]`waH% z  +4Jlk[Re 6 -40wQ0OA`dZJF#3@hj/D?#u\" gJeP! :蚮:,zT Yq$"AV*~PO@d&b*fڰzJj$ 5jr8 3!~E¤ (67+Rb@a-{ 2;4fc.gZЅ~ 2%"]b*U$]ǭQp@H5ZqT =K͚"#F#odv aHBmpYNʵ~KHGP[y}Ya& hTc =x`Q@srm @HZۺupg$HՏd#Rt.y1 VPv7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 005$5 Sd&Z:A173p#7tc795,>0@u| #UUj*jp!BR1``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLScL 5a"p@Sq'K>|P$AӯEBd9wUrcFpgH6$p`.pG"!7W9„,G |7O 'o^†o$ a>N;'o;LϢw`(oY>YB;z4>y2~rtV&]iԩUfkرeϦ]mܹuo'^q%;tvēC2 @عѱ Ђdfȓ<d_D=A&ؑS9=4OTH{ o:RC((⌄Z,{ocB`׆bk/c'v'PY1.*AJ*A>{eK0sL24L4TsM6tM8ˇ‡t Yd x (PI2 p(jH2Ey:Hy`sh *Cv[,}P49g -  v"IHp"ԛi&N=}G )cz @qFl `0oz%2!!J̀0cƬ9GU]@Pi݋t"h\hva6 @b3xc;cCydA@%u, |bWJ5U2d{|7|y=4ȏ`C@Q { ұfBs$%4Ї!! a 5nc2Bz@ zpa $@V$Izؓy|bhF8=QGy2H@ P=DI`B`T P3fM!cKKJHY;`  &X 2yOY "4XHG&dc~Tjܸ@KjpHjBD }E8L@B L%"r9{K%>;!1yͷs2vP-YH/_xc!uIUn=th]WL =2Ϩ /u8-j9C |LOT"_yy\vPI Ԟ IJ Çq y8` |(( y>>>xn | L^XhA>CC@p@B , ?=IDci ?zRwX xsN@y 0Ä(:\" 9f`H3%;FIDS 3  û ɵ0{0yp yВv'Җs@FǸ"wHCzulDžSчG1A`_ FMdQ̀O YR4Ea>8sT;' zQ(}Hq$ `GQYZ,[|\\f SrGx,)Ch NC5L|DZ*ȓ8p KA ;8ˁ0D%K4x҉*2ؐ D3&" @BS^ 1AbP( 5k:0J$.+ax+C`˫`ȇ Db, ܡoMPL `LQiKy wKXLt"P FL9R0t e L܉PhP< *;=C0q 1ą6ͅ 8z. K]Wj  y̎e X$ $ ű ]k#vw$$ | 6HH`?#la*-*]2L%k B8yR"#"'h|a=XY1-3#e$%RHz«с1@$ Sh`MH-*e4{< 1]L }Ӓtզ(֭V Nx\Vi$N#Q䜈(݊!PHsԁI#tx( [5  h2Iѷ4x xyywh$ 9<= bP*yt+CN!-B5yȈiL>PlXg $aP S@|t P4 ]w 쉟؞HJ{et0ǒ%1 9Oyi[-ok *qԐGQ+ą" ۷c X3JKEuAHV.PT+`qA%JQ$?es!Г[P/:{tc[\B]8EJy8l#QyP HJݯ@`}( ՠĐؐzF d]  XN5eh߽=`&Ͷ2|dxb`!!Ww胼' F`ya!zOf5PJ܋|Nԟv۠+v">P" M>5LA [e5%"ٰh@Q yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDxHa]=cb'u(05sneWY=.(Q5!ntPO Й ćI @#Ij< EEdλvwP6\{ʀ9B!vJPXI&yh ʠ!eR!&UhɁ4UpȄB9mRF"!""#}!&4C1!jܣ990% PHYl-mr&Ou%/TKq._s6Oy$P! M`zW"h*;ns?s2/MDAk3Y^[")pDtJNJ{iLV< rK?uTOuU_uVouWuXuYuZu[u\u Ё]2 Obc$H6av]v᲋⬉L^#_n3 !W 1vw tjwvIݘ3w).x? }g& kc|h呂0Ө¿,?H ? FH&`efՅXHa3]y?Q ]7 s0(/@xgx77Q)94?$U ?獴 8W> !}>iЬw 4Uoe@3&5"+ 2q[AoQ|VyLY>RP#}04C8Y_˗|PanXC "@oh8!~J}&Sqc{V^ifN|Ҙ$W﷍{'w`U 7up^y  |^ܽ+h ‚Kxp|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5qyCc dfs ~"]%i`P;jzٸjN[t3BBChwKAJEbrO;ޔ@^\+bXi-B󧎎S6YCAPr"%HT<쳞<8tOR 5I!gAcAe @Aq>j!UP+& p?<.тIƒ2PGRy!xGdLFс-^)X # n5җIF%#-4-'r"iК,#;>)$N@:}^Ep oj)z):*}AqB", 94PCC 7 3A>9$4霣X`R<S9E6D!@Fl[@:Q<$SO8Pza u@/XA2CT 8"Ԫj=> !m:P ꐽ Z0梻VTrR>+[F Ѐ >=FC=X @(SG>05d]lYH9nyk2_r,a#"tPh"MI@]L7/ D7:k#()RV"Q#zXp$2~ꈖ>poCbA8G!vH % 1@ա"M`&t !7 ه>~spQ#gd^$."@0, n+aY"a2|~< :$R`1i ^bsl 3x ^A(|dr$-2sC8;fG<:h@ypc(Hsh (<5ً=t XZ'@қ_G"P8`>f8rx`WBc&%uẉA ỹUp! Eȑ$;(֓+D9d"F%Ta[AIՁgDCfA*HZc.SY@!p@zTt&4:PȉQ I׺"Dם 8v`H TUD/Q&&d}ld[Twr>T^'jUIDI!__so<ɠH \/B`e"ό4ךA&qaZyVk,2~0#,awf8s&`Z;LH/` ^M ^Aɥr(@xh Cxr$LtzifRV^pT0'p@@A\̢  H (a%FDLq}L$z)ƪ}b+LdT1P1݋ߑkrd dY`O9-s;wpd7> y|n$`Bqꡇ,A 9Oo>,IoXc [ak[>BM\M0a{ƣ,ppq7-. `/k6HQcM}T}vD>3-HK#ϹYlģ Jpp?65i6F\1y 6_y:`<[H>,2[1m; !l#ʃiY?xd ߐA"G @03s7NB !KF#CFUG!LS:h)H yԦdΑCz%[ BP>vz݇GV6lBK(@w<$G!=^A ,a䃊`\BD-5FCUD39A, ;ަOE OўIʽ={ ;AY_A _!`%,MJCSLHԃ;5DCC8`; EZ쁀4r ǘDaD ;A_#bMPv4,-Zb$VbFdB ɀ>l@)H4;(-C+nBCXJahA4m @4B_v8 zLAA;TXPġ+b ! `m@$AAGzC(<;qG1" #B@ԋAbAjmI䑜*GGЌ<\^aE4DЊ!@g%H >d17MDHc%DZY!IJ8>rL=CB@m>TXM:Rt2@bC 6m] nH2ԃ'5EYbdC]",!xIeZR\CF4!̋Ie@B8SEXiBP!\HdI>J:\! Gh$S2dHŸAHn afY-DzGD8CC$ɘ,o9 }abOƑT.I_fj_`MH㡠mX'mvF!#Đ^`)du ;]EPChyL贅b&R.fKR}zh:DCT&eAH'g#yzZ,:TrC$()FH@= fL< W42䃆gABGK*߅DٽmIiA|niE<&e,GOAK!;<-Yi&_BܟA0@E(ߎD a; pC/ #6Dt]ϢFA!NA0\*)e&B/XiZ*M`E02})5gɃ;< 2m#FhE4a~ V'(fC=+:܃((Ljr=:ؽë^Zi!;>8@C8?ĞP(~GRjJޫN>_V G*d=p?8Cҵ]i&x;סPlʢ^A 28e,=$,;Cޕc~^O>@V\!Ţ,ZEJF&i*C78Ì .&:]`C^!5 RC:>@2 r.Gx@*[泪زJ^ GjA(YnBH.vw7@eFÍ$_: <(/bhrE .xpZҮE1BZ.Z<8薘B (Ц=FJ[8ӜLC><($G`oӟ!.v E/q )5/B؅b-|0ȃxa0fnpEp \hED h~%r;LNDxi oyl T~psS~VP \bS1-G۸p ZhT->o# $G oHN/wh``B-C!ԃ =N⦲*2+kL ȃ^C]aCA@I^T90`U@:o՞aMohALX[-/ g:ZPtE99;DCW"9Xѣ24 RPٰH3L XÌZC6X%A0Irdv, \djTĚZbH3CKFsnIAOTF8!_>8Ӆ/:ln¢'%{so^ӳX>uEו>\[Vs3AȈv# nv}[($5(a@XσCZyA%%ׅhT0 w=jEP9tSGz:dȺ9E`@/!0l@ܱpz 91U7Dg {B 7W?#`[|-ĦyBpX=l| L#8<&,C̕@Kxo=:p;7JD)83#F3z!0kD<1P1պj<pDE7ìxoA`H7&@HD EE/(~ s֕XqÃ5tjg>,BrD`F\8~}ycO9^/E@ 3"5AD؈w ZT  )hF:dH >!`hR@3xaw JKF< A2$9y!y*C?Dމ`wh;tb+Ƀ/I3R0!BkP 1WoCu[6at;7/!:ӚosPz0,⃃[TΔ7^Z'p Zʮ{rZŧjda`Gu 0҄2(U a PJ`XLZd]XgehjlݖnpY HɆS&X L5S>b |Q`F0Iu^y5~%-MU-[d65zG`1HeQf2euޙ}蠅#5w-/t#%'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGѱ_r?C=Fm9'ݷ] A-0V2f;~k'O4`Gyqg>i zN.EIӀaw4jZOST hyIRBLi H䁎-S@Gq2Qqkep`?LpK D#HO- <7#!IT U7.}IBP<@jC8Ō !E&PQSefX{RKA( tLT0Ѱuʕ%-bQt ;5*I*{dG&FEtHXaGA>^(=f˛3%rғ|*!yJ U;[ 蠣T'42*)9kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&9@/vL<ěPf?Sv+"&ӎ8"EG`٪*L $G @KHy *ȀH)d €}T+ 0O40RP*_JVn6j-g[jo^*ZɂT*!pЃZBHĽװ؇LG]|! 7Bы^H`j聆Lt׏xTc-=1֧ߡm:!#`%}>쁾Cꐫ 7 ̣$Eҡ}KeC0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_xyTTx]J! s@|c|M@l,'HKd"[b…:k O$NFD pG:$&#6 HKE  jijdZƏL&0IΡ! !L P 0f( D"@:@: n86nC @ ‚ ƻb k !d@6` #4,R-@q!)(R p-H!@:iQ{!cM!(T !@LD qqȐBNgJj$ X|_b[F Q[k$@ A a-!tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzH!n%l# * @-N$~%bMba c&%!J*N bϖ!;!)JP瘔b  "((H<  XL. @BVtB@aRS11A*b 3dT*"SdR-7NHR>@] S65[N39>_fb!aTS$,5 -4%P!`2c4ܔP>;[h0O62Ʉ(" {?@tY* `BxʬZh%2j!##LH`%(I1K4Ũz`A1S@ : s-c;#AҒF,00@OH>L$0p!`emKkvIt@ i! Z ҬmI !@ b⏓6eDb΁JJG&4R h3 BƐt D!*LrìHRh֮pAA$ lT!@pr,I=0XU^硝ʸ3 nT<TZZuR2s+ a@D A3`j"5Gbjkԣbm?R<7 BQm{.14a8, 끵ZpkQpo[[6y 0-킶,ܨHQuU\Z(V:bB\B A FﵤJ@ V&II3),5Rl:aff]'iAWPG6hKhA.! `A-5fF6m+!iP^R>B|L!p`B5l R,5xcI/7Y!k@:Do7W5A6BN,e|W TinvD`¸r R"wiGX喆`LaIau2E2*qG26q-N/V$AVs2a V< A@$ D{S[ 6L&Z0 $@ fXvT a^O2{Ȋx Z8Ձ lkn$P ayYl tS䎝(͏"ٚ,Ğ`Th&P;vKlCh+"b6tE@ *m5A t)c$j ĕq)Qkp,"t $ x9nVZMDJ! DZL6 eq$ g]:2` H̗Zjʬ"R=@d*Ρ cxWjH//0#XF^)"@1RC{l#K:> cC3,6DdXC.P*΁LBY hL@ $?-Z׿ "cKC=0kk("Ȩ8F38d<"nz;{0;{6*$"F`z?>#4!"`!e@*|⧇VY[ٟ>:ĠDy%AhM@AJ`F?|ءd0RGTLUQ \N%맦PFn*`'b&v@iu/sW;;HTPPN(LĄ@*l7@@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿj@X'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.ϡ^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1XρƲ0K+@"Z;= $AKu/!E@Y۱DEit^OK~+i >b+ɾC^Cu6(_wbfFh OGx,臟_qD.!"e0@7ND!;.>NCX؁VFo;6MIi6֦yT"9w3^4P!C&\.ƍeT܆y(iH&7(9P68Wz2>G@ pљ:լ[~ ;ٴk۾;ݼ{ <ċ?^Zv$!]&@ːq;9swYq<@|?3! Ll4*wرN2AF!\×vܕ6U3>s;P8>L8gv'v7cgF=CB iNJiRe 9 d4<$% \7p1p;' _ 3@GTΞ;XA>s7jk_FtՓV<UՙK0y ;{>׻9v|e@ߨD'Lnf$>Q#,Gӫk-!,;q|M[cuɅ#OgdLbF@FW1CFtJ/tN? uROMuճ +~hqF@=od,{g6Z)6ٰ[=QOo%t<`8U.8txG/E. _Nuw;g\˼ VOߏ)ƒCr"4@m jDT q$+K7 &( rj'C IL%0-X@Tȍ 1t|>PϕqM 0Cpjkfsݔ7יiV <R.(Ðǘ,#fVW ΙvCa&Ιj]B jhFv&%C#K_ Әt4Mo?4HcWF4` #l } w 9Rye ¶$ 3B)tm@,;%UI Acj wb`wȕb>XԵ5#LQ(Vȁ-7=DU HaGT֑ʇr1+ZV,V>UrzdWi+@Kwl.P$N*wms]1a$L=<ڂ iYR‰8#;e|3$;PvH;0H|,15y]RA x^]7,PW#qxY[=:6wt3^)yK*MH{4І<歯Fk#:6 f0f^tN5rNP ؤPZR | @ zЄ&M>>A5 mdb UAÜAR{Y׃m3W5]˃u]lRUZ˦@1RF$%B|,o_[-<MG }D/я 9Gzo4Tկk}늲e6wr6.ct}lopלw ~/+~oK~򔯼/k~?Ћ~/Oԫ~o_~o~ /+oKԯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ7u\7=h>ExpKgN~ C0OKSq =LdhZGG膴P;SOd!iWxdq||(S~xV :kvS!![(xhz" L 1C Rr@xvӊŁfÇPhfwAψz9fTc|a hAHXH5hBMǍ9vdEy?(яDȐe pHx'(Q$;  ih^q!IH)֒ PXT$IEx(r<+Hr I'*ru˴ po~p WPeA@ʳ7瀑o>o3)  FE<0`b Id,|R~93x z9Z蕌"p 7v9B` ֘Kg_uH+b$RL!Ie^Rht:N%%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST c9RY*0:3nd7ݸ,r}YS=̃!| aN|I.*S>ϻx7~4>q7yaHDYV~钴SpϟENb!t\w!OHInja͛FTqQ+>gEb36t7`Y^SBE=T$ p9FqčT@ d 9 )BȔdHMDBT7&*A#F! NXaZj;.H".=p-/c54'eg*A !CdF $DCyrFpoپ]xGS GaZo~Fe0A1BG@K_Z tSd-i*~Bf$L BzC Q  0rmvtF|/nw T. 0Z=30[VҤ0OT!(d*fE N;&dD o@K;аa>†ԣ Q`&}h(1^ h!]'Υ1O1,$4Ϋ *՘E9$)^{^S.1뻗G%Vw,sh S,{%[(;5~R*X"|Ȃ|I!޲u T-c7;9Ki؁nKv+N@f%SG`bk/ǔ@tl@9 &F! L`_ٵ2,A 6PlSx{7(C?1DG$DOD1EWdE_1FgFo1G[MG(=,(}6SE$*Au2hv䡀 ( 50ˇv.hmsh );@wt8v 3 qwx6݄r{Ɂ`ǁ'6ӸpYF(|*I+Lj8,kW&&t<}0,3Ф9DqU Xe}tHH̴M ;+U@yPss6v"jh8JA[qU_yahˁaUy0@uBeh%Ig%Ԭ}W!Lz`.z@@CӊSP 5h8-= 9}Ոc^UՐFx#LFys9iwb#v{+>?7 t7lF8 :&$` dp( U3Ry-ɥ.aYd৐NnBg>P;tI"Z!M:ORMk4UU@ ԡ|#1!ATI Emb&Lg7 X0Dr岘41]FId&uHd:}p{@JGFmUeP>QT2Pn |P=պI76З(r7NJ'qU°Շb[_t 2􁏒d `H0.7ekC@b7ɃY,FYh@y̬ wXNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW (~5>jH -r/yK:$c&wМDy%b}9EByҕt7O<  X =e)8ËugG{ˍrQf)E4"P.'qQI`s#?xQߙvG|I5\"Jx-| .o e+}E?z#ֻJ&c0}9PC'1.}˄`5d>ltIVFj \-о}:ϺVèo+8nޓ|v,)I dIȣ-IHd Jٰ 4 6y hG`>Ev耤x y G|tr* op@DlTɕdɖtb5,upQ5L.$ VEƐ苗Ȇ; /|;Ph Jj t˷˸G"Xv &Ȇ{p{U  Ԉ>2}p{@{0L~cd85ȼQȭL1$8?$NK5(88Ev@eP+lq vMhA?<ڱ|H$ί_tN !ė|H(%;}x HY> x (\ РQ j#} Ia9$@xo(f 9L o4"5#ERlK?Ȟh MpR$Cz`y'(J$|$5H5͇fpxp ';Y"|h"Q% 3M9}!ׁ|vS%PT-F5yDKTUUeU;(9yq<0  ȯ֢ՆL0: '0ۘbX v.!-Y#;LJaf\zv}0T:FL ǔdhM(EhA ևv^Nhy0!9eЇ{s ,՚IiPike  &3@yxn@w}hU(cP$= ɱLnjڇta-B_l*$r: PM|@g}Y,WqgMb7,CfHE p}p`,hPȄ() h،`lfȖ8jZx^0yevp y\T Hb鐊k_Y), ЄF!( <11m}h><9KkǐH}o{8}(|w&H8 8Cih+z؀tn ?hij &.8"رÐ?~Z~>LJ6SGutۙ탇,!Hz ЇzȁDZ [L+1r9ITuI$9|DU:UYϐ :^q}HTWu/:$=  t_Vi,ʣFw$f @y>IWgW|Xy7C \y˾5ޅ7&'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF ЁPӯdN+9Q9˸O[hN/wXˀp'y/_fęڳt !)99Hw3Ģ{0"Lp!ÆLhj_sQĊv(rÁ$?l$K-bl)s&͚ + &B@1s(ѢF"Mt)ӦNB*u*ժVbͪu+׮ Ov]𺐁- ZΝ)^Kn ͓Kwݼjʓvސ /exqc7eJ>re f|x5tF.PҲέ{7޾.|8Ə'AݓmSzC'3Xc^ˤW5Qwų.R_j~-3OdUe CFA8uVMP9Ps,]7S r#X'+آqφ-:d0A܎ޏx`lB~T y%yҔ5yL'Cj*4ЛT Ob05@/"2ڨBi`3 t<D`O:$fԉ<g:`D<2&\-GZ-qS<{Ds6! {#O&|׵|<ꑵJuz=A ȣCS_ק:P>#; ϥts*>㌖1Cd ,x P$)A\ECD/Q<$|$p;fc,#8@*n  6vڡA+nēLdǎIc(wKPL_ q %\&< e?AL`H q3h,a4(G;яJ*Fb<"R40AAQ b!H4 cA t60x/ob :N!cֳ;vS2A(@{1t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6PlϹ^H>x=i¾;}$9m3LI" AkZ6Ȩe Xq@}eef]Nȗ@:ͱ sy#q62ӛC=Rr PuJ53 _Tnر z\:ސ1p{Ap b Ny]!`ʮmE,|RgFA>$gm@+e|5Ał |B>k;A q|#)}H|`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^:z$^ڬ TEhDfD͞B@=Xߵ;H%>@0|\A(:4!C \} TUbA` `C, a"x:AԊC:T?=lPlB@-7zĉu,9QAl<;Jda6:@SU ]^ɥDHE<A-a\M%ZAa1gḀ1 T}D8fBeB@HXC=:j'!W ރ !D*I$۪Ɉ*J 7$6'$cBZh"8+⃐;jp= 8?PCD=.փ@*R)û8b@?rWA=1Ԟ) @FJ ;\cC^DDE^dFZX^dLLdM& 8Db ND&AB%;0G> ,"B=F=8e]C^އ|̣p;x` AL;D6i uI&EMa&Ie:IIWVr A.N* 9TfA\f<4BmA <$;\ff6gnn`Хdf+u<8:b2f-#BT`nO0 A=BdBf.QI~g"mM:BhJ!pb;ĉWZG0LndGlc (u(x_>A=IL@3LlFZDօ<@= Ŝ\?8`5), tnHC/0:*ę/ }_z2l$t($I*(q"DvW՛.") $cB cRDD0*MM0bɆTUi\9u\IJ~WD$QDȃyV2+CDjშRk!%æ4$ ̓:*NX>ŪCDQDXRaỸ};:jĽTH$yROkCC=liBv`9Sce^A ``)֖̟ C#zn ib(BŪܔD@ܭX<<, @0Hحؖ4I@=HC-톕,ےVfd'9|4;x؂A$ H]4: gF-(ڎb@*ǩt-m-H@:@ n`<nҮ`u&b$1,>^J:l@Z"40uH:X>0AĪ*dfK$@ 4lO*T0'II)G=% p 0 @7z>EAD@I>î@>Rރ2D4:EHK_`HI0^>m,B`=h@C2@i"6 (`/<@YX)kʖAo>>)Exe[Ơ#If KcJ\^̊0KjE q><&: ZBd[lݩwr:-I 41bZ>K VC. 1V(*D$SeAd@æALA/rU͇!L:ۣl@++F5'F4s)%lC" HX1U23pBpQp^+b3vc;c;]r=SCSHvbPeFXtehvii7 sSLkw_{ԅknvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyy7`uĞ0bN<@y w`(raINU=bzK: @U mODKDM@|^>Ldrh𥕲9sT!AtgmXYiGikAD%CDRloA ^^`,rX<\,; 0]ZI{#6s%D,G$PGC|>b?GXR1-/a]ц>Z;RüW,AԈ ~Kn|R1 BLu8̳lADU#) ȃ{@1 +]΃}SNĥdJ>lJxt ^Iο̎VA < ӄ3>T@v}$C$YTI&]惩U]>lBp@}>ThxOA$!^C=TA@ݏDXcJ:ß:1,BbA)-BmDLKU#=0>)rUA܀׾i<}-(@&A|&D(OB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7}`G@!;yN_w#&}✀&;7`A( n#,3p_= "c"12Իo_)&.BLALA^* Q lB$>xqǑ'WysϡC +|yp[@:?7 \R=(v\1uΑ1}&H.u*|*AE$g5 (zJEO F2Yi[qU]y#ةGtΡsCqrG8'Pށt rˇ{tY*{a vwTsԙ?} X3 D8gP,8Q%z@C2sO>|i4}WYnaYf"+!FI@`JToG `0f:z櫱By$G1j1Ja xBI'D1SJ  @؁@l~'N\o!_Mª'o)J n1!%@CVPá,q7+i5· ´@Gч2 !a'/йm=ߡ4$g^ 6;!SgG,_}ZɒuPMP 0Dr @I@>UR>jPJh`s?.)`9,@2*n  aHH#y$z@b۲&Il䱉U 1 9/!@=0!! `B9Αu$"`<E7P`z38`]QGDDH). C@dD$呕@,H}C@,` tH(Ttp Ї> # c ` hB7CƷ+ @{r*ZA@+OyΓ=O%Tj4AP. upB>ĀgWPnGARx"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:0o5O[9zYgVCx_X\Ms`$8N'w&Dba5e2`G/jtM#C49."7K>@%d:* HHj\G 汌_BE tzpzYQBҵP`؀8H6&GVWWtT: :`•`zqy0c}>ttiZ}UGby5"` \h c!$0=aYaG2Q4pRd!9CL  s]4هjC&_%biE 7>W;NB g(OX,=!A-hAQɌO 7}u-SV3y@ @OQ} 6apBqQ 200vM|r"iFaTBJ kݓ@B(SF{Ag$,؄@+ U|# @C,x$h(0bLJb/0 `C=bP "tpH߷guoDY.3}lK@8wdCNI+6PwP@\ 1ULStUJC ^Βݐ@3.>Щ2 G`@%tϞWi>Î6XPCdٖ^#ڧ}| A [&T>@Hs;gR Î$<EC *Pc=K8fqVqgI& !2aF!8d$J(Y,!z"N** VAp즱bMND*gM6KbB!Y:xB#@i!g2>g@xɰ $hPXa!& /߀0 H!Xa{8 !]ԅ!P!ڧ_#P*7R I"!a| 6(@A++T( A&L &{A@P~Dޤ1"bk gFL *@aj6 ޡG#!}Rh)pamN/¹ahuazAz]*@Y@ B#!`GaZ1#5r#[fa3uB("bc'5LA! (t0r"(@f3'xƯMejHF R@#: -g F|'4O#r-rOԠ*@g1"CPaøl af !((J2hVa0>PƀD)'P8HH LYHء-F%& %8>R R!H@6+\s88$`KH2T2$ n6` # ಩>B$&C`&v|2!'B4"0 }'U46/QIX8 $&$@ 7)^ |FZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2'`XeHtISH?j&bJ5B+ (=JI4Lݍ k& @ "La2 8-Ae"=´)3TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#z3[\Ȅ#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r*d>ez6i=@<@E;Hүu/a|˷d#B0$@"wy5#p dJEnPs-uvqQ>a)%XuS">|7\!܄DN8-ҁB(NdP>83Pr9O* uEkZEAqLӁa.QJ7%q;"p*[[e\PMl",1qIVu.>%_z{T9*sCAEؘa7HÀv#R.r[!xh0!2A PReInoYnb2!&^ZkFgYy ڠ>?!]G?+s!4!rI6n0ҁWj ||!<%|)-1<5|9=Ad3vOSXyѳb/ BԿ]r_guKX#X8(pEx8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIA'_AP !sw3;2NCqv-]t` -z *7`> t:ǎAo^=t `+ByI땏'ཀྵsN+װc˞M۸sͻ.Ny Bn,u~\tt s%W2̝N|S~&O {y{s"T}A -^AԃB|0= ($h(,&Nd(vNsSv 4dC8@ CC/Td5ިAb .D>Oi7Xgȓŀ"@95;XOi-Jb~gOS!'褔Vj饘f馜viHE'YʑW;=9x+ —k7\ 鿗IXjA@B #,Wlg!FI>̾@ܨO=[P>`\8(?XPO: >3{6_QN_B`@P{8{#>~:_a(;DW0HM&;N ؜-_Sތ7G.Wn?A=!g砇.褗n{?< {|K9c LE| hGH@0Aԡ^$Q:6EQ2)7@gчt%QD恏y!9 ,PDz` dU;1)GI-vH ba2sa%A7`v[Ҍ4ʃq01Zd4S&_ġ>ŀ 쨋 #F>Y+f%f2Ur!r#Rz-5Ib R]z!8iZ2adY<:쑖͜ E@@C#%%䅃LgM% bg9x|>ς0hPHX+QF4\ ⃔ TGJT@@5Ct%@R:QĢpV! 0㮂 5gv)^ sHuwS0KcôbƮ'ODH 8Cx+*3 ⰵ!P]DzYX1:>PC#[@NF$v mp΁C %2*k$"G @=@j-z2g|Qys@ NŇd9DAJYN0h/wЁF 8 @YD !pLsdO3:J/a!%K oPK$7P\q0 k4/{w|sX,pB8 duhF'.v8rAR 8Ǜ b-*-c,ad[ɣ]22 3G$''a24~G|HԹq  fA2Űg XT CP1)ݙ q=$blhT/d+v$cńϯ!jeG< AjHc YbPArrXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ Zek9 P ;6 $ZȍzOpa-%fz@CY (\>P(Yz , (A+:M :@tu4cJ7y*M}7oHΑ9!cA`D@r0қg>Y^x+EKURrg;qAH t&U=ST{aE/|v>r e!Z:BF1 SG<zfʋ4)P(?H2< zb}  hjZ[ai v aDz7X&Ydʀ A% Gv! % EPw?" $P g\E?@Av212W*e! CPbK"2"X">(rS}g2"SR`xzXOJ )tb!G } i+@tb2AL ON(L z Nh P AX(17e [F1LG31 V#;Qk".%6B&F!Dh'L 4b}7сDS@ j+R+AvDEj``-b- H\!Et*>5`Ej*% > `& `T"l.7BBuPTwLe8**E@+e% 9}2%p] y:0/r/b,p`dÃ06c5h0E 1؎>|cmb $*%`72>^E@ H22v5D@p8g:v#t#+.E0@ 9FP29PDΡ=48& 3!Ls2F -1s5{0#MWXEYܐV0 6m6AeDivӇ_X!GP8  9ZZyP ^82qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;UI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*!*O=؊t:0` }WvQ\^u hxz% W!Wqx`X%3K^UY7^Daa0|HS!V'aF'P!V[گ{0 fiLSGj֌1@Up%6VjKsjh y&(4 P8Te]qMGd0qE6"ȫN*{%wrSRvE;T+F {lF8Hzf U{^y^zsk{x?!:| K'q[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv. !4^c?!'kb(,)v۽蛾BLO /~P0[#/b ca 0aPƫj1//3'ZQ0~j cP2“2bP. +\}Ԡ0yp,iПf 0yus7 7c88Pܳ;"69jZ3 (2:(f||!t^*hr<ƣnL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#":pqKktIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2 ng$j斒V (!3.yՒpJEWi&@dk$g7pפnբr C0`Y[~Vt%m 9~ p-*°s0ʧa*̢vl8yM'H'1 m\"o~?tx]+ |3n6V{l]P,a$M" 0PYq p[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*/a}e_L q Na_j j!ŗrqqR$ʵ`ӁrniEbQ^*+MWac9]}K-W o;hV\ o@ .dC%NXE5nG!E$YI)UdK1eΤYM0ɻpu:\< `yJG~g `"S!)wP3J},Po T0+uJ>JǸ| 9'*y6%!PCSyH@ K!A CZHs$k!nN,`G>C@g"Đ%Xаy BtQH#tRJ+RL3tMF}jQ8TU3*YŬ.js gtsc',@\Yh ǂ c:XPz0 Miy &Ԑg6!1xܫ}Bʁ.̳Z`11{LsA3 SO"[؛70Đ ruz`s o2fsyg{g0`hDQJyb`jzkkt ( aKؤҶn{oo* W.k~q#|r+r%p扢3r$7A^E|@|@wd)MyJT!24!Z:`3vR@=_ΣZ dAP"t(1;&C 50A*CUѝg=퉻ő*pypk %; d7V`:I%|(HTFlBqB0,|l \lK2U]1]ѧDѿ De1Hɸ'wֶtC%jQ U:K!/eG^сiQ0x;2`¤P@( \g(RtТ[Q)w@L C3(a:ῥC6BĀGXFVȨ4!U::(8U Ep,A(a>eᖅ UdUtCXXy֑G=\FWӕ*[:6EP{ kV@95ekيfꁐXt t*B&VbE9:5m\B.`4`GX9'# $b[{38Rta; "Ta@5$yሜG rPsm&[(Or|匜e$4F0P ` 'Ubare2v>e @rKQsLЋft\c ,ߡE4Wfhґ9J݊E= lR Gd2 UB H) Aj<@P}ld'%#F dh/B&p u"+CdֳRRpESFCX@\(Iq~A/#H"d8b&vt7<9 x-EHSKX ]T&ހ 0=I`XjC).WCcm(U7_TbTf-X+fWd';,pӨg][:JƴNd3~u]kg{IֶUDn S~w]Q.2)(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}a>'(0}Cs0A=3&EFuv*@&[ H`AꨯͻY <tE:0"N YW!W3 ˈ.A#P {ؠ5r?$ " @ #Q!؉kqe5 J6K UA ;7s=/ dpUsk M ch gPйYAHztХy?Iꥬ&/ {(wPeigB tal?h'ȀaruRC̺A BJDOs θz X؉a99 DA*qh*}8XH2;HmO2'Rh1N}h11PWu`X.{Y`3%1pͭOCB0d8͇^Q|CP5eG@Jl CPPcX fhZ+Ovc$ڇ|h7@7T=T^2dvh`F$MP`)d0/M0M~jn;XOƬd P2ɠHPLQXbkaʍ ~Tτ(|B0y^lf8ҨSГi\BAE&Þzlœ>ó-oȁ"@xCd{@YbTfۇE^n9(OƱStd }Xw#}pzpwhv .)KCo/ u`yPP5k$^^Sle|8fn[ϊm [VyMT#Ai 5leAof=qv#oˇd P)7[ .(rXqw#B!Y"xȀ|@D}-wŅ_Çk>iE ĞӼ}`"nd[56c|OA >ಀ;zgGf4 F p?Cr 2>y +ۿJU~4Ddz0 e3?SgӪs\mzxώ(wxOͅхyyμ+h „ 2| 'Rh"ƌ7jH#tF$ yɋr9KiДdA΅ "c͝?LOw%4὜cm| ;g`s&(ٖ<q `LqO,Ձ[ L_؞/SA=AZ^ДN/c@3AA}GY=$> ;3>! :%> )"-"18#5x#9GB&ԋ<#ADE A I)dANBY`N'm!č>AANp Uv;0@:(>mÎp ぐР&tE5GhCƥL Y*Wmc %, A3Yn:dW`d@qΫB="4 j>0p霣Xq'r/!91qLdAN{#:P:P0p̥N9A9@!4 -,)j}¡#@:Dy^wJC ^~@@.^i7P>8 !ApLzϳ9)zTADp(Mu OtKӇhr\goB@9nA3|i2?ՠ"āf?(< Cc"Bn CB<(}d" aw XD  T: v8ACmG?(9y.e>s7 s6LDA6 Y!@BcAU`'Lqs~ЇޡEpы`cS`l 9 ыzCO!y5^GJ= l?qk `nbaJS6 =!AhQL Lc*әҴ6)Ns5Z?P1(;x cp2jBz%UKmSS9 1#@;SSUgO (՛⊐&qBԊ(`3CL >` 03&&nT,%ppEiʉRDI}E3xACQUk[E2'>@ rqb\i>4-( iD#0+wh|A|sD#8Xȟ ̑$ǘJ·Q$S| MOR aCEjPt>1,!9P AN/ hON2;L实ax@nsb= 8/p /!Hʒ8\WQ)sH<N$7- #x"v%vxMbІI|嵋9ꡐ͊J^f7M^%(4m9 <XC|Zu!`~A\! !Πa1UD>Ab9T H"B5ğ@E9QA ><(XlB<<B0kþ>OLY0].#363>#4F#X1$%$AX!DICU zLh@:@z|胹mXC9@Fp $q\c{;~b4N&eVe^&fZ>C>0J>ȎC090AS@SY@PV&>̮|:W`(L ^]6 0 m,; tũZiZ L@ԣ`D D]ʆB0@MO8;T.^ƫM]k(tL`‰dB]lDDBNP H OBBI*CZv(U'*(Wxɑi;XG!D>BYePfWzR{"D@lD6Pf GWB)B@A\A0Lf֩)橞5 )EXA@9x;;(˹ԃ!>ïRT@B(*e=iL`P/مs,)\AlE=CmOhBDѮD E l<(A$ChEm}Ga)KN}KIN,ҰvC*ӡE>=ElrjJYY,B+~ld$sABmY @+8]@)&Bס"ÕJA&..6 %hN脐`<VzDD`@<[BP@A nIOaO0^M MB\PPan.FAεc4HĂN0\kBm[[UAHa ģ.E!=lEXH~&M1kp)o:<0 KdFIJ@pP䚩ޜ54C;D0S\I 8R:<"@/cR> H2p|ztHCmpfET@A|&rP|Jɒ$fTC~$=1  tڢ)U!sE}@\.̍@&'2((*>T@20031*MنN 1fQIc2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH<1?W/`G@lK[Kf"5\p1#L7S?5<i.[p:E,p@Zh@VH&|z&׹V+o>$2rhGoF$+$K88@ 1 Y,%@(CCԔFfu]2o:XZ$@@pJV[*BVs5sDrD:X;Ah 1T_7vgچ"kKP> ESp!D0NH@NzRk1)jX[bMFHľQćC/Rh=(oZl)m,*xG,(<>2P1m^ EP4Y^> hH8Ŭ;c>0A/l2̸Z%he:w' ENHXqV KK pNOxQ;)C/TP;XVhWh7۩a,Fc<ZȜ`!mA=hiĆgt7\2Nn>TtLY&Gv]"6JxL EC'I*X}JkDdJY<$LACel"05Z Pr mT93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/S C>!˃ @9jAoȀ!CAÒzZ4K'^dYA ;J<1\ 1#˱$ ٟ=(ey'Mm|ü /DLûT=dAlLstF PPDu\hΜ<`p WO|p8 N\=F՝L|ZVD^~CX@̈>B~:|퓎q@ݝ0&@,4MӠ8H)DĻw|ȓ:(]y}(0߻L|0F!!Et@w"3x̋;y ܧo^y /OS\̗N%o;<p(0G:.>[>"p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}>  V{%yFc }w ]E-pA6m:e0o; ;ם+qû|u-GzꞝFqTy@RRs6y,| HwlA %(GA4P$ӂ3B@ CiA` HJ"@HiyA}jhσЋ@O'"0Ĕ3 uq I),; &BQ9 0+ʋt|J8*x.ڀNJ{)Mr=t]v}xWvvRʀ2 }@`ai@NԑGa4(n ɦ2!̠9 W]|ؑ'Jzק20Ftx " oxvظzΡh /9&PPv2j: CVèfQG njAO6+, [tH@A iǭz|9'2a y9믌(0w@0%  Dd'8hFu;8y]EmhHTL: }`q\1yqw~]c&!QߪmA+S> !:0UA ^9A~!!ah_;GFDH \a$(<x(v<mBxhGDLg MhnIIxBy>ֆ0N C2YQ)E鐀!sF8HH#>Qau:XFz,~y#'aeXeq́`;b| r!`E;`)I51e҅S|P[9K (zrH;/Ҁcvy0_lٰz1GIAv"5JQ8t';p7-dH aP<a@ E}G`%QH#!F5<(BeQM8_~WϵT,L EdX:hE&`6@>bF,"ff v00:##o;"#H {䁂LO@ͬb !B*BޡR" ءJA TN@c&#fb³)*xbTZi^cj+ bX'*MJƮS:SRpΆcJ"$ޡRma.Ρ&@$XACTZ/(H' pEPk&R%* CD B AìbV *BuQǑ5n)lԁo,xv dT1j+6@+mjȫ(Pʬ!ì0 =C~"@e7($nB&B# a"JB" ''ȃ0HҞzbbbb" 08I, kafIZe'+L-Dr+42"݌'&)/" B<1Y $G[ٌ/D Ԣn)ma$"Kª$!eCR-q`\%ljr"/.2"A0j6P' pLI$qo'L$60 (s??@;L),Ez ĸ6qd"T'0@"b@)qF FA3C#B2({DE/2$ *Rhb3K3%BZebO e؊4ҡzB sTjރHcG"`? ;F% i6;bAH)n>ҡq.^NN'lB|`G AK$Nc:'Dg*!s//f$!dS/D$`,%O=@p@ʔ'RP( 6RRաT"n#lP$P/2$2Dʎ &*\BD)U@ `aVa'42Isa#3*>X@@5c5U#VdGdKdOe`a^0ee%%&` R'pA?qĠQLciViiif6T' "Nuڲ$ B7.dllmVm׶vܥi$Bk@E`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2&`Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvThJ  Bɰ `k3 `k"`#F)xh z6@Ge$cJ%H%jg1b32|V0n؇eAzb:kxXǚA9S*wB/H3c k84@Q04&/΂N%08γر "◒+ْ3.tNFp$EZ-!$A0h٠zx"$$6{AiG A""[E, ԘMԀ$]-1'ϡV+Ưn1la"MR3]To\fm*513 #喩>1jJK–qI a/?ٝpb +΂EL-G6::0Yٕ)WYA5C! v8r6KM@A7fbJ[h/ڨq%$CxΓ/bb)&?> #A z`'DB`*@V 6CF,`c()gf"H3X]RC@x`c&/s,ߓ)0M*C:t,!$vwjYv |(B| a"Y@"r}'v}CbnF`Hbn߳ATSЁL%0 A b1`=` XJaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0th rK/[ ~>*y}?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K Z?+Ĺ;0ߖH'BQ2>h?0@!|)3JZQ TYFCPvAB  MsP.0xeQ@=P<0<}2 9t +!@|KN[B"dHpmi}#)ȣA #@B^;5;թXcBs8h s7 mMɪdqЌ}NS6PG`Y$(@X$GSdi_jN="4  E3GВj8d>[)!aM;3E &0c e; NȮ!>瀐;(+dMfEמb29M锗F k)B Cd\ H?U^IAv^yd&<8{=ϛh$OԣOv峏 ?yONy_yoy4sc0OC\{ J&9: d:DGA0/hBD3~}ЦkU$HkϏEa#@:|4V] 2Ρ>)%ߞޑ-uQH2#dG; P|P Ҁs\ Adu{GT d$n{%v:ʹ@4@ B!Z݈0&Qn P yHIO@D ,7R 5p3_a6J` NB3}0!WB )-5 Ȓ8o>8Ccq&80 V''v]mzWXV(cs45BK^uM/=Hh v9ԁ@ 7 ps,9ωt~Oq!P\򱁠dh!&!*3%R6飞>v|s#}{#!9aȖs򨬄 ѡ2!`IJ/rb |@PMPXf< ?d 7N.#`Xf =#@-y NۂWP5 7tnRWe| t4­fswel<* #TLOeJ qS)\:sMyϽP>G!_7iB8tyBgw Zi #rps,֤(=*W `i W8zl`<1bxj8ovс#w|{ߎcg 9@bCD Hs\@XA(YJ(9'E;Kh(T˫Pu!EZ!• `} ?(PJ (<M&A1  P aB2[xф ^KTCyMpa_j s8MQ֒A8D1Tsb%>P'b 707cdT|Rxg&opbP*6([}2%1&Y5 Nmd##@#` 0(BP*n)vnnq}gPrݠVޓ@#_I}xE "gjp#cZ aqnIPt IOV<)>ptCY? Ir@:LF1$&!p<4Xj)@V`71X!P ED)OIm7!9p1<~1s`dF9n}|ypm){p> 2I6fRh#{gCR1ѩ"igqwj,>3(5p p`%&֑mo q*s=fS@[|Z@.vs0L!DcCmM|)4DCyXR`%&jqP1rZ,* bySu 6 ^h2-@jq qzOb% oч^h7(@0@ : jPͪ $'PAH}͕ bPb`gBxbي#7W`zC($#:x p @%#L ` S) QUsך S!D&@ҩwS鲧ejRb芭- ؎GmjdM>X!jA#QI[>Z0 A&F+sA` PEqp*I˻U>g<8`Hś!644Q̛!MCŽlڑJ4k狾髾_&Cɾ5ɒ,{72 = 3>@~ΰ<6УKNH:aDv3|{Wi˟}>|ϑ6w/s"N%t`Fc<#G߅fᆳ:!>d)QXA.cQ4hЍ 3;@ :6&HxFAHn[SdqÎ%$-ښACQ:`,Pp<ϑhAx>pK~OKN=tPH@Z|Oe ϲ,@@t>H,:3,2D6pX86+@;>Cb(" C@)=sںM< @BC;F#]MhE@Iу2.Pψ4:/j :p"Sv=9};7B\ă7TOl{ܐ::' >? C=OD/Q |%"~LZ#!{$$P |C77 +1AzP  {$uhG2өD ,@CY[z2 BP<q#=q t $ "J>H!IHA?SrI!Ƀ>,`U%@ass!wp聒'XFđ$2K@' `ŎGnyVWH_ L j MB XXL%g@$>Apx:&]0jV$`A$ DH@pm*Cwy 0)A"x:y/ n J@dwZumJ""ykMϊe2I 'H>܂0u\>e="&ث \=`qh@;Ԟc옍8&zk}uX@k) H@ĨBC).v>-!P O|  t ! )HЏByjC40!H [|p)e- x!܇L'  eu8tT'EV=~= P#` 77@W5@M}5QCg A<gqH0|=G&!y&<%10Sf1R`rp+v02> h_P=@Ѐh b}~hQ: \G~%P5}jl؆0 ?pU7$3-`0n9e˕# PvgGRE'Ih$׈  Cz<} 2k&br4`܀a :vy֔yd+.bT#Pa ]rE ,Gaa+% 0$ =X>h*`O !Ps !9YA$q'&iyM1 0|q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕp3{n1EB q2Bpr9/`GM'R0t9YLhd'"1q6T4Qv[.#4\1F])"Ҋ~ !9Yz|t!0q!"4uCWcMc S,`_ $0[U"08깞[xq$גYYsLLW` ymP@pNI`j왡Hu:P$y'P27v)Wa mrwe\2*_*_ș:DZG̢sR>C .gm!-*.` rP dpr:}ڑ," gY``S0֢qt]`waH% z  +4Jlk[Re 6 -40wQ0OA`dZJF#3@hj/D?#u\" gJeP! :蚮:,zT Yq$"AV*~PO@d&b*fڰzJj$ 5jr8 3!~E¤ (67+Rb@a-{ 2;4fc.gZЅ~ 2%"]b*U$]ǭQp@H5ZqT =K͚"#F#odv aHBmpYNʵ~KHGP[y}Ya& hTc =x`Q@srm @HZۺupg$HՏd#Rt.y1 VPv7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 005$5 Sd&Z:A173p#7tc795,>0@u| #UUj*jp!BR1``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLScL 5a"p@Sq'K>|P$AӯEBd9wUrcFpgH6$p`.pG"!7W9„,G |7O 'o^†o$ a>N;'o;LϢw`(oY>YB;z4>y2~rtV&]iԩUfkرeϦ]mܹuo'^q%;tvēC2 @عѱ Ђdfȓ<d_D=A&ؑS9=4OTH{ o:RC((⌄Z,{ocB`׆bk/c'v'PY1.*AJ*A>{eK0sL24L4TsM6tM8ˇ‡t Yd x (PI2 p(jH2Ey:Hy`sh *Cv[,}P49g -  v"IHp"ԛi&N=}G )cz @qFl `0oz%2!!J̀0cƬ9GU]@Pi݋t"h\hva6 @b3xc;cCydA@%u, |bWJ5U2d{|7|y=4ȏ`C@Q { ұfBs$%4Ї!! a 5nc2Bz@ zpa $@V$Izؓy|bhF8=QGy2H@ P=DI`B`T P3fM!cKKJHY;`  &X 2yOY "4XHG&dc~Tjܸ@KjpHjBD }E8L@B L%"r9{K%>;!1yͷs2vP-YH/_xc!uIUn=th]WL =2Ϩ /u8-j9C |LOT"_yy\vPI Ԟ IJ Çq y8` |(( y>>>xn | L^XhA>CC@p@B , ?=IDci ?zRwX xsN@y 0Ä(:\" 9f`H3%;FIDS 3  û ɵ0{0yp yВv'Җs@FǸ"wHCzulDžSчG1A`_ FMdQ̀O YR4Ea>8sT;' zQ(}Hq$ `GQYZ,[|\\f SrGx,)Ch NC5L|DZ*ȓ8p KA ;8ˁ0D%K4x҉*2ؐ D3&" @BS^ 1AbP( 5k:0J$.+ax+C`˫`ȇ Db, ܡoMPL `LQiKy wKXLt"P FL9R0t e L܉PhP< *;=C0q 1ą6ͅ 8z. K]Wj  y̎e X$ $ ű ]k#vw$$ | 6HH`?#la*-*]2L%k B8yR"#"'h|a=XY1-3#e$%RHz«с1@$ Sh`MH-*e4{< 1]L }Ӓtզ(֭V Nx\Vi$N#Q䜈(݊!PHsԁI#tx( [5  h2Iѷ4x xyywh$ 9<= bP*yt+CN!-B5yȈiL>PlXg $aP S@|t P4 ]w 쉟؞HJ{et0ǒ%1 9Oyi[-ok *qԐGQ+ą" ۷c X3JKEuAHV.PT+`qA%JQ$?es!Г[P/:{tc[\B]8EJy8l#QyP HJݯ@`}( ՠĐؐzF d]  XN5eh߽=`&Ͷ2|dxb`!!Ww胼' F`ya!zOf5PJ܋|Nԟv۠+v">P" M>5LA [e5%"ٰh@Q yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDxHa]=cb'u(05sneWY=.(Q5!ntPO Й ćI @#Ij< EEdλvwP6\{ʀ9B!vJPXI&yh ʠ!eR!&UhɁ4UpȄB9mRF"!""#}!&4C1!jܣ990% PHYl-mr&Ou%/TKq._s6Oy$P! M`zW"h*;ns?s2/MDAk3Y^[")pDtJNJ{iLV< rK?uTOuU_uVouWuXuYuZu[u\u Ё]2 Obc$H6av]v᲋⬉L^#_n3 !W 1vw tjwvIݘ3w).x? }g& kc|h呂0Ө¿,?H ? FH&`efՅXHa3]y?Q ]7 s0(/@xgx77Q)94?$U ?獴 8W> !}>iЬw 4Uoe@3&5"+ 2q[AoQ|VyLY>RP#}04C8Y_˗|PanXC "@oh8!~J}&Sqc{V^ifN|Ҙ$W﷍{'w`U 7up^y  |^ܽ+h ‚Kxp|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5qyCc dfs ~"]%i`P;jzٸjN[t3BBChwKAJEbrO;ޔ@^\+bXi-B󧎎S6YCAPr"%HT<쳞<8tOR 5I!gAcAe @Aq>j!UP+& p?<.тIƒ2PGRy!xGdLFс-^)X # n5җIF%#-4-'r"iК,#;>)$N@:}^Ep oj)z):*}AqB", 94PCC 7 3A>9$4霣X`R<S9E6D!@Fl[@:Q<$SO8Pza u@/XA2CT 8"Ԫj=> !m:P ꐽ Z0梻VTrR>+[F Ѐ >=FC=X @(SG>05d]lYH9nyk2_r,a#"tPh"MI@]L7/ D7:k#()RV"Q#zXp$2~ꈖ>poCbA8G!vH % 1@ա"M`&t !7 ه>~spQ#gd^$."@0, n+aY"a2|~< :$R`1i ^bsl 3x ^A(|dr$-2sC8;fG<:h@ypc(Hsh (<5ً=t XZ'@қ_G"P8`>f8rx`WBc&%uẉA ỹUp! Eȑ$;(֓+D9d"F%Ta[AIՁgDCfA*HZc.SY@!p@zTt&4:PȉQ I׺"Dם 8v`H TUD/Q&&d}ld[Twr>T^'jUIDI!__so<ɠH \/B`e"ό4ךA&qaZyVk,2~0#,awf8s&`Z;LH/` ^M ^Aɥr(@xh Cxr$LtzifRV^pT0'p@@A\̢  H (a%FDLq}L$z)ƪ}b+LdT1P1݋ߑkrd dY`O9-s;wpd7> y|n$`Bqꡇ,A 9Oo>,IoXc [ak[>BM\M0a{ƣ,ppq7-. `/k6HQcM}T}vD>3-HK#ϹYlģ Jpp?65i6F\1y 6_y:`<[H>,2[1m; !l#ʃiY?xd ߐA"G @03s7NB !KF#CFUG!LS:h)H yԦdΑCz%[ BP>vz݇GV6lBK(@w<$G!=^A ,a䃊`\BD-5FCUD39A, ;ަOE OўIʽ={ ;AY_A _!`%,MJCSLHԃ;5DCC8`; EZ쁀4r ǘDaD ;A_#bMPv4,-Zb$VbFdB ɀ>l@)H4;(-C+nBCXJahA4m @4B_v8 zLAA;TXPġ+b ! `m@$AAGzC(<;qG1" #B@ԋAbAjmI䑜*GGЌ<\^aE4DЊ!@g%H >d17MDHc%DZY!IJ8>rL=CB@m>TXM:Rt2@bC 6m] nH2ԃ'5EYbdC]",!xIeZR\CF4!̋Ie@B8SEXiBP!\HdI>J:\! Gh$S2dHŸAHn afY-DzGD8CC$ɘ,o9 }abOƑT.I_fj_`MH㡠mX'mvF!#Đ^`)du ;]EPChyL贅b&R.fKR}zh:DCT&eAH'g#yzZ,:TrC$()FH@= fL< W42䃆gABGK*߅DٽmIiA|niE<&e,GOAK!;<-Yi&_BܟA0@E(ߎD a; pC/ #6Dt]ϢFA!NA0\*)e&B/XiZ*M`E02})5gɃ;< 2m#FhE4a~ V'(fC=+:܃((Ljr=:ؽë^Zi!;>8@C8?ĞP(~GRjJޫN>_V G*d=p?8Cҵ]i&x;סPlʢ^A 28e,=$,;Cޕc~^O>@V\!Ţ,ZEJF&i*C78Ì .&:]`C^!5 RC:>@2 r.Gx@*[泪زJ^ GjA(YnBH.vw7@eFÍ$_: <(/bhrE .xpZҮE1BZ.Z<8薘B (Ц=FJ[8ӜLC><($G`oӟ!.v E/q )5/B؅b-|0ȃxa0fnpEp \hED h~%r;LNDxi oyl T~psS~VP \bS1-G۸p ZhT->o# $G oHN/wh``B-C!ԃ =N⦲*2+kL ȃ^C]aCA@I^T90`U@:o՞aMohALX[-/ g:ZPtE99;DCW"9Xѣ24 RPٰH3L XÌZC6X%A0Irdv, \djTĚZbH3CKFsnIAOTF8!_>8Ӆ/:ln¢'%{so^ӳX>uEו>\[Vs3AȈv# nv}[($5(a@XσCZyA%%ׅhT0 w=jEP9tSGz:dȺ9E`@/!0l@ܱpz 91U7Dg {B 7W?#`[|-ĦyBpX=l| L#8<&,C̕@Kxo=:p;7JD)83#F3z!0kD<1P1պj<pDE7ìxoA`H7&@HD EE/(~ s֕XqÃ5tjg>,BrD`F\8~}ycO9^/E@ 3"5AD؈w ZT  )hF:dH >!`hR@3xaw JKF< A2$9y!y*C?Dމ`wh;tb+Ƀ/I3R0!BkP 1WoCu[6at;7/!:ӚosPz0,⃃[TΔ7^Z'p Zʮ{rZŧjda`Gu 0҄2(U a PJ`XLZd]XgehjlݖnpY HɆS&X L5S>b |Q`F0Iu^y5~%-MU-[d65zG`1HeQf2euޙ}蠅#5w-/t#%'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGѱ_r?C=Fm9'ݷ] A-0V2f;~k'O4`Gyqg>i zN.EIӀaw4jZOST hyIRBLi H䁎-S@Gq2Qqkep`?LpK D#HO- <7#!IT U7.}IBP<@jC8Ō !E&PQSefX{RKA( tLT0Ѱuʕ%-bQt ;5*I*{dG&FEtHXaGA>^(=f˛3%rғ|*!yJ U;[ 蠣T'42*)9kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&9@/vL<ěPf?Sv+"&ӎ8"EG`٪*L $G @KHy *ȀH)d €}T+ 0O40RP*_JVn6j-g[jo^*ZɂT*!pЃZBHĽװ؇LG]|! 7Bы^H`j聆Lt׏xTc-=1֧ߡm:!#`%}>쁾Cꐫ 7 ̣$Eҡ}KeC0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_xyTTx]J! s@|c|M@l,'HKd"[b…:k O$NFD pG:$&#6 HKE  jijdZƏL&0IΡ! !L P 0f( D"@:@: n86nC @ ‚ ƻb k !d@6` #4,R-@q!)(R p-H!@:iQ{!cM!(T !@LD qqȐBNgJj$ X|_b[F Q[k$@ A a-!tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzH!n%l# * @-N$~%bMba c&%!J*N bϖ!;!)JP瘔b  "((H<  XL. @BVtB@aRS11A*b 3dT*"SdR-7NHR>@] S65[N39>_fb!aTS$,5 -4%P!`2c4ܔP>;[h0O62Ʉ(" {?@tY* `BxʬZh%2j!##LH`%(I1K4Ũz`A1S@ : s-c;#AҒF,00@OH>L$0p!`emKkvIt@ i! Z ҬmI !@ b⏓6eDb΁JJG&4R h3 BƐt D!*LrìHRh֮pAA$ lT!@pr,I=0XU^硝ʸ3 nT<TZZuR2s+ a@D A3`j"5Gbjkԣbm?R<7 BQm{.14a8, 끵ZpkQpo[[6y 0-킶,ܨHQuU\Z(V:bB\B A FﵤJ@ V&II3),5Rl:aff]'iAWPG6hKhA.! `A-5fF6m+!iP^R>B|L!p`B5l R,5xcI/7Y!k@:Do7W5A6BN,e|W TinvD`¸r R"wiGX喆`LaIau2E2*qG26q-N/V$AVs2a V< A@$ D{S[ 6L&Z0 $@ fXvT a^O2{Ȋx Z8Ձ lkn$P ayYl tS䎝(͏"ٚ,Ğ`Th&P;vKlCh+"b6tE@ *m5A t)c$j ĕq)Qkp,"t $ x9nVZMDJ! DZL6 eq$ g]:2` H̗Zjʬ"R=@d*Ρ cxWjH//0#XF^)"@1RC{l#K:> cC3,6DdXC.P*΁LBY hL@ $?-Z׿ "cKC=0kk("Ȩ8F38d<"nz;{0;{6*$"F`z?>#4!"`!e@*|⧇VY[ٟ>:ĠDy%AhM@AJ`F?|ءd0RGTLUQ \N%맦PFn*`'b&v@iu/sW;;HTPPN(LĄ@*l7@@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿj@X'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.ϡ^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1XρƲ0K+@"Z;= $AKu/!E@Y۱DEit^OK~+i >b+ɾC^Cu6(_wbfFh OGx,臟_qD.!"e0@7ND!;.>NCX؁VFo;6MIi6֦yT"9w3^4P!C&\.ƍeT܆y(iH&7(9P68Wz2>G@ pљ:լ[~ ;ٴk۾;ݼ{ <ċ?^Zv$!]&@ːq;9swYq<@|?3! Ll4*wرN2AF!\×vܕ6U3>s;P8>L8gv'v7cgF=CB iNJiRe 9 d4<$% \7p1p;' _ 3@GTΞ;XA>s7jk_FtՓV<UՙK0y ;{>׻9v|e@ߨD'Lnf$>Q#,Gӫk-!,;q|M[cuɅ#OgdLbF@FW1CFtJ/tN? uROMuճ +~hqF@=od,{g6Z)6ٰ[=QOo%t<`8U.8txG/E. _Nuw;g\˼ VOߏ)ƒCr"4@m jDT q$+K7 &( rj'C IL%0-X@Tȍ 1t|>PϕqM 0Cpjkfsݔ7יiV <R.(Ðǘ,#fVW ΙvCa&Ιj]B jhFv&%C#K_ Әt4Mo?4HcWF4` #l } w 9Rye ¶$ 3B)tm@,;%UI Acj wb`wȕb>XԵ5#LQ(Vȁ-7=DU HaGT֑ʇr1+ZV,V>UrzdWi+@Kwl.P$N*wms]1a$L=<ڂ iYR‰8#;e|3$;PvH;0H|,15y]RA x^]7,PW#qxY[=:6wt3^)yK*MH{4І<歯Fk#:6 f0f^tN5rNP ؤPZR | @ zЄ&M>>A5 mdb UAÜAR{Y׃m3W5]˃u]lRUZ˦@1RF$%B|,o_[-<MG }D/я 9Gzo4Tկk}늲e6wr6.ct}lopלw ~/+~oK~򔯼/k~?Ћ~/Oԫ~o_~o~ /+oKԯk/Ϗo(Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ7u\7=h>ExpKgN~ C0OKSq =LdhZGG膴P;SOd!iWxdq||(S~xV :kvS!![(xhz" L 1C Rr@xvӊŁfÇPhfwAψz9fTc|a hAHXH5hBMǍ9vdEy?(яDȐe pHx'(Q$;  ih^q!IH)֒ PXT$IEx(r<+Hr I'*ru˴ po~p WPeA@ʳ7瀑o>o3)  FE<0`b Id,|R~93x z9Z蕌"p 7v9B` ֘Kg_uH+b$RL!Ie^Rht:N%%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST c9RY*0:3nd7ݸ,r}YS=̃!| aN|I.*S>ϻx7~4>q7yaHDYV~钴SpϟENb!t\w!OHInja͛FTqQ+>gEb36t7`Y^SBE=T$ p9FqčT@ d 9 )BȔdHMDBT7&*A#F! NXaZj;.H".=p-/c54'eg*A !CdF $DCyrFpoپ]xGS GaZo~Fe0A1BG@K_Z tSd-i*~Bf$L BzC Q  0rmvtF|/nw T. 0Z=30[VҤ0OT!(d*fE N;&dD o@K;аa>†ԣ Q`&}h(1^ h!]'Υ1O1,$4Ϋ *՘E9$)^{^S.1뻗G%Vw,sh S,{%[(;5~R*X"|Ȃ|I!޲u T-c7;9Ki؁nKv+N@f%SG`bk/ǔ@tl@9 &F! L`_ٵ2,A 6PlSx{7(C?1DG$DOD1EWdE_1FgFo1G[MG(=,(}6SE$*Au2hv䡀 ( 50ˇv.hmsh );@wt8v 3 qwx6݄r{Ɂ`ǁ'6ӸpYF(|*I+Lj8,kW&&t<}0,3Ф9DqU Xe}tHH̴M ;+U@yPss6v"jh8JA[qU_yahˁaUy0@uBeh%Ig%Ԭ}W!Lz`.z@@CӊSP 5h8-= 9}Ոc^UՐFx#LFys9iwb#v{+>?7 t7lF8 :&$` dp( U3Ry-ɥ.aYd৐NnBg>P;tI"Z!M:ORMk4UU@ ԡ|#1!ATI Emb&Lg7 X0Dr岘41]FId&uHd:}p{@JGFmUeP>QT2Pn |P=պI76З(r7NJ'qU°Շb[_t 2􁏒d `H0.7ekC@b7ɃY,FYh@y̬ wXNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW (~5>jH -r/yK:$c&wМDy%b}9EByҕt7O<  X =e)8ËugG{ˍrQf)E4"P.'qQI`s#?xQߙvG|I5\"Jx-| .o e+}E?z#ֻJ&c0}9PC'1.}˄`5d>ltIVFj \-о}:ϺVèo+8nޓ|v,)I dIȣ-IHd Jٰ 4 6y hG`>Ev耤x y G|tr* op@DlTɕdɖtb5,upQ5L.$ VEƐ苗Ȇ; /|;Ph Jj t˷˸G"Xv &Ȇ{p{U  Ԉ>2}p{@{0L~cd85ȼQȭL1$8?$NK5(88Ev@eP+lq vMhA?<ڱ|H$ί_tN !ė|H(%;}x HY> x (\ РQ j#} Ia9$@xo(f 9L o4"5#ERlK?Ȟh MpR$Cz`y'(J$|$5H5͇fpxp ';Y"|h"Q% 3M9}!ׁ|vS%PT-F5yDKTUUeU;(9yq<0  ȯ֢ՆL0: '0ۘbX v.!-Y#;LJaf\zv}0T:FL ǔdhM(EhA ևv^Nhy0!9eЇ{s ,՚IiPike  &3@yxn@w}hU(cP$= ɱLnjڇta-B_l*$r: PM|@g}Y,WqgMb7,CfHE p}p`,hPȄ() h،`lfȖ8jZx^0yevp y\T Hb鐊k_Y), ЄF!( <11m}h><9KkǐH}o{8}(|w&H8 8Cih+z؀tn ?hij &.8"رÐ?~Z~>LJ6SGutۙ탇,!Hz ЇzȁDZ [L+1r9ITuI$9|DU:UYϐ :^q}HTWu/:$=  t_Vi,ʣFw$f @y>IWgW|Xy7C \y˾5ޅ7&'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF ЁPӯdN+9Q9˸O[hN/wXˀp'y/_fęڳt !)99Hw3Ģ{0"Lp!ÆLhj_sQĊv(rÁ$?l$K-bl)s&͚ + &B@1s(ѢF"Mt)ӦNB*u*ժVbͪu+׮ Ov]𺐁- ZΝ)^Kn ͓Kwݼjʓvސ /exqc7eJ>re f|x5tF.PҲέ{7޾.|8Ə'AݓmSzC'3Xc^ˤW5Qwų.R_j~-3OdUe CFA8uVMP9Ps,]7S r#X'+آqφ-:d0A܎ޏx`lB~T y%yҔ5yL'Cj*4ЛT Ob05@/"2ڨBi`3 t<D`O:$fԉ<g:`D<2&\-GZ-qS<{Ds6! {#O&|׵|<ꑵJuz=A ȣCS_ק:P>#; ϥts*>㌖1Cd ,x P$)A\ECD/Q<$|$p;fc,#8@*n  6vڡA+nēLdǎIc(wKPL_ q %\&< e?AL`H q3h,a4(G;яJ*Fb<"R40AAQ b!H4 cA t60x/ob :N!cֳ;vS2A(@{1t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6PlϹ^H>x=i¾;}$9m3LI" AkZ6Ȩe Xq@}eef]Nȗ@:ͱ sy#q62ӛC=Rr PuJ53 _Tnر z\:ސ1p{Ap b Ny]!`ʮmE,|RgFA>$gm@+e|5Ał |B>k;A q|#)}H|`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^:z$^ڬ TEhDfD͞B@=Xߵ;H%>@0|\A(:4!C \} TUbA` `C, a"x:AԊC:T?=lPlB@-7zĉu,9QAl<;Jda6:@SU ]^ɥDHE<A-a\M%ZAa1gḀ1 T}D8fBeB@HXC=:j'!W ރ !D*I$۪Ɉ*J 7$6'$cBZh"8+⃐;jp= 8?PCD=.փ@*R)û8b@?rWA=1Ԟ) @FJ ;\cC^DDE^dFZX^dLLdM& 8Db ND&AB%;0G> ,"B=F=8e]C^އ|̣p;x` AL;D6i uI&EMa&Ie:IIWVr A.N* 9TfA\f<4BmA <$;\ff6gnn`Хdf+u<8:b2f-#BT`nO0 A=BdBf.QI~g"mM:BhJ!pb;ĉWZG0LndGlc (u(x_>A=IL@3LlFZDօ<@= Ŝ\?8`5), tnHC/0:*ę/ }_z2l$t($I*(q"DvW՛.") $cB cRDD0*MM0bɆTUi\9u\IJ~WD$QDȃyV2+CDjშRk!%æ4$ ̓:*NX>ŪCDQDXRaỸ};:jĽTH$yROkCC=liBv`9Sce^A ``)֖̟ C#zn ib(BŪܔD@ܭX<<, @0Hحؖ4I@=HC-톕,ےVfd'9|4;x؂A$ H]4: gF-(ڎb@*ǩt-m-H@:@ n`<nҮ`u&b$1,>^J:l@Z"40uH:X>0AĪ*dfK$@ 4lO*T0'II)G=% p 0 @7z>EAD@I>î@>Rރ2D4:EHK_`HI0^>m,B`=h@C2@i"6 (`/<@YX)kʖAo>>)Exe[Ơ#If KcJ\^̊0KjE q><&: ZBd[lݩwr:-I 41bZ>K VC. 1V(*D$SeAd@æALA/rU͇!L:ۣl@++F5'F4s)%lC" HX1U23pBpQp^+b3vc;c;]r=SCSHvbPeFXtehvii7 sSLkw_{ԅknvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyy7`uĞ0bN<@y w`(raINU=bzK: @U mODKDM@|^>Ldrh𥕲9sT!AtgmXYiGikAD%CDRloA ^^`,rX<\,; 0]ZI{#6s%D,G$PGC|>b?GXR1-/a]ц>Z;RüW,AԈ ~Kn|R1 BLu8̳lADU#) ȃ{@1 +]΃}SNĥdJ>lJxt ^Iο̎VA < ӄ3>T@v}$C$YTI&]惩U]>lBp@}>ThxOA$!^C=TA@ݏDXcJ:ß:1,BbA)-BmDLKU#=0>)rUA܀׾i<}-(@&A|&D(OB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7}`G@!;yN_w#&}✀&;7`A( n#,3p_= "c"12Իo_)&.BLALA^* Q lB$>xqǑ'WysϡC +|yp[@:?7 \R=(v\1uΑ1}&H.u*|*AE$g5 (zJEO F2Yi[qU]y#ةGtΡsCqrG8'Pށt rˇ{tY*{a vwTsԙ?} X3 D8gP,8Q%z@C2sO>|i4}WYnaYf"+!FI@`JToG `0f:z櫱By$G1j1Ja xBI'D1SJ  @؁@l~'N\o!_Mª'o)J n1!%@CVPá,q7+i5· ´@Gч2 !a'/йm=ߡ4$g^ 6;!SgG,_}ZɒuPMP 0Dr @I@>UR>jPJh`s?.)`9,@2*n  aHH#y$z@b۲&Il䱉U 1 9/!@=0!! `B9Αu$"`<E7P`z38`]QGDDH). C@dD$呕@,H}C@,` tH(Ttp Ї> # c ` hB7CƷ+ @{r*ZA@+OyΓ=O%Tj4AP. upB>ĀgWPnGARx"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:0o5O[9zYgVCx_X\Ms`$8N'w&Dba5e2`G/jtM#C49."7K>@%d:* HHj\G 汌_BE tzpzYQBҵP`؀8H6&GVWWtT: :`•`zqy0c}>ttiZ}UGby5"` \h c!$0=aYaG2Q4pRd!9CL  s]4هjC&_%biE 7>W;NB g(OX,=!A-hAQɌO 7}u-SV3y@ @OQ} 6apBqQ 200vM|r"iFaTBJ kݓ@B(SF{Ag$,؄@+ U|# @C,x$h(0bLJb/0 `C=bP "tpH߷guoDY.3}lK@8wdCNI+6PwP@\ 1ULStUJC ^Βݐ@3.>Щ2 G`@%tϞWi>Î6XPCdٖ^#ڧ}| A [&T>@Hs;gR Î$<EC *Pc=K8fqVqgI& !2aF!8d$J(Y,!z"N** VAp즱bMND*gM6KbB!Y:xB#@i!g2>g@xɰ $hPXa!& /߀0 H!Xa{8 !]ԅ!P!ڧ_#P*7R I"!a| 6(@A++T( A&L &{A@P~Dޤ1"bk gFL *@aj6 ޡG#!}Rh)pamN/¹ahuazAz]*@Y@ B#!`GaZ1#5r#[fa3uB("bc'5LA! (t0r"(@f3'xƯMejHF R@#: -g F|'4O#r-rOԠ*@g1"CPaøl af !((J2hVa0>PƀD)'P8HH LYHء-F%& %8>R R!H@6+\s88$`KH2T2$ n6` # ಩>B$&C`&v|2!'B4"0 }'U46/QIX8 $&$@ 7)^ |FZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2'`XeHtISH?j&bJ5B+ (=JI4Lݍ k& @ "La2 8-Ae"=´)3TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#z3[\Ȅ#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r*d>ez6i=@<@E;Hүu/a|˷d#B0$@"wy5#p dJEnPs-uvqQ>a)%XuS">|7\!܄DN8-ҁB(NdP>83Pr9O* uEkZEAqLӁa.QJ7%q;"p*[[e\PMl",1qIVu.>%_z{T9*sCAEؘa7HÀv#R.r[!xh0!2A PReInoYnb2!&^ZkFgYy ڠ>?!]G?+s!4!rI6n0ҁWj ||!<%|)-1<5|9=Ad3vOSXyѳb/ BԿ]r_guKX#X8(pEx8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIA'_AP !sw3;2NCqv-]t` -z *7`> t:ǎAo^=t `+ByI땏'ཀྵsN+װc˞M۸sͻ.Ny Bn,u~\tt s%W2̝N|S~&O {y{s"T}A -^AԃB|0= ($h(,&Nd(vNsSv 4dC8@ CC/Td5ިAb .D>Oi7Xgȓŀ"@95;XOi-Jb~gOS!'褔Vj饘f馜viHE'YʑW;=9x+ —k7\ 鿗IXjA@B #,Wlg!FI>̾@ܨO=[P>`\8(?XPO: >3{6_QN_B`@P{8{#>~:_a(;DW0HM&;N ؜-_Sތ7G.Wn?A=!g砇.褗n{?< {|K9c LE| hGH@0Aԡ^$Q:6EQ2)7@gчt%QD恏y!9 ,PDz` dU;1)GI-vH ba2sa%A7`v[Ҍ4ʃq01Zd4S&_ġ>ŀ 쨋 #F>Y+f%f2Ur!r#Rz-5Ib R]z!8iZ2adY<:쑖͜ E@@C#%%䅃LgM% bg9x|>ς0hPHX+QF4\ ⃔ TGJT@@5Ct%@R:QĢpV! 0㮂 5gv)^ sHuwS0KcôbƮ'ODH 8Cx+*3 ⰵ!P]DzYX1:>PC#[@NF$v mp΁C %2*k$"G @=@j-z2g|Qys@ NŇd9DAJYN0h/wЁF 8 @YD !pLsdO3:J/a!%K oPK$7P\q0 k4/{w|sX,pB8 duhF'.v8rAR 8Ǜ b-*-c,ad[ɣ]22 3G$''a24~G|HԹq  fA2Űg XT CP1)ݙ q=$blhT/d+v$cńϯ!jeG< AjHc YbPArrXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ Zek9 P ;6 $ZȍzOpa-%fz@CY (\>P(Yz , (A+:M :@tu4cJ7y*M}7oHΑ9!cA`D@r0қg>Y^x+EKURrg;qAH t&U=ST{aE/|v>r e!Z:BF1 SG<zfʋ4)P(?H2< zb}  hjZ[ai v aDz7X&Ydʀ A% Gv! % EPw?" $P g\E?@Av212W*e! CPbK"2"X">(rS}g2"SR`xzXOJ )tb!G } i+@tb2AL ON(L z Nh P AX(17e [F1LG31 V#;Qk".%6B&F!Dh'L 4b}7сDS@ j+R+AvDEj``-b- H\!Et*>5`Ej*% > `& `T"l.7BBuPTwLe8**E@+e% 9}2%p] y:0/r/b,p`dÃ06c5h0E 1؎>|cmb $*%`72>^E@ H22v5D@p8g:v#t#+.E0@ 9FP29PDΡ=48& 3!Ls2F -1s5{0#MWXEYܐV0 6m6AeDivӇ_X!GP8  9ZZyP ^82qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;UI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*!*O=؊t:0` }WvQ\^u hxz% W!Wqx`X%3K^UY7^Daa0|HS!V'aF'P!V[گ{0 fiLSGj֌1@Up%6VjKsjh y&(4 P8Te]qMGd0qE6"ȫN*{%wrSRvE;T+F {lF8Hzf U{^y^zsk{x?!:| K'q[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv. !4^c?!'kb(,)v۽蛾BLO /~P0[#/b ca 0aPƫj1//3'ZQ0~j cP2“2bP. +\}Ԡ0yp,iПf 0yus7 7c88Pܳ;"69jZ3 (2:(f||!t^*hr<ƣnL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#":pqKktIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2 ng$j斒V (!3.yՒpJEWi&@dk$g7pפnբr C0`Y[~Vt%m 9~ p-*°s0ʧa*̢vl8yM'H'1 m\"o~?tx]+ |3n6V{l]P,a$M" 0PYq p[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*/a}e_L q Na_j j!ŗrqqR$ʵ`ӁrniEbQ^*+MWac9]}K-W o;hV\ o@ .dC%NXE5nG!E$YI)UdK1eΤYM0ɻpu:\< `yJG~g `"S!)wP3J},Po T0+uJ>JǸ| 9'*y6%!PCSyH@ K!A CZHs$k!nN,`G>C@g"Đ%Xаy BtQH#tRJ+RL3tMF}jQ8TU3*YŬ.js gtsc',@\Yh ǂ c:XPz0 Miy &Ԑg6!1xܫ}Bʁ.̳Z`11{LsA3 SO"[؛70Đ ruz`s o2fsyg{g0`hDQJyb`jzkkt ( aKؤҶn{oo* W.k~q#|r+r%p扢3r$7A^E|@|@wd)MyJT!24!Z:`3vR@=_ΣZ dAP"t(1;&C 50A*CUѝg=퉻ő*pypk %; d7V`:I%|(HTFlBqB0,|l \lK2U]1]ѧDѿ De1Hɸ'wֶtC%jQ U:K!/eG^сiQ0x;2`¤P@( \g(RtТ[Q)w@L C3(a:ῥC6BĀGXFVȨ4!U::(8U Ep,A(a>eᖅ UdUtCXXy֑G=\FWӕ*[:6EP{ kV@95ekيfꁐXt t*B&VbE9:5m\B.`4`GX9'# $b[{38Rta; "Ta@5$yሜG rPsm&[(Or|匜e$4F0P ` 'Ubare2v>e @rKQsLЋft\c ,ߡE4Wfhґ9J݊E= lR Gd2 UB H) Aj<@P}ld'%#F dh/B&p u"+CdֳRRpESFCX@\(Iq~A/#H"d8b&vt7<9 x-EHSKX ]T&ހ 0=I`XjC).WCcm(U7_TbTf-X+fWd';,pӨg][:JƴNd3~u]kg{IֶUDn S~w]Q.2)(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}a>'(0}Cs0A=3&EFuv*@&[ H`AꨯͻY <tE:0"N YW!W3 ˈ.A#P {ؠ5r?$ " @ #Q!؉kqe5 J6K UA ;7s=/ dpUsk M ch gPйYAHztХy?Iꥬ&/ {(wPeigB tal?h'ȀaruRC̺A BJDOs θz X؉a99 DA*qh*}8XH2;HmO2'Rh1N}h11PWu`X.{Y`3%1pͭOCB0d8͇^Q|CP5eG@Jl CPPcX fhZ+Ovc$ڇ|h7@7T=T^2dvh`F$MP`)d0/M0M~jn;XOƬd P2ɠHPLQXbkaʍ ~Tτ(|B0y^lf8ҨSГi\BAE&Þzlœ>ó-oȁ"@xCd{@YbTfۇE^n9(OƱStd }Xw#}pzpwhv .)KCo/ u`yPP5k$^^Sle|8fn[ϊm [VyMT#Ai 5leAof=qv#oˇd P)7[ .(rXqw#B!Y"xȀ|@D}-wŅ_Çk>iE ĞӼ}`"nd[56c|OA >ಀ;zgGf4 F p?Cr 2>y +ۿJU~4Ddz0 e3?SgӪs\mzxώ(wxOͅхyyμ+h „ 2| 'Rh"ƌ7jH#tF$ yɋr9KiДdA΅ "c͝?LOw%4὜cm| ;g`s&(ٖ<q `LqO,Ձ[ L_؞/SA=AZ^ДN/c@3AA}GY=$> ;3>! :%> )"-"18#5x#9GB&ԋ<#ADE A I)dANBY`N'm!č>AANp Uv;0@:(>mÎp ぐР&tE5GhCƥL Y*Wmc %, A3Yn:dW`d@qΫB="4 j>0p霣Xq'r/!91qLdAN{#:P:P0p̥N9A9@!4 -,)j}¡#@:Dy^wJC ^~@@.^i7P>8 !ApLzϳ9)zTADp(Mu OtKӇhr\goB@9nA3|i2?ՠ"āf?(< Cc"Bn CB<(}d" aw XD  T: v8ACmG?(9y.e>s7 s6LDA6 Y!@BcAU`'Lqs~ЇޡEpы`cS`l 9 ыzCO!y5^GJ= l?qk `nbaJS6 =!AhQL Lc*әҴ6)Ns5Z?P1(;x cp2jBz%UKmSS9 1#@;SSUgO (՛⊐&qBԊ(`3CL >` 03&&nT,%ppEiʉRDI}E3xACQUk[E2'>@ rqb\i>4-( iD#0+wh|A|sD#8Xȟ ̑$ǘJ·Q$S| MOR aCEjPt>1,!9P AN/ hON2;L实ax@nsb= 8/p /!Hʒ8\WQ)sH<N$7- #x"v%vxMbІI|嵋9ꡐ͊J^f7M^%(4m9 <XC|Zu!`~A\! !Πa1UD>Ab9T H"B5ğ@E9QA ><(XlB<<B0kþ>OLY0].#363>#4F#X1$%$AX!DICU zLh@:@z|胹mXC9@Fp $q\c{;~b4N&eVe^&fZ>C>0J>ȎC090AS@SY@PV&>̮|:W`(L ^]6 0 m,; tũZiZ L@ԣ`D D]ʆB0@MO8;T.^ƫM]k(tL`‰dB]lDDBNP H OBBI*CZv(U'*(Wxɑi;XG!D>BYePfWzR{"D@lD6Pf GWB)B@A\A0Lf֩)橞5 )EXA@9x;;(˹ԃ!>ïRT@B(*e=iL`P/مs,)\AlE=CmOhBDѮD E l<(A$ChEm}Ga)KN}KIN,ҰvC*ӡE>=ElrjJYY,B+~ld$sABmY @+8]@)&Bס"ÕJA&..6 %hN脐`<VzDD`@<[BP@A nIOaO0^M MB\PPan.FAεc4HĂN0\kBm[[UAHa ģ.E!=lEXH~&M1kp)o:<0 KdFIJ@pP䚩ޜ54C;D0S\I 8R:<"@/cR> H2p|ztHCmpfET@A|&rP|Jɒ$fTC~$=1  tڢ)U!sE}@\.̍@&'2((*>T@20031*MنN 1fQIc2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH<1?W/`G@lK[Kf"5\p1#L7S?5<i.[p:E,p@Zh@VH&|z&׹V+o>$2rhGoF$+$K88@ 1 Y,%@(CCԔFfu]2o:XZ$@@pJV[*BVs5sDrD:X;Ah 1T_7vgچ"kKP> ESp!D0NH@NzRk1)jX[bMFHľQćC/Rh=(oZl)m,*xG,(<>2P1m^ EP4Y^> hH8Ŭ;c>0A/l2̸Z%he:w' ENHXqV KK pNOxQ;)C/TP;XVhWh7۩a,Fc<ZȜ`!mA=hiĆgt7\2Nn>TtLY&Gv]"6JxL EC'I*X}JkDdJY<$LACel"05Z Pr mT93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/S C>!˃ @9jAoȀ!CAÒzZ4K'^dYA ;J<1\ 1#˱$ ٟ=(ey'Mm|ü /DLûT=dAlLstF PPDu\hΜ<`p WO|p8 N\=F՝L|ZVD^~CX@̈>B~:|퓎q@ݝ0&@,4MӠ8H)DĻw|ȓ:(]y}(0߻L|0F!!Et@w"3x̋;y ܧo^y /OS\̗N%o;<p(0G:.>[>"p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}>  V{%yFc }w ]E-pA6m:e0o; ;ם+qû|u-GzꞝFqTy@RRs6y,| HwlA %(GA4P$ӂ3B@ CiA` HJ"@HiyA}jhσЋ@O'"0Ĕ3 uq I),; &BQ9 0+ʋt|J8*x.ڀNJ{)Mr=t]v}xWvvRʀ2 }@`ai@NԑGa4(n ɦ2!̠9 W]|ؑ'Jzק20Ftx " oxvظzΡh /9&PPv2j: CVèfQG njAO6+, [tH@A iǭz|9'2a y9믌(0w@0%  Dd'8hFu;8y]EmhHTL: }`q\1yqw~]c&!QߪmA+S> !:0UA ^9A~!!ah_;GFDH \a$(<x(v<mBxhGDLg MhnIIxBy>ֆ0N C2YQ)E鐀!sF8HH#>Qau:XFz,~y#'aeXeq́`;b| r!`E;`)I51e҅S|P[9K (zrH;/Ҁcvy0_lٰz1GIAv"5JQ8t';p7-dH aP<a@ E}G`%QH#!F5<(BeQM8_~WϵT,L EdX:hE&`6@>bF,"ff v00:##o;"#H {䁂LO@ͬb !B*BޡR" ءJA TN@c&#fb³)*xbTZi^cj+ bX'*MJƮS:SRpΆcJ"$ޡRma.Ρ&@$XACTZ/(H' pEPk&R%* CD B AìbV *BuQǑ5n)lԁo,xv dT1j+6@+mjȫ(Pʬ!ì0 =C~"@e7($nB&B# a"JB" ''ȃ0HҞzbbbb" 08I, kafIZe'+L-Dr+42"݌'&)/" B<1Y $G[ٌ/D Ԣn)ma$"Kª$!eCR-q`\%ljr"/.2"A0j6P' pLI$qo'L$60 (s??@;L),Ez ĸ6qd"T'0@"b@)qF FA3C#B2({DE/2$ *Rhb3K3%BZebO e؊4ҡzB sTjރHcG"`? ;F% i6;bAH)n>ҡq.^NN'lB|`G AK$Nc:'Dg*!s//f$!dS/D$`,%O=@p@ʔ'RP( 6RRաT"n#lP$P/2$2Dʎ &*\BD)U@ `aVa'42Isa#3*>X@@5c5U#VdGdKdOe`a^0ee%%&` R'pA?qĠQLciViiif6T' "Nuڲ$ B7.dllmVm׶vܥi$Bk@E`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2&`Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvThJ  Bɰ `k3 `k"`#F)xh z6@Ge$cJ%H%jg1b32|V0n؇eAzb:kxXǚA9S*wB/H3c k84@Q04&/΂N%08γر "◒+ْ3.tNFp$EZ-!$A0h٠zx"$$6{AiG A""[E, ԘMԀ$]-1'ϡV+Ưn1la"MR3]To\fm*513 #喩>1jJK–qI a/?ٝpb +΂EL-G6::0Yٕ)WYA5C! v8r6KM@A7fbJ[h/ڨq%$CxΓ/bb)&?> #A z`'DB`*@V 6CF,`c()gf"H3X]RC@x`c&/s,ߓ)0M*C:t,!$vwjYv |(B| a"Y@"r}'v}CbnF`Hbn߳ATSЁL%0 A b1`=` XJaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0th rK/[ ~>*y}?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K Z?+Ĺ;0ߖH'BQ2>h?0@!|)3JZQ TYFCPvAB  MsP.0xeQ@=P<0<}2 9t +!@|KN[B"dHpmi}#)ȣA #@B^;5;թXcBs8h s7 mMɪdqЌ}NS6PG`Y$(@X$GSdi_jN="4  E3GВj8d>[)!aM;3E &0c e; NȮ!>瀐;(+dMfEמb29M锗F k)B Cd\ H?U^IAv^yd&<8{=ϛh$OԣOv峏 ?yONy_yoy4sc0OC\{ J&9: d:DGA0/hBD3~}ЦkU$HkϏEa#@:|4V] 2Ρ>)%ߞޑ-uQH2#dG; P|P Ҁs\ Adu{GT d$n{%v:ʹ@4@ B!Z݈0&Qn P yHIO@D ,7R 5p3_a6J` NB3}0!WB )-5 Ȓ8o>8Ccq&80 V''v]mzWXV(cs45BK^uM/=Hh v9ԁ@ 7 ps,9ωt~Oq!P\򱁠dh!&!*3%R6飞>v|s#}{#!9aȖs򨬄 ѡ2!`IJ/rb |@PMPXf< ?d 7N.#`Xf =#@-y NۂWP5 7tnRWe| t4­fswel<* #TLOeJ qS)\:sMyϽP>G!_7iB8tyBgw Zi #rps,֤(=*W `i W8zl`<1bxj8ovс#w|{ߎcg 9@bCD Hs\@XA(YJ(9'E;Kh(T˫Pu!EZ!• `} ?(PJ (<M&A1  P aB2[xф ^KTCyMpa_j s8MQ֒A8D1Tsb%>P'b 707cdT|Rxg&opbP*6([}2%1&Y5 Nmd##@#` 0(BP*n)vnnq}gPrݠVޓ@#_I}xE "gjp#cZ aqnIPt IOV<)>ptCY? Ir@:LF1$&!p<4Xj)@V`71X!P ED)OIm7!9p1<~1s`dF9n}|ypm){p> 2I6fRh#{gCR1ѩ"igqwj,>3(5p p`%&֑mo q*s=fS@[|Z@.vs0L!DcCmM|)4DCyXR`%&jqP1rZ,* bySu 6 ^h2-@jq qzOb% oч^h7(@0@ : jPͪ $'PAH}͕ bPb`gBxbي#7W`zC($#:x p @%#L ` S) QUsך S!D&@ҩwS鲧ejRb芭- ؎GmjdM>X!jA#QI[>Z0 A&F+sA` PEqp*I˻U>g<8`Hś!644Q̛!MCŽlڑJ4k狾髾_&Cɾ5ɒ,{72 = 3>@x\X@X prb\`nfHDFPlttpfp0@PP`np<<48:PԺPXXvrx̺bhd\tH@hH:Hl.(886(Nfbxt80L0.l0.pFJ@`@nf`BH@XPX||4<<$(8|zptf|p|P@~*$Lİ:$УKNHJaDv3|{Wi˟}>|ϑ2w/s"N%t`FS<#G߅fᆳ:">d)QTA.cQ4hЍ 3;@ :2&HxFAHn[SdqÎ%$-ښACQ:`,Pp<ϑh Bx>pNK~OȰN=tPH@Z|e} ϲ,@@t>H,:3,2D6pX86k;=CbX"H C@B)=sںM< @BC;F#]MhE@Iу2.`ψ,D:/j b):p"'3v=9=;7B#\ă7XOl{ܐ::' >? C=O8 Q |%"~LB#! $%VP |C77 +1AzP  {$uhG2ӱD ,@CH U[zB BP<q#=q t  $ ("J>H!IHA?SrI!Ƀ>*`Y%@ass!wp'XFđ$2K@' `ŎGnyVWH_ L j MB TXL%g@$>1px:&]0jV$`A$ DH@pm*Cwy 0)A"x:y/ n J@wZumJ\""ykMϊe2I 'H>܂0u\>e="&ث \=`qh@;Ԟc옍8&zk}uXP@k) H>ĨBC).v>f-!P O|  "t ! )HЏByjC40!H [zIe+ x!܇L  eu8tT'EV=(= 0#` 77@W5@M}5QCg A<gqH0|=G&!y&<%10Sf1R`rp+v02> h_P=@Ѐh b}~hQ: \G~%P5}jl؆0P ?pU7$3-`0n9e˕# PvgGRE'Ih$׈  Czh*`O P  !9YA$q'&iyM1 0|q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕp3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ( !9Yz|t"0q!"4u CWcMc S,P_ $00[U!08깞[xq$גYYsGLLW` ymP@pNI`j왡Hu:P$y'P27v)Wmrwe\2*_*_ș:DZG̢sR>3 .gm!-*.` r` dpr:}ڑ,"gYP`S0֢qt]`waH% z  +4Jlk[Re6 -40wQ0O1`dZJF#3@hj/D?#u\" gJeP" :蚮:,zT Yq$"AV*(PO@d&bfڰzJj$ 5jr8 3!~E¤ (67+Rb@a-{ 2;4fc.gZЅ( 2%"]b*U$]ǭQp@>H5ZqT =K͚!#F#odv aHBmpYNʵ~KHGP[y}Ya& hTc =x`Q@srm @HZۺupg$HՏd#Rt.yA VPv7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 005$6 Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR$%1``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLKc L` 5a!p@Sq'K>;P$AӯEBd9wUrcFpgH6$p{`.pG"!7W9„,G |7O 'o^†o;>$ a>N;'o;LϢw`(oT>Y;z4>y~rtV&]iԩUfkرeϦ]mܹuo'^q!;tvēC2 @عѱ <#fȓd_D=A&ؑS9=4OTH{ o:RC("Z,{ocD`׆bk/Pc'v'PY1.*AJ*A>{K0sL24L4TsM6tM8ˇgt Yd x &PI2 p(bH2Ey:Hy`s *Cv[,}P49g -  v")#p"ԛi&N=}G )cz/ @qFl/ `0oz%2!J̀0[Ƭ9GU ]>Pi݋t"h\hva6 @b3xc;cCydA@%u*  |bWJ5U2d{|7|yR4\ȏ`C@Q { ҩeBs$%4Ї!!0 Q 5nc2Bz@ zpa $@V$Izؓybh8=QGyBH@ P=DI`B`T P3fM!cKKJHU;`  &T 2yOY "4T`H&dc(lܸ@KjpHjB$ }E8L@B Ld"r9{K%=;!1yͷs2vP-YH/_xc!#uIUn =th]WL =2Ϩ /u8-j9C |LOT"_yy\` Cr(HhD@d@ֱ I㲒wؿq# "g@>vPI Ԟ IJ Çq y8` |(( y>>>xn | LhA>CC@p@B , ?=IDci ?zRwX xsNY@y 0Ä(:\" 9f`H3%;FIDS 3 ( û ɵ0{0yp yВvX'Җs@FǸ"w0CzulDžSчG1A`_ FMdQ̀O YR4Ea>8sT;' zd(}Hq$ `GQYZ,[|\\f SrGx,%Ch NC5L|DZ*ȓ8p KA ;8ˁ0D%K4x҉*12 D3&" @BS> 1AHbPO 5k:0J$.+ax+C`˫`ȇ zDj, ܡoMPL `LQiKy wKXLt!P FL9R0t e L܉PLhP< *;=C0q 1ą6ͅ 8z. K]Wj  y̎e X$ $ ű ]k#vw8$$ | 6H#`#la*ځ-*]2L%k B8yR"#!'h|aXY1-3#e$%RHz«с1@$ S``MHe*e4{< 1]L }Ӓtզ(֭V NxtVi$N#Q䜈(݊KPHsԁI#tx( [5  h2Iѷ4xxyywh$ 9<= bP*yt+CN!-B5yȈiLЇPlXgɇ $aP S@|t P4 ]w 쉟؞HJ{e\t0ǒ%1 9Oyi[-ok *qԐGQ+ą" ۷c X3JKEuAHV.PT+`qA%JQ$?esKГ[P/:{tc[\B]8EJy8l#QyP HJݯ@`}( ՠĐؐzF d]  XN5h߽=`&Ͷ2| #xb`!!Ww' F`ya!zOf5PJ܋|Nԟv۠+v"P" M>5LA [e5%"ٰh@DQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fq Dx#a]=cb'u(05sneWY=.(Q5!ntPO  ćI @#Ij< EEdλvwP6\{B!v8JPI&yh ʠ!eR!&UhɁ4gpB9mRF"!""#}!&4C1!jܣ990% PHYl-mr&Ou%/TKq._s6Oy$PK M`zW"h*;ns?s2/MDAOk3Y^[")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u Ё]2 Obc$H6av]v᲋⬉L^#_n3 KW 1vw tjwvIݘ3w).x? }gX& kc|h呂0Ӱ¿,H  =H&`efՅXHa3]y?Q ]7 s0(/@xgx77Q)94?$U ?獴 8W> !}>iЬw 4UoQ@3&5"+ 2q[AoQ|VyLY>RP#}04C8Y_˗|PanXC "@oh8!~J}&Sqc{V^ifN|Ҙ$W﷍{'wXg 7up^y  |ܽ+h ‚Kxp%|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5^qyCcfs; ~"]%ihP;jٸjN[t3'BDChwKAJEbrO;ޔ O\+bXi-B󧎎K6YCAPr"%HT<쳞<8tOR 5I!gAcAe @Adr>jUP+& p?<.тIƒPGRy!xGdLFс-^)X # n5җIF%#-4-'r"iК,#;>)$N@:}^Ep oj)z):*}Bq#B", 90`CC 7 N3A=$4霣T`R|<2S9E6(D"@Fl[@:Q<$SO8Pza u XA2CX nN8"Ԫj==\"m:P ꐽ V0梻VTrR>+[F Ѐ >=FC=X @(SG>05d]lYH9nyk2_r,a#"tPh"MI@]L7/ D7:k#()RV"Q#zXp2~ꈖ>>oCbA8G!vH % 1@ա"M0`&t !7O!ه>~spQ#gd$!@0, n+aY"a2|~< :$R`1i ^bsl 3x ^A&|dr$-2sC8;fG<:h@ypc(Hsh (<5 Rt 'Z'8@қ_G"P`>f8rx`WBc&%uẉA ỹUp! Eȑ$;(֓+D9d"F%Ta[AIՁgDCfA,HZc.SU@"p@zTt&4:PȉQI׺"Dם 8v`H TU8 Q&&d}ld[Twr>T^'jUIDI!__so<ɠH  D`e"ό4ךA&qaZyVk,2~0#,awf8s&`m;LH/`Q ^M ^Aɥr(@xh Cxr$V&LtzifRV^pT0)p@(A\̢  H (a%FDLq}L$z)ƪ}b+LdT1P1݋ߑkrd dY`O9-s;wpd7 y|n$`Bqq,A 9Oo>r,IoXc [Aaգɘk[>BM\MG0Q{ƛ*ppq7-. `/k6HQcM}T}vD@3eHK#ϹYlģ Jpp?65i6F\1y 6_y:Ja<[OH>,2[1m; !l#ʃiY?xd ߐA"G @03s7NB !3B#EFUG!LS:h)H yԦdΑCz%[ BP>vz݇ڇ&V6lBK&@w<$G!=^A ,a䃊`\BD-5FCUD39A, ;ަO Oў Iʽ={ ;AY_A _!`%Y,MJCSLԃ;5C8`; ECZ}0 r ǘDaD ;A_#bMPv4,-Zb$VbFdB >lH4;(-+nBCXJahA4m @4B_v8 zLA@;XXPġ+bD ! `m@$AAGzC(<;qG1" #B@ԋAbAjmI䑜*GGЌ<\^aE4DЊ!@@g%H >d1h7MDHc%DZY!IJ8>rL=CB@m>XXM:Rt2@bC 6m] nԃ'5EYbdC]" !xIeZR\CF4!̋I2@B8SEXiBP!\HdI>J:\! Gh$SdHŸAHn afY-DzGD8CCɘ,o9 }abOƑT.I%_fj_`H㡠mX'mvF!#Đ^`)du ;]EPChyL贅b&R.fKR}zh:&CT&eAH'g#yzZ,:XrC$()FH@= f,<  W4(䃆gABGK*߅DٽmIiA|niE<& e,GOAK!;<-Yi&_BܟA4@E(ߎ a;p #6Dt]ϢFA!NA4\*)% XiZ3M`E4(})5gɃ;< 2m#FhE4a~ V'(f<؁&`9 #n&>=+:܃((Ljr=:ؽë^Zi!;>8@ރ&8?ĞP(~GRjޫN>_V *d=p?8Cҵ]i&x;סPlʢ^A128ʥ,=$,;Cޕc~^O>@V\!Ţ,ZEJF&i*C78Ì .&:]`C^!5 RC:>@ r.Gx@*[泪زJ^#GjA(YnBHH.vw7heFÍ$_: < (/bhrE .xpZҮE1DBZ.Z<8薘B (Ц=FJ[8ӜLC><($G`oӟ!.v E/q )5/B؅b-|0ȃx!0fnpEp\tED h~%r;, Nxi oyl T~psS~VP \bS1-G۸p ZhT->o# $G oHN/wh``BB!ԃ =N⦲*2+kP ȃ^C]aCACIX90`Y@:o՞aMohAPX[-/ g:ZPtE99;DCCW"9Xѣ24 RLٰH3Lކ#XÌZ C2X%A,Irdv, \djTĚZbH3CKFsnIAOTF8!_>8Ӆ/:ln¢'%{so^ӳT>uEו>\[Vs3AȈv# nv}[($5(a@XσZZyA%%ׅhT0 w=jEP9tSGz:dȺ9E` !0l@ܱpz 91U7Dg {B 7W?#`[|-ĦyBpC)@X=l|1\L#8<&,C̕@Kxo=:p;7JD)83#F3z'@)!0kD<1P1պj<pDE7ìxoA`H7&HD E (  s֕XqÃ5tjg>,r`F'\8~}ycO9^/E 3"5AD؈w ZT  )hF:dH >!`hN@Dމ`wX;tb+Ƀ/I3N0!BcP 1WoCu[6at;7/!:ӚosLz0,⃃[dΔ7^Z'p ZʮrZŧ*K#a`Gu 0҄(U a PJ`XLd]XgehjlݖnpY #ɆS(X. L5Sd |Qǂ`F0Iu^y5~%-MU-[dɝ65zG`1 HeQf2euޙ}蠅#5w-/t#%'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGѩ_rAC=Fm9'ݷ] A-0V2f;~k'O4`Gyqg>i zN.EAIӀaw4jZOST hyIRBLi H䁎-S@q2ЁQqkep`?LpK D#HO- <7#!IT U7.}IBP<@j8Ō !E&PQSefX{RKA& tLTW0Ѱuʕ%-bQt ;5*I*{dFEtHXaGA>^(=f˛3%rғ|*!yJ U;[ 蠣T'42*)9kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&9 vL<ěPGf?Sv+"&ӎ8"EG`٪*L $G @KHy *ȀH)d Ҁ}X+ 0O40RP*_JVn6j-g[jo^ZɂT*">ZBHĽװ؇LG]|" 7BHjLt׏xTc-=1֧ߡm:!#!`%}>쁾Cꐫ 7 $Eҡ}ȈQC0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_xyTTx]J! s@|c/|M@l'HKd"[b…:k O$NFD pG:$(#6 HKE  lijdZƏL&0IΡ! !L P 0fk( D"@:@: n86nC @ ‚ ƻb k !A6` #4*R-@q!)(R p-H!@:iQ{ cM!(T !LD qqȐBNgJj$ X|_b[F Q[k$@ A a-!tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'Bz!n%l# * @-N$~%bMba c&%!J*N bϖ!;!)JP瘔b  "((H<  XL. @BVt@aRS11A*b 3dT*"SdR-7NHR@@] S.65[N39>_fb!aTS$*5 -4%P!`2c4ܔP>;[h0O62Ʉ(" {?@tY* P`BxʬZh%2j!##LH`%&I1K4Ũ`A1S> : s-c;#AҒF,00@OH>L$0p!`emKkvIt@ i! Z@ҬmI !@ ⏓6eDb΁JJG&4R h3 BƐt D!*LrìHRh֮pAA$ lT!@pr,I=0XU^硝ʸ3 nT<TZZuR2s+ a@D A3`j"5Gbjkԣbm?R<7 BQm{.14a8, 끵ZpkQpo[[6y 0-킶,ܨHQuU\Z(V:bB\B A FﵤJ@.VFII3),5Rl:aff]'iAWPG6hKhA.! `A-;fF6m+!iP^D*I.F @ A!l"8Uh!ފr_1STc } 6&Dx9B)F>R>B|L!Pp`B5l R,5xcI/7YAk@:Do7W5A6BN,e|W TinvB`¸r R"wiGX.aLaaIu2Ep*qG26-N/V$AVsp< A@$ D{S[ 6L&Z0 $@ fXvT a^O2{Ȋx Z8Ձ lkn$P ayYl tS䎝(͏"ٚ*Ğ`Th&P;vKlCh+"b6tE@ *m5A t)c$j ĕq)Qkp*"t $ x9nVZMDJ! DZL6 e?$` g]:2 H̗Zjʬ"R=@*Ρ cxWjH//0#XF^)"@1RC{l#K:> cC3,6DdXC.P*΁LBY hL@ $?-Z׿ "cKC=0kk("Ȩ8F38d<"nz;{0;{6*$"F`z?>#4!"`!@*|⧇VY[ٟ@:ĠDy%AhM@AJ`F?zءd0RGTLUQ \N%맦PFn*.a'b&v@iu/sW;[HTPPN(LĄ@*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿ@!X'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.ϡ^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1XρƲ0K+@"Z;= $AKu/!C@Y۱DEit^OK~+i >b+ɾC^Cu6(_wbfFh OGxL臟_qD.!"e0@7ND!;.>NCX؁VFo;6MIi6֦yT"9w34P!C&\.ƍeT܆y(iH&7(P68wFz2>G@ >љ:լ[~ ;ٴk۾;ݼ{ <ċ?^ZA)v$!]&@ːq;9swUq<@|A[A! Ll4*wرAF"\×vܕ6U3>s;P8>L8gv'Qv7cgF=CB iNJi%S e 9 d4<$%O \7p5p;' _ 3@GXΞ;XA>7jk_FtՓV<0Uՙ0y ;{>׻9v|e@ߨD'Lnfd>\Q#,Gӫk-!,;q|M[cuɅ#gdLbF@FWe2CFtJ/tN? uROMuճr+(hqF =o d,{g6Z)6ٰ[=QOo%t<`8U.8txG/E. _uw;g\ VOߏ)ƒ&r!0@m<`Ll|Qq0> jDT q$+K7 &( rj'C .L%0-X@Tȍ 1t|=PϕqM 0Cp%lkfsݔ7יiV <R.Ðǘ,#ffW ΙvCa&Ιj]B jhFv&%C#K_ Әt4Mo?4HcWF4`* #l } w 9Rye ¶$ 3B)tm@,E;%UI Acj !whc`wȕb>XԵ5# Q(VЄ-7=DU HaGT֑ʇr1+ZV,V>UrzdWi@Kwl.P$N*wms]1a$LR<ڂ iYR‰8#;e|3$;PvH;0H|,15y]RA x^]7G,PW#qxY[=:6wF!t3^)yK*MH{4І<歯Fk#:6 f0f^tN5rNP ؤPZR | @ zЄ&M>@A5 mdb UAÜAR{0^ڊ7"@:tBA3"`;PPPؔd%)#JN1ht:N%%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST c9RY*0:3nd7ݸ,r}YS=̃!|` aN|I.*S>ϻx7~4>q7yaHDYV~钴KpϟENb!t\w!OHInja͛FTqQ+>gEb36t7`Y^SBE|T$ pFqčT@ d 9)BȔdHMDBT7&*A#F! NXaZj;.H".|p-/c54'eg*A !CdF $DCyrFpoپ]xGc GaZo~Fep A1BG0K_ Z tSd-i*~Bf$L Bz q4 0rmvtF|/nw T. 0Z=30[VҤ0OT!(d*fE N;& D o@K;аa>.՛ Q }h( 4< X!]'Υ1O^1,$4Ϋ@ *՘E9$)^{^S.1뻗G%Zw,sh S,{%[(;5~R*X"|Ȃ|I!޲u T-c7;9Ki}nKv+N@f%SG`bk/ǔ@td@9 &F! Q`_ٵ2,A 6PlSx{7(C?1DG$DOD1EWdE_1FgFo1G[M&=,(}6SE$*Au2hv䙀 ( 50ˇv.hms );@wt8v  qw yi6݄Jr{Ɂ`ǁ'6ӸpE(|*I+Lj8,kW(&t<}0,3Ф9DqU Xe}t(#̴M ;+U@yPss6v"jh8JA[qU_yFahˁaUy0@uBeh%Ig%Ԭ}W!Lz.z@@CӊSP 5h8+` ) 9}Ոc^UՐFx#LFys9iwb#v{+>?7 t7lF8G :&$`P;tI"Z!M:OMk4UU@ ԡ|C2!ATI EmbLg7 T0Dr岘41]A)FId&uHd:}p{@JGFmUeP>aT2Pn |`=պI76>(r7NJ'qU$ðՇb[_t 2􁏒d `Hq .7ekC@b7ɃY,FYh@y̬ wXNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW  ((5>jH -r/yK:$c&wМDy%b}9EByҕt7O<  X =e)ċugG{ˍrQfB4"P.'qQI`s#?8xQߙvG|I5"Jx-| .o e+}E?z#ֻJ&c0} PC'1.}G˄`5d>ltIVFj \+оȽ}:ϊ Vèo8nޓ|v,)I "Iȣ-IHd Jٰ 4 6y  hG`>Ev耤x y G|tr* op@DlTɕdɖtb5,upQ5L.$ VEƐ苗Ȇ; /|;Ph Jj t˷˸G!@v &Ȇ{p{U Ԉ>2}p{@{0L~cd85ȼQȭL1$8$NK5(88Ev@P+lq vNhA?<ڱ|H$ί_tN Kė|H(%;}x HY>x (\ РQ j#} M Ia9$@xo(f 9L o4"5#ERlK?Ȟh MpR$Cz`y'(J$|$5H5͇fpxp ';Y"|h"Q% 3M9}!ׁ|vS%PT-F5yDKTUUeU;(9yq<0 ȯ֢ՆL0: '0ۘbX v.K-Y#;1Jaf\zv}0T:FL цǔ#hM(EhA@ ևv^Nhy0!9eЇ{s ,՚IiPike  &L@yxn@w}`U(cP$= ɱLnjڇta-B_l*$r: PM|@g}Y,WqgMb7,CfHE p}p`,hPM() h،`lfȖ8jZx>0yevp y\T Hb鐊k_Y), 脀FK( <11m}h><9KkǐH}o{8}(|w&H8 8Cih+z؀tn hij &.8"رÐ?~Z~>LJ6SGutۙ탇,!Hz ЇzȁDZ _ [L+1r9ITuI$9|DU:UYϐ :^q}HTWu/:$=X  t_Vi,ʣFw$f @y>IWgW|Xy7C \y˾5ޅ7&'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF ЁPӯdN+9Q9˸O[hN/wXˀp'y/_fġڳt !)9Hw3Ģ{0"Lp!ÆLhj_sQĊv(rÁ$?l$K-bl)s&͚ - V&@1s(ѢF"Mt)ӦNB*u*ժVbͪu+׮Ov]𺰁 Te)^Kn ͓Kwݼjʓvޥ /exqc7eJ>re f|x5tF.PҲέ{7޾.|8Ə'AݓmSzC'3TcáWI1Qwų.+_j~-3OdUe CFA8uVMP9Ps,]7S r#X'+آqφ-:d0A܎ޏx`lB~T y%yҔ5yL'Cj*4ЛT Ob05@/"2ڨBi`3 Nt<D`O:$Vԅ<g:`D<2&\-GZ-qS<{Ds6 {#;D׵|<ꑵJuz=A ȣCS_ק:P>#; ϥts*>㌖#Cd ,x P$)A\EC8 Q<$|$p;fc,#8@*n  6vڡA+nēLdǎIc(wKPL_ q %\&<  ?AL`H q3h,a4(G;яJ*Fb<!R40AAQ $c!H4 cA t60x/ob :N!cֳ;vS21(@2{1t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6PlϹ^H>x=i¾;}$9m3LIb AkZ6Ȩe# Xq}eef]Nȗ0:ͱ sy#q62ӛC=Rr PuJ53_Tfر z:ސ1p{Ap b Ny]!`ʮmE,|RgFA>$gm@+e|5Ał |B>k;A q|#%}#`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^:z$^ڬ TEhDfD͞B@=Xߵ;H%>@0|\A(:02!C \} TUbA` `C, a"x:AԊC:X?=lLlB@-7zĉu\9QAl<;da6:@SU ]^ɥDHE< Aa\-%ZAa1gḀ1 T}D8fBeB@HXC=:j'!W ރ !D*I$۪Ɉ*J 7$6'$cBZh"8+⃐;jp= 8?PCD=փA*R)û8bjB?rWA=1Ԟ) @FJ ;\cC^DDE^dFZX^dLLdM& 8Db N@B%;,G> ,"B=F=8e]C^އ|̣p;x` AL;D6i BuI&EMa&Ie:IIWVr]B.N* 9TfA\f<4BmA <$;\ff6gnn`Хdf+u<8:b2f-#BX`nO0\B=B@f.QI~g"mM:BhJ!pb;ĉWZ$0Lndlc (u(x_>B=IP@3LlFZDօ<@=#Ŝ\?8`5), tnH 4:*ę/ }_z2ltI*(q"DvW՛.") $cB &RDD0*MQ0bɆTUi\9u\IJ~W$$QDȃyV2+CDjშRk!%æ4$ ̓:|3NT>ŪCD@DXRaỸ};:jĽTH$yROkC=liBv`9Sce^A ``)֖_  C#zn ibXBŪܔD@ܭX<<, @0Hحؖ4I@=HC-톕,ےVfd'9|@0;x؂A$ H]4: gF-(ڎb@*ǩt-m-H@:BA n`<nҮ`u&b$1,>^J:l@Z"40uH:T>0AĪ3dfK$@ 4lO3T0'II)G=% p 0 @7z>EAD@I>î@>Rރ2D0:EHK_`HI0^>m,`=h@@i"6 ( <@YX)kʖAo>>)ExeWƠ#If KcJ\^̊,KjE q><&: ZBd[lݩwr:-I 41bZ>K VC. 1V(*D$S%eAd æA,A#rU͇!L:ۣl@++F5'F4s)%lC" H%T13pBpp^+b3vc;c;]r=SCSHvbPeFXtehvii7 sSLkw_{ԅknvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyy7`uĞ0bN<@y w`(raINU=bzK: @U mODKDQ|^>LdrPh𥕲9sT!tgmXYiGikAD%CDRloA ^^`,r T<\; 0]\ZI{#6s%D,GPGԃ&|>b?GXR6/a]ц>Z;RüW,AԈ ~Kn|R1D BPu8̳lA<D) ȃ{@1 +]΃}SNĥdJ>lJxt ^Iο̎VA < ӄ7>X@v}$C$YTI&]惩U]>lBp@}>ThxOA $!^C=TA@ݏDXcJ:ß:1'BbA)-BmDLKU#=0>)rUA׾i<}-(@&A|&D(OB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7}`G@!;y N_w#&}ᜀ(;7`A& n#*3p_ "c22Իo_)&.BLALA^* Q lB$>xqǑ'WysϡC @+|yp[@:?3U P*8Q%z@C2sO>|i4}WYnaYf"+!FI@`JTYoG `e:z櫱By$G1j1Ja xBI'D1SJ  @؁@l~'N\o!_MªLjo)J n1!%@CVPá*q7+i5· ´d@gGч2 a'/йm=ߡ4$g^! 6;!SgG,_}ZɒuPMP 0DRr @I@>gR>jPJh`s?.)`9*@2*@^  ]bHH#y$z}@b۲&Il䱉g 1 9/!@=0!! `B9Αu$"`<E7P`38`]QGDDHJ). C|BdD$呕@*H}C*` tH(Ttp G@ C c ` hB74CƷ+ {r*ZA@+OyΓ=O%Tj4AP. upȀgPnGARx "5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:0o5O[9zYgVCx_X\Q+`$8N'w&Dba5e` jtM#C49."7+@>@%d:%, HHj\G 1_B tzpzYQBҵL`؀8H6&GVWWtT: :`•`zqy0c}>ttiZ}UGby5"` \h c!$0=aYaG2Q4pRd!9CL  s]4هjC&_%biE 7>W;NB g(OX,=!A-hAQɌOLtc€X0avhX: |dɃ (Ay章SM@Bpy;ʆH"Qah!#Q2> 7}u-SV3y@ @Oa} 6apBqM 2@0vM|r"iFOTBJ kݓ@B(AaAg$,؄@+ U|# @C,x$h(.bLJ0" F0 `C=bP !tp H߷guoDY.3}lK@8wdCNI+6PwL@\ C1ULStUJC ^Βݐ@3.>Щ2 G`@%'tϞWi>Î6XPCdٖ^#ڧ}|\B [&T>8@Hs;gR Î$<EC *Pc=K8fqqgI& !p`F!8d$J(Y,!"N** VAp즱bMND*gM6KbB!Y:xB#@iAg2>g@xɰ $hPXa!& /߀0 H!Xa{8 !]ԅ!P!ڧ_#P*7R I"!| 6(@A++T( A&L &{A@P~Dޤ1"bk gFL *@j6 ޡG#!}Rh)pamN/¹aua`@`]*@Y> B#!`GaZ1#5r#[a3uB(Bbc'5LFA! (t0r"&@f3'xƯMejHF R@#: -և F|G4O#r-rOԠ,@g1"CPaøl af !((J2ha0>PƀD)'P8HH LYHء-F%( %8>R R!H@6+\s88$`KH2T2$ n6` # ಩>B$&CJa&v|2!'B4"0 }'U46/QIX8 $($@ 7)^ |FZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)`XeHtISH?j&bJ5B+ (=JI4Lݍ k& @ "La2 8-Ae"=´)3TLuP̸K f&Za7/軄& ^B"X.Bq:PEuTSb#`3[\Ȅ#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,d>ez6i=@<@E;Hүu/a|˷d#B0$@"wy5#p dJEnPs-uvqQ>a)%XuS">|7\!܄DN8-ҁB(Nd>83P49O* uEkZEAqLӁa.QJ7%q;">,[[e\PMl",1qIVu.>%_`{T9*sCAEؘa7HÀv#R.r[!xh0!p@ PReInoYnb2!&^ZkFgYy ڠ>?!]G?+s!T!rI6n0ҁW j ||!<%|)-1<5|9=Ad3vOSXyѳb/ DԿ]r_guKX#X8(pEx8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIA'_AP !sw3;w(Nqv-]t` -z! *G` t:ǎAo^=t `+ByIȃ)ཀྵ@qN+װc˞M۸sͻ.Ny Bn,Au~\tt s%W(̝N|K~&Ö́ax{s!T}A -^AԃB|0= ($h(,&Nd(vNsSv 4dCP8P@ CC/Td5ިAFb .4>Oi7Xgȓŀ"@95;TOi-Jb~gOS"'褔Vj饘f馜viHE'YʑW;=9x+ —k7\ 鿗IXjA@B #,Wlg!FI>̾@ܨO=[P>`\8(?TPO: >3{6_QN_B`@P8{#>$~:_a(;DW0HM&;N ؜-_Sތ7G.Wn?B=!g砇.褗n{O< {K9c LE| hGH@0Aԡ$Q:6EQ2)7@gчt%QD恏y!9 *PDz` U;q )GI-vH ba2sdb%A7Pv[Ҍ4ʃq01Zd4S&\_ġ> 쨋 #F>Y+%f2Ur!r#Rz-5Ib R]z!8iZ2adY<:쑖͜ E@@CC%ڥ䅃LgM% bg9x|>ς0@h`H@+QFT\ ҃ TGJT@@5Ct%@R:QĢpV! 0㮂 5gv)^ sHuwS0KcôbƮ'ODH Cx+*3 ⰵ!P]DzYX1:>PC#[@NF$v mpC %(*k$"G @=@j'2g|GQys@ NŇd9DAJYN>0( wЁF 8 @YD "pLs##O3: a!%K oPK$7rP\q0 k4/{w+X*pB8 duh='X.v8rAR 8Ǜ b-*-c,ad[ɣ]22 3G$''Q24~G|HԹq @fABŰg TT CP1) q=$blhAT/d+vańϯa jeG< AjHc YbPArrXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7 D}̍ Zek9.!P ;6 $ZȍzOpa-%f@CY (\>P(Yz , A+:M :@tu0cJ7y*M}7oHΑ9!cA`D@41қg>Y^x+EKURrg;qAH t&U=ST{aE/|v>r e!Z:BF1 K<zfʋ4)P(?2< zb}L hjZ[ai v aDz7X&Yd> A% Gv! %8 C w?" $Pg\E?@Av212W*e! PbK"2"X">(rS}g2"SR`xzXOJ )tb!G t i@tb2AL ON(L 7 Nh P AX(17e [F1LG31 V#;Qk".%6B&F"Dh'L4b}7сDS@Gj+R+AvDEj``-b- H\!Et*>5`Ej*% = `& `T"l.7b BBuPTwLe8**C@+e% 9}2%p] y:0/r/b,p`dÃ06c5h0 C 2؎>|cmb $*%`72=^E@ H22v5D@p8:v#t#+.Ep @ 9F`29PDΡ=48& 3!Ls2F -1s50#MWXEYܐV0 6m6AeDivӇ_X"GP8  9ZZyP ^82qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;UI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*"*O=؊t:0P }Wva\^u hxz% W"Wqx`X%3K ^UY7^Daa00|HS!V'aF'P!V[گ0 fiLSGj֌A@Up%6VjKsjh y&(Ŕ 0Te]qMGdW0qE6"ȫN*{%wr SRvE;T+Fp{lF8Hzf U{^y^zsk{x?:| K'q0[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv. !4^c?!'kb(,)v۽蛾BLO /~P0[#/b ca 0aPƫj1//3'ZQ0~j cP2“ 2bP. +\}Ԡ0yp,iПf` 0yus7 7c88Pܳ;"69jZC (2:(f||!t^*hr<ƣ"nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#":pqKktIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2 ng$j斒V (!3.yՒpJEWi&@dk$7pפnբ 0`Y[~Vt%mמ  p-*°s0ʧa*̢vl8yM'H'q m\"o~?tx]+ |3n6V{l]P,a$M! 0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*/a}e_L q Na_j j!ŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-W o;hV\ o@ .dC%NXE5nG!E$YI)UdK1eΤYM0ɻpu:\< `yJG~`"S!)wP3J}*PoŐ T0+uJ!:JǸz8'*y6%!PCSyH@ K!A CZHs$k!nN*`G>C@g!Đ%!MXаy BtQH#tRJ+RL3tMF}j.Q8TU3*YŬ .js gtsc'*@\Yh  c:XPz0! ՆM`yV &Ԑg6!1xܫ}Dʁ.̳Z`11.{LsA3 SO"[؛7V0 ruѧz`s o2fsyg{g#0`hBQJyb`jzkkƔ ( vaK؄Ҷn{oo* W.k~ q#|r+r%pb3r$7A^E|@|@wd)MyJT!(4 !Z:р`3vR@=_ΣZ dAt(1;&C 50A*CUѝg=퉻ő*>ypk %; d7V`:I%|H0TFlBqB0,|l \lK2U]Q]ѧDѿ De1HF'wֶtC%jQ U:K!/eG^сiQ0x;2`¤P@& \g@2Rth[Q)w@L C3(i:ῥC62ȀGXFVȨ4^"U::(8U Ep,A(a>eᖅ UdUtCXXy֑G=\FWӕ*[:6CP{ kV@91ekيfꁐXt t*B&VbE9:5؁m\B.`4`GX9'# $b[{38+ta; "Ti@5$yሜG 4Qs m&[(Or|匜e$0F0.Q ` 'Ubare2v>e 8BrKQsLЋft\c ,ߡE4Wfhґ9J݊E= lR Gd2 UB H) Aj<@P}ld'%#F dh/B&> u<#+CdֳRRpESFCX@\(Iq~ #H"d8b&vt 7<9 x-EHSKX ]T&ހ 0RI`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴNd3~u]kg{IֶUDn S~w]Q.%(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>'@(.}Cs0=3&EFuv*@&[ H`AꨯͻY <tE:0"N YW"W3 ˈ.A#P {ؠr?$ "8 @ #Q!؉kq5 J6K: UA ;7sR/ dpUskM c` gPйYAHztХy?Iꥬ&/ {(wPeig talh'ȀaruRC̺A BJDOs θz X؉a99 DA*qh*}8XH:2;HmO2'R0A@j | NL4 P}(|Ǽ(`.w115_[yk0-L 2NwDؤγtPT!X1 ˇ 8M,N]PɁB 8'4Ḱp zr#<,Uˆh˼: }<ːL(p3.h @S.ceP"-RCډ"v#H)0r1?4NˍR1p(#PMMJ?R*4 Rq* `)iEO ހ!.2McspJHRwX(9gBb0N0wU|P x"_`dw ;yEY1"16^dF=բlG/yI4Iqdb-t+2̽@ PxTM 8tb؄\[[ȁh`G*Ihdjf3g d4T3>%1pͭOCB0d8Q|CP5mG@Jl CPcX fhZ+Ovc$ڇ|h7@7T=T^<>2dvh`F$MP`)d0N0M~jn;XOƬd P2ɠHPLQXbkiʍ ~Tτ(|B0y^lf8ҨSГi\BAE&Þzlœ>ó-oЄ!@xCd{@YbTfE^n9(ƱSt;d @}Xw#}pzpw`v .)3Co/ u`yPP5k$^^Sle|8fn[ϊm [Vy@MT#Ai 5leAof=qv#oˇd P)7[ .(rqw#B!Y"xȀ|@D}-wŅ_Çk>iE ĞӼ}`"n[56c|OA >઀;zgGf4 F p?C 2>y +ۿJU~4Ddz0e3?SgӪs\mzxώ(wxOͅхyy2+h „ 2| 'Rh"ƌ7jH#tF$ yɋr9KiД ;3>" :%> )"-"18#5x#9GB&<#ADEA I)dANBY`N'm!č>AANp Uv;4@:(>mÎp ぐР&tE5GhCC Y*Wmc %Q, A3Yn:W`d@q{Ϋ$B="4 j>4p霣NTq'r/ԃ!91qLdN{#N:LC:L0̥9BӚ@!4 -,)j}¡#@:Dy^wJC ^(@@.^i7P>8 "ApLzϳ9)zPXADp(Mu tKӇhr\goB@ᚤnA3|i(?٠"āf?(< Cc"Bn CB<(}  aw XD  T: v8ACmG?(9y.e>s7 s6LDA6 Y"@BcU`'ZLqs(ЇޡEpы`cSV`l 9zCO!y5^J= l?qkq`nbaJS6 =!AhQL Lc*әҴ6)Ns5Z?L2(; cp2jBz%UKmSS9 1#@;SSUgO (՛⊐&qBԊ(3CP >` 03&&nT,%ppEiʉRDI}E3xACQUk[E2'>@1 rqb\i>4-( iD#0+wh|1+D#8գXȟ ̑$ǘJ·Q$S| MO aCEjPt>1,!93P 8DN/hON2;Lfbx@ns`| 8/p /!Hʒ\WQ)sH<N$7-1#x"v%vxMbІI|嵋9ꡐ͊J^f7M^%(4m <X|Zu!`~A\! !Πa1UD>AbQ9T<=,=hVwía%VD> H "B5ğE9QA ><(TlB<<B0kþ>OLY0].#363>#4F#X1$%$AT!D C2U zLh@:@z|C胹mXC9@Fp $q\c{;~b4N&eVe^&fZ>C>0J>Ȏ`C090AS@SU@LV&>̮|:W`(L ^]6 0 m,; tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]k(tL`‰dB]lDDBNL H OBBI*CZv(U'*(Wxɑi;XG!D>BYePfWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 )EXA@9x;;(˹ԃ!>ïRX@B(*e=iL` مs,)\AlE=CmOhBDѮD E l<(A$ChEm}Ga)KN<}KIN,ҰvC|3ӡE>=ElrjJYU,B+~%ld$sAmY @+8]@)&<Bס"ÕJA&..6 %hN脐`<VzD D`@<[BL@A nI%OaO0^M MB\PPan.FAεc0HĂN0\kBm[[UAHa ģ.E!=lEXH~&M1kp)o:<0 KdFIJ@pP䚩ޜ5 4;D0S\I 8R:<"@/cR> H'2p|ztHCmpfEX@A|&rP|Jɒ$fXC~$=1  tڢ)U!sE쐁\.c̍@&'2((*%>X@20031*MنN 1fQIc^2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH<1? `G@lK[Kf"5\p1#L7S?5<i.[p:E,p@Zh@VH&|z&׹V+o>2rhGoF$+$K 8 8@ 1 Y,%(CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:X;h 1T_7vgچ"kKP> ESp!D0NH@NzRk1)jT[bMFHľQć (P1m EP4Y^> hH8Ŭ;c>0 l̸V%he:w' ENHXqV KK pNOxQ;) TP;XVhWh7۩a,Fc<ZȜ`!)C=hiĆgt7\Nn>TtLY&Gv]"6JxL EC'I*X}JkDdJY<$LACl"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/S C>!˃ @9jAo!CAÒzZ4K'^dYA ;J<1\ 1#˱$ ٟ=(ey'Mm|ü /DLûT=dAlLstF PPDص&\hΜ<`p WO|p8 N\=F՝L|ZVD^~KCX@̈>B~:|퓎q@ݝ0&@,4MӠ8H)DĻwzȓ:(y(0;;0F"!t@w!3x̋;y ܧo^y!OOS\̗N$o;<p(PS:.ц>!p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}>  O[{%Fc }w E-pA6m:0o; ם+qû|u+GzꞝFqTy@RRs6y,| HwlA %(GA4P$3B@ CiA` #J"@OiyA}jhσЋ>O'"0Ĕ3 uqI),; &BQ9 0+ʋt|J8*x.ڀNJ{)Mr=t]v}xWvvR2 }>`aa@NԑG ha4(n ɦp ̠9 W]|1ƧJzק20Ftx " oxvؘzΡH/(PPv2j:@CVèfQG njAO6+, [tJI@ iǭz|9'pX y9믌&0w>0%  Dd'8hFu;8y]EmhHTL: } q\1yqw~]c( QߪmA@+S> !0UA ^9A~!!ah_;GFDH*\a$&x(2v<mBxh0DLg'b}<;v%h%.;@'N 2cf ǙH, ]HX|/J23E |s#@B;@ c:}4<)#6i$tCP`o(1a؇2d!"!@F2RzT"x1٠S $:` #߰X'{Gp brE_ALZT @&<`FaB*A!t'θ:4Lhk1LiZS9N=( щ*V3  y;J lȣBpEc0 HF!q"9 q2> MhnIIxBy>.1N C2YQ)E鐀!sF8H#>Qau:XFz,~y#'aTeq́`;b| r!`E;`)I51e҅SzP[9K (zrH;/€cvy0_lٰz1GIAv"5JQ8t';p7-dH aP<a@ E}G`%QH#!F5<(BeQM8_~WϵT,L EdX:hE(`6@>bF*"fv0P0:##o;"#H {䁂LO@ͬb !B*BR" ء@ TN@&#fb³)*xabTZi^cj+ bX'*MJƮS:SRpΆcJ"$ޡRma.Ρ(@$X?CTZ/&H' pEPk&R%, #D B AìbV *DuQǑ5n)lԁo,xv dT1j+6@+mjȫ(Pʬ!ì0 =C~"@e7&$nB&B# a"JB" ''ȃ0HҞzbbbb" 08IJ* kafIZe'+L-Dr+42"݌'()/" B<1Y $G[ٌ/D Ԣn)ma$"Kª$!eCFR-?\%ljr"/.2"A0j6P' pLI$qo'L$6s0 (s??@;L),Ez ĸ6qd"T'0@"b@)qF FA3C#B2({DE/2$ *Rhb3K3%BZebO e؊4ҡ`B sTjރHcG"`? ;F% i6;bAH)n>q.^NN'lBz`G AK$Nc:'D,!s//f$!dS/D$*O=@>Aʔ'RP( 6RRաT"n#lP$P/2$2Dʎ &*\BD)U@ `aVa'42Isa#3*@X@@5c5U#VdGdKdOe`a^0ee%%(` R'pA?qĠQLciViiif6T' "Nuڲ$ B7.dllmVm׶vܥi$Dk@E`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(`Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvThJ  B `k3 `k"`#F)xh֎z6@Ge$J a%H%jg1b32|V0n؇eAzb:kxXǚA9S*wB/H3c k84@Q04&/΂N%08γر "◒+ْ3.tNFp$EZ-!$A0h٠zx"$$6a@iG A""[E* ԘMԀ$]-1'+Ưn1la"MR3]To\fm*513 #喩>1jJK–qI a/?ٝpb +΂EL-G6::0Yٕ)WYA5C! v8r6KM@A7fbJ[h/ڨq%$CxΓ/bb)(?@ #A `'BD`*@V 6CF*`c()gf"H3X]R#@x`c(/s,ߓ)0M*C:t*!$vwjYv |&D| a"Y@"r}'v}CbnF`Hbn߳ATSЁL%0 A b1`=XJaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0th rK/[ ~>*y}?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K Z?+Ĺ;0ߖH'BQ2>h?0@!|)3JZQ TYFCPvAD  MsPN0xeQ@=P<0<}82 9t +!@|KN[B!dHpmi}#)ȣA#@B^;E;թXcBs8h s7 mMɪdqЌ}Nꆓ2PVJPY$(@X$BKdi_jN="D  E BВj8d>ʰ)"|;(+TMfEמb29M锗F k)2 Cd\ H?U^IAv^y$<8{=ϛh$OԣOv峏 ?yONy_yoy4sc3OC\{ : d:D7A0/h#BDh3~}ЦkU$HkϏCa#@:|4f] 2Ρ>)%ߞޑ-u0QH2#dG; P|P €s\ Au{T"$n{%v:ʹ@0@ B!Z݈0&Qn yHIO@D ,7R 5p3_a6J` NB3}0!WB )-5 Ȓ8o>8Ccq&80 V''v]mzWXV(cs45B ^uM/=Hh v9ԁ@ 7 ps,9ωt~Oq!P\򱁠dh!A'K*3%R6飞>vs#}{#!9QȖs򨬄 $zk@σF9aQD-| Av| cxt9Y:TN!juK|즳!u2#t!;#VyT,tM]7T#"f !Πd O:P1mO=`QDŽL@HHPE7dԂ )/_:Ghh U$?v@H}` ,"nB(Ļ|GB5VfDps}w> ѡ2!`IJ/r@PMPXf< ?d 7N.#`Xf =#@y NۂWP5 7tnRWe| t4­fswel<, #TLOeJ qS)\:sMyϽP>G!_7iB8tyBgw Zi #rps,֤(=*W `i W8zl`ӭ<1bxj8ovс#w|{ߎcg 9@RCD Hs\@XA(YJ(9'E;Kh(T˫Pu!EZ!e`} ?(PJG(<M&A1  P aB2[xф ^KTCyMpa_j s8Ma֒A8D1Tsb%>P'b 707cdT|Rxg&opbP*6([}2%1&Y5 Nmd##@#P 0(BP*n)vnnq}gPrݠVޓ@#_I}xE "gjp#cGZ aqnIPt IOV<)=tY? Ir@:LF1$&"p<4Xj)@V`71X"P ED)OIm7!91<~1+`dF9n}|ypm){p> 2I6fRh#{gCR1ѩ"ige qwj,>3(5p p`%&֑mo q*s=fS@[|Z@.v+0L"DcCmM|)4DCyXR`%&jqP1rZ,* bySus6 ^h2-@jqqzOR% oч^h7(0@p @ : j`ͪ $'PAH}ͅb0b`gB xRي#7W`zC($#:x p @%#L P S) P aUsך S"D&@ҩwS鲧ejRb芭-`؎GmjdM=X"jA#aI[>Z0 A&F+sA` `Eqp*I˻U>g<8 `Hś !644Q̛!MCŽlڑJ4k狾髾_&ɾ5ɒ,{7B | 38^|V2Q:@Jeʃ7H@"IOy0 j ܶ2J  ˨Z(Az"1z"Ggp  ΀ =.z nwQ}ؓQ᱖GuRĮB\H-T|0`!;O-MxHN{PF#DUA0A: !V"0 k(ff1(:0P7q">u~($G~5WJMw h7%ʾ!pM9!>-bfb4+Y!߿AW ?`2CvY<8 p09p#CQ0%A9A7 a.:_%0pv@1)U)dy2>,w`V0@L_;VI޻ i"5M!l"56vs3A:@uc-谂qv:`7%&y738L~D"`*S)2+i!S֦'6[ACā>. DA<w\PhPaJ -ﵙ0H, BP*P -vU`0)vY:!*Sfbs=0P#/qY[X-FA Ad9D66`Vz0TJDh9)i6SmBOEjQA_;p @fRָ:< Lg ` PyMi<u/LCd7puzvAWOC A+= rДj v O=0ea -/c_\4e4vG 6PaCo xf*%p8'A!O;ɫPPa:} c'ψC Hǎ"y'A%`ZaT/]̓SBg^>cH%ZO^=ɻpD Uq_U䭼(O;Ա;ayh πgl ='b~pV6=*L (! nO>vƢhs,x ڀ{@ V/DG$DOD1EWdE_1FgFo1GwG2H!IAXp:)L1@ eablر2DyI&rJ`G "zPT dɆ @M|4s|G",{v1'9wB*BS"x:I5 @M9 6-eh-vV1A!C@! S$ Qh}9˰@=*  AɼbYy%htJI@ (4U tSKFǐ z#jJ}'ɾA@*dv". wP乸 JCXmS.w&3d&MG+ _OG`7Qd BB)*Hґ'1wC!oȬ>}HAv Y>4)1HSvh}{.ȀtQP B  THCcKG2CeLTb()*|E Y>`vQFSC (2:#@(/K@A@$İ*G`5HGcBLja1HB2#^[gX)L@d|C̳?I8F(Lbj`F(STSx-A> :g\B(puғe(E9JRҔDe*UIe4'd,Kl \m1\Xqe%(!H8G=w HjE<|U|n}thA#ov"pDye!C\E>cd10(PcP\Y)3Aŗs0*&A  \-W-;q>Z Ȳ7jTj L f (EzPSNJ)P9|% ŽM@?Q@jgB hh&T5"e1_^J*E;ZҖִEmjUZ֊Ts <@P |JP.mZ<ƚt",]EHU!ك< CQ>" ܢC̙PaD "מ*3 Fu$^Qs$vzC6Uχ ;BD#}i(Α5Ah0A l=B$ 1㊸CȆ* gc=tMv`@Αbȹ5& a;>< >L/9t5iNwӟuwt$[d)L/ʃc_a˓ fޗ*Ġ:('٩TSf5AxmI+ AlĴJU|rQPAsYycq;2@R0z8R -"%<] .yN% :awywIVB6_9ə(m"%HocLsim-; # Dv(vBASM)v>vgG{>}\* @M ]8H ya7U g[aG|ȱ B1Z#E\ _9^#\wȸA0aݑmmb4~CokHm+x{;}Z 9p@[gOW F̴MɽEl!eҬwBWeCV (!wiy,-ADr5vvbGu P}8zrzw(yh#+5y8; 83 z}J=Xs2# H Ø < {髾 ٵtP|<ǘЂ zA%.3व33D4T5d6}زP0=ux 3?(v}j*J+sD5 @ XDsS1Iz89# ۨ |Dsjwxy2A#h| N ^D 8) Ej!tu}^Cx"10@܏h5 8 z1.1 ;(YQR& jF అґn`Q\3|7v.+IB#Hi!`#@[.| 3Q9u0c ]zyGb@l+\{@ wPl&g}=|F06lDRGr 2|$Cb7uÀSS+ .yFsTdt+5@ )0"@ Ո й3ɉ 0ˀ{@pC c뽻 fCt&8# pFN tS` 2*؇LjlHzeI0`]Ds 8uNH؀꾨8N $}P`X0ƌH?=1 c2X!oxOXuh}r2}xHnp ǐ@Y\P$# 31C xy@l'uh/bXR`Uxi:}OPԍF S0,8 u= ̇FЋ|s v PQ%R5Sݛ"EHTɋc @U\ղCRW`a%b5cJalyDd=e;?@A&B6CFDVEfFvGHIJKLMNOPQ&R6SFTVUfVvWXYZ[\]^_`a&b6cFdVeffvghijklmnopq&r6sFtVufvvwxyz{|}~&6FVfv臆舖艦芶&6FVfv闆阖陦隶&6FVfv꧆ꨖꩦꪶ&6FVfv뷆빦뺶&6FVfvdžȖɦʶ&6FVfv׆ؖ٦ڶ&6FVfv&6FVfv'7GWgw N '7GWgw !'"7#G$W%gr! ,fBBD^^\jjlnnl&&$..,VVT 224JJLZZ\::<**,zz|bbd""$>>@. 0xzfhx$ bdp0h\`䠢xx  0@(:0dRlTT@`ZغʔvVlblh@$00FZPNZtNt\0p@txĮ~<6<ΰТtv`xLDP<08  ¾Ƹ46@|^d`̜Ȧx\X@X prb\`nfHDFPlttpfp0@PP`np <<48:PԺPXXvrx̺bhd\tH@hH:Hl.(886(Nfbxt80L0.l0.pFJ@`@nf`BH@XPX||4<<$(8|zptf|p|P@~*$Lİ:$УKNHJaDv3|{Wi˟}>|ϑ2w/s"N%t`FS<#G߅fᆳ:!>d)QTA.cQ4hЍ 3;@ :2&HxFAHn[SdqÎ%$-ښACQ:`,Pp<ϑh Bx>pNK~OȰN=tPH@Z|Oe} ϲ,@@t>H,:3,2D6pX86k@;=CbX"H C@B)=sںM< @BC;F#]MhE@Iу2.`ψD:/j b#:p"'3v=9=;7B\ă7XOl{ܐ::' >? C=O Q |%"~LB#!$ $%VP |C77 +1AzP  {$uhG2ӱD ,@CHU[zB BP<q#=q t  $ h"J>H!IHA?SrI!Ƀ>*`Y%@ass!wp'XFđ$2K@' `ŎGnyVWH_ L j MB TXL%g@$>1px:&]0jV$`A$ DH@pm*Cwy 0)A"x:y/ n J@wZumJ\""ykMϊe2I 'H>܂0u\>e="&ث \=`qh@;Ԟc옍8&zk}uXP@k) H>ĨBC).v>f-!P O|  t ! )HЏByjC40!H [z)e+ x!܇L  eu8tT'EV=(= 0#` 77@W5@M}5QCg A<gqH0|=G&!y&<%10Sf1R`rp+v02> h_P=@Ѐh b}~hQ: \G~%P5}jl؆0 ?pU7$3-`0n9e˕# PvgGRE'Ih$׈  Czh*`O !P  !9YA$q'&iyM1 0|q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕp3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.#4\1F])"Ҋ( !9Yz|t!0q!"4uCWcMc S,P_ $00[U"08깞[xq$גYYsLLW` ymP@pNI`j왡Hu:P$y'P27v)Wmrwe\2*_*_ș:DZG̢sR>3 .gm!-*.` r` dpr:}ڑ,"gYP`S0֢qt]`waH% z  +4Jlk[Re6 -40wQ0O1`dZJF#3@hj/D?#u\" gJeP! :蚮:,zT Yq$"AV*(PO@d&b*fڰzJj$ 5jr8 3!~E¤ (67+Rb@a-{ 2;4fc.gZЅ( 2%"]b*U$]ǭQp@>H5ZqT =K͚"#F#odv aHBmpYNʵ~KHGP[y}Ya& hTc =x`Q@srm @HZۺupg$HՏd#Rt.yA VPv7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 005$6 Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR1``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLKc L` 5a"p@Sq'K>;P$AӯEBd9wUrcFpgH6$p{`.pG"!7W9„,G |7O 'o^†o;>$ a>N;'o;LϢw`(oT>Y;z4>y~rtV&]iԩUfkرeϦ]mܹuo'^q!;tvēC2 @عѱ <#fȓd_D=A&ؑS9=4OTH{ o:RC("Z,{ocB`׆bk/Pc'v'PY1.*AJ*A>{K0sL24L4TsM6tM8ˇgt Yd x &PI2 p(bH2Ey:Hy`s *Cv[,}P49g -  v"IHp"ԛi&N=}G )cz/ @qFl/ `0oz%2!J̀0[Ƭ9GU]>Pi݋t"h\hva6 @b3xc;cCydA@%u*  |bWJ5U2d{|7|yF4\ȏ`C@Q { ҩeBs$%4Ї!!0 Q 5nc2Bz@ zpa $@V$Izؓybh8=QGyBH@ P=DI`B`T P3fM!cKKJHU;`  &T 2yOY "4T`HG&dc(lܸ@KjpHjBD }E8L@B Ld"r9{K%=;!1yͷs2vP-YH/_xc!uIUn=th]WL =2Ϩ /u8-j9C |LOT"_yy\` Cr(HhD@d@ֱ I㲒wؿq# "g@>vPI Ԟ IJ Çq y8` |(( y>>>xn | LhA>CC@p@B , ?=IDci ?zRwX xsNY@y 0Ä(:\" 9f`H3%;FIDS 3 h û ɵ0{0yp yВvX'Җs@FǸ"w0CzulDžSчG1A`_ FMdQ̀O YR4Ea>8sT;' zd(}Hq$ `GQYZ,[|\\f SrGx,%Ch NC5L|DZ*ȓ8p KA ;8ˁ0D%K4x҉*12 D3&" @BS> 1AHbPO 5k:0J$.+ax+C`˫`ȇ zDj, ܡoMPL `LQiKy wKXLt!P FL9R0t e L܉PhP< *;=C0q 1ą6ͅ 8z. K]Wj  y̎e X$ $ ű ]k#vw$$ | 6HH`#la*ځ-*]2L%k B8yR"#!'h|aXY1-3#e$%RHz«с1@$ S``MHe*e4{< 1]L }Ӓtզ(֭V NxtVi$N#Q䜈(݊KPHsԁI#tx( [5  h2Iѷ4x xyywh$ 9<= bP*yt+CN!-B5yȈiLЇPlXgɇ $aP S@|t P4 ]w 쉟؞HJ{e\t0ǒ%1 9Oyi[-ok *qԐGQ+ą" ۷c :X3JKEuAHV.PT+`qA%JQ$?esKГ[P/:{tc[\B]8EJy8l#QyP HJݯ@`}( ՠĐؐzF d]  XN5h߽=`&Ͷ2| #xb`!!Ww' F`ya!zOf5PJ܋|Nԟv۠+v"P" M>5LA [e5%"ٰh@DQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDxHa]=cb'u(05sneWY=.(Q5!ntPO  ćI @#Ij< EEdλvwP6\{B!vJPI&yh ʠ!eR!&UhɁ4gpB9mRF"!""#}!&4C1!jܣ990% PHYl-mr&Ou%/TKq._s6Oy$PK M`zW"h*;ns?s2/MDAOk3Y^[")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u Ё]2 Obc$H6av]v᲋⬉L^#_n3 KW 1vw tjwvIݘ3w).x? }gX& kc|h呂0Ӱ¿,H  =H&`efՅXHa3]y?Q ]7 s0(/@xgx77Q)94?$U ?獴 8W> !}>iЬw 4UoQ@3&5"+ 2q[AoQ|VyLY>RP#}04C8Y_˗|PanXC "@oh8!~J}&Sqc{V^ifN|Ҙ$W﷍{'wXg 7up^y  |ܽ+h ‚Kxp%|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5^qyCcfs; ~"]%ihP;jٸjN[t3BBChwKAJEbrO;ޔ@O\+bXi-B󧎎K6YCAPr"%HT<쳞<8tOR 5I!gAcAe @Adr>jUP+& p?<.тIƒPGRy!xGdLFс-^)X # n5җIF%#-4-'r"iК,#;>)$N@:}^Ep oj)z):*}BqB", 90`CC 7 N3A=$4霣T`R|<2S9E6D!@Fl[@:Q<$SO8Pza u XA2CX nN8"Ԫj==\"m:P ꐽ V0梻VTrR>+[F Ѐ >=FC=X @(SG>05d]lYH9nyk2_r,a#"tPh"MI@]L7/ D7:k#()RV"Q#zXp$2~ꈖ>>oCbA8G!vH % 1@ա"M0`&t !7O!ه>~spQ#gd$"@0, n+aY"a2|~< :$R`1i ^bsl 3x ^A&|dr$-2sC8;fG<:h@ypc(Hsh (<5 Ft 'Z'8@қ_G"P`>f8rx`WBc&%uẉA ỹUp! Eȑ$;(֓+D9d"F%Ta[AIՁgDCfA,HZc.SU@!p@zTt&4:PȉQ I׺"Dם 8v`H TU Q&&d}ld[Twr>T^'jUIDI!__so<ɠH  B`e"ό4ךA&qaZyVk,2~0#,awf8s&`m;LH/` ^M ^Aɥr(@xh Cxr$V&LtzifRV^pT0)p@(A\̢  H (a%FDLq}L$z)ƪ}b+LdT1P1݋ߑkrd dY`O9-s;wpd7 y|n$`Bqq,A 9Oo>r,IoXc [Aaգɘk[>BM\M0Q{ƛ*ppq7-. `/k6HQcM}T}vD@3eHK#ϹYlģ Jpp?65i6F\1y 6_y:a<[OH>,2[1m; !l#ʃiY?xd ߐA"G @03s7NB !3B#CFUG!LS:h)H yԦdΑCz%[ BP>vz݇ڇ&V6lBK&@w<$G!=^A ,a䃊`\BD-5FCUD39A, ;ަO Oў Iʽ={ ;AY_A _!`%Y,MJCSLԃ;5C8`; ECZ}0 r ǘDaD ;A_#bMPv4,-Zb$VbFdB >lH4;(-+nBCXJahA4m @4B_v8 zLA@;XXPġ+bD ! `m@$AAGzC(<;qG1" #B@ԋAbAjmI䑜*GGЌ<\^aE4DЊ!@g%H >d1h7MDHc%DZY!IJ8>rL=CB@m>XXM:Rt2@bC 6m] nԃ'5EYbdC]" !xIeZR\CF4!̋I2@B8SEXiBP!\HdI>J:\! Gh$SdHŸAHn afY-DzGD8CC$ɘ,o9 }abOƑT.I%_fj_`H㡠mX'mvF!#Đ^`)du ;]EPChyL贅b&R.fKR}zh:&CT&eAH'g#yzZ,:XrC$()FH@= f,<  W4(䃆gABGK*߅DٽmIiA|niE<& e,GOAK!;<-Yi&_BܟA4@E(ߎ a;p #6Dt]ϢFA!NA4\*)% XiZ3M`E4(})5gɃ;< 2m#FhE4a~ V'(f<؁&`9 #n&>=+:܃((Ljr=:ؽë^Zi!;>8@ރ&8?ĞP(~GRjޫN>_V *d=p?8Cҵ]i&x;סPlʢ^A128ʥ,=$,;Cޕc~^O>@V\!Ţ,ZEJF&i*C78Ì .&:]`C^!5 RC:>@ r.Gx@*[泪زJ^#GjA(YnBHH.vw7heFÍ$_: < (/bhrE .xpZҮE1DBZ.Z<8薘B (Ц=FJ[8ӜLC><($G`oӟ!.v E/q )5/B؅b-|0ȃx!0fnpEp\tED h~%r;, Nxi oyl T~psS~VP \bS1-G۸p ZhT->o# $G oHN/wh``BB!ԃ =N⦲*2+kP ȃ^C]aCACIX90`Y@:o՞aMohAPX[-/ g:ZPtE99;DCCW"9Xѣ24 RLٰH3Lކ#XÌZ C2X%A,Irdv, \djTĚZbH3CKFsnIAOTF8!_>8Ӆ/:ln¢'%{so^ӳT>uEו>\[Vs3AȈv# nv}[($5(a@XσZZyA%%ׅhT0 w=jEP9tSGz:dȺ9E` !0l@ܱpz 91U7Dg {B 7W?#`[|-ĦyBpC#@X=l|1\L#8<&,C̕@Kxo=:p;7JD)83#F3z'@#!0kD<1P1պj<pDE7ìxoA`H7&HD E (  s֕XqÃ5tjg>,r`F'\8~}ycO9^/E 3"5AD؈w ZT  )hF:dH >!`hN@Dމ`wX;tb+Ƀ/I3N0!BcP 1WoCu[6at;7/!:ӚosLz0,⃃[dΔ7^Z'p ZʮrZŧ*K#a`Gu 0҄(U a PJ`XLd]XgehjlݖnpY HɆS(X. L5Sd |Qǂ`F0Iu^y5~%-MU-[d65zG`1 HeQf2euޙ}蠅#5w-/t#%'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGѩ_rAC=Fm9'ݷ] A-0V2f;~k'O4`Gyqg>i zN.EAIӀaw4jZOST hyIRBLi H䁎-S@Gq2ЁQqkep`?LpK D#HO- <7#!IT U7.}IBP<@j8Ō !E&PQSefX{RKA& tLTW0Ѱuʕ%-bQt ;5*I*{dFEtHXaGA>^(=f˛3%rғ|*!yJ U;[ 蠣T'42*)9kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&9 vL<ěPGf?Sv+"&ӎ8"EG`٪*L $G @KHy *ȀH)d Ҁ}X+ 0O40RP*_JVn6j-g[jo^ZɂT*!>ZBHĽװ؇LG]|! 7BHjLt׏xTc-=1֧ߡm:!#`%}>쁾Cꐫ 7 $Eҡ}ȈQC0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_xyTTx]J! s@|c/|M@l'HKd"[b…:k O$NFD pG:$(#6 HKE  lijdZƏL&0IΡ! !L P 0fk( D"@:@: n86nC @ ‚ ƻb k !A6` #4*R-@q!)(R p-H!@:iQ{ cM!(T !LD qqȐBNgJj$ X|_b[F Q[k$@ A a-!tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'Bz!n%l# * @-N$~%bMba c&%!J*N bϖ!;!)JP瘔b  "((H<  XL. @BVt@aRS11A*b 3dT*"SdR-7NHR@@] S.65[N39>_fb!aTS$*5 -4%P!`2c4ܔP>;[h0O62Ʉ(" {?@tY* P`BxʬZh%2j!##LH`%&I1K4Ũ`A1S> : s-c;#AҒF,00@OH>L$0p!`emKkvIt@ i! Z@ҬmI !@ ⏓6eDb΁JJG&4R h3 BƐt D!*LrìHRh֮pAA$ lT!@pr,I=0XU^硝ʸ3 nT<TZZuR2s+ a@D A3`j"5Gbjkԣbm?R<7 BQm{.14a8, 끵ZpkQpo[[6y 0-킶,ܨHQuU\Z(V:bB\B A FﵤJ@.VFII3),5Rl:aff]'iAWPG6hKhA.! `A-;fF6m+!iP^D*I.F @ !!l"8Uh!ފr_1STc } 6&Dx9B)F>R>B|L!Pp`B5l R,5xcI/7YAk@:Do7W5A6BN,e|W TinvD`¸r R"wiGX.aLaaIu2Ep*qG26-N/V$AVsp< A@$ D{S[ 6L&Z0 $@ fXvT a^O2{Ȋx Z8Ձ lkn$P ayYl tS䎝(͏"ٚ*Ğ`Th&P;vKlCh+"b6tE@ *m5A t)c$j ĕq)Qkp*"t $ x9nVZMDJ! DZL6 e?$` g]:2 H̗Zjʬ"R=@*Ρ cxWjH//0#XF^)"@1RC{l#K:> cC3,6DdXC.P*΁LBY hL@ $?-Z׿ "cKC=0kk("Ȩ8F38d<"nz;{0;{6*$"F`z?>#4!"`!@*|⧇VY[ٟ@:ĠDy%AhM@AJ`F?zءd0RGTLUQ \N%맦PFn*.a'b&v@iu/sW;;HTPPN(LĄ@*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿ@!X'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.ϡ^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1XρƲ0K+@"Z;= $AKu/!E@Y۱DEit^OK~+i >b+ɾC^Cu6(_wbfFh OGx,臟_qD.!"e0@7ND!;.>NCX؁VFo;6MIi6֦yT"9w34P!C&\.ƍeT܆y(iH&7(P68 Fz2>G@ >љ:լ[~ ;ٴk۾;ݼ{ <ċ?^ZA#v$!]&@ːq;9swUq<@|A[A! Ll4*wرAF!\×vܕ6U3>s;P8>L8gv'v7cgF=CB iNJi%S e 9 d4<$%O \7p5p;' _ 3@GXΞ;XA>7jk_FtՓV<0Uՙ0y ;{>׻9v|e@ߨD'Lnfd>\Q#,Gӫk-!,;q|M[cuɅ#gdLbF@FWe2CFtJ/tN? uROMuճ +(hqF @=o d,{g6Z)6ٰ[=QOo%t<`8U.8txG/E. _uw;g\ VOߏ)ƒ&r!0@m<`Ll|Qq0> jDT q$+K7 &( rj'C .L%0-X@Tȍ 1t|=PϕqM 0Cp%lkfsݔ7יiV <R.Ðǘ,#ffW ΙvCa&Ιj]B jhFv&%C#K_ Әt4Mo?4HcWF4`* #l } w 9Rye ¶$ 3B)tm@,E;%UI Acj whc`wȕb>XԵ5# Q(VЄ-7=DU HaGT֑ʇr1+ZV,V>UrzdWi@Kwl.P$N*wms]1a$LF<ڂ iYR‰8#;e|3$;PvH;0H|,15y]RA x^]7G,PW#qxY[=:6wFt3^)yK*MH{4І<歯Fk#:6 f0f^tN5rNP ؤPZR | @ zЄ&M>@A5 mdb UAÜAR{0^ڊ7!@:tBA3!`;PPPؔd%)#JN1ht:N%%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST c9RY*0:3nd7ݸ,r}YS=̃!|` aN|I.*S>ϻx7~4>q7yaHDYV~钴KpϟENb!t\w!OHInja͛FTqQ+>gEb36t7`Y^SBE|T$ pFqčT@ d 9)BȔdHMDBT7&*A#F! NXaZj;.H".|p-/c54'eg*A !CdF $DCyrFpoپ]xGc GaZo~Fep A1BG0K_ Z tSd-i*~Bf$L Bz q4 0rmvtF|/nw T. 0Z=30[VҤ0OT!(d*fE N;& D o@K;аa>.՛ Q }h( 4< X!]'Υ1O1,$4Ϋ@ *՘E9$)^{^S.1뻗G%Zw,sh S,{%[(;5~R*X"|Ȃ|I!޲u T-c7;9Ki}nKv+N@f%SG`bk/ǔ@td@9 &F! Q`_ٵ2,A 6PlSx{7(C?1DG$DOD1EWdE_1FgFo1G[M&=,(}6SE$*Au2hv䙀 ( 50ˇv.hms );@wt8v  qwxi6݄r{Ɂ`ǁ'6ӸpE(|*I+Lj8,kW(&t<}0,3Ф9DqU Xe}tHH̴M ;+U@yPss6v"jh8JA[qU_yFahˁaUy0@uBeh%Ig%Ԭ}W!Lz.z@@CӊSP 5h8+` ) 9}Ոc^UՐFx#LFys9iwb#v{+>?7 t7lF8G :&$`P;tI"Z!M:OMk4UU@ ԡ|C2!ATI EmbLg7 T0Dr岘41]A#FId&uHd:}p{@JGFmUeP>aT2Pn |`=պI76>(r7NJ'qU$ðՇb[_t 2􁏒d `Hq .7ekC@b7ɃY,FYh@y̬ wXNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW  ((5>jH -r/yK:$c&wМDy%b}9EByҕt7O<  X =e)ċugG{ˍrQfB4"P.'qQI`s#?8xQߙvG|I5"Jx-| .o e+}E?z#ֻJ&c0} PC'1.}G˄`5d>ltIVFj \+оȽ}:ϊ Vèo8nޓ|v,)I "Iȣ-IHd Jٰ 4 6y  hG`>Ev耤x y G|tr* op@DlTɕdɖtb5,upQ5L.$ VEƐ苗Ȇ; /|;Ph Jj t˷˸G!@v &Ȇ{p{U Ԉ>2}p{@{0L~cd85ȼQȭL1$8$NK5(88Ev@P+lq vNhA?<ڱ|H$ί_tN Kė|H(%;}x HY>x (\ РQ j#} M Ia9$@xo(f 9L o4"5#ERlK?Ȟh MpR$Cz`y'(J$|$5H5͇fpxp ';Y"|h"Q% 3M9}!ׁ|vS%PT-F5yDKTUUeU;(9yq<0  ȯ֢ՆL0: '0ۘbX v.K-Y#;1Jaf\zv}0T:FL цǔ#hM(EhA@ ևv^Nhy0!9eЇ{s ,՚IiPike  &L@yxn@w}`U(cP$= ɱLnjڇta-B_l*$r: PM|@g}Y,WqgMb7,CfHE p}p`,hPM() h،`lfȖ8jZx>0yevp y\T Hb鐊k_Y), 脀FK( <11m}h><9KkǐH}o{8}(|w&H8 8Cih+z؀tn hij &.8"رÐ?~Z~>LJ6SGutۙ탇,!Hz ЇzȁDZ _ [L+1r9ITuI$9|DU:UYϐ :^q}HTWu/:$=X  t_Vi,ʣFw$f @y>IWgW|Xy7C \y˾5ޅ7&'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF ЁPӯdN+9Q9˸O[hN/wXˀp'y/_fġڳt !)9Hw3Ģ{0"Lp!ÆLhj_sQĊv(rÁ$?l$K-bl)s&͚ - V&B@1s(ѢF"Mt)ӦNB*u*ժVbͪu+׮ Ov]𺰁 Te)^Kn ͓Kwݼjʓvޥ /exqc7eJ>re f|x5tF.PҲέ{7޾.|8Ə'AݓmSzC'3TcáWI1Qwų.+_j~-3OdUe CFA8uVMP9Ps,]7S r#X'+آqφ-:d0A܎ޏx`lB~T y%yҔ5yL'Cj*4ЛT Ob05@/"2ڨBi`3 Nt<D`O:$Vԉ<g:`D<2&\-GZ-qS<{Ds6 {#;D׵|<ꑵJuz=A ȣCS_ק:P>#; ϥts*>㌖Cd ,x P$)A\EC Q<$|$p;fc,#8@*n  6vڡA+nēLdǎIc(wKPL_ q %\&<  ?AL`H q3h,a4(G;яJ*Fb<"R40AAQ $c!H4 cA t60x/ob :N!cֳ;vS21(@2{1t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6PlϹ^H>x=i¾;}$9m3LIb AkZ6Ȩe# Xq}eef]Nȗ0:ͱ sy#q62ӛC=Rr PuJ53_Tfر z:ސ1p{Ap b Ny]!`ʮmE,|RgFA>$gm@+e|5Ał |B>k;A q|#%}H`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^:z$^ڬ TEhDfD͞B@=Xߵ;H%>@0|\A(:02!C \} TUbA` `C, a"x:AԊC:X?=lLlB@-7zĉu\9QAl<;da6:@SU ]^ɥDHE< Aa\-%ZAa1gḀ1 T}D8fBeB@HXC=:j'!W ރ !D*I$۪Ɉ*J 7$6'$cBZh"8+⃐;jp= 8?PCD=փA*R)û8bjB?rWA=1Ԟ) @FJ ;\cC^DDE^dFZX^dLLdM& 8Db NB%;,G> ,"B=F=8e]C^އ|̣p;x` AL;D6i BuI&EMa&Ie:IIWVr]B.N* 9TfA\f<4BmA <$;\ff6gnn`Хdf+u<8:b2f-#BX`nO0\B=B@f.QI~g"mM:BhJ!pb;ĉWZ0Lndlc (u(x_>4B=IP@3LlFZDօ<@=#Ŝ\?8`5), tnH 4:*ę/ }_z2l$t($I*(q"DvW՛.") $cB &RDD0*MQ0bɆTUi\9u\IJ~W$QDȃyV2+CDjშRk!%æ4$ ̓:|3NT>ŪCD@DXRaỸ};:jĽTH$yROkC=liBv`9Sce^A ``)֖_  C#zn ibXBŪܔD@ܭX<<, @0Hحؖ4I@=HC-톕,ےVfd'9|@0;x؂A$ H]4: gF-(ڎb@*ǩt-m-H@:BA n`<nҮ`u&b$1,>^J:l@Z"40uH:T>0AĪ3dfK$@ 4lO3T0'II)G=% p 0 @7z>EAD@I>î@>Rރ2D0:EHK_`HI0^>m,`=h@@i"6 ( <@YX)kʖAo>>)ExeWƠ#If KcJ\^̊,KjE q><&: ZBd[lݩwr:-I 41bZ>K VC. 1V(*D$S%eAd æA,A#rU͇!L:ۣl@++F5'F4s)%lC" H%T13pBpp^+b3vc;c;]r=SCSHvbPeFXtehvii7 sSLkw_{ԅknvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyy7`uĞ0bN<@y w`(raINU=bzK: @U mODKDQ|^>Ldrh𥕲9sT!tgmXYiGikAD%CDRloA ^^`,r T<\; 0]ZI{#6s%D,G$PGԃ&|>b?GXR6/a]ц>Z;RüW,AԈ ~Kn|R1D BPu8̳lA<D) ȃ{@1 +]΃}SNĥdJ>lJxt ^Iο̎VA < ӄ7>X@v}$C$YTI&]惩U]>lBp@}>ThxOA $!^C=TA@ݏDXcJ:ß:1'BbA)-BmDLKU#=0>)rUA׾i<}-(@&A|&D(OB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7}`G@!;yN_w#&}ᜀ(;7`A& n#*3p_ "c22Իo_)&.BLALA^* Q lB$>xqǑ'WysϡC @+|yp[@:?3U P*8Q%z@C2sO>|i4}WYnaYf"+!FI@`JTYoG `e:z櫱By$G1j1Ja xBI'D1SJ  @؁@l~'N\o!_MªLjo)J n1!%@CVPá*q7+i5· ´d@gGч2 a'/йm=ߡ4$g^! 6;!SgG,_}ZɒuPMP 0DRr @I@>gR>jPJh`s?.)`9*@2*@^  ]bHH#y$z}@b۲&Il䱉g 1 9/!@=0!! `B9Αu$"`<E7P`38`]QGDDH). C|BdD$呕@*H}C*` tH(Ttp G@ # c ` hB74CƷ+ @{r*ZA@+OyΓ=O%Tj4AP. upȀgPnGARx "5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:0o5O[9zYgVCx_X\Q+`$8N'w&Dba5e` jtM#C49."7K@>@%d:%, HHj\G 1_B tzpzYQBҵL`؀8H6&GVWWtT: :`•`zqy0c}>ttiZ}UGby5"` \h c!$0=aYaG2Q4pRd!9CL  s]4هjC&_%biE 7>W;NB g(OX,=!A-hAQɌOLtc€X0avhX: |dɃ (Ay章SM@Dpy;ʆH"Qah!#Q2> 7}u-SV3y@ @Oa} 6apBqM 2@0vM|r"iFOTBJ kݓ@B(AaAg$,؄@+ U|# @C,x$h(.bLJ0" F0 `C=bP "tp H߷guoDY.3}lK@8wdCNI+6PwL@\ C1ULStUJC ^Βݐ@3.>Щ2 G`@%'tϞWi>Î6XPCdٖ^#ڧ}|\B [&T>8@Hs;gR Î$<EC *Pc=K8fqqg4I& !p`F!8d$J(Y,!"N** VAp즱bMND*gM6KbB!Y:xB#@iAg2>g@xɰ $hPXa!& /߀0 H!Xa{8 !]ԅ!P!ڧ_#P*7R I"!| 6(@A++T( A&L &{A@P~Dޤ1"bk gFL *@j6 ޡG#!}Rh)pamN/¹aua`@`]*@Y> B#!`GaZ1#5r#[a3uB("bc'5LFA! (t0r"&@f3'xƯMejHF R@#: -և F|'4O#r-rOԠ,@g1"CPaøl af !((J2ha0>PƀD)'P8HH LYHء-F%( %8>R R!H@6+\s88$`KH2T2$ n6` # ಩>B$&Ca&v|2!'B4"0 }'U46/QIX8 $($@ 7)^ |FZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)`XeHtISH?j&bJ5B+ (=JI4Lݍ k& @ "La2 8-Ae"=´)3TLuP̸K f&Za7/軄& ^B"X.Bq:PEuTSb#`3[\Ȅ#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,d>ez6i=@<@E;Hүu/a|˷d#B0$@"wy5#p dJEnPs-uvqQ>a)%XuS">|7\!܄DN8-ҁB(Nd>83P49O* uEkZEAqLӁa.QJ7%q;">,[[e\PMl",1qIVu.>%_`{T9*sCAEؘa7HÀv#R.r[!xh0!p@ PReInoYnb2!&^ZkFgYy ڠ>?!]G?+s!4!rI6n0ҁW j ||!<%|)-1<5|9=Ad3vOSXyѳb/ BԿ]r_guKX#X8(pEx8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIA'_AP !sw3;(Nqv-]t` -z! *G` t:ǎAo^=t `+ByIȃ)ཀྵ@qN+װc˞M۸sͻ.Ny Bn,Au~\tt s%W(̝N|K~&Ö́ax{s"T}A -^AԃB|0= ($h(,&Nd(vNsSv 4dCP8P@ CC/Td5ިAFb .4>Oi7Xgȓŀ"@95;TOi-Jb~gOS!'褔Vj饘f馜viHE'YʑW;=9x+ —k7\ 鿗IXjA@B #,Wlg!FI>̾@ܨO=[P>`\8(?TPO: >3{6_QN_B`@P8{#>$~:_a(;DW0HM&;N ؜-_Sތ7G.Wn?B=!g砇.褗n{O< {K9c LE| hGH@0Aԡ$Q:6EQ2)7@gчt%QD恏y!9 *PDz` U;q )GI-vH ba2sdb%A7Pv[Ҍ4ʃq01Zd4S&\_ġ> 쨋 #F>Y+%f2Ur!r#Rz-5Ib R]z!8iZ2adY<:쑖͜ E@@C#%%䅃LgM% bg9x|>ς0@h`H@+QF4\ ҃ TGJT@@5Ct%@R:QĢpV! 0㮂 5gv)^ sHuwS0KcôbƮ'ODH Cx+*3 ⰵ!P]DzYX1:>PC#[@NF$v mpC %(*k$"G @=@j'2g|Qys@ NŇd9DAJYN>0( wЁF 8 @YD !pLs##O3: a!%K oPK$7rP\q0 k4/{w+X*pB8 duh='X.v8rAR 8Ǜ b-*-c,ad[ɣ]22 3G$''Q24~G|HԹq @fABŰg TT CP1) q=$blhAT/d+vańϯa jeG< AjHc YbPArrXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7 D}̍ Zek9.!P ;6 $ZȍzOpa-%f@CY (\>P(Yz , A+:M :@tu0cJ7y*M}7oHΑ9!cA`D@41қg>Y^x+EKURrg;qAH t&U=ST{aE/|v>r e!Z:BF1 K<zfʋ4)P(?2< zb}L hjZ[ai v aDz7X&Yd> A% Gv! %8 Cpw?" $Pg\E?@Av212W*e! PbK"2"X">(rS}g2"SR`xzXOJ )tb!G t i@tb2AL ON(L 7 Nh P AX(17e [F1LG31 V#;Qk".%6B&F!Dh'L4b}7сDS@j+R+AvDEj``-b- H\!Et*>5`Ej*% = `& `T"l.7b BBuPTwLe8**C@+e% 9}2%p] y:0/r/b,p`dÃ06c5h0 C 2؎>|cmb $*%`72=^E@ H22v5D@p8:v#t#+.Ep @ 9F`29PDΡ=48& 3!Ls2F -1s50#MWXEYܐV0 6m6AeDivӇ_X!GP8  9ZZyP ^82qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;UI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*!*O=؊t:0P }Wva\^u hxz% W!Wqx`X%3K^UY7^Daa00|HS!V'aF'P!V[گ0 fiLSGj֌A@Up%6VjKsjh y&(Ŕ 0Te]qMGdW0qE6"ȫN*{%wrSRvE;T+F {lF8Hzf U{^y^zsk{x?!:| K'q0[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv. !4^c?!'kb(,)v۽蛾BLO /~P0[#/b ca 0aPƫj1//3'ZQ0~j cP2“ 2bP. +\}Ԡ0yp,iПf` 0yus7 7c88Pܳ;"69jZC (2:(f||!t^*hr<ƣnL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#":pqKktIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2 ng$j斒V (!3.yՒpJEWi&@dk$7pפnբ 0`Y[~Vt%mמ  p-*°s0ʧa*̢vl8yM'H'q m\"o~?tx]+ |3n6V{l]P,a$M" 0PYq p[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*/a}e_L q Na_j j!ŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-W o;hV\ o@ .dC%NXE5nG!E$YI)UdK1eΤYM0ɻpu:\< `yJG~`"S!)wP3J}*PoŐ T0+uJ!:JǸz 9'*y6%!PCSyH@ K!A CZHs$k!nN*`G>C@g!Đ%!MXаy BtQH#tRJ+RL3tMF}j.Q8TU3*YŬ .js gtsc'*@\Yh  c:XPz0! ՆM`yV &Ԑg6!1xܫ}Bʁ.̳Z`11.{LsA3 SO"[؛7V0 ruѧz`s o2fsyg{g#0`hDQJyb`jzkkƔ ( vaK؄Ҷn{oo* W.k~ q#|r+r%pb3r$7A^E|@|@wd)MyJT!(4!Z:р`3vR@=_ΣZ dAP"t(1;&C 50A*CUѝg=퉻ő*>ypk %; d7V`:I%|H0TFlBqB0,|l \lK2U]1]ѧDѿ De1HF'wֶtC%jQ U:K!/eG^сiQ0x;2`¤P@& \g@2Rth[Q)w@L C3(i:ῥC62ȀGXFVȨ4^"U::(8U Ep,A(a>eᖅ UdUtCXXy֑G=\FWӕ*[:6CP{ kV@91ekيfꁐXt t*B&VbE9:5؁m\B.`4`GX9'# $b[{38+ta; "Ti@5$yሜG 4Qs m&[(Or|匜e$0F0.Q ` 'Ubare2v>e 8BrKQsLЋft\c ,ߡE4Wfhґ9J݊E= lR Gd2 UB H) Aj<@P}ld'%#F dh/B&> u<#+CdֳRRpESFCX@\(Iq~ #H"d8b&vt 7<9 x-EHSKX ]T&ހ 0FI`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴNd3~u]kg{IֶUDn S~w]Q.%(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>'@(.}Cs0=3&EFuv*@&[ H`AꨯͻY <tE:0"N YW!W3 ˈ.A#P {ؠr?$ " @ #Q!؉kq5 J6K: UA ;7sF/ dpUsk M c` gPйYAHztХy?Iꥬ&/ {(wPeig talh'ȀaruRC̺A BJDOs θz X؉a99 DA*qh*}8XH2;HmO2'R0A@j | NL4 P}(|Ǽ(`.w115_[yk0-L 2NwDؤγtPT!X1 ˇ 8M,N]PɁB 8'4Ḱp zr#<,Uˆh˼: }<ːL(p3.h @S.ceP"-RCډ"vHH)0r1?4NˍR1p(#PMMJ?R*4 Rq* `)iEO ހ!.2McspJHFwX(9gBb0N0wU|P x"_`dw ;yEY1"16^dF=բlG/yI4Iqdb-t+2̽@ PxTM 8tb؄\[[ȁh`G*Ihdjf3g d4T3>%1pͭOCB0d8Q|CP5mG@Jl CPPcX fhZ+Ovc$ڇ|h7@7T=T^<>2dvh`F$MP`)d0N0M~jn;XOƬd P2ɠHPLQXbkiʍ ~Tτ(|B0y^lf8ҨSГi\BAE&Þzlœ>ó-oЄ!@xCd{@YbTfE^n9(ƱStd @}Xw#}pzpw`v .)3Co/ u`yPP5k$^^Sle|8fn[ϊm [Vy@MT#Ai 5leAof=qv#oˇd P)7[ .(rqw#B!Y"xȀ|@D}-wŅ_Çk>iE ĞӼ}`"nd[56c|OA >઀;zgGf4 F p?C 2>y +ۿJU~4Ddz0 e3?SgӪs\mzxώ(wxOͅхyy2+h „ 2| 'Rh"ƌ7jH#tF$ yɋr9KiД ;3>! :%> )"-"18#5x#9GB&<#ADEA I)dANBY`N'm!č>AANp Uv;4@:(>mÎp ぐР&tE5GhCC Y*Wmc %Q, A3Yn:W`d@q{ΫB="4 j>4p霣NTq'r/ԃ!91qLdAN{#N:LC:L0p̥N9BӚ@!4 -,)j}¡#@:Dy^wJC ^(@@.^i7P>8 !ApLzϳ9)zPXADp(Mu OtKӇhr\goB@ᚤnA3|i(?٠"āf?(< Cc"Bn CB<(}  aw XD  T: v8ACmG?(9y.e>s7 s6LDA6 Y!@BcU`'ZLqs(ЇޡEpы`cSV`l 9 zCO!y5^J= l?qk `nbaJS6 =!AhQL Lc*әҴ6)Ns5Z?L2(; cp2jBz%UKmSS9 1#@;SSUgO (՛⊐&qBԊ(3CP >` 03&&nT,%ppEiʉRDI}E3xACQUk[E2'>@1 rqb\i>4-( iD#0+wh|1+D#8գXȟ ̑$ǘJ·Q$S| MOr aCEjPt>1,!93P 8DN/hON2;Lfbx@ns`| 8/p /!Hʒ\WQ)sH<N$7-1#x"v%vxMbІI|嵋9ꡐ͊J^f7M^%(4m <X|Zu!`~A\! !Πa1UD>AbQ9T<=,=hVwía%VD> H "B5ğ@E9QA ><4(TlB<<B0kþ>OLY0].#363>#4F#X1$%$AT!D C2U zLh@:@z|C胹mXC9@Fp $q\c{;~b4N&eVe^&fZ>C>0J>Ȏ`C090AS@SU@LV&>̮|:W`(L ^]6 0 m,; tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]k(tL`‰dB]lDDBNL H OBBI*CZv(U'*(Wxɑi;XG!D>BYePfWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 )EXA@9x;;(˹ԃ!>ïRX@B(*e=iL` مs,)\AlE=CmOhBDѮD E l<(A$ChEm}Ga)KN<}KIN,ҰvC|3ӡE>=ElrjJYU,B+~%ld$sABmY @+8]@)&<Bס"ÕJA&..6 %hN脐`<VzD D`@<[BL@A nI%OaO0^M MB\PPan.FAεc0HĂN0\kBm[[UAHa ģ.E!=lEXH~&M1kp)o:<0 KdFIJ@pP䚩ޜ5 4;D0S\I 8R:<"@/c4R> H'2p|ztHCmpfEX@A|&rP|Jɒ$fXC~$=1  tڢ)U!sE쐁\.̍@&'2((*%>X@20031*MنN 1fQIc^2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH<1? `G@lK[Kf"5\p1#L7S?5<i.[p:E,p@Zh@VH&|z&׹V+o>$2rhGoF$+$K 8 8@ 1 Y,%(CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:X;h 1T_7vgچ"kKP> ESp!D0NH@NzRk1)jT[bMFHľQć (P1m EP4Y^> hH8Ŭ;c>0 l̸V%he:w' ENHXqV KK pNOxQ;) TP;XVhWh7۩a,Fc<ZȜ`!)C=hiĆgt7\Nn>TtLY&Gv]"6JxL EC'I*X}JkDdJY<$LACl"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/S C>!˃ @9jAo!CAÒzZ4K'^dYA ;J<1\ 1#˱$ ٟ=(ey'Mm|ü /DLûT=dAlLstF PPDص&\hΜ<`p WO|p8 N\=F՝L|ZVD^~CX@̈>B~:|퓎q@ݝ0&@,4MӠ8H)DĻwzȓ:(]y(0;;0F!!Et@w"3x̋;y ܧo^y!/OS\̗N$o;<p(PS:.ц>"p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}>  O[{%Fc }w E-pA6m:0o; ם+qû|u+GzꞝFqTy@RRs6y,| HwlA %(GA4P$3B@ CiA` HJ"@OiyA}jhσЋ>O'"0Ĕ3 uq I),; &BQ9 0+ʋt|J8*x.ڀNJ{)Mr=t]v}xWvvR2 }>`aa@NԑGha4(n ɦp ̠9 W]|1Ƨ'Jzק20Ftx " oxvؘzΡH/(PPv2j: CVèfQG njAO6+, [tI@ iǭz|9'pX y9믌&0w>0%  Dd'8hFu;8y]EmhHTL: } q\1yqw~]c( QߪmA+S> !0UA ^9A~!!ah_;GFDH*\a$&x(2v<mBxh0DLg'b}<;v%h%.;@'N 2cf ǙH, ]HX|/J23E |s#@B;@ c:}4<)#6i$tCPF`o(1a؇2d!"!@F2RzT"x1٠S $:` #߰X'{Gp brE_ALZT @&<`FaB*A!t'θ:4Lhk1LiZS9N=( щ*V3  y;J lȣDpEc0 HF!q"9 q2> MhnIIxBy>.1N C2YQ)E鐀!sF8H#>Qau:XFz,~y#'aTeq́`;b| r!`E;`)I51e҅SzP[9K (zrH;/€cvy0_lٰz1GIAv"5JQ8t';p7-dH aP<a@ E}G`%QH#!F5<(BeQM8_~WϵT,L EdX:hE(`6@>bF*"fv0P0:##o;"#H {䁂LO@ͬb !B*BR" ء@ TN@&#fb³)*xabTZi^cj+ bX'*MJƮS:SRpΆcJ"$ޡRma.Ρ(@$X?CTZ/&H' pEPk&R%, CD B AìbV *BuQǑ5n)lԁo,xv dT1j+6@+mjȫ(Pʬ!ì0 =C~"@e7&$nB&B# a"JB" ''ȃ0HҞzbbbb" 08I* kafIZe'+L-Dr+42"݌'()/" B<1Y $G[ٌ/D Ԣn)ma$"Kª$!eCFR-?\%ljr"/.2"A0j6P' pLI$qo'L$6s0 (s??@;L),Ez ĸ6qd"T'0@"b@)qF FA3C#B2({DE/2$ *Rhb3K3%BZebO e؊4ҡ`B sTjރHcG"`? ;F% i6;bAH)n>q.^NN'lBz`G AK$Nc:'D,!s//f$!dS/D$*O=@>Aʔ'RP( 6RRաT"n#lP$P/2$2Dʎ &*\BD)U@ `aVa'42Isa#3*@X@@5c5U#VdGdKdOe`a^0ee%%(` R'pA?qĠQLciViiif6T' "Nuڲ$ B7.dllmVm׶vܥi$Bk@E`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(`Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvThJ  B `k3 `k"`#F)xh z6@Ge$J a%H%jg1b32|V0n؇eAzb:kxXǚA9S*wB/H3c k84@Q04&/΂N%08γر "◒+ْ3.tNFp$EZ-!$A0h٠zx"$$6a@iG A""[E* ԘMԀ$]-1'+Ưn1la"MR3]To\fm*513 #喩>1jJK–qI a/?ٝpb +΂EL-G6::0Yٕ)WYA5C! v8r6KM@A7fbJ[h/ڨq%$CxΓ/bb)(?@ #A `'DB`*@V 6CF*`c()gf"H3X]RC@x`c(/s,ߓ)0M*C:t*!$vwjYv |&B| a"Y@"r}'v}CbnF`Hbn߳ATSЁL%0 A b1`=XJaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0th rK/[ ~>*y}?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K Z?+Ĺ;0ߖH'BQ2>h?0@!|)3JZQ TYFCPvAB  MsP.0xeQ@=P<0<}82 9t +!@|KN[B"dHpmi}#)ȣA#@B^;E;թXcBs8h s7 mMɪdqЌ}Nꆓ2PHPY$(@X$BKdi_jN="D  E BВj8d>ʰ)!|;(+TMfEמb29M锗F k)2 Cd\ H?U^IAv^y$<8{=ϛh$OԣOv峏 ?yONy_yoy4sc3OC\{ : d:D7A0/hBDh3~}ЦkU$HkϏCa#@:|4f] 2Ρ>)%ߞޑ-u0QH2#dG; P|P €s\ Au{T"$n{%v:ʹ@0@ B!Z݈0&Qn yHIO@D ,7R 5p3_a6J` NB3}0!WB )-5 Ȓ8o>8Ccq&80 V''v]mzWXV(cs45B ^uM/=Hh v9ԁ@ 7 ps,9ωt~Oq!P\򱁠dh!A'K*3%R6飞>vs#}{#!9QȖs򨬄 $zk@σF9aQD-| Av| cxt9Y:TN!juK|즳!u2#t!;#VyT,tM]7T#"f !Πd O:P1mO=`QDŽL@HHPE7dԂ )/_:Ghh U$?v@H}` ,!nB(Ļ|GB5VBps}w> ѡ2!`IJ/r@PMPXf< ?d 7N.#`Xf =#@y NۂWP5 7tnRWe| t4­fswel<, #TLOeJ qS)\:sMyϽP>G!_7iB8tyBgw Zi #rps,֤(=*W `i W8zl`ӭ<1bxj8ovс#w|{ߎcg 9@RCD Hs\@XA(YJ(9'E;Kh(T˫Pu!EZ!e`} ?(PJ (<M&A1  P aB2[xф ^KTCyMpa_j s8Ma֒A8D1Tsb%>P'b 707cdT|Rxg&opbP*6([}2%1&Y5 Nmd##@#P 0(BP*n)vnnq}gPrݠVޓ@#_I}xE "gjp#cZ aqnIPt IOV<)=tY? Ir@:LF1$&!p<4Xj)@V`71X!P ED)OIm7!91<~1+`dF9n}|ypm){p> 2I6fRh#{gCR1ѩ"ige qwj,>3(5p p`%&֑mo q*s=fS@[|Z@.v+0L!DcCmM|)4DCyXR`%&jqP1rZ,* bySu 6 ^h2-@jqqzOR% oч^h7(0@p @ : j`ͪ $'PAH}ͅb0b`gBxRي#7W`zC($#:x p @%#L P S) aUsך S!D&@ҩwS鲧ejRb芭-`؎GmjdM=X!jA#aI[>Z0 A&F+sA` `Eqp*I˻U>g<8 `Hś !644Q̛!MCŽlڑJ4k狾髾_&ɾ5ɒ,{7B | 38^|V2Q:@Jeʃ7H@"IOy0 j ܶ2J  ˨Z(Az"1z"Ggp  ΀ =.z nwQ}ؓQ᱖GuRĮB\H-T|0`";O-MxHN{PF#DUA0A: "V!0 k(ff1(:0P7q">u~($G~5WJMw h7%ʾ!pM9!>-bfb4+Y!߿AW ?`2CvY<8 p09p#CQ0%A9A7 a.:_%0pv@1)U)dy2>,w`V0@L_;VI޻ i"5M!l"56vs3A:@uc-谂qv:`7%&y738L~D"`*S)2+i!S֦'6[ACā>. DA<w\PhPaJ -ﵙ0H, BP*-vU`0)vY:!*Sfbs=0P#/qY[X-FA Ad9D66`Vz0TJDh9)i6SmBOEjQA_;p @fRָ:< Lg ` PyMi<u/LCd7!puzvAWOC A+= rДj v O=0ea -/c_\4e4vG 6PaCo xf*%p8'A!O;ɫPPa:} c'ψC Hǎ"y'A%`ZaT/]̓SBg^>cH%ZO^=ɻpD Uq_U䭼(O;Ա;ayh πgl =b~pV6=*L (! nO>vƢhs,x ڀ{@ V/DG$DOD1EWdE_1FgFo1GwG2H!IAX|"S !@v!v,8QG5BhR R!F@U$gazH5L Çc ɢ}9"辊Ό}xv-+hdsZe:RFւ@`g jI2 2QT @lq:G C2@O-+v,UWH@X8퓠XչAk6ոd~ i  }=&w>-| Ī>f'IY!̀{GE7HynN_ߙ@ ܧ 4tO4X%S3$`'{5 !":"yu} a 0|2ooZޙw$w\C*ә:#2e瀶GyрtgQP B  y Q0"*1mYkd>Jhc} k0})Ρ \p A^:48Ha,c j|lc(eG$yVB@ 1Qa! ` ;p@% H0 EJ>rU&gLPMAx-qcC8*舢Cq uh!INvғe(E9JRҔDeԪ*$ @e\` y87_b5Eˑ*D <)v42Fv`5Ԭ(T6]ibƕ؞|Ê%E+ÇC@>{>a:rth" )gF,r$U@v!<x#SQctl8]s#@=:SS&(CGH+F7W ;h=C`ϡU*~pkk.4T1O:IGNP1j2 H |.Ї{hq>&p\`(|D14mhF7яt%"Jfm !ŊT4}G q3pP!%xcjQ =Îc-Y 1(9&-j1j(͔Q@[ cvpRO)(P\VZ{se}ʤama|L;#Š2 ՜&Kn`m9Qɂt Q^}"Uݮ-GQVvH ѿxAD6>H5FXZjE^anE4ͅj ZV1bNWzֵuw1d;ş vl pSn5:?cAc%sFD9p($`ȗgNJpLC{<6ņTt(Y:͛grWٹံ/`G @3i^+b ]DD/Eeb~U$ҝZ`dlNG Vв7W75i " )D8ܭR :ȩw(yh;9ۏ8 83z{sP'rc8A9ȓ< ؓ#3~a 95sy,zпY^w0X,-./}Բ0dШOz3곈a,z Їz(Bz0U 9,PĐx > H=1 b 3z* Ds֚%3@0YE‰/ J4ʘ@yPZ{U uА7CDfPs"+ c ؋F #}`A-^x[xAӇwDdTw0r% jcn‚cP0G`H@# T-|;8u0  ezy:b@dzdw@ոQpu<`Ox/ڇ Y \#HDFDw9p(hFָ> B2jSgdÂ0r =a>0˿$L ;#}50xHI҇ 3ـ>Y PH3p#1d xx>< F  _k@t&8H MɉtS` Ca\Hze0I0`]zD :}9uPNH؀r>M `!$}P`XS9><1 uڇX!o8PuXT$W* Їg8FQ A1# 21xXy VC:/*bPFPU`:}OPԍF ѣdS,8 ur t1,@ >sbw=P X:LMNԼ)JT0!zX@z`O}Xͺ-[\]^&zGVY9i XCqV`Muf0˺4;nopq:c%W:C$d<CvtсFs|}~=sOc8zB1(:n؋،؍؎؏ِّ%ْ5ٓ]@ٕeٖuٗ٘}-ٜٛٝٞMRٟڡ%ڢ5ڣEڤ%UڦuڧڨکUګڬڭڮ%ڰ۱%۲5۳ E۵e۶u۷[Uۺۻۼչ۾ۿ5EUeDžȕe\ǥZ}Y%EUWeׅؕBץ=%%EUe^uU_%5EEeuߓU&6FVfv &6FVfv !&"6#F$V%f&v'()*+,-./01&263F4V5f6v789:;<=>?@A&B6CFDVEfFvGHIJKLMNOPQ&R6SFTVUfVvWXYZ[\]^_`a&b6cFdVeffvghijklmnopq&r6sFtVufvvwxyz{|}~&6FVfv臆舖艦芶&6FVfv闆阖陦隶&6FVfv꧆ꨖꩦꪶ&6FVfv뷆빦뺶&6FVfvdžȖɦʶ&6FVfv׆ؖ٦ڶ&6FVfv&6FVfv'7GWgw ? '7GWgw r! ,fBBD^^\jjlnnl&&$..,VVT 224JJLZZ\::<**,zz|bbd""$>>@. 0xzfhx$ bdp0h\`䠢xx  0@(:0dRlTT@`ZغʔvVlblh@$00FZPNZtNt\0p@txĮ~<6<ΰТtv`xLDP<08  ¾Ƹ46@|^d`̜Ȧx\X@X prb\`nfHDFPlttpfp0@PP`np <<48:PԺPXXvrx̺bhd\tH@hH:Hl.(886(Nfbxt80L0.l0.pFJ@`@nf`BH@XPX||4<<$(8|zptf|p|P@~*$Lİ:$УKNHJaDv3|{Wi˟}>|ϑ2w/s"N%t`FS<#G߅fᆳ:!>d)QTA.cQ4hЍ 3;@ :2&HxFAHn[SdqÎ%$-ښACQ:`,Pp<ϑh Bx>pNK~OȰN=tPH@Z|Oe} ϲ,@@t>H,:3,2D6pX86k@;=CbX"H C@B)=sںM< @BC;F#]MhE@Iу2.`ψD:/j b#:p"'3v=9=;7B\ă7XOl{ܐ::' >? C=O Q |%"~LB#!$ $%VP |C77 +1AzP  {$uhG2ӱD ,@CHU[zB BP<q#=q t  $ h"J>H!IHA?SrI!Ƀ>*`Y%@ass!wp'XFđ$2K@' `ŎGnyVWH_ L j MB TXL%g@$>1px:&]0jV$`A$ DH@pm*Cwy 0)A"x:y/ n J@wZumJ\""ykMϊe2I 'H>܂0u\>e="&ث \=`qh@;Ԟc옍8&zk}uXP@k) H>ĨBC).v>f-!P O|  t ! )HЏByjC40!H [z)e+ x!܇L  eu8tT'EV=(= 0#` 77@W5@M}5QCg A<gqH0|=G&!y&<%10Sf1R`rp+v02> h_P=@Ѐh b}~hQ: \G~%P5}jl؆0 ?pU7$3-`0n9e˕# PvgGRE'Ih$׈  Czh*`O !P  !9YA$q'&iyM1 0|q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕp3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.#4\1F])"Ҋ( !9Yz|t!0q!"4uCWcMc S,P_ $00[U"08깞[xq$גYYsLLW` ymP@pNI`j왡Hu:P$y'P27v)Wmrwe\2*_*_ș:DZG̢sR>3 .gm!-*.` r` dpr:}ڑ,"gYP`S0֢qt]`waH% z  +4Jlk[Re6 -40wQ0O1`dZJF#3@hj/D?#u\" gJeP! :蚮:,zT Yq$"AV*(PO@d&b*fڰzJj$ 5jr8 3!~E¤ (67+Rb@a-{ 2;4fc.gZЅ( 2%"]b*U$]ǭQp@>H5ZqT =K͚"#F#odv aHBmpYNʵ~KHGP[y}Ya& hTc =x`Q@srm @HZۺupg$HՏd#Rt.yA VPv7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 005$6 Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR1``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLKc L` 5a"p@Sq'K>;P$AӯEBd9wUrcFpgH6$p{`.pG"!7W9„,G |7O 'o^†o;>$ a>N;'o;LϢw`(oT>Y;z4>y~rtV&]iԩUfkرeϦ]mܹuo'^q!;tvēC2 @عѱ <#fȓd_D=A&ؑS9=4OTH{ o:RC("Z,{ocB`׆bk/Pc'v'PY1.*AJ*A>{K0sL24L4TsM6tM8ˇgt Yd x &PI2 p(bH2Ey:Hy`s *Cv[,}P49g -  v"IHp"ԛi&N=}G )cz/ @qFl/ `0oz%2!J̀0[Ƭ9GU]>Pi݋t"h\hva6 @b3xc;cCydA@%u*  |bWJ5U2d{|7|yF4\ȏ`C@Q { ҩeBs$%4Ї!!0 Q 5nc2Bz@ zpa $@V$Izؓybh8=QGyBH@ P=DI`B`T P3fM!cKKJHU;`  &T 2yOY "4T`HG&dc(lܸ@KjpHjBD }E8L@B Ld"r9{K%=;!1yͷs2vP-YH/_xc!uIUn=th]WL =2Ϩ /u8-j9C |LOT"_yy\` Cr(HhD@d@ֱ I㲒wؿq# "g@>vPI Ԟ IJ Çq y8` |(( y>>>xn | LhA>CC@p@B , ?=IDci ?zRwX xsNY@y 0Ä(:\" 9f`H3%;FIDS 3 h û ɵ0{0yp yВvX'Җs@FǸ"w0CzulDžSчG1A`_ FMdQ̀O YR4Ea>8sT;' zd(}Hq$ `GQYZ,[|\\f SrGx,%Ch NC5L|DZ*ȓ8p KA ;8ˁ0D%K4x҉*12 D3&" @BS> 1AHbPO 5k:0J$.+ax+C`˫`ȇ zDj, ܡoMPL `LQiKy wKXLt!P FL9R0t e L܉PhP< *;=C0q 1ą6ͅ 8z. K]Wj  y̎e X$ $ ű ]k#vw$$ | 6HH`#la*ځ-*]2L%k B8yR"#!'h|aXY1-3#e$%RHz«с1@$ S``MHe*e4{< 1]L }Ӓtզ(֭V NxtVi$N#Q䜈(݊KPHsԁI#tx( [5  h2Iѷ4x xyywh$ 9<= bP*yt+CN!-B5yȈiLЇPlXgɇ $aP S@|t P4 ]w 쉟؞HJ{e\t0ǒ%1 9Oyi[-ok *qԐGQ+ą" ۷c :X3JKEuAHV.PT+`qA%JQ$?esKГ[P/:{tc[\B]8EJy8l#QyP HJݯ@`}( ՠĐؐzF d]  XN5h߽=`&Ͷ2| #xb`!!Ww' F`ya!zOf5PJ܋|Nԟv۠+v"P" M>5LA [e5%"ٰh@DQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDxHa]=cb'u(05sneWY=.(Q5!ntPO  ćI @#Ij< EEdλvwP6\{B!vJPI&yh ʠ!eR!&UhɁ4gpB9mRF"!""#}!&4C1!jܣ990% PHYl-mr&Ou%/TKq._s6Oy$PK M`zW"h*;ns?s2/MDAOk3Y^[")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u Ё]2 Obc$H6av]v᲋⬉L^#_n3 KW 1vw tjwvIݘ3w).x? }gX& kc|h呂0Ӱ¿,H  =H&`efՅXHa3]y?Q ]7 s0(/@xgx77Q)94?$U ?獴 8W> !}>iЬw 4UoQ@3&5"+ 2q[AoQ|VyLY>RP#}04C8Y_˗|PanXC "@oh8!~J}&Sqc{V^ifN|Ҙ$W﷍{'wXg 7up^y  |ܽ+h ‚Kxp%|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5^qyCcfs; ~"]%ihP;jٸjN[t3BBChwKAJEbrO;ޔ@O\+bXi-B󧎎K6YCAPr"%HT<쳞<8tOR 5I!gAcAe @Adr>jUP+& p?<.тIƒPGRy!xGdLFс-^)X # n5җIF%#-4-'r"iК,#;>)$N@:}^Ep oj)z):*}BqB", 90`CC 7 N3A=$4霣T`R|<2S9E6D!@Fl[@:Q<$SO8Pza u XA2CX nN8"Ԫj==\"m:P ꐽ V0梻VTrR>+[F Ѐ >=FC=X @(SG>05d]lYH9nyk2_r,a#"tPh"MI@]L7/ D7:k#()RV"Q#zXp$2~ꈖ>>oCbA8G!vH % 1@ա"M0`&t !7O!ه>~spQ#gd$"@0, n+aY"a2|~< :$R`1i ^bsl 3x ^A&|dr$-2sC8;fG<:h@ypc(Hsh (<5 Ft 'Z'8@қ_G"P`>f8rx`WBc&%uẉA ỹUp! Eȑ$;(֓+D9d"F%Ta[AIՁgDCfA,HZc.SU@!p@zTt&4:PȉQ I׺"Dם 8v`H TU Q&&d}ld[Twr>T^'jUIDI!__so<ɠH  B`e"ό4ךA&qaZyVk,2~0#,awf8s&`m;LH/` ^M ^Aɥr(@xh Cxr$V&LtzifRV^pT0)p@(A\̢  H (a%FDLq}L$z)ƪ}b+LdT1P1݋ߑkrd dY`O9-s;wpd7 y|n$`Bqq,A 9Oo>r,IoXc [Aaգɘk[>BM\M0Q{ƛ*ppq7-. `/k6HQcM}T}vD@3eHK#ϹYlģ Jpp?65i6F\1y 6_y:a<[OH>,2[1m; !l#ʃiY?xd ߐA"G @03s7NB !3B#CFUG!LS:h)H yԦdΑCz%[ BP>vz݇ڇ&V6lBK&@w<$G!=^A ,a䃊`\BD-5FCUD39A, ;ަO Oў Iʽ={ ;AY_A _!`%Y,MJCSLԃ;5C8`; ECZ}0 r ǘDaD ;A_#bMPv4,-Zb$VbFdB >lH4;(-+nBCXJahA4m @4B_v8 zLA@;XXPġ+bD ! `m@$AAGzC(<;qG1" #B@ԋAbAjmI䑜*GGЌ<\^aE4DЊ!@g%H >d1h7MDHc%DZY!IJ8>rL=CB@m>XXM:Rt2@bC 6m] nԃ'5EYbdC]" !xIeZR\CF4!̋I2@B8SEXiBP!\HdI>J:\! Gh$SdHŸAHn afY-DzGD8CC$ɘ,o9 }abOƑT.I%_fj_`H㡠mX'mvF!#Đ^`)du ;]EPChyL贅b&R.fKR}zh:&CT&eAH'g#yzZ,:XrC$()FH@= f,<  W4(䃆gABGK*߅DٽmIiA|niE<& e,GOAK!;<-Yi&_BܟA4@E(ߎ a;p #6Dt]ϢFA!NA4\*)% XiZ3M`E4(})5gɃ;< 2m#FhE4a~ V'(f<؁&`9 #n&>=+:܃((Ljr=:ؽë^Zi!;>8@ރ&8?ĞP(~GRjޫN>_V *d=p?8Cҵ]i&x;סPlʢ^A128ʥ,=$,;Cޕc~^O>@V\!Ţ,ZEJF&i*C78Ì .&:]`C^!5 RC:>@ r.Gx@*[泪زJ^#GjA(YnBHH.vw7heFÍ$_: < (/bhrE .xpZҮE1DBZ.Z<8薘B (Ц=FJ[8ӜLC><($G`oӟ!.v E/q )5/B؅b-|0ȃx!0fnpEp\tED h~%r;, Nxi oyl T~psS~VP \bS1-G۸p ZhT->o# $G oHN/wh``BB!ԃ =N⦲*2+kP ȃ^C]aCACIX90`Y@:o՞aMohAPX[-/ g:ZPtE99;DCCW"9Xѣ24 RLٰH3Lކ#XÌZ C2X%A,Irdv, \djTĚZbH3CKFsnIAOTF8!_>8Ӆ/:ln¢'%{so^ӳT>uEו>\[Vs3AȈv# nv}[($5(a@XσZZyA%%ׅhT0 w=jEP9tSGz:dȺ9E` !0l@ܱpz 91U7Dg {B 7W?#`[|-ĦyBpC#@X=l|1\L#8<&,C̕@Kxo=:p;7JD)83#F3z'@#!0kD<1P1պj<pDE7ìxoA`H7&HD E (  s֕XqÃ5tjg>,r`F'\8~}ycO9^/E 3"5AD؈w ZT  )hF:dH >!`hN@Dމ`wX;tb+Ƀ/I3N0!BcP 1WoCu[6at;7/!:ӚosLz0,⃃[dΔ7^Z'p ZʮrZŧ*K#a`Gu 0҄(U a PJ`XLd]XgehjlݖnpY HɆS(X. L5Sd |Qǂ`F0Iu^y5~%-MU-[d65zG`1 HeQf2euޙ}蠅#5w-/t#%'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGѩ_rAC=Fm9'ݷ] A-0V2f;~k'O4`Gyqg>i zN.EAIӀaw4jZOST hyIRBLi H䁎-S@Gq2ЁQqkep`?LpK D#HO- <7#!IT U7.}IBP<@j8Ō !E&PQSefX{RKA& tLTW0Ѱuʕ%-bQt ;5*I*{dFEtHXaGA>^(=f˛3%rғ|*!yJ U;[ 蠣T'42*)9kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&9 vL<ěPGf?Sv+"&ӎ8"EG`٪*L $G @KHy *ȀH)d Ҁ}X+ 0O40RP*_JVn6j-g[jo^ZɂT*!>ZBHĽװ؇LG]|! 7BHjLt׏xTc-=1֧ߡm:!#`%}>쁾Cꐫ 7 $Eҡ}ȈQC0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_xyTTx]J! s@|c/|M@l'HKd"[b…:k O$NFD pG:$(#6 HKE  lijdZƏL&0IΡ! !L P 0fk( D"@:@: n86nC @ ‚ ƻb k !A6` #4*R-@q!)(R p-H!@:iQ{ cM!(T !LD qqȐBNgJj$ X|_b[F Q[k$@ A a-!tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'Bz!n%l# * @-N$~%bMba c&%!J*N bϖ!;!)JP瘔b  "((H<  XL. @BVt@aRS11A*b 3dT*"SdR-7NHR@@] S.65[N39>_fb!aTS$*5 -4%P!`2c4ܔP>;[h0O62Ʉ(" {?@tY* P`BxʬZh%2j!##LH`%&I1K4Ũ`A1S> : s-c;#AҒF,00@OH>L$0p!`emKkvIt@ i! Z@ҬmI !@ ⏓6eDb΁JJG&4R h3 BƐt D!*LrìHRh֮pAA$ lT!@pr,I=0XU^硝ʸ3 nT<TZZuR2s+ a@D A3`j"5Gbjkԣbm?R<7 BQm{.14a8, 끵ZpkQpo[[6y 0-킶,ܨHQuU\Z(V:bB\B A FﵤJ@.VFII3),5Rl:aff]'iAWPG6hKhA.! `A-;fF6m+!iP^D*I.F @ !!l"8Uh!ފr_1STc } 6&Dx9B)F>R>B|L!Pp`B5l R,5xcI/7YAk@:Do7W5A6BN,e|W TinvD`¸r R"wiGX.aLaaIu2Ep*qG26-N/V$AVsp< A@$ D{S[ 6L&Z0 $@ fXvT a^O2{Ȋx Z8Ձ lkn$P ayYl tS䎝(͏"ٚ*Ğ`Th&P;vKlCh+"b6tE@ *m5A t)c$j ĕq)Qkp*"t $ x9nVZMDJ! DZL6 e?$` g]:2 H̗Zjʬ"R=@*Ρ cxWjH//0#XF^)"@1RC{l#K:> cC3,6DdXC.P*΁LBY hL@ $?-Z׿ "cKC=0kk("Ȩ8F38d<"nz;{0;{6*$"F`z?>#4!"`!@*|⧇VY[ٟ@:ĠDy%AhM@AJ`F?zءd0RGTLUQ \N%맦PFn*.a'b&v@iu/sW;;HTPPN(LĄ@*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿ@!X'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.ϡ^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1XρƲ0K+@"Z;= $AKu/!E@Y۱DEit^OK~+i >b+ɾC^Cu6(_wbfFh OGx,臟_qD.!"e0@7ND!;.>NCX؁VFo;6MIi6֦yT"9w34P!C&\.ƍeT܆y(iH&7(P68 Fz2>G@ >љ:լ[~ ;ٴk۾;ݼ{ <ċ?^ZA#v$!]&@ːq;9swUq<@|A[A! Ll4*wرAF!\×vܕ6U3>s;P8>L8gv'v7cgF=CB iNJi%S e 9 d4<$%O \7p5p;' _ 3@GXΞ;XA>7jk_FtՓV<0Uՙ0y ;{>׻9v|e@ߨD'Lnfd>\Q#,Gӫk-!,;q|M[cuɅ#gdLbF@FWe2CFtJ/tN? uROMuճ +(hqF @=o d,{g6Z)6ٰ[=QOo%t<`8U.8txG/E. _uw;g\ VOߏ)ƒ&r!0@m<`Ll|Qq0> jDT q$+K7 &( rj'C .L%0-X@Tȍ 1t|=PϕqM 0Cp%lkfsݔ7יiV <R.Ðǘ,#ffW ΙvCa&Ιj]B jhFv&%C#K_ Әt4Mo?4HcWF4`* #l } w 9Rye ¶$ 3B)tm@,E;%UI Acj whc`wȕb>XԵ5# Q(VЄ-7=DU HaGT֑ʇr1+ZV,V>UrzdWi@Kwl.P$N*wms]1a$LF<ڂ iYR‰8#;e|3$;PvH;0H|,15y]RA x^]7G,PW#qxY[=:6wFt3^)yK*MH{4І<歯Fk#:6 f0f^tN5rNP ؤPZR | @ zЄ&M>@A5 mdb UAÜAR{0^ڊ7!@:tBA3!`;PPPؔd%)#JN1ht:N%%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST c9RY*0:3nd7ݸ,r}YS=̃!|` aN|I.*S>ϻx7~4>q7yaHDYV~钴KpϟENb!t\w!OHInja͛FTqQ+>gEb36t7`Y^SBE|T$ pFqčT@ d 9)BȔdHMDBT7&*A#F! NXaZj;.H".|p-/c54'eg*A !CdF $DCyrFpoپ]xGc GaZo~Fep A1BG0K_ Z tSd-i*~Bf$L Bz q4 0rmvtF|/nw T. 0Z=30[VҤ0OT!(d*fE N;& D o@K;аa>.՛ Q }h( 4< X!]'Υ1O1,$4Ϋ@ *՘E9$)^{^S.1뻗G%Zw,sh S,{%[(;5~R*X"|Ȃ|I!޲u T-c7;9Ki}nKv+N@f%SG`bk/ǔ@td@9 &F! Q`_ٵ2,A 6PlSx{7(C?1DG$DOD1EWdE_1FgFo1G[M&=,(}6SE$*Au2hv䙀 ( 50ˇv.hms );@wt8v  qwxi6݄r{Ɂ`ǁ'6ӸpE(|*I+Lj8,kW(&t<}0,3Ф9DqU Xe}tHH̴M ;+U@yPss6v"jh8JA[qU_yFahˁaUy0@uBeh%Ig%Ԭ}W!Lz.z@@CӊSP 5h8+` ) 9}Ոc^UՐFx#LFys9iwb#v{+>?7 t7lF8G :&$`P;tI"Z!M:OMk4UU@ ԡ|C2!ATI EmbLg7 T0Dr岘41]A#FId&uHd:}p{@JGFmUeP>aT2Pn |`=պI76>(r7NJ'qU$ðՇb[_t 2􁏒d `Hq .7ekC@b7ɃY,FYh@y̬ wXNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW  ((5>jH -r/yK:$c&wМDy%b}9EByҕt7O<  X =e)ċugG{ˍrQfB4"P.'qQI`s#?8xQߙvG|I5"Jx-| .o e+}E?z#ֻJ&c0} PC'1.}G˄`5d>ltIVFj \+оȽ}:ϊ Vèo8nޓ|v,)I "Iȣ-IHd Jٰ 4 6y  hG`>Ev耤x y G|tr* op@DlTɕdɖtb5,upQ5L.$ VEƐ苗Ȇ; /|;Ph Jj t˷˸G!@v &Ȇ{p{U Ԉ>2}p{@{0L~cd85ȼQȭL1$8$NK5(88Ev@P+lq vNhA?<ڱ|H$ί_tN Kė|H(%;}x HY>x (\ РQ j#} M Ia9$@xo(f 9L o4"5#ERlK?Ȟh MpR$Cz`y'(J$|$5H5͇fpxp ';Y"|h"Q% 3M9}!ׁ|vS%PT-F5yDKTUUeU;(9yq<0  ȯ֢ՆL0: '0ۘbX v.K-Y#;1Jaf\zv}0T:FL цǔ#hM(EhA@ ևv^Nhy0!9eЇ{s ,՚IiPike  &L@yxn@w}`U(cP$= ɱLnjڇta-B_l*$r: PM|@g}Y,WqgMb7,CfHE p}p`,hPM() h،`lfȖ8jZx>0yevp y\T Hb鐊k_Y), 脀FK( <11m}h><9KkǐH}o{8}(|w&H8 8Cih+z؀tn hij &.8"رÐ?~Z~>LJ6SGutۙ탇,!Hz ЇzȁDZ _ [L+1r9ITuI$9|DU:UYϐ :^q}HTWu/:$=X  t_Vi,ʣFw$f @y>IWgW|Xy7C \y˾5ޅ7&'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF ЁPӯdN+9Q9˸O[hN/wXˀp'y/_fġڳt !)9Hw3Ģ{0"Lp!ÆLhj_sQĊv(rÁ$?l$K-bl)s&͚ - V&B@1s(ѢF"Mt)ӦNB*u*ժVbͪu+׮ Ov]𺰁 Te)^Kn ͓Kwݼjʓvޥ /exqc7eJ>re f|x5tF.PҲέ{7޾.|8Ə'AݓmSzC'3TcáWI1Qwų.+_j~-3OdUe CFA8uVMP9Ps,]7S r#X'+آqφ-:d0A܎ޏx`lB~T y%yҔ5yL'Cj*4ЛT Ob05@/"2ڨBi`3 Nt<D`O:$Vԉ<g:`D<2&\-GZ-qS<{Ds6 {#;D׵|<ꑵJuz=A ȣCS_ק:P>#; ϥts*>㌖Cd ,x P$)A\EC Q<$|$p;fc,#8@*n  6vڡA+nēLdǎIc(wKPL_ q %\&<  ?AL`H q3h,a4(G;яJ*Fb<"R40AAQ $c!H4 cA t60x/ob :N!cֳ;vS21(@2{1t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6PlϹ^H>x=i¾;}$9m3LIb AkZ6Ȩe# Xq}eef]Nȗ0:ͱ sy#q62ӛC=Rr PuJ53_Tfر z:ސ1p{Ap b Ny]!`ʮmE,|RgFA>$gm@+e|5Ał |B>k;A q|#%}H`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^:z$^ڬ TEhDfD͞B@=Xߵ;H%>@0|\A(:02!C \} TUbA` `C, a"x:AԊC:X?=lLlB@-7zĉu\9QAl<;da6:@SU ]^ɥDHE< Aa\-%ZAa1gḀ1 T}D8fBeB@HXC=:j'!W ރ !D*I$۪Ɉ*J 7$6'$cBZh"8+⃐;jp= 8?PCD=փA*R)û8bjB?rWA=1Ԟ) @FJ ;\cC^DDE^dFZX^dLLdM& 8Db NB%;,G> ,"B=F=8e]C^އ|̣p;x` AL;D6i BuI&EMa&Ie:IIWVr]B.N* 9TfA\f<4BmA <$;\ff6gnn`Хdf+u<8:b2f-#BX`nO0\B=B@f.QI~g"mM:BhJ!pb;ĉWZ0Lndlc (u(x_>4B=IP@3LlFZDօ<@=#Ŝ\?8`5), tnH 4:*ę/ }_z2l$t($I*(q"DvW՛.") $cB &RDD0*MQ0bɆTUi\9u\IJ~W$QDȃyV2+CDjშRk!%æ4$ ̓:|3NT>ŪCD@DXRaỸ};:jĽTH$yROkC=liBv`9Sce^A ``)֖_  C#zn ibXBŪܔD@ܭX<<, @0Hحؖ4I@=HC-톕,ےVfd'9|@0;x؂A$ H]4: gF-(ڎb@*ǩt-m-H@:BA n`<nҮ`u&b$1,>^J:l@Z"40uH:T>0AĪ3dfK$@ 4lO3T0'II)G=% p 0 @7z>EAD@I>î@>Rރ2D0:EHK_`HI0^>m,`=h@@i"6 ( <@YX)kʖAo>>)ExeWƠ#If KcJ\^̊,KjE q><&: ZBd[lݩwr:-I 41bZ>K VC. 1V(*D$S%eAd æA,A#rU͇!L:ۣl@++F5'F4s)%lC" H%T13pBpp^+b3vc;c;]r=SCSHvbPeFXtehvii7 sSLkw_{ԅknvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyy7`uĞ0bN<@y w`(raINU=bzK: @U mODKDQ|^>Ldrh𥕲9sT!tgmXYiGikAD%CDRloA ^^`,r T<\; 0]ZI{#6s%D,G$PGԃ&|>b?GXR6/a]ц>Z;RüW,AԈ ~Kn|R1D BPu8̳lA<D) ȃ{@1 +]΃}SNĥdJ>lJxt ^Iο̎VA < ӄ7>X@v}$C$YTI&]惩U]>lBp@}>ThxOA $!^C=TA@ݏDXcJ:ß:1'BbA)-BmDLKU#=0>)rUA׾i<}-(@&A|&D(OB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7}`G@!;yN_w#&}ᜀ(;7`A& n#*3p_ "c22Իo_)&.BLALA^* Q lB$>xqǑ'WysϡC @+|yp[@:?3U P*8Q%z@C2sO>|i4}WYnaYf"+!FI@`JTYoG `e:z櫱By$G1j1Ja xBI'D1SJ  @؁@l~'N\o!_MªLjo)J n1!%@CVPá*q7+i5· ´d@gGч2 a'/йm=ߡ4$g^! 6;!SgG,_}ZɒuPMP 0DRr @I@>gR>jPJh`s?.)`9*@2*@^  ]bHH#y$z}@b۲&Il䱉g 1 9/!@=0!! `B9Αu$"`<E7P`38`]QGDDH). C|BdD$呕@*H}C*` tH(Ttp G@ # c ` hB74CƷ+ @{r*ZA@+OyΓ=O%Tj4AP. upȀgPnGARx "5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:0o5O[9zYgVCx_X\Q+`$8N'w&Dba5e` jtM#C49."7K@>@%d:%, HHj\G 1_B tzpzYQBҵL`؀8H6&GVWWtT: :`•`zqy0c}>ttiZ}UGby5"` \h c!$0=aYaG2Q4pRd!9CL  s]4هjC&_%biE 7>W;NB g(OX,=!A-hAQɌOLtc€X0avhX: |dɃ (Ay章SM@Dpy;ʆH"Qah!#Q2> 7}u-SV3y@ @Oa} 6apBqM 2@0vM|r"iFOTBJ kݓ@B(AaAg$,؄@+ U|# @C,x$h(.bLJ0" F0 `C=bP "tp H߷guoDY.3}lK@8wdCNI+6PwL@\ C1ULStUJC ^Βݐ@3.>Щ2 G`@%'tϞWi>Î6XPCdٖ^#ڧ}|\B [&T>8@Hs;gR Î$<EC *Pc=K8fqqg4I& !p`F!8d$J(Y,!"N** VAp즱bMND*gM6KbB!Y:xB#@iAg2>g@xɰ $hPXa!& /߀0 H!Xa{8 !]ԅ!P!ڧ_#P*7R I"!| 6(@A++T( A&L &{A@P~Dޤ1"bk gFL *@j6 ޡG#!}Rh)pamN/¹aua`@`]*@Y> B#!`GaZ1#5r#[a3uB("bc'5LFA! (t0r"&@f3'xƯMejHF R@#: -և F|'4O#r-rOԠ,@g1"CPaøl af !((J2ha0>PƀD)'P8HH LYHء-F%( %8>R R!H@6+\s88$`KH2T2$ n6` # ಩>B$&Ca&v|2!'B4"0 }'U46/QIX8 $($@ 7)^ |FZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)`XeHtISH?j&bJ5B+ (=JI4Lݍ k& @ "La2 8-Ae"=´)3TLuP̸K f&Za7/軄& ^B"X.Bq:PEuTSb#`3[\Ȅ#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,d>ez6i=@<@E;Hүu/a|˷d#B0$@"wy5#p dJEnPs-uvqQ>a)%XuS">|7\!܄DN8-ҁB(Nd>83P49O* uEkZEAqLӁa.QJ7%q;">,[[e\PMl",1qIVu.>%_`{T9*sCAEؘa7HÀv#R.r[!xh0!p@ PReInoYnb2!&^ZkFgYy ڠ>?!]G?+s!4!rI6n0ҁW j ||!<%|)-1<5|9=Ad3vOSXyѳb/ BԿ]r_guKX#X8(pEx8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIA'_AP !sw3;(Nqv-]t` -z! *G` t:ǎAo^=t `+ByIȃ)ཀྵ@qN+װc˞M۸sͻ.Ny Bn,Au~\tt s%W(̝N|K~&Ö́ax{s"T}A -^AԃB|0= ($h(,&Nd(vNsSv 4dCP8P@ CC/Td5ިAFb .4>Oi7Xgȓŀ"@95;TOi-Jb~gOS!'褔Vj饘f馜viHE'YʑW;=9x+ —k7\ 鿗IXjA@B #,Wlg!FI>̾@ܨO=[P>`\8(?TPO: >3{6_QN_B`@P8{#>$~:_a(;DW0HM&;N ؜-_Sތ7G.Wn?B=!g砇.褗n{O< {K9c LE| hGH@0Aԡ$Q:6EQ2)7@gчt%QD恏y!9 *PDz` U;q )GI-vH ba2sdb%A7Pv[Ҍ4ʃq01Zd4S&\_ġ> 쨋 #F>Y+%f2Ur!r#Rz-5Ib R]z!8iZ2adY<:쑖͜ E@@C#%%䅃LgM% bg9x|>ς0@h`H@+QF4\ ҃ TGJT@@5Ct%@R:QĢpV! 0㮂 5gv)^ sHuwS0KcôbƮ'ODH Cx+*3 ⰵ!P]DzYX1:>PC#[@NF$v mpC %(*k$"G @=@j'2g|Qys@ NŇd9DAJYN>0( wЁF 8 @YD !pLs##O3: a!%K oPK$7rP\q0 k4/{w+X*pB8 duh='X.v8rAR 8Ǜ b-*-c,ad[ɣ]22 3G$''Q24~G|HԹq @fABŰg TT CP1) q=$blhAT/d+vańϯa jeG< AjHc YbPArrXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7 D}̍ Zek9.!P ;6 $ZȍzOpa-%f@CY (\>P(Yz , A+:M :@tu0cJ7y*M}7oHΑ9!cA`D@41қg>Y^x+EKURrg;qAH t&U=ST{aE/|v>r e!Z:BF1 K<zfʋ4)P(?2< zb}L hjZ[ai v aDz7X&Yd> A% Gv! %8 Cpw?" $Pg\E?@Av212W*e! PbK"2"X">(rS}g2"SR`xzXOJ )tb!G t i@tb2AL ON(L 7 Nh P AX(17e [F1LG31 V#;Qk".%6B&F!Dh'L4b}7сDS@j+R+AvDEj``-b- H\!Et*>5`Ej*% = `& `T"l.7b BBuPTwLe8**C@+e% 9}2%p] y:0/r/b,p`dÃ06c5h0 C 2؎>|cmb $*%`72=^E@ H22v5D@p8:v#t#+.Ep @ 9F`29PDΡ=48& 3!Ls2F -1s50#MWXEYܐV0 6m6AeDivӇ_X!GP8  9ZZyP ^82qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;UI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*!*O=؊t:0P }Wva\^u hxz% W!Wqx`X%3K^UY7^Daa00|HS!V'aF'P!V[گ0 fiLSGj֌A@Up%6VjKsjh y&(Ŕ 0Te]qMGdW0qE6"ȫN*{%wrSRvE;T+F {lF8Hzf U{^y^zsk{x?!:| K'q0[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv. !4^c?!'kb(,)v۽蛾BLO /~P0[#/b ca 0aPƫj1//3'ZQ0~j cP2“ 2bP. +\}Ԡ0yp,iПf` 0yus7 7c88Pܳ;"69jZC (2:(f||!t^*hr<ƣnL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#":pqKktIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2 ng$j斒V (!3.yՒpJEWi&@dk$7pפnբ 0`Y[~Vt%mמ  p-*°s0ʧa*̢vl8yM'H'q m\"o~?tx]+ |3n6V{l]P,a$M" 0PYq p[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*/a}e_L q Na_j j!ŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-W o;hV\ o@ .dC%NXE5nG!E$YI)UdK1eΤYM0ɻpu:\< `yJG~`"S!)wP3J}*PoŐ T0+uJ!:JǸz 9'*y6%!PCSyH@ K!A CZHs$k!nN*`G>C@g!Đ%!MXаy BtQH#tRJ+RL3tMF}j.Q8TU3*YŬ .js gtsc'*@\Yh  c:XPz0! ՆM`yV &Ԑg6!1xܫ}Bʁ.̳Z`11.{LsA3 SO"[؛7V0 ruѧz`s o2fsyg{g#0`hDQJyb`jzkkƔ ( vaK؄Ҷn{oo* W.k~ q#|r+r%pb3r$7A^E|@|@wd)MyJT!(4!Z:р`3vR@=_ΣZ dAP"t(1;&C 50A*CUѝg=퉻ő*>ypk %; d7V`:I%|H0TFlBqB0,|l \lK2U]1]ѧDѿ De1HF'wֶtC%jQ U:K!/eG^сiQ0x;2`¤P@& \g@2Rth[Q)w@L C3(i:ῥC62ȀGXFVȨ4^"U::(8U Ep,A(a>eᖅ UdUtCXXy֑G=\FWӕ*[:6CP{ kV@91ekيfꁐXt t*B&VbE9:5؁m\B.`4`GX9'# $b[{38+ta; "Ti@5$yሜG 4Qs m&[(Or|匜e$0F0.Q ` 'Ubare2v>e 8BrKQsLЋft\c ,ߡE4Wfhґ9J݊E= lR Gd2 UB H) Aj<@P}ld'%#F dh/B&> u<#+CdֳRRpESFCX@\(Iq~ #H"d8b&vt 7<9 x-EHSKX ]T&ހ 0FI`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴNd3~u]kg{IֶUDn S~w]Q.%(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>'@(.}Cs0=3&EFuv*@&[ H`AꨯͻY <tE:0"N YW!W3 ˈ.A#P {ؠr?$ " @ #Q!؉kq5 J6K: UA ;7sF/ dpUsk M c` gPйYAHztХy?Iꥬ&/ {(wPeig talh'ȀaruRC̺A BJDOs θz X؉a99 DA*qh*}8XH2;HmO2'R0A@j | NL4 P}(|Ǽ(`.w115_[yk0-L 2NwDؤγtPT!X1 ˇ 8M,N]PɁB 8'4Ḱp zr#<,Uˆh˼: }<ːL(p3.h @S.ceP"-RCډ"vHH)0r1?4NˍR1p(#PMMJ?R*4 Rq* `)iEO ހ!.2McspJHFwX(9gBb0N0wU|P x"_`dw ;yEY1"16^dF=բlG/yI4Iqdb-t+2̽@ PxTM 8tb؄\[[ȁh`G*Ihdjf3g d4T3>%1pͭOCB0d8Q|CP5mG@Jl CPPcX fhZ+Ovc$ڇ|h7@7T=T^<>2dvh`F$MP`)d0N0M~jn;XOƬd P2ɠHPLQXbkiʍ ~Tτ(|B0y^lf8ҨSГi\BAE&Þzlœ>ó-oЄ!@xCd{@YbTfE^n9(ƱStd @}Xw#}pzpw`v .)3Co/ u`yPP5k$^^Sle|8fn[ϊm [Vy@MT#Ai 5leAof=qv#oˇd P)7[ .(rqw#B!Y"xȀ|@D}-wŅ_Çk>iE ĞӼ}`"nd[56c|OA >઀;zgGf4 F p?C 2>y +ۿJU~4Ddz0 e3?SgӪs\mzxώ(wxOͅхyy2+h „ 2| 'Rh"ƌ7jH#tF$ yɋr9KiД ;3>! :%> )"-"18#5x#9GB&<#ADEA I)dANBY`N'm!č>AANp Uv;4@:(>mÎp ぐР&tE5GhCC Y*Wmc %Q, A3Yn:W`d@q{ΫB="4 j>4p霣NTq'r/ԃ!91qLdAN{#N:LC:L0p̥N9BӚ@!4 -,)j}¡#@:Dy^wJC ^(@@.^i7P>8 !ApLzϳ9)zPXADp(Mu OtKӇhr\goB@ᚤnA3|i(?٠"āf?(< Cc"Bn CB<(}  aw XD  T: v8ACmG?(9y.e>s7 s6LDA6 Y!@BcU`'ZLqs(ЇޡEpы`cSV`l 9 zCO!y5^J= l?qk `nbaJS6 =!AhQL Lc*әҴ6)Ns5Z?L2(; cp2jBz%UKmSS9 1#@;SSUgO (՛⊐&qBԊ(3CP >` 03&&nT,%ppEiʉRDI}E3xACQUk[E2'>@1 rqb\i>4-( iD#0+wh|1+D#8գXȟ ̑$ǘJ·Q$S| MOr aCEjPt>1,!93P 8DN/hON2;Lfbx@ns`| 8/p /!Hʒ\WQ)sH<N$7-1#x"v%vxMbІI|嵋9ꡐ͊J^f7M^%(4m <X|Zu!`~A\! !Πa1UD>AbQ9T<=,=hVwía%VD> H "B5ğ@E9QA ><4(TlB<<B0kþ>OLY0].#363>#4F#X1$%$AT!D C2U zLh@:@z|C胹mXC9@Fp $q\c{;~b4N&eVe^&fZ>C>0J>Ȏ`C090AS@SU@LV&>̮|:W`(L ^]6 0 m,; tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]k(tL`‰dB]lDDBNL H OBBI*CZv(U'*(Wxɑi;XG!D>BYePfWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 )EXA@9x;;(˹ԃ!>ïRX@B(*e=iL` مs,)\AlE=CmOhBDѮD E l<(A$ChEm}Ga)KN<}KIN,ҰvC|3ӡE>=ElrjJYU,B+~%ld$sABmY @+8]@)&<Bס"ÕJA&..6 %hN脐`<VzD D`@<[BL@A nI%OaO0^M MB\PPan.FAεc0HĂN0\kBm[[UAHa ģ.E!=lEXH~&M1kp)o:<0 KdFIJ@pP䚩ޜ5 4;D0S\I 8R:<"@/c4R> H'2p|ztHCmpfEX@A|&rP|Jɒ$fXC~$=1  tڢ)U!sE쐁\.̍@&'2((*%>X@20031*MنN 1fQIc^2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH<1? `G@lK[Kf"5\p1#L7S?5<i.[p:E,p@Zh@VH&|z&׹V+o>$2rhGoF$+$K 8 8@ 1 Y,%(CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:X;h 1T_7vgچ"kKP> ESp!D0NH@NzRk1)jT[bMFHľQć (P1m EP4Y^> hH8Ŭ;c>0 l̸V%he:w' ENHXqV KK pNOxQ;) TP;XVhWh7۩a,Fc<ZȜ`!)C=hiĆgt7\Nn>TtLY&Gv]"6JxL EC'I*X}JkDdJY<$LACl"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/S C>!˃ @9jAo!CAÒzZ4K'^dYA ;J<1\ 1#˱$ ٟ=(ey'Mm|ü /DLûT=dAlLstF PPDص&\hΜ<`p WO|p8 N\=F՝L|ZVD^~CX@̈>B~:|퓎q@ݝ0&@,4MӠ8H)DĻwzȓ:(]y(0;;0F!!Et@w"3x̋;y ܧo^y!/OS\̗N$o;<p(PS:.ц>"p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}>  O[{%Fc }w E-pA6m:0o; ם+qû|u+GzꞝFqTy@RRs6y,| HwlA %(GA4P$3B@ CiA` HJ"@OiyA}jhσЋ>O'"0Ĕ3 uq I),; &BQ9 0+ʋt|J8*x.ڀNJ{)Mr=t]v}xWvvR2 }>`aa@NԑGha4(n ɦp ̠9 W]|1Ƨ'Jzק20Ftx " oxvؘzΡH/(PPv2j: CVèfQG njAO6+, [tI@ iǭz|9'pX y9믌&0w>0%  Dd'8hFu;8y]EmhHTL: } q\1yqw~]c( QߪmA+S> !0UA ^9A~!!ah_;GFDH*\a$&x(2v<mBxh0DLg'b}<;v%h%.;@'N 2cf ǙH, ]HX|/J23E |s#@B;@ c:}4<)#6i$tCPF`o(1a؇2d!"!@F2RzT"x1٠S $:` #߰X'{Gp brE_ALZT @&<`FaB*A!t'θ:4Lhk1LiZS9N=( щ*V3  y;J lȣDpEc0 HF!q"9 q2> MhnIIxBy>.1N C2YQ)E鐀!sF8H#>Qau:XFz,~y#'aTeq́`;b| r!`E;`)I51e҅SzP[9K (zrH;/€cvy0_lٰz1GIAv"5JQ8t';p7-dH aP<a@ E}G`%QH#!F5<(BeQM8_~WϵT,L EdX:hE(`6@>bF*"fv0P0:##o;"#H {䁂LO@ͬb !B*BR" ء@ TN@&#fb³)*xabTZi^cj+ bX'*MJƮS:SRpΆcJ"$ޡRma.Ρ(@$X?CTZ/&H' pEPk&R%, CD B AìbV *BuQǑ5n)lԁo,xv dT1j+6@+mjȫ(Pʬ!ì0 =C~"@e7&$nB&B# a"JB" ''ȃ0HҞzbbbb" 08I* kafIZe'+L-Dr+42"݌'()/" B<1Y $G[ٌ/D Ԣn)ma$"Kª$!eCFR-?\%ljr"/.2"A0j6P' pLI$qo'L$6s0 (s??@;L),Ez ĸ6qd"T'0@"b@)qF FA3C#B2({DE/2$ *Rhb3K3%BZebO e؊4ҡ`B sTjރHcG"`? ;F% i6;bAH)n>q.^NN'lBz`G AK$Nc:'D,!s//f$!dS/D$*O=@>Aʔ'RP( 6RRաT"n#lP$P/2$2Dʎ &*\BD)U@ `aVa'42Isa#3*@X@@5c5U#VdGdKdOe`a^0ee%%(` R'pA?qĠQLciViiif6T' "Nuڲ$ B7.dllmVm׶vܥi$Bk@E`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(`Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvThJ  B `k3 `k"`#F)xh z6@Ge$J a%H%jg1b32|V0n؇eAzb:kxXǚA9S*wB/H3c k84@Q04&/΂N%08γر "◒+ْ3.tNFp$EZ-!$A0h٠zx"$$6a@iG A""[E* ԘMԀ$]-1'+Ưn1la"MR3]To\fm*513 #喩>1jJK–qI a/?ٝpb +΂EL-G6::0Yٕ)WYA5C! v8r6KM@A7fbJ[h/ڨq%$CxΓ/bb)(?@ #A `'DB`*@V 6CF*`c()gf"H3X]RC@x`c(/s,ߓ)0M*C:t*!$vwjYv |&B| a"Y@"r}'v}CbnF`Hbn߳ATSЁL%0 A b1`=XJaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0th rK/[ ~>*y}?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K Z?+Ĺ;0ߖH'BQ2>h?0@!|)3JZQ TYFCPvAB  MsP.0xeQ@=P<0<}82 9t +!@|KN[B"dHpmi}#)ȣA#@B^;E;թXcBs8h s7 mMɪdqЌ}Nꆓ2PHPY$(@X$BKdi_jN="D  E BВj8d>ʰ)!|;(+TMfEמb29M锗F k)2 Cd\ H?U^IAv^y$<8{=ϛh$OԣOv峏 ?yONy_yoy4sc3OC\{ : d:D7A0/hBDh3~}ЦkU$HkϏCa#@:|4f] 2Ρ>)%ߞޑ-u0QH2#dG; P|P €s\ Au{T"$n{%v:ʹ@0@ B!Z݈0&Qn yHIO@D ,7R 5p3_a6J` NB3}0!WB )-5 Ȓ8o>8Ccq&80 V''v]mzWXV(cs45B ^uM/=Hh v9ԁ@ 7 ps,9ωt~Oq!P\򱁠dh!A'K*3%R6飞>vs#}{#!9QȖs򨬄 $zk@σF9aQD-| Av| cxt9Y:TN!juK|즳!u2#t!;#VyT,tM]7T#"f !Πd O:P1mO=`QDŽL@HHPE7dԂ )/_:Ghh U$?v@H}` ,!nB(Ļ|GB5VBps}w> ѡ2!`IJ/r@PMPXf< ?d 7N.#`Xf =#@y NۂWP5 7tnRWe| t4­fswel<, #TLOeJ qS)\:sMyϽP>G!_7iB8tyBgw Zi #rps,֤(=*W `i W8zl`ӭ<1bxj8ovс#w|{ߎcg 9@RCD Hs\@XA(YJ(9'E;Kh(T˫Pu!EZ!e`} ?(PJ (<M&A1  P aB2[xф ^KTCyMpa_j s8Ma֒A8D1Tsb%>P'b 707cdT|Rxg&opbP*6([}2%1&Y5 Nmd##@#P 0(BP*n)vnnq}gPrݠVޓ@#_I}xE "gjp#cZ aqnIPt IOV<)=tY? Ir@:LF1$&!p<4Xj)@V`71X!P ED)OIm7!91<~1+`dF9n}|ypm){p> 2I6fRh#{gCR1ѩ"ige qwj,>3(5p p`%&֑mo q*s=fS@[|Z@.v+0L!DcCmM|)4DCyXR`%&jqP1rZ,* bySu 6 ^h2-@jqqzOR% oч^h7(0@p @ : j`ͪ $'PAH}ͅb0b`gBxRي#7W`zC($#:x p @%#L P S) aUsך S!D&@ҩwS鲧ejRb芭-`؎GmjdM=X!jA#aI[>Z0 A&F+sA` `Eqp*I˻U>g<8 `Hś !644Q̛!MCŽlڑJ4k狾髾_&ɾ5ɒ,{7B | 38^|V2Q:@Jeʃ7H@"IOy0 j ܶ2J  ˨Z(Az"1z"Ggp  ΀ =.z nwQ}ؓQ᱖GuRĮB\H-T|0`";O-MxHN{PF#DUA0A: "V!0 k(ff1(:0P7q">u~($G~5WJMw h7%ʾ!pM9!>-bfb4+Y!߿AW ?`2CvY<8 p09p#CQ0%A9A7 a.:_%0pv@1)U)dy2>,w`V0@L_;VI޻ i"5M!l"56vs3A:@uc-谂qv:`7%&y738L~D"`*S)2+i!S֦'6[ACā>. DA<w\PhPaJ -ﵙ0H, BP*-vU`0)vY:!*Sfbs=0P#/qY[X-FA Ad9D66`Vz0TJDh9)i6SmBOEjQA_;p @fRָ:< Lg ` PyMi<u/LCd7!puzvAWOC A+= rДj v O=0ea -/c_\4e4vG 6PaCo xf*%p8'A!O;ɫPPa:} c'ψC Hǎ"y'A%`ZaT/]̓SBg^>cH%ZO^=ɻpD Uq_U䭼(O;Ա;ayh πgl =b~pV6=*L (! nO>vƢhs,x ڀ{@ V/DG$DOD1EWdE_1FgFo1GwG2H!IAX|"S !@v!v,8QG5BhR R!F@U$gazH5L Çc ɢ}9"辊Ό}xv-+hdsZe:RFւ@`g jI2 2QT @lq:G C2@O-+v,UWH@X8퓠XչAk6ոd~ i  }=&w>-| Ī>f'IY!̀{GE7HynN_ߙ@ ܧ 4tO4X%S3$`'{5 !":"yu} a 0|2ooZޙw$w\C*ә:#2e瀶GyрtgQP B  y Q0"*1mYkd>Jhc} k0})Ρ \p A^:48Ha,c j|lc(eG$yVB@ 1Qa! ` ;p@% H0 EJ>rU&gLPMAx-qcC8*舢Cq uh!INvғe(E9JRҔDeԪ*$ @e\` y87_b5Eˑ*D <)v42Fv`5Ԭ(T6]ibƕ؞|Ê%E+ÇC@>{>a:rth" )gF,r$U@v!<x#SQctl8]s#@=:SS&(CGH+F7W ;h=C`ϡU*~pkk.4T1O:IGNP1j2 H |.Ї{hq>&p\`(|D14mhF7яt%"Jfm !ŊT4}G q3pP!%xcjQ =Îc-Y 1(9&-j1j(͔Q@[ cvpRO)(P\VZ{se}ʤama|L;#Š2 ՜&Kn`m9Qɂt Q^}"Uݮ-GQVvH ѿxAD6>H5FXZjE^anE4ͅj ZV1bNWzֵuw1d;ş vl pSn5:?cAc%sFD9p($`ȗgNJpLC{<6ņTt(Y:͛grWٹံ/`G @3i^+b ]DD/Eeb~U$ҝZ`dlNG Vв7W75i " )D8ܭR :ȩw(yh;9ۏ8 83z{sP'rc8A9ȓ< ؓ#3~a 95sy,zпY^w0X,-./}Բ0dШOz3곈a,z Їz(Bz0U 9,PĐx > H=1 b 3z* Ds֚%3@0YE‰/ J4ʘ@yPZ{U uА7CDfPs"+ c ؋F #}`A-^x[xAӇwDdTw0r% jcn‚cP0G`H@# T-|;8u0  ezy:b@dzdw@ոQpu<`Ox/ڇ Y \#HDFDw9p(hFָ> B2jSgdÂ0r =a>0˿$L ;#}50xHI҇ 3ـ>Y PH3p#1d xx>< F  _k@t&8H MɉtS` Ca\Hze0I0`]zD :}9uPNH؀r>M `!$}P`XS9><1 uڇX!o8PuXT$W* Їg8FQ A1# 21xXy VC:/*bPFPU`:}OPԍF ѣdS,8 ur t1,@ >sbw=P X:LMNԼ)JT0!zX@z`O}Xͺ-[\]^&zGVY9i XCqV`Muf0˺4;nopq:c%W:C$d<CvtсFs|}~=sOc8zB1(:n؋،؍؎؏ِّ%ْ5ٓ]@ٕeٖuٗ٘}-ٜٛٝٞMRٟڡ%ڢ5ڣEڤ%UڦuڧڨکUګڬڭڮ%ڰ۱%۲5۳ E۵e۶u۷[Uۺۻۼչ۾ۿ5EUeDžȕe\ǥZ}Y%EUWeׅؕBץ=%%EUe^uU_%5EEeuߓU&6FVfv &6FVfv !&"6#F$V%f&v'()*+,-./01&263F4V5f6v789:;<=>?@A&B6CFDVEfFvGHIJKLMNOPQ&R6SFTVUfVvWXYZ[\]^_`a&b6cFdVeffvghijklmnopq&r6sFtVufvvwxyz{|}~&6FVfv臆舖艦芶&6FVfv闆阖陦隶&6FVfv꧆ꨖꩦꪶ&6FVfv뷆빦뺶&6FVfvdžȖɦʶ&6FVfv׆ؖ٦ڶ&6FVfv&6FVfv'7GWgw ? '7GWgw r! ,fBBD^^\jjlnnl&&$..,VVT 224JJLZZ\::<**,zz|bbd""$>>@. 0xzfhx$ bdp0h\`䠢xx  0@(:0dRlTT@`ZغʔvVlblh@$00FZPNZtNt\0p@txĮ~<6<ΰТtv`xLDP<08  ¾Ƹ46@|^d`̜Ȧx\X@X prb\`nfHDFPlttpfp0@PP`np <<48:PԺPXXvrx̺bhd\tH@hH:Hl.(886(Nfbxt80L0.l0.pFJ@`@nf`BH@XPX||4<<$(8|zptf|p|P@~*$Lİ:$УKNHJaDv3|{Wi˟}>|ϑ2w/s"N%t`FS<#G߅fᆳ:!>d)QTA.cQ4hЍ 3;@ :2&HxFAHn[SdqÎ%$-ښACQ:`,Pp<ϑh Bx>pNK~OȰN=tPH@Z|Oe} ϲ,@@t>H,:3,2D6pX86k@;=CbX"H C@B)=sںM< @BC;F#]MhE@Iу2.`ψD:/j b#:p"'3v=9=;7B\ă7XOl{ܐ::' >? C=O Q |%"~LB#!$ $%VP |C77 +1AzP  {$uhG2ӱD ,@CHU[zB BP<q#=q t  $ h"J>H!IHA?SrI!Ƀ>*`Y%@ass!wp'XFđ$2K@' `ŎGnyVWH_ L j MB TXL%g@$>1px:&]0jV$`A$ DH@pm*Cwy 0)A"x:y/ n J@wZumJ\""ykMϊe2I 'H>܂0u\>e="&ث \=`qh@;Ԟc옍8&zk}uXP@k) H>ĨBC).v>f-!P O|  t ! )HЏByjC40!H [z)e+ x!܇L  eu8tT'EV=(= 0#` 77@W5@M}5QCg A<gqH0|=G&!y&<%10Sf1R`rp+v02> h_P=@Ѐh b}~hQ: \G~%P5}jl؆0 ?pU7$3-`0n9e˕# PvgGRE'Ih$׈  Czh*`O !P  !9YA$q'&iyM1 0|q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕp3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.#4\1F])"Ҋ( !9Yz|t!0q!"4uCWcMc S,P_ $00[U"08깞[xq$גYYsLLW` ymP@pNI`j왡Hu:P$y'P27v)Wmrwe\2*_*_ș:DZG̢sR>3 .gm!-*.` r` dpr:}ڑ,"gYP`S0֢qt]`waH% z  +4Jlk[Re6 -40wQ0O1`dZJF#3@hj/D?#u\" gJeP! :蚮:,zT Yq$"AV*(PO@d&b*fڰzJj$ 5jr8 3!~E¤ (67+Rb@a-{ 2;4fc.gZЅ( 2%"]b*U$]ǭQp@>H5ZqT =K͚"#F#odv aHBmpYNʵ~KHGP[y}Ya& hTc =x`Q@srm @HZۺupg$HՏd#Rt.yA VPv7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 005$6 Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR1``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLKc L` 5a"p@Sq'K>;P$AӯEBd9wUrcFpgH6$p{`.pG"!7W9„,G |7O 'o^†o;>$ a>N;'o;LϢw`(oT>Y;z4>y~rtV&]iԩUfkرeϦ]mܹuo'^q!;tvēC2 @عѱ <#fȓd_D=A&ؑS9=4OTH{ o:RC("Z,{ocB`׆bk/Pc'v'PY1.*AJ*A>{K0sL24L4TsM6tM8ˇgt Yd x &PI2 p(bH2Ey:Hy`s *Cv[,}P49g -  v"IHp"ԛi&N=}G )cz/ @qFl/ `0oz%2!J̀0[Ƭ9GU]>Pi݋t"h\hva6 @b3xc;cCydA@%u*  |bWJ5U2d{|7|yF4\ȏ`C@Q { ҩeBs$%4Ї!!0 Q 5nc2Bz@ zpa $@V$Izؓybh8=QGyBH@ P=DI`B`T P3fM!cKKJHU;`  &T 2yOY "4T`HG&dc(lܸ@KjpHjBD }E8L@B Ld"r9{K%=;!1yͷs2vP-YH/_xc!uIUn=th]WL =2Ϩ /u8-j9C |LOT"_yy\` Cr(HhD@d@ֱ I㲒wؿq# "g@>vPI Ԟ IJ Çq y8` |(( y>>>xn | LhA>CC@p@B , ?=IDci ?zRwX xsNY@y 0Ä(:\" 9f`H3%;FIDS 3 h û ɵ0{0yp yВvX'Җs@FǸ"w0CzulDžSчG1A`_ FMdQ̀O YR4Ea>8sT;' zd(}Hq$ `GQYZ,[|\\f SrGx,%Ch NC5L|DZ*ȓ8p KA ;8ˁ0D%K4x҉*12 D3&" @BS> 1AHbPO 5k:0J$.+ax+C`˫`ȇ zDj, ܡoMPL `LQiKy wKXLt!P FL9R0t e L܉PhP< *;=C0q 1ą6ͅ 8z. K]Wj  y̎e X$ $ ű ]k#vw$$ | 6HH`#la*ځ-*]2L%k B8yR"#!'h|aXY1-3#e$%RHz«с1@$ S``MHe*e4{< 1]L }Ӓtզ(֭V NxtVi$N#Q䜈(݊KPHsԁI#tx( [5  h2Iѷ4x xyywh$ 9<= bP*yt+CN!-B5yȈiLЇPlXgɇ $aP S@|t P4 ]w 쉟؞HJ{e\t0ǒ%1 9Oyi[-ok *qԐGQ+ą" ۷c :X3JKEuAHV.PT+`qA%JQ$?esKГ[P/:{tc[\B]8EJy8l#QyP HJݯ@`}( ՠĐؐzF d]  XN5h߽=`&Ͷ2| #xb`!!Ww' F`ya!zOf5PJ܋|Nԟv۠+v"P" M>5LA [e5%"ٰh@DQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDxHa]=cb'u(05sneWY=.(Q5!ntPO  ćI @#Ij< EEdλvwP6\{B!vJPI&yh ʠ!eR!&UhɁ4gpB9mRF"!""#}!&4C1!jܣ990% PHYl-mr&Ou%/TKq._s6Oy$PK M`zW"h*;ns?s2/MDAOk3Y^[")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u Ё]2 Obc$H6av]v᲋⬉L^#_n3 KW 1vw tjwvIݘ3w).x? }gX& kc|h呂0Ӱ¿,H  =H&`efՅXHa3]y?Q ]7 s0(/@xgx77Q)94?$U ?獴 8W> !}>iЬw 4UoQ@3&5"+ 2q[AoQ|VyLY>RP#}04C8Y_˗|PanXC "@oh8!~J}&Sqc{V^ifN|Ҙ$W﷍{'wXg 7up^y  |ܽ+h ‚Kxp%|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5^qyCcfs; ~"]%ihP;jٸjN[t3BBChwKAJEbrO;ޔ@O\+bXi-B󧎎K6YCAPr"%HT<쳞<8tOR 5I!gAcAe @Adr>jUP+& p?<.тIƒPGRy!xGdLFс-^)X # n5җIF%#-4-'r"iК,#;>)$N@:}^Ep oj)z):*}BqB", 90`CC 7 N3A=$4霣T`R|<2S9E6D!@Fl[@:Q<$SO8Pza u XA2CX nN8"Ԫj==\"m:P ꐽ V0梻VTrR>+[F Ѐ >=FC=X @(SG>05d]lYH9nyk2_r,a#"tPh"MI@]L7/ D7:k#()RV"Q#zXp$2~ꈖ>>oCbA8G!vH % 1@ա"M0`&t !7O!ه>~spQ#gd$"@0, n+aY"a2|~< :$R`1i ^bsl 3x ^A&|dr$-2sC8;fG<:h@ypc(Hsh (<5 Ft 'Z'8@қ_G"P`>f8rx`WBc&%uẉA ỹUp! Eȑ$;(֓+D9d"F%Ta[AIՁgDCfA,HZc.SU@!p@zTt&4:PȉQ I׺"Dם 8v`H TU Q&&d}ld[Twr>T^'jUIDI!__so<ɠH  B`e"ό4ךA&qaZyVk,2~0#,awf8s&`m;LH/` ^M ^Aɥr(@xh Cxr$V&LtzifRV^pT0)p@(A\̢  H (a%FDLq}L$z)ƪ}b+LdT1P1݋ߑkrd dY`O9-s;wpd7 y|n$`Bqq,A 9Oo>r,IoXc [Aaգɘk[>BM\M0Q{ƛ*ppq7-. `/k6HQcM}T}vD@3eHK#ϹYlģ Jpp?65i6F\1y 6_y:a<[OH>,2[1m; !l#ʃiY?xd ߐA"G @03s7NB !3B#CFUG!LS:h)H yԦdΑCz%[ BP>vz݇ڇ&V6lBK&@w<$G!=^A ,a䃊`\BD-5FCUD39A, ;ަO Oў Iʽ={ ;AY_A _!`%Y,MJCSLԃ;5C8`; ECZ}0 r ǘDaD ;A_#bMPv4,-Zb$VbFdB >lH4;(-+nBCXJahA4m @4B_v8 zLA@;XXPġ+bD ! `m@$AAGzC(<;qG1" #B@ԋAbAjmI䑜*GGЌ<\^aE4DЊ!@g%H >d1h7MDHc%DZY!IJ8>rL=CB@m>XXM:Rt2@bC 6m] nԃ'5EYbdC]" !xIeZR\CF4!̋I2@B8SEXiBP!\HdI>J:\! Gh$SdHŸAHn afY-DzGD8CC$ɘ,o9 }abOƑT.I%_fj_`H㡠mX'mvF!#Đ^`)du ;]EPChyL贅b&R.fKR}zh:&CT&eAH'g#yzZ,:XrC$()FH@= f,<  W4(䃆gABGK*߅DٽmIiA|niE<& e,GOAK!;<-Yi&_BܟA4@E(ߎ a;p #6Dt]ϢFA!NA4\*)% XiZ3M`E4(})5gɃ;< 2m#FhE4a~ V'(f<؁&`9 #n&>=+:܃((Ljr=:ؽë^Zi!;>8@ރ&8?ĞP(~GRjޫN>_V *d=p?8Cҵ]i&x;סPlʢ^A128ʥ,=$,;Cޕc~^O>@V\!Ţ,ZEJF&i*C78Ì .&:]`C^!5 RC:>@ r.Gx@*[泪زJ^#GjA(YnBHH.vw7heFÍ$_: < (/bhrE .xpZҮE1DBZ.Z<8薘B (Ц=FJ[8ӜLC><($G`oӟ!.v E/q )5/B؅b-|0ȃx!0fnpEp\tED h~%r;, Nxi oyl T~psS~VP \bS1-G۸p ZhT->o# $G oHN/wh``BB!ԃ =N⦲*2+kP ȃ^C]aCACIX90`Y@:o՞aMohAPX[-/ g:ZPtE99;DCCW"9Xѣ24 RLٰH3Lކ#XÌZ C2X%A,Irdv, \djTĚZbH3CKFsnIAOTF8!_>8Ӆ/:ln¢'%{so^ӳT>uEו>\[Vs3AȈv# nv}[($5(a@XσZZyA%%ׅhT0 w=jEP9tSGz:dȺ9E` !0l@ܱpz 91U7Dg {B 7W?#`[|-ĦyBpC#@X=l|1\L#8<&,C̕@Kxo=:p;7JD)83#F3z'@#!0kD<1P1պj<pDE7ìxoA`H7&HD E (  s֕XqÃ5tjg>,r`F'\8~}ycO9^/E 3"5AD؈w ZT  )hF:dH >!`hN@Dމ`wX;tb+Ƀ/I3N0!BcP 1WoCu[6at;7/!:ӚosLz0,⃃[dΔ7^Z'p ZʮrZŧ*K#a`Gu 0҄(U a PJ`XLd]XgehjlݖnpY HɆS(X. L5Sd |Qǂ`F0Iu^y5~%-MU-[d65zG`1 HeQf2euޙ}蠅#5w-/t#%'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGѩ_rAC=Fm9'ݷ] A-0V2f;~k'O4`Gyqg>i zN.EAIӀaw4jZOST hyIRBLi H䁎-S@Gq2ЁQqkep`?LpK D#HO- <7#!IT U7.}IBP<@j8Ō !E&PQSefX{RKA& tLTW0Ѱuʕ%-bQt ;5*I*{dFEtHXaGA>^(=f˛3%rғ|*!yJ U;[ 蠣T'42*)9kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&9 vL<ěPGf?Sv+"&ӎ8"EG`٪*L $G @KHy *ȀH)d Ҁ}X+ 0O40RP*_JVn6j-g[jo^ZɂT*!>ZBHĽװ؇LG]|! 7BHjLt׏xTc-=1֧ߡm:!#`%}>쁾Cꐫ 7 $Eҡ}ȈQC0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_xyTTx]J! s@|c/|M@l'HKd"[b…:k O$NFD pG:$(#6 HKE  lijdZƏL&0IΡ! !L P 0fk( D"@:@: n86nC @ ‚ ƻb k !A6` #4*R-@q!)(R p-H!@:iQ{ cM!(T !LD qqȐBNgJj$ X|_b[F Q[k$@ A a-!tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'Bz!n%l# * @-N$~%bMba c&%!J*N bϖ!;!)JP瘔b  "((H<  XL. @BVt@aRS11A*b 3dT*"SdR-7NHR@@] S.65[N39>_fb!aTS$*5 -4%P!`2c4ܔP>;[h0O62Ʉ(" {?@tY* P`BxʬZh%2j!##LH`%&I1K4Ũ`A1S> : s-c;#AҒF,00@OH>L$0p!`emKkvIt@ i! Z@ҬmI !@ ⏓6eDb΁JJG&4R h3 BƐt D!*LrìHRh֮pAA$ lT!@pr,I=0XU^硝ʸ3 nT<TZZuR2s+ a@D A3`j"5Gbjkԣbm?R<7 BQm{.14a8, 끵ZpkQpo[[6y 0-킶,ܨHQuU\Z(V:bB\B A FﵤJ@.VFII3),5Rl:aff]'iAWPG6hKhA.! `A-;fF6m+!iP^D*I.F @ !!l"8Uh!ފr_1STc } 6&Dx9B)F>R>B|L!Pp`B5l R,5xcI/7YAk@:Do7W5A6BN,e|W TinvD`¸r R"wiGX.aLaaIu2Ep*qG26-N/V$AVsp< A@$ D{S[ 6L&Z0 $@ fXvT a^O2{Ȋx Z8Ձ lkn$P ayYl tS䎝(͏"ٚ*Ğ`Th&P;vKlCh+"b6tE@ *m5A t)c$j ĕq)Qkp*"t $ x9nVZMDJ! DZL6 e?$` g]:2 H̗Zjʬ"R=@*Ρ cxWjH//0#XF^)"@1RC{l#K:> cC3,6DdXC.P*΁LBY hL@ $?-Z׿ "cKC=0kk("Ȩ8F38d<"nz;{0;{6*$"F`z?>#4!"`!@*|⧇VY[ٟ@:ĠDy%AhM@AJ`F?zءd0RGTLUQ \N%맦PFn*.a'b&v@iu/sW;;HTPPN(LĄ@*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿ@!X'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.ϡ^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1XρƲ0K+@"Z;= $AKu/!E@Y۱DEit^OK~+i >b+ɾC^Cu6(_wbfFh OGx,臟_qD.!"e0@7ND!;.>NCX؁VFo;6MIi6֦yT"9w34P!C&\.ƍeT܆y(iH&7(P68 Fz2>G@ >љ:լ[~ ;ٴk۾;ݼ{ <ċ?^ZA#v$!]&@ːq;9swUq<@|A[A! Ll4*wرAF!\×vܕ6U3>s;P8>L8gv'v7cgF=CB iNJi%S e 9 d4<$%O \7p5p;' _ 3@GXΞ;XA>7jk_FtՓV<0Uՙ0y ;{>׻9v|e@ߨD'Lnfd>\Q#,Gӫk-!,;q|M[cuɅ#gdLbF@FWe2CFtJ/tN? uROMuճ +(hqF @=o d,{g6Z)6ٰ[=QOo%t<`8U.8txG/E. _uw;g\ VOߏ)ƒ&r!0@m<`Ll|Qq0> jDT q$+K7 &( rj'C .L%0-X@Tȍ 1t|=PϕqM 0Cp%lkfsݔ7יiV <R.Ðǘ,#ffW ΙvCa&Ιj]B jhFv&%C#K_ Әt4Mo?4HcWF4`* #l } w 9Rye ¶$ 3B)tm@,E;%UI Acj whc`wȕb>XԵ5# Q(VЄ-7=DU HaGT֑ʇr1+ZV,V>UrzdWi@Kwl.P$N*wms]1a$LF<ڂ iYR‰8#;e|3$;PvH;0H|,15y]RA x^]7G,PW#qxY[=:6wFt3^)yK*MH{4І<歯Fk#:6 f0f^tN5rNP ؤPZR | @ zЄ&M>@A5 mdb UAÜAR{0^ڊ7!@:tBA3!`;PPPؔd%)#JN1ht:N%%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST c9RY*0:3nd7ݸ,r}YS=̃!|` aN|I.*S>ϻx7~4>q7yaHDYV~钴KpϟENb!t\w!OHInja͛FTqQ+>gEb36t7`Y^SBE|T$ pFqčT@ d 9)BȔdHMDBT7&*A#F! NXaZj;.H".|p-/c54'eg*A !CdF $DCyrFpoپ]xGc GaZo~Fep A1BG0K_ Z tSd-i*~Bf$L Bz q4 0rmvtF|/nw T. 0Z=30[VҤ0OT!(d*fE N;& D o@K;аa>.՛ Q }h( 4< X!]'Υ1O1,$4Ϋ@ *՘E9$)^{^S.1뻗G%Zw,sh S,{%[(;5~R*X"|Ȃ|I!޲u T-c7;9Ki}nKv+N@f%SG`bk/ǔ@td@9 &F! Q`_ٵ2,A 6PlSx{7(C?1DG$DOD1EWdE_1FgFo1G[M&=,(}6SE$*Au2hv䙀 ( 50ˇv.hms );@wt8v  qwxi6݄r{Ɂ`ǁ'6ӸpE(|*I+Lj8,kW(&t<}0,3Ф9DqU Xe}tHH̴M ;+U@yPss6v"jh8JA[qU_yFahˁaUy0@uBeh%Ig%Ԭ}W!Lz.z@@CӊSP 5h8+` ) 9}Ոc^UՐFx#LFys9iwb#v{+>?7 t7lF8G :&$`P;tI"Z!M:OMk4UU@ ԡ|C2!ATI EmbLg7 T0Dr岘41]A#FId&uHd:}p{@JGFmUeP>aT2Pn |`=պI76>(r7NJ'qU$ðՇb[_t 2􁏒d `Hq .7ekC@b7ɃY,FYh@y̬ wXNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW  ((5>jH -r/yK:$c&wМDy%b}9EByҕt7O<  X =e)ċugG{ˍrQfB4"P.'qQI`s#?8xQߙvG|I5"Jx-| .o e+}E?z#ֻJ&c0} PC'1.}G˄`5d>ltIVFj \+оȽ}:ϊ Vèo8nޓ|v,)I "Iȣ-IHd Jٰ 4 6y  hG`>Ev耤x y G|tr* op@DlTɕdɖtb5,upQ5L.$ VEƐ苗Ȇ; /|;Ph Jj t˷˸G!@v &Ȇ{p{U Ԉ>2}p{@{0L~cd85ȼQȭL1$8$NK5(88Ev@P+lq vNhA?<ڱ|H$ί_tN Kė|H(%;}x HY>x (\ РQ j#} M Ia9$@xo(f 9L o4"5#ERlK?Ȟh MpR$Cz`y'(J$|$5H5͇fpxp ';Y"|h"Q% 3M9}!ׁ|vS%PT-F5yDKTUUeU;(9yq<0  ȯ֢ՆL0: '0ۘbX v.K-Y#;1Jaf\zv}0T:FL цǔ#hM(EhA@ ևv^Nhy0!9eЇ{s ,՚IiPike  &L@yxn@w}`U(cP$= ɱLnjڇta-B_l*$r: PM|@g}Y,WqgMb7,CfHE p}p`,hPM() h،`lfȖ8jZx>0yevp y\T Hb鐊k_Y), 脀FK( <11m}h><9KkǐH}o{8}(|w&H8 8Cih+z؀tn hij &.8"رÐ?~Z~>LJ6SGutۙ탇,!Hz ЇzȁDZ _ [L+1r9ITuI$9|DU:UYϐ :^q}HTWu/:$=X  t_Vi,ʣFw$f @y>IWgW|Xy7C \y˾5ޅ7&'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF ЁPӯdN+9Q9˸O[hN/wXˀp'y/_fġڳt !)9Hw3Ģ{0"Lp!ÆLhj_sQĊv(rÁ$?l$K-bl)s&͚ - V&B@1s(ѢF"Mt)ӦNB*u*ժVbͪu+׮ Ov]𺰁 Te)^Kn ͓Kwݼjʓvޥ /exqc7eJ>re f|x5tF.PҲέ{7޾.|8Ə'AݓmSzC'3TcáWI1Qwų.+_j~-3OdUe CFA8uVMP9Ps,]7S r#X'+آqφ-:d0A܎ޏx`lB~T y%yҔ5yL'Cj*4ЛT Ob05@/"2ڨBi`3 Nt<D`O:$Vԉ<g:`D<2&\-GZ-qS<{Ds6 {#;D׵|<ꑵJuz=A ȣCS_ק:P>#; ϥts*>㌖Cd ,x P$)A\EC Q<$|$p;fc,#8@*n  6vڡA+nēLdǎIc(wKPL_ q %\&<  ?AL`H q3h,a4(G;яJ*Fb<"R40AAQ $c!H4 cA t60x/ob :N!cֳ;vS21(@2{1t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6PlϹ^H>x=i¾;}$9m3LIb AkZ6Ȩe# Xq}eef]Nȗ0:ͱ sy#q62ӛC=Rr PuJ53_Tfر z:ސ1p{Ap b Ny]!`ʮmE,|RgFA>$gm@+e|5Ał |B>k;A q|#%}H`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^:z$^ڬ TEhDfD͞B@=Xߵ;H%>@0|\A(:02!C \} TUbA` `C, a"x:AԊC:X?=lLlB@-7zĉu\9QAl<;da6:@SU ]^ɥDHE< Aa\-%ZAa1gḀ1 T}D8fBeB@HXC=:j'!W ރ !D*I$۪Ɉ*J 7$6'$cBZh"8+⃐;jp= 8?PCD=փA*R)û8bjB?rWA=1Ԟ) @FJ ;\cC^DDE^dFZX^dLLdM& 8Db NB%;,G> ,"B=F=8e]C^އ|̣p;x` AL;D6i BuI&EMa&Ie:IIWVr]B.N* 9TfA\f<4BmA <$;\ff6gnn`Хdf+u<8:b2f-#BX`nO0\B=B@f.QI~g"mM:BhJ!pb;ĉWZ0Lndlc (u(x_>4B=IP@3LlFZDօ<@=#Ŝ\?8`5), tnH 4:*ę/ }_z2l$t($I*(q"DvW՛.") $cB &RDD0*MQ0bɆTUi\9u\IJ~W$QDȃyV2+CDjშRk!%æ4$ ̓:|3NT>ŪCD@DXRaỸ};:jĽTH$yROkC=liBv`9Sce^A ``)֖_  C#zn ibXBŪܔD@ܭX<<, @0Hحؖ4I@=HC-톕,ےVfd'9|@0;x؂A$ H]4: gF-(ڎb@*ǩt-m-H@:BA n`<nҮ`u&b$1,>^J:l@Z"40uH:T>0AĪ3dfK$@ 4lO3T0'II)G=% p 0 @7z>EAD@I>î@>Rރ2D0:EHK_`HI0^>m,`=h@@i"6 ( <@YX)kʖAo>>)ExeWƠ#If KcJ\^̊,KjE q><&: ZBd[lݩwr:-I 41bZ>K VC. 1V(*D$S%eAd æA,A#rU͇!L:ۣl@++F5'F4s)%lC" H%T13pBpp^+b3vc;c;]r=SCSHvbPeFXtehvii7 sSLkw_{ԅknvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyy7`uĞ0bN<@y w`(raINU=bzK: @U mODKDQ|^>Ldrh𥕲9sT!tgmXYiGikAD%CDRloA ^^`,r T<\; 0]ZI{#6s%D,G$PGԃ&|>b?GXR6/a]ц>Z;RüW,AԈ ~Kn|R1D BPu8̳lA<D) ȃ{@1 +]΃}SNĥdJ>lJxt ^Iο̎VA < ӄ7>X@v}$C$YTI&]惩U]>lBp@}>ThxOA $!^C=TA@ݏDXcJ:ß:1'BbA)-BmDLKU#=0>)rUA׾i<}-(@&A|&D(OB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7}`G@!;yN_w#&}ᜀ(;7`A& n#*3p_ "c22Իo_)&.BLALA^* Q lB$>xqǑ'WysϡC @+|yp[@:?3U P*8Q%z@C2sO>|i4}WYnaYf"+!FI@`JTYoG `e:z櫱By$G1j1Ja xBI'D1SJ  @؁@l~'N\o!_MªLjo)J n1!%@CVPá*q7+i5· ´d@gGч2 a'/йm=ߡ4$g^! 6;!SgG,_}ZɒuPMP 0DRr @I@>gR>jPJh`s?.)`9*@2*@^  ]bHH#y$z}@b۲&Il䱉g 1 9/!@=0!! `B9Αu$"`<E7P`38`]QGDDH). C|BdD$呕@*H}C*` tH(Ttp G@ # c ` hB74CƷ+ @{r*ZA@+OyΓ=O%Tj4AP. upȀgPnGARx "5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:0o5O[9zYgVCx_X\Q+`$8N'w&Dba5e` jtM#C49."7K@>@%d:%, HHj\G 1_B tzpzYQBҵL`؀8H6&GVWWtT: :`•`zqy0c}>ttiZ}UGby5"` \h c!$0=aYaG2Q4pRd!9CL  s]4هjC&_%biE 7>W;NB g(OX,=!A-hAQɌOLtc€X0avhX: |dɃ (Ay章SM@Dpy;ʆH"Qah!#Q2> 7}u-SV3y@ @Oa} 6apBqM 2@0vM|r"iFOTBJ kݓ@B(AaAg$,؄@+ U|# @C,x$h(.bLJ0" F0 `C=bP "tp H߷guoDY.3}lK@8wdCNI+6PwL@\ C1ULStUJC ^Βݐ@3.>Щ2 G`@%'tϞWi>Î6XPCdٖ^#ڧ}|\B [&T>8@Hs;gR Î$<EC *Pc=K8fqqg4I& !p`F!8d$J(Y,!"N** VAp즱bMND*gM6KbB!Y:xB#@iAg2>g@xɰ $hPXa!& /߀0 H!Xa{8 !]ԅ!P!ڧ_#P*7R I"!| 6(@A++T( A&L &{A@P~Dޤ1"bk gFL *@j6 ޡG#!}Rh)pamN/¹aua`@`]*@Y> B#!`GaZ1#5r#[a3uB("bc'5LFA! (t0r"&@f3'xƯMejHF R@#: -և F|'4O#r-rOԠ,@g1"CPaøl af !((J2ha0>PƀD)'P8HH LYHء-F%( %8>R R!H@6+\s88$`KH2T2$ n6` # ಩>B$&Ca&v|2!'B4"0 }'U46/QIX8 $($@ 7)^ |FZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)`XeHtISH?j&bJ5B+ (=JI4Lݍ k& @ "La2 8-Ae"=´)3TLuP̸K f&Za7/軄& ^B"X.Bq:PEuTSb#`3[\Ȅ#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,d>ez6i=@<@E;Hүu/a|˷d#B0$@"wy5#p dJEnPs-uvqQ>a)%XuS">|7\!܄DN8-ҁB(Nd>83P49O* uEkZEAqLӁa.QJ7%q;">,[[e\PMl",1qIVu.>%_`{T9*sCAEؘa7HÀv#R.r[!xh0!p@ PReInoYnb2!&^ZkFgYy ڠ>?!]G?+s!4!rI6n0ҁW j ||!<%|)-1<5|9=Ad3vOSXyѳb/ BԿ]r_guKX#X8(pEx8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIA'_AP !sw3;(Nqv-]t` -z! *G` t:ǎAo^=t `+ByIȃ)ཀྵ@qN+װc˞M۸sͻ.Ny Bn,Au~\tt s%W(̝N|K~&Ö́ax{s"T}A -^AԃB|0= ($h(,&Nd(vNsSv 4dCP8P@ CC/Td5ިAFb .4>Oi7Xgȓŀ"@95;TOi-Jb~gOS!'褔Vj饘f馜viHE'YʑW;=9x+ —k7\ 鿗IXjA@B #,Wlg!FI>̾@ܨO=[P>`\8(?TPO: >3{6_QN_B`@P8{#>$~:_a(;DW0HM&;N ؜-_Sތ7G.Wn?B=!g砇.褗n{O< {K9c LE| hGH@0Aԡ$Q:6EQ2)7@gчt%QD恏y!9 *PDz` U;q )GI-vH ba2sdb%A7Pv[Ҍ4ʃq01Zd4S&\_ġ> 쨋 #F>Y+%f2Ur!r#Rz-5Ib R]z!8iZ2adY<:쑖͜ E@@C#%%䅃LgM% bg9x|>ς0@h`H@+QF4\ ҃ TGJT@@5Ct%@R:QĢpV! 0㮂 5gv)^ sHuwS0KcôbƮ'ODH Cx+*3 ⰵ!P]DzYX1:>PC#[@NF$v mpC %(*k$"G @=@j'2g|Qys@ NŇd9DAJYN>0( wЁF 8 @YD !pLs##O3: a!%K oPK$7rP\q0 k4/{w+X*pB8 duh='X.v8rAR 8Ǜ b-*-c,ad[ɣ]22 3G$''Q24~G|HԹq @fABŰg TT CP1) q=$blhAT/d+vańϯa jeG< AjHc YbPArrXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7 D}̍ Zek9.!P ;6 $ZȍzOpa-%f@CY (\>P(Yz , A+:M :@tu0cJ7y*M}7oHΑ9!cA`D@41қg>Y^x+EKURrg;qAH t&U=ST{aE/|v>r e!Z:BF1 K<zfʋ4)P(?2< zb}L hjZ[ai v aDz7X&Yd> A% Gv! %8 Cpw?" $Pg\E?@Av212W*e! PbK"2"X">(rS}g2"SR`xzXOJ )tb!G t i@tb2AL ON(L 7 Nh P AX(17e [F1LG31 V#;Qk".%6B&F!Dh'L4b}7сDS@j+R+AvDEj``-b- H\!Et*>5`Ej*% = `& `T"l.7b BBuPTwLe8**C@+e% 9}2%p] y:0/r/b,p`dÃ06c5h0 C 2؎>|cmb $*%`72=^E@ H22v5D@p8:v#t#+.Ep @ 9F`29PDΡ=48& 3!Ls2F -1s50#MWXEYܐV0 6m6AeDivӇ_X!GP8  9ZZyP ^82qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;UI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*!*O=؊t:0P }Wva\^u hxz% W!Wqx`X%3K^UY7^Daa00|HS!V'aF'P!V[گ0 fiLSGj֌A@Up%6VjKsjh y&(Ŕ 0Te]qMGdW0qE6"ȫN*{%wrSRvE;T+F {lF8Hzf U{^y^zsk{x?!:| K'q0[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv. !4^c?!'kb(,)v۽蛾BLO /~P0[#/b ca 0aPƫj1//3'ZQ0~j cP2“ 2bP. +\}Ԡ0yp,iПf` 0yus7 7c88Pܳ;"69jZC (2:(f||!t^*hr<ƣnL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#":pqKktIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2 ng$j斒V (!3.yՒpJEWi&@dk$7pפnբ 0`Y[~Vt%mמ  p-*°s0ʧa*̢vl8yM'H'q m\"o~?tx]+ |3n6V{l]P,a$M" 0PYq p[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*/a}e_L q Na_j j!ŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-W o;hV\ o@ .dC%NXE5nG!E$YI)UdK1eΤYM0ɻpu:\< `yJG~`"S!)wP3J}*PoŐ T0+uJ!:JǸz 9'*y6%!PCSyH@ K!A CZHs$k!nN*`G>C@g!Đ%!MXаy BtQH#tRJ+RL3tMF}j.Q8TU3*YŬ .js gtsc'*@\Yh  c:XPz0! ՆM`yV &Ԑg6!1xܫ}Bʁ.̳Z`11.{LsA3 SO"[؛7V0 ruѧz`s o2fsyg{g#0`hDQJyb`jzkkƔ ( vaK؄Ҷn{oo* W.k~ q#|r+r%pb3r$7A^E|@|@wd)MyJT!(4!Z:р`3vR@=_ΣZ dAP"t(1;&C 50A*CUѝg=퉻ő*>ypk %; d7V`:I%|H0TFlBqB0,|l \lK2U]1]ѧDѿ De1HF'wֶtC%jQ U:K!/eG^сiQ0x;2`¤P@& \g@2Rth[Q)w@L C3(i:ῥC62ȀGXFVȨ4^"U::(8U Ep,A(a>eᖅ UdUtCXXy֑G=\FWӕ*[:6CP{ kV@91ekيfꁐXt t*B&VbE9:5؁m\B.`4`GX9'# $b[{38+ta; "Ti@5$yሜG 4Qs m&[(Or|匜e$0F0.Q ` 'Ubare2v>e 8BrKQsLЋft\c ,ߡE4Wfhґ9J݊E= lR Gd2 UB H) Aj<@P}ld'%#F dh/B&> u<#+CdֳRRpESFCX@\(Iq~ #H"d8b&vt 7<9 x-EHSKX ]T&ހ 0FI`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴNd3~u]kg{IֶUDn S~w]Q.%(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>'@(.}Cs0=3&EFuv*@&[ H`AꨯͻY <tE:0"N YW!W3 ˈ.A#P {ؠr?$ " @ #Q!؉kq5 J6K: UA ;7sF/ dpUsk M c` gPйYAHztХy?Iꥬ&/ {(wPeig talh'ȀaruRC̺A BJDOs θz X؉a99 DA*qh*}8XH2;HmO2'R0A@j | NL4 P}(|Ǽ(`.w115_[yk0-L 2NwDؤγtPT!X1 ˇ 8M,N]PɁB 8'4Ḱp zr#<,Uˆh˼: }<ːL(p3.h @S.ceP"-RCډ"vHH)0r1?4NˍR1p(#PMMJ?R*4 Rq* `)iEO ހ!.2McspJHFwX(9gBb0N0wU|P x"_`dw ;yEY1"16^dF=բlG/yI4Iqdb-t+2̽@ PxTM 8tb؄\[[ȁh`G*Ihdjf3g d4T3>%1pͭOCB0d8Q|CP5mG@Jl CPPcX fhZ+Ovc$ڇ|h7@7T=T^<>2dvh`F$MP`)d0N0M~jn;XOƬd P2ɠHPLQXbkiʍ ~Tτ(|B0y^lf8ҨSГi\BAE&Þzlœ>ó-oЄ!@xCd{@YbTfE^n9(ƱStd @}Xw#}pzpw`v .)3Co/ u`yPP5k$^^Sle|8fn[ϊm [Vy@MT#Ai 5leAof=qv#oˇd P)7[ .(rqw#B!Y"xȀ|@D}-wŅ_Çk>iE ĞӼ}`"nd[56c|OA >઀;zgGf4 F p?C 2>y +ۿJU~4Ddz0 e3?SgӪs\mzxώ(wxOͅхyy2+h „ 2| 'Rh"ƌ7jH#tF$ yɋr9KiД ;3>! :%> )"-"18#5x#9GB&<#ADEA I)dANBY`N'm!č>AANp Uv;4@:(>mÎp ぐР&tE5GhCC Y*Wmc %Q, A3Yn:W`d@q{ΫB="4 j>4p霣NTq'r/ԃ!91qLdAN{#N:LC:L0p̥N9BӚ@!4 -,)j}¡#@:Dy^wJC ^(@@.^i7P>8 !ApLzϳ9)zPXADp(Mu OtKӇhr\goB@ᚤnA3|i(?٠"āf?(< Cc"Bn CB<(}  aw XD  T: v8ACmG?(9y.e>s7 s6LDA6 Y!@BcU`'ZLqs(ЇޡEpы`cSV`l 9 zCO!y5^J= l?qk `nbaJS6 =!AhQL Lc*әҴ6)Ns5Z?L2(; cp2jBz%UKmSS9 1#@;SSUgO (՛⊐&qBԊ(3CP >` 03&&nT,%ppEiʉRDI}E3xACQUk[E2'>@1 rqb\i>4-( iD#0+wh|1+D#8գXȟ ̑$ǘJ·Q$S| MOr aCEjPt>1,!93P 8DN/hON2;Lfbx@ns`| 8/p /!Hʒ\WQ)sH<N$7-1#x"v%vxMbІI|嵋9ꡐ͊J^f7M^%(4m <X|Zu!`~A\! !Πa1UD>AbQ9T<=,=hVwía%VD> H "B5ğ@E9QA ><4(TlB<<B0kþ>OLY0].#363>#4F#X1$%$AT!D C2U zLh@:@z|C胹mXC9@Fp $q\c{;~b4N&eVe^&fZ>C>0J>Ȏ`C090AS@SU@LV&>̮|:W`(L ^]6 0 m,; tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]k(tL`‰dB]lDDBNL H OBBI*CZv(U'*(Wxɑi;XG!D>BYePfWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 )EXA@9x;;(˹ԃ!>ïRX@B(*e=iL` مs,)\AlE=CmOhBDѮD E l<(A$ChEm}Ga)KN<}KIN,ҰvC|3ӡE>=ElrjJYU,B+~%ld$sABmY @+8]@)&<Bס"ÕJA&..6 %hN脐`<VzD D`@<[BL@A nI%OaO0^M MB\PPan.FAεc0HĂN0\kBm[[UAHa ģ.E!=lEXH~&M1kp)o:<0 KdFIJ@pP䚩ޜ5 4;D0S\I 8R:<"@/c4R> H'2p|ztHCmpfEX@A|&rP|Jɒ$fXC~$=1  tڢ)U!sE쐁\.̍@&'2((*%>X@20031*MنN 1fQIc^2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH<1? `G@lK[Kf"5\p1#L7S?5<i.[p:E,p@Zh@VH&|z&׹V+o>$2rhGoF$+$K 8 8@ 1 Y,%(CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:X;h 1T_7vgچ"kKP> ESp!D0NH@NzRk1)jT[bMFHľQć (P1m EP4Y^> hH8Ŭ;c>0 l̸V%he:w' ENHXqV KK pNOxQ;) TP;XVhWh7۩a,Fc<ZȜ`!)C=hiĆgt7\Nn>TtLY&Gv]"6JxL EC'I*X}JkDdJY<$LACl"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/S C>!˃ @9jAo!CAÒzZ4K'^dYA ;J<1\ 1#˱$ ٟ=(ey'Mm|ü /DLûT=dAlLstF PPDص&\hΜ<`p WO|p8 N\=F՝L|ZVD^~CX@̈>B~:|퓎q@ݝ0&@,4MӠ8H)DĻwzȓ:(]y(0;;0F!!Et@w"3x̋;y ܧo^y!/OS\̗N$o;<p(PS:.ц>"p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}>  O[{%Fc }w E-pA6m:0o; ם+qû|u+GzꞝFqTy@RRs6y,| HwlA %(GA4P$3B@ CiA` HJ"@OiyA}jhσЋ>O'"0Ĕ3 uq I),; &BQ9 0+ʋt|J8*x.ڀNJ{)Mr=t]v}xWvvR2 }>`aa@NԑGha4(n ɦp ̠9 W]|1Ƨ'Jzק20Ftx " oxvؘzΡH/(PPv2j: CVèfQG njAO6+, [tI@ iǭz|9'pX y9믌&0w>0%  Dd'8hFu;8y]EmhHTL: } q\1yqw~]c( QߪmA+S> !0UA ^9A~!!ah_;GFDH*\a$&x(2v<mBxh0DLg'b}<;v%h%.;@'N 2cf ǙH, ]HX|/J23E |s#@B;@ c:}4<)#6i$tCPF`o(1a؇2d!"!@F2RzT"x1٠S $:` #߰X'{Gp brE_ALZT @&<`FaB*A!t'θ:4Lhk1LiZS9N=( щ*V3  y;J lȣDpEc0 HF!q"9 q2> MhnIIxBy>.1N C2YQ)E鐀!sF8H#>Qau:XFz,~y#'aTeq́`;b| r!`E;`)I51e҅SzP[9K (zrH;/€cvy0_lٰz1GIAv"5JQ8t';p7-dH aP<a@ E}G`%QH#!F5<(BeQM8_~WϵT,L EdX:hE(`6@>bF*"fv0P0:##o;"#H {䁂LO@ͬb !B*BR" ء@ TN@&#fb³)*xabTZi^cj+ bX'*MJƮS:SRpΆcJ"$ޡRma.Ρ(@$X?CTZ/&H' pEPk&R%, CD B AìbV *BuQǑ5n)lԁo,xv dT1j+6@+mjȫ(Pʬ!ì0 =C~"@e7&$nB&B# a"JB" ''ȃ0HҞzbbbb" 08I* kafIZe'+L-Dr+42"݌'()/" B<1Y $G[ٌ/D Ԣn)ma$"Kª$!eCFR-?\%ljr"/.2"A0j6P' pLI$qo'L$6s0 (s??@;L),Ez ĸ6qd"T'0@"b@)qF FA3C#B2({DE/2$ *Rhb3K3%BZebO e؊4ҡ`B sTjރHcG"`? ;F% i6;bAH)n>q.^NN'lBz`G AK$Nc:'D,!s//f$!dS/D$*O=@>Aʔ'RP( 6RRաT"n#lP$P/2$2Dʎ &*\BD)U@ `aVa'42Isa#3*@X@@5c5U#VdGdKdOe`a^0ee%%(` R'pA?qĠQLciViiif6T' "Nuڲ$ B7.dllmVm׶vܥi$Bk@E`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(`Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvThJ  B `k3 `k"`#F)xh z6@Ge$J a%H%jg1b32|V0n؇eAzb:kxXǚA9S*wB/H3c k84@Q04&/΂N%08γر "◒+ْ3.tNFp$EZ-!$A0h٠zx"$$6a@iG A""[E* ԘMԀ$]-1'+Ưn1la"MR3]To\fm*513 #喩>1jJK–qI a/?ٝpb +΂EL-G6::0Yٕ)WYA5C! v8r6KM@A7fbJ[h/ڨq%$CxΓ/bb)(?@ #A `'DB`*@V 6CF*`c()gf"H3X]RC@x`c(/s,ߓ)0M*C:t*!$vwjYv |&B| a"Y@"r}'v}CbnF`Hbn߳ATSЁL%0 A b1`=XJaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0th rK/[ ~>*y}?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K Z?+Ĺ;0ߖH'BQ2>h?0@!|)3JZQ TYFCPvAB  MsP.0xeQ@=P<0<}82 9t +!@|KN[B"dHpmi}#)ȣA#@B^;E;թXcBs8h s7 mMɪdqЌ}Nꆓ2PHPY$(@X$BKdi_jN="D  E BВj8d>ʰ)!|;(+TMfEמb29M锗F k)2 Cd\ H?U^IAv^y$<8{=ϛh$OԣOv峏 ?yONy_yoy4sc3OC\{ : d:D7A0/hBDh3~}ЦkU$HkϏCa#@:|4f] 2Ρ>)%ߞޑ-u0QH2#dG; P|P €s\ Au{T"$n{%v:ʹ@0@ B!Z݈0&Qn yHIO@D ,7R 5p3_a6J` NB3}0!WB )-5 Ȓ8o>8Ccq&80 V''v]mzWXV(cs45B ^uM/=Hh v9ԁ@ 7 ps,9ωt~Oq!P\򱁠dh!A'K*3%R6飞>vs#}{#!9QȖs򨬄 $zk@σF9aQD-| Av| cxt9Y:TN!juK|즳!u2#t!;#VyT,tM]7T#"f !Πd O:P1mO=`QDŽL@HHPE7dԂ )/_:Ghh U$?v@H}` ,!nB(Ļ|GB5VBps}w> ѡ2!`IJ/r@PMPXf< ?d 7N.#`Xf =#@y NۂWP5 7tnRWe| t4­fswel<, #TLOeJ qS)\:sMyϽP>G!_7iB8tyBgw Zi #rps,֤(=*W `i W8zl`ӭ<1bxj8ovс#w|{ߎcg 9@RCD Hs\@XA(YJ(9'E;Kh(T˫Pu!EZ!e`} ?(PJ (<M&A1  P aB2[xф ^KTCyMpa_j s8Ma֒A8D1Tsb%>P'b 707cdT|Rxg&opbP*6([}2%1&Y5 Nmd##@#P 0(BP*n)vnnq}gPrݠVޓ@#_I}xE "gjp#cZ aqnIPt IOV<)=tY? Ir@:LF1$&!p<4Xj)@V`71X!P ED)OIm7!91<~1+`dF9n}|ypm){p> 2I6fRh#{gCR1ѩ"ige qwj,>3(5p p`%&֑mo q*s=fS@[|Z@.v+0L!DcCmM|)4DCyXR`%&jqP1rZ,* bySu 6 ^h2-@jqqzOR% oч^h7(0@p @ : j`ͪ $'PAH}ͅb0b`gBxRي#7W`zC($#:x p @%#L P S) aUsך S!D&@ҩwS鲧ejRb芭-`؎GmjdM=X!jA#aI[>Z0 A&F+sA` `Eqp*I˻U>g<8 `Hś !644Q̛!MCŽlڑJ4k狾髾_&ɾ5ɒ,{7B | 38^|V2Q:@Jeʃ7H@"IOy0 j ܶ2J  ˨Z(Az"1z"Ggp  ΀ =.z nwQ}ؓQ᱖GuRĮB\H-T|0`";O-MxHN{PF#DUA0A: "V!0 k(ff1(:0P7q">u~($G~5WJMw h7%ʾ!pM9!>-bfb4+Y!߿AW ?`2CvY<8 p09p#CQ0%A9A7 a.:_%0pv@1)U)dy2>,w`V0@L_;VI޻ i"5M!l"56vs3A:@uc-谂qv:`7%&y738L~D"`*S)2+i!S֦'6[ACā>. DA<w\PhPaJ -ﵙ0H, BP*-vU`0)vY:!*Sfbs=0P#/qY[X-FA Ad9D66`Vz0TJDh9)i6SmBOEjQA_;p @fRָ:< Lg ` PyMi<u/LCd7!puzvAWOC A+= rДj v O=0ea -/c_\4e4vG 6PaCo xf*%p8'A!O;ɫPPa:} c'ψC Hǎ"y'A%`ZaT/]̓SBg^>cH%ZO^=ɻpD Uq_U䭼(O;Ա;ayh πgl =b~pV6=*L (! nO>vƢhs,x ڀ{@ V/DG$DOD1EWdE_1FgFo1GwG2H!IAX|"S !@v!v,8QG5BhR R!F@U$gazH5L Çc ɢ}9"辊Ό}xv-+hdsZe:RFւ@`g jI2 2QT @lq:G C2@O-+v,UWH@X8퓠XչAk6ոd~ i  }=&w>-| Ī>f'IY!̀{GE7HynN_ߙ@ ܧ 4tO4X%S3$`'{5 !":"yu} a 0|2ooZޙw$w\C*ә:#2e瀶GyрtgQP B  y Q0"*1mYkd>Jhc} k0})Ρ \p A^:48Ha,c j|lc(eG$yVB@ 1Qa! ` ;p@% H0 EJ>rU&gLPMAx-qcC8*舢Cq uh!INvғe(E9JRҔDeԪ*$ @e\` y87_b5Eˑ*D <)v42Fv`5Ԭ(T6]ibƕ؞|Ê%E+ÇC@>{>a:rth" )gF,r$U@v!<x#SQctl8]s#@=:SS&(CGH+F7W ;h=C`ϡU*~pkk.4T1O:IGNP1j2 H |.Ї{hq>&p\`(|D14mhF7яt%"Jfm !ŊT4}G q3pP!%xcjQ =Îc-Y 1(9&-j1j(͔Q@[ cvpRO)(P\VZ{se}ʤama|L;#Š2 ՜&Kn`m9Qɂt Q^}"Uݮ-GQVvH ѿxAD6>H5FXZjE^anE4ͅj ZV1bNWzֵuw1d;ş vl pSn5:?cAc%sFD9p($`ȗgNJpLC{<6ņTt(Y:͛grWٹံ/`G @3i^+b ]DD/Eeb~U$ҝZ`dlNG Vв7W75i " )D8ܭR :ȩw(yh;9ۏ8 83z{sP'rc8A9ȓ< ؓ#3~a 95sy,zпY^w0X,-./}Բ0dШOz3곈a,z Їz(Bz0U 9,PĐx > H=1 b 3z* Ds֚%3@0YE‰/ J4ʘ@yPZ{U uА7CDfPs"+ c ؋F #}`A-^x[xAӇwDdTw0r% jcn‚cP0G`H@# T-|;8u0  ezy:b@dzdw@ոQpu<`Ox/ڇ Y \#HDFDw9p(hFָ> B2jSgdÂ0r =a>0˿$L ;#}50xHI҇ 3ـ>Y PH3p#1d xx>< F  _k@t&8H MɉtS` Ca\Hze0I0`]zD :}9uPNH؀r>M `!$}P`XS9><1 uڇX!o8PuXT$W* Їg8FQ A1# 21xXy VC:/*bPFPU`:}OPԍF ѣdS,8 ur t1,@ >sbw=P X:LMNԼ)JT0!zX@z`O}Xͺ-[\]^&zGVY9i XCqV`Muf0˺4;nopq:c%W:C$d<CvtсFs|}~=sOc8zB1(:n؋،؍؎؏ِّ%ْ5ٓ]@ٕeٖuٗ٘}-ٜٛٝٞMRٟڡ%ڢ5ڣEڤ%UڦuڧڨکUګڬڭڮ%ڰ۱%۲5۳ E۵e۶u۷[Uۺۻۼչ۾ۿ5EUeDžȕe\ǥZ}Y%EUWeׅؕBץ=%%EUe^uU_%5EEeuߓU&6FVfv &6FVfv !&"6#F$V%f&v'()*+,-./01&263F4V5f6v789:;<=>?@A&B6CFDVEfFvGHIJKLMNOPQ&R6SFTVUfVvWXYZ[\]^_`a&b6cFdVeffvghijklmnopq&r6sFtVufvvwxyz{|}~&6FVfv臆舖艦芶&6FVfv闆阖陦隶&6FVfv꧆ꨖꩦꪶ&6FVfv뷆빦뺶&6FVfvdžȖɦʶ&6FVfv׆ؖ٦ڶ&6FVfv&6FVfv'7GWgw ? '7GWgw r! ,fBBD^^\jjlnnl&&$..,VVT 224JJLZZ\::<**,zz|bbd""$>>@. 0xzfhx$ bdp0h\`䠢xx  0@(:0dRlTT@`ZغʔvVlblh@$00FZPNZtNt\0p@txĮ~<6<ΰТtv`xLDP<08  ¾Ƹ46@|^d`̜Ȧx\X@X prb\`nfHDFPlttpfp0@PP`np <<48:PԺPXXvrx̺bhd\tH@hH:Hl.(886(Nfbxt80L0.l0.pFJ@`@nf`BH@XPX||4<<$(8|zptf|p|P@~*$Lİ:$УKNHJaDv3|{Wi˟}>|ϑ2w/s"N%t`FS<#G߅fᆳ:!>d)QTA.cQ4hЍ 3;@ :2&HxFAHn[SdqÎ%$-ښACQ:`,Pp<ϑh Bx>pNK~OȰN=tPH@Z|Oe} ϲ,@@t>H,:3,2D6pX86k@;=CbX"H C@B)=sںM< @BC;F#]MhE@Iу2.`ψD:/j b#:p"'3v=9=;7B\ă7XOl{ܐ::' >? C=O Q |%"~LB#!$ $%VP |C77 +1AzP  {$uhG2ӱD ,@CHU[zB BP<q#=q t  $ h"J>H!IHA?SrI!Ƀ>*`Y%@ass!wp'XFđ$2K@' `ŎGnyVWH_ L j MB TXL%g@$>1px:&]0jV$`A$ DH@pm*Cwy 0)A"x:y/ n J@wZumJ\""ykMϊe2I 'H>܂0u\>e="&ث \=`qh@;Ԟc옍8&zk}uXP@k) H>ĨBC).v>f-!P O|  t ! )HЏByjC40!H [z)e+ x!܇L  eu8tT'EV=(= 0#` 77@W5@M}5QCg A<gqH0|=G&!y&<%10Sf1R`rp+v02> h_P=@Ѐh b}~hQ: \G~%P5}jl؆0 ?pU7$3-`0n9e˕# PvgGRE'Ih$׈  Czh*`O !P  !9YA$q'&iyM1 0|q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕp3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.#4\1F])"Ҋ( !9Yz|t!0q!"4uCWcMc S,P_ $00[U"08깞[xq$גYYsLLW` ymP@pNI`j왡Hu:P$y'P27v)Wmrwe\2*_*_ș:DZG̢sR>3 .gm!-*.` r` dpr:}ڑ,"gYP`S0֢qt]`waH% z  +4Jlk[Re6 -40wQ0O1`dZJF#3@hj/D?#u\" gJeP! :蚮:,zT Yq$"AV*(PO@d&b*fڰzJj$ 5jr8 3!~E¤ (67+Rb@a-{ 2;4fc.gZЅ( 2%"]b*U$]ǭQp@>H5ZqT =K͚"#F#odv aHBmpYNʵ~KHGP[y}Ya& hTc =x`Q@srm @HZۺupg$HՏd#Rt.yA VPv7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 005$6 Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR1``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLKc L` 5a"p@Sq'K>;P$AӯEBd9wUrcFpgH6$p{`.pG"!7W9„,G |7O 'o^†o;>$ a>N;'o;LϢw`(oT>Y;z4>y~rtV&]iԩUfkرeϦ]mܹuo'^q!;tvēC2 @عѱ <#fȓd_D=A&ؑS9=4OTH{ o:RC("Z,{ocB`׆bk/Pc'v'PY1.*AJ*A>{K0sL24L4TsM6tM8ˇgt Yd x &PI2 p(bH2Ey:Hy`s *Cv[,}P49g -  v"IHp"ԛi&N=}G )cz/ @qFl/ `0oz%2!J̀0[Ƭ9GU]>Pi݋t"h\hva6 @b3xc;cCydA@%u*  |bWJ5U2d{|7|yF4\ȏ`C@Q { ҩeBs$%4Ї!!0 Q 5nc2Bz@ zpa $@V$Izؓybh8=QGyBH@ P=DI`B`T P3fM!cKKJHU;`  &T 2yOY "4T`HG&dc(lܸ@KjpHjBD }E8L@B Ld"r9{K%=;!1yͷs2vP-YH/_xc!uIUn=th]WL =2Ϩ /u8-j9C |LOT"_yy\` Cr(HhD@d@ֱ I㲒wؿq# "g@>vPI Ԟ IJ Çq y8` |(( y>>>xn | LhA>CC@p@B , ?=IDci ?zRwX xsNY@y 0Ä(:\" 9f`H3%;FIDS 3 h û ɵ0{0yp yВvX'Җs@FǸ"w0CzulDžSчG1A`_ FMdQ̀O YR4Ea>8sT;' zd(}Hq$ `GQYZ,[|\\f SrGx,%Ch NC5L|DZ*ȓ8p KA ;8ˁ0D%K4x҉*12 D3&" @BS> 1AHbPO 5k:0J$.+ax+C`˫`ȇ zDj, ܡoMPL `LQiKy wKXLt!P FL9R0t e L܉PhP< *;=C0q 1ą6ͅ 8z. K]Wj  y̎e X$ $ ű ]k#vw$$ | 6HH`#la*ځ-*]2L%k B8yR"#!'h|aXY1-3#e$%RHz«с1@$ S``MHe*e4{< 1]L }Ӓtզ(֭V NxtVi$N#Q䜈(݊KPHsԁI#tx( [5  h2Iѷ4x xyywh$ 9<= bP*yt+CN!-B5yȈiLЇPlXgɇ $aP S@|t P4 ]w 쉟؞HJ{e\t0ǒ%1 9Oyi[-ok *qԐGQ+ą" ۷c :X3JKEuAHV.PT+`qA%JQ$?esKГ[P/:{tc[\B]8EJy8l#QyP HJݯ@`}( ՠĐؐzF d]  XN5h߽=`&Ͷ2| #xb`!!Ww' F`ya!zOf5PJ܋|Nԟv۠+v"P" M>5LA [e5%"ٰh@DQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDxHa]=cb'u(05sneWY=.(Q5!ntPO  ćI @#Ij< EEdλvwP6\{B!vJPI&yh ʠ!eR!&UhɁ4gpB9mRF"!""#}!&4C1!jܣ990% PHYl-mr&Ou%/TKq._s6Oy$PK M`zW"h*;ns?s2/MDAOk3Y^[")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u Ё]2 Obc$H6av]v᲋⬉L^#_n3 KW 1vw tjwvIݘ3w).x? }gX& kc|h呂0Ӱ¿,H  =H&`efՅXHa3]y?Q ]7 s0(/@xgx77Q)94?$U ?獴 8W> !}>iЬw 4UoQ@3&5"+ 2q[AoQ|VyLY>RP#}04C8Y_˗|PanXC "@oh8!~J}&Sqc{V^ifN|Ҙ$W﷍{'wXg 7up^y  |ܽ+h ‚Kxp%|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5^qyCcfs; ~"]%ihP;jٸjN[t3BBChwKAJEbrO;ޔ@O\+bXi-B󧎎K6YCAPr"%HT<쳞<8tOR 5I!gAcAe @Adr>jUP+& p?<.тIƒPGRy!xGdLFс-^)X # n5җIF%#-4-'r"iК,#;>)$N@:}^Ep oj)z):*}BqB", 90`CC 7 N3A=$4霣T`R|<2S9E6D!@Fl[@:Q<$SO8Pza u XA2CX nN8"Ԫj==\"m:P ꐽ V0梻VTrR>+[F Ѐ >=FC=X @(SG>05d]lYH9nyk2_r,a#"tPh"MI@]L7/ D7:k#()RV"Q#zXp$2~ꈖ>>oCbA8G!vH % 1@ա"M0`&t !7O!ه>~spQ#gd$"@0, n+aY"a2|~< :$R`1i ^bsl 3x ^A&|dr$-2sC8;fG<:h@ypc(Hsh (<5 Ft 'Z'8@қ_G"P`>f8rx`WBc&%uẉA ỹUp! Eȑ$;(֓+D9d"F%Ta[AIՁgDCfA,HZc.SU@!p@zTt&4:PȉQ I׺"Dם 8v`H TU Q&&d}ld[Twr>T^'jUIDI!__so<ɠH  B`e"ό4ךA&qaZyVk,2~0#,awf8s&`m;LH/` ^M ^Aɥr(@xh Cxr$V&LtzifRV^pT0)p@(A\̢  H (a%FDLq}L$z)ƪ}b+LdT1P1݋ߑkrd dY`O9-s;wpd7 y|n$`Bqq,A 9Oo>r,IoXc [Aaգɘk[>BM\M0Q{ƛ*ppq7-. `/k6HQcM}T}vD@3eHK#ϹYlģ Jpp?65i6F\1y 6_y:a<[OH>,2[1m; !l#ʃiY?xd ߐA"G @03s7NB !3B#CFUG!LS:h)H yԦdΑCz%[ BP>vz݇ڇ&V6lBK&@w<$G!=^A ,a䃊`\BD-5FCUD39A, ;ަO Oў Iʽ={ ;AY_A _!`%Y,MJCSLԃ;5C8`; ECZ}0 r ǘDaD ;A_#bMPv4,-Zb$VbFdB >lH4;(-+nBCXJahA4m @4B_v8 zLA@;XXPġ+bD ! `m@$AAGzC(<;qG1" #B@ԋAbAjmI䑜*GGЌ<\^aE4DЊ!@g%H >d1h7MDHc%DZY!IJ8>rL=CB@m>XXM:Rt2@bC 6m] nԃ'5EYbdC]" !xIeZR\CF4!̋I2@B8SEXiBP!\HdI>J:\! Gh$SdHŸAHn afY-DzGD8CC$ɘ,o9 }abOƑT.I%_fj_`H㡠mX'mvF!#Đ^`)du ;]EPChyL贅b&R.fKR}zh:&CT&eAH'g#yzZ,:XrC$()FH@= f,<  W4(䃆gABGK*߅DٽmIiA|niE<& e,GOAK!;<-Yi&_BܟA4@E(ߎ a;p #6Dt]ϢFA!NA4\*)% XiZ3M`E4(})5gɃ;< 2m#FhE4a~ V'(f<؁&`9 #n&>=+:܃((Ljr=:ؽë^Zi!;>8@ރ&8?ĞP(~GRjޫN>_V *d=p?8Cҵ]i&x;סPlʢ^A128ʥ,=$,;Cޕc~^O>@V\!Ţ,ZEJF&i*C78Ì .&:]`C^!5 RC:>@ r.Gx@*[泪زJ^#GjA(YnBHH.vw7heFÍ$_: < (/bhrE .xpZҮE1DBZ.Z<8薘B (Ц=FJ[8ӜLC><($G`oӟ!.v E/q )5/B؅b-|0ȃx!0fnpEp\tED h~%r;, Nxi oyl T~psS~VP \bS1-G۸p ZhT->o# $G oHN/wh``BB!ԃ =N⦲*2+kP ȃ^C]aCACIX90`Y@:o՞aMohAPX[-/ g:ZPtE99;DCCW"9Xѣ24 RLٰH3Lކ#XÌZ C2X%A,Irdv, \djTĚZbH3CKFsnIAOTF8!_>8Ӆ/:ln¢'%{so^ӳT>uEו>\[Vs3AȈv# nv}[($5(a@XσZZyA%%ׅhT0 w=jEP9tSGz:dȺ9E` !0l@ܱpz 91U7Dg {B 7W?#`[|-ĦyBpC#@X=l|1\L#8<&,C̕@Kxo=:p;7JD)83#F3z'@#!0kD<1P1պj<pDE7ìxoA`H7&HD E (  s֕XqÃ5tjg>,r`F'\8~}ycO9^/E 3"5AD؈w ZT  )hF:dH >!`hN@Dމ`wX;tb+Ƀ/I3N0!BcP 1WoCu[6at;7/!:ӚosLz0,⃃[dΔ7^Z'p ZʮrZŧ*K#a`Gu 0҄(U a PJ`XLd]XgehjlݖnpY HɆS(X. L5Sd |Qǂ`F0Iu^y5~%-MU-[d65zG`1 HeQf2euޙ}蠅#5w-/t#%'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGѩ_rAC=Fm9'ݷ] A-0V2f;~k'O4`Gyqg>i zN.EAIӀaw4jZOST hyIRBLi H䁎-S@Gq2ЁQqkep`?LpK D#HO- <7#!IT U7.}IBP<@j8Ō !E&PQSefX{RKA& tLTW0Ѱuʕ%-bQt ;5*I*{dFEtHXaGA>^(=f˛3%rғ|*!yJ U;[ 蠣T'42*)9kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&9 vL<ěPGf?Sv+"&ӎ8"EG`٪*L $G @KHy *ȀH)d Ҁ}X+ 0O40RP*_JVn6j-g[jo^ZɂT*!>ZBHĽװ؇LG]|! 7BHjLt׏xTc-=1֧ߡm:!#`%}>쁾Cꐫ 7 $Eҡ}ȈQC0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_xyTTx]J! s@|c/|M@l'HKd"[b…:k O$NFD pG:$(#6 HKE  lijdZƏL&0IΡ! !L P 0fk( D"@:@: n86nC @ ‚ ƻb k !A6` #4*R-@q!)(R p-H!@:iQ{ cM!(T !LD qqȐBNgJj$ X|_b[F Q[k$@ A a-!tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'Bz!n%l# * @-N$~%bMba c&%!J*N bϖ!;!)JP瘔b  "((H<  XL. @BVt@aRS11A*b 3dT*"SdR-7NHR@@] S.65[N39>_fb!aTS$*5 -4%P!`2c4ܔP>;[h0O62Ʉ(" {?@tY* P`BxʬZh%2j!##LH`%&I1K4Ũ`A1S> : s-c;#AҒF,00@OH>L$0p!`emKkvIt@ i! Z@ҬmI !@ ⏓6eDb΁JJG&4R h3 BƐt D!*LrìHRh֮pAA$ lT!@pr,I=0XU^硝ʸ3 nT<TZZuR2s+ a@D A3`j"5Gbjkԣbm?R<7 BQm{.14a8, 끵ZpkQpo[[6y 0-킶,ܨHQuU\Z(V:bB\B A FﵤJ@.VFII3),5Rl:aff]'iAWPG6hKhA.! `A-;fF6m+!iP^D*I.F @ !!l"8Uh!ފr_1STc } 6&Dx9B)F>R>B|L!Pp`B5l R,5xcI/7YAk@:Do7W5A6BN,e|W TinvD`¸r R"wiGX.aLaaIu2Ep*qG26-N/V$AVsp< A@$ D{S[ 6L&Z0 $@ fXvT a^O2{Ȋx Z8Ձ lkn$P ayYl tS䎝(͏"ٚ*Ğ`Th&P;vKlCh+"b6tE@ *m5A t)c$j ĕq)Qkp*"t $ x9nVZMDJ! DZL6 e?$` g]:2 H̗Zjʬ"R=@*Ρ cxWjH//0#XF^)"@1RC{l#K:> cC3,6DdXC.P*΁LBY hL@ $?-Z׿ "cKC=0kk("Ȩ8F38d<"nz;{0;{6*$"F`z?>#4!"`!@*|⧇VY[ٟ@:ĠDy%AhM@AJ`F?zءd0RGTLUQ \N%맦PFn*.a'b&v@iu/sW;;HTPPN(LĄ@*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿ@!X'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.ϡ^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1XρƲ0K+@"Z;= $AKu/!E@Y۱DEit^OK~+i >b+ɾC^Cu6(_wbfFh OGx,臟_qD.!"e0@7ND!;.>NCX؁VFo;6MIi6֦yT"9w34P!C&\.ƍeT܆y(iH&7(P68 Fz2>G@ >љ:լ[~ ;ٴk۾;ݼ{ <ċ?^ZA#v$!]&@ːq;9swUq<@|A[A! Ll4*wرAF!\×vܕ6U3>s;P8>L8gv'v7cgF=CB iNJi%S e 9 d4<$%O \7p5p;' _ 3@GXΞ;XA>7jk_FtՓV<0Uՙ0y ;{>׻9v|e@ߨD'Lnfd>\Q#,Gӫk-!,;q|M[cuɅ#gdLbF@FWe2CFtJ/tN? uROMuճ +(hqF @=o d,{g6Z)6ٰ[=QOo%t<`8U.8txG/E. _uw;g\ VOߏ)ƒ&r!0@m<`Ll|Qq0> jDT q$+K7 &( rj'C .L%0-X@Tȍ 1t|=PϕqM 0Cp%lkfsݔ7יiV <R.Ðǘ,#ffW ΙvCa&Ιj]B jhFv&%C#K_ Әt4Mo?4HcWF4`* #l } w 9Rye ¶$ 3B)tm@,E;%UI Acj whc`wȕb>XԵ5# Q(VЄ-7=DU HaGT֑ʇr1+ZV,V>UrzdWi@Kwl.P$N*wms]1a$LF<ڂ iYR‰8#;e|3$;PvH;0H|,15y]RA x^]7G,PW#qxY[=:6wFt3^)yK*MH{4І<歯Fk#:6 f0f^tN5rNP ؤPZR | @ zЄ&M>@A5 mdb UAÜAR{0^ڊ7!@:tBA3!`;PPPؔd%)#JN1ht:N%%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST c9RY*0:3nd7ݸ,r}YS=̃!|` aN|I.*S>ϻx7~4>q7yaHDYV~钴KpϟENb!t\w!OHInja͛FTqQ+>gEb36t7`Y^SBE|T$ pFqčT@ d 9)BȔdHMDBT7&*A#F! NXaZj;.H".|p-/c54'eg*A !CdF $DCyrFpoپ]xGc GaZo~Fep A1BG0K_ Z tSd-i*~Bf$L Bz q4 0rmvtF|/nw T. 0Z=30[VҤ0OT!(d*fE N;& D o@K;аa>.՛ Q }h( 4< X!]'Υ1O1,$4Ϋ@ *՘E9$)^{^S.1뻗G%Zw,sh S,{%[(;5~R*X"|Ȃ|I!޲u T-c7;9Ki}nKv+N@f%SG`bk/ǔ@td@9 &F! Q`_ٵ2,A 6PlSx{7(C?1DG$DOD1EWdE_1FgFo1G[M&=,(}6SE$*Au2hv䙀 ( 50ˇv.hms );@wt8v  qwxi6݄r{Ɂ`ǁ'6ӸpE(|*I+Lj8,kW(&t<}0,3Ф9DqU Xe}tHH̴M ;+U@yPss6v"jh8JA[qU_yFahˁaUy0@uBeh%Ig%Ԭ}W!Lz.z@@CӊSP 5h8+` ) 9}Ոc^UՐFx#LFys9iwb#v{+>?7 t7lF8G :&$`P;tI"Z!M:OMk4UU@ ԡ|C2!ATI EmbLg7 T0Dr岘41]A#FId&uHd:}p{@JGFmUeP>aT2Pn |`=պI76>(r7NJ'qU$ðՇb[_t 2􁏒d `Hq .7ekC@b7ɃY,FYh@y̬ wXNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW  ((5>jH -r/yK:$c&wМDy%b}9EByҕt7O<  X =e)ċugG{ˍrQfB4"P.'qQI`s#?8xQߙvG|I5"Jx-| .o e+}E?z#ֻJ&c0} PC'1.}G˄`5d>ltIVFj \+оȽ}:ϊ Vèo8nޓ|v,)I "Iȣ-IHd Jٰ 4 6y  hG`>Ev耤x y G|tr* op@DlTɕdɖtb5,upQ5L.$ VEƐ苗Ȇ; /|;Ph Jj t˷˸G!@v &Ȇ{p{U Ԉ>2}p{@{0L~cd85ȼQȭL1$8$NK5(88Ev@P+lq vNhA?<ڱ|H$ί_tN Kė|H(%;}x HY>x (\ РQ j#} M Ia9$@xo(f 9L o4"5#ERlK?Ȟh MpR$Cz`y'(J$|$5H5͇fpxp ';Y"|h"Q% 3M9}!ׁ|vS%PT-F5yDKTUUeU;(9yq<0  ȯ֢ՆL0: '0ۘbX v.K-Y#;1Jaf\zv}0T:FL цǔ#hM(EhA@ ևv^Nhy0!9eЇ{s ,՚IiPike  &L@yxn@w}`U(cP$= ɱLnjڇta-B_l*$r: PM|@g}Y,WqgMb7,CfHE p}p`,hPM() h،`lfȖ8jZx>0yevp y\T Hb鐊k_Y), 脀FK( <11m}h><9KkǐH}o{8}(|w&H8 8Cih+z؀tn hij &.8"رÐ?~Z~>LJ6SGutۙ탇,!Hz ЇzȁDZ _ [L+1r9ITuI$9|DU:UYϐ :^q}HTWu/:$=X  t_Vi,ʣFw$f @y>IWgW|Xy7C \y˾5ޅ7&'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF ЁPӯdN+9Q9˸O[hN/wXˀp'y/_fġڳt !)9Hw3Ģ{0"Lp!ÆLhj_sQĊv(rÁ$?l$K-bl)s&͚ - V&B@1s(ѢF"Mt)ӦNB*u*ժVbͪu+׮ Ov]𺰁 Te)^Kn ͓Kwݼjʓvޥ /exqc7eJ>re f|x5tF.PҲέ{7޾.|8Ə'AݓmSzC'3TcáWI1Qwų.+_j~-3OdUe CFA8uVMP9Ps,]7S r#X'+آqφ-:d0A܎ޏx`lB~T y%yҔ5yL'Cj*4ЛT Ob05@/"2ڨBi`3 Nt<D`O:$Vԉ<g:`D<2&\-GZ-qS<{Ds6 {#;D׵|<ꑵJuz=A ȣCS_ק:P>#; ϥts*>㌖Cd ,x P$)A\EC Q<$|$p;fc,#8@*n  6vڡA+nēLdǎIc(wKPL_ q %\&<  ?AL`H q3h,a4(G;яJ*Fb<"R40AAQ $c!H4 cA t60x/ob :N!cֳ;vS21(@2{1t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6PlϹ^H>x=i¾;}$9m3LIb AkZ6Ȩe# Xq}eef]Nȗ0:ͱ sy#q62ӛC=Rr PuJ53_Tfر z:ސ1p{Ap b Ny]!`ʮmE,|RgFA>$gm@+e|5Ał |B>k;A q|#%}H`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^:z$^ڬ TEhDfD͞B@=Xߵ;H%>@0|\A(:02!C \} TUbA` `C, a"x:AԊC:X?=lLlB@-7zĉu\9QAl<;da6:@SU ]^ɥDHE< Aa\-%ZAa1gḀ1 T}D8fBeB@HXC=:j'!W ރ !D*I$۪Ɉ*J 7$6'$cBZh"8+⃐;jp= 8?PCD=փA*R)û8bjB?rWA=1Ԟ) @FJ ;\cC^DDE^dFZX^dLLdM& 8Db NB%;,G> ,"B=F=8e]C^އ|̣p;x` AL;D6i BuI&EMa&Ie:IIWVr]B.N* 9TfA\f<4BmA <$;\ff6gnn`Хdf+u<8:b2f-#BX`nO0\B=B@f.QI~g"mM:BhJ!pb;ĉWZ0Lndlc (u(x_>4B=IP@3LlFZDօ<@=#Ŝ\?8`5), tnH 4:*ę/ }_z2l$t($I*(q"DvW՛.") $cB &RDD0*MQ0bɆTUi\9u\IJ~W$QDȃyV2+CDjშRk!%æ4$ ̓:|3NT>ŪCD@DXRaỸ};:jĽTH$yROkC=liBv`9Sce^A ``)֖_  C#zn ibXBŪܔD@ܭX<<, @0Hحؖ4I@=HC-톕,ےVfd'9|@0;x؂A$ H]4: gF-(ڎb@*ǩt-m-H@:BA n`<nҮ`u&b$1,>^J:l@Z"40uH:T>0AĪ3dfK$@ 4lO3T0'II)G=% p 0 @7z>EAD@I>î@>Rރ2D0:EHK_`HI0^>m,`=h@@i"6 ( <@YX)kʖAo>>)ExeWƠ#If KcJ\^̊,KjE q><&: ZBd[lݩwr:-I 41bZ>K VC. 1V(*D$S%eAd æA,A#rU͇!L:ۣl@++F5'F4s)%lC" H%T13pBpp^+b3vc;c;]r=SCSHvbPeFXtehvii7 sSLkw_{ԅknvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyy7`uĞ0bN<@y w`(raINU=bzK: @U mODKDQ|^>Ldrh𥕲9sT!tgmXYiGikAD%CDRloA ^^`,r T<\; 0]ZI{#6s%D,G$PGԃ&|>b?GXR6/a]ц>Z;RüW,AԈ ~Kn|R1D BPu8̳lA<D) ȃ{@1 +]΃}SNĥdJ>lJxt ^Iο̎VA < ӄ7>X@v}$C$YTI&]惩U]>lBp@}>ThxOA $!^C=TA@ݏDXcJ:ß:1'BbA)-BmDLKU#=0>)rUA׾i<}-(@&A|&D(OB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7}`G@!;yN_w#&}ᜀ(;7`A& n#*3p_ "c22Իo_)&.BLALA^* Q lB$>xqǑ'WysϡC @+|yp[@:?3U P*8Q%z@C2sO>|i4}WYnaYf"+!FI@`JTYoG `e:z櫱By$G1j1Ja xBI'D1SJ  @؁@l~'N\o!_MªLjo)J n1!%@CVPá*q7+i5· ´d@gGч2 a'/йm=ߡ4$g^! 6;!SgG,_}ZɒuPMP 0DRr @I@>gR>jPJh`s?.)`9*@2*@^  ]bHH#y$z}@b۲&Il䱉g 1 9/!@=0!! `B9Αu$"`<E7P`38`]QGDDH). C|BdD$呕@*H}C*` tH(Ttp G@ # c ` hB74CƷ+ @{r*ZA@+OyΓ=O%Tj4AP. upȀgPnGARx "5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:0o5O[9zYgVCx_X\Q+`$8N'w&Dba5e` jtM#C49."7K@>@%d:%, HHj\G 1_B tzpzYQBҵL`؀8H6&GVWWtT: :`•`zqy0c}>ttiZ}UGby5"` \h c!$0=aYaG2Q4pRd!9CL  s]4هjC&_%biE 7>W;NB g(OX,=!A-hAQɌOLtc€X0avhX: |dɃ (Ay章SM@Dpy;ʆH"Qah!#Q2> 7}u-SV3y@ @Oa} 6apBqM 2@0vM|r"iFOTBJ kݓ@B(AaAg$,؄@+ U|# @C,x$h(.bLJ0" F0 `C=bP "tp H߷guoDY.3}lK@8wdCNI+6PwL@\ C1ULStUJC ^Βݐ@3.>Щ2 G`@%'tϞWi>Î6XPCdٖ^#ڧ}|\B [&T>8@Hs;gR Î$<EC *Pc=K8fqqg4I& !p`F!8d$J(Y,!"N** VAp즱bMND*gM6KbB!Y:xB#@iAg2>g@xɰ $hPXa!& /߀0 H!Xa{8 !]ԅ!P!ڧ_#P*7R I"!| 6(@A++T( A&L &{A@P~Dޤ1"bk gFL *@j6 ޡG#!}Rh)pamN/¹aua`@`]*@Y> B#!`GaZ1#5r#[a3uB("bc'5LFA! (t0r"&@f3'xƯMejHF R@#: -և F|'4O#r-rOԠ,@g1"CPaøl af !((J2ha0>PƀD)'P8HH LYHء-F%( %8>R R!H@6+\s88$`KH2T2$ n6` # ಩>B$&Ca&v|2!'B4"0 }'U46/QIX8 $($@ 7)^ |FZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)`XeHtISH?j&bJ5B+ (=JI4Lݍ k& @ "La2 8-Ae"=´)3TLuP̸K f&Za7/軄& ^B"X.Bq:PEuTSb#`3[\Ȅ#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,d>ez6i=@<@E;Hүu/a|˷d#B0$@"wy5#p dJEnPs-uvqQ>a)%XuS">|7\!܄DN8-ҁB(Nd>83P49O* uEkZEAqLӁa.QJ7%q;">,[[e\PMl",1qIVu.>%_`{T9*sCAEؘa7HÀv#R.r[!xh0!p@ PReInoYnb2!&^ZkFgYy ڠ>?!]G?+s!4!rI6n0ҁW j ||!<%|)-1<5|9=Ad3vOSXyѳb/ BԿ]r_guKX#X8(pEx8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIA'_AP !sw3;(Nqv-]t` -z! *G` t:ǎAo^=t `+ByIȃ)ཀྵ@qN+װc˞M۸sͻ.Ny Bn,Au~\tt s%W(̝N|K~&Ö́ax{s"T}A -^AԃB|0= ($h(,&Nd(vNsSv 4dCP8P@ CC/Td5ިAFb .4>Oi7Xgȓŀ"@95;TOi-Jb~gOS!'褔Vj饘f馜viHE'YʑW;=9x+ —k7\ 鿗IXjA@B #,Wlg!FI>̾@ܨO=[P>`\8(?TPO: >3{6_QN_B`@P8{#>$~:_a(;DW0HM&;N ؜-_Sތ7G.Wn?B=!g砇.褗n{O< {K9c LE| hGH@0Aԡ$Q:6EQ2)7@gчt%QD恏y!9 *PDz` U;q )GI-vH ba2sdb%A7Pv[Ҍ4ʃq01Zd4S&\_ġ> 쨋 #F>Y+%f2Ur!r#Rz-5Ib R]z!8iZ2adY<:쑖͜ E@@C#%%䅃LgM% bg9x|>ς0@h`H@+QF4\ ҃ TGJT@@5Ct%@R:QĢpV! 0㮂 5gv)^ sHuwS0KcôbƮ'ODH Cx+*3 ⰵ!P]DzYX1:>PC#[@NF$v mpC %(*k$"G @=@j'2g|Qys@ NŇd9DAJYN>0( wЁF 8 @YD !pLs##O3: a!%K oPK$7rP\q0 k4/{w+X*pB8 duh='X.v8rAR 8Ǜ b-*-c,ad[ɣ]22 3G$''Q24~G|HԹq @fABŰg TT CP1) q=$blhAT/d+vańϯa jeG< AjHc YbPArrXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7 D}̍ Zek9.!P ;6 $ZȍzOpa-%f@CY (\>P(Yz , A+:M :@tu0cJ7y*M}7oHΑ9!cA`D@41қg>Y^x+EKURrg;qAH t&U=ST{aE/|v>r e!Z:BF1 K<zfʋ4)P(?2< zb}L hjZ[ai v aDz7X&Yd> A% Gv! %8 Cpw?" $Pg\E?@Av212W*e! PbK"2"X">(rS}g2"SR`xzXOJ )tb!G t i@tb2AL ON(L 7 Nh P AX(17e [F1LG31 V#;Qk".%6B&F!Dh'L4b}7сDS@j+R+AvDEj``-b- H\!Et*>5`Ej*% = `& `T"l.7b BBuPTwLe8**C@+e% 9}2%p] y:0/r/b,p`dÃ06c5h0 C 2؎>|cmb $*%`72=^E@ H22v5D@p8:v#t#+.Ep @ 9F`29PDΡ=48& 3!Ls2F -1s50#MWXEYܐV0 6m6AeDivӇ_X!GP8  9ZZyP ^82qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;UI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*!*O=؊t:0P }Wva\^u hxz% W!Wqx`X%3K^UY7^Daa00|HS!V'aF'P!V[گ0 fiLSGj֌A@Up%6VjKsjh y&(Ŕ 0Te]qMGdW0qE6"ȫN*{%wrSRvE;T+F {lF8Hzf U{^y^zsk{x?!:| K'q0[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv. !4^c?!'kb(,)v۽蛾BLO /~P0[#/b ca 0aPƫj1//3'ZQ0~j cP2“ 2bP. +\}Ԡ0yp,iПf` 0yus7 7c88Pܳ;"69jZC (2:(f||!t^*hr<ƣnL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#":pqKktIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2 ng$j斒V (!3.yՒpJEWi&@dk$7pפnբ 0`Y[~Vt%mמ  p-*°s0ʧa*̢vl8yM'H'q m\"o~?tx]+ |3n6V{l]P,a$M" 0PYq p[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*/a}e_L q Na_j j!ŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-W o;hV\ o@ .dC%NXE5nG!E$YI)UdK1eΤYM0ɻpu:\< `yJG~`"S!)wP3J}*PoŐ T0+uJ!:JǸz 9'*y6%!PCSyH@ K!A CZHs$k!nN*`G>C@g!Đ%!MXаy BtQH#tRJ+RL3tMF}j.Q8TU3*YŬ .js gtsc'*@\Yh  c:XPz0! ՆM`yV &Ԑg6!1xܫ}Bʁ.̳Z`11.{LsA3 SO"[؛7V0 ruѧz`s o2fsyg{g#0`hDQJyb`jzkkƔ ( vaK؄Ҷn{oo* W.k~ q#|r+r%pb3r$7A^E|@|@wd)MyJT!(4!Z:р`3vR@=_ΣZ dAP"t(1;&C 50A*CUѝg=퉻ő*>ypk %; d7V`:I%|H0TFlBqB0,|l \lK2U]1]ѧDѿ De1HF'wֶtC%jQ U:K!/eG^сiQ0x;2`¤P@& \g@2Rth[Q)w@L C3(i:ῥC62ȀGXFVȨ4^"U::(8U Ep,A(a>eᖅ UdUtCXXy֑G=\FWӕ*[:6CP{ kV@91ekيfꁐXt t*B&VbE9:5؁m\B.`4`GX9'# $b[{38+ta; "Ti@5$yሜG 4Qs m&[(Or|匜e$0F0.Q ` 'Ubare2v>e 8BrKQsLЋft\c ,ߡE4Wfhґ9J݊E= lR Gd2 UB H) Aj<@P}ld'%#F dh/B&> u<#+CdֳRRpESFCX@\(Iq~ #H"d8b&vt 7<9 x-EHSKX ]T&ހ 0FI`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴNd3~u]kg{IֶUDn S~w]Q.%(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>'@(.}Cs0=3&EFuv*@&[ H`AꨯͻY <tE:0"N YW!W3 ˈ.A#P {ؠr?$ " @ #Q!؉kq5 J6K: UA ;7sF/ dpUsk M c` gPйYAHztХy?Iꥬ&/ {(wPeig talh'ȀaruRC̺A BJDOs θz X؉a99 DA*qh*}8XH2;HmO2'R0A@j | NL4 P}(|Ǽ(`.w115_[yk0-L 2NwDؤγtPT!X1 ˇ 8M,N]PɁB 8'4Ḱp zr#<,Uˆh˼: }<ːL(p3.h @S.ceP"-RCډ"vHH)0r1?4NˍR1p(#PMMJ?R*4 Rq* `)iEO ހ!.2McspJHFwX(9gBb0N0wU|P x"_`dw ;yEY1"16^dF=բlG/yI4Iqdb-t+2̽@ PxTM 8tb؄\[[ȁh`G*Ihdjf3g d4T3>%1pͭOCB0d8Q|CP5mG@Jl CPPcX fhZ+Ovc$ڇ|h7@7T=T^<>2dvh`F$MP`)d0N0M~jn;XOƬd P2ɠHPLQXbkiʍ ~Tτ(|B0y^lf8ҨSГi\BAE&Þzlœ>ó-oЄ!@xCd{@YbTfE^n9(ƱStd @}Xw#}pzpw`v .)3Co/ u`yPP5k$^^Sle|8fn[ϊm [Vy@MT#Ai 5leAof=qv#oˇd P)7[ .(rqw#B!Y"xȀ|@D}-wŅ_Çk>iE ĞӼ}`"nd[56c|OA >઀;zgGf4 F p?C 2>y +ۿJU~4Ddz0 e3?SgӪs\mzxώ(wxOͅхyy2+h „ 2| 'Rh"ƌ7jH#tF$ yɋr9KiД ;3>! :%> )"-"18#5x#9GB&<#ADEA I)dANBY`N'm!č>AANp Uv;4@:(>mÎp ぐР&tE5GhCC Y*Wmc %Q, A3Yn:W`d@q{ΫB="4 j>4p霣NTq'r/ԃ!91qLdAN{#N:LC:L0p̥N9BӚ@!4 -,)j}¡#@:Dy^wJC ^(@@.^i7P>8 !ApLzϳ9)zPXADp(Mu OtKӇhr\goB@ᚤnA3|i(?٠"āf?(< Cc"Bn CB<(}  aw XD  T: v8ACmG?(9y.e>s7 s6LDA6 Y!@BcU`'ZLqs(ЇޡEpы`cSV`l 9 zCO!y5^J= l?qk `nbaJS6 =!AhQL Lc*әҴ6)Ns5Z?L2(; cp2jBz%UKmSS9 1#@;SSUgO (՛⊐&qBԊ(3CP >` 03&&nT,%ppEiʉRDI}E3xACQUk[E2'>@1 rqb\i>4-( iD#0+wh|1+D#8գXȟ ̑$ǘJ·Q$S| MOr aCEjPt>1,!93P 8DN/hON2;Lfbx@ns`| 8/p /!Hʒ\WQ)sH<N$7-1#x"v%vxMbІI|嵋9ꡐ͊J^f7M^%(4m <X|Zu!`~A\! !Πa1UD>AbQ9T<=,=hVwía%VD> H "B5ğ@E9QA ><4(TlB<<B0kþ>OLY0].#363>#4F#X1$%$AT!D C2U zLh@:@z|C胹mXC9@Fp $q\c{;~b4N&eVe^&fZ>C>0J>Ȏ`C090AS@SU@LV&>̮|:W`(L ^]6 0 m,; tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]k(tL`‰dB]lDDBNL H OBBI*CZv(U'*(Wxɑi;XG!D>BYePfWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 )EXA@9x;;(˹ԃ!>ïRX@B(*e=iL` مs,)\AlE=CmOhBDѮD E l<(A$ChEm}Ga)KN<}KIN,ҰvC|3ӡE>=ElrjJYU,B+~%ld$sABmY @+8]@)&<Bס"ÕJA&..6 %hN脐`<VzD D`@<[BL@A nI%OaO0^M MB\PPan.FAεc0HĂN0\kBm[[UAHa ģ.E!=lEXH~&M1kp)o:<0 KdFIJ@pP䚩ޜ5 4;D0S\I 8R:<"@/c4R> H'2p|ztHCmpfEX@A|&rP|Jɒ$fXC~$=1  tڢ)U!sE쐁\.̍@&'2((*%>X@20031*MنN 1fQIc^2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH<1? `G@lK[Kf"5\p1#L7S?5<i.[p:E,p@Zh@VH&|z&׹V+o>$2rhGoF$+$K 8 8@ 1 Y,%(CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:X;h 1T_7vgچ"kKP> ESp!D0NH@NzRk1)jT[bMFHľQć (P1m EP4Y^> hH8Ŭ;c>0 l̸V%he:w' ENHXqV KK pNOxQ;) TP;XVhWh7۩a,Fc<ZȜ`!)C=hiĆgt7\Nn>TtLY&Gv]"6JxL EC'I*X}JkDdJY<$LACl"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/S C>!˃ @9jAo!CAÒzZ4K'^dYA ;J<1\ 1#˱$ ٟ=(ey'Mm|ü /DLûT=dAlLstF PPDص&\hΜ<`p WO|p8 N\=F՝L|ZVD^~CX@̈>B~:|퓎q@ݝ0&@,4MӠ8H)DĻwzȓ:(]y(0;;0F!!Et@w"3x̋;y ܧo^y!/OS\̗N$o;<p(PS:.ц>"p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}>  O[{%Fc }w E-pA6m:0o; ם+qû|u+GzꞝFqTy@RRs6y,| HwlA %(GA4P$3B@ CiA` HJ"@OiyA}jhσЋ>O'"0Ĕ3 uq I),; &BQ9 0+ʋt|J8*x.ڀNJ{)Mr=t]v}xWvvR2 }>`aa@NԑGha4(n ɦp ̠9 W]|1Ƨ'Jzק20Ftx " oxvؘzΡH/(PPv2j: CVèfQG njAO6+, [tI@ iǭz|9'pX y9믌&0w>0%  Dd'8hFu;8y]EmhHTL: } q\1yqw~]c( QߪmA+S> !0UA ^9A~!!ah_;GFDH*\a$&x(2v<mBxh0DLg'b}<;v%h%.;@'N 2cf ǙH, ]HX|/J23E |s#@B;@ c:}4<)#6i$tCPF`o(1a؇2d!"!@F2RzT"x1٠S $:` #߰X'{Gp brE_ALZT @&<`FaB*A!t'θ:4Lhk1LiZS9N=( щ*V3  y;J lȣDpEc0 HF!q"9 q2> MhnIIxBy>.1N C2YQ)E鐀!sF8H#>Qau:XFz,~y#'aTeq́`;b| r!`E;`)I51e҅SzP[9K (zrH;/€cvy0_lٰz1GIAv"5JQ8t';p7-dH aP<a@ E}G`%QH#!F5<(BeQM8_~WϵT,L EdX:hE(`6@>bF*"fv0P0:##o;"#H {䁂LO@ͬb !B*BR" ء@ TN@&#fb³)*xabTZi^cj+ bX'*MJƮS:SRpΆcJ"$ޡRma.Ρ(@$X?CTZ/&H' pEPk&R%, CD B AìbV *BuQǑ5n)lԁo,xv dT1j+6@+mjȫ(Pʬ!ì0 =C~"@e7&$nB&B# a"JB" ''ȃ0HҞzbbbb" 08I* kafIZe'+L-Dr+42"݌'()/" B<1Y $G[ٌ/D Ԣn)ma$"Kª$!eCFR-?\%ljr"/.2"A0j6P' pLI$qo'L$6s0 (s??@;L),Ez ĸ6qd"T'0@"b@)qF FA3C#B2({DE/2$ *Rhb3K3%BZebO e؊4ҡ`B sTjރHcG"`? ;F% i6;bAH)n>q.^NN'lBz`G AK$Nc:'D,!s//f$!dS/D$*O=@>Aʔ'RP( 6RRաT"n#lP$P/2$2Dʎ &*\BD)U@ `aVa'42Isa#3*@X@@5c5U#VdGdKdOe`a^0ee%%(` R'pA?qĠQLciViiif6T' "Nuڲ$ B7.dllmVm׶vܥi$Bk@E`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(`Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvThJ  B `k3 `k"`#F)xh z6@Ge$J a%H%jg1b32|V0n؇eAzb:kxXǚA9S*wB/H3c k84@Q04&/΂N%08γر "◒+ْ3.tNFp$EZ-!$A0h٠zx"$$6a@iG A""[E* ԘMԀ$]-1'+Ưn1la"MR3]To\fm*513 #喩>1jJK–qI a/?ٝpb +΂EL-G6::0Yٕ)WYA5C! v8r6KM@A7fbJ[h/ڨq%$CxΓ/bb)(?@ #A `'DB`*@V 6CF*`c()gf"H3X]RC@x`c(/s,ߓ)0M*C:t*!$vwjYv |&B| a"Y@"r}'v}CbnF`Hbn߳ATSЁL%0 A b1`=XJaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0th rK/[ ~>*y}?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K Z?+Ĺ;0ߖH'BQ2>h?0@!|)3JZQ TYFCPvAB  MsP.0xeQ@=P<0<}82 9t +!@|KN[B"dHpmi}#)ȣA#@B^;E;թXcBs8h s7 mMɪdqЌ}Nꆓ2PHPY$(@X$BKdi_jN="D  E BВj8d>ʰ)!|;(+TMfEמb29M锗F k)2 Cd\ H?U^IAv^y$<8{=ϛh$OԣOv峏 ?yONy_yoy4sc3OC\{ : d:D7A0/hBDh3~}ЦkU$HkϏCa#@:|4f] 2Ρ>)%ߞޑ-u0QH2#dG; P|P €s\ Au{T"$n{%v:ʹ@0@ B!Z݈0&Qn yHIO@D ,7R 5p3_a6J` NB3}0!WB )-5 Ȓ8o>8Ccq&80 V''v]mzWXV(cs45B ^uM/=Hh v9ԁ@ 7 ps,9ωt~Oq!P\򱁠dh!A'K*3%R6飞>vs#}{#!9QȖs򨬄 $zk@σF9aQD-| Av| cxt9Y:TN!juK|즳!u2#t!;#VyT,tM]7T#"f !Πd O:P1mO=`QDŽL@HHPE7dԂ )/_:Ghh U$?v@H}` ,!nB(Ļ|GB5VBps}w> ѡ2!`IJ/r@PMPXf< ?d 7N.#`Xf =#@y NۂWP5 7tnRWe| t4­fswel<, #TLOeJ qS)\:sMyϽP>G!_7iB8tyBgw Zi #rps,֤(=*W `i W8zl`ӭ<1bxj8ovс#w|{ߎcg 9@RCD Hs\@XA(YJ(9'E;Kh(T˫Pu!EZ!e`} ?(PJ (<M&A1  P aB2[xф ^KTCyMpa_j s8Ma֒A8D1Tsb%>P'b 707cdT|Rxg&opbP*6([}2%1&Y5 Nmd##@#P 0(BP*n)vnnq}gPrݠVޓ@#_I}xE "gjp#cZ aqnIPt IOV<)=tY? Ir@:LF1$&!p<4Xj)@V`71X!P ED)OIm7!91<~1+`dF9n}|ypm){p> 2I6fRh#{gCR1ѩ"ige qwj,>3(5p p`%&֑mo q*s=fS@[|Z@.v+0L!DcCmM|)4DCyXR`%&jqP1rZ,* bySu 6 ^h2-@jqqzOR% oч^h7(0@p @ : j`ͪ $'PAH}ͅb0b`gBxRي#7W`zC($#:x p @%#L P S) aUsך S!D&@ҩwS鲧ejRb芭-`؎GmjdM=X!jA#aI[>Z0 A&F+sA` `Eqp*I˻U>g<8 `Hś !644Q̛!MCŽlڑJ4k狾髾_&ɾ5ɒ,{7B | 38^|V2Q:@Jeʃ7H@"IOy0 j ܶ2J  ˨Z(Az"1z"Ggp  ΀ =.z nwQ}ؓQ᱖GuRĮB\H-T|0`";O-MxHN{PF#DUA0A: "V!0 k(ff1(:0P7q">u~($G~5WJMw h7%ʾ!pM9!>-bfb4+Y!߿AW ?`2CvY<8 p09p#CQ0%A9A7 a.:_%0pv@1)U)dy2>,w`V0@L_;VI޻ i"5M!l"56vs3A:@uc-谂qv:`7%&y738L~D"`*S)2+i!S֦'6[ACā>. DA<w\PhPaJ -ﵙ0H, BP*-vU`0)vY:!*Sfbs=0P#/qY[X-FA Ad9D66`Vz0TJDh9)i6SmBOEjQA_;p @fRָ:< Lg ` PyMi<u/LCd7!puzvAWOC A+= rДj v O=0ea -/c_\4e4vG 6PaCo xf*%p8'A!O;ɫPPa:} c'ψC Hǎ"y'A%`ZaT/]̓SBg^>cH%ZO^=ɻpD Uq_U䭼(O;Ա;ayh πgl =b~pV6=*L (! nO>vƢhs,x ڀ{@ V/DG$DOD1EWdE_1FgFo1GwG2H!IAX|"S !@v!v,8QG5BhR R!F@U$gazH5L Çc ɢ}9"辊Ό}xv-+hdsZe:RFւ@`g jI2 2QT @lq:G C2@O-+v,UWH@X8퓠XչAk6ոd~ i  }=&w>-| Ī>f'IY!̀{GE7HynN_ߙ@ ܧ 4tO4X%S3$`'{5 !":"yu} a 0|2ooZޙw$w\C*ә:#2e瀶GyрtgQP B  y Q0"*1mYkd>Jhc} k0})Ρ \p A^:48Ha,c j|lc(eG$yVB@ 1Qa! ` ;p@% H0 EJ>rU&gLPMAx-qcC8*舢Cq uh!INvғe(E9JRҔDeԪ*$ @e\` y87_b5Eˑ*D <)v42Fv`5Ԭ(T6]ibƕ؞|Ê%E+ÇC@>{>a:rth" )gF,r$U@v!<x#SQctl8]s#@=:SS&(CGH+F7W ;h=C`ϡU*~pkk.4T1O:IGNP1j2 H |.Ї{hq>&p\`(|D14mhF7яt%"Jfm !ŊT4}G q3pP!%xcjQ =Îc-Y 1(9&-j1j(͔Q@[ cvpRO)(P\VZ{se}ʤama|L;#Š2 ՜&Kn`m9Qɂt Q^}"Uݮ-GQVvH ѿxAD6>H5FXZjE^anE4ͅj ZV1bNWzֵuw1d;ş vl pSn5:?cAc%sFD9p($`ȗgNJpLC{<6ņTt(Y:͛grWٹံ/`G @3i^+b ]DD/Eeb~U$ҝZ`dlNG Vв7W75i " )D8ܭR :ȩw(yh;9ۏ8 83z{sP'rc8A9ȓ< ؓ#3~a 95sy,zпY^w0X,-./}Բ0dШOz3곈a,z Їz(Bz0U 9,PĐx > H=1 b 3z* Ds֚%3@0YE‰/ J4ʘ@yPZ{U uА7CDfPs"+ c ؋F #}`A-^x[xAӇwDdTw0r% jcn‚cP0G`H@# T-|;8u0  ezy:b@dzdw@ոQpu<`Ox/ڇ Y \#HDFDw9p(hFָ> B2jSgdÂ0r =a>0˿$L ;#}50xHI҇ 3ـ>Y PH3p#1d xx>< F  _k@t&8H MɉtS` Ca\Hze0I0`]zD :}9uPNH؀r>M `!$}P`XS9><1 uڇX!o8PuXT$W* Їg8FQ A1# 21xXy VC:/*bPFPU`:}OPԍF ѣdS,8 ur t1,@ >sbw=P X:LMNԼ)JT0!zX@z`O}Xͺ-[\]^&zGVY9i XCqV`Muf0˺4;nopq:c%W:C$d<CvtсFs|}~=sOc8zB1(:n؋،؍؎؏ِّ%ْ5ٓ]@ٕeٖuٗ٘}-ٜٛٝٞMRٟڡ%ڢ5ڣEڤ%UڦuڧڨکUګڬڭڮ%ڰ۱%۲5۳ E۵e۶u۷[Uۺۻۼչ۾ۿ5EUeDžȕe\ǥZ}Y%EUWeׅؕBץ=%%EUe^uU_%5EEeuߓU&6FVfv &6FVfv !&"6#F$V%f&v'()*+,-./01&263F4V5f6v789:;<=>?@A&B6CFDVEfFvGHIJKLMNOPQ&R6SFTVUfVvWXYZ[\]^_`a&b6cFdVeffvghijklmnopq&r6sFtVufvvwxyz{|}~&6FVfv臆舖艦芶&6FVfv闆阖陦隶&6FVfv꧆ꨖꩦꪶ&6FVfv뷆빦뺶&6FVfvdžȖɦʶ&6FVfv׆ؖ٦ڶ&6FVfv&6FVfv'7GWgw ? '7GWgw r! ,fBBD^^\jjlnnl&&$..,VVT 224JJLZZ\::<**,zz|bbd""$>>@. 0xzfhx$ bdp0h\`䠢xx  0@(:0dRlTT@`ZغʔvVlblh@$00FZPNZtNt\0p@txĮ~<6<ΰТtv`xLDP<08  ¾Ƹ46@|^d`̜Ȧx\X@X prb\`nfHDFPlttpfp0@PP`np <<48:PԺPXXvrx̺bhd\tH@hH:Hl.(886(Nfbxt80L0.l0.pFJ@`@nf`BH@XPX||4<<$(8|zptf|p|P@~*$Lİ:$УKNHJaDv3|{Wi˟}>|ϑ2w/s"N%t`FS<#G߅fᆳ:!>d)QTA.cQ4hЍ 3;@ :2&HxFAHn[SdqÎ%$-ښACQ:`,Pp<ϑh Bx>pNK~OȰN=tPH@Z|Oe} ϲ,@@t>H,:3,2D6pX86k@;=CbX"H C@B)=sںM< @BC;F#]MhE@Iу2.`ψD:/j b#:p"'3v=9=;7B\ă7XOl{ܐ::' >? C=O Q |%"~LB#!$ $%VP |C77 +1AzP  {$uhG2ӱD ,@CHU[zB BP<q#=q t  $ h"J>H!IHA?SrI!Ƀ>*`Y%@ass!wp'XFđ$2K@' `ŎGnyVWH_ L j MB TXL%g@$>1px:&]0jV$`A$ DH@pm*Cwy 0)A"x:y/ n J@wZumJ\""ykMϊe2I 'H>܂0u\>e="&ث \=`qh@;Ԟc옍8&zk}uXP@k) H>ĨBC).v>f-!P O|  t ! )HЏByjC40!H [z)e+ x!܇L  eu8tT'EV=(= 0#` 77@W5@M}5QCg A<gqH0|=G&!y&<%10Sf1R`rp+v02> h_P=@Ѐh b}~hQ: \G~%P5}jl؆0 ?pU7$3-`0n9e˕# PvgGRE'Ih$׈  Czh*`O !P  !9YA$q'&iyM1 0|q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕp3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.#4\1F])"Ҋ( !9Yz|t!0q!"4uCWcMc S,P_ $00[U"08깞[xq$גYYsLLW` ymP@pNI`j왡Hu:P$y'P27v)Wmrwe\2*_*_ș:DZG̢sR>3 .gm!-*.` r` dpr:}ڑ,"gYP`S0֢qt]`waH% z  +4Jlk[Re6 -40wQ0O1`dZJF#3@hj/D?#u\" gJeP! :蚮:,zT Yq$"AV*(PO@d&b*fڰzJj$ 5jr8 3!~E¤ (67+Rb@a-{ 2;4fc.gZЅ( 2%"]b*U$]ǭQp@>H5ZqT =K͚"#F#odv aHBmpYNʵ~KHGP[y}Ya& hTc =x`Q@srm @HZۺupg$HՏd#Rt.yA VPv7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 005$6 Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR1``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLKc L` 5a"p@Sq'K>;P$AӯEBd9wUrcFpgH6$p{`.pG"!7W9„,G |7O 'o^†o;>$ a>N;'o;LϢw`(oT>Y;z4>y~rtV&]iԩUfkرeϦ]mܹuo'^q!;tvēC2 @عѱ <#fȓd_D=A&ؑS9=4OTH{ o:RC("Z,{ocB`׆bk/Pc'v'PY1.*AJ*A>{K0sL24L4TsM6tM8ˇgt Yd x &PI2 p(bH2Ey:Hy`s *Cv[,}P49g -  v"IHp"ԛi&N=}G )cz/ @qFl/ `0oz%2!J̀0[Ƭ9GU]>Pi݋t"h\hva6 @b3xc;cCydA@%u*  |bWJ5U2d{|7|yF4\ȏ`C@Q { ҩeBs$%4Ї!!0 Q 5nc2Bz@ zpa $@V$Izؓybh8=QGyBH@ P=DI`B`T P3fM!cKKJHU;`  &T 2yOY "4T`HG&dc(lܸ@KjpHjBD }E8L@B Ld"r9{K%=;!1yͷs2vP-YH/_xc!uIUn=th]WL =2Ϩ /u8-j9C |LOT"_yy\` Cr(HhD@d@ֱ I㲒wؿq# "g@>vPI Ԟ IJ Çq y8` |(( y>>>xn | LhA>CC@p@B , ?=IDci ?zRwX xsNY@y 0Ä(:\" 9f`H3%;FIDS 3 h û ɵ0{0yp yВvX'Җs@FǸ"w0CzulDžSчG1A`_ FMdQ̀O YR4Ea>8sT;' zd(}Hq$ `GQYZ,[|\\f SrGx,%Ch NC5L|DZ*ȓ8p KA ;8ˁ0D%K4x҉*12 D3&" @BS> 1AHbPO 5k:0J$.+ax+C`˫`ȇ zDj, ܡoMPL `LQiKy wKXLt!P FL9R0t e L܉PhP< *;=C0q 1ą6ͅ 8z. K]Wj  y̎e X$ $ ű ]k#vw$$ | 6HH`#la*ځ-*]2L%k B8yR"#!'h|aXY1-3#e$%RHz«с1@$ S``MHe*e4{< 1]L }Ӓtզ(֭V NxtVi$N#Q䜈(݊KPHsԁI#tx( [5  h2Iѷ4x xyywh$ 9<= bP*yt+CN!-B5yȈiLЇPlXgɇ $aP S@|t P4 ]w 쉟؞HJ{e\t0ǒ%1 9Oyi[-ok *qԐGQ+ą" ۷c :X3JKEuAHV.PT+`qA%JQ$?esKГ[P/:{tc[\B]8EJy8l#QyP HJݯ@`}( ՠĐؐzF d]  XN5h߽=`&Ͷ2| #xb`!!Ww' F`ya!zOf5PJ܋|Nԟv۠+v"P" M>5LA [e5%"ٰh@DQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDxHa]=cb'u(05sneWY=.(Q5!ntPO  ćI @#Ij< EEdλvwP6\{B!vJPI&yh ʠ!eR!&UhɁ4gpB9mRF"!""#}!&4C1!jܣ990% PHYl-mr&Ou%/TKq._s6Oy$PK M`zW"h*;ns?s2/MDAOk3Y^[")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u Ё]2 Obc$H6av]v᲋⬉L^#_n3 KW 1vw tjwvIݘ3w).x? }gX& kc|h呂0Ӱ¿,H  =H&`efՅXHa3]y?Q ]7 s0(/@xgx77Q)94?$U ?獴 8W> !}>iЬw 4UoQ@3&5"+ 2q[AoQ|VyLY>RP#}04C8Y_˗|PanXC "@oh8!~J}&Sqc{V^ifN|Ҙ$W﷍{'wXg 7up^y  |ܽ+h ‚Kxp%|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5^qyCcfs; ~"]%ihP;jٸjN[t3BBChwKAJEbrO;ޔ@O\+bXi-B󧎎K6YCAPr"%HT<쳞<8tOR 5I!gAcAe @Adr>jUP+& p?<.тIƒPGRy!xGdLFс-^)X # n5җIF%#-4-'r"iК,#;>)$N@:}^Ep oj)z):*}BqB", 90`CC 7 N3A=$4霣T`R|<2S9E6D!@Fl[@:Q<$SO8Pza u XA2CX nN8"Ԫj==\"m:P ꐽ V0梻VTrR>+[F Ѐ >=FC=X @(SG>05d]lYH9nyk2_r,a#"tPh"MI@]L7/ D7:k#()RV"Q#zXp$2~ꈖ>>oCbA8G!vH % 1@ա"M0`&t !7O!ه>~spQ#gd$"@0, n+aY"a2|~< :$R`1i ^bsl 3x ^A&|dr$-2sC8;fG<:h@ypc(Hsh (<5 Ft 'Z'8@қ_G"P`>f8rx`WBc&%uẉA ỹUp! Eȑ$;(֓+D9d"F%Ta[AIՁgDCfA,HZc.SU@!p@zTt&4:PȉQ I׺"Dם 8v`H TU Q&&d}ld[Twr>T^'jUIDI!__so<ɠH  B`e"ό4ךA&qaZyVk,2~0#,awf8s&`m;LH/` ^M ^Aɥr(@xh Cxr$V&LtzifRV^pT0)p@(A\̢  H (a%FDLq}L$z)ƪ}b+LdT1P1݋ߑkrd dY`O9-s;wpd7 y|n$`Bqq,A 9Oo>r,IoXc [Aaգɘk[>BM\M0Q{ƛ*ppq7-. `/k6HQcM}T}vD@3eHK#ϹYlģ Jpp?65i6F\1y 6_y:a<[OH>,2[1m; !l#ʃiY?xd ߐA"G @03s7NB !3B#CFUG!LS:h)H yԦdΑCz%[ BP>vz݇ڇ&V6lBK&@w<$G!=^A ,a䃊`\BD-5FCUD39A, ;ަO Oў Iʽ={ ;AY_A _!`%Y,MJCSLԃ;5C8`; ECZ}0 r ǘDaD ;A_#bMPv4,-Zb$VbFdB >lH4;(-+nBCXJahA4m @4B_v8 zLA@;XXPġ+bD ! `m@$AAGzC(<;qG1" #B@ԋAbAjmI䑜*GGЌ<\^aE4DЊ!@g%H >d1h7MDHc%DZY!IJ8>rL=CB@m>XXM:Rt2@bC 6m] nԃ'5EYbdC]" !xIeZR\CF4!̋I2@B8SEXiBP!\HdI>J:\! Gh$SdHŸAHn afY-DzGD8CC$ɘ,o9 }abOƑT.I%_fj_`H㡠mX'mvF!#Đ^`)du ;]EPChyL贅b&R.fKR}zh:&CT&eAH'g#yzZ,:XrC$()FH@= f,<  W4(䃆gABGK*߅DٽmIiA|niE<& e,GOAK!;<-Yi&_BܟA4@E(ߎ a;p #6Dt]ϢFA!NA4\*)% XiZ3M`E4(})5gɃ;< 2m#FhE4a~ V'(f<؁&`9 #n&>=+:܃((Ljr=:ؽë^Zi!;>8@ރ&8?ĞP(~GRjޫN>_V *d=p?8Cҵ]i&x;סPlʢ^A128ʥ,=$,;Cޕc~^O>@V\!Ţ,ZEJF&i*C78Ì .&:]`C^!5 RC:>@ r.Gx@*[泪زJ^#GjA(YnBHH.vw7heFÍ$_: < (/bhrE .xpZҮE1DBZ.Z<8薘B (Ц=FJ[8ӜLC><($G`oӟ!.v E/q )5/B؅b-|0ȃx!0fnpEp\tED h~%r;, Nxi oyl T~psS~VP \bS1-G۸p ZhT->o# $G oHN/wh``BB!ԃ =N⦲*2+kP ȃ^C]aCACIX90`Y@:o՞aMohAPX[-/ g:ZPtE99;DCCW"9Xѣ24 RLٰH3Lކ#XÌZ C2X%A,Irdv, \djTĚZbH3CKFsnIAOTF8!_>8Ӆ/:ln¢'%{so^ӳT>uEו>\[Vs3AȈv# nv}[($5(a@XσZZyA%%ׅhT0 w=jEP9tSGz:dȺ9E` !0l@ܱpz 91U7Dg {B 7W?#`[|-ĦyBpC#@X=l|1\L#8<&,C̕@Kxo=:p;7JD)83#F3z'@#!0kD<1P1պj<pDE7ìxoA`H7&HD E (  s֕XqÃ5tjg>,r`F'\8~}ycO9^/E 3"5AD؈w ZT  )hF:dH >!`hN@Dމ`wX;tb+Ƀ/I3N0!BcP 1WoCu[6at;7/!:ӚosLz0,⃃[dΔ7^Z'p ZʮrZŧ*K#a`Gu 0҄(U a PJ`XLd]XgehjlݖnpY HɆS(X. L5Sd |Qǂ`F0Iu^y5~%-MU-[d65zG`1 HeQf2euޙ}蠅#5w-/t#%'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGѩ_rAC=Fm9'ݷ] A-0V2f;~k'O4`Gyqg>i zN.EAIӀaw4jZOST hyIRBLi H䁎-S@Gq2ЁQqkep`?LpK D#HO- <7#!IT U7.}IBP<@j8Ō !E&PQSefX{RKA& tLTW0Ѱuʕ%-bQt ;5*I*{dFEtHXaGA>^(=f˛3%rғ|*!yJ U;[ 蠣T'42*)9kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&9 vL<ěPGf?Sv+"&ӎ8"EG`٪*L $G @KHy *ȀH)d Ҁ}X+ 0O40RP*_JVn6j-g[jo^ZɂT*!>ZBHĽװ؇LG]|! 7BHjLt׏xTc-=1֧ߡm:!#`%}>쁾Cꐫ 7 $Eҡ}ȈQC0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_xyTTx]J! s@|c/|M@l'HKd"[b…:k O$NFD pG:$(#6 HKE  lijdZƏL&0IΡ! !L P 0fk( D"@:@: n86nC @ ‚ ƻb k !A6` #4*R-@q!)(R p-H!@:iQ{ cM!(T !LD qqȐBNgJj$ X|_b[F Q[k$@ A a-!tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'Bz!n%l# * @-N$~%bMba c&%!J*N bϖ!;!)JP瘔b  "((H<  XL. @BVt@aRS11A*b 3dT*"SdR-7NHR@@] S.65[N39>_fb!aTS$*5 -4%P!`2c4ܔP>;[h0O62Ʉ(" {?@tY* P`BxʬZh%2j!##LH`%&I1K4Ũ`A1S> : s-c;#AҒF,00@OH>L$0p!`emKkvIt@ i! Z@ҬmI !@ ⏓6eDb΁JJG&4R h3 BƐt D!*LrìHRh֮pAA$ lT!@pr,I=0XU^硝ʸ3 nT<TZZuR2s+ a@D A3`j"5Gbjkԣbm?R<7 BQm{.14a8, 끵ZpkQpo[[6y 0-킶,ܨHQuU\Z(V:bB\B A FﵤJ@.VFII3),5Rl:aff]'iAWPG6hKhA.! `A-;fF6m+!iP^D*I.F @ !!l"8Uh!ފr_1STc } 6&Dx9B)F>R>B|L!Pp`B5l R,5xcI/7YAk@:Do7W5A6BN,e|W TinvD`¸r R"wiGX.aLaaIu2Ep*qG26-N/V$AVsp< A@$ D{S[ 6L&Z0 $@ fXvT a^O2{Ȋx Z8Ձ lkn$P ayYl tS䎝(͏"ٚ*Ğ`Th&P;vKlCh+"b6tE@ *m5A t)c$j ĕq)Qkp*"t $ x9nVZMDJ! DZL6 e?$` g]:2 H̗Zjʬ"R=@*Ρ cxWjH//0#XF^)"@1RC{l#K:> cC3,6DdXC.P*΁LBY hL@ $?-Z׿ "cKC=0kk("Ȩ8F38d<"nz;{0;{6*$"F`z?>#4!"`!@*|⧇VY[ٟ@:ĠDy%AhM@AJ`F?zءd0RGTLUQ \N%맦PFn*.a'b&v@iu/sW;;HTPPN(LĄ@*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿ@!X'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.ϡ^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1XρƲ0K+@"Z;= $AKu/!E@Y۱DEit^OK~+i >b+ɾC^Cu6(_wbfFh OGx,臟_qD.!"e0@7ND!;.>NCX؁VFo;6MIi6֦yT"9w34P!C&\.ƍeT܆y(iH&7(P68 Fz2>G@ >љ:լ[~ ;ٴk۾;ݼ{ <ċ?^ZA#v$!]&@ːq;9swUq<@|A[A! Ll4*wرAF!\×vܕ6U3>s;P8>L8gv'v7cgF=CB iNJi%S e 9 d4<$%O \7p5p;' _ 3@GXΞ;XA>7jk_FtՓV<0Uՙ0y ;{>׻9v|e@ߨD'Lnfd>\Q#,Gӫk-!,;q|M[cuɅ#gdLbF@FWe2CFtJ/tN? uROMuճ +(hqF @=o d,{g6Z)6ٰ[=QOo%t<`8U.8txG/E. _uw;g\ VOߏ)ƒ&r!0@m<`Ll|Qq0> jDT q$+K7 &( rj'C .L%0-X@Tȍ 1t|=PϕqM 0Cp%lkfsݔ7יiV <R.Ðǘ,#ffW ΙvCa&Ιj]B jhFv&%C#K_ Әt4Mo?4HcWF4`* #l } w 9Rye ¶$ 3B)tm@,E;%UI Acj whc`wȕb>XԵ5# Q(VЄ-7=DU HaGT֑ʇr1+ZV,V>UrzdWi@Kwl.P$N*wms]1a$LF<ڂ iYR‰8#;e|3$;PvH;0H|,15y]RA x^]7G,PW#qxY[=:6wFt3^)yK*MH{4І<歯Fk#:6 f0f^tN5rNP ؤPZR | @ zЄ&M>@A5 mdb UAÜAR{0^ڊ7!@:tBA3!`;PPPؔd%)#JN1ht:N%%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST c9RY*0:3nd7ݸ,r}YS=̃!|` aN|I.*S>ϻx7~4>q7yaHDYV~钴KpϟENb!t\w!OHInja͛FTqQ+>gEb36t7`Y^SBE|T$ pFqčT@ d 9)BȔdHMDBT7&*A#F! NXaZj;.H".|p-/c54'eg*A !CdF $DCyrFpoپ]xGc GaZo~Fep A1BG0K_ Z tSd-i*~Bf$L Bz q4 0rmvtF|/nw T. 0Z=30[VҤ0OT!(d*fE N;& D o@K;аa>.՛ Q }h( 4< X!]'Υ1O1,$4Ϋ@ *՘E9$)^{^S.1뻗G%Zw,sh S,{%[(;5~R*X"|Ȃ|I!޲u T-c7;9Ki}nKv+N@f%SG`bk/ǔ@td@9 &F! Q`_ٵ2,A 6PlSx{7(C?1DG$DOD1EWdE_1FgFo1G[M&=,(}6SE$*Au2hv䙀 ( 50ˇv.hms );@wt8v  qwxi6݄r{Ɂ`ǁ'6ӸpE(|*I+Lj8,kW(&t<}0,3Ф9DqU Xe}tHH̴M ;+U@yPss6v"jh8JA[qU_yFahˁaUy0@uBeh%Ig%Ԭ}W!Lz.z@@CӊSP 5h8+` ) 9}Ոc^UՐFx#LFys9iwb#v{+>?7 t7lF8G :&$`P;tI"Z!M:OMk4UU@ ԡ|C2!ATI EmbLg7 T0Dr岘41]A#FId&uHd:}p{@JGFmUeP>aT2Pn |`=պI76>(r7NJ'qU$ðՇb[_t 2􁏒d `Hq .7ekC@b7ɃY,FYh@y̬ wXNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW  ((5>jH -r/yK:$c&wМDy%b}9EByҕt7O<  X =e)ċugG{ˍrQfB4"P.'qQI`s#?8xQߙvG|I5"Jx-| .o e+}E?z#ֻJ&c0} PC'1.}G˄`5d>ltIVFj \+оȽ}:ϊ Vèo8nޓ|v,)I "Iȣ-IHd Jٰ 4 6y  hG`>Ev耤x y G|tr* op@DlTɕdɖtb5,upQ5L.$ VEƐ苗Ȇ; /|;Ph Jj t˷˸G!@v &Ȇ{p{U Ԉ>2}p{@{0L~cd85ȼQȭL1$8$NK5(88Ev@P+lq vNhA?<ڱ|H$ί_tN Kė|H(%;}x HY>x (\ РQ j#} M Ia9$@xo(f 9L o4"5#ERlK?Ȟh MpR$Cz`y'(J$|$5H5͇fpxp ';Y"|h"Q% 3M9}!ׁ|vS%PT-F5yDKTUUeU;(9yq<0  ȯ֢ՆL0: '0ۘbX v.K-Y#;1Jaf\zv}0T:FL цǔ#hM(EhA@ ևv^Nhy0!9eЇ{s ,՚IiPike  &L@yxn@w}`U(cP$= ɱLnjڇta-B_l*$r: PM|@g}Y,WqgMb7,CfHE p}p`,hPM() h،`lfȖ8jZx>0yevp y\T Hb鐊k_Y), 脀FK( <11m}h><9KkǐH}o{8}(|w&H8 8Cih+z؀tn hij &.8"رÐ?~Z~>LJ6SGutۙ탇,!Hz ЇzȁDZ _ [L+1r9ITuI$9|DU:UYϐ :^q}HTWu/:$=X  t_Vi,ʣFw$f @y>IWgW|Xy7C \y˾5ޅ7&'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF ЁPӯdN+9Q9˸O[hN/wXˀp'y/_fġڳt !)9Hw3Ģ{0"Lp!ÆLhj_sQĊv(rÁ$?l$K-bl)s&͚ - V&B@1s(ѢF"Mt)ӦNB*u*ժVbͪu+׮ Ov]𺰁 Te)^Kn ͓Kwݼjʓvޥ /exqc7eJ>re f|x5tF.PҲέ{7޾.|8Ə'AݓmSzC'3TcáWI1Qwų.+_j~-3OdUe CFA8uVMP9Ps,]7S r#X'+آqφ-:d0A܎ޏx`lB~T y%yҔ5yL'Cj*4ЛT Ob05@/"2ڨBi`3 Nt<D`O:$Vԉ<g:`D<2&\-GZ-qS<{Ds6 {#;D׵|<ꑵJuz=A ȣCS_ק:P>#; ϥts*>㌖Cd ,x P$)A\EC Q<$|$p;fc,#8@*n  6vڡA+nēLdǎIc(wKPL_ q %\&<  ?AL`H q3h,a4(G;яJ*Fb<"R40AAQ $c!H4 cA t60x/ob :N!cֳ;vS21(@2{1t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6PlϹ^H>x=i¾;}$9m3LIb AkZ6Ȩe# Xq}eef]Nȗ0:ͱ sy#q62ӛC=Rr PuJ53_Tfر z:ސ1p{Ap b Ny]!`ʮmE,|RgFA>$gm@+e|5Ał |B>k;A q|#%}H`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^:z$^ڬ TEhDfD͞B@=Xߵ;H%>@0|\A(:02!C \} TUbA` `C, a"x:AԊC:X?=lLlB@-7zĉu\9QAl<;da6:@SU ]^ɥDHE< Aa\-%ZAa1gḀ1 T}D8fBeB@HXC=:j'!W ރ !D*I$۪Ɉ*J 7$6'$cBZh"8+⃐;jp= 8?PCD=փA*R)û8bjB?rWA=1Ԟ) @FJ ;\cC^DDE^dFZX^dLLdM& 8Db NB%;,G> ,"B=F=8e]C^އ|̣p;x` AL;D6i BuI&EMa&Ie:IIWVr]B.N* 9TfA\f<4BmA <$;\ff6gnn`Хdf+u<8:b2f-#BX`nO0\B=B@f.QI~g"mM:BhJ!pb;ĉWZ0Lndlc (u(x_>4B=IP@3LlFZDօ<@=#Ŝ\?8`5), tnH 4:*ę/ }_z2l$t($I*(q"DvW՛.") $cB &RDD0*MQ0bɆTUi\9u\IJ~W$QDȃyV2+CDjშRk!%æ4$ ̓:|3NT>ŪCD@DXRaỸ};:jĽTH$yROkC=liBv`9Sce^A ``)֖_  C#zn ibXBŪܔD@ܭX<<, @0Hحؖ4I@=HC-톕,ےVfd'9|@0;x؂A$ H]4: gF-(ڎb@*ǩt-m-H@:BA n`<nҮ`u&b$1,>^J:l@Z"40uH:T>0AĪ3dfK$@ 4lO3T0'II)G=% p 0 @7z>EAD@I>î@>Rރ2D0:EHK_`HI0^>m,`=h@@i"6 ( <@YX)kʖAo>>)ExeWƠ#If KcJ\^̊,KjE q><&: ZBd[lݩwr:-I 41bZ>K VC. 1V(*D$S%eAd æA,A#rU͇!L:ۣl@++F5'F4s)%lC" H%T13pBpp^+b3vc;c;]r=SCSHvbPeFXtehvii7 sSLkw_{ԅknvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyy7`uĞ0bN<@y w`(raINU=bzK: @U mODKDQ|^>Ldrh𥕲9sT!tgmXYiGikAD%CDRloA ^^`,r T<\; 0]ZI{#6s%D,G$PGԃ&|>b?GXR6/a]ц>Z;RüW,AԈ ~Kn|R1D BPu8̳lA<D) ȃ{@1 +]΃}SNĥdJ>lJxt ^Iο̎VA < ӄ7>X@v}$C$YTI&]惩U]>lBp@}>ThxOA $!^C=TA@ݏDXcJ:ß:1'BbA)-BmDLKU#=0>)rUA׾i<}-(@&A|&D(OB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7}`G@!;yN_w#&}ᜀ(;7`A& n#*3p_ "c22Իo_)&.BLALA^* Q lB$>xqǑ'WysϡC @+|yp[@:?3U P*8Q%z@C2sO>|i4}WYnaYf"+!FI@`JTYoG `e:z櫱By$G1j1Ja xBI'D1SJ  @؁@l~'N\o!_MªLjo)J n1!%@CVPá*q7+i5· ´d@gGч2 a'/йm=ߡ4$g^! 6;!SgG,_}ZɒuPMP 0DRr @I@>gR>jPJh`s?.)`9*@2*@^  ]bHH#y$z}@b۲&Il䱉g 1 9/!@=0!! `B9Αu$"`<E7P`38`]QGDDH). C|BdD$呕@*H}C*` tH(Ttp G@ # c ` hB74CƷ+ @{r*ZA@+OyΓ=O%Tj4AP. upȀgPnGARx "5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:0o5O[9zYgVCx_X\Q+`$8N'w&Dba5e` jtM#C49."7K@>@%d:%, HHj\G 1_B tzpzYQBҵL`؀8H6&GVWWtT: :`•`zqy0c}>ttiZ}UGby5"` \h c!$0=aYaG2Q4pRd!9CL  s]4هjC&_%biE 7>W;NB g(OX,=!A-hAQɌOLtc€X0avhX: |dɃ (Ay章SM@Dpy;ʆH"Qah!#Q2> 7}u-SV3y@ @Oa} 6apBqM 2@0vM|r"iFOTBJ kݓ@B(AaAg$,؄@+ U|# @C,x$h(.bLJ0" F0 `C=bP "tp H߷guoDY.3}lK@8wdCNI+6PwL@\ C1ULStUJC ^Βݐ@3.>Щ2 G`@%'tϞWi>Î6XPCdٖ^#ڧ}|\B [&T>8@Hs;gR Î$<EC *Pc=K8fqqg4I& !p`F!8d$J(Y,!"N** VAp즱bMND*gM6KbB!Y:xB#@iAg2>g@xɰ $hPXa!& /߀0 H!Xa{8 !]ԅ!P!ڧ_#P*7R I"!| 6(@A++T( A&L &{A@P~Dޤ1"bk gFL *@j6 ޡG#!}Rh)pamN/¹aua`@`]*@Y> B#!`GaZ1#5r#[a3uB("bc'5LFA! (t0r"&@f3'xƯMejHF R@#: -և F|'4O#r-rOԠ,@g1"CPaøl af !((J2ha0>PƀD)'P8HH LYHء-F%( %8>R R!H@6+\s88$`KH2T2$ n6` # ಩>B$&Ca&v|2!'B4"0 }'U46/QIX8 $($@ 7)^ |FZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)`XeHtISH?j&bJ5B+ (=JI4Lݍ k& @ "La2 8-Ae"=´)3TLuP̸K f&Za7/軄& ^B"X.Bq:PEuTSb#`3[\Ȅ#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,d>ez6i=@<@E;Hүu/a|˷d#B0$@"wy5#p dJEnPs-uvqQ>a)%XuS">|7\!܄DN8-ҁB(Nd>83P49O* uEkZEAqLӁa.QJ7%q;">,[[e\PMl",1qIVu.>%_`{T9*sCAEؘa7HÀv#R.r[!xh0!p@ PReInoYnb2!&^ZkFgYy ڠ>?!]G?+s!4!rI6n0ҁW j ||!<%|)-1<5|9=Ad3vOSXyѳb/ BԿ]r_guKX#X8(pEx8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIA'_AP !sw3;(Nqv-]t` -z! *G` t:ǎAo^=t `+ByIȃ)ཀྵ@qN+װc˞M۸sͻ.Ny Bn,Au~\tt s%W(̝N|K~&Ö́ax{s"T}A -^AԃB|0= ($h(,&Nd(vNsSv 4dCP8P@ CC/Td5ިAFb .4>Oi7Xgȓŀ"@95;TOi-Jb~gOS!'褔Vj饘f馜viHE'YʑW;=9x+ —k7\ 鿗IXjA@B #,Wlg!FI>̾@ܨO=[P>`\8(?TPO: >3{6_QN_B`@P8{#>$~:_a(;DW0HM&;N ؜-_Sތ7G.Wn?B=!g砇.褗n{O< {K9c LE| hGH@0Aԡ$Q:6EQ2)7@gчt%QD恏y!9 *PDz` U;q )GI-vH ba2sdb%A7Pv[Ҍ4ʃq01Zd4S&\_ġ> 쨋 #F>Y+%f2Ur!r#Rz-5Ib R]z!8iZ2adY<:쑖͜ E@@C#%%䅃LgM% bg9x|>ς0@h`H@+QF4\ ҃ TGJT@@5Ct%@R:QĢpV! 0㮂 5gv)^ sHuwS0KcôbƮ'ODH Cx+*3 ⰵ!P]DzYX1:>PC#[@NF$v mpC %(*k$"G @=@j'2g|Qys@ NŇd9DAJYN>0( wЁF 8 @YD !pLs##O3: a!%K oPK$7rP\q0 k4/{w+X*pB8 duh='X.v8rAR 8Ǜ b-*-c,ad[ɣ]22 3G$''Q24~G|HԹq @fABŰg TT CP1) q=$blhAT/d+vańϯa jeG< AjHc YbPArrXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7 D}̍ Zek9.!P ;6 $ZȍzOpa-%f@CY (\>P(Yz , A+:M :@tu0cJ7y*M}7oHΑ9!cA`D@41қg>Y^x+EKURrg;qAH t&U=ST{aE/|v>r e!Z:BF1 K<zfʋ4)P(?2< zb}L hjZ[ai v aDz7X&Yd> A% Gv! %8 Cpw?" $Pg\E?@Av212W*e! PbK"2"X">(rS}g2"SR`xzXOJ )tb!G t i@tb2AL ON(L 7 Nh P AX(17e [F1LG31 V#;Qk".%6B&F!Dh'L4b}7сDS@j+R+AvDEj``-b- H\!Et*>5`Ej*% = `& `T"l.7b BBuPTwLe8**C@+e% 9}2%p] y:0/r/b,p`dÃ06c5h0 C 2؎>|cmb $*%`72=^E@ H22v5D@p8:v#t#+.Ep @ 9F`29PDΡ=48& 3!Ls2F -1s50#MWXEYܐV0 6m6AeDivӇ_X!GP8  9ZZyP ^82qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;UI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*!*O=؊t:0P }Wva\^u hxz% W!Wqx`X%3K^UY7^Daa00|HS!V'aF'P!V[گ0 fiLSGj֌A@Up%6VjKsjh y&(Ŕ 0Te]qMGdW0qE6"ȫN*{%wrSRvE;T+F {lF8Hzf U{^y^zsk{x?!:| K'q0[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv. !4^c?!'kb(,)v۽蛾BLO /~P0[#/b ca 0aPƫj1//3'ZQ0~j cP2“ 2bP. +\}Ԡ0yp,iПf` 0yus7 7c88Pܳ;"69jZC (2:(f||!t^*hr<ƣnL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#":pqKktIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2 ng$j斒V (!3.yՒpJEWi&@dk$7pפnբ 0`Y[~Vt%mמ  p-*°s0ʧa*̢vl8yM'H'q m\"o~?tx]+ |3n6V{l]P,a$M" 0PYq p[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*/a}e_L q Na_j j!ŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-W o;hV\ o@ .dC%NXE5nG!E$YI)UdK1eΤYM0ɻpu:\< `yJG~`"S!)wP3J}*PoŐ T0+uJ!:JǸz 9'*y6%!PCSyH@ K!A CZHs$k!nN*`G>C@g!Đ%!MXаy BtQH#tRJ+RL3tMF}j.Q8TU3*YŬ .js gtsc'*@\Yh  c:XPz0! ՆM`yV &Ԑg6!1xܫ}Bʁ.̳Z`11.{LsA3 SO"[؛7V0 ruѧz`s o2fsyg{g#0`hDQJyb`jzkkƔ ( vaK؄Ҷn{oo* W.k~ q#|r+r%pb3r$7A^E|@|@wd)MyJT!(4!Z:р`3vR@=_ΣZ dAP"t(1;&C 50A*CUѝg=퉻ő*>ypk %; d7V`:I%|H0TFlBqB0,|l \lK2U]1]ѧDѿ De1HF'wֶtC%jQ U:K!/eG^сiQ0x;2`¤P@& \g@2Rth[Q)w@L C3(i:ῥC62ȀGXFVȨ4^"U::(8U Ep,A(a>eᖅ UdUtCXXy֑G=\FWӕ*[:6CP{ kV@91ekيfꁐXt t*B&VbE9:5؁m\B.`4`GX9'# $b[{38+ta; "Ti@5$yሜG 4Qs m&[(Or|匜e$0F0.Q ` 'Ubare2v>e 8BrKQsLЋft\c ,ߡE4Wfhґ9J݊E= lR Gd2 UB H) Aj<@P}ld'%#F dh/B&> u<#+CdֳRRpESFCX@\(Iq~ #H"d8b&vt 7<9 x-EHSKX ]T&ހ 0FI`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴNd3~u]kg{IֶUDn S~w]Q.%(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>'@(.}Cs0=3&EFuv*@&[ H`AꨯͻY <tE:0"N YW!W3 ˈ.A#P {ؠr?$ " @ #Q!؉kq5 J6K: UA ;7sF/ dpUsk M c` gPйYAHztХy?Iꥬ&/ {(wPeig talh'ȀaruRC̺A BJDOs θz X؉a99 DA*qh*}8XH2;HmO2'R0A@j | NL4 P}(|Ǽ(`.w115_[yk0-L 2NwDؤγtPT!X1 ˇ 8M,N]PɁB 8'4Ḱp zr#<,Uˆh˼: }<ːL(p3.h @S.ceP"-RCډ"vHH)0r1?4NˍR1p(#PMMJ?R*4 Rq* `)iEO ހ!.2McspJHFwX(9gBb0N0wU|P x"_`dw ;yEY1"16^dF=բlG/yI4Iqdb-t+2̽@ PxTM 8tb؄\[[ȁh`G*Ihdjf3g d4T3>%1pͭOCB0d8Q|CP5mG@Jl CPPcX fhZ+Ovc$ڇ|h7@7T=T^<>2dvh`F$MP`)d0N0M~jn;XOƬd P2ɠHPLQXbkiʍ ~Tτ(|B0y^lf8ҨSГi\BAE&Þzlœ>ó-oЄ!@xCd{@YbTfE^n9(ƱStd @}Xw#}pzpw`v .)3Co/ u`yPP5k$^^Sle|8fn[ϊm [Vy@MT#Ai 5leAof=qv#oˇd P)7[ .(rqw#B!Y"xȀ|@D}-wŅ_Çk>iE ĞӼ}`"nd[56c|OA >઀;zgGf4 F p?C 2>y +ۿJU~4Ddz0 e3?SgӪs\mzxώ(wxOͅхyy2+h „ 2| 'Rh"ƌ7jH#tF$ yɋr9KiД ;3>! :%> )"-"18#5x#9GB&<#ADEA I)dANBY`N'm!č>AANp Uv;4@:(>mÎp ぐР&tE5GhCC Y*Wmc %Q, A3Yn:W`d@q{ΫB="4 j>4p霣NTq'r/ԃ!91qLdAN{#N:LC:L0p̥N9BӚ@!4 -,)j}¡#@:Dy^wJC ^(@@.^i7P>8 !ApLzϳ9)zPXADp(Mu OtKӇhr\goB@ᚤnA3|i(?٠"āf?(< Cc"Bn CB<(}  aw XD  T: v8ACmG?(9y.e>s7 s6LDA6 Y!@BcU`'ZLqs(ЇޡEpы`cSV`l 9 zCO!y5^J= l?qk `nbaJS6 =!AhQL Lc*әҴ6)Ns5Z?L2(; cp2jBz%UKmSS9 1#@;SSUgO (՛⊐&qBԊ(3CP >` 03&&nT,%ppEiʉRDI}E3xACQUk[E2'>@1 rqb\i>4-( iD#0+wh|1+D#8գXȟ ̑$ǘJ·Q$S| MOr aCEjPt>1,!93P 8DN/hON2;Lfbx@ns`| 8/p /!Hʒ\WQ)sH<N$7-1#x"v%vxMbІI|嵋9ꡐ͊J^f7M^%(4m <X|Zu!`~A\! !Πa1UD>AbQ9T<=,=hVwía%VD> H "B5ğ@E9QA ><4(TlB<<B0kþ>OLY0].#363>#4F#X1$%$AT!D C2U zLh@:@z|C胹mXC9@Fp $q\c{;~b4N&eVe^&fZ>C>0J>Ȏ`C090AS@SU@LV&>̮|:W`(L ^]6 0 m,; tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]k(tL`‰dB]lDDBNL H OBBI*CZv(U'*(Wxɑi;XG!D>BYePfWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 )EXA@9x;;(˹ԃ!>ïRX@B(*e=iL` مs,)\AlE=CmOhBDѮD E l<(A$ChEm}Ga)KN<}KIN,ҰvC|3ӡE>=ElrjJYU,B+~%ld$sABmY @+8]@)&<Bס"ÕJA&..6 %hN脐`<VzD D`@<[BL@A nI%OaO0^M MB\PPan.FAεc0HĂN0\kBm[[UAHa ģ.E!=lEXH~&M1kp)o:<0 KdFIJ@pP䚩ޜ5 4;D0S\I 8R:<"@/c4R> H'2p|ztHCmpfEX@A|&rP|Jɒ$fXC~$=1  tڢ)U!sE쐁\.̍@&'2((*%>X@20031*MنN 1fQIc^2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH<1? `G@lK[Kf"5\p1#L7S?5<i.[p:E,p@Zh@VH&|z&׹V+o>$2rhGoF$+$K 8 8@ 1 Y,%(CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:X;h 1T_7vgچ"kKP> ESp!D0NH@NzRk1)jT[bMFHľQć (P1m EP4Y^> hH8Ŭ;c>0 l̸V%he:w' ENHXqV KK pNOxQ;) TP;XVhWh7۩a,Fc<ZȜ`!)C=hiĆgt7\Nn>TtLY&Gv]"6JxL EC'I*X}JkDdJY<$LACl"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/S C>!˃ @9jAo!CAÒzZ4K'^dYA ;J<1\ 1#˱$ ٟ=(ey'Mm|ü /DLûT=dAlLstF PPDص&\hΜ<`p WO|p8 N\=F՝L|ZVD^~CX@̈>B~:|퓎q@ݝ0&@,4MӠ8H)DĻwzȓ:(]y(0;;0F!!Et@w"3x̋;y ܧo^y!/OS\̗N$o;<p(PS:.ц>"p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}>  O[{%Fc }w E-pA6m:0o; ם+qû|u+GzꞝFqTy@RRs6y,| HwlA %(GA4P$3B@ CiA` HJ"@OiyA}jhσЋ>O'"0Ĕ3 uq I),; &BQ9 0+ʋt|J8*x.ڀNJ{)Mr=t]v}xWvvR2 }>`aa@NԑGha4(n ɦp ̠9 W]|1Ƨ'Jzק20Ftx " oxvؘzΡH/(PPv2j: CVèfQG njAO6+, [tI@ iǭz|9'pX y9믌&0w>0%  Dd'8hFu;8y]EmhHTL: } q\1yqw~]c( QߪmA+S> !0UA ^9A~!!ah_;GFDH*\a$&x(2v<mBxh0DLg'b}<;v%h%.;@'N 2cf ǙH, ]HX|/J23E |s#@B;@ c:}4<)#6i$tCPF`o(1a؇2d!"!@F2RzT"x1٠S $:` #߰X'{Gp brE_ALZT @&<`FaB*A!t'θ:4Lhk1LiZS9N=( щ*V3  y;J lȣDpEc0 HF!q"9 q2> MhnIIxBy>.1N C2YQ)E鐀!sF8H#>Qau:XFz,~y#'aTeq́`;b| r!`E;`)I51e҅SzP[9K (zrH;/€cvy0_lٰz1GIAv"5JQ8t';p7-dH aP<a@ E}G`%QH#!F5<(BeQM8_~WϵT,L EdX:hE(`6@>bF*"fv0P0:##o;"#H {䁂LO@ͬb !B*BR" ء@ TN@&#fb³)*xabTZi^cj+ bX'*MJƮS:SRpΆcJ"$ޡRma.Ρ(@$X?CTZ/&H' pEPk&R%, CD B AìbV *BuQǑ5n)lԁo,xv dT1j+6@+mjȫ(Pʬ!ì0 =C~"@e7&$nB&B# a"JB" ''ȃ0HҞzbbbb" 08I* kafIZe'+L-Dr+42"݌'()/" B<1Y $G[ٌ/D Ԣn)ma$"Kª$!eCFR-?\%ljr"/.2"A0j6P' pLI$qo'L$6s0 (s??@;L),Ez ĸ6qd"T'0@"b@)qF FA3C#B2({DE/2$ *Rhb3K3%BZebO e؊4ҡ`B sTjރHcG"`? ;F% i6;bAH)n>q.^NN'lBz`G AK$Nc:'D,!s//f$!dS/D$*O=@>Aʔ'RP( 6RRաT"n#lP$P/2$2Dʎ &*\BD)U@ `aVa'42Isa#3*@X@@5c5U#VdGdKdOe`a^0ee%%(` R'pA?qĠQLciViiif6T' "Nuڲ$ B7.dllmVm׶vܥi$Bk@E`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(`Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvThJ  B `k3 `k"`#F)xh z6@Ge$J a%H%jg1b32|V0n؇eAzb:kxXǚA9S*wB/H3c k84@Q04&/΂N%08γر "◒+ْ3.tNFp$EZ-!$A0h٠zx"$$6a@iG A""[E* ԘMԀ$]-1'+Ưn1la"MR3]To\fm*513 #喩>1jJK–qI a/?ٝpb +΂EL-G6::0Yٕ)WYA5C! v8r6KM@A7fbJ[h/ڨq%$CxΓ/bb)(?@ #A `'DB`*@V 6CF*`c()gf"H3X]RC@x`c(/s,ߓ)0M*C:t*!$vwjYv |&B| a"Y@"r}'v}CbnF`Hbn߳ATSЁL%0 A b1`=XJaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0th rK/[ ~>*y}?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K Z?+Ĺ;0ߖH'BQ2>h?0@!|)3JZQ TYFCPvAB  MsP.0xeQ@=P<0<}82 9t +!@|KN[B"dHpmi}#)ȣA#@B^;E;թXcBs8h s7 mMɪdqЌ}Nꆓ2PHPY$(@X$BKdi_jN="D  E BВj8d>ʰ)!|;(+TMfEמb29M锗F k)2 Cd\ H?U^IAv^y$<8{=ϛh$OԣOv峏 ?yONy_yoy4sc3OC\{ : d:D7A0/hBDh3~}ЦkU$HkϏCa#@:|4f] 2Ρ>)%ߞޑ-u0QH2#dG; P|P €s\ Au{T"$n{%v:ʹ@0@ B!Z݈0&Qn yHIO@D ,7R 5p3_a6J` NB3}0!WB )-5 Ȓ8o>8Ccq&80 V''v]mzWXV(cs45B ^uM/=Hh v9ԁ@ 7 ps,9ωt~Oq!P\򱁠dh!A'K*3%R6飞>vs#}{#!9QȖs򨬄 $zk@σF9aQD-| Av| cxt9Y:TN!juK|즳!u2#t!;#VyT,tM]7T#"f !Πd O:P1mO=`QDŽL@HHPE7dԂ )/_:Ghh U$?v@H}` ,!nB(Ļ|GB5VBps}w> ѡ2!`IJ/r@PMPXf< ?d 7N.#`Xf =#@y NۂWP5 7tnRWe| t4­fswel<, #TLOeJ qS)\:sMyϽP>G!_7iB8tyBgw Zi #rps,֤(=*W `i W8zl`ӭ<1bxj8ovс#w|{ߎcg 9@RCD Hs\@XA(YJ(9'E;Kh(T˫Pu!EZ!e`} ?(PJ (<M&A1  P aB2[xф ^KTCyMpa_j s8Ma֒A8D1Tsb%>P'b 707cdT|Rxg&opbP*6([}2%1&Y5 Nmd##@#P 0(BP*n)vnnq}gPrݠVޓ@#_I}xE "gjp#cZ aqnIPt IOV<)=tY? Ir@:LF1$&!p<4Xj)@V`71X!P ED)OIm7!91<~1+`dF9n}|ypm){p> 2I6fRh#{gCR1ѩ"ige qwj,>3(5p p`%&֑mo q*s=fS@[|Z@.v+0L!DcCmM|)4DCyXR`%&jqP1rZ,* bySu 6 ^h2-@jqqzOR% oч^h7(0@p @ : j`ͪ $'PAH}ͅb0b`gBxRي#7W`zC($#:x p @%#L P S) aUsך S!D&@ҩwS鲧ejRb芭-`؎GmjdM=X!jA#aI[>Z0 A&F+sA` `Eqp*I˻U>g<8 `Hś !644Q̛!MCŽlڑJ4k狾髾_&ɾ5ɒ,{7B | 38^|V2Q:@Jeʃ7H@"IOy0 j ܶ2J  ˨Z(Az"1z"Ggp  ΀ =.z nwQ}ؓQ᱖GuRĮB\H-T|0`";O-MxHN{PF#DUA0A: "V!0 k(ff1(:0P7q">u~($G~5WJMw h7%ʾ!pM9!>-bfb4+Y!߿AW ?`2CvY<8 p09p#CQ0%A9A7 a.:_%0pv@1)U)dy2>,w`V0@L_;VI޻ i"5M!l"56vs3A:@uc-谂qv:`7%&y738L~D"`*S)2+i!S֦'6[ACā>. DA<w\PhPaJ -ﵙ0H, BP*-vU`0)vY:!*Sfbs=0P#/qY[X-FA Ad9D66`Vz0TJDh9)i6SmBOEjQA_;p @fRָ:< Lg ` PyMi<u/LCd7!puzvAWOC A+= rДj v O=0ea -/c_\4e4vG 6PaCo xf*%p8'A!O;ɫPPa:} c'ψC Hǎ"y'A%`ZaT/]̓SBg^>cH%ZO^=ɻpD Uq_U䭼(O;Ա;ayh πgl =b~pV6=*L (! nO>vƢhs,x ڀ{@ V/DG$DOD1EWdE_1FgFo1GwG2H!IAX|"S !@v!v,8QG5BhR R!F@U$gazH5L Çc ɢ}9"辊Ό}xv-+hdsZe:RFւ@`g jI2 2QT @lq:G C2@O-+v,UWH@X8퓠XչAk6ոd~ i  }=&w>-| Ī>f'IY!̀{GE7HynN_ߙ@ ܧ 4tO4X%S3$`'{5 !":"yu} a 0|2ooZޙw$w\C*ә:#2e瀶GyрtgQP B  y Q0"*1mYkd>Jhc} k0})Ρ \p A^:48Ha,c j|lc(eG$yVB@ 1Qa! ` ;p@% H0 EJ>rU&gLPMAx-qcC8*舢Cq uh!INvғe(E9JRҔDeԪ*$ @e\` y87_b5Eˑ*D <)v42Fv`5Ԭ(T6]ibƕ؞|Ê%E+ÇC@>{>a:rth" )gF,r$U@v!<x#SQctl8]s#@=:SS&(CGH+F7W ;h=C`ϡU*~pkk.4T1O:IGNP1j2 H |.Ї{hq>&p\`(|D14mhF7яt%"Jfm !ŊT4}G q3pP!%xcjQ =Îc-Y 1(9&-j1j(͔Q@[ cvpRO)(P\VZ{se}ʤama|L;#Š2 ՜&Kn`m9Qɂt Q^}"Uݮ-GQVvH ѿxAD6>H5FXZjE^anE4ͅj ZV1bNWzֵuw1d;ş vl pSn5:?cAc%sFD9p($`ȗgNJpLC{<6ņTt(Y:͛grWٹံ/`G @3i^+b ]DD/Eeb~U$ҝZ`dlNG Vв7W75i " )D8ܭR :ȩw(yh;9ۏ8 83z{sP'rc8A9ȓ< ؓ#3~a 95sy,zпY^w0X,-./}Բ0dШOz3곈a,z Їz(Bz0U 9,PĐx > H=1 b 3z* Ds֚%3@0YE‰/ J4ʘ@yPZ{U uА7CDfPs"+ c ؋F #}`A-^x[xAӇwDdTw0r% jcn‚cP0G`H@# T-|;8u0  ezy:b@dzdw@ոQpu<`Ox/ڇ Y \#HDFDw9p(hFָ> B2jSgdÂ0r =a>0˿$L ;#}50xHI҇ 3ـ>Y PH3p#1d xx>< F  _k@t&8H MɉtS` Ca\Hze0I0`]zD :}9uPNH؀r>M `!$}P`XS9><1 uڇX!o8PuXT$W* Їg8FQ A1# 21xXy VC:/*bPFPU`:}OPԍF ѣdS,8 ur t1,@ >sbw=P X:LMNԼ)JT0!zX@z`O}Xͺ-[\]^&zGVY9i XCqV`Muf0˺4;nopq:c%W:C$d<CvtсFs|}~=sOc8zB1(:n؋،؍؎؏ِّ%ْ5ٓ]@ٕeٖuٗ٘}-ٜٛٝٞMRٟڡ%ڢ5ڣEڤ%UڦuڧڨکUګڬڭڮ%ڰ۱%۲5۳ E۵e۶u۷[Uۺۻۼչ۾ۿ5EUeDžȕe\ǥZ}Y%EUWeׅؕBץ=%%EUe^uU_%5EEeuߓU&6FVfv &6FVfv !&"6#F$V%f&v'()*+,-./01&263F4V5f6v789:;<=>?@A&B6CFDVEfFvGHIJKLMNOPQ&R6SFTVUfVvWXYZ[\]^_`a&b6cFdVeffvghijklmnopq&r6sFtVufvvwxyz{|}~&6FVfv臆舖艦芶&6FVfv闆阖陦隶&6FVfv꧆ꨖꩦꪶ&6FVfv뷆빦뺶&6FVfvdžȖɦʶ&6FVfv׆ؖ٦ڶ&6FVfv&6FVfv'7GWgw ? '7GWgw r! ,fBBD^^\&&$jjlnnl..,VVT ZZ\224JJL**,::<zz|bbd""$>>@0((Ĩΰ*$Lpr lttnfHLF@~x쐔`h\` `lbdpp||¾̴ԺĮ@80L86(Nfnp.(8X@X0.ld\txxbh0@<<40@`Z $00. 0zfh`Ztf~TT@ȚTbP(6L8:P0H:H x0.ĺFF<¼Ė vvtvv|FFDrr| ĺƼrrt H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_n::УKNH:Dv3|{ξ5oHp9F!pN#VD|f; AJs"FPNH-EA8F:EJ@>sLF)TV Y#@;#(s! Ih&QlΚgz:tg:B Xi衈&T| A#ם;`@ HCfQ?"n = ^ :ҝ'9>*:GB4kqĢ&cO:0&H0F4hЅRD]Cm#@ +n{l' %p;4ϐ4Bx]0SAs;}T ![N;kxPL#,;80.o+H{s!ps T;#*_6h 9s w@A:Cx7642CN,7=tG'MN8AgvIM@Vg>zBd°.aP9$:"`:A9~#22x8@Stһ=CZ?t}~A;G?Y壏1ӆuc ;@@vc:$`]/{۳GnH!AK-h<'԰ cH2 5b@QGa˄s꧎oA>l @ x@+CzG8]vhL8 IBA>4 ":*S)KG@{J88BETH4'4L0ppѦ @&EMҠQ?而vJF:R"@< pe 8) KsN/:1?dA.LfPۢ(RJ ЁJs´1)JIVІ:6: 0D0p#@W?  Wtq fE  D@pv @FH4pX BSA+wHQ, pVq+ COgEӷMvd!(<\4<).wӟZQ8 a)`ց4j,0Wʎs |jWfWmX;H@쐀A1t0` @'r]9 VK`Ua:[W`tp_B nWb|D-H7PdLZR* vl6T׏u|vH/+ ^9ڼ+C2џPkk4US0_{wQM(Gd.s~@ ͱwcН1Z5(vP$`9*Ȁ s0ks G6A0;[G<E^Tt>d?3Kq= d~Swr't.["HK?:@8G^gpAN`9񜇜Xk;3! *J'Ͼ2uCmC :=z&b?R%Wb0/C4*Rgewt`Dw)|R0p~zqZco(ac5fas'cV#''֦@&%z'P>1Y6]"p rXrCE-_#-46p sjCrȵ}xz0 T?UC !- pn=^3>%0$@TVXP{V5Šx)  :Sk&b4Xa "tdwMM&T S59=]E(aA:WWEÎc52C@.Sr| ِY?QJWU$ّ YЂ>)a(@h*294Y@5":1D f8Qpw\/w81\y') g$ sy S"@?@gMS oS(xP_$`[ VB(y)gC-p-6P Au=eYU}5zid`$"0J(*Yq 1,yRt%PPw^_54s"'U"6TZV \0`*2G>N(@<.a#r:/=0JW:ע$ So9"0IPS1ƣuD㒣0au)䥊Qj@`/DڪzlmnG[3q'jj/8G ?Z֚F^1_ws3J :<1Cʦ Q,y?|V% 0aگBePqJ@`"RT`]2j~POakk";!{f$p53*!p#Q@1 "sɅq ap-IHJvcZ<j@0#\#%$εvZ`=A IzKpѢu >XK#LZWv Xw\N*[KYZG[aǷa&p h_@2 p8)&AIw a$Iek)s!#Ev(PT` (fees껾'$˩ځe`{a5a:=E$`[|ѱ ' <\| ˆ+&|(!\U(Lt1Av8wA1@/A QZ—A:JPBSL` BkPu2Q)0@{/7h dg\IIP3f#" R} כK|Ȉ=%\_ t %O(":p2%9%3ӹIiR&':)i܀ =О97q#OA@QITWf`'`Q~%\y`VD 󀚭s-WAT+:aLҞGR j1$˩qj'-n(!YB@wdQjP@q N6h'/@jHpe#p~E=*:P BP 0ae& PE`uh.tcheZd>"vA}Z?EzMp܀K/%`[LpThL-G!{j'c<HTg[_-XX@3P f* :ppӣ6а  2z A  o $h@?,؏ @snG!E$YI)UdK1eΤYM9uOA%ZQI J.haxڭS ܡ[Au=Wv`k ӧauo FV\;;: bc\v[׸`{i l/->zenNltn݁y xPA(;;W=%Ե;I[Us*.;ĸN`aXu `<ޔp@ 4@TpAtA#pB +p(wPf9   Bx-Йr#(tx(u HG8(v*"Htpg"n ] o"Fz sp&胲hPu8]8@G ` LW{l6lV{m|* Huz*D@{C ÂJ ˼ | 8,p~"ƕ!+@G @ ] p t n1}ü"h4`G@`ďmGuέY&RWҳ HBqB eQ?g<%(+&{#tx 6`A 0D m|a#b :2E`,H FWB0vD,0!/a|1L@+ dҢⷎ(R$!oRo%|Cp,eVZ$RZ  2"Έ +GÐxHE8R X,hta5yMlfSf7~ׅVSdg;NxSg=I¼ 0">yOT%hA zP&t<* ! hE-zQfThG+WYq%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^7To}{_֓1a }Q%rZ8w`GUMԉK>țR$C+ 4% |XN'ڡl&ЇPRy`(˥XӽŁrND8ڑ7ܳ :$ apN7l%IɇcPJ2hwm| fdg^nѸl/ڊְۻFA(&q$H $)?M+Cb5P1 %Oxȥ]B}~0_hWPN@`ҁi]*9=YX qAlALP 1J"4DdFHqc|!5!d&",".J/ #~"#3X6z# JN+iUEin$L(3i"ͣ!B>2}"$CB2" E7#qHxC@" ١sւ$b`nanPzj|`'R&uivcQuYw' l!CȀQiun򧰙)~uc?kZiBvRm([bFvnua'p&P towxwywzw{w|w}w~wwx 8 : ^/xxp0k ,}pF ^w ȀE1զW *¼9M.!1yx?g( %#~ɵ[,6b 5Ёt#o v T{3}aXnGSoJ8mzzUiH|xus$3˚|z|k>0aP_Bo/ ˄ԎGy GW2=tK&RdND+ il{"遰:<p@l߳$ nPuDpsh%,hݺuJ@CA{ h"ƌ7* h1A}!cɘ2gY2Ċ4wҬceڏgM3Ӊ&ҨRR6q̫̉`eEN"T!D{E㠣BwRp qC.,Om1Ȓ'Sl2̚7ssc )=W@6yܵ]&A>'KmIt@dX,N_'CRGC$@f@@F u; n4xR u`PG!qȍ@I 9ddM `7Η YpWD0cA piִAD}H J!vcZ<4BK[k8A$ B Cl :Oj"Ú]-qKJ i!Сa9%k'l3*Swa06MpD:yxp dũ;:W\֪DGLq7۰gQk^($h-C@,)lxG /"dD!iIOBaܮZpVD C度E,VĔc7onxYS؂:ғYr䮫MYs#9l6ĄŨFiA]D^"?n 5HIjR}/К"_ReZ~߁ǿ+,1f>3<09@o)9utp6W'HOj@#-GA6D-?vK@ksArq&!V̆sL2/aUxS1$1?\ $d8FHAAC hG䣆u9Ί9.pbCuQCj@b+Gc3Qs RZ&` @G| "AB,݀=t@fBV L."˞NՀ<C}E3赽b pEe |gH-xDHamՎ.MG3Jg5nw]z&T'T;*Њ(~9+peΞl(M9 B Ϗ"SOH .@BqLcg qk+"!@R3faK1%M w;ABYVR{J;&xv,C0@q6^x!*:_\L m >'3o  s,?߿LIL1 A@, u:=_ :PW?܆D(!Ģk, i"q`$%I;!<\B⌀ >:=_E!:0@kR 7Bbu @|71O/I-dCJ BNːbM`0 ҋt:j#N4r@G!"S"A8`aAhat1#%c@4/@15>H֐!]%VfVn%WƓܝE`;BPK8EG@dT XI %Ob> ZD8XDzԟ ܂XZ`޹tQ]T)I><&hOvFȌ6A;,AL0 ޴epDgj`AqFY%+PT(;4xd@DTFNĥAF]>H^%S_ZwGpU~چ>DeDGe%x(ڳU]BՂCz,gD@X8 ńN qdi"!`zX%C_NSz؎h#B MBU Ic8S,؏f=LFRܜ2| ]GwZhh˒ċ2bڃm1&)< it:|(o iWFN*VjJ@; ~l;t q02ß@'A[>& B(hHViA%jF :(eD:l-`*& \2"\C%kiD-!Dh ~(A "k)P@pQ E4crHЗk>ug&7 i,Ml;t';T!fP 9c\+J lA3"dFF\$Nڃr JF=(%9tB9ʄF:ȃ?$m<,'m @C^;^ȃ!q~r ,m&Ͳ 79Dt', C8`>荗lHU!m<^RT0߆mn-N\kVM`A\)ˊg xe \mҮ17ߪ:"ă<.Zn/vxcDdy6lAD>aDe6(ueX `n,L@R>pD, {JhzQ8%t"s* ZDpb:pvaATvP&Ok2\o)0p(Z)*C00+F0rAX=HG ZI窾r? -G:~h^FC#kv@4AAG:@~:\=/DbPPMAYCQ/"1AXG&3,Cw:Au_:Xʚ+tlCfFI`Q |T: ý@(6F; RmW:Ot4>i\2A0:⮌ YqYHAnAo9@h6]gČ(\ujՠX )ju-_w[pptϴV(xAxD^:h)JqIBT ɝm6ȃ/ mr a`}EMJ!vFP:A9<"HEt8L>L[.NHqJKn}fgC;P9Ud9݆e@-W Ië!C'BP\$9: 'L;+H{3AI;Fd9VC>KG>(E<@';Hs;H;_ͽO!6;1pCQ9cNj ";Ö̓pZ=g}xTb;4\CA s,}?_e0씕; jNzpÇR/4'aA_,3h;}ڭ;x֡[:t G\;,A[aAE!X֬iA jT:_^~%-x?\uaxK}s(Jeku޹fI蠅袍>餕^馝~ꨥE pk*'P *VNd `~ǂ~Ja-k ?ZclA.w:X'iG1v dwYt+K_]emС9yTȌ:ەGknw^n-"x譿ߞ?_域ߟ X@ T@> 5A%ςI *A~!1mT BͲ9¦ІsfXC!9h:fx;a KsĎ(@9<IXE+^YݣqH))sʈ88e_[¸E{Q) ceG"Ry1a@;I@ѕJn@'(bu8 0P ѣ^2d"G8*d;b_T`*x&,9 ݈# 0i) [v`\`p›|sR\7wk;ApYCaTQ[%-*)#-uWqDn #g1VER[;b#K&;ux*l`"XcR&=hTy$-p{q]:\@9(AW?>tB @.d8ƭё]I0%lg?L2 .!2 v'PPDZI@t<r`F`ǐZMR N(7 5pM>88qFc QG>^T f@w?"|hF#*q aԶ6Un3Eʭsd cRh{2A0,*O& EA] bso|1V AĄ( HuIz{OU g&v`7!C bUM%'rR|:# DDY2@"F4?6Wv|=1ʀ;QID@>q^w\ @;h_>uL"5|љ ii@%3ViHNKa@cHO*Jl"F r 60\ `JFց!b-%XX/"6jV" > #ց섥*@slN!q(+@\y+"Tk>n%A&&" 1]i-8+[bF! #Ya(j%A%Y"]LNX BA 1Y Ԡ"3?4Cj `%   hpҩ&0c)`"Ёo!x$ 2m sQDԥ:a ;n$ء3  .\`NL5A5 2-",""2-q-f:' 2>:)J( %S86SȖ 6AVi-&Q(?˓'UB%:&|$($6mB@s*,">!b`s55_J2@'T!9gt0>5]c/+kW+R4ǔLL& >a$B#KDE-""?r#F\"z4Ae-TbƶL6Z 唞ata!&M#bM!%tlBakR$el T FҠ.(()UdNX< s`F)pU."Nվ 24>m%9`' !@f-큪əF\YmBUT_ M:V)S, a0+W*> MT؏4K!1t fogsj!J6vCRO^D ǘb<+ofzPN2MUY6a Gr@aH6k2ރjK\e}L:hm#Al?3miU=Z! Jo1hYb  `x’js.)&]frrȊ"&'yؒ=vtt#vchYV @A>ءn$WjywbD:y L+G RHQ6<",ak.p0pQXc8;DFcU`&&, )= vZ^s+]A f$`E K܅Jx^E!wl_Ȝ\#Z,"/C:,"9v#X`pת큼[oVR,>'.\׃pGNL.F;[ٛ}7'gڝگ۳]ۙI}~}ǝd^=}~]ޯO>]~}u@h^#^'+/3^7;?C^G3h&'f剨gk'.IH_ jf:~lR~h>mIiA6臢f^Ǟݪ z˅l(ypT&&Pq Ĭh~_~iha(ˤkFshV_akk ?&Ξ%@2: kucKL D :Ԍ,Dmwl@l_<ą]_$fwҥjC_5D+e)c$ eRNIeV^eZnej% :Hp@LH'̓nFn TJ4:0esI`:s+D0|65OA:M)V9%49}1  ̳N묵RE2}#uJ+Hvvx}L!@Ձ: N{4R|jRiUd@S@#:@cgeOLq_qoq Y!R@pN UQOwr0RŴM1;YIR&Ay@>TjHu2yFX7 B@mJ%/=m9 gw-7T]sS=b?s#]O>sI+1,M=Hs#=5:ܣQMi^vVL'd:$; t :ʆ|?}OO}_S##mNH>'J> ߔ?GP.&td; )IQ j@Y]"L_P##= {0;gg21JslJ~I@A#%3wr ,YdsN)_hG`y'/ɐ;yV(JU#9m@p,LYf_AFY3{Q2${Fz53Jqe[lP%ؕa<if pc~ÒD)$Cn NEU @]T]^OMaIDNhMliԙKy /Y)3)>+ faT>k~`P@cq!86D[ s?vQY<2/Pp!aaaEӜS 8j#*&,g If#av@OR ehV:<.`A I"z jHZ4aJ@&!hFP*f*+JM+lEQK V`Hɝ$bh/2:N`$p## Xm0"PA:Ñ1ѨnSs*YJFV  UPr*:u"=`jpfR71ZZ(Iqd:SRAwRejZ\J} [;BiHEGk1z~#3ȋ%0caǠ u;!'qkqjgp ^C00'-<ˋ)s0 3j("r`$'; 5`."2#&.Qj /)3A(RX' N1\<<]-<.qP#iW;}4894XݧwD$@ #P9Pam.%֓0<Ќ 03T49|-{-~YIj[ sj:S ~=# O9]ۜI=^{?k5 :k2]yDjF BEy'A4 <WtxUA+'#U퀴 UȄ{:RJtD CKp3FV\^_^cWD NBB*8[G~lDDKt*snBbxMfFE3fbr*zNq>S409~XNS)> :( ?" @=^bHyK?"!PrՈDn< 99a4&A4T>7:!>/zΨP Pq"Ѣ~Fo|NP uS>@wer4TN =k#`Nd@ 'Q OT ΑVo:SKɃ?|?ONJ0mA:UQ?eCuPA> ?֝"}ʩ,rpc̖T5NRzB'$֝œTAͦN1RQ2)O3AIR&t7?  JHOOt= g: =@‚ t#a_}\CP ]E6\@io̡25\yyAsgPߺVaLU^ŚUV]~VXe͞EVZmݾW\uvaтԴ!O T);]; ;uQ\w8(EӺEzTA  `C5*,Ы[uSq A*D",KHؙt.tp)jJh`:u6;:quq.(ʓ; u*uԩj&3uz/6(sn _AJ+4 . LJ5VYgV[o5W]wW_v*,(} 5ء ! |CT ±EGǃF@gf9qt p!~AFí;g& L( z C@ }Ή'!C @_e$"^{FXF߄Ҟj (bjPD(tѮmm̃7ƪcfI|1jE?dt\sL Ibi hgfj! QJ闠$X'U~9ՂD`ʃٹn9܂i'riy}4 :*?;ʀӊߍ^縰ׅݞ Ys)* \kG!}\8+1 '@"@&8'q1;(Ϋ*jǕFmJ?]ZlW`8@ЀD Xb\NHɇq0 cPg:bED4%ā8 xGw PQwQ @Cwܰ  !wP$4:PX,tЊl<9q+,H2Ҕbp CДG6f\c@2T ` @BCtE9?R'D t !^&QҒVT ԊZ*0TeAȾ ̀D(3'k&:jxC@ P;h@+@iR׳,1C9mz#W!(+l7uPJ&hUݡk&A ) 9\Ǭx!ݛd2˘hkX6ֱld%;YOA ňl|9+~AMes&$L hjТHKZN.pwo~p.p7x%>qWK1g)A>r'GyU/,i?s[ɜ7yus)υļcCKяt7Ozԥ>uWWzֵuw_{>vgG{վvo{>ww{woi>xG|_ 2ti·dpE?zҗGbIh` [?z.H1n>~?|?+P2@m+$'\הco}wg;c% Ԑª_,\/td-.?Hp( 4pxu  x$ZH䀂q502H; Ѳ"tЁ9xȗu;3P 6A x(BAh1`݊@# $.{8B"O P ?@ӣ:X+-_X|9!*.Bzc%v`dW (upPŃR vѴ  }|t sp DPEx 2 PBiExXu FcDFVDUb@BATudvtǴ#ւAFvXF- e*P. 2R.4pL $6  * H/9(ЀArqb  %'S/؄tX 8#jȣE(Eywtʧʨʞ; P0@`u7 PRHKAu((h4 hI% oZ"$Q'HH@ X/K{K*P @P'ٍu$4DMD|H82v⋘4Iʠ L!Ȑ"K[b1.0IM,-QpA.L1Ĕ~pZQBTdtOQNt6;c$cOXhmZLKW x*\7!곏8Dx؄EPXPQLAs"dyMHF8ɌDIG63@i8.w~諊7< vҏ Q!CXŪ@1͛2EDM;<}(Ę (9 6̠huAĉ=)D=H9sE߼.UKhTeaF`vi(U'ؓyIuJ=^_<n ,}ɀxc JE2{' hRrÍ1{R|Bp~uxw0+$ +. "I&g VvPS*hRۿ\ǚEUŭeDžȕ %5EUeuׅؕ٥ڵ%5EUeu%5EUeu&6FVfv F;RJ@Xh (ܪ'S[+np = u/SHJ-v0P Ԉ(ᠨЀ,&0㷈1T-8P-( Z%ئ!?o9MC0 @گuc p̊H6I:3nb+A(Ғ@A(Zr!:n.vHN@_M(c D耼[pftfi.Yۖ$} 틷ܛ+Ȑ- zg<v(5{Jn(d.Omux 05H/q]Ŋ>Ȍh6R[HTAuGev`vPyVP D,!^쁃v`R{P" ͇6鞶`ysh部 (X|PLb)c0pQJRz^6wWH$KmHp̄$Ĺ8h8 JuZ }kIuH͌Ȁs@ XԚYx.6ĩA8d lN5[!uxUhF{:Ã2Fm moup޾yQ.F;.Nv KIitjkbmf|g v8ԇA3ULx͚"g8otu5xA"npA֓ v}!uJXNJ@^ >?o,fƊx0PcKXӇ!ol?Ɍs o ?{iLɏX G4׿^모y0xXt_xiP>>2 *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy3Ξ?-z4ҦONz5֮_-{6ڶoέ{7޾.|8Ə#O|9ΟC.ep,^uxp}<;.m #Dw_sKwa`:CG稱:Wb紣: AP@1H3;S&"D-;d>HBEx<3MҒUЕ)e9ГQeڐQ٦!:bO R>p ;jT@; a:P23 ѡ$MfAĩ6zΨ:Q,ѫvҬ\cUj"o@OM[P a / ͘Lt0Ё@Cݢ7BTNͳ;[-+k %N*]R] A;Nt@Nʒ\ɰ)OC~e < yDL{ڬP'] mQ=/5BRK7]P SLL%4HcGMEhk$Q],x# {7hql >MS;]<"w1Vs}㎄3B@jbaw CfiuG:(OA!䭣 y:p. 5 !~̋"4'5IL9?T9td`@>D!hJ peP@'4TCD R6 >ϙud*鷜w/@J89v#!wH rH{W?DbTd 崩?O FT@G Pt?%٣iCζ. Rǰ'\L1.;jFG,tʆ:Hmx@&;<׉E R!i~>D0O!vRs]ЂaJ$`43-Hn65c@283hb#u.W{ =́Q.DG'\ pÁ$(V8۲ß-8YYٝ¦J!9ΐ^tt\ @};ir {3sma 8:$! XȫSrL;ȧ=tc{$xȢ0فh:A hJ.XA"m*dh;;EW ^ߟtWH@7yR; :C{@/fY 91 DqCvK2; /.sƣ P/GM:@Q{@^ofV?- *w\aCB;q#f@^QAw +ȿ ʩAhD `5DTR`r{C (aʧC$>D1C%xBԹ\Bˁ` (E$EC Z;q؝!n`=ÔJ1- Ala<: AYA?ƑPul:CCC9_땡;aVIaCz Ģ) r"2`u,`DF!$9@>B +Bq_FY؟dC @ $ȅ -":/Ϣ<=x\>0@,+  <7@ߍc9BH?R̝;CĠ:ȃ?@d<(' fCH"i"hd]D,:Y_ 9$ΙT\H$DMA —=cBM=;tBη 2=A+x^AlS:eM 蠣VEYіݎ+ĥD^m6f:x$;T},'D:@@tR'+m@zg{?fwBAd/t# D~C8'C)^~+tD@;p@p}~:8c2.g۸&Gn G"ډ=9d .ě ܁@X;iD2%:<`\(TaN `@ut8Vwp,804/:kA,Q]p*NVΕ<'|H"`^Bۘ- vFZm aD9YuDN >zdȤ<:D#HDæ &6Z+qCAMP&k>ŧAC_ "@!1p#4IB8@L5Dhd^"J@K2ā 7>DUmoQEJ5E .D< >\;*l-hG02ďZԹF EPRe?8${%r 䭄xoT@4_8@02e; 'ZmU@C44I@;H{ =5dQYш.LHTp- DoHoqK j·@1fdAxh`1Ht  BU;C6GU=d\:BJ>HzN;THW@@} ;J<,"3 @4?<22735I 2K;p(:=zlTzCT \Օ@8<:&D0@>٣-Hn.!f|ЯzII JEt:A 'T D1}l::PT>lC9u;`d^EN?Mu%}ާ% pDƔ4ˋ8G%j_<ψm26D'n`v >@@|?N{e@DP_ MD4 v-@(Cw!/b <͂,]-@_: ~k:kw0J%Y& R'))u砒]g"[@TXW!{zZ΀:E p-bص;0bG=`D бu"d?w} @`DKt nxVFp:t$fպkW_;lYgѦUm[oƕ;n]wջo_'cHsypqǑ'W;}IXAGb Y׎fР_#uD Lz077`=Yjg鈃uN5 एZN ) 1P 9A Q@g\ {:p{FXE{>8G&X\w'tƁ 9Av*h%y(0@+I/C,`":b*`>rg@B*ց@Ɉ@#Թa祬qIWQgO:rK1TM9OA UQC`=<n2( 8IvR ${,Ԟ "U $Ui(5xksGF$@$A y!#B(W |=|.)A*jNXn!Xb 3@|\ #CuT9ɝ" I#CQå\aJ81D :l_ l!>V|῍x*,Vac{iP|!OTَ:(76"W&I:×~T̓_Mv\e|0# 8/ a)E@ܺg9ϙI@;v\/"P ԡ^Ken m-%4t6|:# 1>!.D#( :ئakYϚ-'TuG&6H%u tFD9sG+ +ӡ~XD8G`S?r" 4Kaoy(`Icn:1lx-x_* eE 捜6+l q跅Sntxw9{q.]"CO #Fnbl Y 24YfJp+w(_m *RIt;`ުudeS b@-<e} 'fڒ⒫A!fSR2v{^8!tPyu bvOv2EV;d)0@!Z5qt.ӘԬ5lQHEݑ JIGU3ۥx 1 pI5 7A h?䠈l ?$v-x?}صB& <f#H\ $$*AE*fd Ā(@*@*&JĚ!"$#.j:0Ghc#)#dK.NdM-A,M\gs (c am 0!a cq!@nbj!&# c%f$%$-Y#Bp#j#n<ai# bl| |A fd0 !aa$1eqQ*#$@5#‚M=6>%|,*"#j%$إ."ڡH ;TE<©RlLu",fBHraR+^-"A "G!)""J<&&P 2m6q3a& Ħ"2"D"%(J,0R'a):ԀR\BjsHB.RU";BA+= 1f $莦 F @,D eq̷Bj\:;c<wnnsL\BPߗ\Pho`c ΢YwcAڡ@XY+{O!Q&KRxe# ?BL$`²"3-yKgvmkdrQ؛bxMCjqTyס?bA"%c9Ёfln2!#a+\b*2 `ҶQ:fi¨.-yk!Im*?'?36H#D""9;;R ,@>sDtLu8Fmrc9" Cڀ7ȳxwA:Sj!ƅ%r{&:(P:Ts1PiڪF9!ĥ;nn$|PҺ#"K1ar~#d>2`!N5{Qj7y~~I U6s;4=+J B+`ezX+@qX '*{9"P_dz2 5Q>M=u%Vuu%v%!az? exw!AR魉unqw]Bv=Bꌬnsv#̾FvxڐWy7+a>mSO7 X5tJ7 i:8M6x$ X86fy$#*b}#6DS8!YnKSؖא>9…_tPp 8A9P@&fǂ"C)/؋UI:ǸXX| pN@?{[!tN ,\C Ǐ CIɓ(S\ɲ˗&[G}^$΁ օIѣH*]ʴӧPJJիXjʵׯ`ÊKu<ͧ!D١;:t@Bg#v&80ٴ&6ܺٳЎ4Ner|='=Npq.Kq6h;E[سkνËONsp> un]v͜YNB0ETP} QI걣:%N; PLwB a%:4< g.(!{ 4zF)TViXf\vJ: E#N@O<  49 @Pn sfJa{hck6T+L0Fk䟍N;8* *n㗰'7ca?뜓;qk&6΃(n}?: Pb6'Ov&9:6k NmW|jYnF<ڈ@;|:,$l(q2 d'*p^SB<@D JRˑ= lGwb^D>F :!]$;x;@=P: wQ j?-=#ތ7G.^$Z1BΊӆGP'ģO96  bH@*5 ́>E6PC!Bd"$SG9  ># ~Qh\ZyBH C)B80LJi qeC?d$ C,! `}1uFinU 5AG GhʼnCP#>9 CUQ@ț׷?IP浆H:x̣>6$xIBL"Ȯ 7k$'IJZ̤&Տm (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:ЌK<)ͭPӔpnz B0DAUI,F6W9๒.:#U,2p h#5s?ч.|pAI\}x.,PJ11F(>PWQu"%+W 8ͩNx}W C4{d:$C KQJwcU1\ʁ CҫL - ,p\&ck$9GQ}MCԗ%v V. //ZWP>3zҬT(.]r"I:F\rtҴ6X@J#Mr\ԕ+Т툂G<8 GuۭwӁLīA^C:a(EQtkCim(C[Ðqp-JBx02ţ6pLch@xu4 .݆ N΢EBw36do;.lb$ N| zG fbu( LfнH \:W3Pkfi$ْ]3ge\:y z4tx&HQ>,5!%2<h @;P+t!dA2NZ(JjXBtY =,iM suDܐ1FTbB2up@?3GF 8CXϮ3uOhRc.~ Eta"ËMFP9$BH1 Q%~E_ f= Y{lB :g̼!ĸUMBjH=0 $MsMᠼvX (`åq!MNR\;Gm#` )'?|RMåI8#3KhL~ND{_DCӠfݞWBzP˴wpdZ\aځ܄|.=Bj_{'x<-}\cz%/_+ӛ sr̆ajeݫArTr E0OܫiV/q|J3= 'y&,`!2"%YQ+f=0U8jbD45"\#xA0 bN {sCb{0m5\5spؕI4Kxn$P7dXݔ"pO4&pP i$GT`q'@Z))}6F&"r[OsŇ7 1['A4mB)rB' Wl:ie~VbE{RHI4ad++4ofLe:@pEr4.U`pFrg !08(\H[ biȖlM mC3px3A[&.2AT--Y3_`5Cz{ S8pQ"`G.4Y6iK*ӌ5Q}Pxyv)xu2{:1] )gP-  ex 1arS&`k,2*.15j3KYOY6Զ("g9s6?k nq"03a7y$7$ rQ3~Cs7y4V-UO0 q1˨ae::&RqwVc`гUhA@98`:<0%`B6`Pn-x3=?CN0^;Ւ5<#::;<#)ׂiVj \c>>Ƙ; ?wqtf3D?p 2M4Z6HgVv dG%`E8 VU6m4`ϠWT'Q 4h10-sf$ Pp 8%C(&2i2kx(NC$T DD2ZjXA@|QEhEg)'CpFtHc!p ql ?]q^8 Go#E/Ѷo[L8 B~6s0趷~Ҽŀ%jZ[ Fo3>{f1kjݥjtgw&h;=#G Pi+r^Ծe"AA,~`#T59>㎾Du5ÍhIvW8>˻-Ҵn*!A?)AsQ^Vp 3Aua)$@>]"}@>HeP`=AP#$M:a<آxDCKa mxCP;a}C e0/BCJ0IAbxE,fQ[bx#)u!ЋkdcF8Qsc^ F[#,#IG@R$d! yHD&Rdd#HHFRd%-yILfRd'=IPR$e)MyJTRde+]JXr@ e/}K`S< tY&:F6reQ ,8*PFGLpS$g91v`s+ΌЁ;Y^_xq:-@.16tF3xu( ehCP[=l5 _B̕.w4A4p\KmzSt&JFG!%& jUX"8YBIJΚivSjWUQCq;Xѹ*9"F@`l|@Z~LaYw!Gu\ v.XPFҁxdbQvb͑xV&We.X؋RuAj{QG$K_kD%q$SM/kw!TX`~-]~2uܡ5J gXpx{m+C`D8N $` @w Aj~blD904EZSV9K%Y @VpmR.Yc&|-qܳ8g"{ rHt8~ @^$~!`%,O+S̴G;ViPZԣ~ aQB`u!p@L<jP@@! bԫ JZ҃$@:\ND$&k Cv<ק\vԴ IM (l 9?t HZҀm U՚_ =p잣G؂^x=qP_ħkl0@t  bpx'^5Ea֐^Ç;]0 !|!$e[\tc?؅.' @|nmh:7erd(czi`|}ӧ~WYM#“r Hem;!o 1G|uT1\9FQ828Yt@ @ @X@3B#؄M0A B!:5*!\D^C9 x6.{D[aC sPHTD]E {60DMS3֐5 2\ h UºʀDpC^Fm:l F CH" /àpC )F{G (Xe t3ᗍ`#>17Q#u\rX Ԋ'}`$ )TH^2&?.-|Su*|LJ:Ȗ 8`7Yv9 8 qᖯ ACZ}諹 8H\ʭK[|(5xj z0+\J˼̎x(vAl8@wFy`e(~x؂{7됑";2{8u@ 5@yQ$u< }C< t؜ xԗ*,2+ :LO58I{p }0M laAc73Y˹*$ H0qAJD۫ hZc]ylY5^+T +sv4鱿Ӏq @Q #9`Y!l;~ `HM<pIVs0 }D' =!MPp*Q(P}rQ:S}`|<-MS $fr  Jܞ  9x΄[@E:BϪd#7 8SYջjOG?>D9"ky1FBnʋ`{rX,_ !ԁ *LR뛒eUu]ׅ:G!Q`CtpغBh89}YI #*:---{HX^|=}E~8l!FP@ vY](k }~H`x>@=-X5U| AE! pCx!@5؁JX2{Q YW {@5ZS`ؙ S9έ;<  ̺Yȍ\bJ4(WHM4!ly@W@cC6ЙMX dO\=9]-=s)lM# t\-_> 3_]_l__3__M___``.`>`N`^`n`~`9` ` ơi `&bh^a<a&ni*=b0S"a'~b8;&J{S(7#.c(.c3Dh3yL wMY>!8c\426 9 s<3dB~ }8Yɒ82u-1:II%JF GHdJnt-b8R=-y܄Nx_*ݝ|HεYN,6{pXp.dlt1h+x (A}Q (,UrPt]%/[qh(X2v`cXl؁fuZu0g!焐KuKLu ATD~`(J/C\mnip [P4NٽB:XNB' NCNp1[s@ PMO7(/pa`ޠ -hw+h ‚ 0"|>Lh"F*LDQǦbݹy8%;S eC<کCay|2tiF 4j*V{R&|E 4tشjײm+X S:o- @xa^6A]Kϱ{ t2r L̇ ax*8pk4ԪWn5زgӮm6ܺw7, XqGt*e#y UE b |կg_ve?wu1uD7!trr#@>seAi z3A( =c:5b x[1bVc{8 rp:t9c?TLK!s=G7ȼAA9pZ29:(#q9'uy'y'}gpCXBA-1jD}15A;p RX>0@WQj)T>\jO R~RP+E sN19 ytP!:udFJQPYj@nfEW!B u@;8$;3 $Bi[P>hS:<:}3>"j P?ٶ!<2%|2)2-5O`7LpAPfFw] ]@}p`cDAm9ݚ뿻b 0Ni'".r[DwSxuy{wF|  Zsۓ8*!Y50Q M@.m;zAs:87A 1ZDA"s0wb2; ?<ACEWBp:lo\ٷ}A;Bt%~P,OA_w{AtgcYÞU2'Y v[&bu8r @c^T &XH'XAr- @1@<58F2`8D!8 /aC!-|a RЂ+D`"%v8ƂQlhT#-2C 3`Q3q_Gh dA% &0Wq C/H$7Oh;!%ERtL&֔8e۹;WcKDGX @Lq&8)q+!"ֱ0Yyq>2$砝= qCFuسCg?u蓟\@csC96v+mD!)T}’ &dmICۉ@ ypub+sB O )xӃ Kp "chG;VpR%vX@TiAVkAꎫf NTw7]uxuB¤g*WE[׻]e%`Yu @;NVfׂ|: Iv";qA{HQ=Y\OCǐU1Q>4kiO8>A 6U= !޲J  $ <03~A旑A(G:i @<4 bᰇuix$6&b^= ;*ëH8kIR:YP^x\ I1 ?I2C <"=Z:7ÖT*QDC(㘇f{x@ 8A {8;qڡ3ymI1{ }hnE;kR4=f{juA tZD`hVCg $G{hE`榯n=;0rVcދ 5 $#\A.03k`_p^\Q˛!heˡ3\GGG>u PfjĩX"?~:p)]JΡ< T" x@ga:@-dV>A~ \A|!;+7=yy;IxvI ā E 2 y 5ˣhU<@wAx_P+:pfg"%!vV"!Ɣ( #r$r c C%fC?4)șOă!Dȭɑ@C4v"N@_E@H,ɯX۵x@;9XZ@I8@CydSܛENs4 OȄ!z$ >I ; B&a|a5:ġv:ėLA4FJJLFJy| U'4TA@Xa}D:=U DbdS] u%"C }h_? &2.#363>#j:ewT%"\ 1)/"C @;xcCYM!C>QK?A:"iP pģ GQ}`9P B噛:YæHA0T>bq;ty ^I4 Ff_BlI}uľT+`L$!dADdO$̃qhJؤM5@B ~@X@@lȺ>$=ؙ0]hAp9D& ᜔|0Ed)͊x1L;{!IVzSܜ|΍=dP=iMwTu h~))ĉ9|5څPB<@Cd ILAAU@EPi=$*C;pNjj?dƑ:ˬ+ĿE 1 AUQU܍r(&aV)E4@PF5{bHbޠx gB,BKHBGP@ Ajj+;AAh>ıD8" :(E ΖQZ+Ȩ2DPWPPdEC]r}@\Q beNY"poj.L:GXbCU\EDpoz^na>},/!C " UMoyYE*<@!\C:hhk@p:©Q48,ZS q" b-:TX]mŎL̠;sN1W_14JED@TGTDoV`88DLd@%X4M!qqqo7@1Z @<݄ ['6KD1@p]p$cPMD"xrcDAd9׮@cDkLkEڙ<٣kAv42(D<;0TWPKq``ss27[Մ3X58oDpF @xDy%Xۦ,Ccx:,B;dB!,•iDTĝك(=DdP)SȅA@xD$?f>TpeBA&:PAWX?p#5R'R/9 am-=7+XtWpC`\ئ""SZ5[(N"Z6oM\2tp gC>0L[7c?6dGvmdKxCo `Nte6ii6j eIBɆ)|vj[j6nn6oo6pp7qq7r'r/7s7s?7tGtO7uWu_7vgvo7ww7YKvAmyD/fz ̝{;\}wU y7t;Z77@{G}L™Gj7e[xo8wm>:XP6e@F2BLC@TeF8E D";klDG|IDIsc`LԄ#AFH:VlLCJ'(~l3Q6 DmRLXZ>lܟ<ǧp7 J_CEXB_@`t_Fb,;dHeXe\fpF@_:gzFq$G4CtXISXG{twU:vhAz4l|GC*.Dȍȁ 098\Ą-cL"C? X锹Lm;x@EgAPDo a&ΉDx F6f[CB:؋AJȍDSKT^H _ݏ<闾:Wi 曎%A|:xMK^MA\c=4#-u]x ڨM\Ww~h@1@ @;h ];Jw{ݼ9cgvRD"B<0hPC5ziRK6ujTSVzkV[vlXc~fς0Yp`vTGB T `jou8aiT1޲| 8o ׵SPú c8/҈[^ :t:.)Aݹc#U@8" (sR`<98ݏmuaBBF 3B8pP>ڞms!#X.[s)ZOXzG̝` :*ssj4s=tG?1{@0bO8or ;'NСzuM9 Ap  <B6}r(uDPؔR`ꇝu3RKءKax4d:IJT]V]}XeZm\uݕy\ Quز-`m;"[g "s< Vh!?2`f:FL0jDh)4!s6 o>@!ЮKh&]YAGxiCVJq\YW Lc])F'^bNx~J)BNou?w|Ruu1> |FF(gt7l ЀЊ' ɗZ At؄((V4H ut`I$$Y2F@uy* =<@'g{2"^,EQRPnAy]域iTyz G pF`tJ D`@8 hT (])mX*e:3^g\3R<4 [ Q!. \00{ dYB>2 : P~,!B8&б q<=Q  %魌!9@q<#y% j=!\-p0 DXF̨4"<N&Q)L  .Fu pECC3׵3԰LR)\L{#3@+Ŏ0%3(P"eNXiq @xj0QT>\|M9WQ^F9Q~ԣ8P3v!#@Q:7HmpEPB9L[A9p mh= 1(2q8բ~!# ɴ q$8h6Y@ كjqWuA :uOBK@<~c-N $M KWI\b)VY̪x4$']TE+b,J%BA:p&:@k^p; &P9ڡcz\T#Ue6 iM'HCH?DagjpB}hԶf&TࣸNqa^spHC 5"2"|p"p@>"?^,HtD⌷II{沤[ \!y@QҲs/v\%b(= #xejp;xʋ `.O$KF#Y(Vd~pT qy9@"v9q!INFb@$'17ԠS|"hPS)ɻYpE4b 4/!\V18OÒU w9=6?خ~iX{3R$Ўt8R@N@H{C ]'v\KÎD0@m8ϟ r:vwhǃ!Ai2qBv2|2<6 !Z_H׮@}@% Vo2:<1b $"z4ۃJqS U>t@GEc2:D Pu4 No!J Q\Sd(>`M *r ?T.,>dJTK*$m F,@Aά\!nF& 6@Į֡Fc0e'!)@ &b @$" ~ꮊ(1 gv0`(:Hp`.AnQrDvg'&%!cDl{78S8Ul 2`2)]L A58@ڡnQ:: A5C H.e+-**.*q.<.]"B^f;!=J>% zc> l 5P=Uaس]A9 A (qFB(6k*ځbt@knvC'RH$e#"B>ۓc0<bNAlE d^F8"@MT)'pA a|M r A8\6AɈ!8ڳ5$nfbLsMB"!FI ApAvnQ&T>۳Ehj D&zδ(0j6xS 9s A9p 5M&aD8Z[U[W P 4mH ֆ8,2KEm@.m( 6h*$g&(LSm6!At!]54(.rodJJ$fXbYiaP\`Z7H]?(+(- %8W @J$\%:`%@`3Vdf5 TU! $u!i,@=AX1($S@$*\5@e $!?#)С@`5aI u&Ac`!fdUXHM2!6`'6ΡL:K̓N 5fxkN -Vj%%vNv[|W|Ǘ|?2jʴ|-x."ڡ~w}XآxH􄀑″qe4&@LI?fgSuCXGK؄OGP@g3cI݄75d?U{؇X"[ZR+IPnbu @xX؋Xǘ،Xט؍X瘎؎X؏Yy/6*Y+*cK CG0/~8“"Rg*r YW³|jAj: qY,G[GSٗ(\5\8;@|W؁BhiFlo#F@+"` cx8n?ta =%*v!J KHa%b#Y囁 1) +0(Zce c!Bb$zyʙBca\s :%(V:%\}bGY91@%.(Rd"TH+v4 o0wMC@9qI;CρQ`.)` :EdaW {rDy)hWlc15 56~J(Oj2[S|7z(B g(bz(4 AvbR!eG@wۮc!>2d"!3\A<!ӊ-*ib &BaHMx"݃]| n +pY@*!! %J-xbmhXe+w,n|_Ymb4|+a;FYu5`fR|H!6M} ^>ŤCsσC$g{I=+-"\Di\'](@2j;(@JMC h :x!($JuZ6ڣEa?a'@:  @ hmG"ǽCw1+ׂ-4| .%v )3 ͏bV"(>,1(LQ!$q (2]%!ryv>*ϡD܆E8`b#bܽ=P@Q2%" Y"5P. %1ba61l^a]$E7MsMŊ^ՆVcΉMʉIl`D(1($D9c`c;N~_4B!A?Jp<#znA A` fϡ&l-y_蓢=\:hd B nu&BB[İkwÍ^gA@[ρux`݁ιƇЭ{d8O{ ;vC0l nCuF-ի=Z _;*_sNղXLBWn$[pKQo׎E`]ֽ)FMܡs|'U`۾;ݼ{ <ċ?<̛;=ԫ#ukc J>\?w8ӗ ❋W; +Zxѫg|8)fНd`]9I' N5U:vĎ>9NyJGG99<3:H0&gsbT#:"@:uH:ӎ%#BOA8>2m祷^{6dzCSy21M;dQ >Y<괃6cA SHP:Ɂ:  tBMtFtJ?7f_ PyQ` u{<+6:`uAXkmT]n#W 9 E{[ֶejdN uNp֏}TNN}] Hsm@琶 O>cNٖ5uFĩ;D EPD:"<Tۃ:QW`::>ԦK[G&eL8YCc8:G q&uA)AB{d&KZB1zs|kC9F2y oچ<免yALl$~m8):\q1*T[Gܖ5AhnS=Pmm_\(1f I+Qu2{lnb|H1fXPRHJr%/LjrǶvH#Pr@w! 7CDt%,eّy@;^A|8}HcI*#wsM8r:%udm <DDE>I?ؗc,ilA$圖ɂd?qJ{\auزxe,mn#+X@ >sp=ci HRj3A $eN@ uj.XNxa4GzPjd80HAe6"F}Q6P=j&/9ѻnD @Vϸh$lTX`*_βnåv vdj*n4DB8 rݑl8ySF(|ۨDn#]9fw :xnj[%:"P"q;>8 qme0T{( ~BСCõƈ!D 7 ?{tH33˶ vd Y~P}x%SGY!TLpĞ*<844y9]ZJ?dQ6yс^益ǫ?=G:$P>2 !N2c 옴"8lk{ aKG7C(u/>v$23^7;jW#B뤎.KX򁞱n'O#8PqK6Ȳ;sCׅpᏔQӉ,-,@*Gg6KT+tEaM@$Pc2%`vGN QuPr#hdPTJXIjHМRJ3zm` aBY;|1-P^ 5q;,%`Ԫ+}Sp ;4 v7"0-sm (h6-N"J*1\A|r  'p+01"`fCw~0Y9ѫڡ6q&③8b| R1,jLP M7+HziMjj`=7WY[˵5al0Vs0p!v ]RONů{(`"S2>W}cM +,:Nx5zn_Q 8Ja8%aU$`1ݵp%PE *P' $ Pİ'eAI"#VNpB>1XƻlN0Q k ]>'"%e#*Z_pJ E&5PH~PA:#RZ'`1Tj_PJRuE#  1" Zå" @P 6Ta [`p 0-"-p#5a! < ƙ۶c_qQw+=0~k%pbDE0Qf(#ؓ9A?]+ʣLʥlʧlMMĨf[<yu!03D)BD4BFN'V+M4D ,LGň0!҃AZqp0-:لLLPXX  д\#B=MBfMm?3%/%+-/ 1-3M5m79;=? A-CMEmGIKMO Q-SMUmV='D,hđґ!DlruQQr W-sMum}5MܐB4!!֜T%uȑ)v-ٓMٕm|lqǹ"U2wNZ녴1%P{  P@Ba=:WЎq ATN0*(2eO+\d pVn,|\Hk_@d*ӌĬdqEuQ!jg  M'@fOD^)Ydݱ " (>!/^+q1Łrߘ谲rէz 퀹Aʡ÷"`\]I @ 0Ң2Ka18I68 1P%dqW\ՆXp"*R 0V5&>T,>*׃PJ*]Ṯ4L6epZiS1zB`K T&м81 A tQ6 pl^q 5V\M7I=qI@@^Xeylppݔt"C`p1}w OзQ# }vF(8ÞY60 ;"06>@KTr~Uپm:U@*'@mQdL=-ն,n WqQڋn-ѽűǐGV7rs/qV,4qJI@p/qw1G2)@$V `CppvRo򌌮%v1Aє[X_Abwe'P *$M@q>UPq{asE=<\CAF`ww1 ,G0t88 ǺuAIףΝЅIx 'kG: 9 sװCq+]& td'O ##6l vÏe,e9KZҖe.uK^x2! DAʮDpƆ}< J`QI,8u눦C  Q;A@Usv<] j9*vj%Oŋ BӡD/0N?~p=-^AQWc:\~x()@Xf\fU@L4L a9z af  ;֩Ďs2 qd3(fq =D0؃ @OJuG%l $tX:',Љl6'='"o'U@{&$e&]Cc'.y V D%  K@/\6׹υnt;]rQy[u28@]-y ^:in^`/,P9ڡj6GxR0aO5)Ijb'ϴ>j%LN( np^ i=쐀tO,b*h@:\N9v3z釆 $Z& 0"X =P ԠG y,.il, +!1W$HyƒvQ)iF¹0AHa'tT"2d AU"`a`@JD8K~ ;nڣ"8;lbFvlf:-򀈸8(]Y4pNP<&;js'$8ļ6`@!\b<[%QFw?5PA#,5=α-$]@<1qhAZI\j{P)m ؃ .NH=ɇ:E|]aH~#>Aph{? K@A`tx2@B}'=ԁs9 N/+'T`Q;Տ6}e?{%ǠAWQWKw6DSRY{31KS[<76!JOXٓF^u ?~&ÒBP| ؽ배gk2 W9v~([#  'C,{PRI8-v8'c @j8 lHs(~89'ɨ SO҇lC8 Y%2Ar ޣ/=`tH1Kۓ9:;< s&pi <tX[ AbQbق#y "q! Bs`C P?juxX( ($|E `H0@$bXc@똀8@/ 𱰨Y!鰡E`" ѡb^sF ȇ({H&jЇs`D{vvy3 XfɽuE@sȩ s0({% X3{V2@S(`{lTTE3 ^|![DPXK={vAlFbø˹˻yP>|BrGS0k6h}hDd3@9E )w H'LD|ʎH2`v(y|[ U̜3-8u 1 P2֔88A4y$R UUpC/c5g@iL di ωCnYQ2@Ny{LRUXt|@, CU;-:R #tx0 G+mQ}"$ f9*Ϯh|p"В BwДB1 @ ЖD닊Լ%kMaj dA n;@;K䤿|db(w| qGtGHITc`v@AI,# 1tOe HЮO;F X|p*h<  Ёs. ܉YBe`, Oѕ7[OQOyv x9"X0EAҬbm"R`0ȩt4(gJҘ|P("`%s< Н WU@At9Xvzݪ BppЇ !`ii4I]4# 0 ŹW( Hh|@Iw9 Ӱ| { CteXPE0$U?BXmaO) Ek S(h3`ԯ(OU uiLO%5G֬ =q'm鹿!v ɝvhJ܍m%˫Ёk0^ I^!ýI PP9^MHgË=m%5E͛T_]B~ml%@i[ PM6m&6``_ITĒ4 ߸˓9.Qf&6FVfv !&"6#F$4` v I`':ibo%*6_-֐>9Z ܐ1n|)3V6v7֛r)ajhF钎)` (f@6CFk -|B[ޱ2vP(yLfMOe4Ё HQ8 6&N8QVPsb`h99eb ncN $hvgeN ednс"[ ДsfIhaf{eggR^Idxeɸz S~M{qgw`d(  h< 8 h}?h&`_dL䘖4񳋘1\i |hN.|a[C `j)6TMA)a5W<nv( IӇwؘ%c}ӛ#]ĭFL ). N>MYsFl_asjv^ifF?0m(~/S֍ t+uH`H.H mjw@Η+_t u^͝pv4)iXE DH2މ o֙f/0X'h@P 4*O0 Ī]Rb4D I'~ a= dE^ o5 1l)W%&q'%o{!')!5F,03y,'pCMs*pP>$p0пy0Po2@̇4mh)~ vJ􆘇nsf 8=PNNVw`0A8Thus#'ۖ /`vxYM h"/XX bыyfG|gW:Avn-\ J`$7搢~y@F8tonj\RzuSGu/Gsf~oo3Ll&XWuZ7 B -e*xΩP7`: $_Pv!:С?)ěBcA 눐SzjST1WdǟCPC>4JpN;,T:C@e$:39@_A SHf2H@!}7hSA>:5!P"p#+j8J2ГQ3eW5>ANUsLeh:٣Y0;(X&v")"w4ͧaACyfyhcl2A&Yc-iB׹骲Jm:l~d=PAd{GCcjS?(`y  A\+ۯ\#0 D0}k : LÀx""T\gu*,2% ;#a4;(Y jO&FS.I#WBT2XޮU1+&Pэ3:e0hl9I`Q Kۄ3pdh wA.C:|46P<'`N;u/T!` 18upwW,1GLo uBA^;Ĥ:oYgW :+:|3T(GWghE2t25=(GfX(b<9K2ueZqAId'KRصplA6`@ё <52CVB#=`< uNab#h31j\#F\ ,țB(22q p(;8 <.H 2!E>;!wШ,P1Ѥ: )"n GQ="2@ZAPt\xL,0Ű)HqK{Bc1fazF){pT;Xh ZAp_jBA|'y{,Є|*1a:) M(I sBw1TJ"gPNP0R<<փ> v@7S)pғ 7F&9 dLx0Ϭ#LBF1ґZ$S yD 3b+Y 2"X&Ţ @c 3ޜɉ։CyL1 N>P ]o-iKkӢ6]-kՈ4 8@ʒ@20R`>p[ޞ TU9ۗF`<J@& #r1Y\*#L#ڻ }dA䣏(+Y[Y((u b!="R,:"q7Oj:P;vHJ1,D 6͜! 13EèAqQ< 0Z뼂+ĕ͜Fj_ 3{̴8cELL>b2nT+v uBP[q&;{1yEo5\fѺզuz @TD28k>ME{z;T-Tt@qkkm[:׺5{+:ǃ?򀡝w&;| '5aQ^kb'EX򡙘Ǝu2u#&ԑI00vG;|lpᏃ<_A~v(,G:E)Հ9ʪa,sY&M1@m89$@a3 ;@xc@.E ֫ b#߾mW\bLPsph`V o{^/-$0ˬ$BHD/`2Y8bΆU_O:>"\q<@ m߳l RFAK?0 xUpG=-k&#cu 1v_>={ ʶL> 1&B* ؃Iڨ!q>_ ~8RJG_#[`5Zsټ 2Gx‹X `C9B @d=LPAYK(EAA`]Ʉy%hT+TX!xPݗ"EDD];XA  &_X*,e@jL9=:U@Ad!Yp\A:_?T!LSXB<:!4Q!7P 1Bp_=Mb)~LTAT zWL,DDJ,b--b.pAI@W~c0S(DcAL#/\]Ă]K6L̈́Su^ YL4 A|>&̔R݁+X@@;S=B 8DCDeLP HoXEAH9Y ݕEFZAQ@Th MS5hbcD~čh@F> |A#~,Q XA#ER) ԗ>95 #1@%@~GDDyaALewHHZMr)D0#abWl M*2nщAeRw*Gp@;8W)*0Bc2n&3:## :tm6Y7ÉX`lXCxPu;umOLzD>@[ygzzg{--@W!QwxҠd+C;|ED+ɇ|gzCA {@1_C H m\;v-B[L0(T;C G>⻌Cd ~eeT@5]I@JpSHJ@r<üG9Aep-B)8BJ@,`D0hZdS;@x TG@)@:B>*;H:PXT:T0L>@F@΍; :jX,+戏e|iTk+hQ1CL'}jV<̉;+LXܜ; V XiLo (({[;\(H{B`@>|#Pq|L *ĺV(R"@P{m mѢD T!B$ƄC8@~]@+>8/HY~@@9p@Ѩ!^`ߕШ dIRYC$X|{?}T|lL@ XXd<m-DTlE@L>MU1(2pr xFWeT8<0ظ ӆ?XSL(:tBb!tB`+jHydh*ѐG~ DqVPbrʇˌmL-X@mB0)SfbjZSeH*DxqǑ'WysϡG>zu! ,fBBD^^\jjlnnl..,&&$VVT 224JJLZZ\::<**,zz|bbd""$>>@ $(8蒄̜<08b\`BH@Įprlttp||x|v46@`bdp `4<<Դ86(Nfnp.(8X@Xx0.l0.zfhFJ@x\@<<4 ʔh\`pfp<6УKNHJDv3|{Wi˟=:|ϑ2/z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?דּDF)TV Y3:3(Sp Ih&QlIGqvdP;lЏ(`堄jj_wP@Ip#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:2&Hx@FAHn[Sdq%$-ښACQ:`,Pp;DϑhBx= POK~[:tPHZa}pϲ,@s@ԃ4:H:Î,20PX(6k;=ALbG C@B)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:דB/j " K!OSv=9};'B3\"7Xl{ܸ::w%  X>#=o ֱ |%"~Lڂ#!@( $ ϐ8|C77 +1AzP  {$uhG2ӱD (@CH0USȗz`G3B BPa=q#=q t $ @"J#>H1IHA?B SrI!݃>*`Y%@Zzs!|pȁ'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1px:&]jV$`A" H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;YU1V:u LmS&FD`MG=2Mj3s+nd"tD IE nr#!@? 8~jb)€waG*߭ؑk\nV2Q`-H[yPDLZ*uYr0s Vk>umJ\#"ykMϊe2=cA?CXlA'8"x3 ]gLoX@% H,0>E ':܂0`;dE8"0rYtY'uh 1Oey\+w\Y P,r*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lKG)lLbiOl2-sER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD_;WpBz4j{dQpt d?KD;PT."pd<6Hb_}u\>e="&ث :`qh@;Ԟc옍8&zk-uXR@k) H>ĨBC).wD=6-(7P O|  2t ! )HЏ{jC40!Hy [z@ ie+ x!܇  ~@TT'EV=)= P "P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R`rP+v02> h_P=@Ѐh b}~hQK\G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ) !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsLLW` ym@pNI`j왡HIuK$y'P27v)Wa mrwe\2*_*r_ș:DZIG̢sR>.gm!-*.` r`0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 40wQ0O1 dZJF"3@h0/D?#u\"gJeP#0:蚮:,zT Yq$"AV*)PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R@a-{ 2;4fc.gZЅ) "%"]b*U$]ǭQp@.H5Zq=K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$6@Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mL c cP 5a P@Sq'K>ܛP$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛Y;z{.#r {W s$T $zY'|bUCڵ*T%"T{ .y :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ē;NA2 @Xս ½Uf܋d_T=1ޑ*S9=4OTH<~ *`R;(卄Zڨ,{OcFx׆zk/R2{'w'YY1.*AJ*>ˇK0sL24L4TsM6tM8Cgt)ex`&PI֩ p(b`H*F{:H{`z*w[,Y4]&g - `v" ?p"ԛi&N=bz/ dq@Dl/ @2Oz%0!Jŀ0kŬU]>Pi݋t"h\hwa6 `b3xc;cCydA@~*  ¡|bJD<|${ p@J(u2ǀTjwؙv b6T  *(L;# Yt(LU2d{|7|y 4ȏodQ ~ ҩV|Cs$%47!j AQ 5nc2Bu@ uPA $@V$Izv x8=GyBD?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nҏq6b1a@ZԤP !uzaء_LoB߭c Ckʁ/BFXu#bJ,/L f#\*p;vAlu,dqSr(G&X=|`1yͷswP-YH/_xcN!3uIUn?h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ8v 0Ä(:\" 9gxH3%;FIDS 3 @ û ɵ0 ~{pي{Вw'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s);' ud( zHq$ xGQYZ,[̇\\ gӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ18BS5` 1A@ Y21 5:0J$.+ax+o`˫x@ Dj, ܡoMP`LQi{ |KXLtZP FL!R0t e L܉Ph@< *;o0q 1ą6ͅ  * K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 6Ә?P#ly*ڄ-*]2L%k B8{R"#Z'hStX!XY1-3#e$%RHu«с1@$ S`xYH$*e4D< 1]L }ӒXtզ(֭V NdVi$N#䜈(݊9HzԁI#tx( [5  h2IѷI4x xy{|h$ 9<= bP*{u+C5LA [m5%"0h@LQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx?a]=cb'ч~(05sneWY=.(D!ntPO ćI @#IXj< ERdλw|Y6\{N!wJYI{h ʠ!eR!&M )hɁ4SpB9mRF"!""# z14S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$9 M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u X]2 Obc$H6av]v᲋⬉L^#_n3 9W 1vw tjwvIݘ3w).x? }(1kc th呂0Ӱ¿,H GH1`efՅPHg3]y?Q ]7 F%0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4EoP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀1Sq{{V^ifN|Ҙ$W﷍{'|hS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=vC{bsg> ~"\%ihPĻbY>r!ٸ[t37b@>FSh|KAFEbrO;޼O5\+bXi-Bʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=4UP+vP<<.тIƒ PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3B(A=0`CC 7 N#A=|$$ԳT`R|=N=E68D#@Fl![@:+[J=b?KCE{O?@pH0T{n.NF;3ê) >( d`fwN+3A+-b~sA s= D~4޳AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=cNdQO9[a> m dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX p2~>ʀe#A@GwD %'1`"jh, !72 >~zpQ#gd5$ @2( n+aY" . |~;I @?"xi ^zlP 3x ^A&|dr$-2z;fG<:h@y|qc(Hzh (<5t AZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠%Tu ֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,awf8z & >e>LH/` ^M ^Aɥr@xh Cxr$LTzifRV^ pT)p` 0A\" c H,a%FDQ}L$G1ƺ}B+LdT)P1݋kr d0D) O9-s;wpd7 y|n$`|qH1,A 9Oo׃>r|IoXc M[AaȘ֑k{>BM\M0Q{ƛ*ppq7-. `/k6H[QM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:P`<[H=|2[m; !l#ʃi:Y?xd ߐA$G`03s7NB ![E#GFUG!LS:h)H {ԦdCz%[ BYЃ>vu݇G'V&2|CK&@|<$GP7?^A  Ra`\BD-5FCUD39A, ;ަOE Oў/I?{ ;AY_A _!`%Y(MJCSL;5C8`V> ECZ}0r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b> -+nBXJahA4m @4B_v8 zLA A;XXPġ+bD ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4DЊ7@g%H >$2MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"lxIeZR\CF47̋IDBB8SEXiBP!\HdI>J:\7& Gh$S dHŸAH afY-DzGD@ACɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D'|CT&eAH'g#yzZ,D?XrC$()FD: f(; W4gACGK*߅DٽmIiA|niE<&D e,GOAK;<-Yi&_BܟA4@E(ߎD aY>p #6Dt]ϢFA7NA4\*)%ȂXi~Z)M`E4})5g݃=< 2m#FhE4a~ V'(>4C'`T=#n&>?ܫ:,(Ljr?:ë^Z7i>؃>8@C'@<ĞP(~GRjޫ:_ԃV G-l?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 RpAD?=@ r.Gx@*[泪زJ^ GjA,YnBHH.vw2tB-eFÍ$_: =›(/bhrE .xpZҮ&DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-,0"x!0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtVE99;DCAW"C=Xѣ24S# RL03L=DE?\3F78@-|>2 XÌ~Z'C2X%AIrdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,e-AXC-ZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`.C0lz@ܱpz 91'Dg {B 7W?#`[|-ĦyBp @:l,C%́L#8;;,,,C̕@Kxo=Z?p;7JDG183#F3z/A 0kD7`hN@Ľ{B3xa| JKH; vC{һ&{,C{2/H_s$H |X`>u+Ƀ/I3N0Bc0½ 3 nuS6atޫ.:ӊzLz0,⃃+eμǎ_Z^' "A (rZ'Ua`ûGu P҄(U,#T9}KR%odGGxCwdVYG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwìn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /CTu8> yg YJ`XLҡd]6XgehjlݖnpY ?!S(P. L5SM$!Qtǂ`F0Iu{5~%-MU-[d65uG`1hHeQf2euޙ}蠅#5w-(/##`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.=IIӀaw4jZԗOST hvԣIRBAi XH-SPqȁQQkep`?LpK D#HO- <7#!IT '.}IB;@땊s8Ō !1PQSe={0ZI , 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL<!ěGfbv+"&ӎ8"UG`٪*c $G@ @K{ *H)6d zX+ 0O402P*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙAx` Hw(ڕnk|=ie/n t5:j!Kg {t *Ё n#\ miq9rfRW-u=˜"@l +I_@G^5XAzD̡_\faуCeP=ƫ(ࣅH auzVBI;4|p g=6Bd%PP vLF|X0ЋAN|`"ЏFjh,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʐZBHĽװ؇LG]|`# 7B5D`ȁLt׏&xTc-=1m:!"1`%}>C 7 C $E}C [CR0^w-I$SH`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…(:kO$NFD pG:m"(#6 H(K  lijdZƏL&I! !L P 0fk(- D"RA::n86nC @ ‚ ƻB k !*A6`ց 4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ ƠLD qqȐBN-gj$ X|_b[F Q[k a-!<tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzhAn%l# * @-N$~%bMba c&%!J*N d ϖ!;!)JP瘔b  "((H<J XL. @1V-bdaS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* R`BxʬZh%2j!##LH@%&I1K4Ũr`A1> : s-c;#AҒF,00@OH>L"0p!@emKkvI@ ԁI! " ҬmIb !b⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʨ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨHQuU\"(V:bB\jFﵤoJ+@ VII3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^D*I.F `Al"8Uh!ފ0r_1STC } |6&Dx9B)D`>R>B|L!Rp`B5lIR,5xcI/R7Yߡk@:Do7W5 A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@" D{S[ 6L&Z0 "XvTh a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@a *m5A jt)"j ĕq)Qkp*B " x9nVZMDJ! DZL6 g eˀ" g]:2 H̗Zjʬ"R=d!** cxWjH//0#T!D@^)$@1RC{l#KjA :> cC3,6DB TXC.P*LBY hL$?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!$`!@*|⧇VY[ٟB:|aDY%!hMdAJ`F?zޡd0RGLUQ \N#맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->!` \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!$e2` 7n D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevةiH&7(-Gͺu2>G` `ʽ{ؽK<| .½{ :Fj|c{8”9I|3w4Bwߟw4hY(2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^w"!]&dÐ޻9s|Uݽ@|CD! Ll&+|޽*AF#\×vܕ6U3>G>,Q8=L8gv'v7cg|F=C>tp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(d̵\Jhh.h> iNJi!DRa0@= d$=$uO \7p5P;' _ #@GXΞ}\>X:C2jk_ȲFtՓV;jU[0ɏ/ k>[=׻줻n=v|a@ߨH'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճM*)hqF< 7l3_`Ƒqe:SFVSXYWBFqs-A?a:CX_c}߶c+>!?o>d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF'RZ0@m=ԀLl|Q0># jDTq$+K7 &h, r,XԵ5# Q(V-7=D HaGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]a$L3AҬڂ iYXRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY::6wYF1t3^)yK*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE9Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! P3NXaZj;.H".9P-/c54'eg*Aβ !Cd RF $DCyrFpoپ]xGc GaZo~Fe0A1Bd@G0K_Z Sd-i*~Bf$L Bzs 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`1* 1,4[@ *՘4E9$):~^S"*эkG%Zw,zh S;~%[(n>5η2*X"EtȂ|I!޲u T-{7»9Ki}Kv+N@f%S^G`bk/Ǽ@`td@9 (F! P`_ٵ2, 6Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[Mg&=,(}6➔$*A~0Hw`( 5I0Cw.Hmz;+d|Чu8w  q|y6݄3PrɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet?̴M ;+E {RsBGz6(w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz`.u9@@oӊSY Dh8+! ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG 1$P;nww.:43Zj;" GPxQĬzKذo! " 1LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T64aG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19uc( ?6%5H +@4&%A Jҕx/Yh>$$y3PoD7&ᨁC!Ux  wȸ@ &*؜,9 Dp,Q)3R*'Y-ɥ.aYd৐NnB':jQ;tI"Z M:O M4UU@ X,7ATI QAmbLg7 TFr岘41]  FId~H$|G?+zP{@JGFmUe:JaT2Pn |`=պI76З(r7'q) ðՇb[_t 2􁏒` `H0.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ()5>jH -r/yK:k,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4Y.'qQI`s#?8xQߙvG|I5"Jx- .o e+}E?z@#ֻJ1c0}NBPC@'1.G;`5d>luVDj\+оȽ}ُ:ϺUèo85Pnޓw,)I H#Iȣ-IHd XJٰ 4 6y  hGx>w耤x{ Gtr* ep@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jjt˷˸GZ؂w &% ~~ ) Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w8P+lq vYfhQ?<1tH$ί_tN 9ė|H(%;}x HY>x (\ РQ j#}N Ia9F@xe(f 9L o4"5#ERl%P?܀Ȟɀx% YR$Cu`!v'(J$|$DH5Egxp';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.9-Y#;1Jaf\zvKzT:FL ǼUhM(R;H ևv^N{0!9e~Ȁz ,՚IiPikeȁ  &7{xO@|}`E(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYN() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V9( <1 1m}h.<9KkǐG Hzoˇ8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q}HTWu/:$=  p t_Vi,ʣFw$f 8y>IgW|Xy7C \y˾D`ޅ1'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF XPӯdN+9Q9˸O[hN/wXÀp'y/_fġڳ!)9NHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - c&Bds(ѢF"Mt)ӦNB*u*ժVbͪu+׮oɆw]𺰁 ёNV꽙yo]KnKwݼj޻ݜ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwAmSzC'1Tc5áWI1Qwų~A_j~-NdUe CFA8uVMP9s,]2r#X'+آqφ)N?d0A܎ޏx`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=H`OK$Vԁ;;v [:HCb7Bq^ݓIBK&%#mj*S7PX'D~T0@#p-jctcP7Qkcf3pC<A"X,QFF>:6y3jެAt ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p {# 0F׵|;ꑵJuz=A ܃CS_ק:P>;ϥts*>3;cS=0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xl@Az%K6#j&af1w<)>o ,x PYF$)A\Ec ֱ;"Џ|$G> !fc,#8@*n QC#fwڡA+nēLdIG{(|KYL_` q #\&< J ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 c!H&sv ;8 @=E HgVH Q@H蔭XU}@i Y:= M%z!XB $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>8wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS2H1 @_t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq@-}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53_Tf1 z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}?`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u $^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?0C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7D zĉu\@=QAl<\>d!:@SU ]^ɥDHE;Ba|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp?@ p^s\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IAuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA=$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ!0Lndlc (u,x::IP3LlFZDօ<: =e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH„4:*ę/ }_z2ltI*,4q"DvW՛.") $cB c'RDD0*MԃQ0bɆTUi\J=u\IJ~W!$QD܃yV2+CDjშRk!%æ4$ C?),NT>ŪCH@DXRaY}; B?jĽTH$yROkCC-=liBvƙ`J=Sce^A ``)֖_ P C#zn ibLBܔH@ܭX;<, @0Hح4,E:DC-톕,ےVfd']=|G@0;x؂A$H]4: g͆-,ڎb@*ǩt-m-D@:A@ n`.;nҮ`u&f$1,>^J:l@Z"4uH:T=A)dfK$@ 4lO)T0'IE):% p 0@7zD>EAH@I>î @>R2D0@?/EHK_dHI0^>m` ?h@*D@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`'æA(CorU7L:ۣl@++F5'F4s)%lC" DT1*3pBp;pJуqb@ 3I 4=S0?UHAZz>RüW,AԈ ~Kn|R1D BPu8̳lAD ؕ#) ܃{@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ7=X@v}$$YTI&]U:lBp@}>ThxOAP $!^C=TA@ݏDXcJ:ßO?1@Ab,A)-BmDLKU#=0>)rUAP׾>}-,@#t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@& "*3޺ "{0Իo_)&NBALx Q l$"w&JwDbF['l u:+>>xqǑ'Wysϡ;p@+\yp{@:?3U |i}WYnaYf"+!FI xJTQe `V:z櫱{$yj1Ja xBI'D1SJ  @ށ@lGN\o!_MªgeJ n1!%@oVPiơ*q7+i5F ´ddǑGч0 y'/Թm=4"G^! 6;bgG,_}Z~P" 0dRr @@=PSR=j%PJh`s?. xG=*@*@(q aHHcv$Hz}b۲&IL1S 1 J=/!:!! xB9Αu$"`=E7`r38`]GDDP)I.@"oA dD"呕@*H}*x"H,TtPa GB c c  hBB7CƷ ~r*Z9@+OyΓ=O%Tj4AP. upMHgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:o5O[9zYgVCx_X\Q /"8N'Gw&d ba5exjtM#C4M=."7 H>d%DK, DHj\Gء_B0$tzpzYQBҵL`؀8H6&GVWW`T:  Õ`zqy0c}>!TtiZzUGbav5"` \ h c!"0=aYyG2Q4ApRd!9CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆD"Qah!"Q0 = 7} u-SV3{@ @Oa} 6apBQM` 2@vMVtr"iF2 TBJ k݋@B(sAA($ڍ@+ U|# @C,x$x, LJjtа `C?bP tp3!H߷guoDY.3zlK@8|`CN*6P|L`\ 1UStUJC ^Βݐ@3. =Щ%2 E`@%RtϞW):6X@Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC "Pc=K8@g/N(I& !pD!8d"J(Y,!r"N**j!VAp즱bMND*gM6Kb!Y:AxB#$AiAg0#>@xɰ "`hPXa & /߀0 H!Xa{< 8 !]!P!ڧ_#*7R I" |b 6(dA++T( a@&L &{A @P~ޤ1"bk gFL *@aj6 G#!}Rh)pamN/¹uA` ]*jBdY> B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'x"ƯMejGH D`Rd: -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8(H Y(ޡ-F%( #8> R!H@6@+\s88$`KH2T0@" n6` # ಩>B$&CP`&v|2!'B4"2 }'U46/QX8 $("7)^ |ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#Ԁ3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-Ab (Nd>8Pe:9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!xh0!pj!PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!r)6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫܗOi7Xgܓ@2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*AP5F􃏚>wYʑW;Џ=N=x ×k7\ 鿗IXjA@B%",Wlg!FI>@ܨ:[:`\83{6_QO_BDb@(8{#>R ~o?_-e;HW0DM; ؜-_Sތ7G.Wn?:!g砇.褗n{~;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGHd0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>1)GIUwD baŽza%XB7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ I@{l@pd>Cc%%䅃Lg@M% b(9ẋ>ς Hh`؂*ұFt\aG ҃ t`GJT-A@5Ct%@R:QĢpV! 0G㮂 5gv)^ zHuwS0KCôbƮ'ODH ȉox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ8 %P*k$" :djmr2(|Qvs@ Nܣ Ňd9DAJYN.0|XF 8 @YD #pLsUO3Ka!%K oPK$22Y\q0 k4/{|X*PlB8 duh,G'P.w8rAR Ǜ b-*-c,ad[]20 LA3G$''Q24G|HԹq @fABŰg TT ҉oP1) :tblh T/dwbńϯQ j4\XG<AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fr@CY ,\Y(Yz , ߨA+:M :d~0cJ7y*M}7oHΑ9!cA`H:1қg>Y^x+EKUR(ȣ;qAHt&U=S{aE/|6:r e!Z:BF1 `G-<zfʋ4)P(?H2< zb}L hjZ[ai v aDz7X&Yd. A%pGvq %8 pw?"# $Pg\E?ݔ@AV212W*e! sbK"2"X">(rS}g2"SR`xzXOJ )tb1G r i,@tb2Ac ON(LRpC NhAX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7с!DS@j+R+AvDE0vj``-b- H\!Et*>%`E*%υ= `& `T"l.72 BBuPTwLe8**@+e%p 9}2%p] yK0/r/b,p`dÃ06c5h0 ؎>|cm $*%`'2=^E@ H22v5D@8o:v#t#+.E0@ 9F`29PDΡ=48& 3!Ls2F -1s5(0#MWXEYܐV 6m6AeDivӇ_X#GP8 9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;pI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O0=؊TK PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گ(0 fiLSGj֌A@Up%VjKsjh yv(ń @P eTe]qMGd0qE6"ȫN*{%wr0SRvE;T+FS{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾BcO /~Dx:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2. +\}Ԡ0yp,iПfP 0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"KpqVt%m" p-*°s ʧa*̢vl8yM'H'1 Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-o;hT O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowHa~z&w]{s΂ }(;| ^EUa{0$ ;(ej%H݅""ܓ0; P_:]巹ה d5Dv2'Po t܋˜z [KsѥO^uٵows0ûzK𽻧aE ~KT։vJG~g `b!|P3J}*Po G0~J!9JǸz'{6%AS({H@ K![—oZHz"k!nN*xG>HodaZ|Q!NXа{ BtQH#tRJ+RL3tMF}j.Q8TUS*YŬJ.zatz{'*@\YH  {':Xu0! Ma{8!%1g6^ 1wܫ}Fʁ.̳R`1_~Lz9SO"[؛7! 8 R~ѧz`z `e2fsyg{gj1`h@J{b`jzkkƔ  6dKƘҶn{oo* W.kgq#|r+r%pIő3r$7A^E|@)t@wd)MyJT!40!Z:р `3vR$@?_Z `Au(1;&CpD0A*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|HjTFb qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^сiQ0x@>0`LA@@&0 \,g2Rt[QH1|@l C3(i:ῥc62HG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6P{ kVd!91ekيfցXt t*B&VbE9K?D؄m\B.x4`GX9'#) $b[~8At; "Ti@5$yሜG G3:Qzm&[(Or|匜e$0F0氎 ` Ubare2v=U @rKzLЋft\C ,E4wfhґ9J݀E= lò Gd2 UB H) Aj<臜}ld'%#Fs`d/Bp~"+CdֳRRpESVCX@\(Iq~^#H"Dbwt7<9 x-EHSKX ]T&ހ 02`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>H, }Cz3EFv*P&[ D`Aͻ/=uE:0"YW#W*3 ˈ.A#Y ˇؠr? " @ #Q!؉kq5 J6K: UA ;7/ |pUzkM c` (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 D9*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5mG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kiʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-eZ@xC|~@YTfXE^n9 (ƱStd H}X|#}pup|`v .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{HMT#Ai 5leDof=w#oˇd@)7[ .(rq|#B!Y"x^|8D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4<dz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@=KiؽwXݽu⣒a6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzxt`œ '"uB|(A"c͝?L|%4!Ȳ{m| Wz((v=q `oqOԁ[ L_؞/S?Y`]'Дc3AA}G:|t> ;#># :%>)"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>#AAOp UvY>4@:(>mp ぐР&tE5GhCB Y*Wmc %Q, A3YnKdW`d@qΫ4:"$=f,J;-Z{-jm9;C;:T$TL؀7RwX.[:K ]&t=PO 1A):PlJ:S+: j>4pOTq'r/79qcN{"NKLD*L0̥9Bӝ@=!4 },)j}©3@:Dy^wJC ^)@@~^i7:80#贁LzT=)zPXAHp(MuptKӇhr\goB@ᝤnA#|i?٠"āf?(< Eoc"BnCB=V(} a| (E$쐂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(CU`'RLpz)GEpы`cS8 2 XB=uCO1v5^[J l?k`n;zCJ # 2:~1$6yN.#H} #Z,5ɂ%/-Eb\c,H0eɂh@3)PB|@TM:Q+[ċHg+tQ XB+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0'츧>drqb\i>1,!9PJ8DN/hON;L宾ax@ns9 ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7D CCU zLh@:@z,C胹mXC̮ԝ|:!Wd,L ^ /| m,;tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]kՃ,tL`‰dBH]lDDBNL H OB|CI*CZv(U'* Wxɑih>XG!D>|CYeP5fWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮD El;,A$ChEm}Ga@1KN;Tܱ&<Ԗ,D:D9cG^^=l#]P.j!<*С^}aH@@E 9*0kz=NL!@C?bD*i°@lNLlR mD|lĊ,WC = >}KIN,ҰzB)ӡE==ElrjJYUB+~ld$sAmY @+8]@),Bס" رÕJA&..6 %hN脐`<VzH'Dd@܃;[BL@AnIOaO0^M MB\PPan.FCB.εc0DĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/垣R>H DWH2p|zcxHCmPȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅@-\.#,A&'2((* ;tr g7QD)B#h&H>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VH&|z&׹V+/:2rhGoF$+$K @'8g@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG, <>P1m$ EP4Y^> h8Ŭ;#,>l ̸V%hew?w'V ENDXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAA/l"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/SC>!˃&jAoT7CAzZ4K'^dYA;J<1ԃ\ 1˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPDu'\h;`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝ,@,4MӨ@H)H D|zܻ/؉(P݈{؅(]>F# !E@| Ա3X̋;y ]Ov qob@\D^剎;<p(S:*Ӂц p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W" W RpA6mK o; {ם+QC*|[u+Cu⊟DqT{Rz6`v,| H|lA %((';4Y$3:o9@?J"d2'iKvA}jhσЋ>/'"0Ĕ3 ~%),;" &BQ9 0+ʋt|J&J8 }.NJ~(Mr=t]v}xW)wvRI0Mz>xg xa`<ha4(O!p ̠ө W]5|ީħ'Jzק20Ftx  " oxwؘu( / N(PpvFj:`CVèf'G OnjAO6+, [tPH@ iǭu|9'ph{9믌&0|>0% hC|G8xFu8A{}Em hH)L:; _z֩q\1yq|~]c( Qߪm9+S>!0UA ^9A~!!ah_;AGFDH \$&xa,w<@mBxj`GDLg䘏0N C2YQ)E鈀qzF8HH#>Q"~l@?XFu,~y#'aTeq́`Y>b\t 7@`E=`)I5" ҅Sz[9K ,<zrH;/€cp7-dH aP<aA EG`%QD"7F5<(BeQM68_~WET,c EdXKhE(o`6@>bF*"ff v#2@R0:##o;"#H` {LO@ͬb !B*BR" !A TN@&#f/b³)*xbTZI^cj+ bX'*MJƮS:SRphΆ!CJ"$Rma.ꡙ( $X?@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~$` 7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 08IP* kaƠIZe'+L-$r=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$ !ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ejz ĸ6qdBT'2@"b@)QF FA3C#B2({DE/0@"` *Rhb3K3%BZeb e؊4A arB sTjރHcG"`? ;F# i6;AƠZAHIn>A q.^.N'lzG AK$Nc:'!D,!s//f$!dS/D"`*e=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`A@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@e `2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  Bd `k3 `k"`#F)xhz6@Ge$J -%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF  "◒+ْ3.tNFp$EZ-!"A0h٠zx$"6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6: :0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?B #^r`'@F@*: @V 6CF*`c()gf"HSX]R@x`c(/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F|` @"y@"r}'v}CBnDHbn@TSԁL%0 "Ё b1`=` TJaB?~Bܰ|փ0BQ^AZc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+p%Y.B #7t[N@=vE8HLG84!%ߥ3*ݻrv7n\YԐ5T)ӕNWjV 5X-A|Q4HESs= *X)d،6t=nQ>~a|v2OުDžO4X Rpm=!{o}P„5jehmp م ` e_na~b"Hb&b*b.c2Hc6XYnp\4BE  ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1܃A3@B^@>EA>SթXcBs8h s7 mMɪdq}Nꆓ2BPYt8@X$Bʠdi_j:"D E!IВj8$:I)#aM`>#E 8&0S en> NȮš,!>|;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y$=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) :d:D7A0/h;N5W;j%ɔ!:t>3BDh~}ЦkUtHkΏa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|@ €z\ A*~̯ˇT #$nw:ʹ@0 B!Z݈0Qn {HHIO@D ,2Dp3_a6DJ@NB3}0!XWB@)-5 Ȓ8>8cq&80 V''v]mzWXV$(cs40D|# ^uM/=Hh v@=q` 7 ps,9ωt~Oq!P\бdh!39*3%飞>ws%z{#!Y=QȖs򨬄pA~oStw,S|[9ާ`$1$p@S̈́` aB%&no9#µ `} ?(qPJ(<M&A1 aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"@P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vZ" aqnIPt IOV<9=@ tsY? IR@KcF14&#p<4X)@V`71X# ED)OIm7!9@ 1<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig5 qqwj,>3(5P `%&֑mo q*s=fS@[|Z@.v!0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2@jqqzOR% ߐoч^h7(j@0@ : `ͪ۷ $'PAH}ͅP `gB0xRي"7W`zC($#:x p @%"@c P S) aUsך S!#D&@ҩwS鲧e ߀Rb芭 ؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vsɾ5ɒ,{7B `{9 38^|V2QK@Jeʃ7H@"iOYjp j 2ܶȻ!0x,N0P" 2ġ'=_C'x& s hvBgvG!= kyT!59@JmM)Beۚcc=Mm׍G`pce4IT%]$CI@{o5`f1K#Z]Ey,#Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^3K0mk773/Oı$_7R+{n0 C -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5}80h O]ZY1?5  2e[ F=3}=?]ȁ@5GVz#.< i%oB/> Bwʇ}z$Cg6x:d!2"C#DOD1EWdE_1FgFo1GwG2H!$YЬ@h$>Y1D 0c`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`uqx+Y N(YJ=u;U l @0RЧK; 3dQc z3F2ޱ ]R aPdDZG-7Dd&>8`G (S@'j7e:Ǝb ~FeCA{,c@My g*@u*@tU1цjU M\D >]؁xІȚt!6b1u!HoGe(ww{#0 <{q-W:Rv24._a'XZ T@Mޑ4a@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"QZX !&@2,P (C=xW a=%O\/ R$#y&A0 \@.x0&/P __O=@cl/? ҃u88jd X_‡c<@PZIf#8k$@h2+e"hٜW"be,+p2 A=zJvֳmhE;ZҖִvF1*#x%`p b $6qκFVo@0Q YWP).u c(TxMɛ vxFkTdt4{9XZh-P א ~ X;~Hpnk`- c@u1?HFϤ  CIu(`0o"k"FPtXh wȥ|DJI؀>:X!4 zpYh( ƍH5@> +ۣ(epOWl~ `}֒ .}8C n "s99b@U`{P-npdTPA3wxE @|Ӈ,)Έ< ƀF Ȁk~ ۓ  \3` }x iԼ'\>@ `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇1u`NN{6IZz BS)6{K=Xd x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!`{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH thHz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@F(0ԄmmmRpIkip>ߖpySnDt)7SGcHYam66B=#G$/yۺv\b huX|7+,r|9n(@Zn$q ́d2Qq-u`Btx2JQ x F# Z]XdYMKa: pt1 `2Ϝ2vH*Q' ,JPt@N(ljt0|)-P%tI K/0t5pn3T@Tvf vivk P@oJ}h{{0r}׀,6~ /GL'p{"`P@z]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'cܳ ߻{=R,d'E !ɚE uҁB䃜WC>Pa@t^2D3 o>Ev4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM96p H0 exFF`} wшgo {œW@{􍠝jN=Ys!qs?O>cY> DOPL=vOSs} Q`;3=cj%S@#@4;:Q; 3[F@:oF24B8{I  2<0@ ,2:=~DAf lL!I?)TNZgƤD\=|;"̔@fSD [ T;4$0;2d,!>|}IpCUPOZ+`HbԳ7^>Nw= wT=MG@"n.SyHzn}["y. 0j |=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% :@^:l5rFX5^G};sN̝k67h>0va=}hDUSKSn9:o[;T>*%f@:3 @= (-exO:RSɎ#:fzk7 @=b dAUO?@LiߐU ߳H Hoe;޽ɖVI|ǀ[vך+1+0ANe @^>|wܽ.2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U1'M!=@Pz8$zW.J:*t`0@"ݼC": CO,v I LGeѣO<P>ҡD,7H>"‘FL=<9=½@2Ȕ,đ/`80HjЏUPS9i@tL8KGTGєx5.F}c2)3(V$>DYϐ!0@x +'ZDIʤM%XyOB)\$ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Rɢ A=yς6-iKkӢ=:hQ,#|H$e:QB _79F`@?Ґ*5&5(1>{c&YI`b:XzóefM1HjRZ>  O|b:H7<;_c<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏt@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aUQMDyL42,CǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJaocSimʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX`8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*0&3`Dl؁$>%7HreGhQ >ï@ԱkSv5)eDp L,HS*Dk[\\ բ=Koӣ>=Kd4+ZIbQFc 6XTko< @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ODYWNCP@$JH$4(!RO`"4'H`\HPh] \Jb+>!H|@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;D,=>EpC(Ns0  D'EC-v̈́:v8]:L;T@> K?L^ "QäԕCC?XU@Y N8D@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_@P&aaCb.wCT ;  RapCE,Ft=[gC:EZ-;8=PBWH'|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CMO x$v-Nŋ>C"D,qhi kԼa pA]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F0>Ԃ`È^>@c7xSDLIAtG@@fT@ 7L`\Mh@A HԔk]N $2@KYҫ~`F]/Ԃ/LgaHH|Ef($j*Dj Ujl\X ܃' Lfe]ZxyɇPȂ>T@/G?ȅ(  &NATI$8Yt,ST$c ~7Tik0F*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*( 䀝!͍j, ioboo$Fd(F-,.C$p po52oqpt.'\+FKcpksp{pp  p p ?X0 pp q#q+qi ;CqKSqC[qksq{/qqqqq1qr r!r"+"3r#;!#K$Sr%[%#G$c&sr'{'_&(r))(*r++*,r--,.r//.0s110#23s3;3'2C4Ss5[5τ4c6ss7{-k78s9Wr8s::s;s<>s??t@ @tAA#tB+B3tC;CCtDKDStE[EctFkFstG{GtHHtIItJJtKKtLLtMMtNNtOOuP PuQQ#uR+R3uS;SCuTKTSuU[UcuVkVsuW{WuXXuYYuZZu[[u\\u]]u^^u__v` `vaa#vb+b3vc;cCvdKdSve[ecvfkfsvg{gvhhviivjjvkkvllvmmvnnvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c! ,fBBD^^\jjlnnl..,&&$VVT 224JJLZZ\::<**,zz|bbd""$>>@ $(8蒄̜<08b\`BH@Įprlttp||x|v46@`bdp `4<<Դ86(Nfnp.(8X@Xx0.l0.zfhFJ@x\@<<4 ʔh\`pfp<6УKNHJDv3|{Wi˟=:|ϑ2/z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?דּDF)TV Y3:3(Sp Ih&QlIGqvdP;lЏ(`堄jj_wP@Ip#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:2&Hx@FAHn[Sdq%$-ښACQ:`,Pp;DϑhBx= POK~[:tPHZa}pϲ,@s@ԃ4:H:Î,20PX(6k;=ALbG C@B)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:דB/j " K!OSv=9};'B3\"7Xl{ܸ::w%  X>#=o ֱ |%"~Lڂ#!@( $ ϐ8|C77 +1AzP  {$uhG2ӱD (@CH0USȗz`G3B BPa=q#=q t $ @"J#>H1IHA?B SrI!݃>*`Y%@Zzs!|pȁ'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1px:&]jV$`A" H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;YU1V:u LmS&FD`MG=2Mj3s+nd"tD IE nr#!@? 8~jb)€waG*߭ؑk\nV2Q`-H[yPDLZ*uYr0s Vk>umJ\#"ykMϊe2=cA?CXlA'8"x3 ]gLoX@% H,0>E ':܂0`;dE8"0rYtY'uh 1Oey\+w\Y P,r*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lKG)lLbiOl2-sER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD_;WpBz4j{dQpt d?KD;PT."pd<6Hb_}u\>e="&ث :`qh@;Ԟc옍8&zk-uXR@k) H>ĨBC).wD=6-(7P O|  2t ! )HЏ{jC40!Hy [z@ ie+ x!܇  ~@TT'EV=)= P "P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R`rP+v02> h_P=@Ѐh b}~hQK\G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ) !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsLLW` ym@pNI`j왡HIuK$y'P27v)Wa mrwe\2*_*r_ș:DZIG̢sR>.gm!-*.` r`0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 40wQ0O1 dZJF"3@h0/D?#u\"gJeP#0:蚮:,zT Yq$"AV*)PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R@a-{ 2;4fc.gZЅ) "%"]b*U$]ǭQp@.H5Zq=K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$6@Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mL c cP 5a P@Sq'K>ܛP$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛Y;z{.#r {W s$T $zY'|bUCڵ*T%"T{ .y :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ē;NA2 @Xս ½Uf܋d_T=1ޑ*S9=4OTH<~ *`R;(卄Zڨ,{OcFx׆zk/R2{'w'YY1.*AJ*>ˇK0sL24L4TsM6tM8Cgt)ex`&PI֩ p(b`H*F{:H{`z*w[,Y4]&g - `v" ?p"ԛi&N=bz/ dq@Dl/ @2Oz%0!Jŀ0kŬU]>Pi݋t"h\hwa6 `b3xc;cCydA@~*  ¡|bJD<|${ p@J(u2ǀTjwؙv b6T  *(L;# Yt(LU2d{|7|y 4ȏodQ ~ ҩV|Cs$%47!j AQ 5nc2Bu@ uPA $@V$Izv x8=GyBD?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nҏq6b1a@ZԤP !uzaء_LoB߭c Ckʁ/BFXu#bJ,/L f#\*p;vAlu,dqSr(G&X=|`1yͷswP-YH/_xcN!3uIUn?h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ8v 0Ä(:\" 9gxH3%;FIDS 3 @ û ɵ0 ~{pي{Вw'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s);' ud( zHq$ xGQYZ,[̇\\ gӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ18BS5` 1A@ Y21 5:0J$.+ax+o`˫x@ Dj, ܡoMP`LQi{ |KXLtZP FL!R0t e L܉Ph@< *;o0q 1ą6ͅ  * K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 6Ә?P#ly*ڄ-*]2L%k B8{R"#Z'hStX!XY1-3#e$%RHu«с1@$ S`xYH$*e4D< 1]L }ӒXtզ(֭V NdVi$N#䜈(݊9HzԁI#tx( [5  h2IѷI4x xy{|h$ 9<= bP*{u+C5LA [m5%"0h@LQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx?a]=cb'ч~(05sneWY=.(D!ntPO ćI @#IXj< ERdλw|Y6\{N!wJYI{h ʠ!eR!&M )hɁ4SpB9mRF"!""# z14S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$9 M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u X]2 Obc$H6av]v᲋⬉L^#_n3 9W 1vw tjwvIݘ3w).x? }(1kc th呂0Ӱ¿,H GH1`efՅPHg3]y?Q ]7 F%0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4EoP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀1Sq{{V^ifN|Ҙ$W﷍{'|hS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=vC{bsg> ~"\%ihPĻbY>r!ٸ[t37b@>FSh|KAFEbrO;޼O5\+bXi-Bʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=4UP+vP<<.тIƒ PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3B(A=0`CC 7 N#A=|$$ԳT`R|=N=E68D#@Fl![@:+[J=b?KCE{O?@pH0T{n.NF;3ê) >( d`fwN+3A+-b~sA s= D~4޳AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=cNdQO9[a> m dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX p2~>ʀe#A@GwD %'1`"jh, !72 >~zpQ#gd5$ @2( n+aY" . |~;I @?"xi ^zlP 3x ^A&|dr$-2z;fG<:h@y|qc(Hzh (<5t AZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠%Tu ֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,awf8z & >e>LH/` ^M ^Aɥr@xh Cxr$LTzifRV^ pT)p` 0A\" c H,a%FDQ}L$G1ƺ}B+LdT)P1݋kr d0D) O9-s;wpd7 y|n$`|qH1,A 9Oo׃>r|IoXc M[AaȘ֑k{>BM\M0Q{ƛ*ppq7-. `/k6H[QM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:P`<[H=|2[m; !l#ʃi:Y?xd ߐA$G`03s7NB ![E#GFUG!LS:h)H {ԦdCz%[ BYЃ>vu݇G'V&2|CK&@|<$GP7?^A  Ra`\BD-5FCUD39A, ;ަOE Oў/I?{ ;AY_A _!`%Y(MJCSL;5C8`V> ECZ}0r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b> -+nBXJahA4m @4B_v8 zLA A;XXPġ+bD ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4DЊ7@g%H >$2MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"lxIeZR\CF47̋IDBB8SEXiBP!\HdI>J:\7& Gh$S dHŸAH afY-DzGD@ACɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D'|CT&eAH'g#yzZ,D?XrC$()FD: f(; W4gACGK*߅DٽmIiA|niE<&D e,GOAK;<-Yi&_BܟA4@E(ߎD aY>p #6Dt]ϢFA7NA4\*)%ȂXi~Z)M`E4})5g݃=< 2m#FhE4a~ V'(>4C'`T=#n&>?ܫ:,(Ljr?:ë^Z7i>؃>8@C'@<ĞP(~GRjޫ:_ԃV G-l?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 RpAD?=@ r.Gx@*[泪زJ^ GjA,YnBHH.vw2tB-eFÍ$_: =›(/bhrE .xpZҮ&DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-,0"x!0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtVE99;DCAW"C=Xѣ24S# RL03L=DE?\3F78@-|>2 XÌ~Z'C2X%AIrdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,e-AXC-ZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`.C0lz@ܱpz 91'Dg {B 7W?#`[|-ĦyBp @:l,C%́L#8;;,,,C̕@Kxo=Z?p;7JDG183#F3z/A 0kD7`hN@Ľ{B3xa| JKH; vC{һ&{,C{2/H_s$H |X`>u+Ƀ/I3N0Bc0½ 3 nuS6atޫ.:ӊzLz0,⃃+eμǎ_Z^' "A (rZ'Ua`ûGu P҄(U,#T9}KR%odGGxCwdVYG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwìn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /CTu8> yg YJ`XLҡd]6XgehjlݖnpY ?!S(P. L5SM$!Qtǂ`F0Iu{5~%-MU-[d65uG`1hHeQf2euޙ}蠅#5w-(/##`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.=IIӀaw4jZԗOST hvԣIRBAi XH-SPqȁQQkep`?LpK D#HO- <7#!IT '.}IB;@땊s8Ō !1PQSe={0ZI , 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL<!ěGfbv+"&ӎ8"UG`٪*c $G@ @K{ *H)6d zX+ 0O402P*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙAx` Hw(ڕnk|=ie/n t5:j!Kg {t *Ё n#\ miq9rfRW-u=˜"@l +I_@G^5XAzD̡_\faуCeP=ƫ(ࣅH auzVBI;4|p g=6Bd%PP vLF|X0ЋAN|`"ЏFjh,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʐZBHĽװ؇LG]|`# 7B5D`ȁLt׏&xTc-=1m:!"1`%}>C 7 C $E}C [CR0^w-I$SH`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…(:kO$NFD pG:m"(#6 H(K  lijdZƏL&I! !L P 0fk(- D"RA::n86nC @ ‚ ƻB k !*A6`ց 4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ ƠLD qqȐBN-gj$ X|_b[F Q[k a-!<tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzhAn%l# * @-N$~%bMba c&%!J*N d ϖ!;!)JP瘔b  "((H<J XL. @1V-bdaS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* R`BxʬZh%2j!##LH@%&I1K4Ũr`A1> : s-c;#AҒF,00@OH>L"0p!@emKkvI@ ԁI! " ҬmIb !b⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʨ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨHQuU\"(V:bB\jFﵤoJ+@ VII3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^D*I.F `Al"8Uh!ފ0r_1STC } |6&Dx9B)D`>R>B|L!Rp`B5lIR,5xcI/R7Yߡk@:Do7W5 A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@" D{S[ 6L&Z0 "XvTh a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@a *m5A jt)"j ĕq)Qkp*B " x9nVZMDJ! DZL6 g eˀ" g]:2 H̗Zjʬ"R=d!** cxWjH//0#T!D@^)$@1RC{l#KjA :> cC3,6DB TXC.P*LBY hL$?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!$`!@*|⧇VY[ٟB:|aDY%!hMdAJ`F?zޡd0RGLUQ \N#맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->!` \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!$e2` 7n D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevةiH&7(-Gͺu2>G` `ʽ{ؽK<| .½{ :Fj|c{8”9I|3w4Bwߟw4hY(2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^w"!]&dÐ޻9s|Uݽ@|CD! Ll&+|޽*AF#\×vܕ6U3>G>,Q8=L8gv'v7cg|F=C>tp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(d̵\Jhh.h> iNJi!DRa0@= d$=$uO \7p5P;' _ #@GXΞ}\>X:C2jk_ȲFtՓV;jU[0ɏ/ k>[=׻줻n=v|a@ߨH'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճM*)hqF< 7l3_`Ƒqe:SFVSXYWBFqs-A?a:CX_c}߶c+>!?o>d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF'RZ0@m=ԀLl|Q0># jDTq$+K7 &h, r,XԵ5# Q(V-7=D HaGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]a$L3AҬڂ iYXRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY::6wYF1t3^)yK*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE9Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! P3NXaZj;.H".9P-/c54'eg*Aβ !Cd RF $DCyrFpoپ]xGc GaZo~Fe0A1Bd@G0K_Z Sd-i*~Bf$L Bzs 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`1* 1,4[@ *՘4E9$):~^S"*эkG%Zw,zh S;~%[(n>5η2*X"EtȂ|I!޲u T-{7»9Ki}Kv+N@f%S^G`bk/Ǽ@`td@9 (F! P`_ٵ2, 6Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[Mg&=,(}6➔$*A~0Hw`( 5I0Cw.Hmz;+d|Чu8w  q|y6݄3PrɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet?̴M ;+E {RsBGz6(w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz`.u9@@oӊSY Dh8+! ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG 1$P;nww.:43Zj;" GPxQĬzKذo! " 1LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T64aG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19uc( ?6%5H +@4&%A Jҕx/Yh>$$y3PoD7&ᨁC!Ux  wȸ@ &*؜,9 Dp,Q)3R*'Y-ɥ.aYd৐NnB':jQ;tI"Z M:O M4UU@ X,7ATI QAmbLg7 TFr岘41]  FId~H$|G?+zP{@JGFmUe:JaT2Pn |`=պI76З(r7'q) ðՇb[_t 2􁏒` `H0.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ()5>jH -r/yK:k,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4Y.'qQI`s#?8xQߙvG|I5"Jx- .o e+}E?z@#ֻJ1c0}NBPC@'1.G;`5d>luVDj\+оȽ}ُ:ϺUèo85Pnޓw,)I H#Iȣ-IHd XJٰ 4 6y  hGx>w耤x{ Gtr* ep@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jjt˷˸GZ؂w &% ~~ ) Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w8P+lq vYfhQ?<1tH$ί_tN 9ė|H(%;}x HY>x (\ РQ j#}N Ia9F@xe(f 9L o4"5#ERl%P?܀Ȟɀx% YR$Cu`!v'(J$|$DH5Egxp';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.9-Y#;1Jaf\zvKzT:FL ǼUhM(R;H ևv^N{0!9e~Ȁz ,՚IiPikeȁ  &7{xO@|}`E(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYN() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V9( <1 1m}h.<9KkǐG Hzoˇ8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q}HTWu/:$=  p t_Vi,ʣFw$f 8y>IgW|Xy7C \y˾D`ޅ1'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF XPӯdN+9Q9˸O[hN/wXÀp'y/_fġڳ!)9NHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - c&Bds(ѢF"Mt)ӦNB*u*ժVbͪu+׮oɆw]𺰁 ёNV꽙yo]KnKwݼj޻ݜ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwAmSzC'1Tc5áWI1Qwų~A_j~-NdUe CFA8uVMP9s,]2r#X'+آqφ)N?d0A܎ޏx`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=H`OK$Vԁ;;v [:HCb7Bq^ݓIBK&%#mj*S7PX'D~T0@#p-jctcP7Qkcf3pC<A"X,QFF>:6y3jެAt ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p {# 0F׵|;ꑵJuz=A ܃CS_ק:P>;ϥts*>3;cS=0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xl@Az%K6#j&af1w<)>o ,x PYF$)A\Ec ֱ;"Џ|$G> !fc,#8@*n QC#fwڡA+nēLdIG{(|KYL_` q #\&< J ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 c!H&sv ;8 @=E HgVH Q@H蔭XU}@i Y:= M%z!XB $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>8wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS2H1 @_t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq@-}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53_Tf1 z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}?`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u $^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?0C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7D zĉu\@=QAl<\>d!:@SU ]^ɥDHE;Ba|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp?@ p^s\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IAuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA=$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ!0Lndlc (u,x::IP3LlFZDօ<: =e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH„4:*ę/ }_z2ltI*,4q"DvW՛.") $cB c'RDD0*MԃQ0bɆTUi\J=u\IJ~W!$QD܃yV2+CDjშRk!%æ4$ C?),NT>ŪCH@DXRaY}; B?jĽTH$yROkCC-=liBvƙ`J=Sce^A ``)֖_ P C#zn ibLBܔH@ܭX;<, @0Hح4,E:DC-톕,ےVfd']=|G@0;x؂A$H]4: g͆-,ڎb@*ǩt-m-D@:A@ n`.;nҮ`u&f$1,>^J:l@Z"4uH:T=A)dfK$@ 4lO)T0'IE):% p 0@7zD>EAH@I>î @>R2D0@?/EHK_dHI0^>m` ?h@*D@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`'æA(CorU7L:ۣl@++F5'F4s)%lC" DT1*3pBp;pJуqb@ 3I 4=S0?UHAZz>RüW,AԈ ~Kn|R1D BPu8̳lAD ؕ#) ܃{@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ7=X@v}$$YTI&]U:lBp@}>ThxOAP $!^C=TA@ݏDXcJ:ßO?1@Ab,A)-BmDLKU#=0>)rUAP׾>}-,@#t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@& "*3޺ "{0Իo_)&NBALx Q l$"w&JwDbF['l u:+>>xqǑ'Wysϡ;p@+\yp{@:?3U |i}WYnaYf"+!FI xJTQe `V:z櫱{$yj1Ja xBI'D1SJ  @ށ@lGN\o!_MªgeJ n1!%@oVPiơ*q7+i5F ´ddǑGч0 y'/Թm=4"G^! 6;bgG,_}Z~P" 0dRr @@=PSR=j%PJh`s?. xG=*@*@(q aHHcv$Hz}b۲&IL1S 1 J=/!:!! xB9Αu$"`=E7`r38`]GDDP)I.@"oA dD"呕@*H}*x"H,TtPa GB c c  hBB7CƷ ~r*Z9@+OyΓ=O%Tj4AP. upMHgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:o5O[9zYgVCx_X\Q /"8N'Gw&d ba5exjtM#C4M=."7 H>d%DK, DHj\Gء_B0$tzpzYQBҵL`؀8H6&GVWW`T:  Õ`zqy0c}>!TtiZzUGbav5"` \ h c!"0=aYyG2Q4ApRd!9CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆD"Qah!"Q0 = 7} u-SV3{@ @Oa} 6apBQM` 2@vMVtr"iF2 TBJ k݋@B(sAA($ڍ@+ U|# @C,x$x, LJjtа `C?bP tp3!H߷guoDY.3zlK@8|`CN*6P|L`\ 1UStUJC ^Βݐ@3. =Щ%2 E`@%RtϞW):6X@Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC "Pc=K8@g/N(I& !pD!8d"J(Y,!r"N**j!VAp즱bMND*gM6Kb!Y:AxB#$AiAg0#>@xɰ "`hPXa & /߀0 H!Xa{< 8 !]!P!ڧ_#*7R I" |b 6(dA++T( a@&L &{A @P~ޤ1"bk gFL *@aj6 G#!}Rh)pamN/¹uA` ]*jBdY> B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'x"ƯMejGH D`Rd: -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8(H Y(ޡ-F%( #8> R!H@6@+\s88$`KH2T0@" n6` # ಩>B$&CP`&v|2!'B4"2 }'U46/QX8 $("7)^ |ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#Ԁ3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-Ab (Nd>8Pe:9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!xh0!pj!PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!r)6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫܗOi7Xgܓ@2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*AP5F􃏚>wYʑW;Џ=N=x ×k7\ 鿗IXjA@B%",Wlg!FI>@ܨ:[:`\83{6_QO_BDb@(8{#>R ~o?_-e;HW0DM; ؜-_Sތ7G.Wn?:!g砇.褗n{~;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGHd0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>1)GIUwD baŽza%XB7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ I@{l@pd>Cc%%䅃Lg@M% b(9ẋ>ς Hh`؂*ұFt\aG ҃ t`GJT-A@5Ct%@R:QĢpV! 0G㮂 5gv)^ zHuwS0KCôbƮ'ODH ȉox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ8 %P*k$" :djmr2(|Qvs@ Nܣ Ňd9DAJYN.0|XF 8 @YD #pLsUO3Ka!%K oPK$22Y\q0 k4/{|X*PlB8 duh,G'P.w8rAR Ǜ b-*-c,ad[]20 LA3G$''Q24G|HԹq @fABŰg TT ҉oP1) :tblh T/dwbńϯQ j4\XG<AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fr@CY ,\Y(Yz , ߨA+:M :d~0cJ7y*M}7oHΑ9!cA`H:1қg>Y^x+EKUR(ȣ;qAHt&U=S{aE/|6:r e!Z:BF1 `G-<zfʋ4)P(?H2< zb}L hjZ[ai v aDz7X&Yd. A%pGvq %8 pw?"# $Pg\E?ݔ@AV212W*e! sbK"2"X">(rS}g2"SR`xzXOJ )tb1G r i,@tb2Ac ON(LRpC NhAX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7с!DS@j+R+AvDE0vj``-b- H\!Et*>%`E*%υ= `& `T"l.72 BBuPTwLe8**@+e%p 9}2%p] yK0/r/b,p`dÃ06c5h0 ؎>|cm $*%`'2=^E@ H22v5D@8o:v#t#+.E0@ 9F`29PDΡ=48& 3!Ls2F -1s5(0#MWXEYܐV 6m6AeDivӇ_X#GP8 9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;pI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O0=؊TK PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گ(0 fiLSGj֌A@Up%VjKsjh yv(ń @P eTe]qMGd0qE6"ȫN*{%wr0SRvE;T+FS{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾BcO /~Dx:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2. +\}Ԡ0yp,iПfP 0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"KpqVt%m" p-*°s ʧa*̢vl8yM'H'1 Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-o;hT O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowHa~z&w]{s΂ }(;| ^EUa{0$ ;(ej%H݅""ܓ0; P_:]巹ה d5Dv2'Po t܋˜z [KsѥO^uٵows0ûzK𽻧aE ~KT։vJG~g `b!|P3J}*Po G0~J!9JǸz'{6%AS({H@ K![—oZHz"k!nN*xG>HodaZ|Q!NXа{ BtQH#tRJ+RL3tMF}j.Q8TUS*YŬJ.zatz{'*@\YH  {':Xu0! Ma{8!%1g6^ 1wܫ}Fʁ.̳R`1_~Lz9SO"[؛7! 8 R~ѧz`z `e2fsyg{gj1`h@J{b`jzkkƔ  6dKƘҶn{oo* W.kgq#|r+r%pIő3r$7A^E|@)t@wd)MyJT!40!Z:р `3vR$@?_Z `Au(1;&CpD0A*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|HjTFb qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^сiQ0x@>0`LA@@&0 \,g2Rt[QH1|@l C3(i:ῥc62HG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6P{ kVd!91ekيfցXt t*B&VbE9K?D؄m\B.x4`GX9'#) $b[~8At; "Ti@5$yሜG G3:Qzm&[(Or|匜e$0F0氎 ` Ubare2v=U @rKzLЋft\C ,E4wfhґ9J݀E= lò Gd2 UB H) Aj<臜}ld'%#Fs`d/Bp~"+CdֳRRpESVCX@\(Iq~^#H"Dbwt7<9 x-EHSKX ]T&ހ 02`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>H, }Cz3EFv*P&[ D`Aͻ/=uE:0"YW#W*3 ˈ.A#Y ˇؠr? " @ #Q!؉kq5 J6K: UA ;7/ |pUzkM c` (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 D9*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5mG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kiʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-eZ@xC|~@YTfXE^n9 (ƱStd H}X|#}pup|`v .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{HMT#Ai 5leDof=w#oˇd@)7[ .(rq|#B!Y"x^|8D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4<dz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@=KiؽwXݽu⣒a6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzxt`œ '"uB|(A"c͝?L|%4!Ȳ{m| Wz((v=q `oqOԁ[ L_؞/S?Y`]'Дc3AA}G:|t> ;#># :%>)"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>#AAOp UvY>4@:(>mp ぐР&tE5GhCB Y*Wmc %Q, A3YnKdW`d@qΫ4:"$=f,J;-Z{-jm9;C;:T$TL؀7RwX.[:K ]&t=PO 1A):PlJ:S+: j>4pOTq'r/79qcN{"NKLD*L0̥9Bӝ@=!4 },)j}©3@:Dy^wJC ^)@@~^i7:80#贁LzT=)zPXAHp(MuptKӇhr\goB@ᝤnA#|i?٠"āf?(< Eoc"BnCB=V(} a| (E$쐂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(CU`'RLpz)GEpы`cS8 2 XB=uCO1v5^[J l?k`n;zCJ # 2:~1$6yN.#H} #Z,5ɂ%/-Eb\c,H0eɂh@3)PB|@TM:Q+[ċHg+tQ XB+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0'츧>drqb\i>1,!9PJ8DN/hON;L宾ax@ns9 ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7D CCU zLh@:@z,C胹mXC̮ԝ|:!Wd,L ^ /| m,;tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]kՃ,tL`‰dBH]lDDBNL H OB|CI*CZv(U'* Wxɑih>XG!D>|CYeP5fWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮD El;,A$ChEm}Ga@1KN;Tܱ&<Ԗ,D:D9cG^^=l#]P.j!<*С^}aH@@E 9*0kz=NL!@C?bD*i°@lNLlR mD|lĊ,WC = >}KIN,ҰzB)ӡE==ElrjJYUB+~ld$sAmY @+8]@),Bס" رÕJA&..6 %hN脐`<VzH'Dd@܃;[BL@AnIOaO0^M MB\PPan.FCB.εc0DĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/垣R>H DWH2p|zcxHCmPȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅@-\.#,A&'2((* ;tr g7QD)B#h&H>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VH&|z&׹V+/:2rhGoF$+$K @'8g@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG, <>P1m$ EP4Y^> h8Ŭ;#,>l ̸V%hew?w'V ENDXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAA/l"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/SC>!˃&jAoT7CAzZ4K'^dYA;J<1ԃ\ 1˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPDu'\h;`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝ,@,4MӨ@H)H D|zܻ/؉(P݈{؅(]>F# !E@| Ա3X̋;y ]Ov qob@\D^剎;<p(S:*Ӂц p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W" W RpA6mK o; {ם+QC*|[u+Cu⊟DqT{Rz6`v,| H|lA %((';4Y$3:o9@?J"d2'iKvA}jhσЋ>/'"0Ĕ3 ~%),;" &BQ9 0+ʋt|J&J8 }.NJ~(Mr=t]v}xW)wvRI0Mz>xg xa`<ha4(O!p ̠ө W]5|ީħ'Jzק20Ftx  " oxwؘu( / N(PpvFj:`CVèf'G OnjAO6+, [tPH@ iǭu|9'ph{9믌&0|>0% hC|G8xFu8A{}Em hH)L:; _z֩q\1yq|~]c( Qߪm9+S>!0UA ^9A~!!ah_;AGFDH \$&xa,w<@mBxj`GDLg䘏0N C2YQ)E鈀qzF8HH#>Q"~l@?XFu,~y#'aTeq́`Y>b\t 7@`E=`)I5" ҅Sz[9K ,<zrH;/€cp7-dH aP<aA EG`%QD"7F5<(BeQM68_~WET,c EdXKhE(o`6@>bF*"ff v#2@R0:##o;"#H` {LO@ͬb !B*BR" !A TN@&#f/b³)*xbTZI^cj+ bX'*MJƮS:SRphΆ!CJ"$Rma.ꡙ( $X?@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~$` 7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 08IP* kaƠIZe'+L-$r=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$ !ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ejz ĸ6qdBT'2@"b@)QF FA3C#B2({DE/0@"` *Rhb3K3%BZeb e؊4A arB sTjރHcG"`? ;F# i6;AƠZAHIn>A q.^.N'lzG AK$Nc:'!D,!s//f$!dS/D"`*e=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`A@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@e `2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  Bd `k3 `k"`#F)xhz6@Ge$J -%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF  "◒+ْ3.tNFp$EZ-!"A0h٠zx$"6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6: :0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?B #^r`'@F@*: @V 6CF*`c()gf"HSX]R@x`c(/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F|` @"y@"r}'v}CBnDHbn@TSԁL%0 "Ё b1`=` TJaB?~Bܰ|փ0BQ^AZc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+p%Y.B #7t[N@=vE8HLG84!%ߥ3*ݻrv7n\YԐ5T)ӕNWjV 5X-A|Q4HESs= *X)d،6t=nQ>~a|v2OުDžO4X Rpm=!{o}P„5jehmp م ` e_na~b"Hb&b*b.c2Hc6XYnp\4BE  ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1܃A3@B^@>EA>SթXcBs8h s7 mMɪdq}Nꆓ2BPYt8@X$Bʠdi_j:"D E!IВj8$:I)#aM`>#E 8&0S en> NȮš,!>|;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y$=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) :d:D7A0/h;N5W;j%ɔ!:t>3BDh~}ЦkUtHkΏa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|@ €z\ A*~̯ˇT #$nw:ʹ@0 B!Z݈0Qn {HHIO@D ,2Dp3_a6DJ@NB3}0!XWB@)-5 Ȓ8>8cq&80 V''v]mzWXV$(cs40D|# ^uM/=Hh v@=q` 7 ps,9ωt~Oq!P\бdh!39*3%飞>ws%z{#!Y=QȖs򨬄pA~oStw,S|[9ާ`$1$p@S̈́` aB%&no9#µ `} ?(qPJ(<M&A1 aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"@P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vZ" aqnIPt IOV<9=@ tsY? IR@KcF14&#p<4X)@V`71X# ED)OIm7!9@ 1<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig5 qqwj,>3(5P `%&֑mo q*s=fS@[|Z@.v!0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2@jqqzOR% ߐoч^h7(j@0@ : `ͪ۷ $'PAH}ͅP `gB0xRي"7W`zC($#:x p @%"@c P S) aUsך S!#D&@ҩwS鲧e ߀Rb芭 ؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vsɾ5ɒ,{7B `{9 38^|V2QK@Jeʃ7H@"iOYjp j 2ܶȻ!0x,N0P" 2ġ'=_C'x& s hvBgvG!= kyT!59@JmM)Beۚcc=Mm׍G`pce4IT%]$CI@{o5`f1K#Z]Ey,#Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^3K0mk773/Oı$_7R+{n0 C -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5}80h O]ZY1?5  2e[ F=3}=?]ȁ@5GVz#.< i%oB/> Bwʇ}z$Cg6x:d!2"C#DOD1EWdE_1FgFo1GwG2H!$YЬ@h$>Y1D 0c`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`uqx+Y N(YJ=u;U l @0RЧK; 3dQc z3F2ޱ ]R aPdDZG-7Dd&>8`G (S@'j7e:Ǝb ~FeCA{,c@My g*@u*@tU1цjU M\D >]؁xІȚt!6b1u!HoGe(ww{#0 <{q-W:Rv24._a'XZ T@Mޑ4a@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"QZX !&@2,P (C=xW a=%O\/ R$#y&A0 \@.x0&/P __O=@cl/? ҃u88jd X_‡c<@PZIf#8k$@h2+e"hٜW"be,+p2 A=zJvֳmhE;ZҖִvF1*#x%`p b $6qκFVo@0Q YWP).u c(TxMɛ vxFkTdt4{9XZh-P א ~ X;~Hpnk`- c@u1?HFϤ  CIu(`0o"k"FPtXh wȥ|DJI؀>:X!4 zpYh( ƍH5@> +ۣ(epOWl~ `}֒ .}8C n "s99b@U`{P-npdTPA3wxE @|Ӈ,)Έ< ƀF Ȁk~ ۓ  \3` }x iԼ'\>@ `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇1u`NN{6IZz BS)6{K=Xd x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!`{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH thHz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@F(0ԄmmmRpIkip>ߖpySnDt)7SGcHYam66B=#G$/yۺv\b huX|7+,r|9n(@Zn$q ́d2Qq-u`Btx2JQ x F# Z]XdYMKa: pt1 `2Ϝ2vH*Q' ,JPt@N(ljt0|)-P%tI K/0t5pn3T@Tvf vivk P@oJ}h{{0r}׀,6~ /GL'p{"`P@z]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'cܳ ߻{=R,d'E !ɚE uҁB䃜WC>Pa@t^2D3 o>Ev4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM96p H0 exFF`} wшgo {œW@{􍠝jN=Ys!qs?O>cY> DOPL=vOSs} Q`;3=cj%S@#@4;:Q; 3[F@:oF24B8{I  2<0@ ,2:=~DAf lL!I?)TNZgƤD\=|;"̔@fSD [ T;4$0;2d,!>|}IpCUPOZ+`HbԳ7^>Nw= wT=MG@"n.SyHzn}["y. 0j |=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% :@^:l5rFX5^G};sN̝k67h>0va=}hDUSKSn9:o[;T>*%f@:3 @= (-exO:RSɎ#:fzk7 @=b dAUO?@LiߐU ߳H Hoe;޽ɖVI|ǀ[vך+1+0ANe @^>|wܽ.2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U1'M!=@Pz8$zW.J:*t`0@"ݼC": CO,v I LGeѣO<P>ҡD,7H>"‘FL=<9=½@2Ȕ,đ/`80HjЏUPS9i@tL8KGTGєx5.F}c2)3(V$>DYϐ!0@x +'ZDIʤM%XyOB)\$ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Rɢ A=yς6-iKkӢ=:hQ,#|H$e:QB _79F`@?Ґ*5&5(1>{c&YI`b:XzóefM1HjRZ>  O|b:H7<;_c<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏt@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aUQMDyL42,CǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJaocSimʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX`8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*0&3`Dl؁$>%7HreGhQ >ï@ԱkSv5)eDp L,HS*Dk[\\ բ=Koӣ>=Kd4+ZIbQFc 6XTko< @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ODYWNCP@$JH$4(!RO`"4'H`\HPh] \Jb+>!H|@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;D,=>EpC(Ns0  D'EC-v̈́:v8]:L;T@> K?L^ "QäԕCC?XU@Y N8D@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_@P&aaCb.wCT ;  RapCE,Ft=[gC:EZ-;8=PBWH'|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CMO x$v-Nŋ>C"D,qhi kԼa pA]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F0>Ԃ`È^>@c7xSDLIAtG@@fT@ 7L`\Mh@A HԔk]N $2@KYҫ~`F]/Ԃ/LgaHH|Ef($j*Dj Ujl\X ܃' Lfe]ZxyɇPȂ>T@/G?ȅ(  &NATI$8Yt,ST$c ~7Tik0F*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*( 䀝!͍j, ioboo$Fd(F-,.C$p po52oqpt.'\+FKcpksp{pp  p p ?X0 pp q#q+qi ;CqKSqC[qksq{/qqqqq1qr r!r"+"3r#;!#K$Sr%[%#G$c&sr'{'_&(r))(*r++*,r--,.r//.0s110#23s3;3'2C4Ss5[5τ4c6ss7{-k78s9Wr8s::s;s<>s??t@ @tAA#tB+B3tC;CCtDKDStE[EctFkFstG{GtHHtIItJJtKKtLLtMMtNNtOOuP PuQQ#uR+R3uS;SCuTKTSuU[UcuVkVsuW{WuXXuYYuZZu[[u\\u]]u^^u__v` `vaa#vb+b3vc;cCvdKdSve[ecvfkfsvg{gvhhviivjjvkkvllvmmvnnvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c! ,fBBD^^\jjlnnl..,&&$VVT 224JJLZZ\::<**,zz|bbd""$>>@ $(8蒄̜<08b\`BH@Įprlttp||x|v46@`bdp `4<<Դ86(Nfnp.(8X@Xx0.l0.zfhFJ@x\@<<4 ʔh\`pfp<6УKNHJDv3|{Wi˟=:|ϑ2/z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?דּDF)TV Y3:3(Sp Ih&QlIGqvdP;lЏ(`堄jj_wP@Ip#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:2&Hx@FAHn[Sdq%$-ښACQ:`,Pp;DϑhBx= POK~[:tPHZa}pϲ,@s@ԃ4:H:Î,20PX(6k;=ALbG C@B)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:דB/j " K!OSv=9};'B3\"7Xl{ܸ::w%  X>#=o ֱ |%"~Lڂ#!@( $ ϐ8|C77 +1AzP  {$uhG2ӱD (@CH0USȗz`G3B BPa=q#=q t $ @"J#>H1IHA?B SrI!݃>*`Y%@Zzs!|pȁ'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1px:&]jV$`A" H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;YU1V:u LmS&FD`MG=2Mj3s+nd"tD IE nr#!@? 8~jb)€waG*߭ؑk\nV2Q`-H[yPDLZ*uYr0s Vk>umJ\#"ykMϊe2=cA?CXlA'8"x3 ]gLoX@% H,0>E ':܂0`;dE8"0rYtY'uh 1Oey\+w\Y P,r*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lKG)lLbiOl2-sER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD_;WpBz4j{dQpt d?KD;PT."pd<6Hb_}u\>e="&ث :`qh@;Ԟc옍8&zk-uXR@k) H>ĨBC).wD=6-(7P O|  2t ! )HЏ{jC40!Hy [z@ ie+ x!܇  ~@TT'EV=)= P "P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R`rP+v02> h_P=@Ѐh b}~hQK\G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ) !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsLLW` ym@pNI`j왡HIuK$y'P27v)Wa mrwe\2*_*r_ș:DZIG̢sR>.gm!-*.` r`0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 40wQ0O1 dZJF"3@h0/D?#u\"gJeP#0:蚮:,zT Yq$"AV*)PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R@a-{ 2;4fc.gZЅ) "%"]b*U$]ǭQp@.H5Zq=K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$6@Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mL c cP 5a P@Sq'K>ܛP$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛Y;z{.#r {W s$T $zY'|bUCڵ*T%"T{ .y :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ē;NA2 @Xս ½Uf܋d_T=1ޑ*S9=4OTH<~ *`R;(卄Zڨ,{OcFx׆zk/R2{'w'YY1.*AJ*>ˇK0sL24L4TsM6tM8Cgt)ex`&PI֩ p(b`H*F{:H{`z*w[,Y4]&g - `v" ?p"ԛi&N=bz/ dq@Dl/ @2Oz%0!Jŀ0kŬU]>Pi݋t"h\hwa6 `b3xc;cCydA@~*  ¡|bJD<|${ p@J(u2ǀTjwؙv b6T  *(L;# Yt(LU2d{|7|y 4ȏodQ ~ ҩV|Cs$%47!j AQ 5nc2Bu@ uPA $@V$Izv x8=GyBD?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nҏq6b1a@ZԤP !uzaء_LoB߭c Ckʁ/BFXu#bJ,/L f#\*p;vAlu,dqSr(G&X=|`1yͷswP-YH/_xcN!3uIUn?h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ8v 0Ä(:\" 9gxH3%;FIDS 3 @ û ɵ0 ~{pي{Вw'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s);' ud( zHq$ xGQYZ,[̇\\ gӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ18BS5` 1A@ Y21 5:0J$.+ax+o`˫x@ Dj, ܡoMP`LQi{ |KXLtZP FL!R0t e L܉Ph@< *;o0q 1ą6ͅ  * K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 6Ә?P#ly*ڄ-*]2L%k B8{R"#Z'hStX!XY1-3#e$%RHu«с1@$ S`xYH$*e4D< 1]L }ӒXtզ(֭V NdVi$N#䜈(݊9HzԁI#tx( [5  h2IѷI4x xy{|h$ 9<= bP*{u+C5LA [m5%"0h@LQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx?a]=cb'ч~(05sneWY=.(D!ntPO ćI @#IXj< ERdλw|Y6\{N!wJYI{h ʠ!eR!&M )hɁ4SpB9mRF"!""# z14S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$9 M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u X]2 Obc$H6av]v᲋⬉L^#_n3 9W 1vw tjwvIݘ3w).x? }(1kc th呂0Ӱ¿,H GH1`efՅPHg3]y?Q ]7 F%0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4EoP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀1Sq{{V^ifN|Ҙ$W﷍{'|hS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=vC{bsg> ~"\%ihPĻbY>r!ٸ[t37b@>FSh|KAFEbrO;޼O5\+bXi-Bʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=4UP+vP<<.тIƒ PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3B(A=0`CC 7 N#A=|$$ԳT`R|=N=E68D#@Fl![@:+[J=b?KCE{O?@pH0T{n.NF;3ê) >( d`fwN+3A+-b~sA s= D~4޳AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=cNdQO9[a> m dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX p2~>ʀe#A@GwD %'1`"jh, !72 >~zpQ#gd5$ @2( n+aY" . |~;I @?"xi ^zlP 3x ^A&|dr$-2z;fG<:h@y|qc(Hzh (<5t AZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠%Tu ֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,awf8z & >e>LH/` ^M ^Aɥr@xh Cxr$LTzifRV^ pT)p` 0A\" c H,a%FDQ}L$G1ƺ}B+LdT)P1݋kr d0D) O9-s;wpd7 y|n$`|qH1,A 9Oo׃>r|IoXc M[AaȘ֑k{>BM\M0Q{ƛ*ppq7-. `/k6H[QM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:P`<[H=|2[m; !l#ʃi:Y?xd ߐA$G`03s7NB ![E#GFUG!LS:h)H {ԦdCz%[ BYЃ>vu݇G'V&2|CK&@|<$GP7?^A  Ra`\BD-5FCUD39A, ;ަOE Oў/I?{ ;AY_A _!`%Y(MJCSL;5C8`V> ECZ}0r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b> -+nBXJahA4m @4B_v8 zLA A;XXPġ+bD ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4DЊ7@g%H >$2MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"lxIeZR\CF47̋IDBB8SEXiBP!\HdI>J:\7& Gh$S dHŸAH afY-DzGD@ACɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D'|CT&eAH'g#yzZ,D?XrC$()FD: f(; W4gACGK*߅DٽmIiA|niE<&D e,GOAK;<-Yi&_BܟA4@E(ߎD aY>p #6Dt]ϢFA7NA4\*)%ȂXi~Z)M`E4})5g݃=< 2m#FhE4a~ V'(>4C'`T=#n&>?ܫ:,(Ljr?:ë^Z7i>؃>8@C'@<ĞP(~GRjޫ:_ԃV G-l?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 RpAD?=@ r.Gx@*[泪زJ^ GjA,YnBHH.vw2tB-eFÍ$_: =›(/bhrE .xpZҮ&DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-,0"x!0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtVE99;DCAW"C=Xѣ24S# RL03L=DE?\3F78@-|>2 XÌ~Z'C2X%AIrdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,e-AXC-ZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`.C0lz@ܱpz 91'Dg {B 7W?#`[|-ĦyBp @:l,C%́L#8;;,,,C̕@Kxo=Z?p;7JDG183#F3z/A 0kD7`hN@Ľ{B3xa| JKH; vC{һ&{,C{2/H_s$H |X`>u+Ƀ/I3N0Bc0½ 3 nuS6atޫ.:ӊzLz0,⃃+eμǎ_Z^' "A (rZ'Ua`ûGu P҄(U,#T9}KR%odGGxCwdVYG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwìn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /CTu8> yg YJ`XLҡd]6XgehjlݖnpY ?!S(P. L5SM$!Qtǂ`F0Iu{5~%-MU-[d65uG`1hHeQf2euޙ}蠅#5w-(/##`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.=IIӀaw4jZԗOST hvԣIRBAi XH-SPqȁQQkep`?LpK D#HO- <7#!IT '.}IB;@땊s8Ō !1PQSe={0ZI , 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL<!ěGfbv+"&ӎ8"UG`٪*c $G@ @K{ *H)6d zX+ 0O402P*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙAx` Hw(ڕnk|=ie/n t5:j!Kg {t *Ё n#\ miq9rfRW-u=˜"@l +I_@G^5XAzD̡_\faуCeP=ƫ(ࣅH auzVBI;4|p g=6Bd%PP vLF|X0ЋAN|`"ЏFjh,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʐZBHĽװ؇LG]|`# 7B5D`ȁLt׏&xTc-=1m:!"1`%}>C 7 C $E}C [CR0^w-I$SH`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…(:kO$NFD pG:m"(#6 H(K  lijdZƏL&I! !L P 0fk(- D"RA::n86nC @ ‚ ƻB k !*A6`ց 4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ ƠLD qqȐBN-gj$ X|_b[F Q[k a-!<tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzhAn%l# * @-N$~%bMba c&%!J*N d ϖ!;!)JP瘔b  "((H<J XL. @1V-bdaS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* R`BxʬZh%2j!##LH@%&I1K4Ũr`A1> : s-c;#AҒF,00@OH>L"0p!@emKkvI@ ԁI! " ҬmIb !b⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʨ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨHQuU\"(V:bB\jFﵤoJ+@ VII3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^D*I.F `Al"8Uh!ފ0r_1STC } |6&Dx9B)D`>R>B|L!Rp`B5lIR,5xcI/R7Yߡk@:Do7W5 A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@" D{S[ 6L&Z0 "XvTh a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@a *m5A jt)"j ĕq)Qkp*B " x9nVZMDJ! DZL6 g eˀ" g]:2 H̗Zjʬ"R=d!** cxWjH//0#T!D@^)$@1RC{l#KjA :> cC3,6DB TXC.P*LBY hL$?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!$`!@*|⧇VY[ٟB:|aDY%!hMdAJ`F?zޡd0RGLUQ \N#맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->!` \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!$e2` 7n D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevةiH&7(-Gͺu2>G` `ʽ{ؽK<| .½{ :Fj|c{8”9I|3w4Bwߟw4hY(2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^w"!]&dÐ޻9s|Uݽ@|CD! Ll&+|޽*AF#\×vܕ6U3>G>,Q8=L8gv'v7cg|F=C>tp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(d̵\Jhh.h> iNJi!DRa0@= d$=$uO \7p5P;' _ #@GXΞ}\>X:C2jk_ȲFtՓV;jU[0ɏ/ k>[=׻줻n=v|a@ߨH'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճM*)hqF< 7l3_`Ƒqe:SFVSXYWBFqs-A?a:CX_c}߶c+>!?o>d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF'RZ0@m=ԀLl|Q0># jDTq$+K7 &h, r,XԵ5# Q(V-7=D HaGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]a$L3AҬڂ iYXRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY::6wYF1t3^)yK*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE9Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! P3NXaZj;.H".9P-/c54'eg*Aβ !Cd RF $DCyrFpoپ]xGc GaZo~Fe0A1Bd@G0K_Z Sd-i*~Bf$L Bzs 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`1* 1,4[@ *՘4E9$):~^S"*эkG%Zw,zh S;~%[(n>5η2*X"EtȂ|I!޲u T-{7»9Ki}Kv+N@f%S^G`bk/Ǽ@`td@9 (F! P`_ٵ2, 6Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[Mg&=,(}6➔$*A~0Hw`( 5I0Cw.Hmz;+d|Чu8w  q|y6݄3PrɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet?̴M ;+E {RsBGz6(w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz`.u9@@oӊSY Dh8+! ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG 1$P;nww.:43Zj;" GPxQĬzKذo! " 1LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T64aG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19uc( ?6%5H +@4&%A Jҕx/Yh>$$y3PoD7&ᨁC!Ux  wȸ@ &*؜,9 Dp,Q)3R*'Y-ɥ.aYd৐NnB':jQ;tI"Z M:O M4UU@ X,7ATI QAmbLg7 TFr岘41]  FId~H$|G?+zP{@JGFmUe:JaT2Pn |`=պI76З(r7'q) ðՇb[_t 2􁏒` `H0.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ()5>jH -r/yK:k,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4Y.'qQI`s#?8xQߙvG|I5"Jx- .o e+}E?z@#ֻJ1c0}NBPC@'1.G;`5d>luVDj\+оȽ}ُ:ϺUèo85Pnޓw,)I H#Iȣ-IHd XJٰ 4 6y  hGx>w耤x{ Gtr* ep@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jjt˷˸GZ؂w &% ~~ ) Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w8P+lq vYfhQ?<1tH$ί_tN 9ė|H(%;}x HY>x (\ РQ j#}N Ia9F@xe(f 9L o4"5#ERl%P?܀Ȟɀx% YR$Cu`!v'(J$|$DH5Egxp';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.9-Y#;1Jaf\zvKzT:FL ǼUhM(R;H ևv^N{0!9e~Ȁz ,՚IiPikeȁ  &7{xO@|}`E(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYN() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V9( <1 1m}h.<9KkǐG Hzoˇ8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q}HTWu/:$=  p t_Vi,ʣFw$f 8y>IgW|Xy7C \y˾D`ޅ1'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF XPӯdN+9Q9˸O[hN/wXÀp'y/_fġڳ!)9NHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - c&Bds(ѢF"Mt)ӦNB*u*ժVbͪu+׮oɆw]𺰁 ёNV꽙yo]KnKwݼj޻ݜ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwAmSzC'1Tc5áWI1Qwų~A_j~-NdUe CFA8uVMP9s,]2r#X'+آqφ)N?d0A܎ޏx`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=H`OK$Vԁ;;v [:HCb7Bq^ݓIBK&%#mj*S7PX'D~T0@#p-jctcP7Qkcf3pC<A"X,QFF>:6y3jެAt ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p {# 0F׵|;ꑵJuz=A ܃CS_ק:P>;ϥts*>3;cS=0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xl@Az%K6#j&af1w<)>o ,x PYF$)A\Ec ֱ;"Џ|$G> !fc,#8@*n QC#fwڡA+nēLdIG{(|KYL_` q #\&< J ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 c!H&sv ;8 @=E HgVH Q@H蔭XU}@i Y:= M%z!XB $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>8wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS2H1 @_t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq@-}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53_Tf1 z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}?`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u $^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?0C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7D zĉu\@=QAl<\>d!:@SU ]^ɥDHE;Ba|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp?@ p^s\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IAuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA=$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ!0Lndlc (u,x::IP3LlFZDօ<: =e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH„4:*ę/ }_z2ltI*,4q"DvW՛.") $cB c'RDD0*MԃQ0bɆTUi\J=u\IJ~W!$QD܃yV2+CDjშRk!%æ4$ C?),NT>ŪCH@DXRaY}; B?jĽTH$yROkCC-=liBvƙ`J=Sce^A ``)֖_ P C#zn ibLBܔH@ܭX;<, @0Hح4,E:DC-톕,ےVfd']=|G@0;x؂A$H]4: g͆-,ڎb@*ǩt-m-D@:A@ n`.;nҮ`u&f$1,>^J:l@Z"4uH:T=A)dfK$@ 4lO)T0'IE):% p 0@7zD>EAH@I>î @>R2D0@?/EHK_dHI0^>m` ?h@*D@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`'æA(CorU7L:ۣl@++F5'F4s)%lC" DT1*3pBp;pJуqb@ 3I 4=S0?UHAZz>RüW,AԈ ~Kn|R1D BPu8̳lAD ؕ#) ܃{@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ7=X@v}$$YTI&]U:lBp@}>ThxOAP $!^C=TA@ݏDXcJ:ßO?1@Ab,A)-BmDLKU#=0>)rUAP׾>}-,@#t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@& "*3޺ "{0Իo_)&NBALx Q l$"w&JwDbF['l u:+>>xqǑ'Wysϡ;p@+\yp{@:?3U |i}WYnaYf"+!FI xJTQe `V:z櫱{$yj1Ja xBI'D1SJ  @ށ@lGN\o!_MªgeJ n1!%@oVPiơ*q7+i5F ´ddǑGч0 y'/Թm=4"G^! 6;bgG,_}Z~P" 0dRr @@=PSR=j%PJh`s?. xG=*@*@(q aHHcv$Hz}b۲&IL1S 1 J=/!:!! xB9Αu$"`=E7`r38`]GDDP)I.@"oA dD"呕@*H}*x"H,TtPa GB c c  hBB7CƷ ~r*Z9@+OyΓ=O%Tj4AP. upMHgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:o5O[9zYgVCx_X\Q /"8N'Gw&d ba5exjtM#C4M=."7 H>d%DK, DHj\Gء_B0$tzpzYQBҵL`؀8H6&GVWW`T:  Õ`zqy0c}>!TtiZzUGbav5"` \ h c!"0=aYyG2Q4ApRd!9CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆD"Qah!"Q0 = 7} u-SV3{@ @Oa} 6apBQM` 2@vMVtr"iF2 TBJ k݋@B(sAA($ڍ@+ U|# @C,x$x, LJjtа `C?bP tp3!H߷guoDY.3zlK@8|`CN*6P|L`\ 1UStUJC ^Βݐ@3. =Щ%2 E`@%RtϞW):6X@Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC "Pc=K8@g/N(I& !pD!8d"J(Y,!r"N**j!VAp즱bMND*gM6Kb!Y:AxB#$AiAg0#>@xɰ "`hPXa & /߀0 H!Xa{< 8 !]!P!ڧ_#*7R I" |b 6(dA++T( a@&L &{A @P~ޤ1"bk gFL *@aj6 G#!}Rh)pamN/¹uA` ]*jBdY> B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'x"ƯMejGH D`Rd: -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8(H Y(ޡ-F%( #8> R!H@6@+\s88$`KH2T0@" n6` # ಩>B$&CP`&v|2!'B4"2 }'U46/QX8 $("7)^ |ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#Ԁ3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-Ab (Nd>8Pe:9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!xh0!pj!PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!r)6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫܗOi7Xgܓ@2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*AP5F􃏚>wYʑW;Џ=N=x ×k7\ 鿗IXjA@B%",Wlg!FI>@ܨ:[:`\83{6_QO_BDb@(8{#>R ~o?_-e;HW0DM; ؜-_Sތ7G.Wn?:!g砇.褗n{~;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGHd0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>1)GIUwD baŽza%XB7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ I@{l@pd>Cc%%䅃Lg@M% b(9ẋ>ς Hh`؂*ұFt\aG ҃ t`GJT-A@5Ct%@R:QĢpV! 0G㮂 5gv)^ zHuwS0KCôbƮ'ODH ȉox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ8 %P*k$" :djmr2(|Qvs@ Nܣ Ňd9DAJYN.0|XF 8 @YD #pLsUO3Ka!%K oPK$22Y\q0 k4/{|X*PlB8 duh,G'P.w8rAR Ǜ b-*-c,ad[]20 LA3G$''Q24G|HԹq @fABŰg TT ҉oP1) :tblh T/dwbńϯQ j4\XG<AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fr@CY ,\Y(Yz , ߨA+:M :d~0cJ7y*M}7oHΑ9!cA`H:1қg>Y^x+EKUR(ȣ;qAHt&U=S{aE/|6:r e!Z:BF1 `G-<zfʋ4)P(?H2< zb}L hjZ[ai v aDz7X&Yd. A%pGvq %8 pw?"# $Pg\E?ݔ@AV212W*e! sbK"2"X">(rS}g2"SR`xzXOJ )tb1G r i,@tb2Ac ON(LRpC NhAX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7с!DS@j+R+AvDE0vj``-b- H\!Et*>%`E*%υ= `& `T"l.72 BBuPTwLe8**@+e%p 9}2%p] yK0/r/b,p`dÃ06c5h0 ؎>|cm $*%`'2=^E@ H22v5D@8o:v#t#+.E0@ 9F`29PDΡ=48& 3!Ls2F -1s5(0#MWXEYܐV 6m6AeDivӇ_X#GP8 9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;pI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O0=؊TK PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گ(0 fiLSGj֌A@Up%VjKsjh yv(ń @P eTe]qMGd0qE6"ȫN*{%wr0SRvE;T+FS{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾BcO /~Dx:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2. +\}Ԡ0yp,iПfP 0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"KpqVt%m" p-*°s ʧa*̢vl8yM'H'1 Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-o;hT O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowHa~z&w]{s΂ }(;| ^EUa{0$ ;(ej%H݅""ܓ0; P_:]巹ה d5Dv2'Po t܋˜z [KsѥO^uٵows0ûzK𽻧aE ~KT։vJG~g `b!|P3J}*Po G0~J!9JǸz'{6%AS({H@ K![—oZHz"k!nN*xG>HodaZ|Q!NXа{ BtQH#tRJ+RL3tMF}j.Q8TUS*YŬJ.zatz{'*@\YH  {':Xu0! Ma{8!%1g6^ 1wܫ}Fʁ.̳R`1_~Lz9SO"[؛7! 8 R~ѧz`z `e2fsyg{gj1`h@J{b`jzkkƔ  6dKƘҶn{oo* W.kgq#|r+r%pIő3r$7A^E|@)t@wd)MyJT!40!Z:р `3vR$@?_Z `Au(1;&CpD0A*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|HjTFb qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^сiQ0x@>0`LA@@&0 \,g2Rt[QH1|@l C3(i:ῥc62HG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6P{ kVd!91ekيfցXt t*B&VbE9K?D؄m\B.x4`GX9'#) $b[~8At; "Ti@5$yሜG G3:Qzm&[(Or|匜e$0F0氎 ` Ubare2v=U @rKzLЋft\C ,E4wfhґ9J݀E= lò Gd2 UB H) Aj<臜}ld'%#Fs`d/Bp~"+CdֳRRpESVCX@\(Iq~^#H"Dbwt7<9 x-EHSKX ]T&ހ 02`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>H, }Cz3EFv*P&[ D`Aͻ/=uE:0"YW#W*3 ˈ.A#Y ˇؠr? " @ #Q!؉kq5 J6K: UA ;7/ |pUzkM c` (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 D9*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5mG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kiʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-eZ@xC|~@YTfXE^n9 (ƱStd H}X|#}pup|`v .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{HMT#Ai 5leDof=w#oˇd@)7[ .(rq|#B!Y"x^|8D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4<dz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@=KiؽwXݽu⣒a6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzxt`œ '"uB|(A"c͝?L|%4!Ȳ{m| Wz((v=q `oqOԁ[ L_؞/S?Y`]'Дc3AA}G:|t> ;#># :%>)"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>#AAOp UvY>4@:(>mp ぐР&tE5GhCB Y*Wmc %Q, A3YnKdW`d@qΫ4:"$=f,J;-Z{-jm9;C;:T$TL؀7RwX.[:K ]&t=PO 1A):PlJ:S+: j>4pOTq'r/79qcN{"NKLD*L0̥9Bӝ@=!4 },)j}©3@:Dy^wJC ^)@@~^i7:80#贁LzT=)zPXAHp(MuptKӇhr\goB@ᝤnA#|i?٠"āf?(< Eoc"BnCB=V(} a| (E$쐂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(CU`'RLpz)GEpы`cS8 2 XB=uCO1v5^[J l?k`n;zCJ # 2:~1$6yN.#H} #Z,5ɂ%/-Eb\c,H0eɂh@3)PB|@TM:Q+[ċHg+tQ XB+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0'츧>drqb\i>1,!9PJ8DN/hON;L宾ax@ns9 ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7D CCU zLh@:@z,C胹mXC̮ԝ|:!Wd,L ^ /| m,;tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]kՃ,tL`‰dBH]lDDBNL H OB|CI*CZv(U'* Wxɑih>XG!D>|CYeP5fWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮD El;,A$ChEm}Ga@1KN;Tܱ&<Ԗ,D:D9cG^^=l#]P.j!<*С^}aH@@E 9*0kz=NL!@C?bD*i°@lNLlR mD|lĊ,WC = >}KIN,ҰzB)ӡE==ElrjJYUB+~ld$sAmY @+8]@),Bס" رÕJA&..6 %hN脐`<VzH'Dd@܃;[BL@AnIOaO0^M MB\PPan.FCB.εc0DĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/垣R>H DWH2p|zcxHCmPȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅@-\.#,A&'2((* ;tr g7QD)B#h&H>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VH&|z&׹V+/:2rhGoF$+$K @'8g@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG, <>P1m$ EP4Y^> h8Ŭ;#,>l ̸V%hew?w'V ENDXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAA/l"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/SC>!˃&jAoT7CAzZ4K'^dYA;J<1ԃ\ 1˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPDu'\h;`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝ,@,4MӨ@H)H D|zܻ/؉(P݈{؅(]>F# !E@| Ա3X̋;y ]Ov qob@\D^剎;<p(S:*Ӂц p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W" W RpA6mK o; {ם+QC*|[u+Cu⊟DqT{Rz6`v,| H|lA %((';4Y$3:o9@?J"d2'iKvA}jhσЋ>/'"0Ĕ3 ~%),;" &BQ9 0+ʋt|J&J8 }.NJ~(Mr=t]v}xW)wvRI0Mz>xg xa`<ha4(O!p ̠ө W]5|ީħ'Jzק20Ftx  " oxwؘu( / N(PpvFj:`CVèf'G OnjAO6+, [tPH@ iǭu|9'ph{9믌&0|>0% hC|G8xFu8A{}Em hH)L:; _z֩q\1yq|~]c( Qߪm9+S>!0UA ^9A~!!ah_;AGFDH \$&xa,w<@mBxj`GDLg䘏0N C2YQ)E鈀qzF8HH#>Q"~l@?XFu,~y#'aTeq́`Y>b\t 7@`E=`)I5" ҅Sz[9K ,<zrH;/€cp7-dH aP<aA EG`%QD"7F5<(BeQM68_~WET,c EdXKhE(o`6@>bF*"ff v#2@R0:##o;"#H` {LO@ͬb !B*BR" !A TN@&#f/b³)*xbTZI^cj+ bX'*MJƮS:SRphΆ!CJ"$Rma.ꡙ( $X?@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~$` 7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 08IP* kaƠIZe'+L-$r=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$ !ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ejz ĸ6qdBT'2@"b@)QF FA3C#B2({DE/0@"` *Rhb3K3%BZeb e؊4A arB sTjރHcG"`? ;F# i6;AƠZAHIn>A q.^.N'lzG AK$Nc:'!D,!s//f$!dS/D"`*e=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`A@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@e `2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  Bd `k3 `k"`#F)xhz6@Ge$J -%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF  "◒+ْ3.tNFp$EZ-!"A0h٠zx$"6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6: :0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?B #^r`'@F@*: @V 6CF*`c()gf"HSX]R@x`c(/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F|` @"y@"r}'v}CBnDHbn@TSԁL%0 "Ё b1`=` TJaB?~Bܰ|փ0BQ^AZc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+p%Y.B #7t[N@=vE8HLG84!%ߥ3*ݻrv7n\YԐ5T)ӕNWjV 5X-A|Q4HESs= *X)d،6t=nQ>~a|v2OުDžO4X Rpm=!{o}P„5jehmp م ` e_na~b"Hb&b*b.c2Hc6XYnp\4BE  ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1܃A3@B^@>EA>SթXcBs8h s7 mMɪdq}Nꆓ2BPYt8@X$Bʠdi_j:"D E!IВj8$:I)#aM`>#E 8&0S en> NȮš,!>|;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y$=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) :d:D7A0/h;N5W;j%ɔ!:t>3BDh~}ЦkUtHkΏa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|@ €z\ A*~̯ˇT #$nw:ʹ@0 B!Z݈0Qn {HHIO@D ,2Dp3_a6DJ@NB3}0!XWB@)-5 Ȓ8>8cq&80 V''v]mzWXV$(cs40D|# ^uM/=Hh v@=q` 7 ps,9ωt~Oq!P\бdh!39*3%飞>ws%z{#!Y=QȖs򨬄pA~oStw,S|[9ާ`$1$p@S̈́` aB%&no9#µ `} ?(qPJ(<M&A1 aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"@P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vZ" aqnIPt IOV<9=@ tsY? IR@KcF14&#p<4X)@V`71X# ED)OIm7!9@ 1<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig5 qqwj,>3(5P `%&֑mo q*s=fS@[|Z@.v!0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2@jqqzOR% ߐoч^h7(j@0@ : `ͪ۷ $'PAH}ͅP `gB0xRي"7W`zC($#:x p @%"@c P S) aUsך S!#D&@ҩwS鲧e ߀Rb芭 ؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vsɾ5ɒ,{7B `{9 38^|V2QK@Jeʃ7H@"iOYjp j 2ܶȻ!0x,N0P" 2ġ'=_C'x& s hvBgvG!= kyT!59@JmM)Beۚcc=Mm׍G`pce4IT%]$CI@{o5`f1K#Z]Ey,#Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^3K0mk773/Oı$_7R+{n0 C -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5}80h O]ZY1?5  2e[ F=3}=?]ȁ@5GVz#.< i%oB/> Bwʇ}z$Cg6x:d!2"C#DOD1EWdE_1FgFo1GwG2H!$YЬ@h$>Y1D 0c`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`uqx+Y N(YJ=u;U l @0RЧK; 3dQc z3F2ޱ ]R aPdDZG-7Dd&>8`G (S@'j7e:Ǝb ~FeCA{,c@My g*@u*@tU1цjU M\D >]؁xІȚt!6b1u!HoGe(ww{#0 <{q-W:Rv24._a'XZ T@Mޑ4a@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"QZX !&@2,P (C=xW a=%O\/ R$#y&A0 \@.x0&/P __O=@cl/? ҃u88jd X_‡c<@PZIf#8k$@h2+e"hٜW"be,+p2 A=zJvֳmhE;ZҖִvF1*#x%`p b $6qκFVo@0Q YWP).u c(TxMɛ vxFkTdt4{9XZh-P א ~ X;~Hpnk`- c@u1?HFϤ  CIu(`0o"k"FPtXh wȥ|DJI؀>:X!4 zpYh( ƍH5@> +ۣ(epOWl~ `}֒ .}8C n "s99b@U`{P-npdTPA3wxE @|Ӈ,)Έ< ƀF Ȁk~ ۓ  \3` }x iԼ'\>@ `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇1u`NN{6IZz BS)6{K=Xd x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!`{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH thHz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@F(0ԄmmmRpIkip>ߖpySnDt)7SGcHYam66B=#G$/yۺv\b huX|7+,r|9n(@Zn$q ́d2Qq-u`Btx2JQ x F# Z]XdYMKa: pt1 `2Ϝ2vH*Q' ,JPt@N(ljt0|)-P%tI K/0t5pn3T@Tvf vivk P@oJ}h{{0r}׀,6~ /GL'p{"`P@z]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'cܳ ߻{=R,d'E !ɚE uҁB䃜WC>Pa@t^2D3 o>Ev4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM96p H0 exFF`} wшgo {œW@{􍠝jN=Ys!qs?O>cY> DOPL=vOSs} Q`;3=cj%S@#@4;:Q; 3[F@:oF24B8{I  2<0@ ,2:=~DAf lL!I?)TNZgƤD\=|;"̔@fSD [ T;4$0;2d,!>|}IpCUPOZ+`HbԳ7^>Nw= wT=MG@"n.SyHzn}["y. 0j |=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% :@^:l5rFX5^G};sN̝k67h>0va=}hDUSKSn9:o[;T>*%f@:3 @= (-exO:RSɎ#:fzk7 @=b dAUO?@LiߐU ߳H Hoe;޽ɖVI|ǀ[vך+1+0ANe @^>|wܽ.2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U1'M!=@Pz8$zW.J:*t`0@"ݼC": CO,v I LGeѣO<P>ҡD,7H>"‘FL=<9=½@2Ȕ,đ/`80HjЏUPS9i@tL8KGTGєx5.F}c2)3(V$>DYϐ!0@x +'ZDIʤM%XyOB)\$ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Rɢ A=yς6-iKkӢ=:hQ,#|H$e:QB _79F`@?Ґ*5&5(1>{c&YI`b:XzóefM1HjRZ>  O|b:H7<;_c<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏt@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aUQMDyL42,CǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJaocSimʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX`8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*0&3`Dl؁$>%7HreGhQ >ï@ԱkSv5)eDp L,HS*Dk[\\ բ=Koӣ>=Kd4+ZIbQFc 6XTko< @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ODYWNCP@$JH$4(!RO`"4'H`\HPh] \Jb+>!H|@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;D,=>EpC(Ns0  D'EC-v̈́:v8]:L;T@> K?L^ "QäԕCC?XU@Y N8D@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_@P&aaCb.wCT ;  RapCE,Ft=[gC:EZ-;8=PBWH'|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CMO x$v-Nŋ>C"D,qhi kԼa pA]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F0>Ԃ`È^>@c7xSDLIAtG@@fT@ 7L`\Mh@A HԔk]N $2@KYҫ~`F]/Ԃ/LgaHH|Ef($j*Dj Ujl\X ܃' Lfe]ZxyɇPȂ>T@/G?ȅ(  &NATI$8Yt,ST$c ~7Tik0F*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*( 䀝!͍j, ioboo$Fd(F-,.C$p po52oqpt.'\+FKcpksp{pp  p p ?X0 pp q#q+qi ;CqKSqC[qksq{/qqqqq1qr r!r"+"3r#;!#K$Sr%[%#G$c&sr'{'_&(r))(*r++*,r--,.r//.0s110#23s3;3'2C4Ss5[5τ4c6ss7{-k78s9Wr8s::s;s<>s??t@ @tAA#tB+B3tC;CCtDKDStE[EctFkFstG{GtHHtIItJJtKKtLLtMMtNNtOOuP PuQQ#uR+R3uS;SCuTKTSuU[UcuVkVsuW{WuXXuYYuZZu[[u\\u]]u^^u__v` `vaa#vb+b3vc;cCvdKdSve[ecvfkfsvg{gvhhviivjjvkkvllvmmvnnvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c! ,fBBD^^\jjlnnl..,&&$VVT 224JJLZZ\::<**,zz|bbd""$>>@ $(8蒄̜<08b\`BH@Įprlttp||x|v46@`bdp `4<<Դ86(Nfnp.(8X@Xx0.l0.zfhFJ@x\@<<4 ʔh\`pfp<6УKNHJDv3|{Wi˟=:|ϑ2/z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?דּDF)TV Y3:3(Sp Ih&QlIGqvdP;lЏ(`堄jj_wP@Ip#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:2&Hx@FAHn[Sdq%$-ښACQ:`,Pp;DϑhBx= POK~[:tPHZa}pϲ,@s@ԃ4:H:Î,20PX(6k;=ALbG C@B)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:דB/j " K!OSv=9};'B3\"7Xl{ܸ::w%  X>#=o ֱ |%"~Lڂ#!@( $ ϐ8|C77 +1AzP  {$uhG2ӱD (@CH0USȗz`G3B BPa=q#=q t $ @"J#>H1IHA?B SrI!݃>*`Y%@Zzs!|pȁ'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1px:&]jV$`A" H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;YU1V:u LmS&FD`MG=2Mj3s+nd"tD IE nr#!@? 8~jb)€waG*߭ؑk\nV2Q`-H[yPDLZ*uYr0s Vk>umJ\#"ykMϊe2=cA?CXlA'8"x3 ]gLoX@% H,0>E ':܂0`;dE8"0rYtY'uh 1Oey\+w\Y P,r*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lKG)lLbiOl2-sER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD_;WpBz4j{dQpt d?KD;PT."pd<6Hb_}u\>e="&ث :`qh@;Ԟc옍8&zk-uXR@k) H>ĨBC).wD=6-(7P O|  2t ! )HЏ{jC40!Hy [z@ ie+ x!܇  ~@TT'EV=)= P "P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R`rP+v02> h_P=@Ѐh b}~hQK\G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ) !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsLLW` ym@pNI`j왡HIuK$y'P27v)Wa mrwe\2*_*r_ș:DZIG̢sR>.gm!-*.` r`0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 40wQ0O1 dZJF"3@h0/D?#u\"gJeP#0:蚮:,zT Yq$"AV*)PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R@a-{ 2;4fc.gZЅ) "%"]b*U$]ǭQp@.H5Zq=K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$6@Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mL c cP 5a P@Sq'K>ܛP$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛Y;z{.#r {W s$T $zY'|bUCڵ*T%"T{ .y :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ē;NA2 @Xս ½Uf܋d_T=1ޑ*S9=4OTH<~ *`R;(卄Zڨ,{OcFx׆zk/R2{'w'YY1.*AJ*>ˇK0sL24L4TsM6tM8Cgt)ex`&PI֩ p(b`H*F{:H{`z*w[,Y4]&g - `v" ?p"ԛi&N=bz/ dq@Dl/ @2Oz%0!Jŀ0kŬU]>Pi݋t"h\hwa6 `b3xc;cCydA@~*  ¡|bJD<|${ p@J(u2ǀTjwؙv b6T  *(L;# Yt(LU2d{|7|y 4ȏodQ ~ ҩV|Cs$%47!j AQ 5nc2Bu@ uPA $@V$Izv x8=GyBD?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nҏq6b1a@ZԤP !uzaء_LoB߭c Ckʁ/BFXu#bJ,/L f#\*p;vAlu,dqSr(G&X=|`1yͷswP-YH/_xcN!3uIUn?h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ8v 0Ä(:\" 9gxH3%;FIDS 3 @ û ɵ0 ~{pي{Вw'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s);' ud( zHq$ xGQYZ,[̇\\ gӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ18BS5` 1A@ Y21 5:0J$.+ax+o`˫x@ Dj, ܡoMP`LQi{ |KXLtZP FL!R0t e L܉Ph@< *;o0q 1ą6ͅ  * K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 6Ә?P#ly*ڄ-*]2L%k B8{R"#Z'hStX!XY1-3#e$%RHu«с1@$ S`xYH$*e4D< 1]L }ӒXtզ(֭V NdVi$N#䜈(݊9HzԁI#tx( [5  h2IѷI4x xy{|h$ 9<= bP*{u+C5LA [m5%"0h@LQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx?a]=cb'ч~(05sneWY=.(D!ntPO ćI @#IXj< ERdλw|Y6\{N!wJYI{h ʠ!eR!&M )hɁ4SpB9mRF"!""# z14S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$9 M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u X]2 Obc$H6av]v᲋⬉L^#_n3 9W 1vw tjwvIݘ3w).x? }(1kc th呂0Ӱ¿,H GH1`efՅPHg3]y?Q ]7 F%0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4EoP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀1Sq{{V^ifN|Ҙ$W﷍{'|hS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=vC{bsg> ~"\%ihPĻbY>r!ٸ[t37b@>FSh|KAFEbrO;޼O5\+bXi-Bʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=4UP+vP<<.тIƒ PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3B(A=0`CC 7 N#A=|$$ԳT`R|=N=E68D#@Fl![@:+[J=b?KCE{O?@pH0T{n.NF;3ê) >( d`fwN+3A+-b~sA s= D~4޳AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=cNdQO9[a> m dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX p2~>ʀe#A@GwD %'1`"jh, !72 >~zpQ#gd5$ @2( n+aY" . |~;I @?"xi ^zlP 3x ^A&|dr$-2z;fG<:h@y|qc(Hzh (<5t AZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠%Tu ֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,awf8z & >e>LH/` ^M ^Aɥr@xh Cxr$LTzifRV^ pT)p` 0A\" c H,a%FDQ}L$G1ƺ}B+LdT)P1݋kr d0D) O9-s;wpd7 y|n$`|qH1,A 9Oo׃>r|IoXc M[AaȘ֑k{>BM\M0Q{ƛ*ppq7-. `/k6H[QM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:P`<[H=|2[m; !l#ʃi:Y?xd ߐA$G`03s7NB ![E#GFUG!LS:h)H {ԦdCz%[ BYЃ>vu݇G'V&2|CK&@|<$GP7?^A  Ra`\BD-5FCUD39A, ;ަOE Oў/I?{ ;AY_A _!`%Y(MJCSL;5C8`V> ECZ}0r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b> -+nBXJahA4m @4B_v8 zLA A;XXPġ+bD ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4DЊ7@g%H >$2MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"lxIeZR\CF47̋IDBB8SEXiBP!\HdI>J:\7& Gh$S dHŸAH afY-DzGD@ACɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D'|CT&eAH'g#yzZ,D?XrC$()FD: f(; W4gACGK*߅DٽmIiA|niE<&D e,GOAK;<-Yi&_BܟA4@E(ߎD aY>p #6Dt]ϢFA7NA4\*)%ȂXi~Z)M`E4})5g݃=< 2m#FhE4a~ V'(>4C'`T=#n&>?ܫ:,(Ljr?:ë^Z7i>؃>8@C'@<ĞP(~GRjޫ:_ԃV G-l?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 RpAD?=@ r.Gx@*[泪زJ^ GjA,YnBHH.vw2tB-eFÍ$_: =›(/bhrE .xpZҮ&DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-,0"x!0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtVE99;DCAW"C=Xѣ24S# RL03L=DE?\3F78@-|>2 XÌ~Z'C2X%AIrdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,e-AXC-ZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`.C0lz@ܱpz 91'Dg {B 7W?#`[|-ĦyBp @:l,C%́L#8;;,,,C̕@Kxo=Z?p;7JDG183#F3z/A 0kD7`hN@Ľ{B3xa| JKH; vC{һ&{,C{2/H_s$H |X`>u+Ƀ/I3N0Bc0½ 3 nuS6atޫ.:ӊzLz0,⃃+eμǎ_Z^' "A (rZ'Ua`ûGu P҄(U,#T9}KR%odGGxCwdVYG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwìn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /CTu8> yg YJ`XLҡd]6XgehjlݖnpY ?!S(P. L5SM$!Qtǂ`F0Iu{5~%-MU-[d65uG`1hHeQf2euޙ}蠅#5w-(/##`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.=IIӀaw4jZԗOST hvԣIRBAi XH-SPqȁQQkep`?LpK D#HO- <7#!IT '.}IB;@땊s8Ō !1PQSe={0ZI , 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL<!ěGfbv+"&ӎ8"UG`٪*c $G@ @K{ *H)6d zX+ 0O402P*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙAx` Hw(ڕnk|=ie/n t5:j!Kg {t *Ё n#\ miq9rfRW-u=˜"@l +I_@G^5XAzD̡_\faуCeP=ƫ(ࣅH auzVBI;4|p g=6Bd%PP vLF|X0ЋAN|`"ЏFjh,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʐZBHĽװ؇LG]|`# 7B5D`ȁLt׏&xTc-=1m:!"1`%}>C 7 C $E}C [CR0^w-I$SH`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…(:kO$NFD pG:m"(#6 H(K  lijdZƏL&I! !L P 0fk(- D"RA::n86nC @ ‚ ƻB k !*A6`ց 4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ ƠLD qqȐBN-gj$ X|_b[F Q[k a-!<tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzhAn%l# * @-N$~%bMba c&%!J*N d ϖ!;!)JP瘔b  "((H<J XL. @1V-bdaS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* R`BxʬZh%2j!##LH@%&I1K4Ũr`A1> : s-c;#AҒF,00@OH>L"0p!@emKkvI@ ԁI! " ҬmIb !b⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʨ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨHQuU\"(V:bB\jFﵤoJ+@ VII3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^D*I.F `Al"8Uh!ފ0r_1STC } |6&Dx9B)D`>R>B|L!Rp`B5lIR,5xcI/R7Yߡk@:Do7W5 A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@" D{S[ 6L&Z0 "XvTh a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@a *m5A jt)"j ĕq)Qkp*B " x9nVZMDJ! DZL6 g eˀ" g]:2 H̗Zjʬ"R=d!** cxWjH//0#T!D@^)$@1RC{l#KjA :> cC3,6DB TXC.P*LBY hL$?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!$`!@*|⧇VY[ٟB:|aDY%!hMdAJ`F?zޡd0RGLUQ \N#맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->!` \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!$e2` 7n D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevةiH&7(-Gͺu2>G` `ʽ{ؽK<| .½{ :Fj|c{8”9I|3w4Bwߟw4hY(2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^w"!]&dÐ޻9s|Uݽ@|CD! Ll&+|޽*AF#\×vܕ6U3>G>,Q8=L8gv'v7cg|F=C>tp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(d̵\Jhh.h> iNJi!DRa0@= d$=$uO \7p5P;' _ #@GXΞ}\>X:C2jk_ȲFtՓV;jU[0ɏ/ k>[=׻줻n=v|a@ߨH'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճM*)hqF< 7l3_`Ƒqe:SFVSXYWBFqs-A?a:CX_c}߶c+>!?o>d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF'RZ0@m=ԀLl|Q0># jDTq$+K7 &h, r,XԵ5# Q(V-7=D HaGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]a$L3AҬڂ iYXRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY::6wYF1t3^)yK*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE9Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! P3NXaZj;.H".9P-/c54'eg*Aβ !Cd RF $DCyrFpoپ]xGc GaZo~Fe0A1Bd@G0K_Z Sd-i*~Bf$L Bzs 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`1* 1,4[@ *՘4E9$):~^S"*эkG%Zw,zh S;~%[(n>5η2*X"EtȂ|I!޲u T-{7»9Ki}Kv+N@f%S^G`bk/Ǽ@`td@9 (F! P`_ٵ2, 6Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[Mg&=,(}6➔$*A~0Hw`( 5I0Cw.Hmz;+d|Чu8w  q|y6݄3PrɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet?̴M ;+E {RsBGz6(w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz`.u9@@oӊSY Dh8+! ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG 1$P;nww.:43Zj;" GPxQĬzKذo! " 1LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T64aG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19uc( ?6%5H +@4&%A Jҕx/Yh>$$y3PoD7&ᨁC!Ux  wȸ@ &*؜,9 Dp,Q)3R*'Y-ɥ.aYd৐NnB':jQ;tI"Z M:O M4UU@ X,7ATI QAmbLg7 TFr岘41]  FId~H$|G?+zP{@JGFmUe:JaT2Pn |`=պI76З(r7'q) ðՇb[_t 2􁏒` `H0.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ()5>jH -r/yK:k,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4Y.'qQI`s#?8xQߙvG|I5"Jx- .o e+}E?z@#ֻJ1c0}NBPC@'1.G;`5d>luVDj\+оȽ}ُ:ϺUèo85Pnޓw,)I H#Iȣ-IHd XJٰ 4 6y  hGx>w耤x{ Gtr* ep@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jjt˷˸GZ؂w &% ~~ ) Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w8P+lq vYfhQ?<1tH$ί_tN 9ė|H(%;}x HY>x (\ РQ j#}N Ia9F@xe(f 9L o4"5#ERl%P?܀Ȟɀx% YR$Cu`!v'(J$|$DH5Egxp';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.9-Y#;1Jaf\zvKzT:FL ǼUhM(R;H ևv^N{0!9e~Ȁz ,՚IiPikeȁ  &7{xO@|}`E(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYN() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V9( <1 1m}h.<9KkǐG Hzoˇ8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q}HTWu/:$=  p t_Vi,ʣFw$f 8y>IgW|Xy7C \y˾D`ޅ1'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF XPӯdN+9Q9˸O[hN/wXÀp'y/_fġڳ!)9NHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - c&Bds(ѢF"Mt)ӦNB*u*ժVbͪu+׮oɆw]𺰁 ёNV꽙yo]KnKwݼj޻ݜ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwAmSzC'1Tc5áWI1Qwų~A_j~-NdUe CFA8uVMP9s,]2r#X'+آqφ)N?d0A܎ޏx`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=H`OK$Vԁ;;v [:HCb7Bq^ݓIBK&%#mj*S7PX'D~T0@#p-jctcP7Qkcf3pC<A"X,QFF>:6y3jެAt ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p {# 0F׵|;ꑵJuz=A ܃CS_ק:P>;ϥts*>3;cS=0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xl@Az%K6#j&af1w<)>o ,x PYF$)A\Ec ֱ;"Џ|$G> !fc,#8@*n QC#fwڡA+nēLdIG{(|KYL_` q #\&< J ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 c!H&sv ;8 @=E HgVH Q@H蔭XU}@i Y:= M%z!XB $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>8wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS2H1 @_t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq@-}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53_Tf1 z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}?`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u $^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?0C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7D zĉu\@=QAl<\>d!:@SU ]^ɥDHE;Ba|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp?@ p^s\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IAuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA=$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ!0Lndlc (u,x::IP3LlFZDօ<: =e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH„4:*ę/ }_z2ltI*,4q"DvW՛.") $cB c'RDD0*MԃQ0bɆTUi\J=u\IJ~W!$QD܃yV2+CDjშRk!%æ4$ C?),NT>ŪCH@DXRaY}; B?jĽTH$yROkCC-=liBvƙ`J=Sce^A ``)֖_ P C#zn ibLBܔH@ܭX;<, @0Hح4,E:DC-톕,ےVfd']=|G@0;x؂A$H]4: g͆-,ڎb@*ǩt-m-D@:A@ n`.;nҮ`u&f$1,>^J:l@Z"4uH:T=A)dfK$@ 4lO)T0'IE):% p 0@7zD>EAH@I>î @>R2D0@?/EHK_dHI0^>m` ?h@*D@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`'æA(CorU7L:ۣl@++F5'F4s)%lC" DT1*3pBp;pJуqb@ 3I 4=S0?UHAZz>RüW,AԈ ~Kn|R1D BPu8̳lAD ؕ#) ܃{@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ7=X@v}$$YTI&]U:lBp@}>ThxOAP $!^C=TA@ݏDXcJ:ßO?1@Ab,A)-BmDLKU#=0>)rUAP׾>}-,@#t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@& "*3޺ "{0Իo_)&NBALx Q l$"w&JwDbF['l u:+>>xqǑ'Wysϡ;p@+\yp{@:?3U |i}WYnaYf"+!FI xJTQe `V:z櫱{$yj1Ja xBI'D1SJ  @ށ@lGN\o!_MªgeJ n1!%@oVPiơ*q7+i5F ´ddǑGч0 y'/Թm=4"G^! 6;bgG,_}Z~P" 0dRr @@=PSR=j%PJh`s?. xG=*@*@(q aHHcv$Hz}b۲&IL1S 1 J=/!:!! xB9Αu$"`=E7`r38`]GDDP)I.@"oA dD"呕@*H}*x"H,TtPa GB c c  hBB7CƷ ~r*Z9@+OyΓ=O%Tj4AP. upMHgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:o5O[9zYgVCx_X\Q /"8N'Gw&d ba5exjtM#C4M=."7 H>d%DK, DHj\Gء_B0$tzpzYQBҵL`؀8H6&GVWW`T:  Õ`zqy0c}>!TtiZzUGbav5"` \ h c!"0=aYyG2Q4ApRd!9CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆD"Qah!"Q0 = 7} u-SV3{@ @Oa} 6apBQM` 2@vMVtr"iF2 TBJ k݋@B(sAA($ڍ@+ U|# @C,x$x, LJjtа `C?bP tp3!H߷guoDY.3zlK@8|`CN*6P|L`\ 1UStUJC ^Βݐ@3. =Щ%2 E`@%RtϞW):6X@Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC "Pc=K8@g/N(I& !pD!8d"J(Y,!r"N**j!VAp즱bMND*gM6Kb!Y:AxB#$AiAg0#>@xɰ "`hPXa & /߀0 H!Xa{< 8 !]!P!ڧ_#*7R I" |b 6(dA++T( a@&L &{A @P~ޤ1"bk gFL *@aj6 G#!}Rh)pamN/¹uA` ]*jBdY> B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'x"ƯMejGH D`Rd: -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8(H Y(ޡ-F%( #8> R!H@6@+\s88$`KH2T0@" n6` # ಩>B$&CP`&v|2!'B4"2 }'U46/QX8 $("7)^ |ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#Ԁ3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-Ab (Nd>8Pe:9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!xh0!pj!PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!r)6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫܗOi7Xgܓ@2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*AP5F􃏚>wYʑW;Џ=N=x ×k7\ 鿗IXjA@B%",Wlg!FI>@ܨ:[:`\83{6_QO_BDb@(8{#>R ~o?_-e;HW0DM; ؜-_Sތ7G.Wn?:!g砇.褗n{~;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGHd0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>1)GIUwD baŽza%XB7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ I@{l@pd>Cc%%䅃Lg@M% b(9ẋ>ς Hh`؂*ұFt\aG ҃ t`GJT-A@5Ct%@R:QĢpV! 0G㮂 5gv)^ zHuwS0KCôbƮ'ODH ȉox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ8 %P*k$" :djmr2(|Qvs@ Nܣ Ňd9DAJYN.0|XF 8 @YD #pLsUO3Ka!%K oPK$22Y\q0 k4/{|X*PlB8 duh,G'P.w8rAR Ǜ b-*-c,ad[]20 LA3G$''Q24G|HԹq @fABŰg TT ҉oP1) :tblh T/dwbńϯQ j4\XG<AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fr@CY ,\Y(Yz , ߨA+:M :d~0cJ7y*M}7oHΑ9!cA`H:1қg>Y^x+EKUR(ȣ;qAHt&U=S{aE/|6:r e!Z:BF1 `G-<zfʋ4)P(?H2< zb}L hjZ[ai v aDz7X&Yd. A%pGvq %8 pw?"# $Pg\E?ݔ@AV212W*e! sbK"2"X">(rS}g2"SR`xzXOJ )tb1G r i,@tb2Ac ON(LRpC NhAX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7с!DS@j+R+AvDE0vj``-b- H\!Et*>%`E*%υ= `& `T"l.72 BBuPTwLe8**@+e%p 9}2%p] yK0/r/b,p`dÃ06c5h0 ؎>|cm $*%`'2=^E@ H22v5D@8o:v#t#+.E0@ 9F`29PDΡ=48& 3!Ls2F -1s5(0#MWXEYܐV 6m6AeDivӇ_X#GP8 9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;pI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O0=؊TK PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گ(0 fiLSGj֌A@Up%VjKsjh yv(ń @P eTe]qMGd0qE6"ȫN*{%wr0SRvE;T+FS{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾BcO /~Dx:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2. +\}Ԡ0yp,iПfP 0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"KpqVt%m" p-*°s ʧa*̢vl8yM'H'1 Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-o;hT O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowHa~z&w]{s΂ }(;| ^EUa{0$ ;(ej%H݅""ܓ0; P_:]巹ה d5Dv2'Po t܋˜z [KsѥO^uٵows0ûzK𽻧aE ~KT։vJG~g `b!|P3J}*Po G0~J!9JǸz'{6%AS({H@ K![—oZHz"k!nN*xG>HodaZ|Q!NXа{ BtQH#tRJ+RL3tMF}j.Q8TUS*YŬJ.zatz{'*@\YH  {':Xu0! Ma{8!%1g6^ 1wܫ}Fʁ.̳R`1_~Lz9SO"[؛7! 8 R~ѧz`z `e2fsyg{gj1`h@J{b`jzkkƔ  6dKƘҶn{oo* W.kgq#|r+r%pIő3r$7A^E|@)t@wd)MyJT!40!Z:р `3vR$@?_Z `Au(1;&CpD0A*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|HjTFb qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^сiQ0x@>0`LA@@&0 \,g2Rt[QH1|@l C3(i:ῥc62HG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6P{ kVd!91ekيfցXt t*B&VbE9K?D؄m\B.x4`GX9'#) $b[~8At; "Ti@5$yሜG G3:Qzm&[(Or|匜e$0F0氎 ` Ubare2v=U @rKzLЋft\C ,E4wfhґ9J݀E= lò Gd2 UB H) Aj<臜}ld'%#Fs`d/Bp~"+CdֳRRpESVCX@\(Iq~^#H"Dbwt7<9 x-EHSKX ]T&ހ 02`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>H, }Cz3EFv*P&[ D`Aͻ/=uE:0"YW#W*3 ˈ.A#Y ˇؠr? " @ #Q!؉kq5 J6K: UA ;7/ |pUzkM c` (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 D9*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5mG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kiʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-eZ@xC|~@YTfXE^n9 (ƱStd H}X|#}pup|`v .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{HMT#Ai 5leDof=w#oˇd@)7[ .(rq|#B!Y"x^|8D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4<dz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@=KiؽwXݽu⣒a6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzxt`œ '"uB|(A"c͝?L|%4!Ȳ{m| Wz((v=q `oqOԁ[ L_؞/S?Y`]'Дc3AA}G:|t> ;#># :%>)"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>#AAOp UvY>4@:(>mp ぐР&tE5GhCB Y*Wmc %Q, A3YnKdW`d@qΫ4:"$=f,J;-Z{-jm9;C;:T$TL؀7RwX.[:K ]&t=PO 1A):PlJ:S+: j>4pOTq'r/79qcN{"NKLD*L0̥9Bӝ@=!4 },)j}©3@:Dy^wJC ^)@@~^i7:80#贁LzT=)zPXAHp(MuptKӇhr\goB@ᝤnA#|i?٠"āf?(< Eoc"BnCB=V(} a| (E$쐂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(CU`'RLpz)GEpы`cS8 2 XB=uCO1v5^[J l?k`n;zCJ # 2:~1$6yN.#H} #Z,5ɂ%/-Eb\c,H0eɂh@3)PB|@TM:Q+[ċHg+tQ XB+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0'츧>drqb\i>1,!9PJ8DN/hON;L宾ax@ns9 ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7D CCU zLh@:@z,C胹mXC̮ԝ|:!Wd,L ^ /| m,;tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]kՃ,tL`‰dBH]lDDBNL H OB|CI*CZv(U'* Wxɑih>XG!D>|CYeP5fWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮD El;,A$ChEm}Ga@1KN;Tܱ&<Ԗ,D:D9cG^^=l#]P.j!<*С^}aH@@E 9*0kz=NL!@C?bD*i°@lNLlR mD|lĊ,WC = >}KIN,ҰzB)ӡE==ElrjJYUB+~ld$sAmY @+8]@),Bס" رÕJA&..6 %hN脐`<VzH'Dd@܃;[BL@AnIOaO0^M MB\PPan.FCB.εc0DĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/垣R>H DWH2p|zcxHCmPȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅@-\.#,A&'2((* ;tr g7QD)B#h&H>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VH&|z&׹V+/:2rhGoF$+$K @'8g@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG, <>P1m$ EP4Y^> h8Ŭ;#,>l ̸V%hew?w'V ENDXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAA/l"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/SC>!˃&jAoT7CAzZ4K'^dYA;J<1ԃ\ 1˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPDu'\h;`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝ,@,4MӨ@H)H D|zܻ/؉(P݈{؅(]>F# !E@| Ա3X̋;y ]Ov qob@\D^剎;<p(S:*Ӂц p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W" W RpA6mK o; {ם+QC*|[u+Cu⊟DqT{Rz6`v,| H|lA %((';4Y$3:o9@?J"d2'iKvA}jhσЋ>/'"0Ĕ3 ~%),;" &BQ9 0+ʋt|J&J8 }.NJ~(Mr=t]v}xW)wvRI0Mz>xg xa`<ha4(O!p ̠ө W]5|ީħ'Jzק20Ftx  " oxwؘu( / N(PpvFj:`CVèf'G OnjAO6+, [tPH@ iǭu|9'ph{9믌&0|>0% hC|G8xFu8A{}Em hH)L:; _z֩q\1yq|~]c( Qߪm9+S>!0UA ^9A~!!ah_;AGFDH \$&xa,w<@mBxj`GDLg䘏0N C2YQ)E鈀qzF8HH#>Q"~l@?XFu,~y#'aTeq́`Y>b\t 7@`E=`)I5" ҅Sz[9K ,<zrH;/€cp7-dH aP<aA EG`%QD"7F5<(BeQM68_~WET,c EdXKhE(o`6@>bF*"ff v#2@R0:##o;"#H` {LO@ͬb !B*BR" !A TN@&#f/b³)*xbTZI^cj+ bX'*MJƮS:SRphΆ!CJ"$Rma.ꡙ( $X?@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~$` 7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 08IP* kaƠIZe'+L-$r=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$ !ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ejz ĸ6qdBT'2@"b@)QF FA3C#B2({DE/0@"` *Rhb3K3%BZeb e؊4A arB sTjރHcG"`? ;F# i6;AƠZAHIn>A q.^.N'lzG AK$Nc:'!D,!s//f$!dS/D"`*e=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`A@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@e `2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  Bd `k3 `k"`#F)xhz6@Ge$J -%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF  "◒+ْ3.tNFp$EZ-!"A0h٠zx$"6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6: :0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?B #^r`'@F@*: @V 6CF*`c()gf"HSX]R@x`c(/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F|` @"y@"r}'v}CBnDHbn@TSԁL%0 "Ё b1`=` TJaB?~Bܰ|փ0BQ^AZc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+p%Y.B #7t[N@=vE8HLG84!%ߥ3*ݻrv7n\YԐ5T)ӕNWjV 5X-A|Q4HESs= *X)d،6t=nQ>~a|v2OުDžO4X Rpm=!{o}P„5jehmp م ` e_na~b"Hb&b*b.c2Hc6XYnp\4BE  ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1܃A3@B^@>EA>SթXcBs8h s7 mMɪdq}Nꆓ2BPYt8@X$Bʠdi_j:"D E!IВj8$:I)#aM`>#E 8&0S en> NȮš,!>|;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y$=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) :d:D7A0/h;N5W;j%ɔ!:t>3BDh~}ЦkUtHkΏa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|@ €z\ A*~̯ˇT #$nw:ʹ@0 B!Z݈0Qn {HHIO@D ,2Dp3_a6DJ@NB3}0!XWB@)-5 Ȓ8>8cq&80 V''v]mzWXV$(cs40D|# ^uM/=Hh v@=q` 7 ps,9ωt~Oq!P\бdh!39*3%飞>ws%z{#!Y=QȖs򨬄pA~oStw,S|[9ާ`$1$p@S̈́` aB%&no9#µ `} ?(qPJ(<M&A1 aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"@P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vZ" aqnIPt IOV<9=@ tsY? IR@KcF14&#p<4X)@V`71X# ED)OIm7!9@ 1<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig5 qqwj,>3(5P `%&֑mo q*s=fS@[|Z@.v!0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2@jqqzOR% ߐoч^h7(j@0@ : `ͪ۷ $'PAH}ͅP `gB0xRي"7W`zC($#:x p @%"@c P S) aUsך S!#D&@ҩwS鲧e ߀Rb芭 ؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vsɾ5ɒ,{7B `{9 38^|V2QK@Jeʃ7H@"iOYjp j 2ܶȻ!0x,N0P" 2ġ'=_C'x& s hvBgvG!= kyT!59@JmM)Beۚcc=Mm׍G`pce4IT%]$CI@{o5`f1K#Z]Ey,#Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^3K0mk773/Oı$_7R+{n0 C -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5}80h O]ZY1?5  2e[ F=3}=?]ȁ@5GVz#.< i%oB/> Bwʇ}z$Cg6x:d!2"C#DOD1EWdE_1FgFo1GwG2H!$YЬ@h$>Y1D 0c`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`uqx+Y N(YJ=u;U l @0RЧK; 3dQc z3F2ޱ ]R aPdDZG-7Dd&>8`G (S@'j7e:Ǝb ~FeCA{,c@My g*@u*@tU1цjU M\D >]؁xІȚt!6b1u!HoGe(ww{#0 <{q-W:Rv24._a'XZ T@Mޑ4a@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"QZX !&@2,P (C=xW a=%O\/ R$#y&A0 \@.x0&/P __O=@cl/? ҃u88jd X_‡c<@PZIf#8k$@h2+e"hٜW"be,+p2 A=zJvֳmhE;ZҖִvF1*#x%`p b $6qκFVo@0Q YWP).u c(TxMɛ vxFkTdt4{9XZh-P א ~ X;~Hpnk`- c@u1?HFϤ  CIu(`0o"k"FPtXh wȥ|DJI؀>:X!4 zpYh( ƍH5@> +ۣ(epOWl~ `}֒ .}8C n "s99b@U`{P-npdTPA3wxE @|Ӈ,)Έ< ƀF Ȁk~ ۓ  \3` }x iԼ'\>@ `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇1u`NN{6IZz BS)6{K=Xd x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!`{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH thHz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@F(0ԄmmmRpIkip>ߖpySnDt)7SGcHYam66B=#G$/yۺv\b huX|7+,r|9n(@Zn$q ́d2Qq-u`Btx2JQ x F# Z]XdYMKa: pt1 `2Ϝ2vH*Q' ,JPt@N(ljt0|)-P%tI K/0t5pn3T@Tvf vivk P@oJ}h{{0r}׀,6~ /GL'p{"`P@z]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'cܳ ߻{=R,d'E !ɚE uҁB䃜WC>Pa@t^2D3 o>Ev4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM96p H0 exFF`} wшgo {œW@{􍠝jN=Ys!qs?O>cY> DOPL=vOSs} Q`;3=cj%S@#@4;:Q; 3[F@:oF24B8{I  2<0@ ,2:=~DAf lL!I?)TNZgƤD\=|;"̔@fSD [ T;4$0;2d,!>|}IpCUPOZ+`HbԳ7^>Nw= wT=MG@"n.SyHzn}["y. 0j |=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% :@^:l5rFX5^G};sN̝k67h>0va=}hDUSKSn9:o[;T>*%f@:3 @= (-exO:RSɎ#:fzk7 @=b dAUO?@LiߐU ߳H Hoe;޽ɖVI|ǀ[vך+1+0ANe @^>|wܽ.2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U1'M!=@Pz8$zW.J:*t`0@"ݼC": CO,v I LGeѣO<P>ҡD,7H>"‘FL=<9=½@2Ȕ,đ/`80HjЏUPS9i@tL8KGTGєx5.F}c2)3(V$>DYϐ!0@x +'ZDIʤM%XyOB)\$ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Rɢ A=yς6-iKkӢ=:hQ,#|H$e:QB _79F`@?Ґ*5&5(1>{c&YI`b:XzóefM1HjRZ>  O|b:H7<;_c<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏt@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aUQMDyL42,CǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJaocSimʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX`8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*0&3`Dl؁$>%7HreGhQ >ï@ԱkSv5)eDp L,HS*Dk[\\ բ=Koӣ>=Kd4+ZIbQFc 6XTko< @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ODYWNCP@$JH$4(!RO`"4'H`\HPh] \Jb+>!H|@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;D,=>EpC(Ns0  D'EC-v̈́:v8]:L;T@> K?L^ "QäԕCC?XU@Y N8D@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_@P&aaCb.wCT ;  RapCE,Ft=[gC:EZ-;8=PBWH'|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CMO x$v-Nŋ>C"D,qhi kԼa pA]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F0>Ԃ`È^>@c7xSDLIAtG@@fT@ 7L`\Mh@A HԔk]N $2@KYҫ~`F]/Ԃ/LgaHH|Ef($j*Dj Ujl\X ܃' Lfe]ZxyɇPȂ>T@/G?ȅ(  &NATI$8Yt,ST$c ~7Tik0F*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*( 䀝!͍j, ioboo$Fd(F-,.C$p po52oqpt.'\+FKcpksp{pp  p p ?X0 pp q#q+qi ;CqKSqC[qksq{/qqqqq1qr r!r"+"3r#;!#K$Sr%[%#G$c&sr'{'_&(r))(*r++*,r--,.r//.0s110#23s3;3'2C4Ss5[5τ4c6ss7{-k78s9Wr8s::s;s<>s??t@ @tAA#tB+B3tC;CCtDKDStE[EctFkFstG{GtHHtIItJJtKKtLLtMMtNNtOOuP PuQQ#uR+R3uS;SCuTKTSuU[UcuVkVsuW{WuXXuYYuZZu[[u\\u]]u^^u__v` `vaa#vb+b3vc;cCvdKdSve[ecvfkfsvg{gvhhviivjjvkkvllvmmvnnvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c! ,fBBD^^\jjlnnl..,&&$VVT 224JJLZZ\::<**,zz|bbd""$>>@ $(8蒄̜<08b\`BH@Įprlttp||x|v46@`bdp `4<<Դ86(Nfnp.(8X@Xx0.l0.zfhFJ@x\@<<4 ʔh\`pfp<6УKNHJDv3|{Wi˟=:|ϑ2/z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?דּDF)TV Y3:3(Sp Ih&QlIGqvdP;lЏ(`堄jj_wP@Ip#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:2&Hx@FAHn[Sdq%$-ښACQ:`,Pp;DϑhBx= POK~[:tPHZa}pϲ,@s@ԃ4:H:Î,20PX(6k;=ALbG C@B)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:דB/j " K!OSv=9};'B3\"7Xl{ܸ::w%  X>#=o ֱ |%"~Lڂ#!@( $ ϐ8|C77 +1AzP  {$uhG2ӱD (@CH0USȗz`G3B BPa=q#=q t $ @"J#>H1IHA?B SrI!݃>*`Y%@Zzs!|pȁ'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1px:&]jV$`A" H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;YU1V:u LmS&FD`MG=2Mj3s+nd"tD IE nr#!@? 8~jb)€waG*߭ؑk\nV2Q`-H[yPDLZ*uYr0s Vk>umJ\#"ykMϊe2=cA?CXlA'8"x3 ]gLoX@% H,0>E ':܂0`;dE8"0rYtY'uh 1Oey\+w\Y P,r*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lKG)lLbiOl2-sER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD_;WpBz4j{dQpt d?KD;PT."pd<6Hb_}u\>e="&ث :`qh@;Ԟc옍8&zk-uXR@k) H>ĨBC).wD=6-(7P O|  2t ! )HЏ{jC40!Hy [z@ ie+ x!܇  ~@TT'EV=)= P "P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R`rP+v02> h_P=@Ѐh b}~hQK\G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ) !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsLLW` ym@pNI`j왡HIuK$y'P27v)Wa mrwe\2*_*r_ș:DZIG̢sR>.gm!-*.` r`0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 40wQ0O1 dZJF"3@h0/D?#u\"gJeP#0:蚮:,zT Yq$"AV*)PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R@a-{ 2;4fc.gZЅ) "%"]b*U$]ǭQp@.H5Zq=K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$6@Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mL c cP 5a P@Sq'K>ܛP$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛Y;z{.#r {W s$T $zY'|bUCڵ*T%"T{ .y :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ē;NA2 @Xս ½Uf܋d_T=1ޑ*S9=4OTH<~ *`R;(卄Zڨ,{OcFx׆zk/R2{'w'YY1.*AJ*>ˇK0sL24L4TsM6tM8Cgt)ex`&PI֩ p(b`H*F{:H{`z*w[,Y4]&g - `v" ?p"ԛi&N=bz/ dq@Dl/ @2Oz%0!Jŀ0kŬU]>Pi݋t"h\hwa6 `b3xc;cCydA@~*  ¡|bJD<|${ p@J(u2ǀTjwؙv b6T  *(L;# Yt(LU2d{|7|y 4ȏodQ ~ ҩV|Cs$%47!j AQ 5nc2Bu@ uPA $@V$Izv x8=GyBD?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nҏq6b1a@ZԤP !uzaء_LoB߭c Ckʁ/BFXu#bJ,/L f#\*p;vAlu,dqSr(G&X=|`1yͷswP-YH/_xcN!3uIUn?h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ8v 0Ä(:\" 9gxH3%;FIDS 3 @ û ɵ0 ~{pي{Вw'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s);' ud( zHq$ xGQYZ,[̇\\ gӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ18BS5` 1A@ Y21 5:0J$.+ax+o`˫x@ Dj, ܡoMP`LQi{ |KXLtZP FL!R0t e L܉Ph@< *;o0q 1ą6ͅ  * K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 6Ә?P#ly*ڄ-*]2L%k B8{R"#Z'hStX!XY1-3#e$%RHu«с1@$ S`xYH$*e4D< 1]L }ӒXtզ(֭V NdVi$N#䜈(݊9HzԁI#tx( [5  h2IѷI4x xy{|h$ 9<= bP*{u+C5LA [m5%"0h@LQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx?a]=cb'ч~(05sneWY=.(D!ntPO ćI @#IXj< ERdλw|Y6\{N!wJYI{h ʠ!eR!&M )hɁ4SpB9mRF"!""# z14S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$9 M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u X]2 Obc$H6av]v᲋⬉L^#_n3 9W 1vw tjwvIݘ3w).x? }(1kc th呂0Ӱ¿,H GH1`efՅPHg3]y?Q ]7 F%0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4EoP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀1Sq{{V^ifN|Ҙ$W﷍{'|hS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=vC{bsg> ~"\%ihPĻbY>r!ٸ[t37b@>FSh|KAFEbrO;޼O5\+bXi-Bʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=4UP+vP<<.тIƒ PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3B(A=0`CC 7 N#A=|$$ԳT`R|=N=E68D#@Fl![@:+[J=b?KCE{O?@pH0T{n.NF;3ê) >( d`fwN+3A+-b~sA s= D~4޳AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=cNdQO9[a> m dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX p2~>ʀe#A@GwD %'1`"jh, !72 >~zpQ#gd5$ @2( n+aY" . |~;I @?"xi ^zlP 3x ^A&|dr$-2z;fG<:h@y|qc(Hzh (<5t AZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠%Tu ֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,awf8z & >e>LH/` ^M ^Aɥr@xh Cxr$LTzifRV^ pT)p` 0A\" c H,a%FDQ}L$G1ƺ}B+LdT)P1݋kr d0D) O9-s;wpd7 y|n$`|qH1,A 9Oo׃>r|IoXc M[AaȘ֑k{>BM\M0Q{ƛ*ppq7-. `/k6H[QM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:P`<[H=|2[m; !l#ʃi:Y?xd ߐA$G`03s7NB ![E#GFUG!LS:h)H {ԦdCz%[ BYЃ>vu݇G'V&2|CK&@|<$GP7?^A  Ra`\BD-5FCUD39A, ;ަOE Oў/I?{ ;AY_A _!`%Y(MJCSL;5C8`V> ECZ}0r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b> -+nBXJahA4m @4B_v8 zLA A;XXPġ+bD ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4DЊ7@g%H >$2MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"lxIeZR\CF47̋IDBB8SEXiBP!\HdI>J:\7& Gh$S dHŸAH afY-DzGD@ACɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D'|CT&eAH'g#yzZ,D?XrC$()FD: f(; W4gACGK*߅DٽmIiA|niE<&D e,GOAK;<-Yi&_BܟA4@E(ߎD aY>p #6Dt]ϢFA7NA4\*)%ȂXi~Z)M`E4})5g݃=< 2m#FhE4a~ V'(>4C'`T=#n&>?ܫ:,(Ljr?:ë^Z7i>؃>8@C'@<ĞP(~GRjޫ:_ԃV G-l?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 RpAD?=@ r.Gx@*[泪زJ^ GjA,YnBHH.vw2tB-eFÍ$_: =›(/bhrE .xpZҮ&DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-,0"x!0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtVE99;DCAW"C=Xѣ24S# RL03L=DE?\3F78@-|>2 XÌ~Z'C2X%AIrdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,e-AXC-ZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`.C0lz@ܱpz 91'Dg {B 7W?#`[|-ĦyBp @:l,C%́L#8;;,,,C̕@Kxo=Z?p;7JDG183#F3z/A 0kD7`hN@Ľ{B3xa| JKH; vC{һ&{,C{2/H_s$H |X`>u+Ƀ/I3N0Bc0½ 3 nuS6atޫ.:ӊzLz0,⃃+eμǎ_Z^' "A (rZ'Ua`ûGu P҄(U,#T9}KR%odGGxCwdVYG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwìn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /CTu8> yg YJ`XLҡd]6XgehjlݖnpY ?!S(P. L5SM$!Qtǂ`F0Iu{5~%-MU-[d65uG`1hHeQf2euޙ}蠅#5w-(/##`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.=IIӀaw4jZԗOST hvԣIRBAi XH-SPqȁQQkep`?LpK D#HO- <7#!IT '.}IB;@땊s8Ō !1PQSe={0ZI , 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL<!ěGfbv+"&ӎ8"UG`٪*c $G@ @K{ *H)6d zX+ 0O402P*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙAx` Hw(ڕnk|=ie/n t5:j!Kg {t *Ё n#\ miq9rfRW-u=˜"@l +I_@G^5XAzD̡_\faуCeP=ƫ(ࣅH auzVBI;4|p g=6Bd%PP vLF|X0ЋAN|`"ЏFjh,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʐZBHĽװ؇LG]|`# 7B5D`ȁLt׏&xTc-=1m:!"1`%}>C 7 C $E}C [CR0^w-I$SH`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…(:kO$NFD pG:m"(#6 H(K  lijdZƏL&I! !L P 0fk(- D"RA::n86nC @ ‚ ƻB k !*A6`ց 4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ ƠLD qqȐBN-gj$ X|_b[F Q[k a-!<tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzhAn%l# * @-N$~%bMba c&%!J*N d ϖ!;!)JP瘔b  "((H<J XL. @1V-bdaS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* R`BxʬZh%2j!##LH@%&I1K4Ũr`A1> : s-c;#AҒF,00@OH>L"0p!@emKkvI@ ԁI! " ҬmIb !b⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʨ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨHQuU\"(V:bB\jFﵤoJ+@ VII3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^D*I.F `Al"8Uh!ފ0r_1STC } |6&Dx9B)D`>R>B|L!Rp`B5lIR,5xcI/R7Yߡk@:Do7W5 A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@" D{S[ 6L&Z0 "XvTh a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@a *m5A jt)"j ĕq)Qkp*B " x9nVZMDJ! DZL6 g eˀ" g]:2 H̗Zjʬ"R=d!** cxWjH//0#T!D@^)$@1RC{l#KjA :> cC3,6DB TXC.P*LBY hL$?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!$`!@*|⧇VY[ٟB:|aDY%!hMdAJ`F?zޡd0RGLUQ \N#맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->!` \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!$e2` 7n D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevةiH&7(-Gͺu2>G` `ʽ{ؽK<| .½{ :Fj|c{8”9I|3w4Bwߟw4hY(2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^w"!]&dÐ޻9s|Uݽ@|CD! Ll&+|޽*AF#\×vܕ6U3>G>,Q8=L8gv'v7cg|F=C>tp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(d̵\Jhh.h> iNJi!DRa0@= d$=$uO \7p5P;' _ #@GXΞ}\>X:C2jk_ȲFtՓV;jU[0ɏ/ k>[=׻줻n=v|a@ߨH'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճM*)hqF< 7l3_`Ƒqe:SFVSXYWBFqs-A?a:CX_c}߶c+>!?o>d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF'RZ0@m=ԀLl|Q0># jDTq$+K7 &h, r,XԵ5# Q(V-7=D HaGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]a$L3AҬڂ iYXRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY::6wYF1t3^)yK*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE9Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! P3NXaZj;.H".9P-/c54'eg*Aβ !Cd RF $DCyrFpoپ]xGc GaZo~Fe0A1Bd@G0K_Z Sd-i*~Bf$L Bzs 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`1* 1,4[@ *՘4E9$):~^S"*эkG%Zw,zh S;~%[(n>5η2*X"EtȂ|I!޲u T-{7»9Ki}Kv+N@f%S^G`bk/Ǽ@`td@9 (F! P`_ٵ2, 6Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[Mg&=,(}6➔$*A~0Hw`( 5I0Cw.Hmz;+d|Чu8w  q|y6݄3PrɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet?̴M ;+E {RsBGz6(w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz`.u9@@oӊSY Dh8+! ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG 1$P;nww.:43Zj;" GPxQĬzKذo! " 1LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T64aG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19uc( ?6%5H +@4&%A Jҕx/Yh>$$y3PoD7&ᨁC!Ux  wȸ@ &*؜,9 Dp,Q)3R*'Y-ɥ.aYd৐NnB':jQ;tI"Z M:O M4UU@ X,7ATI QAmbLg7 TFr岘41]  FId~H$|G?+zP{@JGFmUe:JaT2Pn |`=պI76З(r7'q) ðՇb[_t 2􁏒` `H0.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ()5>jH -r/yK:k,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4Y.'qQI`s#?8xQߙvG|I5"Jx- .o e+}E?z@#ֻJ1c0}NBPC@'1.G;`5d>luVDj\+оȽ}ُ:ϺUèo85Pnޓw,)I H#Iȣ-IHd XJٰ 4 6y  hGx>w耤x{ Gtr* ep@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jjt˷˸GZ؂w &% ~~ ) Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w8P+lq vYfhQ?<1tH$ί_tN 9ė|H(%;}x HY>x (\ РQ j#}N Ia9F@xe(f 9L o4"5#ERl%P?܀Ȟɀx% YR$Cu`!v'(J$|$DH5Egxp';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.9-Y#;1Jaf\zvKzT:FL ǼUhM(R;H ևv^N{0!9e~Ȁz ,՚IiPikeȁ  &7{xO@|}`E(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYN() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V9( <1 1m}h.<9KkǐG Hzoˇ8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q}HTWu/:$=  p t_Vi,ʣFw$f 8y>IgW|Xy7C \y˾D`ޅ1'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF XPӯdN+9Q9˸O[hN/wXÀp'y/_fġڳ!)9NHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - c&Bds(ѢF"Mt)ӦNB*u*ժVbͪu+׮oɆw]𺰁 ёNV꽙yo]KnKwݼj޻ݜ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwAmSzC'1Tc5áWI1Qwų~A_j~-NdUe CFA8uVMP9s,]2r#X'+آqφ)N?d0A܎ޏx`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=H`OK$Vԁ;;v [:HCb7Bq^ݓIBK&%#mj*S7PX'D~T0@#p-jctcP7Qkcf3pC<A"X,QFF>:6y3jެAt ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p {# 0F׵|;ꑵJuz=A ܃CS_ק:P>;ϥts*>3;cS=0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xl@Az%K6#j&af1w<)>o ,x PYF$)A\Ec ֱ;"Џ|$G> !fc,#8@*n QC#fwڡA+nēLdIG{(|KYL_` q #\&< J ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 c!H&sv ;8 @=E HgVH Q@H蔭XU}@i Y:= M%z!XB $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>8wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS2H1 @_t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq@-}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53_Tf1 z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}?`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u $^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?0C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7D zĉu\@=QAl<\>d!:@SU ]^ɥDHE;Ba|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp?@ p^s\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IAuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA=$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ!0Lndlc (u,x::IP3LlFZDօ<: =e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH„4:*ę/ }_z2ltI*,4q"DvW՛.") $cB c'RDD0*MԃQ0bɆTUi\J=u\IJ~W!$QD܃yV2+CDjშRk!%æ4$ C?),NT>ŪCH@DXRaY}; B?jĽTH$yROkCC-=liBvƙ`J=Sce^A ``)֖_ P C#zn ibLBܔH@ܭX;<, @0Hح4,E:DC-톕,ےVfd']=|G@0;x؂A$H]4: g͆-,ڎb@*ǩt-m-D@:A@ n`.;nҮ`u&f$1,>^J:l@Z"4uH:T=A)dfK$@ 4lO)T0'IE):% p 0@7zD>EAH@I>î @>R2D0@?/EHK_dHI0^>m` ?h@*D@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`'æA(CorU7L:ۣl@++F5'F4s)%lC" DT1*3pBp;pJуqb@ 3I 4=S0?UHAZz>RüW,AԈ ~Kn|R1D BPu8̳lAD ؕ#) ܃{@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ7=X@v}$$YTI&]U:lBp@}>ThxOAP $!^C=TA@ݏDXcJ:ßO?1@Ab,A)-BmDLKU#=0>)rUAP׾>}-,@#t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@& "*3޺ "{0Իo_)&NBALx Q l$"w&JwDbF['l u:+>>xqǑ'Wysϡ;p@+\yp{@:?3U |i}WYnaYf"+!FI xJTQe `V:z櫱{$yj1Ja xBI'D1SJ  @ށ@lGN\o!_MªgeJ n1!%@oVPiơ*q7+i5F ´ddǑGч0 y'/Թm=4"G^! 6;bgG,_}Z~P" 0dRr @@=PSR=j%PJh`s?. xG=*@*@(q aHHcv$Hz}b۲&IL1S 1 J=/!:!! xB9Αu$"`=E7`r38`]GDDP)I.@"oA dD"呕@*H}*x"H,TtPa GB c c  hBB7CƷ ~r*Z9@+OyΓ=O%Tj4AP. upMHgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:o5O[9zYgVCx_X\Q /"8N'Gw&d ba5exjtM#C4M=."7 H>d%DK, DHj\Gء_B0$tzpzYQBҵL`؀8H6&GVWW`T:  Õ`zqy0c}>!TtiZzUGbav5"` \ h c!"0=aYyG2Q4ApRd!9CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆD"Qah!"Q0 = 7} u-SV3{@ @Oa} 6apBQM` 2@vMVtr"iF2 TBJ k݋@B(sAA($ڍ@+ U|# @C,x$x, LJjtа `C?bP tp3!H߷guoDY.3zlK@8|`CN*6P|L`\ 1UStUJC ^Βݐ@3. =Щ%2 E`@%RtϞW):6X@Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC "Pc=K8@g/N(I& !pD!8d"J(Y,!r"N**j!VAp즱bMND*gM6Kb!Y:AxB#$AiAg0#>@xɰ "`hPXa & /߀0 H!Xa{< 8 !]!P!ڧ_#*7R I" |b 6(dA++T( a@&L &{A @P~ޤ1"bk gFL *@aj6 G#!}Rh)pamN/¹uA` ]*jBdY> B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'x"ƯMejGH D`Rd: -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8(H Y(ޡ-F%( #8> R!H@6@+\s88$`KH2T0@" n6` # ಩>B$&CP`&v|2!'B4"2 }'U46/QX8 $("7)^ |ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#Ԁ3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-Ab (Nd>8Pe:9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!xh0!pj!PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!r)6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫܗOi7Xgܓ@2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*AP5F􃏚>wYʑW;Џ=N=x ×k7\ 鿗IXjA@B%",Wlg!FI>@ܨ:[:`\83{6_QO_BDb@(8{#>R ~o?_-e;HW0DM; ؜-_Sތ7G.Wn?:!g砇.褗n{~;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGHd0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>1)GIUwD baŽza%XB7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ I@{l@pd>Cc%%䅃Lg@M% b(9ẋ>ς Hh`؂*ұFt\aG ҃ t`GJT-A@5Ct%@R:QĢpV! 0G㮂 5gv)^ zHuwS0KCôbƮ'ODH ȉox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ8 %P*k$" :djmr2(|Qvs@ Nܣ Ňd9DAJYN.0|XF 8 @YD #pLsUO3Ka!%K oPK$22Y\q0 k4/{|X*PlB8 duh,G'P.w8rAR Ǜ b-*-c,ad[]20 LA3G$''Q24G|HԹq @fABŰg TT ҉oP1) :tblh T/dwbńϯQ j4\XG<AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fr@CY ,\Y(Yz , ߨA+:M :d~0cJ7y*M}7oHΑ9!cA`H:1қg>Y^x+EKUR(ȣ;qAHt&U=S{aE/|6:r e!Z:BF1 `G-<zfʋ4)P(?H2< zb}L hjZ[ai v aDz7X&Yd. A%pGvq %8 pw?"# $Pg\E?ݔ@AV212W*e! sbK"2"X">(rS}g2"SR`xzXOJ )tb1G r i,@tb2Ac ON(LRpC NhAX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7с!DS@j+R+AvDE0vj``-b- H\!Et*>%`E*%υ= `& `T"l.72 BBuPTwLe8**@+e%p 9}2%p] yK0/r/b,p`dÃ06c5h0 ؎>|cm $*%`'2=^E@ H22v5D@8o:v#t#+.E0@ 9F`29PDΡ=48& 3!Ls2F -1s5(0#MWXEYܐV 6m6AeDivӇ_X#GP8 9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;pI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O0=؊TK PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گ(0 fiLSGj֌A@Up%VjKsjh yv(ń @P eTe]qMGd0qE6"ȫN*{%wr0SRvE;T+FS{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾BcO /~Dx:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2. +\}Ԡ0yp,iПfP 0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"KpqVt%m" p-*°s ʧa*̢vl8yM'H'1 Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-o;hT O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowHa~z&w]{s΂ }(;| ^EUa{0$ ;(ej%H݅""ܓ0; P_:]巹ה d5Dv2'Po t܋˜z [KsѥO^uٵows0ûzK𽻧aE ~KT։vJG~g `b!|P3J}*Po G0~J!9JǸz'{6%AS({H@ K![—oZHz"k!nN*xG>HodaZ|Q!NXа{ BtQH#tRJ+RL3tMF}j.Q8TUS*YŬJ.zatz{'*@\YH  {':Xu0! Ma{8!%1g6^ 1wܫ}Fʁ.̳R`1_~Lz9SO"[؛7! 8 R~ѧz`z `e2fsyg{gj1`h@J{b`jzkkƔ  6dKƘҶn{oo* W.kgq#|r+r%pIő3r$7A^E|@)t@wd)MyJT!40!Z:р `3vR$@?_Z `Au(1;&CpD0A*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|HjTFb qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^сiQ0x@>0`LA@@&0 \,g2Rt[QH1|@l C3(i:ῥc62HG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6P{ kVd!91ekيfցXt t*B&VbE9K?D؄m\B.x4`GX9'#) $b[~8At; "Ti@5$yሜG G3:Qzm&[(Or|匜e$0F0氎 ` Ubare2v=U @rKzLЋft\C ,E4wfhґ9J݀E= lò Gd2 UB H) Aj<臜}ld'%#Fs`d/Bp~"+CdֳRRpESVCX@\(Iq~^#H"Dbwt7<9 x-EHSKX ]T&ހ 02`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>H, }Cz3EFv*P&[ D`Aͻ/=uE:0"YW#W*3 ˈ.A#Y ˇؠr? " @ #Q!؉kq5 J6K: UA ;7/ |pUzkM c` (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 D9*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5mG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kiʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-eZ@xC|~@YTfXE^n9 (ƱStd H}X|#}pup|`v .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{HMT#Ai 5leDof=w#oˇd@)7[ .(rq|#B!Y"x^|8D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4<dz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@=KiؽwXݽu⣒a6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzxt`œ '"uB|(A"c͝?L|%4!Ȳ{m| Wz((v=q `oqOԁ[ L_؞/S?Y`]'Дc3AA}G:|t> ;#># :%>)"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>#AAOp UvY>4@:(>mp ぐР&tE5GhCB Y*Wmc %Q, A3YnKdW`d@qΫ4:"$=f,J;-Z{-jm9;C;:T$TL؀7RwX.[:K ]&t=PO 1A):PlJ:S+: j>4pOTq'r/79qcN{"NKLD*L0̥9Bӝ@=!4 },)j}©3@:Dy^wJC ^)@@~^i7:80#贁LzT=)zPXAHp(MuptKӇhr\goB@ᝤnA#|i?٠"āf?(< Eoc"BnCB=V(} a| (E$쐂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(CU`'RLpz)GEpы`cS8 2 XB=uCO1v5^[J l?k`n;zCJ # 2:~1$6yN.#H} #Z,5ɂ%/-Eb\c,H0eɂh@3)PB|@TM:Q+[ċHg+tQ XB+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0'츧>drqb\i>1,!9PJ8DN/hON;L宾ax@ns9 ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7D CCU zLh@:@z,C胹mXC̮ԝ|:!Wd,L ^ /| m,;tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]kՃ,tL`‰dBH]lDDBNL H OB|CI*CZv(U'* Wxɑih>XG!D>|CYeP5fWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮD El;,A$ChEm}Ga@1KN;Tܱ&<Ԗ,D:D9cG^^=l#]P.j!<*С^}aH@@E 9*0kz=NL!@C?bD*i°@lNLlR mD|lĊ,WC = >}KIN,ҰzB)ӡE==ElrjJYUB+~ld$sAmY @+8]@),Bס" رÕJA&..6 %hN脐`<VzH'Dd@܃;[BL@AnIOaO0^M MB\PPan.FCB.εc0DĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/垣R>H DWH2p|zcxHCmPȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅@-\.#,A&'2((* ;tr g7QD)B#h&H>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VH&|z&׹V+/:2rhGoF$+$K @'8g@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG, <>P1m$ EP4Y^> h8Ŭ;#,>l ̸V%hew?w'V ENDXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAA/l"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/SC>!˃&jAoT7CAzZ4K'^dYA;J<1ԃ\ 1˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPDu'\h;`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝ,@,4MӨ@H)H D|zܻ/؉(P݈{؅(]>F# !E@| Ա3X̋;y ]Ov qob@\D^剎;<p(S:*Ӂц p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W" W RpA6mK o; {ם+QC*|[u+Cu⊟DqT{Rz6`v,| H|lA %((';4Y$3:o9@?J"d2'iKvA}jhσЋ>/'"0Ĕ3 ~%),;" &BQ9 0+ʋt|J&J8 }.NJ~(Mr=t]v}xW)wvRI0Mz>xg xa`<ha4(O!p ̠ө W]5|ީħ'Jzק20Ftx  " oxwؘu( / N(PpvFj:`CVèf'G OnjAO6+, [tPH@ iǭu|9'ph{9믌&0|>0% hC|G8xFu8A{}Em hH)L:; _z֩q\1yq|~]c( Qߪm9+S>!0UA ^9A~!!ah_;AGFDH \$&xa,w<@mBxj`GDLg䘏0N C2YQ)E鈀qzF8HH#>Q"~l@?XFu,~y#'aTeq́`Y>b\t 7@`E=`)I5" ҅Sz[9K ,<zrH;/€cp7-dH aP<aA EG`%QD"7F5<(BeQM68_~WET,c EdXKhE(o`6@>bF*"ff v#2@R0:##o;"#H` {LO@ͬb !B*BR" !A TN@&#f/b³)*xbTZI^cj+ bX'*MJƮS:SRphΆ!CJ"$Rma.ꡙ( $X?@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~$` 7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 08IP* kaƠIZe'+L-$r=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$ !ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ejz ĸ6qdBT'2@"b@)QF FA3C#B2({DE/0@"` *Rhb3K3%BZeb e؊4A arB sTjރHcG"`? ;F# i6;AƠZAHIn>A q.^.N'lzG AK$Nc:'!D,!s//f$!dS/D"`*e=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`A@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@e `2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  Bd `k3 `k"`#F)xhz6@Ge$J -%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF  "◒+ْ3.tNFp$EZ-!"A0h٠zx$"6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6: :0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?B #^r`'@F@*: @V 6CF*`c()gf"HSX]R@x`c(/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F|` @"y@"r}'v}CBnDHbn@TSԁL%0 "Ё b1`=` TJaB?~Bܰ|փ0BQ^AZc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+p%Y.B #7t[N@=vE8HLG84!%ߥ3*ݻrv7n\YԐ5T)ӕNWjV 5X-A|Q4HESs= *X)d،6t=nQ>~a|v2OުDžO4X Rpm=!{o}P„5jehmp م ` e_na~b"Hb&b*b.c2Hc6XYnp\4BE  ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1܃A3@B^@>EA>SթXcBs8h s7 mMɪdq}Nꆓ2BPYt8@X$Bʠdi_j:"D E!IВj8$:I)#aM`>#E 8&0S en> NȮš,!>|;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y$=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) :d:D7A0/h;N5W;j%ɔ!:t>3BDh~}ЦkUtHkΏa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|@ €z\ A*~̯ˇT #$nw:ʹ@0 B!Z݈0Qn {HHIO@D ,2Dp3_a6DJ@NB3}0!XWB@)-5 Ȓ8>8cq&80 V''v]mzWXV$(cs40D|# ^uM/=Hh v@=q` 7 ps,9ωt~Oq!P\бdh!39*3%飞>ws%z{#!Y=QȖs򨬄pA~oStw,S|[9ާ`$1$p@S̈́` aB%&no9#µ `} ?(qPJ(<M&A1 aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"@P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vZ" aqnIPt IOV<9=@ tsY? IR@KcF14&#p<4X)@V`71X# ED)OIm7!9@ 1<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig5 qqwj,>3(5P `%&֑mo q*s=fS@[|Z@.v!0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2@jqqzOR% ߐoч^h7(j@0@ : `ͪ۷ $'PAH}ͅP `gB0xRي"7W`zC($#:x p @%"@c P S) aUsך S!#D&@ҩwS鲧e ߀Rb芭 ؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vsɾ5ɒ,{7B `{9 38^|V2QK@Jeʃ7H@"iOYjp j 2ܶȻ!0x,N0P" 2ġ'=_C'x& s hvBgvG!= kyT!59@JmM)Beۚcc=Mm׍G`pce4IT%]$CI@{o5`f1K#Z]Ey,#Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^3K0mk773/Oı$_7R+{n0 C -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5}80h O]ZY1?5  2e[ F=3}=?]ȁ@5GVz#.< i%oB/> Bwʇ}z$Cg6x:d!2"C#DOD1EWdE_1FgFo1GwG2H!$YЬ@h$>Y1D 0c`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`uqx+Y N(YJ=u;U l @0RЧK; 3dQc z3F2ޱ ]R aPdDZG-7Dd&>8`G (S@'j7e:Ǝb ~FeCA{,c@My g*@u*@tU1цjU M\D >]؁xІȚt!6b1u!HoGe(ww{#0 <{q-W:Rv24._a'XZ T@Mޑ4a@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"QZX !&@2,P (C=xW a=%O\/ R$#y&A0 \@.x0&/P __O=@cl/? ҃u88jd X_‡c<@PZIf#8k$@h2+e"hٜW"be,+p2 A=zJvֳmhE;ZҖִvF1*#x%`p b $6qκFVo@0Q YWP).u c(TxMɛ vxFkTdt4{9XZh-P א ~ X;~Hpnk`- c@u1?HFϤ  CIu(`0o"k"FPtXh wȥ|DJI؀>:X!4 zpYh( ƍH5@> +ۣ(epOWl~ `}֒ .}8C n "s99b@U`{P-npdTPA3wxE @|Ӈ,)Έ< ƀF Ȁk~ ۓ  \3` }x iԼ'\>@ `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇1u`NN{6IZz BS)6{K=Xd x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!`{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH thHz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@F(0ԄmmmRpIkip>ߖpySnDt)7SGcHYam66B=#G$/yۺv\b huX|7+,r|9n(@Zn$q ́d2Qq-u`Btx2JQ x F# Z]XdYMKa: pt1 `2Ϝ2vH*Q' ,JPt@N(ljt0|)-P%tI K/0t5pn3T@Tvf vivk P@oJ}h{{0r}׀,6~ /GL'p{"`P@z]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'cܳ ߻{=R,d'E !ɚE uҁB䃜WC>Pa@t^2D3 o>Ev4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM96p H0 exFF`} wшgo {œW@{􍠝jN=Ys!qs?O>cY> DOPL=vOSs} Q`;3=cj%S@#@4;:Q; 3[F@:oF24B8{I  2<0@ ,2:=~DAf lL!I?)TNZgƤD\=|;"̔@fSD [ T;4$0;2d,!>|}IpCUPOZ+`HbԳ7^>Nw= wT=MG@"n.SyHzn}["y. 0j |=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% :@^:l5rFX5^G};sN̝k67h>0va=}hDUSKSn9:o[;T>*%f@:3 @= (-exO:RSɎ#:fzk7 @=b dAUO?@LiߐU ߳H Hoe;޽ɖVI|ǀ[vך+1+0ANe @^>|wܽ.2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U1'M!=@Pz8$zW.J:*t`0@"ݼC": CO,v I LGeѣO<P>ҡD,7H>"‘FL=<9=½@2Ȕ,đ/`80HjЏUPS9i@tL8KGTGєx5.F}c2)3(V$>DYϐ!0@x +'ZDIʤM%XyOB)\$ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Rɢ A=yς6-iKkӢ=:hQ,#|H$e:QB _79F`@?Ґ*5&5(1>{c&YI`b:XzóefM1HjRZ>  O|b:H7<;_c<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏt@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aUQMDyL42,CǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJaocSimʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX`8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*0&3`Dl؁$>%7HreGhQ >ï@ԱkSv5)eDp L,HS*Dk[\\ բ=Koӣ>=Kd4+ZIbQFc 6XTko< @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ODYWNCP@$JH$4(!RO`"4'H`\HPh] \Jb+>!H|@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;D,=>EpC(Ns0  D'EC-v̈́:v8]:L;T@> K?L^ "QäԕCC?XU@Y N8D@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_@P&aaCb.wCT ;  RapCE,Ft=[gC:EZ-;8=PBWH'|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CMO x$v-Nŋ>C"D,qhi kԼa pA]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F0>Ԃ`È^>@c7xSDLIAtG@@fT@ 7L`\Mh@A HԔk]N $2@KYҫ~`F]/Ԃ/LgaHH|Ef($j*Dj Ujl\X ܃' Lfe]ZxyɇPȂ>T@/G?ȅ(  &NATI$8Yt,ST$c ~7Tik0F*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*( 䀝!͍j, ioboo$Fd(F-,.C$p po52oqpt.'\+FKcpksp{pp  p p ?X0 pp q#q+qi ;CqKSqC[qksq{/qqqqq1qr r!r"+"3r#;!#K$Sr%[%#G$c&sr'{'_&(r))(*r++*,r--,.r//.0s110#23s3;3'2C4Ss5[5τ4c6ss7{-k78s9Wr8s::s;s<>s??t@ @tAA#tB+B3tC;CCtDKDStE[EctFkFstG{GtHHtIItJJtKKtLLtMMtNNtOOuP PuQQ#uR+R3uS;SCuTKTSuU[UcuVkVsuW{WuXXuYYuZZu[[u\\u]]u^^u__v` `vaa#vb+b3vc;cCvdKdSve[ecvfkfsvg{gvhhviivjjvkkvllvmmvnnvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c! ,fBBD^^\jjlnnl..,&&$VVT 224JJLZZ\::<**,zz|bbd""$>>@ $(8蒄̜<08b\`BH@Įprlttp||x|v46@`bdp `4<<Դ86(Nfnp.(8X@Xx0.l0.zfhFJ@x\@<<4 ʔh\`pfp<6УKNHJDv3|{Wi˟=:|ϑ2/z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?דּDF)TV Y3:3(Sp Ih&QlIGqvdP;lЏ(`堄jj_wP@Ip#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:2&Hx@FAHn[Sdq%$-ښACQ:`,Pp;DϑhBx= POK~[:tPHZa}pϲ,@s@ԃ4:H:Î,20PX(6k;=ALbG C@B)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:דB/j " K!OSv=9};'B3\"7Xl{ܸ::w%  X>#=o ֱ |%"~Lڂ#!@( $ ϐ8|C77 +1AzP  {$uhG2ӱD (@CH0USȗz`G3B BPa=q#=q t $ @"J#>H1IHA?B SrI!݃>*`Y%@Zzs!|pȁ'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1px:&]jV$`A" H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;YU1V:u LmS&FD`MG=2Mj3s+nd"tD IE nr#!@? 8~jb)€waG*߭ؑk\nV2Q`-H[yPDLZ*uYr0s Vk>umJ\#"ykMϊe2=cA?CXlA'8"x3 ]gLoX@% H,0>E ':܂0`;dE8"0rYtY'uh 1Oey\+w\Y P,r*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lKG)lLbiOl2-sER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD_;WpBz4j{dQpt d?KD;PT."pd<6Hb_}u\>e="&ث :`qh@;Ԟc옍8&zk-uXR@k) H>ĨBC).wD=6-(7P O|  2t ! )HЏ{jC40!Hy [z@ ie+ x!܇  ~@TT'EV=)= P "P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R`rP+v02> h_P=@Ѐh b}~hQK\G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ) !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsLLW` ym@pNI`j왡HIuK$y'P27v)Wa mrwe\2*_*r_ș:DZIG̢sR>.gm!-*.` r`0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 40wQ0O1 dZJF"3@h0/D?#u\"gJeP#0:蚮:,zT Yq$"AV*)PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R@a-{ 2;4fc.gZЅ) "%"]b*U$]ǭQp@.H5Zq=K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$6@Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mL c cP 5a P@Sq'K>ܛP$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛Y;z{.#r {W s$T $zY'|bUCڵ*T%"T{ .y :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ē;NA2 @Xս ½Uf܋d_T=1ޑ*S9=4OTH<~ *`R;(卄Zڨ,{OcFx׆zk/R2{'w'YY1.*AJ*>ˇK0sL24L4TsM6tM8Cgt)ex`&PI֩ p(b`H*F{:H{`z*w[,Y4]&g - `v" ?p"ԛi&N=bz/ dq@Dl/ @2Oz%0!Jŀ0kŬU]>Pi݋t"h\hwa6 `b3xc;cCydA@~*  ¡|bJD<|${ p@J(u2ǀTjwؙv b6T  *(L;# Yt(LU2d{|7|y 4ȏodQ ~ ҩV|Cs$%47!j AQ 5nc2Bu@ uPA $@V$Izv x8=GyBD?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nҏq6b1a@ZԤP !uzaء_LoB߭c Ckʁ/BFXu#bJ,/L f#\*p;vAlu,dqSr(G&X=|`1yͷswP-YH/_xcN!3uIUn?h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ8v 0Ä(:\" 9gxH3%;FIDS 3 @ û ɵ0 ~{pي{Вw'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s);' ud( zHq$ xGQYZ,[̇\\ gӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ18BS5` 1A@ Y21 5:0J$.+ax+o`˫x@ Dj, ܡoMP`LQi{ |KXLtZP FL!R0t e L܉Ph@< *;o0q 1ą6ͅ  * K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 6Ә?P#ly*ڄ-*]2L%k B8{R"#Z'hStX!XY1-3#e$%RHu«с1@$ S`xYH$*e4D< 1]L }ӒXtզ(֭V NdVi$N#䜈(݊9HzԁI#tx( [5  h2IѷI4x xy{|h$ 9<= bP*{u+C5LA [m5%"0h@LQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx?a]=cb'ч~(05sneWY=.(D!ntPO ćI @#IXj< ERdλw|Y6\{N!wJYI{h ʠ!eR!&M )hɁ4SpB9mRF"!""# z14S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$9 M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u X]2 Obc$H6av]v᲋⬉L^#_n3 9W 1vw tjwvIݘ3w).x? }(1kc th呂0Ӱ¿,H GH1`efՅPHg3]y?Q ]7 F%0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4EoP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀1Sq{{V^ifN|Ҙ$W﷍{'|hS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=vC{bsg> ~"\%ihPĻbY>r!ٸ[t37b@>FSh|KAFEbrO;޼O5\+bXi-Bʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=4UP+vP<<.тIƒ PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3B(A=0`CC 7 N#A=|$$ԳT`R|=N=E68D#@Fl![@:+[J=b?KCE{O?@pH0T{n.NF;3ê) >( d`fwN+3A+-b~sA s= D~4޳AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=cNdQO9[a> m dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX p2~>ʀe#A@GwD %'1`"jh, !72 >~zpQ#gd5$ @2( n+aY" . |~;I @?"xi ^zlP 3x ^A&|dr$-2z;fG<:h@y|qc(Hzh (<5t AZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠%Tu ֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,awf8z & >e>LH/` ^M ^Aɥr@xh Cxr$LTzifRV^ pT)p` 0A\" c H,a%FDQ}L$G1ƺ}B+LdT)P1݋kr d0D) O9-s;wpd7 y|n$`|qH1,A 9Oo׃>r|IoXc M[AaȘ֑k{>BM\M0Q{ƛ*ppq7-. `/k6H[QM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:P`<[H=|2[m; !l#ʃi:Y?xd ߐA$G`03s7NB ![E#GFUG!LS:h)H {ԦdCz%[ BYЃ>vu݇G'V&2|CK&@|<$GP7?^A  Ra`\BD-5FCUD39A, ;ަOE Oў/I?{ ;AY_A _!`%Y(MJCSL;5C8`V> ECZ}0r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b> -+nBXJahA4m @4B_v8 zLA A;XXPġ+bD ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4DЊ7@g%H >$2MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"lxIeZR\CF47̋IDBB8SEXiBP!\HdI>J:\7& Gh$S dHŸAH afY-DzGD@ACɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D'|CT&eAH'g#yzZ,D?XrC$()FD: f(; W4gACGK*߅DٽmIiA|niE<&D e,GOAK;<-Yi&_BܟA4@E(ߎD aY>p #6Dt]ϢFA7NA4\*)%ȂXi~Z)M`E4})5g݃=< 2m#FhE4a~ V'(>4C'`T=#n&>?ܫ:,(Ljr?:ë^Z7i>؃>8@C'@<ĞP(~GRjޫ:_ԃV G-l?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 RpAD?=@ r.Gx@*[泪زJ^ GjA,YnBHH.vw2tB-eFÍ$_: =›(/bhrE .xpZҮ&DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-,0"x!0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtVE99;DCAW"C=Xѣ24S# RL03L=DE?\3F78@-|>2 XÌ~Z'C2X%AIrdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,e-AXC-ZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`.C0lz@ܱpz 91'Dg {B 7W?#`[|-ĦyBp @:l,C%́L#8;;,,,C̕@Kxo=Z?p;7JDG183#F3z/A 0kD7`hN@Ľ{B3xa| JKH; vC{һ&{,C{2/H_s$H |X`>u+Ƀ/I3N0Bc0½ 3 nuS6atޫ.:ӊzLz0,⃃+eμǎ_Z^' "A (rZ'Ua`ûGu P҄(U,#T9}KR%odGGxCwdVYG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwìn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /CTu8> yg YJ`XLҡd]6XgehjlݖnpY ?!S(P. L5SM$!Qtǂ`F0Iu{5~%-MU-[d65uG`1hHeQf2euޙ}蠅#5w-(/##`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.=IIӀaw4jZԗOST hvԣIRBAi XH-SPqȁQQkep`?LpK D#HO- <7#!IT '.}IB;@땊s8Ō !1PQSe={0ZI , 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL<!ěGfbv+"&ӎ8"UG`٪*c $G@ @K{ *H)6d zX+ 0O402P*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙAx` Hw(ڕnk|=ie/n t5:j!Kg {t *Ё n#\ miq9rfRW-u=˜"@l +I_@G^5XAzD̡_\faуCeP=ƫ(ࣅH auzVBI;4|p g=6Bd%PP vLF|X0ЋAN|`"ЏFjh,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʐZBHĽװ؇LG]|`# 7B5D`ȁLt׏&xTc-=1m:!"1`%}>C 7 C $E}C [CR0^w-I$SH`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…(:kO$NFD pG:m"(#6 H(K  lijdZƏL&I! !L P 0fk(- D"RA::n86nC @ ‚ ƻB k !*A6`ց 4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ ƠLD qqȐBN-gj$ X|_b[F Q[k a-!<tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzhAn%l# * @-N$~%bMba c&%!J*N d ϖ!;!)JP瘔b  "((H<J XL. @1V-bdaS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* R`BxʬZh%2j!##LH@%&I1K4Ũr`A1> : s-c;#AҒF,00@OH>L"0p!@emKkvI@ ԁI! " ҬmIb !b⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʨ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨHQuU\"(V:bB\jFﵤoJ+@ VII3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^D*I.F `Al"8Uh!ފ0r_1STC } |6&Dx9B)D`>R>B|L!Rp`B5lIR,5xcI/R7Yߡk@:Do7W5 A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@" D{S[ 6L&Z0 "XvTh a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@a *m5A jt)"j ĕq)Qkp*B " x9nVZMDJ! DZL6 g eˀ" g]:2 H̗Zjʬ"R=d!** cxWjH//0#T!D@^)$@1RC{l#KjA :> cC3,6DB TXC.P*LBY hL$?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!$`!@*|⧇VY[ٟB:|aDY%!hMdAJ`F?zޡd0RGLUQ \N#맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->!` \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!$e2` 7n D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevةiH&7(-Gͺu2>G` `ʽ{ؽK<| .½{ :Fj|c{8”9I|3w4Bwߟw4hY(2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^w"!]&dÐ޻9s|Uݽ@|CD! Ll&+|޽*AF#\×vܕ6U3>G>,Q8=L8gv'v7cg|F=C>tp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(d̵\Jhh.h> iNJi!DRa0@= d$=$uO \7p5P;' _ #@GXΞ}\>X:C2jk_ȲFtՓV;jU[0ɏ/ k>[=׻줻n=v|a@ߨH'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճM*)hqF< 7l3_`Ƒqe:SFVSXYWBFqs-A?a:CX_c}߶c+>!?o>d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF'RZ0@m=ԀLl|Q0># jDTq$+K7 &h, r,XԵ5# Q(V-7=D HaGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]a$L3AҬڂ iYXRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY::6wYF1t3^)yK*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE9Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! P3NXaZj;.H".9P-/c54'eg*Aβ !Cd RF $DCyrFpoپ]xGc GaZo~Fe0A1Bd@G0K_Z Sd-i*~Bf$L Bzs 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`1* 1,4[@ *՘4E9$):~^S"*эkG%Zw,zh S;~%[(n>5η2*X"EtȂ|I!޲u T-{7»9Ki}Kv+N@f%S^G`bk/Ǽ@`td@9 (F! P`_ٵ2, 6Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[Mg&=,(}6➔$*A~0Hw`( 5I0Cw.Hmz;+d|Чu8w  q|y6݄3PrɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet?̴M ;+E {RsBGz6(w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz`.u9@@oӊSY Dh8+! ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG 1$P;nww.:43Zj;" GPxQĬzKذo! " 1LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T64aG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19uc( ?6%5H +@4&%A Jҕx/Yh>$$y3PoD7&ᨁC!Ux  wȸ@ &*؜,9 Dp,Q)3R*'Y-ɥ.aYd৐NnB':jQ;tI"Z M:O M4UU@ X,7ATI QAmbLg7 TFr岘41]  FId~H$|G?+zP{@JGFmUe:JaT2Pn |`=պI76З(r7'q) ðՇb[_t 2􁏒` `H0.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ()5>jH -r/yK:k,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4Y.'qQI`s#?8xQߙvG|I5"Jx- .o e+}E?z@#ֻJ1c0}NBPC@'1.G;`5d>luVDj\+оȽ}ُ:ϺUèo85Pnޓw,)I H#Iȣ-IHd XJٰ 4 6y  hGx>w耤x{ Gtr* ep@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jjt˷˸GZ؂w &% ~~ ) Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w8P+lq vYfhQ?<1tH$ί_tN 9ė|H(%;}x HY>x (\ РQ j#}N Ia9F@xe(f 9L o4"5#ERl%P?܀Ȟɀx% YR$Cu`!v'(J$|$DH5Egxp';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.9-Y#;1Jaf\zvKzT:FL ǼUhM(R;H ևv^N{0!9e~Ȁz ,՚IiPikeȁ  &7{xO@|}`E(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYN() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V9( <1 1m}h.<9KkǐG Hzoˇ8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q}HTWu/:$=  p t_Vi,ʣFw$f 8y>IgW|Xy7C \y˾D`ޅ1'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF XPӯdN+9Q9˸O[hN/wXÀp'y/_fġڳ!)9NHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - c&Bds(ѢF"Mt)ӦNB*u*ժVbͪu+׮oɆw]𺰁 ёNV꽙yo]KnKwݼj޻ݜ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwAmSzC'1Tc5áWI1Qwų~A_j~-NdUe CFA8uVMP9s,]2r#X'+آqφ)N?d0A܎ޏx`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=H`OK$Vԁ;;v [:HCb7Bq^ݓIBK&%#mj*S7PX'D~T0@#p-jctcP7Qkcf3pC<A"X,QFF>:6y3jެAt ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p {# 0F׵|;ꑵJuz=A ܃CS_ק:P>;ϥts*>3;cS=0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xl@Az%K6#j&af1w<)>o ,x PYF$)A\Ec ֱ;"Џ|$G> !fc,#8@*n QC#fwڡA+nēLdIG{(|KYL_` q #\&< J ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 c!H&sv ;8 @=E HgVH Q@H蔭XU}@i Y:= M%z!XB $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>8wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS2H1 @_t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq@-}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53_Tf1 z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}?`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u $^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?0C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7D zĉu\@=QAl<\>d!:@SU ]^ɥDHE;Ba|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp?@ p^s\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IAuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA=$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ!0Lndlc (u,x::IP3LlFZDօ<: =e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH„4:*ę/ }_z2ltI*,4q"DvW՛.") $cB c'RDD0*MԃQ0bɆTUi\J=u\IJ~W!$QD܃yV2+CDjშRk!%æ4$ C?),NT>ŪCH@DXRaY}; B?jĽTH$yROkCC-=liBvƙ`J=Sce^A ``)֖_ P C#zn ibLBܔH@ܭX;<, @0Hح4,E:DC-톕,ےVfd']=|G@0;x؂A$H]4: g͆-,ڎb@*ǩt-m-D@:A@ n`.;nҮ`u&f$1,>^J:l@Z"4uH:T=A)dfK$@ 4lO)T0'IE):% p 0@7zD>EAH@I>î @>R2D0@?/EHK_dHI0^>m` ?h@*D@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`'æA(CorU7L:ۣl@++F5'F4s)%lC" DT1*3pBp;pJуqb@ 3I 4=S0?UHAZz>RüW,AԈ ~Kn|R1D BPu8̳lAD ؕ#) ܃{@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ7=X@v}$$YTI&]U:lBp@}>ThxOAP $!^C=TA@ݏDXcJ:ßO?1@Ab,A)-BmDLKU#=0>)rUAP׾>}-,@#t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@& "*3޺ "{0Իo_)&NBALx Q l$"w&JwDbF['l u:+>>xqǑ'Wysϡ;p@+\yp{@:?3U |i}WYnaYf"+!FI xJTQe `V:z櫱{$yj1Ja xBI'D1SJ  @ށ@lGN\o!_MªgeJ n1!%@oVPiơ*q7+i5F ´ddǑGч0 y'/Թm=4"G^! 6;bgG,_}Z~P" 0dRr @@=PSR=j%PJh`s?. xG=*@*@(q aHHcv$Hz}b۲&IL1S 1 J=/!:!! xB9Αu$"`=E7`r38`]GDDP)I.@"oA dD"呕@*H}*x"H,TtPa GB c c  hBB7CƷ ~r*Z9@+OyΓ=O%Tj4AP. upMHgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:o5O[9zYgVCx_X\Q /"8N'Gw&d ba5exjtM#C4M=."7 H>d%DK, DHj\Gء_B0$tzpzYQBҵL`؀8H6&GVWW`T:  Õ`zqy0c}>!TtiZzUGbav5"` \ h c!"0=aYyG2Q4ApRd!9CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆD"Qah!"Q0 = 7} u-SV3{@ @Oa} 6apBQM` 2@vMVtr"iF2 TBJ k݋@B(sAA($ڍ@+ U|# @C,x$x, LJjtа `C?bP tp3!H߷guoDY.3zlK@8|`CN*6P|L`\ 1UStUJC ^Βݐ@3. =Щ%2 E`@%RtϞW):6X@Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC "Pc=K8@g/N(I& !pD!8d"J(Y,!r"N**j!VAp즱bMND*gM6Kb!Y:AxB#$AiAg0#>@xɰ "`hPXa & /߀0 H!Xa{< 8 !]!P!ڧ_#*7R I" |b 6(dA++T( a@&L &{A @P~ޤ1"bk gFL *@aj6 G#!}Rh)pamN/¹uA` ]*jBdY> B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'x"ƯMejGH D`Rd: -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8(H Y(ޡ-F%( #8> R!H@6@+\s88$`KH2T0@" n6` # ಩>B$&CP`&v|2!'B4"2 }'U46/QX8 $("7)^ |ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#Ԁ3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-Ab (Nd>8Pe:9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!xh0!pj!PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!r)6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫܗOi7Xgܓ@2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*AP5F􃏚>wYʑW;Џ=N=x ×k7\ 鿗IXjA@B%",Wlg!FI>@ܨ:[:`\83{6_QO_BDb@(8{#>R ~o?_-e;HW0DM; ؜-_Sތ7G.Wn?:!g砇.褗n{~;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGHd0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>1)GIUwD baŽza%XB7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ I@{l@pd>Cc%%䅃Lg@M% b(9ẋ>ς Hh`؂*ұFt\aG ҃ t`GJT-A@5Ct%@R:QĢpV! 0G㮂 5gv)^ zHuwS0KCôbƮ'ODH ȉox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ8 %P*k$" :djmr2(|Qvs@ Nܣ Ňd9DAJYN.0|XF 8 @YD #pLsUO3Ka!%K oPK$22Y\q0 k4/{|X*PlB8 duh,G'P.w8rAR Ǜ b-*-c,ad[]20 LA3G$''Q24G|HԹq @fABŰg TT ҉oP1) :tblh T/dwbńϯQ j4\XG<AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fr@CY ,\Y(Yz , ߨA+:M :d~0cJ7y*M}7oHΑ9!cA`H:1қg>Y^x+EKUR(ȣ;qAHt&U=S{aE/|6:r e!Z:BF1 `G-<zfʋ4)P(?H2< zb}L hjZ[ai v aDz7X&Yd. A%pGvq %8 pw?"# $Pg\E?ݔ@AV212W*e! sbK"2"X">(rS}g2"SR`xzXOJ )tb1G r i,@tb2Ac ON(LRpC NhAX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7с!DS@j+R+AvDE0vj``-b- H\!Et*>%`E*%υ= `& `T"l.72 BBuPTwLe8**@+e%p 9}2%p] yK0/r/b,p`dÃ06c5h0 ؎>|cm $*%`'2=^E@ H22v5D@8o:v#t#+.E0@ 9F`29PDΡ=48& 3!Ls2F -1s5(0#MWXEYܐV 6m6AeDivӇ_X#GP8 9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;pI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O0=؊TK PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گ(0 fiLSGj֌A@Up%VjKsjh yv(ń @P eTe]qMGd0qE6"ȫN*{%wr0SRvE;T+FS{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾BcO /~Dx:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2. +\}Ԡ0yp,iПfP 0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"KpqVt%m" p-*°s ʧa*̢vl8yM'H'1 Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-o;hT O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowHa~z&w]{s΂ }(;| ^EUa{0$ ;(ej%H݅""ܓ0; P_:]巹ה d5Dv2'Po t܋˜z [KsѥO^uٵows0ûzK𽻧aE ~KT։vJG~g `b!|P3J}*Po G0~J!9JǸz'{6%AS({H@ K![—oZHz"k!nN*xG>HodaZ|Q!NXа{ BtQH#tRJ+RL3tMF}j.Q8TUS*YŬJ.zatz{'*@\YH  {':Xu0! Ma{8!%1g6^ 1wܫ}Fʁ.̳R`1_~Lz9SO"[؛7! 8 R~ѧz`z `e2fsyg{gj1`h@J{b`jzkkƔ  6dKƘҶn{oo* W.kgq#|r+r%pIő3r$7A^E|@)t@wd)MyJT!40!Z:р `3vR$@?_Z `Au(1;&CpD0A*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|HjTFb qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^сiQ0x@>0`LA@@&0 \,g2Rt[QH1|@l C3(i:ῥc62HG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6P{ kVd!91ekيfցXt t*B&VbE9K?D؄m\B.x4`GX9'#) $b[~8At; "Ti@5$yሜG G3:Qzm&[(Or|匜e$0F0氎 ` Ubare2v=U @rKzLЋft\C ,E4wfhґ9J݀E= lò Gd2 UB H) Aj<臜}ld'%#Fs`d/Bp~"+CdֳRRpESVCX@\(Iq~^#H"Dbwt7<9 x-EHSKX ]T&ހ 02`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>H, }Cz3EFv*P&[ D`Aͻ/=uE:0"YW#W*3 ˈ.A#Y ˇؠr? " @ #Q!؉kq5 J6K: UA ;7/ |pUzkM c` (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 D9*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5mG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kiʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-eZ@xC|~@YTfXE^n9 (ƱStd H}X|#}pup|`v .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{HMT#Ai 5leDof=w#oˇd@)7[ .(rq|#B!Y"x^|8D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4<dz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@=KiؽwXݽu⣒a6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzxt`œ '"uB|(A"c͝?L|%4!Ȳ{m| Wz((v=q `oqOԁ[ L_؞/S?Y`]'Дc3AA}G:|t> ;#># :%>)"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>#AAOp UvY>4@:(>mp ぐР&tE5GhCB Y*Wmc %Q, A3YnKdW`d@qΫ4:"$=f,J;-Z{-jm9;C;:T$TL؀7RwX.[:K ]&t=PO 1A):PlJ:S+: j>4pOTq'r/79qcN{"NKLD*L0̥9Bӝ@=!4 },)j}©3@:Dy^wJC ^)@@~^i7:80#贁LzT=)zPXAHp(MuptKӇhr\goB@ᝤnA#|i?٠"āf?(< Eoc"BnCB=V(} a| (E$쐂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(CU`'RLpz)GEpы`cS8 2 XB=uCO1v5^[J l?k`n;zCJ # 2:~1$6yN.#H} #Z,5ɂ%/-Eb\c,H0eɂh@3)PB|@TM:Q+[ċHg+tQ XB+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0'츧>drqb\i>1,!9PJ8DN/hON;L宾ax@ns9 ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7D CCU zLh@:@z,C胹mXC̮ԝ|:!Wd,L ^ /| m,;tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]kՃ,tL`‰dBH]lDDBNL H OB|CI*CZv(U'* Wxɑih>XG!D>|CYeP5fWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮD El;,A$ChEm}Ga@1KN;Tܱ&<Ԗ,D:D9cG^^=l#]P.j!<*С^}aH@@E 9*0kz=NL!@C?bD*i°@lNLlR mD|lĊ,WC = >}KIN,ҰzB)ӡE==ElrjJYUB+~ld$sAmY @+8]@),Bס" رÕJA&..6 %hN脐`<VzH'Dd@܃;[BL@AnIOaO0^M MB\PPan.FCB.εc0DĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/垣R>H DWH2p|zcxHCmPȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅@-\.#,A&'2((* ;tr g7QD)B#h&H>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VH&|z&׹V+/:2rhGoF$+$K @'8g@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG, <>P1m$ EP4Y^> h8Ŭ;#,>l ̸V%hew?w'V ENDXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAA/l"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/SC>!˃&jAoT7CAzZ4K'^dYA;J<1ԃ\ 1˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPDu'\h;`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝ,@,4MӨ@H)H D|zܻ/؉(P݈{؅(]>F# !E@| Ա3X̋;y ]Ov qob@\D^剎;<p(S:*Ӂц p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W" W RpA6mK o; {ם+QC*|[u+Cu⊟DqT{Rz6`v,| H|lA %((';4Y$3:o9@?J"d2'iKvA}jhσЋ>/'"0Ĕ3 ~%),;" &BQ9 0+ʋt|J&J8 }.NJ~(Mr=t]v}xW)wvRI0Mz>xg xa`<ha4(O!p ̠ө W]5|ީħ'Jzק20Ftx  " oxwؘu( / N(PpvFj:`CVèf'G OnjAO6+, [tPH@ iǭu|9'ph{9믌&0|>0% hC|G8xFu8A{}Em hH)L:; _z֩q\1yq|~]c( Qߪm9+S>!0UA ^9A~!!ah_;AGFDH \$&xa,w<@mBxj`GDLg䘏0N C2YQ)E鈀qzF8HH#>Q"~l@?XFu,~y#'aTeq́`Y>b\t 7@`E=`)I5" ҅Sz[9K ,<zrH;/€cp7-dH aP<aA EG`%QD"7F5<(BeQM68_~WET,c EdXKhE(o`6@>bF*"ff v#2@R0:##o;"#H` {LO@ͬb !B*BR" !A TN@&#f/b³)*xbTZI^cj+ bX'*MJƮS:SRphΆ!CJ"$Rma.ꡙ( $X?@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~$` 7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 08IP* kaƠIZe'+L-$r=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$ !ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ejz ĸ6qdBT'2@"b@)QF FA3C#B2({DE/0@"` *Rhb3K3%BZeb e؊4A arB sTjރHcG"`? ;F# i6;AƠZAHIn>A q.^.N'lzG AK$Nc:'!D,!s//f$!dS/D"`*e=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`A@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@e `2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  Bd `k3 `k"`#F)xhz6@Ge$J -%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF  "◒+ْ3.tNFp$EZ-!"A0h٠zx$"6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6: :0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?B #^r`'@F@*: @V 6CF*`c()gf"HSX]R@x`c(/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F|` @"y@"r}'v}CBnDHbn@TSԁL%0 "Ё b1`=` TJaB?~Bܰ|փ0BQ^AZc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+p%Y.B #7t[N@=vE8HLG84!%ߥ3*ݻrv7n\YԐ5T)ӕNWjV 5X-A|Q4HESs= *X)d،6t=nQ>~a|v2OުDžO4X Rpm=!{o}P„5jehmp م ` e_na~b"Hb&b*b.c2Hc6XYnp\4BE  ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1܃A3@B^@>EA>SթXcBs8h s7 mMɪdq}Nꆓ2BPYt8@X$Bʠdi_j:"D E!IВj8$:I)#aM`>#E 8&0S en> NȮš,!>|;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y$=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) :d:D7A0/h;N5W;j%ɔ!:t>3BDh~}ЦkUtHkΏa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|@ €z\ A*~̯ˇT #$nw:ʹ@0 B!Z݈0Qn {HHIO@D ,2Dp3_a6DJ@NB3}0!XWB@)-5 Ȓ8>8cq&80 V''v]mzWXV$(cs40D|# ^uM/=Hh v@=q` 7 ps,9ωt~Oq!P\бdh!39*3%飞>ws%z{#!Y=QȖs򨬄pA~oStw,S|[9ާ`$1$p@S̈́` aB%&no9#µ `} ?(qPJ(<M&A1 aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"@P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vZ" aqnIPt IOV<9=@ tsY? IR@KcF14&#p<4X)@V`71X# ED)OIm7!9@ 1<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig5 qqwj,>3(5P `%&֑mo q*s=fS@[|Z@.v!0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2@jqqzOR% ߐoч^h7(j@0@ : `ͪ۷ $'PAH}ͅP `gB0xRي"7W`zC($#:x p @%"@c P S) aUsך S!#D&@ҩwS鲧e ߀Rb芭 ؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vsɾ5ɒ,{7B `{9 38^|V2QK@Jeʃ7H@"iOYjp j 2ܶȻ!0x,N0P" 2ġ'=_C'x& s hvBgvG!= kyT!59@JmM)Beۚcc=Mm׍G`pce4IT%]$CI@{o5`f1K#Z]Ey,#Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^3K0mk773/Oı$_7R+{n0 C -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5}80h O]ZY1?5  2e[ F=3}=?]ȁ@5GVz#.< i%oB/> Bwʇ}z$Cg6x:d!2"C#DOD1EWdE_1FgFo1GwG2H!$YЬ@h$>Y1D 0c`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`uqx+Y N(YJ=u;U l @0RЧK; 3dQc z3F2ޱ ]R aPdDZG-7Dd&>8`G (S@'j7e:Ǝb ~FeCA{,c@My g*@u*@tU1цjU M\D >]؁xІȚt!6b1u!HoGe(ww{#0 <{q-W:Rv24._a'XZ T@Mޑ4a@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"QZX !&@2,P (C=xW a=%O\/ R$#y&A0 \@.x0&/P __O=@cl/? ҃u88jd X_‡c<@PZIf#8k$@h2+e"hٜW"be,+p2 A=zJvֳmhE;ZҖִvF1*#x%`p b $6qκFVo@0Q YWP).u c(TxMɛ vxFkTdt4{9XZh-P א ~ X;~Hpnk`- c@u1?HFϤ  CIu(`0o"k"FPtXh wȥ|DJI؀>:X!4 zpYh( ƍH5@> +ۣ(epOWl~ `}֒ .}8C n "s99b@U`{P-npdTPA3wxE @|Ӈ,)Έ< ƀF Ȁk~ ۓ  \3` }x iԼ'\>@ `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇1u`NN{6IZz BS)6{K=Xd x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!`{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH thHz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@F(0ԄmmmRpIkip>ߖpySnDt)7SGcHYam66B=#G$/yۺv\b huX|7+,r|9n(@Zn$q ́d2Qq-u`Btx2JQ x F# Z]XdYMKa: pt1 `2Ϝ2vH*Q' ,JPt@N(ljt0|)-P%tI K/0t5pn3T@Tvf vivk P@oJ}h{{0r}׀,6~ /GL'p{"`P@z]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'cܳ ߻{=R,d'E !ɚE uҁB䃜WC>Pa@t^2D3 o>Ev4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM96p H0 exFF`} wшgo {œW@{􍠝jN=Ys!qs?O>cY> DOPL=vOSs} Q`;3=cj%S@#@4;:Q; 3[F@:oF24B8{I  2<0@ ,2:=~DAf lL!I?)TNZgƤD\=|;"̔@fSD [ T;4$0;2d,!>|}IpCUPOZ+`HbԳ7^>Nw= wT=MG@"n.SyHzn}["y. 0j |=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% :@^:l5rFX5^G};sN̝k67h>0va=}hDUSKSn9:o[;T>*%f@:3 @= (-exO:RSɎ#:fzk7 @=b dAUO?@LiߐU ߳H Hoe;޽ɖVI|ǀ[vך+1+0ANe @^>|wܽ.2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U1'M!=@Pz8$zW.J:*t`0@"ݼC": CO,v I LGeѣO<P>ҡD,7H>"‘FL=<9=½@2Ȕ,đ/`80HjЏUPS9i@tL8KGTGєx5.F}c2)3(V$>DYϐ!0@x +'ZDIʤM%XyOB)\$ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Rɢ A=yς6-iKkӢ=:hQ,#|H$e:QB _79F`@?Ґ*5&5(1>{c&YI`b:XzóefM1HjRZ>  O|b:H7<;_c<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏt@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aUQMDyL42,CǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJaocSimʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX`8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*0&3`Dl؁$>%7HreGhQ >ï@ԱkSv5)eDp L,HS*Dk[\\ բ=Koӣ>=Kd4+ZIbQFc 6XTko< @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ODYWNCP@$JH$4(!RO`"4'H`\HPh] \Jb+>!H|@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;D,=>EpC(Ns0  D'EC-v̈́:v8]:L;T@> K?L^ "QäԕCC?XU@Y N8D@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_@P&aaCb.wCT ;  RapCE,Ft=[gC:EZ-;8=PBWH'|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CMO x$v-Nŋ>C"D,qhi kԼa pA]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F0>Ԃ`È^>@c7xSDLIAtG@@fT@ 7L`\Mh@A HԔk]N $2@KYҫ~`F]/Ԃ/LgaHH|Ef($j*Dj Ujl\X ܃' Lfe]ZxyɇPȂ>T@/G?ȅ(  &NATI$8Yt,ST$c ~7Tik0F*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*( 䀝!͍j, ioboo$Fd(F-,.C$p po52oqpt.'\+FKcpksp{pp  p p ?X0 pp q#q+qi ;CqKSqC[qksq{/qqqqq1qr r!r"+"3r#;!#K$Sr%[%#G$c&sr'{'_&(r))(*r++*,r--,.r//.0s110#23s3;3'2C4Ss5[5τ4c6ss7{-k78s9Wr8s::s;s<>s??t@ @tAA#tB+B3tC;CCtDKDStE[EctFkFstG{GtHHtIItJJtKKtLLtMMtNNtOOuP PuQQ#uR+R3uS;SCuTKTSuU[UcuVkVsuW{WuXXuYYuZZu[[u\\u]]u^^u__v` `vaa#vb+b3vc;cCvdKdSve[ecvfkfsvg{gvhhviivjjvkkvllvmmvnnvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c! ,fBBD^^\jjlnnl..,&&$VVT 224JJLZZ\::<**,zz|bbd""$>>@ $(8蒄̜<08b\`BH@Įprlttp||x|v46@`bdp `4<<Դ86(Nfnp.(8X@Xx0.l0.zfhFJ@x\@<<4 ʔh\`pfp<6УKNHJDv3|{Wi˟=:|ϑ2/z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?דּDF)TV Y3:3(Sp Ih&QlIGqvdP;lЏ(`堄jj_wP@Ip#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:2&Hx@FAHn[Sdq%$-ښACQ:`,Pp;DϑhBx= POK~[:tPHZa}pϲ,@s@ԃ4:H:Î,20PX(6k;=ALbG C@B)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:דB/j " K!OSv=9};'B3\"7Xl{ܸ::w%  X>#=o ֱ |%"~Lڂ#!@( $ ϐ8|C77 +1AzP  {$uhG2ӱD (@CH0USȗz`G3B BPa=q#=q t $ @"J#>H1IHA?B SrI!݃>*`Y%@Zzs!|pȁ'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1px:&]jV$`A" H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;YU1V:u LmS&FD`MG=2Mj3s+nd"tD IE nr#!@? 8~jb)€waG*߭ؑk\nV2Q`-H[yPDLZ*uYr0s Vk>umJ\#"ykMϊe2=cA?CXlA'8"x3 ]gLoX@% H,0>E ':܂0`;dE8"0rYtY'uh 1Oey\+w\Y P,r*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lKG)lLbiOl2-sER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD_;WpBz4j{dQpt d?KD;PT."pd<6Hb_}u\>e="&ث :`qh@;Ԟc옍8&zk-uXR@k) H>ĨBC).wD=6-(7P O|  2t ! )HЏ{jC40!Hy [z@ ie+ x!܇  ~@TT'EV=)= P "P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R`rP+v02> h_P=@Ѐh b}~hQK\G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ) !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsLLW` ym@pNI`j왡HIuK$y'P27v)Wa mrwe\2*_*r_ș:DZIG̢sR>.gm!-*.` r`0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 40wQ0O1 dZJF"3@h0/D?#u\"gJeP#0:蚮:,zT Yq$"AV*)PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R@a-{ 2;4fc.gZЅ) "%"]b*U$]ǭQp@.H5Zq=K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$6@Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mL c cP 5a P@Sq'K>ܛP$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛Y;z{.#r {W s$T $zY'|bUCڵ*T%"T{ .y :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ē;NA2 @Xս ½Uf܋d_T=1ޑ*S9=4OTH<~ *`R;(卄Zڨ,{OcFx׆zk/R2{'w'YY1.*AJ*>ˇK0sL24L4TsM6tM8Cgt)ex`&PI֩ p(b`H*F{:H{`z*w[,Y4]&g - `v" ?p"ԛi&N=bz/ dq@Dl/ @2Oz%0!Jŀ0kŬU]>Pi݋t"h\hwa6 `b3xc;cCydA@~*  ¡|bJD<|${ p@J(u2ǀTjwؙv b6T  *(L;# Yt(LU2d{|7|y 4ȏodQ ~ ҩV|Cs$%47!j AQ 5nc2Bu@ uPA $@V$Izv x8=GyBD?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nҏq6b1a@ZԤP !uzaء_LoB߭c Ckʁ/BFXu#bJ,/L f#\*p;vAlu,dqSr(G&X=|`1yͷswP-YH/_xcN!3uIUn?h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ8v 0Ä(:\" 9gxH3%;FIDS 3 @ û ɵ0 ~{pي{Вw'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s);' ud( zHq$ xGQYZ,[̇\\ gӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ18BS5` 1A@ Y21 5:0J$.+ax+o`˫x@ Dj, ܡoMP`LQi{ |KXLtZP FL!R0t e L܉Ph@< *;o0q 1ą6ͅ  * K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 6Ә?P#ly*ڄ-*]2L%k B8{R"#Z'hStX!XY1-3#e$%RHu«с1@$ S`xYH$*e4D< 1]L }ӒXtզ(֭V NdVi$N#䜈(݊9HzԁI#tx( [5  h2IѷI4x xy{|h$ 9<= bP*{u+C5LA [m5%"0h@LQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx?a]=cb'ч~(05sneWY=.(D!ntPO ćI @#IXj< ERdλw|Y6\{N!wJYI{h ʠ!eR!&M )hɁ4SpB9mRF"!""# z14S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$9 M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u X]2 Obc$H6av]v᲋⬉L^#_n3 9W 1vw tjwvIݘ3w).x? }(1kc th呂0Ӱ¿,H GH1`efՅPHg3]y?Q ]7 F%0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4EoP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀1Sq{{V^ifN|Ҙ$W﷍{'|hS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=vC{bsg> ~"\%ihPĻbY>r!ٸ[t37b@>FSh|KAFEbrO;޼O5\+bXi-Bʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=4UP+vP<<.тIƒ PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3B(A=0`CC 7 N#A=|$$ԳT`R|=N=E68D#@Fl![@:+[J=b?KCE{O?@pH0T{n.NF;3ê) >( d`fwN+3A+-b~sA s= D~4޳AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=cNdQO9[a> m dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX p2~>ʀe#A@GwD %'1`"jh, !72 >~zpQ#gd5$ @2( n+aY" . |~;I @?"xi ^zlP 3x ^A&|dr$-2z;fG<:h@y|qc(Hzh (<5t AZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠%Tu ֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,awf8z & >e>LH/` ^M ^Aɥr@xh Cxr$LTzifRV^ pT)p` 0A\" c H,a%FDQ}L$G1ƺ}B+LdT)P1݋kr d0D) O9-s;wpd7 y|n$`|qH1,A 9Oo׃>r|IoXc M[AaȘ֑k{>BM\M0Q{ƛ*ppq7-. `/k6H[QM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:P`<[H=|2[m; !l#ʃi:Y?xd ߐA$G`03s7NB ![E#GFUG!LS:h)H {ԦdCz%[ BYЃ>vu݇G'V&2|CK&@|<$GP7?^A  Ra`\BD-5FCUD39A, ;ަOE Oў/I?{ ;AY_A _!`%Y(MJCSL;5C8`V> ECZ}0r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b> -+nBXJahA4m @4B_v8 zLA A;XXPġ+bD ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4DЊ7@g%H >$2MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"lxIeZR\CF47̋IDBB8SEXiBP!\HdI>J:\7& Gh$S dHŸAH afY-DzGD@ACɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D'|CT&eAH'g#yzZ,D?XrC$()FD: f(; W4gACGK*߅DٽmIiA|niE<&D e,GOAK;<-Yi&_BܟA4@E(ߎD aY>p #6Dt]ϢFA7NA4\*)%ȂXi~Z)M`E4})5g݃=< 2m#FhE4a~ V'(>4C'`T=#n&>?ܫ:,(Ljr?:ë^Z7i>؃>8@C'@<ĞP(~GRjޫ:_ԃV G-l?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 RpAD?=@ r.Gx@*[泪زJ^ GjA,YnBHH.vw2tB-eFÍ$_: =›(/bhrE .xpZҮ&DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-,0"x!0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtVE99;DCAW"C=Xѣ24S# RL03L=DE?\3F78@-|>2 XÌ~Z'C2X%AIrdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,e-AXC-ZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`.C0lz@ܱpz 91'Dg {B 7W?#`[|-ĦyBp @:l,C%́L#8;;,,,C̕@Kxo=Z?p;7JDG183#F3z/A 0kD7`hN@Ľ{B3xa| JKH; vC{һ&{,C{2/H_s$H |X`>u+Ƀ/I3N0Bc0½ 3 nuS6atޫ.:ӊzLz0,⃃+eμǎ_Z^' "A (rZ'Ua`ûGu P҄(U,#T9}KR%odGGxCwdVYG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwìn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /CTu8> yg YJ`XLҡd]6XgehjlݖnpY ?!S(P. L5SM$!Qtǂ`F0Iu{5~%-MU-[d65uG`1hHeQf2euޙ}蠅#5w-(/##`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.=IIӀaw4jZԗOST hvԣIRBAi XH-SPqȁQQkep`?LpK D#HO- <7#!IT '.}IB;@땊s8Ō !1PQSe={0ZI , 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL<!ěGfbv+"&ӎ8"UG`٪*c $G@ @K{ *H)6d zX+ 0O402P*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙAx` Hw(ڕnk|=ie/n t5:j!Kg {t *Ё n#\ miq9rfRW-u=˜"@l +I_@G^5XAzD̡_\faуCeP=ƫ(ࣅH auzVBI;4|p g=6Bd%PP vLF|X0ЋAN|`"ЏFjh,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʐZBHĽװ؇LG]|`# 7B5D`ȁLt׏&xTc-=1m:!"1`%}>C 7 C $E}C [CR0^w-I$SH`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…(:kO$NFD pG:m"(#6 H(K  lijdZƏL&I! !L P 0fk(- D"RA::n86nC @ ‚ ƻB k !*A6`ց 4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ ƠLD qqȐBN-gj$ X|_b[F Q[k a-!<tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzhAn%l# * @-N$~%bMba c&%!J*N d ϖ!;!)JP瘔b  "((H<J XL. @1V-bdaS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* R`BxʬZh%2j!##LH@%&I1K4Ũr`A1> : s-c;#AҒF,00@OH>L"0p!@emKkvI@ ԁI! " ҬmIb !b⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʨ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨHQuU\"(V:bB\jFﵤoJ+@ VII3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^D*I.F `Al"8Uh!ފ0r_1STC } |6&Dx9B)D`>R>B|L!Rp`B5lIR,5xcI/R7Yߡk@:Do7W5 A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@" D{S[ 6L&Z0 "XvTh a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@a *m5A jt)"j ĕq)Qkp*B " x9nVZMDJ! DZL6 g eˀ" g]:2 H̗Zjʬ"R=d!** cxWjH//0#T!D@^)$@1RC{l#KjA :> cC3,6DB TXC.P*LBY hL$?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!$`!@*|⧇VY[ٟB:|aDY%!hMdAJ`F?zޡd0RGLUQ \N#맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->!` \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!$e2` 7n D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevةiH&7(-Gͺu2>G` `ʽ{ؽK<| .½{ :Fj|c{8”9I|3w4Bwߟw4hY(2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^w"!]&dÐ޻9s|Uݽ@|CD! Ll&+|޽*AF#\×vܕ6U3>G>,Q8=L8gv'v7cg|F=C>tp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(d̵\Jhh.h> iNJi!DRa0@= d$=$uO \7p5P;' _ #@GXΞ}\>X:C2jk_ȲFtՓV;jU[0ɏ/ k>[=׻줻n=v|a@ߨH'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճM*)hqF< 7l3_`Ƒqe:SFVSXYWBFqs-A?a:CX_c}߶c+>!?o>d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF'RZ0@m=ԀLl|Q0># jDTq$+K7 &h, r,XԵ5# Q(V-7=D HaGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]a$L3AҬڂ iYXRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY::6wYF1t3^)yK*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE9Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! P3NXaZj;.H".9P-/c54'eg*Aβ !Cd RF $DCyrFpoپ]xGc GaZo~Fe0A1Bd@G0K_Z Sd-i*~Bf$L Bzs 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`1* 1,4[@ *՘4E9$):~^S"*эkG%Zw,zh S;~%[(n>5η2*X"EtȂ|I!޲u T-{7»9Ki}Kv+N@f%S^G`bk/Ǽ@`td@9 (F! P`_ٵ2, 6Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[Mg&=,(}6➔$*A~0Hw`( 5I0Cw.Hmz;+d|Чu8w  q|y6݄3PrɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet?̴M ;+E {RsBGz6(w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz`.u9@@oӊSY Dh8+! ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG 1$P;nww.:43Zj;" GPxQĬzKذo! " 1LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T64aG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19uc( ?6%5H +@4&%A Jҕx/Yh>$$y3PoD7&ᨁC!Ux  wȸ@ &*؜,9 Dp,Q)3R*'Y-ɥ.aYd৐NnB':jQ;tI"Z M:O M4UU@ X,7ATI QAmbLg7 TFr岘41]  FId~H$|G?+zP{@JGFmUe:JaT2Pn |`=պI76З(r7'q) ðՇb[_t 2􁏒` `H0.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ()5>jH -r/yK:k,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4Y.'qQI`s#?8xQߙvG|I5"Jx- .o e+}E?z@#ֻJ1c0}NBPC@'1.G;`5d>luVDj\+оȽ}ُ:ϺUèo85Pnޓw,)I H#Iȣ-IHd XJٰ 4 6y  hGx>w耤x{ Gtr* ep@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jjt˷˸GZ؂w &% ~~ ) Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w8P+lq vYfhQ?<1tH$ί_tN 9ė|H(%;}x HY>x (\ РQ j#}N Ia9F@xe(f 9L o4"5#ERl%P?܀Ȟɀx% YR$Cu`!v'(J$|$DH5Egxp';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.9-Y#;1Jaf\zvKzT:FL ǼUhM(R;H ևv^N{0!9e~Ȁz ,՚IiPikeȁ  &7{xO@|}`E(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYN() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V9( <1 1m}h.<9KkǐG Hzoˇ8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q}HTWu/:$=  p t_Vi,ʣFw$f 8y>IgW|Xy7C \y˾D`ޅ1'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF XPӯdN+9Q9˸O[hN/wXÀp'y/_fġڳ!)9NHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - c&Bds(ѢF"Mt)ӦNB*u*ժVbͪu+׮oɆw]𺰁 ёNV꽙yo]KnKwݼj޻ݜ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwAmSzC'1Tc5áWI1Qwų~A_j~-NdUe CFA8uVMP9s,]2r#X'+آqφ)N?d0A܎ޏx`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=H`OK$Vԁ;;v [:HCb7Bq^ݓIBK&%#mj*S7PX'D~T0@#p-jctcP7Qkcf3pC<A"X,QFF>:6y3jެAt ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p {# 0F׵|;ꑵJuz=A ܃CS_ק:P>;ϥts*>3;cS=0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xl@Az%K6#j&af1w<)>o ,x PYF$)A\Ec ֱ;"Џ|$G> !fc,#8@*n QC#fwڡA+nēLdIG{(|KYL_` q #\&< J ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 c!H&sv ;8 @=E HgVH Q@H蔭XU}@i Y:= M%z!XB $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>8wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS2H1 @_t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq@-}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53_Tf1 z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}?`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u $^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?0C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7D zĉu\@=QAl<\>d!:@SU ]^ɥDHE;Ba|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp?@ p^s\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IAuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA=$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ!0Lndlc (u,x::IP3LlFZDօ<: =e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH„4:*ę/ }_z2ltI*,4q"DvW՛.") $cB c'RDD0*MԃQ0bɆTUi\J=u\IJ~W!$QD܃yV2+CDjშRk!%æ4$ C?),NT>ŪCH@DXRaY}; B?jĽTH$yROkCC-=liBvƙ`J=Sce^A ``)֖_ P C#zn ibLBܔH@ܭX;<, @0Hح4,E:DC-톕,ےVfd']=|G@0;x؂A$H]4: g͆-,ڎb@*ǩt-m-D@:A@ n`.;nҮ`u&f$1,>^J:l@Z"4uH:T=A)dfK$@ 4lO)T0'IE):% p 0@7zD>EAH@I>î @>R2D0@?/EHK_dHI0^>m` ?h@*D@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`'æA(CorU7L:ۣl@++F5'F4s)%lC" DT1*3pBp;pJуqb@ 3I 4=S0?UHAZz>RüW,AԈ ~Kn|R1D BPu8̳lAD ؕ#) ܃{@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ7=X@v}$$YTI&]U:lBp@}>ThxOAP $!^C=TA@ݏDXcJ:ßO?1@Ab,A)-BmDLKU#=0>)rUAP׾>}-,@#t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@& "*3޺ "{0Իo_)&NBALx Q l$"w&JwDbF['l u:+>>xqǑ'Wysϡ;p@+\yp{@:?3U |i}WYnaYf"+!FI xJTQe `V:z櫱{$yj1Ja xBI'D1SJ  @ށ@lGN\o!_MªgeJ n1!%@oVPiơ*q7+i5F ´ddǑGч0 y'/Թm=4"G^! 6;bgG,_}Z~P" 0dRr @@=PSR=j%PJh`s?. xG=*@*@(q aHHcv$Hz}b۲&IL1S 1 J=/!:!! xB9Αu$"`=E7`r38`]GDDP)I.@"oA dD"呕@*H}*x"H,TtPa GB c c  hBB7CƷ ~r*Z9@+OyΓ=O%Tj4AP. upMHgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:o5O[9zYgVCx_X\Q /"8N'Gw&d ba5exjtM#C4M=."7 H>d%DK, DHj\Gء_B0$tzpzYQBҵL`؀8H6&GVWW`T:  Õ`zqy0c}>!TtiZzUGbav5"` \ h c!"0=aYyG2Q4ApRd!9CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆD"Qah!"Q0 = 7} u-SV3{@ @Oa} 6apBQM` 2@vMVtr"iF2 TBJ k݋@B(sAA($ڍ@+ U|# @C,x$x, LJjtа `C?bP tp3!H߷guoDY.3zlK@8|`CN*6P|L`\ 1UStUJC ^Βݐ@3. =Щ%2 E`@%RtϞW):6X@Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC "Pc=K8@g/N(I& !pD!8d"J(Y,!r"N**j!VAp즱bMND*gM6Kb!Y:AxB#$AiAg0#>@xɰ "`hPXa & /߀0 H!Xa{< 8 !]!P!ڧ_#*7R I" |b 6(dA++T( a@&L &{A @P~ޤ1"bk gFL *@aj6 G#!}Rh)pamN/¹uA` ]*jBdY> B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'x"ƯMejGH D`Rd: -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8(H Y(ޡ-F%( #8> R!H@6@+\s88$`KH2T0@" n6` # ಩>B$&CP`&v|2!'B4"2 }'U46/QX8 $("7)^ |ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#Ԁ3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-Ab (Nd>8Pe:9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!xh0!pj!PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!r)6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫܗOi7Xgܓ@2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*AP5F􃏚>wYʑW;Џ=N=x ×k7\ 鿗IXjA@B%",Wlg!FI>@ܨ:[:`\83{6_QO_BDb@(8{#>R ~o?_-e;HW0DM; ؜-_Sތ7G.Wn?:!g砇.褗n{~;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGHd0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>1)GIUwD baŽza%XB7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ I@{l@pd>Cc%%䅃Lg@M% b(9ẋ>ς Hh`؂*ұFt\aG ҃ t`GJT-A@5Ct%@R:QĢpV! 0G㮂 5gv)^ zHuwS0KCôbƮ'ODH ȉox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ8 %P*k$" :djmr2(|Qvs@ Nܣ Ňd9DAJYN.0|XF 8 @YD #pLsUO3Ka!%K oPK$22Y\q0 k4/{|X*PlB8 duh,G'P.w8rAR Ǜ b-*-c,ad[]20 LA3G$''Q24G|HԹq @fABŰg TT ҉oP1) :tblh T/dwbńϯQ j4\XG<AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fr@CY ,\Y(Yz , ߨA+:M :d~0cJ7y*M}7oHΑ9!cA`H:1қg>Y^x+EKUR(ȣ;qAHt&U=S{aE/|6:r e!Z:BF1 `G-<zfʋ4)P(?H2< zb}L hjZ[ai v aDz7X&Yd. A%pGvq %8 pw?"# $Pg\E?ݔ@AV212W*e! sbK"2"X">(rS}g2"SR`xzXOJ )tb1G r i,@tb2Ac ON(LRpC NhAX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7с!DS@j+R+AvDE0vj``-b- H\!Et*>%`E*%υ= `& `T"l.72 BBuPTwLe8**@+e%p 9}2%p] yK0/r/b,p`dÃ06c5h0 ؎>|cm $*%`'2=^E@ H22v5D@8o:v#t#+.E0@ 9F`29PDΡ=48& 3!Ls2F -1s5(0#MWXEYܐV 6m6AeDivӇ_X#GP8 9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;pI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O0=؊TK PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گ(0 fiLSGj֌A@Up%VjKsjh yv(ń @P eTe]qMGd0qE6"ȫN*{%wr0SRvE;T+FS{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾BcO /~Dx:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2. +\}Ԡ0yp,iПfP 0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"KpqVt%m" p-*°s ʧa*̢vl8yM'H'1 Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-o;hT O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowHa~z&w]{s΂ }(;| ^EUa{0$ ;(ej%H݅""ܓ0; P_:]巹ה d5Dv2'Po t܋˜z [KsѥO^uٵows0ûzK𽻧aE ~KT։vJG~g `b!|P3J}*Po G0~J!9JǸz'{6%AS({H@ K![—oZHz"k!nN*xG>HodaZ|Q!NXа{ BtQH#tRJ+RL3tMF}j.Q8TUS*YŬJ.zatz{'*@\YH  {':Xu0! Ma{8!%1g6^ 1wܫ}Fʁ.̳R`1_~Lz9SO"[؛7! 8 R~ѧz`z `e2fsyg{gj1`h@J{b`jzkkƔ  6dKƘҶn{oo* W.kgq#|r+r%pIő3r$7A^E|@)t@wd)MyJT!40!Z:р `3vR$@?_Z `Au(1;&CpD0A*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|HjTFb qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^сiQ0x@>0`LA@@&0 \,g2Rt[QH1|@l C3(i:ῥc62HG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6P{ kVd!91ekيfցXt t*B&VbE9K?D؄m\B.x4`GX9'#) $b[~8At; "Ti@5$yሜG G3:Qzm&[(Or|匜e$0F0氎 ` Ubare2v=U @rKzLЋft\C ,E4wfhґ9J݀E= lò Gd2 UB H) Aj<臜}ld'%#Fs`d/Bp~"+CdֳRRpESVCX@\(Iq~^#H"Dbwt7<9 x-EHSKX ]T&ހ 02`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>H, }Cz3EFv*P&[ D`Aͻ/=uE:0"YW#W*3 ˈ.A#Y ˇؠr? " @ #Q!؉kq5 J6K: UA ;7/ |pUzkM c` (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 D9*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5mG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kiʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-eZ@xC|~@YTfXE^n9 (ƱStd H}X|#}pup|`v .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{HMT#Ai 5leDof=w#oˇd@)7[ .(rq|#B!Y"x^|8D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4<dz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@=KiؽwXݽu⣒a6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzxt`œ '"uB|(A"c͝?L|%4!Ȳ{m| Wz((v=q `oqOԁ[ L_؞/S?Y`]'Дc3AA}G:|t> ;#># :%>)"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>#AAOp UvY>4@:(>mp ぐР&tE5GhCB Y*Wmc %Q, A3YnKdW`d@qΫ4:"$=f,J;-Z{-jm9;C;:T$TL؀7RwX.[:K ]&t=PO 1A):PlJ:S+: j>4pOTq'r/79qcN{"NKLD*L0̥9Bӝ@=!4 },)j}©3@:Dy^wJC ^)@@~^i7:80#贁LzT=)zPXAHp(MuptKӇhr\goB@ᝤnA#|i?٠"āf?(< Eoc"BnCB=V(} a| (E$쐂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(CU`'RLpz)GEpы`cS8 2 XB=uCO1v5^[J l?k`n;zCJ # 2:~1$6yN.#H} #Z,5ɂ%/-Eb\c,H0eɂh@3)PB|@TM:Q+[ċHg+tQ XB+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0'츧>drqb\i>1,!9PJ8DN/hON;L宾ax@ns9 ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7D CCU zLh@:@z,C胹mXC̮ԝ|:!Wd,L ^ /| m,;tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]kՃ,tL`‰dBH]lDDBNL H OB|CI*CZv(U'* Wxɑih>XG!D>|CYeP5fWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮD El;,A$ChEm}Ga@1KN;Tܱ&<Ԗ,D:D9cG^^=l#]P.j!<*С^}aH@@E 9*0kz=NL!@C?bD*i°@lNLlR mD|lĊ,WC = >}KIN,ҰzB)ӡE==ElrjJYUB+~ld$sAmY @+8]@),Bס" رÕJA&..6 %hN脐`<VzH'Dd@܃;[BL@AnIOaO0^M MB\PPan.FCB.εc0DĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/垣R>H DWH2p|zcxHCmPȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅@-\.#,A&'2((* ;tr g7QD)B#h&H>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VH&|z&׹V+/:2rhGoF$+$K @'8g@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG, <>P1m$ EP4Y^> h8Ŭ;#,>l ̸V%hew?w'V ENDXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAA/l"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/SC>!˃&jAoT7CAzZ4K'^dYA;J<1ԃ\ 1˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPDu'\h;`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝ,@,4MӨ@H)H D|zܻ/؉(P݈{؅(]>F# !E@| Ա3X̋;y ]Ov qob@\D^剎;<p(S:*Ӂц p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W" W RpA6mK o; {ם+QC*|[u+Cu⊟DqT{Rz6`v,| H|lA %((';4Y$3:o9@?J"d2'iKvA}jhσЋ>/'"0Ĕ3 ~%),;" &BQ9 0+ʋt|J&J8 }.NJ~(Mr=t]v}xW)wvRI0Mz>xg xa`<ha4(O!p ̠ө W]5|ީħ'Jzק20Ftx  " oxwؘu( / N(PpvFj:`CVèf'G OnjAO6+, [tPH@ iǭu|9'ph{9믌&0|>0% hC|G8xFu8A{}Em hH)L:; _z֩q\1yq|~]c( Qߪm9+S>!0UA ^9A~!!ah_;AGFDH \$&xa,w<@mBxj`GDLg䘏0N C2YQ)E鈀qzF8HH#>Q"~l@?XFu,~y#'aTeq́`Y>b\t 7@`E=`)I5" ҅Sz[9K ,<zrH;/€cp7-dH aP<aA EG`%QD"7F5<(BeQM68_~WET,c EdXKhE(o`6@>bF*"ff v#2@R0:##o;"#H` {LO@ͬb !B*BR" !A TN@&#f/b³)*xbTZI^cj+ bX'*MJƮS:SRphΆ!CJ"$Rma.ꡙ( $X?@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~$` 7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 08IP* kaƠIZe'+L-$r=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$ !ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ejz ĸ6qdBT'2@"b@)QF FA3C#B2({DE/0@"` *Rhb3K3%BZeb e؊4A arB sTjރHcG"`? ;F# i6;AƠZAHIn>A q.^.N'lzG AK$Nc:'!D,!s//f$!dS/D"`*e=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`A@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@e `2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  Bd `k3 `k"`#F)xhz6@Ge$J -%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF  "◒+ْ3.tNFp$EZ-!"A0h٠zx$"6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6: :0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?B #^r`'@F@*: @V 6CF*`c()gf"HSX]R@x`c(/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F|` @"y@"r}'v}CBnDHbn@TSԁL%0 "Ё b1`=` TJaB?~Bܰ|փ0BQ^AZc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+p%Y.B #7t[N@=vE8HLG84!%ߥ3*ݻrv7n\YԐ5T)ӕNWjV 5X-A|Q4HESs= *X)d،6t=nQ>~a|v2OުDžO4X Rpm=!{o}P„5jehmp م ` e_na~b"Hb&b*b.c2Hc6XYnp\4BE  ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1܃A3@B^@>EA>SթXcBs8h s7 mMɪdq}Nꆓ2BPYt8@X$Bʠdi_j:"D E!IВj8$:I)#aM`>#E 8&0S en> NȮš,!>|;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y$=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) :d:D7A0/h;N5W;j%ɔ!:t>3BDh~}ЦkUtHkΏa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|@ €z\ A*~̯ˇT #$nw:ʹ@0 B!Z݈0Qn {HHIO@D ,2Dp3_a6DJ@NB3}0!XWB@)-5 Ȓ8>8cq&80 V''v]mzWXV$(cs40D|# ^uM/=Hh v@=q` 7 ps,9ωt~Oq!P\бdh!39*3%飞>ws%z{#!Y=QȖs򨬄pA~oStw,S|[9ާ`$1$p@S̈́` aB%&no9#µ `} ?(qPJ(<M&A1 aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"@P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vZ" aqnIPt IOV<9=@ tsY? IR@KcF14&#p<4X)@V`71X# ED)OIm7!9@ 1<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig5 qqwj,>3(5P `%&֑mo q*s=fS@[|Z@.v!0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2@jqqzOR% ߐoч^h7(j@0@ : `ͪ۷ $'PAH}ͅP `gB0xRي"7W`zC($#:x p @%"@c P S) aUsך S!#D&@ҩwS鲧e ߀Rb芭 ؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vsɾ5ɒ,{7B `{9 38^|V2QK@Jeʃ7H@"iOYjp j 2ܶȻ!0x,N0P" 2ġ'=_C'x& s hvBgvG!= kyT!59@JmM)Beۚcc=Mm׍G`pce4IT%]$CI@{o5`f1K#Z]Ey,#Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^3K0mk773/Oı$_7R+{n0 C -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5}80h O]ZY1?5  2e[ F=3}=?]ȁ@5GVz#.< i%oB/> Bwʇ}z$Cg6x:d!2"C#DOD1EWdE_1FgFo1GwG2H!$YЬ@h$>Y1D 0c`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`uqx+Y N(YJ=u;U l @0RЧK; 3dQc z3F2ޱ ]R aPdDZG-7Dd&>8`G (S@'j7e:Ǝb ~FeCA{,c@My g*@u*@tU1цjU M\D >]؁xІȚt!6b1u!HoGe(ww{#0 <{q-W:Rv24._a'XZ T@Mޑ4a@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"QZX !&@2,P (C=xW a=%O\/ R$#y&A0 \@.x0&/P __O=@cl/? ҃u88jd X_‡c<@PZIf#8k$@h2+e"hٜW"be,+p2 A=zJvֳmhE;ZҖִvF1*#x%`p b $6qκFVo@0Q YWP).u c(TxMɛ vxFkTdt4{9XZh-P א ~ X;~Hpnk`- c@u1?HFϤ  CIu(`0o"k"FPtXh wȥ|DJI؀>:X!4 zpYh( ƍH5@> +ۣ(epOWl~ `}֒ .}8C n "s99b@U`{P-npdTPA3wxE @|Ӈ,)Έ< ƀF Ȁk~ ۓ  \3` }x iԼ'\>@ `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇1u`NN{6IZz BS)6{K=Xd x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!`{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH thHz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@F(0ԄmmmRpIkip>ߖpySnDt)7SGcHYam66B=#G$/yۺv\b huX|7+,r|9n(@Zn$q ́d2Qq-u`Btx2JQ x F# Z]XdYMKa: pt1 `2Ϝ2vH*Q' ,JPt@N(ljt0|)-P%tI K/0t5pn3T@Tvf vivk P@oJ}h{{0r}׀,6~ /GL'p{"`P@z]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'cܳ ߻{=R,d'E !ɚE uҁB䃜WC>Pa@t^2D3 o>Ev4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM96p H0 exFF`} wшgo {œW@{􍠝jN=Ys!qs?O>cY> DOPL=vOSs} Q`;3=cj%S@#@4;:Q; 3[F@:oF24B8{I  2<0@ ,2:=~DAf lL!I?)TNZgƤD\=|;"̔@fSD [ T;4$0;2d,!>|}IpCUPOZ+`HbԳ7^>Nw= wT=MG@"n.SyHzn}["y. 0j |=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% :@^:l5rFX5^G};sN̝k67h>0va=}hDUSKSn9:o[;T>*%f@:3 @= (-exO:RSɎ#:fzk7 @=b dAUO?@LiߐU ߳H Hoe;޽ɖVI|ǀ[vך+1+0ANe @^>|wܽ.2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U1'M!=@Pz8$zW.J:*t`0@"ݼC": CO,v I LGeѣO<P>ҡD,7H>"‘FL=<9=½@2Ȕ,đ/`80HjЏUPS9i@tL8KGTGєx5.F}c2)3(V$>DYϐ!0@x +'ZDIʤM%XyOB)\$ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Rɢ A=yς6-iKkӢ=:hQ,#|H$e:QB _79F`@?Ґ*5&5(1>{c&YI`b:XzóefM1HjRZ>  O|b:H7<;_c<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏt@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aUQMDyL42,CǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJaocSimʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX`8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*0&3`Dl؁$>%7HreGhQ >ï@ԱkSv5)eDp L,HS*Dk[\\ բ=Koӣ>=Kd4+ZIbQFc 6XTko< @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ODYWNCP@$JH$4(!RO`"4'H`\HPh] \Jb+>!H|@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;D,=>EpC(Ns0  D'EC-v̈́:v8]:L;T@> K?L^ "QäԕCC?XU@Y N8D@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_@P&aaCb.wCT ;  RapCE,Ft=[gC:EZ-;8=PBWH'|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CMO x$v-Nŋ>C"D,qhi kԼa pA]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F0>Ԃ`È^>@c7xSDLIAtG@@fT@ 7L`\Mh@A HԔk]N $2@KYҫ~`F]/Ԃ/LgaHH|Ef($j*Dj Ujl\X ܃' Lfe]ZxyɇPȂ>T@/G?ȅ(  &NATI$8Yt,ST$c ~7Tik0F*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*( 䀝!͍j, ioboo$Fd(F-,.C$p po52oqpt.'\+FKcpksp{pp  p p ?X0 pp q#q+qi ;CqKSqC[qksq{/qqqqq1qr r!r"+"3r#;!#K$Sr%[%#G$c&sr'{'_&(r))(*r++*,r--,.r//.0s110#23s3;3'2C4Ss5[5τ4c6ss7{-k78s9Wr8s::s;s<>s??t@ @tAA#tB+B3tC;CCtDKDStE[EctFkFstG{GtHHtIItJJtKKtLLtMMtNNtOOuP PuQQ#uR+R3uS;SCuTKTSuU[UcuVkVsuW{WuXXuYYuZZu[[u\\u]]u^^u__v` `vaa#vb+b3vc;cCvdKdSve[ecvfkfsvg{gvhhviivjjvkkvllvmmvnnvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c! ,fBBD^^\jjlnnl..,&&$VVT 224JJLZZ\::<**,zz|bbd""$>>@ $(8蒄̜<08b\`BH@Įprlttp||x|v46@`bdp `4<<Դ86(Nfnp.(8X@Xx0.l0.zfhFJ@x\@<<4 ʔh\`pfp<6УKNHJDv3|{Wi˟=:|ϑ2/z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?דּDF)TV Y3:3(Sp Ih&QlIGqvdP;lЏ(`堄jj_wP@Ip#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:2&Hx@FAHn[Sdq%$-ښACQ:`,Pp;DϑhBx= POK~[:tPHZa}pϲ,@s@ԃ4:H:Î,20PX(6k;=ALbG C@B)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:דB/j " K!OSv=9};'B3\"7Xl{ܸ::w%  X>#=o ֱ |%"~Lڂ#!@( $ ϐ8|C77 +1AzP  {$uhG2ӱD (@CH0USȗz`G3B BPa=q#=q t $ @"J#>H1IHA?B SrI!݃>*`Y%@Zzs!|pȁ'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1px:&]jV$`A" H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;YU1V:u LmS&FD`MG=2Mj3s+nd"tD IE nr#!@? 8~jb)€waG*߭ؑk\nV2Q`-H[yPDLZ*uYr0s Vk>umJ\#"ykMϊe2=cA?CXlA'8"x3 ]gLoX@% H,0>E ':܂0`;dE8"0rYtY'uh 1Oey\+w\Y P,r*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lKG)lLbiOl2-sER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD_;WpBz4j{dQpt d?KD;PT."pd<6Hb_}u\>e="&ث :`qh@;Ԟc옍8&zk-uXR@k) H>ĨBC).wD=6-(7P O|  2t ! )HЏ{jC40!Hy [z@ ie+ x!܇  ~@TT'EV=)= P "P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R`rP+v02> h_P=@Ѐh b}~hQK\G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ) !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsLLW` ym@pNI`j왡HIuK$y'P27v)Wa mrwe\2*_*r_ș:DZIG̢sR>.gm!-*.` r`0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 40wQ0O1 dZJF"3@h0/D?#u\"gJeP#0:蚮:,zT Yq$"AV*)PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R@a-{ 2;4fc.gZЅ) "%"]b*U$]ǭQp@.H5Zq=K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$6@Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mL c cP 5a P@Sq'K>ܛP$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛Y;z{.#r {W s$T $zY'|bUCڵ*T%"T{ .y :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ē;NA2 @Xս ½Uf܋d_T=1ޑ*S9=4OTH<~ *`R;(卄Zڨ,{OcFx׆zk/R2{'w'YY1.*AJ*>ˇK0sL24L4TsM6tM8Cgt)ex`&PI֩ p(b`H*F{:H{`z*w[,Y4]&g - `v" ?p"ԛi&N=bz/ dq@Dl/ @2Oz%0!Jŀ0kŬU]>Pi݋t"h\hwa6 `b3xc;cCydA@~*  ¡|bJD<|${ p@J(u2ǀTjwؙv b6T  *(L;# Yt(LU2d{|7|y 4ȏodQ ~ ҩV|Cs$%47!j AQ 5nc2Bu@ uPA $@V$Izv x8=GyBD?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nҏq6b1a@ZԤP !uzaء_LoB߭c Ckʁ/BFXu#bJ,/L f#\*p;vAlu,dqSr(G&X=|`1yͷswP-YH/_xcN!3uIUn?h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ8v 0Ä(:\" 9gxH3%;FIDS 3 @ û ɵ0 ~{pي{Вw'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s);' ud( zHq$ xGQYZ,[̇\\ gӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ18BS5` 1A@ Y21 5:0J$.+ax+o`˫x@ Dj, ܡoMP`LQi{ |KXLtZP FL!R0t e L܉Ph@< *;o0q 1ą6ͅ  * K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 6Ә?P#ly*ڄ-*]2L%k B8{R"#Z'hStX!XY1-3#e$%RHu«с1@$ S`xYH$*e4D< 1]L }ӒXtզ(֭V NdVi$N#䜈(݊9HzԁI#tx( [5  h2IѷI4x xy{|h$ 9<= bP*{u+C5LA [m5%"0h@LQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx?a]=cb'ч~(05sneWY=.(D!ntPO ćI @#IXj< ERdλw|Y6\{N!wJYI{h ʠ!eR!&M )hɁ4SpB9mRF"!""# z14S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$9 M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u X]2 Obc$H6av]v᲋⬉L^#_n3 9W 1vw tjwvIݘ3w).x? }(1kc th呂0Ӱ¿,H GH1`efՅPHg3]y?Q ]7 F%0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4EoP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀1Sq{{V^ifN|Ҙ$W﷍{'|hS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=vC{bsg> ~"\%ihPĻbY>r!ٸ[t37b@>FSh|KAFEbrO;޼O5\+bXi-Bʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=4UP+vP<<.тIƒ PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3B(A=0`CC 7 N#A=|$$ԳT`R|=N=E68D#@Fl![@:+[J=b?KCE{O?@pH0T{n.NF;3ê) >( d`fwN+3A+-b~sA s= D~4޳AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=cNdQO9[a> m dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX p2~>ʀe#A@GwD %'1`"jh, !72 >~zpQ#gd5$ @2( n+aY" . |~;I @?"xi ^zlP 3x ^A&|dr$-2z;fG<:h@y|qc(Hzh (<5t AZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠%Tu ֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,awf8z & >e>LH/` ^M ^Aɥr@xh Cxr$LTzifRV^ pT)p` 0A\" c H,a%FDQ}L$G1ƺ}B+LdT)P1݋kr d0D) O9-s;wpd7 y|n$`|qH1,A 9Oo׃>r|IoXc M[AaȘ֑k{>BM\M0Q{ƛ*ppq7-. `/k6H[QM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:P`<[H=|2[m; !l#ʃi:Y?xd ߐA$G`03s7NB ![E#GFUG!LS:h)H {ԦdCz%[ BYЃ>vu݇G'V&2|CK&@|<$GP7?^A  Ra`\BD-5FCUD39A, ;ަOE Oў/I?{ ;AY_A _!`%Y(MJCSL;5C8`V> ECZ}0r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b> -+nBXJahA4m @4B_v8 zLA A;XXPġ+bD ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4DЊ7@g%H >$2MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"lxIeZR\CF47̋IDBB8SEXiBP!\HdI>J:\7& Gh$S dHŸAH afY-DzGD@ACɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D'|CT&eAH'g#yzZ,D?XrC$()FD: f(; W4gACGK*߅DٽmIiA|niE<&D e,GOAK;<-Yi&_BܟA4@E(ߎD aY>p #6Dt]ϢFA7NA4\*)%ȂXi~Z)M`E4})5g݃=< 2m#FhE4a~ V'(>4C'`T=#n&>?ܫ:,(Ljr?:ë^Z7i>؃>8@C'@<ĞP(~GRjޫ:_ԃV G-l?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 RpAD?=@ r.Gx@*[泪زJ^ GjA,YnBHH.vw2tB-eFÍ$_: =›(/bhrE .xpZҮ&DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-,0"x!0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtVE99;DCAW"C=Xѣ24S# RL03L=DE?\3F78@-|>2 XÌ~Z'C2X%AIrdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,e-AXC-ZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`.C0lz@ܱpz 91'Dg {B 7W?#`[|-ĦyBp @:l,C%́L#8;;,,,C̕@Kxo=Z?p;7JDG183#F3z/A 0kD7`hN@Ľ{B3xa| JKH; vC{һ&{,C{2/H_s$H |X`>u+Ƀ/I3N0Bc0½ 3 nuS6atޫ.:ӊzLz0,⃃+eμǎ_Z^' "A (rZ'Ua`ûGu P҄(U,#T9}KR%odGGxCwdVYG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwìn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /CTu8> yg YJ`XLҡd]6XgehjlݖnpY ?!S(P. L5SM$!Qtǂ`F0Iu{5~%-MU-[d65uG`1hHeQf2euޙ}蠅#5w-(/##`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.=IIӀaw4jZԗOST hvԣIRBAi XH-SPqȁQQkep`?LpK D#HO- <7#!IT '.}IB;@땊s8Ō !1PQSe={0ZI , 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL<!ěGfbv+"&ӎ8"UG`٪*c $G@ @K{ *H)6d zX+ 0O402P*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙAx` Hw(ڕnk|=ie/n t5:j!Kg {t *Ё n#\ miq9rfRW-u=˜"@l +I_@G^5XAzD̡_\faуCeP=ƫ(ࣅH auzVBI;4|p g=6Bd%PP vLF|X0ЋAN|`"ЏFjh,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʐZBHĽװ؇LG]|`# 7B5D`ȁLt׏&xTc-=1m:!"1`%}>C 7 C $E}C [CR0^w-I$SH`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…(:kO$NFD pG:m"(#6 H(K  lijdZƏL&I! !L P 0fk(- D"RA::n86nC @ ‚ ƻB k !*A6`ց 4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ ƠLD qqȐBN-gj$ X|_b[F Q[k a-!<tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzhAn%l# * @-N$~%bMba c&%!J*N d ϖ!;!)JP瘔b  "((H<J XL. @1V-bdaS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* R`BxʬZh%2j!##LH@%&I1K4Ũr`A1> : s-c;#AҒF,00@OH>L"0p!@emKkvI@ ԁI! " ҬmIb !b⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʨ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨHQuU\"(V:bB\jFﵤoJ+@ VII3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^D*I.F `Al"8Uh!ފ0r_1STC } |6&Dx9B)D`>R>B|L!Rp`B5lIR,5xcI/R7Yߡk@:Do7W5 A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@" D{S[ 6L&Z0 "XvTh a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@a *m5A jt)"j ĕq)Qkp*B " x9nVZMDJ! DZL6 g eˀ" g]:2 H̗Zjʬ"R=d!** cxWjH//0#T!D@^)$@1RC{l#KjA :> cC3,6DB TXC.P*LBY hL$?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!$`!@*|⧇VY[ٟB:|aDY%!hMdAJ`F?zޡd0RGLUQ \N#맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->!` \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!$e2` 7n D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevةiH&7(-Gͺu2>G` `ʽ{ؽK<| .½{ :Fj|c{8”9I|3w4Bwߟw4hY(2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^w"!]&dÐ޻9s|Uݽ@|CD! Ll&+|޽*AF#\×vܕ6U3>G>,Q8=L8gv'v7cg|F=C>tp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(d̵\Jhh.h> iNJi!DRa0@= d$=$uO \7p5P;' _ #@GXΞ}\>X:C2jk_ȲFtՓV;jU[0ɏ/ k>[=׻줻n=v|a@ߨH'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճM*)hqF< 7l3_`Ƒqe:SFVSXYWBFqs-A?a:CX_c}߶c+>!?o>d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF'RZ0@m=ԀLl|Q0># jDTq$+K7 &h, r,XԵ5# Q(V-7=D HaGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]a$L3AҬڂ iYXRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY::6wYF1t3^)yK*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE9Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! P3NXaZj;.H".9P-/c54'eg*Aβ !Cd RF $DCyrFpoپ]xGc GaZo~Fe0A1Bd@G0K_Z Sd-i*~Bf$L Bzs 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`1* 1,4[@ *՘4E9$):~^S"*эkG%Zw,zh S;~%[(n>5η2*X"EtȂ|I!޲u T-{7»9Ki}Kv+N@f%S^G`bk/Ǽ@`td@9 (F! P`_ٵ2, 6Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[Mg&=,(}6➔$*A~0Hw`( 5I0Cw.Hmz;+d|Чu8w  q|y6݄3PrɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet?̴M ;+E {RsBGz6(w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz`.u9@@oӊSY Dh8+! ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG 1$P;nww.:43Zj;" GPxQĬzKذo! " 1LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T64aG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19uc( ?6%5H +@4&%A Jҕx/Yh>$$y3PoD7&ᨁC!Ux  wȸ@ &*؜,9 Dp,Q)3R*'Y-ɥ.aYd৐NnB':jQ;tI"Z M:O M4UU@ X,7ATI QAmbLg7 TFr岘41]  FId~H$|G?+zP{@JGFmUe:JaT2Pn |`=պI76З(r7'q) ðՇb[_t 2􁏒` `H0.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ()5>jH -r/yK:k,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4Y.'qQI`s#?8xQߙvG|I5"Jx- .o e+}E?z@#ֻJ1c0}NBPC@'1.G;`5d>luVDj\+оȽ}ُ:ϺUèo85Pnޓw,)I H#Iȣ-IHd XJٰ 4 6y  hGx>w耤x{ Gtr* ep@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jjt˷˸GZ؂w &% ~~ ) Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w8P+lq vYfhQ?<1tH$ί_tN 9ė|H(%;}x HY>x (\ РQ j#}N Ia9F@xe(f 9L o4"5#ERl%P?܀Ȟɀx% YR$Cu`!v'(J$|$DH5Egxp';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.9-Y#;1Jaf\zvKzT:FL ǼUhM(R;H ևv^N{0!9e~Ȁz ,՚IiPikeȁ  &7{xO@|}`E(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYN() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V9( <1 1m}h.<9KkǐG Hzoˇ8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q}HTWu/:$=  p t_Vi,ʣFw$f 8y>IgW|Xy7C \y˾D`ޅ1'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF XPӯdN+9Q9˸O[hN/wXÀp'y/_fġڳ!)9NHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - c&Bds(ѢF"Mt)ӦNB*u*ժVbͪu+׮oɆw]𺰁 ёNV꽙yo]KnKwݼj޻ݜ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwAmSzC'1Tc5áWI1Qwų~A_j~-NdUe CFA8uVMP9s,]2r#X'+آqφ)N?d0A܎ޏx`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=H`OK$Vԁ;;v [:HCb7Bq^ݓIBK&%#mj*S7PX'D~T0@#p-jctcP7Qkcf3pC<A"X,QFF>:6y3jެAt ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p {# 0F׵|;ꑵJuz=A ܃CS_ק:P>;ϥts*>3;cS=0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xl@Az%K6#j&af1w<)>o ,x PYF$)A\Ec ֱ;"Џ|$G> !fc,#8@*n QC#fwڡA+nēLdIG{(|KYL_` q #\&< J ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 c!H&sv ;8 @=E HgVH Q@H蔭XU}@i Y:= M%z!XB $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>8wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS2H1 @_t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq@-}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53_Tf1 z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}?`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u $^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?0C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7D zĉu\@=QAl<\>d!:@SU ]^ɥDHE;Ba|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp?@ p^s\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IAuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA=$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ!0Lndlc (u,x::IP3LlFZDօ<: =e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH„4:*ę/ }_z2ltI*,4q"DvW՛.") $cB c'RDD0*MԃQ0bɆTUi\J=u\IJ~W!$QD܃yV2+CDjშRk!%æ4$ C?),NT>ŪCH@DXRaY}; B?jĽTH$yROkCC-=liBvƙ`J=Sce^A ``)֖_ P C#zn ibLBܔH@ܭX;<, @0Hح4,E:DC-톕,ےVfd']=|G@0;x؂A$H]4: g͆-,ڎb@*ǩt-m-D@:A@ n`.;nҮ`u&f$1,>^J:l@Z"4uH:T=A)dfK$@ 4lO)T0'IE):% p 0@7zD>EAH@I>î @>R2D0@?/EHK_dHI0^>m` ?h@*D@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`'æA(CorU7L:ۣl@++F5'F4s)%lC" DT1*3pBp;pJуqb@ 3I 4=S0?UHAZz>RüW,AԈ ~Kn|R1D BPu8̳lAD ؕ#) ܃{@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ7=X@v}$$YTI&]U:lBp@}>ThxOAP $!^C=TA@ݏDXcJ:ßO?1@Ab,A)-BmDLKU#=0>)rUAP׾>}-,@#t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@& "*3޺ "{0Իo_)&NBALx Q l$"w&JwDbF['l u:+>>xqǑ'Wysϡ;p@+\yp{@:?3U |i}WYnaYf"+!FI xJTQe `V:z櫱{$yj1Ja xBI'D1SJ  @ށ@lGN\o!_MªgeJ n1!%@oVPiơ*q7+i5F ´ddǑGч0 y'/Թm=4"G^! 6;bgG,_}Z~P" 0dRr @@=PSR=j%PJh`s?. xG=*@*@(q aHHcv$Hz}b۲&IL1S 1 J=/!:!! xB9Αu$"`=E7`r38`]GDDP)I.@"oA dD"呕@*H}*x"H,TtPa GB c c  hBB7CƷ ~r*Z9@+OyΓ=O%Tj4AP. upMHgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:o5O[9zYgVCx_X\Q /"8N'Gw&d ba5exjtM#C4M=."7 H>d%DK, DHj\Gء_B0$tzpzYQBҵL`؀8H6&GVWW`T:  Õ`zqy0c}>!TtiZzUGbav5"` \ h c!"0=aYyG2Q4ApRd!9CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆD"Qah!"Q0 = 7} u-SV3{@ @Oa} 6apBQM` 2@vMVtr"iF2 TBJ k݋@B(sAA($ڍ@+ U|# @C,x$x, LJjtа `C?bP tp3!H߷guoDY.3zlK@8|`CN*6P|L`\ 1UStUJC ^Βݐ@3. =Щ%2 E`@%RtϞW):6X@Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC "Pc=K8@g/N(I& !pD!8d"J(Y,!r"N**j!VAp즱bMND*gM6Kb!Y:AxB#$AiAg0#>@xɰ "`hPXa & /߀0 H!Xa{< 8 !]!P!ڧ_#*7R I" |b 6(dA++T( a@&L &{A @P~ޤ1"bk gFL *@aj6 G#!}Rh)pamN/¹uA` ]*jBdY> B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'x"ƯMejGH D`Rd: -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8(H Y(ޡ-F%( #8> R!H@6@+\s88$`KH2T0@" n6` # ಩>B$&CP`&v|2!'B4"2 }'U46/QX8 $("7)^ |ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#Ԁ3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-Ab (Nd>8Pe:9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!xh0!pj!PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!r)6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫܗOi7Xgܓ@2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*AP5F􃏚>wYʑW;Џ=N=x ×k7\ 鿗IXjA@B%",Wlg!FI>@ܨ:[:`\83{6_QO_BDb@(8{#>R ~o?_-e;HW0DM; ؜-_Sތ7G.Wn?:!g砇.褗n{~;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGHd0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>1)GIUwD baŽza%XB7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ I@{l@pd>Cc%%䅃Lg@M% b(9ẋ>ς Hh`؂*ұFt\aG ҃ t`GJT-A@5Ct%@R:QĢpV! 0G㮂 5gv)^ zHuwS0KCôbƮ'ODH ȉox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ8 %P*k$" :djmr2(|Qvs@ Nܣ Ňd9DAJYN.0|XF 8 @YD #pLsUO3Ka!%K oPK$22Y\q0 k4/{|X*PlB8 duh,G'P.w8rAR Ǜ b-*-c,ad[]20 LA3G$''Q24G|HԹq @fABŰg TT ҉oP1) :tblh T/dwbńϯQ j4\XG<AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fr@CY ,\Y(Yz , ߨA+:M :d~0cJ7y*M}7oHΑ9!cA`H:1қg>Y^x+EKUR(ȣ;qAHt&U=S{aE/|6:r e!Z:BF1 `G-<zfʋ4)P(?H2< zb}L hjZ[ai v aDz7X&Yd. A%pGvq %8 pw?"# $Pg\E?ݔ@AV212W*e! sbK"2"X">(rS}g2"SR`xzXOJ )tb1G r i,@tb2Ac ON(LRpC NhAX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7с!DS@j+R+AvDE0vj``-b- H\!Et*>%`E*%υ= `& `T"l.72 BBuPTwLe8**@+e%p 9}2%p] yK0/r/b,p`dÃ06c5h0 ؎>|cm $*%`'2=^E@ H22v5D@8o:v#t#+.E0@ 9F`29PDΡ=48& 3!Ls2F -1s5(0#MWXEYܐV 6m6AeDivӇ_X#GP8 9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;pI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O0=؊TK PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گ(0 fiLSGj֌A@Up%VjKsjh yv(ń @P eTe]qMGd0qE6"ȫN*{%wr0SRvE;T+FS{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾BcO /~Dx:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2. +\}Ԡ0yp,iПfP 0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"KpqVt%m" p-*°s ʧa*̢vl8yM'H'1 Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-o;hT O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowHa~z&w]{s΂ }(;| ^EUa{0$ ;(ej%H݅""ܓ0; P_:]巹ה d5Dv2'Po t܋˜z [KsѥO^uٵows0ûzK𽻧aE ~KT։vJG~g `b!|P3J}*Po G0~J!9JǸz'{6%AS({H@ K![—oZHz"k!nN*xG>HodaZ|Q!NXа{ BtQH#tRJ+RL3tMF}j.Q8TUS*YŬJ.zatz{'*@\YH  {':Xu0! Ma{8!%1g6^ 1wܫ}Fʁ.̳R`1_~Lz9SO"[؛7! 8 R~ѧz`z `e2fsyg{gj1`h@J{b`jzkkƔ  6dKƘҶn{oo* W.kgq#|r+r%pIő3r$7A^E|@)t@wd)MyJT!40!Z:р `3vR$@?_Z `Au(1;&CpD0A*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|HjTFb qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^сiQ0x@>0`LA@@&0 \,g2Rt[QH1|@l C3(i:ῥc62HG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6P{ kVd!91ekيfցXt t*B&VbE9K?D؄m\B.x4`GX9'#) $b[~8At; "Ti@5$yሜG G3:Qzm&[(Or|匜e$0F0氎 ` Ubare2v=U @rKzLЋft\C ,E4wfhґ9J݀E= lò Gd2 UB H) Aj<臜}ld'%#Fs`d/Bp~"+CdֳRRpESVCX@\(Iq~^#H"Dbwt7<9 x-EHSKX ]T&ހ 02`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>H, }Cz3EFv*P&[ D`Aͻ/=uE:0"YW#W*3 ˈ.A#Y ˇؠr? " @ #Q!؉kq5 J6K: UA ;7/ |pUzkM c` (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 D9*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5mG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kiʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-eZ@xC|~@YTfXE^n9 (ƱStd H}X|#}pup|`v .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{HMT#Ai 5leDof=w#oˇd@)7[ .(rq|#B!Y"x^|8D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4<dz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@=KiؽwXݽu⣒a6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzxt`œ '"uB|(A"c͝?L|%4!Ȳ{m| Wz((v=q `oqOԁ[ L_؞/S?Y`]'Дc3AA}G:|t> ;#># :%>)"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>#AAOp UvY>4@:(>mp ぐР&tE5GhCB Y*Wmc %Q, A3YnKdW`d@qΫ4:"$=f,J;-Z{-jm9;C;:T$TL؀7RwX.[:K ]&t=PO 1A):PlJ:S+: j>4pOTq'r/79qcN{"NKLD*L0̥9Bӝ@=!4 },)j}©3@:Dy^wJC ^)@@~^i7:80#贁LzT=)zPXAHp(MuptKӇhr\goB@ᝤnA#|i?٠"āf?(< Eoc"BnCB=V(} a| (E$쐂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(CU`'RLpz)GEpы`cS8 2 XB=uCO1v5^[J l?k`n;zCJ # 2:~1$6yN.#H} #Z,5ɂ%/-Eb\c,H0eɂh@3)PB|@TM:Q+[ċHg+tQ XB+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0'츧>drqb\i>1,!9PJ8DN/hON;L宾ax@ns9 ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7D CCU zLh@:@z,C胹mXC̮ԝ|:!Wd,L ^ /| m,;tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]kՃ,tL`‰dBH]lDDBNL H OB|CI*CZv(U'* Wxɑih>XG!D>|CYeP5fWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮD El;,A$ChEm}Ga@1KN;Tܱ&<Ԗ,D:D9cG^^=l#]P.j!<*С^}aH@@E 9*0kz=NL!@C?bD*i°@lNLlR mD|lĊ,WC = >}KIN,ҰzB)ӡE==ElrjJYUB+~ld$sAmY @+8]@),Bס" رÕJA&..6 %hN脐`<VzH'Dd@܃;[BL@AnIOaO0^M MB\PPan.FCB.εc0DĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/垣R>H DWH2p|zcxHCmPȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅@-\.#,A&'2((* ;tr g7QD)B#h&H>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VH&|z&׹V+/:2rhGoF$+$K @'8g@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG, <>P1m$ EP4Y^> h8Ŭ;#,>l ̸V%hew?w'V ENDXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAA/l"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/SC>!˃&jAoT7CAzZ4K'^dYA;J<1ԃ\ 1˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPDu'\h;`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝ,@,4MӨ@H)H D|zܻ/؉(P݈{؅(]>F# !E@| Ա3X̋;y ]Ov qob@\D^剎;<p(S:*Ӂц p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W" W RpA6mK o; {ם+QC*|[u+Cu⊟DqT{Rz6`v,| H|lA %((';4Y$3:o9@?J"d2'iKvA}jhσЋ>/'"0Ĕ3 ~%),;" &BQ9 0+ʋt|J&J8 }.NJ~(Mr=t]v}xW)wvRI0Mz>xg xa`<ha4(O!p ̠ө W]5|ީħ'Jzק20Ftx  " oxwؘu( / N(PpvFj:`CVèf'G OnjAO6+, [tPH@ iǭu|9'ph{9믌&0|>0% hC|G8xFu8A{}Em hH)L:; _z֩q\1yq|~]c( Qߪm9+S>!0UA ^9A~!!ah_;AGFDH \$&xa,w<@mBxj`GDLg䘏0N C2YQ)E鈀qzF8HH#>Q"~l@?XFu,~y#'aTeq́`Y>b\t 7@`E=`)I5" ҅Sz[9K ,<zrH;/€cp7-dH aP<aA EG`%QD"7F5<(BeQM68_~WET,c EdXKhE(o`6@>bF*"ff v#2@R0:##o;"#H` {LO@ͬb !B*BR" !A TN@&#f/b³)*xbTZI^cj+ bX'*MJƮS:SRphΆ!CJ"$Rma.ꡙ( $X?@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~$` 7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 08IP* kaƠIZe'+L-$r=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$ !ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ejz ĸ6qdBT'2@"b@)QF FA3C#B2({DE/0@"` *Rhb3K3%BZeb e؊4A arB sTjރHcG"`? ;F# i6;AƠZAHIn>A q.^.N'lzG AK$Nc:'!D,!s//f$!dS/D"`*e=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`A@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@e `2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  Bd `k3 `k"`#F)xhz6@Ge$J -%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF  "◒+ْ3.tNFp$EZ-!"A0h٠zx$"6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6: :0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?B #^r`'@F@*: @V 6CF*`c()gf"HSX]R@x`c(/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F|` @"y@"r}'v}CBnDHbn@TSԁL%0 "Ё b1`=` TJaB?~Bܰ|փ0BQ^AZc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+p%Y.B #7t[N@=vE8HLG84!%ߥ3*ݻrv7n\YԐ5T)ӕNWjV 5X-A|Q4HESs= *X)d،6t=nQ>~a|v2OުDžO4X Rpm=!{o}P„5jehmp م ` e_na~b"Hb&b*b.c2Hc6XYnp\4BE  ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1܃A3@B^@>EA>SթXcBs8h s7 mMɪdq}Nꆓ2BPYt8@X$Bʠdi_j:"D E!IВj8$:I)#aM`>#E 8&0S en> NȮš,!>|;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y$=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) :d:D7A0/h;N5W;j%ɔ!:t>3BDh~}ЦkUtHkΏa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|@ €z\ A*~̯ˇT #$nw:ʹ@0 B!Z݈0Qn {HHIO@D ,2Dp3_a6DJ@NB3}0!XWB@)-5 Ȓ8>8cq&80 V''v]mzWXV$(cs40D|# ^uM/=Hh v@=q` 7 ps,9ωt~Oq!P\бdh!39*3%飞>ws%z{#!Y=QȖs򨬄pA~oStw,S|[9ާ`$1$p@S̈́` aB%&no9#µ `} ?(qPJ(<M&A1 aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"@P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vZ" aqnIPt IOV<9=@ tsY? IR@KcF14&#p<4X)@V`71X# ED)OIm7!9@ 1<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig5 qqwj,>3(5P `%&֑mo q*s=fS@[|Z@.v!0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2@jqqzOR% ߐoч^h7(j@0@ : `ͪ۷ $'PAH}ͅP `gB0xRي"7W`zC($#:x p @%"@c P S) aUsך S!#D&@ҩwS鲧e ߀Rb芭 ؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vsɾ5ɒ,{7B `{9 38^|V2QK@Jeʃ7H@"iOYjp j 2ܶȻ!0x,N0P" 2ġ'=_C'x& s hvBgvG!= kyT!59@JmM)Beۚcc=Mm׍G`pce4IT%]$CI@{o5`f1K#Z]Ey,#Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^3K0mk773/Oı$_7R+{n0 C -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5}80h O]ZY1?5  2e[ F=3}=?]ȁ@5GVz#.< i%oB/> Bwʇ}z$Cg6x:d!2"C#DOD1EWdE_1FgFo1GwG2H!$YЬ@h$>Y1D 0c`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`uqx+Y N(YJ=u;U l @0RЧK; 3dQc z3F2ޱ ]R aPdDZG-7Dd&>8`G (S@'j7e:Ǝb ~FeCA{,c@My g*@u*@tU1цjU M\D >]؁xІȚt!6b1u!HoGe(ww{#0 <{q-W:Rv24._a'XZ T@Mޑ4a@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"QZX !&@2,P (C=xW a=%O\/ R$#y&A0 \@.x0&/P __O=@cl/? ҃u88jd X_‡c<@PZIf#8k$@h2+e"hٜW"be,+p2 A=zJvֳmhE;ZҖִvF1*#x%`p b $6qκFVo@0Q YWP).u c(TxMɛ vxFkTdt4{9XZh-P א ~ X;~Hpnk`- c@u1?HFϤ  CIu(`0o"k"FPtXh wȥ|DJI؀>:X!4 zpYh( ƍH5@> +ۣ(epOWl~ `}֒ .}8C n "s99b@U`{P-npdTPA3wxE @|Ӈ,)Έ< ƀF Ȁk~ ۓ  \3` }x iԼ'\>@ `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇1u`NN{6IZz BS)6{K=Xd x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!`{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH thHz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@F(0ԄmmmRpIkip>ߖpySnDt)7SGcHYam66B=#G$/yۺv\b huX|7+,r|9n(@Zn$q ́d2Qq-u`Btx2JQ x F# Z]XdYMKa: pt1 `2Ϝ2vH*Q' ,JPt@N(ljt0|)-P%tI K/0t5pn3T@Tvf vivk P@oJ}h{{0r}׀,6~ /GL'p{"`P@z]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'cܳ ߻{=R,d'E !ɚE uҁB䃜WC>Pa@t^2D3 o>Ev4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM96p H0 exFF`} wшgo {œW@{􍠝jN=Ys!qs?O>cY> DOPL=vOSs} Q`;3=cj%S@#@4;:Q; 3[F@:oF24B8{I  2<0@ ,2:=~DAf lL!I?)TNZgƤD\=|;"̔@fSD [ T;4$0;2d,!>|}IpCUPOZ+`HbԳ7^>Nw= wT=MG@"n.SyHzn}["y. 0j |=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% :@^:l5rFX5^G};sN̝k67h>0va=}hDUSKSn9:o[;T>*%f@:3 @= (-exO:RSɎ#:fzk7 @=b dAUO?@LiߐU ߳H Hoe;޽ɖVI|ǀ[vך+1+0ANe @^>|wܽ.2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U1'M!=@Pz8$zW.J:*t`0@"ݼC": CO,v I LGeѣO<P>ҡD,7H>"‘FL=<9=½@2Ȕ,đ/`80HjЏUPS9i@tL8KGTGєx5.F}c2)3(V$>DYϐ!0@x +'ZDIʤM%XyOB)\$ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Rɢ A=yς6-iKkӢ=:hQ,#|H$e:QB _79F`@?Ґ*5&5(1>{c&YI`b:XzóefM1HjRZ>  O|b:H7<;_c<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏt@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aUQMDyL42,CǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJaocSimʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX`8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*0&3`Dl؁$>%7HreGhQ >ï@ԱkSv5)eDp L,HS*Dk[\\ բ=Koӣ>=Kd4+ZIbQFc 6XTko< @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ODYWNCP@$JH$4(!RO`"4'H`\HPh] \Jb+>!H|@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;D,=>EpC(Ns0  D'EC-v̈́:v8]:L;T@> K?L^ "QäԕCC?XU@Y N8D@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_@P&aaCb.wCT ;  RapCE,Ft=[gC:EZ-;8=PBWH'|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CMO x$v-Nŋ>C"D,qhi kԼa pA]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F0>Ԃ`È^>@c7xSDLIAtG@@fT@ 7L`\Mh@A HԔk]N $2@KYҫ~`F]/Ԃ/LgaHH|Ef($j*Dj Ujl\X ܃' Lfe]ZxyɇPȂ>T@/G?ȅ(  &NATI$8Yt,ST$c ~7Tik0F*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*( 䀝!͍j, ioboo$Fd(F-,.C$p po52oqpt.'\+FKcpksp{pp  p p ?X0 pp q#q+qi ;CqKSqC[qksq{/qqqqq1qr r!r"+"3r#;!#K$Sr%[%#G$c&sr'{'_&(r))(*r++*,r--,.r//.0s110#23s3;3'2C4Ss5[5τ4c6ss7{-k78s9Wr8s::s;s<>s??t@ @tAA#tB+B3tC;CCtDKDStE[EctFkFstG{GtHHtIItJJtKKtLLtMMtNNtOOuP PuQQ#uR+R3uS;SCuTKTSuU[UcuVkVsuW{WuXXuYYuZZu[[u\\u]]u^^u__v` `vaa#vb+b3vc;cCvdKdSve[ecvfkfsvg{gvhhviivjjvkkvllvmmvnnvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c! ,fBBD^^\jjlnnl..,&&$VVT 224JJLZZ\::<**,zz|bbd""$>>@ $(8蒄̜<08b\`BH@Įprlttp||x|v46@`bdp `4<<Դ86(Nfnp.(8X@Xx0.l0.zfhFJ@x\@<<4 ʔh\`pfp<6УKNHJDv3|{Wi˟=:|ϑ2/z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?דּDF)TV Y3:3(Sp Ih&QlIGqvdP;lЏ(`堄jj_wP@Ip#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:2&Hx@FAHn[Sdq%$-ښACQ:`,Pp;DϑhBx= POK~[:tPHZa}pϲ,@s@ԃ4:H:Î,20PX(6k;=ALbG C@B)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:דB/j " K!OSv=9};'B3\"7Xl{ܸ::w%  X>#=o ֱ |%"~Lڂ#!@( $ ϐ8|C77 +1AzP  {$uhG2ӱD (@CH0USȗz`G3B BPa=q#=q t $ @"J#>H1IHA?B SrI!݃>*`Y%@Zzs!|pȁ'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1px:&]jV$`A" H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;YU1V:u LmS&FD`MG=2Mj3s+nd"tD IE nr#!@? 8~jb)€waG*߭ؑk\nV2Q`-H[yPDLZ*uYr0s Vk>umJ\#"ykMϊe2=cA?CXlA'8"x3 ]gLoX@% H,0>E ':܂0`;dE8"0rYtY'uh 1Oey\+w\Y P,r*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lKG)lLbiOl2-sER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD_;WpBz4j{dQpt d?KD;PT."pd<6Hb_}u\>e="&ث :`qh@;Ԟc옍8&zk-uXR@k) H>ĨBC).wD=6-(7P O|  2t ! )HЏ{jC40!Hy [z@ ie+ x!܇  ~@TT'EV=)= P "P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R`rP+v02> h_P=@Ѐh b}~hQK\G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ) !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsLLW` ym@pNI`j왡HIuK$y'P27v)Wa mrwe\2*_*r_ș:DZIG̢sR>.gm!-*.` r`0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 40wQ0O1 dZJF"3@h0/D?#u\"gJeP#0:蚮:,zT Yq$"AV*)PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R@a-{ 2;4fc.gZЅ) "%"]b*U$]ǭQp@.H5Zq=K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$6@Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mL c cP 5a P@Sq'K>ܛP$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛Y;z{.#r {W s$T $zY'|bUCڵ*T%"T{ .y :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ē;NA2 @Xս ½Uf܋d_T=1ޑ*S9=4OTH<~ *`R;(卄Zڨ,{OcFx׆zk/R2{'w'YY1.*AJ*>ˇK0sL24L4TsM6tM8Cgt)ex`&PI֩ p(b`H*F{:H{`z*w[,Y4]&g - `v" ?p"ԛi&N=bz/ dq@Dl/ @2Oz%0!Jŀ0kŬU]>Pi݋t"h\hwa6 `b3xc;cCydA@~*  ¡|bJD<|${ p@J(u2ǀTjwؙv b6T  *(L;# Yt(LU2d{|7|y 4ȏodQ ~ ҩV|Cs$%47!j AQ 5nc2Bu@ uPA $@V$Izv x8=GyBD?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nҏq6b1a@ZԤP !uzaء_LoB߭c Ckʁ/BFXu#bJ,/L f#\*p;vAlu,dqSr(G&X=|`1yͷswP-YH/_xcN!3uIUn?h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ8v 0Ä(:\" 9gxH3%;FIDS 3 @ û ɵ0 ~{pي{Вw'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s);' ud( zHq$ xGQYZ,[̇\\ gӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ18BS5` 1A@ Y21 5:0J$.+ax+o`˫x@ Dj, ܡoMP`LQi{ |KXLtZP FL!R0t e L܉Ph@< *;o0q 1ą6ͅ  * K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 6Ә?P#ly*ڄ-*]2L%k B8{R"#Z'hStX!XY1-3#e$%RHu«с1@$ S`xYH$*e4D< 1]L }ӒXtզ(֭V NdVi$N#䜈(݊9HzԁI#tx( [5  h2IѷI4x xy{|h$ 9<= bP*{u+C5LA [m5%"0h@LQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx?a]=cb'ч~(05sneWY=.(D!ntPO ćI @#IXj< ERdλw|Y6\{N!wJYI{h ʠ!eR!&M )hɁ4SpB9mRF"!""# z14S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$9 M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u X]2 Obc$H6av]v᲋⬉L^#_n3 9W 1vw tjwvIݘ3w).x? }(1kc th呂0Ӱ¿,H GH1`efՅPHg3]y?Q ]7 F%0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4EoP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀1Sq{{V^ifN|Ҙ$W﷍{'|hS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=vC{bsg> ~"\%ihPĻbY>r!ٸ[t37b@>FSh|KAFEbrO;޼O5\+bXi-Bʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=4UP+vP<<.тIƒ PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3B(A=0`CC 7 N#A=|$$ԳT`R|=N=E68D#@Fl![@:+[J=b?KCE{O?@pH0T{n.NF;3ê) >( d`fwN+3A+-b~sA s= D~4޳AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=cNdQO9[a> m dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX p2~>ʀe#A@GwD %'1`"jh, !72 >~zpQ#gd5$ @2( n+aY" . |~;I @?"xi ^zlP 3x ^A&|dr$-2z;fG<:h@y|qc(Hzh (<5t AZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠%Tu ֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,awf8z & >e>LH/` ^M ^Aɥr@xh Cxr$LTzifRV^ pT)p` 0A\" c H,a%FDQ}L$G1ƺ}B+LdT)P1݋kr d0D) O9-s;wpd7 y|n$`|qH1,A 9Oo׃>r|IoXc M[AaȘ֑k{>BM\M0Q{ƛ*ppq7-. `/k6H[QM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:P`<[H=|2[m; !l#ʃi:Y?xd ߐA$G`03s7NB ![E#GFUG!LS:h)H {ԦdCz%[ BYЃ>vu݇G'V&2|CK&@|<$GP7?^A  Ra`\BD-5FCUD39A, ;ަOE Oў/I?{ ;AY_A _!`%Y(MJCSL;5C8`V> ECZ}0r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b> -+nBXJahA4m @4B_v8 zLA A;XXPġ+bD ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4DЊ7@g%H >$2MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"lxIeZR\CF47̋IDBB8SEXiBP!\HdI>J:\7& Gh$S dHŸAH afY-DzGD@ACɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D'|CT&eAH'g#yzZ,D?XrC$()FD: f(; W4gACGK*߅DٽmIiA|niE<&D e,GOAK;<-Yi&_BܟA4@E(ߎD aY>p #6Dt]ϢFA7NA4\*)%ȂXi~Z)M`E4})5g݃=< 2m#FhE4a~ V'(>4C'`T=#n&>?ܫ:,(Ljr?:ë^Z7i>؃>8@C'@<ĞP(~GRjޫ:_ԃV G-l?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 RpAD?=@ r.Gx@*[泪زJ^ GjA,YnBHH.vw2tB-eFÍ$_: =›(/bhrE .xpZҮ&DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-,0"x!0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtVE99;DCAW"C=Xѣ24S# RL03L=DE?\3F78@-|>2 XÌ~Z'C2X%AIrdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,e-AXC-ZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`.C0lz@ܱpz 91'Dg {B 7W?#`[|-ĦyBp @:l,C%́L#8;;,,,C̕@Kxo=Z?p;7JDG183#F3z/A 0kD7`hN@Ľ{B3xa| JKH; vC{һ&{,C{2/H_s$H |X`>u+Ƀ/I3N0Bc0½ 3 nuS6atޫ.:ӊzLz0,⃃+eμǎ_Z^' "A (rZ'Ua`ûGu P҄(U,#T9}KR%odGGxCwdVYG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwìn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /CTu8> yg YJ`XLҡd]6XgehjlݖnpY ?!S(P. L5SM$!Qtǂ`F0Iu{5~%-MU-[d65uG`1hHeQf2euޙ}蠅#5w-(/##`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.=IIӀaw4jZԗOST hvԣIRBAi XH-SPqȁQQkep`?LpK D#HO- <7#!IT '.}IB;@땊s8Ō !1PQSe={0ZI , 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL<!ěGfbv+"&ӎ8"UG`٪*c $G@ @K{ *H)6d zX+ 0O402P*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙAx` Hw(ڕnk|=ie/n t5:j!Kg {t *Ё n#\ miq9rfRW-u=˜"@l +I_@G^5XAzD̡_\faуCeP=ƫ(ࣅH auzVBI;4|p g=6Bd%PP vLF|X0ЋAN|`"ЏFjh,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʐZBHĽװ؇LG]|`# 7B5D`ȁLt׏&xTc-=1m:!"1`%}>C 7 C $E}C [CR0^w-I$SH`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…(:kO$NFD pG:m"(#6 H(K  lijdZƏL&I! !L P 0fk(- D"RA::n86nC @ ‚ ƻB k !*A6`ց 4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ ƠLD qqȐBN-gj$ X|_b[F Q[k a-!<tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzhAn%l# * @-N$~%bMba c&%!J*N d ϖ!;!)JP瘔b  "((H<J XL. @1V-bdaS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* R`BxʬZh%2j!##LH@%&I1K4Ũr`A1> : s-c;#AҒF,00@OH>L"0p!@emKkvI@ ԁI! " ҬmIb !b⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʨ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨHQuU\"(V:bB\jFﵤoJ+@ VII3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^D*I.F `Al"8Uh!ފ0r_1STC } |6&Dx9B)D`>R>B|L!Rp`B5lIR,5xcI/R7Yߡk@:Do7W5 A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@" D{S[ 6L&Z0 "XvTh a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@a *m5A jt)"j ĕq)Qkp*B " x9nVZMDJ! DZL6 g eˀ" g]:2 H̗Zjʬ"R=d!** cxWjH//0#T!D@^)$@1RC{l#KjA :> cC3,6DB TXC.P*LBY hL$?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!$`!@*|⧇VY[ٟB:|aDY%!hMdAJ`F?zޡd0RGLUQ \N#맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->!` \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!$e2` 7n D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevةiH&7(-Gͺu2>G` `ʽ{ؽK<| .½{ :Fj|c{8”9I|3w4Bwߟw4hY(2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^w"!]&dÐ޻9s|Uݽ@|CD! Ll&+|޽*AF#\×vܕ6U3>G>,Q8=L8gv'v7cg|F=C>tp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(d̵\Jhh.h> iNJi!DRa0@= d$=$uO \7p5P;' _ #@GXΞ}\>X:C2jk_ȲFtՓV;jU[0ɏ/ k>[=׻줻n=v|a@ߨH'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճM*)hqF< 7l3_`Ƒqe:SFVSXYWBFqs-A?a:CX_c}߶c+>!?o>d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF'RZ0@m=ԀLl|Q0># jDTq$+K7 &h, r,XԵ5# Q(V-7=D HaGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]a$L3AҬڂ iYXRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY::6wYF1t3^)yK*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE9Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! P3NXaZj;.H".9P-/c54'eg*Aβ !Cd RF $DCyrFpoپ]xGc GaZo~Fe0A1Bd@G0K_Z Sd-i*~Bf$L Bzs 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`1* 1,4[@ *՘4E9$):~^S"*эkG%Zw,zh S;~%[(n>5η2*X"EtȂ|I!޲u T-{7»9Ki}Kv+N@f%S^G`bk/Ǽ@`td@9 (F! P`_ٵ2, 6Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[Mg&=,(}6➔$*A~0Hw`( 5I0Cw.Hmz;+d|Чu8w  q|y6݄3PrɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet?̴M ;+E {RsBGz6(w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz`.u9@@oӊSY Dh8+! ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG 1$P;nww.:43Zj;" GPxQĬzKذo! " 1LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T64aG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19uc( ?6%5H +@4&%A Jҕx/Yh>$$y3PoD7&ᨁC!Ux  wȸ@ &*؜,9 Dp,Q)3R*'Y-ɥ.aYd৐NnB':jQ;tI"Z M:O M4UU@ X,7ATI QAmbLg7 TFr岘41]  FId~H$|G?+zP{@JGFmUe:JaT2Pn |`=պI76З(r7'q) ðՇb[_t 2􁏒` `H0.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ()5>jH -r/yK:k,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4Y.'qQI`s#?8xQߙvG|I5"Jx- .o e+}E?z@#ֻJ1c0}NBPC@'1.G;`5d>luVDj\+оȽ}ُ:ϺUèo85Pnޓw,)I H#Iȣ-IHd XJٰ 4 6y  hGx>w耤x{ Gtr* ep@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jjt˷˸GZ؂w &% ~~ ) Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w8P+lq vYfhQ?<1tH$ί_tN 9ė|H(%;}x HY>x (\ РQ j#}N Ia9F@xe(f 9L o4"5#ERl%P?܀Ȟɀx% YR$Cu`!v'(J$|$DH5Egxp';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.9-Y#;1Jaf\zvKzT:FL ǼUhM(R;H ևv^N{0!9e~Ȁz ,՚IiPikeȁ  &7{xO@|}`E(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYN() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V9( <1 1m}h.<9KkǐG Hzoˇ8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q}HTWu/:$=  p t_Vi,ʣFw$f 8y>IgW|Xy7C \y˾D`ޅ1'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF XPӯdN+9Q9˸O[hN/wXÀp'y/_fġڳ!)9NHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - c&Bds(ѢF"Mt)ӦNB*u*ժVbͪu+׮oɆw]𺰁 ёNV꽙yo]KnKwݼj޻ݜ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwAmSzC'1Tc5áWI1Qwų~A_j~-NdUe CFA8uVMP9s,]2r#X'+آqφ)N?d0A܎ޏx`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=H`OK$Vԁ;;v [:HCb7Bq^ݓIBK&%#mj*S7PX'D~T0@#p-jctcP7Qkcf3pC<A"X,QFF>:6y3jެAt ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p {# 0F׵|;ꑵJuz=A ܃CS_ק:P>;ϥts*>3;cS=0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xl@Az%K6#j&af1w<)>o ,x PYF$)A\Ec ֱ;"Џ|$G> !fc,#8@*n QC#fwڡA+nēLdIG{(|KYL_` q #\&< J ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 c!H&sv ;8 @=E HgVH Q@H蔭XU}@i Y:= M%z!XB $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>8wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS2H1 @_t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq@-}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53_Tf1 z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}?`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u $^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?0C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7D zĉu\@=QAl<\>d!:@SU ]^ɥDHE;Ba|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp?@ p^s\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IAuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA=$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ!0Lndlc (u,x::IP3LlFZDօ<: =e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH„4:*ę/ }_z2ltI*,4q"DvW՛.") $cB c'RDD0*MԃQ0bɆTUi\J=u\IJ~W!$QD܃yV2+CDjშRk!%æ4$ C?),NT>ŪCH@DXRaY}; B?jĽTH$yROkCC-=liBvƙ`J=Sce^A ``)֖_ P C#zn ibLBܔH@ܭX;<, @0Hح4,E:DC-톕,ےVfd']=|G@0;x؂A$H]4: g͆-,ڎb@*ǩt-m-D@:A@ n`.;nҮ`u&f$1,>^J:l@Z"4uH:T=A)dfK$@ 4lO)T0'IE):% p 0@7zD>EAH@I>î @>R2D0@?/EHK_dHI0^>m` ?h@*D@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`'æA(CorU7L:ۣl@++F5'F4s)%lC" DT1*3pBp;pJуqb@ 3I 4=S0?UHAZz>RüW,AԈ ~Kn|R1D BPu8̳lAD ؕ#) ܃{@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ7=X@v}$$YTI&]U:lBp@}>ThxOAP $!^C=TA@ݏDXcJ:ßO?1@Ab,A)-BmDLKU#=0>)rUAP׾>}-,@#t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@& "*3޺ "{0Իo_)&NBALx Q l$"w&JwDbF['l u:+>>xqǑ'Wysϡ;p@+\yp{@:?3U |i}WYnaYf"+!FI xJTQe `V:z櫱{$yj1Ja xBI'D1SJ  @ށ@lGN\o!_MªgeJ n1!%@oVPiơ*q7+i5F ´ddǑGч0 y'/Թm=4"G^! 6;bgG,_}Z~P" 0dRr @@=PSR=j%PJh`s?. xG=*@*@(q aHHcv$Hz}b۲&IL1S 1 J=/!:!! xB9Αu$"`=E7`r38`]GDDP)I.@"oA dD"呕@*H}*x"H,TtPa GB c c  hBB7CƷ ~r*Z9@+OyΓ=O%Tj4AP. upMHgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:o5O[9zYgVCx_X\Q /"8N'Gw&d ba5exjtM#C4M=."7 H>d%DK, DHj\Gء_B0$tzpzYQBҵL`؀8H6&GVWW`T:  Õ`zqy0c}>!TtiZzUGbav5"` \ h c!"0=aYyG2Q4ApRd!9CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆD"Qah!"Q0 = 7} u-SV3{@ @Oa} 6apBQM` 2@vMVtr"iF2 TBJ k݋@B(sAA($ڍ@+ U|# @C,x$x, LJjtа `C?bP tp3!H߷guoDY.3zlK@8|`CN*6P|L`\ 1UStUJC ^Βݐ@3. =Щ%2 E`@%RtϞW):6X@Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC "Pc=K8@g/N(I& !pD!8d"J(Y,!r"N**j!VAp즱bMND*gM6Kb!Y:AxB#$AiAg0#>@xɰ "`hPXa & /߀0 H!Xa{< 8 !]!P!ڧ_#*7R I" |b 6(dA++T( a@&L &{A @P~ޤ1"bk gFL *@aj6 G#!}Rh)pamN/¹uA` ]*jBdY> B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'x"ƯMejGH D`Rd: -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8(H Y(ޡ-F%( #8> R!H@6@+\s88$`KH2T0@" n6` # ಩>B$&CP`&v|2!'B4"2 }'U46/QX8 $("7)^ |ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#Ԁ3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-Ab (Nd>8Pe:9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!xh0!pj!PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!r)6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫܗOi7Xgܓ@2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*AP5F􃏚>wYʑW;Џ=N=x ×k7\ 鿗IXjA@B%",Wlg!FI>@ܨ:[:`\83{6_QO_BDb@(8{#>R ~o?_-e;HW0DM; ؜-_Sތ7G.Wn?:!g砇.褗n{~;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGHd0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>1)GIUwD baŽza%XB7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ I@{l@pd>Cc%%䅃Lg@M% b(9ẋ>ς Hh`؂*ұFt\aG ҃ t`GJT-A@5Ct%@R:QĢpV! 0G㮂 5gv)^ zHuwS0KCôbƮ'ODH ȉox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ8 %P*k$" :djmr2(|Qvs@ Nܣ Ňd9DAJYN.0|XF 8 @YD #pLsUO3Ka!%K oPK$22Y\q0 k4/{|X*PlB8 duh,G'P.w8rAR Ǜ b-*-c,ad[]20 LA3G$''Q24G|HԹq @fABŰg TT ҉oP1) :tblh T/dwbńϯQ j4\XG<AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fr@CY ,\Y(Yz , ߨA+:M :d~0cJ7y*M}7oHΑ9!cA`H:1қg>Y^x+EKUR(ȣ;qAHt&U=S{aE/|6:r e!Z:BF1 `G-<zfʋ4)P(?H2< zb}L hjZ[ai v aDz7X&Yd. A%pGvq %8 pw?"# $Pg\E?ݔ@AV212W*e! sbK"2"X">(rS}g2"SR`xzXOJ )tb1G r i,@tb2Ac ON(LRpC NhAX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7с!DS@j+R+AvDE0vj``-b- H\!Et*>%`E*%υ= `& `T"l.72 BBuPTwLe8**@+e%p 9}2%p] yK0/r/b,p`dÃ06c5h0 ؎>|cm $*%`'2=^E@ H22v5D@8o:v#t#+.E0@ 9F`29PDΡ=48& 3!Ls2F -1s5(0#MWXEYܐV 6m6AeDivӇ_X#GP8 9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;pI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O0=؊TK PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گ(0 fiLSGj֌A@Up%VjKsjh yv(ń @P eTe]qMGd0qE6"ȫN*{%wr0SRvE;T+FS{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾BcO /~Dx:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2. +\}Ԡ0yp,iПfP 0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"KpqVt%m" p-*°s ʧa*̢vl8yM'H'1 Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-o;hT O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowHa~z&w]{s΂ }(;| ^EUa{0$ ;(ej%H݅""ܓ0; P_:]巹ה d5Dv2'Po t܋˜z [KsѥO^uٵows0ûzK𽻧aE ~KT։vJG~g `b!|P3J}*Po G0~J!9JǸz'{6%AS({H@ K![—oZHz"k!nN*xG>HodaZ|Q!NXа{ BtQH#tRJ+RL3tMF}j.Q8TUS*YŬJ.zatz{'*@\YH  {':Xu0! Ma{8!%1g6^ 1wܫ}Fʁ.̳R`1_~Lz9SO"[؛7! 8 R~ѧz`z `e2fsyg{gj1`h@J{b`jzkkƔ  6dKƘҶn{oo* W.kgq#|r+r%pIő3r$7A^E|@)t@wd)MyJT!40!Z:р `3vR$@?_Z `Au(1;&CpD0A*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|HjTFb qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^сiQ0x@>0`LA@@&0 \,g2Rt[QH1|@l C3(i:ῥc62HG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6P{ kVd!91ekيfցXt t*B&VbE9K?D؄m\B.x4`GX9'#) $b[~8At; "Ti@5$yሜG G3:Qzm&[(Or|匜e$0F0氎 ` Ubare2v=U @rKzLЋft\C ,E4wfhґ9J݀E= lò Gd2 UB H) Aj<臜}ld'%#Fs`d/Bp~"+CdֳRRpESVCX@\(Iq~^#H"Dbwt7<9 x-EHSKX ]T&ހ 02`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>H, }Cz3EFv*P&[ D`Aͻ/=uE:0"YW#W*3 ˈ.A#Y ˇؠr? " @ #Q!؉kq5 J6K: UA ;7/ |pUzkM c` (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 D9*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5mG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kiʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-eZ@xC|~@YTfXE^n9 (ƱStd H}X|#}pup|`v .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{HMT#Ai 5leDof=w#oˇd@)7[ .(rq|#B!Y"x^|8D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4<dz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@=KiؽwXݽu⣒a6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzxt`œ '"uB|(A"c͝?L|%4!Ȳ{m| Wz((v=q `oqOԁ[ L_؞/S?Y`]'Дc3AA}G:|t> ;#># :%>)"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>#AAOp UvY>4@:(>mp ぐР&tE5GhCB Y*Wmc %Q, A3YnKdW`d@qΫ4:"$=f,J;-Z{-jm9;C;:T$TL؀7RwX.[:K ]&t=PO 1A):PlJ:S+: j>4pOTq'r/79qcN{"NKLD*L0̥9Bӝ@=!4 },)j}©3@:Dy^wJC ^)@@~^i7:80#贁LzT=)zPXAHp(MuptKӇhr\goB@ᝤnA#|i?٠"āf?(< Eoc"BnCB=V(} a| (E$쐂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(CU`'RLpz)GEpы`cS8 2 XB=uCO1v5^[J l?k`n;zCJ # 2:~1$6yN.#H} #Z,5ɂ%/-Eb\c,H0eɂh@3)PB|@TM:Q+[ċHg+tQ XB+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0'츧>drqb\i>1,!9PJ8DN/hON;L宾ax@ns9 ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7D CCU zLh@:@z,C胹mXC̮ԝ|:!Wd,L ^ /| m,;tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]kՃ,tL`‰dBH]lDDBNL H OB|CI*CZv(U'* Wxɑih>XG!D>|CYeP5fWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮD El;,A$ChEm}Ga@1KN;Tܱ&<Ԗ,D:D9cG^^=l#]P.j!<*С^}aH@@E 9*0kz=NL!@C?bD*i°@lNLlR mD|lĊ,WC = >}KIN,ҰzB)ӡE==ElrjJYUB+~ld$sAmY @+8]@),Bס" رÕJA&..6 %hN脐`<VzH'Dd@܃;[BL@AnIOaO0^M MB\PPan.FCB.εc0DĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/垣R>H DWH2p|zcxHCmPȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅@-\.#,A&'2((* ;tr g7QD)B#h&H>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VH&|z&׹V+/:2rhGoF$+$K @'8g@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG, <>P1m$ EP4Y^> h8Ŭ;#,>l ̸V%hew?w'V ENDXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAA/l"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/SC>!˃&jAoT7CAzZ4K'^dYA;J<1ԃ\ 1˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPDu'\h;`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝ,@,4MӨ@H)H D|zܻ/؉(P݈{؅(]>F# !E@| Ա3X̋;y ]Ov qob@\D^剎;<p(S:*Ӂц p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W" W RpA6mK o; {ם+QC*|[u+Cu⊟DqT{Rz6`v,| H|lA %((';4Y$3:o9@?J"d2'iKvA}jhσЋ>/'"0Ĕ3 ~%),;" &BQ9 0+ʋt|J&J8 }.NJ~(Mr=t]v}xW)wvRI0Mz>xg xa`<ha4(O!p ̠ө W]5|ީħ'Jzק20Ftx  " oxwؘu( / N(PpvFj:`CVèf'G OnjAO6+, [tPH@ iǭu|9'ph{9믌&0|>0% hC|G8xFu8A{}Em hH)L:; _z֩q\1yq|~]c( Qߪm9+S>!0UA ^9A~!!ah_;AGFDH \$&xa,w<@mBxj`GDLg䘏0N C2YQ)E鈀qzF8HH#>Q"~l@?XFu,~y#'aTeq́`Y>b\t 7@`E=`)I5" ҅Sz[9K ,<zrH;/€cp7-dH aP<aA EG`%QD"7F5<(BeQM68_~WET,c EdXKhE(o`6@>bF*"ff v#2@R0:##o;"#H` {LO@ͬb !B*BR" !A TN@&#f/b³)*xbTZI^cj+ bX'*MJƮS:SRphΆ!CJ"$Rma.ꡙ( $X?@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~$` 7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 08IP* kaƠIZe'+L-$r=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$ !ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ejz ĸ6qdBT'2@"b@)QF FA3C#B2({DE/0@"` *Rhb3K3%BZeb e؊4A arB sTjރHcG"`? ;F# i6;AƠZAHIn>A q.^.N'lzG AK$Nc:'!D,!s//f$!dS/D"`*e=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`A@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@e `2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  Bd `k3 `k"`#F)xhz6@Ge$J -%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF  "◒+ْ3.tNFp$EZ-!"A0h٠zx$"6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6: :0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?B #^r`'@F@*: @V 6CF*`c()gf"HSX]R@x`c(/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F|` @"y@"r}'v}CBnDHbn@TSԁL%0 "Ё b1`=` TJaB?~Bܰ|փ0BQ^AZc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+p%Y.B #7t[N@=vE8HLG84!%ߥ3*ݻrv7n\YԐ5T)ӕNWjV 5X-A|Q4HESs= *X)d،6t=nQ>~a|v2OުDžO4X Rpm=!{o}P„5jehmp م ` e_na~b"Hb&b*b.c2Hc6XYnp\4BE  ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1܃A3@B^@>EA>SթXcBs8h s7 mMɪdq}Nꆓ2BPYt8@X$Bʠdi_j:"D E!IВj8$:I)#aM`>#E 8&0S en> NȮš,!>|;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y$=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) :d:D7A0/h;N5W;j%ɔ!:t>3BDh~}ЦkUtHkΏa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|@ €z\ A*~̯ˇT #$nw:ʹ@0 B!Z݈0Qn {HHIO@D ,2Dp3_a6DJ@NB3}0!XWB@)-5 Ȓ8>8cq&80 V''v]mzWXV$(cs40D|# ^uM/=Hh v@=q` 7 ps,9ωt~Oq!P\бdh!39*3%飞>ws%z{#!Y=QȖs򨬄pA~oStw,S|[9ާ`$1$p@S̈́` aB%&no9#µ `} ?(qPJ(<M&A1 aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"@P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vZ" aqnIPt IOV<9=@ tsY? IR@KcF14&#p<4X)@V`71X# ED)OIm7!9@ 1<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig5 qqwj,>3(5P `%&֑mo q*s=fS@[|Z@.v!0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2@jqqzOR% ߐoч^h7(j@0@ : `ͪ۷ $'PAH}ͅP `gB0xRي"7W`zC($#:x p @%"@c P S) aUsך S!#D&@ҩwS鲧e ߀Rb芭 ؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vsɾ5ɒ,{7B `{9 38^|V2QK@Jeʃ7H@"iOYjp j 2ܶȻ!0x,N0P" 2ġ'=_C'x& s hvBgvG!= kyT!59@JmM)Beۚcc=Mm׍G`pce4IT%]$CI@{o5`f1K#Z]Ey,#Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^3K0mk773/Oı$_7R+{n0 C -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5}80h O]ZY1?5  2e[ F=3}=?]ȁ@5GVz#.< i%oB/> Bwʇ}z$Cg6x:d!2"C#DOD1EWdE_1FgFo1GwG2H!$YЬ@h$>Y1D 0c`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`uqx+Y N(YJ=u;U l @0RЧK; 3dQc z3F2ޱ ]R aPdDZG-7Dd&>8`G (S@'j7e:Ǝb ~FeCA{,c@My g*@u*@tU1цjU M\D >]؁xІȚt!6b1u!HoGe(ww{#0 <{q-W:Rv24._a'XZ T@Mޑ4a@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"QZX !&@2,P (C=xW a=%O\/ R$#y&A0 \@.x0&/P __O=@cl/? ҃u88jd X_‡c<@PZIf#8k$@h2+e"hٜW"be,+p2 A=zJvֳmhE;ZҖִvF1*#x%`p b $6qκFVo@0Q YWP).u c(TxMɛ vxFkTdt4{9XZh-P א ~ X;~Hpnk`- c@u1?HFϤ  CIu(`0o"k"FPtXh wȥ|DJI؀>:X!4 zpYh( ƍH5@> +ۣ(epOWl~ `}֒ .}8C n "s99b@U`{P-npdTPA3wxE @|Ӈ,)Έ< ƀF Ȁk~ ۓ  \3` }x iԼ'\>@ `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇1u`NN{6IZz BS)6{K=Xd x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!`{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH thHz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@F(0ԄmmmRpIkip>ߖpySnDt)7SGcHYam66B=#G$/yۺv\b huX|7+,r|9n(@Zn$q ́d2Qq-u`Btx2JQ x F# Z]XdYMKa: pt1 `2Ϝ2vH*Q' ,JPt@N(ljt0|)-P%tI K/0t5pn3T@Tvf vivk P@oJ}h{{0r}׀,6~ /GL'p{"`P@z]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'cܳ ߻{=R,d'E !ɚE uҁB䃜WC>Pa@t^2D3 o>Ev4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM96p H0 exFF`} wшgo {œW@{􍠝jN=Ys!qs?O>cY> DOPL=vOSs} Q`;3=cj%S@#@4;:Q; 3[F@:oF24B8{I  2<0@ ,2:=~DAf lL!I?)TNZgƤD\=|;"̔@fSD [ T;4$0;2d,!>|}IpCUPOZ+`HbԳ7^>Nw= wT=MG@"n.SyHzn}["y. 0j |=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% :@^:l5rFX5^G};sN̝k67h>0va=}hDUSKSn9:o[;T>*%f@:3 @= (-exO:RSɎ#:fzk7 @=b dAUO?@LiߐU ߳H Hoe;޽ɖVI|ǀ[vך+1+0ANe @^>|wܽ.2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U1'M!=@Pz8$zW.J:*t`0@"ݼC": CO,v I LGeѣO<P>ҡD,7H>"‘FL=<9=½@2Ȕ,đ/`80HjЏUPS9i@tL8KGTGєx5.F}c2)3(V$>DYϐ!0@x +'ZDIʤM%XyOB)\$ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Rɢ A=yς6-iKkӢ=:hQ,#|H$e:QB _79F`@?Ґ*5&5(1>{c&YI`b:XzóefM1HjRZ>  O|b:H7<;_c<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏt@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aUQMDyL42,CǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJaocSimʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX`8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*0&3`Dl؁$>%7HreGhQ >ï@ԱkSv5)eDp L,HS*Dk[\\ բ=Koӣ>=Kd4+ZIbQFc 6XTko< @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ODYWNCP@$JH$4(!RO`"4'H`\HPh] \Jb+>!H|@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;D,=>EpC(Ns0  D'EC-v̈́:v8]:L;T@> K?L^ "QäԕCC?XU@Y N8D@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_@P&aaCb.wCT ;  RapCE,Ft=[gC:EZ-;8=PBWH'|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CMO x$v-Nŋ>C"D,qhi kԼa pA]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F0>Ԃ`È^>@c7xSDLIAtG@@fT@ 7L`\Mh@A HԔk]N $2@KYҫ~`F]/Ԃ/LgaHH|Ef($j*Dj Ujl\X ܃' Lfe]ZxyɇPȂ>T@/G?ȅ(  &NATI$8Yt,ST$c ~7Tik0F*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*( 䀝!͍j, ioboo$Fd(F-,.C$p po52oqpt.'\+FKcpksp{pp  p p ?X0 pp q#q+qi ;CqKSqC[qksq{/qqqqq1qr r!r"+"3r#;!#K$Sr%[%#G$c&sr'{'_&(r))(*r++*,r--,.r//.0s110#23s3;3'2C4Ss5[5τ4c6ss7{-k78s9Wr8s::s;s<>s??t@ @tAA#tB+B3tC;CCtDKDStE[EctFkFstG{GtHHtIItJJtKKtLLtMMtNNtOOuP PuQQ#uR+R3uS;SCuTKTSuU[UcuVkVsuW{WuXXuYYuZZu[[u\\u]]u^^u__v` `vaa#vb+b3vc;cCvdKdSve[ecvfkfsvg{gvhhviivjjvkkvllvmmvnnvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c! ,fBBD^^\jjlnnl..,&&$VVT 224JJLZZ\::<**,zz|bbd""$>>@ $(8蒄̜<08b\`BH@Įprlttp||x|v46@`bdp `4<<Դ86(Nfnp.(8X@Xx0.l0.zfhFJ@x\@<<4 ʔh\`pfp<6УKNHJDv3|{Wi˟=:|ϑ2/z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?דּDF)TV Y3:3(Sp Ih&QlIGqvdP;lЏ(`堄jj_wP@Ip#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:2&Hx@FAHn[Sdq%$-ښACQ:`,Pp;DϑhBx= POK~[:tPHZa}pϲ,@s@ԃ4:H:Î,20PX(6k;=ALbG C@B)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:דB/j " K!OSv=9};'B3\"7Xl{ܸ::w%  X>#=o ֱ |%"~Lڂ#!@( $ ϐ8|C77 +1AzP  {$uhG2ӱD (@CH0USȗz`G3B BPa=q#=q t $ @"J#>H1IHA?B SrI!݃>*`Y%@Zzs!|pȁ'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1px:&]jV$`A" H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;YU1V:u LmS&FD`MG=2Mj3s+nd"tD IE nr#!@? 8~jb)€waG*߭ؑk\nV2Q`-H[yPDLZ*uYr0s Vk>umJ\#"ykMϊe2=cA?CXlA'8"x3 ]gLoX@% H,0>E ':܂0`;dE8"0rYtY'uh 1Oey\+w\Y P,r*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lKG)lLbiOl2-sER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD_;WpBz4j{dQpt d?KD;PT."pd<6Hb_}u\>e="&ث :`qh@;Ԟc옍8&zk-uXR@k) H>ĨBC).wD=6-(7P O|  2t ! )HЏ{jC40!Hy [z@ ie+ x!܇  ~@TT'EV=)= P "P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R`rP+v02> h_P=@Ѐh b}~hQK\G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ) !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsLLW` ym@pNI`j왡HIuK$y'P27v)Wa mrwe\2*_*r_ș:DZIG̢sR>.gm!-*.` r`0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 40wQ0O1 dZJF"3@h0/D?#u\"gJeP#0:蚮:,zT Yq$"AV*)PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R@a-{ 2;4fc.gZЅ) "%"]b*U$]ǭQp@.H5Zq=K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$6@Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mL c cP 5a P@Sq'K>ܛP$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛Y;z{.#r {W s$T $zY'|bUCڵ*T%"T{ .y :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ē;NA2 @Xս ½Uf܋d_T=1ޑ*S9=4OTH<~ *`R;(卄Zڨ,{OcFx׆zk/R2{'w'YY1.*AJ*>ˇK0sL24L4TsM6tM8Cgt)ex`&PI֩ p(b`H*F{:H{`z*w[,Y4]&g - `v" ?p"ԛi&N=bz/ dq@Dl/ @2Oz%0!Jŀ0kŬU]>Pi݋t"h\hwa6 `b3xc;cCydA@~*  ¡|bJD<|${ p@J(u2ǀTjwؙv b6T  *(L;# Yt(LU2d{|7|y 4ȏodQ ~ ҩV|Cs$%47!j AQ 5nc2Bu@ uPA $@V$Izv x8=GyBD?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nҏq6b1a@ZԤP !uzaء_LoB߭c Ckʁ/BFXu#bJ,/L f#\*p;vAlu,dqSr(G&X=|`1yͷswP-YH/_xcN!3uIUn?h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ8v 0Ä(:\" 9gxH3%;FIDS 3 @ û ɵ0 ~{pي{Вw'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s);' ud( zHq$ xGQYZ,[̇\\ gӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ18BS5` 1A@ Y21 5:0J$.+ax+o`˫x@ Dj, ܡoMP`LQi{ |KXLtZP FL!R0t e L܉Ph@< *;o0q 1ą6ͅ  * K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 6Ә?P#ly*ڄ-*]2L%k B8{R"#Z'hStX!XY1-3#e$%RHu«с1@$ S`xYH$*e4D< 1]L }ӒXtզ(֭V NdVi$N#䜈(݊9HzԁI#tx( [5  h2IѷI4x xy{|h$ 9<= bP*{u+C5LA [m5%"0h@LQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx?a]=cb'ч~(05sneWY=.(D!ntPO ćI @#IXj< ERdλw|Y6\{N!wJYI{h ʠ!eR!&M )hɁ4SpB9mRF"!""# z14S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$9 M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u X]2 Obc$H6av]v᲋⬉L^#_n3 9W 1vw tjwvIݘ3w).x? }(1kc th呂0Ӱ¿,H GH1`efՅPHg3]y?Q ]7 F%0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4EoP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀1Sq{{V^ifN|Ҙ$W﷍{'|hS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=vC{bsg> ~"\%ihPĻbY>r!ٸ[t37b@>FSh|KAFEbrO;޼O5\+bXi-Bʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=4UP+vP<<.тIƒ PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3B(A=0`CC 7 N#A=|$$ԳT`R|=N=E68D#@Fl![@:+[J=b?KCE{O?@pH0T{n.NF;3ê) >( d`fwN+3A+-b~sA s= D~4޳AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=cNdQO9[a> m dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX p2~>ʀe#A@GwD %'1`"jh, !72 >~zpQ#gd5$ @2( n+aY" . |~;I @?"xi ^zlP 3x ^A&|dr$-2z;fG<:h@y|qc(Hzh (<5t AZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠%Tu ֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,awf8z & >e>LH/` ^M ^Aɥr@xh Cxr$LTzifRV^ pT)p` 0A\" c H,a%FDQ}L$G1ƺ}B+LdT)P1݋kr d0D) O9-s;wpd7 y|n$`|qH1,A 9Oo׃>r|IoXc M[AaȘ֑k{>BM\M0Q{ƛ*ppq7-. `/k6H[QM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:P`<[H=|2[m; !l#ʃi:Y?xd ߐA$G`03s7NB ![E#GFUG!LS:h)H {ԦdCz%[ BYЃ>vu݇G'V&2|CK&@|<$GP7?^A  Ra`\BD-5FCUD39A, ;ަOE Oў/I?{ ;AY_A _!`%Y(MJCSL;5C8`V> ECZ}0r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b> -+nBXJahA4m @4B_v8 zLA A;XXPġ+bD ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4DЊ7@g%H >$2MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"lxIeZR\CF47̋IDBB8SEXiBP!\HdI>J:\7& Gh$S dHŸAH afY-DzGD@ACɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D'|CT&eAH'g#yzZ,D?XrC$()FD: f(; W4gACGK*߅DٽmIiA|niE<&D e,GOAK;<-Yi&_BܟA4@E(ߎD aY>p #6Dt]ϢFA7NA4\*)%ȂXi~Z)M`E4})5g݃=< 2m#FhE4a~ V'(>4C'`T=#n&>?ܫ:,(Ljr?:ë^Z7i>؃>8@C'@<ĞP(~GRjޫ:_ԃV G-l?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 RpAD?=@ r.Gx@*[泪زJ^ GjA,YnBHH.vw2tB-eFÍ$_: =›(/bhrE .xpZҮ&DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-,0"x!0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtVE99;DCAW"C=Xѣ24S# RL03L=DE?\3F78@-|>2 XÌ~Z'C2X%AIrdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,e-AXC-ZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`.C0lz@ܱpz 91'Dg {B 7W?#`[|-ĦyBp @:l,C%́L#8;;,,,C̕@Kxo=Z?p;7JDG183#F3z/A 0kD7`hN@Ľ{B3xa| JKH; vC{һ&{,C{2/H_s$H |X`>u+Ƀ/I3N0Bc0½ 3 nuS6atޫ.:ӊzLz0,⃃+eμǎ_Z^' "A (rZ'Ua`ûGu P҄(U,#T9}KR%odGGxCwdVYG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwìn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /CTu8> yg YJ`XLҡd]6XgehjlݖnpY ?!S(P. L5SM$!Qtǂ`F0Iu{5~%-MU-[d65uG`1hHeQf2euޙ}蠅#5w-(/##`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.=IIӀaw4jZԗOST hvԣIRBAi XH-SPqȁQQkep`?LpK D#HO- <7#!IT '.}IB;@땊s8Ō !1PQSe={0ZI , 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL<!ěGfbv+"&ӎ8"UG`٪*c $G@ @K{ *H)6d zX+ 0O402P*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙAx` Hw(ڕnk|=ie/n t5:j!Kg {t *Ё n#\ miq9rfRW-u=˜"@l +I_@G^5XAzD̡_\faуCeP=ƫ(ࣅH auzVBI;4|p g=6Bd%PP vLF|X0ЋAN|`"ЏFjh,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʐZBHĽװ؇LG]|`# 7B5D`ȁLt׏&xTc-=1m:!"1`%}>C 7 C $E}C [CR0^w-I$SH`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…(:kO$NFD pG:m"(#6 H(K  lijdZƏL&I! !L P 0fk(- D"RA::n86nC @ ‚ ƻB k !*A6`ց 4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ ƠLD qqȐBN-gj$ X|_b[F Q[k a-!<tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzhAn%l# * @-N$~%bMba c&%!J*N d ϖ!;!)JP瘔b  "((H<J XL. @1V-bdaS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* R`BxʬZh%2j!##LH@%&I1K4Ũr`A1> : s-c;#AҒF,00@OH>L"0p!@emKkvI@ ԁI! " ҬmIb !b⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʨ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨHQuU\"(V:bB\jFﵤoJ+@ VII3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^D*I.F `Al"8Uh!ފ0r_1STC } |6&Dx9B)D`>R>B|L!Rp`B5lIR,5xcI/R7Yߡk@:Do7W5 A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@" D{S[ 6L&Z0 "XvTh a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@a *m5A jt)"j ĕq)Qkp*B " x9nVZMDJ! DZL6 g eˀ" g]:2 H̗Zjʬ"R=d!** cxWjH//0#T!D@^)$@1RC{l#KjA :> cC3,6DB TXC.P*LBY hL$?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!$`!@*|⧇VY[ٟB:|aDY%!hMdAJ`F?zޡd0RGLUQ \N#맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->!` \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!$e2` 7n D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevةiH&7(-Gͺu2>G` `ʽ{ؽK<| .½{ :Fj|c{8”9I|3w4Bwߟw4hY(2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^w"!]&dÐ޻9s|Uݽ@|CD! Ll&+|޽*AF#\×vܕ6U3>G>,Q8=L8gv'v7cg|F=C>tp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(d̵\Jhh.h> iNJi!DRa0@= d$=$uO \7p5P;' _ #@GXΞ}\>X:C2jk_ȲFtՓV;jU[0ɏ/ k>[=׻줻n=v|a@ߨH'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճM*)hqF< 7l3_`Ƒqe:SFVSXYWBFqs-A?a:CX_c}߶c+>!?o>d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF'RZ0@m=ԀLl|Q0># jDTq$+K7 &h, r,XԵ5# Q(V-7=D HaGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]a$L3AҬڂ iYXRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY::6wYF1t3^)yK*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE9Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! P3NXaZj;.H".9P-/c54'eg*Aβ !Cd RF $DCyrFpoپ]xGc GaZo~Fe0A1Bd@G0K_Z Sd-i*~Bf$L Bzs 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`1* 1,4[@ *՘4E9$):~^S"*эkG%Zw,zh S;~%[(n>5η2*X"EtȂ|I!޲u T-{7»9Ki}Kv+N@f%S^G`bk/Ǽ@`td@9 (F! P`_ٵ2, 6Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[Mg&=,(}6➔$*A~0Hw`( 5I0Cw.Hmz;+d|Чu8w  q|y6݄3PrɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet?̴M ;+E {RsBGz6(w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz`.u9@@oӊSY Dh8+! ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG 1$P;nww.:43Zj;" GPxQĬzKذo! " 1LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T64aG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19uc( ?6%5H +@4&%A Jҕx/Yh>$$y3PoD7&ᨁC!Ux  wȸ@ &*؜,9 Dp,Q)3R*'Y-ɥ.aYd৐NnB':jQ;tI"Z M:O M4UU@ X,7ATI QAmbLg7 TFr岘41]  FId~H$|G?+zP{@JGFmUe:JaT2Pn |`=պI76З(r7'q) ðՇb[_t 2􁏒` `H0.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ()5>jH -r/yK:k,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4Y.'qQI`s#?8xQߙvG|I5"Jx- .o e+}E?z@#ֻJ1c0}NBPC@'1.G;`5d>luVDj\+оȽ}ُ:ϺUèo85Pnޓw,)I H#Iȣ-IHd XJٰ 4 6y  hGx>w耤x{ Gtr* ep@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jjt˷˸GZ؂w &% ~~ ) Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w8P+lq vYfhQ?<1tH$ί_tN 9ė|H(%;}x HY>x (\ РQ j#}N Ia9F@xe(f 9L o4"5#ERl%P?܀Ȟɀx% YR$Cu`!v'(J$|$DH5Egxp';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.9-Y#;1Jaf\zvKzT:FL ǼUhM(R;H ևv^N{0!9e~Ȁz ,՚IiPikeȁ  &7{xO@|}`E(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYN() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V9( <1 1m}h.<9KkǐG Hzoˇ8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q}HTWu/:$=  p t_Vi,ʣFw$f 8y>IgW|Xy7C \y˾D`ޅ1'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF XPӯdN+9Q9˸O[hN/wXÀp'y/_fġڳ!)9NHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - c&Bds(ѢF"Mt)ӦNB*u*ժVbͪu+׮oɆw]𺰁 ёNV꽙yo]KnKwݼj޻ݜ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwAmSzC'1Tc5áWI1Qwų~A_j~-NdUe CFA8uVMP9s,]2r#X'+آqφ)N?d0A܎ޏx`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=H`OK$Vԁ;;v [:HCb7Bq^ݓIBK&%#mj*S7PX'D~T0@#p-jctcP7Qkcf3pC<A"X,QFF>:6y3jެAt ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p {# 0F׵|;ꑵJuz=A ܃CS_ק:P>;ϥts*>3;cS=0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xl@Az%K6#j&af1w<)>o ,x PYF$)A\Ec ֱ;"Џ|$G> !fc,#8@*n QC#fwڡA+nēLdIG{(|KYL_` q #\&< J ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 c!H&sv ;8 @=E HgVH Q@H蔭XU}@i Y:= M%z!XB $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>8wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS2H1 @_t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq@-}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53_Tf1 z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}?`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u $^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?0C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7D zĉu\@=QAl<\>d!:@SU ]^ɥDHE;Ba|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp?@ p^s\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IAuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA=$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ!0Lndlc (u,x::IP3LlFZDօ<: =e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH„4:*ę/ }_z2ltI*,4q"DvW՛.") $cB c'RDD0*MԃQ0bɆTUi\J=u\IJ~W!$QD܃yV2+CDjშRk!%æ4$ C?),NT>ŪCH@DXRaY}; B?jĽTH$yROkCC-=liBvƙ`J=Sce^A ``)֖_ P C#zn ibLBܔH@ܭX;<, @0Hح4,E:DC-톕,ےVfd']=|G@0;x؂A$H]4: g͆-,ڎb@*ǩt-m-D@:A@ n`.;nҮ`u&f$1,>^J:l@Z"4uH:T=A)dfK$@ 4lO)T0'IE):% p 0@7zD>EAH@I>î @>R2D0@?/EHK_dHI0^>m` ?h@*D@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`'æA(CorU7L:ۣl@++F5'F4s)%lC" DT1*3pBp;pJуqb@ 3I 4=S0?UHAZz>RüW,AԈ ~Kn|R1D BPu8̳lAD ؕ#) ܃{@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ7=X@v}$$YTI&]U:lBp@}>ThxOAP $!^C=TA@ݏDXcJ:ßO?1@Ab,A)-BmDLKU#=0>)rUAP׾>}-,@#t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@& "*3޺ "{0Իo_)&NBALx Q l$"w&JwDbF['l u:+>>xqǑ'Wysϡ;p@+\yp{@:?3U |i}WYnaYf"+!FI xJTQe `V:z櫱{$yj1Ja xBI'D1SJ  @ށ@lGN\o!_MªgeJ n1!%@oVPiơ*q7+i5F ´ddǑGч0 y'/Թm=4"G^! 6;bgG,_}Z~P" 0dRr @@=PSR=j%PJh`s?. xG=*@*@(q aHHcv$Hz}b۲&IL1S 1 J=/!:!! xB9Αu$"`=E7`r38`]GDDP)I.@"oA dD"呕@*H}*x"H,TtPa GB c c  hBB7CƷ ~r*Z9@+OyΓ=O%Tj4AP. upMHgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:o5O[9zYgVCx_X\Q /"8N'Gw&d ba5exjtM#C4M=."7 H>d%DK, DHj\Gء_B0$tzpzYQBҵL`؀8H6&GVWW`T:  Õ`zqy0c}>!TtiZzUGbav5"` \ h c!"0=aYyG2Q4ApRd!9CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆD"Qah!"Q0 = 7} u-SV3{@ @Oa} 6apBQM` 2@vMVtr"iF2 TBJ k݋@B(sAA($ڍ@+ U|# @C,x$x, LJjtа `C?bP tp3!H߷guoDY.3zlK@8|`CN*6P|L`\ 1UStUJC ^Βݐ@3. =Щ%2 E`@%RtϞW):6X@Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC "Pc=K8@g/N(I& !pD!8d"J(Y,!r"N**j!VAp즱bMND*gM6Kb!Y:AxB#$AiAg0#>@xɰ "`hPXa & /߀0 H!Xa{< 8 !]!P!ڧ_#*7R I" |b 6(dA++T( a@&L &{A @P~ޤ1"bk gFL *@aj6 G#!}Rh)pamN/¹uA` ]*jBdY> B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'x"ƯMejGH D`Rd: -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8(H Y(ޡ-F%( #8> R!H@6@+\s88$`KH2T0@" n6` # ಩>B$&CP`&v|2!'B4"2 }'U46/QX8 $("7)^ |ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#Ԁ3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-Ab (Nd>8Pe:9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!xh0!pj!PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!r)6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫܗOi7Xgܓ@2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*AP5F􃏚>wYʑW;Џ=N=x ×k7\ 鿗IXjA@B%",Wlg!FI>@ܨ:[:`\83{6_QO_BDb@(8{#>R ~o?_-e;HW0DM; ؜-_Sތ7G.Wn?:!g砇.褗n{~;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGHd0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>1)GIUwD baŽza%XB7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ I@{l@pd>Cc%%䅃Lg@M% b(9ẋ>ς Hh`؂*ұFt\aG ҃ t`GJT-A@5Ct%@R:QĢpV! 0G㮂 5gv)^ zHuwS0KCôbƮ'ODH ȉox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ8 %P*k$" :djmr2(|Qvs@ Nܣ Ňd9DAJYN.0|XF 8 @YD #pLsUO3Ka!%K oPK$22Y\q0 k4/{|X*PlB8 duh,G'P.w8rAR Ǜ b-*-c,ad[]20 LA3G$''Q24G|HԹq @fABŰg TT ҉oP1) :tblh T/dwbńϯQ j4\XG<AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fr@CY ,\Y(Yz , ߨA+:M :d~0cJ7y*M}7oHΑ9!cA`H:1қg>Y^x+EKUR(ȣ;qAHt&U=S{aE/|6:r e!Z:BF1 `G-<zfʋ4)P(?H2< zb}L hjZ[ai v aDz7X&Yd. A%pGvq %8 pw?"# $Pg\E?ݔ@AV212W*e! sbK"2"X">(rS}g2"SR`xzXOJ )tb1G r i,@tb2Ac ON(LRpC NhAX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7с!DS@j+R+AvDE0vj``-b- H\!Et*>%`E*%υ= `& `T"l.72 BBuPTwLe8**@+e%p 9}2%p] yK0/r/b,p`dÃ06c5h0 ؎>|cm $*%`'2=^E@ H22v5D@8o:v#t#+.E0@ 9F`29PDΡ=48& 3!Ls2F -1s5(0#MWXEYܐV 6m6AeDivӇ_X#GP8 9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;pI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O0=؊TK PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گ(0 fiLSGj֌A@Up%VjKsjh yv(ń @P eTe]qMGd0qE6"ȫN*{%wr0SRvE;T+FS{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾BcO /~Dx:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2. +\}Ԡ0yp,iПfP 0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"KpqVt%m" p-*°s ʧa*̢vl8yM'H'1 Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-o;hT O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowHa~z&w]{s΂ }(;| ^EUa{0$ ;(ej%H݅""ܓ0; P_:]巹ה d5Dv2'Po t܋˜z [KsѥO^uٵows0ûzK𽻧aE ~KT։vJG~g `b!|P3J}*Po G0~J!9JǸz'{6%AS({H@ K![—oZHz"k!nN*xG>HodaZ|Q!NXа{ BtQH#tRJ+RL3tMF}j.Q8TUS*YŬJ.zatz{'*@\YH  {':Xu0! Ma{8!%1g6^ 1wܫ}Fʁ.̳R`1_~Lz9SO"[؛7! 8 R~ѧz`z `e2fsyg{gj1`h@J{b`jzkkƔ  6dKƘҶn{oo* W.kgq#|r+r%pIő3r$7A^E|@)t@wd)MyJT!40!Z:р `3vR$@?_Z `Au(1;&CpD0A*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|HjTFb qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^сiQ0x@>0`LA@@&0 \,g2Rt[QH1|@l C3(i:ῥc62HG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6P{ kVd!91ekيfցXt t*B&VbE9K?D؄m\B.x4`GX9'#) $b[~8At; "Ti@5$yሜG G3:Qzm&[(Or|匜e$0F0氎 ` Ubare2v=U @rKzLЋft\C ,E4wfhґ9J݀E= lò Gd2 UB H) Aj<臜}ld'%#Fs`d/Bp~"+CdֳRRpESVCX@\(Iq~^#H"Dbwt7<9 x-EHSKX ]T&ހ 02`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>H, }Cz3EFv*P&[ D`Aͻ/=uE:0"YW#W*3 ˈ.A#Y ˇؠr? " @ #Q!؉kq5 J6K: UA ;7/ |pUzkM c` (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 D9*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5mG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kiʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-eZ@xC|~@YTfXE^n9 (ƱStd H}X|#}pup|`v .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{HMT#Ai 5leDof=w#oˇd@)7[ .(rq|#B!Y"x^|8D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4<dz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@=KiؽwXݽu⣒a6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzxt`œ '"uB|(A"c͝?L|%4!Ȳ{m| Wz((v=q `oqOԁ[ L_؞/S?Y`]'Дc3AA}G:|t> ;#># :%>)"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>#AAOp UvY>4@:(>mp ぐР&tE5GhCB Y*Wmc %Q, A3YnKdW`d@qΫ4:"$=f,J;-Z{-jm9;C;:T$TL؀7RwX.[:K ]&t=PO 1A):PlJ:S+: j>4pOTq'r/79qcN{"NKLD*L0̥9Bӝ@=!4 },)j}©3@:Dy^wJC ^)@@~^i7:80#贁LzT=)zPXAHp(MuptKӇhr\goB@ᝤnA#|i?٠"āf?(< Eoc"BnCB=V(} a| (E$쐂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(CU`'RLpz)GEpы`cS8 2 XB=uCO1v5^[J l?k`n;zCJ # 2:~1$6yN.#H} #Z,5ɂ%/-Eb\c,H0eɂh@3)PB|@TM:Q+[ċHg+tQ XB+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0'츧>drqb\i>1,!9PJ8DN/hON;L宾ax@ns9 ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7D CCU zLh@:@z,C胹mXC̮ԝ|:!Wd,L ^ /| m,;tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]kՃ,tL`‰dBH]lDDBNL H OB|CI*CZv(U'* Wxɑih>XG!D>|CYeP5fWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮD El;,A$ChEm}Ga@1KN;Tܱ&<Ԗ,D:D9cG^^=l#]P.j!<*С^}aH@@E 9*0kz=NL!@C?bD*i°@lNLlR mD|lĊ,WC = >}KIN,ҰzB)ӡE==ElrjJYUB+~ld$sAmY @+8]@),Bס" رÕJA&..6 %hN脐`<VzH'Dd@܃;[BL@AnIOaO0^M MB\PPan.FCB.εc0DĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/垣R>H DWH2p|zcxHCmPȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅@-\.#,A&'2((* ;tr g7QD)B#h&H>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VH&|z&׹V+/:2rhGoF$+$K @'8g@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG, <>P1m$ EP4Y^> h8Ŭ;#,>l ̸V%hew?w'V ENDXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAA/l"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/SC>!˃&jAoT7CAzZ4K'^dYA;J<1ԃ\ 1˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPDu'\h;`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝ,@,4MӨ@H)H D|zܻ/؉(P݈{؅(]>F# !E@| Ա3X̋;y ]Ov qob@\D^剎;<p(S:*Ӂц p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W" W RpA6mK o; {ם+QC*|[u+Cu⊟DqT{Rz6`v,| H|lA %((';4Y$3:o9@?J"d2'iKvA}jhσЋ>/'"0Ĕ3 ~%),;" &BQ9 0+ʋt|J&J8 }.NJ~(Mr=t]v}xW)wvRI0Mz>xg xa`<ha4(O!p ̠ө W]5|ީħ'Jzק20Ftx  " oxwؘu( / N(PpvFj:`CVèf'G OnjAO6+, [tPH@ iǭu|9'ph{9믌&0|>0% hC|G8xFu8A{}Em hH)L:; _z֩q\1yq|~]c( Qߪm9+S>!0UA ^9A~!!ah_;AGFDH \$&xa,w<@mBxj`GDLg䘏0N C2YQ)E鈀qzF8HH#>Q"~l@?XFu,~y#'aTeq́`Y>b\t 7@`E=`)I5" ҅Sz[9K ,<zrH;/€cp7-dH aP<aA EG`%QD"7F5<(BeQM68_~WET,c EdXKhE(o`6@>bF*"ff v#2@R0:##o;"#H` {LO@ͬb !B*BR" !A TN@&#f/b³)*xbTZI^cj+ bX'*MJƮS:SRphΆ!CJ"$Rma.ꡙ( $X?@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~$` 7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 08IP* kaƠIZe'+L-$r=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$ !ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ejz ĸ6qdBT'2@"b@)QF FA3C#B2({DE/0@"` *Rhb3K3%BZeb e؊4A arB sTjރHcG"`? ;F# i6;AƠZAHIn>A q.^.N'lzG AK$Nc:'!D,!s//f$!dS/D"`*e=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`A@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@e `2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  Bd `k3 `k"`#F)xhz6@Ge$J -%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF  "◒+ْ3.tNFp$EZ-!"A0h٠zx$"6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6: :0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?B #^r`'@F@*: @V 6CF*`c()gf"HSX]R@x`c(/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F|` @"y@"r}'v}CBnDHbn@TSԁL%0 "Ё b1`=` TJaB?~Bܰ|փ0BQ^AZc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+p%Y.B #7t[N@=vE8HLG84!%ߥ3*ݻrv7n\YԐ5T)ӕNWjV 5X-A|Q4HESs= *X)d،6t=nQ>~a|v2OުDžO4X Rpm=!{o}P„5jehmp م ` e_na~b"Hb&b*b.c2Hc6XYnp\4BE  ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1܃A3@B^@>EA>SթXcBs8h s7 mMɪdq}Nꆓ2BPYt8@X$Bʠdi_j:"D E!IВj8$:I)#aM`>#E 8&0S en> NȮš,!>|;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y$=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) :d:D7A0/h;N5W;j%ɔ!:t>3BDh~}ЦkUtHkΏa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|@ €z\ A*~̯ˇT #$nw:ʹ@0 B!Z݈0Qn {HHIO@D ,2Dp3_a6DJ@NB3}0!XWB@)-5 Ȓ8>8cq&80 V''v]mzWXV$(cs40D|# ^uM/=Hh v@=q` 7 ps,9ωt~Oq!P\бdh!39*3%飞>ws%z{#!Y=QȖs򨬄pA~oStw,S|[9ާ`$1$p@S̈́` aB%&no9#µ `} ?(qPJ(<M&A1 aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"@P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vZ" aqnIPt IOV<9=@ tsY? IR@KcF14&#p<4X)@V`71X# ED)OIm7!9@ 1<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig5 qqwj,>3(5P `%&֑mo q*s=fS@[|Z@.v!0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2@jqqzOR% ߐoч^h7(j@0@ : `ͪ۷ $'PAH}ͅP `gB0xRي"7W`zC($#:x p @%"@c P S) aUsך S!#D&@ҩwS鲧e ߀Rb芭 ؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vsɾ5ɒ,{7B `{9 38^|V2QK@Jeʃ7H@"iOYjp j 2ܶȻ!0x,N0P" 2ġ'=_C'x& s hvBgvG!= kyT!59@JmM)Beۚcc=Mm׍G`pce4IT%]$CI@{o5`f1K#Z]Ey,#Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^3K0mk773/Oı$_7R+{n0 C -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5}80h O]ZY1?5  2e[ F=3}=?]ȁ@5GVz#.< i%oB/> Bwʇ}z$Cg6x:d!2"C#DOD1EWdE_1FgFo1GwG2H!$YЬ@h$>Y1D 0c`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`uqx+Y N(YJ=u;U l @0RЧK; 3dQc z3F2ޱ ]R aPdDZG-7Dd&>8`G (S@'j7e:Ǝb ~FeCA{,c@My g*@u*@tU1цjU M\D >]؁xІȚt!6b1u!HoGe(ww{#0 <{q-W:Rv24._a'XZ T@Mޑ4a@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"QZX !&@2,P (C=xW a=%O\/ R$#y&A0 \@.x0&/P __O=@cl/? ҃u88jd X_‡c<@PZIf#8k$@h2+e"hٜW"be,+p2 A=zJvֳmhE;ZҖִvF1*#x%`p b $6qκFVo@0Q YWP).u c(TxMɛ vxFkTdt4{9XZh-P א ~ X;~Hpnk`- c@u1?HFϤ  CIu(`0o"k"FPtXh wȥ|DJI؀>:X!4 zpYh( ƍH5@> +ۣ(epOWl~ `}֒ .}8C n "s99b@U`{P-npdTPA3wxE @|Ӈ,)Έ< ƀF Ȁk~ ۓ  \3` }x iԼ'\>@ `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇1u`NN{6IZz BS)6{K=Xd x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!`{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH thHz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@F(0ԄmmmRpIkip>ߖpySnDt)7SGcHYam66B=#G$/yۺv\b huX|7+,r|9n(@Zn$q ́d2Qq-u`Btx2JQ x F# Z]XdYMKa: pt1 `2Ϝ2vH*Q' ,JPt@N(ljt0|)-P%tI K/0t5pn3T@Tvf vivk P@oJ}h{{0r}׀,6~ /GL'p{"`P@z]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'cܳ ߻{=R,d'E !ɚE uҁB䃜WC>Pa@t^2D3 o>Ev4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM96p H0 exFF`} wшgo {œW@{􍠝jN=Ys!qs?O>cY> DOPL=vOSs} Q`;3=cj%S@#@4;:Q; 3[F@:oF24B8{I  2<0@ ,2:=~DAf lL!I?)TNZgƤD\=|;"̔@fSD [ T;4$0;2d,!>|}IpCUPOZ+`HbԳ7^>Nw= wT=MG@"n.SyHzn}["y. 0j |=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% :@^:l5rFX5^G};sN̝k67h>0va=}hDUSKSn9:o[;T>*%f@:3 @= (-exO:RSɎ#:fzk7 @=b dAUO?@LiߐU ߳H Hoe;޽ɖVI|ǀ[vך+1+0ANe @^>|wܽ.2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U1'M!=@Pz8$zW.J:*t`0@"ݼC": CO,v I LGeѣO<P>ҡD,7H>"‘FL=<9=½@2Ȕ,đ/`80HjЏUPS9i@tL8KGTGєx5.F}c2)3(V$>DYϐ!0@x +'ZDIʤM%XyOB)\$ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Rɢ A=yς6-iKkӢ=:hQ,#|H$e:QB _79F`@?Ґ*5&5(1>{c&YI`b:XzóefM1HjRZ>  O|b:H7<;_c<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏt@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aUQMDyL42,CǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJaocSimʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX`8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*0&3`Dl؁$>%7HreGhQ >ï@ԱkSv5)eDp L,HS*Dk[\\ բ=Koӣ>=Kd4+ZIbQFc 6XTko< @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ODYWNCP@$JH$4(!RO`"4'H`\HPh] \Jb+>!H|@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;D,=>EpC(Ns0  D'EC-v̈́:v8]:L;T@> K?L^ "QäԕCC?XU@Y N8D@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_@P&aaCb.wCT ;  RapCE,Ft=[gC:EZ-;8=PBWH'|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CMO x$v-Nŋ>C"D,qhi kԼa pA]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F0>Ԃ`È^>@c7xSDLIAtG@@fT@ 7L`\Mh@A HԔk]N $2@KYҫ~`F]/Ԃ/LgaHH|Ef($j*Dj Ujl\X ܃' Lfe]ZxyɇPȂ>T@/G?ȅ(  &NATI$8Yt,ST$c ~7Tik0F*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*( 䀝!͍j, ioboo$Fd(F-,.C$p po52oqpt.'\+FKcpksp{pp  p p ?X0 pp q#q+qi ;CqKSqC[qksq{/qqqqq1qr r!r"+"3r#;!#K$Sr%[%#G$c&sr'{'_&(r))(*r++*,r--,.r//.0s110#23s3;3'2C4Ss5[5τ4c6ss7{-k78s9Wr8s::s;s<>s??t@ @tAA#tB+B3tC;CCtDKDStE[EctFkFstG{GtHHtIItJJtKKtLLtMMtNNtOOuP PuQQ#uR+R3uS;SCuTKTSuU[UcuVkVsuW{WuXXuYYuZZu[[u\\u]]u^^u__v` `vaa#vb+b3vc;cCvdKdSve[ecvfkfsvg{gvhhviivjjvkkvllvmmvnnvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c! ,fBBD^^\jjlnnl..,&&$VVT 224JJLZZ\::<**,zz|bbd""$>>@ $(8蒄̜<08b\`BH@Įprlttp||x|v46@`bdp `4<<Դ86(Nfnp.(8X@Xx0.l0.zfhFJ@x\@<<4 ʔh\`pfp<6УKNHJDv3|{Wi˟=:|ϑ2/z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?דּDF)TV Y3:3(Sp Ih&QlIGqvdP;lЏ(`堄jj_wP@Ip#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:2&Hx@FAHn[Sdq%$-ښACQ:`,Pp;DϑhBx= POK~[:tPHZa}pϲ,@s@ԃ4:H:Î,20PX(6k;=ALbG C@B)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:דB/j " K!OSv=9};'B3\"7Xl{ܸ::w%  X>#=o ֱ |%"~Lڂ#!@( $ ϐ8|C77 +1AzP  {$uhG2ӱD (@CH0USȗz`G3B BPa=q#=q t $ @"J#>H1IHA?B SrI!݃>*`Y%@Zzs!|pȁ'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1px:&]jV$`A" H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;YU1V:u LmS&FD`MG=2Mj3s+nd"tD IE nr#!@? 8~jb)€waG*߭ؑk\nV2Q`-H[yPDLZ*uYr0s Vk>umJ\#"ykMϊe2=cA?CXlA'8"x3 ]gLoX@% H,0>E ':܂0`;dE8"0rYtY'uh 1Oey\+w\Y P,r*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lKG)lLbiOl2-sER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD_;WpBz4j{dQpt d?KD;PT."pd<6Hb_}u\>e="&ث :`qh@;Ԟc옍8&zk-uXR@k) H>ĨBC).wD=6-(7P O|  2t ! )HЏ{jC40!Hy [z@ ie+ x!܇  ~@TT'EV=)= P "P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R`rP+v02> h_P=@Ѐh b}~hQK\G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ) !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsLLW` ym@pNI`j왡HIuK$y'P27v)Wa mrwe\2*_*r_ș:DZIG̢sR>.gm!-*.` r`0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 40wQ0O1 dZJF"3@h0/D?#u\"gJeP#0:蚮:,zT Yq$"AV*)PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R@a-{ 2;4fc.gZЅ) "%"]b*U$]ǭQp@.H5Zq=K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$6@Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mL c cP 5a P@Sq'K>ܛP$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛Y;z{.#r {W s$T $zY'|bUCڵ*T%"T{ .y :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ē;NA2 @Xս ½Uf܋d_T=1ޑ*S9=4OTH<~ *`R;(卄Zڨ,{OcFx׆zk/R2{'w'YY1.*AJ*>ˇK0sL24L4TsM6tM8Cgt)ex`&PI֩ p(b`H*F{:H{`z*w[,Y4]&g - `v" ?p"ԛi&N=bz/ dq@Dl/ @2Oz%0!Jŀ0kŬU]>Pi݋t"h\hwa6 `b3xc;cCydA@~*  ¡|bJD<|${ p@J(u2ǀTjwؙv b6T  *(L;# Yt(LU2d{|7|y 4ȏodQ ~ ҩV|Cs$%47!j AQ 5nc2Bu@ uPA $@V$Izv x8=GyBD?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nҏq6b1a@ZԤP !uzaء_LoB߭c Ckʁ/BFXu#bJ,/L f#\*p;vAlu,dqSr(G&X=|`1yͷswP-YH/_xcN!3uIUn?h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ8v 0Ä(:\" 9gxH3%;FIDS 3 @ û ɵ0 ~{pي{Вw'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s);' ud( zHq$ xGQYZ,[̇\\ gӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ18BS5` 1A@ Y21 5:0J$.+ax+o`˫x@ Dj, ܡoMP`LQi{ |KXLtZP FL!R0t e L܉Ph@< *;o0q 1ą6ͅ  * K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 6Ә?P#ly*ڄ-*]2L%k B8{R"#Z'hStX!XY1-3#e$%RHu«с1@$ S`xYH$*e4D< 1]L }ӒXtզ(֭V NdVi$N#䜈(݊9HzԁI#tx( [5  h2IѷI4x xy{|h$ 9<= bP*{u+C5LA [m5%"0h@LQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx?a]=cb'ч~(05sneWY=.(D!ntPO ćI @#IXj< ERdλw|Y6\{N!wJYI{h ʠ!eR!&M )hɁ4SpB9mRF"!""# z14S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$9 M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u X]2 Obc$H6av]v᲋⬉L^#_n3 9W 1vw tjwvIݘ3w).x? }(1kc th呂0Ӱ¿,H GH1`efՅPHg3]y?Q ]7 F%0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4EoP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀1Sq{{V^ifN|Ҙ$W﷍{'|hS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=vC{bsg> ~"\%ihPĻbY>r!ٸ[t37b@>FSh|KAFEbrO;޼O5\+bXi-Bʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=4UP+vP<<.тIƒ PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3B(A=0`CC 7 N#A=|$$ԳT`R|=N=E68D#@Fl![@:+[J=b?KCE{O?@pH0T{n.NF;3ê) >( d`fwN+3A+-b~sA s= D~4޳AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=cNdQO9[a> m dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX p2~>ʀe#A@GwD %'1`"jh, !72 >~zpQ#gd5$ @2( n+aY" . |~;I @?"xi ^zlP 3x ^A&|dr$-2z;fG<:h@y|qc(Hzh (<5t AZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠%Tu ֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,awf8z & >e>LH/` ^M ^Aɥr@xh Cxr$LTzifRV^ pT)p` 0A\" c H,a%FDQ}L$G1ƺ}B+LdT)P1݋kr d0D) O9-s;wpd7 y|n$`|qH1,A 9Oo׃>r|IoXc M[AaȘ֑k{>BM\M0Q{ƛ*ppq7-. `/k6H[QM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:P`<[H=|2[m; !l#ʃi:Y?xd ߐA$G`03s7NB ![E#GFUG!LS:h)H {ԦdCz%[ BYЃ>vu݇G'V&2|CK&@|<$GP7?^A  Ra`\BD-5FCUD39A, ;ަOE Oў/I?{ ;AY_A _!`%Y(MJCSL;5C8`V> ECZ}0r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b> -+nBXJahA4m @4B_v8 zLA A;XXPġ+bD ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4DЊ7@g%H >$2MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"lxIeZR\CF47̋IDBB8SEXiBP!\HdI>J:\7& Gh$S dHŸAH afY-DzGD@ACɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D'|CT&eAH'g#yzZ,D?XrC$()FD: f(; W4gACGK*߅DٽmIiA|niE<&D e,GOAK;<-Yi&_BܟA4@E(ߎD aY>p #6Dt]ϢFA7NA4\*)%ȂXi~Z)M`E4})5g݃=< 2m#FhE4a~ V'(>4C'`T=#n&>?ܫ:,(Ljr?:ë^Z7i>؃>8@C'@<ĞP(~GRjޫ:_ԃV G-l?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 RpAD?=@ r.Gx@*[泪زJ^ GjA,YnBHH.vw2tB-eFÍ$_: =›(/bhrE .xpZҮ&DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-,0"x!0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtVE99;DCAW"C=Xѣ24S# RL03L=DE?\3F78@-|>2 XÌ~Z'C2X%AIrdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,e-AXC-ZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`.C0lz@ܱpz 91'Dg {B 7W?#`[|-ĦyBp @:l,C%́L#8;;,,,C̕@Kxo=Z?p;7JDG183#F3z/A 0kD7`hN@Ľ{B3xa| JKH; vC{һ&{,C{2/H_s$H |X`>u+Ƀ/I3N0Bc0½ 3 nuS6atޫ.:ӊzLz0,⃃+eμǎ_Z^' "A (rZ'Ua`ûGu P҄(U,#T9}KR%odGGxCwdVYG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwìn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /CTu8> yg YJ`XLҡd]6XgehjlݖnpY ?!S(P. L5SM$!Qtǂ`F0Iu{5~%-MU-[d65uG`1hHeQf2euޙ}蠅#5w-(/##`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.=IIӀaw4jZԗOST hvԣIRBAi XH-SPqȁQQkep`?LpK D#HO- <7#!IT '.}IB;@땊s8Ō !1PQSe={0ZI , 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL<!ěGfbv+"&ӎ8"UG`٪*c $G@ @K{ *H)6d zX+ 0O402P*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙAx` Hw(ڕnk|=ie/n t5:j!Kg {t *Ё n#\ miq9rfRW-u=˜"@l +I_@G^5XAzD̡_\faуCeP=ƫ(ࣅH auzVBI;4|p g=6Bd%PP vLF|X0ЋAN|`"ЏFjh,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʐZBHĽװ؇LG]|`# 7B5D`ȁLt׏&xTc-=1m:!"1`%}>C 7 C $E}C [CR0^w-I$SH`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…(:kO$NFD pG:m"(#6 H(K  lijdZƏL&I! !L P 0fk(- D"RA::n86nC @ ‚ ƻB k !*A6`ց 4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ ƠLD qqȐBN-gj$ X|_b[F Q[k a-!<tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzhAn%l# * @-N$~%bMba c&%!J*N d ϖ!;!)JP瘔b  "((H<J XL. @1V-bdaS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* R`BxʬZh%2j!##LH@%&I1K4Ũr`A1> : s-c;#AҒF,00@OH>L"0p!@emKkvI@ ԁI! " ҬmIb !b⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʨ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨHQuU\"(V:bB\jFﵤoJ+@ VII3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^D*I.F `Al"8Uh!ފ0r_1STC } |6&Dx9B)D`>R>B|L!Rp`B5lIR,5xcI/R7Yߡk@:Do7W5 A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@" D{S[ 6L&Z0 "XvTh a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@a *m5A jt)"j ĕq)Qkp*B " x9nVZMDJ! DZL6 g eˀ" g]:2 H̗Zjʬ"R=d!** cxWjH//0#T!D@^)$@1RC{l#KjA :> cC3,6DB TXC.P*LBY hL$?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!$`!@*|⧇VY[ٟB:|aDY%!hMdAJ`F?zޡd0RGLUQ \N#맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->!` \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!$e2` 7n D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevةiH&7(-Gͺu2>G` `ʽ{ؽK<| .½{ :Fj|c{8”9I|3w4Bwߟw4hY(2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^w"!]&dÐ޻9s|Uݽ@|CD! Ll&+|޽*AF#\×vܕ6U3>G>,Q8=L8gv'v7cg|F=C>tp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(d̵\Jhh.h> iNJi!DRa0@= d$=$uO \7p5P;' _ #@GXΞ}\>X:C2jk_ȲFtՓV;jU[0ɏ/ k>[=׻줻n=v|a@ߨH'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճM*)hqF< 7l3_`Ƒqe:SFVSXYWBFqs-A?a:CX_c}߶c+>!?o>d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF'RZ0@m=ԀLl|Q0># jDTq$+K7 &h, r,XԵ5# Q(V-7=D HaGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]a$L3AҬڂ iYXRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY::6wYF1t3^)yK*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE9Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! P3NXaZj;.H".9P-/c54'eg*Aβ !Cd RF $DCyrFpoپ]xGc GaZo~Fe0A1Bd@G0K_Z Sd-i*~Bf$L Bzs 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`1* 1,4[@ *՘4E9$):~^S"*эkG%Zw,zh S;~%[(n>5η2*X"EtȂ|I!޲u T-{7»9Ki}Kv+N@f%S^G`bk/Ǽ@`td@9 (F! P`_ٵ2, 6Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[Mg&=,(}6➔$*A~0Hw`( 5I0Cw.Hmz;+d|Чu8w  q|y6݄3PrɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet?̴M ;+E {RsBGz6(w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz`.u9@@oӊSY Dh8+! ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG 1$P;nww.:43Zj;" GPxQĬzKذo! " 1LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T64aG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19uc( ?6%5H +@4&%A Jҕx/Yh>$$y3PoD7&ᨁC!Ux  wȸ@ &*؜,9 Dp,Q)3R*'Y-ɥ.aYd৐NnB':jQ;tI"Z M:O M4UU@ X,7ATI QAmbLg7 TFr岘41]  FId~H$|G?+zP{@JGFmUe:JaT2Pn |`=պI76З(r7'q) ðՇb[_t 2􁏒` `H0.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ()5>jH -r/yK:k,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4Y.'qQI`s#?8xQߙvG|I5"Jx- .o e+}E?z@#ֻJ1c0}NBPC@'1.G;`5d>luVDj\+оȽ}ُ:ϺUèo85Pnޓw,)I H#Iȣ-IHd XJٰ 4 6y  hGx>w耤x{ Gtr* ep@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jjt˷˸GZ؂w &% ~~ ) Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w8P+lq vYfhQ?<1tH$ί_tN 9ė|H(%;}x HY>x (\ РQ j#}N Ia9F@xe(f 9L o4"5#ERl%P?܀Ȟɀx% YR$Cu`!v'(J$|$DH5Egxp';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.9-Y#;1Jaf\zvKzT:FL ǼUhM(R;H ևv^N{0!9e~Ȁz ,՚IiPikeȁ  &7{xO@|}`E(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYN() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V9( <1 1m}h.<9KkǐG Hzoˇ8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q}HTWu/:$=  p t_Vi,ʣFw$f 8y>IgW|Xy7C \y˾D`ޅ1'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF XPӯdN+9Q9˸O[hN/wXÀp'y/_fġڳ!)9NHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - c&Bds(ѢF"Mt)ӦNB*u*ժVbͪu+׮oɆw]𺰁 ёNV꽙yo]KnKwݼj޻ݜ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwAmSzC'1Tc5áWI1Qwų~A_j~-NdUe CFA8uVMP9s,]2r#X'+آqφ)N?d0A܎ޏx`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=H`OK$Vԁ;;v [:HCb7Bq^ݓIBK&%#mj*S7PX'D~T0@#p-jctcP7Qkcf3pC<A"X,QFF>:6y3jެAt ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p {# 0F׵|;ꑵJuz=A ܃CS_ק:P>;ϥts*>3;cS=0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xl@Az%K6#j&af1w<)>o ,x PYF$)A\Ec ֱ;"Џ|$G> !fc,#8@*n QC#fwڡA+nēLdIG{(|KYL_` q #\&< J ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 c!H&sv ;8 @=E HgVH Q@H蔭XU}@i Y:= M%z!XB $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>8wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS2H1 @_t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq@-}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53_Tf1 z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}?`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u $^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?0C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7D zĉu\@=QAl<\>d!:@SU ]^ɥDHE;Ba|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp?@ p^s\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IAuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA=$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ!0Lndlc (u,x::IP3LlFZDօ<: =e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH„4:*ę/ }_z2ltI*,4q"DvW՛.") $cB c'RDD0*MԃQ0bɆTUi\J=u\IJ~W!$QD܃yV2+CDjშRk!%æ4$ C?),NT>ŪCH@DXRaY}; B?jĽTH$yROkCC-=liBvƙ`J=Sce^A ``)֖_ P C#zn ibLBܔH@ܭX;<, @0Hح4,E:DC-톕,ےVfd']=|G@0;x؂A$H]4: g͆-,ڎb@*ǩt-m-D@:A@ n`.;nҮ`u&f$1,>^J:l@Z"4uH:T=A)dfK$@ 4lO)T0'IE):% p 0@7zD>EAH@I>î @>R2D0@?/EHK_dHI0^>m` ?h@*D@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`'æA(CorU7L:ۣl@++F5'F4s)%lC" DT1*3pBp;pJуqb@ 3I 4=S0?UHAZz>RüW,AԈ ~Kn|R1D BPu8̳lAD ؕ#) ܃{@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ7=X@v}$$YTI&]U:lBp@}>ThxOAP $!^C=TA@ݏDXcJ:ßO?1@Ab,A)-BmDLKU#=0>)rUAP׾>}-,@#t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@& "*3޺ "{0Իo_)&NBALx Q l$"w&JwDbF['l u:+>>xqǑ'Wysϡ;p@+\yp{@:?3U |i}WYnaYf"+!FI xJTQe `V:z櫱{$yj1Ja xBI'D1SJ  @ށ@lGN\o!_MªgeJ n1!%@oVPiơ*q7+i5F ´ddǑGч0 y'/Թm=4"G^! 6;bgG,_}Z~P" 0dRr @@=PSR=j%PJh`s?. xG=*@*@(q aHHcv$Hz}b۲&IL1S 1 J=/!:!! xB9Αu$"`=E7`r38`]GDDP)I.@"oA dD"呕@*H}*x"H,TtPa GB c c  hBB7CƷ ~r*Z9@+OyΓ=O%Tj4AP. upMHgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:o5O[9zYgVCx_X\Q /"8N'Gw&d ba5exjtM#C4M=."7 H>d%DK, DHj\Gء_B0$tzpzYQBҵL`؀8H6&GVWW`T:  Õ`zqy0c}>!TtiZzUGbav5"` \ h c!"0=aYyG2Q4ApRd!9CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆD"Qah!"Q0 = 7} u-SV3{@ @Oa} 6apBQM` 2@vMVtr"iF2 TBJ k݋@B(sAA($ڍ@+ U|# @C,x$x, LJjtа `C?bP tp3!H߷guoDY.3zlK@8|`CN*6P|L`\ 1UStUJC ^Βݐ@3. =Щ%2 E`@%RtϞW):6X@Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC "Pc=K8@g/N(I& !pD!8d"J(Y,!r"N**j!VAp즱bMND*gM6Kb!Y:AxB#$AiAg0#>@xɰ "`hPXa & /߀0 H!Xa{< 8 !]!P!ڧ_#*7R I" |b 6(dA++T( a@&L &{A @P~ޤ1"bk gFL *@aj6 G#!}Rh)pamN/¹uA` ]*jBdY> B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'x"ƯMejGH D`Rd: -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8(H Y(ޡ-F%( #8> R!H@6@+\s88$`KH2T0@" n6` # ಩>B$&CP`&v|2!'B4"2 }'U46/QX8 $("7)^ |ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#Ԁ3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-Ab (Nd>8Pe:9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!xh0!pj!PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!r)6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫܗOi7Xgܓ@2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*AP5F􃏚>wYʑW;Џ=N=x ×k7\ 鿗IXjA@B%",Wlg!FI>@ܨ:[:`\83{6_QO_BDb@(8{#>R ~o?_-e;HW0DM; ؜-_Sތ7G.Wn?:!g砇.褗n{~;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGHd0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>1)GIUwD baŽza%XB7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ I@{l@pd>Cc%%䅃Lg@M% b(9ẋ>ς Hh`؂*ұFt\aG ҃ t`GJT-A@5Ct%@R:QĢpV! 0G㮂 5gv)^ zHuwS0KCôbƮ'ODH ȉox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ8 %P*k$" :djmr2(|Qvs@ Nܣ Ňd9DAJYN.0|XF 8 @YD #pLsUO3Ka!%K oPK$22Y\q0 k4/{|X*PlB8 duh,G'P.w8rAR Ǜ b-*-c,ad[]20 LA3G$''Q24G|HԹq @fABŰg TT ҉oP1) :tblh T/dwbńϯQ j4\XG<AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fr@CY ,\Y(Yz , ߨA+:M :d~0cJ7y*M}7oHΑ9!cA`H:1қg>Y^x+EKUR(ȣ;qAHt&U=S{aE/|6:r e!Z:BF1 `G-<zfʋ4)P(?H2< zb}L hjZ[ai v aDz7X&Yd. A%pGvq %8 pw?"# $Pg\E?ݔ@AV212W*e! sbK"2"X">(rS}g2"SR`xzXOJ )tb1G r i,@tb2Ac ON(LRpC NhAX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7с!DS@j+R+AvDE0vj``-b- H\!Et*>%`E*%υ= `& `T"l.72 BBuPTwLe8**@+e%p 9}2%p] yK0/r/b,p`dÃ06c5h0 ؎>|cm $*%`'2=^E@ H22v5D@8o:v#t#+.E0@ 9F`29PDΡ=48& 3!Ls2F -1s5(0#MWXEYܐV 6m6AeDivӇ_X#GP8 9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;pI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O0=؊TK PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گ(0 fiLSGj֌A@Up%VjKsjh yv(ń @P eTe]qMGd0qE6"ȫN*{%wr0SRvE;T+FS{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾BcO /~Dx:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2. +\}Ԡ0yp,iПfP 0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"KpqVt%m" p-*°s ʧa*̢vl8yM'H'1 Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-o;hT O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowHa~z&w]{s΂ }(;| ^EUa{0$ ;(ej%H݅""ܓ0; P_:]巹ה d5Dv2'Po t܋˜z [KsѥO^uٵows0ûzK𽻧aE ~KT։vJG~g `b!|P3J}*Po G0~J!9JǸz'{6%AS({H@ K![—oZHz"k!nN*xG>HodaZ|Q!NXа{ BtQH#tRJ+RL3tMF}j.Q8TUS*YŬJ.zatz{'*@\YH  {':Xu0! Ma{8!%1g6^ 1wܫ}Fʁ.̳R`1_~Lz9SO"[؛7! 8 R~ѧz`z `e2fsyg{gj1`h@J{b`jzkkƔ  6dKƘҶn{oo* W.kgq#|r+r%pIő3r$7A^E|@)t@wd)MyJT!40!Z:р `3vR$@?_Z `Au(1;&CpD0A*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|HjTFb qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^сiQ0x@>0`LA@@&0 \,g2Rt[QH1|@l C3(i:ῥc62HG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6P{ kVd!91ekيfցXt t*B&VbE9K?D؄m\B.x4`GX9'#) $b[~8At; "Ti@5$yሜG G3:Qzm&[(Or|匜e$0F0氎 ` Ubare2v=U @rKzLЋft\C ,E4wfhґ9J݀E= lò Gd2 UB H) Aj<臜}ld'%#Fs`d/Bp~"+CdֳRRpESVCX@\(Iq~^#H"Dbwt7<9 x-EHSKX ]T&ހ 02`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>H, }Cz3EFv*P&[ D`Aͻ/=uE:0"YW#W*3 ˈ.A#Y ˇؠr? " @ #Q!؉kq5 J6K: UA ;7/ |pUzkM c` (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 D9*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5mG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kiʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-eZ@xC|~@YTfXE^n9 (ƱStd H}X|#}pup|`v .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{HMT#Ai 5leDof=w#oˇd@)7[ .(rq|#B!Y"x^|8D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4<dz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@=KiؽwXݽu⣒a6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzxt`œ '"uB|(A"c͝?L|%4!Ȳ{m| Wz((v=q `oqOԁ[ L_؞/S?Y`]'Дc3AA}G:|t> ;#># :%>)"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>#AAOp UvY>4@:(>mp ぐР&tE5GhCB Y*Wmc %Q, A3YnKdW`d@qΫ4:"$=f,J;-Z{-jm9;C;:T$TL؀7RwX.[:K ]&t=PO 1A):PlJ:S+: j>4pOTq'r/79qcN{"NKLD*L0̥9Bӝ@=!4 },)j}©3@:Dy^wJC ^)@@~^i7:80#贁LzT=)zPXAHp(MuptKӇhr\goB@ᝤnA#|i?٠"āf?(< Eoc"BnCB=V(} a| (E$쐂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(CU`'RLpz)GEpы`cS8 2 XB=uCO1v5^[J l?k`n;zCJ # 2:~1$6yN.#H} #Z,5ɂ%/-Eb\c,H0eɂh@3)PB|@TM:Q+[ċHg+tQ XB+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0'츧>drqb\i>1,!9PJ8DN/hON;L宾ax@ns9 ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7D CCU zLh@:@z,C胹mXC̮ԝ|:!Wd,L ^ /| m,;tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]kՃ,tL`‰dBH]lDDBNL H OB|CI*CZv(U'* Wxɑih>XG!D>|CYeP5fWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮD El;,A$ChEm}Ga@1KN;Tܱ&<Ԗ,D:D9cG^^=l#]P.j!<*С^}aH@@E 9*0kz=NL!@C?bD*i°@lNLlR mD|lĊ,WC = >}KIN,ҰzB)ӡE==ElrjJYUB+~ld$sAmY @+8]@),Bס" رÕJA&..6 %hN脐`<VzH'Dd@܃;[BL@AnIOaO0^M MB\PPan.FCB.εc0DĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/垣R>H DWH2p|zcxHCmPȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅@-\.#,A&'2((* ;tr g7QD)B#h&H>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VH&|z&׹V+/:2rhGoF$+$K @'8g@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG, <>P1m$ EP4Y^> h8Ŭ;#,>l ̸V%hew?w'V ENDXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAA/l"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/SC>!˃&jAoT7CAzZ4K'^dYA;J<1ԃ\ 1˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPDu'\h;`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝ,@,4MӨ@H)H D|zܻ/؉(P݈{؅(]>F# !E@| Ա3X̋;y ]Ov qob@\D^剎;<p(S:*Ӂц p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W" W RpA6mK o; {ם+QC*|[u+Cu⊟DqT{Rz6`v,| H|lA %((';4Y$3:o9@?J"d2'iKvA}jhσЋ>/'"0Ĕ3 ~%),;" &BQ9 0+ʋt|J&J8 }.NJ~(Mr=t]v}xW)wvRI0Mz>xg xa`<ha4(O!p ̠ө W]5|ީħ'Jzק20Ftx  " oxwؘu( / N(PpvFj:`CVèf'G OnjAO6+, [tPH@ iǭu|9'ph{9믌&0|>0% hC|G8xFu8A{}Em hH)L:; _z֩q\1yq|~]c( Qߪm9+S>!0UA ^9A~!!ah_;AGFDH \$&xa,w<@mBxj`GDLg䘏0N C2YQ)E鈀qzF8HH#>Q"~l@?XFu,~y#'aTeq́`Y>b\t 7@`E=`)I5" ҅Sz[9K ,<zrH;/€cp7-dH aP<aA EG`%QD"7F5<(BeQM68_~WET,c EdXKhE(o`6@>bF*"ff v#2@R0:##o;"#H` {LO@ͬb !B*BR" !A TN@&#f/b³)*xbTZI^cj+ bX'*MJƮS:SRphΆ!CJ"$Rma.ꡙ( $X?@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~$` 7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 08IP* kaƠIZe'+L-$r=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$ !ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ejz ĸ6qdBT'2@"b@)QF FA3C#B2({DE/0@"` *Rhb3K3%BZeb e؊4A arB sTjރHcG"`? ;F# i6;AƠZAHIn>A q.^.N'lzG AK$Nc:'!D,!s//f$!dS/D"`*e=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`A@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@e `2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  Bd `k3 `k"`#F)xhz6@Ge$J -%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF  "◒+ْ3.tNFp$EZ-!"A0h٠zx$"6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6: :0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?B #^r`'@F@*: @V 6CF*`c()gf"HSX]R@x`c(/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F|` @"y@"r}'v}CBnDHbn@TSԁL%0 "Ё b1`=` TJaB?~Bܰ|փ0BQ^AZc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+p%Y.B #7t[N@=vE8HLG84!%ߥ3*ݻrv7n\YԐ5T)ӕNWjV 5X-A|Q4HESs= *X)d،6t=nQ>~a|v2OުDžO4X Rpm=!{o}P„5jehmp م ` e_na~b"Hb&b*b.c2Hc6XYnp\4BE  ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1܃A3@B^@>EA>SթXcBs8h s7 mMɪdq}Nꆓ2BPYt8@X$Bʠdi_j:"D E!IВj8$:I)#aM`>#E 8&0S en> NȮš,!>|;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y$=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) :d:D7A0/h;N5W;j%ɔ!:t>3BDh~}ЦkUtHkΏa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|@ €z\ A*~̯ˇT #$nw:ʹ@0 B!Z݈0Qn {HHIO@D ,2Dp3_a6DJ@NB3}0!XWB@)-5 Ȓ8>8cq&80 V''v]mzWXV$(cs40D|# ^uM/=Hh v@=q` 7 ps,9ωt~Oq!P\бdh!39*3%飞>ws%z{#!Y=QȖs򨬄pA~oStw,S|[9ާ`$1$p@S̈́` aB%&no9#µ `} ?(qPJ(<M&A1 aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"@P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vZ" aqnIPt IOV<9=@ tsY? IR@KcF14&#p<4X)@V`71X# ED)OIm7!9@ 1<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig5 qqwj,>3(5P `%&֑mo q*s=fS@[|Z@.v!0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2@jqqzOR% ߐoч^h7(j@0@ : `ͪ۷ $'PAH}ͅP `gB0xRي"7W`zC($#:x p @%"@c P S) aUsך S!#D&@ҩwS鲧e ߀Rb芭 ؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vsɾ5ɒ,{7B `{9 38^|V2QK@Jeʃ7H@"iOYjp j 2ܶȻ!0x,N0P" 2ġ'=_C'x& s hvBgvG!= kyT!59@JmM)Beۚcc=Mm׍G`pce4IT%]$CI@{o5`f1K#Z]Ey,#Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^3K0mk773/Oı$_7R+{n0 C -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5}80h O]ZY1?5  2e[ F=3}=?]ȁ@5GVz#.< i%oB/> Bwʇ}z$Cg6x:d!2"C#DOD1EWdE_1FgFo1GwG2H!$YЬ@h$>Y1D 0c`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`uqx+Y N(YJ=u;U l @0RЧK; 3dQc z3F2ޱ ]R aPdDZG-7Dd&>8`G (S@'j7e:Ǝb ~FeCA{,c@My g*@u*@tU1цjU M\D >]؁xІȚt!6b1u!HoGe(ww{#0 <{q-W:Rv24._a'XZ T@Mޑ4a@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"QZX !&@2,P (C=xW a=%O\/ R$#y&A0 \@.x0&/P __O=@cl/? ҃u88jd X_‡c<@PZIf#8k$@h2+e"hٜW"be,+p2 A=zJvֳmhE;ZҖִvF1*#x%`p b $6qκFVo@0Q YWP).u c(TxMɛ vxFkTdt4{9XZh-P א ~ X;~Hpnk`- c@u1?HFϤ  CIu(`0o"k"FPtXh wȥ|DJI؀>:X!4 zpYh( ƍH5@> +ۣ(epOWl~ `}֒ .}8C n "s99b@U`{P-npdTPA3wxE @|Ӈ,)Έ< ƀF Ȁk~ ۓ  \3` }x iԼ'\>@ `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇1u`NN{6IZz BS)6{K=Xd x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!`{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH thHz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@F(0ԄmmmRpIkip>ߖpySnDt)7SGcHYam66B=#G$/yۺv\b huX|7+,r|9n(@Zn$q ́d2Qq-u`Btx2JQ x F# Z]XdYMKa: pt1 `2Ϝ2vH*Q' ,JPt@N(ljt0|)-P%tI K/0t5pn3T@Tvf vivk P@oJ}h{{0r}׀,6~ /GL'p{"`P@z]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'cܳ ߻{=R,d'E !ɚE uҁB䃜WC>Pa@t^2D3 o>Ev4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM96p H0 exFF`} wшgo {œW@{􍠝jN=Ys!qs?O>cY> DOPL=vOSs} Q`;3=cj%S@#@4;:Q; 3[F@:oF24B8{I  2<0@ ,2:=~DAf lL!I?)TNZgƤD\=|;"̔@fSD [ T;4$0;2d,!>|}IpCUPOZ+`HbԳ7^>Nw= wT=MG@"n.SyHzn}["y. 0j |=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% :@^:l5rFX5^G};sN̝k67h>0va=}hDUSKSn9:o[;T>*%f@:3 @= (-exO:RSɎ#:fzk7 @=b dAUO?@LiߐU ߳H Hoe;޽ɖVI|ǀ[vך+1+0ANe @^>|wܽ.2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U1'M!=@Pz8$zW.J:*t`0@"ݼC": CO,v I LGeѣO<P>ҡD,7H>"‘FL=<9=½@2Ȕ,đ/`80HjЏUPS9i@tL8KGTGєx5.F}c2)3(V$>DYϐ!0@x +'ZDIʤM%XyOB)\$ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Rɢ A=yς6-iKkӢ=:hQ,#|H$e:QB _79F`@?Ґ*5&5(1>{c&YI`b:XzóefM1HjRZ>  O|b:H7<;_c<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏt@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aUQMDyL42,CǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJaocSimʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX`8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*0&3`Dl؁$>%7HreGhQ >ï@ԱkSv5)eDp L,HS*Dk[\\ բ=Koӣ>=Kd4+ZIbQFc 6XTko< @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ODYWNCP@$JH$4(!RO`"4'H`\HPh] \Jb+>!H|@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;D,=>EpC(Ns0  D'EC-v̈́:v8]:L;T@> K?L^ "QäԕCC?XU@Y N8D@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_@P&aaCb.wCT ;  RapCE,Ft=[gC:EZ-;8=PBWH'|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CMO x$v-Nŋ>C"D,qhi kԼa pA]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F0>Ԃ`È^>@c7xSDLIAtG@@fT@ 7L`\Mh@A HԔk]N $2@KYҫ~`F]/Ԃ/LgaHH|Ef($j*Dj Ujl\X ܃' Lfe]ZxyɇPȂ>T@/G?ȅ(  &NATI$8Yt,ST$c ~7Tik0F*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*( 䀝!͍j, ioboo$Fd(F-,.C$p po52oqpt.'\+FKcpksp{pp  p p ?X0 pp q#q+qi ;CqKSqC[qksq{/qqqqq1qr r!r"+"3r#;!#K$Sr%[%#G$c&sr'{'_&(r))(*r++*,r--,.r//.0s110#23s3;3'2C4Ss5[5τ4c6ss7{-k78s9Wr8s::s;s<>s??t@ @tAA#tB+B3tC;CCtDKDStE[EctFkFstG{GtHHtIItJJtKKtLLtMMtNNtOOuP PuQQ#uR+R3uS;SCuTKTSuU[UcuVkVsuW{WuXXuYYuZZu[[u\\u]]u^^u__v` `vaa#vb+b3vc;cCvdKdSve[ecvfkfsvg{gvhhviivjjvkkvllvmmvnnvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c! ,fBBD^^\jjlnnl..,&&$VVT 224JJLZZ\::<**,zz|bbd""$>>@ $(8蒄̜<08b\`BH@Įprlttp||x|v46@`bdp `4<<Դ86(Nfnp.(8X@Xx0.l0.zfhFJ@x\@<<4 ʔh\`pfp<6УKNHJDv3|{Wi˟=:|ϑ2/z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?דּDF)TV Y3:3(Sp Ih&QlIGqvdP;lЏ(`堄jj_wP@Ip#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:2&Hx@FAHn[Sdq%$-ښACQ:`,Pp;DϑhBx= POK~[:tPHZa}pϲ,@s@ԃ4:H:Î,20PX(6k;=ALbG C@B)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:דB/j " K!OSv=9};'B3\"7Xl{ܸ::w%  X>#=o ֱ |%"~Lڂ#!@( $ ϐ8|C77 +1AzP  {$uhG2ӱD (@CH0USȗz`G3B BPa=q#=q t $ @"J#>H1IHA?B SrI!݃>*`Y%@Zzs!|pȁ'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1px:&]jV$`A" H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;YU1V:u LmS&FD`MG=2Mj3s+nd"tD IE nr#!@? 8~jb)€waG*߭ؑk\nV2Q`-H[yPDLZ*uYr0s Vk>umJ\#"ykMϊe2=cA?CXlA'8"x3 ]gLoX@% H,0>E ':܂0`;dE8"0rYtY'uh 1Oey\+w\Y P,r*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lKG)lLbiOl2-sER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD_;WpBz4j{dQpt d?KD;PT."pd<6Hb_}u\>e="&ث :`qh@;Ԟc옍8&zk-uXR@k) H>ĨBC).wD=6-(7P O|  2t ! )HЏ{jC40!Hy [z@ ie+ x!܇  ~@TT'EV=)= P "P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R`rP+v02> h_P=@Ѐh b}~hQK\G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ) !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsLLW` ym@pNI`j왡HIuK$y'P27v)Wa mrwe\2*_*r_ș:DZIG̢sR>.gm!-*.` r`0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 40wQ0O1 dZJF"3@h0/D?#u\"gJeP#0:蚮:,zT Yq$"AV*)PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R@a-{ 2;4fc.gZЅ) "%"]b*U$]ǭQp@.H5Zq=K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$6@Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mL c cP 5a P@Sq'K>ܛP$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛Y;z{.#r {W s$T $zY'|bUCڵ*T%"T{ .y :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ē;NA2 @Xս ½Uf܋d_T=1ޑ*S9=4OTH<~ *`R;(卄Zڨ,{OcFx׆zk/R2{'w'YY1.*AJ*>ˇK0sL24L4TsM6tM8Cgt)ex`&PI֩ p(b`H*F{:H{`z*w[,Y4]&g - `v" ?p"ԛi&N=bz/ dq@Dl/ @2Oz%0!Jŀ0kŬU]>Pi݋t"h\hwa6 `b3xc;cCydA@~*  ¡|bJD<|${ p@J(u2ǀTjwؙv b6T  *(L;# Yt(LU2d{|7|y 4ȏodQ ~ ҩV|Cs$%47!j AQ 5nc2Bu@ uPA $@V$Izv x8=GyBD?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nҏq6b1a@ZԤP !uzaء_LoB߭c Ckʁ/BFXu#bJ,/L f#\*p;vAlu,dqSr(G&X=|`1yͷswP-YH/_xcN!3uIUn?h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ8v 0Ä(:\" 9gxH3%;FIDS 3 @ û ɵ0 ~{pي{Вw'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s);' ud( zHq$ xGQYZ,[̇\\ gӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ18BS5` 1A@ Y21 5:0J$.+ax+o`˫x@ Dj, ܡoMP`LQi{ |KXLtZP FL!R0t e L܉Ph@< *;o0q 1ą6ͅ  * K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 6Ә?P#ly*ڄ-*]2L%k B8{R"#Z'hStX!XY1-3#e$%RHu«с1@$ S`xYH$*e4D< 1]L }ӒXtզ(֭V NdVi$N#䜈(݊9HzԁI#tx( [5  h2IѷI4x xy{|h$ 9<= bP*{u+C5LA [m5%"0h@LQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx?a]=cb'ч~(05sneWY=.(D!ntPO ćI @#IXj< ERdλw|Y6\{N!wJYI{h ʠ!eR!&M )hɁ4SpB9mRF"!""# z14S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$9 M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u X]2 Obc$H6av]v᲋⬉L^#_n3 9W 1vw tjwvIݘ3w).x? }(1kc th呂0Ӱ¿,H GH1`efՅPHg3]y?Q ]7 F%0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4EoP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀1Sq{{V^ifN|Ҙ$W﷍{'|hS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=vC{bsg> ~"\%ihPĻbY>r!ٸ[t37b@>FSh|KAFEbrO;޼O5\+bXi-Bʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=4UP+vP<<.тIƒ PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3B(A=0`CC 7 N#A=|$$ԳT`R|=N=E68D#@Fl![@:+[J=b?KCE{O?@pH0T{n.NF;3ê) >( d`fwN+3A+-b~sA s= D~4޳AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=cNdQO9[a> m dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX p2~>ʀe#A@GwD %'1`"jh, !72 >~zpQ#gd5$ @2( n+aY" . |~;I @?"xi ^zlP 3x ^A&|dr$-2z;fG<:h@y|qc(Hzh (<5t AZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠%Tu ֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,awf8z & >e>LH/` ^M ^Aɥr@xh Cxr$LTzifRV^ pT)p` 0A\" c H,a%FDQ}L$G1ƺ}B+LdT)P1݋kr d0D) O9-s;wpd7 y|n$`|qH1,A 9Oo׃>r|IoXc M[AaȘ֑k{>BM\M0Q{ƛ*ppq7-. `/k6H[QM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:P`<[H=|2[m; !l#ʃi:Y?xd ߐA$G`03s7NB ![E#GFUG!LS:h)H {ԦdCz%[ BYЃ>vu݇G'V&2|CK&@|<$GP7?^A  Ra`\BD-5FCUD39A, ;ަOE Oў/I?{ ;AY_A _!`%Y(MJCSL;5C8`V> ECZ}0r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b> -+nBXJahA4m @4B_v8 zLA A;XXPġ+bD ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4DЊ7@g%H >$2MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"lxIeZR\CF47̋IDBB8SEXiBP!\HdI>J:\7& Gh$S dHŸAH afY-DzGD@ACɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D'|CT&eAH'g#yzZ,D?XrC$()FD: f(; W4gACGK*߅DٽmIiA|niE<&D e,GOAK;<-Yi&_BܟA4@E(ߎD aY>p #6Dt]ϢFA7NA4\*)%ȂXi~Z)M`E4})5g݃=< 2m#FhE4a~ V'(>4C'`T=#n&>?ܫ:,(Ljr?:ë^Z7i>؃>8@C'@<ĞP(~GRjޫ:_ԃV G-l?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 RpAD?=@ r.Gx@*[泪زJ^ GjA,YnBHH.vw2tB-eFÍ$_: =›(/bhrE .xpZҮ&DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-,0"x!0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtVE99;DCAW"C=Xѣ24S# RL03L=DE?\3F78@-|>2 XÌ~Z'C2X%AIrdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,e-AXC-ZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`.C0lz@ܱpz 91'Dg {B 7W?#`[|-ĦyBp @:l,C%́L#8;;,,,C̕@Kxo=Z?p;7JDG183#F3z/A 0kD7`hN@Ľ{B3xa| JKH; vC{һ&{,C{2/H_s$H |X`>u+Ƀ/I3N0Bc0½ 3 nuS6atޫ.:ӊzLz0,⃃+eμǎ_Z^' "A (rZ'Ua`ûGu P҄(U,#T9}KR%odGGxCwdVYG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwìn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /CTu8> yg YJ`XLҡd]6XgehjlݖnpY ?!S(P. L5SM$!Qtǂ`F0Iu{5~%-MU-[d65uG`1hHeQf2euޙ}蠅#5w-(/##`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.=IIӀaw4jZԗOST hvԣIRBAi XH-SPqȁQQkep`?LpK D#HO- <7#!IT '.}IB;@땊s8Ō !1PQSe={0ZI , 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL<!ěGfbv+"&ӎ8"UG`٪*c $G@ @K{ *H)6d zX+ 0O402P*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙAx` Hw(ڕnk|=ie/n t5:j!Kg {t *Ё n#\ miq9rfRW-u=˜"@l +I_@G^5XAzD̡_\faуCeP=ƫ(ࣅH auzVBI;4|p g=6Bd%PP vLF|X0ЋAN|`"ЏFjh,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʐZBHĽװ؇LG]|`# 7B5D`ȁLt׏&xTc-=1m:!"1`%}>C 7 C $E}C [CR0^w-I$SH`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…(:kO$NFD pG:m"(#6 H(K  lijdZƏL&I! !L P 0fk(- D"RA::n86nC @ ‚ ƻB k !*A6`ց 4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ ƠLD qqȐBN-gj$ X|_b[F Q[k a-!<tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzhAn%l# * @-N$~%bMba c&%!J*N d ϖ!;!)JP瘔b  "((H<J XL. @1V-bdaS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* R`BxʬZh%2j!##LH@%&I1K4Ũr`A1> : s-c;#AҒF,00@OH>L"0p!@emKkvI@ ԁI! " ҬmIb !b⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʨ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨHQuU\"(V:bB\jFﵤoJ+@ VII3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^D*I.F `Al"8Uh!ފ0r_1STC } |6&Dx9B)D`>R>B|L!Rp`B5lIR,5xcI/R7Yߡk@:Do7W5 A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@" D{S[ 6L&Z0 "XvTh a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@a *m5A jt)"j ĕq)Qkp*B " x9nVZMDJ! DZL6 g eˀ" g]:2 H̗Zjʬ"R=d!** cxWjH//0#T!D@^)$@1RC{l#KjA :> cC3,6DB TXC.P*LBY hL$?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!$`!@*|⧇VY[ٟB:|aDY%!hMdAJ`F?zޡd0RGLUQ \N#맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->!` \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!$e2` 7n D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevةiH&7(-Gͺu2>G` `ʽ{ؽK<| .½{ :Fj|c{8”9I|3w4Bwߟw4hY(2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^w"!]&dÐ޻9s|Uݽ@|CD! Ll&+|޽*AF#\×vܕ6U3>G>,Q8=L8gv'v7cg|F=C>tp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(d̵\Jhh.h> iNJi!DRa0@= d$=$uO \7p5P;' _ #@GXΞ}\>X:C2jk_ȲFtՓV;jU[0ɏ/ k>[=׻줻n=v|a@ߨH'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճM*)hqF< 7l3_`Ƒqe:SFVSXYWBFqs-A?a:CX_c}߶c+>!?o>d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF'RZ0@m=ԀLl|Q0># jDTq$+K7 &h, r,XԵ5# Q(V-7=D HaGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]a$L3AҬڂ iYXRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY::6wYF1t3^)yK*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE9Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! P3NXaZj;.H".9P-/c54'eg*Aβ !Cd RF $DCyrFpoپ]xGc GaZo~Fe0A1Bd@G0K_Z Sd-i*~Bf$L Bzs 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`1* 1,4[@ *՘4E9$):~^S"*эkG%Zw,zh S;~%[(n>5η2*X"EtȂ|I!޲u T-{7»9Ki}Kv+N@f%S^G`bk/Ǽ@`td@9 (F! P`_ٵ2, 6Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[Mg&=,(}6➔$*A~0Hw`( 5I0Cw.Hmz;+d|Чu8w  q|y6݄3PrɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet?̴M ;+E {RsBGz6(w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz`.u9@@oӊSY Dh8+! ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG 1$P;nww.:43Zj;" GPxQĬzKذo! " 1LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T64aG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19uc( ?6%5H +@4&%A Jҕx/Yh>$$y3PoD7&ᨁC!Ux  wȸ@ &*؜,9 Dp,Q)3R*'Y-ɥ.aYd৐NnB':jQ;tI"Z M:O M4UU@ X,7ATI QAmbLg7 TFr岘41]  FId~H$|G?+zP{@JGFmUe:JaT2Pn |`=պI76З(r7'q) ðՇb[_t 2􁏒` `H0.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ()5>jH -r/yK:k,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4Y.'qQI`s#?8xQߙvG|I5"Jx- .o e+}E?z@#ֻJ1c0}NBPC@'1.G;`5d>luVDj\+оȽ}ُ:ϺUèo85Pnޓw,)I H#Iȣ-IHd XJٰ 4 6y  hGx>w耤x{ Gtr* ep@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jjt˷˸GZ؂w &% ~~ ) Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w8P+lq vYfhQ?<1tH$ί_tN 9ė|H(%;}x HY>x (\ РQ j#}N Ia9F@xe(f 9L o4"5#ERl%P?܀Ȟɀx% YR$Cu`!v'(J$|$DH5Egxp';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.9-Y#;1Jaf\zvKzT:FL ǼUhM(R;H ևv^N{0!9e~Ȁz ,՚IiPikeȁ  &7{xO@|}`E(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYN() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V9( <1 1m}h.<9KkǐG Hzoˇ8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q}HTWu/:$=  p t_Vi,ʣFw$f 8y>IgW|Xy7C \y˾D`ޅ1'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF XPӯdN+9Q9˸O[hN/wXÀp'y/_fġڳ!)9NHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - c&Bds(ѢF"Mt)ӦNB*u*ժVbͪu+׮oɆw]𺰁 ёNV꽙yo]KnKwݼj޻ݜ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwAmSzC'1Tc5áWI1Qwų~A_j~-NdUe CFA8uVMP9s,]2r#X'+آqφ)N?d0A܎ޏx`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=H`OK$Vԁ;;v [:HCb7Bq^ݓIBK&%#mj*S7PX'D~T0@#p-jctcP7Qkcf3pC<A"X,QFF>:6y3jެAt ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p {# 0F׵|;ꑵJuz=A ܃CS_ק:P>;ϥts*>3;cS=0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xl@Az%K6#j&af1w<)>o ,x PYF$)A\Ec ֱ;"Џ|$G> !fc,#8@*n QC#fwڡA+nēLdIG{(|KYL_` q #\&< J ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 c!H&sv ;8 @=E HgVH Q@H蔭XU}@i Y:= M%z!XB $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>8wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS2H1 @_t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq@-}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53_Tf1 z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}?`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u $^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?0C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7D zĉu\@=QAl<\>d!:@SU ]^ɥDHE;Ba|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp?@ p^s\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IAuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA=$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ!0Lndlc (u,x::IP3LlFZDօ<: =e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH„4:*ę/ }_z2ltI*,4q"DvW՛.") $cB c'RDD0*MԃQ0bɆTUi\J=u\IJ~W!$QD܃yV2+CDjშRk!%æ4$ C?),NT>ŪCH@DXRaY}; B?jĽTH$yROkCC-=liBvƙ`J=Sce^A ``)֖_ P C#zn ibLBܔH@ܭX;<, @0Hح4,E:DC-톕,ےVfd']=|G@0;x؂A$H]4: g͆-,ڎb@*ǩt-m-D@:A@ n`.;nҮ`u&f$1,>^J:l@Z"4uH:T=A)dfK$@ 4lO)T0'IE):% p 0@7zD>EAH@I>î @>R2D0@?/EHK_dHI0^>m` ?h@*D@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`'æA(CorU7L:ۣl@++F5'F4s)%lC" DT1*3pBp;pJуqb@ 3I 4=S0?UHAZz>RüW,AԈ ~Kn|R1D BPu8̳lAD ؕ#) ܃{@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ7=X@v}$$YTI&]U:lBp@}>ThxOAP $!^C=TA@ݏDXcJ:ßO?1@Ab,A)-BmDLKU#=0>)rUAP׾>}-,@#t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@& "*3޺ "{0Իo_)&NBALx Q l$"w&JwDbF['l u:+>>xqǑ'Wysϡ;p@+\yp{@:?3U |i}WYnaYf"+!FI xJTQe `V:z櫱{$yj1Ja xBI'D1SJ  @ށ@lGN\o!_MªgeJ n1!%@oVPiơ*q7+i5F ´ddǑGч0 y'/Թm=4"G^! 6;bgG,_}Z~P" 0dRr @@=PSR=j%PJh`s?. xG=*@*@(q aHHcv$Hz}b۲&IL1S 1 J=/!:!! xB9Αu$"`=E7`r38`]GDDP)I.@"oA dD"呕@*H}*x"H,TtPa GB c c  hBB7CƷ ~r*Z9@+OyΓ=O%Tj4AP. upMHgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:o5O[9zYgVCx_X\Q /"8N'Gw&d ba5exjtM#C4M=."7 H>d%DK, DHj\Gء_B0$tzpzYQBҵL`؀8H6&GVWW`T:  Õ`zqy0c}>!TtiZzUGbav5"` \ h c!"0=aYyG2Q4ApRd!9CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆD"Qah!"Q0 = 7} u-SV3{@ @Oa} 6apBQM` 2@vMVtr"iF2 TBJ k݋@B(sAA($ڍ@+ U|# @C,x$x, LJjtа `C?bP tp3!H߷guoDY.3zlK@8|`CN*6P|L`\ 1UStUJC ^Βݐ@3. =Щ%2 E`@%RtϞW):6X@Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC "Pc=K8@g/N(I& !pD!8d"J(Y,!r"N**j!VAp즱bMND*gM6Kb!Y:AxB#$AiAg0#>@xɰ "`hPXa & /߀0 H!Xa{< 8 !]!P!ڧ_#*7R I" |b 6(dA++T( a@&L &{A @P~ޤ1"bk gFL *@aj6 G#!}Rh)pamN/¹uA` ]*jBdY> B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'x"ƯMejGH D`Rd: -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8(H Y(ޡ-F%( #8> R!H@6@+\s88$`KH2T0@" n6` # ಩>B$&CP`&v|2!'B4"2 }'U46/QX8 $("7)^ |ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#Ԁ3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-Ab (Nd>8Pe:9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!xh0!pj!PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!r)6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫܗOi7Xgܓ@2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*AP5F􃏚>wYʑW;Џ=N=x ×k7\ 鿗IXjA@B%",Wlg!FI>@ܨ:[:`\83{6_QO_BDb@(8{#>R ~o?_-e;HW0DM; ؜-_Sތ7G.Wn?:!g砇.褗n{~;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGHd0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>1)GIUwD baŽza%XB7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ I@{l@pd>Cc%%䅃Lg@M% b(9ẋ>ς Hh`؂*ұFt\aG ҃ t`GJT-A@5Ct%@R:QĢpV! 0G㮂 5gv)^ zHuwS0KCôbƮ'ODH ȉox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ8 %P*k$" :djmr2(|Qvs@ Nܣ Ňd9DAJYN.0|XF 8 @YD #pLsUO3Ka!%K oPK$22Y\q0 k4/{|X*PlB8 duh,G'P.w8rAR Ǜ b-*-c,ad[]20 LA3G$''Q24G|HԹq @fABŰg TT ҉oP1) :tblh T/dwbńϯQ j4\XG<AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fr@CY ,\Y(Yz , ߨA+:M :d~0cJ7y*M}7oHΑ9!cA`H:1қg>Y^x+EKUR(ȣ;qAHt&U=S{aE/|6:r e!Z:BF1 `G-<zfʋ4)P(?H2< zb}L hjZ[ai v aDz7X&Yd. A%pGvq %8 pw?"# $Pg\E?ݔ@AV212W*e! sbK"2"X">(rS}g2"SR`xzXOJ )tb1G r i,@tb2Ac ON(LRpC NhAX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7с!DS@j+R+AvDE0vj``-b- H\!Et*>%`E*%υ= `& `T"l.72 BBuPTwLe8**@+e%p 9}2%p] yK0/r/b,p`dÃ06c5h0 ؎>|cm $*%`'2=^E@ H22v5D@8o:v#t#+.E0@ 9F`29PDΡ=48& 3!Ls2F -1s5(0#MWXEYܐV 6m6AeDivӇ_X#GP8 9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;pI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O0=؊TK PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گ(0 fiLSGj֌A@Up%VjKsjh yv(ń @P eTe]qMGd0qE6"ȫN*{%wr0SRvE;T+FS{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾BcO /~Dx:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2. +\}Ԡ0yp,iПfP 0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"KpqVt%m" p-*°s ʧa*̢vl8yM'H'1 Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-o;hT O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowHa~z&w]{s΂ }(;| ^EUa{0$ ;(ej%H݅""ܓ0; P_:]巹ה d5Dv2'Po t܋˜z [KsѥO^uٵows0ûzK𽻧aE ~KT։vJG~g `b!|P3J}*Po G0~J!9JǸz'{6%AS({H@ K![—oZHz"k!nN*xG>HodaZ|Q!NXа{ BtQH#tRJ+RL3tMF}j.Q8TUS*YŬJ.zatz{'*@\YH  {':Xu0! Ma{8!%1g6^ 1wܫ}Fʁ.̳R`1_~Lz9SO"[؛7! 8 R~ѧz`z `e2fsyg{gj1`h@J{b`jzkkƔ  6dKƘҶn{oo* W.kgq#|r+r%pIő3r$7A^E|@)t@wd)MyJT!40!Z:р `3vR$@?_Z `Au(1;&CpD0A*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|HjTFb qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^сiQ0x@>0`LA@@&0 \,g2Rt[QH1|@l C3(i:ῥc62HG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6P{ kVd!91ekيfցXt t*B&VbE9K?D؄m\B.x4`GX9'#) $b[~8At; "Ti@5$yሜG G3:Qzm&[(Or|匜e$0F0氎 ` Ubare2v=U @rKzLЋft\C ,E4wfhґ9J݀E= lò Gd2 UB H) Aj<臜}ld'%#Fs`d/Bp~"+CdֳRRpESVCX@\(Iq~^#H"Dbwt7<9 x-EHSKX ]T&ހ 02`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>H, }Cz3EFv*P&[ D`Aͻ/=uE:0"YW#W*3 ˈ.A#Y ˇؠr? " @ #Q!؉kq5 J6K: UA ;7/ |pUzkM c` (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 D9*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5mG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kiʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-eZ@xC|~@YTfXE^n9 (ƱStd H}X|#}pup|`v .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{HMT#Ai 5leDof=w#oˇd@)7[ .(rq|#B!Y"x^|8D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4<dz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@=KiؽwXݽu⣒a6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzxt`œ '"uB|(A"c͝?L|%4!Ȳ{m| Wz((v=q `oqOԁ[ L_؞/S?Y`]'Дc3AA}G:|t> ;#># :%>)"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>#AAOp UvY>4@:(>mp ぐР&tE5GhCB Y*Wmc %Q, A3YnKdW`d@qΫ4:"$=f,J;-Z{-jm9;C;:T$TL؀7RwX.[:K ]&t=PO 1A):PlJ:S+: j>4pOTq'r/79qcN{"NKLD*L0̥9Bӝ@=!4 },)j}©3@:Dy^wJC ^)@@~^i7:80#贁LzT=)zPXAHp(MuptKӇhr\goB@ᝤnA#|i?٠"āf?(< Eoc"BnCB=V(} a| (E$쐂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(CU`'RLpz)GEpы`cS8 2 XB=uCO1v5^[J l?k`n;zCJ # 2:~1$6yN.#H} #Z,5ɂ%/-Eb\c,H0eɂh@3)PB|@TM:Q+[ċHg+tQ XB+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0'츧>drqb\i>1,!9PJ8DN/hON;L宾ax@ns9 ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7D CCU zLh@:@z,C胹mXC̮ԝ|:!Wd,L ^ /| m,;tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]kՃ,tL`‰dBH]lDDBNL H OB|CI*CZv(U'* Wxɑih>XG!D>|CYeP5fWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮD El;,A$ChEm}Ga@1KN;Tܱ&<Ԗ,D:D9cG^^=l#]P.j!<*С^}aH@@E 9*0kz=NL!@C?bD*i°@lNLlR mD|lĊ,WC = >}KIN,ҰzB)ӡE==ElrjJYUB+~ld$sAmY @+8]@),Bס" رÕJA&..6 %hN脐`<VzH'Dd@܃;[BL@AnIOaO0^M MB\PPan.FCB.εc0DĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/垣R>H DWH2p|zcxHCmPȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅@-\.#,A&'2((* ;tr g7QD)B#h&H>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VH&|z&׹V+/:2rhGoF$+$K @'8g@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG, <>P1m$ EP4Y^> h8Ŭ;#,>l ̸V%hew?w'V ENDXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAA/l"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/SC>!˃&jAoT7CAzZ4K'^dYA;J<1ԃ\ 1˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPDu'\h;`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝ,@,4MӨ@H)H D|zܻ/؉(P݈{؅(]>F# !E@| Ա3X̋;y ]Ov qob@\D^剎;<p(S:*Ӂц p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W" W RpA6mK o; {ם+QC*|[u+Cu⊟DqT{Rz6`v,| H|lA %((';4Y$3:o9@?J"d2'iKvA}jhσЋ>/'"0Ĕ3 ~%),;" &BQ9 0+ʋt|J&J8 }.NJ~(Mr=t]v}xW)wvRI0Mz>xg xa`<ha4(O!p ̠ө W]5|ީħ'Jzק20Ftx  " oxwؘu( / N(PpvFj:`CVèf'G OnjAO6+, [tPH@ iǭu|9'ph{9믌&0|>0% hC|G8xFu8A{}Em hH)L:; _z֩q\1yq|~]c( Qߪm9+S>!0UA ^9A~!!ah_;AGFDH \$&xa,w<@mBxj`GDLg䘏0N C2YQ)E鈀qzF8HH#>Q"~l@?XFu,~y#'aTeq́`Y>b\t 7@`E=`)I5" ҅Sz[9K ,<zrH;/€cp7-dH aP<aA EG`%QD"7F5<(BeQM68_~WET,c EdXKhE(o`6@>bF*"ff v#2@R0:##o;"#H` {LO@ͬb !B*BR" !A TN@&#f/b³)*xbTZI^cj+ bX'*MJƮS:SRphΆ!CJ"$Rma.ꡙ( $X?@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~$` 7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 08IP* kaƠIZe'+L-$r=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$ !ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ejz ĸ6qdBT'2@"b@)QF FA3C#B2({DE/0@"` *Rhb3K3%BZeb e؊4A arB sTjރHcG"`? ;F# i6;AƠZAHIn>A q.^.N'lzG AK$Nc:'!D,!s//f$!dS/D"`*e=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`A@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@e `2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  Bd `k3 `k"`#F)xhz6@Ge$J -%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF  "◒+ْ3.tNFp$EZ-!"A0h٠zx$"6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6: :0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?B #^r`'@F@*: @V 6CF*`c()gf"HSX]R@x`c(/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F|` @"y@"r}'v}CBnDHbn@TSԁL%0 "Ё b1`=` TJaB?~Bܰ|փ0BQ^AZc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+p%Y.B #7t[N@=vE8HLG84!%ߥ3*ݻrv7n\YԐ5T)ӕNWjV 5X-A|Q4HESs= *X)d،6t=nQ>~a|v2OުDžO4X Rpm=!{o}P„5jehmp م ` e_na~b"Hb&b*b.c2Hc6XYnp\4BE  ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1܃A3@B^@>EA>SթXcBs8h s7 mMɪdq}Nꆓ2BPYt8@X$Bʠdi_j:"D E!IВj8$:I)#aM`>#E 8&0S en> NȮš,!>|;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y$=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) :d:D7A0/h;N5W;j%ɔ!:t>3BDh~}ЦkUtHkΏa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|@ €z\ A*~̯ˇT #$nw:ʹ@0 B!Z݈0Qn {HHIO@D ,2Dp3_a6DJ@NB3}0!XWB@)-5 Ȓ8>8cq&80 V''v]mzWXV$(cs40D|# ^uM/=Hh v@=q` 7 ps,9ωt~Oq!P\бdh!39*3%飞>ws%z{#!Y=QȖs򨬄pA~oStw,S|[9ާ`$1$p@S̈́` aB%&no9#µ `} ?(qPJ(<M&A1 aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"@P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vZ" aqnIPt IOV<9=@ tsY? IR@KcF14&#p<4X)@V`71X# ED)OIm7!9@ 1<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig5 qqwj,>3(5P `%&֑mo q*s=fS@[|Z@.v!0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2@jqqzOR% ߐoч^h7(j@0@ : `ͪ۷ $'PAH}ͅP `gB0xRي"7W`zC($#:x p @%"@c P S) aUsך S!#D&@ҩwS鲧e ߀Rb芭 ؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vsɾ5ɒ,{7B `{9 38^|V2QK@Jeʃ7H@"iOYjp j 2ܶȻ!0x,N0P" 2ġ'=_C'x& s hvBgvG!= kyT!59@JmM)Beۚcc=Mm׍G`pce4IT%]$CI@{o5`f1K#Z]Ey,#Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^3K0mk773/Oı$_7R+{n0 C -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5}80h O]ZY1?5  2e[ F=3}=?]ȁ@5GVz#.< i%oB/> Bwʇ}z$Cg6x:d!2"C#DOD1EWdE_1FgFo1GwG2H!$YЬ@h$>Y1D 0c`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`uqx+Y N(YJ=u;U l @0RЧK; 3dQc z3F2ޱ ]R aPdDZG-7Dd&>8`G (S@'j7e:Ǝb ~FeCA{,c@My g*@u*@tU1цjU M\D >]؁xІȚt!6b1u!HoGe(ww{#0 <{q-W:Rv24._a'XZ T@Mޑ4a@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"QZX !&@2,P (C=xW a=%O\/ R$#y&A0 \@.x0&/P __O=@cl/? ҃u88jd X_‡c<@PZIf#8k$@h2+e"hٜW"be,+p2 A=zJvֳmhE;ZҖִvF1*#x%`p b $6qκFVo@0Q YWP).u c(TxMɛ vxFkTdt4{9XZh-P א ~ X;~Hpnk`- c@u1?HFϤ  CIu(`0o"k"FPtXh wȥ|DJI؀>:X!4 zpYh( ƍH5@> +ۣ(epOWl~ `}֒ .}8C n "s99b@U`{P-npdTPA3wxE @|Ӈ,)Έ< ƀF Ȁk~ ۓ  \3` }x iԼ'\>@ `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇1u`NN{6IZz BS)6{K=Xd x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!`{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH thHz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@F(0ԄmmmRpIkip>ߖpySnDt)7SGcHYam66B=#G$/yۺv\b huX|7+,r|9n(@Zn$q ́d2Qq-u`Btx2JQ x F# Z]XdYMKa: pt1 `2Ϝ2vH*Q' ,JPt@N(ljt0|)-P%tI K/0t5pn3T@Tvf vivk P@oJ}h{{0r}׀,6~ /GL'p{"`P@z]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'cܳ ߻{=R,d'E !ɚE uҁB䃜WC>Pa@t^2D3 o>Ev4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM96p H0 exFF`} wшgo {œW@{􍠝jN=Ys!qs?O>cY> DOPL=vOSs} Q`;3=cj%S@#@4;:Q; 3[F@:oF24B8{I  2<0@ ,2:=~DAf lL!I?)TNZgƤD\=|;"̔@fSD [ T;4$0;2d,!>|}IpCUPOZ+`HbԳ7^>Nw= wT=MG@"n.SyHzn}["y. 0j |=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% :@^:l5rFX5^G};sN̝k67h>0va=}hDUSKSn9:o[;T>*%f@:3 @= (-exO:RSɎ#:fzk7 @=b dAUO?@LiߐU ߳H Hoe;޽ɖVI|ǀ[vך+1+0ANe @^>|wܽ.2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U1'M!=@Pz8$zW.J:*t`0@"ݼC": CO,v I LGeѣO<P>ҡD,7H>"‘FL=<9=½@2Ȕ,đ/`80HjЏUPS9i@tL8KGTGєx5.F}c2)3(V$>DYϐ!0@x +'ZDIʤM%XyOB)\$ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Rɢ A=yς6-iKkӢ=:hQ,#|H$e:QB _79F`@?Ґ*5&5(1>{c&YI`b:XzóefM1HjRZ>  O|b:H7<;_c<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏt@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aUQMDyL42,CǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJaocSimʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX`8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*0&3`Dl؁$>%7HreGhQ >ï@ԱkSv5)eDp L,HS*Dk[\\ բ=Koӣ>=Kd4+ZIbQFc 6XTko< @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ODYWNCP@$JH$4(!RO`"4'H`\HPh] \Jb+>!H|@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;D,=>EpC(Ns0  D'EC-v̈́:v8]:L;T@> K?L^ "QäԕCC?XU@Y N8D@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_@P&aaCb.wCT ;  RapCE,Ft=[gC:EZ-;8=PBWH'|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CMO x$v-Nŋ>C"D,qhi kԼa pA]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F0>Ԃ`È^>@c7xSDLIAtG@@fT@ 7L`\Mh@A HԔk]N $2@KYҫ~`F]/Ԃ/LgaHH|Ef($j*Dj Ujl\X ܃' Lfe]ZxyɇPȂ>T@/G?ȅ(  &NATI$8Yt,ST$c ~7Tik0F*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*( 䀝!͍j, ioboo$Fd(F-,.C$p po52oqpt.'\+FKcpksp{pp  p p ?X0 pp q#q+qi ;CqKSqC[qksq{/qqqqq1qr r!r"+"3r#;!#K$Sr%[%#G$c&sr'{'_&(r))(*r++*,r--,.r//.0s110#23s3;3'2C4Ss5[5τ4c6ss7{-k78s9Wr8s::s;s<>s??t@ @tAA#tB+B3tC;CCtDKDStE[EctFkFstG{GtHHtIItJJtKKtLLtMMtNNtOOuP PuQQ#uR+R3uS;SCuTKTSuU[UcuVkVsuW{WuXXuYYuZZu[[u\\u]]u^^u__v` `vaa#vb+b3vc;cCvdKdSve[ecvfkfsvg{gvhhviivjjvkkvllvmmvnnvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c! ,fBBD^^\jjlnnl..,&&$VVT 224JJLZZ\::<**,zz|bbd""$>>@ $(8蒄̜<08b\`BH@Įprlttp||x|v46@`bdp `4<<Դ86(Nfnp.(8X@Xx0.l0.zfhFJ@x\@<<4 ʔh\`pfp<6УKNHJDv3|{Wi˟=:|ϑ2/z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?דּDF)TV Y3:3(Sp Ih&QlIGqvdP;lЏ(`堄jj_wP@Ip#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:2&Hx@FAHn[Sdq%$-ښACQ:`,Pp;DϑhBx= POK~[:tPHZa}pϲ,@s@ԃ4:H:Î,20PX(6k;=ALbG C@B)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:דB/j " K!OSv=9};'B3\"7Xl{ܸ::w%  X>#=o ֱ |%"~Lڂ#!@( $ ϐ8|C77 +1AzP  {$uhG2ӱD (@CH0USȗz`G3B BPa=q#=q t $ @"J#>H1IHA?B SrI!݃>*`Y%@Zzs!|pȁ'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1px:&]jV$`A" H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;YU1V:u LmS&FD`MG=2Mj3s+nd"tD IE nr#!@? 8~jb)€waG*߭ؑk\nV2Q`-H[yPDLZ*uYr0s Vk>umJ\#"ykMϊe2=cA?CXlA'8"x3 ]gLoX@% H,0>E ':܂0`;dE8"0rYtY'uh 1Oey\+w\Y P,r*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lKG)lLbiOl2-sER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD_;WpBz4j{dQpt d?KD;PT."pd<6Hb_}u\>e="&ث :`qh@;Ԟc옍8&zk-uXR@k) H>ĨBC).wD=6-(7P O|  2t ! )HЏ{jC40!Hy [z@ ie+ x!܇  ~@TT'EV=)= P "P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R`rP+v02> h_P=@Ѐh b}~hQK\G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ) !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsLLW` ym@pNI`j왡HIuK$y'P27v)Wa mrwe\2*_*r_ș:DZIG̢sR>.gm!-*.` r`0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 40wQ0O1 dZJF"3@h0/D?#u\"gJeP#0:蚮:,zT Yq$"AV*)PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R@a-{ 2;4fc.gZЅ) "%"]b*U$]ǭQp@.H5Zq=K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$6@Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mL c cP 5a P@Sq'K>ܛP$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛Y;z{.#r {W s$T $zY'|bUCڵ*T%"T{ .y :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ē;NA2 @Xս ½Uf܋d_T=1ޑ*S9=4OTH<~ *`R;(卄Zڨ,{OcFx׆zk/R2{'w'YY1.*AJ*>ˇK0sL24L4TsM6tM8Cgt)ex`&PI֩ p(b`H*F{:H{`z*w[,Y4]&g - `v" ?p"ԛi&N=bz/ dq@Dl/ @2Oz%0!Jŀ0kŬU]>Pi݋t"h\hwa6 `b3xc;cCydA@~*  ¡|bJD<|${ p@J(u2ǀTjwؙv b6T  *(L;# Yt(LU2d{|7|y 4ȏodQ ~ ҩV|Cs$%47!j AQ 5nc2Bu@ uPA $@V$Izv x8=GyBD?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nҏq6b1a@ZԤP !uzaء_LoB߭c Ckʁ/BFXu#bJ,/L f#\*p;vAlu,dqSr(G&X=|`1yͷswP-YH/_xcN!3uIUn?h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ8v 0Ä(:\" 9gxH3%;FIDS 3 @ û ɵ0 ~{pي{Вw'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s);' ud( zHq$ xGQYZ,[̇\\ gӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ18BS5` 1A@ Y21 5:0J$.+ax+o`˫x@ Dj, ܡoMP`LQi{ |KXLtZP FL!R0t e L܉Ph@< *;o0q 1ą6ͅ  * K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 6Ә?P#ly*ڄ-*]2L%k B8{R"#Z'hStX!XY1-3#e$%RHu«с1@$ S`xYH$*e4D< 1]L }ӒXtզ(֭V NdVi$N#䜈(݊9HzԁI#tx( [5  h2IѷI4x xy{|h$ 9<= bP*{u+C5LA [m5%"0h@LQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx?a]=cb'ч~(05sneWY=.(D!ntPO ćI @#IXj< ERdλw|Y6\{N!wJYI{h ʠ!eR!&M )hɁ4SpB9mRF"!""# z14S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$9 M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u X]2 Obc$H6av]v᲋⬉L^#_n3 9W 1vw tjwvIݘ3w).x? }(1kc th呂0Ӱ¿,H GH1`efՅPHg3]y?Q ]7 F%0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4EoP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀1Sq{{V^ifN|Ҙ$W﷍{'|hS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=vC{bsg> ~"\%ihPĻbY>r!ٸ[t37b@>FSh|KAFEbrO;޼O5\+bXi-Bʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=4UP+vP<<.тIƒ PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3B(A=0`CC 7 N#A=|$$ԳT`R|=N=E68D#@Fl![@:+[J=b?KCE{O?@pH0T{n.NF;3ê) >( d`fwN+3A+-b~sA s= D~4޳AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=cNdQO9[a> m dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX p2~>ʀe#A@GwD %'1`"jh, !72 >~zpQ#gd5$ @2( n+aY" . |~;I @?"xi ^zlP 3x ^A&|dr$-2z;fG<:h@y|qc(Hzh (<5t AZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠%Tu ֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,awf8z & >e>LH/` ^M ^Aɥr@xh Cxr$LTzifRV^ pT)p` 0A\" c H,a%FDQ}L$G1ƺ}B+LdT)P1݋kr d0D) O9-s;wpd7 y|n$`|qH1,A 9Oo׃>r|IoXc M[AaȘ֑k{>BM\M0Q{ƛ*ppq7-. `/k6H[QM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:P`<[H=|2[m; !l#ʃi:Y?xd ߐA$G`03s7NB ![E#GFUG!LS:h)H {ԦdCz%[ BYЃ>vu݇G'V&2|CK&@|<$GP7?^A  Ra`\BD-5FCUD39A, ;ަOE Oў/I?{ ;AY_A _!`%Y(MJCSL;5C8`V> ECZ}0r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b> -+nBXJahA4m @4B_v8 zLA A;XXPġ+bD ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4DЊ7@g%H >$2MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"lxIeZR\CF47̋IDBB8SEXiBP!\HdI>J:\7& Gh$S dHŸAH afY-DzGD@ACɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D'|CT&eAH'g#yzZ,D?XrC$()FD: f(; W4gACGK*߅DٽmIiA|niE<&D e,GOAK;<-Yi&_BܟA4@E(ߎD aY>p #6Dt]ϢFA7NA4\*)%ȂXi~Z)M`E4})5g݃=< 2m#FhE4a~ V'(>4C'`T=#n&>?ܫ:,(Ljr?:ë^Z7i>؃>8@C'@<ĞP(~GRjޫ:_ԃV G-l?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 RpAD?=@ r.Gx@*[泪زJ^ GjA,YnBHH.vw2tB-eFÍ$_: =›(/bhrE .xpZҮ&DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-,0"x!0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtVE99;DCAW"C=Xѣ24S# RL03L=DE?\3F78@-|>2 XÌ~Z'C2X%AIrdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,e-AXC-ZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`.C0lz@ܱpz 91'Dg {B 7W?#`[|-ĦyBp @:l,C%́L#8;;,,,C̕@Kxo=Z?p;7JDG183#F3z/A 0kD7`hN@Ľ{B3xa| JKH; vC{һ&{,C{2/H_s$H |X`>u+Ƀ/I3N0Bc0½ 3 nuS6atޫ.:ӊzLz0,⃃+eμǎ_Z^' "A (rZ'Ua`ûGu P҄(U,#T9}KR%odGGxCwdVYG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwìn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /CTu8> yg YJ`XLҡd]6XgehjlݖnpY ?!S(P. L5SM$!Qtǂ`F0Iu{5~%-MU-[d65uG`1hHeQf2euޙ}蠅#5w-(/##`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.=IIӀaw4jZԗOST hvԣIRBAi XH-SPqȁQQkep`?LpK D#HO- <7#!IT '.}IB;@땊s8Ō !1PQSe={0ZI , 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL<!ěGfbv+"&ӎ8"UG`٪*c $G@ @K{ *H)6d zX+ 0O402P*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙAx` Hw(ڕnk|=ie/n t5:j!Kg {t *Ё n#\ miq9rfRW-u=˜"@l +I_@G^5XAzD̡_\faуCeP=ƫ(ࣅH auzVBI;4|p g=6Bd%PP vLF|X0ЋAN|`"ЏFjh,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʐZBHĽװ؇LG]|`# 7B5D`ȁLt׏&xTc-=1m:!"1`%}>C 7 C $E}C [CR0^w-I$SH`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…(:kO$NFD pG:m"(#6 H(K  lijdZƏL&I! !L P 0fk(- D"RA::n86nC @ ‚ ƻB k !*A6`ց 4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ ƠLD qqȐBN-gj$ X|_b[F Q[k a-!<tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzhAn%l# * @-N$~%bMba c&%!J*N d ϖ!;!)JP瘔b  "((H<J XL. @1V-bdaS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* R`BxʬZh%2j!##LH@%&I1K4Ũr`A1> : s-c;#AҒF,00@OH>L"0p!@emKkvI@ ԁI! " ҬmIb !b⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʨ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨHQuU\"(V:bB\jFﵤoJ+@ VII3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^D*I.F `Al"8Uh!ފ0r_1STC } |6&Dx9B)D`>R>B|L!Rp`B5lIR,5xcI/R7Yߡk@:Do7W5 A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@" D{S[ 6L&Z0 "XvTh a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@a *m5A jt)"j ĕq)Qkp*B " x9nVZMDJ! DZL6 g eˀ" g]:2 H̗Zjʬ"R=d!** cxWjH//0#T!D@^)$@1RC{l#KjA :> cC3,6DB TXC.P*LBY hL$?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!$`!@*|⧇VY[ٟB:|aDY%!hMdAJ`F?zޡd0RGLUQ \N#맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->!` \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!$e2` 7n D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevةiH&7(-Gͺu2>G` `ʽ{ؽK<| .½{ :Fj|c{8”9I|3w4Bwߟw4hY(2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^w"!]&dÐ޻9s|Uݽ@|CD! Ll&+|޽*AF#\×vܕ6U3>G>,Q8=L8gv'v7cg|F=C>tp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(d̵\Jhh.h> iNJi!DRa0@= d$=$uO \7p5P;' _ #@GXΞ}\>X:C2jk_ȲFtՓV;jU[0ɏ/ k>[=׻줻n=v|a@ߨH'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճM*)hqF< 7l3_`Ƒqe:SFVSXYWBFqs-A?a:CX_c}߶c+>!?o>d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF'RZ0@m=ԀLl|Q0># jDTq$+K7 &h, r,XԵ5# Q(V-7=D HaGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]a$L3AҬڂ iYXRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY::6wYF1t3^)yK*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE9Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! P3NXaZj;.H".9P-/c54'eg*Aβ !Cd RF $DCyrFpoپ]xGc GaZo~Fe0A1Bd@G0K_Z Sd-i*~Bf$L Bzs 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`1* 1,4[@ *՘4E9$):~^S"*эkG%Zw,zh S;~%[(n>5η2*X"EtȂ|I!޲u T-{7»9Ki}Kv+N@f%S^G`bk/Ǽ@`td@9 (F! P`_ٵ2, 6Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[Mg&=,(}6➔$*A~0Hw`( 5I0Cw.Hmz;+d|Чu8w  q|y6݄3PrɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet?̴M ;+E {RsBGz6(w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz`.u9@@oӊSY Dh8+! ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG 1$P;nww.:43Zj;" GPxQĬzKذo! " 1LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T64aG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19uc( ?6%5H +@4&%A Jҕx/Yh>$$y3PoD7&ᨁC!Ux  wȸ@ &*؜,9 Dp,Q)3R*'Y-ɥ.aYd৐NnB':jQ;tI"Z M:O M4UU@ X,7ATI QAmbLg7 TFr岘41]  FId~H$|G?+zP{@JGFmUe:JaT2Pn |`=պI76З(r7'q) ðՇb[_t 2􁏒` `H0.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ()5>jH -r/yK:k,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4Y.'qQI`s#?8xQߙvG|I5"Jx- .o e+}E?z@#ֻJ1c0}NBPC@'1.G;`5d>luVDj\+оȽ}ُ:ϺUèo85Pnޓw,)I H#Iȣ-IHd XJٰ 4 6y  hGx>w耤x{ Gtr* ep@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jjt˷˸GZ؂w &% ~~ ) Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w8P+lq vYfhQ?<1tH$ί_tN 9ė|H(%;}x HY>x (\ РQ j#}N Ia9F@xe(f 9L o4"5#ERl%P?܀Ȟɀx% YR$Cu`!v'(J$|$DH5Egxp';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.9-Y#;1Jaf\zvKzT:FL ǼUhM(R;H ևv^N{0!9e~Ȁz ,՚IiPikeȁ  &7{xO@|}`E(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYN() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V9( <1 1m}h.<9KkǐG Hzoˇ8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q}HTWu/:$=  p t_Vi,ʣFw$f 8y>IgW|Xy7C \y˾D`ޅ1'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF XPӯdN+9Q9˸O[hN/wXÀp'y/_fġڳ!)9NHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - c&Bds(ѢF"Mt)ӦNB*u*ժVbͪu+׮oɆw]𺰁 ёNV꽙yo]KnKwݼj޻ݜ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwAmSzC'1Tc5áWI1Qwų~A_j~-NdUe CFA8uVMP9s,]2r#X'+آqφ)N?d0A܎ޏx`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=H`OK$Vԁ;;v [:HCb7Bq^ݓIBK&%#mj*S7PX'D~T0@#p-jctcP7Qkcf3pC<A"X,QFF>:6y3jެAt ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p {# 0F׵|;ꑵJuz=A ܃CS_ק:P>;ϥts*>3;cS=0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xl@Az%K6#j&af1w<)>o ,x PYF$)A\Ec ֱ;"Џ|$G> !fc,#8@*n QC#fwڡA+nēLdIG{(|KYL_` q #\&< J ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 c!H&sv ;8 @=E HgVH Q@H蔭XU}@i Y:= M%z!XB $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>8wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS2H1 @_t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq@-}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53_Tf1 z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}?`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u $^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?0C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7D zĉu\@=QAl<\>d!:@SU ]^ɥDHE;Ba|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp?@ p^s\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IAuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA=$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ!0Lndlc (u,x::IP3LlFZDօ<: =e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH„4:*ę/ }_z2ltI*,4q"DvW՛.") $cB c'RDD0*MԃQ0bɆTUi\J=u\IJ~W!$QD܃yV2+CDjშRk!%æ4$ C?),NT>ŪCH@DXRaY}; B?jĽTH$yROkCC-=liBvƙ`J=Sce^A ``)֖_ P C#zn ibLBܔH@ܭX;<, @0Hح4,E:DC-톕,ےVfd']=|G@0;x؂A$H]4: g͆-,ڎb@*ǩt-m-D@:A@ n`.;nҮ`u&f$1,>^J:l@Z"4uH:T=A)dfK$@ 4lO)T0'IE):% p 0@7zD>EAH@I>î @>R2D0@?/EHK_dHI0^>m` ?h@*D@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`'æA(CorU7L:ۣl@++F5'F4s)%lC" DT1*3pBp;pJуqb@ 3I 4=S0?UHAZz>RüW,AԈ ~Kn|R1D BPu8̳lAD ؕ#) ܃{@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ7=X@v}$$YTI&]U:lBp@}>ThxOAP $!^C=TA@ݏDXcJ:ßO?1@Ab,A)-BmDLKU#=0>)rUAP׾>}-,@#t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@& "*3޺ "{0Իo_)&NBALx Q l$"w&JwDbF['l u:+>>xqǑ'Wysϡ;p@+\yp{@:?3U |i}WYnaYf"+!FI xJTQe `V:z櫱{$yj1Ja xBI'D1SJ  @ށ@lGN\o!_MªgeJ n1!%@oVPiơ*q7+i5F ´ddǑGч0 y'/Թm=4"G^! 6;bgG,_}Z~P" 0dRr @@=PSR=j%PJh`s?. xG=*@*@(q aHHcv$Hz}b۲&IL1S 1 J=/!:!! xB9Αu$"`=E7`r38`]GDDP)I.@"oA dD"呕@*H}*x"H,TtPa GB c c  hBB7CƷ ~r*Z9@+OyΓ=O%Tj4AP. upMHgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:o5O[9zYgVCx_X\Q /"8N'Gw&d ba5exjtM#C4M=."7 H>d%DK, DHj\Gء_B0$tzpzYQBҵL`؀8H6&GVWW`T:  Õ`zqy0c}>!TtiZzUGbav5"` \ h c!"0=aYyG2Q4ApRd!9CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆD"Qah!"Q0 = 7} u-SV3{@ @Oa} 6apBQM` 2@vMVtr"iF2 TBJ k݋@B(sAA($ڍ@+ U|# @C,x$x, LJjtа `C?bP tp3!H߷guoDY.3zlK@8|`CN*6P|L`\ 1UStUJC ^Βݐ@3. =Щ%2 E`@%RtϞW):6X@Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC "Pc=K8@g/N(I& !pD!8d"J(Y,!r"N**j!VAp즱bMND*gM6Kb!Y:AxB#$AiAg0#>@xɰ "`hPXa & /߀0 H!Xa{< 8 !]!P!ڧ_#*7R I" |b 6(dA++T( a@&L &{A @P~ޤ1"bk gFL *@aj6 G#!}Rh)pamN/¹uA` ]*jBdY> B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'x"ƯMejGH D`Rd: -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8(H Y(ޡ-F%( #8> R!H@6@+\s88$`KH2T0@" n6` # ಩>B$&CP`&v|2!'B4"2 }'U46/QX8 $("7)^ |ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#Ԁ3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-Ab (Nd>8Pe:9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!xh0!pj!PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!r)6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫܗOi7Xgܓ@2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*AP5F􃏚>wYʑW;Џ=N=x ×k7\ 鿗IXjA@B%",Wlg!FI>@ܨ:[:`\83{6_QO_BDb@(8{#>R ~o?_-e;HW0DM; ؜-_Sތ7G.Wn?:!g砇.褗n{~;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGHd0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>1)GIUwD baŽza%XB7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ I@{l@pd>Cc%%䅃Lg@M% b(9ẋ>ς Hh`؂*ұFt\aG ҃ t`GJT-A@5Ct%@R:QĢpV! 0G㮂 5gv)^ zHuwS0KCôbƮ'ODH ȉox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ8 %P*k$" :djmr2(|Qvs@ Nܣ Ňd9DAJYN.0|XF 8 @YD #pLsUO3Ka!%K oPK$22Y\q0 k4/{|X*PlB8 duh,G'P.w8rAR Ǜ b-*-c,ad[]20 LA3G$''Q24G|HԹq @fABŰg TT ҉oP1) :tblh T/dwbńϯQ j4\XG<AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fr@CY ,\Y(Yz , ߨA+:M :d~0cJ7y*M}7oHΑ9!cA`H:1қg>Y^x+EKUR(ȣ;qAHt&U=S{aE/|6:r e!Z:BF1 `G-<zfʋ4)P(?H2< zb}L hjZ[ai v aDz7X&Yd. A%pGvq %8 pw?"# $Pg\E?ݔ@AV212W*e! sbK"2"X">(rS}g2"SR`xzXOJ )tb1G r i,@tb2Ac ON(LRpC NhAX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7с!DS@j+R+AvDE0vj``-b- H\!Et*>%`E*%υ= `& `T"l.72 BBuPTwLe8**@+e%p 9}2%p] yK0/r/b,p`dÃ06c5h0 ؎>|cm $*%`'2=^E@ H22v5D@8o:v#t#+.E0@ 9F`29PDΡ=48& 3!Ls2F -1s5(0#MWXEYܐV 6m6AeDivӇ_X#GP8 9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;pI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O0=؊TK PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گ(0 fiLSGj֌A@Up%VjKsjh yv(ń @P eTe]qMGd0qE6"ȫN*{%wr0SRvE;T+FS{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾BcO /~Dx:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2. +\}Ԡ0yp,iПfP 0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"KpqVt%m" p-*°s ʧa*̢vl8yM'H'1 Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-o;hT O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowHa~z&w]{s΂ }(;| ^EUa{0$ ;(ej%H݅""ܓ0; P_:]巹ה d5Dv2'Po t܋˜z [KsѥO^uٵows0ûzK𽻧aE ~KT։vJG~g `b!|P3J}*Po G0~J!9JǸz'{6%AS({H@ K![—oZHz"k!nN*xG>HodaZ|Q!NXа{ BtQH#tRJ+RL3tMF}j.Q8TUS*YŬJ.zatz{'*@\YH  {':Xu0! Ma{8!%1g6^ 1wܫ}Fʁ.̳R`1_~Lz9SO"[؛7! 8 R~ѧz`z `e2fsyg{gj1`h@J{b`jzkkƔ  6dKƘҶn{oo* W.kgq#|r+r%pIő3r$7A^E|@)t@wd)MyJT!40!Z:р `3vR$@?_Z `Au(1;&CpD0A*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|HjTFb qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^сiQ0x@>0`LA@@&0 \,g2Rt[QH1|@l C3(i:ῥc62HG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6P{ kVd!91ekيfցXt t*B&VbE9K?D؄m\B.x4`GX9'#) $b[~8At; "Ti@5$yሜG G3:Qzm&[(Or|匜e$0F0氎 ` Ubare2v=U @rKzLЋft\C ,E4wfhґ9J݀E= lò Gd2 UB H) Aj<臜}ld'%#Fs`d/Bp~"+CdֳRRpESVCX@\(Iq~^#H"Dbwt7<9 x-EHSKX ]T&ހ 02`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>H, }Cz3EFv*P&[ D`Aͻ/=uE:0"YW#W*3 ˈ.A#Y ˇؠr? " @ #Q!؉kq5 J6K: UA ;7/ |pUzkM c` (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 D9*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5mG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kiʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-eZ@xC|~@YTfXE^n9 (ƱStd H}X|#}pup|`v .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{HMT#Ai 5leDof=w#oˇd@)7[ .(rq|#B!Y"x^|8D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4<dz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@=KiؽwXݽu⣒a6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzxt`œ '"uB|(A"c͝?L|%4!Ȳ{m| Wz((v=q `oqOԁ[ L_؞/S?Y`]'Дc3AA}G:|t> ;#># :%>)"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>#AAOp UvY>4@:(>mp ぐР&tE5GhCB Y*Wmc %Q, A3YnKdW`d@qΫ4:"$=f,J;-Z{-jm9;C;:T$TL؀7RwX.[:K ]&t=PO 1A):PlJ:S+: j>4pOTq'r/79qcN{"NKLD*L0̥9Bӝ@=!4 },)j}©3@:Dy^wJC ^)@@~^i7:80#贁LzT=)zPXAHp(MuptKӇhr\goB@ᝤnA#|i?٠"āf?(< Eoc"BnCB=V(} a| (E$쐂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(CU`'RLpz)GEpы`cS8 2 XB=uCO1v5^[J l?k`n;zCJ # 2:~1$6yN.#H} #Z,5ɂ%/-Eb\c,H0eɂh@3)PB|@TM:Q+[ċHg+tQ XB+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0'츧>drqb\i>1,!9PJ8DN/hON;L宾ax@ns9 ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7D CCU zLh@:@z,C胹mXC̮ԝ|:!Wd,L ^ /| m,;tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]kՃ,tL`‰dBH]lDDBNL H OB|CI*CZv(U'* Wxɑih>XG!D>|CYeP5fWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮD El;,A$ChEm}Ga@1KN;Tܱ&<Ԗ,D:D9cG^^=l#]P.j!<*С^}aH@@E 9*0kz=NL!@C?bD*i°@lNLlR mD|lĊ,WC = >}KIN,ҰzB)ӡE==ElrjJYUB+~ld$sAmY @+8]@),Bס" رÕJA&..6 %hN脐`<VzH'Dd@܃;[BL@AnIOaO0^M MB\PPan.FCB.εc0DĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/垣R>H DWH2p|zcxHCmPȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅@-\.#,A&'2((* ;tr g7QD)B#h&H>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VH&|z&׹V+/:2rhGoF$+$K @'8g@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG, <>P1m$ EP4Y^> h8Ŭ;#,>l ̸V%hew?w'V ENDXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAA/l"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/SC>!˃&jAoT7CAzZ4K'^dYA;J<1ԃ\ 1˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPDu'\h;`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝ,@,4MӨ@H)H D|zܻ/؉(P݈{؅(]>F# !E@| Ա3X̋;y ]Ov qob@\D^剎;<p(S:*Ӂц p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W" W RpA6mK o; {ם+QC*|[u+Cu⊟DqT{Rz6`v,| H|lA %((';4Y$3:o9@?J"d2'iKvA}jhσЋ>/'"0Ĕ3 ~%),;" &BQ9 0+ʋt|J&J8 }.NJ~(Mr=t]v}xW)wvRI0Mz>xg xa`<ha4(O!p ̠ө W]5|ީħ'Jzק20Ftx  " oxwؘu( / N(PpvFj:`CVèf'G OnjAO6+, [tPH@ iǭu|9'ph{9믌&0|>0% hC|G8xFu8A{}Em hH)L:; _z֩q\1yq|~]c( Qߪm9+S>!0UA ^9A~!!ah_;AGFDH \$&xa,w<@mBxj`GDLg䘏0N C2YQ)E鈀qzF8HH#>Q"~l@?XFu,~y#'aTeq́`Y>b\t 7@`E=`)I5" ҅Sz[9K ,<zrH;/€cp7-dH aP<aA EG`%QD"7F5<(BeQM68_~WET,c EdXKhE(o`6@>bF*"ff v#2@R0:##o;"#H` {LO@ͬb !B*BR" !A TN@&#f/b³)*xbTZI^cj+ bX'*MJƮS:SRphΆ!CJ"$Rma.ꡙ( $X?@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~$` 7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 08IP* kaƠIZe'+L-$r=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$ !ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ejz ĸ6qdBT'2@"b@)QF FA3C#B2({DE/0@"` *Rhb3K3%BZeb e؊4A arB sTjރHcG"`? ;F# i6;AƠZAHIn>A q.^.N'lzG AK$Nc:'!D,!s//f$!dS/D"`*e=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`A@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@e `2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  Bd `k3 `k"`#F)xhz6@Ge$J -%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF  "◒+ْ3.tNFp$EZ-!"A0h٠zx$"6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6: :0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?B #^r`'@F@*: @V 6CF*`c()gf"HSX]R@x`c(/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F|` @"y@"r}'v}CBnDHbn@TSԁL%0 "Ё b1`=` TJaB?~Bܰ|փ0BQ^AZc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+p%Y.B #7t[N@=vE8HLG84!%ߥ3*ݻrv7n\YԐ5T)ӕNWjV 5X-A|Q4HESs= *X)d،6t=nQ>~a|v2OުDžO4X Rpm=!{o}P„5jehmp م ` e_na~b"Hb&b*b.c2Hc6XYnp\4BE  ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1܃A3@B^@>EA>SթXcBs8h s7 mMɪdq}Nꆓ2BPYt8@X$Bʠdi_j:"D E!IВj8$:I)#aM`>#E 8&0S en> NȮš,!>|;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y$=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) :d:D7A0/h;N5W;j%ɔ!:t>3BDh~}ЦkUtHkΏa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|@ €z\ A*~̯ˇT #$nw:ʹ@0 B!Z݈0Qn {HHIO@D ,2Dp3_a6DJ@NB3}0!XWB@)-5 Ȓ8>8cq&80 V''v]mzWXV$(cs40D|# ^uM/=Hh v@=q` 7 ps,9ωt~Oq!P\бdh!39*3%飞>ws%z{#!Y=QȖs򨬄pA~oStw,S|[9ާ`$1$p@S̈́` aB%&no9#µ `} ?(qPJ(<M&A1 aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"@P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vZ" aqnIPt IOV<9=@ tsY? IR@KcF14&#p<4X)@V`71X# ED)OIm7!9@ 1<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig5 qqwj,>3(5P `%&֑mo q*s=fS@[|Z@.v!0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2@jqqzOR% ߐoч^h7(j@0@ : `ͪ۷ $'PAH}ͅP `gB0xRي"7W`zC($#:x p @%"@c P S) aUsך S!#D&@ҩwS鲧e ߀Rb芭 ؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vsɾ5ɒ,{7B `{9 38^|V2QK@Jeʃ7H@"iOYjp j 2ܶȻ!0x,N0P" 2ġ'=_C'x& s hvBgvG!= kyT!59@JmM)Beۚcc=Mm׍G`pce4IT%]$CI@{o5`f1K#Z]Ey,#Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^3K0mk773/Oı$_7R+{n0 C -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5}80h O]ZY1?5  2e[ F=3}=?]ȁ@5GVz#.< i%oB/> Bwʇ}z$Cg6x:d!2"C#DOD1EWdE_1FgFo1GwG2H!$YЬ@h$>Y1D 0c`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`uqx+Y N(YJ=u;U l @0RЧK; 3dQc z3F2ޱ ]R aPdDZG-7Dd&>8`G (S@'j7e:Ǝb ~FeCA{,c@My g*@u*@tU1цjU M\D >]؁xІȚt!6b1u!HoGe(ww{#0 <{q-W:Rv24._a'XZ T@Mޑ4a@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"QZX !&@2,P (C=xW a=%O\/ R$#y&A0 \@.x0&/P __O=@cl/? ҃u88jd X_‡c<@PZIf#8k$@h2+e"hٜW"be,+p2 A=zJvֳmhE;ZҖִvF1*#x%`p b $6qκFVo@0Q YWP).u c(TxMɛ vxFkTdt4{9XZh-P א ~ X;~Hpnk`- c@u1?HFϤ  CIu(`0o"k"FPtXh wȥ|DJI؀>:X!4 zpYh( ƍH5@> +ۣ(epOWl~ `}֒ .}8C n "s99b@U`{P-npdTPA3wxE @|Ӈ,)Έ< ƀF Ȁk~ ۓ  \3` }x iԼ'\>@ `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇1u`NN{6IZz BS)6{K=Xd x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!`{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH thHz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@F(0ԄmmmRpIkip>ߖpySnDt)7SGcHYam66B=#G$/yۺv\b huX|7+,r|9n(@Zn$q ́d2Qq-u`Btx2JQ x F# Z]XdYMKa: pt1 `2Ϝ2vH*Q' ,JPt@N(ljt0|)-P%tI K/0t5pn3T@Tvf vivk P@oJ}h{{0r}׀,6~ /GL'p{"`P@z]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'cܳ ߻{=R,d'E !ɚE uҁB䃜WC>Pa@t^2D3 o>Ev4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM96p H0 exFF`} wшgo {œW@{􍠝jN=Ys!qs?O>cY> DOPL=vOSs} Q`;3=cj%S@#@4;:Q; 3[F@:oF24B8{I  2<0@ ,2:=~DAf lL!I?)TNZgƤD\=|;"̔@fSD [ T;4$0;2d,!>|}IpCUPOZ+`HbԳ7^>Nw= wT=MG@"n.SyHzn}["y. 0j |=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% :@^:l5rFX5^G};sN̝k67h>0va=}hDUSKSn9:o[;T>*%f@:3 @= (-exO:RSɎ#:fzk7 @=b dAUO?@LiߐU ߳H Hoe;޽ɖVI|ǀ[vך+1+0ANe @^>|wܽ.2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U1'M!=@Pz8$zW.J:*t`0@"ݼC": CO,v I LGeѣO<P>ҡD,7H>"‘FL=<9=½@2Ȕ,đ/`80HjЏUPS9i@tL8KGTGєx5.F}c2)3(V$>DYϐ!0@x +'ZDIʤM%XyOB)\$ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Rɢ A=yς6-iKkӢ=:hQ,#|H$e:QB _79F`@?Ґ*5&5(1>{c&YI`b:XzóefM1HjRZ>  O|b:H7<;_c<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏt@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aUQMDyL42,CǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJaocSimʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX`8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*0&3`Dl؁$>%7HreGhQ >ï@ԱkSv5)eDp L,HS*Dk[\\ բ=Koӣ>=Kd4+ZIbQFc 6XTko< @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ODYWNCP@$JH$4(!RO`"4'H`\HPh] \Jb+>!H|@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;D,=>EpC(Ns0  D'EC-v̈́:v8]:L;T@> K?L^ "QäԕCC?XU@Y N8D@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_@P&aaCb.wCT ;  RapCE,Ft=[gC:EZ-;8=PBWH'|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CMO x$v-Nŋ>C"D,qhi kԼa pA]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F0>Ԃ`È^>@c7xSDLIAtG@@fT@ 7L`\Mh@A HԔk]N $2@KYҫ~`F]/Ԃ/LgaHH|Ef($j*Dj Ujl\X ܃' Lfe]ZxyɇPȂ>T@/G?ȅ(  &NATI$8Yt,ST$c ~7Tik0F*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*( 䀝!͍j, ioboo$Fd(F-,.C$p po52oqpt.'\+FKcpksp{pp  p p ?X0 pp q#q+qi ;CqKSqC[qksq{/qqqqq1qr r!r"+"3r#;!#K$Sr%[%#G$c&sr'{'_&(r))(*r++*,r--,.r//.0s110#23s3;3'2C4Ss5[5τ4c6ss7{-k78s9Wr8s::s;s<>s??t@ @tAA#tB+B3tC;CCtDKDStE[EctFkFstG{GtHHtIItJJtKKtLLtMMtNNtOOuP PuQQ#uR+R3uS;SCuTKTSuU[UcuVkVsuW{WuXXuYYuZZu[[u\\u]]u^^u__v` `vaa#vb+b3vc;cCvdKdSve[ecvfkfsvg{gvhhviivjjvkkvllvmmvnnvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c! ,fBBD^^\jjlnnl..,&&$VVT 224JJLZZ\::<**,zz|bbd""$>>@ $(8蒄̜<08b\`BH@Įprlttp||x|v46@`bdp `4<<Դ86(Nfnp.(8X@Xx0.l0.zfhFJ@x\@<<4 ʔh\`pfp<6УKNHJDv3|{Wi˟=:|ϑ2/z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?דּDF)TV Y3:3(Sp Ih&QlIGqvdP;lЏ(`堄jj_wP@Ip#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:2&Hx@FAHn[Sdq%$-ښACQ:`,Pp;DϑhBx= POK~[:tPHZa}pϲ,@s@ԃ4:H:Î,20PX(6k;=ALbG C@B)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:דB/j " K!OSv=9};'B3\"7Xl{ܸ::w%  X>#=o ֱ |%"~Lڂ#!@( $ ϐ8|C77 +1AzP  {$uhG2ӱD (@CH0USȗz`G3B BPa=q#=q t $ @"J#>H1IHA?B SrI!݃>*`Y%@Zzs!|pȁ'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1px:&]jV$`A" H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;YU1V:u LmS&FD`MG=2Mj3s+nd"tD IE nr#!@? 8~jb)€waG*߭ؑk\nV2Q`-H[yPDLZ*uYr0s Vk>umJ\#"ykMϊe2=cA?CXlA'8"x3 ]gLoX@% H,0>E ':܂0`;dE8"0rYtY'uh 1Oey\+w\Y P,r*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lKG)lLbiOl2-sER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD_;WpBz4j{dQpt d?KD;PT."pd<6Hb_}u\>e="&ث :`qh@;Ԟc옍8&zk-uXR@k) H>ĨBC).wD=6-(7P O|  2t ! )HЏ{jC40!Hy [z@ ie+ x!܇  ~@TT'EV=)= P "P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R`rP+v02> h_P=@Ѐh b}~hQK\G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ) !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsLLW` ym@pNI`j왡HIuK$y'P27v)Wa mrwe\2*_*r_ș:DZIG̢sR>.gm!-*.` r`0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 40wQ0O1 dZJF"3@h0/D?#u\"gJeP#0:蚮:,zT Yq$"AV*)PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R@a-{ 2;4fc.gZЅ) "%"]b*U$]ǭQp@.H5Zq=K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$6@Sd&Z:A173p#7tc796,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mL c cP 5a P@Sq'K>ܛP$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛Y;z{.#r {W s$T $zY'|bUCڵ*T%"T{ .y :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ē;NA2 @Xս ½Uf܋d_T=1ޑ*S9=4OTH<~ *`R;(卄Zڨ,{OcFx׆zk/R2{'w'YY1.*AJ*>ˇK0sL24L4TsM6tM8Cgt)ex`&PI֩ p(b`H*F{:H{`z*w[,Y4]&g - `v" ?p"ԛi&N=bz/ dq@Dl/ @2Oz%0!Jŀ0kŬU]>Pi݋t"h\hwa6 `b3xc;cCydA@~*  ¡|bJD<|${ p@J(u2ǀTjwؙv b6T  *(L;# Yt(LU2d{|7|y 4ȏodQ ~ ҩV|Cs$%47!j AQ 5nc2Bu@ uPA $@V$Izv x8=GyBD?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nҏq6b1a@ZԤP !uzaء_LoB߭c Ckʁ/BFXu#bJ,/L f#\*p;vAlu,dqSr(G&X=|`1yͷswP-YH/_xcN!3uIUn?h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ8v 0Ä(:\" 9gxH3%;FIDS 3 @ û ɵ0 ~{pي{Вw'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s);' ud( zHq$ xGQYZ,[̇\\ gӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ18BS5` 1A@ Y21 5:0J$.+ax+o`˫x@ Dj, ܡoMP`LQi{ |KXLtZP FL!R0t e L܉Ph@< *;o0q 1ą6ͅ  * K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 6Ә?P#ly*ڄ-*]2L%k B8{R"#Z'hStX!XY1-3#e$%RHu«с1@$ S`xYH$*e4D< 1]L }ӒXtզ(֭V NdVi$N#䜈(݊9HzԁI#tx( [5  h2IѷI4x xy{|h$ 9<= bP*{u+C5LA [m5%"0h@LQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx?a]=cb'ч~(05sneWY=.(D!ntPO ćI @#IXj< ERdλw|Y6\{N!wJYI{h ʠ!eR!&M )hɁ4SpB9mRF"!""# z14S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$9 M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{aLV< rK?uTOuU_uVouWuXuYuZu[u\u X]2 Obc$H6av]v᲋⬉L^#_n3 9W 1vw tjwvIݘ3w).x? }(1kc th呂0Ӱ¿,H GH1`efՅPHg3]y?Q ]7 F%0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4EoP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀1Sq{{V^ifN|Ҙ$W﷍{'|hS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=vC{bsg> ~"\%ihPĻbY>r!ٸ[t37b@>FSh|KAFEbrO;޼O5\+bXi-Bʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=4UP+vP<<.тIƒ PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3B(A=0`CC 7 N#A=|$$ԳT`R|=N=E68D#@Fl![@:+[J=b?KCE{O?@pH0T{n.NF;3ê) >( d`fwN+3A+-b~sA s= D~4޳AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=cNdQO9[a> m dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX p2~>ʀe#A@GwD %'1`"jh, !72 >~zpQ#gd5$ @2( n+aY" . |~;I @?"xi ^zlP 3x ^A&|dr$-2z;fG<:h@y|qc(Hzh (<5t AZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠%Tu ֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,awf8z & >e>LH/` ^M ^Aɥr@xh Cxr$LTzifRV^ pT)p` 0A\" c H,a%FDQ}L$G1ƺ}B+LdT)P1݋kr d0D) O9-s;wpd7 y|n$`|qH1,A 9Oo׃>r|IoXc M[AaȘ֑k{>BM\M0Q{ƛ*ppq7-. `/k6H[QM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:P`<[H=|2[m; !l#ʃi:Y?xd ߐA$G`03s7NB ![E#GFUG!LS:h)H {ԦdCz%[ BYЃ>vu݇G'V&2|CK&@|<$GP7?^A  Ra`\BD-5FCUD39A, ;ަOE Oў/I?{ ;AY_A _!`%Y(MJCSL;5C8`V> ECZ}0r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b> -+nBXJahA4m @4B_v8 zLA A;XXPġ+bD ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4DЊ7@g%H >$2MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"lxIeZR\CF47̋IDBB8SEXiBP!\HdI>J:\7& Gh$S dHŸAH afY-DzGD@ACɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D'|CT&eAH'g#yzZ,D?XrC$()FD: f(; W4gACGK*߅DٽmIiA|niE<&D e,GOAK;<-Yi&_BܟA4@E(ߎD aY>p #6Dt]ϢFA7NA4\*)%ȂXi~Z)M`E4})5g݃=< 2m#FhE4a~ V'(>4C'`T=#n&>?ܫ:,(Ljr?:ë^Z7i>؃>8@C'@<ĞP(~GRjޫ:_ԃV G-l?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 RpAD?=@ r.Gx@*[泪زJ^ GjA,YnBHH.vw2tB-eFÍ$_: =›(/bhrE .xpZҮ&DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-,0"x!0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtVE99;DCAW"C=Xѣ24S# RL03L=DE?\3F78@-|>2 XÌ~Z'C2X%AIrdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,e-AXC-ZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`.C0lz@ܱpz 91'Dg {B 7W?#`[|-ĦyBp @:l,C%́L#8;;,,,C̕@Kxo=Z?p;7JDG183#F3z/A 0kD7`hN@Ľ{B3xa| JKH; vC{һ&{,C{2/H_s$H |X`>u+Ƀ/I3N0Bc0½ 3 nuS6atޫ.:ӊzLz0,⃃+eμǎ_Z^' "A (rZ'Ua`ûGu P҄(U,#T9}KR%odGGxCwdVYG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwìn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /CTu8> yg YJ`XLҡd]6XgehjlݖnpY ?!S(P. L5SM$!Qtǂ`F0Iu{5~%-MU-[d65uG`1hHeQf2euޙ}蠅#5w-(/##`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.=IIӀaw4jZԗOST hvԣIRBAi XH-SPqȁQQkep`?LpK D#HO- <7#!IT '.}IB;@땊s8Ō !1PQSe={0ZI , 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL<!ěGfbv+"&ӎ8"UG`٪*c $G@ @K{ *H)6d zX+ 0O402P*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙAx` Hw(ڕnk|=ie/n t5:j!Kg {t *Ё n#\ miq9rfRW-u=˜"@l +I_@G^5XAzD̡_\faуCeP=ƫ(ࣅH auzVBI;4|p g=6Bd%PP vLF|X0ЋAN|`"ЏFjh,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʐZBHĽװ؇LG]|`# 7B5D`ȁLt׏&xTc-=1m:!"1`%}>C 7 C $E}C [CR0^w-I$SH`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…(:kO$NFD pG:m"(#6 H(K  lijdZƏL&I! !L P 0fk(- D"RA::n86nC @ ‚ ƻB k !*A6`ց 4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ ƠLD qqȐBN-gj$ X|_b[F Q[k a-!<tΨUI)¬\pR.@_ Q!6DcX !ᖬ0ZRI sR'w'BzhAn%l# * @-N$~%bMba c&%!J*N d ϖ!;!)JP瘔b  "((H<J XL. @1V-bdaS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* R`BxʬZh%2j!##LH@%&I1K4Ũr`A1> : s-c;#AҒF,00@OH>L"0p!@emKkvI@ ԁI! " ҬmIb !b⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʨ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨHQuU\"(V:bB\jFﵤoJ+@ VII3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^D*I.F `Al"8Uh!ފ0r_1STC } |6&Dx9B)D`>R>B|L!Rp`B5lIR,5xcI/R7Yߡk@:Do7W5 A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@" D{S[ 6L&Z0 "XvTh a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@a *m5A jt)"j ĕq)Qkp*B " x9nVZMDJ! DZL6 g eˀ" g]:2 H̗Zjʬ"R=d!** cxWjH//0#T!D@^)$@1RC{l#KjA :> cC3,6DB TXC.P*LBY hL$?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!$`!@*|⧇VY[ٟB:|aDY%!hMdAJ`F?zޡd0RGLUQ \N#맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7>@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->!` \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!$e2` 7n D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevةiH&7(-Gͺu2>G` `ʽ{ؽK<| .½{ :Fj|c{8”9I|3w4Bwߟw4hY(2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^w"!]&dÐ޻9s|Uݽ@|CD! Ll&+|޽*AF#\×vܕ6U3>G>,Q8=L8gv'v7cg|F=C>tp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(d̵\Jhh.h> iNJi!DRa0@= d$=$uO \7p5P;' _ #@GXΞ}\>X:C2jk_ȲFtՓV;jU[0ɏ/ k>[=׻줻n=v|a@ߨH'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճM*)hqF< 7l3_`Ƒqe:SFVSXYWBFqs-A?a:CX_c}߶c+>!?o>d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF'RZ0@m=ԀLl|Q0># jDTq$+K7 &h, r,XԵ5# Q(V-7=D HaGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]a$L3AҬڂ iYXRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY::6wYF1t3^)yK*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE9Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! P3NXaZj;.H".9P-/c54'eg*Aβ !Cd RF $DCyrFpoپ]xGc GaZo~Fe0A1Bd@G0K_Z Sd-i*~Bf$L Bzs 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`1* 1,4[@ *՘4E9$):~^S"*эkG%Zw,zh S;~%[(n>5η2*X"EtȂ|I!޲u T-{7»9Ki}Kv+N@f%S^G`bk/Ǽ@`td@9 (F! P`_ٵ2, 6Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[Mg&=,(}6➔$*A~0Hw`( 5I0Cw.Hmz;+d|Чu8w  q|y6݄3PrɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet?̴M ;+E {RsBGz6(w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz`.u9@@oӊSY Dh8+! ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG 1$P;nww.:43Zj;" GPxQĬzKذo! " 1LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T64aG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19uc( ?6%5H +@4&%A Jҕx/Yh>$$y3PoD7&ᨁC!Ux  wȸ@ &*؜,9 Dp,Q)3R*'Y-ɥ.aYd৐NnB':jQ;tI"Z M:O M4UU@ X,7ATI QAmbLg7 TFr岘41]  FId~H$|G?+zP{@JGFmUe:JaT2Pn |`=պI76З(r7'q) ðՇb[_t 2􁏒` `H0.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ()5>jH -r/yK:k,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4Y.'qQI`s#?8xQߙvG|I5"Jx- .o e+}E?z@#ֻJ1c0}NBPC@'1.G;`5d>luVDj\+оȽ}ُ:ϺUèo85Pnޓw,)I H#Iȣ-IHd XJٰ 4 6y  hGx>w耤x{ Gtr* ep@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jjt˷˸GZ؂w &% ~~ ) Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w8P+lq vYfhQ?<1tH$ί_tN 9ė|H(%;}x HY>x (\ РQ j#}N Ia9F@xe(f 9L o4"5#ERl%P?܀Ȟɀx% YR$Cu`!v'(J$|$DH5Egxp';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.9-Y#;1Jaf\zvKzT:FL ǼUhM(R;H ևv^N{0!9e~Ȁz ,՚IiPikeȁ  &7{xO@|}`E(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYN() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V9( <1 1m}h.<9KkǐG Hzoˇ8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q}HTWu/:$=  p t_Vi,ʣFw$f 8y>IgW|Xy7C \y˾D`ޅ1'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF XPӯdN+9Q9˸O[hN/wXÀp'y/_fġڳ!)9NHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - c&Bds(ѢF"Mt)ӦNB*u*ժVbͪu+׮oɆw]𺰁 ёNV꽙yo]KnKwݼj޻ݜ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwAmSzC'1Tc5áWI1Qwų~A_j~-NdUe CFA8uVMP9s,]2r#X'+آqφ)N?d0A܎ޏx`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=H`OK$Vԁ;;v [:HCb7Bq^ݓIBK&%#mj*S7PX'D~T0@#p-jctcP7Qkcf3pC<A"X,QFF>:6y3jެAt ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p {# 0F׵|;ꑵJuz=A ܃CS_ק:P>;ϥts*>3;cS=0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xl@Az%K6#j&af1w<)>o ,x PYF$)A\Ec ֱ;"Џ|$G> !fc,#8@*n QC#fwڡA+nēLdIG{(|KYL_` q #\&< J ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 c!H&sv ;8 @=E HgVH Q@H蔭XU}@i Y:= M%z!XB $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>8wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS2H1 @_t 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq@-}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53_Tf1 z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}?`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u $^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?0C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7D zĉu\@=QAl<\>d!:@SU ]^ɥDHE;Ba|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp?@ p^s\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IAuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA=$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ!0Lndlc (u,x::IP3LlFZDօ<: =e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH„4:*ę/ }_z2ltI*,4q"DvW՛.") $cB c'RDD0*MԃQ0bɆTUi\J=u\IJ~W!$QD܃yV2+CDjშRk!%æ4$ C?),NT>ŪCH@DXRaY}; B?jĽTH$yROkCC-=liBvƙ`J=Sce^A ``)֖_ P C#zn ibLBܔH@ܭX;<, @0Hح4,E:DC-톕,ےVfd']=|G@0;x؂A$H]4: g͆-,ڎb@*ǩt-m-D@:A@ n`.;nҮ`u&f$1,>^J:l@Z"4uH:T=A)dfK$@ 4lO)T0'IE):% p 0@7zD>EAH@I>î @>R2D0@?/EHK_dHI0^>m` ?h@*D@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`'æA(CorU7L:ۣl@++F5'F4s)%lC" DT1*3pBp;pJуqb@ 3I 4=S0?UHAZz>RüW,AԈ ~Kn|R1D BPu8̳lAD ؕ#) ܃{@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ7=X@v}$$YTI&]U:lBp@}>ThxOAP $!^C=TA@ݏDXcJ:ßO?1@Ab,A)-BmDLKU#=0>)rUAP׾>}-,@#t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@& "*3޺ "{0Իo_)&NBALx Q l$"w&JwDbF['l u:+>>xqǑ'Wysϡ;p@+\yp{@:?3U |i}WYnaYf"+!FI xJTQe `V:z櫱{$yj1Ja xBI'D1SJ  @ށ@lGN\o!_MªgeJ n1!%@oVPiơ*q7+i5F ´ddǑGч0 y'/Թm=4"G^! 6;bgG,_}Z~P" 0dRr @@=PSR=j%PJh`s?. xG=*@*@(q aHHcv$Hz}b۲&IL1S 1 J=/!:!! xB9Αu$"`=E7`r38`]GDDP)I.@"oA dD"呕@*H}*x"H,TtPa GB c c  hBB7CƷ ~r*Z9@+OyΓ=O%Tj4AP. upMHgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:o5O[9zYgVCx_X\Q /"8N'Gw&d ba5exjtM#C4M=."7 H>d%DK, DHj\Gء_B0$tzpzYQBҵL`؀8H6&GVWW`T:  Õ`zqy0c}>!TtiZzUGbav5"` \ h c!"0=aYyG2Q4ApRd!9CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆD"Qah!"Q0 = 7} u-SV3{@ @Oa} 6apBQM` 2@vMVtr"iF2 TBJ k݋@B(sAA($ڍ@+ U|# @C,x$x, LJjtа `C?bP tp3!H߷guoDY.3zlK@8|`CN*6P|L`\ 1UStUJC ^Βݐ@3. =Щ%2 E`@%RtϞW):6X@Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC "Pc=K8@g/N(I& !pD!8d"J(Y,!r"N**j!VAp즱bMND*gM6Kb!Y:AxB#$AiAg0#>@xɰ "`hPXa & /߀0 H!Xa{< 8 !]!P!ڧ_#*7R I" |b 6(dA++T( a@&L &{A @P~ޤ1"bk gFL *@aj6 G#!}Rh)pamN/¹uA` ]*jBdY> B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'x"ƯMejGH D`Rd: -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8(H Y(ޡ-F%( #8> R!H@6@+\s88$`KH2T0@" n6` # ಩>B$&CP`&v|2!'B4"2 }'U46/QX8 $("7)^ |ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSb#Ԁ3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-Ab (Nd>8Pe:9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!xh0!pj!PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!r)6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫܗOi7Xgܓ@2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*AP5F􃏚>wYʑW;Џ=N=x ×k7\ 鿗IXjA@B%",Wlg!FI>@ܨ:[:`\83{6_QO_BDb@(8{#>R ~o?_-e;HW0DM; ؜-_Sތ7G.Wn?:!g砇.褗n{~;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGHd0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>1)GIUwD baŽza%XB7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ I@{l@pd>Cc%%䅃Lg@M% b(9ẋ>ς Hh`؂*ұFt\aG ҃ t`GJT-A@5Ct%@R:QĢpV! 0G㮂 5gv)^ zHuwS0KCôbƮ'ODH ȉox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ8 %P*k$" :djmr2(|Qvs@ Nܣ Ňd9DAJYN.0|XF 8 @YD #pLsUO3Ka!%K oPK$22Y\q0 k4/{|X*PlB8 duh,G'P.w8rAR Ǜ b-*-c,ad[]20 LA3G$''Q24G|HԹq @fABŰg TT ҉oP1) :tblh T/dwbńϯQ j4\XG<AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fr@CY ,\Y(Yz , ߨA+:M :d~0cJ7y*M}7oHΑ9!cA`H:1қg>Y^x+EKUR(ȣ;qAHt&U=S{aE/|6:r e!Z:BF1 `G-<zfʋ4)P(?H2< zb}L hjZ[ai v aDz7X&Yd. A%pGvq %8 pw?"# $Pg\E?ݔ@AV212W*e! sbK"2"X">(rS}g2"SR`xzXOJ )tb1G r i,@tb2Ac ON(LRpC NhAX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7с!DS@j+R+AvDE0vj``-b- H\!Et*>%`E*%υ= `& `T"l.72 BBuPTwLe8**@+e%p 9}2%p] yK0/r/b,p`dÃ06c5h0 ؎>|cm $*%`'2=^E@ H22v5D@8o:v#t#+.E0@ 9F`29PDΡ=48& 3!Ls2F -1s5(0#MWXEYܐV 6m6AeDivӇ_X#GP8 9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;pI@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O0=؊TK PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گ(0 fiLSGj֌A@Up%VjKsjh yv(ń @P eTe]qMGd0qE6"ȫN*{%wr0SRvE;T+FS{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾BcO /~Dx:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2. +\}Ԡ0yp,iПfP 0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"KpqVt%m" p-*°s ʧa*̢vl8yM'H'1 Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-o;hT O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowHa~z&w]{s΂ }(;| ^EUa{0$ ;(ej%H݅""ܓ0; P_:]巹ה d5Dv2'Po t܋˜z [KsѥO^uٵows0ûzK𽻧aE ~KT։vJG~g `b!|P3J}*Po G0~J!9JǸz'{6%AS({H@ K![—oZHz"k!nN*xG>HodaZ|Q!NXа{ BtQH#tRJ+RL3tMF}j.Q8TUS*YŬJ.zatz{'*@\YH  {':Xu0! Ma{8!%1g6^ 1wܫ}Fʁ.̳R`1_~Lz9SO"[؛7! 8 R~ѧz`z `e2fsyg{gj1`h@J{b`jzkkƔ  6dKƘҶn{oo* W.kgq#|r+r%pIő3r$7A^E|@)t@wd)MyJT!40!Z:р `3vR$@?_Z `Au(1;&CpD0A*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|HjTFb qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^сiQ0x@>0`LA@@&0 \,g2Rt[QH1|@l C3(i:ῥc62HG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6P{ kVd!91ekيfցXt t*B&VbE9K?D؄m\B.x4`GX9'#) $b[~8At; "Ti@5$yሜG G3:Qzm&[(Or|匜e$0F0氎 ` Ubare2v=U @rKzLЋft\C ,E4wfhґ9J݀E= lò Gd2 UB H) Aj<臜}ld'%#Fs`d/Bp~"+CdֳRRpESVCX@\(Iq~^#H"Dbwt7<9 x-EHSKX ]T&ހ 02`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>H, }Cz3EFv*P&[ D`Aͻ/=uE:0"YW#W*3 ˈ.A#Y ˇؠr? " @ #Q!؉kq5 J6K: UA ;7/ |pUzkM c` (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 D9*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5mG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kiʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-eZ@xC|~@YTfXE^n9 (ƱStd H}X|#}pup|`v .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{HMT#Ai 5leDof=w#oˇd@)7[ .(rq|#B!Y"x^|8D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4<dz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@=KiؽwXݽu⣒a6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzxt`œ '"uB|(A"c͝?L|%4!Ȳ{m| Wz((v=q `oqOԁ[ L_؞/S?Y`]'Дc3AA}G:|t> ;#># :%>)"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>#AAOp UvY>4@:(>mp ぐР&tE5GhCB Y*Wmc %Q, A3YnKdW`d@qΫ4:"$=f,J;-Z{-jm9;C;:T$TL؀7RwX.[:K ]&t=PO 1A):PlJ:S+: j>4pOTq'r/79qcN{"NKLD*L0̥9Bӝ@=!4 },)j}©3@:Dy^wJC ^)@@~^i7:80#贁LzT=)zPXAHp(MuptKӇhr\goB@ᝤnA#|i?٠"āf?(< Eoc"BnCB=V(} a| (E$쐂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(CU`'RLpz)GEpы`cS8 2 XB=uCO1v5^[J l?k`n;zCJ # 2:~1$6yN.#H} #Z,5ɂ%/-Eb\c,H0eɂh@3)PB|@TM:Q+[ċHg+tQ XB+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0'츧>drqb\i>1,!9PJ8DN/hON;L宾ax@ns9 ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7D CCU zLh@:@z,C胹mXC̮ԝ|:!Wd,L ^ /| m,;tũZiZ L@ԣ`D D]ʆB4@MO8;X.^ƫM]kՃ,tL`‰dBH]lDDBNL H OB|CI*CZv(U'* Wxɑih>XG!D>|CYeP5fWzR{"@lD6P}f GWB)B@A\A4Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮD El;,A$ChEm}Ga@1KN;Tܱ&<Ԗ,D:D9cG^^=l#]P.j!<*С^}aH@@E 9*0kz=NL!@C?bD*i°@lNLlR mD|lĊ,WC = >}KIN,ҰzB)ӡE==ElrjJYUB+~ld$sAmY @+8]@),Bס" رÕJA&..6 %hN脐`<VzH'Dd@܃;[BL@AnIOaO0^M MB\PPan.FCB.εc0DĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/垣R>H DWH2p|zcxHCmPȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅@-\.#,A&'2((* ;tr g7QD)B#h&H>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VH&|z&׹V+/:2rhGoF$+$K @'8g@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG, <>P1m$ EP4Y^> h8Ŭ;#,>l ̸V%hew?w'V ENDXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAA/l"05Z Pr m_X93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/SC>!˃&jAoT7CAzZ4K'^dYA;J<1ԃ\ 1˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPDu'\h;`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝ,@,4MӨ@H)H D|zܻ/؉(P݈{؅(]>F# !E@| Ա3X̋;y ]Ov qob@\D^剎;<p(S:*Ӂц p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W" W RpA6mK o; {ם+QC*|[u+Cu⊟DqT{Rz6`v,| H|lA %((';4Y$3:o9@?J"d2'iKvA}jhσЋ>/'"0Ĕ3 ~%),;" &BQ9 0+ʋt|J&J8 }.NJ~(Mr=t]v}xW)wvRI0Mz>xg xa`<ha4(O!p ̠ө W]5|ީħ'Jzק20Ftx  " oxwؘu( / N(PpvFj:`CVèf'G OnjAO6+, [tPH@ iǭu|9'ph{9믌&0|>0% hC|G8xFu8A{}Em hH)L:; _z֩q\1yq|~]c( Qߪm9+S>!0UA ^9A~!!ah_;AGFDH \$&xa,w<@mBxj`GDLg䘏0N C2YQ)E鈀qzF8HH#>Q"~l@?XFu,~y#'aTeq́`Y>b\t 7@`E=`)I5" ҅Sz[9K ,<zrH;/€cp7-dH aP<aA EG`%QD"7F5<(BeQM68_~WET,c EdXKhE(o`6@>bF*"ff v#2@R0:##o;"#H` {LO@ͬb !B*BR" !A TN@&#f/b³)*xbTZI^cj+ bX'*MJƮS:SRphΆ!CJ"$Rma.ꡙ( $X?@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~$` 7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 08IP* kaƠIZe'+L-$r=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$ !ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ejz ĸ6qdBT'2@"b@)QF FA3C#B2({DE/0@"` *Rhb3K3%BZeb e؊4A arB sTjރHcG"`? ;F# i6;AƠZAHIn>A q.^.N'lzG AK$Nc:'!D,!s//f$!dS/D"`*e=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`A@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@e `2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  Bd `k3 `k"`#F)xhz6@Ge$J -%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF  "◒+ْ3.tNFp$EZ-!"A0h٠zx$"6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6: :0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?B #^r`'@F@*: @V 6CF*`c()gf"HSX]R@x`c(/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F|` @"y@"r}'v}CBnDHbn@TSԁL%0 "Ё b1`=` TJaB?~Bܰ|փ0BQ^AZc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+p%Y.B #7t[N@=vE8HLG84!%ߥ3*ݻrv7n\YԐ5T)ӕNWjV 5X-A|Q4HESs= *X)d،6t=nQ>~a|v2OުDžO4X Rpm=!{o}P„5jehmp م ` e_na~b"Hb&b*b.c2Hc6XYnp\4BE  ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1܃A3@B^@>EA>SթXcBs8h s7 mMɪdq}Nꆓ2BPYt8@X$Bʠdi_j:"D E!IВj8$:I)#aM`>#E 8&0S en> NȮš,!>|;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y$=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) :d:D7A0/h;N5W;j%ɔ!:t>3BDh~}ЦkUtHkΏa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|@ €z\ A*~̯ˇT #$nw:ʹ@0 B!Z݈0Qn {HHIO@D ,2Dp3_a6DJ@NB3}0!XWB@)-5 Ȓ8>8cq&80 V''v]mzWXV$(cs40D|# ^uM/=Hh v@=q` 7 ps,9ωt~Oq!P\бdh!39*3%飞>ws%z{#!Y=QȖs򨬄pA~oStw,S|[9ާ`$1$p@S̈́` aB%&no9#µ `} ?(qPJ(<M&A1 aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"@P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vZ" aqnIPt IOV<9=@ tsY? IR@KcF14&#p<4X)@V`71X# ED)OIm7!9@ 1<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig5 qqwj,>3(5P `%&֑mo q*s=fS@[|Z@.v!0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2@jqqzOR% ߐoч^h7(j@0@ : `ͪ۷ $'PAH}ͅP `gB0xRي"7W`zC($#:x p @%"@c P S) aUsך S!#D&@ҩwS鲧e ߀Rb芭 ؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vsɾ5ɒ,{7B `{9 38^|V2QK@Jeʃ7H@"iOYjp j 2ܶȻ!0x,N0P" 2ġ'=_C'x& s hvBgvG!= kyT!59@JmM)Beۚcc=Mm׍G`pce4IT%]$CI@{o5`f1K#Z]Ey,#Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^3K0mk773/Oı$_7R+{n0 C -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5}80h O]ZY1?5  2e[ F=3}=?]ȁ@5GVz#.< i%oB/> Bwʇ}z$Cg6x:d!2"C#DOD1EWdE_1FgFo1GwG2H!$YЬ@h$>Y1D 0c`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`uqx+Y N(YJ=u;U l @0RЧK; 3dQc z3F2ޱ ]R aPdDZG-7Dd&>8`G (S@'j7e:Ǝb ~FeCA{,c@My g*@u*@tU1цjU M\D >]؁xІȚt!6b1u!HoGe(ww{#0 <{q-W:Rv24._a'XZ T@Mޑ4a@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"QZX !&@2,P (C=xW a=%O\/ R$#y&A0 \@.x0&/P __O=@cl/? ҃u88jd X_‡c<@PZIf#8k$@h2+e"hٜW"be,+p2 A=zJvֳmhE;ZҖִvF1*#x%`p b $6qκFVo@0Q YWP).u c(TxMɛ vxFkTdt4{9XZh-P א ~ X;~Hpnk`- c@u1?HFϤ  CIu(`0o"k"FPtXh wȥ|DJI؀>:X!4 zpYh( ƍH5@> +ۣ(epOWl~ `}֒ .}8C n "s99b@U`{P-npdTPA3wxE @|Ӈ,)Έ< ƀF Ȁk~ ۓ  \3` }x iԼ'\>@ `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇1u`NN{6IZz BS)6{K=Xd x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!`{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH thHz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@F(0ԄmmmRpIkip>ߖpySnDt)7SGcHYam66B=#G$/yۺv\b huX|7+,r|9n(@Zn$q ́d2Qq-u`Btx2JQ x F# Z]XdYMKa: pt1 `2Ϝ2vH*Q' ,JPt@N(ljt0|)-P%tI K/0t5pn3T@Tvf vivk P@oJ}h{{0r}׀,6~ /GL'p{"`P@z]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'cܳ ߻{=R,d'E !ɚE uҁB䃜WC>Pa@t^2D3 o>Ev4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM96p H0 exFF`} wшgo {œW@{􍠝jN=Ys!qs?O>cY> DOPL=vOSs} Q`;3=cj%S@#@4;:Q; 3[F@:oF24B8{I  2<0@ ,2:=~DAf lL!I?)TNZgƤD\=|;"̔@fSD [ T;4$0;2d,!>|}IpCUPOZ+`HbԳ7^>Nw= wT=MG@"n.SyHzn}["y. 0j |=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% :@^:l5rFX5^G};sN̝k67h>0va=}hDUSKSn9:o[;T>*%f@:3 @= (-exO:RSɎ#:fzk7 @=b dAUO?@LiߐU ߳H Hoe;޽ɖVI|ǀ[vך+1+0ANe @^>|wܽ.2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U1'M!=@Pz8$zW.J:*t`0@"ݼC": CO,v I LGeѣO<P>ҡD,7H>"‘FL=<9=½@2Ȕ,đ/`80HjЏUPS9i@tL8KGTGєx5.F}c2)3(V$>DYϐ!0@x +'ZDIʤM%XyOB)\$ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Rɢ A=yς6-iKkӢ=:hQ,#|H$e:QB _79F`@?Ґ*5&5(1>{c&YI`b:XzóefM1HjRZ>  O|b:H7<;_c<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏt@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aUQMDyL42,CǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJaocSimʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX`8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*0&3`Dl؁$>%7HreGhQ >ï@ԱkSv5)eDp L,HS*Dk[\\ բ=Koӣ>=Kd4+ZIbQFc 6XTko< @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ODYWNCP@$JH$4(!RO`"4'H`\HPh] \Jb+>!H|@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;D,=>EpC(Ns0  D'EC-v̈́:v8]:L;T@> K?L^ "QäԕCC?XU@Y N8D@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_@P&aaCb.wCT ;  RapCE,Ft=[gC:EZ-;8=PBWH'|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CMO x$v-Nŋ>C"D,qhi kԼa pA]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F0>Ԃ`È^>@c7xSDLIAtG@@fT@ 7L`\Mh@A HԔk]N $2@KYҫ~`F]/Ԃ/LgaHH|Ef($j*Dj Ujl\X ܃' Lfe]ZxyɇPȂ>T@/G?ȅ(  &NATI$8Yt,ST$c ~7Tik0F*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*( 䀝!͍j, ioboo$Fd(F-,.C$p po52oqpt.'\+FKcpksp{pp  p p ?X0 pp q#q+qi ;CqKSqC[qksq{/qqqqq1qr r!r"+"3r#;!#K$Sr%[%#G$c&sr'{'_&(r))(*r++*,r--,.r//.0s110#23s3;3'2C4Ss5[5τ4c6ss7{-k78s9Wr8s::s;s<>s??t@ @tAA#tB+B3tC;CCtDKDStE[EctFkFstG{GtHHtIItJJtKKtLLtMMtNNtOOuP PuQQ#uR+R3uS;SCuTKTSuU[UcuVkVsuW{WuXXuYYuZZu[[u\\u]]u^^u__v` `vaa#vb+b3vc;cCvdKdSve[ecvfkfsvg{gvhhviivjjvkkvllvmmvnnvoowp pwqq#wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{{w||w}}w~~wx x#x+3x;CxKSx[cxksx{xxxxxxxxy y#y+3y;CyKSy[cyksy{yyyyyyyyz z#z+3z;CzKSz[czksz{zzzzzzzz{ {#{+3{;C{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|[c! ,fBBD^^\&&$jjlnnl..,VVT ZZ\224JJL**,::<zz|bbd""$>>@0((Ĩΰ*$Lpr lttnfHLF@~x쐔`h\` `lbdpp||¾̴ԺĮ@80L86(Nfnp.(8X@X0.ld\txxbh0@<<40@`Z $00. 0zfh`Ztf~TT@ȚTbP(6L8:P0H:H x0.ĺFF<¼Ė vvtvv|FFDrr| ĺƼrrt H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_n::УKNH:Dv3|{ξ5oHp9F!pN#VD|f; AJs"FPNH-EA8F:EJ@>sLF)TV Y#@;#(s! Ih&QlΚgz:tg:B Xi衈&T| A#ם;`@ HCfQ?"n = ^ :ҝ'9>*:GB4kqĢ&cO:0&H0F4hЅRD]Cm#@ +n{l' %p;4ϐ4Bx]0SAs;}T ![N;kxPL#,;80.o+H{s!ps T;#*_6h 9s w@A:Cx7642CN,7=tG'MN8AgvIM@Vg>zBd°.aP9$:"`:A9~#22x8@Stһ=CZ?t}~A;G?Y壏1ӆuc ;@@vc:$`]/{۳GnH!AK-h<'԰ cH2 5b@QGa˄s꧎oA>l @ x@+CzG8]vhL8 IBA>4 ":*S)KG@{J88BETH4'4L0ppѦ @&EMҠQ?而vJF:R"@< pe 8) KsN/:1?dA.LfPۢ(RJ ЁJs´1)JIVІ:6: 0D0p#@W?  Wtq fE  D@pv @FH4pX BSA+wHQ, pVq+ COgEӷMvd!(<\4<).wӟZQ8 a)`ց4j,0Wʎs |jWfWmX;H@쐀A1t0` @'r]9 VK`Ua:[W`tp_B nWb|D-H7PdLZR* vl6T׏u|vH/+ ^9ڼ+C2џPkk4US0_{wQM(Gd.s~@ ͱwcН1Z5(vP$`9*Ȁ s0ks G6A0;[G<E^Tt>d?3Kq= d~Swr't.["HK?:@8G^gpAN`9񜇜Xk;3! *J'Ͼ2uCmC :=z&b?R%Wb0/C4*Rgewt`Dw)|R0p~zqZco(ac5fas'cV#''֦@&%z'P>1Y6]"p rXrCE-_#-46p sjCrȵ}xz0 T?UC !- pn=^3>%0$@TVXP{V5Šx)  :Sk&b4Xa "tdwMM&T S59=]E(aA:WWEÎc52C@.Sr| ِY?QJWU$ّ YЂ>)a(@h*294Y@5":1D f8Qpw\/w81\y') g$ sy S"@?@gMS oS(xP_$`[ VB(y)gC-p-6P Au=eYU}5zid`$"0J(*Yq 1,yRt%PPw^_54s"'U"6TZV \0`*2G>N(@<.a#r:/=0JW:ע$ So9"0IPS1ƣuD㒣0au)䥊Qj@`/DڪzlmnG[3q'jj/8G ?Z֚F^1_ws3J :<1Cʦ Q,y?|V% 0aگBePqJ@`"RT`]2j~POakk";!{f$p53*!p#Q@1 "sɅq ap-IHJvcZ<j@0#\#%$εvZ`=A IzKpѢu >XK#LZWv Xw\N*[KYZG[aǷa&p h_@2 p8)&AIw a$Iek)s!#Ev(PT` (fees껾'$˩ځe`{a5a:=E$`[|ѱ ' <\| ˆ+&|(!\U(Lt1Av8wA1@/A QZ—A:JPBSL` BkPu2Q)0@{/7h dg\IIP3f#" R} כK|Ȉ=%\_ t %O(":p2%9%3ӹIiR&':)i܀ =О97q#OA@QITWf`'`Q~%\y`VD 󀚭s-WAT+:aLҞGR j1$˩qj'-n(!YB@wdQjP@q N6h'/@jHpe#p~E=*:P BP 0ae& PE`uh.tcheZd>"vA}Z?EzMp܀K/%`[LpThL-G!{j'c<HTg[_-XX@3P f* :ppӣ6а  2z A  o $h@?,؏ @snG!E$YI)UdK1eΤYM9uOA%ZQI J.haxڭS ܡ[Au=Wv`k ӧauo FV\;;: bc\v[׸`{i l/->zenNltn݁y xPA(;;W=%Ե;I[Us*.;ĸN`aXu `<ޔp@ 4@TpAtA#pB +p(wPf9   Bx-Йr#(tx(u HG8(v*"Htpg"n ] o"Fz sp&胲hPu8]8@G ` LW{l6lV{m|* Huz*D@{C ÂJ ˼ | 8,p~"ƕ!+@G @ ] p t n1}ü"h4`G@`ďmGuέY&RWҳ HBqB eQ?g<%(+&{#tx 6`A 0D m|a#b :2E`,H FWB0vD,0!/a|1L@+ dҢⷎ(R$!oRo%|Cp,eVZ$RZ  2"Έ +GÐxHE8R X,hta5yMlfSf7~ׅVSdg;NxSg=I¼ 0">yOT%hA zP&t<* ! hE-zQfThG+WYq%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^7To}{_֓1a }Q%rZ8w`GUMԉK>țR$C+ 4% |XN'ڡl&ЇPRy`(˥XӽŁrND8ڑ7ܳ :$ apN7l%IɇcPJ2hwm| fdg^nѸl/ڊְۻFA(&q$H $)?M+Cb5P1 %Oxȥ]B}~0_hWPN@`ҁi]*9=YX qAlALP 1J"4DdFHqc|!5!d&",".J/ #~"#3X6z# JN+iUEin$L(3i"ͣ!B>2}"$CB2" E7#qHxC@" ١sւ$b`nanPzj|`'R&uivcQuYw' l!CȀQiun򧰙)~uc?kZiBvRm([bFvnua'p&P towxwywzw{w|w}w~wwx 8 : ^/xxp0k ,}pF ^w ȀE1զW *¼9M.!1yx?g( %#~ɵ[,6b 5Ёt#o v T{3}aXnGSoJ8mzzUiH|xus$3˚|z|k>0aP_Bo/ ˄ԎGy GW2=tK&RdND+ il{"遰:<p@l߳$ nPuDpsh%,hݺuJ@CA{ h"ƌ7* h1A}!cɘ2gY2Ċ4wҬceڏgM3Ӊ&ҨRR6q̫̉`eEN"T!D{E㠣BwRp qC.,Om1Ȓ'Sl2̚7ssc )=W@6yܵ]&A>'KmIt@dX,N_'CRGC$@f@@F u; n4xR u`PG!qȍ@I 9ddM `7Η YpWD0cA piִAD}H J!vcZ<4BK[k8A$ B Cl :Oj"Ú]-qKJ i!Сa9%k'l3*Swa06MpD:yxp dũ;:W\֪DGLq7۰gQk^($h-C@,)lxG /"dD!iIOBaܮZpVD C度E,VĔc7onxYS؂:ғYr䮫MYs#9l6ĄŨFiA]D^"?n 5HIjR}/К"_ReZ~߁ǿ+,1f>3<09@o)9utp6W'HOj@#-GA6D-?vK@ksArq&!V̆sL2/aUxS1$1?\ $d8FHAAC hG䣆u9Ί9.pbCuQCj@b+Gc3Qs RZ&` @G| "AB,݀=t@fBV L."˞NՀ<C}E3赽b pEe |gH-xDHamՎ.MG3Jg5nw]z&T'T;*Њ(~9+peΞl(M9 B Ϗ"SOH .@BqLcg qk+"!@R3faK1%M w;ABYVR{J;&xv,C0@q6^x!*:_\L m >'3o  s,?߿LIL1 A@, u:=_ :PW?܆D(!Ģk, i"q`$%I;!<\B⌀ >:=_E!:0@kR 7Bbu @|71O/I-dCJ BNːbM`0 ҋt:j#N4r@G!"S"A8`aAhat1#%c@4/@15>H֐!]%VfVn%WƓܝE`;BPK8EG@dT XI %Ob> ZD8XDzԟ ܂XZ`޹tQ]T)I><&hOvFȌ6A;,AL0 ޴epDgj`AqFY%+PT(;4xd@DTFNĥAF]>H^%S_ZwGpU~چ>DeDGe%x(ڳU]BՂCz,gD@X8 ńN qdi"!`zX%C_NSz؎h#B MBU Ic8S,؏f=LFRܜ2| ]GwZhh˒ċ2bڃm1&)< it:|(o iWFN*VjJ@; ~l;t q02ß@'A[>& B(hHViA%jF :(eD:l-`*& \2"\C%kiD-!Dh ~(A "k)P@pQ E4crHЗk>ug&7 i,Ml;t';T!fP 9c\+J lA3"dFF\$Nڃr JF=(%9tB9ʄF:ȃ?$m<,'m @C^;^ȃ!q~r ,m&Ͳ 79Dt', C8`>荗lHU!m<^RT0߆mn-N\kVM`A\)ˊg xe \mҮ17ߪ:"ă<.Zn/vxcDdy6lAD>aDe6(ueX `n,L@R>pD, {JhzQ8%t"s* ZDpb:pvaATvP&Ok2\o)0p(Z)*C00+F0rAX=HG ZI窾r? -G:~h^FC#kv@4AAG:@~:\=/DbPPMAYCQ/"1AXG&3,Cw:Au_:Xʚ+tlCfFI`Q |T: ý@(6F; RmW:Ot4>i\2A0:⮌ YqYHAnAo9@h6]gČ(\ujՠX )ju-_w[pptϴV(xAxD^:h)JqIBT ɝm6ȃ/ mr a`}EMJ!vFP:A9<"HEt8L>L[.NHqJKn}fgC;P9Ud9݆e@-W Ië!C'BP\$9: 'L;+H{3AI;Fd9VC>KG>(E<@';Hs;H;_ͽO!6;1pCQ9cNj ";Ö̓pZ=g}xTb;4\CA s,}?_e0씕; jNzpÇR/4'aA_,3h;}ڭ;x֡[:t G\;,A[aAE!X֬iA jT:_^~%-x?\uaxK}s(Jeku޹fI蠅袍>餕^馝~ꨥE pk*'P *VNd `~ǂ~Ja-k ?ZclA.w:X'iG1v dwYt+K_]emС9yTȌ:ەGknw^n-"x譿ߞ?_域ߟ X@ T@> 5A%ςI *A~!1mT BͲ9¦ІsfXC!9h:fx;a KsĎ(@9<IXE+^YݣqH))sʈ88e_[¸E{Q) ceG"Ry1a@;I@ѕJn@'(bu8 0P ѣ^2d"G8*d;b_T`*x&,9 ݈# 0i) [v`\`p›|sR\7wk;ApYCaTQ[%-*)#-uWqDn #g1VER[;b#K&;ux*l`"XcR&=hTy$-p{q]:\@9(AW?>tB @.d8ƭё]I0%lg?L2 .!2 v'PPDZI@t<r`F`ǐZMR N(7 5pM>88qFc QG>^T f@w?"|hF#*q aԶ6Un3Eʭsd cRh{2A0,*O& EA] bso|1V AĄ( HuIz{OU g&v`7!C bUM%'rR|:# DDY2@"F4?6Wv|=1ʀ;QID@>q^w\ @;h_>uL"5|љ ii@%3ViHNKa@cHO*Jl"F r 60\ `JFց!b-%XX/"6jV" > #ց섥*@slN!q(+@\y+"Tk>n%A&&" 1]i-8+[bF! #Ya(j%A%Y"]LNX BA 1Y Ԡ"3?4Cj `%   hpҩ&0c)`"Ёo!x$ 2m sQDԥ:a ;n$ء3  .\`NL5A5 2-",""2-q-f:' 2>:)J( %S86SȖ 6AVi-&Q(?˓'UB%:&|$($6mB@s*,">!b`s55_J2@'T!9gt0>5]c/+kW+R4ǔLL& >a$B#KDE-""?r#F\"z4Ae-TbƶL6Z 唞ata!&M#bM!%tlBakR$el T FҠ.(()UdNX< s`F)pU."Nվ 24>m%9`' !@f-큪əF\YmBUT_ M:V)S, a0+W*> MT؏4K!1t fogsj!J6vCRO^D ǘb<+ofzPN2MUY6a Gr@aH6k2ރjK\e}L:hm#Al?3miU=Z! Jo1hYb  `x’js.)&]frrȊ"&'yؒ=vtt#vchYV @A>ءn$WjywbD:y L+G RHQ6<",ak.p0pQXc8;DFcU`&&, )= vZ^s+]A f$`E K܅Jx^E!wl_Ȝ\#Z,"/C:,"9v#X`pת큼[oVR,>'.\׃pGNL.F;[ٛ}7'gڝگ۳]ۙI}~}ǝd^=}~]ޯO>]~}u@h^#^'+/3^7;?C^G3h&'f剨gk'.IH_ jf:~lR~h>mIiA6臢f^Ǟݪ z˅l(ypT&&Pq Ĭh~_~iha(ˤkFshV_akk ?&Ξ%@2: kucKL D :Ԍ,Dmwl@l_<ą]_$fwҥjC_5D+e)c$ eRNIeV^eZnej% :Hp@LH'̓nFn TJ4:0esI`:s+D0|65OA:M)V9%49}1  ̳N묵RE2}#uJ+Hvvx}L!@Ձ: N{4R|jRiUd@S@#:@cgeOLq_qoq Y!R@pN UQOwr0RŴM1;YIR&Ay@>TjHu2yFX7 B@mJ%/=m9 gw-7T]sS=b?s#]O>sI+1,M=Hs#=5:ܣQMi^vVL'd:$; t :ʆ|?}OO}_S##mNH>'J> ߔ?GP.&td; )IQ j@Y]"L_P##= {0;gg21JslJ~I@A#%3wr ,YdsN)_hG`y'/ɐ;yV(JU#9m@p,LYf_AFY3{Q2${Fz53Jqe[lP%ؕa<if pc~ÒD)$Cn NEU @]T]^OMaIDNhMliԙKy /Y)3)>+ faT>k~`P@cq!86D[ s?vQY<2/Pp!aaaEӜS 8j#*&,g If#av@OR ehV:<.`A I"z jHZ4aJ@&!hFP*f*+JM+lEQK V`Hɝ$bh/2:N`$p## Xm0"PA:Ñ1ѨnSs*YJFV  UPr*:u"=`jpfR71ZZ(Iqd:SRAwRejZ\J} [;BiHEGk1z~#3ȋ%0caǠ u;!'qkqjgp ^C00'-<ˋ)s0 3j("r`$'; 5`."2#&.Qj /)3A(RX' N1\<<]-<.qP#iW;}4894XݧwD$@ #P9Pam.%֓0<Ќ 03T49|-{-~YIj[ sj:S ~=# O9]ۜI=^{?k5 :k2]yDjF BEy'A4 <WtxUA+'#U퀴 UȄ{:RJtD CKp3FV\^_^cWD NBB*8[G~lDDKt*snBbxMfFE3fbr*zNq>S409~XNS)> :( ?" @=^bHyK?"!PrՈDn< 99a4&A4T>7:!>/zΨP Pq"Ѣ~Fo|NP uS>@wer4TN =k#`Nd@ 'Q OT ΑVo:SKɃ?|?ONJ0mA:UQ?eCuPA> ?֝"}ʩ,rpc̖T5NRzB'$֝œTAͦN1RQ2)O3AIR&t7?  JHOOt= g: =@‚ t#a_}\CP ]E6\@io̡25\yyAsgPߺVaLU^ŚUV]~VXe͞EVZmݾW\uvaтԴ!O T);]; ;uQ\w8(EӺEzTA  `C5*,Ы[uSq A*D",KHؙt.tp)jJh`:u6;:quq.(ʓ; u*uԩj&3uz/6(sn _AJ+4 . LJ5VYgV[o5W]wW_v*,(} 5ء ! |CT ±EGǃF@gf9qt p!~AFí;g& L( z C@ }Ή'!C @_e$"^{FXF߄Ҟj (bjPD(tѮmm̃7ƪcfI|1jE?dt\sL Ibi hgfj! QJ闠$X'U~9ՂD`ʃٹn9܂i'riy}4 :*?;ʀӊߍ^縰ׅݞ Ys)* \kG!}\8+1 '@"@&8'q1;(Ϋ*jǕFmJ?]ZlW`8@ЀD Xb\NHɇq0 cPg:bED4%ā8 xGw PQwQ @Cwܰ  !wP$4:PX,tЊl<9q+,H2Ҕbp CДG6f\c@2T ` @BCtE9?R'D t !^&QҒVT ԊZ*0TeAȾ ̀D(3'k&:jxC@ P;h@+@iR׳,1C9mz#W!(+l7uPJ&hUݡk&A ) 9\Ǭx!ݛd2˘hkX6ֱld%;YOA ňl|9+~AMes&$L hjТHKZN.pwo~p.p7x%>qWK1g)A>r'GyU/,i?s[ɜ7yus)υļcCKяt7Ozԥ>uWWzֵuw_{>vgG{վvo{>ww{woi>xG|_ 2ti·dpE?zҗGbIh` [?z.H1n>~?|?+P2@m+$'\הco}wg;c% Ԑª_,\/td-.?Hp( 4pxu  x$ZH䀂q502H; Ѳ"tЁ9xȗu;3P 6A x(BAh1`݊@# $.{8B"O P ?@ӣ:X+-_X|9!*.Bzc%v`dW (upPŃR vѴ  }|t sp DPEx 2 PBiExXu FcDFVDUb@BATudvtǴ#ւAFvXF- e*P. 2R.4pL $6  * H/9(ЀArqb  %'S/؄tX 8#jȣE(Eywtʧʨʞ; P0@`u7 PRHKAu((h4 hI% oZ"$Q'HH@ X/K{K*P @P'ٍu$4DMD|H82v⋘4Iʠ L!Ȑ"K[b1.0IM,-QpA.L1Ĕ~pZQBTdtOQNt6;c$cOXhmZLKW x*\7!곏8Dx؄EPXPQLAs"dyMHF8ɌDIG63@i8.w~諊7< vҏ Q!CXŪ@1͛2EDM;<}(Ę (9 6̠huAĉ=)D=H9sE߼.UKhTeaF`vi(U'ؓyIuJ=^_<n ,}ɀxc JE2{' hRrÍ1{R|Bp~uxw0+$ +. "I&g VvPS*hRۿ\ǚEUŭeDžȕ %5EUeuׅؕ٥ڵ%5EUeu%5EUeu&6FVfv F;RJ@Xh (ܪ'S[+np = u/SHJ-v0P Ԉ(ᠨЀ,&0㷈1T-8P-( Z%ئ!?o9MC0 @گuc p̊H6I:3nb+A(Ғ@A(Zr!:n.vHN@_M(c D耼[pftfi.Yۖ$} 틷ܛ+Ȑ- zg<v(5{Jn(d.Omux 05H/q]Ŋ>Ȍh6R[HTAuGev`vPyVP D,!^쁃v`R{P" ͇6鞶`ysh部 (X|PLb)c0pQJRz^6wWH$KmHp̄$Ĺ8h8 JuZ }kIuH͌Ȁs@ XԚYx.6ĩA8d lN5[!uxUhF{:Ã2Fm moup޾yQ.F;.Nv KIitjkbmf|g v8ԇA3ULx͚"g8otu5xA"npA֓ v}!uJXNJ@^ >?o,fƊx0PcKXӇ!ol?Ɍs o ?{iLɏX G4׿^모y0xXt_xiP>>2 *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy3Ξ?-z4ҦONz5֮_-{6ڶoέ{7޾.|8Ə#O|9ΟC.ep,^uxp}<;.m #Dw_sKwa`:CG稱:Wb紣: AP@1H3;S&"D-;d>HBEx<3MҒUЕ)e9ГQeڐQ٦!:bO R>p ;jT@; a:P23 ѡ$MfAĩ6zΨ:Q,ѫvҬ\cUj"o@OM[P a / ͘Lt0Ё@Cݢ7BTNͳ;[-+k %N*]R] A;Nt@Nʒ\ɰ)OC~e < yDL{ڬP'] mQ=/5BRK7]P SLL%4HcGMEhk$Q],x# {7hql >MS;]<"w1Vs}㎄3B@jbaw CfiuG:(OA!䭣 y:p. 5 !~̋"4'5IL9?T9td`@>D!hJ peP@'4TCD R6 >ϙud*鷜w/@J89v#!wH rH{W?DbTd 崩?O FT@G Pt?%٣iCζ. Rǰ'\L1.;jFG,tʆ:Hmx@&;<׉E R!i~>D0O!vRs]ЂaJ$`43-Hn65c@283hb#u.W{ =́Q.DG'\ pÁ$(V8۲ß-8YYٝ¦J!9ΐ^tt\ @};ir {3sma 8:$! XȫSrL;ȧ=tc{$xȢ0فh:A hJ.XA"m*dh;;EW ^ߟtWH@7yR; :C{@/fY 91 DqCvK2; /.sƣ P/GM:@Q{@^ofV?- *w\aCB;q#f@^QAw +ȿ ʩAhD `5DTR`r{C (aʧC$>D1C%xBԹ\Bˁ` (E$EC Z;q؝!n`=ÔJ1- Ala<: AYA?ƑPul:CCC9_땡;aVIaCz Ģ) r"2`u,`DF!$9@>B +Bq_FY؟dC @ $ȅ -":/Ϣ<=x\>0@,+  <7@ߍc9BH?R̝;CĠ:ȃ?@d<(' fCH"i"hd]D,:Y_ 9$ΙT\H$DMA —=cBM=;tBη 2=A+x^AlS:eM 蠣VEYіݎ+ĥD^m6f:x$;T},'D:@@tR'+m@zg{?fwBAd/t# D~C8'C)^~+tD@;p@p}~:8c2.g۸&Gn G"ډ=9d .ě ܁@X;iD2%:<`\(TaN `@ut8Vwp,804/:kA,Q]p*NVΕ<'|H"`^Bۘ- vFZm aD9YuDN >zdȤ<:D#HDæ &6Z+qCAMP&k>ŧAC_ "@!1p#4IB8@L5Dhd^"J@K2ā 7>DUmoQEJ5E .D< >\;*l-hG02ďZԹF EPRe?8${%r 䭄xoT@4_8@02e; 'ZmU@C44I@;H{ =5dQYш.LHTp- DoHoqK j·@1fdAxh`1Ht  BU;C6GU=d\:BJ>HzN;THW@@} ;J<,"3 @4?<22735I 2K;p(:=zlTzCT \Օ@8<:&D0@>٣-Hn.!f|ЯzII JEt:A 'T D1}l::PT>lC9u;`d^EN?Mu%}ާ% pDƔ4ˋ8G%j_<ψm26D'n`v >@@|?N{e@DP_ MD4 v-@(Cw!/b <͂,]-@_: ~k:kw0J%Y& R'))u砒]g"[@TXW!{zZ΀:E p-bص;0bG=`D бu"d?w} @`DKt nxVFp:t$fպkW_;lYgѦUm[oƕ;n]wջo_'cHsypqǑ'W;}IXAGb Y׎fР_#uD Lz077`=Yjg鈃uN5 एZN ) 1P 9A Q@g\ {:p{FXE{>8G&X\w'tƁ 9Av*h%y(0@+I/C,`":b*`>rg@B*ց@Ɉ@#Թa祬qIWQgO:rK1TM9OA UQC`=<n2( 8IvR ${,Ԟ "U $Ui(5xksGF$@$A y!#B(W |=|.)A*jNXn!Xb 3@|\ #CuT9ɝ" I#CQå\aJ81D :l_ l!>V|῍x*,Vac{iP|!OTَ:(76"W&I:×~T̓_Mv\e|0# 8/ a)E@ܺg9ϙI@;v\/"P ԡ^Ken m-%4t6|:# 1>!.D#( :ئakYϚ-'TuG&6H%u tFD9sG+ +ӡ~XD8G`S?r" 4Kaoy(`Icn:1lx-x_* eE 捜6+l q跅Sntxw9{q.]"CO #Fnbl Y 24YfJp+w(_m *RIt;`ުudeS b@-<e} 'fڒ⒫A!fSR2v{^8!tPyu bvOv2EV;d)0@!Z5qt.ӘԬ5lQHEݑ JIGU3ۥx 1 pI5 7A h?䠈l ?$v-x?}صB& <f#H\ $$*AE*fd Ā(@*@*&JĚ!"$#.j:0Ghc#)#dK.NdM-A,M\gs (c am 0!a cq!@nbj!&# c%f$%$-Y#Bp#j#n<ai# bl| |A fd0 !aa$1eqQ*#$@5#‚M=6>%|,*"#j%$إ."ڡH ;TE<©RlLu",fBHraR+^-"A "G!)""J<&&P 2m6q3a& Ħ"2"D"%(J,0R'a):ԀR\BjsHB.RU";BA+= 1f $莦 F @,D eq̷Bj\:;c<wnnsL\BPߗ\Pho`c ΢YwcAڡ@XY+{O!Q&KRxe# ?BL$`²"3-yKgvmkdrQ؛bxMCjqTyס?bA"%c9Ёfln2!#a+\b*2 `ҶQ:fi¨.-yk!Im*?'?36H#D""9;;R ,@>sDtLu8Fmrc9" Cڀ7ȳxwA:Sj!ƅ%r{&:(P:Ts1PiڪF9!ĥ;nn$|PҺ#"K1ar~#d>2`!N5{Qj7y~~I U6s;4=+J B+`ezX+@qX '*{9"P_dz2 5Q>M=u%Vuu%v%!az? exw!AR魉unqw]Bv=Bꌬnsv#̾FvxڐWy7+a>mSO7 X5tJ7 i:8M6x$ X86fy$#*b}#6DS8!YnKSؖא>9…_tPp 8A9P@&fǂ"C)/؋UI:ǸXX| pN@?{[!tN ,\C Ǐ CIɓ(S\ɲ˗&[G}^$΁ օIѣH*]ʴӧPJJիXjʵׯ`ÊKu<ͧ!D١;:t@Bg#v&80ٴ&6ܺٳЎ4Ner|='=Npq.Kq6h;E[سkνËONsp> un]v͜YNB0ETP} QI걣:%N; PLwB a%:4< g.(!{ 4zF)TViXf\vJ: E#N@O<  49 @Pn sfJa{hck6T+L0Fk䟍N;8* *n㗰'7ca?뜓;qk&6΃(n}?: Pb6'Ov&9:6k NmW|jYnF<ڈ@;|:,$l(q2 d'*p^SB<@D JRˑ= lGwb^D>F :!]$;x;@=P: wQ j?-=#ތ7G.^$Z1BΊӆGP'ģO96  bH@*5 ́>E6PC!Bd"$SG9  ># ~Qh\ZyBH C)B80LJi qeC?d$ C,! `}1uFinU 5AG GhʼnCP#>9 CUQ@ț׷?IP浆H:x̣>6$xIBL"Ȯ 7k$'IJZ̤&Տm (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:ЌK<)ͭPӔpnz B0DAUI,F6W9๒.:#U,2p h#5s?ч.|pAI\}x.,PJ11F(>PWQu"%+W 8ͩNx}W C4{d:$C KQJwcU1\ʁ CҫL - ,p\&ck$9GQ}MCԗ%v V. //ZWP>3zҬT(.]r"I:F\rtҴ6X@J#Mr\ԕ+Т툂G<8 GuۭwӁLīA^C:a(EQtkCim(C[Ðqp-JBx02ţ6pLch@xu4 .݆ N΢EBw36do;.lb$ N| zG fbu( LfнH \:W3Pkfi$ْ]3ge\:y z4tx&HQ>,5!%2<h @;P+t!dA2NZ(JjXBtY =,iM suDܐ1FTbB2up@?3GF 8CXϮ3uOhRc.~ Eta"ËMFP9$BH1 Q%~E_ f= Y{lB :g̼!ĸUMBjH=0 $MsMᠼvX (`åq!MNR\;Gm#` )'?|RMåI8#3KhL~ND{_DCӠfݞWBzP˴wpdZ\aځ܄|.=Bj_{'x<-}\cz%/_+ӛ sr̆ajeݫArTr E0OܫiV/q|J3= 'y&,`!2"%YQ+f=0U8jbD45"\#xA0 bN {sCb{0m5\5spؕI4Kxn$P7dXݔ"pO4&pP i$GT`q'@Z))}6F&"r[OsŇ7 1['A4mB)rB' Wl:ie~VbE{RHI4ad++4ofLe:@pEr4.U`pFrg !08(\H[ biȖlM mC3px3A[&.2AT--Y3_`5Cz{ S8pQ"`G.4Y6iK*ӌ5Q}Pxyv)xu2{:1] )gP-  ex 1arS&`k,2*.15j3KYOY6Զ("g9s6?k nq"03a7y$7$ rQ3~Cs7y4V-UO0 q1˨ae::&RqwVc`гUhA@98`:<0%`B6`Pn-x3=?CN0^;Ւ5<#::;<#)ׂiVj \c>>Ƙ; ?wqtf3D?p 2M4Z6HgVv dG%`E8 VU6m4`ϠWT'Q 4h10-sf$ Pp 8%C(&2i2kx(NC$T DD2ZjXA@|QEhEg)'CpFtHc!p ql ?]q^8 Go#E/Ѷo[L8 B~6s0趷~Ҽŀ%jZ[ Fo3>{f1kjݥjtgw&h;=#G Pi+r^Ծe"AA,~`#T59>㎾Du5ÍhIvW8>˻-Ҵn*!A?)AsQ^Vp 3Aua)$@>]"}@>HeP`=AP#$M:a<آxDCKa mxCP;a}C e0/BCJ0IAbxE,fQ[bx#)u!ЋkdcF8Qsc^ F[#,#IG@R$d! yHD&Rdd#HHFRd%-yILfRd'=IPR$e)MyJTRde+]JXr@ e/}K`S< tY&:F6reQ ,8*PFGLpS$g91v`s+ΌЁ;Y^_xq:-@.16tF3xu( ehCP[=l5 _B̕.w4A4p\KmzSt&JFG!%& jUX"8YBIJΚivSjWUQCq;Xѹ*9"F@`l|@Z~LaYw!Gu\ v.XPFҁxdbQvb͑xV&We.X؋RuAj{QG$K_kD%q$SM/kw!TX`~-]~2uܡ5J gXpx{m+C`D8N $` @w Aj~blD904EZSV9K%Y @VpmR.Yc&|-qܳ8g"{ rHt8~ @^$~!`%,O+S̴G;ViPZԣ~ aQB`u!p@L<jP@@! bԫ JZ҃$@:\ND$&k Cv<ק\vԴ IM (l 9?t HZҀm U՚_ =p잣G؂^x=qP_ħkl0@t  bpx'^5Ea֐^Ç;]0 !|!$e[\tc?؅.' @|nmh:7erd(czi`|}ӧ~WYM#“r Hem;!o 1G|uT1\9FQ828Yt@ @ @X@3B#؄M0A B!:5*!\D^C9 x6.{D[aC sPHTD]E {60DMS3֐5 2\ h UºʀDpC^Fm:l F CH" /àpC )F{G (Xe t3ᗍ`#>17Q#u\rX Ԋ'}`$ )TH^2&?.-|Su*|LJ:Ȗ 8`7Yv9 8 qᖯ ACZ}諹 8H\ʭK[|(5xj z0+\J˼̎x(vAl8@wFy`e(~x؂{7됑";2{8u@ 5@yQ$u< }C< t؜ xԗ*,2+ :LO58I{p }0M laAc73Y˹*$ H0qAJD۫ hZc]ylY5^+T +sv4鱿Ӏq @Q #9`Y!l;~ `HM<pIVs0 }D' =!MPp*Q(P}rQ:S}`|<-MS $fr  Jܞ  9x΄[@E:BϪd#7 8SYջjOG?>D9"ky1FBnʋ`{rX,_ !ԁ *LR뛒eUu]ׅ:G!Q`CtpغBh89}YI #*:---{HX^|=}E~8l!FP@ vY](k }~H`x>@=-X5U| AE! pCx!@5؁JX2{Q YW {@5ZS`ؙ S9έ;<  ̺Yȍ\bJ4(WHM4!ly@W@cC6ЙMX dO\=9]-=s)lM# t\-_> 3_]_l__3__M___``.`>`N`^`n`~`9` ` ơi `&bh^a<a&ni*=b0S"a'~b8;&J{S(7#.c(.c3Dh3yL wMY>!8c\426 9 s<3dB~ }8Yɒ82u-1:II%JF GHdJnt-b8R=-y܄Nx_*ݝ|HεYN,6{pXp.dlt1h+x (A}Q (,UrPt]%/[qh(X2v`cXl؁fuZu0g!焐KuKLu ATD~`(J/C\mnip [P4NٽB:XNB' NCNp1[s@ PMO7(/pa`ޠ -hw+h ‚ 0"|>Lh"F*LDQǦbݹy8%;S eC<کCay|2tiF 4j*V{R&|E 4tشjײm+X S:o- @xa^6A]Kϱ{ t2r L̇ ax*8pk4ԪWn5زgӮm6ܺw7, XqGt*e#y UE b |կg_ve?wu1uD7!trr#@>seAi z3A( =c:5b x[1bVc{8 rp:t9c?TLK!s=G7ȼAA9pZ29:(#q9'uy'y'}gpCXBA-1jD}15A;p RX>0@WQj)T>\jO R~RP+E sN19 ytP!:udFJQPYj@nfEW!B u@;8$;3 $Bi[P>hS:<:}3>"j P?ٶ!<2%|2)2-5O`7LpAPfFw] ]@}p`cDAm9ݚ뿻b 0Ni'".r[DwSxuy{wF|  Zsۓ8*!Y50Q M@.m;zAs:87A 1ZDA"s0wb2; ?<ACEWBp:lo\ٷ}A;Bt%~P,OA_w{AtgcYÞU2'Y v[&bu8r @c^T &XH'XAr- @1@<58F2`8D!8 /aC!-|a RЂ+D`"%v8ƂQlhT#-2C 3`Q3q_Gh dA% &0Wq C/H$7Oh;!%ERtL&֔8e۹;WcKDGX @Lq&8)q+!"ֱ0Yyq>2$砝= qCFuسCg?u蓟\@csC96v+mD!)T}’ &dmICۉ@ ypub+sB O )xӃ Kp "chG;VpR%vX@TiAVkAꎫf NTw7]uxuB¤g*WE[׻]e%`Yu @;NVfׂ|: Iv";qA{HQ=Y\OCǐU1Q>4kiO8>A 6U= !޲J  $ <03~A旑A(G:i @<4 bᰇuix$6&b^= ;*ëH8kIR:YP^x\ I1 ?I2C <"=Z:7ÖT*QDC(㘇f{x@ 8A {8;qڡ3ymI1{ }hnE;kR4=f{juA tZD`hVCg $G{hE`榯n=;0rVcދ 5 $#\A.03k`_p^\Q˛!heˡ3\GGG>u PfjĩX"?~:p)]JΡ< T" x@ga:@-dV>A~ \A|!;+7=yy;IxvI ā E 2 y 5ˣhU<@wAx_P+:pfg"%!vV"!Ɣ( #r$r c C%fC?4)șOă!Dȭɑ@C4v"N@_E@H,ɯX۵x@;9XZ@I8@CydSܛENs4 OȄ!z$ >I ; B&a|a5:ġv:ėLA4FJJLFJy| U'4TA@Xa}D:=U DbdS] u%"C }h_? &2.#363>#j:ewT%"\ 1)/"C @;xcCYM!C>QK?A:"iP pģ GQ}`9P B噛:YæHA0T>bq;ty ^I4 Ff_BlI}uľT+`L$!dADdO$̃qhJؤM5@B ~@X@@lȺ>$=ؙ0]hAp9D& ᜔|0Ed)͊x1L;{!IVzSܜ|΍=dP=iMwTu h~))ĉ9|5څPB<@Cd ILAAU@EPi=$*C;pNjj?dƑ:ˬ+ĿE 1 AUQU܍r(&aV)E4@PF5{bHbޠx gB,BKHBGP@ Ajj+;AAh>ıD8" :(E ΖQZ+Ȩ2DPWPPdEC]r}@\Q beNY"poj.L:GXbCU\EDpoz^na>},/!C " UMoyYE*<@!\C:hhk@p:©Q48,ZS q" b-:TX]mŎL̠;sN1W_14JED@TGTDoV`88DLd@%X4M!qqqo7@1Z @<݄ ['6KD1@p]p$cPMD"xrcDAd9׮@cDkLkEڙ<٣kAv42(D<;0TWPKq``ss27[Մ3X58oDpF @xDy%Xۦ,Ccx:,B;dB!,•iDTĝك(=DdP)SȅA@xD$?f>TpeBA&:PAWX?p#5R'R/9 am-=7+XtWpC`\ئ""SZ5[(N"Z6oM\2tp gC>0L[7c?6dGvmdKxCo `Nte6ii6j eIBɆ)|vj[j6nn6oo6pp7qq7r'r/7s7s?7tGtO7uWu_7vgvo7ww7YKvAmyD/fz ̝{;\}wU y7t;Z77@{G}L™Gj7e[xo8wm>:XP6e@F2BLC@TeF8E D";klDG|IDIsc`LԄ#AFH:VlLCJ'(~l3Q6 DmRLXZ>lܟ<ǧp7 J_CEXB_@`t_Fb,;dHeXe\fpF@_:gzFq$G4CtXISXG{twU:vhAz4l|GC*.Dȍȁ 098\Ą-cL"C? X锹Lm;x@EgAPDo a&ΉDx F6f[CB:؋AJȍDSKT^H _ݏ<闾:Wi 曎%A|:xMK^MA\c=4#-u]x ڨM\Ww~h@1@ @;h ];Jw{ݼ9cgvRD"B<0hPC5ziRK6ujTSVzkV[vlXc~fς0Yp`vTGB T `jou8aiT1޲| 8o ׵SPú c8/҈[^ :t:.)Aݹc#U@8" (sR`<98ݏmuaBBF 3B8pP>ڞms!#X.[s)ZOXzG̝` :*ssj4s=tG?1{@0bO8or ;'NСzuM9 Ap  <B6}r(uDPؔR`ꇝu3RKءKax4d:IJT]V]}XeZm\uݕy\ Quز-`m;"[g "s< Vh!?2`f:FL0jDh)4!s6 o>@!ЮKh&]YAGxiCVJq\YW Lc])F'^bNx~J)BNou?w|Ruu1> |FF(gt7l ЀЊ' ɗZ At؄((V4H ut`I$$Y2F@uy* =<@'g{2"^,EQRPnAy]域iTyz G pF`tJ D`@8 hT (])mX*e:3^g\3R<4 [ Q!. \00{ dYB>2 : P~,!B8&б q<=Q  %魌!9@q<#y% j=!\-p0 DXF̨4"<N&Q)L  .Fu pECC3׵3԰LR)\L{#3@+Ŏ0%3(P"eNXiq @xj0QT>\|M9WQ^F9Q~ԣ8P3v!#@Q:7HmpEPB9L[A9p mh= 1(2q8բ~!# ɴ q$8h6Y@ كjqWuA :uOBK@<~c-N $M KWI\b)VY̪x4$']TE+b,J%BA:p&:@k^p; &P9ڡcz\T#Ue6 iM'HCH?DagjpB}hԶf&TࣸNqa^spHC 5"2"|p"p@>"?^,HtD⌷II{沤[ \!y@QҲs/v\%b(= #xejp;xʋ `.O$KF#Y(Vd~pT qy9@"v9q!INFb@$'17ԠS|"hPS)ɻYpE4b 4/!\V18OÒU w9=6?خ~iX{3R$Ўt8R@N@H{C ]'v\KÎD0@m8ϟ r:vwhǃ!Ai2qBv2|2<6 !Z_H׮@}@% Vo2:<1b $"z4ۃJqS U>t@GEc2:D Pu4 No!J Q\Sd(>`M *r ?T.,>dJTK*$m F,@Aά\!nF& 6@Į֡Fc0e'!)@ &b @$" ~ꮊ(1 gv0`(:Hp`.AnQrDvg'&%!cDl{78S8Ul 2`2)]L A58@ڡnQ:: A5C H.e+-**.*q.<.]"B^f;!=J>% zc> l 5P=Uaس]A9 A (qFB(6k*ځbt@knvC'RH$e#"B>ۓc0<bNAlE d^F8"@MT)'pA a|M r A8\6AɈ!8ڳ5$nfbLsMB"!FI ApAvnQ&T>۳Ehj D&zδ(0j6xS 9s A9p 5M&aD8Z[U[W P 4mH ֆ8,2KEm@.m( 6h*$g&(LSm6!At!]54(.rodJJ$fXbYiaP\`Z7H]?(+(- %8W @J$\%:`%@`3Vdf5 TU! $u!i,@=AX1($S@$*\5@e $!?#)С@`5aI u&Ac`!fdUXHM2!6`'6ΡL:K̓N 5fxkN -Vj%%vNv[|W|Ǘ|?2jʴ|-x."ڡ~w}XآxH􄀑″qe4&@LI?fgSuCXGK؄OGP@g3cI݄75d?U{؇X"[ZR+IPnbu @xX؋Xǘ،Xט؍X瘎؎X؏Yy/6*Y+*cK CG0/~8“"Rg*r YW³|jAj: qY,G[GSٗ(\5\8;@|W؁BhiFlo#F@+"` cx8n?ta =%*v!J KHa%b#Y囁 1) +0(Zce c!Bb$zyʙBca\s :%(V:%\}bGY91@%.(Rd"TH+v4 o0wMC@9qI;CρQ`.)` :EdaW {rDy)hWlc15 56~J(Oj2[S|7z(B g(bz(4 AvbR!eG@wۮc!>2d"!3\A<!ӊ-*ib &BaHMx"݃]| n +pY@*!! %J-xbmhXe+w,n|_Ymb4|+a;FYu5`fR|H!6M} ^>ŤCsσC$g{I=+-"\Di\'](@2j;(@JMC h :x!($JuZ6ڣEa?a'@:  @ hmG"ǽCw1+ׂ-4| .%v )3 ͏bV"(>,1(LQ!$q (2]%!ryv>*ϡD܆E8`b#bܽ=P@Q2%" Y"5P. %1ba61l^a]$E7MsMŊ^ՆVcΉMʉIl`D(1($D9c`c;N~_4B!A?Jp<#znA A` fϡ&l-y_蓢=\:hd B nu&BB[İkwÍ^gA@[ρux`݁ιƇЭ{d8O{ ;vC0l nCuF-ի=Z _;*_sNղXLBWn$[pKQo׎E`]ֽ)FMܡs|'U`۾;ݼ{ <ċ?<̛;=ԫ#ukc J>\?w8ӗ ❋W; +Zxѫg|8)fНd`]9I' N5U:vĎ>9NyJGG99<3:H0&gsbT#:"@:uH:ӎ%#BOA8>2m祷^{6dzCSy21M;dQ >Y<괃6cA SHP:Ɂ:  tBMtFtJ?7f_ PyQ` u{<+6:`uAXkmT]n#W 9 E{[ֶejdN uNp֏}TNN}] Hsm@琶 O>cNٖ5uFĩ;D EPD:"<Tۃ:QW`::>ԦK[G&eL8YCc8:G q&uA)AB{d&KZB1zs|kC9F2y oچ<免yALl$~m8):\q1*T[Gܖ5AhnS=Pmm_\(1f I+Qu2{lnb|H1fXPRHJr%/LjrǶvH#Pr@w! 7CDt%,eّy@;^A|8}HcI*#wsM8r:%udm <DDE>I?ؗc,ilA$圖ɂd?qJ{\auزxe,mn#+X@ >sp=ci HRj3A $eN@ uj.XNxa4GzPjd80HAe6"F}Q6P=j&/9ѻnD @Vϸh$lTX`*_βnåv vdj*n4DB8 rݑl8ySF(|ۨDn#]9fw :xnj[%:"P"q;>8 qme0T{( ~BСCõƈ!D 7 ?{tH33˶ vd Y~P}x%SGY!TLpĞ*<844y9]ZJ?dQ6yс^益ǫ?=G:$P>2 !N2c 옴"8lk{ aKG7C(u/>v$23^7;jW#B뤎.KX򁞱n'O#8PqK6Ȳ;sCׅpᏔQӉ,-,@*Gg6KT+tEaM@$Pc2%`vGN QuPr#hdPTJXIjHМRJ3zm` aBY;|1-P^ 5q;,%`Ԫ+}Sp ;4 v7"0-sm (h6-N"J*1\A|r  'p+01"`fCw~0Y9ѫڡ6q&③8b| R1,jLP M7+HziMjj`=7WY[˵5al0Vs0p!v ]RONů{(`"S2>W}cM +,:Nx5zn_Q 8Ja8%aU$`1ݵp%PE *P' $ Pİ'eAI"#VNpB>1XƻlN0Q k ]>'"%e#*Z_pJ E&5PH~PA:#RZ'`1Tj_PJRuE#  1" Zå" @P 6Ta [`p 0-"-p#5a! < ƙ۶c_qQw+=0~k%pbDE0Qf(#ؓ9A?]+ʣLʥlʧlMMĨf[<yu!03D)BD4BFN'V+M4D ,LGň0!҃AZqp0-:لLLPXX  д\#B=MBfMm?3%/%+-/ 1-3M5m79;=? A-CMEmGIKMO Q-SMUmV='D,hđґ!DlruQQr W-sMum}5MܐB4!!֜T%uȑ)v-ٓMٕm|lqǹ"U2wNZ녴1%P{  P@Ba=:WЎq ATN0*(2eO+\d pVn,|\Hk_@d*ӌĬdqEuQ!jg  M'@fOD^)Ydݱ " (>!/^+q1Łrߘ谲rէz 퀹Aʡ÷"`\]I @ 0Ң2Ka18I68 1P%dqW\ՆXp"*R 0V5&>T,>*׃PJ*]Ṯ4L6epZiS1zB`K T&м81 A tQ6 pl^q 5V\M7I=qI@@^Xeylppݔt"C`p1}w OзQ# }vF(8ÞY60 ;"06>@KTr~Uپm:U@*'@mQdL=-ն,n WqQڋn-ѽűǐGV7rs/qV,4qJI@p/qw1G2)@$V `CppvRo򌌮%v1Aє[X_Abwe'P *$M@q>UPq{asE=<\CAF`ww1 ,G0t88 ǺuAIףΝЅIx 'kG: 9 sװCq+]& td'O ##6l vÏe,e9KZҖe.uK^x2! DAʮDpƆ}< J`QI,8u눦C  Q;A@Usv<] j9*vj%Oŋ BӡD/0N?~p=-^AQWc:\~x()@Xf\fU@L4L a9z af  ;֩Ďs2 qd3(fq =D0؃ @OJuG%l $tX:',Љl6'='"o'U@{&$e&]Cc'.y V D%  K@/\6׹υnt;]rQy[u28@]-y ^:in^`/,P9ڡj6GxR0aO5)Ijb'ϴ>j%LN( np^ i=쐀tO,b*h@:\N9v3z釆 $Z& 0"X =P ԠG y,.il, +!1W$HyƒvQ)iF¹0AHa'tT"2d AU"`a`@JD8K~ ;nڣ"8;lbFvlf:-򀈸8(]Y4pNP<&;js'$8ļ6`@!\b<[%QFw?5PA#,5=α-$]@<1qhAZI\j{P)m ؃ .NH=ɇ:E|]aH~#>Aph{? K@A`tx2@B}'=ԁs9 N/+'T`Q;Տ6}e?{%ǠAWQWKw6DSRY{31KS[<76!JOXٓF^u ?~&ÒBP| ؽ배gk2 W9v~([#  'C,{PRI8-v8'c @j8 lHs(~89'ɨ SO҇lC8 Y%2Ar ޣ/=`tH1Kۓ9:;< s&pi <tX[ AbQbق#y "q! Bs`C P?juxX( ($|E `H0@$bXc@똀8@/ 𱰨Y!鰡E`" ѡb^sF ȇ({H&jЇs`D{vvy3 XfɽuE@sȩ s0({% X3{V2@S(`{lTTE3 ^|![DPXK={vAlFbø˹˻yP>|BrGS0k6h}hDd3@9E )w H'LD|ʎH2`v(y|[ U̜3-8u 1 P2֔88A4y$R UUpC/c5g@iL di ωCnYQ2@Ny{LRUXt|@, CU;-:R #tx0 G+mQ}"$ f9*Ϯh|p"В BwДB1 @ ЖD닊Լ%kMaj dA n;@;K䤿|db(w| qGtGHITc`v@AI,# 1tOe HЮO;F X|p*h<  Ёs. ܉YBe`, Oѕ7[OQOyv x9"X0EAҬbm"R`0ȩt4(gJҘ|P("`%s< Н WU@At9Xvzݪ BppЇ !`ii4I]4# 0 ŹW( Hh|@Iw9 Ӱ| { CteXPE0$U?BXmaO) Ek S(h3`ԯ(OU uiLO%5G֬ =q'm鹿!v ɝvhJ܍m%˫Ёk0^ I^!ýI PP9^MHgË=m%5E͛T_]B~ml%@i[ PM6m&6``_ITĒ4 ߸˓9.Qf&6FVfv !&"6#F$4` v I`':ibo%*6_-֐>9Z ܐ1n|)3V6v7֛r)ajhF钎)` (f@6CFk -|B[ޱ2vP(yLfMOe4Ё HQ8 6&N8QVPsb`h99eb ncN $hvgeN ednс"[ ДsfIhaf{eggR^Idxeɸz S~M{qgw`d(  h< 8 h}?h&`_dL䘖4񳋘1\i |hN.|a[C `j)6TMA)a5W<nv( IӇwؘ%c}ӛ#]ĭFL ). N>MYsFl_asjv^ifF?0m(~/S֍ t+uH`H.H mjw@Η+_t u^͝pv4)iXE DH2މ o֙f/0X'h@P 4*O0 Ī]Rb4D I'~ a= dE^ o5 1l)W%&q'%o{!')!5F,03y,'pCMs*pP>$p0пy0Po2@̇4mh)~ vJ􆘇nsf 8=PNNVw`0A8Thus#'ۖ /`vxYM h"/XX bыyfG|gW:Avn-\ J`$7搢~y@F8tonj\RzuSGu/Gsf~oo3Ll&XWuZ7 B -e*xΩP7`: $_Pv!:С?)ěBcA 눐SzjST1WdǟCPC>4JpN;,T:C@e$:39@_A SHf2H@!}7hSA>:5!P"p#+j8J2ГQ3eW5>ANUsLeh:٣Y0;(X&v")"w4ͧaACyfyhcl2A&Yc-iB׹骲Jm:l~d=PAd{GCcjS?(`y  A\+ۯ\#0 D0}k : LÀx""T\gu*,2% ;#a4;(Y jO&FS.I#WBT2XޮU1+&Pэ3:e0hl9I`Q Kۄ3pdh wA.C:|46P<'`N;u/T!` 18upwW,1GLo uBA^;Ĥ:oYgW :+:|3T(GWghE2t25=(GfX(b<9K2ueZqAId'KRصplA6`@ё <52CVB#=`< uNab#h31j\#F\ ,țB(22q p(;8 <.H 2!E>;!wШ,P1Ѥ: )"n GQ="2@ZAPt\xL,0Ű)HqK{Bc1fazF){pT;Xh ZAp_jBA|'y{,Є|*1a:) M(I sBw1TJ"gPNP0R<<փ> v@7S)pғ 7F&9 dLx0Ϭ#LBF1ґZ$S yD 3b+Y 2"X&Ţ @c 3ޜɉ։CyL1 N>P ]o-iKkӢ6]-kՈ4 8@ʒ@20R`>p[ޞ TU9ۗF`<J@& #r1Y\*#L#ڻ }dA䣏(+Y[Y((u b!="R,:"q7Oj:P;vHJ1,D 6͜! 13EèAqQ< 0Z뼂+ĕ͜Fj_ 3{̴8cELL>b2nT+v uBP[q&;{1yEo5\fѺզuz @TD28k>ME{z;T-Tt@qkkm[:׺5{+:ǃ?򀡝w&;| '5aQ^kb'EX򡙘Ǝu2u#&ԑI00vG;|lpᏃ<_A~v(,G:E)Հ9ʪa,sY&M1@m89$@a3 ;@xc@.E ֫ b#߾mW\bLPsph`V o{^/-$0ˬ$BHD/`2Y8bΆU_O:>"\q<@ m߳l RFAK?0 xUpG=-k&#cu 1v_>={ ʶL> 1&B* ؃Iڨ!q>_ ~8RJG_#[`5Zsټ 2Gx‹X `C9B @d=LPAYK(EAA`]Ʉy%hT+TX!xPݗ"EDD];XA  &_X*,e@jL9=:U@Ad!Yp\A:_?T!LSXB<:!4Q!7P 1Bp_=Mb)~LTAT zWL,DDJ,b--b.pAI@W~c0S(DcAL#/\]Ă]K6L̈́Su^ YL4 A|>&̔R݁+X@@;S=B 8DCDeLP HoXEAH9Y ݕEFZAQ@Th MS5hbcD~čh@F> |A#~,Q XA#ER) ԗ>95 #1@%@~GDDyaALewHHZMr)D0#abWl M*2nщAeRw*Gp@;8W)*0Bc2n&3:## :tm6Y7ÉX`lXCxPu;umOLzD>@[ygzzg{--@W!QwxҠd+C;|ED+ɇ|gzCA {@1_C H m\;v-B[L0(T;C G>⻌Cd ~eeT@5]I@JpSHJ@r<üG9Aep-B)8BJ@,`D0hZdS;@x TG@)@:B>*;H:PXT:T0L>@F@΍; :jX,+戏e|iTk+hQ1CL'}jV<̉;+LXܜ; V XiLo (({[;\(H{B`@>|#Pq|L *ĺV(R"@P{m mѢD T!B$ƄC8@~]@+>8/HY~@@9p@Ѩ!^`ߕШ dIRYC$X|{?}T|lL@ XXd<m-DTlE@L>MU1(2pr xFWeT8<0ظ ӆ?XSL(:tBb!tB`+jHydh*ѐG~ DqVPbrʇˌmL-X@mB0)SfbjZSeH*DxqǑ'WysϡG>zu! ,fBBD^^\jjl..,nnl&&$VVT 224JJLZZ\::<**,zz|bbd>><""$ffdRRT664NNL~~| $00IJp@t訠ppfpnfHp|| ~xx$¸tnt0@XPX4<< (6L. 080Ll(:0|zp`vrxPXXtv`PP`|p|`Z||blhdRlbxtԺrvx`ZnVFZPNZtNt\0P@DFP<08LDPxвĪ$(8TbP00@   İxH:Hltttf褮^d` :>@b\`̜ȢBH@prLF@Į0((ƸАx.(8|v|`bdp `~Դ 86(Nfnph\`X@Xx0.l0.zfhFJ@x\@<<4nf`ʔ 46@<6УKNHJDv3|{Wi˟=:|ϑ./z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?IF)TV Y3:3(S!p Ih&QlIGqvdP;l(`堄jj_wP@E# FA22dC,iIh:*B6Īz&sFA:fp+[:N>@ Ԟ:.&H@FAHn[Sdq%$-ښACQ:`,p;DϑhBx= POK~O]@:pPHZaypϲ,@ԃ@ԃ4:H:Î,20PX(6+ġ;<AHbG C@)=sںM< @BCt>F#]MhE@Iу2.}`Gψ<D:׃B/j b !O3v=9';'B3\"7XOl{ܸ::wN  X>? C=ֱ |%"~L#!@@$ ϐa |C77 +1AzP  {$uhG2ӱD (@C0USȗz`G3B BPa=p#=q t $ "J#>H1IHA?B SrI!݃>*`Y%@zs!|p'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1tx:&]8jV$`A$ H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;g YU1V:u LmS&FD`MG=2Mj3s+nd$tH IE nr#!@?~jb)wcG*߭ؑk\nV2Q`-H[yPDLZ* uYr0s#Vk>umJ#"ykMϊe2=cA?CXlA'8"xP3 ]gLoX@N|H,0>I ':܂0`;dE8"0rYtYuh`1Oey\+w\Y P,>*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@l3lLbiOl2ER4q0:ApBu+S;= ҏʹR^C:f!9# @fsiD _;WpBz4j{dQpt d?KD9PT."pd<6Hb_}u\>e="&ثg :`qh@8;Ԟc옍8&zkEuXP@k) H<ĨBC)D.w=&-(7P O|  2t ! )HЏ{jC40!Hy [xpie+ x!܇  ~@TT'EV=(= 0 "P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R `rP+v02> h_P=@Ѐh b}~hQ \G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ( !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U8깞[Ixq$ׂYYsqLLW` ym@pNI`j왡HIu$y'P27v)Wmrwe\2*_* _ș:DZIG̢sR>.gm!-*.` r0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 -40wQ0O1 dZJF"3@h0/D?#u\"gJeP#0:蚮:,zT Yq$"AV*(PO@d&bfڰzJj$ 5jR8 !~E¤ (67+R @a-{ 2;4fc.gZЅ( "%"]b*U$]ǭQp@H5Zqd =K͚#FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$:@Sd&Z:A173p#7tc79:,<0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mLccP 5aP@Sq'K>;P$AӯEBd9wUrcFpgH6${`.G"!7W9„,G N w]†I[GoaO$p!:ԡ;woc>LϢ|`x/ :՛YB;z{F"r {gW ?%T zY"| Y- UCڵ*%"T{ vy :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ēCNA2 @Xս ½Ufܓ=d_T=1ޑ*S9=4OTH<~ *`RC(⍄Zڨ,{OcFx׆zk/P2{'w'YY1.*AJ*>ˇeK0sL24L4TsM6tM8Cgtaf x`&PI֩ p(Z`H*F{8H{`z *w[,Y4$g - ` v"8p"ԛi&N= bz/ dq@Dl/ @2Oz%0 !Jŀ0+¬U]fU2d{|7|y @4ȏodQ ~ ҩ"|Cs$%47!j Q 5nc2Bu@ uHC $@V$Izvx8=GyBH?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd‰)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nq6b1a@ZH ԤP !uzaء_LoB߭Ckʁ/BFXu#bJ ,/L f#\*p;vAlu,dqSr(G&X=|`1yͷswP-YH/_xcN!3uIUn?:h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5HhA>o@p@B , ?=IDci ?ʇR|X xzNQ@v 0Ä(:\" 9gxH3%;FIDS 3 û ɵ0 ~{pDي{Вwh'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s);' u/( zHq$ xGQYZ,[̇\\ g ӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ1" @BS5`O 1AcY21 5k:0J$.+ax+o`˫x@ Db, ܡoMPL `LQi{ |KXLt!P FL!Rx0t e L܉Ph@< *;o0q 1ą6ͅ ʇi K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 6Ә8#ly*ځ-*]2L%k B8{R"#!'hStX XY1-3#e$%RHu«с1@$ SXxYH-*e4D< 1]L }Ӓtզ(֭V NtVi$N#䜈(݊?HzԁI#tx( [5  h2Iѷ4xxy{|h$ 9<= bP*{u+C5LA [e5%"0h@DQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx8a]=cb'ч~(05sneWY=.(D!ntPO Й ćI @#IXj< E fdλw|Y6\{€F!wJYHI{h ʠ!eR!&)hɁ4SpȄB9mRF"!""# z14S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$? M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{YLV< rK?uTOuU_uVouWuXuYuZu[u\u 脞]2 Obc$H6av]v᲋⬉L^#_n3 ?W 1vw tjwvIݘ3w).x? }(h1 kc th呂0Ӱ¿,H  =H1`efՅPHg3]y?Q ]7 sN0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4=o$@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|PXC "@boh8!~J}䨀1Sq{{V^ifN|Ҙ$W﷍{'|(S ~^v  |5I+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4 &AeCA5Б=vC{ bsg> ~"%i`PĻ"R>!ٸ[t37b@>FSh|KAJEbrO;޼O5\+bXi-B]'ʠ6YCAPr"%HT; г=8OR 5I!gAcAe @Aq=UP+v P<<.тI2PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3B( A=,CC 7 N#A<|$$ӉT`Rx=BФN=E68D#@Fl![@:+[F=b?KCE{O?@pD0T{n.NF;3ê( >( d`fwN+A+-b~sAs= D~4޳}O'AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=cNdQO9[a> m dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX pP2~>ʀHCA@G!wH %H#1`"j`,: !72|">~zpQ#gd5$.@2( n+aY"4 .|~;I @?$xi ^zlP 3x ^A& |dr$-2z ;fG<:h@y|qc(Hzh (=5@t HBfZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠NTֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,asf8z f >e>LH/` ^M ^Aɥr9xh Cxr$LTzifRV^ pT)pE@A\" c H,a%FDQ}L$G1 }" +LdT)P1݋kv d0Da O9-s;wpd7 y|n$` |qH,A 9Oo׃>r|IoXc M[Aa_ցk{>BM\Mq0HQ{ƛ*ppq7-. `/k6HPM}T}vDB3_-HK#ϹYl Jpp$?65iH6F\{ 6_y:a<[9H=|2[m; !l#ʃi:Y?xd ߐA"G`03s7NB ![E#GFUG!LS8h)H r{ԦdCz%[ BYЃ>vu݇G"V&2|CK&@|<$GP7?^A !Ra`\BD-5FCUD39A, ;ަO' Oў/ I?Ȃ{ ;AY_A _!`%Y(MJCSL;5C8`V> EZy, r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b>-+nBXJahA4m @4B_v8 zLAA;XXPġ+b ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4Њ7@g%H >1A$MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"t xIeZR\CF47̋IeB@B8SEXiBP!\HdI>J:\7 Gh$S2dHŸAHB afY-DzGD@ACDɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D"|CT&eAH'g#yzZ,D?XrC$()FH: f(;  W4HgACGK*߅DٽmIiA|niE<& eF,GOAK;<-Yi&_BܟA0@E(ߎ' aY> p #6Dt]ϢFA7NA0\*)e&ȂXi~Z)M`E0@})5g݃=< 2m#FhE4a~ V'(>4C"`T= #n&>?ܫ:,(_Ljr?:ë^Z7i>؃>8@C"@<ĞP(~GRjޫ:_ԃV ?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i@Ì .&:]`C^!5 R4CD?=@2 r.G@*_[泪زJ^#GjA,YnBH.vwI$$eFÍ$_: = (/bhrE .xpZҮ1DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-D0"x0fnpEpK3\ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B%A! 1?N⦲*2+kP܃^C]aC/̀ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtE99;DCAW"C=Xѣ24 RL3L=DE?\3F78@-x>2ކ#XÌ~Z@#C.X%AIrdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,euBXZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`v 0l@ܱpz 91Dg {B 7W?#`[|-ĦyBtC @:lDB%L#8;;t,,C̕@Kxo=Z?p;7JDG183#F3zwB@ 0kD7`hN@Ľ{B3xa| JKH; vD{һ&Č{,@{2"/H_:%İ>H |E@X`>u+Ƀ/I3N0B[P½ 3 nCuS6!tޫ.:ӊzLz0,⃃cfμǎ_Z^' ZrZ'Ua`ûGu 0҄(U,#߁T9}KP%odG=x Cwd"YG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwÌn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /HTu8> yg YJ`XLJd]6XgehjlݖnpY 8!S(P. L5Sb Qtǂ`F0Iu{5~%-MU-[dɞ65uG`#1hHeQf2euޙ}蠅#5w-(c/#%`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.EAIӀaw4jZԗOST hvԣIRBAi XH-SPq2ȁQG'Qkep`?LpK D#HO- <7#!IT .}IB;@땊8Ō !1PQSe={0ZI t 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|G&FEtHXaG:^(=f˛3%rғt*!yJ Uh>[ 蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${A'SZt()NltC"?~35]@рL]VUnI&)wL=ěfbv+"&ӎ8"UG`٪*c $G@ @K{ *H)6d zX+ 0O40RP*_JVnj-g[jo^1ZɂT*# ;BɟV+U" $I>pwEqAD,ޙA Hw(ڕnk|=ie/n t5:j!Kg {t * n#\ miq9rfRW-u=˜"@l +I_@G^_XAxD!_\faу# eP=ƫ(ࣅ !auzVBI;4|g=6B$%PC'! vLF|X0cЋAŽF|`$ЏFj`,XLYlvA,g9wꁏjH­s}(^ Nz6R(|` "8Ҿ``FXcv>ZBHĽװ؇LG]|`# 7B5HLt׏zTc-=1m:!"1`%}>C 7 C $E}C ]$CR0^w-I$SH`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2$A'HKd"[b…h:k O$NFD pG:m$(#6 H(K  tijdZƏL&I! !L P 0fk(- D"RA:8n86nC @ ‚ ƻB k !*A6`A4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ ƠLD qqȐBN-gj$ X|_b[F Q[k @a-!ptΨUI)¬\pR.@_ Q!6DcX !"ᖬ0ZRI sR'w'Bz!n%l# * @-N$~%bMba c&b%!J*cN d ϖ!;!)JP瘔b  "((H<J XL. @1V-:daS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* P`BxʬZh%2j!##LH@%&I1K4Ũ>aA1< 8 s-c;#AҒF,00@OH>L$0p! emKkvI:A ԁI! Z  ҬmIb !⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʤ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨnHQuU\Z(V:bB\FﵤoJ+@ V&II3),55Rl:aff]'iAWPG6hKhA.! `e-kfF6m+!iP^#@UH`ho)ǬUr'r5(B@)AEod!("r5dL㇔iH7I敂f"C1Mb@6#DaA!N!ᑰ~7!(0u.!R.w+2ws;sU "tꐎ @ 0R>B|L!Pp`B5lIR,5xcI/R7Y!k@:Do7W5A6BN,e|inv>a¸r R"wiGX`aaIءu2E2*qG06-N/V$AVs2 N <A@$ D{S[ 6L&Z0A$XvTh a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@ea *m5A ‎t)$j ĕq)Qkp*":!$ x9nVZMDJ! DZL6 g eaˀ$` g]:2  Ha̗Zjʬ"R=da** cxWjH//0#֠!D@^)"@1RC{l#K@ :> cC3,6DB XC.P*LBY hL$?-׿ "cKC=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!"`!@*|⧇VY[ٟB:|aDY%AhMdAJ`F!?xޡd0RGLUQ \N%맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7<@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->!` \R 1X끵Ʋ0K+@"Z;= $Ku!?@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!"e27D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevة(iH&7(uGͺu2>G` |bʽ{ؽK<| N= { :j:|c{8”9I|3'w4Bw_w4hAY2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^@w$!]&dÐ޻9s|Uݽ9|CkD! Ll&+|޽*AF#\×vܕ6U3>3C>tR8=L8gv'v7cg|F=C>pp{rM0@ܗ~7Dhޒ)Ƞӄ%@c~S|(dՉ\Jhh.h> iNJi}a Qa0@= d$=$uO \7p1P;' _ #@GXΞ}\>X:sC$jk_ȲFtՓV;j U]0ɏ/ k>[=׻줻n=v|a@ߨD'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճM4(hqF= 73_`Ƒqe:SFVSXYWAFqsA?a:@X_c}߶c+>!?o>d,{g6Z)6ٰ[?QOo%t= `8U.8txG/E. _Տuw;g\I VOߏ)|ƒ(hF"R!,@m=ԀLl|Q0># jDTq$+K7 &h, r,XԵ5#Q(VH-7=D aGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]a$L@AҬG'ڂ iYRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY:86wD1t3^)yK̠*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!=iu="I1phMLo)ɳ<΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36tI`Y^SBETt@RFqčT@ T 9)BȔdHMDBT7&*A#F!P3NXaZj;.H".P-/c54'eg*A !CdRF $DCyrFoپ]xGc GaZo~FeA1BdG0K_Z Sd-i*~Bf$L Bz 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`1* Dp@K+а!: Q`&}ixo I4=5 X!]'>"1,$4[@ *՘4E9$):~^S"iэkG%Zw,zh S;~%[(n>5ηR*X"EtȂ|I!޲u T-{7;9KiyKv+N@f%S^G`bk/Ǽ@`t\@9" (F! P`_ٵ2, Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[M&=e,(}6➔$*A~0Hw`( 5I0Cw.Hmz 1;+d|Чu8w  q| y6݄3rɁxǁX'6Ӹp2I($t*I+Lj8,kW(&t<0,3Ф9DqU Xet8̴M ;+=@{RsBGz6w"jh8JA[qU{`hˁYa{0~Beh%IFg%Ԭ}!Lz.u9@@oӊSY Dh8+ ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG 1$;nww.:43Zj;$ PQĬzKذo! 4$@ 1!LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@>Po0L(%@Kg}U'y (T6 4aG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19u( ?6%5H +@4&%A Jҕx/Yh>"$y3PoH7&ᨁC!U x  wȸ@ &*5؜,9 Dp,Q)3Rj#Y-ɥ.aYd৐NnB':P;pI"Z M:OR Mk4UU@ XqD"17ATI 9Dmb&Lg7 TEFr岘41] A FId~H$|G?+zH{@JGFmUe:aT2Pn |`=պI76ЗO(r7'q)|Շb[_p r􁏒` `H.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ((5>jH -r/yK:c,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4"Y.'qQI`s#?xQߙvG|I5|"Jx- .o e+}E?z}@#ֻJ1c0}F APC@'1.;`5d>luVDj\+оȝ}ُ:hèo+85Pnޓw,)=x `3DT+۩ Cz)_ wH yjAm NmAP$ho h(vHl(H+vЖk~V٤-~wȽ Xz4ʐAxA 2TAtAy%dB BbH2[789\ߒ;%#H@txѠ*X+`b|p~ c| 룈HȽnabH ' +P|!9ЈxF1z0ẎZ|[T]2:jkFw[ P` )|>I dIȣ-IHd XJٰ 4 6y hGx>wx{ Gtr* Hp@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jj t˷˸G!w聍 &N ~~ )  Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w@eP+lq vYhQ?<1tH$ί_tN ?ė|H(%;}x HY> x (\ РQ j#}D Ia9$@xH(f 9L o4"5#ERlNP?܀ȞɀxN YR$Cu`!v'(J$|$DH5Egxp ';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.?-Y#;LJaf\zvKzT:FL ǼUhM(fh;@ ևv^N{0!9e~Ȁz ,՚IiPike  &7{x@|}XE(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYȄD() x،`l~Ⱦ8jZx5`O0$vevp y\T+ Hb鐊k_Y), V?( <1 1m}h.<9KkǐHzo8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q} HTWu/:$=h p t_Vi,ʣFw$f @y>IgW|Xy7C \y˾D`ޅ1'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF PӯdN+9Q9˸O[hN/wXÀp'y/_fġڳt 聼!)9FHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - &ds(ѢF"Mt)ӦNB*u*ժVbͪu+׮ӆw]𺐁 INV꽙yo]nKwݼj޻ݟ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwmSzC'1TWc5ˤWI-Pwų~A_j~-NdUe CFA8uVMP9s,]P$c r#X'+آqφ)N?d0A܎ޏ`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=D`O$V};;v ]@:HCb7Bq^ݓIBK&%#mj*S7PX'D~T0@#p-jc$c7Qkcf3pC<A"XA'tRFF>:6y3jެ#At ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p {#N&; 0F׵|;ꑵJqz=A ܃CS_ק:P>#;ϥts*>3;cS=C0 y62|j#7d!z/iH#P~T`>|Tľɥ\;2`xlAz%K6#j&af1w<)>шo ,x PD$)A\Eݣֱ;$Џ|$G> !fc,#8@*n Q fщwڡA+nēLdIG{(|KYL_ q %\&< eJ ?AL`H q3h,a4(G;яJ*Fb< 40AA豎 |a!H&sv ; @=E HgVH Q@H蔭XUy@i Y8= %z D $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>:wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS21@@_p 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53 _T^1z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}8`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u$^ڬ TEhDf|ƒD͞B:Xߵ^>H%>@/0|\A,Y?,7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@17 zĉu$A=QAl<\>d!:@SU ]^ɥDHE; A%a|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp? @ p^s!\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA =$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:BdB5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ$0Lndlc (u,x::IP3LlFZDօ<: #=e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH 0:*ę/ }_z2l|@thI*,q"DvW՛.") $cB c"RDD0*MԃQ0bɆTUi\J=u\IJ~W$$QD܃yV2+CDjშRk!%æ4$ C?)tNT>ŪCD@DXRaY}; B?jĽTR'H$yROkC=liBvƙ`J=Sce^A ``)֖  C#zn ibHBܔD@ܭX;<, @0Hح4tI:HC-톕,ےVfd']=|@,;؂A$H]4: gF-,ڎb@*ǩt-m-H@:|B n`.;nҮ`u&f$1,>^J:l@Z"4uH:T=A)dfK$@ @'4lO)T0'II):% p 0 @7z>EAD@I>î @>R2D,@?/EHK_dHI0^>m0` ?h@*@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`G#æA(CwrU7L:ۣl@++F5'F4s)%lC" HT1*3pBp;pJуqb&@ 3E@ 4=S0?UHAZz>RüW,AԈ ~Kn|R1 BPu8̳lAD) ܃Ã@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ3=X@v}C$C$YTI&]U:lBt@}>ThxOA $!^C=TA@ݏDXcJ:ßO?1$A@btA)-BmDLKU#=0>)rUA܀׾>}-,@##t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@A& "*3޺ _"{10Իo_)&.BAL Q lB$"w&BJwCbF['d u:+>>xqǑ'WysϡCp+\iԁp{@:?/ O`'Y*8Q%zo0zO>|i}WYnaYf"+!FI xJTQH `":z櫱{$yj1Ja xBI'D1SJG @ށ@l'N\o!_MªgH1J n1!%@oVPiơ*q7+i5F ´dgGч0 !y'/Թm=4$G^! 6;bgG,_}Z~P" 0dRr @8@=PSR=jNPJh`s?. xG=*@*np aHHcv#$Hzyb۲&IL1S 1 J=/!:!! xB9Αu$"`=E7`>38`]GDDH)I."oA dD$呕@*H}* H,TtHc GB c c  hBB7CƷ ~r*ZA@+OyΓ=O|% Tj4AP. upĀgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:o5O[9zYgVCx_X\Q /$Ѓ8N'Gw&ba5exjtM#C4M=."7@>d%D, HHj\Gؑ_B0E tzpzYQBҵL`؀8H6&GVWW`:T:  Õ`zq{0c}>!TtiZzUGbav5"` \h c!$0=aYyG2Q4CpRd!9P'CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0whI: etdɃ (Ay竨SM@>v;ʆH"Qah!"Q0R = 7} u-SV3{@ @O} 6apBQM` 2@vMVtr"iF2 TBJ kݓ@B([FA($,@+ U|# @C,x$x,cLJjа `C?bP tp!H߷guoDY.3zlK@8|`CN46P|L`\ 1UStUJC ^Βݐ@3. =ЩN2 E`@%RtϞW):6X8Cdٖ^#ڧ}t[&T>@Hs;gR $<EC Pc=K:@g/N(I& !2D!8d$J(Y,!>"N** VAp즱bMNdD*gM6Kb!Y:AzB#Aij!g0#>@xɰ $`hPXa!& /߀0 H!Xa{p : !]!P!ڧ_#*7R I" !|b 6(dA++T( !@&L &{A @P~ޤ1"bk gFL *@j6 G#!}Rh)pamN/¹u! Ԡ]*BdY< B#!`GaZ1#5r#[`3uB('bbC'5L@!A(t0r"&@f3'xƯMejGH D`Rd8 -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8HH YHށr-F%( %8> R!H@6@+\s88$`KH2T0@$ n6` # ಩>B$&Ca&v|2!'B4"2 }'U46/QX8 $($7)^H|ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&Za7/軄& ^B"X.Bq:PEuTSab#Ԁ3[\#$0U8"̱#<SB{HuXUVMZRgRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0$@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-A(Nd>8Pe9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!zh0!2 PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!rI6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p`֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫ@<འqv-^t` -z7 *G :ɪA:u `+{IS) ةAQO+װc˞M۸sͻ.{ Bn|u~tu [z%W_̝NBtFvфxsT}A -^AB|0? ($h(,&N,vNsѳv $A8@ CC/Td5ިA|c .4>ܗOi7Xgܓ2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*AP5F􃏚>wYʑW;Џ=N=x+ ×k7\ 鿗IXjA@B ",Wlg!FI>@ܨ:[:`\8(3{6_QO_B`@P8{#>R|~o?_ue;DW0HM&; ؜-_Sތ7G.Wn?:!g砇.褗n{;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGHd0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>)GIwH baŽza%D7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+f%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ E@{l pd>Cc%ڥ䅃Lg@M% b(9ẋ>ς @h 4ұFt\aG ƒ t`GJTuB@5Ct%@R:QĢpV! 0㮂 5gv)^ zHuwS0KCôbƮ'ODH ؈ox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ %PC*k$" :djm>2(|qQ"vs@ Nܣ Ňd9DAJYN0|脨F 8 @YD #pLsUO3a!%K oPK$L$Y\q0 k4/{|X*PlB: duh='P.w8rAR5 Ǜ b-*-c,ad[]20 L3G$''Q24G|HԹq  fABŰg TT oP1) :tblh T/dwbńϯQ j4\XG< AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D} ̍ ZekN=pY ;f $ZȍzOpa-%f>ACY ,\Y(Yz , A+:M zd~,cJ7y*M}7oHΑ9!cA`D1қg>Y^x+EKUR(ȣ;qAH t&U=S{aE/|6:r e!Z:BF1 `<zfʋ4)P(?'2< zb}  hjZ[ai v aDz7X&Ydˠ A%pGvq % C w?"# $P g\E?ݔ@AV212W*e! bK"2"X">(rS}g2"SR`xzXOJ)tb1G r i@tb2Ac ON(LRp@ Nh ` AX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L 4b}7сDS@qj+R+AvDE0vj``-b- H\!Et*>%`E*%υ< `& `T"l.7" BBuPTwLe8**C@+e%p 9}2%p] y0/r/b,p`dÃ06c5h0C 1؎>|cm $*%`'2<^E@H22v5D@8o:v# t#+.E@ 9F`29PDΡ=48& 3!Ls2F -1s50#MWXEYܐV 6m6AeDivӇ_X#GP8  9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;I@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O0=؊T PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گu0 fiLSGj֌A@Up%V VjKsjh yv( 0eTe]qvMGd0qE6"ȫN*{%wr0SRvE;T+FSЀ{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾BcO /~$ xI["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2 . +\}Ԡ0yp,iПfP Q 0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"pq=P5ɑʢ<QAhjcʂ@\`lhQ,˺\06`VE(wUtE 1)7u# 1Dea1K% c0%.J 7 @6\λ<4 D(۱bzpHZ+}乖ȒQ&;B"0:,K9^PK [2 .`Eʊ Esѫ;ukBP 0q%$T @v̲p^ alNͤ T(8!LB9PWDh(P qzt`^=IBbs@U' ԧR8ZJ"u $=:G9S=unUPEE4P`IuQ=PX O;0!mApc`'#CrpǍ)'p?a@4h'0fޒ}Q 6_ו]|1항P\:&$f򭩜#{pa \eP0]YVZUĢr.F I[թqa@X#i(3=cpvv Υ. *I.KkTIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2" ngĝ$j斒V (!3.yՒpJEWi&@dkto78pפnբ d`Y[~Vt%m " p-*°s ʧa*̢vl8yM'H' Am\"o~?tx]+ \3n6V{l]P,a$MP|0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-g o; h O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowH!~z&w]{s }(;| ^EUa{0$ ;(e$H݅"$ܓ;cP_:]巹ה d5Dv2'P tܓ˜z [wCsѥO^uٵows0ûz𽻧a!I ~TЉ; ֑vJG~ `b!|P3J}*Po G0~J!9JǸx'{6%!AS({H@ K!ėoZHz$k!nN*xG>Hoda!|9$DXа{ BtQH#tRJ+RL3tMF'}jQ8TU3*YŬJ.zatz{'*@\YH  {'8Xu0! MX{!%1g6J!1wܫ}Fʁ.̳R`1_~LȃzA3 SO"[؛7 R~чz`z `H2fsyg{g0`h>J{b`jzkkƔ e vaKƘeҶn{oo* W.kgq#|r+r%pIe3r$7A^E|@)t@wd)MyJT!c40!Z: `3vR}@?_Z `Au(1;&CpD0A*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|,HjTF̢qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^iQ0x@>0`L8@&0 \,gRt[QH1|@l C3(a:ῥc62ĀG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6CP{ kVWd!9-ekيfցXt t*B&VbE9K?D؁m\B.x4`GX9'#) $b[~:Ap; "Ta@5$yሜG G3Qz m&[(Or|匜e$,F0 ` 'Ubare2v=U 8BrKzLЋft\# ,E4wfhґ9J݌E= lò Gd2 UBTH) Aj<臜}ld'%#Fs`d/Bp~"+CdֳRRpESVCX@\(Iq~#H"Dbwp 7@9 x-EHSKX ]T&ހ 0@`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>@,}Cz3EF;v*P&[ H`Aͻ=uE:0"N YW#W*3 ˈ.A#Y ˇؠ5r? " @ #Q!؉kqe5 J6K: UA ;7@/ |pUzkM cX (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 DA*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5eG@JloPcX fhZ+Ovc$h7@7T=T^O2wh`F$MY`)d00M~jn;XOƬd P2bɠHPLQXb(kaʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-HH!@xC|~@YTfXE^n9(MƱStd @}X|#}pup|Xv .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{@MT#Ai 5leZof=w#oˇd @)7[ .(rHq|#B!Y"x^|@D-wŅ_Çk>iE ĞӼz`"n[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4Ddz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@KiؽwXݽuⓆIb 6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzzp`œ '"uB,!c͝?L|%4!Ȳ{m| W`z((v=u `LqOā[ L_؞/S?Y`]"Дc3AA}G:|t> ;#># :%> )"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>AAOp UvY>0@:(>mp Р&tE5GhCƵL Y*Wmc %, A3YnW`dt@q{Ϋ4:"$=f,J;-Z{-jm9;C;:$T7RwX.[:K ]&=PO SA):P tM:S+: j>0pTq'r/79qcN{"NLI*L0̥9BӉ@=!4 },)j}©3@:Dy^wJC ^(@@~^i7:80#A}O'LzT=)zXADp(MqptKӇhr\goB@ቤnA#|i[?"ԁf?(< Eoc"Bn CB=V(}d a| `F 쀂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc('U`'RLpz(ЇEpы`cS 2 D=⠆uCO1v5^[J l?k`n;zCJ # 2:~1$6yNF"H"} #Z,5ɂ%/-Eb\c,H0eɂh@3(PB|@TM:Q+[ċHgetQ D+rw`SA2T5 @EDP 8c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3C1P >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0츧>drqb\i>1,!9PJHDN/hON;L宾ax@ns ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x 3vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR@e =ӶakjppB;*QK_i?5B<δYDKC (;8`<%a=,@?pĘ:DA\`@mnD?Hb==F^ADdE A:|Zu72`~A僀\7 !Πa1UD=Ab@=T<?,"?hVCwía%V: H "B5ğāE|@=QA >;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7DCU zLh@:@zDB胹mXC̮ԝ|:Wd,L ^ /| m,;tũZiZ L@ԣ`D D]ʆB0@MO8;X.^ƫM]kՃ,pL`‰dBH]lDDBNL H OB|CI*CZv(U'*Wxɑih>XG!D>|CYeP5fWzR{"@lD6Pyf GWB)B@A\A0Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮ El;,A$ChEm}Ga@1KN;Tܱ&<ԖtH:H9cG^^=t#]P.j!<*С^}aD@ 9*k'0kz=NH!@C?bD*iAð@lNLlR mD|lĊ,WC = >}KIN,Ұ@)ӡE==ElrjJYUB+~ld$sAmY @+8]@),Bס" رÕJA&..6 %hN脐`<VzD@#Dd@܃;[BL@AnIOaO0^M MB\PPan.FCBvεc,HĂN/0\kAm[[UAHa ģ2E!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/cR>H HWH2p|zHCmHȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅\.tB&'2((* ;tr g7Q@D)B#h>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VH&|z&׹V+/:C2rhGoF$+$K @A#8@ 1 EY,%|,C~CԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP> ESp!0NH@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG,<>jP1m^ EP4Y^> h8Ŭ;#t>l2̸V%hew?w' ENHXqV KK pNOxQw>)|TPE>XVhWh7۩a,Fc<ZȜ`!m:hiĆgt7\Nn>TtLY&Gv]"6JxL CEC'I*X}JkDdJY=$LACe/l"05Z Pr mX93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZU'zLݧW

i/S C>!˃ &jAoT7CAÒzZ4K'^dYA;J<1ԃ\ 1#˱$ ٟ=у,ey'Mm|üY /DLû:dAlLstF PPDu"\hC';`p WO|p@N\=F՝L|ZVD^~CX@̈>B~:|퓎q|@ݝ,@,4MӨ@H)D D|xܻ/؉(P݈{؅(]L;F#!:@|Ա3X̋;y ]Ov qob@\D#剎;<p(0Q:i>KQp` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%WF" W f-pA6me o; {ם+QC|u+Cu⊟DqT{Rz6`v,| H|lA %((G;4Y$3BoiA@8J"d2'iKvA}jhσЋ!:0UA ^9A~!!ah_;AGFDH \ $&<xa,w<@mBxj`'DLgPEc0 .Hpq"ϐE=1 q2A= MhnIIxBy>䘏0N C2YQ)E鐀qzF8'H#>Q"~@?XFu,~y#'aeTeq́|`Y>b\t 7@`E=`)I5" ҅Sx[9K ,p΂rH;/c=P@4Z (`@JFP̆X "yP,B&}Du&#.OYb1i\^Pz%F 1{ ex$1I0*HǑU_9q\2ua6TP*!J |, NJ@xH 3@REztEakG ~`jp&aZXd)ADIwt@{=Z! w@RB|lR"D(@Z􀔌@:{0_lٰu1BGIIQv25JQ8t'g>p7-dH aP<aA EG`%QH"7F5<(FeQM68_~WET,c EdXhE(o`6@>bF*"f v#2@P0:##o;"#H` {LO@ͬb !B*BR" ޡA TN@&#f/b³)*xbTZI^cj+ bX'*MJƮS:SRphΆaCJ"$Rma.ꡙ(@$X=@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~"7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 0:I* kaƠIZe'+L-Drq+42"݌'()/" B<1Y1 $pG[ٌ/ Ԣn)mb܁$"Kª$!ecAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ez ĸ6qd"T'2@"b@)QF FA3C#B2({DE/0@$` !*Rhb3K3%BZeb e؊4A a>B sTjރHcG"`? ;F% i6;AƠ@H)n>A q.`^NN'lxG "AK$Nc:'!D,!s//f$!dS/D$*e@C܁|";!$# $A G >=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`X@@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  Bd `k3 `k"`#F)xhz6@Ge$J a%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF "◒+ْ3.tNFp$EZ-!$A0h٠zx$$6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6::0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$czΓ/bb)(?B #J>a'>F@*: @V 6CF*`c()gf"H3X]R@z`c(/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F|` @"y@"r}'v}CBnDHbn@TSԁL%0 "С b1`A JaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}0 O]=u +1|K0ýw+pNY.B #7t[N@=vI8H,I4!%ߥ3*ݻrr7n\YԐ5T)ӕNWjV 5X]uB|Q4HESsݽL*X)d،6t=nQ>~!|v2OުDžO4X f-pm=!{o}P„5jehmp م ` !e_na~b"Hb&b*b.c2Hc6XYnp}\4AE ѧAN =$BCA=K6 ;\SjSOS5cE>Oу[BdHpmi}#W1sA3@B^@>EA>SթXcBs8h s7 mMɪdu}Nꆓ.HPYt8@X$Bʠdi_j:"D 9E!HВj8$:[)#aMP`>#E 8&0S en> NȮšt!>x;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^yd&{=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{)K&: d:D7A0/h;N 5W;j %ɔ!:>3BDh~}ЦkUtHkΏCa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|8 z\ A*~̯ˇT d$nw:ʹ@, B!Z݈0&Qn {HHIO@D ,@$b Dp3_a6DJ@NB3}0!XWB@)-5 Ȓ8>8cq&80IV''v]mzWXV(cs40D|C^uM/=Hh v@=` 7 ps,9ωt~Oq!P\бdh!@ ?*3%飞>ws#z{#!Y=QȖs򨬄XF~oStw,S|[9ާ`$1$p@S̈́ aB%&no9#µ `} ?(PJq(<M&A1  ` aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"#@#P  (BP*n)vnnq}gPr8Vޓ@#_I}xE "gjp# vqZ" aqnIPt IOV<9 2I6fh#{gCR1ѩ"ig% qwj,>3(5P 0`%&֑mo q*s=fS@[|Z@.v0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2-@jq qzOR%Pߐoч^h7(j@@ : `ͪ $'PAH}͕ 0`gB0xRي"7W`zC($#:x p@%" c P S) aUsך S#D&@ ҩwS鲧e ߀Rb芭- ؎GmjdM<X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vɾ5ɒ,{7B `P 38^|V2Q@Jeʃ7H@"iOYjp j 2ܶȻ!x,N0P" 12ġ'=_C'x& PhvBgvG!!= kyT!59@Jm- (Beۚ cc=Mm׍G`pce4IT%]$C[@{o5P `f1K#Z] Ey,Y燂L"*32hN=( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^30mk773/O $_7R+{n0 C a -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5_'}0h O]ZׂY185  2e[ F=3}==]ȁ@5GVz#v< i%oB/> Bwʇ}z$Cg6x:d!2$C#DOD1EWdE_1FgFo1GwG2H!$YЬO>hb>Y1D 0[`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`suqxkY F(YJ=u;U@t @0RЧKC 3dQc z3F2ޱ ]R @aPdDZG-7D&>:`G (S@'j7H8Ǝb~FeCA{,c@My g*@u*tU1цjU M\D <]؁xІȚ t!6b_1u!HoGeww#0 <{q-W:Rv24._a'XZ T@Mޑ4Y@=@A@uK84K2'Y0P ( 1lxl@2*a A{|k"Q!X !&@J$,0(C=xG&W a=%O\/ RCHy&A0 \@.x0P&/P__O=@cl/? ƒu88jd X_‡c=@PZIf#8k$@h2+e"`ٜW"be,+p2A=zJvֳmhE;ZҖִvF1*#xN`p b $6qκFVo@0Q YWP).u c(TxMɛ vxFkTdt4{9X!h-P ׈ ~ X;~@pnk`- c@u18HFϤ  CIu(`0o"k"FPtXO( wȥ|DJI؀>:N X!4 zpY(ƍH5@> +ۣ`HpOWl~M`}֒ .}8H n "s9?b@U`{P-npdTA3wx|Ӈ,)Έ< ƀF Ȁk~ ۓ \3` }x iԼ'\>8 `=PPQ%R5UAQ <0!uu`S\;#m_`a%b5V㪇1u`NN{6IZz BS)6{K=X\ x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!X{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH t`Hz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@(0ԄmmmRpIkip>ߖpySnDt)7SGɇHYam66B=#G$/yۺv\b huX|7+,r|考9n(Zn$q ́d2Qq-u`Btx2JQ x F#Z]XdYMKa: pt1 X2Ϝ2vH*Q' ,JPt@N(ljt聠0|).%tI K/0t5pn3T@TvfLJvivkZ P@oJ}h{{0r}׀,6~ /GL'p{$`0@z:]:|S7=v? .: dw/$eRwA̧̞$NL\SWOϏD"U4B>ME}'#gܳ ߻{=R,0kaE !ɚE uҁB䃜WC>Pa@t^2D3 o>E v4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM6pއ 0 eFF`} wшgo {œW€{􍠝jN=Ys!qs?O>cY> DO}PL=vOSsy Q`;3=cj%S@#@4;:Q; 3[F@:oF.4H8{I  2<0@ ,2:=~DAf l7L!H?)TZg9D\=|;"̔@fSD [ T;4$0;2dt">x}IpCUPOZ+`HbԳ7^>Nw= wT=<MG@"n.SyHzn}]"y 0j x=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O%K&: @^:l5rFX5^K};s'̝k67h>0va=}hDU3DSn9:o[;T>*%f@:3 t@= (-exO:RSɎ#:fzk7 @=b dAUO?@L 2iߐ ߳H Hoe;޽ɖVI|[vך+-+0AN"H @^>|wܽ.ҁ2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'ѪU'M!=@Pz8"zW.J:* p`0@"ݼC": CO,v ' LGeѣO<P>ҡD,7'>"‘FL=<9=½c@2Ȕ,đ/C`80HjЏUPS9@tL8KG4Gєx5.F}c2)3(V$>DYϐ!0x +'ZDIʤM%XyOB)\Z ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@PɢA=yς6-iKkӢ=:hQ,#|ၑH$e:jPB _79FX@?Ґ*5&5(K>{c&YI`9b:XzóefM1HjRZ>  O|bIH7<;_[<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏp@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aQMDyL42tCǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJaocSimʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*&3`Dl؁C$>%7HreGhQ >ï@ԱkSv5(eDp L,HS*Dk[\!բ=Koӣ>=Kd4+ZIbQFc 6XTk< @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ ODYWNCPԃ1$JH$4(!RO`"'H`\HPh \Jb+>!H|x@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;H,=>EpC(Ns0  D'EC-v̈́:r8]:L;T@> K?L^ "QäԕCC?XU@Y 8H@AlCXFqD?@U<@C,4O$>@yЎ@D!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_܀&aaCb.wC@'T ;  RapCI,Ft=[gC:EZu;8=@WHC#|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CIO x$v-Nŋ>C-D̀,qhi kԼa F4A]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F,> `È^D>@c7xSLIF&AtG@@fT@ 7L`\MhA HԔk]N $C$@KYҫ~`F]e/ /LgaHH|Ef($j*Dj Ujl\ ܃' Lfe]yɇHȂ>T@/G?ȅC'(@  &NATE$8Yt,ST+$c ~7Tik0*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*(C).|!͍j, ioboo$Fd(C,.C$p po52oqpt.'\+FKcpksp{pp p p p p ppq q=@.VhYnp`+?hUGk0qmQ_tkτ_1qo\qq r!ϯd4e&W ,R D+gc@ %OCCYp@8Ao!@YoxmnKY*VL)HP^lk@A#8@ P>G@}(^E:Nrl=xo*|nS?m|e $Cl Eԟ,b)B3tC;.CqY$3o.>T;FJ<H`La4aa'x Qu\?jvkCkBu@&9:lqELGC) D/vL8rpPptBS=G4N,LnPZ h$aV$>$\PhŴun4 dt6Nݖ@"H@,|=l_7NqN܆C]8NF,Ta?Xg{@YtkC}mF<@`@CI<PO7(r\gq QDn7,@:pd[CoNO8Æsn\I'haxu@t{ya8 :lA A>T7 F/FHg+@H9$NW !tw{ Ӄ,toVX4ހ]-8HBG$ DÚÖ=C< םBvԙJuDgO85P'ޫ H;A"I=t ~ TttBo)o@xx 8C0,̙:dEu>2Cq:T<O:>`<%£$H2ECJ ȋדApF;:hn|s}/D&OŗŧD(׼MX7]|N:HƦH`@D"C >(e@ I>ɰþ VRƑDWFUEYp$E_[\X>Hl^ 5|s:p2o,C M]C`_MiW^kyH|Y@)-${B0+@'b@$wO@(c.?t[N@=$4ݽU"Q̇: 'RD T9˔k^>vBwh7_B}Df*qa$MDNVT@|A b;>SBY/NI Ce[Z松 Qewouf`^Ǯn:\6JcÇ'VDw1Frz#vY%)'*J'|P8 )>LI;ߍ gki%dGF ׿ P ,LPl!P ) 1P );> 8胔1  PbC2(}~AdE@EE"a4(!Cd :ZG9 2z ‡?)&~w*ȸ0Q#>(ITrat |䠨G" |kHXiF F(zLYm Fa;nD@~§Ɔ ?Qs"!K`{ 4 $M+ D~.+_JVJ hh# |";w"gP1sZd]y(Y Xyx 2g*u*t̔r29? <+iawO I Qba@Y9Zꩩ꫱Z뭹[ IMrh.6{#&}lLg& ؃Tby@{·yg03:QO)|!tC;(w:1J$ 6tyɪh#@ү#n2 )SPx2ggήǂD盿zC_Gwʤ~w`!so$,w<,|d ȟ@2!{l@d( !! Ed/!]>H2Æ{PDzcDC2rLD BRD<"@kQP0@h:$V萇=:d((36=}HA4!2dmjav `[_ G{1:9 IuA9P)wCB ft  Y|k Gv@t*YȂ@=×I$ ƨE^Hd"CK|4 $XH1C=! GJ x_~+46x7q#M֑;Q.Y DpXI@JdeGHF#fVjŋ|7,L 1\cpQhJ zp*lY: Ej%ҕ;\C dAڐ @,} b*,^q2A=H5aX.X=U[R"W$Ym}?C3;gy Tb22|ç2:J J 4.&JkZ3) 2 p&djAԺV_ـ1h[qс%bҐ}4#xrUQ,@Bu]t7XX-JD`u1 PdK .'9< J|+hуtxp.kg=} !%7|I IO$%G {T ZJt0z5BDmCGKd؀SM*>q;qu<6Ӂ"^ ?jiNEdH$t(:E D$pts-| h!tK%Ho$#$lB}HY*.5VqCӜDK|&~Ӌ7E7ёt/Mo=t#1RLwlHRVw,Q$R.!.D "`YQ"_y鋐` e2tZ. _=J!Lh3=:-@, = >J_bt?&KuR%@@[?a%!4U:e=dӏk PJ."c*q,CF%h>qИNi"R H=JI<@_!R+ `cyO?%9f,`@Aho?>i4mh^B=|b!:%6Iœn0 kA2xoD!"6@BBk!P(0%"b~*ޡA!sx(G=J% *c6"O%ܐt?I!]6"@;2*& FZE ~h+$p`0Q. C)ʇGBG2:**Qa`*pKD #&(OB@١0;¢!F`!X82"H`L8,-A=Lh k'c܁8#K"OqɃ6b6 N!7K QYI1Pf{ᘂ* B Š00DJb' P@o ,2-r-2Р ba!Rʢ#GH6X#4(Q"Fb@V,`HBn#.QtN)ZAƠ@t3!8nOZ"ppgVn+ct "@X~68d5#`p#V:4%"6):l J"`q'Ԁ$ HM&x`F "9$53%2ʧ$& !2L]8VO O H@HVJ "R.X[JEMNɟ!" $A 1b@ 321h3"6  T &:4% "4O @>p'Rj~T,X>N4OtOOC)O#$sƆaR"ցQ!>P-R15S5uS9S#M`ց*S$T}溆6(@ U:U TyW}W5XJuX 83 J*&KP<5*X5[u[[[X&OJR$F Z SÊnW^5_u___6`v` ` ` vaaa!6b%v[@\'b16c5vc9c=vcEvdIdMdQ6e"dUe]ea6fevf-eifq6guvgygf}6hvhhhhviiib6jjj6k/ujkk6lŖvll6mvm/lm6nvnmn6ovo{no7pwpo p7qwqpq!7r%wrq)r17s5wsr9sA7tEwt1sItQ7uUwu_tYua7veq]wvmvq7wնvuw}wiy7xxxQvxwyy`ywzzz7{w{{{7|w|ɷ||7}w}ٷ}}7~w~~~7w8x 8x!8%x)-185x9=A8ExIMQ8UxY]a8eximq8uxy}8x8x8x8x8xɸ8xٸ8x鸎8x9y 9y!9%y)-195y9=A9EyIMQ9UyY]a9eyimq9uyy}9y9y9y9y9yɹ9yٹ9y鹞9y:z :z!:%z)-1:5z9=A:EzIMQ:UzY]a:ezimq:uzy}:z:z:z:z:zɺ:zٺ:z麮:z;{ ;{!;%{)-1;5{9=A;E{IMQ;U{Y]a;e{imq;u{9 ! ,fBBD^^\jjl..,nnl&&$VVT 224JJLZZ\::<**,zz|bbd>><""$ffdRRT664NNL~~| IJp@tprpĮnfHLDPLF@~xx$¸tnt0@XPX80L|(6L||. 04<@b\`BH@ ̜0(($00p|| lttx|v46@`bdp `~Դh\`86(Nfnpzfh0x.(80.l0.PXXFJ@x\@<<4nf`ʔ pfp<6УKNHJDv3|{Wi˟=:|ϑ./z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?IF)TV Y3:3(S!p Ih&QlIGqvdP;l(`堄jj_wP@E#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:.&H|@FAHn[Sdq%$-ښACQ:`,p;DϑhBx= POK~OS@:pPHZaypϲ,@ԃ@ԃ4:H:Î,2PX(6+ġ;<APHbG C@)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:׃B/j b !O3v=9;'B3\"7XOl{ܸ::wN  X>? C=ֱ |%"~L#!@@ $ ϐa |C77 +1AzP  {$uhG2ӱD (@C0USȗz`G3B BPa=np#=q t $ "J#>H1IHA?B SrI!݃>*`Y%@zs!|p؁'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1tx:&]jV$`A$ H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;g YU1V:u LmS&FD`MG=2Mj3s+nd$tH IE nr#!@?~jb)wcG*߭ؑtk\nV2Q`-H[yPDLZ* uYr0s#Vk>umJ#"ykMϊe2=cA?CXlA'8"xP3 ]gLoX@NH,0>I ':܂0`;dE8"0rYtY'uh`1Oey\+w\Y P,v*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lG)lLbiOl2ER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD _;WpBz4j{HdQpt d?KD9PT."pd<6Hb_}u\>e="&ثg :`qh@;Ԟc옍8&zkEuXP@k) H<ĨBC)$.2w=&-(7P O|  2t ! )HЏ{jC40!H [xie+ x!܇  ~@TT'EV=(= 0"P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R `rP+v02> h_P=@Ѐh b}~hQ \G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ( !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsqLLW` ym@pNI`j왡HIu$y'P27v)W mrwe\2*_*_ș:DZIG̢sR>.gm!-*.` r 0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 -40wQ0O1 dZJF"3@h/D?#u\"gJeP#0:蚮:,zT Yq$"AV*(PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R @a-{ 2;4fc.gZЅ( "%"]b*U$]ǭQp@H5Zqd =K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$Й@Sd&Z:A173p#7tc79,<0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mLc]P 5a P@Sq'K>ܓP$AӯEBd9wUrcFpgH6${`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛YB;z{F"r {gW w$T $zY(| Y- UCڵ*%"T{ vy :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ēCNA2 @Xս ½Ufܓ=d_T=.ޑ*S9=4OTH<~ *`RC(⍄Zڨ,{OcFx׆zk/P2{'w'YY1.*AJ*>ˇenK0sL24L4TsM6tM8Cgt)e x`&PI֩ p(Z`H*F{8H{`z *w[,Y4$g - ` v" 8p"ԛi&N= bz/ dq@Dl/ @2Oz%0!!Jŀ0[¬U]|${ p@J(2ǀTjwؙv b6 *(L[% Yt(LfU2d{|7|y @4ȏodQ ~ ҩ%|Cs$%47!j Q 5nc2Bu@ uHC $@V$Izvx8=GyBH?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd‰)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nq6b1a@ZH ԤP !uzaء_LoB߭Ckʁ/BFXu#bJ ,/L f#\*p;vAlu,dqSr(G&X=|pbz6iݛ^,4jvF!v$<[43- ڃ$A =0.T 2{OY "T`H.A(2ܸ@KjpHjB }E8]@BN L)@#r9{K<_>`1yͷswP-YH/_xcN!3uIUn?:h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ@v 0Ä(:\" 9gxH3%;FIDS 3 û ɵ0 ~{pDي{Вwh'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s`;' u1( zHq$ xGQYZ,[̇\\ g ӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ." @BS5` 1AcY21 5k:0J$.+ax+o`˫x@ RDb, ܡoMPL `LQi{ |KXLt!P FL!Rx0t e L܉Ph@< *;o0q 1ą6ͅ ʇi K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 68#ly*-*]2L%k B8{R"#!'hStX XY1-3#e$%RHu«с1@$ SXxYH$*e4D< 1]L }Ӓtզ(֭V NtVi$N#䜈(݊?HzԁI#tx( [5  h2Iѷ4x xy{|h$ 9<= bP*{u+C5LA [e5%"0h@DQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx8a]=cb'ч~(05sneWY=.(D!ntPO Й ćI @#IXj< ERdλw|Y6\{€F!wJYI{h ʠ!eR!&)hɁ4SpB9mRF"!""# z.4S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$? M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{YLV< rK?uTOuU_uVouWuXuYuZu[u\u 脞]2 Obc$H6av]v᲋⬉L^#_n3 ?W 1vw tjwvIݘ3w).x? }(h. kc th呂0Ӱ¿,H  =H.`efՅPHg3]y?Q ]7 sN0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4=oP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀.Sq{{V^ifN|Ҙ$W﷍{'|XS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4 &AeCA5Б=vC{bsg> ~"%i`PĻ"Rv!ٸ[t37b@>FSh|KAJEbrO;޼O5\+bXi-B]'ʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=UP+v P<<.тI2PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3Bb( A=,IC 7 N#A<|P$$ӉT`Rx=ФN=E68D#@Fl![@:+[F=b?KCE{O?@pD0T{n.NF;3ê( >( d`fwN+A+-b~sA s= D~4޳O'AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=]NdQO9[a> dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX pP2~>ʀHCA@G!wH %H#1`"j`,: !72 >~zpQ#gd5$ @2( n+aY"4 .|~;I @?$xi ^zlP 3x ^A& |dr$-2z;fG<:h@y|qc(Hzh (=5@t AfZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠NTֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,asf8z f >e>LH/` ^M ^Aɥrxh Cxr$LTzifRV^ pT)pK@A\" c H,a%FDQ}L$G1 }B+LdT)P1݋kv d0D) O9-s;wpd7 y|n$` |qH,A 9Oo׃>r|IoXc [Aacցk{>BM\Mq0HQ{ƛ*ppq7-. `/k6HPM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:a<[H=|2[m; !l#ʃi:Y?xd ߐA"G`03s7NB ![E#GFUG!LS8h)H r{ԦdCz%[ BYЃ>vu݇G(V&2|CK&@|<$GP7?^A Ra`\BD-5FCUD39A, ;ަO Oў/ I?Ȃ{ ;AY_A _!`%Y(MJCSL;5C8`V> EZy, r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b>-+nBXJahA4m @4B_v8 zLAA;XXPġ+b ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4Њ7@g%H >1A$MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"L xIeZR\CF47̋I@B8SEXiBP!\HdI>J:\7$ Gh$S2dHŸAHB afY-DzGD@ACDɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D(|CT&eAH'g#yzZ,D?XrC$()FH: f(;  W4gACGK*߅DٽmIiA|niE<& eF,GOAK;<-Yi&_BܟA0@E(ߎ aY> p #6Dt]ϢFA7NA0\*)%ȂXi~Z)M`E0})5g݃=< 2m#FhE4a~ V'(>4C(`T= #n&>?ܫ:,(_Ljr?:ë^Z7i>؃>8@C(@<ĞP(~GRjޫ:_ԃV L?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 R4CD?=@2 r.G|@*_[泪زJ^#GjA,YnBH.vwI$eFÍ$_: = (/bhrE .xRpZҮ1$DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-D0"x0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/̀ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtE99;DCAW"C=Xѣ24 RL3L=DE?\3F78@-x>2ކ#XÌ~Z@#C.X%A,Irdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,euBXZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`v 0l@ܱpz 91'Dg {B 7W?#`[|-ĦyBtC @:lDB%L#8;;t,,C̕@Kxo=Z?p;7JDG183#F3zwB@ 0kD7`hN@Ľ{B3xa| JKH; vC{һ&Č{,|B{2"/H_:%İ>H |K@X`>u+Ƀ/I3N0B[P½ 3 nCuS6!tޫ.:ӊzLz0,⃃+eμǎ_Z^' ZrZ'eUa`ûGu 0҄(U,#߁T9}KP%odG=πx Cwd预%YG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwÌn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /PHTu8> y YJ`XLҡd]6XgehjlݖnpY 8!S(P. L5SIb Qtǂ`F0Iu{5~%-MU-[d65uG`#1hHeQf2euޙ}蠅#5w-(c/#%`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.EAIӀaw4jZԗOST hvԣIRBAi XH-SPq2ȁQG'Qkep`?LpK D#HO- <7#!IT '.}IB;@땊8Ō !.PQSe={0ZI t 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[ 蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL=ěfbv+"&ӎ8"UG`٪*] $G@ @K{ *H)6d zX+ 0O40RP*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙA|` Hw(ڕnk|=ie/n t5:j!Kg {t * n#\ miq9rfRW-u=˜"@l +I_@G^cXAxD!_\faуCeP=ƫ(ࣅ !auzVBI;4|g=6B$%PC'! vLF|X0cЋAŽF|`$ЏFj`,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʰZBHĽװ؇LG]|`# 7B5H؁Lt׏$zTc-=1m:!"1`%}>C 7 C $E}C SCR0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…:k O$NFD pG:m$(#6 H(K  2ijdZƏL&I! !L P 0fk(- D"RA:8n86nC @ ‚ ƻB k !*A6`A4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ LD qqȐBN-gj$ X|_b[F Q[k @a-!<tΨUI)¬\pR.@_ Q!6DcX !"ᖬ0ZRI sR'w'Bz!n%l# * @-N$~%bMba c&b%!J*cN d ϖ!;!)JP瘔b  "((H<J XL. @1V-:daS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* P`BxʬZh%2j!##LH@%&I1K4Ũv`A1< 8 s-c;#AҒF,00@OH>L$0p!@emKkvI:A ԁI! Z  ҬmI !⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʤ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨnHQuU\Z(V:bB\FﵤoJ+@ V&II3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^#>UH`ho)ǬUr'r5(B@)AEod!("r5dL㇔iH7I敂f"C1Mb@6#DaA!N!ᑰ~7!(0u.!R.w+2ws;sU "tꐎ @ 0R>B|L!Pp`B5lIR,5xcI/R7Y!k@:Do7W5A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@$ D{S[ 6L&Z0A$XvT a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@e *m5A ‎t)$j ĕq)Qkp*":!$ x9nVZMDJ! DZL6 eaˀ$` g]:2  Ha̗Zjʬ"R=d** cxWjH//0#֠!D@^)"@1RC{l#K@ :> cC3,6DB XC.P*LBY hL$?-׿ "cKC=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!"`!@*|⧇VY[ٟB:|aDY%AhMdAJ`F!?xޡd0RGLUQ \N%맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7<@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!"e27D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevة(iH&7(uGͺu2>G` `ʽ{ؽK<| N= { :j:|c{8”9I|3'w4Bw_w4hAY2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^@w$!]&dÐ޻9s|Uݽ|CkD! Ll&+|޽*AF#\×vܕ6U3>3C>tR8=L8gv'v7cg|F=C>pp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(dՉ\Jhh.h> iNJia Qa0@= d$=$uO \7p1P;' _ #@GXΞ}\>X:B$jk_ȲFtՓV;jUS0ɏ/ k>[=׻줻n=v|a@ߨD'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճ4(hqF= 7L3_`Ƒqe:SFVSXYWAFqsA?va:@X_c}߶c+>!?o d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF(R!,@m=ԀLl|Q0># jDTq$+K7 &h, r,R.Ðǘ,#XffW ΙvCa&Ι啈h]B hFv&%C#K_ Әt4Mo?4HcWF4`* #l ͇w 9R{e ¶$ 3B)tm@,E;%I AC 1|Ax|ȕb>XԵ5#Q(V-7=D aGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]ua$L@AҬG'ڂ iYRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY:86wD1t3^)yK̠*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!=iu="I1phMLo)ɳ<΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE;Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! PNXaZj;.H".;P-/c54'eg*A !Cd1 RF $DCyrFoپ]xGc GaZo~FeA1BdG0K_Z Sd-i*~Bf$L Bz 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`.* Dp@K+а!: Q }ixo 5=5 X!]'>"1,$4[@ *՘4E9$):~^S"iukG%Zw,zh S;~%[(n>5ηR*X"EtȂ|I!޲u T-{7;9KiyKv+N@f%S^G`bk/Ǽ@`t\@9" (F! P`_ٵ2, Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[M&=e,(}6➔$*A~0Hw`( 5I0Cw.Hmz 1;+d|Чu8w  q| yi 6݄3rɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet8̴M ;+=@{RsBGz6w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz.u9@@oӊSY Dh8+` ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG .$;nww.:43Zj;$ P|QĬzKذo! 4$@ 1!LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T6 4taG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19u( ?6%5H +@4&%A Jҕx/Yh>"$y3PoH7&ᨁC!Ux  wȸ@ &*5؜,9 Dp,Q)3Rj#Y-ɥ.aYd৐NnB':P;pI"Z M:OR Mk4UU@ XqD"17ATI CmbLg7 TKFr岘41] A FId~H$|G?+zH{@JGFmUe:JaT2Pn |`=պI76З(r7'q)Շb[_p r􁏒` `H.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ((5>jH -r/yK:c,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4"Y.'qQI`s#?8xQߙvG|I5|"Jx- .o e+}E?z@#ֻJ.c0}F APC@'1.ۅ`5d>luVDj\+оȝ}ُ::hèo+85Pnޓw,)=x `3DT+۩ Cz)_ wH yjAm NmAPho h(vHl(H+vЖk~V٤-~wȽ Xz4ʐAxA 2TAtAy%dB BbЁ2[789\ߒ;%#H@txѠ*fX+`b|p~ c| 룈HȽnabH ' +P|!ЈxF1z0ẎZ|[T]2:jkFw[ P` )|>I dIȣ-IHd XJٰ 4 6y hGx>wx{ Gtr* Hp@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jj t˷˸G!w聍 &N ~~ )  Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w@eP+lq vYfhQ?<1tH$ί_tN ?ė|H(%;}x HY> x (\ РQ j#}P Ia9$@xH(f 9L o4"5#ERlNP?܀ȞɀxN YR$Cu`!v'(J$|$DH5Egxp ';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.?-Y#;1Jaf\zvKzT:FL ǼUhM(Rh;@ ևv^N{0!9e~Ȁz ,՚IiPike؁  &7{xO@|}XE(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYP() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V?( <1 1m}h.<9KkǐHzo8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q} HTWu/:$=h p t_Vi,ʣFw$f @y>IgW|Xy7C \y˾D`ޅ.'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF PӯdN+9Q9˸O[hN/wXÀp'y/_fġڳt 聼!)9FHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - &Bdus(ѢF"Mt)ӦNB*u*ժVbͪu+׮ӆw]𺐁 ёNV꽙yo]nKwݼj޻ݟ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwmSzC'1Twc5áWL-Qwų~A_j~-NdUe CFA8uVMP9s,]P$c r#X'+آqφ)N?d0A܎ޏ|`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=D`O$Vԁ;;vN0 S@:HCb7Bq^ݓIBK&%#mj*S7PX'tD~T0@#p-j]]Qkcf3pCA"XA'tRFtF>:y3jެ#At ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p d{# E׵|;ꑵJqz=A ܃CS_ק:P>#;ϥts*>3;cS=C0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xlAz%K6#j&afw<)>шo ,x PD$)A\Eݣֱ;$Џ|$G> !fc,#8@*n Q fщwڡA+nēLdIG{(|KYL_ q %\&< eJ ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 a!H&sv ; @=E HgVH Q@H蔭XUy@i Y8= M%z D $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>:wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS21@_p 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53 _T^1z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}8`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u$^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?,C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7 zĉu@=QAl<\>d!:@SU ]^ɥDHE; Aa|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp? @ p^s!\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA =$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ$0Lndlc (u,x::IP3LlFZDօ<: #=e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH 0:*ę/ }_z2l@thI*,q"DvW՛.") $cB c(RDD0*MԃQ0bɆTUi\J=u\IJ~W$$QD܃yV2+CDjშRk!%æ4$ C?)tNT>ŪCD@DXRaY}; B?jĽTR'AH$yROkC=liBvƙ`J=Sce^A ``)֖  C#zn ibHBܔD@ܭX;<, @0Hح4tI:HC-톕,ےVfd']=|@,;|؂A$H]4: gF-,ڎb@*ǩt-m-H@:@ n`.;nҮ`u&f$1,>^J:l@Z"4tuH:T=tA)dfK$@ @'4lO)T0'II):% p 0 @7z>EAD@I>î @>R2D,@?/EHK_dHI0^>m` ?h@*@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊,KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`G#æA(COrU7L:ۣl@++F5'F4s)%lC" HT1*3pBp;pJуqb&@ 3E@ 4=S0?UHAZz>RüW,AԈ ~Kn|R1 BPu8̳lA|D) ܃@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ3=X@v}C$C$YTI&]U:lBt@}>ThxOA $!^C=TA@ݏDXcJ:ßO?1@@btA)-BmDLKU#=0>)rUA׾>}-,@##t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@A& "*3޺ c"{10Իo_)&.BAL^0 Q lB$"w&BJwDbF['d u:+>>xqǑ'WysϡCp+\i}p{@:?/ |i}WYnaYf"+!FI xJTQH `%:z櫱{$yj1Ja xBI'D1SJG @ށ@l'N\o!_MªgH1J n1!%@oVPiơ*q7+i5F ´dgGч0 !y'/Թm=4$G^! 6;bgG,_}Z~P" 0dRr @@=PSR=jNPJh`s?. xG=*@v*Tp aHHcv#$Hzyb۲&IL_1S 1 J=/!:!! xB9Αu$"`=E7`v38`]GDDH)I."oA dD$呕@*H}* x"H,TtH GB c c  hBB7CƷ ~r*ZA@+OyΓ=O% Tj4AP. upIĀgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:to5O[9zYgVCx_X\Q /$Ѓ8N'Gw&ba5exjtM#C4M=."7 @>d%D, HHj\Gء_B0E tzpzYQBҵL`؀8H6&GVWW`:T:  •`zq{0c}>!TtiZzUGbav5"` \h c!$0=aYyG2Q4CpRd!9P'CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆH"Qah!"Q02 = 7} u-SV3{@ @O } 6apBQM 2@tvMVtr"iF2 TBJ kݓ@B([FA($,@+ U|# @C,x$x,cLJjtа `C?bP tp!H߷guoDY.3zlK@8|`CN 46P|L`\ 1UStUJC ^Βݐ@3. =ЩN2 E`@%RtϞW):6X8Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC Pc=K:@g/N(I& !pD!8d$J(Y,!v"N** VAp즱bMNdD*gM6Kb!Y:AzB#Ai,!g0#>@xɰ $`hPXa!& /߀0 H!Xa{< : !]!P!ڧ_#*7R I" !| 6(dA++T( !@&L &{A @P~ޤ1"bk gFL *@j6 G#!}Rh)pamN/¹uAԠ`]*BdY< B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'xƯMejGH D`Rd8 -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8HH YHށ>-F%( %8> R!H@6@+\s88$`KH2T0@$ n6` # ಩>B$&Ca&v|2!'B4"2 }'U46/QX8 $($7)^H|ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&Za7/軄& ^B"X.Bq:PEuTSab#Ԁ3[\#$0U8"̱#<SB{HuXU - ;٢T$@:ft@6pXɵ\ QF vne:8`^s rPS 'Ӑ@M| !Z HЉlr "z#"|m5$S!֊ .2j% Z͵g}6&A#Uf21d0Ni2ءg vVMZRg?xn~!(1t-tw~m Pj>gRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0$@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-A(Nd>8PeB9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!zh0!p PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!rI6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p`֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫ<འqv-^t` -z7 *G :ɪA:u `+{IS) ةAQO+װc˞M۸sͻ.{ Bn|u~tu [z%W̝NBtFvфxs T}A -^AB|0? ($h(,&N,vNsѳv $A8@ CC/Td5ިA|c .4>ܗOi7Xgܓ2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*APE􃏚>wYʑW;Џ=N=x+ ×k7\ 鿗IXjA@B ",Wlg!FI>@ܨ:[:`\8(3{6_QO_B`@P8{#>R~o?_ue;DW0HM&; ؜-_Sތ7G.Wn?:!g砇.褗n{;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGH@d0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>)GIwH baŽza%D7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ E@{l pd>Cc%%䅃Lg@M% b(9ẋ>ς @h 4ұFt\aG ƒ t`GJTuB@5Ct%@R:QĢpV! 0㮂 5gv)^ zHuwS0KCôbƮ'ODH ؈ox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ %P*k$" :djmv2(|qQ"vs@ Nܣ Ňd9DAJYN0|脨F 8 @YD #pLsUO3a!%K oPK$L$Y\q0 k4/{|X*PlB: duh='P.w8rARu Ǜ b-*-c,ad[]20 3G$''Q24G|HԹq  fABŰg TT oP1) :tblh T/dwbńϯQ j4\XG< AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fv@CY ,\Y(Yz , A+:M zd~,cJ7y*M}7oHΑ9!cA`DB1қg>Y^x+EKUR(ȣ;qAH t&U=S{aE/|6:r e!Z:BF1 `<zfʋ4)P(?2< zb}  hjZ[ai v aDz7X&Ydˠ A%pGvq %8 C w?"# $P g\E?ݔ@AV212W*e! bK"2"X">(rS}g2"SR`xzXOJ )tb1G r i@tb2A] ON(LRp@ Nh ` AX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L 4b}7сDS@qj+R+AvDEvj``-b- H\!Et*>%`E*%υ< `& `T"l.7" BBuPTwLe8**C@+e%p 9}2%p] y0/r/b,p`dÃ06c5h0 C 1؎>|cm $*%`'2<^E@ H22v5D@8o:v#t#+.E@ 9F`29PDΡ=48& 3!Ls2F -1s50#MWXEYܐV 6m6AeDivӇ_X#GP8  9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;I@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O=؊T PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گu0 fiLSGj֌A@Up%f VjKsjh yv(4 0eTe]qvMGd0qE6"ȫN*{%wr0SRvE;T+FЀ{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾B]O /~$ x:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2 . +\}Ԡ0yp,iПfP q0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"pq=P5ɑʢ<QAhjcʂ@\`lhQ,˺\06`VE(wUtE 1)7u# 1Dea1K% ]0%.J 7 @6\λ<4 D(۱bzpHZ+}乖ȒQ&;B"0:,K9^PK [2 .`Eʊ Esѫ;ukBP 0q%$t@v̲p^ alNͤ T(8!LB9PWDh(P qzt`^=IBbs@U' ԧRZJ"u $=:G9S=unUPEE4P`IuQ=PX O;0!mApc`'#CrpǍ)'p?a@4h'0fޒ}Q 6_ו]|1항P\:&$f򭩜#{pa \eP0]YVZUĢr.F :[թqa@X#i(3=cpvv8 Υ. *I.KkTIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2" ngĝ$j斒V (!3.yՒpJEWi&@dkto7pפnբ d`Y[~Vt%m" p-*°s ʧa*̢vl8yM'H' Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-g o;h O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowH!~z&w]{s }(;| ^EUa{0$ ;(e$H݅"$ܓ;cP_:]巹ה d5Dv2'Po tܓBz [CsѥO^uٵows0ûz𽻧a!I ~TЉ; ֑vJG~g `b!|P3J}*Po G0~J!9JǸx'{6%!AS({H@ K!ėoZHz$k!nN*xG>Hoda!|#PXа{ BtQH#tRJ+RL3tMF'}jQ8TU3*YŬJ.zatz{'*@\YH  {'8Xu0! MX{!%.g6 1wܫ}Fʁ.̳R`1_~LȃzA3 SO"[؛7 R~чz`z `H2fsyg{g0`h@J{b`jzkkƔ e &aKeҶn{oo* W.kgq#|r+r%pIe3r$7A^E|@)t@wd)MyJT!40!Z: `3vR@?_Z `Au(1;&CpD0D*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|,HjTF̢qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^iQ0x@>0`8@&0 \,gRt[QH1|@l C3(a:ῥc62ĀG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6CP{ kVWd!9-ekيfցXt t*B&VbE9K?Dm\B.x4`GX9'#) $b[~:Ap; "Ta@5$yሜG G3BQz m&[(Or|匜e$,F0 ` 'Ubare2v=U 8BrKzLЋft\C ,E4wfhґ9J݌E= lò Gd2 UBH) Aj<臜}ld'%#Fs`d/Bfp~"+CdֳRRpESVCX@\(Iq~#H"Dbwp7>9 x-EHSKX ]T&ހ 0@`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>@,}Czt3EF;v*P&[ H`AͻG=uE:0"N YW#W*3 ˈ.A#Y ˇؠ5r? " @ #Q!؉kqe5 J6K: UA ;7@/ |pUzkM cX (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 DA*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5eG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kaʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-H!@xC|~@YꂠTfXE^n9(MƱStd @}X|#}pup|Xv .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{@MT#Ai 5leKof=w#oˇd @)7[ .(rq|#B!Y"x^|@D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4Ddz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@KiؽwXݽuⓆa 6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzzp`œ '"uB ;#># :%> )"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>AAOp UvY>0@:(>mp Р&tE5GhCƵL Y*Wmc %, A3YnW`dt@q{Ϋ4:"$=f,J;-Z{-jm9;C;:$Td7RwX.[:K ]&=PO 'A):PLM:S+: j>0pTq'r/79uq]N{"NLI*L0̥9Bӡ@!4 },)j}©3@:Dy^wJC ^(@@~^i7:80@#AO'LzT=)zXADp(MqptKӇhr\goB@ᡤnA#|i?e"ԁf?(< Eoc"Bn CB=V(} a| (E 쀂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(U`'RLpz(ЇEpы`cS 2 D=⠆uCO1v5^[J l?k`n;zCJ # 2:~1$6yNF"H"} #Z,5ɂ%/-Eb\c,H0eɂh@3(PB|@TM:Q+[ċHgetQ D+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CqP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0츧>drqb\i>1,!9PJ8EN/hON;L宾ax@ns; ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7DCCU zLh@:@zDB胹mXC̮ԝ|:Wd,L ^ t/| m,;tũZiZ L@ԣ`D D]ʆB0@MO8;X.^ƫM]kՃ,pL`‰dBH]lDDBNL H OB|CI*CZv(U'*Wxɑih>XG!D>|CYeP5fWzR{"@lD6Pyf GWB)B@A\A0Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮ ELl;,A$ChEm}Ga@1KN;Tܱ&k<ԖtH:H9cG^^=L#]P.j!<*С^}aD@ 9*k'0kz=NH!@C?bD*iAð@lNLlR mD|lĊ,WC = >}KIN,ҰzBC)ӡE==ElrjJYUlB+~ld$sAmY @+8]@)@,Bס" رÕJA&..6 %hN脐`<VzD@#Dd@܃;[BL@AnIOaO0^M MB\PPan.FCBvεc,HĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/cR>H HWH2p|zxHCmHCȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅\.#tB&'2((* ;tr g7Q@D)B#h$>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VHC&|z&׹V+/:C2rhGoF$+$K @A#8@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP> ESp!0NH@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG,<>P1m^ EP4Y^> h8Ŭ;#t>tl2̸V%hew?w' ENHXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TtLY&Gv]"6JxL CEC'I*X}JkDdJY=$LAC/l"05Z Pr mX93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZU'zLݧW

i/S C>!˃ &jAoT7CAÒzZ4K'^dYA;J<1ԃ\ 1#˱$ ٟ=у,ey'Mm|üY /DLû:dAlLstF PPDu(\hC';`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝt,@,4MӨ@H)D D|xܻ/؉(P݈{؅(]>tF#!E:@| Ա3X̋;y ]Ov qobe@\D#剎;<p(0T:i>Ӂ1 p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W&" W R-pA6m o; {ם+QCs|u+Cu⊟DqT{Rz6`v,| H|lA %((G;4Y$3BoiA@8J"d2'iKvA}jhσЋ!:0UA ^9A~!!ah_;AGFDH \ $&<xa,w<@mBxj`DLg䘏0N C2YQ)E鐀qzF8H#>Q"~L@?XFu,~y#'aeTeq́`Y>b\t 7@`E=`)I5" ҅Sx[9K ,<~rH;/c=P@4Z (`@JFP̆X "yP,B&}Du&#.OYb1i\^p7-dH aP<aA EG`%QH"7F5<(FeQM68_~WET,] EdXhE(o`6@>bF*"ff v#2@P0:##o;"#H {LO@ͬb !B*BR" ޡA TN@&#f/b³)*xa bTZI^cj+ bX'*MJƮS:SRphΆCJ"$Rma.ꡙ(@$X=@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~"7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 0:I* kaIZe'+L-Dr=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$`!ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ez ĸ6qd"T'2@"b@)QF FA3C#B2({DE/0@$ !*Rhb3K3%BZeb e؊4A av` B sTjރHcG"`? ;F% i6;A@H)n>A q.`^NN'lxG "AK$Nc:'!D,!s//f$!dS/D$*e>C܁|";!$# $A G >=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`X@@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  B `k3 `k"`#F)xhz6@Ge$J a%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF "◒+ْ3.tNFp$EZ-!$A0h٠zx$$6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6::0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$czΓ/bb)(?B #v`'@F@*: @V 6CF*`c()gf"H3X]R@z`c(`-06W(2 > P=f1mw^yѡU]SO%r@\MwH#0.x%!`qˉ&0޼i|[("=<f;0(@&F[+(>azmf5 ac.AQ\W=~|7")b6"Iy[m] Q#)ԇ419 Ȍҿ>/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F| @"y@"r}'v}CBnDHbn@TSԁL%0 "С b1`?` JaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+pNY.B #7t[N@=vI8HLG4!%ߥ3*ݻrr7n\YԐ5T)ӕNWjV 5X]uB|Q4HESs= *X)d،6t=nQ>~!|v2OުDžO4X R-pm=!{o}P„5jehmp م ` !e_na~b"Hb&b*b.c2Hc6XYnp\4BE ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1sA3@B^@>EA>թXcBs8h s7 mMɪdu}Nꆓ.HPYt8@X$Bʠdi_j:"D yE!HВj8$:I)#|aMP`>#E  &0S en> NȮšt!>x;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y${=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) : d:D7A0/h;N5W;j%ɔ!:>3BDh~}ЦkUtHkΏCa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|8 z\ A*~̯ˇT d$nw:ʹ@, B!Z݈0&Qn P&{HHIO@D ,@$b Dp3_a6DJeBNB3}0!XWB@)-5 Ȓ8>8cq&80IV''v]mzWXVd(cs4D|C^uM/=Hh v@=` 7 ps,9ωt~Oq!P\бdh!3?*3%飞>ws#z{#!Y=QȖs򨬄XF~oStw,S|[9ާ`$$p@S̈́ aB%&no9#µ `} ?(PJq(<M&A1  ` aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"#@#P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vqZ" aqnIPt IOV<9<tY? IR@]F14&#p<4X)@V`71X# ED)OIm7 !91<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig% qwj,>3(5P 0`%&֑mo q*s=fS@[|Z@.v0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2-@jqqzOR%ߐoч^h7(j@@ : `ͪ $'PAH}ͅ0`gB0xRي"7W`zC($#:x p @%" ] P S) aUsך S#D&@ҩwS鲧e ߀Rb芭- ؎GmjdM<X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vɾ5ɒ,{7B `p; 38^|V2Q@Jeʃ7H@"iOYjp j 2ܶȻ!x,N0P" 12ġ'=_C'x& hvBgvG!!= kyT!59@Jm- (Beۚcc=Mm׍G`pce4IT%]$CI@{o5p`f1K#Z] Ey,Y燂L"*32hN=( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^30mk773/O $_7R+{n0 C a -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5_'}80h O]ZׂY185  2e[ F=3}==]ȁ@5GVz#v< i%oB/> Bwʇ}zM$Cg6x:d!2$C#DOD1EWdE_1FgFo1GwG2H!$YЬ@hb>Y.D 0[`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`suqx+Y F(YJ=u;U@2!@0RЧKC 3dQc z3F2ޱ ]R @aPdDZG-7D&>:`G (S@'j7H8Ǝb~FeCA{,c@M9g*@u*tU1цjU M\D <]؁xІȚ t!6b_1u!HoGeww#0 <{q-W:Rv24._a'XZ T@Mޑ4Y@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"Q!X !&@J$,0(C=xW a=%O\/ RCHy&A0 \@.x0&/P__O=@cl/? ƒu88jd X_‡c=@PZIf#8k$@h2+e"`ٜW"be,+p2 A=zJvֳmhE;ZҖִvF*#xN`p b $6qκFVo@0Q YWP).u ](TxMɛ vxFkTdt4{9X!h-P ׈ ~ X;~@pnk`- c@u.8HFϤ  CIu(`0o"k"FPtXX wȥ|DJI؀>:N X!4 zpYXƍH5@> +ۣ(HpOWl~M`}֒ .}8H n "s9?b@U`{P-npdTA3wx|Ӈ,)Έ< ƀF Ȁk~ ۓ \3` }x iԼ'\>8 `=PPQ%R5UAQ <0!uu`S\;#m_`a%b5V㪇.u`NN{6IZz BS)6{K=X\ x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!X{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH t`Hz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@(0ԄmmmRpIkip>ߖpySnDt)7SGɇOHYam66B=#G$/yۺv\b huX|7+,r|考9n(Zn$q ́d2Qq-u`Btx2JQ x F#Z]XdYMKa: pt. X2Ϝ2vH*Q' ,JPt@N(ljt聠0|))%tI K/0t5pn3T@TvfLJvivkZ P@oJ}h{{0r}׀,6~ /GL'p{$`0@z:]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'#gܳ ߻{=R,jaE !ɚE uҁB䃜WC>Pa@t^2D3 o>E v4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM;6p 0 exFF`} wшgo {œW€{􍠝jN=Ys!qs?O>cY> DOPL=vOSsy Q`;=cj%S@#@4;:Q; 3[F@:oF.4H8{I  2<0@ ,2:=~DAf lwL!H?)TNZgD\=|;"̔@fD [ T;4$0;2dt">x}IpCUPOZ+`HbԳ7^>Nw= wT=<MG@"n.SyHzn}S"y 0j x=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% : @^:l5rFX5^K};s̝k67h>0va=}hDU3DSn9:o[;T>*%f@:3 t@= (-exO:RSɎ#:fzk7 @=b dAUO?@L 2iߐ ߳H Hoe;޽ɖVI|d[vך+-+0AN"H @^>|wܽ.ʄ2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U'M!=@Pz8"zW.J:*p`0@"ݼC": CO,v  LGeѣO<P>ҡD,7>"‘FL=<9=½c@2Ȕ,đ/C`80HjЏUPS9@tL8KG4Gєx5.F}c2)3(V$>DYϐ!0x +'ZDIʤM%XyOB)\Z ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Pɢ A=yς6-iKkӢ=:hQ,#|ၑH$e:QB _79FX@?Ґ*5&5('>{c&YI`9b:XzóefM1HjRZ>  O|b:H7<;_[<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏp@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aQMDyL42tCǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJao]Simʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*&3`Dl؁9$>%7HreGhQ >ï@ԱkSv5(eDp L,HS*Dk[\!բ=Koӣ>=Kd4+ZIbQFգ 6XTk < @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ ODYWNCPԃ1$JH$4(!RO`"'H`\HPh \Jb+>!Hx@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;H,=>EpC(Ns0  D'EC-v̈́:r8]:L;T@> K?L^ "QäԕCC?XU@Y 8H@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_&aaCb.wC@'CT ;  RapCI,Ft=[gC:EZu;8=@WHC#|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CIO x$v-Nŋ>ԃ%D̀,qhi kԼa F4A]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F,> `È^D>@c7xSLIAtG@@fT@ ,7L`\MhA HԔk]N $C$@KYҫ~`F]/ /LgaHH|Ef($j*Dj Ujl\ ܃' Lfe]xyɇHCȂ>T@/G?ȅC'(@  &NATE$8Yt,ST$c ~7Tik0*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*(.쀝!͍j, ioboo$Fd(C,.C$p po52oqpt.'\+FKcpksp{pp p p p p ppq q=@.VhYnp`+?hUGk0qmQ_tkτ_1qo\qq r!ϯd4e&W ,R D+gc@ %O'CCYp@8Ato!@YoxmnKY*VL)HP^lk@A#8@ P>G@}(^E:Nrl=xo*|nS?m߀e $Cl Eԟ,b)B3tC;.CqY$3o.>T;FJ<H`La4aax Qu\?jvkCkBu@&9:$qELG D/vL8rpPptBS=G4N,LnPZ h$aV$>$\PhŴun4 dt6Nݖ@"H@,|=l_7NqN܆C]8NF,Ta?Xg{@YtkC}mF<@`@CI<PO7(r\gq QDn7,@:pd[CoNO8Æsn\I'haxu@t{ya8 :lA A>T7 F/FHg+@H9$NW !tw{ Ӄ,toVX4ހ]-8HBG$ DÚÖ=C< םBvԙJuDgO85P'ޫ H;tA(I=t ~ TttBo)o@xx 8C0,̙:dEu>2Cq:T<O:>`<%£$H2ECJ ȋדApF;:hn|s}/LtOŗŧD(׼MX7]|N:HƦH`@D(C >(e@ Id>ɰþ VRƑDWFUEYA&p$E_[\X>Hl^ 5|s:p2o,C M]C`_MiW^kyH|Y@)-{B0+@'b@$wO@(c.?t[N@=$4ݽU"Q̇: 'RD T9˔k^>vBwh7_B}Df*qa$MDNVT@|A b;>SBY/NI Ce[Z松 Qewouf`^Ǯn:\6JcÇ'VDw1Frz#vY%)'*J'|P8 )>LI; gki%dGF ׿ P ,LPl!P ) 1P );v0 !b آǃw @{D&HqExG JzoYCQ2LDdJ2L%JR9T?zX{)}x 9(̧\t@XTiG|0`MІ8`Lˎ!F$G |hl-C@!<F-ޱ QIQ @MQSX)%k {!&|<06'?z':x_X=A{ԅW^E ``(4 Gz֩@ V/Sʩ8? <+hawO IMQ*Foe@Y9l駡Zꩩ꫱Z뭹 IgMrY#`ވI@ `A{{PRJ<2 @PDʙ@GxJt5:0dgȢ[]xC1OPBTsאƨEȜLHd"Uf|, X4C=! F!;@_t«06x71 m#ؒMA|̄ʹ;Q-f1@9 \ )H AqB{Џ< / DPۯpF{t%-`6Ar'H3,Aa!7DX@tU|`j W}_XOcKIڐhI@ % ogP=rF0c',obY =1Le=PotAGI>!CV)S0g%V$ݩ3Lg+]!.2 c>PGFuUdAЖv_ـ1XZQI%bҐ}4#trUQΜ,@psiFE 9惧*@=wȢ>aĨ(m&G"VbCds[A `tL;zb VH1CuZ\QUm òC G:*+B mvg9ϙuq5qM[{$6/--zR?H(;(jt!)]'mzG1F߸o:h6_߃€?u(峴Q@H'"2CQG:tJKA" :nȽ݅3yFI !.#4,r"fA8 XY=ѽ>?E)kg=ρt7 :`c(JӉ . p;6P|  ^|$!dRB` .z 0X4јJ´%7*yI-Іyu;Z0@o ѓƿ:(`J"B) ONw8Vša\+Cf:0A"h%gBq8@#X4ƸGh8 !ޣ$= +LB8&`h? #n_c60aL J~%AЃ'F`nR7N@ A+@olq0upydlk vۀnXzk"ba`! LpkP !"F`!J (gG*qK9cTŸB1rlT(ށb?)Υ*h#:Cb ! $ @L +H`F8 AbC|f[Rq2a͈3ı$*"$`Ƀ6btƑ6 N!72A! űYI1J`?)"j{ 9>n.Mʢ+t@ɞر!" |$A q0D 9#1b!D>!b2@b9t?JA+ )0<,$PbN%Hm4=,ٴMM4Ni<$B(g*kH`/%B`X`NP{BtQQQ!5R%5Bڤ hi&5@,7Z.kh ?DU+ME|!zN65VeuViVmVwNSquc5ICI.t_S;uWYY5ZuZFWOJRү$F Y{S`8u]ٵ]]5^u^^^5_u__6`v` ` YZvaaa!6b%ub-b16c5vc9cb=6dEvdIdMddQveYe]ea6fHeefmfq6guvgfyg6hvh`}h6iviih6jvjjVjvkkk/$kvlɶllVlvmٶmmcVmvnnnVnvoooiUowp p pqPpwqqqIq!wr)r-r1Dr1ws9s=s_BsAwtItMpEtUwuYu6u]7vewvigavq7wuww9vyw7xw_}wxx7ywyyy7zwzzz7{w{{{7|w|ɷ||7}w}ٷ}}7~w~~~7w8x 8x!8%x)-185x9=A8ExIMQ8UxY]a8eximq8uxy}8x8x8x8x8xɸ8xٸ8x鸎8x9y 9y!9%y)-195y9=A9EyIMQ9UyY]a9eyimq9uyy}9y9y9y9y9yɹ9yٹ9y鹞9y:z :z!:%z)-1:5z9=A:EzIMQ:UzY]a:ezimq:uzy}:z:z:z:z:zɺ:zٺ:z麮:z;{ ;{!;%{)-1;5{9=A;E{IMQ;U{Y]9 ! ,fBBD^^\jjl..,nnl&&$VVT 224JJLZZ\::<**,zz|bbd>><""$ffdRRT664NNL~~| IJp@tprpĮnfHLDPLF@~xx$¸tnt0@XPX80L|(6L||. 04<@b\`BH@ ̜0(($00p|| lttx|v46@`bdp `~Դh\`86(Nfnpzfh0x.(80.l0.PXXFJ@x\@<<4nf`ʔ pfp<6УKNHJDv3|{Wi˟=:|ϑ./z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?IF)TV Y3:3(S!p Ih&QlIGqvdP;l(`堄jj_wP@E#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:.&H|@FAHn[Sdq%$-ښACQ:`,p;DϑhBx= POK~OS@:pPHZaypϲ,@ԃ@ԃ4:H:Î,2PX(6+ġ;<APHbG C@)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:׃B/j b !O3v=9;'B3\"7XOl{ܸ::wN  X>? C=ֱ |%"~L#!@@ $ ϐa |C77 +1AzP  {$uhG2ӱD (@C0USȗz`G3B BPa=np#=q t $ "J#>H1IHA?B SrI!݃>*`Y%@zs!|p؁'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1tx:&]jV$`A$ H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;g YU1V:u LmS&FD`MG=2Mj3s+nd$tH IE nr#!@?~jb)wcG*߭ؑtk\nV2Q`-H[yPDLZ* uYr0s#Vk>umJ#"ykMϊe2=cA?CXlA'8"xP3 ]gLoX@NH,0>I ':܂0`;dE8"0rYtY'uh`1Oey\+w\Y P,v*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lG)lLbiOl2ER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD _;WpBz4j{HdQpt d?KD9PT."pd<6Hb_}u\>e="&ثg :`qh@;Ԟc옍8&zkEuXP@k) H<ĨBC)$.2w=&-(7P O|  2t ! )HЏ{jC40!H [xie+ x!܇  ~@TT'EV=(= 0"P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R `rP+v02> h_P=@Ѐh b}~hQ \G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ( !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsqLLW` ym@pNI`j왡HIu$y'P27v)W mrwe\2*_*_ș:DZIG̢sR>.gm!-*.` r 0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 -40wQ0O1 dZJF"3@h/D?#u\"gJeP#0:蚮:,zT Yq$"AV*(PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R @a-{ 2;4fc.gZЅ( "%"]b*U$]ǭQp@H5Zqd =K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$Й@Sd&Z:A173p#7tc79,<0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mLc]P 5a P@Sq'K>ܓP$AӯEBd9wUrcFpgH6${`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛YB;z{F"r {gW w$T $zY(| Y- UCڵ*%"T{ vy :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ēCNA2 @Xս ½Ufܓ=d_T=.ޑ*S9=4OTH<~ *`RC(⍄Zڨ,{OcFx׆zk/P2{'w'YY1.*AJ*>ˇenK0sL24L4TsM6tM8Cgt)e x`&PI֩ p(Z`H*F{8H{`z *w[,Y4$g - ` v" 8p"ԛi&N= bz/ dq@Dl/ @2Oz%0!!Jŀ0[¬U]|${ p@J(2ǀTjwؙv b6 *(L[% Yt(LfU2d{|7|y @4ȏodQ ~ ҩ%|Cs$%47!j Q 5nc2Bu@ uHC $@V$Izvx8=GyBH?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd‰)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nq6b1a@ZH ԤP !uzaء_LoB߭Ckʁ/BFXu#bJ ,/L f#\*p;vAlu,dqSr(G&X=|pbz6iݛ^,4jvF!v$<[43- ڃ$A =0.T 2{OY "T`H.A(2ܸ@KjpHjB }E8]@BN L)@#r9{K<_>`1yͷswP-YH/_xcN!3uIUn?:h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ@v 0Ä(:\" 9gxH3%;FIDS 3 û ɵ0 ~{pDي{Вwh'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s`;' u1( zHq$ xGQYZ,[̇\\ g ӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ." @BS5` 1AcY21 5k:0J$.+ax+o`˫x@ RDb, ܡoMPL `LQi{ |KXLt!P FL!Rx0t e L܉Ph@< *;o0q 1ą6ͅ ʇi K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 68#ly*-*]2L%k B8{R"#!'hStX XY1-3#e$%RHu«с1@$ SXxYH$*e4D< 1]L }Ӓtզ(֭V NtVi$N#䜈(݊?HzԁI#tx( [5  h2Iѷ4x xy{|h$ 9<= bP*{u+C5LA [e5%"0h@DQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx8a]=cb'ч~(05sneWY=.(D!ntPO Й ćI @#IXj< ERdλw|Y6\{€F!wJYI{h ʠ!eR!&)hɁ4SpB9mRF"!""# z.4S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$? M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{YLV< rK?uTOuU_uVouWuXuYuZu[u\u 脞]2 Obc$H6av]v᲋⬉L^#_n3 ?W 1vw tjwvIݘ3w).x? }(h. kc th呂0Ӱ¿,H  =H.`efՅPHg3]y?Q ]7 sN0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4=oP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀.Sq{{V^ifN|Ҙ$W﷍{'|XS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4 &AeCA5Б=vC{bsg> ~"%i`PĻ"Rv!ٸ[t37b@>FSh|KAJEbrO;޼O5\+bXi-B]'ʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=UP+v P<<.тI2PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3Bb( A=,IC 7 N#A<|P$$ӉT`Rx=ФN=E68D#@Fl![@:+[F=b?KCE{O?@pD0T{n.NF;3ê( >( d`fwN+A+-b~sA s= D~4޳O'AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=]NdQO9[a> dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX pP2~>ʀHCA@G!wH %H#1`"j`,: !72 >~zpQ#gd5$ @2( n+aY"4 .|~;I @?$xi ^zlP 3x ^A& |dr$-2z;fG<:h@y|qc(Hzh (=5@t AfZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠NTֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,asf8z f >e>LH/` ^M ^Aɥrxh Cxr$LTzifRV^ pT)pK@A\" c H,a%FDQ}L$G1 }B+LdT)P1݋kv d0D) O9-s;wpd7 y|n$` |qH,A 9Oo׃>r|IoXc [Aacցk{>BM\Mq0HQ{ƛ*ppq7-. `/k6HPM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:a<[H=|2[m; !l#ʃi:Y?xd ߐA"G`03s7NB ![E#GFUG!LS8h)H r{ԦdCz%[ BYЃ>vu݇G(V&2|CK&@|<$GP7?^A Ra`\BD-5FCUD39A, ;ަO Oў/ I?Ȃ{ ;AY_A _!`%Y(MJCSL;5C8`V> EZy, r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b>-+nBXJahA4m @4B_v8 zLAA;XXPġ+b ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4Њ7@g%H >1A$MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"L xIeZR\CF47̋I@B8SEXiBP!\HdI>J:\7$ Gh$S2dHŸAHB afY-DzGD@ACDɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D(|CT&eAH'g#yzZ,D?XrC$()FH: f(;  W4gACGK*߅DٽmIiA|niE<& eF,GOAK;<-Yi&_BܟA0@E(ߎ aY> p #6Dt]ϢFA7NA0\*)%ȂXi~Z)M`E0})5g݃=< 2m#FhE4a~ V'(>4C(`T= #n&>?ܫ:,(_Ljr?:ë^Z7i>؃>8@C(@<ĞP(~GRjޫ:_ԃV L?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 R4CD?=@2 r.G|@*_[泪زJ^#GjA,YnBH.vwI$eFÍ$_: = (/bhrE .xRpZҮ1$DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-D0"x0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/̀ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtE99;DCAW"C=Xѣ24 RL3L=DE?\3F78@-x>2ކ#XÌ~Z@#C.X%A,Irdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,euBXZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`v 0l@ܱpz 91'Dg {B 7W?#`[|-ĦyBtC @:lDB%L#8;;t,,C̕@Kxo=Z?p;7JDG183#F3zwB@ 0kD7`hN@Ľ{B3xa| JKH; vC{һ&Č{,|B{2"/H_:%İ>H |K@X`>u+Ƀ/I3N0B[P½ 3 nCuS6!tޫ.:ӊzLz0,⃃+eμǎ_Z^' ZrZ'eUa`ûGu 0҄(U,#߁T9}KP%odG=πx Cwd预%YG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwÌn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /PHTu8> y YJ`XLҡd]6XgehjlݖnpY 8!S(P. L5SIb Qtǂ`F0Iu{5~%-MU-[d65uG`#1hHeQf2euޙ}蠅#5w-(c/#%`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.EAIӀaw4jZԗOST hvԣIRBAi XH-SPq2ȁQG'Qkep`?LpK D#HO- <7#!IT '.}IB;@땊8Ō !.PQSe={0ZI t 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[ 蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL=ěfbv+"&ӎ8"UG`٪*] $G@ @K{ *H)6d zX+ 0O40RP*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙA|` Hw(ڕnk|=ie/n t5:j!Kg {t * n#\ miq9rfRW-u=˜"@l +I_@G^cXAxD!_\faуCeP=ƫ(ࣅ !auzVBI;4|g=6B$%PC'! vLF|X0cЋAŽF|`$ЏFj`,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʰZBHĽװ؇LG]|`# 7B5H؁Lt׏$zTc-=1m:!"1`%}>C 7 C $E}C SCR0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…:k O$NFD pG:m$(#6 H(K  2ijdZƏL&I! !L P 0fk(- D"RA:8n86nC @ ‚ ƻB k !*A6`A4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ LD qqȐBN-gj$ X|_b[F Q[k @a-!<tΨUI)¬\pR.@_ Q!6DcX !"ᖬ0ZRI sR'w'Bz!n%l# * @-N$~%bMba c&b%!J*cN d ϖ!;!)JP瘔b  "((H<J XL. @1V-:daS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* P`BxʬZh%2j!##LH@%&I1K4Ũv`A1< 8 s-c;#AҒF,00@OH>L$0p!@emKkvI:A ԁI! Z  ҬmI !⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʤ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨnHQuU\Z(V:bB\FﵤoJ+@ V&II3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^#>UH`ho)ǬUr'r5(B@)AEod!("r5dL㇔iH7I敂f"C1Mb@6#DaA!N!ᑰ~7!(0u.!R.w+2ws;sU "tꐎ @ 0R>B|L!Pp`B5lIR,5xcI/R7Y!k@:Do7W5A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@$ D{S[ 6L&Z0A$XvT a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@e *m5A ‎t)$j ĕq)Qkp*":!$ x9nVZMDJ! DZL6 eaˀ$` g]:2  Ha̗Zjʬ"R=d** cxWjH//0#֠!D@^)"@1RC{l#K@ :> cC3,6DB XC.P*LBY hL$?-׿ "cKC=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!"`!@*|⧇VY[ٟB:|aDY%AhMdAJ`F!?xޡd0RGLUQ \N%맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7<@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!"e27D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevة(iH&7(uGͺu2>G` `ʽ{ؽK<| N= { :j:|c{8”9I|3'w4Bw_w4hAY2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^@w$!]&dÐ޻9s|Uݽ|CkD! Ll&+|޽*AF#\×vܕ6U3>3C>tR8=L8gv'v7cg|F=C>pp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(dՉ\Jhh.h> iNJia Qa0@= d$=$uO \7p1P;' _ #@GXΞ}\>X:B$jk_ȲFtՓV;jUS0ɏ/ k>[=׻줻n=v|a@ߨD'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճ4(hqF= 7L3_`Ƒqe:SFVSXYWAFqsA?va:@X_c}߶c+>!?o d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF(R!,@m=ԀLl|Q0># jDTq$+K7 &h, r,R.Ðǘ,#XffW ΙvCa&Ι啈h]B hFv&%C#K_ Әt4Mo?4HcWF4`* #l ͇w 9R{e ¶$ 3B)tm@,E;%I AC 1|Ax|ȕb>XԵ5#Q(V-7=D aGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]ua$L@AҬG'ڂ iYRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY:86wD1t3^)yK̠*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!=iu="I1phMLo)ɳ<΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE;Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! PNXaZj;.H".;P-/c54'eg*A !Cd1 RF $DCyrFoپ]xGc GaZo~FeA1BdG0K_Z Sd-i*~Bf$L Bz 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`.* Dp@K+а!: Q }ixo 5=5 X!]'>"1,$4[@ *՘4E9$):~^S"iukG%Zw,zh S;~%[(n>5ηR*X"EtȂ|I!޲u T-{7;9KiyKv+N@f%S^G`bk/Ǽ@`t\@9" (F! P`_ٵ2, Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[M&=e,(}6➔$*A~0Hw`( 5I0Cw.Hmz 1;+d|Чu8w  q| yi 6݄3rɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet8̴M ;+=@{RsBGz6w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz.u9@@oӊSY Dh8+` ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG .$;nww.:43Zj;$ P|QĬzKذo! 4$@ 1!LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T6 4taG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19u( ?6%5H +@4&%A Jҕx/Yh>"$y3PoH7&ᨁC!Ux  wȸ@ &*5؜,9 Dp,Q)3Rj#Y-ɥ.aYd৐NnB':P;pI"Z M:OR Mk4UU@ XqD"17ATI CmbLg7 TKFr岘41] A FId~H$|G?+zH{@JGFmUe:JaT2Pn |`=պI76З(r7'q)Շb[_p r􁏒` `H.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ((5>jH -r/yK:c,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4"Y.'qQI`s#?8xQߙvG|I5|"Jx- .o e+}E?z@#ֻJ.c0}F APC@'1.ۅ`5d>luVDj\+оȝ}ُ::hèo+85Pnޓw,)=x `3DT+۩ Cz)_ wH yjAm NmAPho h(vHl(H+vЖk~V٤-~wȽ Xz4ʐAxA 2TAtAy%dB BbЁ2[789\ߒ;%#H@txѠ*fX+`b|p~ c| 룈HȽnabH ' +P|!ЈxF1z0ẎZ|[T]2:jkFw[ P` )|>I dIȣ-IHd XJٰ 4 6y hGx>wx{ Gtr* Hp@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jj t˷˸G!w聍 &N ~~ )  Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w@eP+lq vYfhQ?<1tH$ί_tN ?ė|H(%;}x HY> x (\ РQ j#}P Ia9$@xH(f 9L o4"5#ERlNP?܀ȞɀxN YR$Cu`!v'(J$|$DH5Egxp ';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.?-Y#;1Jaf\zvKzT:FL ǼUhM(Rh;@ ևv^N{0!9e~Ȁz ,՚IiPike؁  &7{xO@|}XE(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYP() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V?( <1 1m}h.<9KkǐHzo8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q} HTWu/:$=h p t_Vi,ʣFw$f @y>IgW|Xy7C \y˾D`ޅ.'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF PӯdN+9Q9˸O[hN/wXÀp'y/_fġڳt 聼!)9FHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - &Bdus(ѢF"Mt)ӦNB*u*ժVbͪu+׮ӆw]𺐁 ёNV꽙yo]nKwݼj޻ݟ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwmSzC'1Twc5áWL-Qwų~A_j~-NdUe CFA8uVMP9s,]P$c r#X'+آqφ)N?d0A܎ޏ|`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=D`O$Vԁ;;vN0 S@:HCb7Bq^ݓIBK&%#mj*S7PX'tD~T0@#p-j]]Qkcf3pCA"XA'tRFtF>:y3jެ#At ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p d{# E׵|;ꑵJqz=A ܃CS_ק:P>#;ϥts*>3;cS=C0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xlAz%K6#j&afw<)>шo ,x PD$)A\Eݣֱ;$Џ|$G> !fc,#8@*n Q fщwڡA+nēLdIG{(|KYL_ q %\&< eJ ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 a!H&sv ; @=E HgVH Q@H蔭XUy@i Y8= M%z D $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>:wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS21@_p 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53 _T^1z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}8`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u$^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?,C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7 zĉu@=QAl<\>d!:@SU ]^ɥDHE; Aa|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp? @ p^s!\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA =$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ$0Lndlc (u,x::IP3LlFZDօ<: #=e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH 0:*ę/ }_z2l@thI*,q"DvW՛.") $cB c(RDD0*MԃQ0bɆTUi\J=u\IJ~W$$QD܃yV2+CDjშRk!%æ4$ C?)tNT>ŪCD@DXRaY}; B?jĽTR'AH$yROkC=liBvƙ`J=Sce^A ``)֖  C#zn ibHBܔD@ܭX;<, @0Hح4tI:HC-톕,ےVfd']=|@,;|؂A$H]4: gF-,ڎb@*ǩt-m-H@:@ n`.;nҮ`u&f$1,>^J:l@Z"4tuH:T=tA)dfK$@ @'4lO)T0'II):% p 0 @7z>EAD@I>î @>R2D,@?/EHK_dHI0^>m` ?h@*@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊,KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`G#æA(COrU7L:ۣl@++F5'F4s)%lC" HT1*3pBp;pJуqb&@ 3E@ 4=S0?UHAZz>RüW,AԈ ~Kn|R1 BPu8̳lA|D) ܃@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ3=X@v}C$C$YTI&]U:lBt@}>ThxOA $!^C=TA@ݏDXcJ:ßO?1@@btA)-BmDLKU#=0>)rUA׾>}-,@##t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@A& "*3޺ c"{10Իo_)&.BAL^0 Q lB$"w&BJwDbF['d u:+>>xqǑ'WysϡCp+\i}p{@:?/ |i}WYnaYf"+!FI xJTQH `%:z櫱{$yj1Ja xBI'D1SJG @ށ@l'N\o!_MªgH1J n1!%@oVPiơ*q7+i5F ´dgGч0 !y'/Թm=4$G^! 6;bgG,_}Z~P" 0dRr @@=PSR=jNPJh`s?. xG=*@v*Tp aHHcv#$Hzyb۲&IL_1S 1 J=/!:!! xB9Αu$"`=E7`v38`]GDDH)I."oA dD$呕@*H}* x"H,TtH GB c c  hBB7CƷ ~r*ZA@+OyΓ=O% Tj4AP. upIĀgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:to5O[9zYgVCx_X\Q /$Ѓ8N'Gw&ba5exjtM#C4M=."7 @>d%D, HHj\Gء_B0E tzpzYQBҵL`؀8H6&GVWW`:T:  •`zq{0c}>!TtiZzUGbav5"` \h c!$0=aYyG2Q4CpRd!9P'CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆH"Qah!"Q02 = 7} u-SV3{@ @O } 6apBQM 2@tvMVtr"iF2 TBJ kݓ@B([FA($,@+ U|# @C,x$x,cLJjtа `C?bP tp!H߷guoDY.3zlK@8|`CN 46P|L`\ 1UStUJC ^Βݐ@3. =ЩN2 E`@%RtϞW):6X8Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC Pc=K:@g/N(I& !pD!8d$J(Y,!v"N** VAp즱bMNdD*gM6Kb!Y:AzB#Ai,!g0#>@xɰ $`hPXa!& /߀0 H!Xa{< : !]!P!ڧ_#*7R I" !| 6(dA++T( !@&L &{A @P~ޤ1"bk gFL *@j6 G#!}Rh)pamN/¹uAԠ`]*BdY< B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'xƯMejGH D`Rd8 -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8HH YHށ>-F%( %8> R!H@6@+\s88$`KH2T0@$ n6` # ಩>B$&Ca&v|2!'B4"2 }'U46/QX8 $($7)^H|ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&Za7/軄& ^B"X.Bq:PEuTSab#Ԁ3[\#$0U8"̱#<SB{HuXU - ;٢T$@:ft@6pXɵ\ QF vne:8`^s rPS 'Ӑ@M| !Z HЉlr "z#"|m5$S!֊ .2j% Z͵g}6&A#Uf21d0Ni2ءg vVMZRg?xn~!(1t-tw~m Pj>gRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0$@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-A(Nd>8PeB9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!zh0!p PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!rI6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p`֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫ<འqv-^t` -z7 *G :ɪA:u `+{IS) ةAQO+װc˞M۸sͻ.{ Bn|u~tu [z%W̝NBtFvфxs T}A -^AB|0? ($h(,&N,vNsѳv $A8@ CC/Td5ިA|c .4>ܗOi7Xgܓ2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*APE􃏚>wYʑW;Џ=N=x+ ×k7\ 鿗IXjA@B ",Wlg!FI>@ܨ:[:`\8(3{6_QO_B`@P8{#>R~o?_ue;DW0HM&; ؜-_Sތ7G.Wn?:!g砇.褗n{;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGH@d0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>)GIwH baŽza%D7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ E@{l pd>Cc%%䅃Lg@M% b(9ẋ>ς @h 4ұFt\aG ƒ t`GJTuB@5Ct%@R:QĢpV! 0㮂 5gv)^ zHuwS0KCôbƮ'ODH ؈ox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ %P*k$" :djmv2(|qQ"vs@ Nܣ Ňd9DAJYN0|脨F 8 @YD #pLsUO3a!%K oPK$L$Y\q0 k4/{|X*PlB: duh='P.w8rARu Ǜ b-*-c,ad[]20 3G$''Q24G|HԹq  fABŰg TT oP1) :tblh T/dwbńϯQ j4\XG< AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fv@CY ,\Y(Yz , A+:M zd~,cJ7y*M}7oHΑ9!cA`DB1қg>Y^x+EKUR(ȣ;qAH t&U=S{aE/|6:r e!Z:BF1 `<zfʋ4)P(?2< zb}  hjZ[ai v aDz7X&Ydˠ A%pGvq %8 C w?"# $P g\E?ݔ@AV212W*e! bK"2"X">(rS}g2"SR`xzXOJ )tb1G r i@tb2A] ON(LRp@ Nh ` AX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L 4b}7сDS@qj+R+AvDEvj``-b- H\!Et*>%`E*%υ< `& `T"l.7" BBuPTwLe8**C@+e%p 9}2%p] y0/r/b,p`dÃ06c5h0 C 1؎>|cm $*%`'2<^E@ H22v5D@8o:v#t#+.E@ 9F`29PDΡ=48& 3!Ls2F -1s50#MWXEYܐV 6m6AeDivӇ_X#GP8  9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;I@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O=؊T PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گu0 fiLSGj֌A@Up%f VjKsjh yv(4 0eTe]qvMGd0qE6"ȫN*{%wr0SRvE;T+FЀ{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾B]O /~$ x:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2 . +\}Ԡ0yp,iПfP q0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"pq=P5ɑʢ<QAhjcʂ@\`lhQ,˺\06`VE(wUtE 1)7u# 1Dea1K% ]0%.J 7 @6\λ<4 D(۱bzpHZ+}乖ȒQ&;B"0:,K9^PK [2 .`Eʊ Esѫ;ukBP 0q%$t@v̲p^ alNͤ T(8!LB9PWDh(P qzt`^=IBbs@U' ԧRZJ"u $=:G9S=unUPEE4P`IuQ=PX O;0!mApc`'#CrpǍ)'p?a@4h'0fޒ}Q 6_ו]|1항P\:&$f򭩜#{pa \eP0]YVZUĢr.F :[թqa@X#i(3=cpvv8 Υ. *I.KkTIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2" ngĝ$j斒V (!3.yՒpJEWi&@dkto7pפnբ d`Y[~Vt%m" p-*°s ʧa*̢vl8yM'H' Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-g o;h O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowH!~z&w]{s }(;| ^EUa{0$ ;(e$H݅"$ܓ;cP_:]巹ה d5Dv2'Po tܓBz [CsѥO^uٵows0ûz𽻧a!I ~TЉ; ֑vJG~g `b!|P3J}*Po G0~J!9JǸx'{6%!AS({H@ K!ėoZHz$k!nN*xG>Hoda!|#PXа{ BtQH#tRJ+RL3tMF'}jQ8TU3*YŬJ.zatz{'*@\YH  {'8Xu0! MX{!%.g6 1wܫ}Fʁ.̳R`1_~LȃzA3 SO"[؛7 R~чz`z `H2fsyg{g0`h@J{b`jzkkƔ e &aKeҶn{oo* W.kgq#|r+r%pIe3r$7A^E|@)t@wd)MyJT!40!Z: `3vR@?_Z `Au(1;&CpD0D*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|,HjTF̢qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^iQ0x@>0`8@&0 \,gRt[QH1|@l C3(a:ῥc62ĀG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6CP{ kVWd!9-ekيfցXt t*B&VbE9K?Dm\B.x4`GX9'#) $b[~:Ap; "Ta@5$yሜG G3BQz m&[(Or|匜e$,F0 ` 'Ubare2v=U 8BrKzLЋft\C ,E4wfhґ9J݌E= lò Gd2 UBH) Aj<臜}ld'%#Fs`d/Bfp~"+CdֳRRpESVCX@\(Iq~#H"Dbwp7>9 x-EHSKX ]T&ހ 0@`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>@,}Czt3EF;v*P&[ H`AͻG=uE:0"N YW#W*3 ˈ.A#Y ˇؠ5r? " @ #Q!؉kqe5 J6K: UA ;7@/ |pUzkM cX (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 DA*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5eG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kaʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-H!@xC|~@YꂠTfXE^n9(MƱStd @}X|#}pup|Xv .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{@MT#Ai 5leKof=w#oˇd @)7[ .(rq|#B!Y"x^|@D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4Ddz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@KiؽwXݽuⓆa 6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzzp`œ '"uB ;#># :%> )"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>AAOp UvY>0@:(>mp Р&tE5GhCƵL Y*Wmc %, A3YnW`dt@q{Ϋ4:"$=f,J;-Z{-jm9;C;:$Td7RwX.[:K ]&=PO 'A):PLM:S+: j>0pTq'r/79uq]N{"NLI*L0̥9Bӡ@!4 },)j}©3@:Dy^wJC ^(@@~^i7:80@#AO'LzT=)zXADp(MqptKӇhr\goB@ᡤnA#|i?e"ԁf?(< Eoc"Bn CB=V(} a| (E 쀂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(U`'RLpz(ЇEpы`cS 2 D=⠆uCO1v5^[J l?k`n;zCJ # 2:~1$6yNF"H"} #Z,5ɂ%/-Eb\c,H0eɂh@3(PB|@TM:Q+[ċHgetQ D+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CqP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0츧>drqb\i>1,!9PJ8EN/hON;L宾ax@ns; ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7DCCU zLh@:@zDB胹mXC̮ԝ|:Wd,L ^ t/| m,;tũZiZ L@ԣ`D D]ʆB0@MO8;X.^ƫM]kՃ,pL`‰dBH]lDDBNL H OB|CI*CZv(U'*Wxɑih>XG!D>|CYeP5fWzR{"@lD6Pyf GWB)B@A\A0Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮ ELl;,A$ChEm}Ga@1KN;Tܱ&k<ԖtH:H9cG^^=L#]P.j!<*С^}aD@ 9*k'0kz=NH!@C?bD*iAð@lNLlR mD|lĊ,WC = >}KIN,ҰzBC)ӡE==ElrjJYUlB+~ld$sAmY @+8]@)@,Bס" رÕJA&..6 %hN脐`<VzD@#Dd@܃;[BL@AnIOaO0^M MB\PPan.FCBvεc,HĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/cR>H HWH2p|zxHCmHCȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅\.#tB&'2((* ;tr g7Q@D)B#h$>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VHC&|z&׹V+/:C2rhGoF$+$K @A#8@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP> ESp!0NH@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG,<>P1m^ EP4Y^> h8Ŭ;#t>tl2̸V%hew?w' ENHXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TtLY&Gv]"6JxL CEC'I*X}JkDdJY=$LAC/l"05Z Pr mX93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZU'zLݧW

i/S C>!˃ &jAoT7CAÒzZ4K'^dYA;J<1ԃ\ 1#˱$ ٟ=у,ey'Mm|üY /DLû:dAlLstF PPDu(\hC';`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝt,@,4MӨ@H)D D|xܻ/؉(P݈{؅(]>tF#!E:@| Ա3X̋;y ]Ov qobe@\D#剎;<p(0T:i>Ӂ1 p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W&" W R-pA6m o; {ם+QCs|u+Cu⊟DqT{Rz6`v,| H|lA %((G;4Y$3BoiA@8J"d2'iKvA}jhσЋ!:0UA ^9A~!!ah_;AGFDH \ $&<xa,w<@mBxj`DLg䘏0N C2YQ)E鐀qzF8H#>Q"~L@?XFu,~y#'aeTeq́`Y>b\t 7@`E=`)I5" ҅Sx[9K ,<~rH;/c=P@4Z (`@JFP̆X "yP,B&}Du&#.OYb1i\^p7-dH aP<aA EG`%QH"7F5<(FeQM68_~WET,] EdXhE(o`6@>bF*"ff v#2@P0:##o;"#H {LO@ͬb !B*BR" ޡA TN@&#f/b³)*xa bTZI^cj+ bX'*MJƮS:SRphΆCJ"$Rma.ꡙ(@$X=@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~"7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 0:I* kaIZe'+L-Dr=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$`!ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ez ĸ6qd"T'2@"b@)QF FA3C#B2({DE/0@$ !*Rhb3K3%BZeb e؊4A av` B sTjރHcG"`? ;F% i6;A@H)n>A q.`^NN'lxG "AK$Nc:'!D,!s//f$!dS/D$*e>C܁|";!$# $A G >=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`X@@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  B `k3 `k"`#F)xhz6@Ge$J a%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF "◒+ْ3.tNFp$EZ-!$A0h٠zx$$6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6::0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$czΓ/bb)(?B #v`'@F@*: @V 6CF*`c()gf"H3X]R@z`c(`-06W(2 > P=f1mw^yѡU]SO%r@\MwH#0.x%!`qˉ&0޼i|[("=<f;0(@&F[+(>azmf5 ac.AQ\W=~|7")b6"Iy[m] Q#)ԇ419 Ȍҿ>/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F| @"y@"r}'v}CBnDHbn@TSԁL%0 "С b1`?` JaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+pNY.B #7t[N@=vI8HLG4!%ߥ3*ݻrr7n\YԐ5T)ӕNWjV 5X]uB|Q4HESs= *X)d،6t=nQ>~!|v2OުDžO4X R-pm=!{o}P„5jehmp م ` !e_na~b"Hb&b*b.c2Hc6XYnp\4BE ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1sA3@B^@>EA>թXcBs8h s7 mMɪdu}Nꆓ.HPYt8@X$Bʠdi_j:"D yE!HВj8$:I)#|aMP`>#E  &0S en> NȮšt!>x;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y${=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) : d:D7A0/h;N5W;j%ɔ!:>3BDh~}ЦkUtHkΏCa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|8 z\ A*~̯ˇT d$nw:ʹ@, B!Z݈0&Qn P&{HHIO@D ,@$b Dp3_a6DJeBNB3}0!XWB@)-5 Ȓ8>8cq&80IV''v]mzWXVd(cs4D|C^uM/=Hh v@=` 7 ps,9ωt~Oq!P\бdh!3?*3%飞>ws#z{#!Y=QȖs򨬄XF~oStw,S|[9ާ`$$p@S̈́ aB%&no9#µ `} ?(PJq(<M&A1  ` aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"#@#P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vqZ" aqnIPt IOV<9<tY? IR@]F14&#p<4X)@V`71X# ED)OIm7 !91<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig% qwj,>3(5P 0`%&֑mo q*s=fS@[|Z@.v0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2-@jqqzOR%ߐoч^h7(j@@ : `ͪ $'PAH}ͅ0`gB0xRي"7W`zC($#:x p @%" ] P S) aUsך S#D&@ҩwS鲧e ߀Rb芭- ؎GmjdM<X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vɾ5ɒ,{7B `p; 38^|V2Q@Jeʃ7H@"iOYjp j 2ܶȻ!x,N0P" 12ġ'=_C'x& hvBgvG!!= kyT!59@Jm- (Beۚcc=Mm׍G`pce4IT%]$CI@{o5p`f1K#Z] Ey,Y燂L"*32hN=( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^30mk773/O $_7R+{n0 C a -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5_'}80h O]ZׂY185  2e[ F=3}==]ȁ@5GVz#v< i%oB/> Bwʇ}zM$Cg6x:d!2$C#DOD1EWdE_1FgFo1GwG2H!$YЬ@hb>Y.D 0[`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`suqx+Y F(YJ=u;U@2!@0RЧKC 3dQc z3F2ޱ ]R @aPdDZG-7D&>:`G (S@'j7H8Ǝb~FeCA{,c@M9g*@u*tU1цjU M\D <]؁xІȚ t!6b_1u!HoGeww#0 <{q-W:Rv24._a'XZ T@Mޑ4Y@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"Q!X !&@J$,0(C=xW a=%O\/ RCHy&A0 \@.x0&/P__O=@cl/? ƒu88jd X_‡c=@PZIf#8k$@h2+e"`ٜW"be,+p2 A=zJvֳmhE;ZҖִvF*#xN`p b $6qκFVo@0Q YWP).u ](TxMɛ vxFkTdt4{9X!h-P ׈ ~ X;~@pnk`- c@u.8HFϤ  CIu(`0o"k"FPtXX wȥ|DJI؀>:N X!4 zpYXƍH5@> +ۣ(HpOWl~M`}֒ .}8H n "s9?b@U`{P-npdTA3wx|Ӈ,)Έ< ƀF Ȁk~ ۓ \3` }x iԼ'\>8 `=PPQ%R5UAQ <0!uu`S\;#m_`a%b5V㪇.u`NN{6IZz BS)6{K=X\ x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!X{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH t`Hz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@(0ԄmmmRpIkip>ߖpySnDt)7SGɇOHYam66B=#G$/yۺv\b huX|7+,r|考9n(Zn$q ́d2Qq-u`Btx2JQ x F#Z]XdYMKa: pt. X2Ϝ2vH*Q' ,JPt@N(ljt聠0|))%tI K/0t5pn3T@TvfLJvivkZ P@oJ}h{{0r}׀,6~ /GL'p{$`0@z:]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'#gܳ ߻{=R,jaE !ɚE uҁB䃜WC>Pa@t^2D3 o>E v4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM;6p 0 exFF`} wшgo {œW€{􍠝jN=Ys!qs?O>cY> DOPL=vOSsy Q`;=cj%S@#@4;:Q; 3[F@:oF.4H8{I  2<0@ ,2:=~DAf lwL!H?)TNZgD\=|;"̔@fD [ T;4$0;2dt">x}IpCUPOZ+`HbԳ7^>Nw= wT=<MG@"n.SyHzn}S"y 0j x=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% : @^:l5rFX5^K};s̝k67h>0va=}hDU3DSn9:o[;T>*%f@:3 t@= (-exO:RSɎ#:fzk7 @=b dAUO?@L 2iߐ ߳H Hoe;޽ɖVI|d[vך+-+0AN"H @^>|wܽ.ʄ2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U'M!=@Pz8"zW.J:*p`0@"ݼC": CO,v  LGeѣO<P>ҡD,7>"‘FL=<9=½c@2Ȕ,đ/C`80HjЏUPS9@tL8KG4Gєx5.F}c2)3(V$>DYϐ!0x +'ZDIʤM%XyOB)\Z ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Pɢ A=yς6-iKkӢ=:hQ,#|ၑH$e:QB _79FX@?Ґ*5&5('>{c&YI`9b:XzóefM1HjRZ>  O|b:H7<;_[<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏp@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aQMDyL42tCǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJao]Simʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*&3`Dl؁9$>%7HreGhQ >ï@ԱkSv5(eDp L,HS*Dk[\!բ=Koӣ>=Kd4+ZIbQFգ 6XTk < @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ ODYWNCPԃ1$JH$4(!RO`"'H`\HPh \Jb+>!Hx@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;H,=>EpC(Ns0  D'EC-v̈́:r8]:L;T@> K?L^ "QäԕCC?XU@Y 8H@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_&aaCb.wC@'CT ;  RapCI,Ft=[gC:EZu;8=@WHC#|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CIO x$v-Nŋ>ԃ%D̀,qhi kԼa F4A]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F,> `È^D>@c7xSLIAtG@@fT@ ,7L`\MhA HԔk]N $C$@KYҫ~`F]/ /LgaHH|Ef($j*Dj Ujl\ ܃' Lfe]xyɇHCȂ>T@/G?ȅC'(@  &NATE$8Yt,ST$c ~7Tik0*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*(.쀝!͍j, ioboo$Fd(C,.C$p po52oqpt.'\+FKcpksp{pp p p p p ppq q=@.VhYnp`+?hUGk0qmQ_tkτ_1qo\qq r!ϯd4e&W ,R D+gc@ %O'CCYp@8Ato!@YoxmnKY*VL)HP^lk@A#8@ P>G@}(^E:Nrl=xo*|nS?m߀e $Cl Eԟ,b)B3tC;.CqY$3o.>T;FJ<H`La4aax Qu\?jvkCkBu@&9:$qELG D/vL8rpPptBS=G4N,LnPZ h$aV$>$\PhŴun4 dt6Nݖ@"H@,|=l_7NqN܆C]8NF,Ta?Xg{@YtkC}mF<@`@CI<PO7(r\gq QDn7,@:pd[CoNO8Æsn\I'haxu@t{ya8 :lA A>T7 F/FHg+@H9$NW !tw{ Ӄ,toVX4ހ]-8HBG$ DÚÖ=C< םBvԙJuDgO85P'ޫ H;tA(I=t ~ TttBo)o@xx 8C0,̙:dEu>2Cq:T<O:>`<%£$H2ECJ ȋדApF;:hn|s}/LtOŗŧD(׼MX7]|N:HƦH`@D(C >(e@ Id>ɰþ VRƑDWFUEYA&p$E_[\X>Hl^ 5|s:p2o,C M]C`_MiW^kyH|Y@)-{B0+@'b@$wO@(c.?t[N@=$4ݽU"Q̇: 'RD T9˔k^>vBwh7_B}Df*qa$MDNVT@|A b;>SBY/NI Ce[Z松 Qewouf`^Ǯn:\6JcÇ'VDw1Frz#vY%)'*J'|P8 )>LI; gki%dGF ׿ P ,LPl!P ) 1P );v0 !b آǃw @{D&HqExG JzoYCQ2LDdJ2L%JR9T?zX{)}x 9(̧\t@XTiG|0`MІ8`Lˎ!F$G |hl-C@!<F-ޱ QIQ @MQSX)%k {!&|<06'?z':x_X=A{ԅW^E ``(4 Gz֩@ V/Sʩ8? <+hawO IMQ*Foe@Y9l駡Zꩩ꫱Z뭹 IgMrY#`ވI@ `A{{PRJ<2 @PDʙ@GxJt5:0dgȢ[]xC1OPBTsאƨEȜLHd"Uf|, X4C=! F!;@_t«06x71 m#ؒMA|̄ʹ;Q-f1@9 \ )H AqB{Џ< / DPۯpF{t%-`6Ar'H3,Aa!7DX@tU|`j W}_XOcKIڐhI@ % ogP=rF0c',obY =1Le=PotAGI>!CV)S0g%V$ݩ3Lg+]!.2 c>PGFuUdAЖv_ـ1XZQI%bҐ}4#trUQΜ,@psiFE 9惧*@=wȢ>aĨ(m&G"VbCds[A `tL;zb VH1CuZ\QUm òC G:*+B mvg9ϙuq5qM[{$6/--zR?H(;(jt!)]'mzG1F߸o:h6_߃€?u(峴Q@H'"2CQG:tJKA" :nȽ݅3yFI !.#4,r"fA8 XY=ѽ>?E)kg=ρt7 :`c(JӉ . p;6P|  ^|$!dRB` .z 0X4јJ´%7*yI-Іyu;Z0@o ѓƿ:(`J"B) ONw8Vša\+Cf:0A"h%gBq8@#X4ƸGh8 !ޣ$= +LB8&`h? #n_c60aL J~%AЃ'F`nR7N@ A+@olq0upydlk vۀnXzk"ba`! LpkP !"F`!J (gG*qK9cTŸB1rlT(ށb?)Υ*h#:Cb ! $ @L +H`F8 AbC|f[Rq2a͈3ı$*"$`Ƀ6btƑ6 N!72A! űYI1J`?)"j{ 9>n.Mʢ+t@ɞر!" |$A q0D 9#1b!D>!b2@b9t?JA+ )0<,$PbN%Hm4=,ٴMM4Ni<$B(g*kH`/%B`X`NP{BtQQQ!5R%5Bڤ hi&5@,7Z.kh ?DU+ME|!zN65VeuViVmVwNSquc5ICI.t_S;uWYY5ZuZFWOJRү$F Y{S`8u]ٵ]]5^u^^^5_u__6`v` ` YZvaaa!6b%ub-b16c5vc9cb=6dEvdIdMddQveYe]ea6fHeefmfq6guvgfyg6hvh`}h6iviih6jvjjVjvkkk/$kvlɶllVlvmٶmmcVmvnnnVnvoooiUowp p pqPpwqqqIq!wr)r-r1Dr1ws9s=s_BsAwtItMpEtUwuYu6u]7vewvigavq7wuww9vyw7xw_}wxx7ywyyy7zwzzz7{w{{{7|w|ɷ||7}w}ٷ}}7~w~~~7w8x 8x!8%x)-185x9=A8ExIMQ8UxY]a8eximq8uxy}8x8x8x8x8xɸ8xٸ8x鸎8x9y 9y!9%y)-195y9=A9EyIMQ9UyY]a9eyimq9uyy}9y9y9y9y9yɹ9yٹ9y鹞9y:z :z!:%z)-1:5z9=A:EzIMQ:UzY]a:ezimq:uzy}:z:z:z:z:zɺ:zٺ:z麮:z;{ ;{!;%{)-1;5{9=A;E{IMQ;U{Y]9 ! ,fBBD^^\jjl..,nnl&&$VVT 224JJLZZ\::<**,zz|bbd>><""$ffdRRT664NNL~~| IJp@tprpĮnfHLDPLF@~xx$¸tnt0@XPX80L|(6L||. 04<@b\`BH@ ̜0(($00p|| lttx|v46@`bdp `~Դh\`86(Nfnpzfh0x.(80.l0.PXXFJ@x\@<<4nf`ʔ pfp<6УKNHJDv3|{Wi˟=:|ϑ./z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?IF)TV Y3:3(S!p Ih&QlIGqvdP;l(`堄jj_wP@E#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:.&H|@FAHn[Sdq%$-ښACQ:`,p;DϑhBx= POK~OS@:pPHZaypϲ,@ԃ@ԃ4:H:Î,2PX(6+ġ;<APHbG C@)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:׃B/j b !O3v=9;'B3\"7XOl{ܸ::wN  X>? C=ֱ |%"~L#!@@ $ ϐa |C77 +1AzP  {$uhG2ӱD (@C0USȗz`G3B BPa=np#=q t $ "J#>H1IHA?B SrI!݃>*`Y%@zs!|p؁'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1tx:&]jV$`A$ H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;g YU1V:u LmS&FD`MG=2Mj3s+nd$tH IE nr#!@?~jb)wcG*߭ؑtk\nV2Q`-H[yPDLZ* uYr0s#Vk>umJ#"ykMϊe2=cA?CXlA'8"xP3 ]gLoX@NH,0>I ':܂0`;dE8"0rYtY'uh`1Oey\+w\Y P,v*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lG)lLbiOl2ER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD _;WpBz4j{HdQpt d?KD9PT."pd<6Hb_}u\>e="&ثg :`qh@;Ԟc옍8&zkEuXP@k) H<ĨBC)$.2w=&-(7P O|  2t ! )HЏ{jC40!H [xie+ x!܇  ~@TT'EV=(= 0"P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R `rP+v02> h_P=@Ѐh b}~hQ \G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ( !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsqLLW` ym@pNI`j왡HIu$y'P27v)W mrwe\2*_*_ș:DZIG̢sR>.gm!-*.` r 0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 -40wQ0O1 dZJF"3@h/D?#u\"gJeP#0:蚮:,zT Yq$"AV*(PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R @a-{ 2;4fc.gZЅ( "%"]b*U$]ǭQp@H5Zqd =K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$Й@Sd&Z:A173p#7tc79,<0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mLc]P 5a P@Sq'K>ܓP$AӯEBd9wUrcFpgH6${`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛YB;z{F"r {gW w$T $zY(| Y- UCڵ*%"T{ vy :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ēCNA2 @Xս ½Ufܓ=d_T=.ޑ*S9=4OTH<~ *`RC(⍄Zڨ,{OcFx׆zk/P2{'w'YY1.*AJ*>ˇenK0sL24L4TsM6tM8Cgt)e x`&PI֩ p(Z`H*F{8H{`z *w[,Y4$g - ` v" 8p"ԛi&N= bz/ dq@Dl/ @2Oz%0!!Jŀ0[¬U]|${ p@J(2ǀTjwؙv b6 *(L[% Yt(LfU2d{|7|y @4ȏodQ ~ ҩ%|Cs$%47!j Q 5nc2Bu@ uHC $@V$Izvx8=GyBH?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd‰)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nq6b1a@ZH ԤP !uzaء_LoB߭Ckʁ/BFXu#bJ ,/L f#\*p;vAlu,dqSr(G&X=|pbz6iݛ^,4jvF!v$<[43- ڃ$A =0.T 2{OY "T`H.A(2ܸ@KjpHjB }E8]@BN L)@#r9{K<_>`1yͷswP-YH/_xcN!3uIUn?:h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ@v 0Ä(:\" 9gxH3%;FIDS 3 û ɵ0 ~{pDي{Вwh'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s`;' u1( zHq$ xGQYZ,[̇\\ g ӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ." @BS5` 1AcY21 5k:0J$.+ax+o`˫x@ RDb, ܡoMPL `LQi{ |KXLt!P FL!Rx0t e L܉Ph@< *;o0q 1ą6ͅ ʇi K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 68#ly*-*]2L%k B8{R"#!'hStX XY1-3#e$%RHu«с1@$ SXxYH$*e4D< 1]L }Ӓtզ(֭V NtVi$N#䜈(݊?HzԁI#tx( [5  h2Iѷ4x xy{|h$ 9<= bP*{u+C5LA [e5%"0h@DQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx8a]=cb'ч~(05sneWY=.(D!ntPO Й ćI @#IXj< ERdλw|Y6\{€F!wJYI{h ʠ!eR!&)hɁ4SpB9mRF"!""# z.4S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$? M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{YLV< rK?uTOuU_uVouWuXuYuZu[u\u 脞]2 Obc$H6av]v᲋⬉L^#_n3 ?W 1vw tjwvIݘ3w).x? }(h. kc th呂0Ӱ¿,H  =H.`efՅPHg3]y?Q ]7 sN0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4=oP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀.Sq{{V^ifN|Ҙ$W﷍{'|XS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4 &AeCA5Б=vC{bsg> ~"%i`PĻ"Rv!ٸ[t37b@>FSh|KAJEbrO;޼O5\+bXi-B]'ʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=UP+v P<<.тI2PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3Bb( A=,IC 7 N#A<|P$$ӉT`Rx=ФN=E68D#@Fl![@:+[F=b?KCE{O?@pD0T{n.NF;3ê( >( d`fwN+A+-b~sA s= D~4޳O'AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=]NdQO9[a> dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX pP2~>ʀHCA@G!wH %H#1`"j`,: !72 >~zpQ#gd5$ @2( n+aY"4 .|~;I @?$xi ^zlP 3x ^A& |dr$-2z;fG<:h@y|qc(Hzh (=5@t AfZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠NTֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,asf8z f >e>LH/` ^M ^Aɥrxh Cxr$LTzifRV^ pT)pK@A\" c H,a%FDQ}L$G1 }B+LdT)P1݋kv d0D) O9-s;wpd7 y|n$` |qH,A 9Oo׃>r|IoXc [Aacցk{>BM\Mq0HQ{ƛ*ppq7-. `/k6HPM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:a<[H=|2[m; !l#ʃi:Y?xd ߐA"G`03s7NB ![E#GFUG!LS8h)H r{ԦdCz%[ BYЃ>vu݇G(V&2|CK&@|<$GP7?^A Ra`\BD-5FCUD39A, ;ަO Oў/ I?Ȃ{ ;AY_A _!`%Y(MJCSL;5C8`V> EZy, r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b>-+nBXJahA4m @4B_v8 zLAA;XXPġ+b ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4Њ7@g%H >1A$MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"L xIeZR\CF47̋I@B8SEXiBP!\HdI>J:\7$ Gh$S2dHŸAHB afY-DzGD@ACDɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D(|CT&eAH'g#yzZ,D?XrC$()FH: f(;  W4gACGK*߅DٽmIiA|niE<& eF,GOAK;<-Yi&_BܟA0@E(ߎ aY> p #6Dt]ϢFA7NA0\*)%ȂXi~Z)M`E0})5g݃=< 2m#FhE4a~ V'(>4C(`T= #n&>?ܫ:,(_Ljr?:ë^Z7i>؃>8@C(@<ĞP(~GRjޫ:_ԃV L?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 R4CD?=@2 r.G|@*_[泪زJ^#GjA,YnBH.vwI$eFÍ$_: = (/bhrE .xRpZҮ1$DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-D0"x0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/̀ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtE99;DCAW"C=Xѣ24 RL3L=DE?\3F78@-x>2ކ#XÌ~Z@#C.X%A,Irdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,euBXZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`v 0l@ܱpz 91'Dg {B 7W?#`[|-ĦyBtC @:lDB%L#8;;t,,C̕@Kxo=Z?p;7JDG183#F3zwB@ 0kD7`hN@Ľ{B3xa| JKH; vC{һ&Č{,|B{2"/H_:%İ>H |K@X`>u+Ƀ/I3N0B[P½ 3 nCuS6!tޫ.:ӊzLz0,⃃+eμǎ_Z^' ZrZ'eUa`ûGu 0҄(U,#߁T9}KP%odG=πx Cwd预%YG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwÌn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /PHTu8> y YJ`XLҡd]6XgehjlݖnpY 8!S(P. L5SIb Qtǂ`F0Iu{5~%-MU-[d65uG`#1hHeQf2euޙ}蠅#5w-(c/#%`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.EAIӀaw4jZԗOST hvԣIRBAi XH-SPq2ȁQG'Qkep`?LpK D#HO- <7#!IT '.}IB;@땊8Ō !.PQSe={0ZI t 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[ 蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL=ěfbv+"&ӎ8"UG`٪*] $G@ @K{ *H)6d zX+ 0O40RP*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙA|` Hw(ڕnk|=ie/n t5:j!Kg {t * n#\ miq9rfRW-u=˜"@l +I_@G^cXAxD!_\faуCeP=ƫ(ࣅ !auzVBI;4|g=6B$%PC'! vLF|X0cЋAŽF|`$ЏFj`,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʰZBHĽװ؇LG]|`# 7B5H؁Lt׏$zTc-=1m:!"1`%}>C 7 C $E}C SCR0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…:k O$NFD pG:m$(#6 H(K  2ijdZƏL&I! !L P 0fk(- D"RA:8n86nC @ ‚ ƻB k !*A6`A4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ LD qqȐBN-gj$ X|_b[F Q[k @a-!<tΨUI)¬\pR.@_ Q!6DcX !"ᖬ0ZRI sR'w'Bz!n%l# * @-N$~%bMba c&b%!J*cN d ϖ!;!)JP瘔b  "((H<J XL. @1V-:daS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* P`BxʬZh%2j!##LH@%&I1K4Ũv`A1< 8 s-c;#AҒF,00@OH>L$0p!@emKkvI:A ԁI! Z  ҬmI !⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʤ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨnHQuU\Z(V:bB\FﵤoJ+@ V&II3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^#>UH`ho)ǬUr'r5(B@)AEod!("r5dL㇔iH7I敂f"C1Mb@6#DaA!N!ᑰ~7!(0u.!R.w+2ws;sU "tꐎ @ 0R>B|L!Pp`B5lIR,5xcI/R7Y!k@:Do7W5A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@$ D{S[ 6L&Z0A$XvT a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@e *m5A ‎t)$j ĕq)Qkp*":!$ x9nVZMDJ! DZL6 eaˀ$` g]:2  Ha̗Zjʬ"R=d** cxWjH//0#֠!D@^)"@1RC{l#K@ :> cC3,6DB XC.P*LBY hL$?-׿ "cKC=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!"`!@*|⧇VY[ٟB:|aDY%AhMdAJ`F!?xޡd0RGLUQ \N%맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7<@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!"e27D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevة(iH&7(uGͺu2>G` `ʽ{ؽK<| N= { :j:|c{8”9I|3'w4Bw_w4hAY2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^@w$!]&dÐ޻9s|Uݽ|CkD! Ll&+|޽*AF#\×vܕ6U3>3C>tR8=L8gv'v7cg|F=C>pp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(dՉ\Jhh.h> iNJia Qa0@= d$=$uO \7p1P;' _ #@GXΞ}\>X:B$jk_ȲFtՓV;jUS0ɏ/ k>[=׻줻n=v|a@ߨD'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճ4(hqF= 7L3_`Ƒqe:SFVSXYWAFqsA?va:@X_c}߶c+>!?o d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF(R!,@m=ԀLl|Q0># jDTq$+K7 &h, r,R.Ðǘ,#XffW ΙvCa&Ι啈h]B hFv&%C#K_ Әt4Mo?4HcWF4`* #l ͇w 9R{e ¶$ 3B)tm@,E;%I AC 1|Ax|ȕb>XԵ5#Q(V-7=D aGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]ua$L@AҬG'ڂ iYRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY:86wD1t3^)yK̠*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!=iu="I1phMLo)ɳ<΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE;Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! PNXaZj;.H".;P-/c54'eg*A !Cd1 RF $DCyrFoپ]xGc GaZo~FeA1BdG0K_Z Sd-i*~Bf$L Bz 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`.* Dp@K+а!: Q }ixo 5=5 X!]'>"1,$4[@ *՘4E9$):~^S"iukG%Zw,zh S;~%[(n>5ηR*X"EtȂ|I!޲u T-{7;9KiyKv+N@f%S^G`bk/Ǽ@`t\@9" (F! P`_ٵ2, Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[M&=e,(}6➔$*A~0Hw`( 5I0Cw.Hmz 1;+d|Чu8w  q| yi 6݄3rɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet8̴M ;+=@{RsBGz6w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz.u9@@oӊSY Dh8+` ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG .$;nww.:43Zj;$ P|QĬzKذo! 4$@ 1!LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T6 4taG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19u( ?6%5H +@4&%A Jҕx/Yh>"$y3PoH7&ᨁC!Ux  wȸ@ &*5؜,9 Dp,Q)3Rj#Y-ɥ.aYd৐NnB':P;pI"Z M:OR Mk4UU@ XqD"17ATI CmbLg7 TKFr岘41] A FId~H$|G?+zH{@JGFmUe:JaT2Pn |`=պI76З(r7'q)Շb[_p r􁏒` `H.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ((5>jH -r/yK:c,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4"Y.'qQI`s#?8xQߙvG|I5|"Jx- .o e+}E?z@#ֻJ.c0}F APC@'1.ۅ`5d>luVDj\+оȝ}ُ::hèo+85Pnޓw,)=x `3DT+۩ Cz)_ wH yjAm NmAPho h(vHl(H+vЖk~V٤-~wȽ Xz4ʐAxA 2TAtAy%dB BbЁ2[789\ߒ;%#H@txѠ*fX+`b|p~ c| 룈HȽnabH ' +P|!ЈxF1z0ẎZ|[T]2:jkFw[ P` )|>I dIȣ-IHd XJٰ 4 6y hGx>wx{ Gtr* Hp@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jj t˷˸G!w聍 &N ~~ )  Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w@eP+lq vYfhQ?<1tH$ί_tN ?ė|H(%;}x HY> x (\ РQ j#}P Ia9$@xH(f 9L o4"5#ERlNP?܀ȞɀxN YR$Cu`!v'(J$|$DH5Egxp ';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.?-Y#;1Jaf\zvKzT:FL ǼUhM(Rh;@ ևv^N{0!9e~Ȁz ,՚IiPike؁  &7{xO@|}XE(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYP() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V?( <1 1m}h.<9KkǐHzo8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q} HTWu/:$=h p t_Vi,ʣFw$f @y>IgW|Xy7C \y˾D`ޅ.'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF PӯdN+9Q9˸O[hN/wXÀp'y/_fġڳt 聼!)9FHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - &Bdus(ѢF"Mt)ӦNB*u*ժVbͪu+׮ӆw]𺐁 ёNV꽙yo]nKwݼj޻ݟ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwmSzC'1Twc5áWL-Qwų~A_j~-NdUe CFA8uVMP9s,]P$c r#X'+آqφ)N?d0A܎ޏ|`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=D`O$Vԁ;;vN0 S@:HCb7Bq^ݓIBK&%#mj*S7PX'tD~T0@#p-j]]Qkcf3pCA"XA'tRFtF>:y3jެ#At ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p d{# E׵|;ꑵJqz=A ܃CS_ק:P>#;ϥts*>3;cS=C0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xlAz%K6#j&afw<)>шo ,x PD$)A\Eݣֱ;$Џ|$G> !fc,#8@*n Q fщwڡA+nēLdIG{(|KYL_ q %\&< eJ ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 a!H&sv ; @=E HgVH Q@H蔭XUy@i Y8= M%z D $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>:wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS21@_p 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53 _T^1z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}8`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u$^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?,C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7 zĉu@=QAl<\>d!:@SU ]^ɥDHE; Aa|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp? @ p^s!\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA =$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ$0Lndlc (u,x::IP3LlFZDօ<: #=e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH 0:*ę/ }_z2l@thI*,q"DvW՛.") $cB c(RDD0*MԃQ0bɆTUi\J=u\IJ~W$$QD܃yV2+CDjშRk!%æ4$ C?)tNT>ŪCD@DXRaY}; B?jĽTR'AH$yROkC=liBvƙ`J=Sce^A ``)֖  C#zn ibHBܔD@ܭX;<, @0Hح4tI:HC-톕,ےVfd']=|@,;|؂A$H]4: gF-,ڎb@*ǩt-m-H@:@ n`.;nҮ`u&f$1,>^J:l@Z"4tuH:T=tA)dfK$@ @'4lO)T0'II):% p 0 @7z>EAD@I>î @>R2D,@?/EHK_dHI0^>m` ?h@*@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊,KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`G#æA(COrU7L:ۣl@++F5'F4s)%lC" HT1*3pBp;pJуqb&@ 3E@ 4=S0?UHAZz>RüW,AԈ ~Kn|R1 BPu8̳lA|D) ܃@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ3=X@v}C$C$YTI&]U:lBt@}>ThxOA $!^C=TA@ݏDXcJ:ßO?1@@btA)-BmDLKU#=0>)rUA׾>}-,@##t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@A& "*3޺ c"{10Իo_)&.BAL^0 Q lB$"w&BJwDbF['d u:+>>xqǑ'WysϡCp+\i}p{@:?/ |i}WYnaYf"+!FI xJTQH `%:z櫱{$yj1Ja xBI'D1SJG @ށ@l'N\o!_MªgH1J n1!%@oVPiơ*q7+i5F ´dgGч0 !y'/Թm=4$G^! 6;bgG,_}Z~P" 0dRr @@=PSR=jNPJh`s?. xG=*@v*Tp aHHcv#$Hzyb۲&IL_1S 1 J=/!:!! xB9Αu$"`=E7`v38`]GDDH)I."oA dD$呕@*H}* x"H,TtH GB c c  hBB7CƷ ~r*ZA@+OyΓ=O% Tj4AP. upIĀgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:to5O[9zYgVCx_X\Q /$Ѓ8N'Gw&ba5exjtM#C4M=."7 @>d%D, HHj\Gء_B0E tzpzYQBҵL`؀8H6&GVWW`:T:  •`zq{0c}>!TtiZzUGbav5"` \h c!$0=aYyG2Q4CpRd!9P'CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆH"Qah!"Q02 = 7} u-SV3{@ @O } 6apBQM 2@tvMVtr"iF2 TBJ kݓ@B([FA($,@+ U|# @C,x$x,cLJjtа `C?bP tp!H߷guoDY.3zlK@8|`CN 46P|L`\ 1UStUJC ^Βݐ@3. =ЩN2 E`@%RtϞW):6X8Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC Pc=K:@g/N(I& !pD!8d$J(Y,!v"N** VAp즱bMNdD*gM6Kb!Y:AzB#Ai,!g0#>@xɰ $`hPXa!& /߀0 H!Xa{< : !]!P!ڧ_#*7R I" !| 6(dA++T( !@&L &{A @P~ޤ1"bk gFL *@j6 G#!}Rh)pamN/¹uAԠ`]*BdY< B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'xƯMejGH D`Rd8 -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8HH YHށ>-F%( %8> R!H@6@+\s88$`KH2T0@$ n6` # ಩>B$&Ca&v|2!'B4"2 }'U46/QX8 $($7)^H|ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&Za7/軄& ^B"X.Bq:PEuTSab#Ԁ3[\#$0U8"̱#<SB{HuXU - ;٢T$@:ft@6pXɵ\ QF vne:8`^s rPS 'Ӑ@M| !Z HЉlr "z#"|m5$S!֊ .2j% Z͵g}6&A#Uf21d0Ni2ءg vVMZRg?xn~!(1t-tw~m Pj>gRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0$@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-A(Nd>8PeB9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!zh0!p PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!rI6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p`֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫ<འqv-^t` -z7 *G :ɪA:u `+{IS) ةAQO+װc˞M۸sͻ.{ Bn|u~tu [z%W̝NBtFvфxs T}A -^AB|0? ($h(,&N,vNsѳv $A8@ CC/Td5ިA|c .4>ܗOi7Xgܓ2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*APE􃏚>wYʑW;Џ=N=x+ ×k7\ 鿗IXjA@B ",Wlg!FI>@ܨ:[:`\8(3{6_QO_B`@P8{#>R~o?_ue;DW0HM&; ؜-_Sތ7G.Wn?:!g砇.褗n{;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGH@d0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>)GIwH baŽza%D7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ E@{l pd>Cc%%䅃Lg@M% b(9ẋ>ς @h 4ұFt\aG ƒ t`GJTuB@5Ct%@R:QĢpV! 0㮂 5gv)^ zHuwS0KCôbƮ'ODH ؈ox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ %P*k$" :djmv2(|qQ"vs@ Nܣ Ňd9DAJYN0|脨F 8 @YD #pLsUO3a!%K oPK$L$Y\q0 k4/{|X*PlB: duh='P.w8rARu Ǜ b-*-c,ad[]20 3G$''Q24G|HԹq  fABŰg TT oP1) :tblh T/dwbńϯQ j4\XG< AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fv@CY ,\Y(Yz , A+:M zd~,cJ7y*M}7oHΑ9!cA`DB1қg>Y^x+EKUR(ȣ;qAH t&U=S{aE/|6:r e!Z:BF1 `<zfʋ4)P(?2< zb}  hjZ[ai v aDz7X&Ydˠ A%pGvq %8 C w?"# $P g\E?ݔ@AV212W*e! bK"2"X">(rS}g2"SR`xzXOJ )tb1G r i@tb2A] ON(LRp@ Nh ` AX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L 4b}7сDS@qj+R+AvDEvj``-b- H\!Et*>%`E*%υ< `& `T"l.7" BBuPTwLe8**C@+e%p 9}2%p] y0/r/b,p`dÃ06c5h0 C 1؎>|cm $*%`'2<^E@ H22v5D@8o:v#t#+.E@ 9F`29PDΡ=48& 3!Ls2F -1s50#MWXEYܐV 6m6AeDivӇ_X#GP8  9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;I@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O=؊T PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گu0 fiLSGj֌A@Up%f VjKsjh yv(4 0eTe]qvMGd0qE6"ȫN*{%wr0SRvE;T+FЀ{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾B]O /~$ x:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2 . +\}Ԡ0yp,iПfP q0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"pq=P5ɑʢ<QAhjcʂ@\`lhQ,˺\06`VE(wUtE 1)7u# 1Dea1K% ]0%.J 7 @6\λ<4 D(۱bzpHZ+}乖ȒQ&;B"0:,K9^PK [2 .`Eʊ Esѫ;ukBP 0q%$t@v̲p^ alNͤ T(8!LB9PWDh(P qzt`^=IBbs@U' ԧRZJ"u $=:G9S=unUPEE4P`IuQ=PX O;0!mApc`'#CrpǍ)'p?a@4h'0fޒ}Q 6_ו]|1항P\:&$f򭩜#{pa \eP0]YVZUĢr.F :[թqa@X#i(3=cpvv8 Υ. *I.KkTIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2" ngĝ$j斒V (!3.yՒpJEWi&@dkto7pפnբ d`Y[~Vt%m" p-*°s ʧa*̢vl8yM'H' Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-g o;h O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowH!~z&w]{s }(;| ^EUa{0$ ;(e$H݅"$ܓ;cP_:]巹ה d5Dv2'Po tܓBz [CsѥO^uٵows0ûz𽻧a!I ~TЉ; ֑vJG~g `b!|P3J}*Po G0~J!9JǸx'{6%!AS({H@ K!ėoZHz$k!nN*xG>Hoda!|#PXа{ BtQH#tRJ+RL3tMF'}jQ8TU3*YŬJ.zatz{'*@\YH  {'8Xu0! MX{!%.g6 1wܫ}Fʁ.̳R`1_~LȃzA3 SO"[؛7 R~чz`z `H2fsyg{g0`h@J{b`jzkkƔ e &aKeҶn{oo* W.kgq#|r+r%pIe3r$7A^E|@)t@wd)MyJT!40!Z: `3vR@?_Z `Au(1;&CpD0D*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|,HjTF̢qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^iQ0x@>0`8@&0 \,gRt[QH1|@l C3(a:ῥc62ĀG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6CP{ kVWd!9-ekيfցXt t*B&VbE9K?Dm\B.x4`GX9'#) $b[~:Ap; "Ta@5$yሜG G3BQz m&[(Or|匜e$,F0 ` 'Ubare2v=U 8BrKzLЋft\C ,E4wfhґ9J݌E= lò Gd2 UBH) Aj<臜}ld'%#Fs`d/Bfp~"+CdֳRRpESVCX@\(Iq~#H"Dbwp7>9 x-EHSKX ]T&ހ 0@`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>@,}Czt3EF;v*P&[ H`AͻG=uE:0"N YW#W*3 ˈ.A#Y ˇؠ5r? " @ #Q!؉kqe5 J6K: UA ;7@/ |pUzkM cX (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 DA*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5eG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kaʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-H!@xC|~@YꂠTfXE^n9(MƱStd @}X|#}pup|Xv .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{@MT#Ai 5leKof=w#oˇd @)7[ .(rq|#B!Y"x^|@D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4Ddz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@KiؽwXݽuⓆa 6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzzp`œ '"uB ;#># :%> )"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>AAOp UvY>0@:(>mp Р&tE5GhCƵL Y*Wmc %, A3YnW`dt@q{Ϋ4:"$=f,J;-Z{-jm9;C;:$Td7RwX.[:K ]&=PO 'A):PLM:S+: j>0pTq'r/79uq]N{"NLI*L0̥9Bӡ@!4 },)j}©3@:Dy^wJC ^(@@~^i7:80@#AO'LzT=)zXADp(MqptKӇhr\goB@ᡤnA#|i?e"ԁf?(< Eoc"Bn CB=V(} a| (E 쀂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(U`'RLpz(ЇEpы`cS 2 D=⠆uCO1v5^[J l?k`n;zCJ # 2:~1$6yNF"H"} #Z,5ɂ%/-Eb\c,H0eɂh@3(PB|@TM:Q+[ċHgetQ D+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CqP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0츧>drqb\i>1,!9PJ8EN/hON;L宾ax@ns; ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7DCCU zLh@:@zDB胹mXC̮ԝ|:Wd,L ^ t/| m,;tũZiZ L@ԣ`D D]ʆB0@MO8;X.^ƫM]kՃ,pL`‰dBH]lDDBNL H OB|CI*CZv(U'*Wxɑih>XG!D>|CYeP5fWzR{"@lD6Pyf GWB)B@A\A0Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮ ELl;,A$ChEm}Ga@1KN;Tܱ&k<ԖtH:H9cG^^=L#]P.j!<*С^}aD@ 9*k'0kz=NH!@C?bD*iAð@lNLlR mD|lĊ,WC = >}KIN,ҰzBC)ӡE==ElrjJYUlB+~ld$sAmY @+8]@)@,Bס" رÕJA&..6 %hN脐`<VzD@#Dd@܃;[BL@AnIOaO0^M MB\PPan.FCBvεc,HĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/cR>H HWH2p|zxHCmHCȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅\.#tB&'2((* ;tr g7Q@D)B#h$>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VHC&|z&׹V+/:C2rhGoF$+$K @A#8@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP> ESp!0NH@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG,<>P1m^ EP4Y^> h8Ŭ;#t>tl2̸V%hew?w' ENHXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TtLY&Gv]"6JxL CEC'I*X}JkDdJY=$LAC/l"05Z Pr mX93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZU'zLݧW

i/S C>!˃ &jAoT7CAÒzZ4K'^dYA;J<1ԃ\ 1#˱$ ٟ=у,ey'Mm|üY /DLû:dAlLstF PPDu(\hC';`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝt,@,4MӨ@H)D D|xܻ/؉(P݈{؅(]>tF#!E:@| Ա3X̋;y ]Ov qobe@\D#剎;<p(0T:i>Ӂ1 p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W&" W R-pA6m o; {ם+QCs|u+Cu⊟DqT{Rz6`v,| H|lA %((G;4Y$3BoiA@8J"d2'iKvA}jhσЋ!:0UA ^9A~!!ah_;AGFDH \ $&<xa,w<@mBxj`DLg䘏0N C2YQ)E鐀qzF8H#>Q"~L@?XFu,~y#'aeTeq́`Y>b\t 7@`E=`)I5" ҅Sx[9K ,<~rH;/c=P@4Z (`@JFP̆X "yP,B&}Du&#.OYb1i\^p7-dH aP<aA EG`%QH"7F5<(FeQM68_~WET,] EdXhE(o`6@>bF*"ff v#2@P0:##o;"#H {LO@ͬb !B*BR" ޡA TN@&#f/b³)*xa bTZI^cj+ bX'*MJƮS:SRphΆCJ"$Rma.ꡙ(@$X=@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~"7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 0:I* kaIZe'+L-Dr=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$`!ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ez ĸ6qd"T'2@"b@)QF FA3C#B2({DE/0@$ !*Rhb3K3%BZeb e؊4A av` B sTjރHcG"`? ;F% i6;A@H)n>A q.`^NN'lxG "AK$Nc:'!D,!s//f$!dS/D$*e>C܁|";!$# $A G >=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`X@@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  B `k3 `k"`#F)xhz6@Ge$J a%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF "◒+ْ3.tNFp$EZ-!$A0h٠zx$$6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6::0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$czΓ/bb)(?B #v`'@F@*: @V 6CF*`c()gf"H3X]R@z`c(`-06W(2 > P=f1mw^yѡU]SO%r@\MwH#0.x%!`qˉ&0޼i|[("=<f;0(@&F[+(>azmf5 ac.AQ\W=~|7")b6"Iy[m] Q#)ԇ419 Ȍҿ>/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F| @"y@"r}'v}CBnDHbn@TSԁL%0 "С b1`?` JaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+pNY.B #7t[N@=vI8HLG4!%ߥ3*ݻrr7n\YԐ5T)ӕNWjV 5X]uB|Q4HESs= *X)d،6t=nQ>~!|v2OުDžO4X R-pm=!{o}P„5jehmp م ` !e_na~b"Hb&b*b.c2Hc6XYnp\4BE ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1sA3@B^@>EA>թXcBs8h s7 mMɪdu}Nꆓ.HPYt8@X$Bʠdi_j:"D yE!HВj8$:I)#|aMP`>#E  &0S en> NȮšt!>x;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y${=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) : d:D7A0/h;N5W;j%ɔ!:>3BDh~}ЦkUtHkΏCa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|8 z\ A*~̯ˇT d$nw:ʹ@, B!Z݈0&Qn P&{HHIO@D ,@$b Dp3_a6DJeBNB3}0!XWB@)-5 Ȓ8>8cq&80IV''v]mzWXVd(cs4D|C^uM/=Hh v@=` 7 ps,9ωt~Oq!P\бdh!3?*3%飞>ws#z{#!Y=QȖs򨬄XF~oStw,S|[9ާ`$$p@S̈́ aB%&no9#µ `} ?(PJq(<M&A1  ` aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"#@#P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vqZ" aqnIPt IOV<9<tY? IR@]F14&#p<4X)@V`71X# ED)OIm7 !91<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig% qwj,>3(5P 0`%&֑mo q*s=fS@[|Z@.v0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2-@jqqzOR%ߐoч^h7(j@@ : `ͪ $'PAH}ͅ0`gB0xRي"7W`zC($#:x p @%" ] P S) aUsך S#D&@ҩwS鲧e ߀Rb芭- ؎GmjdM<X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vɾ5ɒ,{7B `p; 38^|V2Q@Jeʃ7H@"iOYjp j 2ܶȻ!x,N0P" 12ġ'=_C'x& hvBgvG!!= kyT!59@Jm- (Beۚcc=Mm׍G`pce4IT%]$CI@{o5p`f1K#Z] Ey,Y燂L"*32hN=( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^30mk773/O $_7R+{n0 C a -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5_'}80h O]ZׂY185  2e[ F=3}==]ȁ@5GVz#v< i%oB/> Bwʇ}zM$Cg6x:d!2$C#DOD1EWdE_1FgFo1GwG2H!$YЬ@hb>Y.D 0[`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`suqx+Y F(YJ=u;U@2!@0RЧKC 3dQc z3F2ޱ ]R @aPdDZG-7D&>:`G (S@'j7H8Ǝb~FeCA{,c@M9g*@u*tU1цjU M\D <]؁xІȚ t!6b_1u!HoGeww#0 <{q-W:Rv24._a'XZ T@Mޑ4Y@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"Q!X !&@J$,0(C=xW a=%O\/ RCHy&A0 \@.x0&/P__O=@cl/? ƒu88jd X_‡c=@PZIf#8k$@h2+e"`ٜW"be,+p2 A=zJvֳmhE;ZҖִvF*#xN`p b $6qκFVo@0Q YWP).u ](TxMɛ vxFkTdt4{9X!h-P ׈ ~ X;~@pnk`- c@u.8HFϤ  CIu(`0o"k"FPtXX wȥ|DJI؀>:N X!4 zpYXƍH5@> +ۣ(HpOWl~M`}֒ .}8H n "s9?b@U`{P-npdTA3wx|Ӈ,)Έ< ƀF Ȁk~ ۓ \3` }x iԼ'\>8 `=PPQ%R5UAQ <0!uu`S\;#m_`a%b5V㪇.u`NN{6IZz BS)6{K=X\ x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!X{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH t`Hz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@(0ԄmmmRpIkip>ߖpySnDt)7SGɇOHYam66B=#G$/yۺv\b huX|7+,r|考9n(Zn$q ́d2Qq-u`Btx2JQ x F#Z]XdYMKa: pt. X2Ϝ2vH*Q' ,JPt@N(ljt聠0|))%tI K/0t5pn3T@TvfLJvivkZ P@oJ}h{{0r}׀,6~ /GL'p{$`0@z:]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'#gܳ ߻{=R,jaE !ɚE uҁB䃜WC>Pa@t^2D3 o>E v4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM;6p 0 exFF`} wшgo {œW€{􍠝jN=Ys!qs?O>cY> DOPL=vOSsy Q`;=cj%S@#@4;:Q; 3[F@:oF.4H8{I  2<0@ ,2:=~DAf lwL!H?)TNZgD\=|;"̔@fD [ T;4$0;2dt">x}IpCUPOZ+`HbԳ7^>Nw= wT=<MG@"n.SyHzn}S"y 0j x=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% : @^:l5rFX5^K};s̝k67h>0va=}hDU3DSn9:o[;T>*%f@:3 t@= (-exO:RSɎ#:fzk7 @=b dAUO?@L 2iߐ ߳H Hoe;޽ɖVI|d[vך+-+0AN"H @^>|wܽ.ʄ2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U'M!=@Pz8"zW.J:*p`0@"ݼC": CO,v  LGeѣO<P>ҡD,7>"‘FL=<9=½c@2Ȕ,đ/C`80HjЏUPS9@tL8KG4Gєx5.F}c2)3(V$>DYϐ!0x +'ZDIʤM%XyOB)\Z ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Pɢ A=yς6-iKkӢ=:hQ,#|ၑH$e:QB _79FX@?Ґ*5&5('>{c&YI`9b:XzóefM1HjRZ>  O|b:H7<;_[<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏp@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aQMDyL42tCǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJao]Simʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*&3`Dl؁9$>%7HreGhQ >ï@ԱkSv5(eDp L,HS*Dk[\!բ=Koӣ>=Kd4+ZIbQFգ 6XTk < @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ ODYWNCPԃ1$JH$4(!RO`"'H`\HPh \Jb+>!Hx@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;H,=>EpC(Ns0  D'EC-v̈́:r8]:L;T@> K?L^ "QäԕCC?XU@Y 8H@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_&aaCb.wC@'CT ;  RapCI,Ft=[gC:EZu;8=@WHC#|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CIO x$v-Nŋ>ԃ%D̀,qhi kԼa F4A]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F,> `È^D>@c7xSLIAtG@@fT@ ,7L`\MhA HԔk]N $C$@KYҫ~`F]/ /LgaHH|Ef($j*Dj Ujl\ ܃' Lfe]xyɇHCȂ>T@/G?ȅC'(@  &NATE$8Yt,ST$c ~7Tik0*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*(.쀝!͍j, ioboo$Fd(C,.C$p po52oqpt.'\+FKcpksp{pp p p p p ppq q=@.VhYnp`+?hUGk0qmQ_tkτ_1qo\qq r!ϯd4e&W ,R D+gc@ %O'CCYp@8Ato!@YoxmnKY*VL)HP^lk@A#8@ P>G@}(^E:Nrl=xo*|nS?m߀e $Cl Eԟ,b)B3tC;.CqY$3o.>T;FJ<H`La4aax Qu\?jvkCkBu@&9:$qELG D/vL8rpPptBS=G4N,LnPZ h$aV$>$\PhŴun4 dt6Nݖ@"H@,|=l_7NqN܆C]8NF,Ta?Xg{@YtkC}mF<@`@CI<PO7(r\gq QDn7,@:pd[CoNO8Æsn\I'haxu@t{ya8 :lA A>T7 F/FHg+@H9$NW !tw{ Ӄ,toVX4ހ]-8HBG$ DÚÖ=C< םBvԙJuDgO85P'ޫ H;tA(I=t ~ TttBo)o@xx 8C0,̙:dEu>2Cq:T<O:>`<%£$H2ECJ ȋדApF;:hn|s}/LtOŗŧD(׼MX7]|N:HƦH`@D(C >(e@ Id>ɰþ VRƑDWFUEYA&p$E_[\X>Hl^ 5|s:p2o,C M]C`_MiW^kyH|Y@)-{B0+@'b@$wO@(c.?t[N@=$4ݽU"Q̇: 'RD T9˔k^>vBwh7_B}Df*qa$MDNVT@|A b;>SBY/NI Ce[Z松 Qewouf`^Ǯn:\6JcÇ'VDw1Frz#vY%)'*J'|P8 )>LI; gki%dGF ׿ P ,LPl!P ) 1P );v0 !b آǃw @{D&HqExG JzoYCQ2LDdJ2L%JR9T?zX{)}x 9(̧\t@XTiG|0`MІ8`Lˎ!F$G |hl-C@!<F-ޱ QIQ @MQSX)%k {!&|<06'?z':x_X=A{ԅW^E ``(4 Gz֩@ V/Sʩ8? <+hawO IMQ*Foe@Y9l駡Zꩩ꫱Z뭹 IgMrY#`ވI@ `A{{PRJ<2 @PDʙ@GxJt5:0dgȢ[]xC1OPBTsאƨEȜLHd"Uf|, X4C=! F!;@_t«06x71 m#ؒMA|̄ʹ;Q-f1@9 \ )H AqB{Џ< / DPۯpF{t%-`6Ar'H3,Aa!7DX@tU|`j W}_XOcKIڐhI@ % ogP=rF0c',obY =1Le=PotAGI>!CV)S0g%V$ݩ3Lg+]!.2 c>PGFuUdAЖv_ـ1XZQI%bҐ}4#trUQΜ,@psiFE 9惧*@=wȢ>aĨ(m&G"VbCds[A `tL;zb VH1CuZ\QUm òC G:*+B mvg9ϙuq5qM[{$6/--zR?H(;(jt!)]'mzG1F߸o:h6_߃€?u(峴Q@H'"2CQG:tJKA" :nȽ݅3yFI !.#4,r"fA8 XY=ѽ>?E)kg=ρt7 :`c(JӉ . p;6P|  ^|$!dRB` .z 0X4јJ´%7*yI-Іyu;Z0@o ѓƿ:(`J"B) ONw8Vša\+Cf:0A"h%gBq8@#X4ƸGh8 !ޣ$= +LB8&`h? #n_c60aL J~%AЃ'F`nR7N@ A+@olq0upydlk vۀnXzk"ba`! LpkP !"F`!J (gG*qK9cTŸB1rlT(ށb?)Υ*h#:Cb ! $ @L +H`F8 AbC|f[Rq2a͈3ı$*"$`Ƀ6btƑ6 N!72A! űYI1J`?)"j{ 9>n.Mʢ+t@ɞر!" |$A q0D 9#1b!D>!b2@b9t?JA+ )0<,$PbN%Hm4=,ٴMM4Ni<$B(g*kH`/%B`X`NP{BtQQQ!5R%5Bڤ hi&5@,7Z.kh ?DU+ME|!zN65VeuViVmVwNSquc5ICI.t_S;uWYY5ZuZFWOJRү$F Y{S`8u]ٵ]]5^u^^^5_u__6`v` ` YZvaaa!6b%ub-b16c5vc9cb=6dEvdIdMddQveYe]ea6fHeefmfq6guvgfyg6hvh`}h6iviih6jvjjVjvkkk/$kvlɶllVlvmٶmmcVmvnnnVnvoooiUowp p pqPpwqqqIq!wr)r-r1Dr1ws9s=s_BsAwtItMpEtUwuYu6u]7vewvigavq7wuww9vyw7xw_}wxx7ywyyy7zwzzz7{w{{{7|w|ɷ||7}w}ٷ}}7~w~~~7w8x 8x!8%x)-185x9=A8ExIMQ8UxY]a8eximq8uxy}8x8x8x8x8xɸ8xٸ8x鸎8x9y 9y!9%y)-195y9=A9EyIMQ9UyY]a9eyimq9uyy}9y9y9y9y9yɹ9yٹ9y鹞9y:z :z!:%z)-1:5z9=A:EzIMQ:UzY]a:ezimq:uzy}:z:z:z:z:zɺ:zٺ:z麮:z;{ ;{!;%{)-1;5{9=A;E{IMQ;U{Y]9 ! ,fBBD^^\jjl..,nnl&&$VVT 224JJLZZ\::<**,zz|bbd>><""$ffdRRT664NNL~~| IJp@tprpĮnfHLDPLF@~xx$¸tnt0@XPX80L|(6L||. 04<@b\`BH@ ̜0(($00p|| lttx|v46@`bdp `~Դh\`86(Nfnpzfh0x.(80.l0.PXXFJ@x\@<<4nf`ʔ pfp<6УKNHJDv3|{Wi˟=:|ϑ./z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?IF)TV Y3:3(S!p Ih&QlIGqvdP;l(`堄jj_wP@E#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:.&H|@FAHn[Sdq%$-ښACQ:`,p;DϑhBx= POK~OS@:pPHZaypϲ,@ԃ@ԃ4:H:Î,2PX(6+ġ;<APHbG C@)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:׃B/j b !O3v=9;'B3\"7XOl{ܸ::wN  X>? C=ֱ |%"~L#!@@ $ ϐa |C77 +1AzP  {$uhG2ӱD (@C0USȗz`G3B BPa=np#=q t $ "J#>H1IHA?B SrI!݃>*`Y%@zs!|p؁'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1tx:&]jV$`A$ H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;g YU1V:u LmS&FD`MG=2Mj3s+nd$tH IE nr#!@?~jb)wcG*߭ؑtk\nV2Q`-H[yPDLZ* uYr0s#Vk>umJ#"ykMϊe2=cA?CXlA'8"xP3 ]gLoX@NH,0>I ':܂0`;dE8"0rYtY'uh`1Oey\+w\Y P,v*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lG)lLbiOl2ER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD _;WpBz4j{HdQpt d?KD9PT."pd<6Hb_}u\>e="&ثg :`qh@;Ԟc옍8&zkEuXP@k) H<ĨBC)$.2w=&-(7P O|  2t ! )HЏ{jC40!H [xie+ x!܇  ~@TT'EV=(= 0"P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R `rP+v02> h_P=@Ѐh b}~hQ \G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ( !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsqLLW` ym@pNI`j왡HIu$y'P27v)W mrwe\2*_*_ș:DZIG̢sR>.gm!-*.` r 0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 -40wQ0O1 dZJF"3@h/D?#u\"gJeP#0:蚮:,zT Yq$"AV*(PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R @a-{ 2;4fc.gZЅ( "%"]b*U$]ǭQp@H5Zqd =K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$Й@Sd&Z:A173p#7tc79,<0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mLc]P 5a P@Sq'K>ܓP$AӯEBd9wUrcFpgH6${`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛YB;z{F"r {gW w$T $zY(| Y- UCڵ*%"T{ vy :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ēCNA2 @Xս ½Ufܓ=d_T=.ޑ*S9=4OTH<~ *`RC(⍄Zڨ,{OcFx׆zk/P2{'w'YY1.*AJ*>ˇenK0sL24L4TsM6tM8Cgt)e x`&PI֩ p(Z`H*F{8H{`z *w[,Y4$g - ` v" 8p"ԛi&N= bz/ dq@Dl/ @2Oz%0!!Jŀ0[¬U]|${ p@J(2ǀTjwؙv b6 *(L[% Yt(LfU2d{|7|y @4ȏodQ ~ ҩ%|Cs$%47!j Q 5nc2Bu@ uHC $@V$Izvx8=GyBH?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd‰)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nq6b1a@ZH ԤP !uzaء_LoB߭Ckʁ/BFXu#bJ ,/L f#\*p;vAlu,dqSr(G&X=|pbz6iݛ^,4jvF!v$<[43- ڃ$A =0.T 2{OY "T`H.A(2ܸ@KjpHjB }E8]@BN L)@#r9{K<_>`1yͷswP-YH/_xcN!3uIUn?:h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ@v 0Ä(:\" 9gxH3%;FIDS 3 û ɵ0 ~{pDي{Вwh'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s`;' u1( zHq$ xGQYZ,[̇\\ g ӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ." @BS5` 1AcY21 5k:0J$.+ax+o`˫x@ RDb, ܡoMPL `LQi{ |KXLt!P FL!Rx0t e L܉Ph@< *;o0q 1ą6ͅ ʇi K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 68#ly*-*]2L%k B8{R"#!'hStX XY1-3#e$%RHu«с1@$ SXxYH$*e4D< 1]L }Ӓtզ(֭V NtVi$N#䜈(݊?HzԁI#tx( [5  h2Iѷ4x xy{|h$ 9<= bP*{u+C5LA [e5%"0h@DQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx8a]=cb'ч~(05sneWY=.(D!ntPO Й ćI @#IXj< ERdλw|Y6\{€F!wJYI{h ʠ!eR!&)hɁ4SpB9mRF"!""# z.4S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$? M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{YLV< rK?uTOuU_uVouWuXuYuZu[u\u 脞]2 Obc$H6av]v᲋⬉L^#_n3 ?W 1vw tjwvIݘ3w).x? }(h. kc th呂0Ӱ¿,H  =H.`efՅPHg3]y?Q ]7 sN0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4=oP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀.Sq{{V^ifN|Ҙ$W﷍{'|XS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4 &AeCA5Б=vC{bsg> ~"%i`PĻ"Rv!ٸ[t37b@>FSh|KAJEbrO;޼O5\+bXi-B]'ʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=UP+v P<<.тI2PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3Bb( A=,IC 7 N#A<|P$$ӉT`Rx=ФN=E68D#@Fl![@:+[F=b?KCE{O?@pD0T{n.NF;3ê( >( d`fwN+A+-b~sA s= D~4޳O'AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=]NdQO9[a> dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX pP2~>ʀHCA@G!wH %H#1`"j`,: !72 >~zpQ#gd5$ @2( n+aY"4 .|~;I @?$xi ^zlP 3x ^A& |dr$-2z;fG<:h@y|qc(Hzh (=5@t AfZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠NTֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,asf8z f >e>LH/` ^M ^Aɥrxh Cxr$LTzifRV^ pT)pK@A\" c H,a%FDQ}L$G1 }B+LdT)P1݋kv d0D) O9-s;wpd7 y|n$` |qH,A 9Oo׃>r|IoXc [Aacցk{>BM\Mq0HQ{ƛ*ppq7-. `/k6HPM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:a<[H=|2[m; !l#ʃi:Y?xd ߐA"G`03s7NB ![E#GFUG!LS8h)H r{ԦdCz%[ BYЃ>vu݇G(V&2|CK&@|<$GP7?^A Ra`\BD-5FCUD39A, ;ަO Oў/ I?Ȃ{ ;AY_A _!`%Y(MJCSL;5C8`V> EZy, r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b>-+nBXJahA4m @4B_v8 zLAA;XXPġ+b ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4Њ7@g%H >1A$MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"L xIeZR\CF47̋I@B8SEXiBP!\HdI>J:\7$ Gh$S2dHŸAHB afY-DzGD@ACDɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D(|CT&eAH'g#yzZ,D?XrC$()FH: f(;  W4gACGK*߅DٽmIiA|niE<& eF,GOAK;<-Yi&_BܟA0@E(ߎ aY> p #6Dt]ϢFA7NA0\*)%ȂXi~Z)M`E0})5g݃=< 2m#FhE4a~ V'(>4C(`T= #n&>?ܫ:,(_Ljr?:ë^Z7i>؃>8@C(@<ĞP(~GRjޫ:_ԃV L?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 R4CD?=@2 r.G|@*_[泪زJ^#GjA,YnBH.vwI$eFÍ$_: = (/bhrE .xRpZҮ1$DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-D0"x0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/̀ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtE99;DCAW"C=Xѣ24 RL3L=DE?\3F78@-x>2ކ#XÌ~Z@#C.X%A,Irdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,euBXZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`v 0l@ܱpz 91'Dg {B 7W?#`[|-ĦyBtC @:lDB%L#8;;t,,C̕@Kxo=Z?p;7JDG183#F3zwB@ 0kD7`hN@Ľ{B3xa| JKH; vC{һ&Č{,|B{2"/H_:%İ>H |K@X`>u+Ƀ/I3N0B[P½ 3 nCuS6!tޫ.:ӊzLz0,⃃+eμǎ_Z^' ZrZ'eUa`ûGu 0҄(U,#߁T9}KP%odG=πx Cwd预%YG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwÌn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /PHTu8> y YJ`XLҡd]6XgehjlݖnpY 8!S(P. L5SIb Qtǂ`F0Iu{5~%-MU-[d65uG`#1hHeQf2euޙ}蠅#5w-(c/#%`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.EAIӀaw4jZԗOST hvԣIRBAi XH-SPq2ȁQG'Qkep`?LpK D#HO- <7#!IT '.}IB;@땊8Ō !.PQSe={0ZI t 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[ 蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL=ěfbv+"&ӎ8"UG`٪*] $G@ @K{ *H)6d zX+ 0O40RP*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙA|` Hw(ڕnk|=ie/n t5:j!Kg {t * n#\ miq9rfRW-u=˜"@l +I_@G^cXAxD!_\faуCeP=ƫ(ࣅ !auzVBI;4|g=6B$%PC'! vLF|X0cЋAŽF|`$ЏFj`,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʰZBHĽװ؇LG]|`# 7B5H؁Lt׏$zTc-=1m:!"1`%}>C 7 C $E}C SCR0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…:k O$NFD pG:m$(#6 H(K  2ijdZƏL&I! !L P 0fk(- D"RA:8n86nC @ ‚ ƻB k !*A6`A4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ LD qqȐBN-gj$ X|_b[F Q[k @a-!<tΨUI)¬\pR.@_ Q!6DcX !"ᖬ0ZRI sR'w'Bz!n%l# * @-N$~%bMba c&b%!J*cN d ϖ!;!)JP瘔b  "((H<J XL. @1V-:daS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* P`BxʬZh%2j!##LH@%&I1K4Ũv`A1< 8 s-c;#AҒF,00@OH>L$0p!@emKkvI:A ԁI! Z  ҬmI !⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʤ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨnHQuU\Z(V:bB\FﵤoJ+@ V&II3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^#>UH`ho)ǬUr'r5(B@)AEod!("r5dL㇔iH7I敂f"C1Mb@6#DaA!N!ᑰ~7!(0u.!R.w+2ws;sU "tꐎ @ 0R>B|L!Pp`B5lIR,5xcI/R7Y!k@:Do7W5A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@$ D{S[ 6L&Z0A$XvT a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@e *m5A ‎t)$j ĕq)Qkp*":!$ x9nVZMDJ! DZL6 eaˀ$` g]:2  Ha̗Zjʬ"R=d** cxWjH//0#֠!D@^)"@1RC{l#K@ :> cC3,6DB XC.P*LBY hL$?-׿ "cKC=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!"`!@*|⧇VY[ٟB:|aDY%AhMdAJ`F!?xޡd0RGLUQ \N%맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7<@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!"e27D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevة(iH&7(uGͺu2>G` `ʽ{ؽK<| N= { :j:|c{8”9I|3'w4Bw_w4hAY2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^@w$!]&dÐ޻9s|Uݽ|CkD! Ll&+|޽*AF#\×vܕ6U3>3C>tR8=L8gv'v7cg|F=C>pp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(dՉ\Jhh.h> iNJia Qa0@= d$=$uO \7p1P;' _ #@GXΞ}\>X:B$jk_ȲFtՓV;jUS0ɏ/ k>[=׻줻n=v|a@ߨD'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճ4(hqF= 7L3_`Ƒqe:SFVSXYWAFqsA?va:@X_c}߶c+>!?o d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF(R!,@m=ԀLl|Q0># jDTq$+K7 &h, r,R.Ðǘ,#XffW ΙvCa&Ι啈h]B hFv&%C#K_ Әt4Mo?4HcWF4`* #l ͇w 9R{e ¶$ 3B)tm@,E;%I AC 1|Ax|ȕb>XԵ5#Q(V-7=D aGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]ua$L@AҬG'ڂ iYRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY:86wD1t3^)yK̠*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!=iu="I1phMLo)ɳ<΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE;Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! PNXaZj;.H".;P-/c54'eg*A !Cd1 RF $DCyrFoپ]xGc GaZo~FeA1BdG0K_Z Sd-i*~Bf$L Bz 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`.* Dp@K+а!: Q }ixo 5=5 X!]'>"1,$4[@ *՘4E9$):~^S"iukG%Zw,zh S;~%[(n>5ηR*X"EtȂ|I!޲u T-{7;9KiyKv+N@f%S^G`bk/Ǽ@`t\@9" (F! P`_ٵ2, Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[M&=e,(}6➔$*A~0Hw`( 5I0Cw.Hmz 1;+d|Чu8w  q| yi 6݄3rɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet8̴M ;+=@{RsBGz6w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz.u9@@oӊSY Dh8+` ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG .$;nww.:43Zj;$ P|QĬzKذo! 4$@ 1!LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T6 4taG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19u( ?6%5H +@4&%A Jҕx/Yh>"$y3PoH7&ᨁC!Ux  wȸ@ &*5؜,9 Dp,Q)3Rj#Y-ɥ.aYd৐NnB':P;pI"Z M:OR Mk4UU@ XqD"17ATI CmbLg7 TKFr岘41] A FId~H$|G?+zH{@JGFmUe:JaT2Pn |`=պI76З(r7'q)Շb[_p r􁏒` `H.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ((5>jH -r/yK:c,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4"Y.'qQI`s#?8xQߙvG|I5|"Jx- .o e+}E?z@#ֻJ.c0}F APC@'1.ۅ`5d>luVDj\+оȝ}ُ::hèo+85Pnޓw,)=x `3DT+۩ Cz)_ wH yjAm NmAPho h(vHl(H+vЖk~V٤-~wȽ Xz4ʐAxA 2TAtAy%dB BbЁ2[789\ߒ;%#H@txѠ*fX+`b|p~ c| 룈HȽnabH ' +P|!ЈxF1z0ẎZ|[T]2:jkFw[ P` )|>I dIȣ-IHd XJٰ 4 6y hGx>wx{ Gtr* Hp@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jj t˷˸G!w聍 &N ~~ )  Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w@eP+lq vYfhQ?<1tH$ί_tN ?ė|H(%;}x HY> x (\ РQ j#}P Ia9$@xH(f 9L o4"5#ERlNP?܀ȞɀxN YR$Cu`!v'(J$|$DH5Egxp ';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.?-Y#;1Jaf\zvKzT:FL ǼUhM(Rh;@ ևv^N{0!9e~Ȁz ,՚IiPike؁  &7{xO@|}XE(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYP() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V?( <1 1m}h.<9KkǐHzo8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q} HTWu/:$=h p t_Vi,ʣFw$f @y>IgW|Xy7C \y˾D`ޅ.'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF PӯdN+9Q9˸O[hN/wXÀp'y/_fġڳt 聼!)9FHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - &Bdus(ѢF"Mt)ӦNB*u*ժVbͪu+׮ӆw]𺐁 ёNV꽙yo]nKwݼj޻ݟ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwmSzC'1Twc5áWL-Qwų~A_j~-NdUe CFA8uVMP9s,]P$c r#X'+آqφ)N?d0A܎ޏ|`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=D`O$Vԁ;;vN0 S@:HCb7Bq^ݓIBK&%#mj*S7PX'tD~T0@#p-j]]Qkcf3pCA"XA'tRFtF>:y3jެ#At ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p d{# E׵|;ꑵJqz=A ܃CS_ק:P>#;ϥts*>3;cS=C0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xlAz%K6#j&afw<)>шo ,x PD$)A\Eݣֱ;$Џ|$G> !fc,#8@*n Q fщwڡA+nēLdIG{(|KYL_ q %\&< eJ ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 a!H&sv ; @=E HgVH Q@H蔭XUy@i Y8= M%z D $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>:wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS21@_p 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53 _T^1z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}8`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u$^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?,C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7 zĉu@=QAl<\>d!:@SU ]^ɥDHE; Aa|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp? @ p^s!\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA =$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ$0Lndlc (u,x::IP3LlFZDօ<: #=e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH 0:*ę/ }_z2l@thI*,q"DvW՛.") $cB c(RDD0*MԃQ0bɆTUi\J=u\IJ~W$$QD܃yV2+CDjშRk!%æ4$ C?)tNT>ŪCD@DXRaY}; B?jĽTR'AH$yROkC=liBvƙ`J=Sce^A ``)֖  C#zn ibHBܔD@ܭX;<, @0Hح4tI:HC-톕,ےVfd']=|@,;|؂A$H]4: gF-,ڎb@*ǩt-m-H@:@ n`.;nҮ`u&f$1,>^J:l@Z"4tuH:T=tA)dfK$@ @'4lO)T0'II):% p 0 @7z>EAD@I>î @>R2D,@?/EHK_dHI0^>m` ?h@*@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊,KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`G#æA(COrU7L:ۣl@++F5'F4s)%lC" HT1*3pBp;pJуqb&@ 3E@ 4=S0?UHAZz>RüW,AԈ ~Kn|R1 BPu8̳lA|D) ܃@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ3=X@v}C$C$YTI&]U:lBt@}>ThxOA $!^C=TA@ݏDXcJ:ßO?1@@btA)-BmDLKU#=0>)rUA׾>}-,@##t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@A& "*3޺ c"{10Իo_)&.BAL^0 Q lB$"w&BJwDbF['d u:+>>xqǑ'WysϡCp+\i}p{@:?/ |i}WYnaYf"+!FI xJTQH `%:z櫱{$yj1Ja xBI'D1SJG @ށ@l'N\o!_MªgH1J n1!%@oVPiơ*q7+i5F ´dgGч0 !y'/Թm=4$G^! 6;bgG,_}Z~P" 0dRr @@=PSR=jNPJh`s?. xG=*@v*Tp aHHcv#$Hzyb۲&IL_1S 1 J=/!:!! xB9Αu$"`=E7`v38`]GDDH)I."oA dD$呕@*H}* x"H,TtH GB c c  hBB7CƷ ~r*ZA@+OyΓ=O% Tj4AP. upIĀgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:to5O[9zYgVCx_X\Q /$Ѓ8N'Gw&ba5exjtM#C4M=."7 @>d%D, HHj\Gء_B0E tzpzYQBҵL`؀8H6&GVWW`:T:  •`zq{0c}>!TtiZzUGbav5"` \h c!$0=aYyG2Q4CpRd!9P'CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆH"Qah!"Q02 = 7} u-SV3{@ @O } 6apBQM 2@tvMVtr"iF2 TBJ kݓ@B([FA($,@+ U|# @C,x$x,cLJjtа `C?bP tp!H߷guoDY.3zlK@8|`CN 46P|L`\ 1UStUJC ^Βݐ@3. =ЩN2 E`@%RtϞW):6X8Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC Pc=K:@g/N(I& !pD!8d$J(Y,!v"N** VAp즱bMNdD*gM6Kb!Y:AzB#Ai,!g0#>@xɰ $`hPXa!& /߀0 H!Xa{< : !]!P!ڧ_#*7R I" !| 6(dA++T( !@&L &{A @P~ޤ1"bk gFL *@j6 G#!}Rh)pamN/¹uAԠ`]*BdY< B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'xƯMejGH D`Rd8 -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8HH YHށ>-F%( %8> R!H@6@+\s88$`KH2T0@$ n6` # ಩>B$&Ca&v|2!'B4"2 }'U46/QX8 $($7)^H|ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&Za7/軄& ^B"X.Bq:PEuTSab#Ԁ3[\#$0U8"̱#<SB{HuXU - ;٢T$@:ft@6pXɵ\ QF vne:8`^s rPS 'Ӑ@M| !Z HЉlr "z#"|m5$S!֊ .2j% Z͵g}6&A#Uf21d0Ni2ءg vVMZRg?xn~!(1t-tw~m Pj>gRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0$@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-A(Nd>8PeB9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!zh0!p PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!rI6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p`֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫ<འqv-^t` -z7 *G :ɪA:u `+{IS) ةAQO+װc˞M۸sͻ.{ Bn|u~tu [z%W̝NBtFvфxs T}A -^AB|0? ($h(,&N,vNsѳv $A8@ CC/Td5ިA|c .4>ܗOi7Xgܓ2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*APE􃏚>wYʑW;Џ=N=x+ ×k7\ 鿗IXjA@B ",Wlg!FI>@ܨ:[:`\8(3{6_QO_B`@P8{#>R~o?_ue;DW0HM&; ؜-_Sތ7G.Wn?:!g砇.褗n{;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGH@d0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>)GIwH baŽza%D7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ E@{l pd>Cc%%䅃Lg@M% b(9ẋ>ς @h 4ұFt\aG ƒ t`GJTuB@5Ct%@R:QĢpV! 0㮂 5gv)^ zHuwS0KCôbƮ'ODH ؈ox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ %P*k$" :djmv2(|qQ"vs@ Nܣ Ňd9DAJYN0|脨F 8 @YD #pLsUO3a!%K oPK$L$Y\q0 k4/{|X*PlB: duh='P.w8rARu Ǜ b-*-c,ad[]20 3G$''Q24G|HԹq  fABŰg TT oP1) :tblh T/dwbńϯQ j4\XG< AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fv@CY ,\Y(Yz , A+:M zd~,cJ7y*M}7oHΑ9!cA`DB1қg>Y^x+EKUR(ȣ;qAH t&U=S{aE/|6:r e!Z:BF1 `<zfʋ4)P(?2< zb}  hjZ[ai v aDz7X&Ydˠ A%pGvq %8 C w?"# $P g\E?ݔ@AV212W*e! bK"2"X">(rS}g2"SR`xzXOJ )tb1G r i@tb2A] ON(LRp@ Nh ` AX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L 4b}7сDS@qj+R+AvDEvj``-b- H\!Et*>%`E*%υ< `& `T"l.7" BBuPTwLe8**C@+e%p 9}2%p] y0/r/b,p`dÃ06c5h0 C 1؎>|cm $*%`'2<^E@ H22v5D@8o:v#t#+.E@ 9F`29PDΡ=48& 3!Ls2F -1s50#MWXEYܐV 6m6AeDivӇ_X#GP8  9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;I@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O=؊T PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گu0 fiLSGj֌A@Up%f VjKsjh yv(4 0eTe]qvMGd0qE6"ȫN*{%wr0SRvE;T+FЀ{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾B]O /~$ x:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2 . +\}Ԡ0yp,iПfP q0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"pq=P5ɑʢ<QAhjcʂ@\`lhQ,˺\06`VE(wUtE 1)7u# 1Dea1K% ]0%.J 7 @6\λ<4 D(۱bzpHZ+}乖ȒQ&;B"0:,K9^PK [2 .`Eʊ Esѫ;ukBP 0q%$t@v̲p^ alNͤ T(8!LB9PWDh(P qzt`^=IBbs@U' ԧRZJ"u $=:G9S=unUPEE4P`IuQ=PX O;0!mApc`'#CrpǍ)'p?a@4h'0fޒ}Q 6_ו]|1항P\:&$f򭩜#{pa \eP0]YVZUĢr.F :[թqa@X#i(3=cpvv8 Υ. *I.KkTIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2" ngĝ$j斒V (!3.yՒpJEWi&@dkto7pפnբ d`Y[~Vt%m" p-*°s ʧa*̢vl8yM'H' Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-g o;h O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowH!~z&w]{s }(;| ^EUa{0$ ;(e$H݅"$ܓ;cP_:]巹ה d5Dv2'Po tܓBz [CsѥO^uٵows0ûz𽻧a!I ~TЉ; ֑vJG~g `b!|P3J}*Po G0~J!9JǸx'{6%!AS({H@ K!ėoZHz$k!nN*xG>Hoda!|#PXа{ BtQH#tRJ+RL3tMF'}jQ8TU3*YŬJ.zatz{'*@\YH  {'8Xu0! MX{!%.g6 1wܫ}Fʁ.̳R`1_~LȃzA3 SO"[؛7 R~чz`z `H2fsyg{g0`h@J{b`jzkkƔ e &aKeҶn{oo* W.kgq#|r+r%pIe3r$7A^E|@)t@wd)MyJT!40!Z: `3vR@?_Z `Au(1;&CpD0D*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|,HjTF̢qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^iQ0x@>0`8@&0 \,gRt[QH1|@l C3(a:ῥc62ĀG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6CP{ kVWd!9-ekيfցXt t*B&VbE9K?Dm\B.x4`GX9'#) $b[~:Ap; "Ta@5$yሜG G3BQz m&[(Or|匜e$,F0 ` 'Ubare2v=U 8BrKzLЋft\C ,E4wfhґ9J݌E= lò Gd2 UBH) Aj<臜}ld'%#Fs`d/Bfp~"+CdֳRRpESVCX@\(Iq~#H"Dbwp7>9 x-EHSKX ]T&ހ 0@`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>@,}Czt3EF;v*P&[ H`AͻG=uE:0"N YW#W*3 ˈ.A#Y ˇؠ5r? " @ #Q!؉kqe5 J6K: UA ;7@/ |pUzkM cX (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 DA*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5eG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kaʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-H!@xC|~@YꂠTfXE^n9(MƱStd @}X|#}pup|Xv .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{@MT#Ai 5leKof=w#oˇd @)7[ .(rq|#B!Y"x^|@D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4Ddz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@KiؽwXݽuⓆa 6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzzp`œ '"uB ;#># :%> )"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>AAOp UvY>0@:(>mp Р&tE5GhCƵL Y*Wmc %, A3YnW`dt@q{Ϋ4:"$=f,J;-Z{-jm9;C;:$Td7RwX.[:K ]&=PO 'A):PLM:S+: j>0pTq'r/79uq]N{"NLI*L0̥9Bӡ@!4 },)j}©3@:Dy^wJC ^(@@~^i7:80@#AO'LzT=)zXADp(MqptKӇhr\goB@ᡤnA#|i?e"ԁf?(< Eoc"Bn CB=V(} a| (E 쀂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(U`'RLpz(ЇEpы`cS 2 D=⠆uCO1v5^[J l?k`n;zCJ # 2:~1$6yNF"H"} #Z,5ɂ%/-Eb\c,H0eɂh@3(PB|@TM:Q+[ċHgetQ D+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CqP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0츧>drqb\i>1,!9PJ8EN/hON;L宾ax@ns; ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7DCCU zLh@:@zDB胹mXC̮ԝ|:Wd,L ^ t/| m,;tũZiZ L@ԣ`D D]ʆB0@MO8;X.^ƫM]kՃ,pL`‰dBH]lDDBNL H OB|CI*CZv(U'*Wxɑih>XG!D>|CYeP5fWzR{"@lD6Pyf GWB)B@A\A0Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮ ELl;,A$ChEm}Ga@1KN;Tܱ&k<ԖtH:H9cG^^=L#]P.j!<*С^}aD@ 9*k'0kz=NH!@C?bD*iAð@lNLlR mD|lĊ,WC = >}KIN,ҰzBC)ӡE==ElrjJYUlB+~ld$sAmY @+8]@)@,Bס" رÕJA&..6 %hN脐`<VzD@#Dd@܃;[BL@AnIOaO0^M MB\PPan.FCBvεc,HĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/cR>H HWH2p|zxHCmHCȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅\.#tB&'2((* ;tr g7Q@D)B#h$>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VHC&|z&׹V+/:C2rhGoF$+$K @A#8@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP> ESp!0NH@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG,<>P1m^ EP4Y^> h8Ŭ;#t>tl2̸V%hew?w' ENHXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TtLY&Gv]"6JxL CEC'I*X}JkDdJY=$LAC/l"05Z Pr mX93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZU'zLݧW

i/S C>!˃ &jAoT7CAÒzZ4K'^dYA;J<1ԃ\ 1#˱$ ٟ=у,ey'Mm|üY /DLû:dAlLstF PPDu(\hC';`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝt,@,4MӨ@H)D D|xܻ/؉(P݈{؅(]>tF#!E:@| Ա3X̋;y ]Ov qobe@\D#剎;<p(0T:i>Ӂ1 p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W&" W R-pA6m o; {ם+QCs|u+Cu⊟DqT{Rz6`v,| H|lA %((G;4Y$3BoiA@8J"d2'iKvA}jhσЋ!:0UA ^9A~!!ah_;AGFDH \ $&<xa,w<@mBxj`DLg䘏0N C2YQ)E鐀qzF8H#>Q"~L@?XFu,~y#'aeTeq́`Y>b\t 7@`E=`)I5" ҅Sx[9K ,<~rH;/c=P@4Z (`@JFP̆X "yP,B&}Du&#.OYb1i\^p7-dH aP<aA EG`%QH"7F5<(FeQM68_~WET,] EdXhE(o`6@>bF*"ff v#2@P0:##o;"#H {LO@ͬb !B*BR" ޡA TN@&#f/b³)*xa bTZI^cj+ bX'*MJƮS:SRphΆCJ"$Rma.ꡙ(@$X=@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~"7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 0:I* kaIZe'+L-Dr=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$`!ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ez ĸ6qd"T'2@"b@)QF FA3C#B2({DE/0@$ !*Rhb3K3%BZeb e؊4A av` B sTjރHcG"`? ;F% i6;A@H)n>A q.`^NN'lxG "AK$Nc:'!D,!s//f$!dS/D$*e>C܁|";!$# $A G >=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`X@@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  B `k3 `k"`#F)xhz6@Ge$J a%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF "◒+ْ3.tNFp$EZ-!$A0h٠zx$$6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6::0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$czΓ/bb)(?B #v`'@F@*: @V 6CF*`c()gf"H3X]R@z`c(`-06W(2 > P=f1mw^yѡU]SO%r@\MwH#0.x%!`qˉ&0޼i|[("=<f;0(@&F[+(>azmf5 ac.AQ\W=~|7")b6"Iy[m] Q#)ԇ419 Ȍҿ>/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F| @"y@"r}'v}CBnDHbn@TSԁL%0 "С b1`?` JaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+pNY.B #7t[N@=vI8HLG4!%ߥ3*ݻrr7n\YԐ5T)ӕNWjV 5X]uB|Q4HESs= *X)d،6t=nQ>~!|v2OުDžO4X R-pm=!{o}P„5jehmp م ` !e_na~b"Hb&b*b.c2Hc6XYnp\4BE ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1sA3@B^@>EA>թXcBs8h s7 mMɪdu}Nꆓ.HPYt8@X$Bʠdi_j:"D yE!HВj8$:I)#|aMP`>#E  &0S en> NȮšt!>x;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y${=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) : d:D7A0/h;N5W;j%ɔ!:>3BDh~}ЦkUtHkΏCa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|8 z\ A*~̯ˇT d$nw:ʹ@, B!Z݈0&Qn P&{HHIO@D ,@$b Dp3_a6DJeBNB3}0!XWB@)-5 Ȓ8>8cq&80IV''v]mzWXVd(cs4D|C^uM/=Hh v@=` 7 ps,9ωt~Oq!P\бdh!3?*3%飞>ws#z{#!Y=QȖs򨬄XF~oStw,S|[9ާ`$$p@S̈́ aB%&no9#µ `} ?(PJq(<M&A1  ` aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"#@#P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vqZ" aqnIPt IOV<9<tY? IR@]F14&#p<4X)@V`71X# ED)OIm7 !91<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig% qwj,>3(5P 0`%&֑mo q*s=fS@[|Z@.v0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2-@jqqzOR%ߐoч^h7(j@@ : `ͪ $'PAH}ͅ0`gB0xRي"7W`zC($#:x p @%" ] P S) aUsך S#D&@ҩwS鲧e ߀Rb芭- ؎GmjdM<X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vɾ5ɒ,{7B `p; 38^|V2Q@Jeʃ7H@"iOYjp j 2ܶȻ!x,N0P" 12ġ'=_C'x& hvBgvG!!= kyT!59@Jm- (Beۚcc=Mm׍G`pce4IT%]$CI@{o5p`f1K#Z] Ey,Y燂L"*32hN=( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^30mk773/O $_7R+{n0 C a -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5_'}80h O]ZׂY185  2e[ F=3}==]ȁ@5GVz#v< i%oB/> Bwʇ}zM$Cg6x:d!2$C#DOD1EWdE_1FgFo1GwG2H!$YЬ@hb>Y.D 0[`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`suqx+Y F(YJ=u;U@2!@0RЧKC 3dQc z3F2ޱ ]R @aPdDZG-7D&>:`G (S@'j7H8Ǝb~FeCA{,c@M9g*@u*tU1цjU M\D <]؁xІȚ t!6b_1u!HoGeww#0 <{q-W:Rv24._a'XZ T@Mޑ4Y@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"Q!X !&@J$,0(C=xW a=%O\/ RCHy&A0 \@.x0&/P__O=@cl/? ƒu88jd X_‡c=@PZIf#8k$@h2+e"`ٜW"be,+p2 A=zJvֳmhE;ZҖִvF*#xN`p b $6qκFVo@0Q YWP).u ](TxMɛ vxFkTdt4{9X!h-P ׈ ~ X;~@pnk`- c@u.8HFϤ  CIu(`0o"k"FPtXX wȥ|DJI؀>:N X!4 zpYXƍH5@> +ۣ(HpOWl~M`}֒ .}8H n "s9?b@U`{P-npdTA3wx|Ӈ,)Έ< ƀF Ȁk~ ۓ \3` }x iԼ'\>8 `=PPQ%R5UAQ <0!uu`S\;#m_`a%b5V㪇.u`NN{6IZz BS)6{K=X\ x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!X{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH t`Hz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@(0ԄmmmRpIkip>ߖpySnDt)7SGɇOHYam66B=#G$/yۺv\b huX|7+,r|考9n(Zn$q ́d2Qq-u`Btx2JQ x F#Z]XdYMKa: pt. X2Ϝ2vH*Q' ,JPt@N(ljt聠0|))%tI K/0t5pn3T@TvfLJvivkZ P@oJ}h{{0r}׀,6~ /GL'p{$`0@z:]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'#gܳ ߻{=R,jaE !ɚE uҁB䃜WC>Pa@t^2D3 o>E v4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM;6p 0 exFF`} wшgo {œW€{􍠝jN=Ys!qs?O>cY> DOPL=vOSsy Q`;=cj%S@#@4;:Q; 3[F@:oF.4H8{I  2<0@ ,2:=~DAf lwL!H?)TNZgD\=|;"̔@fD [ T;4$0;2dt">x}IpCUPOZ+`HbԳ7^>Nw= wT=<MG@"n.SyHzn}S"y 0j x=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% : @^:l5rFX5^K};s̝k67h>0va=}hDU3DSn9:o[;T>*%f@:3 t@= (-exO:RSɎ#:fzk7 @=b dAUO?@L 2iߐ ߳H Hoe;޽ɖVI|d[vך+-+0AN"H @^>|wܽ.ʄ2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U'M!=@Pz8"zW.J:*p`0@"ݼC": CO,v  LGeѣO<P>ҡD,7>"‘FL=<9=½c@2Ȕ,đ/C`80HjЏUPS9@tL8KG4Gєx5.F}c2)3(V$>DYϐ!0x +'ZDIʤM%XyOB)\Z ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Pɢ A=yς6-iKkӢ=:hQ,#|ၑH$e:QB _79FX@?Ґ*5&5('>{c&YI`9b:XzóefM1HjRZ>  O|b:H7<;_[<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏp@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aQMDyL42tCǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJao]Simʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*&3`Dl؁9$>%7HreGhQ >ï@ԱkSv5(eDp L,HS*Dk[\!բ=Koӣ>=Kd4+ZIbQFգ 6XTk < @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ ODYWNCPԃ1$JH$4(!RO`"'H`\HPh \Jb+>!Hx@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;H,=>EpC(Ns0  D'EC-v̈́:r8]:L;T@> K?L^ "QäԕCC?XU@Y 8H@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_&aaCb.wC@'CT ;  RapCI,Ft=[gC:EZu;8=@WHC#|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CIO x$v-Nŋ>ԃ%D̀,qhi kԼa F4A]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F,> `È^D>@c7xSLIAtG@@fT@ ,7L`\MhA HԔk]N $C$@KYҫ~`F]/ /LgaHH|Ef($j*Dj Ujl\ ܃' Lfe]xyɇHCȂ>T@/G?ȅC'(@  &NATE$8Yt,ST$c ~7Tik0*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*(.쀝!͍j, ioboo$Fd(C,.C$p po52oqpt.'\+FKcpksp{pp p p p p ppq q=@.VhYnp`+?hUGk0qmQ_tkτ_1qo\qq r!ϯd4e&W ,R D+gc@ %O'CCYp@8Ato!@YoxmnKY*VL)HP^lk@A#8@ P>G@}(^E:Nrl=xo*|nS?m߀e $Cl Eԟ,b)B3tC;.CqY$3o.>T;FJ<H`La4aax Qu\?jvkCkBu@&9:$qELG D/vL8rpPptBS=G4N,LnPZ h$aV$>$\PhŴun4 dt6Nݖ@"H@,|=l_7NqN܆C]8NF,Ta?Xg{@YtkC}mF<@`@CI<PO7(r\gq QDn7,@:pd[CoNO8Æsn\I'haxu@t{ya8 :lA A>T7 F/FHg+@H9$NW !tw{ Ӄ,toVX4ހ]-8HBG$ DÚÖ=C< םBvԙJuDgO85P'ޫ H;tA(I=t ~ TttBo)o@xx 8C0,̙:dEu>2Cq:T<O:>`<%£$H2ECJ ȋדApF;:hn|s}/LtOŗŧD(׼MX7]|N:HƦH`@D(C >(e@ Id>ɰþ VRƑDWFUEYA&p$E_[\X>Hl^ 5|s:p2o,C M]C`_MiW^kyH|Y@)-{B0+@'b@$wO@(c.?t[N@=$4ݽU"Q̇: 'RD T9˔k^>vBwh7_B}Df*qa$MDNVT@|A b;>SBY/NI Ce[Z松 Qewouf`^Ǯn:\6JcÇ'VDw1Frz#vY%)'*J'|P8 )>LI; gki%dGF ׿ P ,LPl!P ) 1P );v0 !b آǃw @{D&HqExG JzoYCQ2LDdJ2L%JR9T?zX{)}x 9(̧\t@XTiG|0`MІ8`Lˎ!F$G |hl-C@!<F-ޱ QIQ @MQSX)%k {!&|<06'?z':x_X=A{ԅW^E ``(4 Gz֩@ V/Sʩ8? <+hawO IMQ*Foe@Y9l駡Zꩩ꫱Z뭹 IgMrY#`ވI@ `A{{PRJ<2 @PDʙ@GxJt5:0dgȢ[]xC1OPBTsאƨEȜLHd"Uf|, X4C=! F!;@_t«06x71 m#ؒMA|̄ʹ;Q-f1@9 \ )H AqB{Џ< / DPۯpF{t%-`6Ar'H3,Aa!7DX@tU|`j W}_XOcKIڐhI@ % ogP=rF0c',obY =1Le=PotAGI>!CV)S0g%V$ݩ3Lg+]!.2 c>PGFuUdAЖv_ـ1XZQI%bҐ}4#trUQΜ,@psiFE 9惧*@=wȢ>aĨ(m&G"VbCds[A `tL;zb VH1CuZ\QUm òC G:*+B mvg9ϙuq5qM[{$6/--zR?H(;(jt!)]'mzG1F߸o:h6_߃€?u(峴Q@H'"2CQG:tJKA" :nȽ݅3yFI !.#4,r"fA8 XY=ѽ>?E)kg=ρt7 :`c(JӉ . p;6P|  ^|$!dRB` .z 0X4јJ´%7*yI-Іyu;Z0@o ѓƿ:(`J"B) ONw8Vša\+Cf:0A"h%gBq8@#X4ƸGh8 !ޣ$= +LB8&`h? #n_c60aL J~%AЃ'F`nR7N@ A+@olq0upydlk vۀnXzk"ba`! LpkP !"F`!J (gG*qK9cTŸB1rlT(ށb?)Υ*h#:Cb ! $ @L +H`F8 AbC|f[Rq2a͈3ı$*"$`Ƀ6btƑ6 N!72A! űYI1J`?)"j{ 9>n.Mʢ+t@ɞر!" |$A q0D 9#1b!D>!b2@b9t?JA+ )0<,$PbN%Hm4=,ٴMM4Ni<$B(g*kH`/%B`X`NP{BtQQQ!5R%5Bڤ hi&5@,7Z.kh ?DU+ME|!zN65VeuViVmVwNSquc5ICI.t_S;uWYY5ZuZFWOJRү$F Y{S`8u]ٵ]]5^u^^^5_u__6`v` ` YZvaaa!6b%ub-b16c5vc9cb=6dEvdIdMddQveYe]ea6fHeefmfq6guvgfyg6hvh`}h6iviih6jvjjVjvkkk/$kvlɶllVlvmٶmmcVmvnnnVnvoooiUowp p pqPpwqqqIq!wr)r-r1Dr1ws9s=s_BsAwtItMpEtUwuYu6u]7vewvigavq7wuww9vyw7xw_}wxx7ywyyy7zwzzz7{w{{{7|w|ɷ||7}w}ٷ}}7~w~~~7w8x 8x!8%x)-185x9=A8ExIMQ8UxY]a8eximq8uxy}8x8x8x8x8xɸ8xٸ8x鸎8x9y 9y!9%y)-195y9=A9EyIMQ9UyY]a9eyimq9uyy}9y9y9y9y9yɹ9yٹ9y鹞9y:z :z!:%z)-1:5z9=A:EzIMQ:UzY]a:ezimq:uzy}:z:z:z:z:zɺ:zٺ:z麮:z;{ ;{!;%{)-1;5{9=A;E{IMQ;U{Y]9 ! ,fBBD^^\jjl..,nnl&&$VVT 224JJLZZ\::<**,zz|bbd>><""$ffdRRT664NNL~~| IJp@tprpĮnfHLDPLF@~xx$¸tnt0@XPX80L|(6L||. 04<@b\`BH@ ̜0(($00p|| lttx|v46@`bdp `~Դh\`86(Nfnpzfh0x.(80.l0.PXXFJ@x\@<<4nf`ʔ pfp<6УKNHJDv3|{Wi˟=:|ϑ./z"N%t`FS=#G߅fᆳ:#>`R1TA.cQ4hЍ ;; N@?IF)TV Y3:3(S!p Ih&QlIGqvdP;l(`堄jj_wP@E#FA22dC,iIh:*B6Īz&sFA:fpO+[:N>@ Ԟ:.&H|@FAHn[Sdq%$-ښACQ:`,p;DϑhBx= POK~OS@:pPHZaypϲ,@ԃ@ԃ4:H:Î,2PX(6+ġ;<APHbG C@)=sںM< @BCt>F#]MhE@Iу2.`Gψ<D:׃B/j b !O3v=9;'B3\"7XOl{ܸ::wN  X>? C=ֱ |%"~L#!@@ $ ϐa |C77 +1AzP  {$uhG2ӱD (@C0USȗz`G3B BPa=np#=q t $ "J#>H1IHA?B SrI!݃>*`Y%@zs!|p؁'XFđ$2K@' GnyVWH_ L j MB TPL%(@>1tx:&]jV$`A$ H@Pm*CW{ 0)A}#x*y/ n J@*wZ=lTp@{Zp?Q(xP~T󘇦,kN(Ʌ~;g YU1V:u LmS&FD`MG=2Mj3s+nd$tH IE nr#!@?~jb)wcG*߭ؑtk\nV2Q`-H[yPDLZ* uYr0s#Vk>umJ#"ykMϊe2=cA?CXlA'8"xP3 ]gLoX@NH,0>I ':܂0`;dE8"0rYtY'uh`1Oey\+w\Y P,v*Ch՗2 G@t-qClGSu\@" X<ڭ9)57#Xm ̓/!gGC@lG)lLbiOl2ER4q0:ApBu'S;= ҏʹR^C:f!9C@fsiD _;WpBz4j{HdQpt d?KD9PT."pd<6Hb_}u\>e="&ثg :`qh@;Ԟc옍8&zkEuXP@k) H<ĨBC)$.2w=&-(7P O|  2t ! )HЏ{jC40!H [xie+ x!܇  ~@TT'EV=(= 0"P 77@W5@M}5QCg A<gqH0|=G&!y&<%!ߐ0Sf1R `rP+v02> h_P=@Ѐh b}~hQ \G~u5}jl؆0 ?pUA7$3- 0n9 ˅" PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ( !9Yz|T#0q!"4U0C WcMS S,P_ $j0[U 8깞[Ixq$ׂYYsqLLW` ym@pNI`j왡HIu$y'P27v)W mrwe\2*_*_ș:DZIG̢sR>.gm!-*.` r 0dpr:}ڑ,"gYP`S0֢qt]`waH% zI`+4Jlk[Re6 -40wQ0O1 dZJF"3@h/D?#u\"gJeP#0:蚮:,zT Yq$"AV*(PO@d&b fڰzJj$ 5jR8 !~E¤ (67+R @a-{ 2;4fc.gZЅ( "%"]b*U$]ǭQp@H5Zqd =K͚ #FsodV aHBmpYNʵ~KHGP[Y}Ya& hTc =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0x0$Й@Sd&Z:A173p#7tc79,<0@u| #UUj*jp!BR451``LͳQhb_܄_7|: @ጵƸ!چ_r-[yQ3mLc]P 5a P@Sq'K>ܓP$AӯEBd9wUrcFpgH6${`.G"!7W9„,G N w]†:[Goa$p!:ԡ;woc>LϢ|`xO:՛YB;z{F"r {gW w$T $zY(| Y- UCڵ*%"T{ vy :uV&]iԩUfkرeϦ]mܹuo'^qTsb>uv ēCNA2 @Xս ½Ufܓ=d_T=.ޑ*S9=4OTH<~ *`RC(⍄Zڨ,{OcFx׆zk/P2{'w'YY1.*AJ*>ˇenK0sL24L4TsM6tM8Cgt)e x`&PI֩ p(Z`H*F{8H{`z *w[,Y4$g - ` v" 8p"ԛi&N= bz/ dq@Dl/ @2Oz%0!!Jŀ0[¬U]|${ p@J(2ǀTjwؙv b6 *(L[% Yt(LfU2d{|7|y @4ȏodQ ~ ҩ%|Cs$%47!j Q 5nc2Bu@ uHC $@V$Izvx8=GyBH?DI`B`T P#fM!cKKJHU;` =q iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t|ԐΓde+]JXRe-mY\-}K`S$f1yLd‰)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nq6b1a@ZH ԤP !uzaء_LoB߭Ckʁ/BFXu#bJ ,/L f#\*p;vAlu,dqSr(G&X=|pbz6iݛ^,4jvF!v$<[43- ڃ$A =0.T 2{OY "T`H.A(2ܸ@KjpHjB }E8]@BN L)@#r9{K<_>`1yͷswP-YH/_xcN!3uIUn?:h]WL -Ϩ /8-j9C |LOT"_yy\>>wn | L5hA>o@p@B , ?=IDci ?ʇR|X xzNQ@v 0Ä(:\" 9gxH3%;FIDS 3 û ɵ0 ~{pDي{Вwh'Җz@FNĀ"|XoʇulDžSчG1A`_ FMdQĀO YR4Ea>(s`;' u1( zHq$ xGQYZ,[̇\\ g ӓSrGx, eoh NC5L|DZ*ȓ(p KQ ;8ˁ0D%K4ȇ҉*6. D3Ѐ." @BS5` 1AcY21 5k:0J$.+ax+o`˫x@ RDb, ܡoMPL `LQi{ |KXLt!P FL!Rx0t e L܉Ph@< *;o0q 1ą6ͅ ʇi K]Wj  {̎e X$ $ ű ]kw|$$ |Ї 68#ly*-*]2L%k B8{R"#!'hStX XY1-3#e$%RHu«с1@$ SXxYH$*e4D< 1]L }Ӓtզ(֭V NtVi$N#䜈(݊?HzԁI#tx( [5  h2Iѷ4x xy{|h$ 9<= bP*{u+C5LA [e5%"0h@DQ yY@RP)cRCLQlQYccP k ]aH>99`M4aB4fqDx8a]=cb'ч~(05sneWY=.(D!ntPO Й ćI @#IXj< ERdλw|Y6\{€F!wJYI{h ʠ!eR!&)hɁ4SpB9mRF"!""# z.4S_!jܣ9(% PHYl-mr&O~%/TKq._s6Oy$? M`zW"h*;ns?s2/MDA2k3Y^[p")pDtJNJ{YLV< rK?uTOuU_uVouWuXuYuZu[u\u 脞]2 Obc$H6av]v᲋⬉L^#_n3 ?W 1vw tjwvIݘ3w).x? }(h. kc th呂0Ӱ¿,H  =H.`efՅPHg3]y?Q ]7 sN0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4=oP@3&5"+ 2q[AoQ6tVyLY>RQP#}04oY_˗|POXC "@boh8!~J}䨀.Sq{{V^ifN|Ҙ$W﷍{'|XS ~^v  |5:+h ‚ޡKx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4 &AeCA5Б=vC{bsg> ~"%i`PĻ"Rv!ٸ[t37b@>FSh|KAJEbrO;޼O5\+bXi-B]'ʠ6YCAPr"%HT;г=8OR 5I!gAcAe @Aq=UP+v P<<.тI2PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,;>)$N@:}^Ep oj)z):*}Bq3Bb( A=,IC 7 N#A<|P$$ӉT`Rx=ФN=E68D#@Fl![@:+[F=b?KCE{O?@pD0T{n.NF;3ê( >( d`fwN+A+-b~sA s= D~4޳O'AN?@A";XyR"8zP:7lSkbAzAÍ#ԪRN=]NdQO9[a> dЀ >=FC?X @(:25d]lYH9nyk2_r,a#"tPh"MI"@]7/ D7:k#()RV"QsuX pP2~>ʀHCA@G!wH %H#1`"j`,: !72 >~zpQ#gd5$ @2( n+aY"4 .|~;I @?$xi ^zlP 3x ^A& |dr$-2z;fG<:h@y|qc(Hzh (=5@t AfZ'@қ_G"Yex>f8rx`WBc&%uẉA vURp! Eȑ;(֓+Dd"F%Ta[AI(DDCfA,HZc.SU#p@zTt&4BPȉQI׺"Dם 8v`H٠NTֱ&&d}ld[Tw>T^'jUIDI!__so<ɠH Fe"ό4ךA&qa{Vk,2~0#,asf8z f >e>LH/` ^M ^Aɥrxh Cxr$LTzifRV^ pT)pK@A\" c H,a%FDQ}L$G1 }B+LdT)P1݋kv d0D) O9-s;wpd7 y|n$` |qH,A 9Oo׃>r|IoXc [Aacցk{>BM\Mq0HQ{ƛ*ppq7-. `/k6HPM}T}vDB3_$HK#ϹYl Jpp$?65iH6F\{ 6_y:a<[H=|2[m; !l#ʃi:Y?xd ߐA"G`03s7NB ![E#GFUG!LS8h)H r{ԦdCz%[ BYЃ>vu݇G(V&2|CK&@|<$GP7?^A Ra`\BD-5FCUD39A, ;ަO Oў/ I?Ȃ{ ;AY_A _!`%Y(MJCSL;5C8`V> EZy, r ǘDaD;A_#bMPv4(-Zb$VbFd}C U>l H4b>-+nBXJahA4m @4B_v8 zLAA;XXPġ+b ! `m@$AAGzC,;|;qG1" #B@ԋAbAjmI䑜*GG=\^aE4Њ7@g%H >1A$MDHc%DZY!IJ8>r:CB@m|>XXM:Rt2@bC 6m] n*'5EYbdC]"L xIeZR\CF47̋I@B8SEXiBP!\HdI>J:\7$ Gh$S2dHŸAHB afY-DzGD@ACDɘ²,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D(|CT&eAH'g#yzZ,D?XrC$()FH: f(;  W4gACGK*߅DٽmIiA|niE<& eF,GOAK;<-Yi&_BܟA0@E(ߎ aY> p #6Dt]ϢFA7NA0\*)%ȂXi~Z)M`E0})5g݃=< 2m#FhE4a~ V'(>4C(`T= #n&>?ܫ:,(_Ljr?:ë^Z7i>؃>8@C(@<ĞP(~GRjޫ:_ԃV L?p<@Aҵ]i&x;סPlʪ)^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i'@Ì .&:]`C^!5 R4CD?=@2 r.G|@*_[泪زJ^#GjA,YnBH.vwI$eFÍ$_: = (/bhrE .xRpZҮ1$DBZ.Z;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-D0"x0fnpEpK3\0ED h~%rI>( Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``B@! 1?N⦲*2+kP܃^C]aC/̀ATBIX@=0`Y@:o՞aMohAPԃX[-/ gf?ZPtE99;DCAW"C=Xѣ24 RL3L=DE?\3F78@-x>2ކ#XÌ~Z@#C.X%A,Irdv, \djTĚZbH3CKFsnIAOTF87:8Ӆ:ln¢%{so^ӳT>uEו>\[Vs BȈv# nv}[($5,euBXZZyA%%ׅhT0 w=jEPR=tSGzL?dȺ9E`v 0l@ܱpz 91'Dg {B 7W?#`[|-ĦyBtC @:lDB%L#8;;t,,C̕@Kxo=Z?p;7JDG183#F3zwB@ 0kD7`hN@Ľ{B3xa| JKH; vC{һ&Č{,|B{2"/H_:%İ>H |K@X`>u+Ƀ/I3N0B[P½ 3 nCuS6!tޫ.:ӊzLz0,⃃+eμǎ_Z^' ZrZ'eUa`ûGu 0҄(U,#߁T9}KP%odG=πx Cwd预%YG1I38ӮӼ3 ;L 56T3"YQ갺ч&{'-w.ꞏޓe$AJwÌn.dq}<rDJ ڒF}H%J-L5ݔN=PERM4 /PHTu8> y YJ`XLҡd]6XgehjlݖnpY 8!S(P. L5SIb Qtǂ`F0Iu{5~%-MU-[d65uG`#1hHeQf2euޙ}蠅#5w-(c/#%`'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vGթ_rC!C=Fm'ݷ] A-0V2f;~k'O4xGyqg>i z.EAIӀaw4jZԗOST hvԣIRBAi XH-SPq2ȁQG'Qkep`?LpK D#HO- <7#!IT '.}IB;@땊8Ō !.PQSe={0ZI t 7FO#V 8.c )9NzJ+CIbLLu%&T*AJ>fX)~RKA&0tLT0Ѱuʕ%-bQt;5*I*{|FEtHXaG:^(=f˛3%rғt*!yJ Uh>[ 蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${@'SZt()NltC"?~35]@рL]VUnI&)wL=ěfbv+"&ӎ8"UG`٪*] $G@ @K{ *H)6d zX+ 0O40RP*_JVnj-g[jo^1ZɂT*# ;BɟV+U" I>pwEqAD,ޙA|` Hw(ڕnk|=ie/n t5:j!Kg {t * n#\ miq9rfRW-u=˜"@l +I_@G^cXAxD!_\faуCeP=ƫ(ࣅ !auzVBI;4|g=6B$%PC'! vLF|X0cЋAŽF|`$ЏFj`,XLYlvA,g9wꁏjs}(^ Nz6R(|` "8Ҿ``FXcv>ʰZBHĽװ؇LG]|`# 7B5H؁Lt׏$zTc-=1m:!"1`%}>C 7 C $E}C SCR0^w-I$H`` Z0O4p 0CH 3ϫ,?@H HAm@:p6Hs㮵M&_{T7Tx]J! z @|c|M@ʙ2@'HKd"[b…:k O$NFD pG:m$(#6 H(K  2ijdZƏL&I! !L P 0fk(- D"RA:8n86nC @ ‚ ƻB k !*A6`A4*R-dq!)(R p-H! @:iQ{V!cM!(Tց ؁ LD qqȐBN-gj$ X|_b[F Q[k @a-!<tΨUI)¬\pR.@_ Q!6DcX !"ᖬ0ZRI sR'w'Bz!n%l# * @-N$~%bMba c&b%!J*cN d ϖ!;!)JP瘔b  "((H<J XL. @1V-:daS11A*B3dT*"SdR-7NHRB@] 65[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* P`BxʬZh%2j!##LH@%&I1K4Ũv`A1< 8 s-c;#AҒF,00@OH>L$0p!@emKkvI:A ԁI! Z  ҬmI !⏓6EDbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!A pr,I=0XU^١ʤ3 nT<TZZuR2s+aADA3 `j"5GBjkԣm?R<7 BQm{.14A 8, ׁZpkQpo[ס[r6y 0-킶,ܨnHQuU\Z(V:bB\FﵤoJ+@ V&II3),55Rl:aff]'iAWPG6hKhA.! `e-fF6m+!iP^#>UH`ho)ǬUr'r5(B@)AEod!("r5dL㇔iH7I敂f"C1Mb@6#DaA!N!ᑰ~7!(0u.!R.w+2ws;sU "tꐎ @ 0R>B|L!Pp`B5lIR,5xcI/R7Y!k@:Do7W5A6BN,e|inv@a¸r R"wiGX`aaIءu2Ep*qG06-N/V$AVsp` N <A@$ D{S[ 6L&Z0A$XvT a^O2{Ȋx Z8 lkn$P)aytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@e *m5A ‎t)$j ĕq)Qkp*":!$ x9nVZMDJ! DZL6 eaˀ$` g]:2  Ha̗Zjʬ"R=d** cxWjH//0#֠!D@^)"@1RC{l#K@ :> cC3,6DB XC.P*LBY hL$?-׿ "cKC=0kk("Ȩ8F38<"nz;{0;{6*$"D`z?>#4!"`!@*|⧇VY[ٟB:|aDY%AhMdAJ`F!?xޡd0RGLUQ \N%맦PFn*`'b&ve@iu/sW;{HTPPN(Ld*l7<@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿdaX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1X끵Ʋ0K+@"Z;= $Ku!A@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!"e27D!;.>NCX,ށVFo;6MIi6֦yT"A={ 3"54P!C&\/ƍevة(iH&7(uGͺu2>G` `ʽ{ؽK<| N= { :j:|c{8”9I|3'w4Bw_w4hAY2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^@w$!]&dÐ޻9s|Uݽ|CkD! Ll&+|޽*AF#\×vܕ6U3>3C>tR8=L8gv'v7cg|F=C>pp{rM0@ ܗ~7Dhޒ)Ƞӄ%@c~S|(dՉ\Jhh.h> iNJia Qa0@= d$=$uO \7p1P;' _ #@GXΞ}\>X:B$jk_ȲFtՓV;jUS0ɏ/ k>[=׻줻n=v|a@ߨD'LnfT> Q#,Gӫk-!;q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճ4(hqF= 7L3_`Ƒqe:SFVSXYWAFqsA?va:@X_c}߶c+>!?o d,{g6Z)6ٰ[?QOo%t=`8U.8txG/E. _Տuw;g\: VOߏ)ƒ(hF(R!,@m=ԀLl|Q0># jDTq$+K7 &h, r,R.Ðǘ,#XffW ΙvCa&Ι啈h]B hFv&%C#K_ Әt4Mo?4HcWF4`* #l ͇w 9R{e ¶$ 3B)tm@,E;%I AC 1|Ax|ȕb>XԵ5#Q(V-7=D aGT֑ʇr1+ZV,V>URzDWi@K|l.P$N*wms]ua$L@AҬG'ڂ iYRĂ@!;e|3 $O>YԖHd>H|,15{]R x^]7XGء,YW#qxY:86wD1t3^)yK̠*MH{4І<歯Fk#p?6 f0f^tN5rNP dPZR | @ zЄ& :BbA5 mDb UAAR{ht:Nu%K!=iu="I1phMLo)ɳ<΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7~4>q7yaHDYV~钴pϟENb!t\w!OHInja͛FTqQ+>gE36t:`Y^SBE;Tt@RFqčT@ T 9)BȔdHMDBT7&*A#F! PNXaZj;.H".;P-/c54'eg*A !Cd1 RF $DCyrFoپ]xGc GaZo~FeA1BdG0K_Z Sd-i*~Bf$L Bz 10rmvtF|/nw- T. 0Z30[VҤ0O´!(d*fE O`.* Dp@K+а!: Q }ixo 5=5 X!]'>"1,$4[@ *՘4E9$):~^S"iukG%Zw,zh S;~%[(n>5ηR*X"EtȂ|I!޲u T-{7;9KiyKv+N@f%S^G`bk/Ǽ@`t\@9" (F! P`_ٵ2, Ylbx7(C?1DG$DOD1EWdE_1FgFo1G[M&=e,(}6➔$*A~0Hw`( 5I0Cw.Hmz 1;+d|Чu8w  q| yi 6݄3rɁxǁX'6Ӹp2($t*I+Lj8,kW(&t<0,3Ф9DqU Xet8̴M ;+=@{RsBGz6w"jh8JA[qU{t`hˁYa{0~Beh%IFg%Ԭ}!Lz.u9@@oӊSY Dh8+` ) 9$zՈc^Dx#LFys9iwbw{+ =?7 t'lFG .$;nww.:43Zj;$ P|QĬzKذo! 4$@ 1!LK܀1Kkؕ o* A(`(gX!!!{x*,{ ' U!ZLw٘ ?ġ@@Po0L(%@Kg}U'y (T6 4taG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ ;19u( ?6%5H +@4&%A Jҕx/Yh>"$y3PoH7&ᨁC!Ux  wȸ@ &*5؜,9 Dp,Q)3Rj#Y-ɥ.aYd৐NnB':P;pI"Z M:OR Mk4UU@ XqD"17ATI CmbLg7 TKFr岘41] A FId~H$|G?+zH{@JGFmUe:JaT2Pn |`=պI76З(r7'q)Շb[_p r􁏒` `H.7ekC@b7݃Y,DYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW!A ((5>jH -r/yK:c,|МDy%R z9EByҕt7O; |X =e)xËugG{ˍrQfD4"Y.'qQI`s#?8xQߙvG|I5|"Jx- .o e+}E?z@#ֻJ.c0}F APC@'1.ۅ`5d>luVDj\+оȝ}ُ::hèo+85Pnޓw,)=x `3DT+۩ Cz)_ wH yjAm NmAPho h(vHl(H+vЖk~V٤-~wȽ Xz4ʐAxA 2TAtAy%dB BbЁ2[789\ߒ;%#H@txѠ*fX+`b|p~ c| 룈HȽnabH ' +P|!ЈxF1z0ẎZ|[T]2:jkFw[ P` )|>I dIȣ-IHd XJٰ 4 6y hGx>wx{ Gtr* Hp@DlTɕdɖtbD~pQ5L.$ VEƐ苗Ȇ; /|;Yh Jj t˷˸G!w聍 &N ~~ )  Ԉ>2}p~P~0LycdDȼȭL1$$NKD(8w@eP+lq vYfhQ?<1tH$ί_tN ?ė|H(%;}x HY> x (\ РQ j#}P Ia9$@xH(f 9L o4"5#ERlNP?܀ȞɀxN YR$Cu`!v'(J$|$DH5Egxp ';Y"|h"Q% 3M9}!ׁ|wS%PT-F5yDXKTUUeU;(9ۘ{q<0 ȯ֢ՆL0: '0ۘzX w.?-Y#;1Jaf\zvKzT:FL ǼUhM(Rh;@ ևv^N{0!9e~Ȁz ,՚IiPike؁  &7{xO@|}XE(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfHE }p`,hYP() x،`l~Ⱦ8jZx5`0$vevp y\T+ Hb鐊k_Y), `V?( <1 1m}h.<9KkǐHzo8LJ6SGutas,!Hu ЇuȁDZ _ [L+1rV9ITuI$9|D):UYϐ :^q} HTWu/:$=h p t_Vi,ʣFw$f @y>IgW|Xy7C \y˾D`ޅ.'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF PӯdN+9Q9˸O[hN/wXÀp'y/_fġڳt 聼!)9FHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - &Bdus(ѢF"Mt)ӦNB*u*ժVbͪu+׮ӆw]𺐁 ёNV꽙yo]nKwݼj޻ݟ /exqc7eJ>re f|x5tDEYҲέ{7޾.|8ƏwmSzC'1Twc5áWL-Qwų~A_j~-NdUe CFA8uVMP9s,]P$c r#X'+آqφ)N?d0A܎ޏ|`lB~!;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Nt=D`O$Vԁ;;vN0 S@:HCb7Bq^ݓIBK&%#mj*S7PX'tD~T0@#p-j]]Qkcf3pCA"XA'tRFtF>:y3jެ#At ``Pik[ꩩAad/Kh=\K:g@?`D<2&\-GZ-qS={D3p d{# E׵|;ꑵJqz=A ܃CS_ק:P>#;ϥts*>3;cS=C0 y62j#7d!z/iH#P~T`>|Tľɥ\;2`xlAz%K6#j&afw<)>шo ,x PD$)A\Eݣֱ;$Џ|$G> !fc,#8@*n Q fщwڡA+nēLdIG{(|KYL_ q %\&< eJ ?AL`H q3h,a4(G;яJ*Fb<  40AA豎 a!H&sv ; @=E HgVH Q@H蔭XUy@i Y8= M%z D $$F|=Ct$QUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# !8ۊ:$3J>:wE {VHSeåp\wTPtd>4 cA t60}/ob :N7 cֳ;vS21@_p 6r[4 avA@MhYL g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xq}eef]Nȗ:ͱ sy#q62ӛC=Rr ~J53 _T^1z:ސ1p{Ap b Nv]!xʮ E,|RgFA>$gm@+e|5A |B>k;A q|#e}8`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^@?u$^ڬ TEhDfD͞B:Xߵ^>H%>@/0|\A,Y?,C7C \} TUbA` `C, a"xC?AԊC:X<?lLlB@7 zĉu@=QAl<\>d!:@SU ]^ɥDHE; Aa|\)%ZAa1gḀ1 T}DC38fBeB@HXذ::j'!W !D*I$۪Ɉ*J 7$6$cBZh"8+⃐;jp? @ p^s!\A @==,"DB=:8e]C^އ|̣p;x` ALS>D6i IuI&EMa&Ie:IIWVrA.N* 9TfA\f<4BmA =$g>\ff6gnn`Хdf+u=8:b2f-#BX`nO0:B@5Ðf.QI~g"mM:BhJ!pb;ĉWɂZ$0Lndlc (u,x::IP3LlFZDօ<: #=e0H#[iH, dI_%^h?ĝy~:Ŝ\<8`5), tnH 0:*ę/ }_z2l@thI*,q"DvW՛.") $cB c(RDD0*MԃQ0bɆTUi\J=u\IJ~W$$QD܃yV2+CDjშRk!%æ4$ C?)tNT>ŪCD@DXRaY}; B?jĽTR'AH$yROkC=liBvƙ`J=Sce^A ``)֖  C#zn ibHBܔD@ܭX;<, @0Hح4tI:HC-톕,ےVfd']=|@,;|؂A$H]4: gF-,ڎb@*ǩt-m-H@:@ n`.;nҮ`u&f$1,>^J:l@Z"4tuH:T=tA)dfK$@ @'4lO)T0'II):% p 0 @7z>EAD@I>î @>R2D,@?/EHK_dHI0^>m` ?h@*@i"6 (<@YX)kʖA/:>)ExeWƨ#If KcJ\^̊,KjE 1: =: ZBd[lݩwrC?-I <1b:KVC. 1V(*D$SeA`G#æA(COrU7L:ۣl@++F5'F4s)%lC" HT1*3pBp;pJуqb&@ 3E@ 4=S0?UHAZz>RüW,AԈ ~Kn|R1 BPu8̳lA|D) ܃@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ3=X@v}C$C$YTI&]U:lBt@}>ThxOA $!^C=TA@ݏDXcJ:ßO?1@@btA)-BmDLKU#=0>)rUA׾>}-,@##t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹ!7} xG@{N_|"&ހ(ܫ'@A& "*3޺ c"{10Իo_)&.BAL^0 Q lB$"w&BJwDbF['d u:+>>xqǑ'WysϡCp+\i}p{@:?/ |i}WYnaYf"+!FI xJTQH `%:z櫱{$yj1Ja xBI'D1SJG @ށ@l'N\o!_MªgH1J n1!%@oVPiơ*q7+i5F ´dgGч0 !y'/Թm=4$G^! 6;bgG,_}Z~P" 0dRr @@=PSR=jNPJh`s?. xG=*@v*Tp aHHcv#$Hzyb۲&IL_1S 1 J=/!:!! xB9Αu$"`=E7`v38`]GDDH)I."oA dD$呕@*H}* x"H,TtH GB c c  hBB7CƷ ~r*ZA@+OyΓ=O% Tj4AP. upIĀgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:to5O[9zYgVCx_X\Q /$Ѓ8N'Gw&ba5exjtM#C4M=."7 @>d%D, HHj\Gء_B0E tzpzYQBҵL`؀8H6&GVWW`:T:  •`zq{0c}>!TtiZzUGbav5"` \h c!$0=aYyG2Q4CpRd!9P'CL  s]4jo&_%biE 7>Wr>NB ԃg(OX,= "A-hAQɌOLtc€X0wh:: etdɃ (Ay竨SM@@v;ʆH"Qah!"Q02 = 7} u-SV3{@ @O } 6apBQM 2@tvMVtr"iF2 TBJ kݓ@B([FA($,@+ U|# @C,x$x,cLJjtа `C?bP tp!H߷guoDY.3zlK@8|`CN 46P|L`\ 1UStUJC ^Βݐ@3. =ЩN2 E`@%RtϞW):6X8Cdٖ^#ڧ}t[&T>8@Hs;gR $<EC Pc=K:@g/N(I& !pD!8d$J(Y,!v"N** VAp즱bMNdD*gM6Kb!Y:AzB#Ai,!g0#>@xɰ $`hPXa!& /߀0 H!Xa{< : !]!P!ڧ_#*7R I" !| 6(dA++T( !@&L &{A @P~ޤ1"bk gFL *@j6 G#!}Rh)pamN/¹uAԠ`]*BdY< B#!`GaZ1#5r#[`3uB('bbC'5Lt@!A(t0r"&@f3'xƯMejGH D`Rd8 -և F|g4O#r-rO,@g1"CPaøl c܁f !((J2hNa0>PƀD)'P8HH YHށ>-F%( %8> R!H@6@+\s88$`KH2T0@$ n6` # ಩>B$&Ca&v|2!'B4"2 }'U46/QX8 $($7)^H|ZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtIS4H?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&Za7/軄& ^B"X.Bq:PEuTSab#Ԁ3[\#$0U8"̱#<SB{HuXU - ;٢T$@:ft@6pXɵ\ QF vne:8`^s rPS 'Ӑ@M| !Z HЉlr "z#"|m5$S!֊ .2j% Z͵g}6&A#Uf21d0Ni2ءg vVMZRg?xn~!(1t-tw~m Pj>gRh0Dh2J^ھOh(r,`d>ez6i=@<@E;H7үu/a|˷d#B0$@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-A(Nd>8PeB9O* uEkZEAqLӁa.QJ7%q;",@[[e\PMl",1qIVu.>%_Ԡ{T9*scAE8ؘa7HÀv#R.r[!zh0!p PeInoYnb2!&^ZkFgցYy ڠ>?!]E?+s!t!rI6n0ҁW*j ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(p`֡x8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIAw_AY [G!zݫ<འqv-^t` -z7 *G :ɪA:u `+{IS) ةAQO+װc˞M۸sͻ.{ Bn|u~tu [z%W̝NBtFvфxs T}A -^AB|0? ($h(,&N,vNsѳv $A8@ CC/Td5ިA|c .4>ܗOi7Xgܓ2@N95d>TOi-Jb~gS#'褔Vj饘f馜viHE;ܳ;ps7j?LQ|j;D.X^rc*APE􃏚>wYʑW;Џ=N=x+ ×k7\ 鿗IXjA@B ",Wlg!FI>@ܨ:[:`\8(3{6_QO_B`@P8{#>R~o?_ue;DW0HM&; ؜-_Sތ7G.Wn?:!g砇.褗n{;W.n#8/o'7G/Wogw/o觯/?S>O; {KL=c LE| hGH@d0A5$Q:6EQ2H17@gчt%QD؁v!9 *PDz` *U\>)GIwH baŽza%D7Pw[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8icZ2aY=:쑖͜ E@{l pd>Cc%%䅃Lg@M% b(9ẋ>ς @h 4ұFt\aG ƒ t`GJTuB@5Ct%@R:QĢpV! 0㮂 5gv)^ zHuwS0KCôbƮ'ODH ؈ox+* ⰵ!P]DzYX1:>PC#[@NFw mpQ %P*k$" :djmv2(|qQ"vs@ Nܣ Ňd9DAJYN0|脨F 8 @YD #pLsUO3a!%K oPK$L$Y\q0 k4/{|X*PlB: duh='P.w8rARu Ǜ b-*-c,ad[]20 3G$''Q24G|HԹq  fABŰg TT oP1) :tblh T/dwbńϯQ j4\XG< AjH' Y@ArRXq@!t_iW&aB$A(B ` d JP 0?bݩ0̿ɕB 7D}̍ ZekN=pY ;f $ZȍzOpa-%fv@CY ,\Y(Yz , A+:M zd~,cJ7y*M}7oHΑ9!cA`DB1қg>Y^x+EKUR(ȣ;qAH t&U=S{aE/|6:r e!Z:BF1 `<zfʋ4)P(?2< zb}  hjZ[ai v aDz7X&Ydˠ A%pGvq %8 C w?"# $P g\E?ݔ@AV212W*e! bK"2"X">(rS}g2"SR`xzXOJ )tb1G r i@tb2A] ON(LRp@ Nh ` AX(!7e [F1LG31 V#;Qk".%6B&F#Dh'L 4b}7сDS@qj+R+AvDEvj``-b- H\!Et*>%`E*%υ< `& `T"l.7" BBuPTwLe8**C@+e%p 9}2%p] y0/r/b,p`dÃ06c5h0 C 1؎>|cm $*%`'2<^E@ H22v5D@8o:v#t#+.E@ 9F`29PDΡ=48& 3!Ls2F -1s50#MWXEYܐV 6m6AeDivӇ_X#GP8  9ZZyP ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;I@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O=؊T PI}Wva\^u hxz% W#Wqx耫`X%3K0^UY'^Daaj0|HSqV'aF'P!V[گu0 fiLSGj֌A@Up%f VjKsjh yv(4 0eTe]qvMGd0qE6"ȫN*{%wr0SRvE;T+FЀ{lF8Hzf U{^y^zsk{x?:| K'qj[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.R Ԙ!4^c?!'kb(,)v۽蛾B]O /~$ x:["/b ca 0aPƫ1//3'ZQ0~j cP2ƒ!2 . +\}Ԡ0yp,iПfP q0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"pq=P5ɑʢ<QAhjcʂ@\`lhQ,˺\06`VE(wUtE 1)7u# 1Dea1K% ]0%.J 7 @6\λ<4 D(۱bzpHZ+}乖ȒQ&;B"0:,K9^PK [2 .`Eʊ Esѫ;ukBP 0q%$t@v̲p^ alNͤ T(8!LB9PWDh(P qzt`^=IBbs@U' ԧRZJ"u $=:G9S=unUPEE4P`IuQ=PX O;0!mApc`'#CrpǍ)'p?a@4h'0fޒ}Q 6_ו]|1항P\:&$f򭩜#{pa \eP0]YVZUĢr.F :[թqa@X#i(3=cpvv8 Υ. *I.KkTIZNb]1ip¸;n3;⩚ưFk.L%d2i6c2" ngĝ$j斒V (!3.yՒpJEWi&@dkto7pפnբ d`Y[~Vt%m" p-*°s ʧa*̢vl8yM'H' Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3T=jYonÞ*${g{G~Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQ^*+MWac9]}K-g o;h O@ .dC%NXE5nG!E$YI)UdK1eΤYM0PĽ{jHWowH!~z&w]{s }(;| ^EUa{0$ ;(e$H݅"$ܓ;cP_:]巹ה d5Dv2'Po tܓBz [CsѥO^uٵows0ûz𽻧a!I ~TЉ; ֑vJG~g `b!|P3J}*Po G0~J!9JǸx'{6%!AS({H@ K!ėoZHz$k!nN*xG>Hoda!|#PXа{ BtQH#tRJ+RL3tMF'}jQ8TU3*YŬJ.zatz{'*@\YH  {'8Xu0! MX{!%.g6 1wܫ}Fʁ.̳R`1_~LȃzA3 SO"[؛7 R~чz`z `H2fsyg{g0`h@J{b`jzkkƔ e &aKeҶn{oo* W.kgq#|r+r%pIe3r$7A^E|@)t@wd)MyJT!40!Z: `3vR@?_Z `Au(1;&CpD0D*CUѝg=퉻ő*(ʰ{pk %; d7V`:I%|,HjTF̢qB2,|l \lK"U]q]ѧDѿ e1H'w֦tC%jQ U:K!/}G^iQ0x@>0`8@&0 \,gRt[QH1|@l C3(a:ῥc62ĀG XFV4!U*:(8U E@,A(!:eᖅ UdUuCXXy֑ӡ:\FWӕ*[:6CP{ kVWd!9-ekيfցXt t*B&VbE9K?Dm\B.x4`GX9'#) $b[~:Ap; "Ta@5$yሜG G3BQz m&[(Or|匜e$,F0 ` 'Ubare2v=U 8BrKzLЋft\C ,E4wfhґ9J݌E= lò Gd2 UBH) Aj<臜}ld'%#Fs`d/Bfp~"+CdֳRRpESVCX@\(Iq~#H"Dbwp7>9 x-EHSKX ]T&ހ 0@`XjC).WCcm(U7_TbTf-X+fWd';*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. e(n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>@,}Czt3EF;v*P&[ H`AͻG=uE:0"N YW#W*3 ˈ.A#Y ˇؠ5r? " @ #Q!؉kqe5 J6K: UA ;7@/ |pUzkM cX (YйYAHu%v?Iꥬ&/ (|Peig t2h'aruC:A BJDOɀz θu X؉a9a9 DA*h*}8XH2;HmO2'R%1pͭOCB0d(E5]Q|CY5eG@JloPPcX fhZ+Ovc$h7@7T=T^2wh`F$MY`)d0/f0M~jn;XOƬd P2bɠHPLQXb(kaʍ Tτ(B0{^lf8XSГi\BAE&Þulœ>ó-H!@xC|~@YꂠTfXE^n9(MƱStd @}X|#}pup|Xv .)[oo/~`ɇPP5k$^^Sle|8fn[ϊm [{@MT#Ai 5leKof=w#oˇd @)7[ .(rq|#B!Y"x^|@D-wŅ_Çk>iE ĞӼz`"nd[56ctOA >઀;zgGf4 F p?C p2Ҿ{H +ۿJU~4Ddz(e3?SgӪz\muxώ(wwOͅхvv+h „ 2̗[? 'Rh"ƌ7jH#tD$0;vKu@KiؽwXݽuⓆa 6NV=|t8nw$r,k,ڴjײm-ܸrҭk.޼z/不Bzzp`œ '"uB ;#># :%> )"-"18#5x#9GB&=#ADEA I)dANBY`'m!č>AAOp UvY>0@:(>mp Р&tE5GhCƵL Y*Wmc %, A3YnW`dt@q{Ϋ4:"$=f,J;-Z{-jm9;C;:$Td7RwX.[:K ]&=PO 'A):PLM:S+: j>0pTq'r/79uq]N{"NLI*L0̥9Bӡ@!4 },)j}©3@:Dy^wJC ^(@@~^i7:80@#AO'LzT=)zXADp(MqptKӇhr\goB@ᡤnA#|i?e"ԁf?(< Eoc"Bn CB=V(} a| (E 쀂 T: v8ACmG?({.e>z7 2S6LDA6 Y#@Bc(U`'RLpz(ЇEpы`cS 2 D=⠆uCO1v5^[J l?k`n;zCJ # 2:~1$6yNF"H"} #Z,5ɂ%/-Eb\c,H0eɂh@3(PB|@TM:Q+[ċHgetQ D+rw`SA2T5 @EDP c2Bz%KmSSɎ 1"P;SSUgO @՛⊐&qBԊ 3CqP >` 0&&nTE,%ppEIʉRDI}03xoQUk[E0츧>drqb\i>1,!9PJ8EN/hON;L宾ax@ns; ;Hi0>8/p1 /!Hʂe\WQ)sH=N$7-H%я#x`)vwxMbІI|嵋G=֡͊^f7M^%,4m <X=j+k.=J`o@ė`7j Pw>Li&Wh qZ x;jR;,TlB<=|0kþ>OLY0].#363>#4F#X1$%D$AT7DCCU zLh@:@zDB胹mXC̮ԝ|:Wd,L ^ t/| m,;tũZiZ L@ԣ`D D]ʆB0@MO8;X.^ƫM]kՃ,pL`‰dBH]lDDBNL H OB|CI*CZv(U'*Wxɑih>XG!D>|CYeP5fWzR{"@lD6Pyf GWB)B@A\A0Lf֩)橞5 ʸ)EXA@G=xi>;(˹7>ïRX@B(*:iL`مs,)\Al:CmOhBDѮ ELl;,A$ChEm}Ga@1KN;Tܱ&k<ԖtH:H9cG^^=L#]P.j!<*С^}aD@ 9*k'0kz=NH!@C?bD*iAð@lNLlR mD|lĊ,WC = >}KIN,ҰzBC)ӡE==ElrjJYUlB+~ld$sAmY @+8]@)@,Bס" رÕJA&..6 %hN脐`<VzD@#Dd@܃;[BL@AnIOaO0^M MB\PPan.FCBvεc,HĂN/0\kAm[[UAHa ģE!?lEXH~&M1kpL1o:/;0 KdFIJ@pP䚩ޜ5K/<X>D0S\I 8RH?<"@/cR>H HWH2p|zxHCmHCȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐅\.#tB&'2((* ;tr g7Q@D)B#h$>>X@20031*MنN 1fQIc2W5_36g671PHBm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH-;1?`GH@lK[Kf"5\p1#L7S?5=i.[p:E(p@h@VHC&|z&׹V+/:C2rhGoF$+$K @A#8@ 1 EY,%,CCԔFfu]2o:XZ$@pJV[*BVs5sDrD:XV>h 1T_7vgچ"kKP> ESp!0NH@NzRk1E1jT[bMFHľQćՃR:(oZl)m,*xG,<>P1m^ EP4Y^> h8Ŭ;#t>tl2̸V%hew?w' ENHXqV KK pNOxQw>)TPE>XVhWh7۩a,Fc<ZȜ`!%:hiĆgt7\Nn>TtLY&Gv]"6JxL CEC'I*X}JkDdJY=$LAC/l"05Z Pr mX93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZU'zLݧW

i/S C>!˃ &jAoT7CAÒzZ4K'^dYA;J<1ԃ\ 1#˱$ ٟ=у,ey'Mm|üY /DLû:dAlLstF PPDu(\hC';`p WO|p@N\=F՝L|ZVD^~ CX@̈>B~:|퓎q@ݝt,@,4MӨ@H)D D|xܻ/؉(P݈{؅(]>tF#!E:@| Ա3X̋;y ]Ov qobe@\D#剎;<p(0T:i>Ӂ1 p` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}~S&=  pOO~%W&" W R-pA6m o; {ם+QCs|u+Cu⊟DqT{Rz6`v,| H|lA %((G;4Y$3BoiA@8J"d2'iKvA}jhσЋ!:0UA ^9A~!!ah_;AGFDH \ $&<xa,w<@mBxj`DLg䘏0N C2YQ)E鐀qzF8H#>Q"~L@?XFu,~y#'aeTeq́`Y>b\t 7@`E=`)I5" ҅Sx[9K ,<~rH;/c=P@4Z (`@JFP̆X "yP,B&}Du&#.OYb1i\^p7-dH aP<aA EG`%QH"7F5<(FeQM68_~WET,] EdXhE(o`6@>bF*"ff v#2@P0:##o;"#H {LO@ͬb !B*BR" ޡA TN@&#f/b³)*xa bTZI^cj+ bX'*MJƮS:SRphΆCJ"$Rma.ꡙ(@$X=@CZ/&H' pEPk&R,` D AìV *F`uQǑ5)lo,xv dT1j֡+6@+mjeȫ(Pʬ!ì0 =C~"7&$nB&B# a"JB" ''Aȃ0HҞzbbbb" 0:I* kaIZe'+L-Dr=+42"݌'()/" B<1Y1 $<G[ٌ/ Ԣn)mb܁$"Kª$`!ectAR-\%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ١(s??@;L),Ez ĸ6qd"T'2@"b@)QF FA3C#B2({DE/0@$ !*Rhb3K3%BZeb e؊4A av` B sTjރHcG"`? ;F% i6;A@H)n>A q.`^NN'lxG "AK$Nc:'!D,!s//f$!dS/D$*e>C܁|";!$# $A G >=d@ ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*B`X@@5c5U#VdGdKdOe`ց^0ee%%(@ R'pA?q|QLciViiif6' "Nuڲ$ B7.dllmVm׶vܥĉR$F kV@`2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qD rʳw|A#{Qywy}~)CQ$cU-eR&i0QvTHJ  B `k3 `k"`#F)xhz6@Ge$J a%H%jg1b30|V0n؇EAzB:kXǚA9S*wB/H3c k4@Q04&/΂N%08γرF "◒+ْ3.tNFp$EZ-!$A0h٠zx$$6@iG A""[E* ԘM$]-1'A N+on1la"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6::0Yٕ)WYA5C!v8r6KM9@A7fbJ[h/ڨq%$czΓ/bb)(?B #v`'@F@*: @V 6CF*`c()gf"H3X]R@z`c(`-06W(2 > P=f1mw^yѡU]SO%r@\MwH#0.x%!`qˉ&0޼i|[("=<f;0(@&F[+(>azmf5 ac.AQ\W=~|7")b6"Iy[m] Q#)ԇ419 Ȍҿ>/s,ߓ)0M*C١ѡ:tF*!$vwjYv |&F| @"y@"r}'v}CBnDHbn@TSԁL%0 "С b1`?` JaB?~Bܰ|փ0BQ^!Zc~s$0.aBD]yF0thց rK/[ ~>*y}ց?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JQ TYFCPvAF  MsPn2xeQ:Y<0!;}80 O]=u +1|K0ýw+pNY.B #7t[N@=vI8HLG4!%ߥ3*ݻrr7n\YԐ5T)ӕNWjV 5X]uB|Q4HESs= *X)d،6t=nQ>~!|v2OުDžO4X R-pm=!{o}P„5jehmp م ` !e_na~b"Hb&b*b.c2Hc6XYnp\4BE ѧANx =$BCA=K6 ;\SjSOS5cE>Oу[B dHpmi}#W1sA3@B^@>EA>թXcBs8h s7 mMɪdu}Nꆓ.HPYt8@X$Bʠdi_j:"D yE!HВj8$:I)#|aMP`>#E  &0S en> NȮšt!>x;(+TMfEמb29M锗F kQ1|Cd\ H?U^IAv^y${=8{?ϛh$OŬvC ?yONy_yoy4scV2OPC\{) : d:D7A0/h;N5W;j%ɔ!:>3BDh~}ЦkUtHkΏCa3@:|4Rf] 2>)%ߞ򑎬-uQH.#dG; P|8 z\ A*~̯ˇT d$nw:ʹ@, B!Z݈0&Qn P&{HHIO@D ,@$b Dp3_a6DJeBNB3}0!XWB@)-5 Ȓ8>8cq&80IV''v]mzWXVd(cs4D|C^uM/=Hh v@=` 7 ps,9ωt~Oq!P\бdh!3?*3%飞>ws#z{#!Y=QȖs򨬄XF~oStw,S|[9ާ`$$p@S̈́ aB%&no9#µ `} ?(PJq(<M&A1  ` aB2[xф ^KTCyMpa_ s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}"%1&Y5# Nmd"#@#P  (BP*n)vnnq}gPrVޓ@#_I}xE "gjp# vqZ" aqnIPt IOV<9<tY? IR@]F14&#p<4X)@V`71X# ED)OIm7 !91<~ dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig% qwj,>3(5P 0`%&֑mo q*s=fS@[|Z@.v0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySu6 ^ 2-@jqqzOR%ߐoч^h7(j@@ : `ͪ $'PAH}ͅ0`gB0xRي"7W`zC($#:x p @%" ] P S) aUsך S#D&@ҩwS鲧e ߀Rb芭- ؎GmjdM<X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8!`Hś!!644Q̛!MCŽlڑJ4k狾髾_vɾ5ɒ,{7B `p; 38^|V2Q@Jeʃ7H@"iOYjp j 2ܶȻ!x,N0P" 12ġ'=_C'x& hvBgvG!!= kyT!59@Jm- (Beۚcc=Mm׍G`pce4IT%]$CI@{o5p`f1K#Z] Ey,Y燂L"*32hN=( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeYg`*RB*âyya 0c[ 逯898^30mk773/O $_7R+{n0 C a -q[bBw;#ZAX!Bv2r 󸒜F0|c5怙5ow{F8;Y!з5_'}80h O]ZׂY185  2e[ F=3}==]ȁ@5GVz#v< i%oB/> Bwʇ}zM$Cg6x:d!2$C#DOD1EWdE_1FgFo1GwG2H!$YЬ@hb>Y.D 0[`<$h)$wрԑE  2`؄-(Aө'(|JDyHM*Q` |0l 7`suqx+Y F(YJ=u;U@2!@0RЧKC 3dQc z3F2ޱ ]R @aPdDZG-7D&>:`G (S@'j7H8Ǝb~FeCA{,c@M9g*@u*tU1цjU M\D <]؁xІȚ t!6b_1u!HoGeww#0 <{q-W:Rv24._a'XZ T@Mޑ4Y@=@A@uK84K2'Y0P 8( 1lxl@2*a A{|k"Q!X !&@J$,0(C=xW a=%O\/ RCHy&A0 \@.x0&/P__O=@cl/? ƒu88jd X_‡c=@PZIf#8k$@h2+e"`ٜW"be,+p2 A=zJvֳmhE;ZҖִvF*#xN`p b $6qκFVo@0Q YWP).u ](TxMɛ vxFkTdt4{9X!h-P ׈ ~ X;~@pnk`- c@u.8HFϤ  CIu(`0o"k"FPtXX wȥ|DJI؀>:N X!4 zpYXƍH5@> +ۣ(HpOWl~M`}֒ .}8H n "s9?b@U`{P-npdTA3wx|Ӈ,)Έ< ƀF Ȁk~ ۓ \3` }x iԼ'\>8 `=PPQ%R5UAQ <0!uu`S\;#m_`a%b5V㪇.u`NN{6IZz BS)6{K=X\ x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z q7!X{&bYHu8tˇx&6mq5j 0YäfQmmdϳЇ hH t`Hz#La)͞[b 4yaiᣇs^5N!P@Z|8<t@dz@(0ԄmmmRpIkip>ߖpySnDt)7SGɇOHYam66B=#G$/yۺv\b huX|7+,r|考9n(Zn$q ́d2Qq-u`Btx2JQ x F#Z]XdYMKa: pt. X2Ϝ2vH*Q' ,JPt@N(ljt聠0|))%tI K/0t5pn3T@TvfLJvivkZ P@oJ}h{{0r}׀,6~ /GL'p{$`0@z:]:|S7=v? .: dw$eRwA̧̞$N>\SWOϏD"U4B>ME}'#gܳ ߻{=R,jaE !ɚE uҁB䃜WC>Pa@t^2D3 o>E v4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM;6p 0 exFF`} wшgo {œW€{􍠝jN=Ys!qs?O>cY> DOPL=vOSsy Q`;=cj%S@#@4;:Q; 3[F@:oF.4H8{I  2<0@ ,2:=~DAf lwL!H?)TNZgD\=|;"̔@fD [ T;4$0;2dt">x}IpCUPOZ+`HbԳ7^>Nw= wT=<MG@"n.SyHzn}S"y 0j x=yQ:,OCAwY>(c|ŬCèr7㜳;ܳ?C]EsUbVrHPC@O% : @^:l5rFX5^K};s̝k67h>0va=}hDU3DSn9:o[;T>*%f@:3 t@= (-exO:RSɎ#:fzk7 @=b dAUO?@L 2iߐ ߳H Hoe;޽ɖVI|d[vך+-+0AN"H @^>|wܽ.ʄ2CL'ZZH%CRB7z# wm;rCv0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ `U'M!=@Pz8"zW.J:*p`0@"ݼC": CO,v  LGeѣO<P>ҡD,7>"‘FL=<9=½c@2Ȕ,đ/C`80HjЏUPS9@tL8KG4Gєx5.F}c2)3(V$>DYϐ!0x +'ZDIʤM%XyOB)\Z ҁMD;TV2q%Ok\Gr2tXd!@WX㬨@Pɢ A=yς6-iKkӢ=:hQ,#|ၑH$e:QB _79FX@?Ґ*5&5('>{c&YI`9b:XzóefM1HjRZ>  O|b:H7<;_[<uP=b ɢG!uج{RDE==,aGo :,fO02HvC.&뾍05@y:l\gޏp@om,MQ kf@գ97֓Bd-; PkoCЫAܱ C"`aQMDyL42tCǓSkS:ժ^5[I 6V7`c*J]05o z@8G_c'NQޏXOkJao]Simʁ(`"/8xK@u$y5bL?R Hܓ(m9PƜX8;|(I+?10^Gaj!{Q,A!ʉ 6񸚖O+ _NMJzgC6:*&3`Dl؁9$>%7HreGhQ >ï@ԱkSv5(eDp L,HS*Dk[\!բ=Koӣ>=Kd4+ZIbQFգ 6XTk < @:H! .|Q݌wFB2~:У~Csl 1020{L7jj8:tNH@ ODYWNCPԃ1$JH$4(!RO`"'H`\HPh \Jb+>!Hx@:SOtүD'JBԩ^5Z5bc6j6V -;,2a]7:GD-tXrX ;H,=>EpC(Ns0  D'EC-v̈́:r8]:L;T@> K?L^ "QäԕCC?XU@Y 8H@AlCXFqD?@U<@C,4O$>@yЎ@xD!NNN GDLNCa_CWOxI@7؁U%E4Z愦O@HFC .]]IGhZ&N=_&aaCb.wC@'CT ;  RapCI,Ft=[gC:EZu;8=@WHC#|QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`@?DS?t;X@Wf m@8CIO x$v-Nŋ>ԃ%D̀,qhi kԼa F4A]@=C B$HOdB`p@tO:ߔQ DL\(DD(fH}F,> `È^D>@c7xSLIAtG@@fT@ ,7L`\MhA HԔk]N $C$@KYҫ~`F]/ /LgaHH|Ef($j*Dj Ujl\ ܃' Lfe]xyɇHCȂ>T@/G?ȅC'(@  &NATE$8Yt,ST$c ~7Tik0*h"*J`j ˓Rbt^m?|GAX)A$OūʐJH@u&7@E[A`O-mXn?02n:Bn䊖C ^:.G^΄ a.Hh(C|kLGY莢Knnj="&ª8nE*(.쀝!͍j, ioboo$Fd(C,.C$p po52oqpt.'\+FKcpksp{pp p p p p ppq q=@.VhYnp`+?hUGk0qmQ_tkτ_1qo\qq r!ϯd4e&W ,R D+gc@ %O'CCYp@8Ato!@YoxmnKY*VL)HP^lk@A#8@ P>G@}(^E:Nrl=xo*|nS?m߀e $Cl Eԟ,b)B3tC;.CqY$3o.>T;FJ<H`La4aax Qu\?jvkCkBu@&9:$qELG D/vL8rpPptBS=G4N,LnPZ h$aV$>$\PhŴun4 dt6Nݖ@"H@,|=l_7NqN܆C]8NF,Ta?Xg{@YtkC}mF<@`@CI<PO7(r\gq QDn7,@:pd[CoNO8Æsn\I'haxu@t{ya8 :lA A>T7 F/FHg+@H9$NW !tw{ Ӄ,toVX4ހ]-8HBG$ DÚÖ=C< םBvԙJuDgO85P'ޫ H;tA(I=t ~ TttBo)o@xx 8C0,̙:dEu>2Cq:T<O:>`<%£$H2ECJ ȋדApF;:hn|s}/LtOŗŧD(׼MX7]|N:HƦH`@D(C >(e@ Id>ɰþ VRƑDWFUEYA&p$E_[\X>Hl^ 5|s:p2o,C M]C`_MiW^kyH|Y@)-{B0+@'b@$wO@(c.?t[N@=$4ݽU"Q̇: 'RD T9˔k^>vBwh7_B}Df*qa$MDNVT@|A b;>SBY/NI Ce[Z松 Qewouf`^Ǯn:\6JcÇ'VDw1Frz#vY%)'*J'|P8 )>LI; gki%dGF ׿ P ,LPl!P ) 1P );v0 !b آǃw @{D&HqExG JzoYCQ2LDdJ2L%JR9T?zX{)}x 9(̧\t@XTiG|0`MІ8`Lˎ!F$G |hl-C@!<F-ޱ QIQ @MQSX)%k {!&|<06'?z':x_X=A{ԅW^E ``(4 Gz֩@ V/Sʩ8? <+hawO IMQ*Foe@Y9l駡Zꩩ꫱Z뭹 IgMrY#`ވI@ `A{{PRJ<2 @PDʙ@GxJt5:0dgȢ[]xC1OPBTsאƨEȜLHd"Uf|, X4C=! F!;@_t«06x71 m#ؒMA|̄ʹ;Q-f1@9 \ )H AqB{Џ< / DPۯpF{t%-`6Ar'H3,Aa!7DX@tU|`j W}_XOcKIڐhI@ % ogP=rF0c',obY =1Le=PotAGI>!CV)S0g%V$ݩ3Lg+]!.2 c>PGFuUdAЖv_ـ1XZQI%bҐ}4#trUQΜ,@psiFE 9惧*@=wȢ>aĨ(m&G"VbCds[A `tL;zb VH1CuZ\QUm òC G:*+B mvg9ϙuq5qM[{$6/--zR?H(;(jt!)]'mzG1F߸o:h6_߃€?u(峴Q@H'"2CQG:tJKA" :nȽ݅3yFI !.#4,r"fA8 XY=ѽ>?E)kg=ρt7 :`c(JӉ . p;6P|  ^|$!dRB` .z 0X4јJ´%7*yI-Іyu;Z0@o ѓƿ:(`J"B) ONw8Vša\+Cf:0A"h%gBq8@#X4ƸGh8 !ޣ$= +LB8&`h? #n_c60aL J~%AЃ'F`nR7N@ A+@olq0upydlk vۀnXzk"ba`! LpkP !"F`!J (gG*qK9cTŸB1rlT(ށb?)Υ*h#:Cb ! $ @L +H`F8 AbC|f[Rq2a͈3ı$*"$`Ƀ6btƑ6 N!72A! űYI1J`?)"j{ 9>n.Mʢ+t@ɞر!" |$A q0D 9#1b!D>!b2@b9t?JA+ )0<,$PbN%Hm4=,ٴMM4Ni<$B(g*kH`/%B`X`NP{BtQQQ!5R%5Bڤ hi&5@,7Z.kh ?DU+ME|!zN65VeuViVmVwNSquc5ICI.t_S;uWYY5ZuZFWOJRү$F Y{S`8u]ٵ]]5^u^^^5_u__6`v` ` YZvaaa!6b%ub-b16c5vc9cb=6dEvdIdMddQveYe]ea6fHeefmfq6guvgfyg6hvh`}h6iviih6jvjjVjvkkk/$kvlɶllVlvmٶmmcVmvnnnVnvoooiUowp p pqPpwqqqIq!wr)r-r1Dr1ws9s=s_BsAwtItMpEtUwuYu6u]7vewvigavq7wuww9vyw7xw_}wxx7ywyyy7zwzzz7{w{{{7|w|ɷ||7}w}ٷ}}7~w~~~7w8x 8x!8%x)-185x9=A8ExIMQ8UxY]a8eximq8uxy}8x8x8x8x8xɸ8xٸ8x鸎8x9y 9y!9%y)-195y9=A9EyIMQ9UyY]a9eyimq9uyy}9y9y9y9y9yɹ9yٹ9y鹞9y:z :z!:%z)-1:5z9=A:EzIMQ:UzY]a:ezimq:uzy}:z:z:z:z:zɺ:zٺ:z麮:z;{ ;{!;%{)-1;5{9=A;E{IMQ;U{Y]9 ! ,fBBD^^\jjl..,nnl&&$VVT 224ZZ\JJL::<**,zz|bbd>><ffd""$664RRTNNL~~| Ƹ  pLF@~xx$H:H(6Lnf`|v|. 0h\`PXXvrx4<<|zpbdp~ΰ `tf|p|p@t|| *$L@Ժ:$@ ^d`xb\`<08BH@`ZX@XnfH0((`Zخ 0@prxXPXl0pfpblhdRlrvxFJ@ԴNf86(vVl0.l80Lxx0x\@<<4¾ʔ (:0.(8PP`<6УKNHJDv3|{Wi˟=:|ϑ./z"N%t`FS=#G߅fᆳ<#>`R1TA.cQ4hЍ 娑;= N>F)TV 3:3(S!p Ih&QlIGqvdP$=l(`堄jj_wP@9@#iFA22dCڳ,iIh:*B6Īz&sFA<fp+[:N>@ <.&H@FAHn[Sdyc%$-ښACQ<`,p;Dϑh+Bx= POK~𠷩X:pPHZijaypϲ,@ԃ@ԃ4:H,<N,2-PX6+==BPHB C@ )=sںM< @BCt>F#]MhE@Iу2.u`Gψ<D<sH/j :"Ov59= ;B3\7X`l{޸<:w  P>#=O0/ԡ |%"~LJ#@gȀ9$ f|C77 +1AzP  {$uhG2ӱD (@C 0USȗzpG3B BPq=q#=q | $ 8"JC>H1IHArI!݃>*`Y%@`zsQ|p'XFđ$2K@' HeGnyVWH_ L j MB TPL%(@>1|x<&]0jV$`A" @Pm*CW{ 0)A#x*y/ n J@*wZ=lTx@{Zp?QxP~T󘇦,kN(Ʌ~=YU1V:u LmS&FD`G=2Mj3s+od"xD IC nz#!p>@؃~jb){aG*߭$k\nV2Q`-H[yPDLZ*uYr0s2#Vk>umJ#"ykMϊe2=chA?CXlA'8"x3 ]gLjX@tH,0>E':܂0p;dE8"0rYtYxh1Oey\+e{\Y PȒ`*Ch՗2 G@t-yClGSx\@" X<ڭ9)7#Xm ̓/!gGC@l:lLbiOl2;ER4Q 0u\>e="&ثMg :`qh@=Ԟc옍8&zkuXHAk) <ĨBC).2 {=&-(1 P O|  2x ! )HЏ{jC40!H9 [zpie+ x!܇  }@TT'EV== !P 77@W5@M}5QCg A<gqH0|=G&!y&<%Ɛ0Sf1RZ`rcP+v02> h_P=@Ѐ b}~hQ:\G~u5}jl؆0!p ?pUA7$3-` 0n9e ˅! PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'!&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋ !9Yz|T#0q!"4U0CWcMS S,P_ $0[U8깞[Ixq$ׂYYsLLWp ymc@pNI`j왡HIu:$y'P27v)Wmrwe\2*_* _ș:DZIG̢sR>.gmf! -*.`  r 0dpr:}ڑ," gY P`S0֢qt]`waH% zI +4Jlk[Re6 .40wQ0O1` dZJF!3@hs/D?#u\"gJeP#0:蚮:,zT Yq$"AV*PO@d&bfڰzJj$ 5jR8 !~E¤ (67+R@a-{ 2;4fc.gZЅ %"]b*U$]ǭQp@,H5Zq=K͚#FsodV aHBmpYNʵ~KHGP[Y}Ya& hT =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 00$О@ Sd&Z:A173p#7tc79,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|:0@ጵƸ!چ_r-[yQ3mLcIP 5aP@Sq'K>ܓP$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†cSGoa>$p!ࡻ=wocϢ|`xo :՛YB;z{r{W a$T dzۮY"|Z UCڵ*n%^!T{ y :xV&]iԩUfkرeϦ]mܹuo'^qub>xv ēC`A2 @\½+f܋d_=$*S9=4OTH<~ o*@RC(pEZڨ,{/cF׆k/г'{'YY1.*AJ*>ˇK0sL24L4TsM6tM8Cgxc h&PIԩ p($Z@H*F{8H{`z*C{[,Y4#g -@ v"sp"ԛi&N=ǀez/ dyBl/ @2Oz%0 !Jŀ0{¬gU]U2d{|7|y34ȏr`cdQ ~ ⩠'Cs$%4Ї1! AQ+5oc2B7u@ u  $@V$zwX<=GyBD`?DI`B`T P#fM!cKKJHU;` =qA iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t||Γde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nq6b1a@ZdP !#uzqܡ_LoB߭CCkʁ/BFX0u#bJb,/L f#\pj:w@lcu,dqSr(G&X=|1yͷs2{P-YH/_xc!3uIUn?th]WL Ϩ /8-j9C|LOT"_yy\{PI Ԟ IJ Ç䁂 ɇ` |(({>>uo | L_hA>Cc@p@B , ?=IDci ?ʇR|耚X hzN@w 0Ä(:\" 9UH3%;FIDS 3 8 û ɵ0 ~0{pDي{В{'Җz@FNĀ")|cʇulDžSчG1A`_ FMdQĀO YR4Ea>(s&;' GuS( zq$ GQYZ,[̇\\ U ӓSrGx, ]ch NC5L|DZ*ȓ(p K ;8ˁ0D%Ӌ4ȇ҉*6X D3Ѐ$@BS_p 1A8 Yp21 5s:0J$.+Zx+c`˫@ Db, ܡoMP`LQi{ |KXLtWP FL!RX8x e L܉Ph< *;=c0q 1ą6ͅ  K]Wj  {̎eX$ $ ű ]k#{|0$$ |Ї 6hsC#l*-*]2L%k B8؁{R"#W'hStpIP=XY1-3#e$%RHu«с1@$ SX-H.*e4D< 1]L }Ӓtզ(֭V NtVi$N#䜈(݊pHzԁI#xx( [5  h2Iѷ4xxi{|h$ 9<= bP*{x+CR!-B5yȈiLЇIpZX(A $Pb@|x P4 ]w 쉟؞HJ{ ex0ǒ%1 9{i[-ok *qԐGQ+ą" ۷c ZX3JEuAHV.YT+`qA%JQ$?esГ[P/:ktc[\B]8EJ{8l#Q{ HꨅJݯ@`}( ՠĐؐ]uF d] P XN5h߽=`&Ͷ2#t+x !!W|' F`ya!zOf50J܋|Nԟv۠+{"IP" M>5LA [m5%"ٰh@<Q yY@RP)cRCLQlQYccP k]aH>99`M4aB4fqDxsa]=cb'ч}(05{neWY=.(ه9!ntPOЙ ć <+H} 0} @PuӹL؇ c8XXcׁ"$̋c&91bBGEYZɚ g0h8q !H9 x}8陉C*F)˚@  /u6Qc HhM2䱣yI)“P#w*ɛ\l}(w8LvyoIhGt:aR^sDpcvQhP WNlŶ$W ͡ ~g{3 &r" Ȁ ۙKud b[Yt=Ry3@;"υup )>@#IPj< E=dλ{|Y6\{€Y!{0JYI{h ʠ!eR!&M'hɁp4`pB9mRF"!""# z$4q؁!jܣ9(% PHYl-mr&O}%/TKq._s6Oyդ؇ M`zW"h*;ns?s2/M…DA2k3Y^\X")pDtJNJ {YLV< rK?uTOuU_uVouWuXuYuZu[u\u Ё]2 Obc$H6av]v᲋⬉L^#_n3 W 1vw tjwvIݘ3w).x? }($kc th呂0Ӱ¿,CHC AH$`efՅPI3]y?Q ]7 0(/@xgx77Q)94?$U ?獴 Wʳ> !iz>iЬw 45o1@3&5"+ :q\AoQ6tVyLY>RP#}0<cY_˗|PI?XC "@roh8!~J}䨀$Sq{V^ifN|Ҙ$W﷍{'|x` }x^w  |_c+h ‚Kx|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=wCgbsg> ~"^%i`P='BL>s`!ٸsp`[t37b@F胗h|KAFEbrO;޼O_\+bXi-BϞ6YCAPr"%PHT; г=8OR 5I!gAsAe @Aq=sUP+v P<<.тI PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,ã=>)$N@<}^Ep oj)z):*}#Bq3Bb(A=,IC 7 OA=P$ԣCT`Rx=TB*VģN=E68D#أ@Flͱ[@+[P:p=b?KCE{>@p80T{n.kOFʪ=3  E;( d`fwN+A+-b~sAs= D~4޳uA>@A;ӁXyR!<:P:7lSkbAzA# RN=INdQO9[a> - Ѐ>=FC?X @(:25d]lYH9nyk2_r,a#"xPh"M@]7/ D7:k#()RV"QsuX p92~>ʀ1#A@G{D %,1`"ht !72 >~zpQ#gd_$@2( n+aY" a X|~ć;I >"r갇i ^bzl 3x ^A&|dr$-2zc ;fG<:h@yqc(azh (<53t CZ'8@қ_G"Ye>f8rx`WBc&%uẉA wUNp! Eȑ=(֓+Dd"F%Ta[AI(DCfA,HZc.SU`#x@zTt&4iBPȉQI׺"Dם 8v`H TU0/ԡ&&d}ld[Tw>T^'jUIDI!__so<ɠH /F`e"ό4ךA&qa{Vk,2~0#,asf 8z ` >e>LH/`QY^M ^AŃr(@xh Cxr$LTzifRV^ pT0)p@O@A\" C H,a%FDQ}L$G1ƪ}b +LdT) P1݋k~ d0$aa O9-s=wpd7 y|n$`!qHԡ,A 9Oo׃>r|IoXc 5[ Aaqk{>BM\M0Q{ƛ*ppq7-. `/k6HPcM}T}vDD03W.HK#ϹYl JppD?65i6F\{ 6_y<`<\_H=|2[1m; !l#ʃi:Y?xd ߐAG`03s7NB !B#GFUG!yLS8h) b{Ԧdܣz%[ BYЃ>v-u݇G"VZCKG&@|<$G1?^ALa`\BD-5FCUD3=A, =ަO  Oў8I?Ȃ{ =AY_A _!`%Y(MJCSL;5C8`V> EZy,r ǘDaD=A_#bMPv4(-Zb$VbFdC U>l H4b>-ă+nB,XJahA4m @4B_v8 zLAA֎=XXPġ+b ! `m@$AAGzC,;;qG1" #B@ԋAbAjmI䑜*GG=\^aE4Њ1@@g%H >dMDHc%DZă!IJ8>r:CB@m>XXMJ:\؃1$ Gh$S dHŸAHj afY-DzGD@AC9ɘò,o9 }abOƑT.I_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:D"CT&eAH'g#yzZ,>XrC$()FD: f; W4gACGK*߅DٽmIiA|niE<&!e,GOAK=<-Yi&_BܟA0E(ߎ aY> x/ #6Dt]ϢFAȂ1NA0\*) Ȃ/XiZC0M`E0})5g;< 2m#FhE4a~ V'(f;4C"`T=#n&>ă?+<,(Ljz?<ë^Z1i>><@C"@<ĞP(~GRjޫ:_ԃV +L?x<@Aҵ]i&x;סPlƒ^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i@Ì .&:]`C^!5 RA>=@ r.G@*[泪زJ^#GjA,YnBHH.vw$+eFÍ$_< =›(/bhrE .xRpZҮE$DBZ.DZ;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-A-x0fnpEpK3\ED h~%rI>́Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``BA! 1?N⦲*2+kP ^C]aC8ATBIX@=0`Y@<o՞aMohAPX[-/ gD>ZPtVE99;DCBW"C=Xѣ24S RLٰ*L=D>\3F1<@-x>.ކ#XÌZ,C.X%A<Irdv, \djTĚZbH3CKFsnIAOTF81:8Ӆ/uEו>\[Vs CȈv# nv,l5aA4;=wK9<D@C6ZT``F$f(@C00UAq 5Ȃ@02h 8cpX_S}Qf FD(; R-IxC@ˢ 8|r%2CCaA=5qeBȂv烪cE8P0ox |b1>}[($5,e@X+ZZyA%%ׅhT0 w=jEPR=tSGz>dȺ9E`/@ C0lz@ܱpz%9~>@ 3z;)Cn,;a=8:E`N9> 91Dg {B 7W?#`[|-ĦyB|@:l@A%L#<;,C̕@Kxo=>p;7JDG183#F3z@C 0kD<%P1պj|pDìxoA`H7&HD E/(!C s֕8XqÃ5tj':r`F@\88~}ycO9^/9@ 3"5A8؈w ZT  )hF1`hN@Ľ{D3xa| J7G; g_2vD{һKD{,|Aۺ{2"/Hq;t$İCFH |OXX`>xh+Ƀ/ 0I3N8B[0½ 3 nuS6!xޫ.!<ӊzLz0,⃃cμ_ZV'Н \jAgrZ+a`G} Ё҄(nU4`Yիzw=^ZV/y>,#loT9}K%cdA˝hCudI'QG1I38ӮӼ ;L _6T3"YQ갺&'-w.ꞏޓe$AJuìn.dq}<z9J ڒF}H%J-L5ݔN=PERM4 /ETu8> ݱ' YJ`XLd]6XgehjlݖnpY,sꡅS(P. L5SIb Qtǂ`F0Iu{5~%-MU-\d659uG`0hHueQf2euޙ}蠅#5w(c/##p'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vG_rEAC=Fqݷ] A-0V2f;~k'O4Gyqg>i z.EО9Iaw4jZԗOST hwԣIRBAi*PH-Sq2ЁQQkep`?LpK D#HO- <7#!IT .}IB؇;@;8Ō !$PQSe={0ZI  7FOV 8.c )9NzJ+CIbLLu%&T*A*>fX)~RKA&0xLT0Ѱuʕ%-bQt=5*I*{ FExHXqG:^(=f˛3%rғt*!yJ Uh>i\ 蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${A'SZt()NltC"?~35]@рƣL]VUnI&)/{L<ဍěfbv+"&ӎ8"G`٪*I $G@ @K{ *H)6d zX+0O402P*_JVnj-g[jo^1ZɂT*#;BɟV+U" I>pwEqA$,ޙA Vw(أڕnk|=ie/n)x5:j!Kg {t * n#\ miq9rfRW-u=˜"@l I_@G^XAz9 _\fa0,уc eP=ƫ(ࣅ!auzVBI;4|Pg=6BD % v0/LF|X0ckЋAY`"FhXLYlvA,g9wꁏ־ís}(^ Nz6R(|` 8Ҿ``FXcv>ZBHĽװ؇LG]|@# 7B _D`sLt׏$xTc-=1'm:!!1`%}>C 7 $E}1CN0^w-GI$MH` Z0O4p 0C 3ϫ,?@H H A}@<p6Hs㮵&_{T7Tx]J! z @|c/|M@ʙZA'HKd"[b…:k O$NFD pG:M"(#6 H(K  _fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* aBxʬZh%2j!##LH %&I1K4Ũ``A1< 8 s-c;AҒF,00@OH>L"0p!` emKkvIt@)! \  ҬmI" !@b⏓6%DbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!t pr,I=0XU^ݡp3 nT<TZZuR2s+a@DA3 `j"5GBjkԣm?R<7 BQm{.14! 8, ՁZpkQpo[ա[R6y 0-킶,ܨnHQuU\\(V:bB\B\ FﵤOJ+@N V&II3),55Rl:aff]'iAWPG6hKhA.! `e-[fѡF6m+!iP^@UH@ho)ǬUr'r5(B@)ACod!("r5dL㇔iH7I敂f"C1Mb@6#B@a@!N!ᑰ~7!(0u.!R.w+2ws;sU "tꐎ @ 0R>B|L!p`B5l R,5xcI/7Y!k@:Do7W5A6BN,e|Winv:`¸r R"wiGXv`aaI!ܡu2El*qG06-N/V$AVsl  <A@" D{S[ 6L&Z0"`XvT( a^O2{Ȋx Z8 lkn$P)ayytS䎝(͏"ٚ*Ğ`Th&P;vKlch+"b6tE@e! *m5A ́\t)"j ĕq)Qkp*t " x9nVZMDJ! DZL6 ' pe!ˀ"g]:2S H ̗Zjʬ"R=d**! cxWjH//0#֬ B@^)@1RC{l#K\:> cC3,6aD~XC.P*LBY hL`$?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"B`z?>#4!`!@*p|⧇VY[ٟD:ADY%!hMdAJ`F?z졸d0RGLUQ \N#맦PFn*v`'b&vE@iu/sW;{HTP^PN"(Ld*l7<@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿ*dAX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1X끵Ʋ0K+@"Z;= $Ku!;@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!e2@7ND!;.>NCX,VFo;6MIi6֦yT"Aw ;/_4P!C&\/ƍegwiH&7(9-gΗ:u26G` pʽ{ً<| .½{ :Ftc{8”9I|3aX{4Bw9{4hgYg2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^{"!&dÐ9s|U=@|E؛E!c Ll4& @|+ƈAF##\×vܕ6U3>H>PW<=L8gv'Qv7cgF=CB;pp{rM0@ܗ~1Dhޒ)Ƞӄ%@c~S|(d̥\Jhh.h> iNJiDRa0@= d$=$uO \7x1P=W _ #@GX`Ϟ\>X:sjk_ȲFtՓV;U0ɏ8 k>[=س׻n=v|a@ߨ8'LnfT> Q#,Gӫk-!=q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճ5ahqF&q:zX_c}߶c+>"#?oބd,{g6Z)6ٰ[?QOo%t= `8U.8txG/E. _uw=g\c VOߏ)tHƒ(hF"RW,@m=|Ll|Q0># jDTR q$+K7 h, r,XԵ5#Q(VH-7=Du qGT֑ʇr1+ZV,V>URz$Wi@K|l.P$N*wms]%a$L3Ҭڂ iYRR@!;e|3 $O>aYHd>H|,15{]Rax^]7PGܡ,YW#qxY:86wC1t3^)yK*MH{4І<歯Fk#>6 f0f^tN5rNP DVPZR | @ zЄ& :DCA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST c 9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7a~4dZ>q7yaHDYV~钴pϟENb!t\w!OHInjaFTqQ+>gEi36tc`Y^SBE0Tt@ NFqčT@ T 9 )BȔdHMDBT7&*A#F!PNXaZj;.H".0P-/c54'eg*A"!Cd1 NF $DCyrFoپ]xGc GaZo~FeA1BAG0K_Z Sd-i*~Bf$L Bz; 140rmvtF|/nw- T. 0Z30[VҤ0O¤!(d*fE O`$* Dp@K+а!:v Q }ixO]J40=_ X!^'>^1,$4S@ *՘4E9$):~^S%kG%Zw,zh S=~%[(n>5η2*X"EtȂ|I!޲u T-޳7Ђ=9KiyKv+aO@f%SVG`bk/Ǽ@`xt\@9Ժ7'F! RQ`_ٵ2, *YlǞbx7(C?1DG$DOD1EWdE_1FgFo1G[MG&=',(}6s➔$*A}0({( 50C{.(mz ;+d|Чx8/{ q|y 6݄3ΠrɁP'6Ӽp2c($t*I+Lj8,kW(&՞x<0,3Фj9qU Xexs̴M ;+5 {sBz6{"jh8JA[qU{`hˁQa{0}Beh%IFgԬ}!Lj`.au9@@cӊSY,9h8+ = ) 9$zՈc^՘Bx#LFys9iwb#{{+ =?7 tlFG $$갂;nww.<43Zj;" GPQĬzًذ!c! "03 1LK܀1Kkؕ o* A(`(gX!!!{x*,vẃ' U!ZLw٘ ?aġ@:Pc0L(%@Kg}U' (T6A 4$aG=q@̜22$ZI8&V"-!7QVԢhF5Qvԣ͉;19xC( ?6%_H +@4&%A Jҕx/Yh>p$y3PcD1&A!+ x uȨ@&* ؜,: Dp,Q'3R,Y-ɥ.aYd৐NnB':\Q;pI"Z!M:O M4UU@Pa!11ATI AmbLg7 TO0Fr岘41]FId}H$>+z{@JGFmUe:`T2Pn |`=պI767(r7'q'°Շb[_p 2􁏒` `HS.7ekC@b7݃Y,BYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW" (5>jH -r/yKݺk|МDy%R z9EByҕt7Oϑ; X =e)PËugG{ˍrQfD4Y.'qQI`s#?6xQߙvG|I5"Jx- .o e+}E?zu#ֻJ$c8}YBPC@'.G`5d>lxpVBj\+>Ƚ}<Ϛ +èo85Pxnޓ|{,)I dIȣ-IHd PJٰ 4 6y hGŰ>E{x{ Gtr*  1p@DlTɕdɖtb9}xQ5L.$ VEƐ苗Ȇ; /|;Yh Jpjt˷˸GkWH{ &~~'  Ԉ>2}x~~0ycd9ȼqȭL1$C$N9(8E{@P+lq vQVh?<1tH$ί_xN ė|H(%;}x HY> x (\ РQ j#}D Ia9@xQ1(f 9L o4"5#ERlK?܀ȞɀX -R$Cu`!w'(J$|9H5EUxxp';Y"|h"Q% 39}!ׁ|{S%PT-F5yDPKTUUeU;(9ۘ{(y<8 ȯ֢ՆL0: '0ۘX {.-Y#;1Jaf\zvKz0T:FL Ǽ+hM(=p8 ևv^N{0!9e~Ȁz ,՚IiPike  & 5{h?@|}X((cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfE }p`,hYD() X،`lǶȾ8jZx_p0$wevp y\T+ Hb鐊k_Y), h( <11m}h.<9KkǐGzo8LJ6SGutq[,!Hu uȁDZ _ [L+1r9TuI$9|D':UYϐ :^q} HTWu/:$= X t_Viw؁,ʣFw$f @y>IgW|Xy7C \y˾؁9pޅ$'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF ЁPӯdN+9Q9˸O\hN/wXÀp'y/_fġڳ!)9YHw3Ģ{8@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - &d%qs(ѢF"Mt)ӦNB*u*ժVbͪu+׮O{] OV꩙yO]KnKwݼj޻ݎ /exqc7eJ>re f|x5xBEYҲέ{7޾.|8ƏwmSzC'1Twc_ڳWIO-Pwų~ϞA_j~-NdUe CFA8uVMP=s,]r#X'+آyφ)`>cd0A܎ޏ`lB~ԡ;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Ot`=8`O:$Vu;c;v`O X:HCb7Bq^ݓI"BK&%#mj*S7PX$D~T0@#p-jI$IP̗Qkcf3pC-A!XPF$K>:y3ljެAt ``Pik[ꩩAd/Kh=\K:w>`D<2&\-GZ-yS={D3-r x{# D׵|;ꑵJqz=A 3CS_ק<P>=ts*>3;cS=0 y62j#1d!z/iH#P~T`>|TľɥT=2`xl8@z%K6#j&afܑu<)>1 c ,x PC$)A\EC0/ԡ;"|$xG> fc,#8@*n E {أڡA+nēLdgIg(|KYL_` q #\&< ?AL`H q3h,a4(G;яJ*Fb*4 40AA衎 b!&sv=f @=E HgVH Q@H蔭XUy@i YB 1*e&$-H``{"T9 M:63(l>8=  %z"A`$$F|=Ct$kQUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# "8ۊ:$3J>>wC {VHSeåp\S{T Pxd>4 cA t60v/ob :N1 cֳ=vS2H1@@*qp 6r[4 avA@MhY g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIR AkZ6Ȩe# Xy+}eef]Nȗ:ͱ sy#q62ӛC=Rr}J53_T^z:ސ1p{Ap b Nw]!ﰇʮm E,|aRgFA>$gm@+e|5A |B>k;A#q|#]}!s`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^p>0u$^ڬ TEhDfD͞B:Xߵ^>H%>@80|\A,>,1C \} TUbA` `C, a"x>AԊCd!-<@SU ]^DHE͆;Ba\%ZAa1gḀ1 T}C3<fBeB@HXظ:<j'!W !D*I$۪Ɉ*J7$6C)$cBZh"8+⃐;jx? @ p^s!\A @==,"DB=:8e]C^އ|̣x=x` ALS>D6i 9AuI&EMa&Ie\ff6gnn`df+u=8<ăb2f-#BX`nOD-:B@5Ðăf.QI~g"mM:BhJ!pb=ĉWɂZ"0Lndlc (u,x::IP*LlFZDօ<: #=e0H#[iH, dI_%^>]y~:Ŝ\<8`5), tnH/„0:*ę/ }F_z2lt9t9I*,q"DvW՛.") $FcB c"RDD0*MԃQ0bɆ]TUi\J=u\IJ~W"$Q܃yV2+CDjშRk!%Dæ4$ >A0NT>ŪC8@DXRaY}=>jĽTBH$yROkC+=liBvY`J=ce^A ``)֖_ !C#zn ibHBܔ8ܭX;<, 0Hح4E:DC-톕,ےVfd']=|G@,=A$ H]4: g͆-,ڎb@*ǩt-m-D@<B@ n`^;nҮ`u&f$1,>^JEA8@I>î @>R2D,>8EHK_dHI0^>m` ?h@@i"6 (/4@YX)kʖA/:>)ExeW#If KcJ\^̊-I Ҭ1b:KVCC. 1V(*D$SeA`,æABrU͇1L:ۣl@++F5'F4s)%lC" DT13pBx:pJqb&@ 394=S0?U8AZz>RüW,AԈ ~Kn|R1 BPu8̳lA|Dؕ ) ܃Ã@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ3=X@v}$$YTI&]U:lB|@}>ThxOA!$!^C=TA@ݏDXcJ:ß>1ABbA)-BmDLKU#=0>)rUA܀׾i;}-,@t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹӡ7} G@{O_|!&ހ(ܫ'@A& ao!*3 "ҳ10Իo_)&gAAL^ Q lB$;{&.wCbF['dP1u:+>>xqǑ'WysϡCp+\ix{@?/ |i}WYnaYf"+!FI JT!1jg `':z櫱{$Yg1j1JaxB'D1SJ @@lN\o!_Mª 1 J n1!%@cVPiơ*q7+i5F ´dGGч0 !Ա'/m=4"G^! 6;bgG,_}ZҞ}P 0dRr @i@=P`R=jPJh`s?. G=*@&*@np `HHw$Ȉzyb۲&I,_` 1 J=/!:!! B9Αu$"`=E7``<`]GDDΰ)9.@" c dD"呕*H}*`!,Tt GD c c  hBB7CƷ ~r*ZA@+OyΓ=Ot%Tj4AP. upIĀgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:$o5O[9zYgVCx_X\Q H8"8N'Gw&DHba5e/jtM#C4M=."7«8>d%D:, DHj\G1_B0E tzpzYQBҵL`؀8H6&GVWWptT:  H•`zqy0c}>TtiZHzUGbaw5"` \h c!"0=aYG2Q4ApRd!9CL  s]4jc&_%biE7>Wr>NB ԃg(OX,!A- hAQɌOLxc€X0a{hc: etdɃ (AySMt@:w;ʆD"Qah!!Q0 = 7}@u-SV3{@ @O } 6apBQM Z2@$vMVtr"iF 2 TBJ k݋@B(cA}A($-Ђ@+ U|# @C,x$X,v0 LJ/а `C?bP*tp"H߷guoDY.3zlK@8|`CNi6P|L`\ ǃ1UStUJC ^Βݐ@3. =Щ2 C`@%RtϞW):c6X0Cdٖ^#ڧ}t`[&T>6@Hs;gR c$<ECPc=K>@U8(I& !l`B !8d"J(pY,!`"N**\!VAp즱bMNdD*gM6Kb!Y:AxB#tAi:!g0#>@xɰ "@hPXa & /߀0 H!Xa{ > !]!P!ڧ_#*7R I" |" 6(dA++T( A hA&L &{A @P~dޤ1"bk gFL *@jaj6 G#!}Rh)pamN/¹ua |A|]*\dY< B#!`GaZ1#5r#[^`3uB('bbC'5L@!A(t0r"&@f3'xƯMejH BRd8 -և F|g4O#r-rO`样,@g1"CPaøl Cf !((J2ha0>PƀD)'P8(H Y(-F%( #8>r R!H@6+\s88$`KH2T0" n6` # ಩>B$&C`&v|2!'B4"2 }'U46/QiX8 $("`7)^|fZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtISTH?j&bJ5B+ (=JI4Lݍ k&@"2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSab#|3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,@d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-aB(Nd>8PE9O* uEkZEAqL぀a.QJ7%q;",`[[e\PMl",1qIVu.>%_|{T9*scAE8ؘa7HÀv#R.r[!xh0!l@\!PeIn֦oYnb2!&^ZkFgԁYy ڠ>?!]C?+s!t!r)6n0⁁WJj ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(pR!ԡx8ɕ}Z+oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIw_AY SG!zݫgR;འqv-]x` -z1 *G tȪgAΝ:x `+{I󅎠) :TO+װc˞M۸sͻg/{ Bn|u~tx Sz%W̝aOBtuo΄}ysT}A -^AB|0? ($h(,&Nd,vcOsѣv BBP<@ CC/Td5ިAWs .4>ܗOi7Xg A2@bO=5d> TOi-Jb~gSO#'褔Vj饘f馜viHسEր;ܣ:xs7>LS-A;D.X^rc*APD샏>wYʑW==O=x ×k7\ 鿗IXjAس@B !,Wlg!FI>@ܨ:[:p\83{6_QO_Bp@g8{#>N~>_e=8W0DM= ؜-_Sތ7G.Wn?$:!g砇.褗n{;W.n#8/o'7G/Wogw/o觯/?S>O; {#KL=c LE| hGH @d8A_$Q<6EQ2H17@gчx%QD܁w!9 *PDz` *U\>ܱ)GIU-{D baza%A7P{[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+%f2Ur!r#Rʇ-5Ib R]z!8isZ2aY=:쑖͜ 9@{lpt>Cc%ڥ䅃Lg@M b(9ẋ>ς8h  H⡎Ft\q ҃ tpGJT@@=Cx%@R:QĢpV! 0G㮂 5 gv)^ zHuwS0KCôbƮ'ODH 8 cx+* ⰵ!P]DzYX1:>PC#[@NF${ mpQ@ %*k$" :djm`2(|QĐws@ Nܣ Ňd9DAJYN,0/|ZЁF 8 @YD #xLs+O3:/a!%K oPK$Y\q 0 k4/{|XT*PLB> duh,A'Ѕ.{8rAR Ǜ b-*-c,ad[c]20 4 3G$''Q24G|HԹq  fABŰg TT cP1) :tblhHAT/d+{\ańϯQ j4PG< AjHc' Y☃ArRXq@!t_iW&maB$A(B` d JP 0?bݩ0̿ɕB 7D} ̍ ZekN=vpY ч= ZȍzOpa-%f`@CY,\Y(Yz , pA+:M :d},cJ7y*M}7oHΑ9!cA`8`1қg>Y^x+EKUR(̣;qAHt&U=S{aE/|6:r e!Z:BF1 p+<zfʋ4)P(? 2< z`b}  hjZ[ai v `aDz7X&Yd, A%pGvq %6 w?"# $Pg\E?ݔ@AV212W*eQ ;bK"2"X">(rS}g2"SN`xzXOJ)tb1G t i@tb2AI ON(LNpz NhAX(7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7сDS@b j+R+AvDE/j``-b- H\!Et*>`Es*%U P = p& `T"l.7" BBuPTwLe8**@+e% 9}2%p] yh:0/r/b,pb`dÃ06c5h0 1؎>|cm $*%p'2=0^E@H22v5D@8j:v# t#+.E@ 9F{`29PDΡ=48& 3!Ls2F -1s5g0#MWXEYސV 6m6AeDivӇ_X#GP8P 9ZZy!P ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;I@TdEElڦ/X/i\Fm\nZTI{xhJxZ@4X֨:EĨ 붩*#*O=؊T:PI }Wva\^u hxz% W#Wqx耫`X%3K0^UY^Daa0|HSqV'aF'P!V[گeg0 fiLSGj֌A@Up% VjKsjh yv(t A eTe]qfMGd0qE6"ȫN*{%wr0SRvE;T+FM`Vp{lF8Hzv U{^y^zsk{x?:| K'q[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.N Ԙ!4^c?b!'kb(,)v۽蛾BIO /~c[!/b ca 0aPƫs01//3'ZQ0~j cP2ƒ"2. +\}Ԡ0yp,iПfP q0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#":pqVt%mg ׮" p-*sʧq*̢vl8yM'H' Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3hT=jYonÞ*${g{G~ `Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQa^*+MWac9]}K-o; h8 /@ .dC%NXE5nG!E$YI)UdK1eΤYM00Ľ{jWo{!~z&w]{{` (=| ^EUa{0$ Ѓ=(e\%Hhޅ!"s P_]巹{הa d5Dw2'P/)t܋Bz Sw;sѥO^uٵow{0z:ٻa!E }:Tԉw(G~'`b!|P3J}*PoŘ 0}J!:JǸz̩'{6%!cSH{H@ K!AcZHz"k!oN*G>cdqgW!DXаǘ{ BtQH#tRJ+RL3tMF}jQ8TUӁ*YŬʗ.ʝzqgx(zг'*@\Y(   '8Xu0! MY{f1"$g6 1uܫ}Fʁ.̳R`1qv~LȃzASO"[؛7!f1 R}ѧzr`z 12fsyg{g#\9`h:J{b`jzkkƔg &aKbҶn{oo* W.kgq#|r+r%p܉B3r$7A^E|@)t@wd)MyJT/!40!Z< `3vRu@?_Z ,`Ax(1;&Cp90D*CUѝg=퉻ő*(ʰ{pk %; d7V`0`4 0@&0 \,g)Rx[QH1|@l C3(a<ῥc62ĀG XFVȸ4 U*:(8U E@,A(!:eᖅ UdUxCXXy֑ӡ:\FWӕ*[:6P{ kVd!9-ekيfԁXt t*B&VbE9>ƒ9m\B.4`GX9'#) $b[~>ApI= "Ta@5$yሜG iG3Qzm&\(Or|匜e$,FZ-v ` 'Ubare2v=U 8BrKzLЋft\c ,E4wfh9J݂E= lâ Gd2 UBH) Aj4`؇}ld'%#FSpd/Bf}#+CdֳRRpESCX\(Iq~ց/#H"Db&{p 7@9 x-EHSKX ]T&ހ-83`XjC)nWCcm(U7_TbTf-X+fWd'=*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. ](n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>8,v0 }Cz$3EFuv*&[ D`AͻyG=xE:0"YW#W3 ˈ.A#Y ˇؠ5r? "0 @ #Q!؉kq5 J6K: UA ;73/ pUzkM cX (YйYAHx%w?Iꥬ&/ (|Peig xIZCh'aruC:A BJDOɀz θ1u X؉a9q9 DA*h*}8XH22;HmO2'R%1pͭOCB0d(E_UQ|CY5eG@Jl cPtcX fhZ+Ovc$h7@7T=T^<2d{h`F$MY`)d0V0M~jn;XOƬd P2rɠHPLQXb(kaʍ Tτ(B-8{^lf8PSГi\BAE&Þkulœ>ó-1HW@xC담~@YJTfPE^n9(MƱSt3d 8}X|#}xup|Xv .)co/}`ɇPP5k^^Sle|8fn[ϊm [{8MT#Axi 5leNof=q{#oˇd)7[ .(rq|#B!Y"xV|@D-wŅ_Çk>iE ĞӼz`"o[56ctOA >઀;zgGf4 F p?C X2Ҿ{H +ۿJU~4Ddz(e3?SgӪz\muxώ(uOͅхww+h „ 2̗> 'Rh"ƌ7jHcxB$t0=w݋r@=Ki={X=uqº6NV=|t8n{$r,k,ڴjײm-ܸrҭk.޼z/不ϝBzxppœ '"uD<2!c͝?L|%4!Ⱥm| ثWz((v½} `oqOā[ L_؞/S?[@]"b/s3AA}G:|t> 泏=#># :%> )"-"18#5x#9GB&=#ADEA I)dANBY`'m!>@AOp UvY>0@<(>mcp Р&tE5GhCB Y*Wmc %, A3Yn:W`dd@qiϫ4:"$=f,J;-Z{-jm9;C; ď:8$TLx1RwX.[>K ]&=PO A):P bE0pԳTq'r/ԃ19%qIТO{!`O:LC*L0̥9#BӉ@!4 },)j}3@z7 .S6LDA6 Y#@Bc( U`'LpzGEpы`cSfa Z $A= uCO 1w5^SJ l?ka`nJ:zcCJ # 2:~1$6yN!H} #Z,5ɂ%/-Eb\c,H0eɂh@3PB|@TM c2sBz%KmSS 1!=SSUgO @՛⊐&qBԊ 3CP > 03&&oTE,%ppE)ʉRDI}0*xAcQUk[E0>d1rqb\i>B-,iD!0+|h1D#8Xȟ ̑$tǘJ6Q$ S| MO jqcEjPt>1,!9PJ6HDN/VahON=L宪ah@ns0 ;Hi0>8/p1 /!ʂe\WkQ)sH=N$7-H%#xv%{xMbІI|嵋jG=ԡ͊^f7M^%,4m <X=j+k.=J`o×d`7j Pw>Li&WhIAqZ x;jNpĘ:A\`@mn>/H%b==F^ADdE A:+|Zu1.`~A僀\1 !Πa1UD=Ab@=T<?,"?hVwía%V: H!"B5ğEt@=QA >;,TlB4=0kþ>OLYC9].#363>#4F#X1$%D$AT1DCăU zLh@<@zA胹mXC̮ԝ|<Wd,L ^- $8 m,;tũZDiZ L@ԣ`D D]ʆB0@MO<=X.^ƫM]kՃ,pL`‰dB8]lDDBNL H OBCI*CZv(U'*Wxɑih>XG!D>CYeP5fWzR{"@l6Pyf GWB)B@A\A0Lf֩)橞5 ʬ)EXA@G=xi>̕=(˹1>ïRX@B(*¥:iL`/مs,)\Al:CmOhBDѮ ELl;,A$ChEm}Ga@1KN;Tܱ&k<ԖD:D9cG^^=#]P.j!<*С^}a8@@!9*0kz=NH!@>bD*iYC@lNLlRC mD|lĊ,WC ;́>} IN,ҰACA0ӡE==ElrjJYUlB+~ld$sCmY @+8]@)@܃Bס" عÕJA&..6 %hN脐`<Vz8,d@:[BL@AnIOaEO0^M MB\PPan.FCεc,DĂN80\\k@m[[UAHa ģE!?lEXH~&M1kpL1o<;0 KdFIJ@pP䚩ޜ58X>D0S\IJ<R>8 DW82p|zcHCmO@ȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐉+\.c@&'2((*́;tr g7QD)B#h$>>X@20031*MنN 1fQIc2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH;1?/`G@lK[Kf"5\p1#L7S?5=i.[ph 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃ/R:(oZl)m,*xG,<>P1m^ EP4Y^> h8Ŭ=#>$/l ̸V%he>w'V ENDXqV KK pNOxQw>)/TPE>XVhWh7۩a,Fc<ZȜ`!q:hiĆgtw\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAAـ8l"05Z Pr mX93F0 GZ*(8ACL{.C*tOdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZzLݧW

i/S C>!˃ @$jAoT1CAzZ4K'^dYA=J<1ԃ\ 1#˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPDu"\hԃ;`p WO|p@ N\=F՝L|ZVD^~KCX@̈>B~<|퓎qt@ݝ$@,4M@H)8 D|zܻ/܅(ވ{܉(]>$F# t`@|3X̋;y ]Owqoby@\D Ν<p(0Q< қѓp` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}&=  pOO~%,R W =.^pA6m: o; Sם+QC?|u+<{ g'<| .*1f1f:BaJx.ZG{v wŠٯI>Cu⊟BqT̛{ RǞz6pw,|H|lA %(('4Y$3B@cqA@sJd2'iKwA}jhσЋXFu8A{}Em hH&L:; _zԩq\1yq|~]c(QߪmA,+S>!:0UA ^9A~!!ah_;AGFDHJ \Ga &<xq,{4mBxp DLghk1LiZS9N=( щ*V3E  y=J ZܣQ:PEccg- .Gpq"E=ԑ q2A= MhnIIxBy>䘏bv0N C2YQ)E񈀇qzF8 H#>Qa}Lq>XF#u,~y#'aeTeq́t`Y>b\t 1@`E;`)I51e ҅Sz[9K,΂rH;/C p7-dH-ZP<aA EG`%QD!1F5<(AeQM68_~WET,I EdX:hE(o`6@>bF*"f&v#2@0:##o;"#H {LO@ͬb !B*BR" A TN@^&#f/b³)*x bTZ)^cj+ bX' MJƮS:SRpH#J"$!Rma.ꡙ( $X=@CZ/&H' pEPk&R,@ D bAìV *F@uQǑ5)pRo,xv dT1jԡ+6@+mjEȫ(Pʬ!ì0 =C~@7&nB&B#a"JB" ''Aȃ0`HҞzbbbb" 0>I΀* kaIZe'+L-$r+42"݌'()/"B<1Y1 $`^G[ٌ/d Ԣn)mB$"Kª$R!ecR- \%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ݡ(s??@;L),E\z ĸ6qdT2@"b@)QF FA3C#B2({DE/0" *Rhb3K3%BZebO e؊4A` BsTjރHcG"`? ;F# i6;A@Hn>q.`^.N'lz`G @K$Nc:'!D,!s//f$!dS/D"`* @Cց|;$ $ G >=d ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*D@Z@@5c5U#VdGdKdOe`^0ee%%(@ R'pA?qvġQLciViiif6t' "Nuڲ$ B7.dllmVm׶vܥ$F kV@E`a2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvT(J  B$ `k3 `k"`#F)xh̡z6@Ge$JA%H%jg1b30|V0n؇%AzB:k8ǚA9S*wB/H3c k4@Q04&/ N%08γر "◒+ْ3.tNFp$EZ-"A0h٠zx$"6}AiG A""[E* ԘM$]-1'+On1pa"MR3]To\fm*513 #喩>1jJK–qIa/?ٝpb +΂EL-G6:q:0Yٕ)WYA5C! v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?D #```':F@*: @V 6CF*`c()gf"HX]R@x`c(/s,ߓ)0M*Cݡѡ:t*!$vwjYv |&F| hA"y@r}'v}C"nBHbniATSL%0 "Ё b1`A JaB?~Bܰ|փ0BQ^Zc~s$0.aBD]yF0thrK/[ ~>*y}ԁ?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JzQ TYFCPvAF  MsPn2xeQa:Y<0;}60 ^=x + 1|鋇0={+p0=R.B #`7tSgO@=wE8HlL@4!%3_*rr7n\Y_T)ӕNWjV 5XԞ@|Q4HEu=*X)d،6t=nQ>!|v2OޕDžO4X =.^pm=!{jmP„5jehmp م `  e_na~b"Hb&b*b.c2Hc6XYnp\4AE ѧAN a -=s$BCA=K6 ;\SjSOS5cEÏ>Oу[BdHpmi}#W1cA3@B^@>EA>MթXcBs8h s7 mMɪd}}Nꆓ.vFPYt8@X$sHdi_jj:"D  E"3KВj<$:\)#|aM`>E &0S en> `OȮšO!>x=(+TMfEמb29M锗F kQ1Cd\ H?U^IAv^y {=8{?ϛh$OŨvC ?yONy_yoy4scV2OPC\{) < d<D7A0/h;nO 5W;%ɔ!:>3BDh~}ЦkUtHkΏa3@<|4Rf] 2>)%ߞ-uQHXdG; P|0 z\ A*}̯ˇT(d$n%{:ʹ@, B!Z݈0Qn '{8HIO@D ,9p3_a6DJyBNB3}0!PWB)-5 Ȓ8>8cq&80 V''v]mzWXV(cs49#^uM/=Hh ؃v@=` 7 ps,9ωt~Oq!P\бdh!@+*3%-飞>t{sz{#!Y=QȖs򨬄TR!jU|즳!u2#t!;{T,tM]7T#"$f!Πd O8P1mO-`hQDŽL HHPE7dԂ )/_:'hh U$?v@H}d ,#nB(ĻGB5VfFPs}w&=ѡ2! `IJ/`A~oStw,S|[9ާ`$$p@S̈́ aB%&no9#up} ?(PJ(<M&A1 aB2[xф ^KTCyMpa_s s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}%1&Y5# Nmd!@P (BP*n)vnnq}gPrVޓ@#_I}xE "gjp#c /Z" aqnIPt IOV<9=ptb;Y? IR@:IF14&#p<4Xs)@V`71X# ED)OIm7!9p1<~` dF9n}|Ypm){p> 2I6fh#{gCR1ѩ"yg% qwj,>3(5P p%&֑mo q*s=fS@[|Z@.v0L#DcCmM|)4DCyXR`%&jqP1rZ,* b5ySuc6 ^h 2.@jqaqz OR%Ɛoч^h7(@@ : s`ͪ'$'PAH}e ␠`gB0xRي!7W`zCx($#:x p@%!I P S) paUsך S#D&@ ҩwS鲧ej ƀRb芭.p؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8"`Hś"!644Q̛!MCŽlڑJ4k狾髾_v;0ɾ5ɒ,{7B p0 38^|V2Q:@Jeʃ7H@"iOY j 2ܶȻ!x,N09P" 12ġ'=_C'dx& ;x/BgvG!= kyT!59@JmBeۚ cc=Mm׍G`pce4IT%]$C\@{o5ps`f1K#Z]Ey,Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeY g`*RB*âyyae 0c[ 898^3:0mk773/Oġ$_7R+{n0s C -q[bBw;#ZAX!Bv2r 󸒜F0|s5怙5ow{F8;Y"з5}60h ^ZY1>s5 2e[ F=3}==^ȁ@5GVz#< i%oB/6 B{}Ϟz$C6:d!Z"xA#DOD1EWdE_1FgFo1GwG2H!$Y,:hb>Y$B0[`Rg$h)${jр  H%Z@؄-(A'(|JD𱧒ꀢHM*Q `|0郄l 7`suq՞xYY(YJ=u;U >`' (S@'j7180b^EeC A{,c@M g*@u*8xU1цjU M\D <]؁ІȚjx!6b1_j9u!HoGe{w#0 <{q-W:Rv24._a'XZ T@M쑗4Y@=@A@uK<4ɋ2'Y0P 6( 1lxl@2p*a A{|k"QWX !&@, B= W aV=%O\/ R#y&Ot8`:d5ѝ  *P R>&0 \@.xW0Њ&/Pqy_O=Ƙ`cl/? u88*d X_‡C <@PZIf#8k$@h2+e"`ٜWae,+p2A=zJvֳmhE;ZҖִvF*# `p bc $6qκFVoRA0Q YWP).x I(TxMɛ wxFkTdt4{9PWh-P p ~;~8Xnk`- c@x$sHFϤ  CIx(`0o"k"FxPx {ȥ|DJI؀>:X!4 zXYHx(ƍ_@>1 +ۣ؃1pOWl}M`}֒ X}E o "s9b@+`{P-oXtTA3({xE8|pӇ,'Έ< ƀF Ȁk} ۓ Ѓ \3` }x iԼ'T>0 `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇$&upNN{6IZz tBS)6wK=X\ x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z 1q7!X{&bQHu8tˇx&6mq_j 8YävQmmdϳЇ hH t`z#La)͞[b 4yqiᣇs^5N!P@Z|8<t@dz(0ԄmmmRpIkip>ߖpySnDt)7SGɇ/HYam66B=#G$/yۺwTb h uX|7+,r|9n(8Zn$q ́d2Qq-x`Btx2J x F#Z]XdYMKa: xx $X2Ϝ2 wH*Q ȬJɀt@N(xljt8|) T%tI K/0t5xn3T@TvfvivkZ Pw@oJ}h{{0r}׀,6~ o/GL'p{"`Ё@zt^<|݃70=w? .:| twF$eR{A̧̞$Nҝ>\WOϏD"U4B>ME'#ݳ {W=R,qP !ɚE uҁɚdWC6Pa@t^23 o>E/4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM06p^0 e1FK } woΈgo {œW@w􍠝jO=Ys!ys?O>cY> DOuPL=vOSsy` Q@`==Ocj%S@#@4=x}IpCUPOZ+`HbԳ7^>Nw= wT=ƬMG@"n.SyHzn}y, 0j x=yQ<,OCAwY>(c|ŨCèr7㜳;ܳ?C]EsUbVrHPC@O% < @^<l5rFXۣ5^G};s ̝k67h>0va=}hDUJSn=:o[=T>*%v@<3 d@= (-exOc@L/2iƐ ߳H Hou=޽ɖVI|x[svך+-+0AN1 $s@^>|wܽ..CL'ZZH衎%CRB7z# wm;rCw0mA,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ%hU'M=@Pz8zW.J:*`p`0@"C"< CO,v  LGeѣO<P>D,7 >"‘FL=<9=ك@2Ȕ,đ/` 80HjUPS9i@tL8KG`Gєx5.Fc2)3(V$>DY"0@x K'ZDIʤM%XyzOB)\Z MD=TV2q%Ok\Gr2xXd!@WX㬨@ɢA=yς6-iKkӢ0;:hQ,#ၑH$eҐ*5&5(>"{c&YI`9r:Xzóe0fM1HjRZ>  O|bcH1<;_[<xP=b ɢGxج{RDwE==,aGo :,fO02HwCă.&뾍05@y:lI\gޏp@om,MQ kf@գ91֓Bd; PkoCЫAܱ C"paPM$yL42@CǓSkS:ժ^5[I 6V1`c*]05o z@8G_c'NQޏXokJaoISimʁ(r"/8xK@u$y5bL?# Hܓ(m9PƜX`8;|(I+?10VGaj7!{Q,A!ʉ 6񸚖O+ _NMJzgC$6:*&*@Dl1$>%7HreGhQ >ï@ࡎkSv5eBp L,HS*Dk[\X բ=Koӣ>=Kd4+ZIbQF# 6XTk < @: .Q݌w-FB2~<У~Csl 18.0{L\1jj<:tNH@ DODYWNCP@C$JH$4(!RO`'H`\HP4eCBH,` V(@ޜƏC } ?WL=P,,=NUYe@NM`\>G$@i: I (a@J`^*!-I9 Db @C GCL]>h!\Jb+>!Htx@:SOtүD'JBԩ^5Z5bc6j6V .:,2a]1:GD-tXrX;D,=>EpC(Ns0  D'EC-v̈́:r8] >L^ "QäԕC>XU@Y N@U4@C4O$>ByЎ@D!NNN GDLNCaC_CWxI@1U%E4Z愦O@HFC .]]IGhZ&N=_@܀&aaCb.wCCT ; RaxCE,Ft=[gC:EZ;8=@WH,QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`>D>t=X@Wf m@8CIO x$v-Nŋ>C'D,qhi kԼa ̂A]@=C B$HOdB`p@tO<ߔQ DL\(DD(fH}F,>`È^9>@c1xSDLI A@tG@@fT@ <1L`\Mh/@@ HԔk]N $KYҫ~`F]ـ88LgaHH|Ef(C$jjDj Ujl\!܃' Lfe]ZyG@Ȃ>T@/>ȅ܃( &NAT9$8Yt,ST+$c 1Tik0h"*J`j ˓Rbt^>|GAXBB$OūʐJH@u7@E[A`O-mXn?02n:Bn䊖C ^:.G^Έ a.Hh(C|kLGY莢Knnj=&ª8nE*( .!͍j, ioboo$Fd(+؃9,.C$p po52oqpt.',\+FKcpksp{pp p p p p ppq q=@.VhYnp`+?hUGk0qmQ_tkψ@_1qo\qq r!ϯd4e&W ,R D+gc@ %OgC9Yp@8A$o!@YoxmnKY*9L)HP^lk@,8T@ P>G@}(^E:Nrl=xo*|nn>mte $l E,b)B3tC;.CqY$3o.>@T:FJ<H`ELa/4aapVLZ1=(h2TcF':e=B0HT_CY4@Q',1$@;V@B lUtQ5[LPL[ @h@dtNﴳDD\lh<'tC|[< $E5BG ,> xD Qu\?jvkCkBu@&9:pqELǴD8vL8rpPp@S=;4,LnPZ h$aV$>$\PhŴun4 dt6Nݖ@@,|=l_7NqN܆C]8NF,T>Xg{@YtkC}/mF<@`@CI<PO1(r\gq QDn7,@T7 F/FHg+@H9$NW !tw{ Ӄ,toVX4ހ]-8HBG$ ÚÖ;C< םAvԙJuDgO85P'ޫ DH=$A"DI= ~ T@o)oxNx 8C0,̙ǃ:dEu>2Cq6`<%£$H2ECJ ȋ(e@ Ix>ɰþ VRƑDWFUEY')$E_[\X>Hl^ 5/s:p2o,C M]C`_MiW^kyH|Y@)-/{`B0+@b@"wO@(sg/?tSgO@="4޽+"Q̇: '2D T9˔k٫>wB={h7_B}Df*qa$MDNT@A b=>SBY\I Ce[Zƞ Quwoufpg^Ǯn:\6FjcÇ'VDw1Frz#Y%)'*J'lP8 )Л>LI;ߍ gki%dG+ ׿ P ,LPl!P ) 1P );`0 bآ{@(e{D&HqE JjchY9EQ2Dd͞J2LJR9T?zX{)}h :(̧H\|XT 왅G|0`MІ8`Oˎ!F$G |hlC@!<F- QIQ 3MQSX)1k { !&|<06G y?>X_X= A{ԅW^E p&(4 Gzԩ@ V/Sʩ8? < ha.{OMQ*FceQ9l駡Zꩩ꫱Z뭹 gMrY#`ԈI1@ `A{{PRJ-`6Ar'H3,Aa!70$X@tU|t`j W}_XOcKIڐhI@ % ogP=rFb',obY =1Le=PctAGI CV)S0g%V$ݩ3Lg+]!.2 c>GFuUdOAЖv_@XZQI%bҐv4#+trUQΜ,`psiFEI9惧*@=`uȢ>aĨ(m&g "VbCds[ޡ H`tL:=xb V1CuZ\PQUm!úCG G<*+B mvg9ϙuq5qM[{$6/--z>H(;(jt!)]'mG1Ƹo?E)kg=ρt7 :`c(J . p=6P|  ^|$!dJ)RB`.z 0X4јJ´%7*yI-Іy}=\0@o ѓƿ:(J"B) ON8Vša\+Cf:0ABh%g Bq<@X4AGh8 !@ޣ$ = +LB8&`h?#n_c60aL J~%aA'F@nR7N@ A+@olq0upydp+ `ۀnXzK"bA`! LPkP B "F`!J (gG*qK9CTŸB1rlT(b?)Υ*htCb ! "@L gAi%2`t2Z5C >+`F8 AbC|f[Rq2aa͈3ı$*$RɃ6bƑ6 !72A! űYI1JJ`?)"j{n.M ʢ+t@ɞر! |$ q0D 9#1b!D>!b2@b9t?JA+)0<,$PbN%Hm4= ,ٴMM4Ni<$B(g*kH@/%D@Z`NP{BtQQQ!5R%5B$ hI&5@,7Z.kh ?DU+MEu!zN65VeuViVmVwNSquc5ICI.t_S;uWYY5ZuZFWOJү$F Y{SC`a8u]ٵ]]5^u^^^5_u___6`v` ` `6avaaa!6b%vb)b-b(,uK?5>vA|BYO6A( a55e8`Bv6cq6gu*Aw p%W :!'дa*O@ qM:@iQ}7PX"AG6P b16ExFք60"$a*`|c(m9l7S?R"V8%lpwAB76`rbaRu2ă(<#I< {8#A /`c!oj$C:b+t! ܡ?ҸB djsxw9'XK⸈XC!GBƀ" n ?0qOXBiak$|fzx)0.`{16 >v0}v@$ Y.$Ȫt%Z"ui8|\ؓ٢=~ɹC`U `x&BtALaU|C.؟_*&r:$bh*`H:XaR$.rF I7 x~t`(BTC>0hA`id"cB^􃦽fiåL끟[Cک# UڟC/H !Ȟ9%ڠLKB:"``@$:6¨:">F'V dഀ< '<`yKp!>l"Vf/H$Y][@6M%P|v-3xW!N*ݡZx~[Aΰte8*!abNȣdƦ{d:BCD'n@`VXkfwBo@B(@6fV?[$ܻ!۷[ tl |(ޛ8b[%0TtZbg("xw=L,tm/?0d{"g@"~Q"CsI$͘b"u lV*7VЬ!p~+!\'(-")@H_EBz,cb3[%$4a͕ eR4%79Wp%8F]7N6"ϘCN\L B:f"{4FciAa ZL6`*5R"V| HbE=qo;{Mw$ZiQ=ݣA|PAMEkޤ4(?M,~Qd֙S+3q ݻRѝ>\F T8\tͻ:t'E+=Zgg;PaAtZyZ{fpOQt&@,hExAl Nȓ+_μУKNسkνɤ.Tv8@ u`^yƜo@3Q^ 0eWjZW}vτSτ8W>@K ܃@>4cO&5J4p[Es7@E(@>c4qOHB0c M>`DCO>(e>0}t XpTZ03B$!%B0  ': PA#DڣN%dZiQD@<wӝdDxtk3:QZÅxϮt, 4ϖ]iڰg+&MEx8bCcwPG-TWmXg\wdZS'EES%hCK4,#jN&DeUú tᾸCDd =ƼWlNVp;Y>;.ZS74I3yyT?[mcϙϐPOCA,IY>q@pM@=oMd,jP>AC= _ܞ= EђcaY=xW߉(L ٰH3q""(  f>6ur7m,9婰̭nw pcYɭiAZ@QN(QX|-;V(ȇ\u,`D#yB,ANל " !4ݡe-1,0~OcG|Ӄh%gAeMtH @пDDz0ᆎr~86nTwv˥ hRPj'\g>Є%D"fGSސC"|IӀ7:AHbG\= Ö\A$ KҤ8.qHD.:;xbBgN`B,98CsN,m^sБMb;4yfR{\X53P|C@f" :Glda9հdr@IEPIUGL3[H$aXг"C,3AZ2;bv7Xx蘎ls!A8B#FYat~E":9cq0CIPeR, pBXŀE5lAZ,]w9DzZ0( v8I h$yf" mgr9u<4@x #%wP `q8 I3.C"rP(89k-Q.5% ,9@Qzav!,J WF'pPA1MATSI=pd;,m"H`e`!@I!0>y!# DPVs0CTVZX0tKb @ pِsy FwfF hgQ  wg0p@%Rqb^ѝ JX+0ie&Սg.@O  z9"iˈ,, p8"_xHJLڤ~A8&RS1jM.Ot#piA#`)$iI ?i =<%ns"!0쁦mX`$!X`ZLh T?&6@A @ZQ%qDqC $;PİW.:yYaBlIbEZa5qyb@Xa qGG$#KI%,Pi$:Q%j0!]u e?LAi4p xKEYq# `%ac:<y!dYIU- cjP .CW]B@r1!FR6P:b BqTr)'k8XˀI=g"0 qP@01PSI'+Z"`iP7-l`0,#BX:lbQꤔ[{V9ARi75"z{ޑ/!!5$lPMۻ;:8)?@'yb:(5/pG4Vt8YHsDۤݻ8˻۾Ki,`05"-1[| A |{0q a: "<$\&|(*,.02<4\6|8:<>@Bq<.V ǔD%x=Y`, ׳ۻEֳi89Ĺj#՗Ps[✺K~Z|`| aA4ٍ@y7@ʮg0A Я[YTfRѫ:1JFMP_ n0T"pL3"..,dQ<[b -]I&a0 r~!þyž" n ?@쟡KAnb0IP0p.@IbAѰKO*@r/.I#`_f`1:1%{,6hEanpѐN_fps!1 |q.q9i}A㇎\R''"(iT3A_o"#g e 9Aqvh2M*PI!6]}ާ01:P !0 H#`)Ańe@ E=o|_?Jb-0`/ W:Y fpg잀z,E=|pЃ:{gOA(:tko>(rYo;|:!d@<}EgρAbcΝ YצiMk0Ā  Ҡ7}lҤth$ lgpK"V"e̙5ogСE&]iԩUfkرeϦ]mܹuM^0ԖL;YeΏWODοwY(-zٯ*-̀3Q'bB/rTŃ!!8 " ˧u٬<|D1I(ɄǞڰCq2{d|0,CJ}dtJ)4M5a3Q YyO' sJ G)f Y((( 1@u*8xҳdwi* {8 J.}z0{{n8ǘWaQc 5\tUw]vu]xw^z^'X~r*R?}g`{<`M^mxΘIx3sgd_܁Nw2`|!(PFFIP0@xXS@Wʀ jiY + RhLe'ԩ3}z1= Pͪy||k*H FH ܠm6c GY8ڠ*Yi+*?s9J `= {l<e 2a.+ ͇GRhGVl&{>-x=_BZo/|Q-x !P>Q 1@FP`-xA fP p,0/L0P 4)hqxH wB>r*dQu$a=׳ǔB{)i Dzm/4l dQ,;|ADw2Hpt˩r  6I}c>F#Bt%AL^dA‚LKG̃EGB2D;8A~/3$!iHC <ȚANc!fa =*P 0F{y{A601eia ҁԣs"yO|Sg?O-PdA?O e2Yf@"iP8d!ِm=PcLR]HpÚL!j ܣ . /1 :M/HE^i .'7補Ӡ FlKe:7)>jGZp!RUˌ!|!Azb1{Zgp,vS_v/U{p`ļ2h~"^F!dJՂ˺oz5|!(ZgL>)̠c}mJ6DBSLUj|CI592e88z 0N \^TZիfu]jX(PPUSP\!{ly_U-cg lrz|!=GNHe!)R:F<*S! _1%#@N @R$!QI/-,: "D;iad$zX͌V5{2ڏ"xN ghI Y3TA @Ai, 4q( u}֞',=3@;a?ߴAz"[8ڔcsq<2ub$`|,y%kЇ^'}Mz CA(#=A&`Rn*Oܱ}#r:>0eGvӟD9+V?x@)cܑQ8:,`I@"iJV/ đ ~=H`Ç -R}ת ؀x-S?({HwW*11ZYx1@(x@?,܇  m׫{c H "w@B[&| @w0 p- .2tXw}$ X{ه?6zH283zh tg" L<q\0B).@ΰЅD༃h=׳(=qas85u8C=cx$}@ {hp3'XD)'Ŷj\Iɇ Xk'+H X<Zzb ƪG)%7;|q1 p8'䇝+HfrNؠ|hBzaPw pN/\GSXK ҁ9 .9OOOI#(ϫx9/iנ8qH>Ը+ODxxq9kPPP Q P dM xP$QQQQңQ ЦRwAQyQQ'R)R*R+R,R-R.R/R0 S2-S3=S4MS5](eS8S9S:S;SE1S?S@ TATBeS>-TE]TFmTG}THE@DHTLTMTNzA 3pLHTOMUU]UVmUW}_Ŗxk T}U\U]U^= zA*[Ug}VhVifD#q|hVj WqWr-Ws;̌ +d ziȉsW}W~W (cH ` UC(XXU5@$ P 0 Q_ X}YYMӜP\i908!h=Cp؋jٙ=ZMZ]Z5|xrSM Pmc W{X1ZZ [[C5p8CZHW%[[[E0|Ё{X1Ⱥ[]\m\} t }ۻkIS}\\\ }.aPH]]m]u]3P X`N`^`n`~`` ` ` ` ` ```aa.a>aNa^ana~aaaaaaaaa b!b".b#>b$Nb%^b&nb'~b(b)b*b+b,b-b.b/b0c1c2.c3>c4Nc5^c6nc7~c8c9c:c;cc?c@dAdB.dC>dDNdE^dFndG~dHdIdJdKdLdMdNdOdPeQeR.eS>eTNeU^eVneW~eXeYeZe[e\e]e^e_e`fafb.fc>fdNfe^ffnfg~fhfifjfkflfmfnfofpgqgr.gs>gtNgu^gvngw~gxgygzg{g|g}g~gghh.h>hNh^hnh~hhhhhhhhhii.i>iNi^ini~iiiiiiiiijj.j>jNj^jnj~jjjjjjӀ! ,fBBD^^\jjl..,nnl&&$VVT 224ZZ\JJL::<**,zz|bbd>>@ tv`İxļ46@ltt b\`BH@`Z$(8pfpLF@`Z؜䐔prx.(8XPX$00PXX`(:0ΰ0blh`dRlԺFJ@ԴNf86(zfh0.l4<УKNHJDv3|{Wi˟=:|ϑ./z"N%t`FS=#G߅fᆳ<#>`R1TA.cQ4hЍ 娑;= N>ӉF)TV 3:3(S!p Ih&QlIGqvdP$=l(`堄jj_wP@9# FA22dCڳ,iIh:*B6Īz&sFA<fp+[:N>@ <.&H@FAHn[Sdyc%$-ښACQ<`,p;Dϑh+Bx= POK~S:pPHZijaupϲ,@ԃ@ԃ4:H,<N,2DPX6+==BPHH C@ )=sںM< @BCt>F#]MhE@Iу2.y`Gψ<D<#G/j  Oܓv59= ;B3\C 7X`Ol{޸<:wN  P>#=0/ԡ |%"~L#@WȀ9$ А&f|C77 +1AzP  {$uhG2ӱD (@C0USȗzpG3B BPq=q#=q | $ "JC>H1IHArI!݃>*`Y%@zqzsgQ|p'XFđ$2K@' HeGnyVWH_ L j MB TPL%(@>1|x<&]8jV$`A" @Pm*CW{ 0)AΝ!x*y/ n J@*wZ=lTx@{Zp?QxP~T󘇦,kN(Ʌ~=YU1V:u LmS&FD`G=2Mj3s+od"xD IC nz#!p> ؃~jb){aG*߭$k\nV2Q`-H[yPDLZ*uYr0s: Vk>umJ#"ykMϊe2=c8A?CXlA'8"x3 ]gLjX@tN(H,0>E ':܂0p;dE8"0rYtYxh1Oey\+e{\Y P`*Ch՗2 G@t-yClGSx\@" X<ڭ9)7#Xm ̓/!gGC@l"lLbiOl2ER4Q 0<ԑpBuS;= ʹR^C:f!m9ߣ@fsiD_;WpBz4j[HdQpt d?KD9PT."pd<6Hb_}u\>e="&ثMg :`qh@=Ԟc옍8&zkuXH@k)z :ĨBC)D.{=&-(P O|  2x ! )HЏ{jC40!H9 [z0ie+ x!܇  }@TT'EV=r=  !P 77@W5@M}5QCg A<gqH0|=G&!y&<%g0Sf1R t`rcP+v02> h_P=@Ѐ b}~hQ\G~u5}jl؆0!p ?pUA7$3-p0n9u˅! PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'!&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋr !9Yz|T#0q!"4U0CWcMS S,P_ $0[U8깞[Ixq$ׂYYsLLW` ymc@pNI`j왡HIu$y'P27v)W1mrwe\2*_* _ș:DZIG̢sR>.gmf! -*.`  r0dpr:}ڑ," gY P`S0֢qt]`waH% z+4Jlk[Re6 .40wQ0O1pdZJF!3@h)/D?#u\"gJeP#0:蚮:,zT Yq$"AV*rPO@d&bfڰzJj$ 5jR8 !~E¤ (67+R @a-{ 2;4fc.gZЅr %"]b*U$]ǭQp@,H5Zq=K͚#FsodV aHBmpYNʵ~KHGP[Y}Ya& hT =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0(0$:Sd&Z:A173p#7tc79:,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLcfIP 5aP@Sq'K>}P$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†SGoa>$p!ࡻ=wocϢ|`x:՛YB;z{r{W a$T zۮ#|eY UCڵ*n\%^!T{ vy :xV&]iԩUfkرeϦ]mܹuo'^qub>xv ēC`A2 @\½:f܋d_=$*S9=4OTH<~ o*@RC(BZڨ,{/cF׆k/г'{'YY1.*AJ*>ˇK0sL24L4TsM6tM8CgxXd h&PIԩ p($Z@H*F{8H{`z*C{[,ͧY4#g -@ v"sp"ԛi&N=yez/ dy@Bl/ @2Oz%0 Jŀ0ŬgU]:Pi݋t"h\h{a `b3xc;cCydA@}*  ʤ|bJ@|$ x@J(2θǀTJuܙv b6T *L;# 9t(LU2d{|7|y+4ȏr`3dQ ~ ⩠^As$%4! AQ+5oc2B7u@ u  $@V$zw@ <=GyBD g?DI`B`T P#fM!cKKJHU;` =qA iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t||Γde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nq6b1a@ZdP !#uzaܡ_LoB߭Ckʁ/BFX0u#bJb,/L f#\pj:wlBlcu,dqSr(G&X=|Ј1yͷs2{P-YH/_xc!3uIUn?:h]WL Ϩ /8-j9C|LOT"_yy\{PI Ԟ IJ Ç䁂 ɇN` |(({>>uo | L_hhA>3@p@B , ?=IDci ?ʇR|X hzN@w 0Ä(:\" 9hH3%;FIDS 3 û ɵ0 ~8{pDي{В{'Җz@FNĀ")|3ʇulDžSчG1A`_ FMdQĀO YR4Ea>(sS;' Gue( zq$ GQYZ,[̇\\ h ӓSrGx, ]3h NC5L|DZ*ȓ(p K ;8ˁ0D%Ӌ4ȇ҉*W D3Ѐ$@BS_p 1AP YȂ21 5s:0J$.+Zx+3`˫@ Db, ܡoMP`LQi{ |KXLt,P FL!R0x e L܉PhH< *;30q 1ą6ͅЃ  K]Wj  {̎eX$ $ ű ]k#{|0$$ |Ї 68sp9#l*-*]2L%k B8؄{R"#,'hStpIP;XY1-3#e$%RHu«с1@$ SX:H-*e4D< 1]L }Ӓtզ(֭V N\Vi$N#䜈(݊MpHzԁI#xx( [5  h2Iѷ4x xi{|h$ 9<= bP*{x+C!-B5yȈiLNЇ>pX(xA $Pb@|x P4 ]w 쉟؞HJ{ ex0ǒ%1 9{i[-ok *qԐGQ+ą" ۷c X3JEuAHV.YT+`qA%JQ$?esMГ[P/:ktc[\B]8EJ{8l#Q{H HꨅJݯ@`}( ՠĐؐ]uF d] P XN=h߽=`&Ͷ2#t:x !!W|Ѓ' F`ya!zOf58J܋|Nԟv۠+{">P" M>5LA [m5%"ٰh@Q yY@RP)cRCLQlQYccP k]aH>99`M4aB4fqDxsa]=cb'ч}(05{neWY=.(ه!ntPOЙ ć @#IPj< EEdλ{|Y6\{€Y!{0JYhI{h ʠ!eR!&M'hɁp4`pȄB9mRF"!""# z$4q؄!jܣ9(% PHYl-mr&O}%/TKq._s6Oyդ؇M M`zW"h*;ns?s2/M…DA2k3Y^\X")pDtJNJ {YLV< rK?uTOuU_uVouWuXuYuZu[u\u 脞]2 Obc$H6av]v᲋⬉L^#_n3 MW 1vw tjwvIݘ3w).x? }($kc th呂0Ӱ¿,9H 9 GH$`efՅPI3]y?Q ]7 N0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4=oV@3&5"+ 2q\AoQ6tVyLY>RP#}043Y_˗|PI?XC "@roh8!~J}䨀$Sq{V^ifN|Ҙ$W﷍{'|` }^w  |_+h ‚Kx&|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=wC bsg> ~"^%i`P='BL>)`!ٸ)p`[t37b@F胗h|KAFEbrO;޼O_\+bXi-B^'6YCAPr"%PHT; г=8OR 5I!gAcAe @Aq=)aUP+v P;<.тI PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,ã=>)$N@<}^Ep oj)z):*}#Bq3Bb(A=,CC ʁ7 OA=P$IT`Rt=TģN=E68D#أ@Fl[@+[P: =b?KCE{>@p80T{n.kOFʪ=3 r E;( d`fwN+A+-b~sAs= D~4޳yO'A>@A;へXyR!<:P:7lSkbAzA# RN=INdQO9[a> - 9Ѐ >=FC?X @(:25d]lYH9nyk2_r,a#"xPh"MG @]7/ D7:k#()RV"QsuX p92~>ʀ1#A@G{D %,1`"h: !72 >~zpQ#gd_$.@2( n+aY" qW|~ć; >"r갇i ^rzl` 3x ^A& |dr$-2zc ;fG<:h@yqc(azh (<5+t hEZ'؊@қ_G"Ye>f8rx`WBc&%uẉA wUNp! Eȑ=(֓+Dd"F%Ta[AI(DCfA,HZc.SU`#x@zTt&4iBPȉQI׺"Dם 8v`H٠NT0/ԡ&&d}ld[Tw>T^'jUIDI!__so<ɠH /Fpe"ό4ךA&qa{Vk,2~0#,asf 8؁z p>ge>LH/`Y^M ^AŃr(@xh Cxr$LTzifRV^ pT8)p@A\" C H,a%FDQ}L$G1 }Ȣ+LdT)P1݋k~ d0$Y_qO9-s=wpd7 y|n$`!qHa,A 9Oo׃>r|IoXc [ Aaʘ!k{>BM\M0Q{ƛ*ppq7-. `/k6H{QcM}T}vDD3W-HK#ϹYl JppD?65iH6F\{ 6_y<`<\cH=|2[9m; !l#ʃi:Y?xd ߐAG`03s7NB !C#GFUG!yLS8h) r{Ԧdܣz%[ BYЃ>v-u݇#VAKG&@|<$G?^ALa`\BD-5FCUD3=A, =fަO  Oў8dI?B{ =AY_A _!`%Y(MJCSL;5C8`V> EZu,dr ǘDaD=A_#bMPv4(-Zb$VbFdA U>l H4b>-ă+nB+XJahA4m @4B_v8 zLAA֎=XXPġ+b ! `m@$AAGzC,;;qG1" #B@ԋAbAjmI䑜*GG=\^aE4Њ@g%H >dMDHc%DZă!IJ8>r:CB@m>XXMJ:\C Gh$S dHŸAH afY-DzGD@AC9ɘò,o9 }abOƑT.I&_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:#CT&eAH'g#yzZ,>XrC$()FD: f;d W4H+gACGK*߅DٽmIiA|niE<&e,GOAK=<-Yi&_BܟA0E(ߎ aY> x/ #6Dt]ϢFANA0\*)e&Ȃ/XiZC0M`E0@+})5g<< 2m#FhE4a~ V'(f;4#`T=d#n&>ă?+<,(Ljz?<ë^Zi>̃><@#@;ĞP(~GRjޫ:_ԃV G?x;@Aҵ]i&x;סPlƒ^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i@Ì .&:]`C^!5 RA>=@ r.G@*[泪زJ^ GjA,YnBHH.vw0BeFÍ$_< =d(/bhrE .xRpZҮECDBZ.DZ;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-A-C x0fnpEpK3\`ED h~%rI>Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``BB! 1?N⦲*2+kP@#^C]aC8ATBIX@=0`Y@<o՞aMohAPX[-/ gD>ZPtVE99;DCBW"C=Xѣ24S RL4L=D>\3F<@-t>. XÌZ,C.X%AIrdv, \djTĚZbH3CKFsnIAOTF8:8Ӆ/uEו>\[Vs CȈv# nv,l5aA4;=wK9<D@C6ZT``F$f(@C00UA15Ȃ@02h 8cpX_S}Qf FD@ (; R-IxC@ˢ 8|r%2CCaA=5qeBȂv烪cE8P0ox |b1>}[($5,euBXCZZyA%%ׅhT0 w=jEPR=tSGz>dȺ9E`v/C0lz@ܱpz%9~>@ 3z;2And,@<a=8:E`N9> 91Dg {B 7W?#`[|-ĦyB|@:l@A%lL#<;t,C̕@Kxo=>p;7JDG183#F3zwB0kD<%P1պj|pDìxoA`H7&HD E/(C sg֕8XqÃ5tj':,r`F@\88~}ycO9^/9@ 3"5A8؈w ZT  )hF`hN@Ľ{D3xa| JB; g_:sD{һK{,Aۺ{2"/Hq:%İ>9FH |X`>xh+Ƀ/ 0I3N0B[0½ 3 nuS6!xޫ.!<ӊzLz0,⃃[dμ_ZV'Н \jAWrZD:a`G} Ё҄(nU4`Yիzw=^ZV/y>,#lo߁T9}K%3dG˝hCudI^PG1I38ӮӼ ;L _6T3"YQ갺&'-w.ꞏޓe$AJuìn.dq}<zJ ڒF}H%J-L5ݔN=PERM4 /ATu8Ճ> ݱ' YJ`XLjd]6XgehjlݖnpY,sɁS(P. L5S>b Qtǂ`F0Iu{5~%-MU-\di659uG`0hHueQf2euޙ}蠅#5w(c/##p'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vG_rEAC=Fqݷ] A-0V2f;~k'O4Gyqg>i z.EОIӀaw4jZԗOST hwԣIRBAi*PH-Sq2QG'Qkep`?LpK D#HO- <7#!IT .}IB؇;@8Ō !$PQSe={0ZI t 7FOV 8.c )9NzJ+CIbLLu%&T*A*>fX)~RKA&0xLT0Ѱuʕ%-bQt=5*I*{G&FExHXaG:^(=f˛3%rғt*!yJ Uh>i\ 蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${A'SZt()NltC"?~35]@рƣL]VUnI&)/{L<ဍěfbv+"&ӎ8"G`٪*I $G @K{ *H)6d zX+0O402P*_JVnj-g[jo^1ZɂT*#;BɟV+U" $I>pwEqA$,ޙA` w(أڕnk|=ie/n)x5:j!Kg {t * n#\ miq9rfRW-u=˜"@l I_@G^XAzl_\fa8+уeP=ƫ(ࣅauzVBI;4|g=6BD %E' v0/LF|X0kЋAY`"FhXLYlvA,g9wꁏ־hŭs}(^ Nz6R(|` @ 8Ҿ``FXcv>ZBHĽװ؇LG]|@# 7B _D`)Lt׏HxTc-=1'm:!!1`%}>C 7 $E}SVCN0^w-GI$H` Z0O4p 0C 3ϫ,?@H H Am@<p 6Hs㮵&_{T7Tx]J! ҁz @|c/|M@ʙB'HKd"[b…:k O$NFD pG:M"(#6 H(K  titjdZƏL&I! !L P 0fk(- D"@:8n86nC @ ‚ ƻB k !*A6`4*R-dq!)(R p-H! @:iQ{ cM!(Tԁ !LD qqȐBN-gjj$ X|_b[F Q[k  a-! tΨUI)¬\pR.@_ Q!6DcX !0ZRI sR'w'Bzn%l# * @-N$~%bMba c&b%!J*cN DR ϖ!;!)JP瘔b  "((H< q XL. @1V-:darS11A*B3dT*"SdR-7NHRD@] 665[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* `BxʬZh%2j!##LH %&I1K4Ũ``A1: 8 s-c;AҒF,00@OH>L"0p!emKkvI:A )! \ ҬmI" !@b⏓6%DbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!t pr,I=0XU^ݡp3 nT<TZZuR2s+`R@D@3 `j"5GBjkԣm?R<7 BQm{.14! 8, ՁZpkQpo[ա[R6y 0-킶,ܨnHQuU\\`(V:bB\BFﵤOJ+@N VII3),55Rl:aff]'iAWPG6hKhA.! `e-1fѡF6m+!iP^@UH@ho)ǬUr'r5(B@)ACod!("r5dL㇔iH7I敂f"C1Mb@6#B@a@!N!ᑰ~7!(0u.!R.w+2ws;sU "tꐎ zA 0:D*I.F @`l"8UhRފ" r_1STC } "6&Dx9B)B@>R>B|L!p`B5l R,5xcI/ 7Yk@:Do7W5@A6BN,e|Winv<R`¸r R"wiGX6aaaI!ܡu2E2*qG06-N/V$AVs2a <@@" D{S[ 6L&Z0" XvT( a^O2{Ȋx Z8 lkn$P)ayytS䎝(͏"ٚ *Ğ`Th&P;vKlch+"b6tE@e! *m5A ́t)"j ĕq)Qkp*:!" x9nVZMDJ! DZL6 ' peˀ" g]:2 HS̗Zjʬ"R=d**! cxWjH//0#\!B@^)@1RC{l#K:> cC3,6aDXC.P*LBY hL $?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"B`z?>#4!`!@*p|⧇VY[ٟD:ADY%!hMdAJ`F?z졸d0RGLUQ \N#맦PFn*6a'b&vE@iu/sW;{HTPPN"(Ld*l7:@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿ*daX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1X끵Ʋ0K+@"Z;= $Ku!=@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!e27D!;.>NCX,ޡVFo;6MIi6֦yT"Ay 3/@ _4P!C&\/ƍegwiH&7(9LugΗ:u26G` pʽ{ً;| .½{ :F:c{8”9I|3aX{4Bw9{4hgYW2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^{"!&dÐ9s|U=@|E؛E!c Ll<# @|+OgAF##\×vܕ6U3>D>tRWg<=L8gv'Wv7cgF=CB;pp{rM0@ܗ~Dhޒ)Ƞӄ%@c~S|Q(dՉ\Jhh.h> iNJi)DdQa0@= d$=$uO \7x1P=W _ #@GX`Ϟ\>X:3jk_ȲFtՓV;US0ɏ8 k>[=س׻n=v|a@ߨ8'LnfT> Q#,Gӫk-!=q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճb+rhqF<`3_`Ƒqe:SFVS&XYWfAFqs>&a:vX_c}߶c+>"#?o~d,{g6Z)6ٰ[?QOo%t= `8U.8txG/E. _uw=g\ VOߏ)xHƒ(h#R,,@m=|Ll|Q0># jDTq$+K7 h, r,XԵ5#Q(V`-7=Du aGT֑ʇr1+ZV,V>URz$Wik@K|l.P$N*wms]%a$L+4BҬG'ڂ iYRĂ@!;e|3 $O>aYHd>H|,15{]R x^]7PGܡ,YW#qxY:86wC1t3^)yK*MH{4І<歯Fk#>6 f0f^tN5rNP DPZR | @ zЄ& :DCgA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST s9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7a~4dt>q7yaHDYV~钴pϟENb!t\w!OHInjaFTqQ+>gEi36t`Y^SBE0TtNFqčT@ T 9 )BȔdHMDBT7&*A#F!PNXaZj;.H".0P-/c54'eg*A"!CdNF $DCyrFoپ]xGc GaZo~Fe A1B9AG0K_Z Sd-i*~Bf$L Bz 1 0rmvtF|/nw- T. 0Z30[VҤ0O¤!(d*fE O`$* Dp@K+а!:6 Q`&}ixO]ea40=_ X!^'>1,$4S@ *՘4E9$):~^S_ %kG%Zw,zh S=~%[(n>5η2*X"EtȂ|I!޲u T-޳7Ђ=9KiuKv+aO@f%SVG`bk/Ǽ@`xt\@9Ժ"F! P`_ٵ2, *YlǞbx7(C?1DG$DOD1EWdE_1FgFo1G[M&=,(}6s➔$*A}0({( 50C{.(mz ;+d|Чx8/{  q|y6݄3rɁP'6Ӽp2i%($t*I+Lj8,kW(&՞x<0,3Фj9qU Xexs̴M ;+= {sBz6H{"jh8JA[qU{ZahˁQa{0}Beh%IFg%Ԭ}!Lj`.au9@@3ӊSY,h8+; ) 9$zՈc^Bx#LFys9iwb#{{+ =?7 tlFG $$p;nww.<43Zj;" GPQĬzًذ3! "+ 1LK܀1Kkؕ o* A(`(gX!!!{x*,6y' U!ZLw٘ ?!ġ@ $y3P3D&D!: x uȨ@R&* g؜,= Dp,P'3R,Y-ɥ.aYd৐NnB':P;pI"Z!M:O M4UU@Pq1ATI Bmb&Lg7 T8Cr岘41]FId}H$>+z{@JGFmUe:aT2Pn |`=պI767(r7'q'(ðՇb[_p 2􁏒` `H .7ekC@b7݃Y,BYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW" (r5>jH -r/yK:k|МDy%R z9EByҕt7Oϑ; X =e)PËugG{ˍrQfD4Y.'qQI`s#?xQߙvG|I5"Jx- .o e+}E?zy#ֻJ$c0}YdAPC@'.G`5d>lxpVBj\+>Ƚ}<:Wèo85Phnޓ|{,)I 0dIȣ-IHd PJٰ 4 6y hGŰ>E{x{ Gtr*  1p@DlTɕdɖtb}xQ5L.$ VEƐ苗Ȇ; /|;Yh Jpjt˷˸Gk,{ &N~~'  Ԉ>2}x~~0wcdyȼqȭL1$9$N(8E{@P+lq vQLh?<1tH$ί_xN Mė|H(%;}x HY> x (\ РQ j#} F Ia9@xQ1(f 9L o4"5#ERlN?܀ȞɀN :R$Cu`!w'(J$|H5Ehxp';Y"|h"Q% 39}!ׁ|{S%PT-F5yDPKTUUeU;(9ۘ{@y<0 ȯ֢ՆL0: '0ۘX {.M-Y#;LJaf\zvKz8T:FL Ǽ:hM(EpF ևv^N{0!9e~Ȁz ,՚IiPike  & 5{h?@|}X@M(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfE }p`,hYF() ،`lǶȾ8jZx_p0$wevp y\T+ Hb鐊k_Y), M( <11m}h.<9KkǐGzo8LJ6SGutq[,!Hu uȁDZ _ [L+1r9TuI$9|D':UYϐ :^q} HTWu/:$= X t_Viw؄,ʣFw$f @y>IgW|Xy7C \y˾؄pޅ$'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF PӯdN+9Q9˸O\hN/wXÀp'y/_fġڳ!)9YHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - &Bd%qs(ѢF"Mt)ӦNB*u*ժVbͪu+׮{] jOV꩙yO]nϸKwݼj޻ݦ /exqc7eJ>re f|x5xBEYҲέ{7޾.|8ƏwmSzC'1Twc_ˤWI-Pwų~ϞA_j~-NdUe CFA8uVMP=s,]r#X'+آyφ)`>cd0A܎ޏ`lB~ԡ;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Ot`=8`O$Vy;c;v`) S:HCb7Bq^ݓI"BK&%#mj*S7PX$D~T0@#p-jI0IPg̗Qkcf3pCDA!XA'tRF$K>:y3ljެYAt ``Pik[ꩩAd/Kh=\K:g>`D<2&\-GZ-yS={Dsq {#N&} D׵|;ꑵJqz=A ܓCS_ק<P>=ts*>3;cS=Y0 y62j#d!z/iH#P~T`>|TľɥT=2`xlR@z%K6#j&afܑu<)>13 ,x PC$)A\Eݣ0/ԡ;"|$G> fc,#8@*n E {أڡA+nēLdgI(|KYL_` q #\&< ?AL`H q3h,a4(G;яJ*Fb*4 N40AA衎 (c!&sv=f @=E HgVH Q@H蔭XUu@i Y@C *e&$-H``{"T9 M:63(l>8= %z!Dp$$F|=Ct$kQUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# "8ۊ:$3J>>wC {VHSeåp\S{TPxd>4 cA t60v/ob :N cֳ=vS2H1@qp 6r[4 avA@MhY g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIRAkZ6Ȩe# Xy@}eef]Nȗ:ͱ sy#q62ӛC=Rr }J53_T^Az:ސ1p{Ap b Nw]!ʮ}E,|aRgFA>$gm@+e|5A |B>k;A#q|#]}!s`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^p>0u$^ڬ TEhDfD͞B:Xߵ^>H%>@80|\A,>,C \} TUbA` `C, a"x>AԊCda<@SU ]^DHE͆;dAa\%ZAa1gḀ1 T}C3<fBeB@HXظ:<j'!W !D*I$۪Ɉ*J7$6 $cBZh"8+⃐;jx? @;PCD=@*R)û8b2B?rWA?_1^1 @ƃFJ=\cC^DDE^dFZX^dLLdM& 8Db ND&CB=G> p^s!\A @==,"DB=:8e]C^އ|̣x=x` ALS>D6i 9AuI&EMa&Ie\ff6gnn`df+u=8<ăb2f-#BX`nOD-l:BdB5Ðăf.QI~g"mM:BhJ!pb=ĉWɂZ 0Lndlc (u,x:\:IP4LlFZDօ<: =e0H#[iH, dI_%^>]y~:Ŝ\;8`5), tnH/d0:*ę/ }F_z2lx9t9I*,q"DvW՛.") $FcB ##RDD0*MԃQ0bɆ]TUi\J=u\IJ~W $Q܃yV2+CDjშRk!%Dæ4$ >A0tNT>ŪC8@DXRaY}=>jĽTR'BH$yROkCC=liBvY`J=ce^A ``)֖_ C#zn ibHBܔ8ܭX;<, 0Hح4tE:DC-톕,ےVfd']=|G@,=A$@#H]4: g͆-ȁ,ڎb@*ǩt-m-D@<A@ n`^;nҮ`u&f$1,>^JEA8@I>î @>R2D,>8EHK_dHI0^>m,` ?h@C@i"6 (/4@YX)kʖA/:>)ExeW#If KcJ\^̊KjE 1:=&< ZBd[lݩwz>-I @1b:KVCC. 1V(*D$S&eA`,æABOrUL:ۣl@++F5'F4s)%lC" D&T1U3pBx:pJqb@ 394=S0?U8AZz>RüW,AԈ ~Kn|R1 BPu8̳lADؕ#) ܃Ã@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ3=X@v}$$YTI&]U:lB|@}>ThxOA$!^C=TA@ݏDXcJ:ß>1BAbtA)-BmDLKU#=0>)rUÁ׾i;}-,@t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹӡ7} G@{O_|!&סހ(ܫ'@A& ao!*3 "ҳ10Իo_)&gAAL) Q lB$;{& wCbF['dPu:+>>xqǑ'WysϡCp+\ix{@?/ \R={\с}깧1}&H}*| *AE$Bg huJEOF2Yi[qU]y#QGxΡzCqrG'Pxɖ rCg~:Y~' {wCTzq9}LX3˜<p Y*8Q%j30zO>|i}WYnaYf"+!FI JT!1j' `^:z櫱{$Y'9j1Ja xB'D1SJ @@lN\o!_Mª1 J n1!%@3VPiơ*q7+i5F ´dǑGч0 Ա'/m=4"G^! 6;bgG,_}ZҞ}PG  0dRr @i@=P`R=jNPJh`s?. G=*@&*@p mbHHw$Ȉzub۲&I,_A` 1 J=/!:!! B9Αu$"`=E7``<`]GDD)9.@"3 dD"呕*H}*p!,Tt GD c c  hBB7CƷ ~r*ZA@+OyΓ=Oxg% Tj4AP. up>ĀgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:$o5O[9zYgVCx_X\Q H8"8N'Gw&Hba5e/jtM#C4M=."7>d%D&, DHj\Gъ_B0E tzpzYQBҵL`؀8H6&GVWWp:T:  H•`zqy0c}>TtiZHzUGbaw5"` \h c!"0=aYG2Q4ApRd!9P'CL  s]4j3&_%biE7>Wr>NB ԃg(OX, A- hAQɌOLxc€X0a{h: etdɃ (AySMt@<w;ʆD"Qah!!Q0R = 7}@u-SV3{@ @O} 6apBQM t2@$vMVtr"iF 2 TBJ k݋@B(cA}A($-@+ U|# @C,x$,61 LJ/ZѰ `C?bP*tp"H߷guoDY.3zlK@8|`CN9+6P|L`\ ǃ1UStUJC ^Βݐ@3. =ЩN2 C`@%RtϞW):c6X8Cdٖ^#ڧ}tl"[&T>@Hs;gR c$<EC Pc=K>h8(\I& !2aB !8d"J(pY,!`"N** VAp즱bMNdD*gM6Kb!Y:AxB#tAi g0#>@xɰ "@hPXa & /߀0 H!Xa{ > !]!P!ڧ_#*7R I" |" 6(dA++T( A r@&L &{A @P~dޤ1"bk gFL *@jaj6 G#!}Rh)pamN/¹u||]*dY: B#!`GaZ1#5r#[a3uB('bbC'5LZA!@(t0r"&@f3'xBƯMejGH BRd8 -և F|g4O#r-rOR,@g1"CPaøl Cf !((J2ha0>PƀD)'P8(H Y(Ơ-F%( #8>2 R!H@6+\s88$`KH2T0" n6` # ಩>B$&C`&v|2!'B4"2 }'U46/QiX8 $(" 7)^|fZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtISTH?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSab#|3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,@d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-(Nd>8PE9O* uEkZEAqL぀a.QJ7%q;" ,[[e\PMl",1qIVu.>%_|{T9*scAE8ؘa7HÀv#R.r[!xh0!2A PeIn֦oYnb2!&^ZkFgԁYy ڠ>?!]C?+s!t!r)6n0⁁WJj ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(pԡx8ɕ}Z+ oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIw_AY SG!zݫg@+འqv-s^x` -z *G :ɪgAΝ:x `+{I󅎠) SO+װc˞M۸sͻg/{ Bn|u~tx Sz%W_+̝aOBtu/ń}ysT}A -^AB|0? ($h(,&Nt,vcOsѣv B@P<@ CC/Td5ިAua .4>gܗOi7Xg A2@aO=5d> TOi-Jb~gSO#'褔Vj饘f馜viHسEր;ܣ:xs7>LSOAڈ;D.X^rc*APD샏>wYʑW==O=x ×k7\ 鿗IXjAس@B!,Wlg!FI>@ܨ:[:`\8;TN< D>3{6_QO_B`@W8{#>N(~>_ue=8W0DM= ؜-_Sތ7G.Wn?$:!g砇.褗n{;W.n#8/o'7G/Wogw/o觯/?S>O; {#KL=c LE| hGH @d0A_$Q<6EQ2H17@gчx%QD܁w!9 *PDz` *U\>ܱ )GIU-{D baza%D7P{[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+f%f2Ur!r#Rʇ-5Ib R]z!8isZ2aY=:쑖͜ 9@{lpt>Cc%%䅃Lg@M b(9ẋ>ς0h +⡎Ft\q ҃ tpGJTuB@5Cx%@R:QĢpV! 0G㮂 5 gv)^ zHuwS0KCôbƮ'ODH 83x+* ⰵ!P]DzYX1:>PC#[@NF${ mpQ %E+*k$" :djm`2(|QĐws@ Nܣ Ňd9DAJYN,0/|t脨F 8 @YD #xLs:O3/a!%K oPK$bY\q0 k4/{|XT*PLB> duh,G'Ѕ.{8rAR Ǜ b-*-c,ad[]20 3G$''Q24G|HԹq  fABŰg T`T ˆ3P1) :tblhHT/d+{ańϯQ j4PG< AjHs' YHArRXq@!t_iW&maB$A(B ` d JP 0?bݩ0̿ɕB 7D} ̍ ZekN=6qY ч= ZȍzOpa-%f`@CY,\Y(Yz , gȂA+:M :d},cJ7y*M}7oHΑ9!cA`8`1қg>Y^x+EKUR(;qAHt&U=S{aE/|6:r e!Z:BF1 pG<zfʋ4)P(? 2< z`b}  hjZ[ai v `aDz7X&Yd, A%pGvq % Y w?"# $Pg\E?ݔ@AV212W*eQ bK"2"X">(rS}g2"SN`xzXOJ)tb1G z i+@tb2AI ON(LNpv NhAX(7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7сDS@b j+R+AvDEj``-b- H\!Et*>`E)*%υ= `& `T"l.7" BBuPTwLe8**Y@+e% 9}2%p] gyh0/r/b,gpb`dÃ06c5h0Y 1؎>|cm $*%`'2=g^E@H22v5D@8j:v# t#+.E @ 9F`29PDΡ=48& 3!Ls2F -1s5W0#MWXEYސV 6m6AeDivӇ_X#GP8gP 9ZZy!P ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;I@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O=؊TP}Wva\^u hxz% W#Wqx耫`X%3K0^UY^Daa0|HSqV'aF'P!V[گuW0 fiLSGj֌A@Up%fVjKsjh yv(Ť AeTe]qvMGd0qE6"ȫN*{%wr0SRvE;T+F` {lF8Hzf U{^y^zsk{x?:| K'q[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.N Ԙ!4^c?b!'kb(,)v۽蛾BIO /~([!/b ca 0aPƫ)1//3'ZQ0~j cP2ƒ"2 . +\}Ԡ0yp,iПfP q0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"pqVt%m  ׮" p-*sʧa*̢vl8yM'H' Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3hT=jYonÞ*${g{G~ `Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQa^*+MWac9]}K-o; h8 /@ .dC%NXE5nG!E$YI)UdK1eΤYM00Ľ{jWo{!~z&w]{{` (=| ^EUa{0$ 簃=(e$Hhޅ!"sP P_]巹הa d5Dw2'Po )t܋Bz SsѥO^uٵow{0zٻa!E }TЉԉw(G~g `b!|P3J}*Po 0}J!=JǸz̩'{6%!RHaSH{H@ K!D3ZHz"k!oN*G>3dqg,"!FXа{ BtQH#tRJ+RL3tMF}jQ8TUӁ*YŬʗ.ʝzpgx(zг'*@\Y(   '8Xu0! MY{f1"$Rg6 1uܫ}Fʁ.̳R`1q6~LzASO"[؛7!f9 R}ѧzr`z12fsyg{g#0`h<J{b~`jzkkƔ g aKcҶn{oo* W.kgq#|r+r%p܉‘3r$7A^E|@)t@wd)MyJT/!c+40!Z< `3vRy@?_Z ,`Ax(1;&Cp0A*CUѝg=퉻ő*(ʰ{pk %; d7V`0`œ8@&0 \,g2Rx[QH1|@l C3(a<ῥc62ĀG XFVȸ4n"U*:(8U E@,A(!:eᖅ UdUxCXXy֑ӡ:\FWӕ*[:6YP{ kVd!9-ekيfԁXt t*B&VbE9>ƒ m\B.4`GX9'#) $b[~>ApI= "Ta@5$yሜG iG3Qzdm&\(Or|匜e$,FZ-6 ` 'Ubare2v=U @rKzLЋft\ ,E4wfh9J݂E= lâ Gd2 UB H) Aj4`؇}ld'%#FSpd/Bf}#+CdֳRRpESCX\(Iq~/#H"Db&{p` 7@9 x-EHSKX ]T&ހ-0+`XjC)nWCcm(U7_TbTf-X+fWd'=*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. ](n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>,61 }Cz$3EF;v*&[ D`Aͻ9G=xE:0"YW#W3 ˈ.A#Y ˇؠ5r? "0 @ #Q!؉kq5 J6K: UA ;7+/ pUzkM cX (YйYAHx%w?Iꥬ&/ (|Peig xI9h'aruC:A BJDOɀz θ1u X؉a9q9 DA*h*}8XH22;HmO2'RqXzh1q`Wu`X.Y`3%1pͭOCB0d(E_UQ|CY5eG@Jl3PPtcX fhZ+Ovc$h7@7T=T^<2d{h`F$MY`)d0/L0M~jn;XOƬd P2rɠHPLQXb(ykaʍ Tτ(BE0{^lf8PSГi\BAE&Þkulœ>ó-1`,@xC담~@YJTfPE^n9(ƱSt3d }X|#}xup|Xv .)㫃3o/}`ɇPP5k^^Sle|8fn[ϊm [{MT#Ahi 5le3of=q{#oˇdH)7[ .(rhq|#B!Y"xV|@D-wŅ_Çk>iE ĞӼz`"od[56ctOA >઀;zgGf4 F p?C X2Ҿ{H +ۿJU~4Ddz(e3?SgӪz\muxώ(uOͅхww+h „ 2̗> 'Rh"ƌ7jHcxB$t0=w݋r@=Ki={X=u!ºj56NV=|t8n{$r,k,ڴjײm-ܸrҭk.޼z/不ϝBzxppœ '"uD<A!c͝?L|%4!Ⱥm| ثWz((v=} `LqOā[ L_؞/S?[@#b/c3AA}G:|t> 泏=#># :%> )"-"18#5x#9GB&=#ADEA I)dANBYP`'m!>@AOp UvY>0@<(>mcp Р&tE5GhCB Y*Wmc %, A3Yn4W`dt@qiϫ4:"$=f,J;-Z{-jm9;C; ď:8$TLRwX.[>K ]&=P\O A):P LJ0pԳTq'r/9%qIO{!`OLI*L0̥9#Bӌ@!4 },)j}3@z7 .S6LDA6 Y#@Bc( U`'LpzrGEpы`cSfq $D= uCO 1w5^SJ l?ka`nJ:zcCJ # 2:~1$6yN!H} #Z,5ɂ%/-Eb\c,H0eɂh@3rPB|@TM c2)Bz%KmSS 1!=SSUgO @՛⊐&qBԊ 3CP > 0;&&oTE,%ppE)ʉRDI}04x3QUk[E0>d rqb\i>@C-,iD!0+|h1D#8Xȟ ̑$tǘJ·Q$ S| MO" ja3EjPt>1,!9PJ`DN/ahON=L宪ah@ns0 ;Hi0>8/p1 /!ʂe\WkQ)sH=N$7-H%#x"v%{xMbІI|嵋jG=ԡ͊^f7M^%,4m <X=j+k.=J`oHd`7j Pw>Li&WhIqZ x;jNpĘ:A\`@mn>/H%b==F^ADdE A:C|Zu.`~A僀\ !Πa1UD=Ab@=T<?,"?hVwía%V: H"B5ğEx@=QA >;\,TlB4=0kþ>OLYC9].#363>#4F#X1$%D$ATDCăU zLh@<@zA胹mXC̮ԝ|<Wd,ȁL ^] $8 m,;tũZDiZ L@ԣ`D D]ʆB0@MO<=X.^ƫM]kՃ,pL`‰dB8]lDDBNL H OBAI*CZv(U'*Wxɑih>XG!D>AYeP5fWzR{"@l6Puf GWB)B@A\A0Lf֩)橞5 ʬ)EXA@G=xi>̕=(˹>ïRX@B(*¥:iL`/مs,)\Al:CmOhBDѮ ELl;,A$ChEm}Ga@1KN;Tܱ&k<ԖtD:D9cG^^=L#]P.j!<*С^}a8@@9*k'0kz=NH!@>bD*i°C@lNLlR mD|lĊ,WC &<>} IN,ҰACA0ӡE==ElrjJYUlB+~&ld$4sCmY @+8]@)@Bס" عÕJA&..6 %hN脐`<Vz8,d@:[BL@AnI&OaEO0^M MB\PPan.FCvεc,DĂN80\\k4Bm[[UAHa ģ.E!?lEXH~&M1kpL1o<;0 KdFIJ@pP䚩ޜ5ȁ8@X>D0S\IJ<R>8 DW82p|zcHCmO@ȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐉@\.tB&'2((*&;tr g7QD)B#h@>>X@20031*MنN 1fQIc2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH;1?/`G@lK[Kf"5\p1#L7S?5=i.[ph 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃ/R:(oZl)m,*xG,<>j+P1m^ EP4Y^> h8Ŭ=#t>$/l ̸V%he>w'V ENDXqV KK pNOxQw>)/TPE>XVhWh7۩a,Fc<ZȜ`!m:hiĆgtw\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAAe8l"05Z Pr mX93F0 GZ*(8ACL{.C*tODdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZU'zLݧW

i/S C>!˃ @$jAoTCAzZ4K'^dYA=J<1ԃ\ 1#˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPD5#\hC';`p WO|p@A#N\=F՝L|ZVD^~CX@̈>B~<|퓎qx@ݝ$@,4M@H)8 D|zܻ/܅(ވ{܉(]L}$F# E:`@|3X̋;y ]Owqob@\DΝ<p(Q< қkQp` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}&=  pOO~%F+R W E.pA6me o; Sם+QCC|u+<{ g'<| .*Vf9c:BaJx.ZG{v wŠٯI>Cu⊟BqT̛{ RǞz6pw,| H|lA %(('F4Y$3B@3qA@sJd2'iKwA}jhσЋ:/'"0Ĕ3 }N),;" &BQ9 0+ʋt|J98 v.NJ~r(Mr=t]v}xW {vRʀ0Mz:'rWY`'hΞZ4(?ȡ2!̠ W]5|ħ'Jzק2Fʞxh  " ox{xuڞh /Y(Ppv:Cj8`CVèf'G OnjAOɞ6+, [xH@ iǭ5u|92{9믌&0|:0% H hD>Fu8A{}Em hHSL:; _zԩ@q\1yq|~]c(QߪmA+S> :g0UA ^9A~!!ah_;AGFDHJ \Gq&xq,{4mBxp DLghk1LiZS9N=( щ*V3E  y=J ܣQ䘏b61N C2YQ)E񈀇qzF8 H#>QA q}q>XF#u,~y#'aeTeq́x`Y>b\t @`E<`)I59C u҅Sz[9K,΂rH;/؃p7-dH-ZP<aA EG`%QD!F5<(AeQM68_~WET,I EdXhE(o`6@>bF*"ff v#2@0:##o;"#H {LO@ͬb !B*BR" A TN@&#f/b³)*xbTZ)^cj+ bX' MJƮS:SRpHR#J"$!Rma.ꡙ( $X;@CZ/&H' pEPk&R,@ D "AìV *F@uQǑ5)po,xv dT1jԡ+6@+mjEȫ(Pʬ!ì0 =C~7&nB&B# a"JB" ''Aȃ0RHҞzbbbb" 0>I* kaIZe'+L-$r+42"݌'()/" B<1Y1 $G[ٌ/d Ԣn)mB$"Kª$!ecZaR- \%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ݡ(s??@;L),Ez ĸ6qdT2@"b@)QF FA3C#B2({DE/0" *Rhb3K3%BZebO e؊4A`BsTjރHcG"`? ;F# i6;AzAHn>q.`^.N'lz`G @K$Nc:'!D,!s//f$!dS/D"`*@Cց|\;$ $ G >=d ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*D@Z@@5c5U#VdGdKdOe`^0ee%%(@ R'pA?qġQLciViiif6t' "Nuڲ$ B7.dllmVm׶vܥ$F kV@^a2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvT(J  B$ `k3 `k"`#F)xh̡z6@Ge$J@M%H%jg1b30|V0n؇%AzB:k8ǚA9S*wB/H3c k4@Q04&/ N%08γرF@ "◒+ْ3.tNFp$EZ-"A0h٠zx$"6}AiG A""[E* ԘMR$]-1'+On1pa"MR3]To\fm*513 #喩>1jJK–qI`/?ٝpb +΂EL-G6:q@:0Yٕ)WYA5C! v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?D # ``'/s,ߓ)0M*Cݡѡ:t*!$vwjYv |&F| r@"y@r}'v}C"nBHbns@TSL%0 "Ё b1`A` \JaB?~Bܰ|փ0BQ^Zc~s$0.aBD]yF0thrK/[ ~>*y}ԁ?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JzQ TYFCPvAF  MsPn2xeQa:Y<0;}0 ^=x + 1|鋇0={+p0NR.B #`7tSgO@=wE8HU 4!%3_*rr7n\Y_T)ӕNWjV 5XԞuB|Q4HEuݽL*X)d،6t=nQ>!|v2O^DžO4X E.pm=!{jmP„5jehmp م ` A#e_na~b"Hb&b*b.c2Hc6XYnp\4AE ѧAN qF=)$BCA=K6 ;\SjSOS5cE>Oу[BdHpmi}#W1sA3@B^@>EA>թXcBs8h s7 mMɪd}}Nꆓ.vEPYt8@X$#Gdi_jj:"D  E"3KВj<$:[)#aM`>E x &0S en> `OȮšOt!>t=(+TMfEמb29M锗F kQ1Cd\ H?U^IAv^yd&w=8{?ϛh$OŨvC ?yONy_yoy4scV2OPC\{)K&< d<D7A0/h;nO 5W;%ɔ!:>3BDh~}ЦkUtHkΏYa3@<|4Rf] 2>)%ߞ-uQHWdG; P|8 z\ A*}̯ˇT(d$n%{:ʹ@, B!Z݈0Qn {8HIO@D ,p3_a6DJ@NB3}0!PWB@)-5 Ȓ8>8cq&80 V''v]mzWXV(cs4!^uM/=Hh ؃v@=` 7 ps,9ωt~Oq!P\бdh!&M*3%R飞>${sz{#!Y=QȖs򨬄T!jUM|즳!u2#t!;{T,tM]7T#"$f Πd O8P1mO-`rPDŽL HHPE7dԂ )/_:'hh U$?v@H}d ,#nB(ĻGB5VFPs}w&=0ѡ2! `IJ/`A~oStw,S|[9ާ`$$p@S̈́ aB%&no9#Ug`} ?(PJ(<M&A1 aB2[xф ^KTCyMpa_) s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}%1&Y5# Nmd!@P (BP*n)vnnq}gPrVޓ@#_I}xE "gjp#sZ" aqnIPt IOV<9=0tbY? IR@IF14&#p<4X))@V`71X# ED)OIm7 !901<~pdF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig% qwj,>3(5Pf `%&֑mo q*s=fS@[|Z@.v0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySuc6 ^x2.@jq qz OR% goч^h7(@ @ : )`ͪ'$'PAH}͕ ␠`gB0xRي!7W`zC(($#:x p@%!I P S) paUsך S#D&@ ҩwS鲧ezgRb芭.P؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8"`Hś"!644Q̛!MCŽlڑJ4k狾髾_vɾ5ɒ,{7B p0 38^|V2Q@Jeʃ7H@"iOY j 2ܶȻ! x,N0 P" 12ġ'=_C'dx& hBgvG!= kyT!59@JmrBeۚ cc=Mm׍G`pce4IT%]$C[@{o5p)`f1K#Z] Ey,Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeY g`*RB*âyyae 0c[ 898^30mk773/O $_7R+{n0) C -q[bBw;#ZAX!Bv2r 󸒜F0|s5怙5ow{F8;Y"з5_'}0h ^ZY1>s5 2e[ F=3}=;^ȁ@5GVz#vz< i%oB/6 B{}Ϟzm$C6:d!"hD#DOD1EWdE_1FgFo1GwG2H!$Y,Y$B0[`'$h)${jр  "@؄-(A'(|JD𱧒򀢈HM*Q `|0郄l 7`suq՞xkYY( YJ=u;U t @0RgKC 3de z3F2 ]R +aPdDRG-7La9#>>`' (S@'j7188bFeC A{,c@Mg*@u*PxU1цjU M\D :]؁ІȚJx!6b9_j1 u!HoGeH{w#0 <{p-W:Rv24._a'XZ T@M쑗4Y@=@A@uK<4ɋ2'Y0P ( 1lxl@2Ȃ*a A{|k"Q,X !&@,B=G&W a~=%O\/ R#wOt8`:d5ѝ  *P R>&0 \@.xW0&/Pq_O=gHpcl/? u88*d X_‡؃<@PZIf#8k$@h2+e"`ٜW`e,+p2A=zJvֳmhE;ZҖִvF*#N`p bc $6qκFVo@0Q YWP).x I(TxMɛ wxFkTdt4{9P,h-P p ~;~Xnk`- c@x$sHFϤ  CIx(`0o"k"FxP腙 {ȥ|DJI؀>:X!4 zXYH(ƍ_@>9 +ۣX1pOWl}`}֒W}A o "s9Mb@:`{P-oXtTpA3({xE|pӇ,'Έ< ƀF Ȁk} ۓ \3` }x iԼ'T>8 `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇$&upNN{6IZz tBS)6yK=X\ x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z 1q7!X{&bQHu8tˇx&6mq_j 0YävQmmdϳЇ hH t`z#La)͞[b 4yqiᣇs^5N!P@Z|8<t@dzH(0ԄmmmRpIkip>ߖpySnDt)7SGɇ1HYam66B=#G$/yۺwTb h uX|7+,r|9n(Zn$q ́d2Qq-x`Btx2J x F#Z]XdYMKa: xx $X2Ϝ2 wH*Q ,Jɀt@N(hljt0|) )p%tI K/0t5xn3T@TvfvivkZ Pw@oJ}h{{0r}׀,6~ o/GL'p{"`Ё@z:^<|݃70=w? .:| tw/$eR{A̧̞$NҝL\WOϏD"U4B>ME'#ܳ {u=R,,rHN !ɚE uҁJdWC6Pa@t^23 o>E_4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM06p 0 e9C } w/ňgo {œW@y􍠝jO=Ys!ys?O>cY> DOyPL=vOSsu` Q@`=s=Ocj%S@#@4=t}IpCUPOZ+`HbԳ7^>Nw= wT=gMG@"n.SyHzn}Sy, 0j t=yQ<,OCAwY>(c|ŨCèr7㜳;ܳ?C]EsUbVrHPC@O%K&< @^<l5rFXۣ5^G};s ̝k67h>0va=}hDUݓESn=:o[=T>*%f@<3 t@= (-exOc@L/2ig ߳H Hoe=޽ɖVI|[svך+-+0AN1 $)@^>|wܽ.ҁ.CL'ZZH%CRB7z# wm;rCw0mA;A^Ey8Ixp`9!j@\[alZT"}``j4!0>,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ%U 'M=@Pz8zW.J:* p`0@"C"< CO,v  LGeѣO<P>D,7 >"‘FL=<9=ك@2Ȕ,đ/Y` 80HjUPS9i@tL8KG`Gєx5.Fa2)3(V$>DY 0@x K'ZDIʤM%Xy*OB)\Z MD=TV2q%Ok\Gr2xXd!@WX㬨@䠏ɢA=yς6-iKkӢ8<:hQ,#сH$e<0QB_79FX>Ґ*5&5(>"{c&YI`9r:Xzóe8fM1HjRZ>  O|bH<;_[;xP=b ɢGxج{RD'E==,aGo :,fO02HwCă.&뾍05@y:lI\gޏp@om,MQ kf@գ9֓Bd; PkoCЫAܱ C"pa]QM$yL42tBCǓSkS:ժ^5[I 6V`c*]05o z@8G_c'NQޏXkJaoISimʁ(r"/8xK@u$y5bL?# Hܓ(m9PƜX`8;|(I+?10VGaj!{Q,A!ʉ 6񸚖O+ _NMJzgC$6:* &4@Dlܑ!$>%7HreGhQ >ï@ࡎkSv5reBp L,HS*Dk[\X բ=Koӣ>=Kd4+ZIbQF# 6XTk< @: .Q݌wGFB2~<У~Csl 10.0{Ljj<:tNH@ ODYWNCP@C$JH$4(!RO`R 'H`\HP4eC8BH,` V(@ޜƏC } ?WL=P,,=NUYe@NM`\>G$@i: (a@J`ń-I9 Db @C GCL]>h\Jb+>!Hxt@:SOtүD'JBԩ^5Z5bc6j6V .:,2a]:GD-tXrX;D,=>EpC(Ns0  D'EC-v̈́:r8] >L^ "QäԕC>XU@Y N@U4@C4O$>AyЎ@D!NNN GDLNCaC_CWxI@4U%E4Z愦O@HFC .]]IGhZ&N=_@́&&aaCb.wC@'CT ; RaxCE,Ft=[gC:EZu;8=AWH,QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`>D>t=X@Wf m@8CIO x$v-Nŋ>ԃD,qhi kԼa ̂A]@=C B$HOdB`p@tO<ߔQ DL\(DD(fH}F,>d`È^9>@cxSDLIF&A@tG@@fT@ L`\Mh/@lB HԔk]N $KYҫ~`F]e8d8LgaHH|Ef(C$jjDj Ujl\܃' Lfe]ZyG@Ȃ>T@/>ȅC'( &NAT9$8Yt,ST+$c Tik0@h"*J`j ˓Rbt^>|GAX@$OūʐJH@u7@E[A`O-mXn?02n:Bn䊖C ^:.G^Έ a.Hh(C|kLGY莢Knnj=lB &ª8nE*(@#.!͍j, ioboo$Fd(F؃9,.C$p po52oqpt.+\+FKcpksp{pp p p p p ppq q=@.VhYnp`+?hUGk0qmQ_tkψ@_1qo\qq r!ϯd4e&W ,R D+gc@ %OC9Yp@8A$o!@YoxmnKY*9L)HP^lk@,8T@ P>G@}(^E:Nrl=xo*|nn>mxe $l Eԟ,b)B3tC;.CqY$3o.>@T:FJ<H`ELa/4aapVLZ1=(h2TcF':e=B0HT_CY4@Q'&,1$@;V@B lUtQ5[LPL[ @'@h@dtNﴳDD\lh<'tC|[< $E5AG ,> x Qu\?jvkCkBu@&9:lqELGD8vL8rpPptBS=;4,LnPZ h$aV$>$\PhŴun4F dt6Nݖ@@ @,|=l_7NqN܆C]8NF,T>Xg{@YtkC}/mF<@`@CI<PO(r\gq QDn7,@CT7 F/FHg+@H9$NW !tw{ Ӄ,toVX4ހ]-8HBG$ ÚÖ2Cq6`<%£$H2ECJ ȋ(e@ I>ɰþ VRƑDWFUEY)$E_[\X>Hl^ 5/s:p2o,C M]C`_MiW^kyH|Y@)-/{`B0+@b@"wO@(sg/?tSgO@="4޽:"Q̇: '2D T9˔k^٫>wB={h7_B}Df*qa$MDNT@A b=>SBY\I Ce[Zƞ Quwoufpw^Ǯn:\6FjcÇ'VDw1Frz#vzY%)'*J'lP8 )Л>LI;ߜ gki%d#B# ׿ P ,LPl!P ) 1P );`0 b آ{!@@a{RD&HqE Jj3rYQFQ2Dd͞J2L%JR9T?zX{)}h =(̧H\|@XT 왅Gΐ|0`MІ8`ˎ!F$G |hlC@!<F- QIQ +MQSX)Vk { !&|:06G h?>_X= A{ԅW^E pS(4 Gzԩ@ V/Sʩ8? : ha.{OMQ*F3eP9l駡Zꩩ꫱Z뭹 gMrY#`ԈI9@ `A{{PRJI-`6Ar'H3,Aa!7$X@tU|x`j W}_XOcKIڐhI@ % ogP=rF`b',obY =1Ler=P3tAGI CV)S0g%V$ݩ3Lg+]!.2 c>GFuUdOAЖv_@XZQI%bҐv4GtrUQΜ,psiFEI 9惧*@=uȢ>aĨ(m&"VbCds[桏 ``tL=xb V1CuZ\QUmúCG G<*+B mvg9ϙuq5qM[{$6/--z>H(;(jt!)]'mG1go?E)kg=ρt7 :`c(JӉ . p=6P|  ^|$!d)RB`.z 0X4јJ´%7*yI-Іy}=\0@o ѓƿ:(J"B) ONw8H/Vša\+Cf:0A㏢h%g Bq<@X4AGh8 !@ޣ$ ; +LB8&`h?#n_c60aL J~%!A'F@nR7N@ A+@olq0upydpk `ۀnXzK"bA`! LPkP R "F`!J (gG*qK9CTŸB1rlT(b?)Υ*h:Cb ! "@L gAi%2`t2Z5C >+`F8 AbC|f[Rq2aa͈3ı$*$Ƀ6bZaƑ6 !72A! űYI1JJ`?)"j{n.Mʢ+t@ɞر! |$ q0DΠ 9#1b!D>!b2@b9t?JA+)0<,$PbN%Hm4=,ٴMM4Ni<$B(g*kH@/%D@Z`NP{BtQQQ!5R%5B$ hI&5@,7Z.kh ?DU+ME!zN65VeuViVmVwNSquc5ICI.t_S;uWYY5ZuZFWOJү$F Y{S^a8u]ٵ]]5^u^^^5_u___6`v` ` `6avaaa!6b%vb)b-b(,uK?5>vA|BYO6A( a55e8`Bv6cq6gu*Aw p%W <́'дa*O@ qM<@iQ}7PX"AG6PB@ b16ExFք60"$a*`|c(m9l7S?R"V8%lpwAB76`rbaRu2ă(<#I: {8#A/`c!oj$C:b+: ܡ?ҸB djsxw9'XK⸈XC!GBrZ"` ?0qOXBi`k$|fzx)0.`{16 >v0}v@$ Y.$Ȫt%Z"ui8|\ؓ٢=~ɹC`U `x&BtALaΠU|C.؟_*&r:$bh*`H:XaR$.rF I7 x~:a(BTC>0hAA&"=V.EH?fkV6\yy:x_= ::zbڟ/H !Ȟ9%ڠLKB:" `@$<6">F'V d< '< `٪ AB*[`eJ19U{dTU n7ٲ8w5r)?t . KW6@ୡ&!HN:6s|{6/~܁|Y_'<*_$>wWK0|  ,`+@2]גE&d Px@bp"oM$E5p#  ,C0+;ٓ36 ׵+F:.l2B2a,3㲨%b+B!K,:>:3}ACKh##6#>Src`]#)bbD2Kfg^S ?­ "pϞ|to;{!ȱlj ID= H䃢DtCJQǛݝױɔ+$JdH3߈z@޽:=e:^ ij0A9.p 6XfCPD>!f1& D7}}|c 4TYS^ͺװc˞M۸sͻ N(eżz8@ EtW/Ļ3Nз`}Rαz 38髜vǟzZ-4%pc} =H ^}Ma^Q1sB D4CA>PA=&F=xXwyRPDSe-OF!4Utڏx: etqp4 NTBg#G`@QMT}ݽ3TxD\JOAOIm׬~"dv=QwO=&yϟuXxgx块z L ijԣE%x

*M0xOS:`:`*>"'@-DmH'L7tF9e$˓COE4, N/IN<)5^;t НAk1WA>T%tOt;2z-N"43TMd1[0ua"Bd \>sCBX>k}j7M@=[MdOdԋ Bd1OOa+=¤z?Qo֛_FCE}O5Zb($WAHRp.= *w ^[Gd|$y#I %;d!?n _ [掼co{[R@APY[ۘ a&Dl1=־b]  н {k2uDMR''G?5%JF8푐$'IJZ̤&7I/1=V`{p8Ç&kssT~ġ,,al+rU_i@@@'PLm C/q8yAL(D=q2o`D#OԕdkPYd5LǂIɈL,`WI:a1 *{3V)T=6+srqTH 4zQyiL9AgZE>T~V-Uy$ 7?q (KNbJTz0XGהr16S#x[&V䕱,L[׹ 0$>Z w`AȡViˇ1 r"x (9IҚMjWBjj[G0/G$p*(@}:|â,X~:x@ (l"Ԡ#F )9vIL@w(p opRԨ!CHywZњD\< &sȦ,J~dNȺw5DqrGLﵙX8 Y>l~"Dt< >u'Bz4gIZ.k$ECȈ*#x"ǗWJws-G@q* zotCz&J=O &k0 8>GBMkYmC]KRԨNW,m>JpS#zd21%Xlec{΀`'Yp;]x~PGg ekق,gH( `߂i4M !#_)e$%kࡎ&:T{' ]ܝ]ɻVלH_~%#i:&+ǘl>{Xzӥs]OdKz#OבsgX>`s(0)ԭOin;iy)x:w&5L@p}wo7{`K9ֱ?Éжzh3$&9W"K~HT’c8.G|\ G T8pGRW4Ѓ a䏺;*{G<@Y34-9;0O0<O*fqȲgpC!0uP-M7M! Yq"QMP}&UB#7NP*6<$.QS0/@!uAe\Xqs90S0Ak#z!P9!`B8>M|7kwB[8/R|t`lGx^{qIp ħk+9RLއ:г{H<:}B"8tP9+a҄8uʸ،j  2KqEr8@X"Q`CIe1p)PD`, Wbm\, x>=|0Y0nt& O#tS" oPqD^8%;3@0w P"$`eOYc38 @7 X 1;ۂ80ywO@/ @bS1x۲0Bi%}aIPo Q09@S41=0xXF`)0PI`A3* #BTQ9 ?r`y-0i `#0Er6"ϩ t.bWxM9/+qVָ8a׍iXrgƒ\]눟A3HU?c'eVePJi3,C5"}95PA%1rV`k3x+$@A XQ% gPpsq $P  %uDMB4r X>DB2! Pp 0=0KQ!x81b%$}0эQPMrPu7AI3p~p w0}0 Zps" `dM:<`G O}3, Mj`f1>Zp$#7 TM"[Y831KhW7->;H=0QKPII{#e![ ?ҦH)" QKqᔶB%n $j@8ڷ~kZ 4KzA#` r. B^- 2z{ۺ+$=ȁdB&AC p01DtcD*3CȋƋ7zC[{؛ۥ۽V`|@܋;K[qȑ{¹ <\| "<$\&|(*,.02<4\6|ôA*w÷8<B\Pq־ܻ@<78ԵG|XZEU8PXjI,""pIk4r 0 !-rUѳ`[<Ȅ\ȆjPPp΃sr%K!P%7UQ|$kI@hPI@>DL$k.\9@@~{2s?cZ,Q ƜU}t :|Ra`:zlN)!o阑|a~"zzx.z}I=^![3atPe#^6w ^Qrʽ<c$ A(u# -`l/uq 2&\ÙԢ{>gp1 հ1ӧR!|QP<`}T +;H8 8 0;TXRo;6Ђ=؄]Bd %?/聡8AuDQ# z:([FXٗQV!0g@& m1`80֔1I=3Ol|} 4!ܭGo!$cMa݌p! 9Mmti |^a,l߰7EU-+UH@?a7$ YAgHg N^Pۇ;Lًd$04xHM94~k;Ats"< =C"$*@KR6R nSaC70nKDG8 7Mr6"QXaS* {~^4:z2pH"~[2VdX謡$BS @&8I ٕP= ϬPqJi0P'm#0#SIbǧ2>%>ꥮ=9Y&BI>'.B>-dnMA/K0N <N!x!|qisx@vD`&1LN}c8m@ eqLZU=g\yᘎGR~1g2'{octh>_T8"!JG7%He@PC!MQ P0P ud!0FQ"ͮ-5e ,=zbW"tb:A?zϟ18P A A#MPtWHf.ç|:Á鋰/={kU=u6G`A|e`r`{,]6 1„8؋Л>٣R944D] 6,!i8 ޽aŎ%[Yiծe[qΥ[]y_&\􀊅A4, 3Cwu$D{з`}RpBe33SY3gϠE;^*:=~Wi .+X\ e!v7({}pF>,|ҏ'Oovtǽ)Az̲DZే%Q/g )~ KoYh  &ŖqG!}di7p]QFmı%Q`p!Yx`I :E)ʧyH{f`hu*PF:T+{Lwi) {SJx'}zh{Cѱ&bPIObuVZkV\suW^{W`vذ艧ч, "3Ї9Ci3- {:`V2ljͶ,wt'{ț{*c|f 9}iwGwpgN@g% )cÆf%LphxxG{,@:n*gAr|.Z!d1 ͇xͧCy@igcntIP"v( ԩRx&l.ǪL"¨_x@x Y!Zrǂ{=Z, 2w {zٴC!0R'Z XM+g懠dFJa?!X~{{|Ol2:7_ h恆*y -wYo~9_8@rs0 YCIM>v2"t>c]`f"x;5 ^S>Ⱥ,q+ʅf|pj ÇDY !D}6`*/&b>*q6SLV?D6 ox 2 RxPUp*ИБeQ>84rB6@$7|K`S$f1yLd&SA Yf@X{}V̘,0mr//q ^,D|HJ|gPBꪺ/f^$`WK*)A7a&=9JQRå"|!!Z`DHtn& iyĄe"fqN9(oB$8P[lN{wiHZ8Yss|g<gxI%jI*Љ <}R>` \eRaCT(C-Fg (*_z!k>Hak%Ӫ XL!8r}M:H}=  x}׌9y1l,!-YpnL{F]3 `DKJdC$H1lZSpi˽G.";+ #%ױA"Ր]$cL,b1Ds)TעG`8tU2'OuhfY݌ RTTB~v]kg{GY <S/5! ؀>\6OU 0?`Gޯ ,}8sR fB%u3!%>q$aGe} Q@w#>PWl50ـ x= ># G)#zlL7ds|އ,*|' %J>3p Q _kbsqw؇Ĉ5}>w |d/tMyH}0# vi}hI2ۮ^Sd.$Ӏߨ$8 8H  ; p p](-ܑá(𻁘|Rx9w qk:;DDLDE\DFlFܳ{k uȼ)gyԸ|p Ȁj#y d#޸괁x@5 X{ؠDHz0 #REVD xؙغ{ h"{ (hSFP6֒|Ej%!)F_&rh8-cbFm|p 1Z k 7 F!8ǑȒl o{G HX܇VA`{p+'Г|*)'ðh>ه/ɇ X܊}p*F{ :hY(IXU偖aj@~;rD|LȌLɜLX,|p̽H^(&y L(䞴ˆ@ռMMM|zH MΌ^ǖPμ0qp< Lt\N OO,ON4ф 踎x0MLOOOO\4 7Oq(pD}P P P P P PPP a-Q=QMQ]QO QQQQ5 `B Q R!R"-=,Q#]R&mR'}R(R tH$R,R-R.R/ txH,C%R5]S6mS7}S8>HS8S=S>S?. h J&?mTG}THTIuD4,|`ITP UQURu( dO-UZU[U\OCcQ0ۡxXzYUg}VhVie@`E#Dhi=WtMWu]W*( (89 ;2c NeW XXϯ ]r3 jVPs-XXXM;tPehS )aоXYY=|ȩ?YkؚZ-Z=A ;cLBSZZZۇ Z-[=[+P ۴[[Xt+[[ \tuS=\M\ōT}\ȍ\S\˽\\\\S ]-]=]M]]]m]}]؍]ٝ]ڭ]۽]]]]] ^^-^=^M^]^m^}^^^^^^^^^ __-_=_M_]_m_}_________``.`>`N`^`n`~`` ` ` ` ` ```aa.a>aNa^ana~aaaaaaaaa b!b".b#>b$Nb%^b&nb'~b(b)b*b+b,b-b.b/b0c1c2.c3>c4Nc5^c6nc7~c8c9c:c;cc?c@dAdB.dC>dDNdE^dFndG~dHdIdJdKdLdMdNdOdPeQeR.eS>eTNeU^eVneW~eXeYeZe[e\e]e^e_e`fafb.fc>fdNfe^ffnfg~fhfifjfkflfmfnfofpgqgr.gsG>gtNgu^gvngw~gxgygzg{g|g}g~gghh.h>hNh^hnh~hhh5! ,fBBD^^\jjl..,nnl&&$VVT 224ZZ\JJL::<**,zz|bbd>>@ tv`İxļ46@ltt b\`BH@`Z$(8pfpLF@`Z؜䐔prx.(8XPX$00PXX`(:0ΰ0blh`dRlԺFJ@ԴNf86(zfh0.l4<УKNHJDv3|{Wi˟=:|ϑ./z"N%t`FS=#G߅fᆳ<#>`R1TA.cQ4hЍ 娑;= N>ӉF)TV 3:3(S!p Ih&QlIGqvdP$=l(`堄jj_wP@9# FA22dCڳ,iIh:*B6Īz&sFA<fp+[:N>@ <.&H@FAHn[Sdyc%$-ښACQ<`,p;Dϑh+Bx= POK~S:pPHZijaupϲ,@ԃ@ԃ4:H,<N,2DPX6+==BPHH C@ )=sںM< @BCt>F#]MhE@Iу2.y`Gψ<D<#G/j  Oܓv59= ;B3\C 7X`Ol{޸<:wN  P>#=0/ԡ |%"~L#@WȀ9$ А&f|C77 +1AzP  {$uhG2ӱD (@C0USȗzpG3B BPq=q#=q | $ "JC>H1IHArI!݃>*`Y%@zqzsgQ|p'XFđ$2K@' HeGnyVWH_ L j MB TPL%(@>1|x<&]8jV$`A" @Pm*CW{ 0)AΝ!x*y/ n J@*wZ=lTx@{Zp?QxP~T󘇦,kN(Ʌ~=YU1V:u LmS&FD`G=2Mj3s+od"xD IC nz#!p> ؃~jb){aG*߭$k\nV2Q`-H[yPDLZ*uYr0s: Vk>umJ#"ykMϊe2=c8A?CXlA'8"x3 ]gLjX@tN(H,0>E ':܂0p;dE8"0rYtYxh1Oey\+e{\Y P`*Ch՗2 G@t-yClGSx\@" X<ڭ9)7#Xm ̓/!gGC@l"lLbiOl2ER4Q 0<ԑpBuS;= ʹR^C:f!m9ߣ@fsiD_;WpBz4j[HdQpt d?KD9PT."pd<6Hb_}u\>e="&ثMg :`qh@=Ԟc옍8&zkuXH@k)z :ĨBC)D.{=&-(P O|  2x ! )HЏ{jC40!H9 [z0ie+ x!܇  }@TT'EV=r=  !P 77@W5@M}5QCg A<gqH0|=G&!y&<%g0Sf1R t`rcP+v02> h_P=@Ѐ b}~hQ\G~u5}jl؆0!p ?pUA7$3-p0n9u˅! PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'!&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋr !9Yz|T#0q!"4U0CWcMS S,P_ $0[U8깞[Ixq$ׂYYsLLW` ymc@pNI`j왡HIu$y'P27v)W1mrwe\2*_* _ș:DZIG̢sR>.gmf! -*.`  r0dpr:}ڑ," gY P`S0֢qt]`waH% z+4Jlk[Re6 .40wQ0O1pdZJF!3@h)/D?#u\"gJeP#0:蚮:,zT Yq$"AV*rPO@d&bfڰzJj$ 5jR8 !~E¤ (67+R @a-{ 2;4fc.gZЅr %"]b*U$]ǭQp@,H5Zq=K͚#FsodV aHBmpYNʵ~KHGP[Y}Ya& hT =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0(0$:Sd&Z:A173p#7tc79:,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLcfIP 5aP@Sq'K>}P$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†SGoa>$p!ࡻ=wocϢ|`x:՛YB;z{r{W a$T zۮ#|eY UCڵ*n\%^!T{ vy :xV&]iԩUfkرeϦ]mܹuo'^qub>xv ēC`A2 @\½:f܋d_=$*S9=4OTH<~ o*@RC(BZڨ,{/cF׆k/г'{'YY1.*AJ*>ˇK0sL24L4TsM6tM8CgxXd h&PIԩ p($Z@H*F{8H{`z*C{[,ͧY4#g -@ v"sp"ԛi&N=yez/ dy@Bl/ @2Oz%0 Jŀ0ŬgU]:Pi݋t"h\h{a `b3xc;cCydA@}*  ʤ|bJ@|$ x@J(2θǀTJuܙv b6T *L;# 9t(LU2d{|7|y+4ȏr`3dQ ~ ⩠^As$%4! AQ+5oc2B7u@ u  $@V$zw@ <=GyBD g?DI`B`T P#fM!cKKJHU;` =qA iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t||Γde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nq6b1a@ZdP !#uzaܡ_LoB߭Ckʁ/BFX0u#bJb,/L f#\pj:wlBlcu,dqSr(G&X=|Ј1yͷs2{P-YH/_xc!3uIUn?:h]WL Ϩ /8-j9C|LOT"_yy\{PI Ԟ IJ Ç䁂 ɇN` |(({>>uo | L_hhA>3@p@B , ?=IDci ?ʇR|X hzN@w 0Ä(:\" 9hH3%;FIDS 3 û ɵ0 ~8{pDي{В{'Җz@FNĀ")|3ʇulDžSчG1A`_ FMdQĀO YR4Ea>(sS;' Gue( zq$ GQYZ,[̇\\ h ӓSrGx, ]3h NC5L|DZ*ȓ(p K ;8ˁ0D%Ӌ4ȇ҉*W D3Ѐ$@BS_p 1AP YȂ21 5s:0J$.+Zx+3`˫@ Db, ܡoMP`LQi{ |KXLt,P FL!R0x e L܉PhH< *;30q 1ą6ͅЃ  K]Wj  {̎eX$ $ ű ]k#{|0$$ |Ї 68sp9#l*-*]2L%k B8؄{R"#,'hStpIP;XY1-3#e$%RHu«с1@$ SX:H-*e4D< 1]L }Ӓtզ(֭V N\Vi$N#䜈(݊MpHzԁI#xx( [5  h2Iѷ4x xi{|h$ 9<= bP*{x+C!-B5yȈiLNЇ>pX(xA $Pb@|x P4 ]w 쉟؞HJ{ ex0ǒ%1 9{i[-ok *qԐGQ+ą" ۷c X3JEuAHV.YT+`qA%JQ$?esMГ[P/:ktc[\B]8EJ{8l#Q{H HꨅJݯ@`}( ՠĐؐ]uF d] P XN=h߽=`&Ͷ2#t:x !!W|Ѓ' F`ya!zOf58J܋|Nԟv۠+{">P" M>5LA [m5%"ٰh@Q yY@RP)cRCLQlQYccP k]aH>99`M4aB4fqDxsa]=cb'ч}(05{neWY=.(ه!ntPOЙ ć @#IPj< EEdλ{|Y6\{€Y!{0JYhI{h ʠ!eR!&M'hɁp4`pȄB9mRF"!""# z$4q؄!jܣ9(% PHYl-mr&O}%/TKq._s6Oyդ؇M M`zW"h*;ns?s2/M…DA2k3Y^\X")pDtJNJ {YLV< rK?uTOuU_uVouWuXuYuZu[u\u 脞]2 Obc$H6av]v᲋⬉L^#_n3 MW 1vw tjwvIݘ3w).x? }($kc th呂0Ӱ¿,9H 9 GH$`efՅPI3]y?Q ]7 N0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4=oV@3&5"+ 2q\AoQ6tVyLY>RP#}043Y_˗|PI?XC "@roh8!~J}䨀$Sq{V^ifN|Ҙ$W﷍{'|` }^w  |_+h ‚Kx&|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=wC bsg> ~"^%i`P='BL>)`!ٸ)p`[t37b@F胗h|KAFEbrO;޼O_\+bXi-B^'6YCAPr"%PHT; г=8OR 5I!gAcAe @Aq=)aUP+v P;<.тI PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,ã=>)$N@<}^Ep oj)z):*}#Bq3Bb(A=,CC ʁ7 OA=P$IT`Rt=TģN=E68D#أ@Fl[@+[P: =b?KCE{>@p80T{n.kOFʪ=3 r E;( d`fwN+A+-b~sAs= D~4޳yO'A>@A;へXyR!<:P:7lSkbAzA# RN=INdQO9[a> - 9Ѐ >=FC?X @(:25d]lYH9nyk2_r,a#"xPh"MG @]7/ D7:k#()RV"QsuX p92~>ʀ1#A@G{D %,1`"h: !72 >~zpQ#gd_$.@2( n+aY" qW|~ć; >"r갇i ^rzl` 3x ^A& |dr$-2zc ;fG<:h@yqc(azh (<5+t hEZ'؊@қ_G"Ye>f8rx`WBc&%uẉA wUNp! Eȑ=(֓+Dd"F%Ta[AI(DCfA,HZc.SU`#x@zTt&4iBPȉQI׺"Dם 8v`H٠NT0/ԡ&&d}ld[Tw>T^'jUIDI!__so<ɠH /Fpe"ό4ךA&qa{Vk,2~0#,asf 8؁z p>ge>LH/`Y^M ^AŃr(@xh Cxr$LTzifRV^ pT8)p@A\" C H,a%FDQ}L$G1 }Ȣ+LdT)P1݋k~ d0$Y_qO9-s=wpd7 y|n$`!qHa,A 9Oo׃>r|IoXc [ Aaʘ!k{>BM\M0Q{ƛ*ppq7-. `/k6H{QcM}T}vDD3W-HK#ϹYl JppD?65iH6F\{ 6_y<`<\cH=|2[9m; !l#ʃi:Y?xd ߐAG`03s7NB !C#GFUG!yLS8h) r{Ԧdܣz%[ BYЃ>v-u݇#VAKG&@|<$G?^ALa`\BD-5FCUD3=A, =fަO  Oў8dI?B{ =AY_A _!`%Y(MJCSL;5C8`V> EZu,dr ǘDaD=A_#bMPv4(-Zb$VbFdA U>l H4b>-ă+nB+XJahA4m @4B_v8 zLAA֎=XXPġ+b ! `m@$AAGzC,;;qG1" #B@ԋAbAjmI䑜*GG=\^aE4Њ@g%H >dMDHc%DZă!IJ8>r:CB@m>XXMJ:\C Gh$S dHŸAH afY-DzGD@AC9ɘò,o9 }abOƑT.I&_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:#CT&eAH'g#yzZ,>XrC$()FD: f;d W4H+gACGK*߅DٽmIiA|niE<&e,GOAK=<-Yi&_BܟA0E(ߎ aY> x/ #6Dt]ϢFANA0\*)e&Ȃ/XiZC0M`E0@+})5g<< 2m#FhE4a~ V'(f;4#`T=d#n&>ă?+<,(Ljz?<ë^Zi>̃><@#@;ĞP(~GRjޫ:_ԃV G?x;@Aҵ]i&x;סPlƒ^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i@Ì .&:]`C^!5 RA>=@ r.G@*[泪زJ^ GjA,YnBHH.vw0BeFÍ$_< =d(/bhrE .xRpZҮECDBZ.DZ;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-A-C x0fnpEpK3\`ED h~%rI>Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``BB! 1?N⦲*2+kP@#^C]aC8ATBIX@=0`Y@<o՞aMohAPX[-/ gD>ZPtVE99;DCBW"C=Xѣ24S RL4L=D>\3F<@-t>. XÌZ,C.X%AIrdv, \djTĚZbH3CKFsnIAOTF8:8Ӆ/uEו>\[Vs CȈv# nv,l5aA4;=wK9<D@C6ZT``F$f(@C00UA15Ȃ@02h 8cpX_S}Qf FD@ (; R-IxC@ˢ 8|r%2CCaA=5qeBȂv烪cE8P0ox |b1>}[($5,euBXCZZyA%%ׅhT0 w=jEPR=tSGz>dȺ9E`v/C0lz@ܱpz%9~>@ 3z;2And,@<a=8:E`N9> 91Dg {B 7W?#`[|-ĦyB|@:l@A%lL#<;t,C̕@Kxo=>p;7JDG183#F3zwB0kD<%P1պj|pDìxoA`H7&HD E/(C sg֕8XqÃ5tj':,r`F@\88~}ycO9^/9@ 3"5A8؈w ZT  )hF`hN@Ľ{D3xa| JB; g_:sD{һK{,Aۺ{2"/Hq:%İ>9FH |X`>xh+Ƀ/ 0I3N0B[0½ 3 nuS6!xޫ.!<ӊzLz0,⃃[dμ_ZV'Н \jAWrZD:a`G} Ё҄(nU4`Yիzw=^ZV/y>,#lo߁T9}K%3dG˝hCudI^PG1I38ӮӼ ;L _6T3"YQ갺&'-w.ꞏޓe$AJuìn.dq}<zJ ڒF}H%J-L5ݔN=PERM4 /ATu8Ճ> ݱ' YJ`XLjd]6XgehjlݖnpY,sɁS(P. L5S>b Qtǂ`F0Iu{5~%-MU-\di659uG`0hHueQf2euޙ}蠅#5w(c/##p'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vG_rEAC=Fqݷ] A-0V2f;~k'O4Gyqg>i z.EОIӀaw4jZԗOST hwԣIRBAi*PH-Sq2QG'Qkep`?LpK D#HO- <7#!IT .}IB؇;@8Ō !$PQSe={0ZI t 7FOV 8.c )9NzJ+CIbLLu%&T*A*>fX)~RKA&0xLT0Ѱuʕ%-bQt=5*I*{G&FExHXaG:^(=f˛3%rғt*!yJ Uh>i\ 蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${A'SZt()NltC"?~35]@рƣL]VUnI&)/{L<ဍěfbv+"&ӎ8"G`٪*I $G @K{ *H)6d zX+0O402P*_JVnj-g[jo^1ZɂT*#;BɟV+U" $I>pwEqA$,ޙA` w(أڕnk|=ie/n)x5:j!Kg {t * n#\ miq9rfRW-u=˜"@l I_@G^XAzl_\fa8+уeP=ƫ(ࣅauzVBI;4|g=6BD %E' v0/LF|X0kЋAY`"FhXLYlvA,g9wꁏ־hŭs}(^ Nz6R(|` @ 8Ҿ``FXcv>ZBHĽװ؇LG]|@# 7B _D`)Lt׏HxTc-=1'm:!!1`%}>C 7 $E}SVCN0^w-GI$H` Z0O4p 0C 3ϫ,?@H H Am@<p 6Hs㮵&_{T7Tx]J! ҁz @|c/|M@ʙB'HKd"[b…:k O$NFD pG:M"(#6 H(K  titjdZƏL&I! !L P 0fk(- D"@:8n86nC @ ‚ ƻB k !*A6`4*R-dq!)(R p-H! @:iQ{ cM!(Tԁ !LD qqȐBN-gjj$ X|_b[F Q[k  a-! tΨUI)¬\pR.@_ Q!6DcX !0ZRI sR'w'Bzn%l# * @-N$~%bMba c&b%!J*cN DR ϖ!;!)JP瘔b  "((H< q XL. @1V-:darS11A*B3dT*"SdR-7NHRD@] 665[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* `BxʬZh%2j!##LH %&I1K4Ũ``A1: 8 s-c;AҒF,00@OH>L"0p!emKkvI:A )! \ ҬmI" !@b⏓6%DbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!t pr,I=0XU^ݡp3 nT<TZZuR2s+`R@D@3 `j"5GBjkԣm?R<7 BQm{.14! 8, ՁZpkQpo[ա[R6y 0-킶,ܨnHQuU\\`(V:bB\BFﵤOJ+@N VII3),55Rl:aff]'iAWPG6hKhA.! `e-1fѡF6m+!iP^@UH@ho)ǬUr'r5(B@)ACod!("r5dL㇔iH7I敂f"C1Mb@6#B@a@!N!ᑰ~7!(0u.!R.w+2ws;sU "tꐎ zA 0:D*I.F @`l"8UhRފ" r_1STC } "6&Dx9B)B@>R>B|L!p`B5l R,5xcI/ 7Yk@:Do7W5@A6BN,e|Winv<R`¸r R"wiGX6aaaI!ܡu2E2*qG06-N/V$AVs2a <@@" D{S[ 6L&Z0" XvT( a^O2{Ȋx Z8 lkn$P)ayytS䎝(͏"ٚ *Ğ`Th&P;vKlch+"b6tE@e! *m5A ́t)"j ĕq)Qkp*:!" x9nVZMDJ! DZL6 ' peˀ" g]:2 HS̗Zjʬ"R=d**! cxWjH//0#\!B@^)@1RC{l#K:> cC3,6aDXC.P*LBY hL $?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"B`z?>#4!`!@*p|⧇VY[ٟD:ADY%!hMdAJ`F?z졸d0RGLUQ \N#맦PFn*6a'b&vE@iu/sW;{HTPPN"(Ld*l7:@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿ*daX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1X끵Ʋ0K+@"Z;= $Ku!=@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!e27D!;.>NCX,ޡVFo;6MIi6֦yT"Ay 3/@ _4P!C&\/ƍegwiH&7(9LugΗ:u26G` pʽ{ً;| .½{ :F:c{8”9I|3aX{4Bw9{4hgYW2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^{"!&dÐ9s|U=@|E؛E!c Ll<# @|+OgAF##\×vܕ6U3>D>tRWg<=L8gv'Wv7cgF=CB;pp{rM0@ܗ~Dhޒ)Ƞӄ%@c~S|Q(dՉ\Jhh.h> iNJi)DdQa0@= d$=$uO \7x1P=W _ #@GX`Ϟ\>X:3jk_ȲFtՓV;US0ɏ8 k>[=س׻n=v|a@ߨ8'LnfT> Q#,Gӫk-!=q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճb+rhqF<`3_`Ƒqe:SFVS&XYWfAFqs>&a:vX_c}߶c+>"#?o~d,{g6Z)6ٰ[?QOo%t= `8U.8txG/E. _uw=g\ VOߏ)xHƒ(h#R,,@m=|Ll|Q0># jDTq$+K7 h, r,XԵ5#Q(V`-7=Du aGT֑ʇr1+ZV,V>URz$Wik@K|l.P$N*wms]%a$L+4BҬG'ڂ iYRĂ@!;e|3 $O>aYHd>H|,15{]R x^]7PGܡ,YW#qxY:86wC1t3^)yK*MH{4І<歯Fk#>6 f0f^tN5rNP DPZR | @ zЄ& :DCgA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST s9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7a~4dt>q7yaHDYV~钴pϟENb!t\w!OHInjaFTqQ+>gEi36t`Y^SBE0TtNFqčT@ T 9 )BȔdHMDBT7&*A#F!PNXaZj;.H".0P-/c54'eg*A"!CdNF $DCyrFoپ]xGc GaZo~Fe A1B9AG0K_Z Sd-i*~Bf$L Bz 1 0rmvtF|/nw- T. 0Z30[VҤ0O¤!(d*fE O`$* Dp@K+а!:6 Q`&}ixO]ea40=_ X!^'>1,$4S@ *՘4E9$):~^S_ %kG%Zw,zh S=~%[(n>5η2*X"EtȂ|I!޲u T-޳7Ђ=9KiuKv+aO@f%SVG`bk/Ǽ@`xt\@9Ժ"F! P`_ٵ2, *YlǞbx7(C?1DG$DOD1EWdE_1FgFo1G[M&=,(}6s➔$*A}0({( 50C{.(mz ;+d|Чx8/{  q|y6݄3rɁP'6Ӽp2i%($t*I+Lj8,kW(&՞x<0,3Фj9qU Xexs̴M ;+= {sBz6H{"jh8JA[qU{ZahˁQa{0}Beh%IFg%Ԭ}!Lj`.au9@@3ӊSY,h8+; ) 9$zՈc^Bx#LFys9iwb#{{+ =?7 tlFG $$p;nww.<43Zj;" GPQĬzًذ3! "+ 1LK܀1Kkؕ o* A(`(gX!!!{x*,6y' U!ZLw٘ ?!ġ@ $y3P3D&D!: x uȨ@R&* g؜,= Dp,P'3R,Y-ɥ.aYd৐NnB':P;pI"Z!M:O M4UU@Pq1ATI Bmb&Lg7 T8Cr岘41]FId}H$>+z{@JGFmUe:aT2Pn |`=պI767(r7'q'(ðՇb[_p 2􁏒` `H .7ekC@b7݃Y,BYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW" (r5>jH -r/yK:k|МDy%R z9EByҕt7Oϑ; X =e)PËugG{ˍrQfD4Y.'qQI`s#?xQߙvG|I5"Jx- .o e+}E?zy#ֻJ$c0}YdAPC@'.G`5d>lxpVBj\+>Ƚ}<:Wèo85Phnޓ|{,)I 0dIȣ-IHd PJٰ 4 6y hGŰ>E{x{ Gtr*  1p@DlTɕdɖtb}xQ5L.$ VEƐ苗Ȇ; /|;Yh Jpjt˷˸Gk,{ &N~~'  Ԉ>2}x~~0wcdyȼqȭL1$9$N(8E{@P+lq vQLh?<1tH$ί_xN Mė|H(%;}x HY> x (\ РQ j#} F Ia9@xQ1(f 9L o4"5#ERlN?܀ȞɀN :R$Cu`!w'(J$|H5Ehxp';Y"|h"Q% 39}!ׁ|{S%PT-F5yDPKTUUeU;(9ۘ{@y<0 ȯ֢ՆL0: '0ۘX {.M-Y#;LJaf\zvKz8T:FL Ǽ:hM(EpF ևv^N{0!9e~Ȁz ,՚IiPike  & 5{h?@|}X@M(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfE }p`,hYF() ،`lǶȾ8jZx_p0$wevp y\T+ Hb鐊k_Y), M( <11m}h.<9KkǐGzo8LJ6SGutq[,!Hu uȁDZ _ [L+1r9TuI$9|D':UYϐ :^q} HTWu/:$= X t_Viw؄,ʣFw$f @y>IgW|Xy7C \y˾؄pޅ$'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF PӯdN+9Q9˸O\hN/wXÀp'y/_fġڳ!)9YHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - &Bd%qs(ѢF"Mt)ӦNB*u*ժVbͪu+׮{] jOV꩙yO]nϸKwݼj޻ݦ /exqc7eJ>re f|x5xBEYҲέ{7޾.|8ƏwmSzC'1Twc_ˤWI-Pwų~ϞA_j~-NdUe CFA8uVMP=s,]r#X'+آyφ)`>cd0A܎ޏ`lB~ԡ;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Ot`=8`O$Vy;c;v`) S:HCb7Bq^ݓI"BK&%#mj*S7PX$D~T0@#p-jI0IPg̗Qkcf3pCDA!XA'tRF$K>:y3ljެYAt ``Pik[ꩩAd/Kh=\K:g>`D<2&\-GZ-yS={Dsq {#N&} D׵|;ꑵJqz=A ܓCS_ק<P>=ts*>3;cS=Y0 y62j#d!z/iH#P~T`>|TľɥT=2`xlR@z%K6#j&afܑu<)>13 ,x PC$)A\Eݣ0/ԡ;"|$G> fc,#8@*n E {أڡA+nēLdgI(|KYL_` q #\&< ?AL`H q3h,a4(G;яJ*Fb*4 N40AA衎 (c!&sv=f @=E HgVH Q@H蔭XUu@i Y@C *e&$-H``{"T9 M:63(l>8= %z!Dp$$F|=Ct$kQUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# "8ۊ:$3J>>wC {VHSeåp\S{TPxd>4 cA t60v/ob :N cֳ=vS2H1@qp 6r[4 avA@MhY g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIRAkZ6Ȩe# Xy@}eef]Nȗ:ͱ sy#q62ӛC=Rr }J53_T^Az:ސ1p{Ap b Nw]!ʮ}E,|aRgFA>$gm@+e|5A |B>k;A#q|#]}!s`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^p>0u$^ڬ TEhDfD͞B:Xߵ^>H%>@80|\A,>,C \} TUbA` `C, a"x>AԊCda<@SU ]^DHE͆;dAa\%ZAa1gḀ1 T}C3<fBeB@HXظ:<j'!W !D*I$۪Ɉ*J7$6 $cBZh"8+⃐;jx? @;PCD=@*R)û8b2B?rWA?_1^1 @ƃFJ=\cC^DDE^dFZX^dLLdM& 8Db ND&CB=G> p^s!\A @==,"DB=:8e]C^އ|̣x=x` ALS>D6i 9AuI&EMa&Ie\ff6gnn`df+u=8<ăb2f-#BX`nOD-l:BdB5Ðăf.QI~g"mM:BhJ!pb=ĉWɂZ 0Lndlc (u,x:\:IP4LlFZDօ<: =e0H#[iH, dI_%^>]y~:Ŝ\;8`5), tnH/d0:*ę/ }F_z2lx9t9I*,q"DvW՛.") $FcB ##RDD0*MԃQ0bɆ]TUi\J=u\IJ~W $Q܃yV2+CDjშRk!%Dæ4$ >A0tNT>ŪC8@DXRaY}=>jĽTR'BH$yROkCC=liBvY`J=ce^A ``)֖_ C#zn ibHBܔ8ܭX;<, 0Hح4tE:DC-톕,ےVfd']=|G@,=A$@#H]4: g͆-ȁ,ڎb@*ǩt-m-D@<A@ n`^;nҮ`u&f$1,>^JEA8@I>î @>R2D,>8EHK_dHI0^>m,` ?h@C@i"6 (/4@YX)kʖA/:>)ExeW#If KcJ\^̊KjE 1:=&< ZBd[lݩwz>-I @1b:KVCC. 1V(*D$S&eA`,æABOrUL:ۣl@++F5'F4s)%lC" D&T1U3pBx:pJqb@ 394=S0?U8AZz>RüW,AԈ ~Kn|R1 BPu8̳lADؕ#) ܃Ã@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ3=X@v}$$YTI&]U:lB|@}>ThxOA$!^C=TA@ݏDXcJ:ß>1BAbtA)-BmDLKU#=0>)rUÁ׾i;}-,@t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹӡ7} G@{O_|!&סހ(ܫ'@A& ao!*3 "ҳ10Իo_)&gAAL) Q lB$;{& wCbF['dPu:+>>xqǑ'WysϡCp+\ix{@?/ \R={\с}깧1}&H}*| *AE$Bg huJEOF2Yi[qU]y#QGxΡzCqrG'Pxɖ rCg~:Y~' {wCTzq9}LX3˜<p Y*8Q%j30zO>|i}WYnaYf"+!FI JT!1j' `^:z櫱{$Y'9j1Ja xB'D1SJ @@lN\o!_Mª1 J n1!%@3VPiơ*q7+i5F ´dǑGч0 Ա'/m=4"G^! 6;bgG,_}ZҞ}PG  0dRr @i@=P`R=jNPJh`s?. G=*@&*@p mbHHw$Ȉzub۲&I,_A` 1 J=/!:!! B9Αu$"`=E7``<`]GDD)9.@"3 dD"呕*H}*p!,Tt GD c c  hBB7CƷ ~r*ZA@+OyΓ=Oxg% Tj4AP. up>ĀgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:$o5O[9zYgVCx_X\Q H8"8N'Gw&Hba5e/jtM#C4M=."7>d%D&, DHj\Gъ_B0E tzpzYQBҵL`؀8H6&GVWWp:T:  H•`zqy0c}>TtiZHzUGbaw5"` \h c!"0=aYG2Q4ApRd!9P'CL  s]4j3&_%biE7>Wr>NB ԃg(OX, A- hAQɌOLxc€X0a{h: etdɃ (AySMt@<w;ʆD"Qah!!Q0R = 7}@u-SV3{@ @O} 6apBQM t2@$vMVtr"iF 2 TBJ k݋@B(cA}A($-@+ U|# @C,x$,61 LJ/ZѰ `C?bP*tp"H߷guoDY.3zlK@8|`CN9+6P|L`\ ǃ1UStUJC ^Βݐ@3. =ЩN2 C`@%RtϞW):c6X8Cdٖ^#ڧ}tl"[&T>@Hs;gR c$<EC Pc=K>h8(\I& !2aB !8d"J(pY,!`"N** VAp즱bMNdD*gM6Kb!Y:AxB#tAi g0#>@xɰ "@hPXa & /߀0 H!Xa{ > !]!P!ڧ_#*7R I" |" 6(dA++T( A r@&L &{A @P~dޤ1"bk gFL *@jaj6 G#!}Rh)pamN/¹u||]*dY: B#!`GaZ1#5r#[a3uB('bbC'5LZA!@(t0r"&@f3'xBƯMejGH BRd8 -և F|g4O#r-rOR,@g1"CPaøl Cf !((J2ha0>PƀD)'P8(H Y(Ơ-F%( #8>2 R!H@6+\s88$`KH2T0" n6` # ಩>B$&C`&v|2!'B4"2 }'U46/QiX8 $(" 7)^|fZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtISTH?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSab#|3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,@d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-(Nd>8PE9O* uEkZEAqL぀a.QJ7%q;" ,[[e\PMl",1qIVu.>%_|{T9*scAE8ؘa7HÀv#R.r[!xh0!2A PeIn֦oYnb2!&^ZkFgԁYy ڠ>?!]C?+s!t!r)6n0⁁WJj ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(pԡx8ɕ}Z+ oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIw_AY SG!zݫg@+འqv-s^x` -z *G :ɪgAΝ:x `+{I󅎠) SO+װc˞M۸sͻg/{ Bn|u~tx Sz%W_+̝aOBtu/ń}ysT}A -^AB|0? ($h(,&Nt,vcOsѣv B@P<@ CC/Td5ިAua .4>gܗOi7Xg A2@aO=5d> TOi-Jb~gSO#'褔Vj饘f馜viHسEր;ܣ:xs7>LSOAڈ;D.X^rc*APD샏>wYʑW==O=x ×k7\ 鿗IXjAس@B!,Wlg!FI>@ܨ:[:`\8;TN< D>3{6_QO_B`@W8{#>N(~>_ue=8W0DM= ؜-_Sތ7G.Wn?$:!g砇.褗n{;W.n#8/o'7G/Wogw/o觯/?S>O; {#KL=c LE| hGH @d0A_$Q<6EQ2H17@gчx%QD܁w!9 *PDz` *U\>ܱ )GIU-{D baza%D7P{[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+f%f2Ur!r#Rʇ-5Ib R]z!8isZ2aY=:쑖͜ 9@{lpt>Cc%%䅃Lg@M b(9ẋ>ς0h +⡎Ft\q ҃ tpGJTuB@5Cx%@R:QĢpV! 0G㮂 5 gv)^ zHuwS0KCôbƮ'ODH 83x+* ⰵ!P]DzYX1:>PC#[@NF${ mpQ %E+*k$" :djm`2(|QĐws@ Nܣ Ňd9DAJYN,0/|t脨F 8 @YD #xLs:O3/a!%K oPK$bY\q0 k4/{|XT*PLB> duh,G'Ѕ.{8rAR Ǜ b-*-c,ad[]20 3G$''Q24G|HԹq  fABŰg T`T ˆ3P1) :tblhHT/d+{ańϯQ j4PG< AjHs' YHArRXq@!t_iW&maB$A(B ` d JP 0?bݩ0̿ɕB 7D} ̍ ZekN=6qY ч= ZȍzOpa-%f`@CY,\Y(Yz , gȂA+:M :d},cJ7y*M}7oHΑ9!cA`8`1қg>Y^x+EKUR(;qAHt&U=S{aE/|6:r e!Z:BF1 pG<zfʋ4)P(? 2< z`b}  hjZ[ai v `aDz7X&Yd, A%pGvq % Y w?"# $Pg\E?ݔ@AV212W*eQ bK"2"X">(rS}g2"SN`xzXOJ)tb1G z i+@tb2AI ON(LNpv NhAX(7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7сDS@b j+R+AvDEj``-b- H\!Et*>`E)*%υ= `& `T"l.7" BBuPTwLe8**Y@+e% 9}2%p] gyh0/r/b,gpb`dÃ06c5h0Y 1؎>|cm $*%`'2=g^E@H22v5D@8j:v# t#+.E @ 9F`29PDΡ=48& 3!Ls2F -1s5W0#MWXEYސV 6m6AeDivӇ_X#GP8gP 9ZZy!P ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;I@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O=؊TP}Wva\^u hxz% W#Wqx耫`X%3K0^UY^Daa0|HSqV'aF'P!V[گuW0 fiLSGj֌A@Up%fVjKsjh yv(Ť AeTe]qvMGd0qE6"ȫN*{%wr0SRvE;T+F` {lF8Hzf U{^y^zsk{x?:| K'q[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.N Ԙ!4^c?b!'kb(,)v۽蛾BIO /~([!/b ca 0aPƫ)1//3'ZQ0~j cP2ƒ"2 . +\}Ԡ0yp,iПfP q0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"pqVt%m  ׮" p-*sʧa*̢vl8yM'H' Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3hT=jYonÞ*${g{G~ `Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQa^*+MWac9]}K-o; h8 /@ .dC%NXE5nG!E$YI)UdK1eΤYM00Ľ{jWo{!~z&w]{{` (=| ^EUa{0$ 簃=(e$Hhޅ!"sP P_]巹הa d5Dw2'Po )t܋Bz SsѥO^uٵow{0zٻa!E }TЉԉw(G~g `b!|P3J}*Po 0}J!=JǸz̩'{6%!RHaSH{H@ K!D3ZHz"k!oN*G>3dqg,"!FXа{ BtQH#tRJ+RL3tMF}jQ8TUӁ*YŬʗ.ʝzpgx(zг'*@\Y(   '8Xu0! MY{f1"$Rg6 1uܫ}Fʁ.̳R`1q6~LzASO"[؛7!f9 R}ѧzr`z12fsyg{g#0`h<J{b~`jzkkƔ g aKcҶn{oo* W.kgq#|r+r%p܉‘3r$7A^E|@)t@wd)MyJT/!c+40!Z< `3vRy@?_Z ,`Ax(1;&Cp0A*CUѝg=퉻ő*(ʰ{pk %; d7V`0`œ8@&0 \,g2Rx[QH1|@l C3(a<ῥc62ĀG XFVȸ4n"U*:(8U E@,A(!:eᖅ UdUxCXXy֑ӡ:\FWӕ*[:6YP{ kVd!9-ekيfԁXt t*B&VbE9>ƒ m\B.4`GX9'#) $b[~>ApI= "Ta@5$yሜG iG3Qzdm&\(Or|匜e$,FZ-6 ` 'Ubare2v=U @rKzLЋft\ ,E4wfh9J݂E= lâ Gd2 UB H) Aj4`؇}ld'%#FSpd/Bf}#+CdֳRRpESCX\(Iq~/#H"Db&{p` 7@9 x-EHSKX ]T&ހ-0+`XjC)nWCcm(U7_TbTf-X+fWd'=*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. ](n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>,61 }Cz$3EF;v*&[ D`Aͻ9G=xE:0"YW#W3 ˈ.A#Y ˇؠ5r? "0 @ #Q!؉kq5 J6K: UA ;7+/ pUzkM cX (YйYAHx%w?Iꥬ&/ (|Peig xI9h'aruC:A BJDOɀz θ1u X؉a9q9 DA*h*}8XH22;HmO2'RqXzh1q`Wu`X.Y`3%1pͭOCB0d(E_UQ|CY5eG@Jl3PPtcX fhZ+Ovc$h7@7T=T^<2d{h`F$MY`)d0/L0M~jn;XOƬd P2rɠHPLQXb(ykaʍ Tτ(BE0{^lf8PSГi\BAE&Þkulœ>ó-1`,@xC담~@YJTfPE^n9(ƱSt3d }X|#}xup|Xv .)㫃3o/}`ɇPP5k^^Sle|8fn[ϊm [{MT#Ahi 5le3of=q{#oˇdH)7[ .(rhq|#B!Y"xV|@D-wŅ_Çk>iE ĞӼz`"od[56ctOA >઀;zgGf4 F p?C X2Ҿ{H +ۿJU~4Ddz(e3?SgӪz\muxώ(uOͅхww+h „ 2̗> 'Rh"ƌ7jHcxB$t0=w݋r@=Ki={X=u!ºj56NV=|t8n{$r,k,ڴjײm-ܸrҭk.޼z/不ϝBzxppœ '"uD<A!c͝?L|%4!Ⱥm| ثWz((v=} `LqOā[ L_؞/S?[@#b/c3AA}G:|t> 泏=#># :%> )"-"18#5x#9GB&=#ADEA I)dANBYP`'m!>@AOp UvY>0@<(>mcp Р&tE5GhCB Y*Wmc %, A3Yn4W`dt@qiϫ4:"$=f,J;-Z{-jm9;C; ď:8$TLRwX.[>K ]&=P\O A):P LJ0pԳTq'r/9%qIO{!`OLI*L0̥9#Bӌ@!4 },)j}3@z7 .S6LDA6 Y#@Bc( U`'LpzrGEpы`cSfq $D= uCO 1w5^SJ l?ka`nJ:zcCJ # 2:~1$6yN!H} #Z,5ɂ%/-Eb\c,H0eɂh@3rPB|@TM c2)Bz%KmSS 1!=SSUgO @՛⊐&qBԊ 3CP > 0;&&oTE,%ppE)ʉRDI}04x3QUk[E0>d rqb\i>@C-,iD!0+|h1D#8Xȟ ̑$tǘJ·Q$ S| MO" ja3EjPt>1,!9PJ`DN/ahON=L宪ah@ns0 ;Hi0>8/p1 /!ʂe\WkQ)sH=N$7-H%#x"v%{xMbІI|嵋jG=ԡ͊^f7M^%,4m <X=j+k.=J`oHd`7j Pw>Li&WhIqZ x;jNpĘ:A\`@mn>/H%b==F^ADdE A:C|Zu.`~A僀\ !Πa1UD=Ab@=T<?,"?hVwía%V: H"B5ğEx@=QA >;\,TlB4=0kþ>OLYC9].#363>#4F#X1$%D$ATDCăU zLh@<@zA胹mXC̮ԝ|<Wd,ȁL ^] $8 m,;tũZDiZ L@ԣ`D D]ʆB0@MO<=X.^ƫM]kՃ,pL`‰dB8]lDDBNL H OBAI*CZv(U'*Wxɑih>XG!D>AYeP5fWzR{"@l6Puf GWB)B@A\A0Lf֩)橞5 ʬ)EXA@G=xi>̕=(˹>ïRX@B(*¥:iL`/مs,)\Al:CmOhBDѮ ELl;,A$ChEm}Ga@1KN;Tܱ&k<ԖtD:D9cG^^=L#]P.j!<*С^}a8@@9*k'0kz=NH!@>bD*i°C@lNLlR mD|lĊ,WC &<>} IN,ҰACA0ӡE==ElrjJYUlB+~&ld$4sCmY @+8]@)@Bס" عÕJA&..6 %hN脐`<Vz8,d@:[BL@AnI&OaEO0^M MB\PPan.FCvεc,DĂN80\\k4Bm[[UAHa ģ.E!?lEXH~&M1kpL1o<;0 KdFIJ@pP䚩ޜ5ȁ8@X>D0S\IJ<R>8 DW82p|zcHCmO@ȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐉@\.tB&'2((*&;tr g7QD)B#h@>>X@20031*MنN 1fQIc2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH;1?/`G@lK[Kf"5\p1#L7S?5=i.[ph 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃ/R:(oZl)m,*xG,<>j+P1m^ EP4Y^> h8Ŭ=#t>$/l ̸V%he>w'V ENDXqV KK pNOxQw>)/TPE>XVhWh7۩a,Fc<ZȜ`!m:hiĆgtw\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAAe8l"05Z Pr mX93F0 GZ*(8ACL{.C*tODdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZU'zLݧW

i/S C>!˃ @$jAoTCAzZ4K'^dYA=J<1ԃ\ 1#˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPD5#\hC';`p WO|p@A#N\=F՝L|ZVD^~CX@̈>B~<|퓎qx@ݝ$@,4M@H)8 D|zܻ/܅(ވ{܉(]L}$F# E:`@|3X̋;y ]Owqob@\DΝ<p(Q< қkQp` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}&=  pOO~%F+R W E.pA6me o; Sם+QCC|u+<{ g'<| .*Vf9c:BaJx.ZG{v wŠٯI>Cu⊟BqT̛{ RǞz6pw,| H|lA %(('F4Y$3B@3qA@sJd2'iKwA}jhσЋ:/'"0Ĕ3 }N),;" &BQ9 0+ʋt|J98 v.NJ~r(Mr=t]v}xW {vRʀ0Mz:'rWY`'hΞZ4(?ȡ2!̠ W]5|ħ'Jzק2Fʞxh  " ox{xuڞh /Y(Ppv:Cj8`CVèf'G OnjAOɞ6+, [xH@ iǭ5u|92{9믌&0|:0% H hD>Fu8A{}Em hHSL:; _zԩ@q\1yq|~]c(QߪmA+S> :g0UA ^9A~!!ah_;AGFDHJ \Gq&xq,{4mBxp DLghk1LiZS9N=( щ*V3E  y=J ܣQ䘏b61N C2YQ)E񈀇qzF8 H#>QA q}q>XF#u,~y#'aeTeq́x`Y>b\t @`E<`)I59C u҅Sz[9K,΂rH;/؃p7-dH-ZP<aA EG`%QD!F5<(AeQM68_~WET,I EdXhE(o`6@>bF*"ff v#2@0:##o;"#H {LO@ͬb !B*BR" A TN@&#f/b³)*xbTZ)^cj+ bX' MJƮS:SRpHR#J"$!Rma.ꡙ( $X;@CZ/&H' pEPk&R,@ D "AìV *F@uQǑ5)po,xv dT1jԡ+6@+mjEȫ(Pʬ!ì0 =C~7&nB&B# a"JB" ''Aȃ0RHҞzbbbb" 0>I* kaIZe'+L-$r+42"݌'()/" B<1Y1 $G[ٌ/d Ԣn)mB$"Kª$!ecZaR- \%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ݡ(s??@;L),Ez ĸ6qdT2@"b@)QF FA3C#B2({DE/0" *Rhb3K3%BZebO e؊4A`BsTjރHcG"`? ;F# i6;AzAHn>q.`^.N'lz`G @K$Nc:'!D,!s//f$!dS/D"`*@Cց|\;$ $ G >=d ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*D@Z@@5c5U#VdGdKdOe`^0ee%%(@ R'pA?qġQLciViiif6t' "Nuڲ$ B7.dllmVm׶vܥ$F kV@^a2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvT(J  B$ `k3 `k"`#F)xh̡z6@Ge$J@M%H%jg1b30|V0n؇%AzB:k8ǚA9S*wB/H3c k4@Q04&/ N%08γرF@ "◒+ْ3.tNFp$EZ-"A0h٠zx$"6}AiG A""[E* ԘMR$]-1'+On1pa"MR3]To\fm*513 #喩>1jJK–qI`/?ٝpb +΂EL-G6:q@:0Yٕ)WYA5C! v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?D # ``'/s,ߓ)0M*Cݡѡ:t*!$vwjYv |&F| r@"y@r}'v}C"nBHbns@TSL%0 "Ё b1`A` \JaB?~Bܰ|փ0BQ^Zc~s$0.aBD]yF0thrK/[ ~>*y}ԁ?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JzQ TYFCPvAF  MsPn2xeQa:Y<0;}0 ^=x + 1|鋇0={+p0NR.B #`7tSgO@=wE8HU 4!%3_*rr7n\Y_T)ӕNWjV 5XԞuB|Q4HEuݽL*X)d،6t=nQ>!|v2O^DžO4X E.pm=!{jmP„5jehmp م ` A#e_na~b"Hb&b*b.c2Hc6XYnp\4AE ѧAN qF=)$BCA=K6 ;\SjSOS5cE>Oу[BdHpmi}#W1sA3@B^@>EA>թXcBs8h s7 mMɪd}}Nꆓ.vEPYt8@X$#Gdi_jj:"D  E"3KВj<$:[)#aM`>E x &0S en> `OȮšOt!>t=(+TMfEמb29M锗F kQ1Cd\ H?U^IAv^yd&w=8{?ϛh$OŨvC ?yONy_yoy4scV2OPC\{)K&< d<D7A0/h;nO 5W;%ɔ!:>3BDh~}ЦkUtHkΏYa3@<|4Rf] 2>)%ߞ-uQHWdG; P|8 z\ A*}̯ˇT(d$n%{:ʹ@, B!Z݈0Qn {8HIO@D ,p3_a6DJ@NB3}0!PWB@)-5 Ȓ8>8cq&80 V''v]mzWXV(cs4!^uM/=Hh ؃v@=` 7 ps,9ωt~Oq!P\бdh!&M*3%R飞>${sz{#!Y=QȖs򨬄T!jUM|즳!u2#t!;{T,tM]7T#"$f Πd O8P1mO-`rPDŽL HHPE7dԂ )/_:'hh U$?v@H}d ,#nB(ĻGB5VFPs}w&=0ѡ2! `IJ/`A~oStw,S|[9ާ`$$p@S̈́ aB%&no9#Ug`} ?(PJ(<M&A1 aB2[xф ^KTCyMpa_) s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}%1&Y5# Nmd!@P (BP*n)vnnq}gPrVޓ@#_I}xE "gjp#sZ" aqnIPt IOV<9=0tbY? IR@IF14&#p<4X))@V`71X# ED)OIm7 !901<~pdF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig% qwj,>3(5Pf `%&֑mo q*s=fS@[|Z@.v0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySuc6 ^x2.@jq qz OR% goч^h7(@ @ : )`ͪ'$'PAH}͕ ␠`gB0xRي!7W`zC(($#:x p@%!I P S) paUsך S#D&@ ҩwS鲧ezgRb芭.P؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8"`Hś"!644Q̛!MCŽlڑJ4k狾髾_vɾ5ɒ,{7B p0 38^|V2Q@Jeʃ7H@"iOY j 2ܶȻ! x,N0 P" 12ġ'=_C'dx& hBgvG!= kyT!59@JmrBeۚ cc=Mm׍G`pce4IT%]$C[@{o5p)`f1K#Z] Ey,Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeY g`*RB*âyyae 0c[ 898^30mk773/O $_7R+{n0) C -q[bBw;#ZAX!Bv2r 󸒜F0|s5怙5ow{F8;Y"з5_'}0h ^ZY1>s5 2e[ F=3}=;^ȁ@5GVz#vz< i%oB/6 B{}Ϟzm$C6:d!"hD#DOD1EWdE_1FgFo1GwG2H!$Y,Y$B0[`'$h)${jр  "@؄-(A'(|JD𱧒򀢈HM*Q `|0郄l 7`suq՞xkYY( YJ=u;U t @0RgKC 3de z3F2 ]R +aPdDRG-7La9#>>`' (S@'j7188bFeC A{,c@Mg*@u*PxU1цjU M\D :]؁ІȚJx!6b9_j1 u!HoGeH{w#0 <{p-W:Rv24._a'XZ T@M쑗4Y@=@A@uK<4ɋ2'Y0P ( 1lxl@2Ȃ*a A{|k"Q,X !&@,B=G&W a~=%O\/ R#wOt8`:d5ѝ  *P R>&0 \@.xW0&/Pq_O=gHpcl/? u88*d X_‡؃<@PZIf#8k$@h2+e"`ٜW`e,+p2A=zJvֳmhE;ZҖִvF*#N`p bc $6qκFVo@0Q YWP).x I(TxMɛ wxFkTdt4{9P,h-P p ~;~Xnk`- c@x$sHFϤ  CIx(`0o"k"FxP腙 {ȥ|DJI؀>:X!4 zXYH(ƍ_@>9 +ۣX1pOWl}`}֒W}A o "s9Mb@:`{P-oXtTpA3({xE|pӇ,'Έ< ƀF Ȁk} ۓ \3` }x iԼ'T>8 `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇$&upNN{6IZz tBS)6yK=X\ x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z 1q7!X{&bQHu8tˇx&6mq_j 0YävQmmdϳЇ hH t`z#La)͞[b 4yqiᣇs^5N!P@Z|8<t@dzH(0ԄmmmRpIkip>ߖpySnDt)7SGɇ1HYam66B=#G$/yۺwTb h uX|7+,r|9n(Zn$q ́d2Qq-x`Btx2J x F#Z]XdYMKa: xx $X2Ϝ2 wH*Q ,Jɀt@N(hljt0|) )p%tI K/0t5xn3T@TvfvivkZ Pw@oJ}h{{0r}׀,6~ o/GL'p{"`Ё@z:^<|݃70=w? .:| tw/$eR{A̧̞$NҝL\WOϏD"U4B>ME'#ܳ {u=R,,rHN !ɚE uҁJdWC6Pa@t^23 o>E_4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM06p 0 e9C } w/ňgo {œW@y􍠝jO=Ys!ys?O>cY> DOyPL=vOSsu` Q@`=s=Ocj%S@#@4=t}IpCUPOZ+`HbԳ7^>Nw= wT=gMG@"n.SyHzn}Sy, 0j t=yQ<,OCAwY>(c|ŨCèr7㜳;ܳ?C]EsUbVrHPC@O%K&< @^<l5rFXۣ5^G};s ̝k67h>0va=}hDUݓESn=:o[=T>*%f@<3 t@= (-exOc@L/2ig ߳H Hoe=޽ɖVI|[svך+-+0AN1 $)@^>|wܽ.ҁ.CL'ZZH%CRB7z# wm;rCw0mA;A^Ey8Ixp`9!j@\[alZT"}``j4!0>,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ%U 'M=@Pz8zW.J:* p`0@"C"< CO,v  LGeѣO<P>D,7 >"‘FL=<9=ك@2Ȕ,đ/Y` 80HjUPS9i@tL8KG`Gєx5.Fa2)3(V$>DY 0@x K'ZDIʤM%Xy*OB)\Z MD=TV2q%Ok\Gr2xXd!@WX㬨@䠏ɢA=yς6-iKkӢ8<:hQ,#сH$e<0QB_79FX>Ґ*5&5(>"{c&YI`9r:Xzóe8fM1HjRZ>  O|bH<;_[;xP=b ɢGxج{RD'E==,aGo :,fO02HwCă.&뾍05@y:lI\gޏp@om,MQ kf@գ9֓Bd; PkoCЫAܱ C"pa]QM$yL42tBCǓSkS:ժ^5[I 6V`c*]05o z@8G_c'NQޏXkJaoISimʁ(r"/8xK@u$y5bL?# Hܓ(m9PƜX`8;|(I+?10VGaj!{Q,A!ʉ 6񸚖O+ _NMJzgC$6:* &4@Dlܑ!$>%7HreGhQ >ï@ࡎkSv5reBp L,HS*Dk[\X բ=Koӣ>=Kd4+ZIbQF# 6XTk< @: .Q݌wGFB2~<У~Csl 10.0{Ljj<:tNH@ ODYWNCP@C$JH$4(!RO`R 'H`\HP4eC8BH,` V(@ޜƏC } ?WL=P,,=NUYe@NM`\>G$@i: (a@J`ń-I9 Db @C GCL]>h\Jb+>!Hxt@:SOtүD'JBԩ^5Z5bc6j6V .:,2a]:GD-tXrX;D,=>EpC(Ns0  D'EC-v̈́:r8] >L^ "QäԕC>XU@Y N@U4@C4O$>AyЎ@D!NNN GDLNCaC_CWxI@4U%E4Z愦O@HFC .]]IGhZ&N=_@́&&aaCb.wC@'CT ; RaxCE,Ft=[gC:EZu;8=AWH,QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`>D>t=X@Wf m@8CIO x$v-Nŋ>ԃD,qhi kԼa ̂A]@=C B$HOdB`p@tO<ߔQ DL\(DD(fH}F,>d`È^9>@cxSDLIF&A@tG@@fT@ L`\Mh/@lB HԔk]N $KYҫ~`F]e8d8LgaHH|Ef(C$jjDj Ujl\܃' Lfe]ZyG@Ȃ>T@/>ȅC'( &NAT9$8Yt,ST+$c Tik0@h"*J`j ˓Rbt^>|GAX@$OūʐJH@u7@E[A`O-mXn?02n:Bn䊖C ^:.G^Έ a.Hh(C|kLGY莢Knnj=lB &ª8nE*(@#.!͍j, ioboo$Fd(F؃9,.C$p po52oqpt.+\+FKcpksp{pp p p p p ppq q=@.VhYnp`+?hUGk0qmQ_tkψ@_1qo\qq r!ϯd4e&W ,R D+gc@ %OC9Yp@8A$o!@YoxmnKY*9L)HP^lk@,8T@ P>G@}(^E:Nrl=xo*|nn>mxe $l Eԟ,b)B3tC;.CqY$3o.>@T:FJ<H`ELa/4aapVLZ1=(h2TcF':e=B0HT_CY4@Q'&,1$@;V@B lUtQ5[LPL[ @'@h@dtNﴳDD\lh<'tC|[< $E5AG ,> x Qu\?jvkCkBu@&9:lqELGD8vL8rpPptBS=;4,LnPZ h$aV$>$\PhŴun4F dt6Nݖ@@ @,|=l_7NqN܆C]8NF,T>Xg{@YtkC}/mF<@`@CI<PO(r\gq QDn7,@CT7 F/FHg+@H9$NW !tw{ Ӄ,toVX4ހ]-8HBG$ ÚÖ2Cq6`<%£$H2ECJ ȋ(e@ I>ɰþ VRƑDWFUEY)$E_[\X>Hl^ 5/s:p2o,C M]C`_MiW^kyH|Y@)-/{`B0+@b@"wO@(sg/?tSgO@="4޽:"Q̇: '2D T9˔k^٫>wB={h7_B}Df*qa$MDNT@A b=>SBY\I Ce[Zƞ Quwoufpw^Ǯn:\6FjcÇ'VDw1Frz#vzY%)'*J'lP8 )Л>LI;ߜ gki%d#B# ׿ P ,LPl!P ) 1P );`0 b آ{!@@a{RD&HqE Jj3rYQFQ2Dd͞J2L%JR9T?zX{)}h =(̧H\|@XT 왅Gΐ|0`MІ8`ˎ!F$G |hlC@!<F- QIQ +MQSX)Vk { !&|:06G h?>_X= A{ԅW^E pS(4 Gzԩ@ V/Sʩ8? : ha.{OMQ*F3eP9l駡Zꩩ꫱Z뭹 gMrY#`ԈI9@ `A{{PRJI-`6Ar'H3,Aa!7$X@tU|x`j W}_XOcKIڐhI@ % ogP=rF`b',obY =1Ler=P3tAGI CV)S0g%V$ݩ3Lg+]!.2 c>GFuUdOAЖv_@XZQI%bҐv4GtrUQΜ,psiFEI 9惧*@=uȢ>aĨ(m&"VbCds[桏 ``tL=xb V1CuZ\QUmúCG G<*+B mvg9ϙuq5qM[{$6/--z>H(;(jt!)]'mG1go?E)kg=ρt7 :`c(JӉ . p=6P|  ^|$!d)RB`.z 0X4јJ´%7*yI-Іy}=\0@o ѓƿ:(J"B) ONw8H/Vša\+Cf:0A㏢h%g Bq<@X4AGh8 !@ޣ$ ; +LB8&`h?#n_c60aL J~%!A'F@nR7N@ A+@olq0upydpk `ۀnXzK"bA`! LPkP R "F`!J (gG*qK9CTŸB1rlT(b?)Υ*h:Cb ! "@L gAi%2`t2Z5C >+`F8 AbC|f[Rq2aa͈3ı$*$Ƀ6bZaƑ6 !72A! űYI1JJ`?)"j{n.Mʢ+t@ɞر! |$ q0DΠ 9#1b!D>!b2@b9t?JA+)0<,$PbN%Hm4=,ٴMM4Ni<$B(g*kH@/%D@Z`NP{BtQQQ!5R%5B$ hI&5@,7Z.kh ?DU+ME!zN65VeuViVmVwNSquc5ICI.t_S;uWYY5ZuZFWOJү$F Y{S^a8u]ٵ]]5^u^^^5_u___6`v` ` `6avaaa!6b%vb)b-b(,uK?5>vA|BYO6A( a55e8`Bv6cq6gu*Aw p%W <́'дa*O@ qM<@iQ}7PX"AG6PB@ b16ExFք60"$a*`|c(m9l7S?R"V8%lpwAB76`rbaRu2ă(<#I: {8#A/`c!oj$C:b+: ܡ?ҸB djsxw9'XK⸈XC!GBrZ"` ?0qOXBi`k$|fzx)0.`{16 >v0}v@$ Y.$Ȫt%Z"ui8|\ؓ٢=~ɹC`U `x&BtALaΠU|C.؟_*&r:$bh*`H:XaR$.rF I7 x~:a(BTC>0hAA&"=V.EH?fkV6\yy:x_= ::zbڟ/H !Ȟ9%ڠLKB:" `@$<6">F'V d< '< `٪ AB*[`eJ19U{dTU n7ٲ8w5r)?t . KW6@ୡ&!HN:6s|{6/~܁|Y_'<*_$>wWK0|  ,`+@2]גE&d Px@bp"oM$E5p#  ,C0+;ٓ36 ׵+F:.l2B2a,3㲨%b+B!K,:>:3}ACKh##6#>Src`]#)bbD2Kfg^S ?­ "pϞ|to;{!ȱlj ID= H䃢DtCJQǛݝױɔ+$JdH3߈z@޽:=e:^ ij0A9.p 6XfCPD>!f1& D7}}|c 4TYS^ͺװc˞M۸sͻ N(eżz8@ EtW/Ļ3Nз`}Rαz 38髜vǟzZ-4%pc} =H ^}Ma^Q1sB D4CA>PA=&F=xXwyRPDSe-OF!4Utڏx: etqp4 NTBg#G`@QMT}ݽ3TxD\JOAOIm׬~"dv=QwO=&yϟuXxgx块z L ijԣE%x

*M0xOS:`:`*>"'@-DmH'L7tF9e$˓COE4, N/IN<)5^;t НAk1WA>T%tOt;2z-N"43TMd1[0ua"Bd \>sCBX>k}j7M@=[MdOdԋ Bd1OOa+=¤z?Qo֛_FCE}O5Zb($WAHRp.= *w ^[Gd|$y#I %;d!?n _ [掼co{[R@APY[ۘ a&Dl1=־b]  н {k2uDMR''G?5%JF8푐$'IJZ̤&7I/1=V`{p8Ç&kssT~ġ,,al+rU_i@@@'PLm C/q8yAL(D=q2o`D#OԕdkPYd5LǂIɈL,`WI:a1 *{3V)T=6+srqTH 4zQyiL9AgZE>T~V-Uy$ 7?q (KNbJTz0XGהr16S#x[&V䕱,L[׹ 0$>Z w`AȡViˇ1 r"x (9IҚMjWBjj[G0/G$p*(@}:|â,X~:x@ (l"Ԡ#F )9vIL@w(p opRԨ!CHywZњD\< &sȦ,J~dNȺw5DqrGLﵙX8 Y>l~"Dt< >u'Bz4gIZ.k$ECȈ*#x"ǗWJws-G@q* zotCz&J=O &k0 8>GBMkYmC]KRԨNW,m>JpS#zd21%Xlec{΀`'Yp;]x~PGg ekق,gH( `߂i4M !#_)e$%kࡎ&:T{' ]ܝ]ɻVלH_~%#i:&+ǘl>{Xzӥs]OdKz#OבsgX>`s(0)ԭOin;iy)x:w&5L@p}wo7{`K9ֱ?Éжzh3$&9W"K~HT’c8.G|\ G T8pGRW4Ѓ a䏺;*{G<@Y34-9;0O0<O*fqȲgpC!0uP-M7M! Yq"QMP}&UB#7NP*6<$.QS0/@!uAe\Xqs90S0Ak#z!P9!`B8>M|7kwB[8/R|t`lGx^{qIp ħk+9RLއ:г{H<:}B"8tP9+a҄8uʸ،j  2KqEr8@X"Q`CIe1p)PD`, Wbm\, x>=|0Y0nt& O#tS" oPqD^8%;3@0w P"$`eOYc38 @7 X 1;ۂ80ywO@/ @bS1x۲0Bi%}aIPo Q09@S41=0xXF`)0PI`A3* #BTQ9 ?r`y-0i `#0Er6"ϩ t.bWxM9/+qVָ8a׍iXrgƒ\]눟A3HU?c'eVePJi3,C5"}95PA%1rV`k3x+$@A XQ% gPpsq $P  %uDMB4r X>DB2! Pp 0=0KQ!x81b%$}0эQPMrPu7AI3p~p w0}0 Zps" `dM:<`G O}3, Mj`f1>Zp$#7 TM"[Y831KhW7->;H=0QKPII{#e![ ?ҦH)" QKqᔶB%n $j@8ڷ~kZ 4KzA#` r. B^- 2z{ۺ+$=ȁdB&AC p01DtcD*3CȋƋ7zC[{؛ۥ۽V`|@܋;K[qȑ{¹ <\| "<$\&|(*,.02<4\6|ôA*w÷8<B\Pq־ܻ@<78ԵG|XZEU8PXjI,""pIk4r 0 !-rUѳ`[<Ȅ\ȆjPPp΃sr%K!P%7UQ|$kI@hPI@>DL$k.\9@@~{2s?cZ,Q ƜU}t :|Ra`:zlN)!o阑|a~"zzx.z}I=^![3atPe#^6w ^Qrʽ<c$ A(u# -`l/uq 2&\ÙԢ{>gp1 հ1ӧR!|QP<`}T +;H8 8 0;TXRo;6Ђ=؄]Bd %?/聡8AuDQ# z:([FXٗQV!0g@& m1`80֔1I=3Ol|} 4!ܭGo!$cMa݌p! 9Mmti |^a,l߰7EU-+UH@?a7$ YAgHg N^Pۇ;Lًd$04xHM94~k;Ats"< =C"$*@KR6R nSaC70nKDG8 7Mr6"QXaS* {~^4:z2pH"~[2VdX謡$BS @&8I ٕP= ϬPqJi0P'm#0#SIbǧ2>%>ꥮ=9Y&BI>'.B>-dnMA/K0N <N!x!|qisx@vD`&1LN}c8m@ eqLZU=g\yᘎGR~1g2'{octh>_T8"!JG7%He@PC!MQ P0P ud!0FQ"ͮ-5e ,=zbW"tb:A?zϟ18P A A#MPtWHf.ç|:Á鋰/={kU=u6G`A|e`r`{,]6 1„8؋Л>٣R944D] 6,!i8 ޽aŎ%[Yiծe[qΥ[]y_&\􀊅A4, 3Cwu$D{з`}RpBe33SY3gϠE;^*:=~Wi .+X\ e!v7({}pF>,|ҏ'Oovtǽ)Az̲DZే%Q/g )~ KoYh  &ŖqG!}di7p]QFmı%Q`p!Yx`I :E)ʧyH{f`hu*PF:T+{Lwi) {SJx'}zh{Cѱ&bPIObuVZkV\suW^{W`vذ艧ч, "3Ї9Ci3- {:`V2ljͶ,wt'{ț{*c|f 9}iwGwpgN@g% )cÆf%LphxxG{,@:n*gAr|.Z!d1 ͇xͧCy@igcntIP"v( ԩRx&l.ǪL"¨_x@x Y!Zrǂ{=Z, 2w {zٴC!0R'Z XM+g懠dFJa?!X~{{|Ol2:7_ h恆*y -wYo~9_8@rs0 YCIM>v2"t>c]`f"x;5 ^S>Ⱥ,q+ʅf|pj ÇDY !D}6`*/&b>*q6SLV?D6 ox 2 RxPUp*ИБeQ>84rB6@$7|K`S$f1yLd&SA Yf@X{}V̘,0mr//q ^,D|HJ|gPBꪺ/f^$`WK*)A7a&=9JQRå"|!!Z`DHtn& iyĄe"fqN9(oB$8P[lN{wiHZ8Yss|g<gxI%jI*Љ <}R>` \eRaCT(C-Fg (*_z!k>Hak%Ӫ XL!8r}M:H}=  x}׌9y1l,!-YpnL{F]3 `DKJdC$H1lZSpi˽G.";+ #%ױA"Ր]$cL,b1Ds)TעG`8tU2'OuhfY݌ RTTB~v]kg{GY <S/5! ؀>\6OU 0?`Gޯ ,}8sR fB%u3!%>q$aGe} Q@w#>PWl50ـ x= ># G)#zlL7ds|އ,*|' %J>3p Q _kbsqw؇Ĉ5}>w |d/tMyH}0# vi}hI2ۮ^Sd.$Ӏߨ$8 8H  ; p p](-ܑá(𻁘|Rx9w qk:;DDLDE\DFlFܳ{k uȼ)gyԸ|p Ȁj#y d#޸괁x@5 X{ؠDHz0 #REVD xؙغ{ h"{ (hSFP6֒|Ej%!)F_&rh8-cbFm|p 1Z k 7 F!8ǑȒl o{G HX܇VA`{p+'Г|*)'ðh>ه/ɇ X܊}p*F{ :hY(IXU偖aj@~;rD|LȌLɜLX,|p̽H^(&y L(䞴ˆ@ռMMM|zH MΌ^ǖPμ0qp< Lt\N OO,ON4ф 踎x0MLOOOO\4 7Oq(pD}P P P P P PPP a-Q=QMQ]QO QQQQ5 `B Q R!R"-=,Q#]R&mR'}R(R tH$R,R-R.R/ txH,C%R5]S6mS7}S8>HS8S=S>S?. h J&?mTG}THTIuD4,|`ITP UQURu( dO-UZU[U\OCcQ0ۡxXzYUg}VhVie@`E#Dhi=WtMWu]W*( (89 ;2c NeW XXϯ ]r3 jVPs-XXXM;tPehS )aоXYY=|ȩ?YkؚZ-Z=A ;cLBSZZZۇ Z-[=[+P ۴[[Xt+[[ \tuS=\M\ōT}\ȍ\S\˽\\\\S ]-]=]M]]]m]}]؍]ٝ]ڭ]۽]]]]] ^^-^=^M^]^m^}^^^^^^^^^ __-_=_M_]_m_}_________``.`>`N`^`n`~`` ` ` ` ` ```aa.a>aNa^ana~aaaaaaaaa b!b".b#>b$Nb%^b&nb'~b(b)b*b+b,b-b.b/b0c1c2.c3>c4Nc5^c6nc7~c8c9c:c;cc?c@dAdB.dC>dDNdE^dFndG~dHdIdJdKdLdMdNdOdPeQeR.eS>eTNeU^eVneW~eXeYeZe[e\e]e^e_e`fafb.fc>fdNfe^ffnfg~fhfifjfkflfmfnfofpgqgr.gsG>gtNgu^gvngw~gxgygzg{g|g}g~gghh.h>hNh^hnh~hhh5! ,fBBD^^\jjl..,nnl&&$VVT 224ZZ\JJL::<**,zz|bbd>>@ tv`İxļ46@ltt b\`BH@`Z$(8pfpLF@`Z؜䐔prx.(8XPX$00PXX`(:0ΰ0blh`dRlԺFJ@ԴNf86(zfh0.l4<УKNHJDv3|{Wi˟=:|ϑ./z"N%t`FS=#G߅fᆳ<#>`R1TA.cQ4hЍ 娑;= N>ӉF)TV 3:3(S!p Ih&QlIGqvdP$=l(`堄jj_wP@9# FA22dCڳ,iIh:*B6Īz&sFA<fp+[:N>@ <.&H@FAHn[Sdyc%$-ښACQ<`,p;Dϑh+Bx= POK~S:pPHZijaupϲ,@ԃ@ԃ4:H,<N,2DPX6+==BPHH C@ )=sںM< @BCt>F#]MhE@Iу2.y`Gψ<D<#G/j  Oܓv59= ;B3\C 7X`Ol{޸<:wN  P>#=0/ԡ |%"~L#@WȀ9$ А&f|C77 +1AzP  {$uhG2ӱD (@C0USȗzpG3B BPq=q#=q | $ "JC>H1IHArI!݃>*`Y%@zqzsgQ|p'XFđ$2K@' HeGnyVWH_ L j MB TPL%(@>1|x<&]8jV$`A" @Pm*CW{ 0)AΝ!x*y/ n J@*wZ=lTx@{Zp?QxP~T󘇦,kN(Ʌ~=YU1V:u LmS&FD`G=2Mj3s+od"xD IC nz#!p> ؃~jb){aG*߭$k\nV2Q`-H[yPDLZ*uYr0s: Vk>umJ#"ykMϊe2=c8A?CXlA'8"x3 ]gLjX@tN(H,0>E ':܂0p;dE8"0rYtYxh1Oey\+e{\Y P`*Ch՗2 G@t-yClGSx\@" X<ڭ9)7#Xm ̓/!gGC@l"lLbiOl2ER4Q 0<ԑpBuS;= ʹR^C:f!m9ߣ@fsiD_;WpBz4j[HdQpt d?KD9PT."pd<6Hb_}u\>e="&ثMg :`qh@=Ԟc옍8&zkuXH@k)z :ĨBC)D.{=&-(P O|  2x ! )HЏ{jC40!H9 [z0ie+ x!܇  }@TT'EV=r=  !P 77@W5@M}5QCg A<gqH0|=G&!y&<%g0Sf1R t`rcP+v02> h_P=@Ѐ b}~hQ\G~u5}jl؆0!p ?pUA7$3-p0n9u˅! PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'!&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋr !9Yz|T#0q!"4U0CWcMS S,P_ $0[U8깞[Ixq$ׂYYsLLW` ymc@pNI`j왡HIu$y'P27v)W1mrwe\2*_* _ș:DZIG̢sR>.gmf! -*.`  r0dpr:}ڑ," gY P`S0֢qt]`waH% z+4Jlk[Re6 .40wQ0O1pdZJF!3@h)/D?#u\"gJeP#0:蚮:,zT Yq$"AV*rPO@d&bfڰzJj$ 5jR8 !~E¤ (67+R @a-{ 2;4fc.gZЅr %"]b*U$]ǭQp@,H5Zq=K͚#FsodV aHBmpYNʵ~KHGP[Y}Ya& hT =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0(0$:Sd&Z:A173p#7tc79:,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLcfIP 5aP@Sq'K>}P$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†SGoa>$p!ࡻ=wocϢ|`x:՛YB;z{r{W a$T zۮ#|eY UCڵ*n\%^!T{ vy :xV&]iԩUfkرeϦ]mܹuo'^qub>xv ēC`A2 @\½:f܋d_=$*S9=4OTH<~ o*@RC(BZڨ,{/cF׆k/г'{'YY1.*AJ*>ˇK0sL24L4TsM6tM8CgxXd h&PIԩ p($Z@H*F{8H{`z*C{[,ͧY4#g -@ v"sp"ԛi&N=yez/ dy@Bl/ @2Oz%0 Jŀ0ŬgU]:Pi݋t"h\h{a `b3xc;cCydA@}*  ʤ|bJ@|$ x@J(2θǀTJuܙv b6T *L;# 9t(LU2d{|7|y+4ȏr`3dQ ~ ⩠^As$%4! AQ+5oc2B7u@ u  $@V$zw@ <=GyBD g?DI`B`T P#fM!cKKJHU;` =qA iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t||Γde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nq6b1a@ZdP !#uzaܡ_LoB߭Ckʁ/BFX0u#bJb,/L f#\pj:wlBlcu,dqSr(G&X=|Ј1yͷs2{P-YH/_xc!3uIUn?:h]WL Ϩ /8-j9C|LOT"_yy\{PI Ԟ IJ Ç䁂 ɇN` |(({>>uo | L_hhA>3@p@B , ?=IDci ?ʇR|X hzN@w 0Ä(:\" 9hH3%;FIDS 3 û ɵ0 ~8{pDي{В{'Җz@FNĀ")|3ʇulDžSчG1A`_ FMdQĀO YR4Ea>(sS;' Gue( zq$ GQYZ,[̇\\ h ӓSrGx, ]3h NC5L|DZ*ȓ(p K ;8ˁ0D%Ӌ4ȇ҉*W D3Ѐ$@BS_p 1AP YȂ21 5s:0J$.+Zx+3`˫@ Db, ܡoMP`LQi{ |KXLt,P FL!R0x e L܉PhH< *;30q 1ą6ͅЃ  K]Wj  {̎eX$ $ ű ]k#{|0$$ |Ї 68sp9#l*-*]2L%k B8؄{R"#,'hStpIP;XY1-3#e$%RHu«с1@$ SX:H-*e4D< 1]L }Ӓtզ(֭V N\Vi$N#䜈(݊MpHzԁI#xx( [5  h2Iѷ4x xi{|h$ 9<= bP*{x+C!-B5yȈiLNЇ>pX(xA $Pb@|x P4 ]w 쉟؞HJ{ ex0ǒ%1 9{i[-ok *qԐGQ+ą" ۷c X3JEuAHV.YT+`qA%JQ$?esMГ[P/:ktc[\B]8EJ{8l#Q{H HꨅJݯ@`}( ՠĐؐ]uF d] P XN=h߽=`&Ͷ2#t:x !!W|Ѓ' F`ya!zOf58J܋|Nԟv۠+{">P" M>5LA [m5%"ٰh@Q yY@RP)cRCLQlQYccP k]aH>99`M4aB4fqDxsa]=cb'ч}(05{neWY=.(ه!ntPOЙ ć @#IPj< EEdλ{|Y6\{€Y!{0JYhI{h ʠ!eR!&M'hɁp4`pȄB9mRF"!""# z$4q؄!jܣ9(% PHYl-mr&O}%/TKq._s6Oyդ؇M M`zW"h*;ns?s2/M…DA2k3Y^\X")pDtJNJ {YLV< rK?uTOuU_uVouWuXuYuZu[u\u 脞]2 Obc$H6av]v᲋⬉L^#_n3 MW 1vw tjwvIݘ3w).x? }($kc th呂0Ӱ¿,9H 9 GH$`efՅPI3]y?Q ]7 N0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4=oV@3&5"+ 2q\AoQ6tVyLY>RP#}043Y_˗|PI?XC "@roh8!~J}䨀$Sq{V^ifN|Ҙ$W﷍{'|` }^w  |_+h ‚Kx&|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=wC bsg> ~"^%i`P='BL>)`!ٸ)p`[t37b@F胗h|KAFEbrO;޼O_\+bXi-B^'6YCAPr"%PHT; г=8OR 5I!gAcAe @Aq=)aUP+v P;<.тI PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,ã=>)$N@<}^Ep oj)z):*}#Bq3Bb(A=,CC ʁ7 OA=P$IT`Rt=TģN=E68D#أ@Fl[@+[P: =b?KCE{>@p80T{n.kOFʪ=3 r E;( d`fwN+A+-b~sAs= D~4޳yO'A>@A;へXyR!<:P:7lSkbAzA# RN=INdQO9[a> - 9Ѐ >=FC?X @(:25d]lYH9nyk2_r,a#"xPh"MG @]7/ D7:k#()RV"QsuX p92~>ʀ1#A@G{D %,1`"h: !72 >~zpQ#gd_$.@2( n+aY" qW|~ć; >"r갇i ^rzl` 3x ^A& |dr$-2zc ;fG<:h@yqc(azh (<5+t hEZ'؊@қ_G"Ye>f8rx`WBc&%uẉA wUNp! Eȑ=(֓+Dd"F%Ta[AI(DCfA,HZc.SU`#x@zTt&4iBPȉQI׺"Dם 8v`H٠NT0/ԡ&&d}ld[Tw>T^'jUIDI!__so<ɠH /Fpe"ό4ךA&qa{Vk,2~0#,asf 8؁z p>ge>LH/`Y^M ^AŃr(@xh Cxr$LTzifRV^ pT8)p@A\" C H,a%FDQ}L$G1 }Ȣ+LdT)P1݋k~ d0$Y_qO9-s=wpd7 y|n$`!qHa,A 9Oo׃>r|IoXc [ Aaʘ!k{>BM\M0Q{ƛ*ppq7-. `/k6H{QcM}T}vDD3W-HK#ϹYl JppD?65iH6F\{ 6_y<`<\cH=|2[9m; !l#ʃi:Y?xd ߐAG`03s7NB !C#GFUG!yLS8h) r{Ԧdܣz%[ BYЃ>v-u݇#VAKG&@|<$G?^ALa`\BD-5FCUD3=A, =fަO  Oў8dI?B{ =AY_A _!`%Y(MJCSL;5C8`V> EZu,dr ǘDaD=A_#bMPv4(-Zb$VbFdA U>l H4b>-ă+nB+XJahA4m @4B_v8 zLAA֎=XXPġ+b ! `m@$AAGzC,;;qG1" #B@ԋAbAjmI䑜*GG=\^aE4Њ@g%H >dMDHc%DZă!IJ8>r:CB@m>XXMJ:\C Gh$S dHŸAH afY-DzGD@AC9ɘò,o9 }abOƑT.I&_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:#CT&eAH'g#yzZ,>XrC$()FD: f;d W4H+gACGK*߅DٽmIiA|niE<&e,GOAK=<-Yi&_BܟA0E(ߎ aY> x/ #6Dt]ϢFANA0\*)e&Ȃ/XiZC0M`E0@+})5g<< 2m#FhE4a~ V'(f;4#`T=d#n&>ă?+<,(Ljz?<ë^Zi>̃><@#@;ĞP(~GRjޫ:_ԃV G?x;@Aҵ]i&x;סPlƒ^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i@Ì .&:]`C^!5 RA>=@ r.G@*[泪زJ^ GjA,YnBHH.vw0BeFÍ$_< =d(/bhrE .xRpZҮECDBZ.DZ;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-A-C x0fnpEpK3\`ED h~%rI>Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``BB! 1?N⦲*2+kP@#^C]aC8ATBIX@=0`Y@<o՞aMohAPX[-/ gD>ZPtVE99;DCBW"C=Xѣ24S RL4L=D>\3F<@-t>. XÌZ,C.X%AIrdv, \djTĚZbH3CKFsnIAOTF8:8Ӆ/uEו>\[Vs CȈv# nv,l5aA4;=wK9<D@C6ZT``F$f(@C00UA15Ȃ@02h 8cpX_S}Qf FD@ (; R-IxC@ˢ 8|r%2CCaA=5qeBȂv烪cE8P0ox |b1>}[($5,euBXCZZyA%%ׅhT0 w=jEPR=tSGz>dȺ9E`v/C0lz@ܱpz%9~>@ 3z;2And,@<a=8:E`N9> 91Dg {B 7W?#`[|-ĦyB|@:l@A%lL#<;t,C̕@Kxo=>p;7JDG183#F3zwB0kD<%P1պj|pDìxoA`H7&HD E/(C sg֕8XqÃ5tj':,r`F@\88~}ycO9^/9@ 3"5A8؈w ZT  )hF`hN@Ľ{D3xa| JB; g_:sD{һK{,Aۺ{2"/Hq:%İ>9FH |X`>xh+Ƀ/ 0I3N0B[0½ 3 nuS6!xޫ.!<ӊzLz0,⃃[dμ_ZV'Н \jAWrZD:a`G} Ё҄(nU4`Yիzw=^ZV/y>,#lo߁T9}K%3dG˝hCudI^PG1I38ӮӼ ;L _6T3"YQ갺&'-w.ꞏޓe$AJuìn.dq}<zJ ڒF}H%J-L5ݔN=PERM4 /ATu8Ճ> ݱ' YJ`XLjd]6XgehjlݖnpY,sɁS(P. L5S>b Qtǂ`F0Iu{5~%-MU-\di659uG`0hHueQf2euޙ}蠅#5w(c/##p'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vG_rEAC=Fqݷ] A-0V2f;~k'O4Gyqg>i z.EОIӀaw4jZԗOST hwԣIRBAi*PH-Sq2QG'Qkep`?LpK D#HO- <7#!IT .}IB؇;@8Ō !$PQSe={0ZI t 7FOV 8.c )9NzJ+CIbLLu%&T*A*>fX)~RKA&0xLT0Ѱuʕ%-bQt=5*I*{G&FExHXaG:^(=f˛3%rғt*!yJ Uh>i\ 蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${A'SZt()NltC"?~35]@рƣL]VUnI&)/{L<ဍěfbv+"&ӎ8"G`٪*I $G @K{ *H)6d zX+0O402P*_JVnj-g[jo^1ZɂT*#;BɟV+U" $I>pwEqA$,ޙA` w(أڕnk|=ie/n)x5:j!Kg {t * n#\ miq9rfRW-u=˜"@l I_@G^XAzl_\fa8+уeP=ƫ(ࣅauzVBI;4|g=6BD %E' v0/LF|X0kЋAY`"FhXLYlvA,g9wꁏ־hŭs}(^ Nz6R(|` @ 8Ҿ``FXcv>ZBHĽװ؇LG]|@# 7B _D`)Lt׏HxTc-=1'm:!!1`%}>C 7 $E}SVCN0^w-GI$H` Z0O4p 0C 3ϫ,?@H H Am@<p 6Hs㮵&_{T7Tx]J! ҁz @|c/|M@ʙB'HKd"[b…:k O$NFD pG:M"(#6 H(K  titjdZƏL&I! !L P 0fk(- D"@:8n86nC @ ‚ ƻB k !*A6`4*R-dq!)(R p-H! @:iQ{ cM!(Tԁ !LD qqȐBN-gjj$ X|_b[F Q[k  a-! tΨUI)¬\pR.@_ Q!6DcX !0ZRI sR'w'Bzn%l# * @-N$~%bMba c&b%!J*cN DR ϖ!;!)JP瘔b  "((H< q XL. @1V-:darS11A*B3dT*"SdR-7NHRD@] 665[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* `BxʬZh%2j!##LH %&I1K4Ũ``A1: 8 s-c;AҒF,00@OH>L"0p!emKkvI:A )! \ ҬmI" !@b⏓6%DbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!t pr,I=0XU^ݡp3 nT<TZZuR2s+`R@D@3 `j"5GBjkԣm?R<7 BQm{.14! 8, ՁZpkQpo[ա[R6y 0-킶,ܨnHQuU\\`(V:bB\BFﵤOJ+@N VII3),55Rl:aff]'iAWPG6hKhA.! `e-1fѡF6m+!iP^@UH@ho)ǬUr'r5(B@)ACod!("r5dL㇔iH7I敂f"C1Mb@6#B@a@!N!ᑰ~7!(0u.!R.w+2ws;sU "tꐎ zA 0:D*I.F @`l"8UhRފ" r_1STC } "6&Dx9B)B@>R>B|L!p`B5l R,5xcI/ 7Yk@:Do7W5@A6BN,e|Winv<R`¸r R"wiGX6aaaI!ܡu2E2*qG06-N/V$AVs2a <@@" D{S[ 6L&Z0" XvT( a^O2{Ȋx Z8 lkn$P)ayytS䎝(͏"ٚ *Ğ`Th&P;vKlch+"b6tE@e! *m5A ́t)"j ĕq)Qkp*:!" x9nVZMDJ! DZL6 ' peˀ" g]:2 HS̗Zjʬ"R=d**! cxWjH//0#\!B@^)@1RC{l#K:> cC3,6aDXC.P*LBY hL $?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"B`z?>#4!`!@*p|⧇VY[ٟD:ADY%!hMdAJ`F?z졸d0RGLUQ \N#맦PFn*6a'b&vE@iu/sW;{HTPPN"(Ld*l7:@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿ*daX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1X끵Ʋ0K+@"Z;= $Ku!=@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!e27D!;.>NCX,ޡVFo;6MIi6֦yT"Ay 3/@ _4P!C&\/ƍegwiH&7(9LugΗ:u26G` pʽ{ً;| .½{ :F:c{8”9I|3aX{4Bw9{4hgYW2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^{"!&dÐ9s|U=@|E؛E!c Ll<# @|+OgAF##\×vܕ6U3>D>tRWg<=L8gv'Wv7cgF=CB;pp{rM0@ܗ~Dhޒ)Ƞӄ%@c~S|Q(dՉ\Jhh.h> iNJi)DdQa0@= d$=$uO \7x1P=W _ #@GX`Ϟ\>X:3jk_ȲFtՓV;US0ɏ8 k>[=س׻n=v|a@ߨ8'LnfT> Q#,Gӫk-!=q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճb+rhqF<`3_`Ƒqe:SFVS&XYWfAFqs>&a:vX_c}߶c+>"#?o~d,{g6Z)6ٰ[?QOo%t= `8U.8txG/E. _uw=g\ VOߏ)xHƒ(h#R,,@m=|Ll|Q0># jDTq$+K7 h, r,XԵ5#Q(V`-7=Du aGT֑ʇr1+ZV,V>URz$Wik@K|l.P$N*wms]%a$L+4BҬG'ڂ iYRĂ@!;e|3 $O>aYHd>H|,15{]R x^]7PGܡ,YW#qxY:86wC1t3^)yK*MH{4І<歯Fk#>6 f0f^tN5rNP DPZR | @ zЄ& :DCgA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST s9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7a~4dt>q7yaHDYV~钴pϟENb!t\w!OHInjaFTqQ+>gEi36t`Y^SBE0TtNFqčT@ T 9 )BȔdHMDBT7&*A#F!PNXaZj;.H".0P-/c54'eg*A"!CdNF $DCyrFoپ]xGc GaZo~Fe A1B9AG0K_Z Sd-i*~Bf$L Bz 1 0rmvtF|/nw- T. 0Z30[VҤ0O¤!(d*fE O`$* Dp@K+а!:6 Q`&}ixO]ea40=_ X!^'>1,$4S@ *՘4E9$):~^S_ %kG%Zw,zh S=~%[(n>5η2*X"EtȂ|I!޲u T-޳7Ђ=9KiuKv+aO@f%SVG`bk/Ǽ@`xt\@9Ժ"F! P`_ٵ2, *YlǞbx7(C?1DG$DOD1EWdE_1FgFo1G[M&=,(}6s➔$*A}0({( 50C{.(mz ;+d|Чx8/{  q|y6݄3rɁP'6Ӽp2i%($t*I+Lj8,kW(&՞x<0,3Фj9qU Xexs̴M ;+= {sBz6H{"jh8JA[qU{ZahˁQa{0}Beh%IFg%Ԭ}!Lj`.au9@@3ӊSY,h8+; ) 9$zՈc^Bx#LFys9iwb#{{+ =?7 tlFG $$p;nww.<43Zj;" GPQĬzًذ3! "+ 1LK܀1Kkؕ o* A(`(gX!!!{x*,6y' U!ZLw٘ ?!ġ@ $y3P3D&D!: x uȨ@R&* g؜,= Dp,P'3R,Y-ɥ.aYd৐NnB':P;pI"Z!M:O M4UU@Pq1ATI Bmb&Lg7 T8Cr岘41]FId}H$>+z{@JGFmUe:aT2Pn |`=պI767(r7'q'(ðՇb[_p 2􁏒` `H .7ekC@b7݃Y,BYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW" (r5>jH -r/yK:k|МDy%R z9EByҕt7Oϑ; X =e)PËugG{ˍrQfD4Y.'qQI`s#?xQߙvG|I5"Jx- .o e+}E?zy#ֻJ$c0}YdAPC@'.G`5d>lxpVBj\+>Ƚ}<:Wèo85Phnޓ|{,)I 0dIȣ-IHd PJٰ 4 6y hGŰ>E{x{ Gtr*  1p@DlTɕdɖtb}xQ5L.$ VEƐ苗Ȇ; /|;Yh Jpjt˷˸Gk,{ &N~~'  Ԉ>2}x~~0wcdyȼqȭL1$9$N(8E{@P+lq vQLh?<1tH$ί_xN Mė|H(%;}x HY> x (\ РQ j#} F Ia9@xQ1(f 9L o4"5#ERlN?܀ȞɀN :R$Cu`!w'(J$|H5Ehxp';Y"|h"Q% 39}!ׁ|{S%PT-F5yDPKTUUeU;(9ۘ{@y<0 ȯ֢ՆL0: '0ۘX {.M-Y#;LJaf\zvKz8T:FL Ǽ:hM(EpF ևv^N{0!9e~Ȁz ,՚IiPike  & 5{h?@|}X@M(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfE }p`,hYF() ،`lǶȾ8jZx_p0$wevp y\T+ Hb鐊k_Y), M( <11m}h.<9KkǐGzo8LJ6SGutq[,!Hu uȁDZ _ [L+1r9TuI$9|D':UYϐ :^q} HTWu/:$= X t_Viw؄,ʣFw$f @y>IgW|Xy7C \y˾؄pޅ$'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF PӯdN+9Q9˸O\hN/wXÀp'y/_fġڳ!)9YHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - &Bd%qs(ѢF"Mt)ӦNB*u*ժVbͪu+׮{] jOV꩙yO]nϸKwݼj޻ݦ /exqc7eJ>re f|x5xBEYҲέ{7޾.|8ƏwmSzC'1Twc_ˤWI-Pwų~ϞA_j~-NdUe CFA8uVMP=s,]r#X'+آyφ)`>cd0A܎ޏ`lB~ԡ;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Ot`=8`O$Vy;c;v`) S:HCb7Bq^ݓI"BK&%#mj*S7PX$D~T0@#p-jI0IPg̗Qkcf3pCDA!XA'tRF$K>:y3ljެYAt ``Pik[ꩩAd/Kh=\K:g>`D<2&\-GZ-yS={Dsq {#N&} D׵|;ꑵJqz=A ܓCS_ק<P>=ts*>3;cS=Y0 y62j#d!z/iH#P~T`>|TľɥT=2`xlR@z%K6#j&afܑu<)>13 ,x PC$)A\Eݣ0/ԡ;"|$G> fc,#8@*n E {أڡA+nēLdgI(|KYL_` q #\&< ?AL`H q3h,a4(G;яJ*Fb*4 N40AA衎 (c!&sv=f @=E HgVH Q@H蔭XUu@i Y@C *e&$-H``{"T9 M:63(l>8= %z!Dp$$F|=Ct$kQUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# "8ۊ:$3J>>wC {VHSeåp\S{TPxd>4 cA t60v/ob :N cֳ=vS2H1@qp 6r[4 avA@MhY g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIRAkZ6Ȩe# Xy@}eef]Nȗ:ͱ sy#q62ӛC=Rr }J53_T^Az:ސ1p{Ap b Nw]!ʮ}E,|aRgFA>$gm@+e|5A |B>k;A#q|#]}!s`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^p>0u$^ڬ TEhDfD͞B:Xߵ^>H%>@80|\A,>,C \} TUbA` `C, a"x>AԊCda<@SU ]^DHE͆;dAa\%ZAa1gḀ1 T}C3<fBeB@HXظ:<j'!W !D*I$۪Ɉ*J7$6 $cBZh"8+⃐;jx? @;PCD=@*R)û8b2B?rWA?_1^1 @ƃFJ=\cC^DDE^dFZX^dLLdM& 8Db ND&CB=G> p^s!\A @==,"DB=:8e]C^އ|̣x=x` ALS>D6i 9AuI&EMa&Ie\ff6gnn`df+u=8<ăb2f-#BX`nOD-l:BdB5Ðăf.QI~g"mM:BhJ!pb=ĉWɂZ 0Lndlc (u,x:\:IP4LlFZDօ<: =e0H#[iH, dI_%^>]y~:Ŝ\;8`5), tnH/d0:*ę/ }F_z2lx9t9I*,q"DvW՛.") $FcB ##RDD0*MԃQ0bɆ]TUi\J=u\IJ~W $Q܃yV2+CDjშRk!%Dæ4$ >A0tNT>ŪC8@DXRaY}=>jĽTR'BH$yROkCC=liBvY`J=ce^A ``)֖_ C#zn ibHBܔ8ܭX;<, 0Hح4tE:DC-톕,ےVfd']=|G@,=A$@#H]4: g͆-ȁ,ڎb@*ǩt-m-D@<A@ n`^;nҮ`u&f$1,>^JEA8@I>î @>R2D,>8EHK_dHI0^>m,` ?h@C@i"6 (/4@YX)kʖA/:>)ExeW#If KcJ\^̊KjE 1:=&< ZBd[lݩwz>-I @1b:KVCC. 1V(*D$S&eA`,æABOrUL:ۣl@++F5'F4s)%lC" D&T1U3pBx:pJqb@ 394=S0?U8AZz>RüW,AԈ ~Kn|R1 BPu8̳lADؕ#) ܃Ã@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ3=X@v}$$YTI&]U:lB|@}>ThxOA$!^C=TA@ݏDXcJ:ß>1BAbtA)-BmDLKU#=0>)rUÁ׾i;}-,@t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹӡ7} G@{O_|!&סހ(ܫ'@A& ao!*3 "ҳ10Իo_)&gAAL) Q lB$;{& wCbF['dPu:+>>xqǑ'WysϡCp+\ix{@?/ \R={\с}깧1}&H}*| *AE$Bg huJEOF2Yi[qU]y#QGxΡzCqrG'Pxɖ rCg~:Y~' {wCTzq9}LX3˜<p Y*8Q%j30zO>|i}WYnaYf"+!FI JT!1j' `^:z櫱{$Y'9j1Ja xB'D1SJ @@lN\o!_Mª1 J n1!%@3VPiơ*q7+i5F ´dǑGч0 Ա'/m=4"G^! 6;bgG,_}ZҞ}PG  0dRr @i@=P`R=jNPJh`s?. G=*@&*@p mbHHw$Ȉzub۲&I,_A` 1 J=/!:!! B9Αu$"`=E7``<`]GDD)9.@"3 dD"呕*H}*p!,Tt GD c c  hBB7CƷ ~r*ZA@+OyΓ=Oxg% Tj4AP. up>ĀgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:$o5O[9zYgVCx_X\Q H8"8N'Gw&Hba5e/jtM#C4M=."7>d%D&, DHj\Gъ_B0E tzpzYQBҵL`؀8H6&GVWWp:T:  H•`zqy0c}>TtiZHzUGbaw5"` \h c!"0=aYG2Q4ApRd!9P'CL  s]4j3&_%biE7>Wr>NB ԃg(OX, A- hAQɌOLxc€X0a{h: etdɃ (AySMt@<w;ʆD"Qah!!Q0R = 7}@u-SV3{@ @O} 6apBQM t2@$vMVtr"iF 2 TBJ k݋@B(cA}A($-@+ U|# @C,x$,61 LJ/ZѰ `C?bP*tp"H߷guoDY.3zlK@8|`CN9+6P|L`\ ǃ1UStUJC ^Βݐ@3. =ЩN2 C`@%RtϞW):c6X8Cdٖ^#ڧ}tl"[&T>@Hs;gR c$<EC Pc=K>h8(\I& !2aB !8d"J(pY,!`"N** VAp즱bMNdD*gM6Kb!Y:AxB#tAi g0#>@xɰ "@hPXa & /߀0 H!Xa{ > !]!P!ڧ_#*7R I" |" 6(dA++T( A r@&L &{A @P~dޤ1"bk gFL *@jaj6 G#!}Rh)pamN/¹u||]*dY: B#!`GaZ1#5r#[a3uB('bbC'5LZA!@(t0r"&@f3'xBƯMejGH BRd8 -և F|g4O#r-rOR,@g1"CPaøl Cf !((J2ha0>PƀD)'P8(H Y(Ơ-F%( #8>2 R!H@6+\s88$`KH2T0" n6` # ಩>B$&C`&v|2!'B4"2 }'U46/QiX8 $(" 7)^|fZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtISTH?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSab#|3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,@d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-(Nd>8PE9O* uEkZEAqL぀a.QJ7%q;" ,[[e\PMl",1qIVu.>%_|{T9*scAE8ؘa7HÀv#R.r[!xh0!2A PeIn֦oYnb2!&^ZkFgԁYy ڠ>?!]C?+s!t!r)6n0⁁WJj ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(pԡx8ɕ}Z+ oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIw_AY SG!zݫg@+འqv-s^x` -z *G :ɪgAΝ:x `+{I󅎠) SO+װc˞M۸sͻg/{ Bn|u~tx Sz%W_+̝aOBtu/ń}ysT}A -^AB|0? ($h(,&Nt,vcOsѣv B@P<@ CC/Td5ިAua .4>gܗOi7Xg A2@aO=5d> TOi-Jb~gSO#'褔Vj饘f馜viHسEր;ܣ:xs7>LSOAڈ;D.X^rc*APD샏>wYʑW==O=x ×k7\ 鿗IXjAس@B!,Wlg!FI>@ܨ:[:`\8;TN< D>3{6_QO_B`@W8{#>N(~>_ue=8W0DM= ؜-_Sތ7G.Wn?$:!g砇.褗n{;W.n#8/o'7G/Wogw/o觯/?S>O; {#KL=c LE| hGH @d0A_$Q<6EQ2H17@gчx%QD܁w!9 *PDz` *U\>ܱ )GIU-{D baza%D7P{[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+f%f2Ur!r#Rʇ-5Ib R]z!8isZ2aY=:쑖͜ 9@{lpt>Cc%%䅃Lg@M b(9ẋ>ς0h +⡎Ft\q ҃ tpGJTuB@5Cx%@R:QĢpV! 0G㮂 5 gv)^ zHuwS0KCôbƮ'ODH 83x+* ⰵ!P]DzYX1:>PC#[@NF${ mpQ %E+*k$" :djm`2(|QĐws@ Nܣ Ňd9DAJYN,0/|t脨F 8 @YD #xLs:O3/a!%K oPK$bY\q0 k4/{|XT*PLB> duh,G'Ѕ.{8rAR Ǜ b-*-c,ad[]20 3G$''Q24G|HԹq  fABŰg T`T ˆ3P1) :tblhHT/d+{ańϯQ j4PG< AjHs' YHArRXq@!t_iW&maB$A(B ` d JP 0?bݩ0̿ɕB 7D} ̍ ZekN=6qY ч= ZȍzOpa-%f`@CY,\Y(Yz , gȂA+:M :d},cJ7y*M}7oHΑ9!cA`8`1қg>Y^x+EKUR(;qAHt&U=S{aE/|6:r e!Z:BF1 pG<zfʋ4)P(? 2< z`b}  hjZ[ai v `aDz7X&Yd, A%pGvq % Y w?"# $Pg\E?ݔ@AV212W*eQ bK"2"X">(rS}g2"SN`xzXOJ)tb1G z i+@tb2AI ON(LNpv NhAX(7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7сDS@b j+R+AvDEj``-b- H\!Et*>`E)*%υ= `& `T"l.7" BBuPTwLe8**Y@+e% 9}2%p] gyh0/r/b,gpb`dÃ06c5h0Y 1؎>|cm $*%`'2=g^E@H22v5D@8j:v# t#+.E @ 9F`29PDΡ=48& 3!Ls2F -1s5W0#MWXEYސV 6m6AeDivӇ_X#GP8gP 9ZZy!P ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;I@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O=؊TP}Wva\^u hxz% W#Wqx耫`X%3K0^UY^Daa0|HSqV'aF'P!V[گuW0 fiLSGj֌A@Up%fVjKsjh yv(Ť AeTe]qvMGd0qE6"ȫN*{%wr0SRvE;T+F` {lF8Hzf U{^y^zsk{x?:| K'q[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.N Ԙ!4^c?b!'kb(,)v۽蛾BIO /~([!/b ca 0aPƫ)1//3'ZQ0~j cP2ƒ"2 . +\}Ԡ0yp,iПfP q0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"pqVt%m  ׮" p-*sʧa*̢vl8yM'H' Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3hT=jYonÞ*${g{G~ `Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQa^*+MWac9]}K-o; h8 /@ .dC%NXE5nG!E$YI)UdK1eΤYM00Ľ{jWo{!~z&w]{{` (=| ^EUa{0$ 簃=(e$Hhޅ!"sP P_]巹הa d5Dw2'Po )t܋Bz SsѥO^uٵow{0zٻa!E }TЉԉw(G~g `b!|P3J}*Po 0}J!=JǸz̩'{6%!RHaSH{H@ K!D3ZHz"k!oN*G>3dqg,"!FXа{ BtQH#tRJ+RL3tMF}jQ8TUӁ*YŬʗ.ʝzpgx(zг'*@\Y(   '8Xu0! MY{f1"$Rg6 1uܫ}Fʁ.̳R`1q6~LzASO"[؛7!f9 R}ѧzr`z12fsyg{g#0`h<J{b~`jzkkƔ g aKcҶn{oo* W.kgq#|r+r%p܉‘3r$7A^E|@)t@wd)MyJT/!c+40!Z< `3vRy@?_Z ,`Ax(1;&Cp0A*CUѝg=퉻ő*(ʰ{pk %; d7V`0`œ8@&0 \,g2Rx[QH1|@l C3(a<ῥc62ĀG XFVȸ4n"U*:(8U E@,A(!:eᖅ UdUxCXXy֑ӡ:\FWӕ*[:6YP{ kVd!9-ekيfԁXt t*B&VbE9>ƒ m\B.4`GX9'#) $b[~>ApI= "Ta@5$yሜG iG3Qzdm&\(Or|匜e$,FZ-6 ` 'Ubare2v=U @rKzLЋft\ ,E4wfh9J݂E= lâ Gd2 UB H) Aj4`؇}ld'%#FSpd/Bf}#+CdֳRRpESCX\(Iq~/#H"Db&{p` 7@9 x-EHSKX ]T&ހ-0+`XjC)nWCcm(U7_TbTf-X+fWd'=*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. ](n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>,61 }Cz$3EF;v*&[ D`Aͻ9G=xE:0"YW#W3 ˈ.A#Y ˇؠ5r? "0 @ #Q!؉kq5 J6K: UA ;7+/ pUzkM cX (YйYAHx%w?Iꥬ&/ (|Peig xI9h'aruC:A BJDOɀz θ1u X؉a9q9 DA*h*}8XH22;HmO2'RqXzh1q`Wu`X.Y`3%1pͭOCB0d(E_UQ|CY5eG@Jl3PPtcX fhZ+Ovc$h7@7T=T^<2d{h`F$MY`)d0/L0M~jn;XOƬd P2rɠHPLQXb(ykaʍ Tτ(BE0{^lf8PSГi\BAE&Þkulœ>ó-1`,@xC담~@YJTfPE^n9(ƱSt3d }X|#}xup|Xv .)㫃3o/}`ɇPP5k^^Sle|8fn[ϊm [{MT#Ahi 5le3of=q{#oˇdH)7[ .(rhq|#B!Y"xV|@D-wŅ_Çk>iE ĞӼz`"od[56ctOA >઀;zgGf4 F p?C X2Ҿ{H +ۿJU~4Ddz(e3?SgӪz\muxώ(uOͅхww+h „ 2̗> 'Rh"ƌ7jHcxB$t0=w݋r@=Ki={X=u!ºj56NV=|t8n{$r,k,ڴjײm-ܸrҭk.޼z/不ϝBzxppœ '"uD<A!c͝?L|%4!Ⱥm| ثWz((v=} `LqOā[ L_؞/S?[@#b/c3AA}G:|t> 泏=#># :%> )"-"18#5x#9GB&=#ADEA I)dANBYP`'m!>@AOp UvY>0@<(>mcp Р&tE5GhCB Y*Wmc %, A3Yn4W`dt@qiϫ4:"$=f,J;-Z{-jm9;C; ď:8$TLRwX.[>K ]&=P\O A):P LJ0pԳTq'r/9%qIO{!`OLI*L0̥9#Bӌ@!4 },)j}3@z7 .S6LDA6 Y#@Bc( U`'LpzrGEpы`cSfq $D= uCO 1w5^SJ l?ka`nJ:zcCJ # 2:~1$6yN!H} #Z,5ɂ%/-Eb\c,H0eɂh@3rPB|@TM c2)Bz%KmSS 1!=SSUgO @՛⊐&qBԊ 3CP > 0;&&oTE,%ppE)ʉRDI}04x3QUk[E0>d rqb\i>@C-,iD!0+|h1D#8Xȟ ̑$tǘJ·Q$ S| MO" ja3EjPt>1,!9PJ`DN/ahON=L宪ah@ns0 ;Hi0>8/p1 /!ʂe\WkQ)sH=N$7-H%#x"v%{xMbІI|嵋jG=ԡ͊^f7M^%,4m <X=j+k.=J`oHd`7j Pw>Li&WhIqZ x;jNpĘ:A\`@mn>/H%b==F^ADdE A:C|Zu.`~A僀\ !Πa1UD=Ab@=T<?,"?hVwía%V: H"B5ğEx@=QA >;\,TlB4=0kþ>OLYC9].#363>#4F#X1$%D$ATDCăU zLh@<@zA胹mXC̮ԝ|<Wd,ȁL ^] $8 m,;tũZDiZ L@ԣ`D D]ʆB0@MO<=X.^ƫM]kՃ,pL`‰dB8]lDDBNL H OBAI*CZv(U'*Wxɑih>XG!D>AYeP5fWzR{"@l6Puf GWB)B@A\A0Lf֩)橞5 ʬ)EXA@G=xi>̕=(˹>ïRX@B(*¥:iL`/مs,)\Al:CmOhBDѮ ELl;,A$ChEm}Ga@1KN;Tܱ&k<ԖtD:D9cG^^=L#]P.j!<*С^}a8@@9*k'0kz=NH!@>bD*i°C@lNLlR mD|lĊ,WC &<>} IN,ҰACA0ӡE==ElrjJYUlB+~&ld$4sCmY @+8]@)@Bס" عÕJA&..6 %hN脐`<Vz8,d@:[BL@AnI&OaEO0^M MB\PPan.FCvεc,DĂN80\\k4Bm[[UAHa ģ.E!?lEXH~&M1kpL1o<;0 KdFIJ@pP䚩ޜ5ȁ8@X>D0S\IJ<R>8 DW82p|zcHCmO@ȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐉@\.tB&'2((*&;tr g7QD)B#h@>>X@20031*MنN 1fQIc2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH;1?/`G@lK[Kf"5\p1#L7S?5=i.[ph 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃ/R:(oZl)m,*xG,<>j+P1m^ EP4Y^> h8Ŭ=#t>$/l ̸V%he>w'V ENDXqV KK pNOxQw>)/TPE>XVhWh7۩a,Fc<ZȜ`!m:hiĆgtw\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAAe8l"05Z Pr mX93F0 GZ*(8ACL{.C*tODdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZU'zLݧW

i/S C>!˃ @$jAoTCAzZ4K'^dYA=J<1ԃ\ 1#˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPD5#\hC';`p WO|p@A#N\=F՝L|ZVD^~CX@̈>B~<|퓎qx@ݝ$@,4M@H)8 D|zܻ/܅(ވ{܉(]L}$F# E:`@|3X̋;y ]Owqob@\DΝ<p(Q< қkQp` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}&=  pOO~%F+R W E.pA6me o; Sם+QCC|u+<{ g'<| .*Vf9c:BaJx.ZG{v wŠٯI>Cu⊟BqT̛{ RǞz6pw,| H|lA %(('F4Y$3B@3qA@sJd2'iKwA}jhσЋ:/'"0Ĕ3 }N),;" &BQ9 0+ʋt|J98 v.NJ~r(Mr=t]v}xW {vRʀ0Mz:'rWY`'hΞZ4(?ȡ2!̠ W]5|ħ'Jzק2Fʞxh  " ox{xuڞh /Y(Ppv:Cj8`CVèf'G OnjAOɞ6+, [xH@ iǭ5u|92{9믌&0|:0% H hD>Fu8A{}Em hHSL:; _zԩ@q\1yq|~]c(QߪmA+S> :g0UA ^9A~!!ah_;AGFDHJ \Gq&xq,{4mBxp DLghk1LiZS9N=( щ*V3E  y=J ܣQ䘏b61N C2YQ)E񈀇qzF8 H#>QA q}q>XF#u,~y#'aeTeq́x`Y>b\t @`E<`)I59C u҅Sz[9K,΂rH;/؃p7-dH-ZP<aA EG`%QD!F5<(AeQM68_~WET,I EdXhE(o`6@>bF*"ff v#2@0:##o;"#H {LO@ͬb !B*BR" A TN@&#f/b³)*xbTZ)^cj+ bX' MJƮS:SRpHR#J"$!Rma.ꡙ( $X;@CZ/&H' pEPk&R,@ D "AìV *F@uQǑ5)po,xv dT1jԡ+6@+mjEȫ(Pʬ!ì0 =C~7&nB&B# a"JB" ''Aȃ0RHҞzbbbb" 0>I* kaIZe'+L-$r+42"݌'()/" B<1Y1 $G[ٌ/d Ԣn)mB$"Kª$!ecZaR- \%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ݡ(s??@;L),Ez ĸ6qdT2@"b@)QF FA3C#B2({DE/0" *Rhb3K3%BZebO e؊4A`BsTjރHcG"`? ;F# i6;AzAHn>q.`^.N'lz`G @K$Nc:'!D,!s//f$!dS/D"`*@Cց|\;$ $ G >=d ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*D@Z@@5c5U#VdGdKdOe`^0ee%%(@ R'pA?qġQLciViiif6t' "Nuڲ$ B7.dllmVm׶vܥ$F kV@^a2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvT(J  B$ `k3 `k"`#F)xh̡z6@Ge$J@M%H%jg1b30|V0n؇%AzB:k8ǚA9S*wB/H3c k4@Q04&/ N%08γرF@ "◒+ْ3.tNFp$EZ-"A0h٠zx$"6}AiG A""[E* ԘMR$]-1'+On1pa"MR3]To\fm*513 #喩>1jJK–qI`/?ٝpb +΂EL-G6:q@:0Yٕ)WYA5C! v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?D # ``'/s,ߓ)0M*Cݡѡ:t*!$vwjYv |&F| r@"y@r}'v}C"nBHbns@TSL%0 "Ё b1`A` \JaB?~Bܰ|փ0BQ^Zc~s$0.aBD]yF0thrK/[ ~>*y}ԁ?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JzQ TYFCPvAF  MsPn2xeQa:Y<0;}0 ^=x + 1|鋇0={+p0NR.B #`7tSgO@=wE8HU 4!%3_*rr7n\Y_T)ӕNWjV 5XԞuB|Q4HEuݽL*X)d،6t=nQ>!|v2O^DžO4X E.pm=!{jmP„5jehmp م ` A#e_na~b"Hb&b*b.c2Hc6XYnp\4AE ѧAN qF=)$BCA=K6 ;\SjSOS5cE>Oу[BdHpmi}#W1sA3@B^@>EA>թXcBs8h s7 mMɪd}}Nꆓ.vEPYt8@X$#Gdi_jj:"D  E"3KВj<$:[)#aM`>E x &0S en> `OȮšOt!>t=(+TMfEמb29M锗F kQ1Cd\ H?U^IAv^yd&w=8{?ϛh$OŨvC ?yONy_yoy4scV2OPC\{)K&< d<D7A0/h;nO 5W;%ɔ!:>3BDh~}ЦkUtHkΏYa3@<|4Rf] 2>)%ߞ-uQHWdG; P|8 z\ A*}̯ˇT(d$n%{:ʹ@, B!Z݈0Qn {8HIO@D ,p3_a6DJ@NB3}0!PWB@)-5 Ȓ8>8cq&80 V''v]mzWXV(cs4!^uM/=Hh ؃v@=` 7 ps,9ωt~Oq!P\бdh!&M*3%R飞>${sz{#!Y=QȖs򨬄T!jUM|즳!u2#t!;{T,tM]7T#"$f Πd O8P1mO-`rPDŽL HHPE7dԂ )/_:'hh U$?v@H}d ,#nB(ĻGB5VFPs}w&=0ѡ2! `IJ/`A~oStw,S|[9ާ`$$p@S̈́ aB%&no9#Ug`} ?(PJ(<M&A1 aB2[xф ^KTCyMpa_) s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}%1&Y5# Nmd!@P (BP*n)vnnq}gPrVޓ@#_I}xE "gjp#sZ" aqnIPt IOV<9=0tbY? IR@IF14&#p<4X))@V`71X# ED)OIm7 !901<~pdF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig% qwj,>3(5Pf `%&֑mo q*s=fS@[|Z@.v0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySuc6 ^x2.@jq qz OR% goч^h7(@ @ : )`ͪ'$'PAH}͕ ␠`gB0xRي!7W`zC(($#:x p@%!I P S) paUsך S#D&@ ҩwS鲧ezgRb芭.P؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8"`Hś"!644Q̛!MCŽlڑJ4k狾髾_vɾ5ɒ,{7B p0 38^|V2Q@Jeʃ7H@"iOY j 2ܶȻ! x,N0 P" 12ġ'=_C'dx& hBgvG!= kyT!59@JmrBeۚ cc=Mm׍G`pce4IT%]$C[@{o5p)`f1K#Z] Ey,Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeY g`*RB*âyyae 0c[ 898^30mk773/O $_7R+{n0) C -q[bBw;#ZAX!Bv2r 󸒜F0|s5怙5ow{F8;Y"з5_'}0h ^ZY1>s5 2e[ F=3}=;^ȁ@5GVz#vz< i%oB/6 B{}Ϟzm$C6:d!"hD#DOD1EWdE_1FgFo1GwG2H!$Y,Y$B0[`'$h)${jр  "@؄-(A'(|JD𱧒򀢈HM*Q `|0郄l 7`suq՞xkYY( YJ=u;U t @0RgKC 3de z3F2 ]R +aPdDRG-7La9#>>`' (S@'j7188bFeC A{,c@Mg*@u*PxU1цjU M\D :]؁ІȚJx!6b9_j1 u!HoGeH{w#0 <{p-W:Rv24._a'XZ T@M쑗4Y@=@A@uK<4ɋ2'Y0P ( 1lxl@2Ȃ*a A{|k"Q,X !&@,B=G&W a~=%O\/ R#wOt8`:d5ѝ  *P R>&0 \@.xW0&/Pq_O=gHpcl/? u88*d X_‡؃<@PZIf#8k$@h2+e"`ٜW`e,+p2A=zJvֳmhE;ZҖִvF*#N`p bc $6qκFVo@0Q YWP).x I(TxMɛ wxFkTdt4{9P,h-P p ~;~Xnk`- c@x$sHFϤ  CIx(`0o"k"FxP腙 {ȥ|DJI؀>:X!4 zXYH(ƍ_@>9 +ۣX1pOWl}`}֒W}A o "s9Mb@:`{P-oXtTpA3({xE|pӇ,'Έ< ƀF Ȁk} ۓ \3` }x iԼ'T>8 `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇$&upNN{6IZz tBS)6yK=X\ x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z 1q7!X{&bQHu8tˇx&6mq_j 0YävQmmdϳЇ hH t`z#La)͞[b 4yqiᣇs^5N!P@Z|8<t@dzH(0ԄmmmRpIkip>ߖpySnDt)7SGɇ1HYam66B=#G$/yۺwTb h uX|7+,r|9n(Zn$q ́d2Qq-x`Btx2J x F#Z]XdYMKa: xx $X2Ϝ2 wH*Q ,Jɀt@N(hljt0|) )p%tI K/0t5xn3T@TvfvivkZ Pw@oJ}h{{0r}׀,6~ o/GL'p{"`Ё@z:^<|݃70=w? .:| tw/$eR{A̧̞$NҝL\WOϏD"U4B>ME'#ܳ {u=R,,rHN !ɚE uҁJdWC6Pa@t^23 o>E_4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM06p 0 e9C } w/ňgo {œW@y􍠝jO=Ys!ys?O>cY> DOyPL=vOSsu` Q@`=s=Ocj%S@#@4=t}IpCUPOZ+`HbԳ7^>Nw= wT=gMG@"n.SyHzn}Sy, 0j t=yQ<,OCAwY>(c|ŨCèr7㜳;ܳ?C]EsUbVrHPC@O%K&< @^<l5rFXۣ5^G};s ̝k67h>0va=}hDUݓESn=:o[=T>*%f@<3 t@= (-exOc@L/2ig ߳H Hoe=޽ɖVI|[svך+-+0AN1 $)@^>|wܽ.ҁ.CL'ZZH%CRB7z# wm;rCw0mA;A^Ey8Ixp`9!j@\[alZT"}``j4!0>,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ%U 'M=@Pz8zW.J:* p`0@"C"< CO,v  LGeѣO<P>D,7 >"‘FL=<9=ك@2Ȕ,đ/Y` 80HjUPS9i@tL8KG`Gєx5.Fa2)3(V$>DY 0@x K'ZDIʤM%Xy*OB)\Z MD=TV2q%Ok\Gr2xXd!@WX㬨@䠏ɢA=yς6-iKkӢ8<:hQ,#сH$e<0QB_79FX>Ґ*5&5(>"{c&YI`9r:Xzóe8fM1HjRZ>  O|bH<;_[;xP=b ɢGxج{RD'E==,aGo :,fO02HwCă.&뾍05@y:lI\gޏp@om,MQ kf@գ9֓Bd; PkoCЫAܱ C"pa]QM$yL42tBCǓSkS:ժ^5[I 6V`c*]05o z@8G_c'NQޏXkJaoISimʁ(r"/8xK@u$y5bL?# Hܓ(m9PƜX`8;|(I+?10VGaj!{Q,A!ʉ 6񸚖O+ _NMJzgC$6:* &4@Dlܑ!$>%7HreGhQ >ï@ࡎkSv5reBp L,HS*Dk[\X բ=Koӣ>=Kd4+ZIbQF# 6XTk< @: .Q݌wGFB2~<У~Csl 10.0{Ljj<:tNH@ ODYWNCP@C$JH$4(!RO`R 'H`\HP4eC8BH,` V(@ޜƏC } ?WL=P,,=NUYe@NM`\>G$@i: (a@J`ń-I9 Db @C GCL]>h\Jb+>!Hxt@:SOtүD'JBԩ^5Z5bc6j6V .:,2a]:GD-tXrX;D,=>EpC(Ns0  D'EC-v̈́:r8] >L^ "QäԕC>XU@Y N@U4@C4O$>AyЎ@D!NNN GDLNCaC_CWxI@4U%E4Z愦O@HFC .]]IGhZ&N=_@́&&aaCb.wC@'CT ; RaxCE,Ft=[gC:EZu;8=AWH,QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`>D>t=X@Wf m@8CIO x$v-Nŋ>ԃD,qhi kԼa ̂A]@=C B$HOdB`p@tO<ߔQ DL\(DD(fH}F,>d`È^9>@cxSDLIF&A@tG@@fT@ L`\Mh/@lB HԔk]N $KYҫ~`F]e8d8LgaHH|Ef(C$jjDj Ujl\܃' Lfe]ZyG@Ȃ>T@/>ȅC'( &NAT9$8Yt,ST+$c Tik0@h"*J`j ˓Rbt^>|GAX@$OūʐJH@u7@E[A`O-mXn?02n:Bn䊖C ^:.G^Έ a.Hh(C|kLGY莢Knnj=lB &ª8nE*(@#.!͍j, ioboo$Fd(F؃9,.C$p po52oqpt.+\+FKcpksp{pp p p p p ppq q=@.VhYnp`+?hUGk0qmQ_tkψ@_1qo\qq r!ϯd4e&W ,R D+gc@ %OC9Yp@8A$o!@YoxmnKY*9L)HP^lk@,8T@ P>G@}(^E:Nrl=xo*|nn>mxe $l Eԟ,b)B3tC;.CqY$3o.>@T:FJ<H`ELa/4aapVLZ1=(h2TcF':e=B0HT_CY4@Q'&,1$@;V@B lUtQ5[LPL[ @'@h@dtNﴳDD\lh<'tC|[< $E5AG ,> x Qu\?jvkCkBu@&9:lqELGD8vL8rpPptBS=;4,LnPZ h$aV$>$\PhŴun4F dt6Nݖ@@ @,|=l_7NqN܆C]8NF,T>Xg{@YtkC}/mF<@`@CI<PO(r\gq QDn7,@CT7 F/FHg+@H9$NW !tw{ Ӄ,toVX4ހ]-8HBG$ ÚÖ2Cq6`<%£$H2ECJ ȋ(e@ I>ɰþ VRƑDWFUEY)$E_[\X>Hl^ 5/s:p2o,C M]C`_MiW^kyH|Y@)-/{`B0+@b@"wO@(sg/?tSgO@="4޽:"Q̇: '2D T9˔k^٫>wB={h7_B}Df*qa$MDNT@A b=>SBY\I Ce[Zƞ Quwoufpw^Ǯn:\6FjcÇ'VDw1Frz#vzY%)'*J'lP8 )Л>LI;ߜ gki%d#B# ׿ P ,LPl!P ) 1P );`0 b آ{!@@a{RD&HqE Jj3rYQFQ2Dd͞J2L%JR9T?zX{)}h =(̧H\|@XT 왅Gΐ|0`MІ8`ˎ!F$G |hlC@!<F- QIQ +MQSX)Vk { !&|:06G h?>_X= A{ԅW^E pS(4 Gzԩ@ V/Sʩ8? : ha.{OMQ*F3eP9l駡Zꩩ꫱Z뭹 gMrY#`ԈI9@ `A{{PRJI-`6Ar'H3,Aa!7$X@tU|x`j W}_XOcKIڐhI@ % ogP=rF`b',obY =1Ler=P3tAGI CV)S0g%V$ݩ3Lg+]!.2 c>GFuUdOAЖv_@XZQI%bҐv4GtrUQΜ,psiFEI 9惧*@=uȢ>aĨ(m&"VbCds[桏 ``tL=xb V1CuZ\QUmúCG G<*+B mvg9ϙuq5qM[{$6/--z>H(;(jt!)]'mG1go?E)kg=ρt7 :`c(JӉ . p=6P|  ^|$!d)RB`.z 0X4јJ´%7*yI-Іy}=\0@o ѓƿ:(J"B) ONw8H/Vša\+Cf:0A㏢h%g Bq<@X4AGh8 !@ޣ$ ; +LB8&`h?#n_c60aL J~%!A'F@nR7N@ A+@olq0upydpk `ۀnXzK"bA`! LPkP R "F`!J (gG*qK9CTŸB1rlT(b?)Υ*h:Cb ! "@L gAi%2`t2Z5C >+`F8 AbC|f[Rq2aa͈3ı$*$Ƀ6bZaƑ6 !72A! űYI1JJ`?)"j{n.Mʢ+t@ɞر! |$ q0DΠ 9#1b!D>!b2@b9t?JA+)0<,$PbN%Hm4=,ٴMM4Ni<$B(g*kH@/%D@Z`NP{BtQQQ!5R%5B$ hI&5@,7Z.kh ?DU+ME!zN65VeuViVmVwNSquc5ICI.t_S;uWYY5ZuZFWOJү$F Y{S^a8u]ٵ]]5^u^^^5_u___6`v` ` `6avaaa!6b%vb)b-b(,uK?5>vA|BYO6A( a55e8`Bv6cq6gu*Aw p%W <́'дa*O@ qM<@iQ}7PX"AG6PB@ b16ExFք60"$a*`|c(m9l7S?R"V8%lpwAB76`rbaRu2ă(<#I: {8#A/`c!oj$C:b+: ܡ?ҸB djsxw9'XK⸈XC!GBrZ"` ?0qOXBi`k$|fzx)0.`{16 >v0}v@$ Y.$Ȫt%Z"ui8|\ؓ٢=~ɹC`U `x&BtALaΠU|C.؟_*&r:$bh*`H:XaR$.rF I7 x~:a(BTC>0hAA&"=V.EH?fkV6\yy:x_= ::zbڟ/H !Ȟ9%ڠLKB:" `@$<6">F'V d< '< `٪ AB*[`eJ19U{dTU n7ٲ8w5r)?t . KW6@ୡ&!HN:6s|{6/~܁|Y_'<*_$>wWK0|  ,`+@2]גE&d Px@bp"oM$E5p#  ,C0+;ٓ36 ׵+F:.l2B2a,3㲨%b+B!K,:>:3}ACKh##6#>Src`]#)bbD2Kfg^S ?­ "pϞ|to;{!ȱlj ID= H䃢DtCJQǛݝױɔ+$JdH3߈z@޽:=e:^ ij0A9.p 6XfCPD>!f1& D7}}|c 4TYS^ͺװc˞M۸sͻ N(eżz8@ EtW/Ļ3Nз`}Rαz 38髜vǟzZ-4%pc} =H ^}Ma^Q1sB D4CA>PA=&F=xXwyRPDSe-OF!4Utڏx: etqp4 NTBg#G`@QMT}ݽ3TxD\JOAOIm׬~"dv=QwO=&yϟuXxgx块z L ijԣE%x

*M0xOS:`:`*>"'@-DmH'L7tF9e$˓COE4, N/IN<)5^;t НAk1WA>T%tOt;2z-N"43TMd1[0ua"Bd \>sCBX>k}j7M@=[MdOdԋ Bd1OOa+=¤z?Qo֛_FCE}O5Zb($WAHRp.= *w ^[Gd|$y#I %;d!?n _ [掼co{[R@APY[ۘ a&Dl1=־b]  н {k2uDMR''G?5%JF8푐$'IJZ̤&7I/1=V`{p8Ç&kssT~ġ,,al+rU_i@@@'PLm C/q8yAL(D=q2o`D#OԕdkPYd5LǂIɈL,`WI:a1 *{3V)T=6+srqTH 4zQyiL9AgZE>T~V-Uy$ 7?q (KNbJTz0XGהr16S#x[&V䕱,L[׹ 0$>Z w`AȡViˇ1 r"x (9IҚMjWBjj[G0/G$p*(@}:|â,X~:x@ (l"Ԡ#F )9vIL@w(p opRԨ!CHywZњD\< &sȦ,J~dNȺw5DqrGLﵙX8 Y>l~"Dt< >u'Bz4gIZ.k$ECȈ*#x"ǗWJws-G@q* zotCz&J=O &k0 8>GBMkYmC]KRԨNW,m>JpS#zd21%Xlec{΀`'Yp;]x~PGg ekق,gH( `߂i4M !#_)e$%kࡎ&:T{' ]ܝ]ɻVלH_~%#i:&+ǘl>{Xzӥs]OdKz#OבsgX>`s(0)ԭOin;iy)x:w&5L@p}wo7{`K9ֱ?Éжzh3$&9W"K~HT’c8.G|\ G T8pGRW4Ѓ a䏺;*{G<@Y34-9;0O0<O*fqȲgpC!0uP-M7M! Yq"QMP}&UB#7NP*6<$.QS0/@!uAe\Xqs90S0Ak#z!P9!`B8>M|7kwB[8/R|t`lGx^{qIp ħk+9RLއ:г{H<:}B"8tP9+a҄8uʸ،j  2KqEr8@X"Q`CIe1p)PD`, Wbm\, x>=|0Y0nt& O#tS" oPqD^8%;3@0w P"$`eOYc38 @7 X 1;ۂ80ywO@/ @bS1x۲0Bi%}aIPo Q09@S41=0xXF`)0PI`A3* #BTQ9 ?r`y-0i `#0Er6"ϩ t.bWxM9/+qVָ8a׍iXrgƒ\]눟A3HU?c'eVePJi3,C5"}95PA%1rV`k3x+$@A XQ% gPpsq $P  %uDMB4r X>DB2! Pp 0=0KQ!x81b%$}0эQPMrPu7AI3p~p w0}0 Zps" `dM:<`G O}3, Mj`f1>Zp$#7 TM"[Y831KhW7->;H=0QKPII{#e![ ?ҦH)" QKqᔶB%n $j@8ڷ~kZ 4KzA#` r. B^- 2z{ۺ+$=ȁdB&AC p01DtcD*3CȋƋ7zC[{؛ۥ۽V`|@܋;K[qȑ{¹ <\| "<$\&|(*,.02<4\6|ôA*w÷8<B\Pq־ܻ@<78ԵG|XZEU8PXjI,""pIk4r 0 !-rUѳ`[<Ȅ\ȆjPPp΃sr%K!P%7UQ|$kI@hPI@>DL$k.\9@@~{2s?cZ,Q ƜU}t :|Ra`:zlN)!o阑|a~"zzx.z}I=^![3atPe#^6w ^Qrʽ<c$ A(u# -`l/uq 2&\ÙԢ{>gp1 հ1ӧR!|QP<`}T +;H8 8 0;TXRo;6Ђ=؄]Bd %?/聡8AuDQ# z:([FXٗQV!0g@& m1`80֔1I=3Ol|} 4!ܭGo!$cMa݌p! 9Mmti |^a,l߰7EU-+UH@?a7$ YAgHg N^Pۇ;Lًd$04xHM94~k;Ats"< =C"$*@KR6R nSaC70nKDG8 7Mr6"QXaS* {~^4:z2pH"~[2VdX謡$BS @&8I ٕP= ϬPqJi0P'm#0#SIbǧ2>%>ꥮ=9Y&BI>'.B>-dnMA/K0N <N!x!|qisx@vD`&1LN}c8m@ eqLZU=g\yᘎGR~1g2'{octh>_T8"!JG7%He@PC!MQ P0P ud!0FQ"ͮ-5e ,=zbW"tb:A?zϟ18P A A#MPtWHf.ç|:Á鋰/={kU=u6G`A|e`r`{,]6 1„8؋Л>٣R944D] 6,!i8 ޽aŎ%[Yiծe[qΥ[]y_&\􀊅A4, 3Cwu$D{з`}RpBe33SY3gϠE;^*:=~Wi .+X\ e!v7({}pF>,|ҏ'Oovtǽ)Az̲DZే%Q/g )~ KoYh  &ŖqG!}di7p]QFmı%Q`p!Yx`I :E)ʧyH{f`hu*PF:T+{Lwi) {SJx'}zh{Cѱ&bPIObuVZkV\suW^{W`vذ艧ч, "3Ї9Ci3- {:`V2ljͶ,wt'{ț{*c|f 9}iwGwpgN@g% )cÆf%LphxxG{,@:n*gAr|.Z!d1 ͇xͧCy@igcntIP"v( ԩRx&l.ǪL"¨_x@x Y!Zrǂ{=Z, 2w {zٴC!0R'Z XM+g懠dFJa?!X~{{|Ol2:7_ h恆*y -wYo~9_8@rs0 YCIM>v2"t>c]`f"x;5 ^S>Ⱥ,q+ʅf|pj ÇDY !D}6`*/&b>*q6SLV?D6 ox 2 RxPUp*ИБeQ>84rB6@$7|K`S$f1yLd&SA Yf@X{}V̘,0mr//q ^,D|HJ|gPBꪺ/f^$`WK*)A7a&=9JQRå"|!!Z`DHtn& iyĄe"fqN9(oB$8P[lN{wiHZ8Yss|g<gxI%jI*Љ <}R>` \eRaCT(C-Fg (*_z!k>Hak%Ӫ XL!8r}M:H}=  x}׌9y1l,!-YpnL{F]3 `DKJdC$H1lZSpi˽G.";+ #%ױA"Ր]$cL,b1Ds)TעG`8tU2'OuhfY݌ RTTB~v]kg{GY <S/5! ؀>\6OU 0?`Gޯ ,}8sR fB%u3!%>q$aGe} Q@w#>PWl50ـ x= ># G)#zlL7ds|އ,*|' %J>3p Q _kbsqw؇Ĉ5}>w |d/tMyH}0# vi}hI2ۮ^Sd.$Ӏߨ$8 8H  ; p p](-ܑá(𻁘|Rx9w qk:;DDLDE\DFlFܳ{k uȼ)gyԸ|p Ȁj#y d#޸괁x@5 X{ؠDHz0 #REVD xؙغ{ h"{ (hSFP6֒|Ej%!)F_&rh8-cbFm|p 1Z k 7 F!8ǑȒl o{G HX܇VA`{p+'Г|*)'ðh>ه/ɇ X܊}p*F{ :hY(IXU偖aj@~;rD|LȌLɜLX,|p̽H^(&y L(䞴ˆ@ռMMM|zH MΌ^ǖPμ0qp< Lt\N OO,ON4ф 踎x0MLOOOO\4 7Oq(pD}P P P P P PPP a-Q=QMQ]QO QQQQ5 `B Q R!R"-=,Q#]R&mR'}R(R tH$R,R-R.R/ txH,C%R5]S6mS7}S8>HS8S=S>S?. h J&?mTG}THTIuD4,|`ITP UQURu( dO-UZU[U\OCcQ0ۡxXzYUg}VhVie@`E#Dhi=WtMWu]W*( (89 ;2c NeW XXϯ ]r3 jVPs-XXXM;tPehS )aоXYY=|ȩ?YkؚZ-Z=A ;cLBSZZZۇ Z-[=[+P ۴[[Xt+[[ \tuS=\M\ōT}\ȍ\S\˽\\\\S ]-]=]M]]]m]}]؍]ٝ]ڭ]۽]]]]] ^^-^=^M^]^m^}^^^^^^^^^ __-_=_M_]_m_}_________``.`>`N`^`n`~`` ` ` ` ` ```aa.a>aNa^ana~aaaaaaaaa b!b".b#>b$Nb%^b&nb'~b(b)b*b+b,b-b.b/b0c1c2.c3>c4Nc5^c6nc7~c8c9c:c;cc?c@dAdB.dC>dDNdE^dFndG~dHdIdJdKdLdMdNdOdPeQeR.eS>eTNeU^eVneW~eXeYeZe[e\e]e^e_e`fafb.fc>fdNfe^ffnfg~fhfifjfkflfmfnfofpgqgr.gsG>gtNgu^gvngw~gxgygzg{g|g}g~gghh.h>hNh^hnh~hhh5! ,fBBD^^\jjl..,nnl&&$VVT 224ZZ\JJL::<**,zz|bbd>>@ tv`İxļ46@ltt b\`BH@`Z$(8pfpLF@`Z؜䐔prx.(8XPX$00PXX`(:0ΰ0blh`dRlԺFJ@ԴNf86(zfh0.l4<УKNHJDv3|{Wi˟=:|ϑ./z"N%t`FS=#G߅fᆳ<#>`R1TA.cQ4hЍ 娑;= N>ӉF)TV 3:3(S!p Ih&QlIGqvdP$=l(`堄jj_wP@9# FA22dCڳ,iIh:*B6Īz&sFA<fp+[:N>@ <.&H@FAHn[Sdyc%$-ښACQ<`,p;Dϑh+Bx= POK~S:pPHZijaupϲ,@ԃ@ԃ4:H,<N,2DPX6+==BPHH C@ )=sںM< @BCt>F#]MhE@Iу2.y`Gψ<D<#G/j  Oܓv59= ;B3\C 7X`Ol{޸<:wN  P>#=0/ԡ |%"~L#@WȀ9$ А&f|C77 +1AzP  {$uhG2ӱD (@C0USȗzpG3B BPq=q#=q | $ "JC>H1IHArI!݃>*`Y%@zqzsgQ|p'XFđ$2K@' HeGnyVWH_ L j MB TPL%(@>1|x<&]8jV$`A" @Pm*CW{ 0)AΝ!x*y/ n J@*wZ=lTx@{Zp?QxP~T󘇦,kN(Ʌ~=YU1V:u LmS&FD`G=2Mj3s+od"xD IC nz#!p> ؃~jb){aG*߭$k\nV2Q`-H[yPDLZ*uYr0s: Vk>umJ#"ykMϊe2=c8A?CXlA'8"x3 ]gLjX@tN(H,0>E ':܂0p;dE8"0rYtYxh1Oey\+e{\Y P`*Ch՗2 G@t-yClGSx\@" X<ڭ9)7#Xm ̓/!gGC@l"lLbiOl2ER4Q 0<ԑpBuS;= ʹR^C:f!m9ߣ@fsiD_;WpBz4j[HdQpt d?KD9PT."pd<6Hb_}u\>e="&ثMg :`qh@=Ԟc옍8&zkuXH@k)z :ĨBC)D.{=&-(P O|  2x ! )HЏ{jC40!H9 [z0ie+ x!܇  }@TT'EV=r=  !P 77@W5@M}5QCg A<gqH0|=G&!y&<%g0Sf1R t`rcP+v02> h_P=@Ѐ b}~hQ\G~u5}jl؆0!p ?pUA7$3-p0n9u˅! PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'!&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋr !9Yz|T#0q!"4U0CWcMS S,P_ $0[U8깞[Ixq$ׂYYsLLW` ymc@pNI`j왡HIu$y'P27v)W1mrwe\2*_* _ș:DZIG̢sR>.gmf! -*.`  r0dpr:}ڑ," gY P`S0֢qt]`waH% z+4Jlk[Re6 .40wQ0O1pdZJF!3@h)/D?#u\"gJeP#0:蚮:,zT Yq$"AV*rPO@d&bfڰzJj$ 5jR8 !~E¤ (67+R @a-{ 2;4fc.gZЅr %"]b*U$]ǭQp@,H5Zq=K͚#FsodV aHBmpYNʵ~KHGP[Y}Ya& hT =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0(0$:Sd&Z:A173p#7tc79:,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLcfIP 5aP@Sq'K>}P$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†SGoa>$p!ࡻ=wocϢ|`x:՛YB;z{r{W a$T zۮ#|eY UCڵ*n\%^!T{ vy :xV&]iԩUfkرeϦ]mܹuo'^qub>xv ēC`A2 @\½:f܋d_=$*S9=4OTH<~ o*@RC(BZڨ,{/cF׆k/г'{'YY1.*AJ*>ˇK0sL24L4TsM6tM8CgxXd h&PIԩ p($Z@H*F{8H{`z*C{[,ͧY4#g -@ v"sp"ԛi&N=yez/ dy@Bl/ @2Oz%0 Jŀ0ŬgU]:Pi݋t"h\h{a `b3xc;cCydA@}*  ʤ|bJ@|$ x@J(2θǀTJuܙv b6T *L;# 9t(LU2d{|7|y+4ȏr`3dQ ~ ⩠^As$%4! AQ+5oc2B7u@ u  $@V$zw@ <=GyBD g?DI`B`T P#fM!cKKJHU;` =qA iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t||Γde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nq6b1a@ZdP !#uzaܡ_LoB߭Ckʁ/BFX0u#bJb,/L f#\pj:wlBlcu,dqSr(G&X=|Ј1yͷs2{P-YH/_xc!3uIUn?:h]WL Ϩ /8-j9C|LOT"_yy\{PI Ԟ IJ Ç䁂 ɇN` |(({>>uo | L_hhA>3@p@B , ?=IDci ?ʇR|X hzN@w 0Ä(:\" 9hH3%;FIDS 3 û ɵ0 ~8{pDي{В{'Җz@FNĀ")|3ʇulDžSчG1A`_ FMdQĀO YR4Ea>(sS;' Gue( zq$ GQYZ,[̇\\ h ӓSrGx, ]3h NC5L|DZ*ȓ(p K ;8ˁ0D%Ӌ4ȇ҉*W D3Ѐ$@BS_p 1AP YȂ21 5s:0J$.+Zx+3`˫@ Db, ܡoMP`LQi{ |KXLt,P FL!R0x e L܉PhH< *;30q 1ą6ͅЃ  K]Wj  {̎eX$ $ ű ]k#{|0$$ |Ї 68sp9#l*-*]2L%k B8؄{R"#,'hStpIP;XY1-3#e$%RHu«с1@$ SX:H-*e4D< 1]L }Ӓtզ(֭V N\Vi$N#䜈(݊MpHzԁI#xx( [5  h2Iѷ4x xi{|h$ 9<= bP*{x+C!-B5yȈiLNЇ>pX(xA $Pb@|x P4 ]w 쉟؞HJ{ ex0ǒ%1 9{i[-ok *qԐGQ+ą" ۷c X3JEuAHV.YT+`qA%JQ$?esMГ[P/:ktc[\B]8EJ{8l#Q{H HꨅJݯ@`}( ՠĐؐ]uF d] P XN=h߽=`&Ͷ2#t:x !!W|Ѓ' F`ya!zOf58J܋|Nԟv۠+{">P" M>5LA [m5%"ٰh@Q yY@RP)cRCLQlQYccP k]aH>99`M4aB4fqDxsa]=cb'ч}(05{neWY=.(ه!ntPOЙ ć @#IPj< EEdλ{|Y6\{€Y!{0JYhI{h ʠ!eR!&M'hɁp4`pȄB9mRF"!""# z$4q؄!jܣ9(% PHYl-mr&O}%/TKq._s6Oyդ؇M M`zW"h*;ns?s2/M…DA2k3Y^\X")pDtJNJ {YLV< rK?uTOuU_uVouWuXuYuZu[u\u 脞]2 Obc$H6av]v᲋⬉L^#_n3 MW 1vw tjwvIݘ3w).x? }($kc th呂0Ӱ¿,9H 9 GH$`efՅPI3]y?Q ]7 N0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4=oV@3&5"+ 2q\AoQ6tVyLY>RP#}043Y_˗|PI?XC "@roh8!~J}䨀$Sq{V^ifN|Ҙ$W﷍{'|` }^w  |_+h ‚Kx&|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=wC bsg> ~"^%i`P='BL>)`!ٸ)p`[t37b@F胗h|KAFEbrO;޼O_\+bXi-B^'6YCAPr"%PHT; г=8OR 5I!gAcAe @Aq=)aUP+v P;<.тI PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,ã=>)$N@<}^Ep oj)z):*}#Bq3Bb(A=,CC ʁ7 OA=P$IT`Rt=TģN=E68D#أ@Fl[@+[P: =b?KCE{>@p80T{n.kOFʪ=3 r E;( d`fwN+A+-b~sAs= D~4޳yO'A>@A;へXyR!<:P:7lSkbAzA# RN=INdQO9[a> - 9Ѐ >=FC?X @(:25d]lYH9nyk2_r,a#"xPh"MG @]7/ D7:k#()RV"QsuX p92~>ʀ1#A@G{D %,1`"h: !72 >~zpQ#gd_$.@2( n+aY" qW|~ć; >"r갇i ^rzl` 3x ^A& |dr$-2zc ;fG<:h@yqc(azh (<5+t hEZ'؊@қ_G"Ye>f8rx`WBc&%uẉA wUNp! Eȑ=(֓+Dd"F%Ta[AI(DCfA,HZc.SU`#x@zTt&4iBPȉQI׺"Dם 8v`H٠NT0/ԡ&&d}ld[Tw>T^'jUIDI!__so<ɠH /Fpe"ό4ךA&qa{Vk,2~0#,asf 8؁z p>ge>LH/`Y^M ^AŃr(@xh Cxr$LTzifRV^ pT8)p@A\" C H,a%FDQ}L$G1 }Ȣ+LdT)P1݋k~ d0$Y_qO9-s=wpd7 y|n$`!qHa,A 9Oo׃>r|IoXc [ Aaʘ!k{>BM\M0Q{ƛ*ppq7-. `/k6H{QcM}T}vDD3W-HK#ϹYl JppD?65iH6F\{ 6_y<`<\cH=|2[9m; !l#ʃi:Y?xd ߐAG`03s7NB !C#GFUG!yLS8h) r{Ԧdܣz%[ BYЃ>v-u݇#VAKG&@|<$G?^ALa`\BD-5FCUD3=A, =fަO  Oў8dI?B{ =AY_A _!`%Y(MJCSL;5C8`V> EZu,dr ǘDaD=A_#bMPv4(-Zb$VbFdA U>l H4b>-ă+nB+XJahA4m @4B_v8 zLAA֎=XXPġ+b ! `m@$AAGzC,;;qG1" #B@ԋAbAjmI䑜*GG=\^aE4Њ@g%H >dMDHc%DZă!IJ8>r:CB@m>XXMJ:\C Gh$S dHŸAH afY-DzGD@AC9ɘò,o9 }abOƑT.I&_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:#CT&eAH'g#yzZ,>XrC$()FD: f;d W4H+gACGK*߅DٽmIiA|niE<&e,GOAK=<-Yi&_BܟA0E(ߎ aY> x/ #6Dt]ϢFANA0\*)e&Ȃ/XiZC0M`E0@+})5g<< 2m#FhE4a~ V'(f;4#`T=d#n&>ă?+<,(Ljz?<ë^Zi>̃><@#@;ĞP(~GRjޫ:_ԃV G?x;@Aҵ]i&x;סPlƒ^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i@Ì .&:]`C^!5 RA>=@ r.G@*[泪زJ^ GjA,YnBHH.vw0BeFÍ$_< =d(/bhrE .xRpZҮECDBZ.DZ;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-A-C x0fnpEpK3\`ED h~%rI>Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``BB! 1?N⦲*2+kP@#^C]aC8ATBIX@=0`Y@<o՞aMohAPX[-/ gD>ZPtVE99;DCBW"C=Xѣ24S RL4L=D>\3F<@-t>. XÌZ,C.X%AIrdv, \djTĚZbH3CKFsnIAOTF8:8Ӆ/uEו>\[Vs CȈv# nv,l5aA4;=wK9<D@C6ZT``F$f(@C00UA15Ȃ@02h 8cpX_S}Qf FD@ (; R-IxC@ˢ 8|r%2CCaA=5qeBȂv烪cE8P0ox |b1>}[($5,euBXCZZyA%%ׅhT0 w=jEPR=tSGz>dȺ9E`v/C0lz@ܱpz%9~>@ 3z;2And,@<a=8:E`N9> 91Dg {B 7W?#`[|-ĦyB|@:l@A%lL#<;t,C̕@Kxo=>p;7JDG183#F3zwB0kD<%P1պj|pDìxoA`H7&HD E/(C sg֕8XqÃ5tj':,r`F@\88~}ycO9^/9@ 3"5A8؈w ZT  )hF`hN@Ľ{D3xa| JB; g_:sD{һK{,Aۺ{2"/Hq:%İ>9FH |X`>xh+Ƀ/ 0I3N0B[0½ 3 nuS6!xޫ.!<ӊzLz0,⃃[dμ_ZV'Н \jAWrZD:a`G} Ё҄(nU4`Yիzw=^ZV/y>,#lo߁T9}K%3dG˝hCudI^PG1I38ӮӼ ;L _6T3"YQ갺&'-w.ꞏޓe$AJuìn.dq}<zJ ڒF}H%J-L5ݔN=PERM4 /ATu8Ճ> ݱ' YJ`XLjd]6XgehjlݖnpY,sɁS(P. L5S>b Qtǂ`F0Iu{5~%-MU-\di659uG`0hHueQf2euޙ}蠅#5w(c/##p'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vG_rEAC=Fqݷ] A-0V2f;~k'O4Gyqg>i z.EОIӀaw4jZԗOST hwԣIRBAi*PH-Sq2QG'Qkep`?LpK D#HO- <7#!IT .}IB؇;@8Ō !$PQSe={0ZI t 7FOV 8.c )9NzJ+CIbLLu%&T*A*>fX)~RKA&0xLT0Ѱuʕ%-bQt=5*I*{G&FExHXaG:^(=f˛3%rғt*!yJ Uh>i\ 蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${A'SZt()NltC"?~35]@рƣL]VUnI&)/{L<ဍěfbv+"&ӎ8"G`٪*I $G @K{ *H)6d zX+0O402P*_JVnj-g[jo^1ZɂT*#;BɟV+U" $I>pwEqA$,ޙA` w(أڕnk|=ie/n)x5:j!Kg {t * n#\ miq9rfRW-u=˜"@l I_@G^XAzl_\fa8+уeP=ƫ(ࣅauzVBI;4|g=6BD %E' v0/LF|X0kЋAY`"FhXLYlvA,g9wꁏ־hŭs}(^ Nz6R(|` @ 8Ҿ``FXcv>ZBHĽװ؇LG]|@# 7B _D`)Lt׏HxTc-=1'm:!!1`%}>C 7 $E}SVCN0^w-GI$H` Z0O4p 0C 3ϫ,?@H H Am@<p 6Hs㮵&_{T7Tx]J! ҁz @|c/|M@ʙB'HKd"[b…:k O$NFD pG:M"(#6 H(K  titjdZƏL&I! !L P 0fk(- D"@:8n86nC @ ‚ ƻB k !*A6`4*R-dq!)(R p-H! @:iQ{ cM!(Tԁ !LD qqȐBN-gjj$ X|_b[F Q[k  a-! tΨUI)¬\pR.@_ Q!6DcX !0ZRI sR'w'Bzn%l# * @-N$~%bMba c&b%!J*cN DR ϖ!;!)JP瘔b  "((H< q XL. @1V-:darS11A*B3dT*"SdR-7NHRD@] 665[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* `BxʬZh%2j!##LH %&I1K4Ũ``A1: 8 s-c;AҒF,00@OH>L"0p!emKkvI:A )! \ ҬmI" !@b⏓6%DbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!t pr,I=0XU^ݡp3 nT<TZZuR2s+`R@D@3 `j"5GBjkԣm?R<7 BQm{.14! 8, ՁZpkQpo[ա[R6y 0-킶,ܨnHQuU\\`(V:bB\BFﵤOJ+@N VII3),55Rl:aff]'iAWPG6hKhA.! `e-1fѡF6m+!iP^@UH@ho)ǬUr'r5(B@)ACod!("r5dL㇔iH7I敂f"C1Mb@6#B@a@!N!ᑰ~7!(0u.!R.w+2ws;sU "tꐎ zA 0:D*I.F @`l"8UhRފ" r_1STC } "6&Dx9B)B@>R>B|L!p`B5l R,5xcI/ 7Yk@:Do7W5@A6BN,e|Winv<R`¸r R"wiGX6aaaI!ܡu2E2*qG06-N/V$AVs2a <@@" D{S[ 6L&Z0" XvT( a^O2{Ȋx Z8 lkn$P)ayytS䎝(͏"ٚ *Ğ`Th&P;vKlch+"b6tE@e! *m5A ́t)"j ĕq)Qkp*:!" x9nVZMDJ! DZL6 ' peˀ" g]:2 HS̗Zjʬ"R=d**! cxWjH//0#\!B@^)@1RC{l#K:> cC3,6aDXC.P*LBY hL $?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"B`z?>#4!`!@*p|⧇VY[ٟD:ADY%!hMdAJ`F?z졸d0RGLUQ \N#맦PFn*6a'b&vE@iu/sW;{HTPPN"(Ld*l7:@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿ*daX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1X끵Ʋ0K+@"Z;= $Ku!=@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!e27D!;.>NCX,ޡVFo;6MIi6֦yT"Ay 3/@ _4P!C&\/ƍegwiH&7(9LugΗ:u26G` pʽ{ً;| .½{ :F:c{8”9I|3aX{4Bw9{4hgYW2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^{"!&dÐ9s|U=@|E؛E!c Ll<# @|+OgAF##\×vܕ6U3>D>tRWg<=L8gv'Wv7cgF=CB;pp{rM0@ܗ~Dhޒ)Ƞӄ%@c~S|Q(dՉ\Jhh.h> iNJi)DdQa0@= d$=$uO \7x1P=W _ #@GX`Ϟ\>X:3jk_ȲFtՓV;US0ɏ8 k>[=س׻n=v|a@ߨ8'LnfT> Q#,Gӫk-!=q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճb+rhqF<`3_`Ƒqe:SFVS&XYWfAFqs>&a:vX_c}߶c+>"#?o~d,{g6Z)6ٰ[?QOo%t= `8U.8txG/E. _uw=g\ VOߏ)xHƒ(h#R,,@m=|Ll|Q0># jDTq$+K7 h, r,XԵ5#Q(V`-7=Du aGT֑ʇr1+ZV,V>URz$Wik@K|l.P$N*wms]%a$L+4BҬG'ڂ iYRĂ@!;e|3 $O>aYHd>H|,15{]R x^]7PGܡ,YW#qxY:86wC1t3^)yK*MH{4І<歯Fk#>6 f0f^tN5rNP DPZR | @ zЄ& :DCgA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST s9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7a~4dt>q7yaHDYV~钴pϟENb!t\w!OHInjaFTqQ+>gEi36t`Y^SBE0TtNFqčT@ T 9 )BȔdHMDBT7&*A#F!PNXaZj;.H".0P-/c54'eg*A"!CdNF $DCyrFoپ]xGc GaZo~Fe A1B9AG0K_Z Sd-i*~Bf$L Bz 1 0rmvtF|/nw- T. 0Z30[VҤ0O¤!(d*fE O`$* Dp@K+а!:6 Q`&}ixO]ea40=_ X!^'>1,$4S@ *՘4E9$):~^S_ %kG%Zw,zh S=~%[(n>5η2*X"EtȂ|I!޲u T-޳7Ђ=9KiuKv+aO@f%SVG`bk/Ǽ@`xt\@9Ժ"F! P`_ٵ2, *YlǞbx7(C?1DG$DOD1EWdE_1FgFo1G[M&=,(}6s➔$*A}0({( 50C{.(mz ;+d|Чx8/{  q|y6݄3rɁP'6Ӽp2i%($t*I+Lj8,kW(&՞x<0,3Фj9qU Xexs̴M ;+= {sBz6H{"jh8JA[qU{ZahˁQa{0}Beh%IFg%Ԭ}!Lj`.au9@@3ӊSY,h8+; ) 9$zՈc^Bx#LFys9iwb#{{+ =?7 tlFG $$p;nww.<43Zj;" GPQĬzًذ3! "+ 1LK܀1Kkؕ o* A(`(gX!!!{x*,6y' U!ZLw٘ ?!ġ@ $y3P3D&D!: x uȨ@R&* g؜,= Dp,P'3R,Y-ɥ.aYd৐NnB':P;pI"Z!M:O M4UU@Pq1ATI Bmb&Lg7 T8Cr岘41]FId}H$>+z{@JGFmUe:aT2Pn |`=պI767(r7'q'(ðՇb[_p 2􁏒` `H .7ekC@b7݃Y,BYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW" (r5>jH -r/yK:k|МDy%R z9EByҕt7Oϑ; X =e)PËugG{ˍrQfD4Y.'qQI`s#?xQߙvG|I5"Jx- .o e+}E?zy#ֻJ$c0}YdAPC@'.G`5d>lxpVBj\+>Ƚ}<:Wèo85Phnޓ|{,)I 0dIȣ-IHd PJٰ 4 6y hGŰ>E{x{ Gtr*  1p@DlTɕdɖtb}xQ5L.$ VEƐ苗Ȇ; /|;Yh Jpjt˷˸Gk,{ &N~~'  Ԉ>2}x~~0wcdyȼqȭL1$9$N(8E{@P+lq vQLh?<1tH$ί_xN Mė|H(%;}x HY> x (\ РQ j#} F Ia9@xQ1(f 9L o4"5#ERlN?܀ȞɀN :R$Cu`!w'(J$|H5Ehxp';Y"|h"Q% 39}!ׁ|{S%PT-F5yDPKTUUeU;(9ۘ{@y<0 ȯ֢ՆL0: '0ۘX {.M-Y#;LJaf\zvKz8T:FL Ǽ:hM(EpF ևv^N{0!9e~Ȁz ,՚IiPike  & 5{h?@|}X@M(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfE }p`,hYF() ،`lǶȾ8jZx_p0$wevp y\T+ Hb鐊k_Y), M( <11m}h.<9KkǐGzo8LJ6SGutq[,!Hu uȁDZ _ [L+1r9TuI$9|D':UYϐ :^q} HTWu/:$= X t_Viw؄,ʣFw$f @y>IgW|Xy7C \y˾؄pޅ$'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF PӯdN+9Q9˸O\hN/wXÀp'y/_fġڳ!)9YHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - &Bd%qs(ѢF"Mt)ӦNB*u*ժVbͪu+׮{] jOV꩙yO]nϸKwݼj޻ݦ /exqc7eJ>re f|x5xBEYҲέ{7޾.|8ƏwmSzC'1Twc_ˤWI-Pwų~ϞA_j~-NdUe CFA8uVMP=s,]r#X'+آyφ)`>cd0A܎ޏ`lB~ԡ;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Ot`=8`O$Vy;c;v`) S:HCb7Bq^ݓI"BK&%#mj*S7PX$D~T0@#p-jI0IPg̗Qkcf3pCDA!XA'tRF$K>:y3ljެYAt ``Pik[ꩩAd/Kh=\K:g>`D<2&\-GZ-yS={Dsq {#N&} D׵|;ꑵJqz=A ܓCS_ק<P>=ts*>3;cS=Y0 y62j#d!z/iH#P~T`>|TľɥT=2`xlR@z%K6#j&afܑu<)>13 ,x PC$)A\Eݣ0/ԡ;"|$G> fc,#8@*n E {أڡA+nēLdgI(|KYL_` q #\&< ?AL`H q3h,a4(G;яJ*Fb*4 N40AA衎 (c!&sv=f @=E HgVH Q@H蔭XUu@i Y@C *e&$-H``{"T9 M:63(l>8= %z!Dp$$F|=Ct$kQUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# "8ۊ:$3J>>wC {VHSeåp\S{TPxd>4 cA t60v/ob :N cֳ=vS2H1@qp 6r[4 avA@MhY g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIRAkZ6Ȩe# Xy@}eef]Nȗ:ͱ sy#q62ӛC=Rr }J53_T^Az:ސ1p{Ap b Nw]!ʮ}E,|aRgFA>$gm@+e|5A |B>k;A#q|#]}!s`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^p>0u$^ڬ TEhDfD͞B:Xߵ^>H%>@80|\A,>,C \} TUbA` `C, a"x>AԊCda<@SU ]^DHE͆;dAa\%ZAa1gḀ1 T}C3<fBeB@HXظ:<j'!W !D*I$۪Ɉ*J7$6 $cBZh"8+⃐;jx? @;PCD=@*R)û8b2B?rWA?_1^1 @ƃFJ=\cC^DDE^dFZX^dLLdM& 8Db ND&CB=G> p^s!\A @==,"DB=:8e]C^އ|̣x=x` ALS>D6i 9AuI&EMa&Ie\ff6gnn`df+u=8<ăb2f-#BX`nOD-l:BdB5Ðăf.QI~g"mM:BhJ!pb=ĉWɂZ 0Lndlc (u,x:\:IP4LlFZDօ<: =e0H#[iH, dI_%^>]y~:Ŝ\;8`5), tnH/d0:*ę/ }F_z2lx9t9I*,q"DvW՛.") $FcB ##RDD0*MԃQ0bɆ]TUi\J=u\IJ~W $Q܃yV2+CDjშRk!%Dæ4$ >A0tNT>ŪC8@DXRaY}=>jĽTR'BH$yROkCC=liBvY`J=ce^A ``)֖_ C#zn ibHBܔ8ܭX;<, 0Hح4tE:DC-톕,ےVfd']=|G@,=A$@#H]4: g͆-ȁ,ڎb@*ǩt-m-D@<A@ n`^;nҮ`u&f$1,>^JEA8@I>î @>R2D,>8EHK_dHI0^>m,` ?h@C@i"6 (/4@YX)kʖA/:>)ExeW#If KcJ\^̊KjE 1:=&< ZBd[lݩwz>-I @1b:KVCC. 1V(*D$S&eA`,æABOrUL:ۣl@++F5'F4s)%lC" D&T1U3pBx:pJqb@ 394=S0?U8AZz>RüW,AԈ ~Kn|R1 BPu8̳lADؕ#) ܃Ã@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ3=X@v}$$YTI&]U:lB|@}>ThxOA$!^C=TA@ݏDXcJ:ß>1BAbtA)-BmDLKU#=0>)rUÁ׾i;}-,@t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹӡ7} G@{O_|!&סހ(ܫ'@A& ao!*3 "ҳ10Իo_)&gAAL) Q lB$;{& wCbF['dPu:+>>xqǑ'WysϡCp+\ix{@?/ \R={\с}깧1}&H}*| *AE$Bg huJEOF2Yi[qU]y#QGxΡzCqrG'Pxɖ rCg~:Y~' {wCTzq9}LX3˜<p Y*8Q%j30zO>|i}WYnaYf"+!FI JT!1j' `^:z櫱{$Y'9j1Ja xB'D1SJ @@lN\o!_Mª1 J n1!%@3VPiơ*q7+i5F ´dǑGч0 Ա'/m=4"G^! 6;bgG,_}ZҞ}PG  0dRr @i@=P`R=jNPJh`s?. G=*@&*@p mbHHw$Ȉzub۲&I,_A` 1 J=/!:!! B9Αu$"`=E7``<`]GDD)9.@"3 dD"呕*H}*p!,Tt GD c c  hBB7CƷ ~r*ZA@+OyΓ=Oxg% Tj4AP. up>ĀgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:$o5O[9zYgVCx_X\Q H8"8N'Gw&Hba5e/jtM#C4M=."7>d%D&, DHj\Gъ_B0E tzpzYQBҵL`؀8H6&GVWWp:T:  H•`zqy0c}>TtiZHzUGbaw5"` \h c!"0=aYG2Q4ApRd!9P'CL  s]4j3&_%biE7>Wr>NB ԃg(OX, A- hAQɌOLxc€X0a{h: etdɃ (AySMt@<w;ʆD"Qah!!Q0R = 7}@u-SV3{@ @O} 6apBQM t2@$vMVtr"iF 2 TBJ k݋@B(cA}A($-@+ U|# @C,x$,61 LJ/ZѰ `C?bP*tp"H߷guoDY.3zlK@8|`CN9+6P|L`\ ǃ1UStUJC ^Βݐ@3. =ЩN2 C`@%RtϞW):c6X8Cdٖ^#ڧ}tl"[&T>@Hs;gR c$<EC Pc=K>h8(\I& !2aB !8d"J(pY,!`"N** VAp즱bMNdD*gM6Kb!Y:AxB#tAi g0#>@xɰ "@hPXa & /߀0 H!Xa{ > !]!P!ڧ_#*7R I" |" 6(dA++T( A r@&L &{A @P~dޤ1"bk gFL *@jaj6 G#!}Rh)pamN/¹u||]*dY: B#!`GaZ1#5r#[a3uB('bbC'5LZA!@(t0r"&@f3'xBƯMejGH BRd8 -և F|g4O#r-rOR,@g1"CPaøl Cf !((J2ha0>PƀD)'P8(H Y(Ơ-F%( #8>2 R!H@6+\s88$`KH2T0" n6` # ಩>B$&C`&v|2!'B4"2 }'U46/QiX8 $(" 7)^|fZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtISTH?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSab#|3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,@d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-(Nd>8PE9O* uEkZEAqL぀a.QJ7%q;" ,[[e\PMl",1qIVu.>%_|{T9*scAE8ؘa7HÀv#R.r[!xh0!2A PeIn֦oYnb2!&^ZkFgԁYy ڠ>?!]C?+s!t!r)6n0⁁WJj ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(pԡx8ɕ}Z+ oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIw_AY SG!zݫg@+འqv-s^x` -z *G :ɪgAΝ:x `+{I󅎠) SO+װc˞M۸sͻg/{ Bn|u~tx Sz%W_+̝aOBtu/ń}ysT}A -^AB|0? ($h(,&Nt,vcOsѣv B@P<@ CC/Td5ިAua .4>gܗOi7Xg A2@aO=5d> TOi-Jb~gSO#'褔Vj饘f馜viHسEր;ܣ:xs7>LSOAڈ;D.X^rc*APD샏>wYʑW==O=x ×k7\ 鿗IXjAس@B!,Wlg!FI>@ܨ:[:`\8;TN< D>3{6_QO_B`@W8{#>N(~>_ue=8W0DM= ؜-_Sތ7G.Wn?$:!g砇.褗n{;W.n#8/o'7G/Wogw/o觯/?S>O; {#KL=c LE| hGH @d0A_$Q<6EQ2H17@gчx%QD܁w!9 *PDz` *U\>ܱ )GIU-{D baza%D7P{[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+f%f2Ur!r#Rʇ-5Ib R]z!8isZ2aY=:쑖͜ 9@{lpt>Cc%%䅃Lg@M b(9ẋ>ς0h +⡎Ft\q ҃ tpGJTuB@5Cx%@R:QĢpV! 0G㮂 5 gv)^ zHuwS0KCôbƮ'ODH 83x+* ⰵ!P]DzYX1:>PC#[@NF${ mpQ %E+*k$" :djm`2(|QĐws@ Nܣ Ňd9DAJYN,0/|t脨F 8 @YD #xLs:O3/a!%K oPK$bY\q0 k4/{|XT*PLB> duh,G'Ѕ.{8rAR Ǜ b-*-c,ad[]20 3G$''Q24G|HԹq  fABŰg T`T ˆ3P1) :tblhHT/d+{ańϯQ j4PG< AjHs' YHArRXq@!t_iW&maB$A(B ` d JP 0?bݩ0̿ɕB 7D} ̍ ZekN=6qY ч= ZȍzOpa-%f`@CY,\Y(Yz , gȂA+:M :d},cJ7y*M}7oHΑ9!cA`8`1қg>Y^x+EKUR(;qAHt&U=S{aE/|6:r e!Z:BF1 pG<zfʋ4)P(? 2< z`b}  hjZ[ai v `aDz7X&Yd, A%pGvq % Y w?"# $Pg\E?ݔ@AV212W*eQ bK"2"X">(rS}g2"SN`xzXOJ)tb1G z i+@tb2AI ON(LNpv NhAX(7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7сDS@b j+R+AvDEj``-b- H\!Et*>`E)*%υ= `& `T"l.7" BBuPTwLe8**Y@+e% 9}2%p] gyh0/r/b,gpb`dÃ06c5h0Y 1؎>|cm $*%`'2=g^E@H22v5D@8j:v# t#+.E @ 9F`29PDΡ=48& 3!Ls2F -1s5W0#MWXEYސV 6m6AeDivӇ_X#GP8gP 9ZZy!P ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;I@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O=؊TP}Wva\^u hxz% W#Wqx耫`X%3K0^UY^Daa0|HSqV'aF'P!V[گuW0 fiLSGj֌A@Up%fVjKsjh yv(Ť AeTe]qvMGd0qE6"ȫN*{%wr0SRvE;T+F` {lF8Hzf U{^y^zsk{x?:| K'q[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.N Ԙ!4^c?b!'kb(,)v۽蛾BIO /~([!/b ca 0aPƫ)1//3'ZQ0~j cP2ƒ"2 . +\}Ԡ0yp,iПfP q0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"pqVt%m  ׮" p-*sʧa*̢vl8yM'H' Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3hT=jYonÞ*${g{G~ `Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQa^*+MWac9]}K-o; h8 /@ .dC%NXE5nG!E$YI)UdK1eΤYM00Ľ{jWo{!~z&w]{{` (=| ^EUa{0$ 簃=(e$Hhޅ!"sP P_]巹הa d5Dw2'Po )t܋Bz SsѥO^uٵow{0zٻa!E }TЉԉw(G~g `b!|P3J}*Po 0}J!=JǸz̩'{6%!RHaSH{H@ K!D3ZHz"k!oN*G>3dqg,"!FXа{ BtQH#tRJ+RL3tMF}jQ8TUӁ*YŬʗ.ʝzpgx(zг'*@\Y(   '8Xu0! MY{f1"$Rg6 1uܫ}Fʁ.̳R`1q6~LzASO"[؛7!f9 R}ѧzr`z12fsyg{g#0`h<J{b~`jzkkƔ g aKcҶn{oo* W.kgq#|r+r%p܉‘3r$7A^E|@)t@wd)MyJT/!c+40!Z< `3vRy@?_Z ,`Ax(1;&Cp0A*CUѝg=퉻ő*(ʰ{pk %; d7V`0`œ8@&0 \,g2Rx[QH1|@l C3(a<ῥc62ĀG XFVȸ4n"U*:(8U E@,A(!:eᖅ UdUxCXXy֑ӡ:\FWӕ*[:6YP{ kVd!9-ekيfԁXt t*B&VbE9>ƒ m\B.4`GX9'#) $b[~>ApI= "Ta@5$yሜG iG3Qzdm&\(Or|匜e$,FZ-6 ` 'Ubare2v=U @rKzLЋft\ ,E4wfh9J݂E= lâ Gd2 UB H) Aj4`؇}ld'%#FSpd/Bf}#+CdֳRRpESCX\(Iq~/#H"Db&{p` 7@9 x-EHSKX ]T&ހ-0+`XjC)nWCcm(U7_TbTf-X+fWd'=*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. ](n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>,61 }Cz$3EF;v*&[ D`Aͻ9G=xE:0"YW#W3 ˈ.A#Y ˇؠ5r? "0 @ #Q!؉kq5 J6K: UA ;7+/ pUzkM cX (YйYAHx%w?Iꥬ&/ (|Peig xI9h'aruC:A BJDOɀz θ1u X؉a9q9 DA*h*}8XH22;HmO2'RqXzh1q`Wu`X.Y`3%1pͭOCB0d(E_UQ|CY5eG@Jl3PPtcX fhZ+Ovc$h7@7T=T^<2d{h`F$MY`)d0/L0M~jn;XOƬd P2rɠHPLQXb(ykaʍ Tτ(BE0{^lf8PSГi\BAE&Þkulœ>ó-1`,@xC담~@YJTfPE^n9(ƱSt3d }X|#}xup|Xv .)㫃3o/}`ɇPP5k^^Sle|8fn[ϊm [{MT#Ahi 5le3of=q{#oˇdH)7[ .(rhq|#B!Y"xV|@D-wŅ_Çk>iE ĞӼz`"od[56ctOA >઀;zgGf4 F p?C X2Ҿ{H +ۿJU~4Ddz(e3?SgӪz\muxώ(uOͅхww+h „ 2̗> 'Rh"ƌ7jHcxB$t0=w݋r@=Ki={X=u!ºj56NV=|t8n{$r,k,ڴjײm-ܸrҭk.޼z/不ϝBzxppœ '"uD<A!c͝?L|%4!Ⱥm| ثWz((v=} `LqOā[ L_؞/S?[@#b/c3AA}G:|t> 泏=#># :%> )"-"18#5x#9GB&=#ADEA I)dANBYP`'m!>@AOp UvY>0@<(>mcp Р&tE5GhCB Y*Wmc %, A3Yn4W`dt@qiϫ4:"$=f,J;-Z{-jm9;C; ď:8$TLRwX.[>K ]&=P\O A):P LJ0pԳTq'r/9%qIO{!`OLI*L0̥9#Bӌ@!4 },)j}3@z7 .S6LDA6 Y#@Bc( U`'LpzrGEpы`cSfq $D= uCO 1w5^SJ l?ka`nJ:zcCJ # 2:~1$6yN!H} #Z,5ɂ%/-Eb\c,H0eɂh@3rPB|@TM c2)Bz%KmSS 1!=SSUgO @՛⊐&qBԊ 3CP > 0;&&oTE,%ppE)ʉRDI}04x3QUk[E0>d rqb\i>@C-,iD!0+|h1D#8Xȟ ̑$tǘJ·Q$ S| MO" ja3EjPt>1,!9PJ`DN/ahON=L宪ah@ns0 ;Hi0>8/p1 /!ʂe\WkQ)sH=N$7-H%#x"v%{xMbІI|嵋jG=ԡ͊^f7M^%,4m <X=j+k.=J`oHd`7j Pw>Li&WhIqZ x;jNpĘ:A\`@mn>/H%b==F^ADdE A:C|Zu.`~A僀\ !Πa1UD=Ab@=T<?,"?hVwía%V: H"B5ğEx@=QA >;\,TlB4=0kþ>OLYC9].#363>#4F#X1$%D$ATDCăU zLh@<@zA胹mXC̮ԝ|<Wd,ȁL ^] $8 m,;tũZDiZ L@ԣ`D D]ʆB0@MO<=X.^ƫM]kՃ,pL`‰dB8]lDDBNL H OBAI*CZv(U'*Wxɑih>XG!D>AYeP5fWzR{"@l6Puf GWB)B@A\A0Lf֩)橞5 ʬ)EXA@G=xi>̕=(˹>ïRX@B(*¥:iL`/مs,)\Al:CmOhBDѮ ELl;,A$ChEm}Ga@1KN;Tܱ&k<ԖtD:D9cG^^=L#]P.j!<*С^}a8@@9*k'0kz=NH!@>bD*i°C@lNLlR mD|lĊ,WC &<>} IN,ҰACA0ӡE==ElrjJYUlB+~&ld$4sCmY @+8]@)@Bס" عÕJA&..6 %hN脐`<Vz8,d@:[BL@AnI&OaEO0^M MB\PPan.FCvεc,DĂN80\\k4Bm[[UAHa ģ.E!?lEXH~&M1kpL1o<;0 KdFIJ@pP䚩ޜ5ȁ8@X>D0S\IJ<R>8 DW82p|zcHCmO@ȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐉@\.tB&'2((*&;tr g7QD)B#h@>>X@20031*MنN 1fQIc2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH;1?/`G@lK[Kf"5\p1#L7S?5=i.[ph 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃ/R:(oZl)m,*xG,<>j+P1m^ EP4Y^> h8Ŭ=#t>$/l ̸V%he>w'V ENDXqV KK pNOxQw>)/TPE>XVhWh7۩a,Fc<ZȜ`!m:hiĆgtw\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAAe8l"05Z Pr mX93F0 GZ*(8ACL{.C*tODdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZU'zLݧW

i/S C>!˃ @$jAoTCAzZ4K'^dYA=J<1ԃ\ 1#˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPD5#\hC';`p WO|p@A#N\=F՝L|ZVD^~CX@̈>B~<|퓎qx@ݝ$@,4M@H)8 D|zܻ/܅(ވ{܉(]L}$F# E:`@|3X̋;y ]Owqob@\DΝ<p(Q< қkQp` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}&=  pOO~%F+R W E.pA6me o; Sם+QCC|u+<{ g'<| .*Vf9c:BaJx.ZG{v wŠٯI>Cu⊟BqT̛{ RǞz6pw,| H|lA %(('F4Y$3B@3qA@sJd2'iKwA}jhσЋ:/'"0Ĕ3 }N),;" &BQ9 0+ʋt|J98 v.NJ~r(Mr=t]v}xW {vRʀ0Mz:'rWY`'hΞZ4(?ȡ2!̠ W]5|ħ'Jzק2Fʞxh  " ox{xuڞh /Y(Ppv:Cj8`CVèf'G OnjAOɞ6+, [xH@ iǭ5u|92{9믌&0|:0% H hD>Fu8A{}Em hHSL:; _zԩ@q\1yq|~]c(QߪmA+S> :g0UA ^9A~!!ah_;AGFDHJ \Gq&xq,{4mBxp DLghk1LiZS9N=( щ*V3E  y=J ܣQ䘏b61N C2YQ)E񈀇qzF8 H#>QA q}q>XF#u,~y#'aeTeq́x`Y>b\t @`E<`)I59C u҅Sz[9K,΂rH;/؃p7-dH-ZP<aA EG`%QD!F5<(AeQM68_~WET,I EdXhE(o`6@>bF*"ff v#2@0:##o;"#H {LO@ͬb !B*BR" A TN@&#f/b³)*xbTZ)^cj+ bX' MJƮS:SRpHR#J"$!Rma.ꡙ( $X;@CZ/&H' pEPk&R,@ D "AìV *F@uQǑ5)po,xv dT1jԡ+6@+mjEȫ(Pʬ!ì0 =C~7&nB&B# a"JB" ''Aȃ0RHҞzbbbb" 0>I* kaIZe'+L-$r+42"݌'()/" B<1Y1 $G[ٌ/d Ԣn)mB$"Kª$!ecZaR- \%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ݡ(s??@;L),Ez ĸ6qdT2@"b@)QF FA3C#B2({DE/0" *Rhb3K3%BZebO e؊4A`BsTjރHcG"`? ;F# i6;AzAHn>q.`^.N'lz`G @K$Nc:'!D,!s//f$!dS/D"`*@Cց|\;$ $ G >=d ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*D@Z@@5c5U#VdGdKdOe`^0ee%%(@ R'pA?qġQLciViiif6t' "Nuڲ$ B7.dllmVm׶vܥ$F kV@^a2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvT(J  B$ `k3 `k"`#F)xh̡z6@Ge$J@M%H%jg1b30|V0n؇%AzB:k8ǚA9S*wB/H3c k4@Q04&/ N%08γرF@ "◒+ْ3.tNFp$EZ-"A0h٠zx$"6}AiG A""[E* ԘMR$]-1'+On1pa"MR3]To\fm*513 #喩>1jJK–qI`/?ٝpb +΂EL-G6:q@:0Yٕ)WYA5C! v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?D # ``'/s,ߓ)0M*Cݡѡ:t*!$vwjYv |&F| r@"y@r}'v}C"nBHbns@TSL%0 "Ё b1`A` \JaB?~Bܰ|փ0BQ^Zc~s$0.aBD]yF0thrK/[ ~>*y}ԁ?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JzQ TYFCPvAF  MsPn2xeQa:Y<0;}0 ^=x + 1|鋇0={+p0NR.B #`7tSgO@=wE8HU 4!%3_*rr7n\Y_T)ӕNWjV 5XԞuB|Q4HEuݽL*X)d،6t=nQ>!|v2O^DžO4X E.pm=!{jmP„5jehmp م ` A#e_na~b"Hb&b*b.c2Hc6XYnp\4AE ѧAN qF=)$BCA=K6 ;\SjSOS5cE>Oу[BdHpmi}#W1sA3@B^@>EA>թXcBs8h s7 mMɪd}}Nꆓ.vEPYt8@X$#Gdi_jj:"D  E"3KВj<$:[)#aM`>E x &0S en> `OȮšOt!>t=(+TMfEמb29M锗F kQ1Cd\ H?U^IAv^yd&w=8{?ϛh$OŨvC ?yONy_yoy4scV2OPC\{)K&< d<D7A0/h;nO 5W;%ɔ!:>3BDh~}ЦkUtHkΏYa3@<|4Rf] 2>)%ߞ-uQHWdG; P|8 z\ A*}̯ˇT(d$n%{:ʹ@, B!Z݈0Qn {8HIO@D ,p3_a6DJ@NB3}0!PWB@)-5 Ȓ8>8cq&80 V''v]mzWXV(cs4!^uM/=Hh ؃v@=` 7 ps,9ωt~Oq!P\бdh!&M*3%R飞>${sz{#!Y=QȖs򨬄T!jUM|즳!u2#t!;{T,tM]7T#"$f Πd O8P1mO-`rPDŽL HHPE7dԂ )/_:'hh U$?v@H}d ,#nB(ĻGB5VFPs}w&=0ѡ2! `IJ/`A~oStw,S|[9ާ`$$p@S̈́ aB%&no9#Ug`} ?(PJ(<M&A1 aB2[xф ^KTCyMpa_) s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}%1&Y5# Nmd!@P (BP*n)vnnq}gPrVޓ@#_I}xE "gjp#sZ" aqnIPt IOV<9=0tbY? IR@IF14&#p<4X))@V`71X# ED)OIm7 !901<~pdF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig% qwj,>3(5Pf `%&֑mo q*s=fS@[|Z@.v0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySuc6 ^x2.@jq qz OR% goч^h7(@ @ : )`ͪ'$'PAH}͕ ␠`gB0xRي!7W`zC(($#:x p@%!I P S) paUsך S#D&@ ҩwS鲧ezgRb芭.P؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8"`Hś"!644Q̛!MCŽlڑJ4k狾髾_vɾ5ɒ,{7B p0 38^|V2Q@Jeʃ7H@"iOY j 2ܶȻ! x,N0 P" 12ġ'=_C'dx& hBgvG!= kyT!59@JmrBeۚ cc=Mm׍G`pce4IT%]$C[@{o5p)`f1K#Z] Ey,Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeY g`*RB*âyyae 0c[ 898^30mk773/O $_7R+{n0) C -q[bBw;#ZAX!Bv2r 󸒜F0|s5怙5ow{F8;Y"з5_'}0h ^ZY1>s5 2e[ F=3}=;^ȁ@5GVz#vz< i%oB/6 B{}Ϟzm$C6:d!"hD#DOD1EWdE_1FgFo1GwG2H!$Y,Y$B0[`'$h)${jр  "@؄-(A'(|JD𱧒򀢈HM*Q `|0郄l 7`suq՞xkYY( YJ=u;U t @0RgKC 3de z3F2 ]R +aPdDRG-7La9#>>`' (S@'j7188bFeC A{,c@Mg*@u*PxU1цjU M\D :]؁ІȚJx!6b9_j1 u!HoGeH{w#0 <{p-W:Rv24._a'XZ T@M쑗4Y@=@A@uK<4ɋ2'Y0P ( 1lxl@2Ȃ*a A{|k"Q,X !&@,B=G&W a~=%O\/ R#wOt8`:d5ѝ  *P R>&0 \@.xW0&/Pq_O=gHpcl/? u88*d X_‡؃<@PZIf#8k$@h2+e"`ٜW`e,+p2A=zJvֳmhE;ZҖִvF*#N`p bc $6qκFVo@0Q YWP).x I(TxMɛ wxFkTdt4{9P,h-P p ~;~Xnk`- c@x$sHFϤ  CIx(`0o"k"FxP腙 {ȥ|DJI؀>:X!4 zXYH(ƍ_@>9 +ۣX1pOWl}`}֒W}A o "s9Mb@:`{P-oXtTpA3({xE|pӇ,'Έ< ƀF Ȁk} ۓ \3` }x iԼ'T>8 `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇$&upNN{6IZz tBS)6yK=X\ x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z 1q7!X{&bQHu8tˇx&6mq_j 0YävQmmdϳЇ hH t`z#La)͞[b 4yqiᣇs^5N!P@Z|8<t@dzH(0ԄmmmRpIkip>ߖpySnDt)7SGɇ1HYam66B=#G$/yۺwTb h uX|7+,r|9n(Zn$q ́d2Qq-x`Btx2J x F#Z]XdYMKa: xx $X2Ϝ2 wH*Q ,Jɀt@N(hljt0|) )p%tI K/0t5xn3T@TvfvivkZ Pw@oJ}h{{0r}׀,6~ o/GL'p{"`Ё@z:^<|݃70=w? .:| tw/$eR{A̧̞$NҝL\WOϏD"U4B>ME'#ܳ {u=R,,rHN !ɚE uҁJdWC6Pa@t^23 o>E_4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM06p 0 e9C } w/ňgo {œW@y􍠝jO=Ys!ys?O>cY> DOyPL=vOSsu` Q@`=s=Ocj%S@#@4=t}IpCUPOZ+`HbԳ7^>Nw= wT=gMG@"n.SyHzn}Sy, 0j t=yQ<,OCAwY>(c|ŨCèr7㜳;ܳ?C]EsUbVrHPC@O%K&< @^<l5rFXۣ5^G};s ̝k67h>0va=}hDUݓESn=:o[=T>*%f@<3 t@= (-exOc@L/2ig ߳H Hoe=޽ɖVI|[svך+-+0AN1 $)@^>|wܽ.ҁ.CL'ZZH%CRB7z# wm;rCw0mA;A^Ey8Ixp`9!j@\[alZT"}``j4!0>,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ%U 'M=@Pz8zW.J:* p`0@"C"< CO,v  LGeѣO<P>D,7 >"‘FL=<9=ك@2Ȕ,đ/Y` 80HjUPS9i@tL8KG`Gєx5.Fa2)3(V$>DY 0@x K'ZDIʤM%Xy*OB)\Z MD=TV2q%Ok\Gr2xXd!@WX㬨@䠏ɢA=yς6-iKkӢ8<:hQ,#сH$e<0QB_79FX>Ґ*5&5(>"{c&YI`9r:Xzóe8fM1HjRZ>  O|bH<;_[;xP=b ɢGxج{RD'E==,aGo :,fO02HwCă.&뾍05@y:lI\gޏp@om,MQ kf@գ9֓Bd; PkoCЫAܱ C"pa]QM$yL42tBCǓSkS:ժ^5[I 6V`c*]05o z@8G_c'NQޏXkJaoISimʁ(r"/8xK@u$y5bL?# Hܓ(m9PƜX`8;|(I+?10VGaj!{Q,A!ʉ 6񸚖O+ _NMJzgC$6:* &4@Dlܑ!$>%7HreGhQ >ï@ࡎkSv5reBp L,HS*Dk[\X բ=Koӣ>=Kd4+ZIbQF# 6XTk< @: .Q݌wGFB2~<У~Csl 10.0{Ljj<:tNH@ ODYWNCP@C$JH$4(!RO`R 'H`\HP4eC8BH,` V(@ޜƏC } ?WL=P,,=NUYe@NM`\>G$@i: (a@J`ń-I9 Db @C GCL]>h\Jb+>!Hxt@:SOtүD'JBԩ^5Z5bc6j6V .:,2a]:GD-tXrX;D,=>EpC(Ns0  D'EC-v̈́:r8] >L^ "QäԕC>XU@Y N@U4@C4O$>AyЎ@D!NNN GDLNCaC_CWxI@4U%E4Z愦O@HFC .]]IGhZ&N=_@́&&aaCb.wC@'CT ; RaxCE,Ft=[gC:EZu;8=AWH,QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`>D>t=X@Wf m@8CIO x$v-Nŋ>ԃD,qhi kԼa ̂A]@=C B$HOdB`p@tO<ߔQ DL\(DD(fH}F,>d`È^9>@cxSDLIF&A@tG@@fT@ L`\Mh/@lB HԔk]N $KYҫ~`F]e8d8LgaHH|Ef(C$jjDj Ujl\܃' Lfe]ZyG@Ȃ>T@/>ȅC'( &NAT9$8Yt,ST+$c Tik0@h"*J`j ˓Rbt^>|GAX@$OūʐJH@u7@E[A`O-mXn?02n:Bn䊖C ^:.G^Έ a.Hh(C|kLGY莢Knnj=lB &ª8nE*(@#.!͍j, ioboo$Fd(F؃9,.C$p po52oqpt.+\+FKcpksp{pp p p p p ppq q=@.VhYnp`+?hUGk0qmQ_tkψ@_1qo\qq r!ϯd4e&W ,R D+gc@ %OC9Yp@8A$o!@YoxmnKY*9L)HP^lk@,8T@ P>G@}(^E:Nrl=xo*|nn>mxe $l Eԟ,b)B3tC;.CqY$3o.>@T:FJ<H`ELa/4aapVLZ1=(h2TcF':e=B0HT_CY4@Q'&,1$@;V@B lUtQ5[LPL[ @'@h@dtNﴳDD\lh<'tC|[< $E5AG ,> x Qu\?jvkCkBu@&9:lqELGD8vL8rpPptBS=;4,LnPZ h$aV$>$\PhŴun4F dt6Nݖ@@ @,|=l_7NqN܆C]8NF,T>Xg{@YtkC}/mF<@`@CI<PO(r\gq QDn7,@CT7 F/FHg+@H9$NW !tw{ Ӄ,toVX4ހ]-8HBG$ ÚÖ2Cq6`<%£$H2ECJ ȋ(e@ I>ɰþ VRƑDWFUEY)$E_[\X>Hl^ 5/s:p2o,C M]C`_MiW^kyH|Y@)-/{`B0+@b@"wO@(sg/?tSgO@="4޽:"Q̇: '2D T9˔k^٫>wB={h7_B}Df*qa$MDNT@A b=>SBY\I Ce[Zƞ Quwoufpw^Ǯn:\6FjcÇ'VDw1Frz#vzY%)'*J'lP8 )Л>LI;ߜ gki%d#B# ׿ P ,LPl!P ) 1P );`0 b آ{!@@a{RD&HqE Jj3rYQFQ2Dd͞J2L%JR9T?zX{)}h =(̧H\|@XT 왅Gΐ|0`MІ8`ˎ!F$G |hlC@!<F- QIQ +MQSX)Vk { !&|:06G h?>_X= A{ԅW^E pS(4 Gzԩ@ V/Sʩ8? : ha.{OMQ*F3eP9l駡Zꩩ꫱Z뭹 gMrY#`ԈI9@ `A{{PRJI-`6Ar'H3,Aa!7$X@tU|x`j W}_XOcKIڐhI@ % ogP=rF`b',obY =1Ler=P3tAGI CV)S0g%V$ݩ3Lg+]!.2 c>GFuUdOAЖv_@XZQI%bҐv4GtrUQΜ,psiFEI 9惧*@=uȢ>aĨ(m&"VbCds[桏 ``tL=xb V1CuZ\QUmúCG G<*+B mvg9ϙuq5qM[{$6/--z>H(;(jt!)]'mG1go?E)kg=ρt7 :`c(JӉ . p=6P|  ^|$!d)RB`.z 0X4јJ´%7*yI-Іy}=\0@o ѓƿ:(J"B) ONw8H/Vša\+Cf:0A㏢h%g Bq<@X4AGh8 !@ޣ$ ; +LB8&`h?#n_c60aL J~%!A'F@nR7N@ A+@olq0upydpk `ۀnXzK"bA`! LPkP R "F`!J (gG*qK9CTŸB1rlT(b?)Υ*h:Cb ! "@L gAi%2`t2Z5C >+`F8 AbC|f[Rq2aa͈3ı$*$Ƀ6bZaƑ6 !72A! űYI1JJ`?)"j{n.Mʢ+t@ɞر! |$ q0DΠ 9#1b!D>!b2@b9t?JA+)0<,$PbN%Hm4=,ٴMM4Ni<$B(g*kH@/%D@Z`NP{BtQQQ!5R%5B$ hI&5@,7Z.kh ?DU+ME!zN65VeuViVmVwNSquc5ICI.t_S;uWYY5ZuZFWOJү$F Y{S^a8u]ٵ]]5^u^^^5_u___6`v` ` `6avaaa!6b%vb)b-b(,uK?5>vA|BYO6A( a55e8`Bv6cq6gu*Aw p%W <́'дa*O@ qM<@iQ}7PX"AG6PB@ b16ExFք60"$a*`|c(m9l7S?R"V8%lpwAB76`rbaRu2ă(<#I: {8#A/`c!oj$C:b+: ܡ?ҸB djsxw9'XK⸈XC!GBrZ"` ?0qOXBi`k$|fzx)0.`{16 >v0}v@$ Y.$Ȫt%Z"ui8|\ؓ٢=~ɹC`U `x&BtALaΠU|C.؟_*&r:$bh*`H:XaR$.rF I7 x~:a(BTC>0hAA&"=V.EH?fkV6\yy:x_= ::zbڟ/H !Ȟ9%ڠLKB:" `@$<6">F'V d< '< `٪ AB*[`eJ19U{dTU n7ٲ8w5r)?t . KW6@ୡ&!HN:6s|{6/~܁|Y_'<*_$>wWK0|  ,`+@2]גE&d Px@bp"oM$E5p#  ,C0+;ٓ36 ׵+F:.l2B2a,3㲨%b+B!K,:>:3}ACKh##6#>Src`]#)bbD2Kfg^S ?­ "pϞ|to;{!ȱlj ID= H䃢DtCJQǛݝױɔ+$JdH3߈z@޽:=e:^ ij0A9.p 6XfCPD>!f1& D7}}|c 4TYS^ͺװc˞M۸sͻ N(eżz8@ EtW/Ļ3Nз`}Rαz 38髜vǟzZ-4%pc} =H ^}Ma^Q1sB D4CA>PA=&F=xXwyRPDSe-OF!4Utڏx: etqp4 NTBg#G`@QMT}ݽ3TxD\JOAOIm׬~"dv=QwO=&yϟuXxgx块z L ijԣE%x

*M0xOS:`:`*>"'@-DmH'L7tF9e$˓COE4, N/IN<)5^;t НAk1WA>T%tOt;2z-N"43TMd1[0ua"Bd \>sCBX>k}j7M@=[MdOdԋ Bd1OOa+=¤z?Qo֛_FCE}O5Zb($WAHRp.= *w ^[Gd|$y#I %;d!?n _ [掼co{[R@APY[ۘ a&Dl1=־b]  н {k2uDMR''G?5%JF8푐$'IJZ̤&7I/1=V`{p8Ç&kssT~ġ,,al+rU_i@@@'PLm C/q8yAL(D=q2o`D#OԕdkPYd5LǂIɈL,`WI:a1 *{3V)T=6+srqTH 4zQyiL9AgZE>T~V-Uy$ 7?q (KNbJTz0XGהr16S#x[&V䕱,L[׹ 0$>Z w`AȡViˇ1 r"x (9IҚMjWBjj[G0/G$p*(@}:|â,X~:x@ (l"Ԡ#F )9vIL@w(p opRԨ!CHywZњD\< &sȦ,J~dNȺw5DqrGLﵙX8 Y>l~"Dt< >u'Bz4gIZ.k$ECȈ*#x"ǗWJws-G@q* zotCz&J=O &k0 8>GBMkYmC]KRԨNW,m>JpS#zd21%Xlec{΀`'Yp;]x~PGg ekق,gH( `߂i4M !#_)e$%kࡎ&:T{' ]ܝ]ɻVלH_~%#i:&+ǘl>{Xzӥs]OdKz#OבsgX>`s(0)ԭOin;iy)x:w&5L@p}wo7{`K9ֱ?Éжzh3$&9W"K~HT’c8.G|\ G T8pGRW4Ѓ a䏺;*{G<@Y34-9;0O0<O*fqȲgpC!0uP-M7M! Yq"QMP}&UB#7NP*6<$.QS0/@!uAe\Xqs90S0Ak#z!P9!`B8>M|7kwB[8/R|t`lGx^{qIp ħk+9RLއ:г{H<:}B"8tP9+a҄8uʸ،j  2KqEr8@X"Q`CIe1p)PD`, Wbm\, x>=|0Y0nt& O#tS" oPqD^8%;3@0w P"$`eOYc38 @7 X 1;ۂ80ywO@/ @bS1x۲0Bi%}aIPo Q09@S41=0xXF`)0PI`A3* #BTQ9 ?r`y-0i `#0Er6"ϩ t.bWxM9/+qVָ8a׍iXrgƒ\]눟A3HU?c'eVePJi3,C5"}95PA%1rV`k3x+$@A XQ% gPpsq $P  %uDMB4r X>DB2! Pp 0=0KQ!x81b%$}0эQPMrPu7AI3p~p w0}0 Zps" `dM:<`G O}3, Mj`f1>Zp$#7 TM"[Y831KhW7->;H=0QKPII{#e![ ?ҦH)" QKqᔶB%n $j@8ڷ~kZ 4KzA#` r. B^- 2z{ۺ+$=ȁdB&AC p01DtcD*3CȋƋ7zC[{؛ۥ۽V`|@܋;K[qȑ{¹ <\| "<$\&|(*,.02<4\6|ôA*w÷8<B\Pq־ܻ@<78ԵG|XZEU8PXjI,""pIk4r 0 !-rUѳ`[<Ȅ\ȆjPPp΃sr%K!P%7UQ|$kI@hPI@>DL$k.\9@@~{2s?cZ,Q ƜU}t :|Ra`:zlN)!o阑|a~"zzx.z}I=^![3atPe#^6w ^Qrʽ<c$ A(u# -`l/uq 2&\ÙԢ{>gp1 հ1ӧR!|QP<`}T +;H8 8 0;TXRo;6Ђ=؄]Bd %?/聡8AuDQ# z:([FXٗQV!0g@& m1`80֔1I=3Ol|} 4!ܭGo!$cMa݌p! 9Mmti |^a,l߰7EU-+UH@?a7$ YAgHg N^Pۇ;Lًd$04xHM94~k;Ats"< =C"$*@KR6R nSaC70nKDG8 7Mr6"QXaS* {~^4:z2pH"~[2VdX謡$BS @&8I ٕP= ϬPqJi0P'm#0#SIbǧ2>%>ꥮ=9Y&BI>'.B>-dnMA/K0N <N!x!|qisx@vD`&1LN}c8m@ eqLZU=g\yᘎGR~1g2'{octh>_T8"!JG7%He@PC!MQ P0P ud!0FQ"ͮ-5e ,=zbW"tb:A?zϟ18P A A#MPtWHf.ç|:Á鋰/={kU=u6G`A|e`r`{,]6 1„8؋Л>٣R944D] 6,!i8 ޽aŎ%[Yiծe[qΥ[]y_&\􀊅A4, 3Cwu$D{з`}RpBe33SY3gϠE;^*:=~Wi .+X\ e!v7({}pF>,|ҏ'Oovtǽ)Az̲DZే%Q/g )~ KoYh  &ŖqG!}di7p]QFmı%Q`p!Yx`I :E)ʧyH{f`hu*PF:T+{Lwi) {SJx'}zh{Cѱ&bPIObuVZkV\suW^{W`vذ艧ч, "3Ї9Ci3- {:`V2ljͶ,wt'{ț{*c|f 9}iwGwpgN@g% )cÆf%LphxxG{,@:n*gAr|.Z!d1 ͇xͧCy@igcntIP"v( ԩRx&l.ǪL"¨_x@x Y!Zrǂ{=Z, 2w {zٴC!0R'Z XM+g懠dFJa?!X~{{|Ol2:7_ h恆*y -wYo~9_8@rs0 YCIM>v2"t>c]`f"x;5 ^S>Ⱥ,q+ʅf|pj ÇDY !D}6`*/&b>*q6SLV?D6 ox 2 RxPUp*ИБeQ>84rB6@$7|K`S$f1yLd&SA Yf@X{}V̘,0mr//q ^,D|HJ|gPBꪺ/f^$`WK*)A7a&=9JQRå"|!!Z`DHtn& iyĄe"fqN9(oB$8P[lN{wiHZ8Yss|g<gxI%jI*Љ <}R>` \eRaCT(C-Fg (*_z!k>Hak%Ӫ XL!8r}M:H}=  x}׌9y1l,!-YpnL{F]3 `DKJdC$H1lZSpi˽G.";+ #%ױA"Ր]$cL,b1Ds)TעG`8tU2'OuhfY݌ RTTB~v]kg{GY <S/5! ؀>\6OU 0?`Gޯ ,}8sR fB%u3!%>q$aGe} Q@w#>PWl50ـ x= ># G)#zlL7ds|އ,*|' %J>3p Q _kbsqw؇Ĉ5}>w |d/tMyH}0# vi}hI2ۮ^Sd.$Ӏߨ$8 8H  ; p p](-ܑá(𻁘|Rx9w qk:;DDLDE\DFlFܳ{k uȼ)gyԸ|p Ȁj#y d#޸괁x@5 X{ؠDHz0 #REVD xؙغ{ h"{ (hSFP6֒|Ej%!)F_&rh8-cbFm|p 1Z k 7 F!8ǑȒl o{G HX܇VA`{p+'Г|*)'ðh>ه/ɇ X܊}p*F{ :hY(IXU偖aj@~;rD|LȌLɜLX,|p̽H^(&y L(䞴ˆ@ռMMM|zH MΌ^ǖPμ0qp< Lt\N OO,ON4ф 踎x0MLOOOO\4 7Oq(pD}P P P P P PPP a-Q=QMQ]QO QQQQ5 `B Q R!R"-=,Q#]R&mR'}R(R tH$R,R-R.R/ txH,C%R5]S6mS7}S8>HS8S=S>S?. h J&?mTG}THTIuD4,|`ITP UQURu( dO-UZU[U\OCcQ0ۡxXzYUg}VhVie@`E#Dhi=WtMWu]W*( (89 ;2c NeW XXϯ ]r3 jVPs-XXXM;tPehS )aоXYY=|ȩ?YkؚZ-Z=A ;cLBSZZZۇ Z-[=[+P ۴[[Xt+[[ \tuS=\M\ōT}\ȍ\S\˽\\\\S ]-]=]M]]]m]}]؍]ٝ]ڭ]۽]]]]] ^^-^=^M^]^m^}^^^^^^^^^ __-_=_M_]_m_}_________``.`>`N`^`n`~`` ` ` ` ` ```aa.a>aNa^ana~aaaaaaaaa b!b".b#>b$Nb%^b&nb'~b(b)b*b+b,b-b.b/b0c1c2.c3>c4Nc5^c6nc7~c8c9c:c;cc?c@dAdB.dC>dDNdE^dFndG~dHdIdJdKdLdMdNdOdPeQeR.eS>eTNeU^eVneW~eXeYeZe[e\e]e^e_e`fafb.fc>fdNfe^ffnfg~fhfifjfkflfmfnfofpgqgr.gsG>gtNgu^gvngw~gxgygzg{g|g}g~gghh.h>hNh^hnh~hhh5! ,fBBD^^\jjl..,nnl&&$VVT 224ZZ\JJL::<**,zz|bbd>>@ tv`İxļ46@ltt b\`BH@`Z$(8pfpLF@`Z؜䐔prx.(8XPX$00PXX`(:0ΰ0blh`dRlԺFJ@ԴNf86(zfh0.l4<УKNHJDv3|{Wi˟=:|ϑ./z"N%t`FS=#G߅fᆳ<#>`R1TA.cQ4hЍ 娑;= N>ӉF)TV 3:3(S!p Ih&QlIGqvdP$=l(`堄jj_wP@9# FA22dCڳ,iIh:*B6Īz&sFA<fp+[:N>@ <.&H@FAHn[Sdyc%$-ښACQ<`,p;Dϑh+Bx= POK~S:pPHZijaupϲ,@ԃ@ԃ4:H,<N,2DPX6+==BPHH C@ )=sںM< @BCt>F#]MhE@Iу2.y`Gψ<D<#G/j  Oܓv59= ;B3\C 7X`Ol{޸<:wN  P>#=0/ԡ |%"~L#@WȀ9$ А&f|C77 +1AzP  {$uhG2ӱD (@C0USȗzpG3B BPq=q#=q | $ "JC>H1IHArI!݃>*`Y%@zqzsgQ|p'XFđ$2K@' HeGnyVWH_ L j MB TPL%(@>1|x<&]8jV$`A" @Pm*CW{ 0)AΝ!x*y/ n J@*wZ=lTx@{Zp?QxP~T󘇦,kN(Ʌ~=YU1V:u LmS&FD`G=2Mj3s+od"xD IC nz#!p> ؃~jb){aG*߭$k\nV2Q`-H[yPDLZ*uYr0s: Vk>umJ#"ykMϊe2=c8A?CXlA'8"x3 ]gLjX@tN(H,0>E ':܂0p;dE8"0rYtYxh1Oey\+e{\Y P`*Ch՗2 G@t-yClGSx\@" X<ڭ9)7#Xm ̓/!gGC@l"lLbiOl2ER4Q 0<ԑpBuS;= ʹR^C:f!m9ߣ@fsiD_;WpBz4j[HdQpt d?KD9PT."pd<6Hb_}u\>e="&ثMg :`qh@=Ԟc옍8&zkuXH@k)z :ĨBC)D.{=&-(P O|  2x ! )HЏ{jC40!H9 [z0ie+ x!܇  }@TT'EV=r=  !P 77@W5@M}5QCg A<gqH0|=G&!y&<%g0Sf1R t`rcP+v02> h_P=@Ѐ b}~hQ\G~u5}jl؆0!p ?pUA7$3-p0n9u˅! PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'!&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋr !9Yz|T#0q!"4U0CWcMS S,P_ $0[U8깞[Ixq$ׂYYsLLW` ymc@pNI`j왡HIu$y'P27v)W1mrwe\2*_* _ș:DZIG̢sR>.gmf! -*.`  r0dpr:}ڑ," gY P`S0֢qt]`waH% z+4Jlk[Re6 .40wQ0O1pdZJF!3@h)/D?#u\"gJeP#0:蚮:,zT Yq$"AV*rPO@d&bfڰzJj$ 5jR8 !~E¤ (67+R @a-{ 2;4fc.gZЅr %"]b*U$]ǭQp@,H5Zq=K͚#FsodV aHBmpYNʵ~KHGP[Y}Ya& hT =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0(0$:Sd&Z:A173p#7tc79:,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLcfIP 5aP@Sq'K>}P$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†SGoa>$p!ࡻ=wocϢ|`x:՛YB;z{r{W a$T zۮ#|eY UCڵ*n\%^!T{ vy :xV&]iԩUfkرeϦ]mܹuo'^qub>xv ēC`A2 @\½:f܋d_=$*S9=4OTH<~ o*@RC(BZڨ,{/cF׆k/г'{'YY1.*AJ*>ˇK0sL24L4TsM6tM8CgxXd h&PIԩ p($Z@H*F{8H{`z*C{[,ͧY4#g -@ v"sp"ԛi&N=yez/ dy@Bl/ @2Oz%0 Jŀ0ŬgU]:Pi݋t"h\h{a `b3xc;cCydA@}*  ʤ|bJ@|$ x@J(2θǀTJuܙv b6T *L;# 9t(LU2d{|7|y+4ȏr`3dQ ~ ⩠^As$%4! AQ+5oc2B7u@ u  $@V$zw@ <=GyBD g?DI`B`T P#fM!cKKJHU;` =qA iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t||Γde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nq6b1a@ZdP !#uzaܡ_LoB߭Ckʁ/BFX0u#bJb,/L f#\pj:wlBlcu,dqSr(G&X=|Ј1yͷs2{P-YH/_xc!3uIUn?:h]WL Ϩ /8-j9C|LOT"_yy\{PI Ԟ IJ Ç䁂 ɇN` |(({>>uo | L_hhA>3@p@B , ?=IDci ?ʇR|X hzN@w 0Ä(:\" 9hH3%;FIDS 3 û ɵ0 ~8{pDي{В{'Җz@FNĀ")|3ʇulDžSчG1A`_ FMdQĀO YR4Ea>(sS;' Gue( zq$ GQYZ,[̇\\ h ӓSrGx, ]3h NC5L|DZ*ȓ(p K ;8ˁ0D%Ӌ4ȇ҉*W D3Ѐ$@BS_p 1AP YȂ21 5s:0J$.+Zx+3`˫@ Db, ܡoMP`LQi{ |KXLt,P FL!R0x e L܉PhH< *;30q 1ą6ͅЃ  K]Wj  {̎eX$ $ ű ]k#{|0$$ |Ї 68sp9#l*-*]2L%k B8؄{R"#,'hStpIP;XY1-3#e$%RHu«с1@$ SX:H-*e4D< 1]L }Ӓtզ(֭V N\Vi$N#䜈(݊MpHzԁI#xx( [5  h2Iѷ4x xi{|h$ 9<= bP*{x+C!-B5yȈiLNЇ>pX(xA $Pb@|x P4 ]w 쉟؞HJ{ ex0ǒ%1 9{i[-ok *qԐGQ+ą" ۷c X3JEuAHV.YT+`qA%JQ$?esMГ[P/:ktc[\B]8EJ{8l#Q{H HꨅJݯ@`}( ՠĐؐ]uF d] P XN=h߽=`&Ͷ2#t:x !!W|Ѓ' F`ya!zOf58J܋|Nԟv۠+{">P" M>5LA [m5%"ٰh@Q yY@RP)cRCLQlQYccP k]aH>99`M4aB4fqDxsa]=cb'ч}(05{neWY=.(ه!ntPOЙ ć @#IPj< EEdλ{|Y6\{€Y!{0JYhI{h ʠ!eR!&M'hɁp4`pȄB9mRF"!""# z$4q؄!jܣ9(% PHYl-mr&O}%/TKq._s6Oyդ؇M M`zW"h*;ns?s2/M…DA2k3Y^\X")pDtJNJ {YLV< rK?uTOuU_uVouWuXuYuZu[u\u 脞]2 Obc$H6av]v᲋⬉L^#_n3 MW 1vw tjwvIݘ3w).x? }($kc th呂0Ӱ¿,9H 9 GH$`efՅPI3]y?Q ]7 N0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4=oV@3&5"+ 2q\AoQ6tVyLY>RP#}043Y_˗|PI?XC "@roh8!~J}䨀$Sq{V^ifN|Ҙ$W﷍{'|` }^w  |_+h ‚Kx&|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=wC bsg> ~"^%i`P='BL>)`!ٸ)p`[t37b@F胗h|KAFEbrO;޼O_\+bXi-B^'6YCAPr"%PHT; г=8OR 5I!gAcAe @Aq=)aUP+v P;<.тI PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,ã=>)$N@<}^Ep oj)z):*}#Bq3Bb(A=,CC ʁ7 OA=P$IT`Rt=TģN=E68D#أ@Fl[@+[P: =b?KCE{>@p80T{n.kOFʪ=3 r E;( d`fwN+A+-b~sAs= D~4޳yO'A>@A;へXyR!<:P:7lSkbAzA# RN=INdQO9[a> - 9Ѐ >=FC?X @(:25d]lYH9nyk2_r,a#"xPh"MG @]7/ D7:k#()RV"QsuX p92~>ʀ1#A@G{D %,1`"h: !72 >~zpQ#gd_$.@2( n+aY" qW|~ć; >"r갇i ^rzl` 3x ^A& |dr$-2zc ;fG<:h@yqc(azh (<5+t hEZ'؊@қ_G"Ye>f8rx`WBc&%uẉA wUNp! Eȑ=(֓+Dd"F%Ta[AI(DCfA,HZc.SU`#x@zTt&4iBPȉQI׺"Dם 8v`H٠NT0/ԡ&&d}ld[Tw>T^'jUIDI!__so<ɠH /Fpe"ό4ךA&qa{Vk,2~0#,asf 8؁z p>ge>LH/`Y^M ^AŃr(@xh Cxr$LTzifRV^ pT8)p@A\" C H,a%FDQ}L$G1 }Ȣ+LdT)P1݋k~ d0$Y_qO9-s=wpd7 y|n$`!qHa,A 9Oo׃>r|IoXc [ Aaʘ!k{>BM\M0Q{ƛ*ppq7-. `/k6H{QcM}T}vDD3W-HK#ϹYl JppD?65iH6F\{ 6_y<`<\cH=|2[9m; !l#ʃi:Y?xd ߐAG`03s7NB !C#GFUG!yLS8h) r{Ԧdܣz%[ BYЃ>v-u݇#VAKG&@|<$G?^ALa`\BD-5FCUD3=A, =fަO  Oў8dI?B{ =AY_A _!`%Y(MJCSL;5C8`V> EZu,dr ǘDaD=A_#bMPv4(-Zb$VbFdA U>l H4b>-ă+nB+XJahA4m @4B_v8 zLAA֎=XXPġ+b ! `m@$AAGzC,;;qG1" #B@ԋAbAjmI䑜*GG=\^aE4Њ@g%H >dMDHc%DZă!IJ8>r:CB@m>XXMJ:\C Gh$S dHŸAH afY-DzGD@AC9ɘò,o9 }abOƑT.I&_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:#CT&eAH'g#yzZ,>XrC$()FD: f;d W4H+gACGK*߅DٽmIiA|niE<&e,GOAK=<-Yi&_BܟA0E(ߎ aY> x/ #6Dt]ϢFANA0\*)e&Ȃ/XiZC0M`E0@+})5g<< 2m#FhE4a~ V'(f;4#`T=d#n&>ă?+<,(Ljz?<ë^Zi>̃><@#@;ĞP(~GRjޫ:_ԃV G?x;@Aҵ]i&x;סPlƒ^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i@Ì .&:]`C^!5 RA>=@ r.G@*[泪زJ^ GjA,YnBHH.vw0BeFÍ$_< =d(/bhrE .xRpZҮECDBZ.DZ;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-A-C x0fnpEpK3\`ED h~%rI>Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``BB! 1?N⦲*2+kP@#^C]aC8ATBIX@=0`Y@<o՞aMohAPX[-/ gD>ZPtVE99;DCBW"C=Xѣ24S RL4L=D>\3F<@-t>. XÌZ,C.X%AIrdv, \djTĚZbH3CKFsnIAOTF8:8Ӆ/uEו>\[Vs CȈv# nv,l5aA4;=wK9<D@C6ZT``F$f(@C00UA15Ȃ@02h 8cpX_S}Qf FD@ (; R-IxC@ˢ 8|r%2CCaA=5qeBȂv烪cE8P0ox |b1>}[($5,euBXCZZyA%%ׅhT0 w=jEPR=tSGz>dȺ9E`v/C0lz@ܱpz%9~>@ 3z;2And,@<a=8:E`N9> 91Dg {B 7W?#`[|-ĦyB|@:l@A%lL#<;t,C̕@Kxo=>p;7JDG183#F3zwB0kD<%P1պj|pDìxoA`H7&HD E/(C sg֕8XqÃ5tj':,r`F@\88~}ycO9^/9@ 3"5A8؈w ZT  )hF`hN@Ľ{D3xa| JB; g_:sD{һK{,Aۺ{2"/Hq:%İ>9FH |X`>xh+Ƀ/ 0I3N0B[0½ 3 nuS6!xޫ.!<ӊzLz0,⃃[dμ_ZV'Н \jAWrZD:a`G} Ё҄(nU4`Yիzw=^ZV/y>,#lo߁T9}K%3dG˝hCudI^PG1I38ӮӼ ;L _6T3"YQ갺&'-w.ꞏޓe$AJuìn.dq}<zJ ڒF}H%J-L5ݔN=PERM4 /ATu8Ճ> ݱ' YJ`XLjd]6XgehjlݖnpY,sɁS(P. L5S>b Qtǂ`F0Iu{5~%-MU-\di659uG`0hHueQf2euޙ}蠅#5w(c/##p'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vG_rEAC=Fqݷ] A-0V2f;~k'O4Gyqg>i z.EОIӀaw4jZԗOST hwԣIRBAi*PH-Sq2QG'Qkep`?LpK D#HO- <7#!IT .}IB؇;@8Ō !$PQSe={0ZI t 7FOV 8.c )9NzJ+CIbLLu%&T*A*>fX)~RKA&0xLT0Ѱuʕ%-bQt=5*I*{G&FExHXaG:^(=f˛3%rғt*!yJ Uh>i\ 蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${A'SZt()NltC"?~35]@рƣL]VUnI&)/{L<ဍěfbv+"&ӎ8"G`٪*I $G @K{ *H)6d zX+0O402P*_JVnj-g[jo^1ZɂT*#;BɟV+U" $I>pwEqA$,ޙA` w(أڕnk|=ie/n)x5:j!Kg {t * n#\ miq9rfRW-u=˜"@l I_@G^XAzl_\fa8+уeP=ƫ(ࣅauzVBI;4|g=6BD %E' v0/LF|X0kЋAY`"FhXLYlvA,g9wꁏ־hŭs}(^ Nz6R(|` @ 8Ҿ``FXcv>ZBHĽװ؇LG]|@# 7B _D`)Lt׏HxTc-=1'm:!!1`%}>C 7 $E}SVCN0^w-GI$H` Z0O4p 0C 3ϫ,?@H H Am@<p 6Hs㮵&_{T7Tx]J! ҁz @|c/|M@ʙB'HKd"[b…:k O$NFD pG:M"(#6 H(K  titjdZƏL&I! !L P 0fk(- D"@:8n86nC @ ‚ ƻB k !*A6`4*R-dq!)(R p-H! @:iQ{ cM!(Tԁ !LD qqȐBN-gjj$ X|_b[F Q[k  a-! tΨUI)¬\pR.@_ Q!6DcX !0ZRI sR'w'Bzn%l# * @-N$~%bMba c&b%!J*cN DR ϖ!;!)JP瘔b  "((H< q XL. @1V-:darS11A*B3dT*"SdR-7NHRD@] 665[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* `BxʬZh%2j!##LH %&I1K4Ũ``A1: 8 s-c;AҒF,00@OH>L"0p!emKkvI:A )! \ ҬmI" !@b⏓6%DbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!t pr,I=0XU^ݡp3 nT<TZZuR2s+`R@D@3 `j"5GBjkԣm?R<7 BQm{.14! 8, ՁZpkQpo[ա[R6y 0-킶,ܨnHQuU\\`(V:bB\BFﵤOJ+@N VII3),55Rl:aff]'iAWPG6hKhA.! `e-1fѡF6m+!iP^@UH@ho)ǬUr'r5(B@)ACod!("r5dL㇔iH7I敂f"C1Mb@6#B@a@!N!ᑰ~7!(0u.!R.w+2ws;sU "tꐎ zA 0:D*I.F @`l"8UhRފ" r_1STC } "6&Dx9B)B@>R>B|L!p`B5l R,5xcI/ 7Yk@:Do7W5@A6BN,e|Winv<R`¸r R"wiGX6aaaI!ܡu2E2*qG06-N/V$AVs2a <@@" D{S[ 6L&Z0" XvT( a^O2{Ȋx Z8 lkn$P)ayytS䎝(͏"ٚ *Ğ`Th&P;vKlch+"b6tE@e! *m5A ́t)"j ĕq)Qkp*:!" x9nVZMDJ! DZL6 ' peˀ" g]:2 HS̗Zjʬ"R=d**! cxWjH//0#\!B@^)@1RC{l#K:> cC3,6aDXC.P*LBY hL $?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"B`z?>#4!`!@*p|⧇VY[ٟD:ADY%!hMdAJ`F?z졸d0RGLUQ \N#맦PFn*6a'b&vE@iu/sW;{HTPPN"(Ld*l7:@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿ*daX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1X끵Ʋ0K+@"Z;= $Ku!=@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!e27D!;.>NCX,ޡVFo;6MIi6֦yT"Ay 3/@ _4P!C&\/ƍegwiH&7(9LugΗ:u26G` pʽ{ً;| .½{ :F:c{8”9I|3aX{4Bw9{4hgYW2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^{"!&dÐ9s|U=@|E؛E!c Ll<# @|+OgAF##\×vܕ6U3>D>tRWg<=L8gv'Wv7cgF=CB;pp{rM0@ܗ~Dhޒ)Ƞӄ%@c~S|Q(dՉ\Jhh.h> iNJi)DdQa0@= d$=$uO \7x1P=W _ #@GX`Ϟ\>X:3jk_ȲFtՓV;US0ɏ8 k>[=س׻n=v|a@ߨ8'LnfT> Q#,Gӫk-!=q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճb+rhqF<`3_`Ƒqe:SFVS&XYWfAFqs>&a:vX_c}߶c+>"#?o~d,{g6Z)6ٰ[?QOo%t= `8U.8txG/E. _uw=g\ VOߏ)xHƒ(h#R,,@m=|Ll|Q0># jDTq$+K7 h, r,XԵ5#Q(V`-7=Du aGT֑ʇr1+ZV,V>URz$Wik@K|l.P$N*wms]%a$L+4BҬG'ڂ iYRĂ@!;e|3 $O>aYHd>H|,15{]R x^]7PGܡ,YW#qxY:86wC1t3^)yK*MH{4І<歯Fk#>6 f0f^tN5rNP DPZR | @ zЄ& :DCgA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST s9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7a~4dt>q7yaHDYV~钴pϟENb!t\w!OHInjaFTqQ+>gEi36t`Y^SBE0TtNFqčT@ T 9 )BȔdHMDBT7&*A#F!PNXaZj;.H".0P-/c54'eg*A"!CdNF $DCyrFoپ]xGc GaZo~Fe A1B9AG0K_Z Sd-i*~Bf$L Bz 1 0rmvtF|/nw- T. 0Z30[VҤ0O¤!(d*fE O`$* Dp@K+а!:6 Q`&}ixO]ea40=_ X!^'>1,$4S@ *՘4E9$):~^S_ %kG%Zw,zh S=~%[(n>5η2*X"EtȂ|I!޲u T-޳7Ђ=9KiuKv+aO@f%SVG`bk/Ǽ@`xt\@9Ժ"F! P`_ٵ2, *YlǞbx7(C?1DG$DOD1EWdE_1FgFo1G[M&=,(}6s➔$*A}0({( 50C{.(mz ;+d|Чx8/{  q|y6݄3rɁP'6Ӽp2i%($t*I+Lj8,kW(&՞x<0,3Фj9qU Xexs̴M ;+= {sBz6H{"jh8JA[qU{ZahˁQa{0}Beh%IFg%Ԭ}!Lj`.au9@@3ӊSY,h8+; ) 9$zՈc^Bx#LFys9iwb#{{+ =?7 tlFG $$p;nww.<43Zj;" GPQĬzًذ3! "+ 1LK܀1Kkؕ o* A(`(gX!!!{x*,6y' U!ZLw٘ ?!ġ@ $y3P3D&D!: x uȨ@R&* g؜,= Dp,P'3R,Y-ɥ.aYd৐NnB':P;pI"Z!M:O M4UU@Pq1ATI Bmb&Lg7 T8Cr岘41]FId}H$>+z{@JGFmUe:aT2Pn |`=պI767(r7'q'(ðՇb[_p 2􁏒` `H .7ekC@b7݃Y,BYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW" (r5>jH -r/yK:k|МDy%R z9EByҕt7Oϑ; X =e)PËugG{ˍrQfD4Y.'qQI`s#?xQߙvG|I5"Jx- .o e+}E?zy#ֻJ$c0}YdAPC@'.G`5d>lxpVBj\+>Ƚ}<:Wèo85Phnޓ|{,)I 0dIȣ-IHd PJٰ 4 6y hGŰ>E{x{ Gtr*  1p@DlTɕdɖtb}xQ5L.$ VEƐ苗Ȇ; /|;Yh Jpjt˷˸Gk,{ &N~~'  Ԉ>2}x~~0wcdyȼqȭL1$9$N(8E{@P+lq vQLh?<1tH$ί_xN Mė|H(%;}x HY> x (\ РQ j#} F Ia9@xQ1(f 9L o4"5#ERlN?܀ȞɀN :R$Cu`!w'(J$|H5Ehxp';Y"|h"Q% 39}!ׁ|{S%PT-F5yDPKTUUeU;(9ۘ{@y<0 ȯ֢ՆL0: '0ۘX {.M-Y#;LJaf\zvKz8T:FL Ǽ:hM(EpF ևv^N{0!9e~Ȁz ,՚IiPike  & 5{h?@|}X@M(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfE }p`,hYF() ،`lǶȾ8jZx_p0$wevp y\T+ Hb鐊k_Y), M( <11m}h.<9KkǐGzo8LJ6SGutq[,!Hu uȁDZ _ [L+1r9TuI$9|D':UYϐ :^q} HTWu/:$= X t_Viw؄,ʣFw$f @y>IgW|Xy7C \y˾؄pޅ$'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF PӯdN+9Q9˸O\hN/wXÀp'y/_fġڳ!)9YHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - &Bd%qs(ѢF"Mt)ӦNB*u*ժVbͪu+׮{] jOV꩙yO]nϸKwݼj޻ݦ /exqc7eJ>re f|x5xBEYҲέ{7޾.|8ƏwmSzC'1Twc_ˤWI-Pwų~ϞA_j~-NdUe CFA8uVMP=s,]r#X'+آyφ)`>cd0A܎ޏ`lB~ԡ;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Ot`=8`O$Vy;c;v`) S:HCb7Bq^ݓI"BK&%#mj*S7PX$D~T0@#p-jI0IPg̗Qkcf3pCDA!XA'tRF$K>:y3ljެYAt ``Pik[ꩩAd/Kh=\K:g>`D<2&\-GZ-yS={Dsq {#N&} D׵|;ꑵJqz=A ܓCS_ק<P>=ts*>3;cS=Y0 y62j#d!z/iH#P~T`>|TľɥT=2`xlR@z%K6#j&afܑu<)>13 ,x PC$)A\Eݣ0/ԡ;"|$G> fc,#8@*n E {أڡA+nēLdgI(|KYL_` q #\&< ?AL`H q3h,a4(G;яJ*Fb*4 N40AA衎 (c!&sv=f @=E HgVH Q@H蔭XUu@i Y@C *e&$-H``{"T9 M:63(l>8= %z!Dp$$F|=Ct$kQUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# "8ۊ:$3J>>wC {VHSeåp\S{TPxd>4 cA t60v/ob :N cֳ=vS2H1@qp 6r[4 avA@MhY g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIRAkZ6Ȩe# Xy@}eef]Nȗ:ͱ sy#q62ӛC=Rr }J53_T^Az:ސ1p{Ap b Nw]!ʮ}E,|aRgFA>$gm@+e|5A |B>k;A#q|#]}!s`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^p>0u$^ڬ TEhDfD͞B:Xߵ^>H%>@80|\A,>,C \} TUbA` `C, a"x>AԊCda<@SU ]^DHE͆;dAa\%ZAa1gḀ1 T}C3<fBeB@HXظ:<j'!W !D*I$۪Ɉ*J7$6 $cBZh"8+⃐;jx? @;PCD=@*R)û8b2B?rWA?_1^1 @ƃFJ=\cC^DDE^dFZX^dLLdM& 8Db ND&CB=G> p^s!\A @==,"DB=:8e]C^އ|̣x=x` ALS>D6i 9AuI&EMa&Ie\ff6gnn`df+u=8<ăb2f-#BX`nOD-l:BdB5Ðăf.QI~g"mM:BhJ!pb=ĉWɂZ 0Lndlc (u,x:\:IP4LlFZDօ<: =e0H#[iH, dI_%^>]y~:Ŝ\;8`5), tnH/d0:*ę/ }F_z2lx9t9I*,q"DvW՛.") $FcB ##RDD0*MԃQ0bɆ]TUi\J=u\IJ~W $Q܃yV2+CDjშRk!%Dæ4$ >A0tNT>ŪC8@DXRaY}=>jĽTR'BH$yROkCC=liBvY`J=ce^A ``)֖_ C#zn ibHBܔ8ܭX;<, 0Hح4tE:DC-톕,ےVfd']=|G@,=A$@#H]4: g͆-ȁ,ڎb@*ǩt-m-D@<A@ n`^;nҮ`u&f$1,>^JEA8@I>î @>R2D,>8EHK_dHI0^>m,` ?h@C@i"6 (/4@YX)kʖA/:>)ExeW#If KcJ\^̊KjE 1:=&< ZBd[lݩwz>-I @1b:KVCC. 1V(*D$S&eA`,æABOrUL:ۣl@++F5'F4s)%lC" D&T1U3pBx:pJqb@ 394=S0?U8AZz>RüW,AԈ ~Kn|R1 BPu8̳lADؕ#) ܃Ã@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ3=X@v}$$YTI&]U:lB|@}>ThxOA$!^C=TA@ݏDXcJ:ß>1BAbtA)-BmDLKU#=0>)rUÁ׾i;}-,@t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹӡ7} G@{O_|!&סހ(ܫ'@A& ao!*3 "ҳ10Իo_)&gAAL) Q lB$;{& wCbF['dPu:+>>xqǑ'WysϡCp+\ix{@?/ \R={\с}깧1}&H}*| *AE$Bg huJEOF2Yi[qU]y#QGxΡzCqrG'Pxɖ rCg~:Y~' {wCTzq9}LX3˜<p Y*8Q%j30zO>|i}WYnaYf"+!FI JT!1j' `^:z櫱{$Y'9j1Ja xB'D1SJ @@lN\o!_Mª1 J n1!%@3VPiơ*q7+i5F ´dǑGч0 Ա'/m=4"G^! 6;bgG,_}ZҞ}PG  0dRr @i@=P`R=jNPJh`s?. G=*@&*@p mbHHw$Ȉzub۲&I,_A` 1 J=/!:!! B9Αu$"`=E7``<`]GDD)9.@"3 dD"呕*H}*p!,Tt GD c c  hBB7CƷ ~r*ZA@+OyΓ=Oxg% Tj4AP. up>ĀgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:$o5O[9zYgVCx_X\Q H8"8N'Gw&Hba5e/jtM#C4M=."7>d%D&, DHj\Gъ_B0E tzpzYQBҵL`؀8H6&GVWWp:T:  H•`zqy0c}>TtiZHzUGbaw5"` \h c!"0=aYG2Q4ApRd!9P'CL  s]4j3&_%biE7>Wr>NB ԃg(OX, A- hAQɌOLxc€X0a{h: etdɃ (AySMt@<w;ʆD"Qah!!Q0R = 7}@u-SV3{@ @O} 6apBQM t2@$vMVtr"iF 2 TBJ k݋@B(cA}A($-@+ U|# @C,x$,61 LJ/ZѰ `C?bP*tp"H߷guoDY.3zlK@8|`CN9+6P|L`\ ǃ1UStUJC ^Βݐ@3. =ЩN2 C`@%RtϞW):c6X8Cdٖ^#ڧ}tl"[&T>@Hs;gR c$<EC Pc=K>h8(\I& !2aB !8d"J(pY,!`"N** VAp즱bMNdD*gM6Kb!Y:AxB#tAi g0#>@xɰ "@hPXa & /߀0 H!Xa{ > !]!P!ڧ_#*7R I" |" 6(dA++T( A r@&L &{A @P~dޤ1"bk gFL *@jaj6 G#!}Rh)pamN/¹u||]*dY: B#!`GaZ1#5r#[a3uB('bbC'5LZA!@(t0r"&@f3'xBƯMejGH BRd8 -և F|g4O#r-rOR,@g1"CPaøl Cf !((J2ha0>PƀD)'P8(H Y(Ơ-F%( #8>2 R!H@6+\s88$`KH2T0" n6` # ಩>B$&C`&v|2!'B4"2 }'U46/QiX8 $(" 7)^|fZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtISTH?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSab#|3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,@d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-(Nd>8PE9O* uEkZEAqL぀a.QJ7%q;" ,[[e\PMl",1qIVu.>%_|{T9*scAE8ؘa7HÀv#R.r[!xh0!2A PeIn֦oYnb2!&^ZkFgԁYy ڠ>?!]C?+s!t!r)6n0⁁WJj ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(pԡx8ɕ}Z+ oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIw_AY SG!zݫg@+འqv-s^x` -z *G :ɪgAΝ:x `+{I󅎠) SO+װc˞M۸sͻg/{ Bn|u~tx Sz%W_+̝aOBtu/ń}ysT}A -^AB|0? ($h(,&Nt,vcOsѣv B@P<@ CC/Td5ިAua .4>gܗOi7Xg A2@aO=5d> TOi-Jb~gSO#'褔Vj饘f馜viHسEր;ܣ:xs7>LSOAڈ;D.X^rc*APD샏>wYʑW==O=x ×k7\ 鿗IXjAس@B!,Wlg!FI>@ܨ:[:`\8;TN< D>3{6_QO_B`@W8{#>N(~>_ue=8W0DM= ؜-_Sތ7G.Wn?$:!g砇.褗n{;W.n#8/o'7G/Wogw/o觯/?S>O; {#KL=c LE| hGH @d0A_$Q<6EQ2H17@gчx%QD܁w!9 *PDz` *U\>ܱ )GIU-{D baza%D7P{[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+f%f2Ur!r#Rʇ-5Ib R]z!8isZ2aY=:쑖͜ 9@{lpt>Cc%%䅃Lg@M b(9ẋ>ς0h +⡎Ft\q ҃ tpGJTuB@5Cx%@R:QĢpV! 0G㮂 5 gv)^ zHuwS0KCôbƮ'ODH 83x+* ⰵ!P]DzYX1:>PC#[@NF${ mpQ %E+*k$" :djm`2(|QĐws@ Nܣ Ňd9DAJYN,0/|t脨F 8 @YD #xLs:O3/a!%K oPK$bY\q0 k4/{|XT*PLB> duh,G'Ѕ.{8rAR Ǜ b-*-c,ad[]20 3G$''Q24G|HԹq  fABŰg T`T ˆ3P1) :tblhHT/d+{ańϯQ j4PG< AjHs' YHArRXq@!t_iW&maB$A(B ` d JP 0?bݩ0̿ɕB 7D} ̍ ZekN=6qY ч= ZȍzOpa-%f`@CY,\Y(Yz , gȂA+:M :d},cJ7y*M}7oHΑ9!cA`8`1қg>Y^x+EKUR(;qAHt&U=S{aE/|6:r e!Z:BF1 pG<zfʋ4)P(? 2< z`b}  hjZ[ai v `aDz7X&Yd, A%pGvq % Y w?"# $Pg\E?ݔ@AV212W*eQ bK"2"X">(rS}g2"SN`xzXOJ)tb1G z i+@tb2AI ON(LNpv NhAX(7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7сDS@b j+R+AvDEj``-b- H\!Et*>`E)*%υ= `& `T"l.7" BBuPTwLe8**Y@+e% 9}2%p] gyh0/r/b,gpb`dÃ06c5h0Y 1؎>|cm $*%`'2=g^E@H22v5D@8j:v# t#+.E @ 9F`29PDΡ=48& 3!Ls2F -1s5W0#MWXEYސV 6m6AeDivӇ_X#GP8gP 9ZZy!P ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;I@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O=؊TP}Wva\^u hxz% W#Wqx耫`X%3K0^UY^Daa0|HSqV'aF'P!V[گuW0 fiLSGj֌A@Up%fVjKsjh yv(Ť AeTe]qvMGd0qE6"ȫN*{%wr0SRvE;T+F` {lF8Hzf U{^y^zsk{x?:| K'q[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.N Ԙ!4^c?b!'kb(,)v۽蛾BIO /~([!/b ca 0aPƫ)1//3'ZQ0~j cP2ƒ"2 . +\}Ԡ0yp,iПfP q0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"pqVt%m  ׮" p-*sʧa*̢vl8yM'H' Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3hT=jYonÞ*${g{G~ `Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQa^*+MWac9]}K-o; h8 /@ .dC%NXE5nG!E$YI)UdK1eΤYM00Ľ{jWo{!~z&w]{{` (=| ^EUa{0$ 簃=(e$Hhޅ!"sP P_]巹הa d5Dw2'Po )t܋Bz SsѥO^uٵow{0zٻa!E }TЉԉw(G~g `b!|P3J}*Po 0}J!=JǸz̩'{6%!RHaSH{H@ K!D3ZHz"k!oN*G>3dqg,"!FXа{ BtQH#tRJ+RL3tMF}jQ8TUӁ*YŬʗ.ʝzpgx(zг'*@\Y(   '8Xu0! MY{f1"$Rg6 1uܫ}Fʁ.̳R`1q6~LzASO"[؛7!f9 R}ѧzr`z12fsyg{g#0`h<J{b~`jzkkƔ g aKcҶn{oo* W.kgq#|r+r%p܉‘3r$7A^E|@)t@wd)MyJT/!c+40!Z< `3vRy@?_Z ,`Ax(1;&Cp0A*CUѝg=퉻ő*(ʰ{pk %; d7V`0`œ8@&0 \,g2Rx[QH1|@l C3(a<ῥc62ĀG XFVȸ4n"U*:(8U E@,A(!:eᖅ UdUxCXXy֑ӡ:\FWӕ*[:6YP{ kVd!9-ekيfԁXt t*B&VbE9>ƒ m\B.4`GX9'#) $b[~>ApI= "Ta@5$yሜG iG3Qzdm&\(Or|匜e$,FZ-6 ` 'Ubare2v=U @rKzLЋft\ ,E4wfh9J݂E= lâ Gd2 UB H) Aj4`؇}ld'%#FSpd/Bf}#+CdֳRRpESCX\(Iq~/#H"Db&{p` 7@9 x-EHSKX ]T&ހ-0+`XjC)nWCcm(U7_TbTf-X+fWd'=*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. ](n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>,61 }Cz$3EF;v*&[ D`Aͻ9G=xE:0"YW#W3 ˈ.A#Y ˇؠ5r? "0 @ #Q!؉kq5 J6K: UA ;7+/ pUzkM cX (YйYAHx%w?Iꥬ&/ (|Peig xI9h'aruC:A BJDOɀz θ1u X؉a9q9 DA*h*}8XH22;HmO2'RqXzh1q`Wu`X.Y`3%1pͭOCB0d(E_UQ|CY5eG@Jl3PPtcX fhZ+Ovc$h7@7T=T^<2d{h`F$MY`)d0/L0M~jn;XOƬd P2rɠHPLQXb(ykaʍ Tτ(BE0{^lf8PSГi\BAE&Þkulœ>ó-1`,@xC담~@YJTfPE^n9(ƱSt3d }X|#}xup|Xv .)㫃3o/}`ɇPP5k^^Sle|8fn[ϊm [{MT#Ahi 5le3of=q{#oˇdH)7[ .(rhq|#B!Y"xV|@D-wŅ_Çk>iE ĞӼz`"od[56ctOA >઀;zgGf4 F p?C X2Ҿ{H +ۿJU~4Ddz(e3?SgӪz\muxώ(uOͅхww+h „ 2̗> 'Rh"ƌ7jHcxB$t0=w݋r@=Ki={X=u!ºj56NV=|t8n{$r,k,ڴjײm-ܸrҭk.޼z/不ϝBzxppœ '"uD<A!c͝?L|%4!Ⱥm| ثWz((v=} `LqOā[ L_؞/S?[@#b/c3AA}G:|t> 泏=#># :%> )"-"18#5x#9GB&=#ADEA I)dANBYP`'m!>@AOp UvY>0@<(>mcp Р&tE5GhCB Y*Wmc %, A3Yn4W`dt@qiϫ4:"$=f,J;-Z{-jm9;C; ď:8$TLRwX.[>K ]&=P\O A):P LJ0pԳTq'r/9%qIO{!`OLI*L0̥9#Bӌ@!4 },)j}3@z7 .S6LDA6 Y#@Bc( U`'LpzrGEpы`cSfq $D= uCO 1w5^SJ l?ka`nJ:zcCJ # 2:~1$6yN!H} #Z,5ɂ%/-Eb\c,H0eɂh@3rPB|@TM c2)Bz%KmSS 1!=SSUgO @՛⊐&qBԊ 3CP > 0;&&oTE,%ppE)ʉRDI}04x3QUk[E0>d rqb\i>@C-,iD!0+|h1D#8Xȟ ̑$tǘJ·Q$ S| MO" ja3EjPt>1,!9PJ`DN/ahON=L宪ah@ns0 ;Hi0>8/p1 /!ʂe\WkQ)sH=N$7-H%#x"v%{xMbІI|嵋jG=ԡ͊^f7M^%,4m <X=j+k.=J`oHd`7j Pw>Li&WhIqZ x;jNpĘ:A\`@mn>/H%b==F^ADdE A:C|Zu.`~A僀\ !Πa1UD=Ab@=T<?,"?hVwía%V: H"B5ğEx@=QA >;\,TlB4=0kþ>OLYC9].#363>#4F#X1$%D$ATDCăU zLh@<@zA胹mXC̮ԝ|<Wd,ȁL ^] $8 m,;tũZDiZ L@ԣ`D D]ʆB0@MO<=X.^ƫM]kՃ,pL`‰dB8]lDDBNL H OBAI*CZv(U'*Wxɑih>XG!D>AYeP5fWzR{"@l6Puf GWB)B@A\A0Lf֩)橞5 ʬ)EXA@G=xi>̕=(˹>ïRX@B(*¥:iL`/مs,)\Al:CmOhBDѮ ELl;,A$ChEm}Ga@1KN;Tܱ&k<ԖtD:D9cG^^=L#]P.j!<*С^}a8@@9*k'0kz=NH!@>bD*i°C@lNLlR mD|lĊ,WC &<>} IN,ҰACA0ӡE==ElrjJYUlB+~&ld$4sCmY @+8]@)@Bס" عÕJA&..6 %hN脐`<Vz8,d@:[BL@AnI&OaEO0^M MB\PPan.FCvεc,DĂN80\\k4Bm[[UAHa ģ.E!?lEXH~&M1kpL1o<;0 KdFIJ@pP䚩ޜ5ȁ8@X>D0S\IJ<R>8 DW82p|zcHCmO@ȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐉@\.tB&'2((*&;tr g7QD)B#h@>>X@20031*MنN 1fQIc2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH;1?/`G@lK[Kf"5\p1#L7S?5=i.[ph 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃ/R:(oZl)m,*xG,<>j+P1m^ EP4Y^> h8Ŭ=#t>$/l ̸V%he>w'V ENDXqV KK pNOxQw>)/TPE>XVhWh7۩a,Fc<ZȜ`!m:hiĆgtw\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAAe8l"05Z Pr mX93F0 GZ*(8ACL{.C*tODdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZU'zLݧW

i/S C>!˃ @$jAoTCAzZ4K'^dYA=J<1ԃ\ 1#˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPD5#\hC';`p WO|p@A#N\=F՝L|ZVD^~CX@̈>B~<|퓎qx@ݝ$@,4M@H)8 D|zܻ/܅(ވ{܉(]L}$F# E:`@|3X̋;y ]Owqob@\DΝ<p(Q< қkQp` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}&=  pOO~%F+R W E.pA6me o; Sם+QCC|u+<{ g'<| .*Vf9c:BaJx.ZG{v wŠٯI>Cu⊟BqT̛{ RǞz6pw,| H|lA %(('F4Y$3B@3qA@sJd2'iKwA}jhσЋ:/'"0Ĕ3 }N),;" &BQ9 0+ʋt|J98 v.NJ~r(Mr=t]v}xW {vRʀ0Mz:'rWY`'hΞZ4(?ȡ2!̠ W]5|ħ'Jzק2Fʞxh  " ox{xuڞh /Y(Ppv:Cj8`CVèf'G OnjAOɞ6+, [xH@ iǭ5u|92{9믌&0|:0% H hD>Fu8A{}Em hHSL:; _zԩ@q\1yq|~]c(QߪmA+S> :g0UA ^9A~!!ah_;AGFDHJ \Gq&xq,{4mBxp DLghk1LiZS9N=( щ*V3E  y=J ܣQ䘏b61N C2YQ)E񈀇qzF8 H#>QA q}q>XF#u,~y#'aeTeq́x`Y>b\t @`E<`)I59C u҅Sz[9K,΂rH;/؃p7-dH-ZP<aA EG`%QD!F5<(AeQM68_~WET,I EdXhE(o`6@>bF*"ff v#2@0:##o;"#H {LO@ͬb !B*BR" A TN@&#f/b³)*xbTZ)^cj+ bX' MJƮS:SRpHR#J"$!Rma.ꡙ( $X;@CZ/&H' pEPk&R,@ D "AìV *F@uQǑ5)po,xv dT1jԡ+6@+mjEȫ(Pʬ!ì0 =C~7&nB&B# a"JB" ''Aȃ0RHҞzbbbb" 0>I* kaIZe'+L-$r+42"݌'()/" B<1Y1 $G[ٌ/d Ԣn)mB$"Kª$!ecZaR- \%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ݡ(s??@;L),Ez ĸ6qdT2@"b@)QF FA3C#B2({DE/0" *Rhb3K3%BZebO e؊4A`BsTjރHcG"`? ;F# i6;AzAHn>q.`^.N'lz`G @K$Nc:'!D,!s//f$!dS/D"`*@Cց|\;$ $ G >=d ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*D@Z@@5c5U#VdGdKdOe`^0ee%%(@ R'pA?qġQLciViiif6t' "Nuڲ$ B7.dllmVm׶vܥ$F kV@^a2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvT(J  B$ `k3 `k"`#F)xh̡z6@Ge$J@M%H%jg1b30|V0n؇%AzB:k8ǚA9S*wB/H3c k4@Q04&/ N%08γرF@ "◒+ْ3.tNFp$EZ-"A0h٠zx$"6}AiG A""[E* ԘMR$]-1'+On1pa"MR3]To\fm*513 #喩>1jJK–qI`/?ٝpb +΂EL-G6:q@:0Yٕ)WYA5C! v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?D # ``'/s,ߓ)0M*Cݡѡ:t*!$vwjYv |&F| r@"y@r}'v}C"nBHbns@TSL%0 "Ё b1`A` \JaB?~Bܰ|փ0BQ^Zc~s$0.aBD]yF0thrK/[ ~>*y}ԁ?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JzQ TYFCPvAF  MsPn2xeQa:Y<0;}0 ^=x + 1|鋇0={+p0NR.B #`7tSgO@=wE8HU 4!%3_*rr7n\Y_T)ӕNWjV 5XԞuB|Q4HEuݽL*X)d،6t=nQ>!|v2O^DžO4X E.pm=!{jmP„5jehmp م ` A#e_na~b"Hb&b*b.c2Hc6XYnp\4AE ѧAN qF=)$BCA=K6 ;\SjSOS5cE>Oу[BdHpmi}#W1sA3@B^@>EA>թXcBs8h s7 mMɪd}}Nꆓ.vEPYt8@X$#Gdi_jj:"D  E"3KВj<$:[)#aM`>E x &0S en> `OȮšOt!>t=(+TMfEמb29M锗F kQ1Cd\ H?U^IAv^yd&w=8{?ϛh$OŨvC ?yONy_yoy4scV2OPC\{)K&< d<D7A0/h;nO 5W;%ɔ!:>3BDh~}ЦkUtHkΏYa3@<|4Rf] 2>)%ߞ-uQHWdG; P|8 z\ A*}̯ˇT(d$n%{:ʹ@, B!Z݈0Qn {8HIO@D ,p3_a6DJ@NB3}0!PWB@)-5 Ȓ8>8cq&80 V''v]mzWXV(cs4!^uM/=Hh ؃v@=` 7 ps,9ωt~Oq!P\бdh!&M*3%R飞>${sz{#!Y=QȖs򨬄T!jUM|즳!u2#t!;{T,tM]7T#"$f Πd O8P1mO-`rPDŽL HHPE7dԂ )/_:'hh U$?v@H}d ,#nB(ĻGB5VFPs}w&=0ѡ2! `IJ/`A~oStw,S|[9ާ`$$p@S̈́ aB%&no9#Ug`} ?(PJ(<M&A1 aB2[xф ^KTCyMpa_) s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}%1&Y5# Nmd!@P (BP*n)vnnq}gPrVޓ@#_I}xE "gjp#sZ" aqnIPt IOV<9=0tbY? IR@IF14&#p<4X))@V`71X# ED)OIm7 !901<~pdF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig% qwj,>3(5Pf `%&֑mo q*s=fS@[|Z@.v0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySuc6 ^x2.@jq qz OR% goч^h7(@ @ : )`ͪ'$'PAH}͕ ␠`gB0xRي!7W`zC(($#:x p@%!I P S) paUsך S#D&@ ҩwS鲧ezgRb芭.P؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8"`Hś"!644Q̛!MCŽlڑJ4k狾髾_vɾ5ɒ,{7B p0 38^|V2Q@Jeʃ7H@"iOY j 2ܶȻ! x,N0 P" 12ġ'=_C'dx& hBgvG!= kyT!59@JmrBeۚ cc=Mm׍G`pce4IT%]$C[@{o5p)`f1K#Z] Ey,Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeY g`*RB*âyyae 0c[ 898^30mk773/O $_7R+{n0) C -q[bBw;#ZAX!Bv2r 󸒜F0|s5怙5ow{F8;Y"з5_'}0h ^ZY1>s5 2e[ F=3}=;^ȁ@5GVz#vz< i%oB/6 B{}Ϟzm$C6:d!"hD#DOD1EWdE_1FgFo1GwG2H!$Y,Y$B0[`'$h)${jр  "@؄-(A'(|JD𱧒򀢈HM*Q `|0郄l 7`suq՞xkYY( YJ=u;U t @0RgKC 3de z3F2 ]R +aPdDRG-7La9#>>`' (S@'j7188bFeC A{,c@Mg*@u*PxU1цjU M\D :]؁ІȚJx!6b9_j1 u!HoGeH{w#0 <{p-W:Rv24._a'XZ T@M쑗4Y@=@A@uK<4ɋ2'Y0P ( 1lxl@2Ȃ*a A{|k"Q,X !&@,B=G&W a~=%O\/ R#wOt8`:d5ѝ  *P R>&0 \@.xW0&/Pq_O=gHpcl/? u88*d X_‡؃<@PZIf#8k$@h2+e"`ٜW`e,+p2A=zJvֳmhE;ZҖִvF*#N`p bc $6qκFVo@0Q YWP).x I(TxMɛ wxFkTdt4{9P,h-P p ~;~Xnk`- c@x$sHFϤ  CIx(`0o"k"FxP腙 {ȥ|DJI؀>:X!4 zXYH(ƍ_@>9 +ۣX1pOWl}`}֒W}A o "s9Mb@:`{P-oXtTpA3({xE|pӇ,'Έ< ƀF Ȁk} ۓ \3` }x iԼ'T>8 `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇$&upNN{6IZz tBS)6yK=X\ x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z 1q7!X{&bQHu8tˇx&6mq_j 0YävQmmdϳЇ hH t`z#La)͞[b 4yqiᣇs^5N!P@Z|8<t@dzH(0ԄmmmRpIkip>ߖpySnDt)7SGɇ1HYam66B=#G$/yۺwTb h uX|7+,r|9n(Zn$q ́d2Qq-x`Btx2J x F#Z]XdYMKa: xx $X2Ϝ2 wH*Q ,Jɀt@N(hljt0|) )p%tI K/0t5xn3T@TvfvivkZ Pw@oJ}h{{0r}׀,6~ o/GL'p{"`Ё@z:^<|݃70=w? .:| tw/$eR{A̧̞$NҝL\WOϏD"U4B>ME'#ܳ {u=R,,rHN !ɚE uҁJdWC6Pa@t^23 o>E_4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM06p 0 e9C } w/ňgo {œW@y􍠝jO=Ys!ys?O>cY> DOyPL=vOSsu` Q@`=s=Ocj%S@#@4=t}IpCUPOZ+`HbԳ7^>Nw= wT=gMG@"n.SyHzn}Sy, 0j t=yQ<,OCAwY>(c|ŨCèr7㜳;ܳ?C]EsUbVrHPC@O%K&< @^<l5rFXۣ5^G};s ̝k67h>0va=}hDUݓESn=:o[=T>*%f@<3 t@= (-exOc@L/2ig ߳H Hoe=޽ɖVI|[svך+-+0AN1 $)@^>|wܽ.ҁ.CL'ZZH%CRB7z# wm;rCw0mA;A^Ey8Ixp`9!j@\[alZT"}``j4!0>,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ%U 'M=@Pz8zW.J:* p`0@"C"< CO,v  LGeѣO<P>D,7 >"‘FL=<9=ك@2Ȕ,đ/Y` 80HjUPS9i@tL8KG`Gєx5.Fa2)3(V$>DY 0@x K'ZDIʤM%Xy*OB)\Z MD=TV2q%Ok\Gr2xXd!@WX㬨@䠏ɢA=yς6-iKkӢ8<:hQ,#сH$e<0QB_79FX>Ґ*5&5(>"{c&YI`9r:Xzóe8fM1HjRZ>  O|bH<;_[;xP=b ɢGxج{RD'E==,aGo :,fO02HwCă.&뾍05@y:lI\gޏp@om,MQ kf@գ9֓Bd; PkoCЫAܱ C"pa]QM$yL42tBCǓSkS:ժ^5[I 6V`c*]05o z@8G_c'NQޏXkJaoISimʁ(r"/8xK@u$y5bL?# Hܓ(m9PƜX`8;|(I+?10VGaj!{Q,A!ʉ 6񸚖O+ _NMJzgC$6:* &4@Dlܑ!$>%7HreGhQ >ï@ࡎkSv5reBp L,HS*Dk[\X բ=Koӣ>=Kd4+ZIbQF# 6XTk< @: .Q݌wGFB2~<У~Csl 10.0{Ljj<:tNH@ ODYWNCP@C$JH$4(!RO`R 'H`\HP4eC8BH,` V(@ޜƏC } ?WL=P,,=NUYe@NM`\>G$@i: (a@J`ń-I9 Db @C GCL]>h\Jb+>!Hxt@:SOtүD'JBԩ^5Z5bc6j6V .:,2a]:GD-tXrX;D,=>EpC(Ns0  D'EC-v̈́:r8] >L^ "QäԕC>XU@Y N@U4@C4O$>AyЎ@D!NNN GDLNCaC_CWxI@4U%E4Z愦O@HFC .]]IGhZ&N=_@́&&aaCb.wC@'CT ; RaxCE,Ft=[gC:EZu;8=AWH,QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`>D>t=X@Wf m@8CIO x$v-Nŋ>ԃD,qhi kԼa ̂A]@=C B$HOdB`p@tO<ߔQ DL\(DD(fH}F,>d`È^9>@cxSDLIF&A@tG@@fT@ L`\Mh/@lB HԔk]N $KYҫ~`F]e8d8LgaHH|Ef(C$jjDj Ujl\܃' Lfe]ZyG@Ȃ>T@/>ȅC'( &NAT9$8Yt,ST+$c Tik0@h"*J`j ˓Rbt^>|GAX@$OūʐJH@u7@E[A`O-mXn?02n:Bn䊖C ^:.G^Έ a.Hh(C|kLGY莢Knnj=lB &ª8nE*(@#.!͍j, ioboo$Fd(F؃9,.C$p po52oqpt.+\+FKcpksp{pp p p p p ppq q=@.VhYnp`+?hUGk0qmQ_tkψ@_1qo\qq r!ϯd4e&W ,R D+gc@ %OC9Yp@8A$o!@YoxmnKY*9L)HP^lk@,8T@ P>G@}(^E:Nrl=xo*|nn>mxe $l Eԟ,b)B3tC;.CqY$3o.>@T:FJ<H`ELa/4aapVLZ1=(h2TcF':e=B0HT_CY4@Q'&,1$@;V@B lUtQ5[LPL[ @'@h@dtNﴳDD\lh<'tC|[< $E5AG ,> x Qu\?jvkCkBu@&9:lqELGD8vL8rpPptBS=;4,LnPZ h$aV$>$\PhŴun4F dt6Nݖ@@ @,|=l_7NqN܆C]8NF,T>Xg{@YtkC}/mF<@`@CI<PO(r\gq QDn7,@CT7 F/FHg+@H9$NW !tw{ Ӄ,toVX4ހ]-8HBG$ ÚÖ2Cq6`<%£$H2ECJ ȋ(e@ I>ɰþ VRƑDWFUEY)$E_[\X>Hl^ 5/s:p2o,C M]C`_MiW^kyH|Y@)-/{`B0+@b@"wO@(sg/?tSgO@="4޽:"Q̇: '2D T9˔k^٫>wB={h7_B}Df*qa$MDNT@A b=>SBY\I Ce[Zƞ Quwoufpw^Ǯn:\6FjcÇ'VDw1Frz#vzY%)'*J'lP8 )Л>LI;ߜ gki%d#B# ׿ P ,LPl!P ) 1P );`0 b آ{!@@a{RD&HqE Jj3rYQFQ2Dd͞J2L%JR9T?zX{)}h =(̧H\|@XT 왅Gΐ|0`MІ8`ˎ!F$G |hlC@!<F- QIQ +MQSX)Vk { !&|:06G h?>_X= A{ԅW^E pS(4 Gzԩ@ V/Sʩ8? : ha.{OMQ*F3eP9l駡Zꩩ꫱Z뭹 gMrY#`ԈI9@ `A{{PRJI-`6Ar'H3,Aa!7$X@tU|x`j W}_XOcKIڐhI@ % ogP=rF`b',obY =1Ler=P3tAGI CV)S0g%V$ݩ3Lg+]!.2 c>GFuUdOAЖv_@XZQI%bҐv4GtrUQΜ,psiFEI 9惧*@=uȢ>aĨ(m&"VbCds[桏 ``tL=xb V1CuZ\QUmúCG G<*+B mvg9ϙuq5qM[{$6/--z>H(;(jt!)]'mG1go?E)kg=ρt7 :`c(JӉ . p=6P|  ^|$!d)RB`.z 0X4јJ´%7*yI-Іy}=\0@o ѓƿ:(J"B) ONw8H/Vša\+Cf:0A㏢h%g Bq<@X4AGh8 !@ޣ$ ; +LB8&`h?#n_c60aL J~%!A'F@nR7N@ A+@olq0upydpk `ۀnXzK"bA`! LPkP R "F`!J (gG*qK9CTŸB1rlT(b?)Υ*h:Cb ! "@L gAi%2`t2Z5C >+`F8 AbC|f[Rq2aa͈3ı$*$Ƀ6bZaƑ6 !72A! űYI1JJ`?)"j{n.Mʢ+t@ɞر! |$ q0DΠ 9#1b!D>!b2@b9t?JA+)0<,$PbN%Hm4=,ٴMM4Ni<$B(g*kH@/%D@Z`NP{BtQQQ!5R%5B$ hI&5@,7Z.kh ?DU+ME!zN65VeuViVmVwNSquc5ICI.t_S;uWYY5ZuZFWOJү$F Y{S^a8u]ٵ]]5^u^^^5_u___6`v` ` `6avaaa!6b%vb)b-b(,uK?5>vA|BYO6A( a55e8`Bv6cq6gu*Aw p%W <́'дa*O@ qM<@iQ}7PX"AG6PB@ b16ExFք60"$a*`|c(m9l7S?R"V8%lpwAB76`rbaRu2ă(<#I: {8#A/`c!oj$C:b+: ܡ?ҸB djsxw9'XK⸈XC!GBrZ"` ?0qOXBi`k$|fzx)0.`{16 >v0}v@$ Y.$Ȫt%Z"ui8|\ؓ٢=~ɹC`U `x&BtALaΠU|C.؟_*&r:$bh*`H:XaR$.rF I7 x~:a(BTC>0hAA&"=V.EH?fkV6\yy:x_= ::zbڟ/H !Ȟ9%ڠLKB:" `@$<6">F'V d< '< `٪ AB*[`eJ19U{dTU n7ٲ8w5r)?t . KW6@ୡ&!HN:6s|{6/~܁|Y_'<*_$>wWK0|  ,`+@2]גE&d Px@bp"oM$E5p#  ,C0+;ٓ36 ׵+F:.l2B2a,3㲨%b+B!K,:>:3}ACKh##6#>Src`]#)bbD2Kfg^S ?­ "pϞ|to;{!ȱlj ID= H䃢DtCJQǛݝױɔ+$JdH3߈z@޽:=e:^ ij0A9.p 6XfCPD>!f1& D7}}|c 4TYS^ͺװc˞M۸sͻ N(eżz8@ EtW/Ļ3Nз`}Rαz 38髜vǟzZ-4%pc} =H ^}Ma^Q1sB D4CA>PA=&F=xXwyRPDSe-OF!4Utڏx: etqp4 NTBg#G`@QMT}ݽ3TxD\JOAOIm׬~"dv=QwO=&yϟuXxgx块z L ijԣE%x

*M0xOS:`:`*>"'@-DmH'L7tF9e$˓COE4, N/IN<)5^;t НAk1WA>T%tOt;2z-N"43TMd1[0ua"Bd \>sCBX>k}j7M@=[MdOdԋ Bd1OOa+=¤z?Qo֛_FCE}O5Zb($WAHRp.= *w ^[Gd|$y#I %;d!?n _ [掼co{[R@APY[ۘ a&Dl1=־b]  н {k2uDMR''G?5%JF8푐$'IJZ̤&7I/1=V`{p8Ç&kssT~ġ,,al+rU_i@@@'PLm C/q8yAL(D=q2o`D#OԕdkPYd5LǂIɈL,`WI:a1 *{3V)T=6+srqTH 4zQyiL9AgZE>T~V-Uy$ 7?q (KNbJTz0XGהr16S#x[&V䕱,L[׹ 0$>Z w`AȡViˇ1 r"x (9IҚMjWBjj[G0/G$p*(@}:|â,X~:x@ (l"Ԡ#F )9vIL@w(p opRԨ!CHywZњD\< &sȦ,J~dNȺw5DqrGLﵙX8 Y>l~"Dt< >u'Bz4gIZ.k$ECȈ*#x"ǗWJws-G@q* zotCz&J=O &k0 8>GBMkYmC]KRԨNW,m>JpS#zd21%Xlec{΀`'Yp;]x~PGg ekق,gH( `߂i4M !#_)e$%kࡎ&:T{' ]ܝ]ɻVלH_~%#i:&+ǘl>{Xzӥs]OdKz#OבsgX>`s(0)ԭOin;iy)x:w&5L@p}wo7{`K9ֱ?Éжzh3$&9W"K~HT’c8.G|\ G T8pGRW4Ѓ a䏺;*{G<@Y34-9;0O0<O*fqȲgpC!0uP-M7M! Yq"QMP}&UB#7NP*6<$.QS0/@!uAe\Xqs90S0Ak#z!P9!`B8>M|7kwB[8/R|t`lGx^{qIp ħk+9RLއ:г{H<:}B"8tP9+a҄8uʸ،j  2KqEr8@X"Q`CIe1p)PD`, Wbm\, x>=|0Y0nt& O#tS" oPqD^8%;3@0w P"$`eOYc38 @7 X 1;ۂ80ywO@/ @bS1x۲0Bi%}aIPo Q09@S41=0xXF`)0PI`A3* #BTQ9 ?r`y-0i `#0Er6"ϩ t.bWxM9/+qVָ8a׍iXrgƒ\]눟A3HU?c'eVePJi3,C5"}95PA%1rV`k3x+$@A XQ% gPpsq $P  %uDMB4r X>DB2! Pp 0=0KQ!x81b%$}0эQPMrPu7AI3p~p w0}0 Zps" `dM:<`G O}3, Mj`f1>Zp$#7 TM"[Y831KhW7->;H=0QKPII{#e![ ?ҦH)" QKqᔶB%n $j@8ڷ~kZ 4KzA#` r. B^- 2z{ۺ+$=ȁdB&AC p01DtcD*3CȋƋ7zC[{؛ۥ۽V`|@܋;K[qȑ{¹ <\| "<$\&|(*,.02<4\6|ôA*w÷8<B\Pq־ܻ@<78ԵG|XZEU8PXjI,""pIk4r 0 !-rUѳ`[<Ȅ\ȆjPPp΃sr%K!P%7UQ|$kI@hPI@>DL$k.\9@@~{2s?cZ,Q ƜU}t :|Ra`:zlN)!o阑|a~"zzx.z}I=^![3atPe#^6w ^Qrʽ<c$ A(u# -`l/uq 2&\ÙԢ{>gp1 հ1ӧR!|QP<`}T +;H8 8 0;TXRo;6Ђ=؄]Bd %?/聡8AuDQ# z:([FXٗQV!0g@& m1`80֔1I=3Ol|} 4!ܭGo!$cMa݌p! 9Mmti |^a,l߰7EU-+UH@?a7$ YAgHg N^Pۇ;Lًd$04xHM94~k;Ats"< =C"$*@KR6R nSaC70nKDG8 7Mr6"QXaS* {~^4:z2pH"~[2VdX謡$BS @&8I ٕP= ϬPqJi0P'm#0#SIbǧ2>%>ꥮ=9Y&BI>'.B>-dnMA/K0N <N!x!|qisx@vD`&1LN}c8m@ eqLZU=g\yᘎGR~1g2'{octh>_T8"!JG7%He@PC!MQ P0P ud!0FQ"ͮ-5e ,=zbW"tb:A?zϟ18P A A#MPtWHf.ç|:Á鋰/={kU=u6G`A|e`r`{,]6 1„8؋Л>٣R944D] 6,!i8 ޽aŎ%[Yiծe[qΥ[]y_&\􀊅A4, 3Cwu$D{з`}RpBe33SY3gϠE;^*:=~Wi .+X\ e!v7({}pF>,|ҏ'Oovtǽ)Az̲DZే%Q/g )~ KoYh  &ŖqG!}di7p]QFmı%Q`p!Yx`I :E)ʧyH{f`hu*PF:T+{Lwi) {SJx'}zh{Cѱ&bPIObuVZkV\suW^{W`vذ艧ч, "3Ї9Ci3- {:`V2ljͶ,wt'{ț{*c|f 9}iwGwpgN@g% )cÆf%LphxxG{,@:n*gAr|.Z!d1 ͇xͧCy@igcntIP"v( ԩRx&l.ǪL"¨_x@x Y!Zrǂ{=Z, 2w {zٴC!0R'Z XM+g懠dFJa?!X~{{|Ol2:7_ h恆*y -wYo~9_8@rs0 YCIM>v2"t>c]`f"x;5 ^S>Ⱥ,q+ʅf|pj ÇDY !D}6`*/&b>*q6SLV?D6 ox 2 RxPUp*ИБeQ>84rB6@$7|K`S$f1yLd&SA Yf@X{}V̘,0mr//q ^,D|HJ|gPBꪺ/f^$`WK*)A7a&=9JQRå"|!!Z`DHtn& iyĄe"fqN9(oB$8P[lN{wiHZ8Yss|g<gxI%jI*Љ <}R>` \eRaCT(C-Fg (*_z!k>Hak%Ӫ XL!8r}M:H}=  x}׌9y1l,!-YpnL{F]3 `DKJdC$H1lZSpi˽G.";+ #%ױA"Ր]$cL,b1Ds)TעG`8tU2'OuhfY݌ RTTB~v]kg{GY <S/5! ؀>\6OU 0?`Gޯ ,}8sR fB%u3!%>q$aGe} Q@w#>PWl50ـ x= ># G)#zlL7ds|އ,*|' %J>3p Q _kbsqw؇Ĉ5}>w |d/tMyH}0# vi}hI2ۮ^Sd.$Ӏߨ$8 8H  ; p p](-ܑá(𻁘|Rx9w qk:;DDLDE\DFlFܳ{k uȼ)gyԸ|p Ȁj#y d#޸괁x@5 X{ؠDHz0 #REVD xؙغ{ h"{ (hSFP6֒|Ej%!)F_&rh8-cbFm|p 1Z k 7 F!8ǑȒl o{G HX܇VA`{p+'Г|*)'ðh>ه/ɇ X܊}p*F{ :hY(IXU偖aj@~;rD|LȌLɜLX,|p̽H^(&y L(䞴ˆ@ռMMM|zH MΌ^ǖPμ0qp< Lt\N OO,ON4ф 踎x0MLOOOO\4 7Oq(pD}P P P P P PPP a-Q=QMQ]QO QQQQ5 `B Q R!R"-=,Q#]R&mR'}R(R tH$R,R-R.R/ txH,C%R5]S6mS7}S8>HS8S=S>S?. h J&?mTG}THTIuD4,|`ITP UQURu( dO-UZU[U\OCcQ0ۡxXzYUg}VhVie@`E#Dhi=WtMWu]W*( (89 ;2c NeW XXϯ ]r3 jVPs-XXXM;tPehS )aоXYY=|ȩ?YkؚZ-Z=A ;cLBSZZZۇ Z-[=[+P ۴[[Xt+[[ \tuS=\M\ōT}\ȍ\S\˽\\\\S ]-]=]M]]]m]}]؍]ٝ]ڭ]۽]]]]] ^^-^=^M^]^m^}^^^^^^^^^ __-_=_M_]_m_}_________``.`>`N`^`n`~`` ` ` ` ` ```aa.a>aNa^ana~aaaaaaaaa b!b".b#>b$Nb%^b&nb'~b(b)b*b+b,b-b.b/b0c1c2.c3>c4Nc5^c6nc7~c8c9c:c;cc?c@dAdB.dC>dDNdE^dFndG~dHdIdJdKdLdMdNdOdPeQeR.eS>eTNeU^eVneW~eXeYeZe[e\e]e^e_e`fafb.fc>fdNfe^ffnfg~fhfifjfkflfmfnfofpgqgr.gsG>gtNgu^gvngw~gxgygzg{g|g}g~gghh.h>hNh^hnh~hhh5! ,fBBD^^\jjl..,nnl&&$VVT 224ZZ\JJL::<**,zz|bbd>>@ tv`İxļ46@ltt b\`BH@`Z$(8pfpLF@`Z؜䐔prx.(8XPX$00PXX`(:0ΰ0blh`dRlԺFJ@ԴNf86(zfh0.l4<УKNHJDv3|{Wi˟=:|ϑ./z"N%t`FS=#G߅fᆳ<#>`R1TA.cQ4hЍ 娑;= N>ӉF)TV 3:3(S!p Ih&QlIGqvdP$=l(`堄jj_wP@9# FA22dCڳ,iIh:*B6Īz&sFA<fp+[:N>@ <.&H@FAHn[Sdyc%$-ښACQ<`,p;Dϑh+Bx= POK~S:pPHZijaupϲ,@ԃ@ԃ4:H,<N,2DPX6+==BPHH C@ )=sںM< @BCt>F#]MhE@Iу2.y`Gψ<D<#G/j  Oܓv59= ;B3\C 7X`Ol{޸<:wN  P>#=0/ԡ |%"~L#@WȀ9$ А&f|C77 +1AzP  {$uhG2ӱD (@C0USȗzpG3B BPq=q#=q | $ "JC>H1IHArI!݃>*`Y%@zqzsgQ|p'XFđ$2K@' HeGnyVWH_ L j MB TPL%(@>1|x<&]8jV$`A" @Pm*CW{ 0)AΝ!x*y/ n J@*wZ=lTx@{Zp?QxP~T󘇦,kN(Ʌ~=YU1V:u LmS&FD`G=2Mj3s+od"xD IC nz#!p> ؃~jb){aG*߭$k\nV2Q`-H[yPDLZ*uYr0s: Vk>umJ#"ykMϊe2=c8A?CXlA'8"x3 ]gLjX@tN(H,0>E ':܂0p;dE8"0rYtYxh1Oey\+e{\Y P`*Ch՗2 G@t-yClGSx\@" X<ڭ9)7#Xm ̓/!gGC@l"lLbiOl2ER4Q 0<ԑpBuS;= ʹR^C:f!m9ߣ@fsiD_;WpBz4j[HdQpt d?KD9PT."pd<6Hb_}u\>e="&ثMg :`qh@=Ԟc옍8&zkuXH@k)z :ĨBC)D.{=&-(P O|  2x ! )HЏ{jC40!H9 [z0ie+ x!܇  }@TT'EV=r=  !P 77@W5@M}5QCg A<gqH0|=G&!y&<%g0Sf1R t`rcP+v02> h_P=@Ѐ b}~hQ\G~u5}jl؆0!p ?pUA7$3-p0n9u˅! PvgGE'Iht׈ A ŠCzh*`O P !9YA$q'!&iyM |Q&1,ْ.(73Y57:<ٓ[>9DYFyHJLٔNPR9TYVyXZ\ٕpA3{n1EB q2Bpr9/PGM'R0t9YLhd'"1q6d4Qv[.4\1F])"Ҋr !9Yz|T#0q!"4U0CWcMS S,P_ $0[U8깞[Ixq$ׂYYsLLW` ymc@pNI`j왡HIu$y'P27v)W1mrwe\2*_* _ș:DZIG̢sR>.gmf! -*.`  r0dpr:}ڑ," gY P`S0֢qt]`waH% z+4Jlk[Re6 .40wQ0O1pdZJF!3@h)/D?#u\"gJeP#0:蚮:,zT Yq$"AV*rPO@d&bfڰzJj$ 5jR8 !~E¤ (67+R @a-{ 2;4fc.gZЅr %"]b*U$]ǭQp@,H5Zq=K͚#FsodV aHBmpYNʵ~KHGP[Y}Ya& hT =x`Q@sRm @HZۺug$HՏd#Rt.yA VP7[~Ar R;5p9$Do[Vwۿ<\|hp! 蒿j)#+" >( 0(0$:Sd&Z:A173p#7tc79:,=0@u| #UUj*jp!BR451``LͳQhb_܄_7|:@ጵƸ!چ_r-[yQ3mLcfIP 5aP@Sq'K>}P$AӯEBd9wUrcFpgH6$`.G"!7W9„,G N w]†SGoa>$p!ࡻ=wocϢ|`x:՛YB;z{r{W a$T zۮ#|eY UCڵ*n\%^!T{ vy :xV&]iԩUfkرeϦ]mܹuo'^qub>xv ēC`A2 @\½:f܋d_=$*S9=4OTH<~ o*@RC(BZڨ,{/cF׆k/г'{'YY1.*AJ*>ˇK0sL24L4TsM6tM8CgxXd h&PIԩ p($Z@H*F{8H{`z*C{[,ͧY4#g -@ v"sp"ԛi&N=yez/ dy@Bl/ @2Oz%0 Jŀ0ŬgU]:Pi݋t"h\h{a `b3xc;cCydA@}*  ʤ|bJ@|$ x@J(2θǀTJuܙv b6T *L;# 9t(LU2d{|7|y+4ȏr`3dQ ~ ⩠^As$%4! AQ+5oc2B7u@ u  $@V$zw@ <=GyBD g?DI`B`T P#fM!cKKJHU;` =qA iIw锊R6QўW-?TH,Ь{1}d%-yILfRd'K#t||Γde+]JXRe-mY\-}K`S$f1yLd©)QdFSӤf5yMlfS.1QrS$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQzT&UKejSTFUSjUzUfU[jWUUc%kYzVUkek[VUsk]zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVd9f[Vim-{esK@^,){FW"\Nq6b1a@ZdP !#uzaܡ_LoB߭Ckʁ/BFX0u#bJb,/L f#\pj:wlBlcu,dqSr(G&X=|Ј1yͷs2{P-YH/_xc!3uIUn?:h]WL Ϩ /8-j9C|LOT"_yy\{PI Ԟ IJ Ç䁂 ɇN` |(({>>uo | L_hhA>3@p@B , ?=IDci ?ʇR|X hzN@w 0Ä(:\" 9hH3%;FIDS 3 û ɵ0 ~8{pDي{В{'Җz@FNĀ")|3ʇulDžSчG1A`_ FMdQĀO YR4Ea>(sS;' Gue( zq$ GQYZ,[̇\\ h ӓSrGx, ]3h NC5L|DZ*ȓ(p K ;8ˁ0D%Ӌ4ȇ҉*W D3Ѐ$@BS_p 1AP YȂ21 5s:0J$.+Zx+3`˫@ Db, ܡoMP`LQi{ |KXLt,P FL!R0x e L܉PhH< *;30q 1ą6ͅЃ  K]Wj  {̎eX$ $ ű ]k#{|0$$ |Ї 68sp9#l*-*]2L%k B8؄{R"#,'hStpIP;XY1-3#e$%RHu«с1@$ SX:H-*e4D< 1]L }Ӓtզ(֭V N\Vi$N#䜈(݊MpHzԁI#xx( [5  h2Iѷ4x xi{|h$ 9<= bP*{x+C!-B5yȈiLNЇ>pX(xA $Pb@|x P4 ]w 쉟؞HJ{ ex0ǒ%1 9{i[-ok *qԐGQ+ą" ۷c X3JEuAHV.YT+`qA%JQ$?esMГ[P/:ktc[\B]8EJ{8l#Q{H HꨅJݯ@`}( ՠĐؐ]uF d] P XN=h߽=`&Ͷ2#t:x !!W|Ѓ' F`ya!zOf58J܋|Nԟv۠+{">P" M>5LA [m5%"ٰh@Q yY@RP)cRCLQlQYccP k]aH>99`M4aB4fqDxsa]=cb'ч}(05{neWY=.(ه!ntPOЙ ć @#IPj< EEdλ{|Y6\{€Y!{0JYhI{h ʠ!eR!&M'hɁp4`pȄB9mRF"!""# z$4q؄!jܣ9(% PHYl-mr&O}%/TKq._s6Oyդ؇M M`zW"h*;ns?s2/M…DA2k3Y^\X")pDtJNJ {YLV< rK?uTOuU_uVouWuXuYuZu[u\u 脞]2 Obc$H6av]v᲋⬉L^#_n3 MW 1vw tjwvIݘ3w).x? }($kc th呂0Ӱ¿,9H 9 GH$`efՅPI3]y?Q ]7 N0(/@xgx77Q)94?$U ?獴 W> !iz>iЬw 4=oV@3&5"+ 2q\AoQ6tVyLY>RP#}043Y_˗|PI?XC "@roh8!~J}䨀$Sq{V^ifN|Ҙ$W﷍{'|` }^w  |_+h ‚Kx&|'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2g4> &AeCA5Б=wC bsg> ~"^%i`P='BL>)`!ٸ)p`[t37b@F胗h|KAFEbrO;޼O_\+bXi-B^'6YCAPr"%PHT; г=8OR 5I!gAcAe @Aq=)aUP+v P;<.тI PGRy!xGdLFс-^)X s n5җIF%#-4-'r"iК,ã=>)$N@<}^Ep oj)z):*}#Bq3Bb(A=,CC ʁ7 OA=P$IT`Rt=TģN=E68D#أ@Fl[@+[P: =b?KCE{>@p80T{n.kOFʪ=3 r E;( d`fwN+A+-b~sAs= D~4޳yO'A>@A;へXyR!<:P:7lSkbAzA# RN=INdQO9[a> - 9Ѐ >=FC?X @(:25d]lYH9nyk2_r,a#"xPh"MG @]7/ D7:k#()RV"QsuX p92~>ʀ1#A@G{D %,1`"h: !72 >~zpQ#gd_$.@2( n+aY" qW|~ć; >"r갇i ^rzl` 3x ^A& |dr$-2zc ;fG<:h@yqc(azh (<5+t hEZ'؊@қ_G"Ye>f8rx`WBc&%uẉA wUNp! Eȑ=(֓+Dd"F%Ta[AI(DCfA,HZc.SU`#x@zTt&4iBPȉQI׺"Dם 8v`H٠NT0/ԡ&&d}ld[Tw>T^'jUIDI!__so<ɠH /Fpe"ό4ךA&qa{Vk,2~0#,asf 8؁z p>ge>LH/`Y^M ^AŃr(@xh Cxr$LTzifRV^ pT8)p@A\" C H,a%FDQ}L$G1 }Ȣ+LdT)P1݋k~ d0$Y_qO9-s=wpd7 y|n$`!qHa,A 9Oo׃>r|IoXc [ Aaʘ!k{>BM\M0Q{ƛ*ppq7-. `/k6H{QcM}T}vDD3W-HK#ϹYl JppD?65iH6F\{ 6_y<`<\cH=|2[9m; !l#ʃi:Y?xd ߐAG`03s7NB !C#GFUG!yLS8h) r{Ԧdܣz%[ BYЃ>v-u݇#VAKG&@|<$G?^ALa`\BD-5FCUD3=A, =fަO  Oў8dI?B{ =AY_A _!`%Y(MJCSL;5C8`V> EZu,dr ǘDaD=A_#bMPv4(-Zb$VbFdA U>l H4b>-ă+nB+XJahA4m @4B_v8 zLAA֎=XXPġ+b ! `m@$AAGzC,;;qG1" #B@ԋAbAjmI䑜*GG=\^aE4Њ@g%H >dMDHc%DZă!IJ8>r:CB@m>XXMJ:\C Gh$S dHŸAH afY-DzGD@AC9ɘò,o9 }abOƑT.I&_fj_`H㡠mX'mvF!#Đ^`)du g>]EPChyL贅b&R.fKR}zh:#CT&eAH'g#yzZ,>XrC$()FD: f;d W4H+gACGK*߅DٽmIiA|niE<&e,GOAK=<-Yi&_BܟA0E(ߎ aY> x/ #6Dt]ϢFANA0\*)e&Ȃ/XiZC0M`E0@+})5g<< 2m#FhE4a~ V'(f;4#`T=d#n&>ă?+<,(Ljz?<ë^Zi>̃><@#@;ĞP(~GRjޫ:_ԃV G?x;@Aҵ]i&x;סPlƒ^Ak%28惹ʥl,?$,j>CTޕc~^:@V\!Ţ,ZEJF&i@Ì .&:]`C^!5 RA>=@ r.G@*[泪زJ^ GjA,YnBHH.vw0BeFÍ$_< =d(/bhrE .xRpZҮECDBZ.DZ;8薘B,Ц=FJ[8ӜLC>=($G`oӟ!.v E/q )5/B؅b-A-C x0fnpEpK3\`ED h~%rI>Nxi oyl T~psS~VP\bS1-G۸p ZhT->o# $G oHN/wh``BB! 1?N⦲*2+kP@#^C]aC8ATBIX@=0`Y@<o՞aMohAPX[-/ gD>ZPtVE99;DCBW"C=Xѣ24S RL4L=D>\3F<@-t>. XÌZ,C.X%AIrdv, \djTĚZbH3CKFsnIAOTF8:8Ӆ/uEו>\[Vs CȈv# nv,l5aA4;=wK9<D@C6ZT``F$f(@C00UA15Ȃ@02h 8cpX_S}Qf FD@ (; R-IxC@ˢ 8|r%2CCaA=5qeBȂv烪cE8P0ox |b1>}[($5,euBXCZZyA%%ׅhT0 w=jEPR=tSGz>dȺ9E`v/C0lz@ܱpz%9~>@ 3z;2And,@<a=8:E`N9> 91Dg {B 7W?#`[|-ĦyB|@:l@A%lL#<;t,C̕@Kxo=>p;7JDG183#F3zwB0kD<%P1պj|pDìxoA`H7&HD E/(C sg֕8XqÃ5tj':,r`F@\88~}ycO9^/9@ 3"5A8؈w ZT  )hF`hN@Ľ{D3xa| JB; g_:sD{һK{,Aۺ{2"/Hq:%İ>9FH |X`>xh+Ƀ/ 0I3N0B[0½ 3 nuS6!xޫ.!<ӊzLz0,⃃[dμ_ZV'Н \jAWrZD:a`G} Ё҄(nU4`Yիzw=^ZV/y>,#lo߁T9}K%3dG˝hCudI^PG1I38ӮӼ ;L _6T3"YQ갺&'-w.ꞏޓe$AJuìn.dq}<zJ ڒF}H%J-L5ݔN=PERM4 /ATu8Ճ> ݱ' YJ`XLjd]6XgehjlݖnpY,sɁS(P. L5S>b Qtǂ`F0Iu{5~%-MU-\di659uG`0hHueQf2euޙ}蠅#5w(c/##p'}XHڪ>^~垛ޛ ?_%-5ߜ=Ewkҽ.ZG_]vG_rEAC=Fqݷ] A-0V2f;~k'O4Gyqg>i z.EОIӀaw4jZԗOST hwԣIRBAi*PH-Sq2QG'Qkep`?LpK D#HO- <7#!IT .}IB؇;@8Ō !$PQSe={0ZI t 7FOV 8.c )9NzJ+CIbLLu%&T*A*>fX)~RKA&0xLT0Ѱuʕ%-bQt=5*I*{G&FExHXaG:^(=f˛3%rғt*!yJ Uh>i\ 蠣T'42*)A=kdG̙(%R`S }hD')ݙQ=ȮIW ${A'SZt()NltC"?~35]@рƣL]VUnI&)/{L<ဍěfbv+"&ӎ8"G`٪*I $G @K{ *H)6d zX+0O402P*_JVnj-g[jo^1ZɂT*#;BɟV+U" $I>pwEqA$,ޙA` w(أڕnk|=ie/n)x5:j!Kg {t * n#\ miq9rfRW-u=˜"@l I_@G^XAzl_\fa8+уeP=ƫ(ࣅauzVBI;4|g=6BD %E' v0/LF|X0kЋAY`"FhXLYlvA,g9wꁏ־hŭs}(^ Nz6R(|` @ 8Ҿ``FXcv>ZBHĽװ؇LG]|@# 7B _D`)Lt׏HxTc-=1'm:!!1`%}>C 7 $E}SVCN0^w-GI$H` Z0O4p 0C 3ϫ,?@H H Am@<p 6Hs㮵&_{T7Tx]J! ҁz @|c/|M@ʙB'HKd"[b…:k O$NFD pG:M"(#6 H(K  titjdZƏL&I! !L P 0fk(- D"@:8n86nC @ ‚ ƻB k !*A6`4*R-dq!)(R p-H! @:iQ{ cM!(Tԁ !LD qqȐBN-gjj$ X|_b[F Q[k  a-! tΨUI)¬\pR.@_ Q!6DcX !0ZRI sR'w'Bzn%l# * @-N$~%bMba c&b%!J*cN DR ϖ!;!)JP瘔b  "((H< q XL. @1V-:darS11A*B3dT*"SdR-7NHRD@] 665[N39>_fb!aTS$*5# -4%P!`2c4ܔP>;[ƈ0O62Ʉ(" {?@tY* `BxʬZh%2j!##LH %&I1K4Ũ``A1: 8 s-c;AҒF,00@OH>L"0p!emKkvI:A )! \ ҬmI" !@b⏓6%DbJJG&4R h3 BƐt D!*L rìHRh֮pAA$ lT!t pr,I=0XU^ݡp3 nT<TZZuR2s+`R@D@3 `j"5GBjkԣm?R<7 BQm{.14! 8, ՁZpkQpo[ա[R6y 0-킶,ܨnHQuU\\`(V:bB\BFﵤOJ+@N VII3),55Rl:aff]'iAWPG6hKhA.! `e-1fѡF6m+!iP^@UH@ho)ǬUr'r5(B@)ACod!("r5dL㇔iH7I敂f"C1Mb@6#B@a@!N!ᑰ~7!(0u.!R.w+2ws;sU "tꐎ zA 0:D*I.F @`l"8UhRފ" r_1STC } "6&Dx9B)B@>R>B|L!p`B5l R,5xcI/ 7Yk@:Do7W5@A6BN,e|Winv<R`¸r R"wiGX6aaaI!ܡu2E2*qG06-N/V$AVs2a <@@" D{S[ 6L&Z0" XvT( a^O2{Ȋx Z8 lkn$P)ayytS䎝(͏"ٚ *Ğ`Th&P;vKlch+"b6tE@e! *m5A ́t)"j ĕq)Qkp*:!" x9nVZMDJ! DZL6 ' peˀ" g]:2 HS̗Zjʬ"R=d**! cxWjH//0#\!B@^)@1RC{l#K:> cC3,6aDXC.P*LBY hL $?-׿ "c+C=0kk("Ȩ8F38<"nz;{0;{6*$"B`z?>#4!`!@*p|⧇VY[ٟD:ADY%!hMdAJ`F?z졸d0RGLUQ \N#맦PFn*6a'b&vE@iu/sW;{HTPPN"(Ld*l7:@PT;:n*E\ۮWY'<#Wo]ѥV{t=p }'+ҿ*daX'7p:C]G'Z'K[_c]gkos]w{؃]؇؋؏ %{y !ړ۳]u]HȄRlQ*Ev%ܧ܍p]I<ˑ,ɔ*m.롏^ ixuTi d ^>`Lj-S(aAoOS^ZZa$<?ަZOQ9~GfޥU1'&L->! \R 1X끵Ʋ0K+@"Z;= $Ku!=@Y۱DEit^OK~+i >b+ɾC^Cu(_wbfFh OGxl臟_qD.!e27D!;.>NCX,ޡVFo;6MIi6֦yT"Ay 3/@ _4P!C&\/ƍegwiH&7(9LugΗ:u26G` pʽ{ً;| .½{ :F:c{8”9I|3aX{4Bw9{4hgYW2lǯ͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?^{"!&dÐ9s|U=@|E؛E!c Ll<# @|+OgAF##\×vܕ6U3>D>tRWg<=L8gv'Wv7cgF=CB;pp{rM0@ܗ~Dhޒ)Ƞӄ%@c~S|Q(dՉ\Jhh.h> iNJi)DdQa0@= d$=$uO \7x1P=W _ #@GX`Ϟ\>X:3jk_ȲFtՓV;US0ɏ8 k>[=س׻n=v|a@ߨ8'LnfT> Q#,Gӫk-!=q|M[cuɅsgdLbF@FW1CFtJ/tN? uROMuճb+rhqF<`3_`Ƒqe:SFVS&XYWfAFqs>&a:vX_c}߶c+>"#?o~d,{g6Z)6ٰ[?QOo%t= `8U.8txG/E. _uw=g\ VOߏ)xHƒ(h#R,,@m=|Ll|Q0># jDTq$+K7 h, r,XԵ5#Q(V`-7=Du aGT֑ʇr1+ZV,V>URz$Wik@K|l.P$N*wms]%a$L+4BҬG'ڂ iYRĂ@!;e|3 $O>aYHd>H|,15{]R x^]7PGܡ,YW#qxY:86wC1t3^)yK*MH{4І<歯Fk#>6 f0f^tN5rNP DPZR | @ zЄ& :DCgA5 mDb UAAR{ht:Nu%K!΢*U<KC99͌?6>7Qds~3$n}CENDm8Q!=8F)n8ǣeCST s9RY*0:3nd7ݸ,r}YS=̃!|P aN|I.*S>ϻx7a~4dt>q7yaHDYV~钴pϟENb!t\w!OHInjaFTqQ+>gEi36t`Y^SBE0TtNFqčT@ T 9 )BȔdHMDBT7&*A#F!PNXaZj;.H".0P-/c54'eg*A"!CdNF $DCyrFoپ]xGc GaZo~Fe A1B9AG0K_Z Sd-i*~Bf$L Bz 1 0rmvtF|/nw- T. 0Z30[VҤ0O¤!(d*fE O`$* Dp@K+а!:6 Q`&}ixO]ea40=_ X!^'>1,$4S@ *՘4E9$):~^S_ %kG%Zw,zh S=~%[(n>5η2*X"EtȂ|I!޲u T-޳7Ђ=9KiuKv+aO@f%SVG`bk/Ǽ@`xt\@9Ժ"F! P`_ٵ2, *YlǞbx7(C?1DG$DOD1EWdE_1FgFo1G[M&=,(}6s➔$*A}0({( 50C{.(mz ;+d|Чx8/{  q|y6݄3rɁP'6Ӽp2i%($t*I+Lj8,kW(&՞x<0,3Фj9qU Xexs̴M ;+= {sBz6H{"jh8JA[qU{ZahˁQa{0}Beh%IFg%Ԭ}!Lj`.au9@@3ӊSY,h8+; ) 9$zՈc^Bx#LFys9iwb#{{+ =?7 tlFG $$p;nww.<43Zj;" GPQĬzًذ3! "+ 1LK܀1Kkؕ o* A(`(gX!!!{x*,6y' U!ZLw٘ ?!ġ@ $y3P3D&D!: x uȨ@R&* g؜,= Dp,P'3R,Y-ɥ.aYd৐NnB':P;pI"Z!M:O M4UU@Pq1ATI Bmb&Lg7 T8Cr岘41]FId}H$>+z{@JGFmUe:aT2Pn |`=պI767(r7'q'(ðՇb[_p 2􁏒` `H .7ekC@b7݃Y,BYh@y̬ wxNKFft=hBЇFtcE7%iIWҗt5iNwӟu<jRCɤ=jUկue=kZ֐cumt׋=lbFvQ/miWvmnww=nrFwսnvw=ozwo~x>pGx袅'x%>qW" (r5>jH -r/yK:k|МDy%R z9EByҕt7Oϑ; X =e)PËugG{ˍrQfD4Y.'qQI`s#?xQߙvG|I5"Jx- .o e+}E?zy#ֻJ$c0}YdAPC@'.G`5d>lxpVBj\+>Ƚ}<:Wèo85Phnޓ|{,)I 0dIȣ-IHd PJٰ 4 6y hGŰ>E{x{ Gtr*  1p@DlTɕdɖtb}xQ5L.$ VEƐ苗Ȇ; /|;Yh Jpjt˷˸Gk,{ &N~~'  Ԉ>2}x~~0wcdyȼqȭL1$9$N(8E{@P+lq vQLh?<1tH$ί_xN Mė|H(%;}x HY> x (\ РQ j#} F Ia9@xQ1(f 9L o4"5#ERlN?܀ȞɀN :R$Cu`!w'(J$|H5Ehxp';Y"|h"Q% 39}!ׁ|{S%PT-F5yDPKTUUeU;(9ۘ{@y<0 ȯ֢ՆL0: '0ۘX {.M-Y#;LJaf\zvKz8T:FL Ǽ:hM(EpF ևv^N{0!9e~Ȁz ,՚IiPike  & 5{h?@|}X@M(cP$= ɱLnjta-B_l*$r: PM|@g}Y,WqgMb7,CfE }p`,hYF() ،`lǶȾ8jZx_p0$wevp y\T+ Hb鐊k_Y), M( <11m}h.<9KkǐGzo8LJ6SGutq[,!Hu uȁDZ _ [L+1r9TuI$9|D':UYϐ :^q} HTWu/:$= X t_Viw؄,ʣFw$f @y>IgW|Xy7C \y˾؄pޅ$'77WWg'7GWgw'7GWgwLJȗɧʷ'7GWgwuF PӯdN+9Q9˸O\hN/wXÀp'y/_fġڳ!)9YHw3Ģ{0@"Lp!ÆLXsQĊv(rÁ$?l$K-bl)s&͚ - &Bd%qs(ѢF"Mt)ӦNB*u*ժVbͪu+׮{] jOV꩙yO]nϸKwݼj޻ݦ /exqc7eJ>re f|x5xBEYҲέ{7޾.|8ƏwmSzC'1Twc_ˤWI-Pwų~ϞA_j~-NdUe CFA8uVMP=s,]r#X'+آyφ)`>cd0A܎ޏ`lB~ԡ;KLT:eZv:T y%yҔ5yL'Cj*4ЛT Nb0%@/"2ڨBi`͘3 Ot`=8`O$Vy;c;v`) S:HCb7Bq^ݓI"BK&%#mj*S7PX$D~T0@#p-jI0IPg̗Qkcf3pCDA!XA'tRF$K>:y3ljެYAt ``Pik[ꩩAd/Kh=\K:g>`D<2&\-GZ-yS={Dsq {#N&} D׵|;ꑵJqz=A ܓCS_ק<P>=ts*>3;cS=Y0 y62j#d!z/iH#P~T`>|TľɥT=2`xlR@z%K6#j&afܑu<)>13 ,x PC$)A\Eݣ0/ԡ;"|$G> fc,#8@*n E {أڡA+nēLdgI(|KYL_` q #\&< ?AL`H q3h,a4(G;яJ*Fb*4 N40AA衎 (c!&sv=f @=E HgVH Q@H蔭XUu@i Y@C *e&$-H``{"T9 M:63(l>8= %z!Dp$$F|=Ct$kQUV:"Ud_[@!d5kѪւ4PL@>Wr h {ZP`GtM=o>RZtyo# "8ۊ:$3J>>wC {VHSeåp\S{TPxd>4 cA t60v/ob :N cֳ=vS2H1@qp 6r[4 avA@MhY g;!Vl=ZCyӧ4d.'6YlϹ^:x=i;¾a>}$9m3LIRAkZ6Ȩe# Xy@}eef]Nȗ:ͱ sy#q62ӛC=Rr }J53_T^Az:ސ1p{Ap b Nw]!ʮ}E,|aRgFA>$gm@+e|5A |B>k;A#q|#]}!s`ruC{1Hjg*ڿ/龑gX?e7gnApoݗ^p>0u$^ڬ TEhDfD͞B:Xߵ^>H%>@80|\A,>,C \} TUbA` `C, a"x>AԊCda<@SU ]^DHE͆;dAa\%ZAa1gḀ1 T}C3<fBeB@HXظ:<j'!W !D*I$۪Ɉ*J7$6 $cBZh"8+⃐;jx? @;PCD=@*R)û8b2B?rWA?_1^1 @ƃFJ=\cC^DDE^dFZX^dLLdM& 8Db ND&CB=G> p^s!\A @==,"DB=:8e]C^އ|̣x=x` ALS>D6i 9AuI&EMa&Ie\ff6gnn`df+u=8<ăb2f-#BX`nOD-l:BdB5Ðăf.QI~g"mM:BhJ!pb=ĉWɂZ 0Lndlc (u,x:\:IP4LlFZDօ<: =e0H#[iH, dI_%^>]y~:Ŝ\;8`5), tnH/d0:*ę/ }F_z2lx9t9I*,q"DvW՛.") $FcB ##RDD0*MԃQ0bɆ]TUi\J=u\IJ~W $Q܃yV2+CDjშRk!%Dæ4$ >A0tNT>ŪC8@DXRaY}=>jĽTR'BH$yROkCC=liBvY`J=ce^A ``)֖_ C#zn ibHBܔ8ܭX;<, 0Hح4tE:DC-톕,ےVfd']=|G@,=A$@#H]4: g͆-ȁ,ڎb@*ǩt-m-D@<A@ n`^;nҮ`u&f$1,>^JEA8@I>î @>R2D,>8EHK_dHI0^>m,` ?h@C@i"6 (/4@YX)kʖA/:>)ExeW#If KcJ\^̊KjE 1:=&< ZBd[lݩwz>-I @1b:KVCC. 1V(*D$S&eA`,æABOrUL:ۣl@++F5'F4s)%lC" D&T1U3pBx:pJqb@ 394=S0?U8AZz>RüW,AԈ ~Kn|R1 BPu8̳lADؕ#) ܃Ã@1 +]΃}SNĥd :lJxt ^Iο̎VA = ӄ3=X@v}$$YTI&]U:lB|@}>ThxOA$!^C=TA@ݏDXcJ:ß>1BAbtA)-BmDLKU#=0>)rUÁ׾i;}-,@t&DxB!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹӡ7} G@{O_|!&סހ(ܫ'@A& ao!*3 "ҳ10Իo_)&gAAL) Q lB$;{& wCbF['dPu:+>>xqǑ'WysϡCp+\ix{@?/ \R={\с}깧1}&H}*| *AE$Bg huJEOF2Yi[qU]y#QGxΡzCqrG'Pxɖ rCg~:Y~' {wCTzq9}LX3˜<p Y*8Q%j30zO>|i}WYnaYf"+!FI JT!1j' `^:z櫱{$Y'9j1Ja xB'D1SJ @@lN\o!_Mª1 J n1!%@3VPiơ*q7+i5F ´dǑGч0 Ա'/m=4"G^! 6;bgG,_}ZҞ}PG  0dRr @i@=P`R=jNPJh`s?. G=*@&*@p mbHHw$Ȉzub۲&I,_A` 1 J=/!:!! B9Αu$"`=E7``<`]GDD)9.@"3 dD"呕*H}*p!,Tt GD c c  hBB7CƷ ~r*ZA@+OyΓ=Oxg% Tj4AP. up>ĀgPnGARxn"5IQR-u)M RΔ5MqS=OTE5QT.MuSUNUUϘlYuzW9e5B:$o5O[9zYgVCx_X\Q H8"8N'Gw&Hba5e/jtM#C4M=."7>d%D&, DHj\Gъ_B0E tzpzYQBҵL`؀8H6&GVWWp:T:  H•`zqy0c}>TtiZHzUGbaw5"` \h c!"0=aYG2Q4ApRd!9P'CL  s]4j3&_%biE7>Wr>NB ԃg(OX, A- hAQɌOLxc€X0a{h: etdɃ (AySMt@<w;ʆD"Qah!!Q0R = 7}@u-SV3{@ @O} 6apBQM t2@$vMVtr"iF 2 TBJ k݋@B(cA}A($-@+ U|# @C,x$,61 LJ/ZѰ `C?bP*tp"H߷guoDY.3zlK@8|`CN9+6P|L`\ ǃ1UStUJC ^Βݐ@3. =ЩN2 C`@%RtϞW):c6X8Cdٖ^#ڧ}tl"[&T>@Hs;gR c$<EC Pc=K>h8(\I& !2aB !8d"J(pY,!`"N** VAp즱bMNdD*gM6Kb!Y:AxB#tAi g0#>@xɰ "@hPXa & /߀0 H!Xa{ > !]!P!ڧ_#*7R I" |" 6(dA++T( A r@&L &{A @P~dޤ1"bk gFL *@jaj6 G#!}Rh)pamN/¹u||]*dY: B#!`GaZ1#5r#[a3uB('bbC'5LZA!@(t0r"&@f3'xBƯMejGH BRd8 -և F|g4O#r-rOR,@g1"CPaøl Cf !((J2ha0>PƀD)'P8(H Y(Ơ-F%( #8>2 R!H@6+\s88$`KH2T0" n6` # ಩>B$&C`&v|2!'B4"2 }'U46/QiX8 $(" 7)^|fZG@)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4H2)XeHtISTH?j&bJ5B+ (=JI4Lݍ k& @ "2 8-Ae"=´)1TLuP̸K f&aZa7/軄& ^B"X.Bq:PEuTSab#|3[\#$0U8"̱#<SB{HuXUgRh0Dh2J^ھOh(r,@d>ez6i=@<@E;H7үu/a|˷d#B0"@" wy5#p dJEnPs-uvqQ>a)%XuS">|7\!DN8-(Nd>8PE9O* uEkZEAqL぀a.QJ7%q;" ,[[e\PMl",1qIVu.>%_|{T9*scAE8ؘa7HÀv#R.r[!xh0!2A PeIn֦oYnb2!&^ZkFgԁYy ڠ>?!]C?+s!t!r)6n0⁁WJj ||!<%|)-1<5|9=Ad3vOSXyѳb/ FԿr_guKX#X8(pԡx8ɕ}Z+ oջxC~&!x1%8Ԙڸ8GM!P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIw_AY SG!zݫg@+འqv-s^x` -z *G :ɪgAΝ:x `+{I󅎠) SO+װc˞M۸sͻg/{ Bn|u~tx Sz%W_+̝aOBtu/ń}ysT}A -^AB|0? ($h(,&Nt,vcOsѣv B@P<@ CC/Td5ިAua .4>gܗOi7Xg A2@aO=5d> TOi-Jb~gSO#'褔Vj饘f馜viHسEր;ܣ:xs7>LSOAڈ;D.X^rc*APD샏>wYʑW==O=x ×k7\ 鿗IXjAس@B!,Wlg!FI>@ܨ:[:`\8;TN< D>3{6_QO_B`@W8{#>N(~>_ue=8W0DM= ؜-_Sތ7G.Wn?$:!g砇.褗n{;W.n#8/o'7G/Wogw/o觯/?S>O; {#KL=c LE| hGH @d0A_$Q<6EQ2H17@gчx%QD܁w!9 *PDz` *U\>ܱ )GIU-{D baza%D7P{[Ҍ4ʃq01Zd4S& _ġ> 쨋 #F>Y+f%f2Ur!r#Rʇ-5Ib R]z!8isZ2aY=:쑖͜ 9@{lpt>Cc%%䅃Lg@M b(9ẋ>ς0h +⡎Ft\q ҃ tpGJTuB@5Cx%@R:QĢpV! 0G㮂 5 gv)^ zHuwS0KCôbƮ'ODH 83x+* ⰵ!P]DzYX1:>PC#[@NF${ mpQ %E+*k$" :djm`2(|QĐws@ Nܣ Ňd9DAJYN,0/|t脨F 8 @YD #xLs:O3/a!%K oPK$bY\q0 k4/{|XT*PLB> duh,G'Ѕ.{8rAR Ǜ b-*-c,ad[]20 3G$''Q24G|HԹq  fABŰg T`T ˆ3P1) :tblhHT/d+{ańϯQ j4PG< AjHs' YHArRXq@!t_iW&maB$A(B ` d JP 0?bݩ0̿ɕB 7D} ̍ ZekN=6qY ч= ZȍzOpa-%f`@CY,\Y(Yz , gȂA+:M :d},cJ7y*M}7oHΑ9!cA`8`1қg>Y^x+EKUR(;qAHt&U=S{aE/|6:r e!Z:BF1 pG<zfʋ4)P(? 2< z`b}  hjZ[ai v `aDz7X&Yd, A%pGvq % Y w?"# $Pg\E?ݔ@AV212W*eQ bK"2"X">(rS}g2"SN`xzXOJ)tb1G z i+@tb2AI ON(LNpv NhAX(7e [F1LG31 V#;Qk".%6B&F#Dh'L4b}7сDS@b j+R+AvDEj``-b- H\!Et*>`E)*%υ= `& `T"l.7" BBuPTwLe8**Y@+e% 9}2%p] gyh0/r/b,gpb`dÃ06c5h0Y 1؎>|cm $*%`'2=g^E@H22v5D@8j:v# t#+.E @ 9F`29PDΡ=48& 3!Ls2F -1s5W0#MWXEYސV 6m6AeDivӇ_X#GP8gP 9ZZy!P ^82Qij ڡ ":$*W(*,ڢ.02:4Z6z8:<ڣ>@B:?BHHJAXS@ BHX;I@TdEElڦ/X/i\Fm\nZTI{hhJxZ@4X֨:EĨ 붩*#*O=؊TP}Wva\^u hxz% W#Wqx耫`X%3K0^UY^Daa0|HSqV'aF'P!V[گuW0 fiLSGj֌A@Up%fVjKsjh yv(Ť AeTe]qvMGd0qE6"ȫN*{%wr0SRvE;T+F` {lF8Hzf U{^y^zsk{x?:| K'q[/y˱ aрp+?Ggr`t.ƫ * X!!3!ۻ+>$jqv.N Ԙ!4^c?b!'kb(,)v۽蛾BIO /~([!/b ca 0aPƫ)1//3'ZQ0~j cP2ƒ"2 . +\}Ԡ0yp,iПfP q0yus7 7c88Pܣ;"69jZC (2:(f||!t^*hr<ƣ2nL|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐ[M#"pqVt%m  ׮" p-*sʧa*̢vl8yM'H' Am\"o~?tx]+ \3n6V{l]P,a$M |0PYqp[[[5d/RGG~3hT=jYonÞ*${g{G~ `Z[`EGJRI05xy@` B' ѨP*a}e_L  Na_j jqŗrqqR$ʵ`Ӂrni5bQa^*+MWac9]}K-o; h8 /@ .dC%NXE5nG!E$YI)UdK1eΤYM00Ľ{jWo{!~z&w]{{` (=| ^EUa{0$ 簃=(e$Hhޅ!"sP P_]巹הa d5Dw2'Po )t܋Bz SsѥO^uٵow{0zٻa!E }TЉԉw(G~g `b!|P3J}*Po 0}J!=JǸz̩'{6%!RHaSH{H@ K!D3ZHz"k!oN*G>3dqg,"!FXа{ BtQH#tRJ+RL3tMF}jQ8TUӁ*YŬʗ.ʝzpgx(zг'*@\Y(   '8Xu0! MY{f1"$Rg6 1uܫ}Fʁ.̳R`1q6~LzASO"[؛7!f9 R}ѧzr`z12fsyg{g#0`h<J{b~`jzkkƔ g aKcҶn{oo* W.kgq#|r+r%p܉‘3r$7A^E|@)t@wd)MyJT/!c+40!Z< `3vRy@?_Z ,`Ax(1;&Cp0A*CUѝg=퉻ő*(ʰ{pk %; d7V`0`œ8@&0 \,g2Rx[QH1|@l C3(a<ῥc62ĀG XFVȸ4n"U*:(8U E@,A(!:eᖅ UdUxCXXy֑ӡ:\FWӕ*[:6YP{ kVd!9-ekيfԁXt t*B&VbE9>ƒ m\B.4`GX9'#) $b[~>ApI= "Ta@5$yሜG iG3Qzdm&\(Or|匜e$,FZ-6 ` 'Ubare2v=U @rKzLЋft\ ,E4wfh9J݂E= lâ Gd2 UB H) Aj4`؇}ld'%#FSpd/Bf}#+CdֳRRpESCX\(Iq~/#H"Db&{p` 7@9 x-EHSKX ]T&ހ-0+`XjC)nWCcm(U7_TbTf-X+fWd'=*pӨg][:JƴN~u]kg{IֶUDn S~w]Q. ](n'| g|xG^|-yg^|=yЇ^'}黦xӧ^g}Q>,61 }Cz$3EF;v*&[ D`Aͻ9G=xE:0"YW#W3 ˈ.A#Y ˇؠ5r? "0 @ #Q!؉kq5 J6K: UA ;7+/ pUzkM cX (YйYAHx%w?Iꥬ&/ (|Peig xI9h'aruC:A BJDOɀz θ1u X؉a9q9 DA*h*}8XH22;HmO2'RqXzh1q`Wu`X.Y`3%1pͭOCB0d(E_UQ|CY5eG@Jl3PPtcX fhZ+Ovc$h7@7T=T^<2d{h`F$MY`)d0/L0M~jn;XOƬd P2rɠHPLQXb(ykaʍ Tτ(BE0{^lf8PSГi\BAE&Þkulœ>ó-1`,@xC담~@YJTfPE^n9(ƱSt3d }X|#}xup|Xv .)㫃3o/}`ɇPP5k^^Sle|8fn[ϊm [{MT#Ahi 5le3of=q{#oˇdH)7[ .(rhq|#B!Y"xV|@D-wŅ_Çk>iE ĞӼz`"od[56ctOA >઀;zgGf4 F p?C X2Ҿ{H +ۿJU~4Ddz(e3?SgӪz\muxώ(uOͅхww+h „ 2̗> 'Rh"ƌ7jHcxB$t0=w݋r@=Ki={X=u!ºj56NV=|t8n{$r,k,ڴjײm-ܸrҭk.޼z/不ϝBzxppœ '"uD<A!c͝?L|%4!Ⱥm| ثWz((v=} `LqOā[ L_؞/S?[@#b/c3AA}G:|t> 泏=#># :%> )"-"18#5x#9GB&=#ADEA I)dANBYP`'m!>@AOp UvY>0@<(>mcp Р&tE5GhCB Y*Wmc %, A3Yn4W`dt@qiϫ4:"$=f,J;-Z{-jm9;C; ď:8$TLRwX.[>K ]&=P\O A):P LJ0pԳTq'r/9%qIO{!`OLI*L0̥9#Bӌ@!4 },)j}3@z7 .S6LDA6 Y#@Bc( U`'LpzrGEpы`cSfq $D= uCO 1w5^SJ l?ka`nJ:zcCJ # 2:~1$6yN!H} #Z,5ɂ%/-Eb\c,H0eɂh@3rPB|@TM c2)Bz%KmSS 1!=SSUgO @՛⊐&qBԊ 3CP > 0;&&oTE,%ppE)ʉRDI}04x3QUk[E0>d rqb\i>@C-,iD!0+|h1D#8Xȟ ̑$tǘJ·Q$ S| MO" ja3EjPt>1,!9PJ`DN/ahON=L宪ah@ns0 ;Hi0>8/p1 /!ʂe\WkQ)sH=N$7-H%#x"v%{xMbІI|嵋jG=ԡ͊^f7M^%,4m <X=j+k.=J`oHd`7j Pw>Li&WhIqZ x;jNpĘ:A\`@mn>/H%b==F^ADdE A:C|Zu.`~A僀\ !Πa1UD=Ab@=T<?,"?hVwía%V: H"B5ğEx@=QA >;\,TlB4=0kþ>OLYC9].#363>#4F#X1$%D$ATDCăU zLh@<@zA胹mXC̮ԝ|<Wd,ȁL ^] $8 m,;tũZDiZ L@ԣ`D D]ʆB0@MO<=X.^ƫM]kՃ,pL`‰dB8]lDDBNL H OBAI*CZv(U'*Wxɑih>XG!D>AYeP5fWzR{"@l6Puf GWB)B@A\A0Lf֩)橞5 ʬ)EXA@G=xi>̕=(˹>ïRX@B(*¥:iL`/مs,)\Al:CmOhBDѮ ELl;,A$ChEm}Ga@1KN;Tܱ&k<ԖtD:D9cG^^=L#]P.j!<*С^}a8@@9*k'0kz=NH!@>bD*i°C@lNLlR mD|lĊ,WC &<>} IN,ҰACA0ӡE==ElrjJYUlB+~&ld$4sCmY @+8]@)@Bס" عÕJA&..6 %hN脐`<Vz8,d@:[BL@AnI&OaEO0^M MB\PPan.FCvεc,DĂN80\\k4Bm[[UAHa ģ.E!?lEXH~&M1kpL1o<;0 KdFIJ@pP䚩ޜ5ȁ8@X>D0S\IJ<R>8 DW82p|zcHCmO@ȂfEX@A|&rP|Jɒ$fXC~$ԃ=1  tڢ)U!sE쐉@\.tB&'2((*&;tr g7QD)B#h@>>X@20031*MنN 1fQIc2W5_36g671PHFAm6?9:3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?A/$7o[t3G`tZh4[ r48 (:bHŧetJJC4LǴLcsHH;1?/`G@lK[Kf"5\p1#L7S?5=i.[ph 1T_7vgچ"kKP>@ ESp!0ND@NzRk1E1jT[bMFHľQćՃ/R:(oZl)m,*xG,<>j+P1m^ EP4Y^> h8Ŭ=#t>$/l ̸V%he>w'V ENDXqV KK pNOxQw>)/TPE>XVhWh7۩a,Fc<ZȜ`!m:hiĆgtw\Nn>TLY&Gv]"6JxL EC'I*X}JkDdFY=$LAAe8l"05Z Pr mX93F0 GZ*(8ACL{.C*tODdI8Δ^S}DmzaE @]EUtɝɞlZlfO1KgYZU'zLݧW

i/S C>!˃ @$jAoTCAzZ4K'^dYA=J<1ԃ\ 1#˱$ ٟ=у,ey'Mm| /DLû:dAlLstF PPD5#\hC';`p WO|p@A#N\=F՝L|ZVD^~CX@̈>B~<|퓎qx@ݝ$@,4M@H)8 D|zܻ/܅(ވ{܉(]L}$F# E:`@|3X̋;y ]Owqob@\DΝ<p(Q< қkQp` 6|qbŋ7vrdɓ)W|sf͛9wthѣ}&=  pOO~%F+R W E.pA6me o; Sם+QCC|u+<{ g'<| .*Vf9c:BaJx.ZG{v wŠٯI>Cu⊟BqT̛{ RǞz6pw,| H|lA %(('F4Y$3B@3qA@sJd2'iKwA}jhσЋ:/'"0Ĕ3 }N),;" &BQ9 0+ʋt|J98 v.NJ~r(Mr=t]v}xW {vRʀ0Mz:'rWY`'hΞZ4(?ȡ2!̠ W]5|ħ'Jzק2Fʞxh  " ox{xuڞh /Y(Ppv:Cj8`CVèf'G OnjAOɞ6+, [xH@ iǭ5u|92{9믌&0|:0% H hD>Fu8A{}Em hHSL:; _zԩ@q\1yq|~]c(QߪmA+S> :g0UA ^9A~!!ah_;AGFDHJ \Gq&xq,{4mBxp DLghk1LiZS9N=( щ*V3E  y=J ܣQ䘏b61N C2YQ)E񈀇qzF8 H#>QA q}q>XF#u,~y#'aeTeq́x`Y>b\t @`E<`)I59C u҅Sz[9K,΂rH;/؃p7-dH-ZP<aA EG`%QD!F5<(AeQM68_~WET,I EdXhE(o`6@>bF*"ff v#2@0:##o;"#H {LO@ͬb !B*BR" A TN@&#f/b³)*xbTZ)^cj+ bX' MJƮS:SRpHR#J"$!Rma.ꡙ( $X;@CZ/&H' pEPk&R,@ D "AìV *F@uQǑ5)po,xv dT1jԡ+6@+mjEȫ(Pʬ!ì0 =C~7&nB&B# a"JB" ''Aȃ0RHҞzbbbb" 0>I* kaIZe'+L-$r+42"݌'()/" B<1Y1 $G[ٌ/d Ԣn)mB$"Kª$!ecZaR- \%ꔌjr"/.2"A0j6P' pLI$qo'$6s0 ݡ(s??@;L),Ez ĸ6qdT2@"b@)QF FA3C#B2({DE/0" *Rhb3K3%BZebO e؊4A`BsTjރHcG"`? ;F# i6;AzAHn>q.`^.N'lz`G @K$Nc:'!D,!s//f$!dS/D"`*@Cց|\;$ $ G >=d ʔ'RP( 6 RRT"n#lP$P/2$2Dʎ &*\D)U@ `aVa'42Isa#3*D@Z@@5c5U#VdGdKdOe`^0ee%%(@ R'pA?qġQLciViiif6t' "Nuڲ$ B7.dllmVm׶vܥ$F kV@^a2N4Vpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[e^ A: #j v v-#w'#vvi2(Pww00yvswuz7T%qrʳw|A#{Qywy}~)CQ$cU-eR&i0QvT(J  B$ `k3 `k"`#F)xh̡z6@Ge$J@M%H%jg1b30|V0n؇%AzB:k8ǚA9S*wB/H3c k4@Q04&/ N%08γرF@ "◒+ْ3.tNFp$EZ-"A0h٠zx$"6}AiG A""[E* ԘMR$]-1'+On1pa"MR3]To\fm*513 #喩>1jJK–qI`/?ٝpb +΂EL-G6:q@:0Yٕ)WYA5C! v8r6KM9@A7fbJ[h/ڨq%$cxΓ/bb)(?D # ``'/s,ߓ)0M*Cݡѡ:t*!$vwjYv |&F| r@"y@r}'v}C"nBHbns@TSL%0 "Ё b1`A` \JaB?~Bܰ|փ0BQ^Zc~s$0.aBD]yF0thrK/[ ~>*y}ԁ?U(5{q}{~w/ub**,,hآ"sf!/>O!Ȝ5d5rʂ:C Vz8K 6Z?+Ĺ;2ߖH'BQ2>h?0d!|)3JzQ TYFCPvAF  MsPn2xeQa:Y<0;}0 ^=x + 1|鋇0={+p0NR.B #`7tSgO@=wE8HU 4!%3_*rr7n\Y_T)ӕNWjV 5XԞuB|Q4HEuݽL*X)d،6t=nQ>!|v2O^DžO4X E.pm=!{jmP„5jehmp م ` A#e_na~b"Hb&b*b.c2Hc6XYnp\4AE ѧAN qF=)$BCA=K6 ;\SjSOS5cE>Oу[BdHpmi}#W1sA3@B^@>EA>թXcBs8h s7 mMɪd}}Nꆓ.vEPYt8@X$#Gdi_jj:"D  E"3KВj<$:[)#aM`>E x &0S en> `OȮšOt!>t=(+TMfEמb29M锗F kQ1Cd\ H?U^IAv^yd&w=8{?ϛh$OŨvC ?yONy_yoy4scV2OPC\{)K&< d<D7A0/h;nO 5W;%ɔ!:>3BDh~}ЦkUtHkΏYa3@<|4Rf] 2>)%ߞ-uQHWdG; P|8 z\ A*}̯ˇT(d$n%{:ʹ@, B!Z݈0Qn {8HIO@D ,p3_a6DJ@NB3}0!PWB@)-5 Ȓ8>8cq&80 V''v]mzWXV(cs4!^uM/=Hh ؃v@=` 7 ps,9ωt~Oq!P\бdh!&M*3%R飞>${sz{#!Y=QȖs򨬄T!jUM|즳!u2#t!;{T,tM]7T#"$f Πd O8P1mO-`rPDŽL HHPE7dԂ )/_:'hh U$?v@H}d ,#nB(ĻGB5VFPs}w&=0ѡ2! `IJ/`A~oStw,S|[9ާ`$$p@S̈́ aB%&no9#Ug`} ?(PJ(<M&A1 aB2[xф ^KTCyMpa_) s8Ma֒A8D1TŖsb%>P'R 77cd|Rxg&opbP*([}%1&Y5# Nmd!@P (BP*n)vnnq}gPrVޓ@#_I}xE "gjp#sZ" aqnIPt IOV<9=0tbY? IR@IF14&#p<4X))@V`71X# ED)OIm7 !901<~pdF9n}|Ypm){p> 2I6fh#{gCR1ѩ"ig% qwj,>3(5Pf `%&֑mo q*s=fS@[|Z@.v0L#DcCmM|)4DCyXR`%&jqP1rZ,* bySuc6 ^x2.@jq qz OR% goч^h7(@ @ : )`ͪ'$'PAH}͕ ␠`gB0xRي!7W`zC(($#:x p@%!I P S) paUsך S#D&@ ҩwS鲧ezgRb芭.P؎GmjdM=X#jA#aI[>Z0 A&F+sA` `EQ*I˻U>g<8"`Hś"!644Q̛!MCŽlڑJ4k狾髾_vɾ5ɒ,{7B p0 38^|V2Q@Jeʃ7H@"iOY j 2ܶȻ! x,N0 P" 12ġ'=_C'dx& hBgvG!= kyT!59@JmrBeۚ cc=Mm׍G`pce4IT%]$C[@{o5p)`f1K#Z] Ey,Y燂L"*32hN<( *q& q3]"{t3,f6) M&ž"t3&!pA=$l=` s1=D倁Xb$tcNeY g`*RB*âyyae 0c[ 898^30mk773/O $_7R+{n0) C -q[bBw;#ZAX!Bv2r 󸒜F0|s5怙5ow{F8;Y"з5_'}0h ^ZY1>s5 2e[ F=3}=;^ȁ@5GVz#vz< i%oB/6 B{}Ϟzm$C6:d!"hD#DOD1EWdE_1FgFo1GwG2H!$Y,Y$B0[`'$h)${jр  "@؄-(A'(|JD𱧒򀢈HM*Q `|0郄l 7`suq՞xkYY( YJ=u;U t @0RgKC 3de z3F2 ]R +aPdDRG-7La9#>>`' (S@'j7188bFeC A{,c@Mg*@u*PxU1цjU M\D :]؁ІȚJx!6b9_j1 u!HoGeH{w#0 <{p-W:Rv24._a'XZ T@M쑗4Y@=@A@uK<4ɋ2'Y0P ( 1lxl@2Ȃ*a A{|k"Q,X !&@,B=G&W a~=%O\/ R#wOt8`:d5ѝ  *P R>&0 \@.xW0&/Pq_O=gHpcl/? u88*d X_‡؃<@PZIf#8k$@h2+e"`ٜW`e,+p2A=zJvֳmhE;ZҖִvF*#N`p bc $6qκFVo@0Q YWP).x I(TxMɛ wxFkTdt4{9P,h-P p ~;~Xnk`- c@x$sHFϤ  CIx(`0o"k"FxP腙 {ȥ|DJI؀>:X!4 zXYH(ƍ_@>9 +ۣX1pOWl}`}֒W}A o "s9Mb@:`{P-oXtTpA3({xE|pӇ,'Έ< ƀF Ȁk} ۓ \3` }x iԼ'T>8 `=PPQ%R5UAQ <0!uuhS\;#m_`a%b5V㪇$&upNN{6IZz tBS)6yK=X\ x2eŽ0 AӹVQ+;A$(t+ Bj.2{ˇ| h~hFߠ筞N}&0khh&kX4Z 1q7!X{&bQHu8tˇx&6mq_j 0YävQmmdϳЇ hH t`z#La)͞[b 4yqiᣇs^5N!P@Z|8<t@dzH(0ԄmmmRpIkip>ߖpySnDt)7SGɇ1HYam66B=#G$/yۺwTb h uX|7+,r|9n(Zn$q ́d2Qq-x`Btx2J x F#Z]XdYMKa: xx $X2Ϝ2 wH*Q ,Jɀt@N(hljt0|) )p%tI K/0t5xn3T@TvfvivkZ Pw@oJ}h{{0r}׀,6~ o/GL'p{"`Ё@z:^<|݃70=w? .:| tw/$eR{A̧̞$NҝL\WOϏD"U4B>ME'#ܳ {u=R,,rHN !ɚE uҁJdWC6Pa@t^23 o>E_4>z5֮_Î-{6ڶoέ{7޾.|8Ə#OM06p 0 e9C } w/ňgo {œW@y􍠝jO=Ys!ys?O>cY> DOyPL=vOSsu` Q@`=s=Ocj%S@#@4=t}IpCUPOZ+`HbԳ7^>Nw= wT=gMG@"n.SyHzn}Sy, 0j t=yQ<,OCAwY>(c|ŨCèr7㜳;ܳ?C]EsUbVrHPC@O%K&< @^<l5rFXۣ5^G};s ̝k67h>0va=}hDUݓESn=:o[=T>*%f@<3 t@= (-exOc@L/2ig ߳H Hoe=޽ɖVI|[svך+-+0AN1 $)@^>|wܽ.ҁ.CL'ZZH%CRB7z# wm;rCw0mA;A^Ey8Ixp`9!j@\[alZT"}``j4!0>,|! g"I0J0lh\$#GB2$%+iɁ`'Ѫ%U 'M=@Pz8zW.J:* p`0@"C"< CO,v  LGeѣO<P>D,7 >"‘FL=<9=ك@2Ȕ,đ/Y` 80HjUPS9i@tL8KG`Gєx5.Fa2)3(V$>DY 0@x K'ZDIʤM%Xy*OB)\Z MD=TV2q%Ok\Gr2xXd!@WX㬨@䠏ɢA=yς6-iKkӢ8<:hQ,#сH$e<0QB_79FX>Ґ*5&5(>"{c&YI`9r:Xzóe8fM1HjRZ>  O|bH<;_[;xP=b ɢGxج{RD'E==,aGo :,fO02HwCă.&뾍05@y:lI\gޏp@om,MQ kf@գ9֓Bd; PkoCЫAܱ C"pa]QM$yL42tBCǓSkS:ժ^5[I 6V`c*]05o z@8G_c'NQޏXkJaoISimʁ(r"/8xK@u$y5bL?# Hܓ(m9PƜX`8;|(I+?10VGaj!{Q,A!ʉ 6񸚖O+ _NMJzgC$6:* &4@Dlܑ!$>%7HreGhQ >ï@ࡎkSv5reBp L,HS*Dk[\X բ=Koӣ>=Kd4+ZIbQF# 6XTk< @: .Q݌wGFB2~<У~Csl 10.0{Ljj<:tNH@ ODYWNCP@C$JH$4(!RO`R 'H`\HP4eC8BH,` V(@ޜƏC } ?WL=P,,=NUYe@NM`\>G$@i: (a@J`ń-I9 Db @C GCL]>h\Jb+>!Hxt@:SOtүD'JBԩ^5Z5bc6j6V .:,2a]:GD-tXrX;D,=>EpC(Ns0  D'EC-v̈́:r8] >L^ "QäԕC>XU@Y N@U4@C4O$>AyЎ@D!NNN GDLNCaC_CWxI@4U%E4Z愦O@HFC .]]IGhZ&N=_@́&&aaCb.wC@'CT ; RaxCE,Ft=[gC:EZu;8=AWH,QZ ~DOփl]E14CW]]cOX&?#<#=cxAœAhfUIUQ@`>D>t=X@Wf m@8CIO x$v-Nŋ>ԃD,qhi kԼa ̂A]@=C B$HOdB`p@tO<ߔQ DL\(DD(fH}F,>d`È^9>@cxSDLIF&A@tG@@fT@ L`\Mh/@lB HԔk]N $KYҫ~`F]e8d8LgaHH|Ef(C$jjDj Ujl\܃' Lfe]ZyG@Ȃ>T@/>ȅC'( &NAT9$8Yt,ST+$c Tik0@h"*J`j ˓Rbt^>|GAX@$OūʐJH@u7@E[A`O-mXn?02n:Bn䊖C ^:.G^Έ a.Hh(C|kLGY莢Knnj=lB &ª8nE*(@#.!͍j, ioboo$Fd(F؃9,.C$p po52oqpt.+\+FKcpksp{pp p p p p ppq q=@.VhYnp`+?hUGk0qmQ_tkψ@_1qo\qq r!ϯd4e&W ,R D+gc@ %OC9Yp@8A$o!@YoxmnKY*9L)HP^lk@,8T@ P>G@}(^E:Nrl=xo*|nn>mxe $l Eԟ,b)B3tC;.CqY$3o.>@T:FJ<H`ELa/4aapVLZ1=(h2TcF':e=B0HT_CY4@Q'&,1$@;V@B lUtQ5[LPL[ @'@h@dtNﴳDD\lh<'tC|[< $E5AG ,> x Qu\?jvkCkBu@&9:lqELGD8vL8rpPptBS=;4,LnPZ h$aV$>$\PhŴun4F dt6Nݖ@@ @,|=l_7NqN܆C]8NF,T>Xg{@YtkC}/mF<@`@CI<PO(r\gq QDn7,@CT7 F/FHg+@H9$NW !tw{ Ӄ,toVX4ހ]-8HBG$ ÚÖ2Cq6`<%£$H2ECJ ȋ(e@ I>ɰþ VRƑDWFUEY)$E_[\X>Hl^ 5/s:p2o,C M]C`_MiW^kyH|Y@)-/{`B0+@b@"wO@(sg/?tSgO@="4޽:"Q̇: '2D T9˔k^٫>wB={h7_B}Df*qa$MDNT@A b=>SBY\I Ce[Zƞ Quwoufpw^Ǯn:\6FjcÇ'VDw1Frz#vzY%)'*J'lP8 )Л>LI;ߜ gki%d#B# ׿ P ,LPl!P ) 1P );`0 b آ{!@@a{RD&HqE Jj3rYQFQ2Dd͞J2L%JR9T?zX{)}h =(̧H\|@XT 왅Gΐ|0`MІ8`ˎ!F$G |hlC@!<F- QIQ +MQSX)Vk { !&|:06G h?>_X= A{ԅW^E pS(4 Gzԩ@ V/Sʩ8? : ha.{OMQ*F3eP9l駡Zꩩ꫱Z뭹 gMrY#`ԈI9@ `A{{PRJI-`6Ar'H3,Aa!7$X@tU|x`j W}_XOcKIڐhI@ % ogP=rF`b',obY =1Ler=P3tAGI CV)S0g%V$ݩ3Lg+]!.2 c>GFuUdOAЖv_@XZQI%bҐv4GtrUQΜ,psiFEI 9惧*@=uȢ>aĨ(m&"VbCds[桏 ``tL=xb V1CuZ\QUmúCG G<*+B mvg9ϙuq5qM[{$6/--z>H(;(jt!)]'mG1go?E)kg=ρt7 :`c(JӉ . p=6P|  ^|$!d)RB`.z 0X4јJ´%7*yI-Іy}=\0@o ѓƿ:(J"B) ONw8H/Vša\+Cf:0A㏢h%g Bq<@X4AGh8 !@ޣ$ ; +LB8&`h?#n_c60aL J~%!A'F@nR7N@ A+@olq0upydpk `ۀnXzK"bA`! LPkP R "F`!J (gG*qK9CTŸB1rlT(b?)Υ*h:Cb ! "@L gAi%2`t2Z5C >+`F8 AbC|f[Rq2aa͈3ı$*$Ƀ6bZaƑ6 !72A! űYI1JJ`?)"j{n.Mʢ+t@ɞر! |$ q0DΠ 9#1b!D>!b2@b9t?JA+)0<,$PbN%Hm4=,ٴMM4Ni<$B(g*kH@/%D@Z`NP{BtQQQ!5R%5B$ hI&5@,7Z.kh ?DU+ME!zN65VeuViVmVwNSquc5ICI.t_S;uWYY5ZuZFWOJү$F Y{S^a8u]ٵ]]5^u^^^5_u___6`v` ` `6avaaa!6b%vb)b-b(,uK?5>vA|BYO6A( a55e8`Bv6cq6gu*Aw p%W <́'дa*O@ qM<@iQ}7PX"AG6PB@ b16ExFք60"$a*`|c(m9l7S?R"V8%lpwAB76`rbaRu2ă(<#I: {8#A/`c!oj$C:b+: ܡ?ҸB djsxw9'XK⸈XC!GBrZ"` ?0qOXBi`k$|fzx)0.`{16 >v0}v@$ Y.$Ȫt%Z"ui8|\ؓ٢=~ɹC`U `x&BtALaΠU|C.؟_*&r:$bh*`H:XaR$.rF I7 x~:a(BTC>0hAA&"=V.EH?fkV6\yy:x_= ::zbڟ/H !Ȟ9%ڠLKB:" `@$<6">F'V d< '< `٪ AB*[`eJ19U{dTU n7ٲ8w5r)?t . KW6@ୡ&!HN:6s|{6/~܁|Y_'<*_$>wWK0|  ,`+@2]גE&d Px@bp"oM$E5p#  ,C0+;ٓ36 ׵+F:.l2B2a,3㲨%b+B!K,:>:3}ACKh##6#>Src`]#)bbD2Kfg^S ?­ "pϞ|to;{!ȱlj ID= H䃢DtCJQǛݝױɔ+$JdH3߈z@޽:=e:^ ij0A9.p 6XfCPD>!f1& D7}}|c 4TYS^ͺװc˞M۸sͻ N(eżz8@ EtW/Ļ3Nз`}Rαz 38髜vǟzZ-4%pc} =H ^}Ma^Q1sB D4CA>PA=&F=xXwyRPDSe-OF!4Utڏx: etqp4 NTBg#G`@QMT}ݽ3TxD\JOAOIm׬~"dv=QwO=&yϟuXxgx块z L ijԣE%x

*M0xOS:`:`*>"'@-DmH'L7tF9e$˓COE4, N/IN<)5^;t НAk1WA>T%tOt;2z-N"43TMd1[0ua"Bd \>sCBX>k}j7M@=[MdOdԋ Bd1OOa+=¤z?Qo֛_FCE}O5Zb($WAHRp.= *w ^[Gd|$y#I %;d!?n _ [掼co{[R@APY[ۘ a&Dl1=־b]  н {k2uDMR''G?5%JF8푐$'IJZ̤&7I/1=V`{p8Ç&kssT~ġ,,al+rU_i@@@'PLm C/q8yAL(D=q2o`D#OԕdkPYd5LǂIɈL,`WI:a1 *{3V)T=6+srqTH 4zQyiL9AgZE>T~V-Uy$ 7?q (KNbJTz0XGהr16S#x[&V䕱,L[׹ 0$>Z w`AȡViˇ1 r"x (9IҚMjWBjj[G0/G$p*(@}:|â,X~:x@ (l"Ԡ#F )9vIL@w(p opRԨ!CHywZњD\< &sȦ,J~dNȺw5DqrGLﵙX8 Y>l~"Dt< >u'Bz4gIZ.k$ECȈ*#x"ǗWJws-G@q* zotCz&J=O &k0 8>GBMkYmC]KRԨNW,m>JpS#zd21%Xlec{΀`'Yp;]x~PGg ekق,gH( `߂i4M !#_)e$%kࡎ&:T{' ]ܝ]ɻVלH_~%#i:&+ǘl>{Xzӥs]OdKz#OבsgX>`s(0)ԭOin;iy)x:w&5L@p}wo7{`K9ֱ?Éжzh3$&9W"K~HT’c8.G|\ G T8pGRW4Ѓ a䏺;*{G<@Y34-9;0O0<O*fqȲgpC!0uP-M7M! Yq"QMP}&UB#7NP*6<$.QS0/@!uAe\Xqs90S0Ak#z!P9!`B8>M|7kwB[8/R|t`lGx^{qIp ħk+9RLއ:г{H<:}B"8tP9+a҄8uʸ،j  2KqEr8@X"Q`CIe1p)PD`, Wbm\, x>=|0Y0nt& O#tS" oPqD^8%;3@0w P"$`eOYc38 @7 X 1;ۂ80ywO@/ @bS1x۲0Bi%}aIPo Q09@S41=0xXF`)0PI`A3* #BTQ9 ?r`y-0i `#0Er6"ϩ t.bWxM9/+qVָ8a׍iXrgƒ\]눟A3HU?c'eVePJi3,C5"}95PA%1rV`k3x+$@A XQ% gPpsq $P  %uDMB4r X>DB2! Pp 0=0KQ!x81b%$}0эQPMrPu7AI3p~p w0}0 Zps" `dM:<`G O}3, Mj`f1>Zp$#7 TM"[Y831KhW7->;H=0QKPII{#e![ ?ҦH)" QKqᔶB%n $j@8ڷ~kZ 4KzA#` r. B^- 2z{ۺ+$=ȁdB&AC p01DtcD*3CȋƋ7zC[{؛ۥ۽V`|@܋;K[qȑ{¹ <\| "<$\&|(*,.02<4\6|ôA*w÷8<B\Pq־ܻ@<78ԵG|XZEU8PXjI,""pIk4r 0 !-rUѳ`[<Ȅ\ȆjPPp΃sr%K!P%7UQ|$kI@hPI@>DL$k.\9@@~{2s?cZ,Q ƜU}t :|Ra`:zlN)!o阑|a~"zzx.z}I=^![3atPe#^6w ^Qrʽ<c$ A(u# -`l/uq 2&\ÙԢ{>gp1 հ1ӧR!|QP<`}T +;H8 8 0;TXRo;6Ђ=؄]Bd %?/聡8AuDQ# z:([FXٗQV!0g@& m1`80֔1I=3Ol|} 4!ܭGo!$cMa݌p! 9Mmti |^a,l߰7EU-+UH@?a7$ YAgHg N^Pۇ;Lًd$04xHM94~k;Ats"< =C"$*@KR6R nSaC70nKDG8 7Mr6"QXaS* {~^4:z2pH"~[2VdX謡$BS @&8I ٕP= ϬPqJi0P'm#0#SIbǧ2>%>ꥮ=9Y&BI>'.B>-dnMA/K0N <N!x!|qisx@vD`&1LN}c8m@ eqLZU=g\yᘎGR~1g2'{octh>_T8"!JG7%He@PC!MQ P0P ud!0FQ"ͮ-5e ,=zbW"tb:A?zϟ18P A A#MPtWHf.ç|:Á鋰/={kU=u6G`A|e`r`{,]6 1„8؋Л>٣R944D] 6,!i8 ޽aŎ%[Yiծe[qΥ[]y_&\􀊅A4, 3Cwu$D{з`}RpBe33SY3gϠE;^*:=~Wi .+X\ e!v7({}pF>,|ҏ'Oovtǽ)Az̲DZే%Q/g )~ KoYh  &ŖqG!}di7p]QFmı%Q`p!Yx`I :E)ʧyH{f`hu*PF:T+{Lwi) {SJx'}zh{Cѱ&bPIObuVZkV\suW^{W`vذ艧ч, "3Ї9Ci3- {:`V2ljͶ,wt'{ț{*c|f 9}iwGwpgN@g% )cÆf%LphxxG{,@:n*gAr|.Z!d1 ͇xͧCy@igcntIP"v( ԩRx&l.ǪL"¨_x@x Y!Zrǂ{=Z, 2w {zٴC!0R'Z XM+g懠dFJa?!X~{{|Ol2:7_ h恆*y -wYo~9_8@rs0 YCIM>v2"t>c]`f"x;5 ^S>Ⱥ,q+ʅf|pj ÇDY !D}6`*/&b>*q6SLV?D6 ox 2 RxPUp*ИБeQ>84rB6@$7|K`S$f1yLd&SA Yf@X{}V̘,0mr//q ^,D|HJ|gPBꪺ/f^$`WK*)A7a&=9JQRå"|!!Z`DHtn& iyĄe"fqN9(oB$8P[lN{wiHZ8Yss|g<gxI%jI*Љ <}R>` \eRaCT(C-Fg (*_z!k>Hak%Ӫ XL!8r}M:H}=  x}׌9y1l,!-YpnL{F]3 `DKJdC$H1lZSpi˽G.";+ #%ױA"Ր]$cL,b1Ds)TעG`8tU2'OuhfY݌ RTTB~v]kg{GY <S/5! ؀>\6OU 0?`Gޯ ,}8sR fB%u3!%>q$aGe} Q@w#>PWl50ـ x= ># G)#zlL7ds|އ,*|' %J>3p Q _kbsqw؇Ĉ5}>w |d/tMyH}0# vi}hI2ۮ^Sd.$Ӏߨ$8 8H  ; p p](-ܑá(𻁘|Rx9w qk:;DDLDE\DFlFܳ{k uȼ)gyԸ|p Ȁj#y d#޸괁x@5 X{ؠDHz0 #REVD xؙغ{ h"{ (hSFP6֒|Ej%!)F_&rh8-cbFm|p 1Z k 7 F!8ǑȒl o{G HX܇VA`{p+'Г|*)'ðh>ه/ɇ X܊}p*F{ :hY(IXU偖aj@~;rD|LȌLɜLX,|p̽H^(&y L(䞴ˆ@ռMMM|zH MΌ^ǖPμ0qp< Lt\N OO,ON4ф 踎x0MLOOOO\4 7Oq(pD}P P P P P PPP a-Q=QMQ]QO QQQQ5 `B Q R!R"-=,Q#]R&mR'}R(R tH$R,R-R.R/ txH,C%R5]S6mS7}S8>HS8S=S>S?. h J&?mTG}THTIuD4,|`ITP UQURu( dO-UZU[U\OCcQ0ۡxXzYUg}VhVie@`E#Dhi=WtMWu]W*( (89 ;2c NeW XXϯ ]r3 jVPs-XXXM;tPehS )aоXYY=|ȩ?YkؚZ-Z=A ;cLBSZZZۇ Z-[=[+P ۴[[Xt+[[ \tuS=\M\ōT}\ȍ\S\˽\\\\S ]-]=]M]]]m]}]؍]ٝ]ڭ]۽]]]]] ^^-^=^M^]^m^}^^^^^^^^^ __-_=_M_]_m_}_________``.`>`N`^`n`~`` ` ` ` ` ```aa.a>aNa^ana~aaaaaaaaa b!b".b#>b$Nb%^b&nb'~b(b)b*b+b,b-b.b/b0c1c2.c3>c4Nc5^c6nc7~c8c9c:c;cc?c@dAdB.dC>dDNdE^dFndG~dHdIdJdKdLdMdNdOdPeQeR.eS>eTNeU^eVneW~eXeYeZe[e\e]e^e_e`fafb.fc>fdNfe^ffnfg~fhfifjfkflfmfnfofpgqgr.gsG>gtNgu^gvngw~gxgygzg{g|g}g~gghh.h>hNh^hnh~hhh5!Created by TechSmith;ProcDump-for-Linux-2.2/profiler/000077500000000000000000000000001447614355600166305ustar00rootroot00000000000000ProcDump-for-Linux-2.2/profiler/inc/000077500000000000000000000000001447614355600174015ustar00rootroot00000000000000ProcDump-for-Linux-2.2/profiler/inc/CComPtr.h000066400000000000000000000030521447614355600210610ustar00rootroot00000000000000// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. #pragma once template class CComPtr { private: TInterface* pointer; public: CComPtr(const CComPtr&) = delete; // Copy constructor CComPtr& operator= (const CComPtr&) = delete; // Copy assignment CComPtr(CComPtr&&) = delete; // Move constructor CComPtr& operator= (CComPtr&&) = delete; // Move assignment void* operator new(std::size_t) = delete; void* operator new[](std::size_t) = delete; void operator delete(void *ptr) = delete; void operator delete[](void *ptr) = delete; CComPtr() { this->pointer = nullptr; } ~CComPtr() { if (this->pointer) { this->pointer->Release(); this->pointer = nullptr; } } operator TInterface*() { return this->pointer; } operator TInterface*() const { return this->pointer; } TInterface& operator *() { return *this->pointer; } TInterface& operator *() const { return *this->pointer; } TInterface** operator&() { return &this->pointer; } TInterface** operator&() const { return &this->pointer; } TInterface* operator->() { return this->pointer; } TInterface* operator->() const { return this->pointer; } void Release() { this->~CComPtr(); } };ProcDump-for-Linux-2.2/profiler/inc/ClassFactory.h000066400000000000000000000013361447614355600221520ustar00rootroot00000000000000// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. #pragma once #include "unknwn.h" #include class ClassFactory : public IClassFactory { private: std::atomic refCount; public: ClassFactory(); virtual ~ClassFactory(); HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject) override; ULONG STDMETHODCALLTYPE AddRef(void) override; ULONG STDMETHODCALLTYPE Release(void) override; HRESULT STDMETHODCALLTYPE CreateInstance(IUnknown *pUnkOuter, REFIID riid, void **ppvObject) override; HRESULT STDMETHODCALLTYPE LockServer(BOOL fLock) override; };ProcDump-for-Linux-2.2/profiler/inc/ProcDumpProfiler.h000066400000000000000000000333421447614355600230130ustar00rootroot00000000000000// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include "cor.h" #include "corprof.h" #include "profilerstring.h" #include "ProfilerCommon.h" #include "easylogging++.h" #define DETACH_TIMEOUT 30000 #define HEALTH_POLL_FREQ 5 // In secs #define LOG_FILE "/var/tmp/procdumpprofiler.log" #define MAX_LOG_FILE_SIZE "1000000" #define DATE_LENGTH 26 #define PROFILER_STATUS_FAILURE 'F' #define PROFILER_STATUS_HEALTH 'H' #define PROFILER_STATUS_SUCCESS '1' #define CORECLR_DUMPTYPE_FULL 4 #define CORECLR_DUMPLOGGING_OFF 0 #define CORECLR_DIAG_IPCHEADER_SIZE 24 // Magic version for the IpcHeader struct struct MagicVersion { uint8_t Magic[14]; }; // The header to be associated with every command and response // to/from the diagnostics server struct IpcHeader { union { struct MagicVersion _magic; uint8_t Magic[14]; // Magic Version number }; uint16_t Size; // The size of the incoming packet, size = header + payload size uint8_t CommandSet; // The scope of the Command. uint8_t CommandId; // The command being sent uint16_t Reserved; // reserved for future use }; void* HealthThread(void* args); // // Simple mutex auto lock class (no copy constructor semantics or operator overloads) // class AutoMutex { private: pthread_mutex_t* mutex; bool locked; public: AutoMutex(pthread_mutex_t* mut) : mutex(mut), locked(false) { if(pthread_mutex_lock(mutex)==0) { locked = true; } } ~AutoMutex() { if(locked==true) { pthread_mutex_unlock(mutex); locked = false; } } }; class CorProfiler : public ICorProfilerCallback8 { private: struct ExceptionMonitorEntry { std::string exception; int dumpsToCollect; int collectedDumps; ObjectID exceptionID; }; std::atomic refCount; ICorProfilerInfo* corProfilerInfo; ICorProfilerInfo8* corProfilerInfo8; std::vector exceptionMonitorList; std::vector gcMemoryThresholdMonitorList; pthread_t healthThread; std::string processName; std::string fullDumpPath; pthread_mutex_t endDumpCondition; enum TriggerType triggerType; int currentThresholdIndex; int gcGeneration; bool gcGenStarted; String GetExceptionName(ObjectID objectId); String GetExceptionMessage(ObjectID objectId); bool ParseClientData(char* clientData); WCHAR* GetUint16(char* buffer); std::string GetDumpName(uint16_t dumpCount, std::string name); std::string GetProcessName(); bool GenerateCoreClrDump(char* socketName, char* dumpFileName); bool IsCoreClrProcess(pid_t pid, char** socketName); char* GetPath(char* lineBuf); void CleanupProfiler(); void SendCatastrophicFailureStatus(); int send_all(int socket, void* buffer, size_t length); int recv_all(int socket, void* buffer, size_t length); bool WildcardSearch(WCHAR*, WCHAR*); u_int64_t GetGCHeapSize(int generation); bool WriteDumpHelper(std::string dumpName); bool IsHighPerfBasicGC(); public: CorProfiler(); virtual ~CorProfiler(); char* GetSocketPath(char* prefix, pid_t pid, pid_t targetPid); ICorProfilerInfo3* corProfilerInfo3; pid_t procDumpPid; int SendDumpCompletedStatus(std::string dump, char success); void UnloadProfiler(); HRESULT STDMETHODCALLTYPE Initialize(IUnknown* pICorProfilerInfoUnk) override; HRESULT STDMETHODCALLTYPE Shutdown() override; HRESULT STDMETHODCALLTYPE AppDomainCreationStarted(AppDomainID appDomainId) override; HRESULT STDMETHODCALLTYPE AppDomainCreationFinished(AppDomainID appDomainId, HRESULT hrStatus) override; HRESULT STDMETHODCALLTYPE AppDomainShutdownStarted(AppDomainID appDomainId) override; HRESULT STDMETHODCALLTYPE AppDomainShutdownFinished(AppDomainID appDomainId, HRESULT hrStatus) override; HRESULT STDMETHODCALLTYPE AssemblyLoadStarted(AssemblyID assemblyId) override; HRESULT STDMETHODCALLTYPE AssemblyLoadFinished(AssemblyID assemblyId, HRESULT hrStatus) override; HRESULT STDMETHODCALLTYPE AssemblyUnloadStarted(AssemblyID assemblyId) override; HRESULT STDMETHODCALLTYPE AssemblyUnloadFinished(AssemblyID assemblyId, HRESULT hrStatus) override; HRESULT STDMETHODCALLTYPE ModuleLoadStarted(ModuleID moduleId) override; HRESULT STDMETHODCALLTYPE ModuleLoadFinished(ModuleID moduleId, HRESULT hrStatus) override; HRESULT STDMETHODCALLTYPE ModuleUnloadStarted(ModuleID moduleId) override; HRESULT STDMETHODCALLTYPE ModuleUnloadFinished(ModuleID moduleId, HRESULT hrStatus) override; HRESULT STDMETHODCALLTYPE ModuleAttachedToAssembly(ModuleID moduleId, AssemblyID AssemblyId) override; HRESULT STDMETHODCALLTYPE ClassLoadStarted(ClassID classId) override; HRESULT STDMETHODCALLTYPE ClassLoadFinished(ClassID classId, HRESULT hrStatus) override; HRESULT STDMETHODCALLTYPE ClassUnloadStarted(ClassID classId) override; HRESULT STDMETHODCALLTYPE ClassUnloadFinished(ClassID classId, HRESULT hrStatus) override; HRESULT STDMETHODCALLTYPE FunctionUnloadStarted(FunctionID functionId) override; HRESULT STDMETHODCALLTYPE JITCompilationStarted(FunctionID functionId, BOOL fIsSafeToBlock) override; HRESULT STDMETHODCALLTYPE JITCompilationFinished(FunctionID functionId, HRESULT hrStatus, BOOL fIsSafeToBlock) override; HRESULT STDMETHODCALLTYPE JITCachedFunctionSearchStarted(FunctionID functionId, BOOL* pbUseCachedFunction) override; HRESULT STDMETHODCALLTYPE JITCachedFunctionSearchFinished(FunctionID functionId, COR_PRF_JIT_CACHE result) override; HRESULT STDMETHODCALLTYPE JITFunctionPitched(FunctionID functionId) override; HRESULT STDMETHODCALLTYPE JITInlining(FunctionID callerId, FunctionID calleeId, BOOL* pfShouldInline) override; HRESULT STDMETHODCALLTYPE ThreadCreated(ThreadID threadId) override; HRESULT STDMETHODCALLTYPE ThreadDestroyed(ThreadID threadId) override; HRESULT STDMETHODCALLTYPE ThreadAssignedToOSThread(ThreadID managedThreadId, DWORD osThreadId) override; HRESULT STDMETHODCALLTYPE RemotingClientInvocationStarted() override; HRESULT STDMETHODCALLTYPE RemotingClientSendingMessage(GUID* pCookie, BOOL fIsAsync) override; HRESULT STDMETHODCALLTYPE RemotingClientReceivingReply(GUID* pCookie, BOOL fIsAsync) override; HRESULT STDMETHODCALLTYPE RemotingClientInvocationFinished() override; HRESULT STDMETHODCALLTYPE RemotingServerReceivingMessage(GUID* pCookie, BOOL fIsAsync) override; HRESULT STDMETHODCALLTYPE RemotingServerInvocationStarted() override; HRESULT STDMETHODCALLTYPE RemotingServerInvocationReturned() override; HRESULT STDMETHODCALLTYPE RemotingServerSendingReply(GUID* pCookie, BOOL fIsAsync) override; HRESULT STDMETHODCALLTYPE UnmanagedToManagedTransition(FunctionID functionId, COR_PRF_TRANSITION_REASON reason) override; HRESULT STDMETHODCALLTYPE ManagedToUnmanagedTransition(FunctionID functionId, COR_PRF_TRANSITION_REASON reason) override; HRESULT STDMETHODCALLTYPE RuntimeSuspendStarted(COR_PRF_SUSPEND_REASON suspendReason) override; HRESULT STDMETHODCALLTYPE RuntimeSuspendFinished() override; HRESULT STDMETHODCALLTYPE RuntimeSuspendAborted() override; HRESULT STDMETHODCALLTYPE RuntimeResumeStarted() override; HRESULT STDMETHODCALLTYPE RuntimeResumeFinished() override; HRESULT STDMETHODCALLTYPE RuntimeThreadSuspended(ThreadID threadId) override; HRESULT STDMETHODCALLTYPE RuntimeThreadResumed(ThreadID threadId) override; HRESULT STDMETHODCALLTYPE MovedReferences(ULONG cMovedObjectIDRanges, ObjectID oldObjectIDRangeStart[], ObjectID newObjectIDRangeStart[], ULONG cObjectIDRangeLength[]) override; HRESULT STDMETHODCALLTYPE ObjectAllocated(ObjectID objectId, ClassID classId) override; HRESULT STDMETHODCALLTYPE ObjectsAllocatedByClass(ULONG cClassCount, ClassID classIds[], ULONG cObjects[]) override; HRESULT STDMETHODCALLTYPE ObjectReferences(ObjectID objectId, ClassID classId, ULONG cObjectRefs, ObjectID objectRefIds[]) override; HRESULT STDMETHODCALLTYPE RootReferences(ULONG cRootRefs, ObjectID rootRefIds[]) override; HRESULT STDMETHODCALLTYPE ExceptionThrown(ObjectID thrownObjectId) override; HRESULT STDMETHODCALLTYPE ExceptionSearchFunctionEnter(FunctionID functionId) override; HRESULT STDMETHODCALLTYPE ExceptionSearchFunctionLeave() override; HRESULT STDMETHODCALLTYPE ExceptionSearchFilterEnter(FunctionID functionId) override; HRESULT STDMETHODCALLTYPE ExceptionSearchFilterLeave() override; HRESULT STDMETHODCALLTYPE ExceptionSearchCatcherFound(FunctionID functionId) override; HRESULT STDMETHODCALLTYPE ExceptionOSHandlerEnter(UINT_PTR __unused) override; HRESULT STDMETHODCALLTYPE ExceptionOSHandlerLeave(UINT_PTR __unused) override; HRESULT STDMETHODCALLTYPE ExceptionUnwindFunctionEnter(FunctionID functionId) override; HRESULT STDMETHODCALLTYPE ExceptionUnwindFunctionLeave() override; HRESULT STDMETHODCALLTYPE ExceptionUnwindFinallyEnter(FunctionID functionId) override; HRESULT STDMETHODCALLTYPE ExceptionUnwindFinallyLeave() override; HRESULT STDMETHODCALLTYPE ExceptionCatcherEnter(FunctionID functionId, ObjectID objectId) override; HRESULT STDMETHODCALLTYPE ExceptionCatcherLeave() override; HRESULT STDMETHODCALLTYPE COMClassicVTableCreated(ClassID wrappedClassId, REFGUID implementedIID, void* pVTable, ULONG cSlots) override; HRESULT STDMETHODCALLTYPE COMClassicVTableDestroyed(ClassID wrappedClassId, REFGUID implementedIID, void* pVTable) override; HRESULT STDMETHODCALLTYPE ExceptionCLRCatcherFound() override; HRESULT STDMETHODCALLTYPE ExceptionCLRCatcherExecute() override; HRESULT STDMETHODCALLTYPE ThreadNameChanged(ThreadID threadId, ULONG cchName, WCHAR name[]) override; HRESULT STDMETHODCALLTYPE GarbageCollectionStarted(int cGenerations, BOOL generationCollected[], COR_PRF_GC_REASON reason) override; HRESULT STDMETHODCALLTYPE SurvivingReferences(ULONG cSurvivingObjectIDRanges, ObjectID objectIDRangeStart[], ULONG cObjectIDRangeLength[]) override; HRESULT STDMETHODCALLTYPE GarbageCollectionFinished() override; HRESULT STDMETHODCALLTYPE FinalizeableObjectQueued(DWORD finalizerFlags, ObjectID objectID) override; HRESULT STDMETHODCALLTYPE RootReferences2(ULONG cRootRefs, ObjectID rootRefIds[], COR_PRF_GC_ROOT_KIND rootKinds[], COR_PRF_GC_ROOT_FLAGS rootFlags[], UINT_PTR rootIds[]) override; HRESULT STDMETHODCALLTYPE HandleCreated(GCHandleID handleId, ObjectID initialObjectId) override; HRESULT STDMETHODCALLTYPE HandleDestroyed(GCHandleID handleId) override; HRESULT STDMETHODCALLTYPE InitializeForAttach(IUnknown* pCorProfilerInfoUnk, void* pvClientData, UINT cbClientData) override; HRESULT STDMETHODCALLTYPE ProfilerAttachComplete() override; HRESULT STDMETHODCALLTYPE ProfilerDetachSucceeded() override; HRESULT STDMETHODCALLTYPE ReJITCompilationStarted(FunctionID functionId, ReJITID rejitId, BOOL fIsSafeToBlock) override; HRESULT STDMETHODCALLTYPE GetReJITParameters(ModuleID moduleId, mdMethodDef methodId, ICorProfilerFunctionControl* pFunctionControl) override; HRESULT STDMETHODCALLTYPE ReJITCompilationFinished(FunctionID functionId, ReJITID rejitId, HRESULT hrStatus, BOOL fIsSafeToBlock) override; HRESULT STDMETHODCALLTYPE ReJITError(ModuleID moduleId, mdMethodDef methodId, FunctionID functionId, HRESULT hrStatus) override; HRESULT STDMETHODCALLTYPE MovedReferences2(ULONG cMovedObjectIDRanges, ObjectID oldObjectIDRangeStart[], ObjectID newObjectIDRangeStart[], SIZE_T cObjectIDRangeLength[]) override; HRESULT STDMETHODCALLTYPE SurvivingReferences2(ULONG cSurvivingObjectIDRanges, ObjectID objectIDRangeStart[], SIZE_T cObjectIDRangeLength[]) override; HRESULT STDMETHODCALLTYPE ConditionalWeakTableElementReferences(ULONG cRootRefs, ObjectID keyRefIds[], ObjectID valueRefIds[], GCHandleID rootIds[]) override; HRESULT STDMETHODCALLTYPE GetAssemblyReferences(const WCHAR* wszAssemblyPath, ICorProfilerAssemblyReferenceProvider* pAsmRefProvider) override; HRESULT STDMETHODCALLTYPE ModuleInMemorySymbolsUpdated(ModuleID moduleId) override; HRESULT STDMETHODCALLTYPE DynamicMethodJITCompilationStarted(FunctionID functionId, BOOL fIsSafeToBlock, LPCBYTE ilHeader, ULONG cbILHeader) override; HRESULT STDMETHODCALLTYPE DynamicMethodJITCompilationFinished(FunctionID functionId, HRESULT hrStatus, BOOL fIsSafeToBlock) override; HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject) override { if (riid == __uuidof(ICorProfilerCallback8) || riid == __uuidof(ICorProfilerCallback7) || riid == __uuidof(ICorProfilerCallback6) || riid == __uuidof(ICorProfilerCallback5) || riid == __uuidof(ICorProfilerCallback4) || riid == __uuidof(ICorProfilerCallback3) || riid == __uuidof(ICorProfilerCallback2) || riid == __uuidof(ICorProfilerCallback) || riid == IID_IUnknown) { *ppvObject = this; this->AddRef(); return S_OK; } *ppvObject = nullptr; return E_NOINTERFACE; } ULONG STDMETHODCALLTYPE AddRef(void) override { return std::atomic_fetch_add(&this->refCount, 1) + 1; } ULONG STDMETHODCALLTYPE Release(void) override { int count = std::atomic_fetch_sub(&this->refCount, 1) - 1; if (count <= 0) { delete this; } return count; } };ProcDump-for-Linux-2.2/profiler/inc/cor.h000066400000000000000000003276001447614355600203450ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. /***************************************************************************** ** ** ** Cor.h - general header for the Runtime. ** ** ** *****************************************************************************/ #ifndef _COR_H_ #define _COR_H_ //***************************************************************************** // Required includes #include // Definitions of OLE types. #include #include "corerror.h" //***************************************************************************** #ifdef __cplusplus extern "C" { #endif // {BED7F4EA-1A96-11d2-8F08-00A0C9A6186D} EXTERN_GUID(LIBID_ComPlusRuntime, 0xbed7f4ea, 0x1a96, 0x11d2, 0x8f, 0x8, 0x0, 0xa0, 0xc9, 0xa6, 0x18, 0x6d); // {90883F05-3D28-11D2-8F17-00A0C9A6186D} EXTERN_GUID(GUID_ExportedFromComPlus, 0x90883f05, 0x3d28, 0x11d2, 0x8f, 0x17, 0x0, 0xa0, 0xc9, 0xa6, 0x18, 0x6d); // {0F21F359-AB84-41e8-9A78-36D110E6D2F9} EXTERN_GUID(GUID_ManagedName, 0xf21f359, 0xab84, 0x41e8, 0x9a, 0x78, 0x36, 0xd1, 0x10, 0xe6, 0xd2, 0xf9); // {54FC8F55-38DE-4703-9C4E-250351302B1C} EXTERN_GUID(GUID_Function2Getter, 0x54fc8f55, 0x38de, 0x4703, 0x9c, 0x4e, 0x25, 0x3, 0x51, 0x30, 0x2b, 0x1c); // CLSID_CorMetaDataDispenserRuntime: {1EC2DE53-75CC-11d2-9775-00A0C9B4D50C} // Dispenser coclass for version 1.5 and 2.0 meta data. To get the "latest" bind // to CLSID_MetaDataDispenser. EXTERN_GUID(CLSID_CorMetaDataDispenserRuntime, 0x1ec2de53, 0x75cc, 0x11d2, 0x97, 0x75, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc); // {CD2BC5C9-F452-4326-B714-F9C539D4DA58} EXTERN_GUID(GUID_DispIdOverride, 0xcd2bc5c9, 0xf452, 0x4326, 0xb7, 0x14, 0xf9, 0xc5, 0x39, 0xd4, 0xda, 0x58); // {B64784EB-D8D4-4d9b-9ACD-0E30806426F7} EXTERN_GUID(GUID_ForceIEnumerable, 0xb64784eb, 0xd8d4, 0x4d9b, 0x9a, 0xcd, 0x0e, 0x30, 0x80, 0x64, 0x26, 0xf7); // {2941FF83-88D8-4F73-B6A9-BDF8712D000D} EXTERN_GUID(GUID_PropGetCA, 0x2941ff83, 0x88d8, 0x4f73, 0xb6, 0xa9, 0xbd, 0xf8, 0x71, 0x2d, 0x00, 0x0d); // {29533527-3683-4364-ABC0-DB1ADD822FA2} EXTERN_GUID(GUID_PropPutCA, 0x29533527, 0x3683, 0x4364, 0xab, 0xc0, 0xdb, 0x1a, 0xdd, 0x82, 0x2f, 0xa2); // CLSID_CLR_v1_MetaData: {005023CA-72B1-11D3-9FC4-00C04F79A0A3} // Used to generate v1 metadata (for v1.0 and v1.1 CLR compatibility). EXTERN_GUID(CLSID_CLR_v1_MetaData, 0x005023ca, 0x72b1, 0x11d3, 0x9f, 0xc4, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3); // CLSID_CLR_v2_MetaData: {EFEA471A-44FD-4862-9292-0C58D46E1F3A} EXTERN_GUID(CLSID_CLR_v2_MetaData, 0xefea471a, 0x44fd, 0x4862, 0x92, 0x92, 0xc, 0x58, 0xd4, 0x6e, 0x1f, 0x3a); // CLSID_CorMetaDataRuntime: // This will can always be used to generate the "latest" metadata available. #define CLSID_CorMetaDataRuntime CLSID_CLR_v2_MetaData // {30FE7BE8-D7D9-11D2-9F80-00C04F79A0A3} EXTERN_GUID(MetaDataCheckDuplicatesFor, 0x30fe7be8, 0xd7d9, 0x11d2, 0x9f, 0x80, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3); // {DE3856F8-D7D9-11D2-9F80-00C04F79A0A3} EXTERN_GUID(MetaDataRefToDefCheck, 0xde3856f8, 0xd7d9, 0x11d2, 0x9f, 0x80, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3); // {E5D71A4C-D7DA-11D2-9F80-00C04F79A0A3} EXTERN_GUID(MetaDataNotificationForTokenMovement, 0xe5d71a4c, 0xd7da, 0x11d2, 0x9f, 0x80, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3); // {2eee315c-d7db-11d2-9f80-00c04f79a0a3} EXTERN_GUID(MetaDataSetUpdate, 0x2eee315c, 0xd7db, 0x11d2, 0x9f, 0x80, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3); #define MetaDataSetENC MetaDataSetUpdate // Use this guid in SetOption to indicate if the import enumerator should skip over // delete items or not. The default is yes. // // {79700F36-4AAC-11d3-84C3-009027868CB1} EXTERN_GUID(MetaDataImportOption, 0x79700f36, 0x4aac, 0x11d3, 0x84, 0xc3, 0x0, 0x90, 0x27, 0x86, 0x8c, 0xb1); // Use this guid in the SetOption if compiler wants to have MetaData API to take reader/writer lock // // {F7559806-F266-42ea-8C63-0ADB45E8B234} EXTERN_GUID(MetaDataThreadSafetyOptions, 0xf7559806, 0xf266, 0x42ea, 0x8c, 0x63, 0xa, 0xdb, 0x45, 0xe8, 0xb2, 0x34); // Use this guid in the SetOption if compiler wants error when some tokens are emitted out of order // {1547872D-DC03-11d2-9420-0000F8083460} EXTERN_GUID(MetaDataErrorIfEmitOutOfOrder, 0x1547872d, 0xdc03, 0x11d2, 0x94, 0x20, 0x0, 0x0, 0xf8, 0x8, 0x34, 0x60); // Use this guid in the SetOption to indicate if the tlbimporter should generate the // TCE adapters for COM connection point containers. // {DCC9DE90-4151-11d3-88D6-00902754C43A} EXTERN_GUID(MetaDataGenerateTCEAdapters, 0xdcc9de90, 0x4151, 0x11d3, 0x88, 0xd6, 0x0, 0x90, 0x27, 0x54, 0xc4, 0x3a); // Use this guid in the SetOption to specifiy a non-default namespace for typelib import. // {F17FF889-5A63-11d3-9FF2-00C04FF7431A} EXTERN_GUID(MetaDataTypeLibImportNamespace, 0xf17ff889, 0x5a63, 0x11d3, 0x9f, 0xf2, 0x0, 0xc0, 0x4f, 0xf7, 0x43, 0x1a); // Use this guid in the SetOption to specify the behavior of UnmarkAll. See CorLinkerOptions. // {47E099B6-AE7C-4797-8317-B48AA645B8F9} EXTERN_GUID(MetaDataLinkerOptions, 0x47e099b6, 0xae7c, 0x4797, 0x83, 0x17, 0xb4, 0x8a, 0xa6, 0x45, 0xb8, 0xf9); // Use this guid in the SetOption to specify the runtime version stored in the CLR metadata. // {47E099B7-AE7C-4797-8317-B48AA645B8F9} EXTERN_GUID(MetaDataRuntimeVersion, 0x47e099b7, 0xae7c, 0x4797, 0x83, 0x17, 0xb4, 0x8a, 0xa6, 0x45, 0xb8, 0xf9); // Use this guid in the SetOption to specify the behavior of the merger. // {132D3A6E-B35D-464e-951A-42EFB9FB6601} EXTERN_GUID(MetaDataMergerOptions, 0x132d3a6e, 0xb35d, 0x464e, 0x95, 0x1a, 0x42, 0xef, 0xb9, 0xfb, 0x66, 0x1); // Use this guid in SetOption to disable optimizing module-local refs to defs // {a55c0354-e91b-468b-8648-7cc31035d533} EXTERN_GUID(MetaDataPreserveLocalRefs, 0xa55c0354, 0xe91b, 0x468b, 0x86, 0x48, 0x7c, 0xc3, 0x10, 0x35, 0xd5, 0x33); interface IMetaDataImport; interface IMetaDataAssemblyEmit; interface IMetaDataAssemblyImport; interface IMetaDataEmit; typedef UNALIGNED void const *UVCP_CONSTANT; // Constant for connection id and task id #define INVALID_CONNECTION_ID 0x0 #define INVALID_TASK_ID 0x0 #define MAX_CONNECTION_NAME MAX_PATH #define MAIN_CLR_MODULE_NAME_W W("coreclr") #define MAIN_CLR_MODULE_NAME_A "coreclr" #define MAIN_CLR_DLL_NAME_W MAKEDLLNAME_W(MAIN_CLR_MODULE_NAME_W) #define MAIN_CLR_DLL_NAME_A MAKEDLLNAME_A(MAIN_CLR_MODULE_NAME_A) #define TARGET_MAIN_CLR_DLL_NAME_W MAKE_TARGET_DLLNAME_W(MAIN_CLR_MODULE_NAME_W) #define TARGET_MAIN_CLR_DLL_NAME_A MAKE_TARGET_DLLNAME_A(MAIN_CLR_MODULE_NAME_A) //***************************************************************************** //***************************************************************************** // // I L & F I L E F O R M A T D E C L A R A T I O N S // //***************************************************************************** //***************************************************************************** // #ifndef _WINDOWS_UPDATES_ #include #endif // updates //***************************************************************************** //***************************************************************************** // CLSID_Cor: {bee00000-ee77-11d0-a015-00c04fbbb884} EXTERN_GUID(CLSID_Cor, 0xbee00010, 0xee77, 0x11d0, 0xa0, 0x15, 0x00, 0xc0, 0x4f, 0xbb, 0xb8, 0x84); // CLSID_CorMetaDataDispenser: {E5CB7A31-7512-11d2-89CE-0080C792E5D8} // This is the "Master Dispenser", always guaranteed to be the most recent // dispenser on the machine. EXTERN_GUID(CLSID_CorMetaDataDispenser, 0xe5cb7a31, 0x7512, 0x11d2, 0x89, 0xce, 0x0, 0x80, 0xc7, 0x92, 0xe5, 0xd8); // CLSID_CorMetaDataDispenserReg: {435755FF-7397-11d2-9771-00A0C9B4D50C} // Dispenser coclass for version 1.0 meta data. To get the "latest" bind // to CLSID_CorMetaDataDispenser. EXTERN_GUID(CLSID_CorMetaDataDispenserReg, 0x435755ff, 0x7397, 0x11d2, 0x97, 0x71, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc); // CLSID_CorMetaDataReg: {87F3A1F5-7397-11d2-9771-00A0C9B4D50C} // For COM+ Meta Data, Data Driven Registration EXTERN_GUID(CLSID_CorMetaDataReg, 0x87f3a1f5, 0x7397, 0x11d2, 0x97, 0x71, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc); interface IMetaDataDispenser; //------------------------------------- //--- IMetaDataError //------------------------------------- // {B81FF171-20F3-11d2-8DCC-00A0C9B09C19} EXTERN_GUID(IID_IMetaDataError, 0xb81ff171, 0x20f3, 0x11d2, 0x8d, 0xcc, 0x0, 0xa0, 0xc9, 0xb0, 0x9c, 0x19); //--- #undef INTERFACE #define INTERFACE IMetaDataError DECLARE_INTERFACE_(IMetaDataError, IUnknown) { STDMETHOD(OnError)(HRESULT hrError, mdToken token) PURE; }; //------------------------------------- //--- IMapToken //------------------------------------- // IID_IMapToken: {06A3EA8B-0225-11d1-BF72-00C04FC31E12} EXTERN_GUID(IID_IMapToken, 0x6a3ea8b, 0x225, 0x11d1, 0xbf, 0x72, 0x0, 0xc0, 0x4f, 0xc3, 0x1e, 0x12); //--- #undef INTERFACE #define INTERFACE IMapToken DECLARE_INTERFACE_(IMapToken, IUnknown) { STDMETHOD(Map)(mdToken tkImp, mdToken tkEmit) PURE; }; //------------------------------------- //--- IMetaDataDispenser //------------------------------------- // {809C652E-7396-11D2-9771-00A0C9B4D50C} EXTERN_GUID(IID_IMetaDataDispenser, 0x809c652e, 0x7396, 0x11d2, 0x97, 0x71, 0x00, 0xa0, 0xc9, 0xb4, 0xd5, 0x0c); //--- #undef INTERFACE #define INTERFACE IMetaDataDispenser DECLARE_INTERFACE_(IMetaDataDispenser, IUnknown) { STDMETHOD(DefineScope)( // Return code. REFCLSID rclsid, // [in] What version to create. DWORD dwCreateFlags, // [in] Flags on the create. REFIID riid, // [in] The interface desired. IUnknown **ppIUnk) PURE; // [out] Return interface on success. STDMETHOD(OpenScope)( // Return code. LPCWSTR szScope, // [in] The scope to open. DWORD dwOpenFlags, // [in] Open mode flags. REFIID riid, // [in] The interface desired. IUnknown **ppIUnk) PURE; // [out] Return interface on success. STDMETHOD(OpenScopeOnMemory)( // Return code. LPCVOID pData, // [in] Location of scope data. ULONG cbData, // [in] Size of the data pointed to by pData. DWORD dwOpenFlags, // [in] Open mode flags. REFIID riid, // [in] The interface desired. IUnknown **ppIUnk) PURE; // [out] Return interface on success. }; //------------------------------------- //--- IMetaDataEmit //------------------------------------- // {BA3FEE4C-ECB9-4e41-83B7-183FA41CD859} EXTERN_GUID(IID_IMetaDataEmit, 0xba3fee4c, 0xecb9, 0x4e41, 0x83, 0xb7, 0x18, 0x3f, 0xa4, 0x1c, 0xd8, 0x59); //--- #undef INTERFACE #define INTERFACE IMetaDataEmit DECLARE_INTERFACE_(IMetaDataEmit, IUnknown) { STDMETHOD(SetModuleProps)( // S_OK or error. LPCWSTR szName) PURE; // [IN] If not NULL, the name of the module to set. STDMETHOD(Save)( // S_OK or error. LPCWSTR szFile, // [IN] The filename to save to. DWORD dwSaveFlags) PURE; // [IN] Flags for the save. STDMETHOD(SaveToStream)( // S_OK or error. IStream *pIStream, // [IN] A writable stream to save to. DWORD dwSaveFlags) PURE; // [IN] Flags for the save. STDMETHOD(GetSaveSize)( // S_OK or error. CorSaveSize fSave, // [IN] cssAccurate or cssQuick. DWORD *pdwSaveSize) PURE; // [OUT] Put the size here. STDMETHOD(DefineTypeDef)( // S_OK or error. LPCWSTR szTypeDef, // [IN] Name of TypeDef DWORD dwTypeDefFlags, // [IN] CustomAttribute flags mdToken tkExtends, // [IN] extends this TypeDef or typeref mdToken rtkImplements[], // [IN] Implements interfaces mdTypeDef *ptd) PURE; // [OUT] Put TypeDef token here STDMETHOD(DefineNestedType)( // S_OK or error. LPCWSTR szTypeDef, // [IN] Name of TypeDef DWORD dwTypeDefFlags, // [IN] CustomAttribute flags mdToken tkExtends, // [IN] extends this TypeDef or typeref mdToken rtkImplements[], // [IN] Implements interfaces mdTypeDef tdEncloser, // [IN] TypeDef token of the enclosing type. mdTypeDef *ptd) PURE; // [OUT] Put TypeDef token here STDMETHOD(SetHandler)( // S_OK. IUnknown *pUnk) PURE; // [IN] The new error handler. STDMETHOD(DefineMethod)( // S_OK or error. mdTypeDef td, // Parent TypeDef LPCWSTR szName, // Name of member DWORD dwMethodFlags, // Member attributes PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature ULONG cbSigBlob, // [IN] count of bytes in the signature blob ULONG ulCodeRVA, DWORD dwImplFlags, mdMethodDef *pmd) PURE; // Put member token here STDMETHOD(DefineMethodImpl)( // S_OK or error. mdTypeDef td, // [IN] The class implementing the method mdToken tkBody, // [IN] Method body - MethodDef or MethodRef mdToken tkDecl) PURE; // [IN] Method declaration - MethodDef or MethodRef STDMETHOD(DefineTypeRefByName)( // S_OK or error. mdToken tkResolutionScope, // [IN] ModuleRef, AssemblyRef or TypeRef. LPCWSTR szName, // [IN] Name of the TypeRef. mdTypeRef *ptr) PURE; // [OUT] Put TypeRef token here. STDMETHOD(DefineImportType)( // S_OK or error. IMetaDataAssemblyImport *pAssemImport, // [IN] Assembly containing the TypeDef. const void *pbHashValue, // [IN] Hash Blob for Assembly. ULONG cbHashValue, // [IN] Count of bytes. IMetaDataImport *pImport, // [IN] Scope containing the TypeDef. mdTypeDef tdImport, // [IN] The imported TypeDef. IMetaDataAssemblyEmit *pAssemEmit, // [IN] Assembly into which the TypeDef is imported. mdTypeRef *ptr) PURE; // [OUT] Put TypeRef token here. STDMETHOD(DefineMemberRef)( // S_OK or error mdToken tkImport, // [IN] ClassRef or ClassDef importing a member. LPCWSTR szName, // [IN] member's name PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature ULONG cbSigBlob, // [IN] count of bytes in the signature blob mdMemberRef *pmr) PURE; // [OUT] memberref token STDMETHOD(DefineImportMember)( // S_OK or error. IMetaDataAssemblyImport *pAssemImport, // [IN] Assembly containing the Member. const void *pbHashValue, // [IN] Hash Blob for Assembly. ULONG cbHashValue, // [IN] Count of bytes. IMetaDataImport *pImport, // [IN] Import scope, with member. mdToken mbMember, // [IN] Member in import scope. IMetaDataAssemblyEmit *pAssemEmit, // [IN] Assembly into which the Member is imported. mdToken tkParent, // [IN] Classref or classdef in emit scope. mdMemberRef *pmr) PURE; // [OUT] Put member ref here. STDMETHOD(DefineEvent) ( mdTypeDef td, // [IN] the class/interface on which the event is being defined LPCWSTR szEvent, // [IN] Name of the event DWORD dwEventFlags, // [IN] CorEventAttr mdToken tkEventType, // [IN] a reference (mdTypeRef or mdTypeRef) to the Event class mdMethodDef mdAddOn, // [IN] required add method mdMethodDef mdRemoveOn, // [IN] required remove method mdMethodDef mdFire, // [IN] optional fire method mdMethodDef rmdOtherMethods[], // [IN] optional array of other methods associate with the event mdEvent *pmdEvent) PURE; // [OUT] output event token STDMETHOD(SetClassLayout) ( mdTypeDef td, // [IN] typedef DWORD dwPackSize, // [IN] packing size specified as 1, 2, 4, 8, or 16 COR_FIELD_OFFSET rFieldOffsets[], // [IN] array of layout specification ULONG ulClassSize) PURE; // [IN] size of the class STDMETHOD(DeleteClassLayout) ( mdTypeDef td) PURE; // [IN] typedef whose layout is to be deleted. STDMETHOD(SetFieldMarshal) ( mdToken tk, // [IN] given a fieldDef or paramDef token PCCOR_SIGNATURE pvNativeType, // [IN] native type specification ULONG cbNativeType) PURE; // [IN] count of bytes of pvNativeType STDMETHOD(DeleteFieldMarshal) ( mdToken tk) PURE; // [IN] given a fieldDef or paramDef token STDMETHOD(DefinePermissionSet) ( mdToken tk, // [IN] the object to be decorated. DWORD dwAction, // [IN] CorDeclSecurity. void const *pvPermission, // [IN] permission blob. ULONG cbPermission, // [IN] count of bytes of pvPermission. mdPermission *ppm) PURE; // [OUT] returned permission token. STDMETHOD(SetRVA)( // S_OK or error. mdMethodDef md, // [IN] Method for which to set offset ULONG ulRVA) PURE; // [IN] The offset STDMETHOD(GetTokenFromSig)( // S_OK or error. PCCOR_SIGNATURE pvSig, // [IN] Signature to define. ULONG cbSig, // [IN] Size of signature data. mdSignature *pmsig) PURE; // [OUT] returned signature token. STDMETHOD(DefineModuleRef)( // S_OK or error. LPCWSTR szName, // [IN] DLL name mdModuleRef *pmur) PURE; // [OUT] returned // @FUTURE: This should go away once everyone starts using SetMemberRefProps. STDMETHOD(SetParent)( // S_OK or error. mdMemberRef mr, // [IN] Token for the ref to be fixed up. mdToken tk) PURE; // [IN] The ref parent. STDMETHOD(GetTokenFromTypeSpec)( // S_OK or error. PCCOR_SIGNATURE pvSig, // [IN] TypeSpec Signature to define. ULONG cbSig, // [IN] Size of signature data. mdTypeSpec *ptypespec) PURE; // [OUT] returned TypeSpec token. STDMETHOD(SaveToMemory)( // S_OK or error. void *pbData, // [OUT] Location to write data. ULONG cbData) PURE; // [IN] Max size of data buffer. STDMETHOD(DefineUserString)( // Return code. LPCWSTR szString, // [IN] User literal string. ULONG cchString, // [IN] Length of string. mdString *pstk) PURE; // [OUT] String token. STDMETHOD(DeleteToken)( // Return code. mdToken tkObj) PURE; // [IN] The token to be deleted STDMETHOD(SetMethodProps)( // S_OK or error. mdMethodDef md, // [IN] The MethodDef. DWORD dwMethodFlags, // [IN] Method attributes. ULONG ulCodeRVA, // [IN] Code RVA. DWORD dwImplFlags) PURE; // [IN] Impl flags. STDMETHOD(SetTypeDefProps)( // S_OK or error. mdTypeDef td, // [IN] The TypeDef. DWORD dwTypeDefFlags, // [IN] TypeDef flags. mdToken tkExtends, // [IN] Base TypeDef or TypeRef. mdToken rtkImplements[]) PURE; // [IN] Implemented interfaces. STDMETHOD(SetEventProps)( // S_OK or error. mdEvent ev, // [IN] The event token. DWORD dwEventFlags, // [IN] CorEventAttr. mdToken tkEventType, // [IN] A reference (mdTypeRef or mdTypeRef) to the Event class. mdMethodDef mdAddOn, // [IN] Add method. mdMethodDef mdRemoveOn, // [IN] Remove method. mdMethodDef mdFire, // [IN] Fire method. mdMethodDef rmdOtherMethods[]) PURE;// [IN] Array of other methods associate with the event. STDMETHOD(SetPermissionSetProps)( // S_OK or error. mdToken tk, // [IN] The object to be decorated. DWORD dwAction, // [IN] CorDeclSecurity. void const *pvPermission, // [IN] Permission blob. ULONG cbPermission, // [IN] Count of bytes of pvPermission. mdPermission *ppm) PURE; // [OUT] Permission token. STDMETHOD(DefinePinvokeMap)( // Return code. mdToken tk, // [IN] FieldDef or MethodDef. DWORD dwMappingFlags, // [IN] Flags used for mapping. LPCWSTR szImportName, // [IN] Import name. mdModuleRef mrImportDLL) PURE; // [IN] ModuleRef token for the target DLL. STDMETHOD(SetPinvokeMap)( // Return code. mdToken tk, // [IN] FieldDef or MethodDef. DWORD dwMappingFlags, // [IN] Flags used for mapping. LPCWSTR szImportName, // [IN] Import name. mdModuleRef mrImportDLL) PURE; // [IN] ModuleRef token for the target DLL. STDMETHOD(DeletePinvokeMap)( // Return code. mdToken tk) PURE; // [IN] FieldDef or MethodDef. // New CustomAttribute functions. STDMETHOD(DefineCustomAttribute)( // Return code. mdToken tkOwner, // [IN] The object to put the value on. mdToken tkCtor, // [IN] Constructor of the CustomAttribute type (MemberRef/MethodDef). void const *pCustomAttribute, // [IN] The custom value data. ULONG cbCustomAttribute, // [IN] The custom value data length. mdCustomAttribute *pcv) PURE; // [OUT] The custom value token value on return. STDMETHOD(SetCustomAttributeValue)( // Return code. mdCustomAttribute pcv, // [IN] The custom value token whose value to replace. void const *pCustomAttribute, // [IN] The custom value data. ULONG cbCustomAttribute) PURE;// [IN] The custom value data length. STDMETHOD(DefineField)( // S_OK or error. mdTypeDef td, // Parent TypeDef LPCWSTR szName, // Name of member DWORD dwFieldFlags, // Member attributes PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature ULONG cbSigBlob, // [IN] count of bytes in the signature blob DWORD dwCPlusTypeFlag, // [IN] flag for value type. selected ELEMENT_TYPE_* void const *pValue, // [IN] constant value ULONG cchValue, // [IN] size of constant value (string, in wide chars). mdFieldDef *pmd) PURE; // [OUT] Put member token here STDMETHOD(DefineProperty)( mdTypeDef td, // [IN] the class/interface on which the property is being defined LPCWSTR szProperty, // [IN] Name of the property DWORD dwPropFlags, // [IN] CorPropertyAttr PCCOR_SIGNATURE pvSig, // [IN] the required type signature ULONG cbSig, // [IN] the size of the type signature blob DWORD dwCPlusTypeFlag, // [IN] flag for value type. selected ELEMENT_TYPE_* void const *pValue, // [IN] constant value ULONG cchValue, // [IN] size of constant value (string, in wide chars). mdMethodDef mdSetter, // [IN] optional setter of the property mdMethodDef mdGetter, // [IN] optional getter of the property mdMethodDef rmdOtherMethods[], // [IN] an optional array of other methods mdProperty *pmdProp) PURE; // [OUT] output property token STDMETHOD(DefineParam)( mdMethodDef md, // [IN] Owning method ULONG ulParamSeq, // [IN] Which param LPCWSTR szName, // [IN] Optional param name DWORD dwParamFlags, // [IN] Optional param flags DWORD dwCPlusTypeFlag, // [IN] flag for value type. selected ELEMENT_TYPE_* void const *pValue, // [IN] constant value ULONG cchValue, // [IN] size of constant value (string, in wide chars). mdParamDef *ppd) PURE; // [OUT] Put param token here STDMETHOD(SetFieldProps)( // S_OK or error. mdFieldDef fd, // [IN] The FieldDef. DWORD dwFieldFlags, // [IN] Field attributes. DWORD dwCPlusTypeFlag, // [IN] Flag for the value type, selected ELEMENT_TYPE_* void const *pValue, // [IN] Constant value. ULONG cchValue) PURE; // [IN] size of constant value (string, in wide chars). STDMETHOD(SetPropertyProps)( // S_OK or error. mdProperty pr, // [IN] Property token. DWORD dwPropFlags, // [IN] CorPropertyAttr. DWORD dwCPlusTypeFlag, // [IN] Flag for value type, selected ELEMENT_TYPE_* void const *pValue, // [IN] Constant value. ULONG cchValue, // [IN] size of constant value (string, in wide chars). mdMethodDef mdSetter, // [IN] Setter of the property. mdMethodDef mdGetter, // [IN] Getter of the property. mdMethodDef rmdOtherMethods[]) PURE;// [IN] Array of other methods. STDMETHOD(SetParamProps)( // Return code. mdParamDef pd, // [IN] Param token. LPCWSTR szName, // [IN] Param name. DWORD dwParamFlags, // [IN] Param flags. DWORD dwCPlusTypeFlag, // [IN] Flag for value type. selected ELEMENT_TYPE_*. void const *pValue, // [OUT] Constant value. ULONG cchValue) PURE; // [IN] size of constant value (string, in wide chars). // Specialized Custom Attributes for security. STDMETHOD(DefineSecurityAttributeSet)( // Return code. mdToken tkObj, // [IN] Class or method requiring security attributes. COR_SECATTR rSecAttrs[], // [IN] Array of security attribute descriptions. ULONG cSecAttrs, // [IN] Count of elements in above array. ULONG *pulErrorAttr) PURE; // [OUT] On error, index of attribute causing problem. STDMETHOD(ApplyEditAndContinue)( // S_OK or error. IUnknown *pImport) PURE; // [IN] Metadata from the delta PE. STDMETHOD(TranslateSigWithScope)( IMetaDataAssemblyImport *pAssemImport, // [IN] importing assembly interface const void *pbHashValue, // [IN] Hash Blob for Assembly. ULONG cbHashValue, // [IN] Count of bytes. IMetaDataImport *import, // [IN] importing interface PCCOR_SIGNATURE pbSigBlob, // [IN] signature in the importing scope ULONG cbSigBlob, // [IN] count of bytes of signature IMetaDataAssemblyEmit *pAssemEmit, // [IN] emit assembly interface IMetaDataEmit *emit, // [IN] emit interface PCOR_SIGNATURE pvTranslatedSig, // [OUT] buffer to hold translated signature ULONG cbTranslatedSigMax, ULONG *pcbTranslatedSig) PURE;// [OUT] count of bytes in the translated signature STDMETHOD(SetMethodImplFlags)( // [IN] S_OK or error. mdMethodDef md, // [IN] Method for which to set ImplFlags DWORD dwImplFlags) PURE; STDMETHOD(SetFieldRVA)( // [IN] S_OK or error. mdFieldDef fd, // [IN] Field for which to set offset ULONG ulRVA) PURE; // [IN] The offset STDMETHOD(Merge)( // S_OK or error. IMetaDataImport *pImport, // [IN] The scope to be merged. IMapToken *pHostMapToken, // [IN] Host IMapToken interface to receive token remap notification IUnknown *pHandler) PURE; // [IN] An object to receive to receive error notification. STDMETHOD(MergeEnd)() PURE; // S_OK or error. // This interface is sealed. Do not change, add, or remove anything. Instead, derive a new iterface. }; // IMetaDataEmit //------------------------------------- //--- IMetaDataEmit2 //------------------------------------- // {F5DD9950-F693-42e6-830E-7B833E8146A9} EXTERN_GUID(IID_IMetaDataEmit2, 0xf5dd9950, 0xf693, 0x42e6, 0x83, 0xe, 0x7b, 0x83, 0x3e, 0x81, 0x46, 0xa9); //--- #undef INTERFACE #define INTERFACE IMetaDataEmit2 DECLARE_INTERFACE_(IMetaDataEmit2, IMetaDataEmit) { STDMETHOD(DefineMethodSpec)( mdToken tkParent, // [IN] MethodDef or MemberRef PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of COM+ signature ULONG cbSigBlob, // [IN] count of bytes in the signature blob mdMethodSpec *pmi) PURE; // [OUT] method instantiation token STDMETHOD(GetDeltaSaveSize)( // S_OK or error. CorSaveSize fSave, // [IN] cssAccurate or cssQuick. DWORD *pdwSaveSize) PURE; // [OUT] Put the size here. STDMETHOD(SaveDelta)( // S_OK or error. LPCWSTR szFile, // [IN] The filename to save to. DWORD dwSaveFlags) PURE; // [IN] Flags for the save. STDMETHOD(SaveDeltaToStream)( // S_OK or error. IStream *pIStream, // [IN] A writable stream to save to. DWORD dwSaveFlags) PURE; // [IN] Flags for the save. STDMETHOD(SaveDeltaToMemory)( // S_OK or error. void *pbData, // [OUT] Location to write data. ULONG cbData) PURE; // [IN] Max size of data buffer. STDMETHOD(DefineGenericParam)( // S_OK or error. mdToken tk, // [IN] TypeDef or MethodDef ULONG ulParamSeq, // [IN] Index of the type parameter DWORD dwParamFlags, // [IN] Flags, for future use (e.g. variance) LPCWSTR szname, // [IN] Name DWORD reserved, // [IN] For future use (e.g. non-type parameters) mdToken rtkConstraints[], // [IN] Array of type constraints (TypeDef,TypeRef,TypeSpec) mdGenericParam *pgp) PURE; // [OUT] Put GenericParam token here STDMETHOD(SetGenericParamProps)( // S_OK or error. mdGenericParam gp, // [IN] GenericParam DWORD dwParamFlags, // [IN] Flags, for future use (e.g. variance) LPCWSTR szName, // [IN] Optional name DWORD reserved, // [IN] For future use (e.g. non-type parameters) mdToken rtkConstraints[]) PURE;// [IN] Array of type constraints (TypeDef,TypeRef,TypeSpec) STDMETHOD(ResetENCLog)() PURE; // S_OK or error. }; //------------------------------------- //--- IMetaDataImport //------------------------------------- // {7DAC8207-D3AE-4c75-9B67-92801A497D44} EXTERN_GUID(IID_IMetaDataImport, 0x7dac8207, 0xd3ae, 0x4c75, 0x9b, 0x67, 0x92, 0x80, 0x1a, 0x49, 0x7d, 0x44); //--- #undef INTERFACE #define INTERFACE IMetaDataImport DECLARE_INTERFACE_(IMetaDataImport, IUnknown) { STDMETHOD_(void, CloseEnum)(HCORENUM hEnum) PURE; STDMETHOD(CountEnum)(HCORENUM hEnum, ULONG *pulCount) PURE; STDMETHOD(ResetEnum)(HCORENUM hEnum, ULONG ulPos) PURE; STDMETHOD(EnumTypeDefs)(HCORENUM *phEnum, mdTypeDef rTypeDefs[], ULONG cMax, ULONG *pcTypeDefs) PURE; STDMETHOD(EnumInterfaceImpls)(HCORENUM *phEnum, mdTypeDef td, mdInterfaceImpl rImpls[], ULONG cMax, ULONG* pcImpls) PURE; STDMETHOD(EnumTypeRefs)(HCORENUM *phEnum, mdTypeRef rTypeRefs[], ULONG cMax, ULONG* pcTypeRefs) PURE; STDMETHOD(FindTypeDefByName)( // S_OK or error. LPCWSTR szTypeDef, // [IN] Name of the Type. mdToken tkEnclosingClass, // [IN] TypeDef/TypeRef for Enclosing class. mdTypeDef *ptd) PURE; // [OUT] Put the TypeDef token here. STDMETHOD(GetScopeProps)( // S_OK or error. _Out_writes_to_opt_(cchName, *pchName) LPWSTR szName, // [OUT] Put the name here. ULONG cchName, // [IN] Size of name buffer in wide chars. ULONG *pchName, // [OUT] Put size of name (wide chars) here. GUID *pmvid) PURE; // [OUT, OPTIONAL] Put MVID here. STDMETHOD(GetModuleFromScope)( // S_OK. mdModule *pmd) PURE; // [OUT] Put mdModule token here. STDMETHOD(GetTypeDefProps)( // S_OK or error. mdTypeDef td, // [IN] TypeDef token for inquiry. _Out_writes_to_opt_(cchTypeDef, *pchTypeDef) LPWSTR szTypeDef, // [OUT] Put name here. ULONG cchTypeDef, // [IN] size of name buffer in wide chars. ULONG *pchTypeDef, // [OUT] put size of name (wide chars) here. DWORD *pdwTypeDefFlags, // [OUT] Put flags here. mdToken *ptkExtends) PURE; // [OUT] Put base class TypeDef/TypeRef here. STDMETHOD(GetInterfaceImplProps)( // S_OK or error. mdInterfaceImpl iiImpl, // [IN] InterfaceImpl token. mdTypeDef *pClass, // [OUT] Put implementing class token here. mdToken *ptkIface) PURE; // [OUT] Put implemented interface token here. STDMETHOD(GetTypeRefProps)( // S_OK or error. mdTypeRef tr, // [IN] TypeRef token. mdToken *ptkResolutionScope, // [OUT] Resolution scope, ModuleRef or AssemblyRef. _Out_writes_to_opt_(cchName, *pchName) LPWSTR szName, // [OUT] Name of the TypeRef. ULONG cchName, // [IN] Size of buffer. ULONG *pchName) PURE; // [OUT] Size of Name. STDMETHOD(ResolveTypeRef)(mdTypeRef tr, REFIID riid, IUnknown **ppIScope, mdTypeDef *ptd) PURE; STDMETHOD(EnumMembers)( // S_OK, S_FALSE, or error. HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdTypeDef cl, // [IN] TypeDef to scope the enumeration. mdToken rMembers[], // [OUT] Put MemberDefs here. ULONG cMax, // [IN] Max MemberDefs to put. ULONG *pcTokens) PURE; // [OUT] Put # put here. STDMETHOD(EnumMembersWithName)( // S_OK, S_FALSE, or error. HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdTypeDef cl, // [IN] TypeDef to scope the enumeration. LPCWSTR szName, // [IN] Limit results to those with this name. mdToken rMembers[], // [OUT] Put MemberDefs here. ULONG cMax, // [IN] Max MemberDefs to put. ULONG *pcTokens) PURE; // [OUT] Put # put here. STDMETHOD(EnumMethods)( // S_OK, S_FALSE, or error. HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdTypeDef cl, // [IN] TypeDef to scope the enumeration. mdMethodDef rMethods[], // [OUT] Put MethodDefs here. ULONG cMax, // [IN] Max MethodDefs to put. ULONG *pcTokens) PURE; // [OUT] Put # put here. STDMETHOD(EnumMethodsWithName)( // S_OK, S_FALSE, or error. HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdTypeDef cl, // [IN] TypeDef to scope the enumeration. LPCWSTR szName, // [IN] Limit results to those with this name. mdMethodDef rMethods[], // [OU] Put MethodDefs here. ULONG cMax, // [IN] Max MethodDefs to put. ULONG *pcTokens) PURE; // [OUT] Put # put here. STDMETHOD(EnumFields)( // S_OK, S_FALSE, or error. HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdTypeDef cl, // [IN] TypeDef to scope the enumeration. mdFieldDef rFields[], // [OUT] Put FieldDefs here. ULONG cMax, // [IN] Max FieldDefs to put. ULONG *pcTokens) PURE; // [OUT] Put # put here. STDMETHOD(EnumFieldsWithName)( // S_OK, S_FALSE, or error. HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdTypeDef cl, // [IN] TypeDef to scope the enumeration. LPCWSTR szName, // [IN] Limit results to those with this name. mdFieldDef rFields[], // [OUT] Put MemberDefs here. ULONG cMax, // [IN] Max MemberDefs to put. ULONG *pcTokens) PURE; // [OUT] Put # put here. STDMETHOD(EnumParams)( // S_OK, S_FALSE, or error. HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdMethodDef mb, // [IN] MethodDef to scope the enumeration. mdParamDef rParams[], // [OUT] Put ParamDefs here. ULONG cMax, // [IN] Max ParamDefs to put. ULONG *pcTokens) PURE; // [OUT] Put # put here. STDMETHOD(EnumMemberRefs)( // S_OK, S_FALSE, or error. HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdToken tkParent, // [IN] Parent token to scope the enumeration. mdMemberRef rMemberRefs[], // [OUT] Put MemberRefs here. ULONG cMax, // [IN] Max MemberRefs to put. ULONG *pcTokens) PURE; // [OUT] Put # put here. STDMETHOD(EnumMethodImpls)( // S_OK, S_FALSE, or error HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdTypeDef td, // [IN] TypeDef to scope the enumeration. mdToken rMethodBody[], // [OUT] Put Method Body tokens here. mdToken rMethodDecl[], // [OUT] Put Method Declaration tokens here. ULONG cMax, // [IN] Max tokens to put. ULONG *pcTokens) PURE; // [OUT] Put # put here. STDMETHOD(EnumPermissionSets)( // S_OK, S_FALSE, or error. HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdToken tk, // [IN] if !NIL, token to scope the enumeration. DWORD dwActions, // [IN] if !0, return only these actions. mdPermission rPermission[], // [OUT] Put Permissions here. ULONG cMax, // [IN] Max Permissions to put. ULONG *pcTokens) PURE; // [OUT] Put # put here. STDMETHOD(FindMember)( mdTypeDef td, // [IN] given typedef LPCWSTR szName, // [IN] member name PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature ULONG cbSigBlob, // [IN] count of bytes in the signature blob mdToken *pmb) PURE; // [OUT] matching memberdef STDMETHOD(FindMethod)( mdTypeDef td, // [IN] given typedef LPCWSTR szName, // [IN] member name PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature ULONG cbSigBlob, // [IN] count of bytes in the signature blob mdMethodDef *pmb) PURE; // [OUT] matching memberdef STDMETHOD(FindField)( mdTypeDef td, // [IN] given typedef LPCWSTR szName, // [IN] member name PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature ULONG cbSigBlob, // [IN] count of bytes in the signature blob mdFieldDef *pmb) PURE; // [OUT] matching memberdef STDMETHOD(FindMemberRef)( mdTypeRef td, // [IN] given typeRef LPCWSTR szName, // [IN] member name PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature ULONG cbSigBlob, // [IN] count of bytes in the signature blob mdMemberRef *pmr) PURE; // [OUT] matching memberref STDMETHOD (GetMethodProps)( mdMethodDef mb, // The method for which to get props. mdTypeDef *pClass, // Put method's class here. _Out_writes_to_opt_(cchMethod, *pchMethod) LPWSTR szMethod, // Put method's name here. ULONG cchMethod, // Size of szMethod buffer in wide chars. ULONG *pchMethod, // Put actual size here DWORD *pdwAttr, // Put flags here. PCCOR_SIGNATURE *ppvSigBlob, // [OUT] point to the blob value of meta data ULONG *pcbSigBlob, // [OUT] actual size of signature blob ULONG *pulCodeRVA, // [OUT] codeRVA DWORD *pdwImplFlags) PURE; // [OUT] Impl. Flags STDMETHOD(GetMemberRefProps)( // S_OK or error. mdMemberRef mr, // [IN] given memberref mdToken *ptk, // [OUT] Put classref or classdef here. _Out_writes_to_opt_(cchMember, *pchMember) LPWSTR szMember, // [OUT] buffer to fill for member's name ULONG cchMember, // [IN] the count of char of szMember ULONG *pchMember, // [OUT] actual count of char in member name PCCOR_SIGNATURE *ppvSigBlob, // [OUT] point to meta data blob value ULONG *pbSig) PURE; // [OUT] actual size of signature blob STDMETHOD(EnumProperties)( // S_OK, S_FALSE, or error. HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdTypeDef td, // [IN] TypeDef to scope the enumeration. mdProperty rProperties[], // [OUT] Put Properties here. ULONG cMax, // [IN] Max properties to put. ULONG *pcProperties) PURE; // [OUT] Put # put here. STDMETHOD(EnumEvents)( // S_OK, S_FALSE, or error. HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdTypeDef td, // [IN] TypeDef to scope the enumeration. mdEvent rEvents[], // [OUT] Put events here. ULONG cMax, // [IN] Max events to put. ULONG *pcEvents) PURE; // [OUT] Put # put here. STDMETHOD(GetEventProps)( // S_OK, S_FALSE, or error. mdEvent ev, // [IN] event token mdTypeDef *pClass, // [OUT] typedef containing the event declarion. LPCWSTR szEvent, // [OUT] Event name ULONG cchEvent, // [IN] the count of wchar of szEvent ULONG *pchEvent, // [OUT] actual count of wchar for event's name DWORD *pdwEventFlags, // [OUT] Event flags. mdToken *ptkEventType, // [OUT] EventType class mdMethodDef *pmdAddOn, // [OUT] AddOn method of the event mdMethodDef *pmdRemoveOn, // [OUT] RemoveOn method of the event mdMethodDef *pmdFire, // [OUT] Fire method of the event mdMethodDef rmdOtherMethod[], // [OUT] other method of the event ULONG cMax, // [IN] size of rmdOtherMethod ULONG *pcOtherMethod) PURE; // [OUT] total number of other method of this event STDMETHOD(EnumMethodSemantics)( // S_OK, S_FALSE, or error. HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdMethodDef mb, // [IN] MethodDef to scope the enumeration. mdToken rEventProp[], // [OUT] Put Event/Property here. ULONG cMax, // [IN] Max properties to put. ULONG *pcEventProp) PURE; // [OUT] Put # put here. STDMETHOD(GetMethodSemantics)( // S_OK, S_FALSE, or error. mdMethodDef mb, // [IN] method token mdToken tkEventProp, // [IN] event/property token. DWORD *pdwSemanticsFlags) PURE; // [OUT] the role flags for the method/propevent pair STDMETHOD(GetClassLayout) ( mdTypeDef td, // [IN] give typedef DWORD *pdwPackSize, // [OUT] 1, 2, 4, 8, or 16 COR_FIELD_OFFSET rFieldOffset[], // [OUT] field offset array ULONG cMax, // [IN] size of the array ULONG *pcFieldOffset, // [OUT] needed array size ULONG *pulClassSize) PURE; // [OUT] the size of the class STDMETHOD(GetFieldMarshal) ( mdToken tk, // [IN] given a field's memberdef PCCOR_SIGNATURE *ppvNativeType, // [OUT] native type of this field ULONG *pcbNativeType) PURE; // [OUT] the count of bytes of *ppvNativeType STDMETHOD(GetRVA)( // S_OK or error. mdToken tk, // Member for which to set offset ULONG *pulCodeRVA, // The offset DWORD *pdwImplFlags) PURE; // the implementation flags STDMETHOD(GetPermissionSetProps) ( mdPermission pm, // [IN] the permission token. DWORD *pdwAction, // [OUT] CorDeclSecurity. void const **ppvPermission, // [OUT] permission blob. ULONG *pcbPermission) PURE; // [OUT] count of bytes of pvPermission. STDMETHOD(GetSigFromToken)( // S_OK or error. mdSignature mdSig, // [IN] Signature token. PCCOR_SIGNATURE *ppvSig, // [OUT] return pointer to token. ULONG *pcbSig) PURE; // [OUT] return size of signature. STDMETHOD(GetModuleRefProps)( // S_OK or error. mdModuleRef mur, // [IN] moduleref token. _Out_writes_to_opt_(cchName, *pchName) LPWSTR szName, // [OUT] buffer to fill with the moduleref name. ULONG cchName, // [IN] size of szName in wide characters. ULONG *pchName) PURE; // [OUT] actual count of characters in the name. STDMETHOD(EnumModuleRefs)( // S_OK or error. HCORENUM *phEnum, // [IN|OUT] pointer to the enum. mdModuleRef rModuleRefs[], // [OUT] put modulerefs here. ULONG cmax, // [IN] max memberrefs to put. ULONG *pcModuleRefs) PURE; // [OUT] put # put here. STDMETHOD(GetTypeSpecFromToken)( // S_OK or error. mdTypeSpec typespec, // [IN] TypeSpec token. PCCOR_SIGNATURE *ppvSig, // [OUT] return pointer to TypeSpec signature ULONG *pcbSig) PURE; // [OUT] return size of signature. STDMETHOD(GetNameFromToken)( // Not Recommended! May be removed! mdToken tk, // [IN] Token to get name from. Must have a name. MDUTF8CSTR *pszUtf8NamePtr) PURE; // [OUT] Return pointer to UTF8 name in heap. STDMETHOD(EnumUnresolvedMethods)( // S_OK, S_FALSE, or error. HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdToken rMethods[], // [OUT] Put MemberDefs here. ULONG cMax, // [IN] Max MemberDefs to put. ULONG *pcTokens) PURE; // [OUT] Put # put here. STDMETHOD(GetUserString)( // S_OK or error. mdString stk, // [IN] String token. _Out_writes_to_opt_(cchString, *pchString) LPWSTR szString, // [OUT] Copy of string. ULONG cchString, // [IN] Max chars of room in szString. ULONG *pchString) PURE; // [OUT] How many chars in actual string. STDMETHOD(GetPinvokeMap)( // S_OK or error. mdToken tk, // [IN] FieldDef or MethodDef. DWORD *pdwMappingFlags, // [OUT] Flags used for mapping. _Out_writes_to_opt_(cchImportName, *pchImportName) LPWSTR szImportName, // [OUT] Import name. ULONG cchImportName, // [IN] Size of the name buffer. ULONG *pchImportName, // [OUT] Actual number of characters stored. mdModuleRef *pmrImportDLL) PURE; // [OUT] ModuleRef token for the target DLL. STDMETHOD(EnumSignatures)( // S_OK or error. HCORENUM *phEnum, // [IN|OUT] pointer to the enum. mdSignature rSignatures[], // [OUT] put signatures here. ULONG cmax, // [IN] max signatures to put. ULONG *pcSignatures) PURE; // [OUT] put # put here. STDMETHOD(EnumTypeSpecs)( // S_OK or error. HCORENUM *phEnum, // [IN|OUT] pointer to the enum. mdTypeSpec rTypeSpecs[], // [OUT] put TypeSpecs here. ULONG cmax, // [IN] max TypeSpecs to put. ULONG *pcTypeSpecs) PURE; // [OUT] put # put here. STDMETHOD(EnumUserStrings)( // S_OK or error. HCORENUM *phEnum, // [IN/OUT] pointer to the enum. mdString rStrings[], // [OUT] put Strings here. ULONG cmax, // [IN] max Strings to put. ULONG *pcStrings) PURE; // [OUT] put # put here. STDMETHOD(GetParamForMethodIndex)( // S_OK or error. mdMethodDef md, // [IN] Method token. ULONG ulParamSeq, // [IN] Parameter sequence. mdParamDef *ppd) PURE; // [IN] Put Param token here. STDMETHOD(EnumCustomAttributes)( // S_OK or error. HCORENUM *phEnum, // [IN, OUT] COR enumerator. mdToken tk, // [IN] Token to scope the enumeration, 0 for all. mdToken tkType, // [IN] Type of interest, 0 for all. mdCustomAttribute rCustomAttributes[], // [OUT] Put custom attribute tokens here. ULONG cMax, // [IN] Size of rCustomAttributes. ULONG *pcCustomAttributes) PURE; // [OUT, OPTIONAL] Put count of token values here. STDMETHOD(GetCustomAttributeProps)( // S_OK or error. mdCustomAttribute cv, // [IN] CustomAttribute token. mdToken *ptkObj, // [OUT, OPTIONAL] Put object token here. mdToken *ptkType, // [OUT, OPTIONAL] Put AttrType token here. void const **ppBlob, // [OUT, OPTIONAL] Put pointer to data here. ULONG *pcbSize) PURE; // [OUT, OPTIONAL] Put size of date here. STDMETHOD(FindTypeRef)( mdToken tkResolutionScope, // [IN] ModuleRef, AssemblyRef or TypeRef. LPCWSTR szName, // [IN] TypeRef Name. mdTypeRef *ptr) PURE; // [OUT] matching TypeRef. STDMETHOD(GetMemberProps)( mdToken mb, // The member for which to get props. mdTypeDef *pClass, // Put member's class here. _Out_writes_to_opt_(cchMember, *pchMember) LPWSTR szMember, // Put member's name here. ULONG cchMember, // Size of szMember buffer in wide chars. ULONG *pchMember, // Put actual size here DWORD *pdwAttr, // Put flags here. PCCOR_SIGNATURE *ppvSigBlob, // [OUT] point to the blob value of meta data ULONG *pcbSigBlob, // [OUT] actual size of signature blob ULONG *pulCodeRVA, // [OUT] codeRVA DWORD *pdwImplFlags, // [OUT] Impl. Flags DWORD *pdwCPlusTypeFlag, // [OUT] flag for value type. selected ELEMENT_TYPE_* UVCP_CONSTANT *ppValue, // [OUT] constant value ULONG *pcchValue) PURE; // [OUT] size of constant string in chars, 0 for non-strings. STDMETHOD(GetFieldProps)( mdFieldDef mb, // The field for which to get props. mdTypeDef *pClass, // Put field's class here. _Out_writes_to_opt_(cchField, *pchField) LPWSTR szField, // Put field's name here. ULONG cchField, // Size of szField buffer in wide chars. ULONG *pchField, // Put actual size here DWORD *pdwAttr, // Put flags here. PCCOR_SIGNATURE *ppvSigBlob, // [OUT] point to the blob value of meta data ULONG *pcbSigBlob, // [OUT] actual size of signature blob DWORD *pdwCPlusTypeFlag, // [OUT] flag for value type. selected ELEMENT_TYPE_* UVCP_CONSTANT *ppValue, // [OUT] constant value ULONG *pcchValue) PURE; // [OUT] size of constant string in chars, 0 for non-strings. STDMETHOD(GetPropertyProps)( // S_OK, S_FALSE, or error. mdProperty prop, // [IN] property token mdTypeDef *pClass, // [OUT] typedef containing the property declarion. LPCWSTR szProperty, // [OUT] Property name ULONG cchProperty, // [IN] the count of wchar of szProperty ULONG *pchProperty, // [OUT] actual count of wchar for property name DWORD *pdwPropFlags, // [OUT] property flags. PCCOR_SIGNATURE *ppvSig, // [OUT] property type. pointing to meta data internal blob ULONG *pbSig, // [OUT] count of bytes in *ppvSig DWORD *pdwCPlusTypeFlag, // [OUT] flag for value type. selected ELEMENT_TYPE_* UVCP_CONSTANT *ppDefaultValue, // [OUT] constant value ULONG *pcchDefaultValue, // [OUT] size of constant string in chars, 0 for non-strings. mdMethodDef *pmdSetter, // [OUT] setter method of the property mdMethodDef *pmdGetter, // [OUT] getter method of the property mdMethodDef rmdOtherMethod[], // [OUT] other method of the property ULONG cMax, // [IN] size of rmdOtherMethod ULONG *pcOtherMethod) PURE; // [OUT] total number of other method of this property STDMETHOD(GetParamProps)( // S_OK or error. mdParamDef tk, // [IN]The Parameter. mdMethodDef *pmd, // [OUT] Parent Method token. ULONG *pulSequence, // [OUT] Parameter sequence. _Out_writes_to_opt_(cchName, *pchName) LPWSTR szName, // [OUT] Put name here. ULONG cchName, // [OUT] Size of name buffer. ULONG *pchName, // [OUT] Put actual size of name here. DWORD *pdwAttr, // [OUT] Put flags here. DWORD *pdwCPlusTypeFlag, // [OUT] Flag for value type. selected ELEMENT_TYPE_*. UVCP_CONSTANT *ppValue, // [OUT] Constant value. ULONG *pcchValue) PURE; // [OUT] size of constant string in chars, 0 for non-strings. STDMETHOD(GetCustomAttributeByName)( // S_OK or error. mdToken tkObj, // [IN] Object with Custom Attribute. LPCWSTR szName, // [IN] Name of desired Custom Attribute. const void **ppData, // [OUT] Put pointer to data here. ULONG *pcbData) PURE; // [OUT] Put size of data here. STDMETHOD_(BOOL, IsValidToken)( // True or False. mdToken tk) PURE; // [IN] Given token. STDMETHOD(GetNestedClassProps)( // S_OK or error. mdTypeDef tdNestedClass, // [IN] NestedClass token. mdTypeDef *ptdEnclosingClass) PURE; // [OUT] EnclosingClass token. STDMETHOD(GetNativeCallConvFromSig)( // S_OK or error. void const *pvSig, // [IN] Pointer to signature. ULONG cbSig, // [IN] Count of signature bytes. ULONG *pCallConv) PURE; // [OUT] Put calling conv here (see CorPinvokemap). STDMETHOD(IsGlobal)( // S_OK or error. mdToken pd, // [IN] Type, Field, or Method token. int *pbGlobal) PURE; // [OUT] Put 1 if global, 0 otherwise. // This interface is sealed. Do not change, add, or remove anything. Instead, derive a new iterface. }; // IMetaDataImport //------------------------------------- //--- IMetaDataImport2 //------------------------------------- // {FCE5EFA0-8BBA-4f8e-A036-8F2022B08466} EXTERN_GUID(IID_IMetaDataImport2, 0xfce5efa0, 0x8bba, 0x4f8e, 0xa0, 0x36, 0x8f, 0x20, 0x22, 0xb0, 0x84, 0x66); //--- #undef INTERFACE #define INTERFACE IMetaDataImport2 DECLARE_INTERFACE_(IMetaDataImport2, IMetaDataImport) { STDMETHOD(EnumGenericParams)( HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdToken tk, // [IN] TypeDef or MethodDef whose generic parameters are requested mdGenericParam rGenericParams[], // [OUT] Put GenericParams here. ULONG cMax, // [IN] Max GenericParams to put. ULONG *pcGenericParams) PURE; // [OUT] Put # put here. STDMETHOD(GetGenericParamProps)( // S_OK or error. mdGenericParam gp, // [IN] GenericParam ULONG *pulParamSeq, // [OUT] Index of the type parameter DWORD *pdwParamFlags, // [OUT] Flags, for future use (e.g. variance) mdToken *ptOwner, // [OUT] Owner (TypeDef or MethodDef) DWORD *reserved, // [OUT] For future use (e.g. non-type parameters) _Out_writes_to_opt_(cchName, *pchName) LPWSTR wzname, // [OUT] Put name here ULONG cchName, // [IN] Size of buffer ULONG *pchName) PURE; // [OUT] Put size of name (wide chars) here. STDMETHOD(GetMethodSpecProps)( mdMethodSpec mi, // [IN] The method instantiation mdToken *tkParent, // [OUT] MethodDef or MemberRef PCCOR_SIGNATURE *ppvSigBlob, // [OUT] point to the blob value of meta data ULONG *pcbSigBlob) PURE; // [OUT] actual size of signature blob STDMETHOD(EnumGenericParamConstraints)( HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdGenericParam tk, // [IN] GenericParam whose constraints are requested mdGenericParamConstraint rGenericParamConstraints[], // [OUT] Put GenericParamConstraints here. ULONG cMax, // [IN] Max GenericParamConstraints to put. ULONG *pcGenericParamConstraints) PURE; // [OUT] Put # put here. STDMETHOD(GetGenericParamConstraintProps)( // S_OK or error. mdGenericParamConstraint gpc, // [IN] GenericParamConstraint mdGenericParam *ptGenericParam, // [OUT] GenericParam that is constrained mdToken *ptkConstraintType) PURE; // [OUT] TypeDef/Ref/Spec constraint STDMETHOD(GetPEKind)( // S_OK or error. DWORD* pdwPEKind, // [OUT] The kind of PE (0 - not a PE) DWORD* pdwMAchine) PURE; // [OUT] Machine as defined in NT header STDMETHOD(GetVersionString)( // S_OK or error. _Out_writes_to_opt_(ccBufSize, *pccBufSize) LPWSTR pwzBuf, // [OUT] Put version string here. DWORD ccBufSize, // [IN] size of the buffer, in wide chars DWORD *pccBufSize) PURE; // [OUT] Size of the version string, wide chars, including terminating nul. STDMETHOD(EnumMethodSpecs)( HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdToken tk, // [IN] MethodDef or MemberRef whose MethodSpecs are requested mdMethodSpec rMethodSpecs[], // [OUT] Put MethodSpecs here. ULONG cMax, // [IN] Max tokens to put. ULONG *pcMethodSpecs) PURE; // [OUT] Put actual count here. }; // IMetaDataImport2 //------------------------------------- //--- IMetaDataFilter //------------------------------------- // {D0E80DD1-12D4-11d3-B39D-00C04FF81795} EXTERN_GUID(IID_IMetaDataFilter, 0xd0e80dd1, 0x12d4, 0x11d3, 0xb3, 0x9d, 0x0, 0xc0, 0x4f, 0xf8, 0x17, 0x95); //--- #undef INTERFACE #define INTERFACE IMetaDataFilter DECLARE_INTERFACE_(IMetaDataFilter, IUnknown) { STDMETHOD(UnmarkAll)() PURE; STDMETHOD(MarkToken)(mdToken tk) PURE; STDMETHOD(IsTokenMarked)(mdToken tk, BOOL *pIsMarked) PURE; }; //------------------------------------- //--- IHostFilter //------------------------------------- // {D0E80DD3-12D4-11d3-B39D-00C04FF81795} EXTERN_GUID(IID_IHostFilter, 0xd0e80dd3, 0x12d4, 0x11d3, 0xb3, 0x9d, 0x0, 0xc0, 0x4f, 0xf8, 0x17, 0x95); //--- #undef INTERFACE #define INTERFACE IHostFilter DECLARE_INTERFACE_(IHostFilter, IUnknown) { STDMETHOD(MarkToken)(mdToken tk) PURE; }; //***************************************************************************** // Assembly Declarations //***************************************************************************** typedef struct { DWORD dwOSPlatformId; // Operating system platform. DWORD dwOSMajorVersion; // OS Major version. DWORD dwOSMinorVersion; // OS Minor version. } OSINFO; typedef struct { USHORT usMajorVersion; // Major Version. USHORT usMinorVersion; // Minor Version. USHORT usBuildNumber; // Build Number. USHORT usRevisionNumber; // Revision Number. LPWSTR szLocale; // Locale. ULONG cbLocale; // [IN/OUT] Size of the buffer in wide chars/Actual size. DWORD *rProcessor; // Processor ID array. ULONG ulProcessor; // [IN/OUT] Size of the Processor ID array/Actual # of entries filled in. OSINFO *rOS; // OSINFO array. ULONG ulOS; // [IN/OUT]Size of the OSINFO array/Actual # of entries filled in. } ASSEMBLYMETADATA; // {211EF15B-5317-4438-B196-DEC87B887693} EXTERN_GUID(IID_IMetaDataAssemblyEmit, 0x211ef15b, 0x5317, 0x4438, 0xb1, 0x96, 0xde, 0xc8, 0x7b, 0x88, 0x76, 0x93); //--- #undef INTERFACE #define INTERFACE IMetaDataAssemblyEmit DECLARE_INTERFACE_(IMetaDataAssemblyEmit, IUnknown) { STDMETHOD(DefineAssembly)( // S_OK or error. const void *pbPublicKey, // [IN] Public key of the assembly. ULONG cbPublicKey, // [IN] Count of bytes in the public key. ULONG ulHashAlgId, // [IN] Hash algorithm used to hash the files. LPCWSTR szName, // [IN] Name of the assembly. const ASSEMBLYMETADATA *pMetaData, // [IN] Assembly MetaData. DWORD dwAssemblyFlags, // [IN] Flags. mdAssembly *pma) PURE; // [OUT] Returned Assembly token. STDMETHOD(DefineAssemblyRef)( // S_OK or error. const void *pbPublicKeyOrToken, // [IN] Public key or token of the assembly. ULONG cbPublicKeyOrToken, // [IN] Count of bytes in the public key or token. LPCWSTR szName, // [IN] Name of the assembly being referenced. const ASSEMBLYMETADATA *pMetaData, // [IN] Assembly MetaData. const void *pbHashValue, // [IN] Hash Blob. ULONG cbHashValue, // [IN] Count of bytes in the Hash Blob. DWORD dwAssemblyRefFlags, // [IN] Flags. mdAssemblyRef *pmdar) PURE; // [OUT] Returned AssemblyRef token. STDMETHOD(DefineFile)( // S_OK or error. LPCWSTR szName, // [IN] Name of the file. const void *pbHashValue, // [IN] Hash Blob. ULONG cbHashValue, // [IN] Count of bytes in the Hash Blob. DWORD dwFileFlags, // [IN] Flags. mdFile *pmdf) PURE; // [OUT] Returned File token. STDMETHOD(DefineExportedType)( // S_OK or error. LPCWSTR szName, // [IN] Name of the Com Type. mdToken tkImplementation, // [IN] mdFile or mdAssemblyRef or mdExportedType mdTypeDef tkTypeDef, // [IN] TypeDef token within the file. DWORD dwExportedTypeFlags, // [IN] Flags. mdExportedType *pmdct) PURE; // [OUT] Returned ExportedType token. STDMETHOD(DefineManifestResource)( // S_OK or error. LPCWSTR szName, // [IN] Name of the resource. mdToken tkImplementation, // [IN] mdFile or mdAssemblyRef that provides the resource. DWORD dwOffset, // [IN] Offset to the beginning of the resource within the file. DWORD dwResourceFlags, // [IN] Flags. mdManifestResource *pmdmr) PURE; // [OUT] Returned ManifestResource token. STDMETHOD(SetAssemblyProps)( // S_OK or error. mdAssembly pma, // [IN] Assembly token. const void *pbPublicKey, // [IN] Public key of the assembly. ULONG cbPublicKey, // [IN] Count of bytes in the public key. ULONG ulHashAlgId, // [IN] Hash algorithm used to hash the files. LPCWSTR szName, // [IN] Name of the assembly. const ASSEMBLYMETADATA *pMetaData, // [IN] Assembly MetaData. DWORD dwAssemblyFlags) PURE; // [IN] Flags. STDMETHOD(SetAssemblyRefProps)( // S_OK or error. mdAssemblyRef ar, // [IN] AssemblyRefToken. const void *pbPublicKeyOrToken, // [IN] Public key or token of the assembly. ULONG cbPublicKeyOrToken, // [IN] Count of bytes in the public key or token. LPCWSTR szName, // [IN] Name of the assembly being referenced. const ASSEMBLYMETADATA *pMetaData, // [IN] Assembly MetaData. const void *pbHashValue, // [IN] Hash Blob. ULONG cbHashValue, // [IN] Count of bytes in the Hash Blob. DWORD dwAssemblyRefFlags) PURE; // [IN] Token for Execution Location. STDMETHOD(SetFileProps)( // S_OK or error. mdFile file, // [IN] File token. const void *pbHashValue, // [IN] Hash Blob. ULONG cbHashValue, // [IN] Count of bytes in the Hash Blob. DWORD dwFileFlags) PURE; // [IN] Flags. STDMETHOD(SetExportedTypeProps)( // S_OK or error. mdExportedType ct, // [IN] ExportedType token. mdToken tkImplementation, // [IN] mdFile or mdAssemblyRef or mdExportedType. mdTypeDef tkTypeDef, // [IN] TypeDef token within the file. DWORD dwExportedTypeFlags) PURE; // [IN] Flags. STDMETHOD(SetManifestResourceProps)( // S_OK or error. mdManifestResource mr, // [IN] ManifestResource token. mdToken tkImplementation, // [IN] mdFile or mdAssemblyRef that provides the resource. DWORD dwOffset, // [IN] Offset to the beginning of the resource within the file. DWORD dwResourceFlags) PURE; // [IN] Flags. }; // IMetaDataAssemblyEmit // {EE62470B-E94B-424e-9B7C-2F00C9249F93} EXTERN_GUID(IID_IMetaDataAssemblyImport, 0xee62470b, 0xe94b, 0x424e, 0x9b, 0x7c, 0x2f, 0x0, 0xc9, 0x24, 0x9f, 0x93); //--- #undef INTERFACE #define INTERFACE IMetaDataAssemblyImport DECLARE_INTERFACE_(IMetaDataAssemblyImport, IUnknown) { STDMETHOD(GetAssemblyProps)( // S_OK or error. mdAssembly mda, // [IN] The Assembly for which to get the properties. const void **ppbPublicKey, // [OUT] Pointer to the public key. ULONG *pcbPublicKey, // [OUT] Count of bytes in the public key. ULONG *pulHashAlgId, // [OUT] Hash Algorithm. _Out_writes_to_opt_(cchName, *pchName) LPWSTR szName, // [OUT] Buffer to fill with assembly's simply name. ULONG cchName, // [IN] Size of buffer in wide chars. ULONG *pchName, // [OUT] Actual # of wide chars in name. ASSEMBLYMETADATA *pMetaData, // [OUT] Assembly MetaData. DWORD *pdwAssemblyFlags) PURE; // [OUT] Flags. STDMETHOD(GetAssemblyRefProps)( // S_OK or error. mdAssemblyRef mdar, // [IN] The AssemblyRef for which to get the properties. const void **ppbPublicKeyOrToken, // [OUT] Pointer to the public key or token. ULONG *pcbPublicKeyOrToken, // [OUT] Count of bytes in the public key or token. _Out_writes_to_opt_(cchName, *pchName)LPWSTR szName, // [OUT] Buffer to fill with name. ULONG cchName, // [IN] Size of buffer in wide chars. ULONG *pchName, // [OUT] Actual # of wide chars in name. ASSEMBLYMETADATA *pMetaData, // [OUT] Assembly MetaData. const void **ppbHashValue, // [OUT] Hash blob. ULONG *pcbHashValue, // [OUT] Count of bytes in the hash blob. DWORD *pdwAssemblyRefFlags) PURE; // [OUT] Flags. STDMETHOD(GetFileProps)( // S_OK or error. mdFile mdf, // [IN] The File for which to get the properties. _Out_writes_to_opt_(cchName, *pchName) LPWSTR szName, // [OUT] Buffer to fill with name. ULONG cchName, // [IN] Size of buffer in wide chars. ULONG *pchName, // [OUT] Actual # of wide chars in name. const void **ppbHashValue, // [OUT] Pointer to the Hash Value Blob. ULONG *pcbHashValue, // [OUT] Count of bytes in the Hash Value Blob. DWORD *pdwFileFlags) PURE; // [OUT] Flags. STDMETHOD(GetExportedTypeProps)( // S_OK or error. mdExportedType mdct, // [IN] The ExportedType for which to get the properties. _Out_writes_to_opt_(cchName, *pchName) LPWSTR szName, // [OUT] Buffer to fill with name. ULONG cchName, // [IN] Size of buffer in wide chars. ULONG *pchName, // [OUT] Actual # of wide chars in name. mdToken *ptkImplementation, // [OUT] mdFile or mdAssemblyRef or mdExportedType. mdTypeDef *ptkTypeDef, // [OUT] TypeDef token within the file. DWORD *pdwExportedTypeFlags) PURE; // [OUT] Flags. STDMETHOD(GetManifestResourceProps)( // S_OK or error. mdManifestResource mdmr, // [IN] The ManifestResource for which to get the properties. _Out_writes_to_opt_(cchName, *pchName)LPWSTR szName, // [OUT] Buffer to fill with name. ULONG cchName, // [IN] Size of buffer in wide chars. ULONG *pchName, // [OUT] Actual # of wide chars in name. mdToken *ptkImplementation, // [OUT] mdFile or mdAssemblyRef that provides the ManifestResource. DWORD *pdwOffset, // [OUT] Offset to the beginning of the resource within the file. DWORD *pdwResourceFlags) PURE;// [OUT] Flags. STDMETHOD(EnumAssemblyRefs)( // S_OK or error HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdAssemblyRef rAssemblyRefs[], // [OUT] Put AssemblyRefs here. ULONG cMax, // [IN] Max AssemblyRefs to put. ULONG *pcTokens) PURE; // [OUT] Put # put here. STDMETHOD(EnumFiles)( // S_OK or error HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdFile rFiles[], // [OUT] Put Files here. ULONG cMax, // [IN] Max Files to put. ULONG *pcTokens) PURE; // [OUT] Put # put here. STDMETHOD(EnumExportedTypes)( // S_OK or error HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdExportedType rExportedTypes[], // [OUT] Put ExportedTypes here. ULONG cMax, // [IN] Max ExportedTypes to put. ULONG *pcTokens) PURE; // [OUT] Put # put here. STDMETHOD(EnumManifestResources)( // S_OK or error HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. mdManifestResource rManifestResources[], // [OUT] Put ManifestResources here. ULONG cMax, // [IN] Max Resources to put. ULONG *pcTokens) PURE; // [OUT] Put # put here. STDMETHOD(GetAssemblyFromScope)( // S_OK or error mdAssembly *ptkAssembly) PURE; // [OUT] Put token here. STDMETHOD(FindExportedTypeByName)( // S_OK or error LPCWSTR szName, // [IN] Name of the ExportedType. mdToken mdtExportedType, // [IN] ExportedType for the enclosing class. mdExportedType *ptkExportedType) PURE; // [OUT] Put the ExportedType token here. STDMETHOD(FindManifestResourceByName)( // S_OK or error LPCWSTR szName, // [IN] Name of the ManifestResource. mdManifestResource *ptkManifestResource) PURE; // [OUT] Put the ManifestResource token here. STDMETHOD_(void, CloseEnum)( HCORENUM hEnum) PURE; // Enum to be closed. STDMETHOD(FindAssembliesByName)( // S_OK or error LPCWSTR szAppBase, // [IN] optional - can be NULL LPCWSTR szPrivateBin, // [IN] optional - can be NULL LPCWSTR szAssemblyName, // [IN] required - this is the assembly you are requesting IUnknown *ppIUnk[], // [OUT] put IMetaDataAssemblyImport pointers here ULONG cMax, // [IN] The max number to put ULONG *pcAssemblies) PURE; // [OUT] The number of assemblies returned. }; // IMetaDataAssemblyImport //***************************************************************************** // End Assembly Declarations //***************************************************************************** //***************************************************************************** // MetaData Validator Declarations //***************************************************************************** // Specifies the type of the module, PE file vs. .obj file. typedef enum { ValidatorModuleTypeInvalid = 0x0, ValidatorModuleTypeMin = 0x00000001, ValidatorModuleTypePE = 0x00000001, ValidatorModuleTypeObj = 0x00000002, ValidatorModuleTypeEnc = 0x00000003, ValidatorModuleTypeIncr = 0x00000004, ValidatorModuleTypeMax = 0x00000004, } CorValidatorModuleType; // {4709C9C6-81FF-11D3-9FC7-00C04F79A0A3} EXTERN_GUID(IID_IMetaDataValidate, 0x4709c9c6, 0x81ff, 0x11d3, 0x9f, 0xc7, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3); //--- #undef INTERFACE #define INTERFACE IMetaDataValidate DECLARE_INTERFACE_(IMetaDataValidate, IUnknown) { STDMETHOD(ValidatorInit)( // S_OK or error. DWORD dwModuleType, // [IN] Specifies the type of the module. IUnknown *pUnk) PURE; // [IN] Validation error handler. STDMETHOD(ValidateMetaData)( // S_OK or error. ) PURE; }; // IMetaDataValidate //***************************************************************************** // End MetaData Validator Declarations //***************************************************************************** //***************************************************************************** // IMetaDataDispenserEx declarations. //***************************************************************************** // {31BCFCE2-DAFB-11D2-9F81-00C04F79A0A3} EXTERN_GUID(IID_IMetaDataDispenserEx, 0x31bcfce2, 0xdafb, 0x11d2, 0x9f, 0x81, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3); #undef INTERFACE #define INTERFACE IMetaDataDispenserEx DECLARE_INTERFACE_(IMetaDataDispenserEx, IMetaDataDispenser) { STDMETHOD(SetOption)( // Return code. REFGUID optionid, // [in] GUID for the option to be set. const VARIANT *value) PURE; // [in] Value to which the option is to be set. STDMETHOD(GetOption)( // Return code. REFGUID optionid, // [in] GUID for the option to be set. VARIANT *pvalue) PURE; // [out] Value to which the option is currently set. STDMETHOD(OpenScopeOnITypeInfo)( // Return code. ITypeInfo *pITI, // [in] ITypeInfo to open. DWORD dwOpenFlags, // [in] Open mode flags. REFIID riid, // [in] The interface desired. IUnknown **ppIUnk) PURE; // [out] Return interface on success. STDMETHOD(GetCORSystemDirectory)( // Return code. _Out_writes_to_opt_(cchBuffer, *pchBuffer) LPWSTR szBuffer, // [out] Buffer for the directory name DWORD cchBuffer, // [in] Size of the buffer DWORD* pchBuffer) PURE; // [OUT] Number of characters returned STDMETHOD(FindAssembly)( // S_OK or error LPCWSTR szAppBase, // [IN] optional - can be NULL LPCWSTR szPrivateBin, // [IN] optional - can be NULL LPCWSTR szGlobalBin, // [IN] optional - can be NULL LPCWSTR szAssemblyName, // [IN] required - this is the assembly you are requesting LPCWSTR szName, // [OUT] buffer - to hold name ULONG cchName, // [IN] the name buffer's size ULONG *pcName) PURE; // [OUT] the number of characters returend in the buffer STDMETHOD(FindAssemblyModule)( // S_OK or error LPCWSTR szAppBase, // [IN] optional - can be NULL LPCWSTR szPrivateBin, // [IN] optional - can be NULL LPCWSTR szGlobalBin, // [IN] optional - can be NULL LPCWSTR szAssemblyName, // [IN] required - this is the assembly you are requesting LPCWSTR szModuleName, // [IN] required - the name of the module _Out_writes_to_opt_(cchName, *pcName) LPWSTR szName, // [OUT] buffer - to hold name ULONG cchName, // [IN] the name buffer's size ULONG *pcName) PURE; // [OUT] the number of characters returend in the buffer }; //********************************************************************** //********************************************************************** //--- IMetaDataTables //------------------------------------- // This API isn't big endian friendly since it indexes directly into the memory that // is stored in little endian format. // {D8F579AB-402D-4b8e-82D9-5D63B1065C68} EXTERN_GUID(IID_IMetaDataTables, 0xd8f579ab, 0x402d, 0x4b8e, 0x82, 0xd9, 0x5d, 0x63, 0xb1, 0x6, 0x5c, 0x68); DECLARE_INTERFACE_(IMetaDataTables, IUnknown) { STDMETHOD (GetStringHeapSize) ( ULONG *pcbStrings) PURE; // [OUT] Size of the string heap. STDMETHOD (GetBlobHeapSize) ( ULONG *pcbBlobs) PURE; // [OUT] Size of the Blob heap. STDMETHOD (GetGuidHeapSize) ( ULONG *pcbGuids) PURE; // [OUT] Size of the Guid heap. STDMETHOD (GetUserStringHeapSize) ( ULONG *pcbBlobs) PURE; // [OUT] Size of the User String heap. STDMETHOD (GetNumTables) ( ULONG *pcTables) PURE; // [OUT] Count of tables. STDMETHOD (GetTableIndex) ( ULONG token, // [IN] Token for which to get table index. ULONG *pixTbl) PURE; // [OUT] Put table index here. STDMETHOD (GetTableInfo) ( ULONG ixTbl, // [IN] Which table. ULONG *pcbRow, // [OUT] Size of a row, bytes. ULONG *pcRows, // [OUT] Number of rows. ULONG *pcCols, // [OUT] Number of columns in each row. ULONG *piKey, // [OUT] Key column, or -1 if none. const char **ppName) PURE; // [OUT] Name of the table. STDMETHOD (GetColumnInfo) ( ULONG ixTbl, // [IN] Which Table ULONG ixCol, // [IN] Which Column in the table ULONG *poCol, // [OUT] Offset of the column in the row. ULONG *pcbCol, // [OUT] Size of a column, bytes. ULONG *pType, // [OUT] Type of the column. const char **ppName) PURE; // [OUT] Name of the Column. STDMETHOD (GetCodedTokenInfo) ( ULONG ixCdTkn, // [IN] Which kind of coded token. ULONG *pcTokens, // [OUT] Count of tokens. ULONG **ppTokens, // [OUT] List of tokens. const char **ppName) PURE; // [OUT] Name of the CodedToken. STDMETHOD (GetRow) ( ULONG ixTbl, // [IN] Which table. ULONG rid, // [IN] Which row. void **ppRow) PURE; // [OUT] Put pointer to row here. STDMETHOD (GetColumn) ( ULONG ixTbl, // [IN] Which table. ULONG ixCol, // [IN] Which column. ULONG rid, // [IN] Which row. ULONG *pVal) PURE; // [OUT] Put the column contents here. STDMETHOD (GetString) ( ULONG ixString, // [IN] Value from a string column. const char **ppString) PURE; // [OUT] Put a pointer to the string here. STDMETHOD (GetBlob) ( ULONG ixBlob, // [IN] Value from a blob column. ULONG *pcbData, // [OUT] Put size of the blob here. const void **ppData) PURE; // [OUT] Put a pointer to the blob here. STDMETHOD (GetGuid) ( ULONG ixGuid, // [IN] Value from a guid column. const GUID **ppGUID) PURE; // [OUT] Put a pointer to the GUID here. STDMETHOD (GetUserString) ( ULONG ixUserString, // [IN] Value from a UserString column. ULONG *pcbData, // [OUT] Put size of the UserString here. const void **ppData) PURE; // [OUT] Put a pointer to the UserString here. STDMETHOD (GetNextString) ( ULONG ixString, // [IN] Value from a string column. ULONG *pNext) PURE; // [OUT] Put the index of the next string here. STDMETHOD (GetNextBlob) ( ULONG ixBlob, // [IN] Value from a blob column. ULONG *pNext) PURE; // [OUT] Put the index of the netxt blob here. STDMETHOD (GetNextGuid) ( ULONG ixGuid, // [IN] Value from a guid column. ULONG *pNext) PURE; // [OUT] Put the index of the next guid here. STDMETHOD (GetNextUserString) ( ULONG ixUserString, // [IN] Value from a UserString column. ULONG *pNext) PURE; // [OUT] Put the index of the next user string here. // Interface is sealed. }; // This API isn't big endian friendly since it indexes directly into the memory that // is stored in little endian format. // {BADB5F70-58DA-43a9-A1C6-D74819F19B15} EXTERN_GUID(IID_IMetaDataTables2, 0xbadb5f70, 0x58da, 0x43a9, 0xa1, 0xc6, 0xd7, 0x48, 0x19, 0xf1, 0x9b, 0x15); DECLARE_INTERFACE_(IMetaDataTables2, IMetaDataTables) { STDMETHOD (GetMetaDataStorage) ( //@todo: name? const void **ppvMd, // [OUT] put pointer to MD section here (aka, 'BSJB'). ULONG *pcbMd) PURE; // [OUT] put size of the stream here. STDMETHOD (GetMetaDataStreamInfo) ( // Get info about the MD stream. ULONG ix, // [IN] Stream ordinal desired. const char **ppchName, // [OUT] put pointer to stream name here. const void **ppv, // [OUT] put pointer to MD stream here. ULONG *pcb) PURE; // [OUT] put size of the stream here. }; // IMetaDataTables2 #ifdef _DEFINE_META_DATA_META_CONSTANTS #ifndef _META_DATA_META_CONSTANTS_DEFINED #define _META_DATA_META_CONSTANTS_DEFINED const unsigned int iRidMax = 63; const unsigned int iCodedToken = 64; // base of coded tokens. const unsigned int iCodedTokenMax = 95; const unsigned int iSHORT = 96; // fixed types. const unsigned int iUSHORT = 97; const unsigned int iLONG = 98; const unsigned int iULONG = 99; const unsigned int iBYTE = 100; const unsigned int iSTRING = 101; // pool types. const unsigned int iGUID = 102; const unsigned int iBLOB = 103; inline int IsRidType(ULONG ix) { return ix <= iRidMax; } inline int IsCodedTokenType(ULONG ix) { return (ix >= iCodedToken) && (ix <= iCodedTokenMax); } inline int IsRidOrToken(ULONG ix) { return ix <= iCodedTokenMax; } inline int IsHeapType(ULONG ix) { return ix >= iSTRING; } inline int IsFixedType(ULONG ix) { return (ix < iSTRING) && (ix > iCodedTokenMax); } #endif #endif //********************************************************************** // End of IMetaDataTables. //********************************************************************** //------------------------------------- //--- IMetaDataInfo //------------------------------------- // {7998EA64-7F95-48B8-86FC-17CAF48BF5CB} EXTERN_GUID(IID_IMetaDataInfo, 0x7998EA64, 0x7F95, 0x48B8, 0x86, 0xFC, 0x17, 0xCA, 0xF4, 0x8B, 0xF5, 0xCB); //--- #undef INTERFACE #define INTERFACE IMetaDataInfo DECLARE_INTERFACE_(IMetaDataInfo, IUnknown) { // Return Values: // S_OK - All parameters are filled. // COR_E_NOTSUPPORTED - The API is not supported for this particular scope (e.g. .obj files, scope // opened without whole file via code:IMetaDataDispenser::OpenScopeOnMemory, etc.). // E_INVALIDARG - If NULL is passed as parameter. STDMETHOD(GetFileMapping)( const void ** ppvData, // [out] Pointer to the start of the mapped file. ULONGLONG * pcbData, // [out] Size of the mapped memory region. DWORD * pdwMappingType) PURE; // [out] Type of file mapping (code:CorFileMapping). }; // class IMetaDataInfo //********************************************************************** // // Predefined CustomAttribute and structures for these custom value // //********************************************************************** // // Native Link method custom value definitions. This is for N-direct support. // #define COR_NATIVE_LINK_CUSTOM_VALUE L"COMPLUS_NativeLink" #define COR_NATIVE_LINK_CUSTOM_VALUE_ANSI "COMPLUS_NativeLink" // count of chars for COR_NATIVE_LINK_CUSTOM_VALUE(_ANSI) #define COR_NATIVE_LINK_CUSTOM_VALUE_CC 18 #include typedef struct { BYTE m_linkType; // see CorNativeLinkType below BYTE m_flags; // see CorNativeLinkFlags below mdMemberRef m_entryPoint; // member ref token giving entry point, format is lib:entrypoint } COR_NATIVE_LINK; #include typedef enum { nltNone = 1, // none of the keywords are specified nltAnsi = 2, // ansi keyword specified nltUnicode = 3, // unicode keyword specified nltAuto = 4, // auto keyword specified nltMaxValue = 7, // used so we can assert how many bits are required for this enum } CorNativeLinkType; typedef enum { nlfNone = 0x00, // no flags nlfLastError = 0x01, // setLastError keyword specified nlfNoMangle = 0x02, // nomangle keyword specified nlfMaxValue = 0x03, // used so we can assert how many bits are required for this enum } CorNativeLinkFlags; // // Base class for security custom attributes. // #define COR_BASE_SECURITY_ATTRIBUTE_CLASS L"System.Security.Permissions.SecurityAttribute" #define COR_BASE_SECURITY_ATTRIBUTE_CLASS_ANSI "System.Security.Permissions.SecurityAttribute" // // Name of custom attribute used to indicate that per-call security checks should // be disabled for P/Invoke calls. // #define COR_SUPPRESS_UNMANAGED_CODE_CHECK_ATTRIBUTE L"System.Security.SuppressUnmanagedCodeSecurityAttribute" #define COR_SUPPRESS_UNMANAGED_CODE_CHECK_ATTRIBUTE_ANSI "System.Security.SuppressUnmanagedCodeSecurityAttribute" // // Name of custom attribute tagged on module to indicate it contains // unverifiable code. // #define COR_UNVER_CODE_ATTRIBUTE L"System.Security.UnverifiableCodeAttribute" #define COR_UNVER_CODE_ATTRIBUTE_ANSI "System.Security.UnverifiableCodeAttribute" // // Name of custom attribute indicating that a method requires a security object // slot on the caller's stack. // #define COR_REQUIRES_SECOBJ_ATTRIBUTE W("System.Security.DynamicSecurityMethodAttribute") #define COR_REQUIRES_SECOBJ_ATTRIBUTE_ANSI "System.Security.DynamicSecurityMethodAttribute" #define COR_COMPILERSERVICE_DISCARDABLEATTRIBUTE L"System.Runtime.CompilerServices.DiscardableAttribute" #define COR_COMPILERSERVICE_DISCARDABLEATTRIBUTE_ASNI "System.Runtime.CompilerServices.DiscardableAttribute" #ifdef __cplusplus } //***************************************************************************** //***************************************************************************** // // C O M + s i g n a t u r e s u p p o r t // //***************************************************************************** //***************************************************************************** #ifndef FORCEINLINE #if _MSC_VER < 1200 #define FORCEINLINE inline #else #define FORCEINLINE __forceinline #endif #endif // We need a version that is FORCEINLINE on retail and NOINLINE on debug #ifndef DEBUG_NOINLINE #if defined(_DEBUG) #define DEBUG_NOINLINE NOINLINE #else #define DEBUG_NOINLINE #endif #endif #ifndef NOINLINE #ifdef _MSC_VER #define NOINLINE __declspec(noinline) #elif defined __GNUC__ #define NOINLINE __attribute__ ((noinline)) #else #define NOINLINE #endif #endif // !NOINLINE // return true if it is a primitive type, i.e. only need to store CorElementType FORCEINLINE int CorIsPrimitiveType(CorElementType elementtype) { return (elementtype < ELEMENT_TYPE_PTR || elementtype == ELEMENT_TYPE_I || elementtype == ELEMENT_TYPE_U); } // Return true if element type is a modifier, i.e. ELEMENT_TYPE_MODIFIER bits are // turned on. For now, it is checking for ELEMENT_TYPE_PTR and ELEMENT_TYPE_BYREF // as well. This will be removed when we turn on ELEMENT_TYPE_MODIFIER bits for // these two enum members. // FORCEINLINE int CorIsModifierElementType(CorElementType elementtype) { if (elementtype == ELEMENT_TYPE_PTR || elementtype == ELEMENT_TYPE_BYREF) return 1; return (elementtype & ELEMENT_TYPE_MODIFIER); } // Given a compress byte (*pData), return the size of the uncompressed data. inline ULONG CorSigUncompressedDataSize( PCCOR_SIGNATURE pData) { if ((*pData & 0x80) == 0) return 1; else if ((*pData & 0xC0) == 0x80) return 2; else return 4; } ///////////////////////////////////////////////////////////////////////////////////////////// // // Given a compressed integer(*pData), expand the compressed int to *pDataOut. // Return value is the number of bytes that the integer occupies in the compressed format // It is caller's responsibility to ensure pDataOut has at least 4 bytes to be written to. // // This function returns -1 if pass in with an incorrectly compressed data, such as // (*pBytes & 0xE0) == 0XE0. ///////////////////////////////////////////////////////////////////////////////////////////// inline ULONG CorSigUncompressBigData( PCCOR_SIGNATURE & pData) // [IN,OUT] compressed data { ULONG res; // 1 byte data is handled in CorSigUncompressData // _ASSERTE(*pData & 0x80); // Medium. if ((*pData & 0xC0) == 0x80) // 10?? ???? { res = (ULONG)((*pData++ & 0x3f) << 8); res |= *pData++; } else // 110? ???? { res = (*pData++ & 0x1f) << 24; res |= *pData++ << 16; res |= *pData++ << 8; res |= *pData++; } return res; } FORCEINLINE ULONG CorSigUncompressData( PCCOR_SIGNATURE & pData) // [IN,OUT] compressed data { // Handle smallest data inline. if ((*pData & 0x80) == 0x00) // 0??? ???? return *pData++; return CorSigUncompressBigData(pData); } #ifdef HOST_WINDOWS inline HRESULT CorSigUncompressData(// return S_OK or E_BADIMAGEFORMAT if the signature is bad PCCOR_SIGNATURE pData, // [IN] compressed data DWORD len, // [IN] length of the signature ULONG * pDataOut, // [OUT] the expanded *pData ULONG * pDataLen) // [OUT] length of the expanded *pData { HRESULT hr = S_OK; BYTE const *pBytes = reinterpret_cast(pData); // Smallest. if ((*pBytes & 0x80) == 0x00) // 0??? ???? { if (len < 1) { *pDataOut = 0; *pDataLen = 0; hr = META_E_BAD_SIGNATURE; } else { *pDataOut = *pBytes; *pDataLen = 1; } } // Medium. else if ((*pBytes & 0xC0) == 0x80) // 10?? ???? { if (len < 2) { *pDataOut = 0; *pDataLen = 0; hr = META_E_BAD_SIGNATURE; } else { *pDataOut = (ULONG)(((*pBytes & 0x3f) << 8 | *(pBytes+1))); *pDataLen = 2; } } else if ((*pBytes & 0xE0) == 0xC0) // 110? ???? { if (len < 4) { *pDataOut = 0; *pDataLen = 0; hr = META_E_BAD_SIGNATURE; } else { *pDataOut = (ULONG)(((*pBytes & 0x1f) << 24 | *(pBytes+1) << 16 | *(pBytes+2) << 8 | *(pBytes+3))); *pDataLen = 4; } } else // We don't recognize this encoding { *pDataOut = 0; *pDataLen = 0; hr = META_E_BAD_SIGNATURE; } return hr; } #endif // HOST_WINDOWS inline HRESULT CorSigUncompressData(// return S_OK or E_BADIMAGEFORMAT if the signature is bad PCCOR_SIGNATURE pData, // [IN] compressed data DWORD len, // [IN] length of the signature uint32_t * pDataOut, // [OUT] the expanded *pData uint32_t * pDataLen) // [OUT] length of the expanded *pData { HRESULT hr = S_OK; BYTE const *pBytes = reinterpret_cast(pData); // Smallest. if ((*pBytes & 0x80) == 0x00) // 0??? ???? { if (len < 1) { *pDataOut = 0; *pDataLen = 0; hr = META_E_BAD_SIGNATURE; } else { *pDataOut = *pBytes; *pDataLen = 1; } } // Medium. else if ((*pBytes & 0xC0) == 0x80) // 10?? ???? { if (len < 2) { *pDataOut = 0; *pDataLen = 0; hr = META_E_BAD_SIGNATURE; } else { *pDataOut = (uint32_t)(((*pBytes & 0x3f) << 8 | *(pBytes+1))); *pDataLen = 2; } } else if ((*pBytes & 0xE0) == 0xC0) // 110? ???? { if (len < 4) { *pDataOut = 0; *pDataLen = 0; hr = META_E_BAD_SIGNATURE; } else { *pDataOut = (uint32_t)(((*pBytes & 0x1f) << 24 | *(pBytes+1) << 16 | *(pBytes+2) << 8 | *(pBytes+3))); *pDataLen = 4; } } else // We don't recognize this encoding { *pDataOut = 0; *pDataLen = 0; hr = META_E_BAD_SIGNATURE; } return hr; } inline ULONG CorSigUncompressData( // return number of bytes of that compressed data occupied in pData PCCOR_SIGNATURE pData, // [IN] compressed data ULONG *pDataOut) // [OUT] the expanded *pData { ULONG dwSizeOfData = 0; // We don't know how big the signature is, so we'll just say that it's big enough if (FAILED(CorSigUncompressData(pData, 0xff, pDataOut, &dwSizeOfData))) { *pDataOut = 0; return (ULONG)-1; } return dwSizeOfData; } FORCEINLINE mdToken CorSigDecodeTokenType(int encoded) { static const mdToken s_tableTokenTypes[] = {mdtTypeDef, mdtTypeRef, mdtTypeSpec, mdtBaseType}; return s_tableTokenTypes[encoded]; } // uncompress a token inline mdToken CorSigUncompressToken( // return the token. PCCOR_SIGNATURE &pData) // [IN,OUT] compressed data { mdToken tk; mdToken tkType; tk = CorSigUncompressData(pData); tkType = CorSigDecodeTokenType(tk & 0x3); tk = TokenFromRid(tk >> 2, tkType); return tk; } inline ULONG CorSigUncompressToken( // return number of bytes of that compressed data occupied in pData PCCOR_SIGNATURE pData, // [IN] compressed data mdToken * pToken) // [OUT] the expanded *pData { ULONG cb; mdToken tk; mdToken tkType; cb = CorSigUncompressData(pData, (ULONG *)&tk); tkType = CorSigDecodeTokenType(tk & 0x3); tk = TokenFromRid(tk >> 2, tkType); *pToken = tk; return cb; } inline HRESULT CorSigUncompressToken( PCCOR_SIGNATURE pData, // [IN] compressed data uint32_t dwLen, // [IN] Remaining length of sigature mdToken * pToken, // [OUT] the expanded *pData uint32_t * dwTokenLength) // [OUT] The length of the token in the sigature { mdToken tk; mdToken tkType; HRESULT hr = CorSigUncompressData(pData, dwLen, (uint32_t *)&tk, dwTokenLength); if (SUCCEEDED(hr)) { tkType = CorSigDecodeTokenType(tk & 0x3); tk = TokenFromRid(tk >> 2, tkType); *pToken = tk; } else { *pToken = mdTokenNil; } return hr; } FORCEINLINE ULONG CorSigUncompressCallingConv( PCCOR_SIGNATURE & pData) // [IN,OUT] Compressed data { return *pData++; } FORCEINLINE HRESULT CorSigUncompressCallingConv( PCCOR_SIGNATURE pData, // [IN] Signature DWORD dwLen, // [IN] Length of signature uint32_t * data) // [OUT] Compressed data { if (dwLen > 0) { *data = *pData; return S_OK; } else { *data = 0; return META_E_BAD_SIGNATURE; } } enum { SIGN_MASK_ONEBYTE = 0xffffffc0, // Mask the same size as the missing bits. SIGN_MASK_TWOBYTE = 0xffffe000, // Mask the same size as the missing bits. SIGN_MASK_FOURBYTE = 0xf0000000, // Mask the same size as the missing bits. }; // uncompress a signed integer inline ULONG CorSigUncompressSignedInt( // return number of bytes of that compressed data occupied in pData PCCOR_SIGNATURE pData, // [IN] compressed data int * pInt) // [OUT] the expanded *pInt { ULONG cb; ULONG ulSigned; ULONG iData; cb = CorSigUncompressData(pData, &iData); if (cb == (ULONG) -1) return cb; ulSigned = iData & 0x1; iData = iData >> 1; if (ulSigned) { if (cb == 1) { iData |= SIGN_MASK_ONEBYTE; } else if (cb == 2) { iData |= SIGN_MASK_TWOBYTE; } else { iData |= SIGN_MASK_FOURBYTE; } } *pInt = (int)iData; return cb; } // uncompress encoded element type FORCEINLINE CorElementType CorSigUncompressElementType( // Element type PCCOR_SIGNATURE & pData) // [IN,OUT] Compressed data { return (CorElementType)*pData++; } inline ULONG CorSigUncompressElementType( // Return number of bytes of that compressed data occupied in pData PCCOR_SIGNATURE pData, // [IN] Compressed data CorElementType * pElementType) // [OUT] The expanded *pData { *pElementType = (CorElementType)(*pData & 0x7f); return 1; } ///////////////////////////////////////////////////////////////////////////////////////////// // // Given an uncompressed unsigned integer (iLen), Store it to pDataOut in a compressed format. // Return value is the number of bytes that the integer occupies in the compressed format. // It is caller's responsibilityt to ensure *pDataOut has at least 4 bytes to write to. // // Note that this function returns -1 if iLen is too big to be compressed. We currently can // only represent to 0x1FFFFFFF. // ///////////////////////////////////////////////////////////////////////////////////////////// inline ULONG CorSigCompressData( // return number of bytes that compressed form of iLen will take ULONG iLen, // [IN] given uncompressed data void * pDataOut) // [OUT] buffer where iLen will be compressed and stored. { BYTE *pBytes = reinterpret_cast(pDataOut); if (iLen <= 0x7F) { *pBytes = BYTE(iLen); return 1; } if (iLen <= 0x3FFF) { *pBytes = BYTE((iLen >> 8) | 0x80); *(pBytes+1) = BYTE(iLen & 0xff); return 2; } if (iLen <= 0x1FFFFFFF) { *pBytes = BYTE((iLen >> 24) | 0xC0); *(pBytes+1) = BYTE((iLen >> 16) & 0xff); *(pBytes+2) = BYTE((iLen >> 8) & 0xff); *(pBytes+3) = BYTE(iLen & 0xff); return 4; } return (ULONG) -1; } // compress a token // The least significant bit of the first compress byte will indicate the token type. // inline ULONG CorSigCompressToken( // return number of bytes that compressed form of the token will take mdToken tk, // [IN] given token void * pDataOut) // [OUT] buffer where the token will be compressed and stored. { RID rid = RidFromToken(tk); ULONG32 ulTyp = TypeFromToken(tk); if (rid > 0x3FFFFFF) // token is too big to be compressed return (ULONG) -1; rid = (rid << 2); // TypeDef is encoded with low bits 00 // TypeRef is encoded with low bits 01 // TypeSpec is encoded with low bits 10 // BaseType is encoded with low bit 11 // if (ulTyp == CorSigDecodeTokenType(1)) { // make the last two bits 01 rid |= 0x1; } else if (ulTyp == CorSigDecodeTokenType(2)) { // make last two bits 0 rid |= 0x2; } else if (ulTyp == CorSigDecodeTokenType(3)) { rid |= 0x3; } return CorSigCompressData((ULONG)rid, pDataOut); } // compress a signed integer // The least significant bit of the first compress byte will be the signed bit. // inline ULONG CorSigCompressSignedInt( // return number of bytes that compressed form of iData will take int iData, // [IN] given integer void * pDataOut) // [OUT] buffer where iLen will be compressed and stored. { ULONG isSigned = 0; BYTE *pBytes = reinterpret_cast(pDataOut); if (iData < 0) isSigned = 0x1; // Note that we cannot use code:CorSigCompressData to pack the iData value, because of negative values // like: 0xffffe000 (-8192) which has to be encoded as 1 in 2 bytes, i.e. 0x81 0x00 // However CorSigCompressedData would store value 1 as 1 byte: 0x01 if ((iData & SIGN_MASK_ONEBYTE) == 0 || (iData & SIGN_MASK_ONEBYTE) == SIGN_MASK_ONEBYTE) { iData = (int)((iData & ~SIGN_MASK_ONEBYTE) << 1 | isSigned); //_ASSERTE(iData <= 0x7f); *pBytes = BYTE(iData); return 1; } else if ((iData & SIGN_MASK_TWOBYTE) == 0 || (iData & SIGN_MASK_TWOBYTE) == SIGN_MASK_TWOBYTE) { iData = (int)((iData & ~SIGN_MASK_TWOBYTE) << 1 | isSigned); //_ASSERTE(iData <= 0x3fff); *pBytes = BYTE((iData >> 8) | 0x80); *(pBytes + 1) = BYTE(iData & 0xff); return 2; } else if ((iData & SIGN_MASK_FOURBYTE) == 0 || (iData & SIGN_MASK_FOURBYTE) == SIGN_MASK_FOURBYTE) { iData = (int)((iData & ~SIGN_MASK_FOURBYTE) << 1 | isSigned); //_ASSERTE(iData <= 0x1FFFFFFF); *pBytes = BYTE((iData >> 24) | 0xC0); *(pBytes + 1) = BYTE((iData >> 16) & 0xff); *(pBytes + 2) = BYTE((iData >> 8) & 0xff); *(pBytes + 3) = BYTE(iData & 0xff); return 4; } // Out of compressable range return (ULONG)-1; } // CorSigCompressSignedInt // uncompress encoded element type inline ULONG CorSigCompressElementType( // return number of bytes of that compressed data occupied in pData CorElementType et, // [OUT] the expanded *pData void * pData) // [IN] compressed data { BYTE *pBytes = (BYTE *)(pData); *pBytes = BYTE(et); return 1; } // Compress a pointer (used for internal element types only, never for persisted // signatures). inline ULONG CorSigCompressPointer( // return number of bytes of that compressed data occupied void * pvPointer, // [IN] given uncompressed data void * pData) // [OUT] buffer where iLen will be compressed and stored. { *((void * UNALIGNED *)pData) = pvPointer; return sizeof(void *); } // Uncompress a pointer (see above for comments). inline ULONG CorSigUncompressPointer( // return number of bytes of that compressed data occupied PCCOR_SIGNATURE pData, // [IN] compressed data void ** ppvPointer) // [OUT] the expanded *pData { *ppvPointer = *(void * const UNALIGNED *)pData; return sizeof(void *); } #endif // __cplusplus #endif // _COR_H_ ProcDump-for-Linux-2.2/profiler/inc/corerror.h000066400000000000000000000514161447614355600214160ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. #ifndef __COMMON_LANGUAGE_RUNTIME_HRESULTS__ #define __COMMON_LANGUAGE_RUNTIME_HRESULTS__ #include // //This file is AutoGenerated -- Do Not Edit by hand!!! // //Add new HRESULTS along with their corresponding error messages to //corerror.xml // #ifndef FACILITY_URT #define FACILITY_URT 0x13 #endif #ifndef EMAKEHR #define SMAKEHR(val) MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_URT, val) #define EMAKEHR(val) MAKE_HRESULT(SEVERITY_ERROR, FACILITY_URT, val) #endif #define CLDB_S_TRUNCATION SMAKEHR(0x1106) #define META_S_DUPLICATE SMAKEHR(0x1197) #define CORDBG_S_BAD_START_SEQUENCE_POINT SMAKEHR(0x130b) #define CORDBG_S_BAD_END_SEQUENCE_POINT SMAKEHR(0x130c) #define CORDBG_S_FUNC_EVAL_HAS_NO_RESULT SMAKEHR(0x1316) #define CORDBG_S_VALUE_POINTS_TO_VOID SMAKEHR(0x1317) #define CORDBG_S_FUNC_EVAL_ABORTED SMAKEHR(0x1319) #define CORDBG_S_AT_END_OF_STACK SMAKEHR(0x1324) #define CORDBG_S_NOT_ALL_BITS_SET SMAKEHR(0x1c13) #define CEE_E_CVTRES_NOT_FOUND EMAKEHR(0x1001) #define COR_E_TYPEUNLOADED EMAKEHR(0x1013) #define COR_E_APPDOMAINUNLOADED EMAKEHR(0x1014) #define COR_E_CANNOTUNLOADAPPDOMAIN EMAKEHR(0x1015) #define MSEE_E_ASSEMBLYLOADINPROGRESS EMAKEHR(0x1016) #define COR_E_ASSEMBLYEXPECTED EMAKEHR(0x1018) #define COR_E_FIXUPSINEXE EMAKEHR(0x1019) #define COR_E_NEWER_RUNTIME EMAKEHR(0x101b) #define COR_E_MULTIMODULEASSEMBLIESDIALLOWED EMAKEHR(0x101e) #define HOST_E_DEADLOCK EMAKEHR(0x1020) #define HOST_E_INVALIDOPERATION EMAKEHR(0x1022) #define HOST_E_CLRNOTAVAILABLE EMAKEHR(0x1023) #define HOST_E_EXITPROCESS_THREADABORT EMAKEHR(0x1027) #define HOST_E_EXITPROCESS_ADUNLOAD EMAKEHR(0x1028) #define HOST_E_EXITPROCESS_TIMEOUT EMAKEHR(0x1029) #define HOST_E_EXITPROCESS_OUTOFMEMORY EMAKEHR(0x102a) #define COR_E_MODULE_HASH_CHECK_FAILED EMAKEHR(0x1039) #define FUSION_E_REF_DEF_MISMATCH EMAKEHR(0x1040) #define FUSION_E_INVALID_PRIVATE_ASM_LOCATION EMAKEHR(0x1041) #define FUSION_E_ASM_MODULE_MISSING EMAKEHR(0x1042) #define FUSION_E_PRIVATE_ASM_DISALLOWED EMAKEHR(0x1044) #define FUSION_E_SIGNATURE_CHECK_FAILED EMAKEHR(0x1045) #define FUSION_E_INVALID_NAME EMAKEHR(0x1047) #define FUSION_E_CODE_DOWNLOAD_DISABLED EMAKEHR(0x1048) #define FUSION_E_HOST_GAC_ASM_MISMATCH EMAKEHR(0x1050) #define FUSION_E_LOADFROM_BLOCKED EMAKEHR(0x1051) #define FUSION_E_CACHEFILE_FAILED EMAKEHR(0x1052) #define FUSION_E_APP_DOMAIN_LOCKED EMAKEHR(0x1053) #define FUSION_E_CONFIGURATION_ERROR EMAKEHR(0x1054) #define FUSION_E_MANIFEST_PARSE_ERROR EMAKEHR(0x1055) #define COR_E_LOADING_REFERENCE_ASSEMBLY EMAKEHR(0x1058) #define COR_E_NI_AND_RUNTIME_VERSION_MISMATCH EMAKEHR(0x1059) #define COR_E_LOADING_WINMD_REFERENCE_ASSEMBLY EMAKEHR(0x1069) #define COR_E_AMBIGUOUSIMPLEMENTATION EMAKEHR(0x106a) #define CLDB_E_FILE_BADREAD EMAKEHR(0x1100) #define CLDB_E_FILE_BADWRITE EMAKEHR(0x1101) #define CLDB_E_FILE_OLDVER EMAKEHR(0x1107) #define CLDB_E_SMDUPLICATE EMAKEHR(0x110a) #define CLDB_E_NO_DATA EMAKEHR(0x110b) #define CLDB_E_INCOMPATIBLE EMAKEHR(0x110d) #define CLDB_E_FILE_CORRUPT EMAKEHR(0x110e) #define CLDB_E_BADUPDATEMODE EMAKEHR(0x1110) #define CLDB_E_INDEX_NOTFOUND EMAKEHR(0x1124) #define CLDB_E_RECORD_NOTFOUND EMAKEHR(0x1130) #define CLDB_E_RECORD_OUTOFORDER EMAKEHR(0x1135) #define CLDB_E_TOO_BIG EMAKEHR(0x1154) #define META_E_INVALID_TOKEN_TYPE EMAKEHR(0x115f) #define TLBX_E_LIBNOTREGISTERED EMAKEHR(0x1165) #define META_E_BADMETADATA EMAKEHR(0x118a) #define META_E_BAD_SIGNATURE EMAKEHR(0x1192) #define META_E_BAD_INPUT_PARAMETER EMAKEHR(0x1193) #define META_E_CANNOTRESOLVETYPEREF EMAKEHR(0x1196) #define META_E_STRINGSPACE_FULL EMAKEHR(0x1198) #define META_E_HAS_UNMARKALL EMAKEHR(0x119a) #define META_E_MUST_CALL_UNMARKALL EMAKEHR(0x119b) #define META_E_CA_INVALID_TARGET EMAKEHR(0x11c0) #define META_E_CA_INVALID_VALUE EMAKEHR(0x11c1) #define META_E_CA_INVALID_BLOB EMAKEHR(0x11c2) #define META_E_CA_REPEATED_ARG EMAKEHR(0x11c3) #define META_E_CA_UNKNOWN_ARGUMENT EMAKEHR(0x11c4) #define META_E_CA_UNEXPECTED_TYPE EMAKEHR(0x11c7) #define META_E_CA_INVALID_ARGTYPE EMAKEHR(0x11c8) #define META_E_CA_INVALID_ARG_FOR_TYPE EMAKEHR(0x11c9) #define META_E_CA_INVALID_UUID EMAKEHR(0x11ca) #define META_E_CA_INVALID_MARSHALAS_FIELDS EMAKEHR(0x11cb) #define META_E_CA_NT_FIELDONLY EMAKEHR(0x11cc) #define META_E_CA_NEGATIVE_PARAMINDEX EMAKEHR(0x11cd) #define META_E_CA_NEGATIVE_CONSTSIZE EMAKEHR(0x11cf) #define META_E_CA_FIXEDSTR_SIZE_REQUIRED EMAKEHR(0x11d0) #define META_E_CA_CUSTMARSH_TYPE_REQUIRED EMAKEHR(0x11d1) #define META_E_NOT_IN_ENC_MODE EMAKEHR(0x11d4) #define META_E_CA_BAD_FRIENDS_ARGS EMAKEHR(0x11e5) #define META_E_CA_FRIENDS_SN_REQUIRED EMAKEHR(0x11e6) #define VLDTR_E_RID_OUTOFRANGE EMAKEHR(0x1203) #define VLDTR_E_STRING_INVALID EMAKEHR(0x1206) #define VLDTR_E_GUID_INVALID EMAKEHR(0x1207) #define VLDTR_E_BLOB_INVALID EMAKEHR(0x1208) #define VLDTR_E_MR_BADCALLINGCONV EMAKEHR(0x1224) #define VLDTR_E_SIGNULL EMAKEHR(0x1237) #define VLDTR_E_MD_BADCALLINGCONV EMAKEHR(0x1239) #define VLDTR_E_MD_THISSTATIC EMAKEHR(0x123a) #define VLDTR_E_MD_NOTTHISNOTSTATIC EMAKEHR(0x123b) #define VLDTR_E_MD_NOARGCNT EMAKEHR(0x123c) #define VLDTR_E_SIG_MISSELTYPE EMAKEHR(0x123d) #define VLDTR_E_SIG_MISSTKN EMAKEHR(0x123e) #define VLDTR_E_SIG_TKNBAD EMAKEHR(0x123f) #define VLDTR_E_SIG_MISSFPTR EMAKEHR(0x1240) #define VLDTR_E_SIG_MISSFPTRARGCNT EMAKEHR(0x1241) #define VLDTR_E_SIG_MISSRANK EMAKEHR(0x1242) #define VLDTR_E_SIG_MISSNSIZE EMAKEHR(0x1243) #define VLDTR_E_SIG_MISSSIZE EMAKEHR(0x1244) #define VLDTR_E_SIG_MISSNLBND EMAKEHR(0x1245) #define VLDTR_E_SIG_MISSLBND EMAKEHR(0x1246) #define VLDTR_E_SIG_BADELTYPE EMAKEHR(0x1247) #define VLDTR_E_TD_ENCLNOTNESTED EMAKEHR(0x1256) #define VLDTR_E_FMD_PINVOKENOTSTATIC EMAKEHR(0x1277) #define VLDTR_E_SIG_SENTINMETHODDEF EMAKEHR(0x12df) #define VLDTR_E_SIG_SENTMUSTVARARG EMAKEHR(0x12e0) #define VLDTR_E_SIG_MULTSENTINELS EMAKEHR(0x12e1) #define VLDTR_E_SIG_MISSARG EMAKEHR(0x12e3) #define VLDTR_E_SIG_BYREFINFIELD EMAKEHR(0x12e4) #define CORDBG_E_UNRECOVERABLE_ERROR EMAKEHR(0x1300) #define CORDBG_E_PROCESS_TERMINATED EMAKEHR(0x1301) #define CORDBG_E_PROCESS_NOT_SYNCHRONIZED EMAKEHR(0x1302) #define CORDBG_E_CLASS_NOT_LOADED EMAKEHR(0x1303) #define CORDBG_E_IL_VAR_NOT_AVAILABLE EMAKEHR(0x1304) #define CORDBG_E_BAD_REFERENCE_VALUE EMAKEHR(0x1305) #define CORDBG_E_FIELD_NOT_AVAILABLE EMAKEHR(0x1306) #define CORDBG_E_NON_NATIVE_FRAME EMAKEHR(0x1307) #define CORDBG_E_CODE_NOT_AVAILABLE EMAKEHR(0x1309) #define CORDBG_E_FUNCTION_NOT_IL EMAKEHR(0x130a) #define CORDBG_E_CANT_SET_IP_INTO_FINALLY EMAKEHR(0x130e) #define CORDBG_E_CANT_SET_IP_OUT_OF_FINALLY EMAKEHR(0x130f) #define CORDBG_E_CANT_SET_IP_INTO_CATCH EMAKEHR(0x1310) #define CORDBG_E_SET_IP_NOT_ALLOWED_ON_NONLEAF_FRAME EMAKEHR(0x1311) #define CORDBG_E_SET_IP_IMPOSSIBLE EMAKEHR(0x1312) #define CORDBG_E_FUNC_EVAL_BAD_START_POINT EMAKEHR(0x1313) #define CORDBG_E_INVALID_OBJECT EMAKEHR(0x1314) #define CORDBG_E_FUNC_EVAL_NOT_COMPLETE EMAKEHR(0x1315) #define CORDBG_E_STATIC_VAR_NOT_AVAILABLE EMAKEHR(0x131a) #define CORDBG_E_CANT_SETIP_INTO_OR_OUT_OF_FILTER EMAKEHR(0x131c) #define CORDBG_E_CANT_CHANGE_JIT_SETTING_FOR_ZAP_MODULE EMAKEHR(0x131d) #define CORDBG_E_CANT_SET_IP_OUT_OF_FINALLY_ON_WIN64 EMAKEHR(0x131e) #define CORDBG_E_CANT_SET_IP_OUT_OF_CATCH_ON_WIN64 EMAKEHR(0x131f) #define CORDBG_E_CANT_SET_TO_JMC EMAKEHR(0x1323) #define CORDBG_E_NO_CONTEXT_FOR_INTERNAL_FRAME EMAKEHR(0x1325) #define CORDBG_E_NOT_CHILD_FRAME EMAKEHR(0x1326) #define CORDBG_E_NON_MATCHING_CONTEXT EMAKEHR(0x1327) #define CORDBG_E_PAST_END_OF_STACK EMAKEHR(0x1328) #define CORDBG_E_FUNC_EVAL_CANNOT_UPDATE_REGISTER_IN_NONLEAF_FRAME EMAKEHR(0x1329) #define CORDBG_E_BAD_THREAD_STATE EMAKEHR(0x132d) #define CORDBG_E_DEBUGGER_ALREADY_ATTACHED EMAKEHR(0x132e) #define CORDBG_E_SUPERFLOUS_CONTINUE EMAKEHR(0x132f) #define CORDBG_E_SET_VALUE_NOT_ALLOWED_ON_NONLEAF_FRAME EMAKEHR(0x1330) #define CORDBG_E_ENC_MODULE_NOT_ENC_ENABLED EMAKEHR(0x1332) #define CORDBG_E_SET_IP_NOT_ALLOWED_ON_EXCEPTION EMAKEHR(0x1333) #define CORDBG_E_VARIABLE_IS_ACTUALLY_LITERAL EMAKEHR(0x1334) #define CORDBG_E_PROCESS_DETACHED EMAKEHR(0x1335) #define CORDBG_E_ENC_CANT_ADD_FIELD_TO_VALUE_OR_LAYOUT_CLASS EMAKEHR(0x1338) #define CORDBG_E_FIELD_NOT_STATIC EMAKEHR(0x133b) #define CORDBG_E_FIELD_NOT_INSTANCE EMAKEHR(0x133c) #define CORDBG_E_ENC_JIT_CANT_UPDATE EMAKEHR(0x133f) #define CORDBG_E_ENC_INTERNAL_ERROR EMAKEHR(0x1341) #define CORDBG_E_ENC_HANGING_FIELD EMAKEHR(0x1342) #define CORDBG_E_MODULE_NOT_LOADED EMAKEHR(0x1343) #define CORDBG_E_UNABLE_TO_SET_BREAKPOINT EMAKEHR(0x1345) #define CORDBG_E_DEBUGGING_NOT_POSSIBLE EMAKEHR(0x1346) #define CORDBG_E_KERNEL_DEBUGGER_ENABLED EMAKEHR(0x1347) #define CORDBG_E_KERNEL_DEBUGGER_PRESENT EMAKEHR(0x1348) #define CORDBG_E_INCOMPATIBLE_PROTOCOL EMAKEHR(0x134b) #define CORDBG_E_TOO_MANY_PROCESSES EMAKEHR(0x134c) #define CORDBG_E_INTEROP_NOT_SUPPORTED EMAKEHR(0x134d) #define CORDBG_E_NO_REMAP_BREAKPIONT EMAKEHR(0x134e) #define CORDBG_E_OBJECT_NEUTERED EMAKEHR(0x134f) #define CORPROF_E_FUNCTION_NOT_COMPILED EMAKEHR(0x1350) #define CORPROF_E_DATAINCOMPLETE EMAKEHR(0x1351) #define CORPROF_E_FUNCTION_NOT_IL EMAKEHR(0x1354) #define CORPROF_E_NOT_MANAGED_THREAD EMAKEHR(0x1355) #define CORPROF_E_CALL_ONLY_FROM_INIT EMAKEHR(0x1356) #define CORPROF_E_NOT_YET_AVAILABLE EMAKEHR(0x135b) #define CORPROF_E_TYPE_IS_PARAMETERIZED EMAKEHR(0x135c) #define CORPROF_E_FUNCTION_IS_PARAMETERIZED EMAKEHR(0x135d) #define CORPROF_E_STACKSNAPSHOT_INVALID_TGT_THREAD EMAKEHR(0x135e) #define CORPROF_E_STACKSNAPSHOT_UNMANAGED_CTX EMAKEHR(0x135f) #define CORPROF_E_STACKSNAPSHOT_UNSAFE EMAKEHR(0x1360) #define CORPROF_E_STACKSNAPSHOT_ABORTED EMAKEHR(0x1361) #define CORPROF_E_LITERALS_HAVE_NO_ADDRESS EMAKEHR(0x1362) #define CORPROF_E_UNSUPPORTED_CALL_SEQUENCE EMAKEHR(0x1363) #define CORPROF_E_ASYNCHRONOUS_UNSAFE EMAKEHR(0x1364) #define CORPROF_E_CLASSID_IS_ARRAY EMAKEHR(0x1365) #define CORPROF_E_CLASSID_IS_COMPOSITE EMAKEHR(0x1366) #define CORPROF_E_PROFILER_DETACHING EMAKEHR(0x1367) #define CORPROF_E_PROFILER_NOT_ATTACHABLE EMAKEHR(0x1368) #define CORPROF_E_UNRECOGNIZED_PIPE_MSG_FORMAT EMAKEHR(0x1369) #define CORPROF_E_PROFILER_ALREADY_ACTIVE EMAKEHR(0x136a) #define CORPROF_E_PROFILEE_INCOMPATIBLE_WITH_TRIGGER EMAKEHR(0x136b) #define CORPROF_E_IPC_FAILED EMAKEHR(0x136c) #define CORPROF_E_PROFILEE_PROCESS_NOT_FOUND EMAKEHR(0x136d) #define CORPROF_E_CALLBACK3_REQUIRED EMAKEHR(0x136e) #define CORPROF_E_UNSUPPORTED_FOR_ATTACHING_PROFILER EMAKEHR(0x136f) #define CORPROF_E_IRREVERSIBLE_INSTRUMENTATION_PRESENT EMAKEHR(0x1370) #define CORPROF_E_RUNTIME_UNINITIALIZED EMAKEHR(0x1371) #define CORPROF_E_IMMUTABLE_FLAGS_SET EMAKEHR(0x1372) #define CORPROF_E_PROFILER_NOT_YET_INITIALIZED EMAKEHR(0x1373) #define CORPROF_E_INCONSISTENT_WITH_FLAGS EMAKEHR(0x1374) #define CORPROF_E_PROFILER_CANCEL_ACTIVATION EMAKEHR(0x1375) #define CORPROF_E_CONCURRENT_GC_NOT_PROFILABLE EMAKEHR(0x1376) #define CORPROF_E_DEBUGGING_DISABLED EMAKEHR(0x1378) #define CORPROF_E_TIMEOUT_WAITING_FOR_CONCURRENT_GC EMAKEHR(0x1379) #define CORPROF_E_MODULE_IS_DYNAMIC EMAKEHR(0x137a) #define CORPROF_E_CALLBACK4_REQUIRED EMAKEHR(0x137b) #define CORPROF_E_REJIT_NOT_ENABLED EMAKEHR(0x137c) #define CORPROF_E_FUNCTION_IS_COLLECTIBLE EMAKEHR(0x137e) #define CORPROF_E_CALLBACK6_REQUIRED EMAKEHR(0x1380) #define CORPROF_E_CALLBACK7_REQUIRED EMAKEHR(0x1382) #define CORPROF_E_REJIT_INLINING_DISABLED EMAKEHR(0x1383) #define CORDIAGIPC_E_BAD_ENCODING EMAKEHR(0x1384) #define CORDIAGIPC_E_UNKNOWN_COMMAND EMAKEHR(0x1385) #define CORDIAGIPC_E_UNKNOWN_MAGIC EMAKEHR(0x1386) #define CORDIAGIPC_E_UNKNOWN_ERROR EMAKEHR(0x1387) #define CORPROF_E_SUSPENSION_IN_PROGRESS EMAKEHR(0x1388) #define SECURITY_E_INCOMPATIBLE_SHARE EMAKEHR(0x1401) #define SECURITY_E_UNVERIFIABLE EMAKEHR(0x1402) #define SECURITY_E_INCOMPATIBLE_EVIDENCE EMAKEHR(0x1403) #define CORSEC_E_POLICY_EXCEPTION EMAKEHR(0x1416) #define CORSEC_E_MIN_GRANT_FAIL EMAKEHR(0x1417) #define CORSEC_E_NO_EXEC_PERM EMAKEHR(0x1418) #define CORSEC_E_XMLSYNTAX EMAKEHR(0x1419) #define CORSEC_E_INVALID_STRONGNAME EMAKEHR(0x141a) #define CORSEC_E_MISSING_STRONGNAME EMAKEHR(0x141b) #define CORSEC_E_INVALID_IMAGE_FORMAT EMAKEHR(0x141d) #define CORSEC_E_INVALID_PUBLICKEY EMAKEHR(0x141e) #define CORSEC_E_SIGNATURE_MISMATCH EMAKEHR(0x1420) #define CORSEC_E_CRYPTO EMAKEHR(0x1430) #define CORSEC_E_CRYPTO_UNEX_OPER EMAKEHR(0x1431) #define CORSECATTR_E_BAD_ACTION EMAKEHR(0x1442) #define COR_E_EXCEPTION EMAKEHR(0x1500) #define COR_E_SYSTEM EMAKEHR(0x1501) #define COR_E_ARGUMENTOUTOFRANGE EMAKEHR(0x1502) #define COR_E_ARRAYTYPEMISMATCH EMAKEHR(0x1503) #define COR_E_CONTEXTMARSHAL EMAKEHR(0x1504) #define COR_E_TIMEOUT EMAKEHR(0x1505) #define COR_E_EXECUTIONENGINE EMAKEHR(0x1506) #define COR_E_FIELDACCESS EMAKEHR(0x1507) #define COR_E_INDEXOUTOFRANGE EMAKEHR(0x1508) #define COR_E_INVALIDOPERATION EMAKEHR(0x1509) #define COR_E_SECURITY EMAKEHR(0x150a) #define COR_E_SERIALIZATION EMAKEHR(0x150c) #define COR_E_VERIFICATION EMAKEHR(0x150d) #define COR_E_METHODACCESS EMAKEHR(0x1510) #define COR_E_MISSINGFIELD EMAKEHR(0x1511) #define COR_E_MISSINGMEMBER EMAKEHR(0x1512) #define COR_E_MISSINGMETHOD EMAKEHR(0x1513) #define COR_E_MULTICASTNOTSUPPORTED EMAKEHR(0x1514) #define COR_E_NOTSUPPORTED EMAKEHR(0x1515) #define COR_E_OVERFLOW EMAKEHR(0x1516) #define COR_E_RANK EMAKEHR(0x1517) #define COR_E_SYNCHRONIZATIONLOCK EMAKEHR(0x1518) #define COR_E_THREADINTERRUPTED EMAKEHR(0x1519) #define COR_E_MEMBERACCESS EMAKEHR(0x151a) #define COR_E_THREADSTATE EMAKEHR(0x1520) #define COR_E_THREADSTOP EMAKEHR(0x1521) #define COR_E_TYPELOAD EMAKEHR(0x1522) #define COR_E_ENTRYPOINTNOTFOUND EMAKEHR(0x1523) #define COR_E_DLLNOTFOUND EMAKEHR(0x1524) #define COR_E_THREADSTART EMAKEHR(0x1525) #define COR_E_INVALIDCOMOBJECT EMAKEHR(0x1527) #define COR_E_NOTFINITENUMBER EMAKEHR(0x1528) #define COR_E_DUPLICATEWAITOBJECT EMAKEHR(0x1529) #define COR_E_SEMAPHOREFULL EMAKEHR(0x152b) #define COR_E_WAITHANDLECANNOTBEOPENED EMAKEHR(0x152c) #define COR_E_ABANDONEDMUTEX EMAKEHR(0x152d) #define COR_E_THREADABORTED EMAKEHR(0x1530) #define COR_E_INVALIDOLEVARIANTTYPE EMAKEHR(0x1531) #define COR_E_MISSINGMANIFESTRESOURCE EMAKEHR(0x1532) #define COR_E_SAFEARRAYTYPEMISMATCH EMAKEHR(0x1533) #define COR_E_TYPEINITIALIZATION EMAKEHR(0x1534) #define COR_E_MARSHALDIRECTIVE EMAKEHR(0x1535) #define COR_E_MISSINGSATELLITEASSEMBLY EMAKEHR(0x1536) #define COR_E_FORMAT EMAKEHR(0x1537) #define COR_E_SAFEARRAYRANKMISMATCH EMAKEHR(0x1538) #define COR_E_PLATFORMNOTSUPPORTED EMAKEHR(0x1539) #define COR_E_INVALIDPROGRAM EMAKEHR(0x153a) #define COR_E_OPERATIONCANCELED EMAKEHR(0x153b) #define COR_E_INSUFFICIENTMEMORY EMAKEHR(0x153d) #define COR_E_RUNTIMEWRAPPED EMAKEHR(0x153e) #define COR_E_DATAMISALIGNED EMAKEHR(0x1541) #define COR_E_CODECONTRACTFAILED EMAKEHR(0x1542) #define COR_E_TYPEACCESS EMAKEHR(0x1543) #define COR_E_ACCESSING_CCW EMAKEHR(0x1544) #define COR_E_KEYNOTFOUND EMAKEHR(0x1577) #define COR_E_INSUFFICIENTEXECUTIONSTACK EMAKEHR(0x1578) #define COR_E_APPLICATION EMAKEHR(0x1600) #define COR_E_INVALIDFILTERCRITERIA EMAKEHR(0x1601) #define COR_E_REFLECTIONTYPELOAD EMAKEHR(0x1602) #define COR_E_TARGET EMAKEHR(0x1603) #define COR_E_TARGETINVOCATION EMAKEHR(0x1604) #define COR_E_CUSTOMATTRIBUTEFORMAT EMAKEHR(0x1605) #define COR_E_IO EMAKEHR(0x1620) #define COR_E_FILELOAD EMAKEHR(0x1621) #define COR_E_OBJECTDISPOSED EMAKEHR(0x1622) #define COR_E_FAILFAST EMAKEHR(0x1623) #define COR_E_HOSTPROTECTION EMAKEHR(0x1640) #define COR_E_ILLEGAL_REENTRANCY EMAKEHR(0x1641) #define CLR_E_SHIM_RUNTIMELOAD EMAKEHR(0x1700) #define CLR_E_SHIM_LEGACYRUNTIMEALREADYBOUND EMAKEHR(0x1704) #define VER_E_FIELD_SIG EMAKEHR(0x1815) #define VER_E_CIRCULAR_VAR_CONSTRAINTS EMAKEHR(0x18ce) #define VER_E_CIRCULAR_MVAR_CONSTRAINTS EMAKEHR(0x18cf) #define COR_E_Data EMAKEHR(0x1920) #define VLDTR_E_SIG_BADVOID EMAKEHR(0x1b24) #define VLDTR_E_GP_ILLEGAL_VARIANT_MVAR EMAKEHR(0x1b2d) #define CORDBG_E_THREAD_NOT_SCHEDULED EMAKEHR(0x1c00) #define CORDBG_E_HANDLE_HAS_BEEN_DISPOSED EMAKEHR(0x1c01) #define CORDBG_E_NONINTERCEPTABLE_EXCEPTION EMAKEHR(0x1c02) #define CORDBG_E_INTERCEPT_FRAME_ALREADY_SET EMAKEHR(0x1c04) #define CORDBG_E_NO_NATIVE_PATCH_AT_ADDR EMAKEHR(0x1c05) #define CORDBG_E_MUST_BE_INTEROP_DEBUGGING EMAKEHR(0x1c06) #define CORDBG_E_NATIVE_PATCH_ALREADY_AT_ADDR EMAKEHR(0x1c07) #define CORDBG_E_TIMEOUT EMAKEHR(0x1c08) #define CORDBG_E_CANT_CALL_ON_THIS_THREAD EMAKEHR(0x1c09) #define CORDBG_E_ENC_INFOLESS_METHOD EMAKEHR(0x1c0a) #define CORDBG_E_ENC_IN_FUNCLET EMAKEHR(0x1c0c) #define CORDBG_E_ENC_EDIT_NOT_SUPPORTED EMAKEHR(0x1c0e) #define CORDBG_E_NOTREADY EMAKEHR(0x1c10) #define CORDBG_E_CANNOT_RESOLVE_ASSEMBLY EMAKEHR(0x1c11) #define CORDBG_E_MUST_BE_IN_LOAD_MODULE EMAKEHR(0x1c12) #define CORDBG_E_CANNOT_BE_ON_ATTACH EMAKEHR(0x1c13) #define CORDBG_E_NGEN_NOT_SUPPORTED EMAKEHR(0x1c14) #define CORDBG_E_ILLEGAL_SHUTDOWN_ORDER EMAKEHR(0x1c15) #define CORDBG_E_CANNOT_DEBUG_FIBER_PROCESS EMAKEHR(0x1c16) #define CORDBG_E_MUST_BE_IN_CREATE_PROCESS EMAKEHR(0x1c17) #define CORDBG_E_DETACH_FAILED_OUTSTANDING_EVALS EMAKEHR(0x1c18) #define CORDBG_E_DETACH_FAILED_OUTSTANDING_STEPPERS EMAKEHR(0x1c19) #define CORDBG_E_CANT_INTEROP_STEP_OUT EMAKEHR(0x1c20) #define CORDBG_E_DETACH_FAILED_OUTSTANDING_BREAKPOINTS EMAKEHR(0x1c21) #define CORDBG_E_ILLEGAL_IN_STACK_OVERFLOW EMAKEHR(0x1c22) #define CORDBG_E_ILLEGAL_AT_GC_UNSAFE_POINT EMAKEHR(0x1c23) #define CORDBG_E_ILLEGAL_IN_PROLOG EMAKEHR(0x1c24) #define CORDBG_E_ILLEGAL_IN_NATIVE_CODE EMAKEHR(0x1c25) #define CORDBG_E_ILLEGAL_IN_OPTIMIZED_CODE EMAKEHR(0x1c26) #define CORDBG_E_APPDOMAIN_MISMATCH EMAKEHR(0x1c28) #define CORDBG_E_CONTEXT_UNVAILABLE EMAKEHR(0x1c29) #define CORDBG_E_UNCOMPATIBLE_PLATFORMS EMAKEHR(0x1c30) #define CORDBG_E_DEBUGGING_DISABLED EMAKEHR(0x1c31) #define CORDBG_E_DETACH_FAILED_ON_ENC EMAKEHR(0x1c32) #define CORDBG_E_CURRENT_EXCEPTION_IS_OUTSIDE_CURRENT_EXECUTION_SCOPE EMAKEHR(0x1c33) #define CORDBG_E_HELPER_MAY_DEADLOCK EMAKEHR(0x1c34) #define CORDBG_E_MISSING_METADATA EMAKEHR(0x1c35) #define CORDBG_E_TARGET_INCONSISTENT EMAKEHR(0x1c36) #define CORDBG_E_DETACH_FAILED_OUTSTANDING_TARGET_RESOURCES EMAKEHR(0x1c37) #define CORDBG_E_TARGET_READONLY EMAKEHR(0x1c38) #define CORDBG_E_MISMATCHED_CORWKS_AND_DACWKS_DLLS EMAKEHR(0x1c39) #define CORDBG_E_MODULE_LOADED_FROM_DISK EMAKEHR(0x1c3a) #define CORDBG_E_SYMBOLS_NOT_AVAILABLE EMAKEHR(0x1c3b) #define CORDBG_E_DEBUG_COMPONENT_MISSING EMAKEHR(0x1c3c) #define CORDBG_E_LIBRARY_PROVIDER_ERROR EMAKEHR(0x1c43) #define CORDBG_E_NOT_CLR EMAKEHR(0x1c44) #define CORDBG_E_MISSING_DATA_TARGET_INTERFACE EMAKEHR(0x1c45) #define CORDBG_E_UNSUPPORTED_DEBUGGING_MODEL EMAKEHR(0x1c46) #define CORDBG_E_UNSUPPORTED_FORWARD_COMPAT EMAKEHR(0x1c47) #define CORDBG_E_UNSUPPORTED_VERSION_STRUCT EMAKEHR(0x1c48) #define CORDBG_E_READVIRTUAL_FAILURE EMAKEHR(0x1c49) #define CORDBG_E_VALUE_POINTS_TO_FUNCTION EMAKEHR(0x1c4a) #define CORDBG_E_CORRUPT_OBJECT EMAKEHR(0x1c4b) #define CORDBG_E_GC_STRUCTURES_INVALID EMAKEHR(0x1c4c) #define CORDBG_E_INVALID_OPCODE EMAKEHR(0x1c4d) #define CORDBG_E_UNSUPPORTED EMAKEHR(0x1c4e) #define CORDBG_E_MISSING_DEBUGGER_EXPORTS EMAKEHR(0x1c4f) #define CORDBG_E_DATA_TARGET_ERROR EMAKEHR(0x1c61) #define CORDBG_E_NO_IMAGE_AVAILABLE EMAKEHR(0x1c64) #define CORDBG_E_UNSUPPORTED_DELEGATE EMAKEHR(0x1c68) #define CORDBG_E_ASSEMBLY_UPDATES_APPLIED EMAKEHR(0x1c69) #define PEFMT_E_64BIT EMAKEHR(0x1d02) #define PEFMT_E_32BIT EMAKEHR(0x1d0b) #define CLDB_E_INTERNALERROR EMAKEHR(0x1fff) #define CLR_E_BIND_ASSEMBLY_VERSION_TOO_LOW EMAKEHR(0x2000) #define CLR_E_BIND_ASSEMBLY_PUBLIC_KEY_MISMATCH EMAKEHR(0x2001) #define CLR_E_BIND_IMAGE_UNAVAILABLE EMAKEHR(0x2002) #define CLR_E_BIND_UNRECOGNIZED_IDENTITY_FORMAT EMAKEHR(0x2003) #define CLR_E_BIND_ASSEMBLY_NOT_FOUND EMAKEHR(0x2004) #define CLR_E_BIND_TYPE_NOT_FOUND EMAKEHR(0x2005) #define CLR_E_BIND_SYS_ASM_NI_MISSING EMAKEHR(0x2006) #define CLR_E_BIND_NI_SECURITY_FAILURE EMAKEHR(0x2007) #define CLR_E_BIND_NI_DEP_IDENTITY_MISMATCH EMAKEHR(0x2008) #define CLR_E_GC_OOM EMAKEHR(0x2009) #define CLR_E_GC_BAD_AFFINITY_CONFIG EMAKEHR(0x200a) #define CLR_E_GC_BAD_AFFINITY_CONFIG_FORMAT EMAKEHR(0x200b) #define CLR_E_CROSSGEN_NO_IBC_DATA_FOUND EMAKEHR(0x200c) #define CLR_E_GC_BAD_HARD_LIMIT EMAKEHR(0x200d) #define CLR_E_GC_LARGE_PAGE_MISSING_HARD_LIMIT EMAKEHR(0x200e) #define COR_E_UNAUTHORIZEDACCESS E_ACCESSDENIED #define COR_E_ARGUMENT E_INVALIDARG #define COR_E_INVALIDCAST E_NOINTERFACE #define COR_E_OUTOFMEMORY E_OUTOFMEMORY #define COR_E_NULLREFERENCE E_POINTER #define COR_E_ARITHMETIC __HRESULT_FROM_WIN32(ERROR_ARITHMETIC_OVERFLOW) #define COR_E_PATHTOOLONG __HRESULT_FROM_WIN32(ERROR_FILENAME_EXCED_RANGE) #define COR_E_FILENOTFOUND __HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) #define COR_E_ENDOFSTREAM __HRESULT_FROM_WIN32(ERROR_HANDLE_EOF) #define COR_E_DIRECTORYNOTFOUND __HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND) #define COR_E_STACKOVERFLOW __HRESULT_FROM_WIN32(ERROR_STACK_OVERFLOW) #define COR_E_AMBIGUOUSMATCH _HRESULT_TYPEDEF_(0x8000211DL) #define COR_E_TARGETPARAMCOUNT _HRESULT_TYPEDEF_(0x8002000EL) #define COR_E_DIVIDEBYZERO _HRESULT_TYPEDEF_(0x80020012L) #define COR_E_BADIMAGEFORMAT _HRESULT_TYPEDEF_(0x8007000BL) #endif // __COMMON_LANGUAGE_RUNTIME_HRESULTS__ ProcDump-for-Linux-2.2/profiler/inc/corhdr.h000066400000000000000000002733371447614355600210520ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. /***************************************************************************** ** ** ** CorHdr.h - contains definitions for the Runtime structures, ** ** ** needed to work with metadata. ** ** ** *****************************************************************************/ // // The top most managed code structure in a EXE or DLL is the IMAGE_COR20_HEADER // see code:#ManagedHeader for more #ifndef __CORHDR_H__ #define __CORHDR_H__ #include #ifdef _MSC_VER #pragma warning(disable:4200) // nonstandard extension used : zero-sized array in struct/union. #endif typedef void* mdScope; // Obsolete; not used in the runtime. typedef uint32_t mdToken; // Generic token // Token definitions typedef mdToken mdModule; // Module token (roughly, a scope) typedef mdToken mdTypeRef; // TypeRef reference (this or other scope) typedef mdToken mdTypeDef; // TypeDef in this scope typedef mdToken mdFieldDef; // Field in this scope typedef mdToken mdMethodDef; // Method in this scope typedef mdToken mdParamDef; // param token typedef mdToken mdInterfaceImpl; // interface implementation token typedef mdToken mdMemberRef; // MemberRef (this or other scope) typedef mdToken mdCustomAttribute; // attribute token typedef mdToken mdPermission; // DeclSecurity typedef mdToken mdSignature; // Signature object typedef mdToken mdEvent; // event token typedef mdToken mdProperty; // property token typedef mdToken mdModuleRef; // Module reference (for the imported modules) // Assembly tokens. typedef mdToken mdAssembly; // Assembly token. typedef mdToken mdAssemblyRef; // AssemblyRef token. typedef mdToken mdFile; // File token. typedef mdToken mdExportedType; // ExportedType token. typedef mdToken mdManifestResource; // ManifestResource token. typedef mdToken mdTypeSpec; // TypeSpec object typedef mdToken mdGenericParam; // formal parameter to generic type or method typedef mdToken mdMethodSpec; // instantiation of a generic method typedef mdToken mdGenericParamConstraint; // constraint on a formal generic parameter // Application string. typedef mdToken mdString; // User literal string token. typedef mdToken mdCPToken; // constantpool token #ifndef MACROS_NOT_SUPPORTED typedef uint32_t RID; #else typedef unsigned RID; #endif // MACROS_NOT_SUPPORTED typedef enum ReplacesGeneralNumericDefines { // Directory entry macro for CLR data. #ifndef IMAGE_DIRECTORY_ENTRY_COMHEADER IMAGE_DIRECTORY_ENTRY_COMHEADER =14, #endif // IMAGE_DIRECTORY_ENTRY_COMHEADER } ReplacesGeneralNumericDefines; // The COMIMAGE_FLAGS_32BITREQUIRED and COMIMAGE_FLAGS_32BITPREFERRED flags defined below interact as a pair // in order to get the performance profile we desire for platform neutral assemblies while retaining backwards // compatibility with pre-4.5 runtimes/OSs, which don't know about COMIMAGE_FLAGS_32BITPREFERRED. // // COMIMAGE_FLAGS_32BITREQUIRED originally meant "this assembly is x86-only" (required to distinguish platform // neutral assemblies which also mark their PE MachineType as IMAGE_FILE_MACHINE_I386). // // COMIMAGE_FLAGS_32BITPREFERRED has been added so we can create a sub-class of platform neutral assembly that // prefers to be loaded into 32-bit environment for perf reasons, but is still compatible with 64-bit // environments. // // In order to retain maximum backwards compatibility you cannot simply read or write one of these flags // however. You must treat them as a pair, a two-bit field with the following meanings: // // 32BITREQUIRED 32BITPREFERRED // 0 0 : no special meaning, MachineType and ILONLY flag determine image requirements // 0 1 : illegal, reserved for future use // 1 0 : image is x86-specific // 1 1 : image is platform neutral and prefers to be loaded 32-bit when possible // // To simplify manipulation of these flags the following macros are provided below. #define COR_IS_32BIT_REQUIRED(_flags) \ (((_flags) & (COMIMAGE_FLAGS_32BITREQUIRED|COMIMAGE_FLAGS_32BITPREFERRED)) == (COMIMAGE_FLAGS_32BITREQUIRED)) #define COR_IS_32BIT_PREFERRED(_flags) \ (((_flags) & (COMIMAGE_FLAGS_32BITREQUIRED|COMIMAGE_FLAGS_32BITPREFERRED)) == (COMIMAGE_FLAGS_32BITREQUIRED|COMIMAGE_FLAGS_32BITPREFERRED)) #define COR_SET_32BIT_REQUIRED(_flagsfield) \ do { _flagsfield = (_flagsfield & ~COMIMAGE_FLAGS_32BITPREFERRED) | COMIMAGE_FLAGS_32BITREQUIRED; } while (false) #define COR_SET_32BIT_PREFERRED(_flagsfield) \ do { _flagsfield |= COMIMAGE_FLAGS_32BITPREFERRED|COMIMAGE_FLAGS_32BITREQUIRED; } while (false) #define COR_CLEAR_32BIT_REQUIRED(_flagsfield) \ do { _flagsfield &= ~(COMIMAGE_FLAGS_32BITREQUIRED|COMIMAGE_FLAGS_32BITPREFERRED); } while (false) #define COR_CLEAR_32BIT_PREFERRED(_flagsfield) \ do { _flagsfield &= ~(COMIMAGE_FLAGS_32BITREQUIRED|COMIMAGE_FLAGS_32BITPREFERRED); } while (false) #ifndef __IMAGE_COR20_HEADER_DEFINED__ #define __IMAGE_COR20_HEADER_DEFINED__ typedef enum ReplacesCorHdrNumericDefines { // COM+ Header entry point flags. COMIMAGE_FLAGS_ILONLY =0x00000001, COMIMAGE_FLAGS_32BITREQUIRED =0x00000002, // *** Do not manipulate this bit directly (see notes above) COMIMAGE_FLAGS_IL_LIBRARY =0x00000004, COMIMAGE_FLAGS_STRONGNAMESIGNED =0x00000008, COMIMAGE_FLAGS_NATIVE_ENTRYPOINT =0x00000010, COMIMAGE_FLAGS_TRACKDEBUGDATA =0x00010000, COMIMAGE_FLAGS_32BITPREFERRED =0x00020000, // *** Do not manipulate this bit directly (see notes above) // Version flags for image. COR_VERSION_MAJOR_V2 =2, COR_VERSION_MAJOR =COR_VERSION_MAJOR_V2, COR_VERSION_MINOR =5, COR_DELETED_NAME_LENGTH =8, COR_VTABLEGAP_NAME_LENGTH =8, // Maximum size of a NativeType descriptor. NATIVE_TYPE_MAX_CB =1, COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE=0xFF, // V-table constants COR_VTABLE_32BIT =0x01, // V-table slots are 32-bits in size. COR_VTABLE_64BIT =0x02, // V-table slots are 64-bits in size. COR_VTABLE_FROM_UNMANAGED =0x04, // If set, transition from unmanaged. COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN=0x08, // NEW COR_VTABLE_CALL_MOST_DERIVED =0x10, // Call most derived method described by // EATJ constants IMAGE_COR_EATJ_THUNK_SIZE = 32, // Size of a jump thunk reserved range. // Max name lengths //@todo: Change to unlimited name lengths. MAX_CLASS_NAME =1024, MAX_PACKAGE_NAME =1024, } ReplacesCorHdrNumericDefines; // // Directory format. // #ifndef IMAGE_DATA_DIRECTORY_DEFINED #define IMAGE_DATA_DIRECTORY_DEFINED typedef struct _IMAGE_DATA_DIRECTORY { uint32_t VirtualAddress; uint32_t Size; } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; #endif // IMAGE_DATA_DIRECTORY_DEFINED // #ManagedHeader // // A managed code EXE or DLL uses the same basic format that unmanaged executables use call the Portable // Executable (PE) format. See http://en.wikipedia.org/wiki/Portable_Executable or // http://msdn.microsoft.com/msdnmag/issues/02/02/PE/default.aspx for more on this format and RVAs. // // PE files define fixed table of well known entry pointers call Directory entries. Each entry holds the // relative virtual address (RVA) and length of a blob of data within the PE file. You can see these using // the command // // link /dump /headers // // // Managed code has defined one of these entries (the 14th see code:IMAGE_DIRECTORY_ENTRY_COMHEADER) and the RVA points // that the IMAGE_COR20_HEADER. This header shows up in the previous dump as the following line // // // Managed code is identified by is following line // // 2008 [ 48] RVA [size] of COM Descriptor Directory // // The IMAGE_COR20_HEADER is mostly just RVA:Length pairs (pointers) to other interesting data structures. // The most important of these is the MetaData tables. The easiest way of looking at meta-data is using // the IlDasm.exe tool. // // MetaData holds most of the information in the IL image. The exceptions are resource blobs and the IL // instructions streams for individual methods. Instead the Meta-data for a method holds an RVA to a // code:IMAGE_COR_ILMETHOD which holds all the IL stream (and exception handling information). // // Precompiled (NGEN) images use the same IMAGE_COR20_HEADER but also use the ManagedNativeHeader field to // point at structures that only exist in precompiled images. // typedef struct IMAGE_COR20_HEADER { // Header versioning uint32_t cb; uint16_t MajorRuntimeVersion; uint16_t MinorRuntimeVersion; // Symbol table and startup information IMAGE_DATA_DIRECTORY MetaData; uint32_t Flags; // The main program if it is an EXE (not used if a DLL?) // If COMIMAGE_FLAGS_NATIVE_ENTRYPOINT is not set, EntryPointToken represents a managed entrypoint. // If COMIMAGE_FLAGS_NATIVE_ENTRYPOINT is set, EntryPointRVA represents an RVA to a native entrypoint // (depricated for DLLs, use modules constructors intead). union { uint32_t EntryPointToken; uint32_t EntryPointRVA; }; // This is the blob of managed resources. Fetched using code:AssemblyNative.GetResource and // code:PEFile.GetResource and accessible from managed code from // System.Assembly.GetManifestResourceStream. The meta data has a table that maps names to offsets into // this blob, so logically the blob is a set of resources. IMAGE_DATA_DIRECTORY Resources; // IL assemblies can be signed with a public-private key to validate who created it. The signature goes // here if this feature is used. IMAGE_DATA_DIRECTORY StrongNameSignature; IMAGE_DATA_DIRECTORY CodeManagerTable; // Depricated, not used // Used for manged codee that has unmaanaged code inside it (or exports methods as unmanaged entry points) IMAGE_DATA_DIRECTORY VTableFixups; IMAGE_DATA_DIRECTORY ExportAddressTableJumps; // null for ordinary IL images. In NGEN images it points at a code:CORCOMPILE_HEADER structure. // In Ready2Run images it points to a READYTORUN_HEADER. IMAGE_DATA_DIRECTORY ManagedNativeHeader; } IMAGE_COR20_HEADER, *PIMAGE_COR20_HEADER; #else // !__IMAGE_COR20_HEADER_DEFINED__ // @TODO: This is required because we pull in the COM+ 2.0 PE header // definition from WinNT.h, and these constants have not yet propogated to there. // #define COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN 0x08 #define COMIMAGE_FLAGS_32BITPREFERRED 0x00020000 #endif // __IMAGE_COR20_HEADER_DEFINED__ // The most recent version. #define COR_CTOR_METHOD_NAME ".ctor" #define COR_CTOR_METHOD_NAME_W W(".ctor") #define COR_CCTOR_METHOD_NAME ".cctor" #define COR_CCTOR_METHOD_NAME_W W(".cctor") #define COR_ENUM_FIELD_NAME "value__" #define COR_ENUM_FIELD_NAME_W W("value__") // The predefined name for deleting a typeDef,MethodDef, FieldDef, Property and Event #define COR_DELETED_NAME_A "_Deleted" #define COR_DELETED_NAME_W W("_Deleted") #define COR_VTABLEGAP_NAME_A "_VtblGap" #define COR_VTABLEGAP_NAME_W W("_VtblGap") // We intentionally use strncmp so that we will ignore any suffix #define IsDeletedName(strName) (strncmp(strName, COR_DELETED_NAME_A, COR_DELETED_NAME_LENGTH) == 0) #define IsVtblGapName(strName) (strncmp(strName, COR_VTABLEGAP_NAME_A, COR_VTABLEGAP_NAME_LENGTH) == 0) // TypeDef/ExportedType attr bits, used by DefineTypeDef. typedef enum CorTypeAttr { // Use this mask to retrieve the type visibility information. tdVisibilityMask = 0x00000007, tdNotPublic = 0x00000000, // Class is not public scope. tdPublic = 0x00000001, // Class is public scope. tdNestedPublic = 0x00000002, // Class is nested with public visibility. tdNestedPrivate = 0x00000003, // Class is nested with private visibility. tdNestedFamily = 0x00000004, // Class is nested with family visibility. tdNestedAssembly = 0x00000005, // Class is nested with assembly visibility. tdNestedFamANDAssem = 0x00000006, // Class is nested with family and assembly visibility. tdNestedFamORAssem = 0x00000007, // Class is nested with family or assembly visibility. // Use this mask to retrieve class layout information tdLayoutMask = 0x00000018, tdAutoLayout = 0x00000000, // Class fields are auto-laid out tdSequentialLayout = 0x00000008, // Class fields are laid out sequentially tdExplicitLayout = 0x00000010, // Layout is supplied explicitly // end layout mask // Use this mask to retrieve class semantics information. tdClassSemanticsMask = 0x00000020, tdClass = 0x00000000, // Type is a class. tdInterface = 0x00000020, // Type is an interface. // end semantics mask // Special semantics in addition to class semantics. tdAbstract = 0x00000080, // Class is abstract tdSealed = 0x00000100, // Class is concrete and may not be extended tdSpecialName = 0x00000400, // Class name is special. Name describes how. // Implementation attributes. tdImport = 0x00001000, // Class / interface is imported tdSerializable = 0x00002000, // The class is Serializable. tdWindowsRuntime = 0x00004000, // The type is a Windows Runtime type // Use tdStringFormatMask to retrieve string information for native interop tdStringFormatMask = 0x00030000, tdAnsiClass = 0x00000000, // LPTSTR is interpreted as ANSI in this class tdUnicodeClass = 0x00010000, // LPTSTR is interpreted as UNICODE tdAutoClass = 0x00020000, // LPTSTR is interpreted automatically tdCustomFormatClass = 0x00030000, // A non-standard encoding specified by CustomFormatMask tdCustomFormatMask = 0x00C00000, // Use this mask to retrieve non-standard encoding information for native interop. The meaning of the values of these 2 bits is unspecified. // end string format mask tdBeforeFieldInit = 0x00100000, // Initialize the class any time before first static field access. tdForwarder = 0x00200000, // This ExportedType is a type forwarder. // Flags reserved for runtime use. tdReservedMask = 0x00040800, tdRTSpecialName = 0x00000800, // Runtime should check name encoding. tdHasSecurity = 0x00040000, // Class has security associate with it. } CorTypeAttr; // Macros for accessing the members of the CorTypeAttr. #define IsTdNotPublic(x) (((x) & tdVisibilityMask) == tdNotPublic) #define IsTdPublic(x) (((x) & tdVisibilityMask) == tdPublic) #define IsTdNestedPublic(x) (((x) & tdVisibilityMask) == tdNestedPublic) #define IsTdNestedPrivate(x) (((x) & tdVisibilityMask) == tdNestedPrivate) #define IsTdNestedFamily(x) (((x) & tdVisibilityMask) == tdNestedFamily) #define IsTdNestedAssembly(x) (((x) & tdVisibilityMask) == tdNestedAssembly) #define IsTdNestedFamANDAssem(x) (((x) & tdVisibilityMask) == tdNestedFamANDAssem) #define IsTdNestedFamORAssem(x) (((x) & tdVisibilityMask) == tdNestedFamORAssem) #define IsTdNested(x) (((x) & tdVisibilityMask) >= tdNestedPublic) #define IsTdAutoLayout(x) (((x) & tdLayoutMask) == tdAutoLayout) #define IsTdSequentialLayout(x) (((x) & tdLayoutMask) == tdSequentialLayout) #define IsTdExplicitLayout(x) (((x) & tdLayoutMask) == tdExplicitLayout) #define IsTdClass(x) (((x) & tdClassSemanticsMask) == tdClass) #define IsTdInterface(x) (((x) & tdClassSemanticsMask) == tdInterface) #define IsTdAbstract(x) ((x) & tdAbstract) #define IsTdSealed(x) ((x) & tdSealed) #define IsTdSpecialName(x) ((x) & tdSpecialName) #define IsTdImport(x) ((x) & tdImport) #define IsTdSerializable(x) ((x) & tdSerializable) #define IsTdWindowsRuntime(x) ((x) & tdWindowsRuntime) #define IsTdAnsiClass(x) (((x) & tdStringFormatMask) == tdAnsiClass) #define IsTdUnicodeClass(x) (((x) & tdStringFormatMask) == tdUnicodeClass) #define IsTdAutoClass(x) (((x) & tdStringFormatMask) == tdAutoClass) #define IsTdCustomFormatClass(x) (((x) & tdStringFormatMask) == tdCustomFormatClass) #define IsTdBeforeFieldInit(x) ((x) & tdBeforeFieldInit) #define IsTdForwarder(x) ((x) & tdForwarder) #define IsTdRTSpecialName(x) ((x) & tdRTSpecialName) #define IsTdHasSecurity(x) ((x) & tdHasSecurity) // MethodDef attr bits, Used by DefineMethod. typedef enum CorMethodAttr { // member access mask - Use this mask to retrieve accessibility information. mdMemberAccessMask = 0x0007, mdPrivateScope = 0x0000, // Member not referenceable. mdPrivate = 0x0001, // Accessible only by the parent type. mdFamANDAssem = 0x0002, // Accessible by sub-types only in this Assembly. mdAssem = 0x0003, // Accessibly by anyone in the Assembly. mdFamily = 0x0004, // Accessible only by type and sub-types. mdFamORAssem = 0x0005, // Accessibly by sub-types anywhere, plus anyone in assembly. mdPublic = 0x0006, // Accessibly by anyone who has visibility to this scope. // end member access mask // method contract attributes. mdStatic = 0x0010, // Defined on type, else per instance. mdFinal = 0x0020, // Method may not be overridden. mdVirtual = 0x0040, // Method virtual. mdHideBySig = 0x0080, // Method hides by name+sig, else just by name. // vtable layout mask - Use this mask to retrieve vtable attributes. mdVtableLayoutMask = 0x0100, mdReuseSlot = 0x0000, // The default. mdNewSlot = 0x0100, // Method always gets a new slot in the vtable. // end vtable layout mask // method implementation attributes. mdCheckAccessOnOverride = 0x0200, // Overridability is the same as the visibility. mdAbstract = 0x0400, // Method does not provide an implementation. mdSpecialName = 0x0800, // Method is special. Name describes how. // interop attributes mdPinvokeImpl = 0x2000, // Implementation is forwarded through pinvoke. mdUnmanagedExport = 0x0008, // Managed method exported via thunk to unmanaged code. // Reserved flags for runtime use only. mdReservedMask = 0xd000, mdRTSpecialName = 0x1000, // Runtime should check name encoding. mdHasSecurity = 0x4000, // Method has security associate with it. mdRequireSecObject = 0x8000, // Method calls another method containing security code. } CorMethodAttr; // Macros for accessing the members of CorMethodAttr. #define IsMdPrivateScope(x) (((x) & mdMemberAccessMask) == mdPrivateScope) #define IsMdPrivate(x) (((x) & mdMemberAccessMask) == mdPrivate) #define IsMdFamANDAssem(x) (((x) & mdMemberAccessMask) == mdFamANDAssem) #define IsMdAssem(x) (((x) & mdMemberAccessMask) == mdAssem) #define IsMdFamily(x) (((x) & mdMemberAccessMask) == mdFamily) #define IsMdFamORAssem(x) (((x) & mdMemberAccessMask) == mdFamORAssem) #define IsMdPublic(x) (((x) & mdMemberAccessMask) == mdPublic) #define IsMdStatic(x) ((x) & mdStatic) #define IsMdFinal(x) ((x) & mdFinal) #define IsMdVirtual(x) ((x) & mdVirtual) #define IsMdHideBySig(x) ((x) & mdHideBySig) #define IsMdReuseSlot(x) (((x) & mdVtableLayoutMask) == mdReuseSlot) #define IsMdNewSlot(x) (((x) & mdVtableLayoutMask) == mdNewSlot) #define IsMdCheckAccessOnOverride(x) ((x) & mdCheckAccessOnOverride) #define IsMdAbstract(x) ((x) & mdAbstract) #define IsMdSpecialName(x) ((x) & mdSpecialName) #define IsMdPinvokeImpl(x) ((x) & mdPinvokeImpl) #define IsMdUnmanagedExport(x) ((x) & mdUnmanagedExport) #define IsMdRTSpecialName(x) ((x) & mdRTSpecialName) #define IsMdInstanceInitializer(x, str) (((x) & mdRTSpecialName) && !strcmp((str), COR_CTOR_METHOD_NAME)) #define IsMdInstanceInitializerW(x, str) (((x) & mdRTSpecialName) && !wcscmp((str), COR_CTOR_METHOD_NAME_W)) #define IsMdClassConstructor(x, str) (((x) & mdRTSpecialName) && !strcmp((str), COR_CCTOR_METHOD_NAME)) #define IsMdClassConstructorW(x, str) (((x) & mdRTSpecialName) && !wcscmp((str), COR_CCTOR_METHOD_NAME_W)) #define IsMdHasSecurity(x) ((x) & mdHasSecurity) #define IsMdRequireSecObject(x) ((x) & mdRequireSecObject) // FieldDef attr bits, used by DefineField. typedef enum CorFieldAttr { // member access mask - Use this mask to retrieve accessibility information. fdFieldAccessMask = 0x0007, fdPrivateScope = 0x0000, // Member not referenceable. fdPrivate = 0x0001, // Accessible only by the parent type. fdFamANDAssem = 0x0002, // Accessible by sub-types only in this Assembly. fdAssembly = 0x0003, // Accessibly by anyone in the Assembly. fdFamily = 0x0004, // Accessible only by type and sub-types. fdFamORAssem = 0x0005, // Accessibly by sub-types anywhere, plus anyone in assembly. fdPublic = 0x0006, // Accessibly by anyone who has visibility to this scope. // end member access mask // field contract attributes. fdStatic = 0x0010, // Defined on type, else per instance. fdInitOnly = 0x0020, // Field may only be initialized, not written to after init. fdLiteral = 0x0040, // Value is compile time constant. fdNotSerialized = 0x0080, // Field does not have to be serialized when type is remoted. fdSpecialName = 0x0200, // field is special. Name describes how. // interop attributes fdPinvokeImpl = 0x2000, // Implementation is forwarded through pinvoke. // Reserved flags for runtime use only. fdReservedMask = 0x9500, fdRTSpecialName = 0x0400, // Runtime(metadata internal APIs) should check name encoding. fdHasFieldMarshal = 0x1000, // Field has marshalling information. fdHasDefault = 0x8000, // Field has default. fdHasFieldRVA = 0x0100, // Field has RVA. } CorFieldAttr; // Macros for accessing the members of CorFieldAttr. #define IsFdPrivateScope(x) (((x) & fdFieldAccessMask) == fdPrivateScope) #define IsFdPrivate(x) (((x) & fdFieldAccessMask) == fdPrivate) #define IsFdFamANDAssem(x) (((x) & fdFieldAccessMask) == fdFamANDAssem) #define IsFdAssembly(x) (((x) & fdFieldAccessMask) == fdAssembly) #define IsFdFamily(x) (((x) & fdFieldAccessMask) == fdFamily) #define IsFdFamORAssem(x) (((x) & fdFieldAccessMask) == fdFamORAssem) #define IsFdPublic(x) (((x) & fdFieldAccessMask) == fdPublic) #define IsFdStatic(x) ((x) & fdStatic) #define IsFdInitOnly(x) ((x) & fdInitOnly) #define IsFdLiteral(x) ((x) & fdLiteral) #define IsFdNotSerialized(x) ((x) & fdNotSerialized) #define IsFdPinvokeImpl(x) ((x) & fdPinvokeImpl) #define IsFdSpecialName(x) ((x) & fdSpecialName) #define IsFdHasFieldRVA(x) ((x) & fdHasFieldRVA) #define IsFdRTSpecialName(x) ((x) & fdRTSpecialName) #define IsFdHasFieldMarshal(x) ((x) & fdHasFieldMarshal) #define IsFdHasDefault(x) ((x) & fdHasDefault) // Param attr bits, used by DefineParam. typedef enum CorParamAttr { pdIn = 0x0001, // Param is [In] pdOut = 0x0002, // Param is [out] pdOptional = 0x0010, // Param is optional // Reserved flags for Runtime use only. pdReservedMask = 0xf000, pdHasDefault = 0x1000, // Param has default value. pdHasFieldMarshal = 0x2000, // Param has FieldMarshal. pdUnused = 0xcfe0, } CorParamAttr; // Macros for accessing the members of CorParamAttr. #define IsPdIn(x) ((x) & pdIn) #define IsPdOut(x) ((x) & pdOut) #define IsPdOptional(x) ((x) & pdOptional) #define IsPdHasDefault(x) ((x) & pdHasDefault) #define IsPdHasFieldMarshal(x) ((x) & pdHasFieldMarshal) // Property attr bits, used by DefineProperty. typedef enum CorPropertyAttr { prSpecialName = 0x0200, // property is special. Name describes how. // Reserved flags for Runtime use only. prReservedMask = 0xf400, prRTSpecialName = 0x0400, // Runtime(metadata internal APIs) should check name encoding. prHasDefault = 0x1000, // Property has default prUnused = 0xe9ff, } CorPropertyAttr; // Macros for accessing the members of CorPropertyAttr. #define IsPrSpecialName(x) ((x) & prSpecialName) #define IsPrRTSpecialName(x) ((x) & prRTSpecialName) #define IsPrHasDefault(x) ((x) & prHasDefault) // Event attr bits, used by DefineEvent. typedef enum CorEventAttr { evSpecialName = 0x0200, // event is special. Name describes how. // Reserved flags for Runtime use only. evReservedMask = 0x0400, evRTSpecialName = 0x0400, // Runtime(metadata internal APIs) should check name encoding. } CorEventAttr; // Macros for accessing the members of CorEventAttr. #define IsEvSpecialName(x) ((x) & evSpecialName) #define IsEvRTSpecialName(x) ((x) & evRTSpecialName) // MethodSemantic attr bits, used by DefineProperty, DefineEvent. typedef enum CorMethodSemanticsAttr { msSetter = 0x0001, // Setter for property msGetter = 0x0002, // Getter for property msOther = 0x0004, // other method for property or event msAddOn = 0x0008, // AddOn method for event msRemoveOn = 0x0010, // RemoveOn method for event msFire = 0x0020, // Fire method for event } CorMethodSemanticsAttr; // Macros for accessing the members of CorMethodSemanticsAttr. #define IsMsSetter(x) ((x) & msSetter) #define IsMsGetter(x) ((x) & msGetter) #define IsMsOther(x) ((x) & msOther) #define IsMsAddOn(x) ((x) & msAddOn) #define IsMsRemoveOn(x) ((x) & msRemoveOn) #define IsMsFire(x) ((x) & msFire) // DeclSecurity attr bits, used by DefinePermissionSet. typedef enum CorDeclSecurity { dclActionMask = 0x001f, // Mask allows growth of enum. dclActionNil = 0x0000, // dclRequest = 0x0001, // dclDemand = 0x0002, // dclAssert = 0x0003, // dclDeny = 0x0004, // dclPermitOnly = 0x0005, // dclLinktimeCheck = 0x0006, // dclInheritanceCheck = 0x0007, // dclRequestMinimum = 0x0008, // dclRequestOptional = 0x0009, // dclRequestRefuse = 0x000a, // dclPrejitGrant = 0x000b, // Persisted grant set at prejit time dclPrejitDenied = 0x000c, // Persisted denied set at prejit time dclNonCasDemand = 0x000d, // dclNonCasLinkDemand = 0x000e, // dclNonCasInheritance = 0x000f, // dclMaximumValue = 0x000f, // Maximum legal value } CorDeclSecurity; // Macros for accessing the members of CorDeclSecurity. #define IsDclActionNil(x) (((x) & dclActionMask) == dclActionNil) // Is this a demand that can trigger a stackwalk? #define IsDclActionAnyStackModifier(x) ((((x) & dclActionMask) == dclAssert) || \ (((x) & dclActionMask) == dclDeny) || \ (((x) & dclActionMask) == dclPermitOnly)) // Is this an assembly level attribute (i.e. not applicable on Type/Member)? #define IsAssemblyDclAction(x) (((x) >= dclRequestMinimum) && \ ((x) <= dclRequestRefuse)) // Is this an NGen only attribute? #define IsNGenOnlyDclAction(x) (((x) == dclPrejitGrant) || \ ((x) == dclPrejitDenied)) // MethodImpl attr bits, used by DefineMethodImpl. typedef enum CorMethodImpl { // code impl mask miCodeTypeMask = 0x0003, // Flags about code type. miIL = 0x0000, // Method impl is IL. miNative = 0x0001, // Method impl is native. miOPTIL = 0x0002, // Method impl is OPTIL miRuntime = 0x0003, // Method impl is provided by the runtime. // end code impl mask // managed mask miManagedMask = 0x0004, // Flags specifying whether the code is managed or unmanaged. miUnmanaged = 0x0004, // Method impl is unmanaged, otherwise managed. miManaged = 0x0000, // Method impl is managed. // end managed mask // implementation info and interop miForwardRef = 0x0010, // Indicates method is defined; used primarily in merge scenarios. miPreserveSig = 0x0080, // Indicates method sig is not to be mangled to do HRESULT conversion. miInternalCall = 0x1000, // Reserved for internal use. miSynchronized = 0x0020, // Method is single threaded through the body. miNoInlining = 0x0008, // Method may not be inlined. miAggressiveInlining = 0x0100, // Method should be inlined if possible. miNoOptimization = 0x0040, // Method may not be optimized. miAggressiveOptimization = 0x0200, // Method may contain hot code and should be aggressively optimized. // These are the flags that are allowed in MethodImplAttribute's Value // property. This should include everything above except the code impl // flags (which are used for MethodImplAttribute's MethodCodeType field). miUserMask = miManagedMask | miForwardRef | miPreserveSig | miInternalCall | miSynchronized | miNoInlining | miAggressiveInlining | miNoOptimization | miAggressiveOptimization, miMaxMethodImplVal = 0xffff, // Range check value } CorMethodImpl; // Macros for accesing the members of CorMethodImpl. #define IsMiIL(x) (((x) & miCodeTypeMask) == miIL) #define IsMiNative(x) (((x) & miCodeTypeMask) == miNative) #define IsMiOPTIL(x) (((x) & miCodeTypeMask) == miOPTIL) #define IsMiRuntime(x) (((x) & miCodeTypeMask) == miRuntime) #define IsMiUnmanaged(x) (((x) & miManagedMask) == miUnmanaged) #define IsMiManaged(x) (((x) & miManagedMask) == miManaged) #define IsMiForwardRef(x) ((x) & miForwardRef) #define IsMiPreserveSig(x) ((x) & miPreserveSig) #define IsMiInternalCall(x) ((x) & miInternalCall) #define IsMiSynchronized(x) ((x) & miSynchronized) #define IsMiNoInlining(x) ((x) & miNoInlining) #define IsMiAggressiveInlining(x) ((x) & miAggressiveInlining) #define IsMiNoOptimization(x) ((x) & miNoOptimization) #define IsMiAggressiveOptimization(x) (((x) & (miAggressiveOptimization | miNoOptimization)) == miAggressiveOptimization) // PinvokeMap attr bits, used by DefinePinvokeMap. typedef enum CorPinvokeMap { pmNoMangle = 0x0001, // Pinvoke is to use the member name as specified. // Use this mask to retrieve the CharSet information. pmCharSetMask = 0x0006, pmCharSetNotSpec = 0x0000, pmCharSetAnsi = 0x0002, pmCharSetUnicode = 0x0004, pmCharSetAuto = 0x0006, pmBestFitUseAssem = 0x0000, pmBestFitEnabled = 0x0010, pmBestFitDisabled = 0x0020, pmBestFitMask = 0x0030, pmThrowOnUnmappableCharUseAssem = 0x0000, pmThrowOnUnmappableCharEnabled = 0x1000, pmThrowOnUnmappableCharDisabled = 0x2000, pmThrowOnUnmappableCharMask = 0x3000, pmSupportsLastError = 0x0040, // Information about target function. Not relevant for fields. // None of the calling convention flags is relevant for fields. pmCallConvMask = 0x0700, pmCallConvWinapi = 0x0100, // Pinvoke will use native callconv appropriate to target windows platform. pmCallConvCdecl = 0x0200, pmCallConvStdcall = 0x0300, pmCallConvThiscall = 0x0400, // In M9, pinvoke will raise exception. pmCallConvFastcall = 0x0500, pmMaxValue = 0xFFFF, } CorPinvokeMap; // Macros for accessing the members of CorPinvokeMap #define IsPmNoMangle(x) ((x) & pmNoMangle) #define IsPmCharSetNotSpec(x) (((x) & pmCharSetMask) == pmCharSetNotSpec) #define IsPmCharSetAnsi(x) (((x) & pmCharSetMask) == pmCharSetAnsi) #define IsPmCharSetUnicode(x) (((x) & pmCharSetMask) == pmCharSetUnicode) #define IsPmCharSetAuto(x) (((x) & pmCharSetMask) == pmCharSetAuto) #define IsPmSupportsLastError(x) ((x) & pmSupportsLastError) #define IsPmCallConvWinapi(x) (((x) & pmCallConvMask) == pmCallConvWinapi) #define IsPmCallConvCdecl(x) (((x) & pmCallConvMask) == pmCallConvCdecl) #define IsPmCallConvStdcall(x) (((x) & pmCallConvMask) == pmCallConvStdcall) #define IsPmCallConvThiscall(x) (((x) & pmCallConvMask) == pmCallConvThiscall) #define IsPmCallConvFastcall(x) (((x) & pmCallConvMask) == pmCallConvFastcall) #define IsPmBestFitEnabled(x) (((x) & pmBestFitMask) == pmBestFitEnabled) #define IsPmBestFitDisabled(x) (((x) & pmBestFitMask) == pmBestFitDisabled) #define IsPmBestFitUseAssem(x) (((x) & pmBestFitMask) == pmBestFitUseAssem) #define IsPmThrowOnUnmappableCharEnabled(x) (((x) & pmThrowOnUnmappableCharMask) == pmThrowOnUnmappableCharEnabled) #define IsPmThrowOnUnmappableCharDisabled(x) (((x) & pmThrowOnUnmappableCharMask) == pmThrowOnUnmappableCharDisabled) #define IsPmThrowOnUnmappableCharUseAssem(x) (((x) & pmThrowOnUnmappableCharMask) == pmThrowOnUnmappableCharUseAssem) // Assembly attr bits, used by DefineAssembly. typedef enum CorAssemblyFlags { afPublicKey = 0x0001, // The assembly ref holds the full (unhashed) public key. afPA_None = 0x0000, // Processor Architecture unspecified afPA_MSIL = 0x0010, // Processor Architecture: neutral (PE32) afPA_x86 = 0x0020, // Processor Architecture: x86 (PE32) afPA_IA64 = 0x0030, // Processor Architecture: Itanium (PE32+) afPA_AMD64 = 0x0040, // Processor Architecture: AMD X64 (PE32+) afPA_ARM = 0x0050, // Processor Architecture: ARM (PE32) afPA_ARM64 = 0x0060, // Processor Architecture: ARM64 (PE32+) afPA_NoPlatform = 0x0070, // applies to any platform but cannot run on any (e.g. reference assembly), should not have "specified" set afPA_Specified = 0x0080, // Propagate PA flags to AssemblyRef record afPA_Mask = 0x0070, // Bits describing the processor architecture afPA_FullMask = 0x00F0, // Bits describing the PA incl. Specified afPA_Shift = 0x0004, // NOT A FLAG, shift count in PA flags <--> index conversion afEnableJITcompileTracking = 0x8000, // From "DebuggableAttribute". afDisableJITcompileOptimizer = 0x4000, // From "DebuggableAttribute". afDebuggableAttributeMask = 0xc000, afRetargetable = 0x0100, // The assembly can be retargeted (at runtime) to an // assembly from a different publisher. afContentType_Default = 0x0000, afContentType_WindowsRuntime = 0x0200, afContentType_Mask = 0x0E00, // Bits describing ContentType } CorAssemblyFlags; // Macros for accessing the members of CorAssemblyFlags. #define IsAfRetargetable(x) ((x) & afRetargetable) #define IsAfContentType_Default(x) (((x) & afContentType_Mask) == afContentType_Default) #define IsAfContentType_WindowsRuntime(x) (((x) & afContentType_Mask) == afContentType_WindowsRuntime) // Macros for accessing the Processor Architecture flags of CorAssemblyFlags. #define IsAfPA_MSIL(x) (((x) & afPA_Mask) == afPA_MSIL) #define IsAfPA_x86(x) (((x) & afPA_Mask) == afPA_x86) #define IsAfPA_IA64(x) (((x) & afPA_Mask) == afPA_IA64) #define IsAfPA_AMD64(x) (((x) & afPA_Mask) == afPA_AMD64) #define IsAfPA_ARM(x) (((x) & afPA_Mask) == afPA_ARM) #define IsAfPA_ARM64(x) (((x) & afPA_Mask) == afPA_ARM64) #define IsAfPA_NoPlatform(x) (((x) & afPA_FullMask) == afPA_NoPlatform) #define IsAfPA_Specified(x) ((x) & afPA_Specified) #define PAIndex(x) (((x) & afPA_Mask) >> afPA_Shift) #define PAFlag(x) (((x) << afPA_Shift) & afPA_Mask) #define PrepareForSaving(x) ((x) & (((x) & afPA_Specified) ? ~afPA_Specified : ~afPA_FullMask)) #define IsAfEnableJITcompileTracking(x) ((x) & afEnableJITcompileTracking) #define IsAfDisableJITcompileOptimizer(x) ((x) & afDisableJITcompileOptimizer) // Macros for accessing the public key flags of CorAssemblyFlags. #define IsAfPublicKey(x) ((x) & afPublicKey) #define IsAfPublicKeyToken(x) (((x) & afPublicKey) == 0) // ManifestResource attr bits, used by DefineManifestResource. typedef enum CorManifestResourceFlags { mrVisibilityMask = 0x0007, mrPublic = 0x0001, // The Resource is exported from the Assembly. mrPrivate = 0x0002, // The Resource is private to the Assembly. } CorManifestResourceFlags; // Macros for accessing the members of CorManifestResourceFlags. #define IsMrPublic(x) (((x) & mrVisibilityMask) == mrPublic) #define IsMrPrivate(x) (((x) & mrVisibilityMask) == mrPrivate) // File attr bits, used by DefineFile. typedef enum CorFileFlags { ffContainsMetaData = 0x0000, // This is not a resource file ffContainsNoMetaData = 0x0001, // This is a resource file or other non-metadata-containing file } CorFileFlags; // Macros for accessing the members of CorFileFlags. #define IsFfContainsMetaData(x) (!((x) & ffContainsNoMetaData)) #define IsFfContainsNoMetaData(x) ((x) & ffContainsNoMetaData) // PE file kind bits, returned by IMetaDataImport2::GetPEKind() typedef enum CorPEKind { peNot = 0x00000000, // not a PE file peILonly = 0x00000001, // flag IL_ONLY is set in COR header pe32BitRequired=0x00000002, // flag 32BITREQUIRED is set and 32BITPREFERRED is clear in COR header pe32Plus = 0x00000004, // PE32+ file (64 bit) pe32Unmanaged=0x00000008, // PE32 without COR header pe32BitPreferred=0x00000010 // flags 32BITREQUIRED and 32BITPREFERRED are set in COR header } CorPEKind; // GenericParam bits, used by DefineGenericParam. typedef enum CorGenericParamAttr { // Variance of type parameters, only applicable to generic parameters // for generic interfaces and delegates gpVarianceMask = 0x0003, gpNonVariant = 0x0000, gpCovariant = 0x0001, gpContravariant = 0x0002, // Special constraints, applicable to any type parameters gpSpecialConstraintMask = 0x001C, gpNoSpecialConstraint = 0x0000, gpReferenceTypeConstraint = 0x0004, // type argument must be a reference type gpNotNullableValueTypeConstraint = 0x0008, // type argument must be a value type but not Nullable gpDefaultConstructorConstraint = 0x0010, // type argument must have a public default constructor } CorGenericParamAttr; // structures and enums moved from COR.H typedef uint8_t COR_SIGNATURE; typedef COR_SIGNATURE* PCOR_SIGNATURE; // pointer to a cor sig. Not void* so that // the bytes can be incremented easily typedef const COR_SIGNATURE* PCCOR_SIGNATURE; typedef const char * MDUTF8CSTR; typedef char * MDUTF8STR; //***************************************************************************** // // Element type for Cor signature // //***************************************************************************** typedef enum CorElementType { ELEMENT_TYPE_END = 0x00, ELEMENT_TYPE_VOID = 0x01, ELEMENT_TYPE_BOOLEAN = 0x02, ELEMENT_TYPE_CHAR = 0x03, ELEMENT_TYPE_I1 = 0x04, ELEMENT_TYPE_U1 = 0x05, ELEMENT_TYPE_I2 = 0x06, ELEMENT_TYPE_U2 = 0x07, ELEMENT_TYPE_I4 = 0x08, ELEMENT_TYPE_U4 = 0x09, ELEMENT_TYPE_I8 = 0x0a, ELEMENT_TYPE_U8 = 0x0b, ELEMENT_TYPE_R4 = 0x0c, ELEMENT_TYPE_R8 = 0x0d, ELEMENT_TYPE_STRING = 0x0e, // every type above PTR will be simple type ELEMENT_TYPE_PTR = 0x0f, // PTR ELEMENT_TYPE_BYREF = 0x10, // BYREF // Please use ELEMENT_TYPE_VALUETYPE. ELEMENT_TYPE_VALUECLASS is deprecated. ELEMENT_TYPE_VALUETYPE = 0x11, // VALUETYPE ELEMENT_TYPE_CLASS = 0x12, // CLASS ELEMENT_TYPE_VAR = 0x13, // a class type variable VAR ELEMENT_TYPE_ARRAY = 0x14, // MDARRAY ... ... ELEMENT_TYPE_GENERICINST = 0x15, // GENERICINST ... ELEMENT_TYPE_TYPEDBYREF = 0x16, // TYPEDREF (it takes no args) a typed referece to some other type ELEMENT_TYPE_I = 0x18, // native integer size ELEMENT_TYPE_U = 0x19, // native unsigned integer size ELEMENT_TYPE_FNPTR = 0x1b, // FNPTR ELEMENT_TYPE_OBJECT = 0x1c, // Shortcut for System.Object ELEMENT_TYPE_SZARRAY = 0x1d, // Shortcut for single dimension zero lower bound array // SZARRAY ELEMENT_TYPE_MVAR = 0x1e, // a method type variable MVAR // This is only for binding ELEMENT_TYPE_CMOD_REQD = 0x1f, // required C modifier : E_T_CMOD_REQD ELEMENT_TYPE_CMOD_OPT = 0x20, // optional C modifier : E_T_CMOD_OPT // This is for signatures generated internally (which will not be persisted in any way). ELEMENT_TYPE_INTERNAL = 0x21, // INTERNAL // Note that this is the max of base type excluding modifiers ELEMENT_TYPE_MAX = 0x22, // first invalid element type ELEMENT_TYPE_MODIFIER = 0x40, ELEMENT_TYPE_SENTINEL = 0x01 | ELEMENT_TYPE_MODIFIER, // sentinel for varargs ELEMENT_TYPE_PINNED = 0x05 | ELEMENT_TYPE_MODIFIER, } CorElementType; //***************************************************************************** // // Serialization types for Custom attribute support // //***************************************************************************** typedef enum CorSerializationType { SERIALIZATION_TYPE_UNDEFINED = 0, SERIALIZATION_TYPE_BOOLEAN = ELEMENT_TYPE_BOOLEAN, SERIALIZATION_TYPE_CHAR = ELEMENT_TYPE_CHAR, SERIALIZATION_TYPE_I1 = ELEMENT_TYPE_I1, SERIALIZATION_TYPE_U1 = ELEMENT_TYPE_U1, SERIALIZATION_TYPE_I2 = ELEMENT_TYPE_I2, SERIALIZATION_TYPE_U2 = ELEMENT_TYPE_U2, SERIALIZATION_TYPE_I4 = ELEMENT_TYPE_I4, SERIALIZATION_TYPE_U4 = ELEMENT_TYPE_U4, SERIALIZATION_TYPE_I8 = ELEMENT_TYPE_I8, SERIALIZATION_TYPE_U8 = ELEMENT_TYPE_U8, SERIALIZATION_TYPE_R4 = ELEMENT_TYPE_R4, SERIALIZATION_TYPE_R8 = ELEMENT_TYPE_R8, SERIALIZATION_TYPE_STRING = ELEMENT_TYPE_STRING, SERIALIZATION_TYPE_SZARRAY = ELEMENT_TYPE_SZARRAY, // Shortcut for single dimension zero lower bound array SERIALIZATION_TYPE_TYPE = 0x50, SERIALIZATION_TYPE_TAGGED_OBJECT= 0x51, SERIALIZATION_TYPE_FIELD = 0x53, SERIALIZATION_TYPE_PROPERTY = 0x54, SERIALIZATION_TYPE_ENUM = 0x55 } CorSerializationType; // // Calling convention flags. // typedef enum CorUnmanagedCallingConvention { IMAGE_CEE_UNMANAGED_CALLCONV_C = 0x1, IMAGE_CEE_UNMANAGED_CALLCONV_STDCALL = 0x2, IMAGE_CEE_UNMANAGED_CALLCONV_THISCALL = 0x3, IMAGE_CEE_UNMANAGED_CALLCONV_FASTCALL = 0x4, } CorUnmanagedCallingConvention; typedef enum CorCallingConvention { IMAGE_CEE_CS_CALLCONV_DEFAULT = 0x0, IMAGE_CEE_CS_CALLCONV_C = IMAGE_CEE_UNMANAGED_CALLCONV_C, IMAGE_CEE_CS_CALLCONV_STDCALL = IMAGE_CEE_UNMANAGED_CALLCONV_STDCALL, IMAGE_CEE_CS_CALLCONV_THISCALL = IMAGE_CEE_UNMANAGED_CALLCONV_THISCALL, IMAGE_CEE_CS_CALLCONV_FASTCALL = IMAGE_CEE_UNMANAGED_CALLCONV_FASTCALL, IMAGE_CEE_CS_CALLCONV_VARARG = 0x5, IMAGE_CEE_CS_CALLCONV_FIELD = 0x6, IMAGE_CEE_CS_CALLCONV_LOCAL_SIG = 0x7, IMAGE_CEE_CS_CALLCONV_PROPERTY = 0x8, IMAGE_CEE_CS_CALLCONV_UNMANAGED = 0x9, // Unmanaged calling convention encoded as modopts IMAGE_CEE_CS_CALLCONV_GENERICINST = 0xa, // generic method instantiation IMAGE_CEE_CS_CALLCONV_NATIVEVARARG = 0xb, // used ONLY for 64bit vararg PInvoke calls IMAGE_CEE_CS_CALLCONV_MAX = 0xc, // first invalid calling convention // The high bits of the calling convention convey additional info IMAGE_CEE_CS_CALLCONV_MASK = 0x0f, // Calling convention is bottom 4 bits IMAGE_CEE_CS_CALLCONV_HASTHIS = 0x20, // Top bit indicates a 'this' parameter IMAGE_CEE_CS_CALLCONV_EXPLICITTHIS = 0x40, // This parameter is explicitly in the signature IMAGE_CEE_CS_CALLCONV_GENERIC = 0x10, // Generic method sig with explicit number of type arguments (precedes ordinary parameter count) // 0x80 is reserved for internal use } CorCallingConvention; #define IMAGE_CEE_CS_CALLCONV_INSTANTIATION IMAGE_CEE_CS_CALLCONV_GENERICINST typedef enum CorArgType { IMAGE_CEE_CS_END = 0x0, IMAGE_CEE_CS_VOID = 0x1, IMAGE_CEE_CS_I4 = 0x2, IMAGE_CEE_CS_I8 = 0x3, IMAGE_CEE_CS_R4 = 0x4, IMAGE_CEE_CS_R8 = 0x5, IMAGE_CEE_CS_PTR = 0x6, IMAGE_CEE_CS_OBJECT = 0x7, IMAGE_CEE_CS_STRUCT4 = 0x8, IMAGE_CEE_CS_STRUCT32 = 0x9, IMAGE_CEE_CS_BYVALUE = 0xA, } CorArgType; //***************************************************************************** // // Native type for N-Direct // //***************************************************************************** typedef enum CorNativeType { // Kepp this in-synch with ndp\clr\src\BCL\System\runtime\interopservices\attributes.cs NATIVE_TYPE_END = 0x0, //DEPRECATED NATIVE_TYPE_VOID = 0x1, //DEPRECATED NATIVE_TYPE_BOOLEAN = 0x2, // (4 byte boolean value: TRUE = non-zero, FALSE = 0) NATIVE_TYPE_I1 = 0x3, NATIVE_TYPE_U1 = 0x4, NATIVE_TYPE_I2 = 0x5, NATIVE_TYPE_U2 = 0x6, NATIVE_TYPE_I4 = 0x7, NATIVE_TYPE_U4 = 0x8, NATIVE_TYPE_I8 = 0x9, NATIVE_TYPE_U8 = 0xa, NATIVE_TYPE_R4 = 0xb, NATIVE_TYPE_R8 = 0xc, NATIVE_TYPE_SYSCHAR = 0xd, //DEPRECATED NATIVE_TYPE_VARIANT = 0xe, //DEPRECATED NATIVE_TYPE_CURRENCY = 0xf, NATIVE_TYPE_PTR = 0x10, //DEPRECATED NATIVE_TYPE_DECIMAL = 0x11, //DEPRECATED NATIVE_TYPE_DATE = 0x12, //DEPRECATED NATIVE_TYPE_BSTR = 0x13, //COMINTEROP NATIVE_TYPE_LPSTR = 0x14, NATIVE_TYPE_LPWSTR = 0x15, NATIVE_TYPE_LPTSTR = 0x16, NATIVE_TYPE_FIXEDSYSSTRING = 0x17, NATIVE_TYPE_OBJECTREF = 0x18, //DEPRECATED NATIVE_TYPE_IUNKNOWN = 0x19, //COMINTEROP NATIVE_TYPE_IDISPATCH = 0x1a, //COMINTEROP NATIVE_TYPE_STRUCT = 0x1b, NATIVE_TYPE_INTF = 0x1c, //COMINTEROP NATIVE_TYPE_SAFEARRAY = 0x1d, //COMINTEROP NATIVE_TYPE_FIXEDARRAY = 0x1e, NATIVE_TYPE_INT = 0x1f, NATIVE_TYPE_UINT = 0x20, NATIVE_TYPE_NESTEDSTRUCT = 0x21, //DEPRECATED (use NATIVE_TYPE_STRUCT) NATIVE_TYPE_BYVALSTR = 0x22, //COMINTEROP NATIVE_TYPE_ANSIBSTR = 0x23, //COMINTEROP NATIVE_TYPE_TBSTR = 0x24, // select BSTR or ANSIBSTR depending on platform //COMINTEROP NATIVE_TYPE_VARIANTBOOL = 0x25, // (2-byte boolean value: TRUE = -1, FALSE = 0) //COMINTEROP NATIVE_TYPE_FUNC = 0x26, NATIVE_TYPE_ASANY = 0x28, NATIVE_TYPE_ARRAY = 0x2a, NATIVE_TYPE_LPSTRUCT = 0x2b, NATIVE_TYPE_CUSTOMMARSHALER = 0x2c, // Custom marshaler native type. This must be followed // by a string of the following format: // "Native type name/0Custom marshaler type name/0Optional cookie/0" // Or // "{Native type GUID}/0Custom marshaler type name/0Optional cookie/0" NATIVE_TYPE_ERROR = 0x2d, // This native type coupled with ELEMENT_TYPE_I4 will map to VT_HRESULT //COMINTEROP NATIVE_TYPE_IINSPECTABLE = 0x2e, NATIVE_TYPE_HSTRING = 0x2f, NATIVE_TYPE_LPUTF8STR = 0x30, // utf-8 string NATIVE_TYPE_MAX = 0x50, // first invalid element type } CorNativeType; enum { DESCR_GROUP_METHODDEF = 0, // DESCR group for MethodDefs DESCR_GROUP_METHODIMPL, // DESCR group for MethodImpls }; /***********************************************************************************/ // a COR_ILMETHOD_SECT is a generic container for attributes that are private // to a particular method. The COR_ILMETHOD structure points to one of these // (see GetSect()). COR_ILMETHOD_SECT can decode the Kind of attribute (but not // its internal data layout, and can skip past the current attibute to find the // Next one. The overhead for COR_ILMETHOD_SECT is a minimum of 2 bytes. typedef enum CorILMethodSect // codes that identify attributes { CorILMethod_Sect_Reserved = 0, CorILMethod_Sect_EHTable = 1, CorILMethod_Sect_OptILTable = 2, CorILMethod_Sect_KindMask = 0x3F, // The mask for decoding the type code CorILMethod_Sect_FatFormat = 0x40, // fat format CorILMethod_Sect_MoreSects = 0x80, // there is another attribute after this one } CorILMethodSect; /************************************/ /* NOTE this structure must be DWORD aligned!! */ typedef struct IMAGE_COR_ILMETHOD_SECT_SMALL { uint8_t Kind; uint8_t DataSize; } IMAGE_COR_ILMETHOD_SECT_SMALL; /************************************/ /* NOTE this structure must be DWORD aligned!! */ typedef struct IMAGE_COR_ILMETHOD_SECT_FAT { unsigned Kind : 8; unsigned DataSize : 24; } IMAGE_COR_ILMETHOD_SECT_FAT; /***********************************************************************************/ /* If COR_ILMETHOD_SECT_HEADER::Kind() = CorILMethod_Sect_EHTable then the attribute is a list of exception handling clauses. There are two formats, fat or small */ typedef enum CorExceptionFlag // definitions for the Flags field below (for both big and small) { COR_ILEXCEPTION_CLAUSE_NONE, // This is a typed handler COR_ILEXCEPTION_CLAUSE_OFFSETLEN = 0x0000, // Deprecated COR_ILEXCEPTION_CLAUSE_DEPRECATED = 0x0000, // Deprecated COR_ILEXCEPTION_CLAUSE_FILTER = 0x0001, // If this bit is on, then this EH entry is for a filter COR_ILEXCEPTION_CLAUSE_FINALLY = 0x0002, // This clause is a finally clause COR_ILEXCEPTION_CLAUSE_FAULT = 0x0004, // Fault clause (finally that is called on exception only) COR_ILEXCEPTION_CLAUSE_DUPLICATED = 0x0008, // duplicated clause. This clause was duplicated to a funclet which was pulled out of line } CorExceptionFlag; /***********************************/ typedef struct IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT { CorExceptionFlag Flags; uint32_t TryOffset; uint32_t TryLength; // relative to start of try block uint32_t HandlerOffset; uint32_t HandlerLength; // relative to start of handler union { uint32_t ClassToken; // use for type-based exception handlers uint32_t FilterOffset; // use for filter-based exception handlers (COR_ILEXCEPTION_FILTER is set) }; } IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT; typedef struct IMAGE_COR_ILMETHOD_SECT_EH_FAT { IMAGE_COR_ILMETHOD_SECT_FAT SectFat; IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT Clauses[1]; // actually variable size } IMAGE_COR_ILMETHOD_SECT_EH_FAT; /***********************************/ typedef struct IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL { #ifdef HOST_64BIT unsigned Flags : 16; #else // !HOST_64BIT CorExceptionFlag Flags : 16; #endif unsigned TryOffset : 16; unsigned TryLength : 8; // relative to start of try block unsigned HandlerOffset : 16; unsigned HandlerLength : 8; // relative to start of handler union { uint32_t ClassToken; uint32_t FilterOffset; }; } IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL; /***********************************/ typedef struct IMAGE_COR_ILMETHOD_SECT_EH_SMALL { IMAGE_COR_ILMETHOD_SECT_SMALL SectSmall; uint16_t Reserved; IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL Clauses[1]; // actually variable size } IMAGE_COR_ILMETHOD_SECT_EH_SMALL; typedef union IMAGE_COR_ILMETHOD_SECT_EH { IMAGE_COR_ILMETHOD_SECT_EH_SMALL Small; IMAGE_COR_ILMETHOD_SECT_EH_FAT Fat; } IMAGE_COR_ILMETHOD_SECT_EH; /***********************************************************************************/ // Legal values for // * code:IMAGE_COR_ILMETHOD_FAT::Flags or // * code:IMAGE_COR_ILMETHOD_TINY::Flags_CodeSize fields. // // The only semantic flag at present is CorILMethod_InitLocals typedef enum CorILMethodFlags { CorILMethod_InitLocals = 0x0010, // call default constructor on all local vars CorILMethod_MoreSects = 0x0008, // there is another attribute after this one CorILMethod_CompressedIL = 0x0040, // Not used. // Indicates the format for the COR_ILMETHOD header CorILMethod_FormatShift = 3, CorILMethod_FormatMask = ((1 << CorILMethod_FormatShift) - 1), CorILMethod_TinyFormat = 0x0002, // use this code if the code size is even CorILMethod_SmallFormat = 0x0000, CorILMethod_FatFormat = 0x0003, CorILMethod_TinyFormat1 = 0x0006, // use this code if the code size is odd } CorILMethodFlags; /***************************************************************************/ /* Used when the method is tiny (< 64 bytes), and there are no local vars */ typedef struct IMAGE_COR_ILMETHOD_TINY { uint8_t Flags_CodeSize; } IMAGE_COR_ILMETHOD_TINY; /************************************/ // This strucuture is the 'fat' layout, where no compression is attempted. // Note that this structure can be added on at the end, thus making it extensible typedef struct IMAGE_COR_ILMETHOD_FAT { unsigned Flags : 12; // Flags see code:CorILMethodFlags unsigned Size : 4; // size in DWords of this structure (currently 3) unsigned MaxStack : 16; // maximum number of items (I4, I, I8, obj ...), on the operand stack uint32_t CodeSize; // size of the code mdSignature LocalVarSigTok; // token that indicates the signature of the local vars (0 means none) } IMAGE_COR_ILMETHOD_FAT; // an IMAGE_COR_ILMETHOD holds the IL instructions for a individual method. To save space they come in two // flavors Fat and Tiny. Conceptually Tiny is just a compressed version of Fat, so code:IMAGE_COR_ILMETHOD_FAT // is the logical structure for all headers. Conceptually this blob holds the IL, the Exception Handling // Tables, the local variable information and some flags. typedef union IMAGE_COR_ILMETHOD { IMAGE_COR_ILMETHOD_TINY Tiny; IMAGE_COR_ILMETHOD_FAT Fat; } IMAGE_COR_ILMETHOD; //***************************************************************************** // Non VOS v-table entries. Define an array of these pointed to by // IMAGE_COR20_HEADER.VTableFixups. Each entry describes a contiguous array of // v-table slots. The slots start out initialized to the meta data token value // for the method they need to call. At image load time, the CLR Loader will // turn each entry into a pointer to machine code for the CPU and can be // called directly. //***************************************************************************** typedef struct IMAGE_COR_VTABLEFIXUP { uint32_t RVA; // Offset of v-table array in image. uint16_t Count; // How many entries at location. uint16_t Type; // COR_VTABLE_xxx type of entries. } IMAGE_COR_VTABLEFIXUP; //***************************************************************************** //***************************************************************************** // // M E T A - D A T A D E C L A R A T I O N S // //***************************************************************************** //***************************************************************************** //***************************************************************************** // // Enums for SetOption API. // //***************************************************************************** // flags for MetaDataCheckDuplicatesFor typedef enum CorCheckDuplicatesFor { MDDupAll = 0xffffffff, MDDupENC = MDDupAll, MDNoDupChecks = 0x00000000, MDDupTypeDef = 0x00000001, MDDupInterfaceImpl = 0x00000002, MDDupMethodDef = 0x00000004, MDDupTypeRef = 0x00000008, MDDupMemberRef = 0x00000010, MDDupCustomAttribute = 0x00000020, MDDupParamDef = 0x00000040, MDDupPermission = 0x00000080, MDDupProperty = 0x00000100, MDDupEvent = 0x00000200, MDDupFieldDef = 0x00000400, MDDupSignature = 0x00000800, MDDupModuleRef = 0x00001000, MDDupTypeSpec = 0x00002000, MDDupImplMap = 0x00004000, MDDupAssemblyRef = 0x00008000, MDDupFile = 0x00010000, MDDupExportedType = 0x00020000, MDDupManifestResource = 0x00040000, MDDupGenericParam = 0x00080000, MDDupMethodSpec = 0x00100000, MDDupGenericParamConstraint = 0x00200000, // gap for debug junk MDDupAssembly = 0x10000000, // This is the default behavior on metadata. It will check duplicates for TypeRef, MemberRef, Signature, TypeSpec and MethodSpec. MDDupDefault = MDNoDupChecks | MDDupTypeRef | MDDupMemberRef | MDDupSignature | MDDupTypeSpec | MDDupMethodSpec, } CorCheckDuplicatesFor; // flags for MetaDataRefToDefCheck typedef enum CorRefToDefCheck { // default behavior is to always perform TypeRef to TypeDef and MemberRef to MethodDef/FieldDef optimization MDRefToDefDefault = 0x00000003, MDRefToDefAll = 0xffffffff, MDRefToDefNone = 0x00000000, MDTypeRefToDef = 0x00000001, MDMemberRefToDef = 0x00000002 } CorRefToDefCheck; // MetaDataNotificationForTokenMovement typedef enum CorNotificationForTokenMovement { // default behavior is to notify TypeRef, MethodDef, MemberRef, and FieldDef token remaps MDNotifyDefault = 0x0000000f, MDNotifyAll = 0xffffffff, MDNotifyNone = 0x00000000, MDNotifyMethodDef = 0x00000001, MDNotifyMemberRef = 0x00000002, MDNotifyFieldDef = 0x00000004, MDNotifyTypeRef = 0x00000008, MDNotifyTypeDef = 0x00000010, MDNotifyParamDef = 0x00000020, MDNotifyInterfaceImpl = 0x00000040, MDNotifyProperty = 0x00000080, MDNotifyEvent = 0x00000100, MDNotifySignature = 0x00000200, MDNotifyTypeSpec = 0x00000400, MDNotifyCustomAttribute = 0x00000800, MDNotifySecurityValue = 0x00001000, MDNotifyPermission = 0x00002000, MDNotifyModuleRef = 0x00004000, MDNotifyNameSpace = 0x00008000, MDNotifyAssemblyRef = 0x01000000, MDNotifyFile = 0x02000000, MDNotifyExportedType = 0x04000000, MDNotifyResource = 0x08000000, } CorNotificationForTokenMovement; typedef enum CorSetENC { MDSetENCOn = 0x00000001, // Deprecated name. MDSetENCOff = 0x00000002, // Deprecated name. MDUpdateENC = 0x00000001, // ENC mode. Tokens don't move; can be updated. MDUpdateFull = 0x00000002, // "Normal" update mode. MDUpdateExtension = 0x00000003, // Extension mode. Tokens don't move, adds only. MDUpdateIncremental = 0x00000004, // Incremental compilation MDUpdateDelta = 0x00000005, // If ENC on, save only deltas. MDUpdateMask = 0x00000007, } CorSetENC; #define IsENCDelta(x) (((x) & MDUpdateMask) == MDUpdateDelta) // flags used in SetOption when pair with MetaDataErrorIfEmitOutOfOrder guid typedef enum CorErrorIfEmitOutOfOrder { MDErrorOutOfOrderDefault = 0x00000000, // default not to generate any error MDErrorOutOfOrderNone = 0x00000000, // do not generate error for out of order emit MDErrorOutOfOrderAll = 0xffffffff, // generate out of order emit for method, field, param, property, and event MDMethodOutOfOrder = 0x00000001, // generate error when methods are emitted out of order MDFieldOutOfOrder = 0x00000002, // generate error when fields are emitted out of order MDParamOutOfOrder = 0x00000004, // generate error when params are emitted out of order MDPropertyOutOfOrder = 0x00000008, // generate error when properties are emitted out of order MDEventOutOfOrder = 0x00000010, // generate error when events are emitted out of order } CorErrorIfEmitOutOfOrder; // flags used in SetOption when pair with MetaDataImportOption guid typedef enum CorImportOptions { MDImportOptionDefault = 0x00000000, // default to skip over deleted records MDImportOptionAll = 0xFFFFFFFF, // Enumerate everything MDImportOptionAllTypeDefs = 0x00000001, // all of the typedefs including the deleted typedef MDImportOptionAllMethodDefs = 0x00000002, // all of the methoddefs including the deleted ones MDImportOptionAllFieldDefs = 0x00000004, // all of the fielddefs including the deleted ones MDImportOptionAllProperties = 0x00000008, // all of the properties including the deleted ones MDImportOptionAllEvents = 0x00000010, // all of the events including the deleted ones MDImportOptionAllCustomAttributes = 0x00000020, // all of the custom attributes including the deleted ones MDImportOptionAllExportedTypes = 0x00000040, // all of the ExportedTypes including the deleted ones } CorImportOptions; // flags for MetaDataThreadSafetyOptions typedef enum CorThreadSafetyOptions { // default behavior is to have thread safety turn off. This means that MetaData APIs will not take reader/writer // lock. Clients is responsible to make sure the properly thread synchornization when using MetaData APIs. MDThreadSafetyDefault = 0x00000000, MDThreadSafetyOff = 0x00000000, MDThreadSafetyOn = 0x00000001, } CorThreadSafetyOptions; // flags for MetaDataLinkerOptions typedef enum CorLinkerOptions { // default behavior is not to keep private types MDAssembly = 0x00000000, MDNetModule = 0x00000001, } CorLinkerOptions; // flags for MetaDataMergeOptions typedef enum MergeFlags { MergeFlagsNone = 0, MergeManifest = 0x00000001, DropMemberRefCAs = 0x00000002, NoDupCheck = 0x00000004, MergeExportedTypes = 0x00000008 } MergeFlags; // flags for MetaDataPreserveLocalRefs typedef enum CorLocalRefPreservation { MDPreserveLocalRefsNone = 0x00000000, MDPreserveLocalTypeRef = 0x00000001, MDPreserveLocalMemberRef = 0x00000002 } CorLocalRefPreservation; // // struct used to retrieve field offset // used by GetClassLayout and SetClassLayout // #ifndef _COR_FIELD_OFFSET_ #define _COR_FIELD_OFFSET_ typedef struct COR_FIELD_OFFSET { mdFieldDef ridOfField; uint32_t ulOffset; } COR_FIELD_OFFSET; #endif // // Token tags. // typedef enum CorTokenType { mdtModule = 0x00000000, // mdtTypeRef = 0x01000000, // mdtTypeDef = 0x02000000, // mdtFieldDef = 0x04000000, // mdtMethodDef = 0x06000000, // mdtParamDef = 0x08000000, // mdtInterfaceImpl = 0x09000000, // mdtMemberRef = 0x0a000000, // mdtCustomAttribute = 0x0c000000, // mdtPermission = 0x0e000000, // mdtSignature = 0x11000000, // mdtEvent = 0x14000000, // mdtProperty = 0x17000000, // mdtMethodImpl = 0x19000000, // mdtModuleRef = 0x1a000000, // mdtTypeSpec = 0x1b000000, // mdtAssembly = 0x20000000, // mdtAssemblyRef = 0x23000000, // mdtFile = 0x26000000, // mdtExportedType = 0x27000000, // mdtManifestResource = 0x28000000, // mdtNestedClass = 0x29000000, // mdtGenericParam = 0x2a000000, // mdtMethodSpec = 0x2b000000, // mdtGenericParamConstraint = 0x2c000000, mdtString = 0x70000000, // mdtName = 0x71000000, // mdtBaseType = 0x72000000, // Leave this on the high end value. This does not correspond to metadata table } CorTokenType; // // Build / decompose tokens. // #define RidToToken(rid,tktype) ((rid) |= (tktype)) #define TokenFromRid(rid,tktype) ((rid) | (tktype)) #define RidFromToken(tk) ((RID) ((tk) & 0x00ffffff)) #define TypeFromToken(tk) ((ULONG32)((tk) & 0xff000000)) #define IsNilToken(tk) ((RidFromToken(tk)) == 0) // // Nil tokens // #define mdTokenNil ((mdToken)0) #define mdModuleNil ((mdModule)mdtModule) #define mdTypeRefNil ((mdTypeRef)mdtTypeRef) #define mdTypeDefNil ((mdTypeDef)mdtTypeDef) #define mdFieldDefNil ((mdFieldDef)mdtFieldDef) #define mdMethodDefNil ((mdMethodDef)mdtMethodDef) #define mdParamDefNil ((mdParamDef)mdtParamDef) #define mdInterfaceImplNil ((mdInterfaceImpl)mdtInterfaceImpl) #define mdMemberRefNil ((mdMemberRef)mdtMemberRef) #define mdCustomAttributeNil ((mdCustomAttribute)mdtCustomAttribute) #define mdPermissionNil ((mdPermission)mdtPermission) #define mdSignatureNil ((mdSignature)mdtSignature) #define mdEventNil ((mdEvent)mdtEvent) #define mdPropertyNil ((mdProperty)mdtProperty) #define mdModuleRefNil ((mdModuleRef)mdtModuleRef) #define mdTypeSpecNil ((mdTypeSpec)mdtTypeSpec) #define mdAssemblyNil ((mdAssembly)mdtAssembly) #define mdAssemblyRefNil ((mdAssemblyRef)mdtAssemblyRef) #define mdFileNil ((mdFile)mdtFile) #define mdExportedTypeNil ((mdExportedType)mdtExportedType) #define mdManifestResourceNil ((mdManifestResource)mdtManifestResource) #define mdGenericParamNil ((mdGenericParam)mdtGenericParam) #define mdGenericParamConstraintNil ((mdGenericParamConstraint)mdtGenericParamConstraint) #define mdMethodSpecNil ((mdMethodSpec)mdtMethodSpec) #define mdStringNil ((mdString)mdtString) // // Open bits. // typedef enum CorOpenFlags { ofRead = 0x00000000, // Open scope for read ofWrite = 0x00000001, // Open scope for write. ofReadWriteMask = 0x00000001, // Mask for read/write bit. ofCopyMemory = 0x00000002, // Open scope with memory. Ask metadata to maintain its own copy of memory. ofReadOnly = 0x00000010, // Open scope for read. Will be unable to QI for a IMetadataEmit* interface ofTakeOwnership = 0x00000020, // The memory was allocated with CoTaskMemAlloc and will be freed by the metadata // These are obsolete and are ignored. // ofCacheImage = 0x00000004, // EE maps but does not do relocations or verify image // ofManifestMetadata = 0x00000008, // Open scope on ngen image, return the manifest metadata instead of the IL metadata ofNoTypeLib = 0x00000080, // Don't OpenScope on a typelib. ofNoTransform = 0x00001000, // Disable automatic transforms of .winmd files. // Internal bits ofReserved1 = 0x00000100, // Reserved for internal use. ofReserved2 = 0x00000200, // Reserved for internal use. ofReserved3 = 0x00000400, // Reserved for internal use. ofReserved = 0xffffef40 // All the reserved bits. } CorOpenFlags; #define IsOfRead(x) (((x) & ofReadWriteMask) == ofRead) #define IsOfReadWrite(x) (((x) & ofReadWriteMask) == ofWrite) #define IsOfCopyMemory(x) ((x) & ofCopyMemory) #define IsOfReadOnly(x) ((x) & ofReadOnly) #define IsOfTakeOwnership(x) ((x) & ofTakeOwnership) #define IsOfReserved(x) (((x) & ofReserved) != 0) // // Type of file mapping returned by code:IMetaDataInfo::GetFileMapping. // typedef enum CorFileMapping { fmFlat = 0, // Flat file mapping - file is mapped as data file (code:SEC_IMAGE flag was not // passed to code:CreateFileMapping). fmExecutableImage = 1, // Executable image file mapping - file is mapped for execution // (either via code:LoadLibrary or code:CreateFileMapping with code:SEC_IMAGE flag). } CorFileMapping; typedef CorTypeAttr CorRegTypeAttr; // // Opaque type for an enumeration handle. // typedef void *HCORENUM; // Note that this must be kept in sync with System.AttributeTargets. typedef enum CorAttributeTargets { catAssembly = 0x0001, catModule = 0x0002, catClass = 0x0004, catStruct = 0x0008, catEnum = 0x0010, catConstructor = 0x0020, catMethod = 0x0040, catProperty = 0x0080, catField = 0x0100, catEvent = 0x0200, catInterface = 0x0400, catParameter = 0x0800, catDelegate = 0x1000, catGenericParameter = 0x4000, catAll = catAssembly | catModule | catClass | catStruct | catEnum | catConstructor | catMethod | catProperty | catField | catEvent | catInterface | catParameter | catDelegate | catGenericParameter, catClassMembers = catClass | catStruct | catEnum | catConstructor | catMethod | catProperty | catField | catEvent | catDelegate | catInterface, } CorAttributeTargets; #ifndef MACROS_NOT_SUPPORTED // // Some well-known custom attributes // #ifndef IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS #define IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS (IMAGE_CEE_CS_CALLCONV_DEFAULT | IMAGE_CEE_CS_CALLCONV_HASTHIS) #endif #define INTEROP_DISPID_TYPE_W W("System.Runtime.InteropServices.DispIdAttribute") #define INTEROP_DISPID_TYPE "System.Runtime.InteropServices.DispIdAttribute" #define INTEROP_DISPID_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I4} #define INTEROP_INTERFACETYPE_TYPE_W W("System.Runtime.InteropServices.InterfaceTypeAttribute") #define INTEROP_INTERFACETYPE_TYPE "System.Runtime.InteropServices.InterfaceTypeAttribute" #define INTEROP_INTERFACETYPE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2} #define INTEROP_CLASSINTERFACE_TYPE_W W("System.Runtime.InteropServices.ClassInterfaceAttribute") #define INTEROP_CLASSINTERFACE_TYPE "System.Runtime.InteropServices.ClassInterfaceAttribute" #define INTEROP_CLASSINTERFACE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2} #define INTEROP_COMVISIBLE_TYPE_W W("System.Runtime.InteropServices.ComVisibleAttribute") #define INTEROP_COMVISIBLE_TYPE "System.Runtime.InteropServices.ComVisibleAttribute" #define INTEROP_COMVISIBLE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_BOOLEAN} #define INTEROP_COMREGISTERFUNCTION_TYPE_W W("System.Runtime.InteropServices.ComRegisterFunctionAttribute") #define INTEROP_COMREGISTERFUNCTION_TYPE "System.Runtime.InteropServices.ComRegisterFunctionAttribute" #define INTEROP_COMREGISTERFUNCTION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} #define INTEROP_COMUNREGISTERFUNCTION_TYPE_W W("System.Runtime.InteropServices.ComUnregisterFunctionAttribute") #define INTEROP_COMUNREGISTERFUNCTION_TYPE "System.Runtime.InteropServices.ComUnregisterFunctionAttribute" #define INTEROP_COMUNREGISTERFUNCTION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} #define INTEROP_IMPORTEDFROMTYPELIB_TYPE_W W("System.Runtime.InteropServices.ImportedFromTypeLibAttribute") #define INTEROP_IMPORTEDFROMTYPELIB_TYPE "System.Runtime.InteropServices.ImportedFromTypeLibAttribute" #define INTEROP_IMPORTEDFROMTYPELIB_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING} #define INTEROP_PRIMARYINTEROPASSEMBLY_TYPE_W W("System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute") #define INTEROP_PRIMARYINTEROPASSEMBLY_TYPE "System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute" #define INTEROP_PRIMARYINTEROPASSEMBLY_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 2, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I4, ELEMENT_TYPE_I4} #define INTEROP_IDISPATCHIMPL_TYPE_W W("System.Runtime.InteropServices.IDispatchImplAttribute") #define INTEROP_IDISPATCHIMPL_TYPE "System.Runtime.InteropServices.IDispatchImplAttribute" #define INTEROP_IDISPATCHIMPL_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2} #define INTEROP_COMSOURCEINTERFACES_TYPE_W W("System.Runtime.InteropServices.ComSourceInterfacesAttribute") #define INTEROP_COMSOURCEINTERFACES_TYPE "System.Runtime.InteropServices.ComSourceInterfacesAttribute" #define INTEROP_COMSOURCEINTERFACES_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING} #define INTEROP_COMDEFAULTINTERFACE_TYPE_W W("System.Runtime.InteropServices.ComDefaultInterfaceAttribute") #define INTEROP_COMDEFAULTINTERFACE_TYPE "System.Runtime.InteropServices.ComDefaultInterfaceAttribute" #define INTEROP_COMCONVERSIONLOSS_TYPE_W W("System.Runtime.InteropServices.ComConversionLossAttribute") #define INTEROP_COMCONVERSIONLOSS_TYPE "System.Runtime.InteropServices.ComConversionLossAttribute" #define INTEROP_COMCONVERSIONLOSS_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} #define INTEROP_BESTFITMAPPING_TYPE_W W("System.Runtime.InteropServices.BestFitMappingAttribute") #define INTEROP_BESTFITMAPPING_TYPE "System.Runtime.InteropServices.BestFitMappingAttribute" #define INTEROP_BESTFITMAPPING_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 2, ELEMENT_TYPE_VOID, ELEMENT_TYPE_BOOLEAN, ELEMENT_TYPE_BOOLEAN} #define INTEROP_TYPELIBTYPE_TYPE_W W("System.Runtime.InteropServices.TypeLibTypeAttribute") #define INTEROP_TYPELIBTYPE_TYPE "System.Runtime.InteropServices.TypeLibTypeAttribute" #define INTEROP_TYPELIBTYPE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2} #define INTEROP_TYPELIBFUNC_TYPE_W W("System.Runtime.InteropServices.TypeLibFuncAttribute") #define INTEROP_TYPELIBFUNC_TYPE "System.Runtime.InteropServices.TypeLibFuncAttribute" #define INTEROP_TYPELIBFUNC_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2} #define INTEROP_TYPELIBVAR_TYPE_W W("System.Runtime.InteropServices.TypeLibVarAttribute") #define INTEROP_TYPELIBVAR_TYPE "System.Runtime.InteropServices.TypeLibVarAttribute" #define INTEROP_TYPELIBVAR_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2} #define INTEROP_MARSHALAS_TYPE_W W("System.Runtime.InteropServices.MarshalAsAttribute") #define INTEROP_MARSHALAS_TYPE "System.Runtime.InteropServices.MarshalAsAttribute" #define INTEROP_MARSHALAS_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2} #define INTEROP_COMIMPORT_TYPE_W W("System.Runtime.InteropServices.ComImportAttribute") #define INTEROP_COMIMPORT_TYPE "System.Runtime.InteropServices.ComImportAttribute" #define INTEROP_COMIMPORT_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} #define INTEROP_GUID_TYPE_W W("System.Runtime.InteropServices.GuidAttribute") #define INTEROP_GUID_TYPE "System.Runtime.InteropServices.GuidAttribute" #define INTEROP_GUID_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING} #define INTEROP_DEFAULTMEMBER_TYPE_W W("System.Reflection.DefaultMemberAttribute") #define INTEROP_DEFAULTMEMBER_TYPE "System.Reflection.DefaultMemberAttribute" #define INTEROP_DEFAULTMEMBER_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING} #define INTEROP_COMEMULATE_TYPE_W W("System.Runtime.InteropServices.ComEmulateAttribute") #define INTEROP_COMEMULATE_TYPE "System.Runtime.InteropServices.ComEmulateAttribute" #define INTEROP_COMEMULATE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING} #define INTEROP_PRESERVESIG_TYPE_W W("System.Runtime.InteropServices.PreserveSigAttribure") #define INTEROP_PRESERVESIG_TYPE "System.Runtime.InteropServices.PreserveSigAttribure" #define INTEROP_PRESERVESIG_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_BOOLEAN} #define INTEROP_IN_TYPE_W W("System.Runtime.InteropServices.InAttribute") #define INTEROP_IN_TYPE "System.Runtime.InteropServices.InAttribute" #define INTEROP_IN_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} #define INTEROP_OUT_TYPE_W W("System.Runtime.InteropServices.OutAttribute") #define INTEROP_OUT_TYPE "System.Runtime.InteropServices.OutAttribute" #define INTEROP_OUT_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} #define INTEROP_COMALIASNAME_TYPE_W W("System.Runtime.InteropServices.ComAliasNameAttribute") #define INTEROP_COMALIASNAME_TYPE "System.Runtime.InteropServices.ComAliasNameAttribute" #define INTEROP_COMALIASNAME_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING} #define INTEROP_PARAMARRAY_TYPE_W W("System.ParamArrayAttribute") #define INTEROP_PARAMARRAY_TYPE "System.ParamArrayAttribute" #define INTEROP_PARAMARRAY_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} #define INTEROP_LCIDCONVERSION_TYPE_W W("System.Runtime.InteropServices.LCIDConversionAttribute") #define INTEROP_LCIDCONVERSION_TYPE "System.Runtime.InteropServices.LCIDConversionAttribute" #define INTEROP_LCIDCONVERSION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I4} #define INTEROP_COMSUBSTITUTABLEINTERFACE_TYPE_W W("System.Runtime.InteropServices.ComSubstitutableInterfaceAttribute") #define INTEROP_COMSUBSTITUTABLEINTERFACE_TYPE "System.Runtime.InteropServices.ComSubstitutableInterfaceAttribute" #define INTEROP_COMSUBSTITUTABLEINTERFACE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} #define INTEROP_DECIMALVALUE_TYPE_W W("System.Runtime.CompilerServices.DecimalConstantAttribute") #define INTEROP_DECIMALVALUE_TYPE "System.Runtime.CompilerServices.DecimalConstantAttribute" #define INTEROP_DECIMALVALUE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 5, ELEMENT_TYPE_VOID, ELEMENT_TYPE_U1, ELEMENT_TYPE_U1, ELEMENT_TYPE_U4, ELEMENT_TYPE_U4, ELEMENT_TYPE_U4} #define INTEROP_DATETIMEVALUE_TYPE_W W("System.Runtime.CompilerServices.DateTimeConstantAttribute") #define INTEROP_DATETIMEVALUE_TYPE "System.Runtime.CompilerServices.DateTimeConstantAttribute" #define INTEROP_DATETIMEVALUE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I8} #define INTEROP_IUNKNOWNVALUE_TYPE_W W("System.Runtime.CompilerServices.IUnknownConstantAttribute") #define INTEROP_IUNKNOWNVALUE_TYPE "System.Runtime.CompilerServices.IUnknownConstantAttribute" #define INTEROP_IUNKNOWNVALUE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} #define INTEROP_IDISPATCHVALUE_TYPE_W W("System.Runtime.CompilerServices.IDispatchConstantAttribute") #define INTEROP_IDISPATCHVALUE_TYPE "System.Runtime.CompilerServices.IDispatchConstantAttribute" #define INTEROP_IDISPATCHVALUE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} #define INTEROP_AUTOPROXY_TYPE_W W("System.Runtime.InteropServices.AutomationProxyAttribute") #define INTEROP_AUTOPROXY_TYPE "System.Runtime.InteropServices.AutomationProxyAttribute" #define INTEROP_AUTOPROXY_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_BOOLEAN} #define INTEROP_TYPELIBIMPORTCLASS_TYPE_W W("System.Runtime.InteropServices.TypeLibImportClassAttribute") #define INTEROP_TYPELIBIMPORTCLASS_TYPE "System.Runtime.InteropServices.TypeLibImportClassAttribute" #define INTEROP_TYPELIBVERSION_TYPE_W W("System.Runtime.InteropServices.TypeLibVersionAttribute") #define INTEROP_TYPELIBVERSION_TYPE "System.Runtime.InteropServices.TypeLibVersionAttribute" #define INTEROP_TYPELIBVERSION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 2, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2, ELEMENT_TYPE_I2} #define INTEROP_COMCOMPATIBLEVERSION_TYPE_W W("System.Runtime.InteropServices.ComCompatibleVersionAttribute") #define INTEROP_COMCOMPATIBLEVERSION_TYPE "System.Runtime.InteropServices.ComCompatibleVersionAttribute" #define INTEROP_COMCOMPATIBLEVERSION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 4, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2, ELEMENT_TYPE_I2, ELEMENT_TYPE_I2, ELEMENT_TYPE_I2} #define INTEROP_COMEVENTINTERFACE_TYPE_W W("System.Runtime.InteropServices.ComEventInterfaceAttribute") #define INTEROP_COMEVENTINTERFACE_TYPE "System.Runtime.InteropServices.ComEventInterfaceAttribute" #define INTEROP_COCLASS_TYPE_W W("System.Runtime.InteropServices.CoClassAttribute") #define INTEROP_COCLASS_TYPE "System.Runtime.InteropServices.CoClassAttribute" #define INTEROP_SERIALIZABLE_TYPE_W W("System.SerializableAttribute") #define INTEROP_SERIALIZABLE_TYPE "System.SerializableAttribute" #define INTEROP_SERIALIZABLE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} #define INTEROP_SETWIN32CONTEXTINIDISPATCHATTRIBUTE_TYPE_W W("System.Runtime.InteropServices.SetWin32ContextInIDispatchAttribute") #define INTEROP_SETWIN32CONTEXTINIDISPATCHATTRIBUTE_TYPE "System.Runtime.InteropServices.SetWin32ContextInIDispatchAttribute" #define INTEROP_SETWIN32CONTEXTINIDISPATCHATTRIBUTE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} #define FORWARD_INTEROP_STUB_METHOD_TYPE_W W("System.Runtime.InteropServices.ManagedToNativeComInteropStubAttribute") #define FORWARD_INTEROP_STUB_METHOD_TYPE "System.Runtime.InteropServices.ManagedToNativeComInteropStubAttribute" #define FRIEND_ASSEMBLY_TYPE_W W("System.Runtime.CompilerServices.InternalsVisibleToAttribute") #define FRIEND_ASSEMBLY_TYPE "System.Runtime.CompilerServices.InternalsVisibleToAttribute" #define FRIEND_ASSEMBLY_TYPE_NAMESPACE "System.Runtime.CompilerServices" #define FRIEND_ASSEMBLY_TYPE_NAME "InternalsVisibleToAttribute" #define FRIEND_ASSEMBLY_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 2, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING, ELEMENT_TYPE_BOOLEAN} #define SUBJECT_ASSEMBLY_TYPE_W W("System.Runtime.CompilerServices.IgnoresAccessChecksToAttribute") #define SUBJECT_ASSEMBLY_TYPE "System.Runtime.CompilerServices.IgnoresAccessChecksToAttribute" #define SUBJECT_ASSEMBLY_TYPE_NAMESPACE "System.Runtime.CompilerServices" #define SUBJECT_ASSEMBLY_TYPE_NAME "IgnoresAccessChecksToAttribute" #define SUBJECT_ASSEMBLY_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING} #define DEFAULTDOMAIN_STA_TYPE_W W("System.STAThreadAttribute") #define DEFAULTDOMAIN_STA_TYPE "System.STAThreadAttribute" #define DEFAULTDOMAIN_STA_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} #define DEFAULTDOMAIN_MTA_TYPE_W W("System.MTAThreadAttribute") #define DEFAULTDOMAIN_MTA_TYPE "System.MTAThreadAttribute" #define DEFAULTDOMAIN_MTA_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} #define NONVERSIONABLE_TYPE_W W("System.Runtime.Versioning.NonVersionableAttribute") #define NONVERSIONABLE_TYPE "System.Runtime.Versioning.NonVersionableAttribute" #define DEBUGGABLE_ATTRIBUTE_TYPE_W W("System.Diagnostics.DebuggableAttribute") #define DEBUGGABLE_ATTRIBUTE_TYPE "System.Diagnostics.DebuggableAttribute" #define DEBUGGABLE_ATTRIBUTE_TYPE_NAMESPACE "System.Diagnostics" #define DEBUGGABLE_ATTRIBUTE_TYPE_NAME "DebuggableAttribute" // Keep in sync with CompilationRelaxations.cs typedef enum CompilationRelaxationsEnum { CompilationRelaxations_NoStringInterning = 0x0008, } CompilationRelaxationEnum; #define COMPILATIONRELAXATIONS_TYPE_W W("System.Runtime.CompilerServices.CompilationRelaxationsAttribute") #define COMPILATIONRELAXATIONS_TYPE "System.Runtime.CompilerServices.CompilationRelaxationsAttribute" // Keep in sync with RuntimeCompatibilityAttribute.cs #define RUNTIMECOMPATIBILITY_TYPE_W W("System.Runtime.CompilerServices.RuntimeCompatibilityAttribute") #define RUNTIMECOMPATIBILITY_TYPE "System.Runtime.CompilerServices.RuntimeCompatibilityAttribute" // Keep in sync with AssemblySettingAttributes.cs typedef enum NGenHintEnum { NGenDefault = 0x0000, // No preference specified NGenEager = 0x0001, // NGen at install time NGenLazy = 0x0002, // NGen after install time NGenNever = 0x0003 // Assembly should not be ngened } NGenHintEnum; typedef enum LoadHintEnum { LoadDefault = 0x0000, // No preference specified LoadAlways = 0x0001, // Dependency is always loaded LoadSometimes = 0x0002, // Dependency is sometimes loaded LoadNever = 0x0003 // Dependency is never loaded } LoadHintEnum; #define DEFAULTDEPENDENCY_TYPE_W W("System.Runtime.CompilerServices.DefaultDependencyAttribute") #define DEFAULTDEPENDENCY_TYPE "System.Runtime.CompilerServices.DefaultDependencyAttribute" #define DEPENDENCY_TYPE_W W("System.Runtime.CompilerServices.DependencyAttribute") #define DEPENDENCY_TYPE "System.Runtime.CompilerServices.DependencyAttribute" #define CMOD_CALLCONV_NAMESPACE_OLD "System.Runtime.InteropServices" #define CMOD_CALLCONV_NAMESPACE "System.Runtime.CompilerServices" #define CMOD_CALLCONV_NAME_CDECL "CallConvCdecl" #define CMOD_CALLCONV_NAME_STDCALL "CallConvStdcall" #define CMOD_CALLCONV_NAME_THISCALL "CallConvThiscall" #define CMOD_CALLCONV_NAME_FASTCALL "CallConvFastcall" #define CMOD_CALLCONV_NAME_SUPPRESSGCTRANSITION "CallConvSuppressGCTransition" #define CMOD_CALLCONV_NAME_MEMBERFUNCTION "CallConvMemberFunction" #endif // MACROS_NOT_SUPPORTED // // GetSaveSize accuracy // #ifndef _CORSAVESIZE_DEFINED_ #define _CORSAVESIZE_DEFINED_ typedef enum CorSaveSize { cssAccurate = 0x0000, // Find exact save size, accurate but slower. cssQuick = 0x0001, // Estimate save size, may pad estimate, but faster. cssDiscardTransientCAs = 0x0002, // remove all of the CAs of discardable types } CorSaveSize; #endif #define COR_IS_METHOD_MANAGED_IL(flags) (((flags) & 0xf) == (miIL | miManaged)) #define COR_IS_METHOD_MANAGED_OPTIL(flags) (((flags) & 0xf) == (miOPTIL | miManaged)) #define COR_IS_METHOD_MANAGED_NATIVE(flags) (((flags) & 0xf) == (miNative | miManaged)) #define COR_IS_METHOD_UNMANAGED_NATIVE(flags) (((flags) & 0xf) == (miNative | miUnmanaged)) // // Enum used with NATIVE_TYPE_ARRAY. // typedef enum NativeTypeArrayFlags { ntaSizeParamIndexSpecified = 0x0001, ntaReserved = 0xfffe // All the reserved bits. } NativeTypeArrayFlags; // // Enum used for HFA type recognition. // Supported across architectures, so that it can be used in altjits and cross-compilation. typedef enum CorInfoHFAElemType : unsigned { CORINFO_HFA_ELEM_NONE, CORINFO_HFA_ELEM_FLOAT, CORINFO_HFA_ELEM_DOUBLE, CORINFO_HFA_ELEM_VECTOR64, CORINFO_HFA_ELEM_VECTOR128, } CorInfoHFAElemType; // // Opaque types for security properties and values. // typedef void * PSECURITY_PROPS ; typedef void * PSECURITY_VALUE ; typedef void ** PPSECURITY_PROPS ; typedef void ** PPSECURITY_VALUE ; //------------------------------------- //--- Security data structures //------------------------------------- // Descriptor for a single security custom attribute. typedef struct COR_SECATTR { mdMemberRef tkCtor; // Ref to constructor of security attribute. const void *pCustomAttribute; // Blob describing ctor args and field/property values. uint32_t cbCustomAttribute; // Length of the above blob. } COR_SECATTR; #endif // __CORHDR_H__ ProcDump-for-Linux-2.2/profiler/inc/corhlpr.h000066400000000000000000000517631447614355600212370ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. /***************************************************************************** ** ** ** Corhlpr.h - ** ** ** *****************************************************************************/ #ifndef __CORHLPR_H__ #define __CORHLPR_H__ #if defined(_MSC_VER) && defined(HOST_X86) && !defined(FPO_ON) #pragma optimize("y", on) // Small critical routines, don't put in EBP frame #define FPO_ON 1 #define CORHLPR_TURNED_FPO_ON 1 #endif #include "cor.h" #include "corhdr.h" #include "corerror.h" #include "unreachable.h" // This header is consumed both within the runtime and externally. In the former // case we need to wrap memory allocations, in the latter there is no // infrastructure to support this. Detect which way we're building and provide a // very simple abstraction layer (handles allocating bytes only). #ifdef _BLD_CLR #include "new.hpp" #define NEW_NOTHROW(_bytes) new (nothrow) BYTE[_bytes] #define NEW_THROWS(_bytes) new BYTE[_bytes] void DECLSPEC_NORETURN ThrowOutOfMemory(); inline void DECLSPEC_NORETURN THROW_OUT_OF_MEMORY() { ThrowOutOfMemory(); } #else #define NEW_NOTHROW(_bytes) new BYTE[_bytes] #define NEW_THROWS(_bytes) __CorHlprNewThrows(_bytes) static inline void DECLSPEC_NORETURN __CorHlprThrowOOM() { RaiseException(STATUS_NO_MEMORY, 0, 0, NULL); __UNREACHABLE(); } static inline BYTE *__CorHlprNewThrows(size_t bytes) { BYTE *pbMemory = new BYTE[bytes]; if (pbMemory == NULL) __CorHlprThrowOOM(); return pbMemory; } inline void DECLSPEC_NORETURN THROW_OUT_OF_MEMORY() { __CorHlprThrowOOM(); } #endif //***************************************************************************** // There are a set of macros commonly used in the helpers which you will want // to override to get richer behavior. The following defines what is needed // if you chose not to do the extra work. //***************************************************************************** #ifndef IfFailGoto #define IfFailGoto(EXPR, LABEL) \ do { hr = (EXPR); if(FAILED(hr)) { goto LABEL; } } while (0) #endif #ifndef IfFailGo #define IfFailGo(EXPR) IfFailGoto(EXPR, ErrExit) #endif #ifndef IfFailRet #define IfFailRet(EXPR) do { hr = (EXPR); if(FAILED(hr)) { return (hr); } } while (0) #endif #ifndef IfNullRet #define IfNullRet(EXPR) do { if ((EXPR) == NULL){ return (E_OUTOFMEMORY); } } while (0) #endif #ifndef _ASSERTE #define _ASSERTE(expr) #endif #ifndef COUNTOF #define COUNTOF(a) (sizeof(a) / sizeof(*a)) #endif #if !BIGENDIAN #define VAL16(x) x #define VAL32(x) x #endif //***************************************************************************** // //***** Macro to assist with cleaning up local static variables // //***************************************************************************** #define CHECK_LOCAL_STATIC_VAR(x) \ x \ //***************************************************************************** // //***** Utility helpers // //***************************************************************************** #define MAX_CLASSNAME_LENGTH 1024 //***************************************************************************** // //***** Signature helpers // //***************************************************************************** inline bool isCallConv(unsigned sigByte, CorCallingConvention conv) { return ((sigByte & IMAGE_CEE_CS_CALLCONV_MASK) == (unsigned) conv); } //***************************************************************************** // //***** File format helper classes // //***************************************************************************** //***************************************************************************** typedef struct tagCOR_ILMETHOD_SECT_SMALL : IMAGE_COR_ILMETHOD_SECT_SMALL { //Data follows const BYTE* Data() const { return(((const BYTE*) this) + sizeof(struct tagCOR_ILMETHOD_SECT_SMALL)); } bool IsSmall() const { return (Kind & CorILMethod_Sect_FatFormat) == 0; } bool More() const { return (Kind & CorILMethod_Sect_MoreSects) != 0; } } COR_ILMETHOD_SECT_SMALL; /************************************/ /* NOTE this structure must be DWORD aligned!! */ typedef struct tagCOR_ILMETHOD_SECT_FAT : IMAGE_COR_ILMETHOD_SECT_FAT { //Data follows const BYTE* Data() const { return(((const BYTE*) this) + sizeof(struct tagCOR_ILMETHOD_SECT_FAT)); } //Endian-safe wrappers unsigned GetKind() const { /* return Kind; */ return *(BYTE*)this; } void SetKind(unsigned kind) { /* Kind = kind; */ *(BYTE*)this = (BYTE)kind; } unsigned GetDataSize() const { /* return DataSize; */ BYTE* p = (BYTE*)this; return ((unsigned)*(p+1)) | (((unsigned)*(p+2)) << 8) | (((unsigned)*(p+3)) << 16); } void SetDataSize(unsigned datasize) { /* DataSize = dataSize; */ BYTE* p = (BYTE*)this; *(p+1) = (BYTE)(datasize); *(p+2) = (BYTE)(datasize >> 8); *(p+3) = (BYTE)(datasize >> 16); } } COR_ILMETHOD_SECT_FAT; typedef struct tagCOR_ILMETHOD_SECT_EH_CLAUSE_FAT : public IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT { //Endian-safe wrappers CorExceptionFlag GetFlags() const { return (CorExceptionFlag)VAL32((unsigned)Flags); } void SetFlags(CorExceptionFlag flags) { Flags = (CorExceptionFlag)VAL32((unsigned)flags); } DWORD GetTryOffset() const { return VAL32(TryOffset); } void SetTryOffset(DWORD Offset) { TryOffset = VAL32(Offset); } DWORD GetTryLength() const { return VAL32(TryLength); } void SetTryLength(DWORD Length) { TryLength = VAL32(Length); } DWORD GetHandlerOffset() const { return VAL32(HandlerOffset); } void SetHandlerOffset(DWORD Offset) { HandlerOffset = VAL32(Offset); } DWORD GetHandlerLength() const { return VAL32(HandlerLength); } void SetHandlerLength(DWORD Length) { HandlerLength = VAL32(Length); } DWORD GetClassToken() const { return VAL32(ClassToken); } void SetClassToken(DWORD tok) { ClassToken = VAL32(tok); } DWORD GetFilterOffset() const { return VAL32(FilterOffset); } void SetFilterOffset(DWORD offset) { FilterOffset = VAL32(offset); } } COR_ILMETHOD_SECT_EH_CLAUSE_FAT; //***************************************************************************** struct COR_ILMETHOD_SECT_EH_FAT : public COR_ILMETHOD_SECT_FAT { static unsigned Size(unsigned ehCount) { return (sizeof(COR_ILMETHOD_SECT_EH_FAT) + sizeof(IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT) * (ehCount-1)); } IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT Clauses[1]; // actually variable size }; typedef struct tagCOR_ILMETHOD_SECT_EH_CLAUSE_SMALL : public IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL { //Endian-safe wrappers CorExceptionFlag GetFlags() const { return (CorExceptionFlag)VAL16((SHORT)Flags); } void SetFlags(CorExceptionFlag flags) { Flags = (CorExceptionFlag)VAL16((SHORT)flags); } DWORD GetTryOffset() const { return VAL16(TryOffset); } void SetTryOffset(DWORD Offset) { _ASSERTE((Offset & ~0xffff) == 0); TryOffset = VAL16(Offset); } DWORD GetTryLength() const { return TryLength; } void SetTryLength(DWORD Length) { _ASSERTE((Length & ~0xff) == 0); TryLength = Length; } DWORD GetHandlerOffset() const { return VAL16(HandlerOffset); } void SetHandlerOffset(DWORD Offset) { _ASSERTE((Offset & ~0xffff) == 0); HandlerOffset = VAL16(Offset); } DWORD GetHandlerLength() const { return HandlerLength; } void SetHandlerLength(DWORD Length) { _ASSERTE((Length & ~0xff) == 0); HandlerLength = Length; } DWORD GetClassToken() const { return VAL32(ClassToken); } void SetClassToken(DWORD tok) { ClassToken = VAL32(tok); } DWORD GetFilterOffset() const { return VAL32(FilterOffset); } void SetFilterOffset(DWORD offset) { FilterOffset = VAL32(offset); } } COR_ILMETHOD_SECT_EH_CLAUSE_SMALL; //***************************************************************************** struct COR_ILMETHOD_SECT_EH_SMALL : public COR_ILMETHOD_SECT_SMALL { static unsigned Size(unsigned ehCount) { return (sizeof(COR_ILMETHOD_SECT_EH_SMALL) + sizeof(IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL) * (ehCount-1)); } WORD Reserved; // alignment padding IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL Clauses[1]; // actually variable size }; /************************************/ /* NOTE this structure must be DWORD aligned!! */ struct COR_ILMETHOD_SECT { bool More() const { return((AsSmall()->Kind & CorILMethod_Sect_MoreSects) != 0); } CorILMethodSect Kind() const { return((CorILMethodSect) (AsSmall()->Kind & CorILMethod_Sect_KindMask)); } const COR_ILMETHOD_SECT* Next() const { if (!More()) return(0); return ((COR_ILMETHOD_SECT*)Align(((BYTE *)this) + DataSize())); } const BYTE* Data() const { if (IsFat()) return(AsFat()->Data()); return(AsSmall()->Data()); } unsigned DataSize() const { if (Kind() == CorILMethod_Sect_EHTable) { // VB and MC++ shipped with bug where they have not accounted for size of COR_ILMETHOD_SECT_EH_XXX // in DataSize. To avoid breaking these images, we will align the size of EH sections up. This works // because IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_XXX is bigger than COR_ILMETHOD_SECT_EH_XXX // (see VSWhidbey #99031 and related bugs for details). if (IsFat()) return Fat.Size(Fat.GetDataSize() / sizeof(IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT)); else return Small.Size(Small.DataSize / sizeof(IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL)); } else { if (IsFat()) return(AsFat()->GetDataSize()); return(AsSmall()->DataSize); } } friend struct COR_ILMETHOD; friend struct tagCOR_ILMETHOD_FAT; friend struct tagCOR_ILMETHOD_TINY; bool IsFat() const { return((AsSmall()->Kind & CorILMethod_Sect_FatFormat) != 0); } static const void* Align(const void* p) { return((void*) ((((UINT_PTR) p) + 3) & ~3)); } protected: const COR_ILMETHOD_SECT_FAT* AsFat() const { return((COR_ILMETHOD_SECT_FAT*) this); } const COR_ILMETHOD_SECT_SMALL* AsSmall() const { return((COR_ILMETHOD_SECT_SMALL*) this); } public: // The body is either a COR_ILMETHOD_SECT_SMALL or COR_ILMETHOD_SECT_FAT // (as indicated by the CorILMethod_Sect_FatFormat bit union { COR_ILMETHOD_SECT_EH_SMALL Small; COR_ILMETHOD_SECT_EH_FAT Fat; }; }; /***********************************/ // exported functions (implementation in Format\Format.cpp: extern "C" { IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT* __stdcall SectEH_EHClause(void *pSectEH, unsigned idx, IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT* buff); // compute the size of the section (best format) // codeSize is the size of the method // deprecated unsigned __stdcall SectEH_SizeWithCode(unsigned ehCount, unsigned codeSize); // will return worse-case size and then Emit will return actual size unsigned __stdcall SectEH_SizeWorst(unsigned ehCount); // will return exact size which will match the size returned by Emit unsigned __stdcall SectEH_SizeExact(unsigned ehCount, IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT* clauses); // emit the section (best format); unsigned __stdcall SectEH_Emit(unsigned size, unsigned ehCount, IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT* clauses, BOOL moreSections, BYTE* outBuff, ULONG* ehTypeOffsets = 0); } // extern "C" struct COR_ILMETHOD_SECT_EH : public COR_ILMETHOD_SECT { unsigned EHCount() const { return (unsigned)(IsFat() ? (Fat.GetDataSize() / sizeof(IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT)) : (Small.DataSize / sizeof(IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL))); } // return one clause in its fat form. Use 'buff' if needed const IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT* EHClause(unsigned idx, IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT* buff) const { return SectEH_EHClause((void *)this, idx, buff); }; // compute the size of the section (best format) // codeSize is the size of the method // deprecated unsigned static Size(unsigned ehCount, unsigned codeSize) { return SectEH_SizeWithCode(ehCount, codeSize); }; // will return worse-case size and then Emit will return actual size unsigned static Size(unsigned ehCount) { return SectEH_SizeWorst(ehCount); }; // will return exact size which will match the size returned by Emit unsigned static Size(unsigned ehCount, const IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT* clauses) { return SectEH_SizeExact(ehCount, (IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT*)clauses); }; // emit the section (best format); unsigned static Emit(unsigned size, unsigned ehCount, const IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT* clauses, bool moreSections, BYTE* outBuff, ULONG* ehTypeOffsets = 0) { return SectEH_Emit(size, ehCount, (IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT*)clauses, moreSections, outBuff, ehTypeOffsets); }; }; /***************************************************************************/ /* Used when the method is tiny (< 64 bytes), and there are no local vars */ typedef struct tagCOR_ILMETHOD_TINY : IMAGE_COR_ILMETHOD_TINY { bool IsTiny() const { return((Flags_CodeSize & (CorILMethod_FormatMask >> 1)) == CorILMethod_TinyFormat); } unsigned GetCodeSize() const { return(((unsigned) Flags_CodeSize) >> (CorILMethod_FormatShift-1)); } unsigned GetMaxStack() const { return(8); } BYTE* GetCode() const { return(((BYTE*) this) + sizeof(struct tagCOR_ILMETHOD_TINY)); } DWORD GetLocalVarSigTok() const { return(0); } COR_ILMETHOD_SECT* GetSect() const { return(0); } } COR_ILMETHOD_TINY; /************************************/ // This strucuture is the 'fat' layout, where no compression is attempted. // Note that this structure can be added on at the end, thus making it extensible typedef struct tagCOR_ILMETHOD_FAT : IMAGE_COR_ILMETHOD_FAT { //Endian-safe wrappers unsigned GetSize() const { /* return Size; */ BYTE* p = (BYTE*)this; return *(p+1) >> 4; } void SetSize(unsigned size) { /* Size = size; */ BYTE* p = (BYTE*)this; *(p+1) = (BYTE)((*(p+1) & 0x0F) | (size << 4)); } unsigned GetFlags() const { /* return Flags; */ BYTE* p = (BYTE*)this; return ((unsigned)*(p+0)) | (( ((unsigned)*(p+1)) & 0x0F) << 8); } void SetFlags(unsigned flags) { /* flags = Flags; */ BYTE* p = (BYTE*)this; *p = (BYTE)flags; *(p+1) = (BYTE)((*(p+1) & 0xF0) | ((flags >> 8) & 0x0F)); } bool IsFat() const { /* return((IMAGE_COR_ILMETHOD_FAT::GetFlags() & CorILMethod_FormatMask) == CorILMethod_FatFormat); */ return (*(BYTE*)this & CorILMethod_FormatMask) == CorILMethod_FatFormat; } unsigned GetMaxStack() const { /* return MaxStack; */ return VAL16(*(USHORT*)((BYTE*)this+2)); } void SetMaxStack(unsigned maxStack) { /* MaxStack = maxStack; */ *(USHORT*)((BYTE*)this+2) = VAL16((USHORT)maxStack); } unsigned GetCodeSize() const { return VAL32(CodeSize); } void SetCodeSize(DWORD Size) { CodeSize = VAL32(Size); } mdToken GetLocalVarSigTok() const { return VAL32(LocalVarSigTok); } void SetLocalVarSigTok(mdSignature tok) { LocalVarSigTok = VAL32(tok); } BYTE* GetCode() const { return(((BYTE*) this) + 4*GetSize()); } bool More() const { // return (GetFlags() & CorILMethod_MoreSects) != 0; return (*(BYTE*)this & CorILMethod_MoreSects) != 0; } const COR_ILMETHOD_SECT* GetSect() const { if (!More()) return (0); return(((COR_ILMETHOD_SECT*) COR_ILMETHOD_SECT::Align(GetCode() + GetCodeSize()))); } } COR_ILMETHOD_FAT; extern "C" { /************************************/ // exported functions (impl. Format\Format.cpp) unsigned __stdcall IlmethodSize(COR_ILMETHOD_FAT* header, BOOL MoreSections); // emit the header (bestFormat) return amount emitted unsigned __stdcall IlmethodEmit(unsigned size, COR_ILMETHOD_FAT* header, BOOL moreSections, BYTE* outBuff); } struct COR_ILMETHOD { // a COR_ILMETHOD header should not be decoded by hand. Instead us // COR_ILMETHOD_DECODER to decode it. friend class COR_ILMETHOD_DECODER; // compute the size of the header (best format) unsigned static Size(const COR_ILMETHOD_FAT* header, bool MoreSections) { return IlmethodSize((COR_ILMETHOD_FAT*)header,MoreSections); }; // emit the header (bestFormat) return amount emitted unsigned static Emit(unsigned size, const COR_ILMETHOD_FAT* header, bool moreSections, BYTE* outBuff) { return IlmethodEmit(size, (COR_ILMETHOD_FAT*)header, moreSections, outBuff); }; //private: union { COR_ILMETHOD_TINY Tiny; COR_ILMETHOD_FAT Fat; }; // Code follows the Header, then immedately after the code comes // any sections (COR_ILMETHOD_SECT). }; extern "C" { /***************************************************************************/ /* COR_ILMETHOD_DECODER is the only way functions internal to the EE should fetch data from a COR_ILMETHOD. This way any dependancy on the file format (and the multiple ways of encoding the header) is centralized to the COR_ILMETHOD_DECODER constructor) */ void __stdcall DecoderInit(void * pThis, COR_ILMETHOD* header); int __stdcall DecoderGetOnDiskSize(void * pThis, COR_ILMETHOD* header); } // extern "C" class COR_ILMETHOD_DECODER : public COR_ILMETHOD_FAT { public: // This returns an uninitialized decoder, suitable for placement new but nothing // else. Use with caution. COR_ILMETHOD_DECODER() {} // Typically the ONLY way you should access COR_ILMETHOD is through // this constructor so format changes are easier. COR_ILMETHOD_DECODER(const COR_ILMETHOD* header) { DecoderInit(this,(COR_ILMETHOD*)header); }; // The above variant of the constructor can not do a 'complete' job, because // it can not look up the local variable signature meta-data token. // This method should be used when you have access to the Meta data API // If the construction fails, the 'Code' field is set to 0 enum DecoderStatus {SUCCESS, FORMAT_ERROR, VERIFICATION_ERROR}; // If we want the decoder to verify the that local signature is OK we // will pass a non-NULL value for wbStatus // // When using LazyInit we want ask that the local signature be verified // But if we fail verification we still need access to the 'Code' field // Because we may be able to demand SkipVerification and thus it was OK // to have had a verification error. COR_ILMETHOD_DECODER(COR_ILMETHOD* header, void *pInternalImport, DecoderStatus* wbStatus); unsigned EHCount() const { return (EH != 0) ? EH->EHCount() : 0; } unsigned GetHeaderSize() const { return GetCodeSize() + ((EH != 0) ? EH->DataSize() : 0); } // returns total size of method for use in copying int GetOnDiskSize(const COR_ILMETHOD* header) { return DecoderGetOnDiskSize(this,(COR_ILMETHOD*)header); } // Flags these are available because we inherit COR_ILMETHOD_FAT // MaxStack // CodeSize const BYTE * Code; PCCOR_SIGNATURE LocalVarSig; // pointer to signature blob, or 0 if none DWORD cbLocalVarSig; // size of dignature blob, or 0 if none const COR_ILMETHOD_SECT_EH * EH; // eh table if any 0 if none const COR_ILMETHOD_SECT * Sect; // additional sections 0 if none }; // class COR_ILMETHOD_DECODER #if defined(CORHLPR_TURNED_FPO_ON) #pragma optimize("", on) // Go back to command line default optimizations #undef CORHLPR_TURNED_FPO_ON #undef FPO_ON #endif #endif // __CORHLPR_H__ ProcDump-for-Linux-2.2/profiler/inc/corprof.h000066400000000000000000032507431447614355600212420ustar00rootroot00000000000000 /* this ALWAYS GENERATED file contains the definitions for the interfaces */ /* File created by MIDL compiler version 8.01.0622 */ /* Compiler settings for corprof.idl: Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0622 protocol : dce , ms_ext, c_ext, robust error checks: allocation ref bounds_check enum stub_data VC __declspec() decoration level: __declspec(uuid()), __declspec(selectany), __declspec(novtable) DECLSPEC_UUID(), MIDL_INTERFACE() */ /* @@MIDL_FILE_HEADING( ) */ #pragma warning( disable: 4049 ) /* more than 64k source lines */ /* verify that the version is high enough to compile this file*/ #ifndef __REQUIRED_RPCNDR_H_VERSION__ #define __REQUIRED_RPCNDR_H_VERSION__ 475 #endif #include "rpc.h" #include "rpcndr.h" #ifndef __RPCNDR_H_VERSION__ #error this stub requires an updated version of #endif /* __RPCNDR_H_VERSION__ */ #ifndef COM_NO_WINDOWS_H #include "windows.h" #include "ole2.h" #endif /*COM_NO_WINDOWS_H*/ #ifndef __corprof_h__ #define __corprof_h__ #if defined(_MSC_VER) && (_MSC_VER >= 1020) #pragma once #endif /* Forward Declarations */ #ifndef __ICorProfilerCallback_FWD_DEFINED__ #define __ICorProfilerCallback_FWD_DEFINED__ typedef interface ICorProfilerCallback ICorProfilerCallback; #endif /* __ICorProfilerCallback_FWD_DEFINED__ */ #ifndef __ICorProfilerCallback2_FWD_DEFINED__ #define __ICorProfilerCallback2_FWD_DEFINED__ typedef interface ICorProfilerCallback2 ICorProfilerCallback2; #endif /* __ICorProfilerCallback2_FWD_DEFINED__ */ #ifndef __ICorProfilerCallback3_FWD_DEFINED__ #define __ICorProfilerCallback3_FWD_DEFINED__ typedef interface ICorProfilerCallback3 ICorProfilerCallback3; #endif /* __ICorProfilerCallback3_FWD_DEFINED__ */ #ifndef __ICorProfilerCallback4_FWD_DEFINED__ #define __ICorProfilerCallback4_FWD_DEFINED__ typedef interface ICorProfilerCallback4 ICorProfilerCallback4; #endif /* __ICorProfilerCallback4_FWD_DEFINED__ */ #ifndef __ICorProfilerCallback5_FWD_DEFINED__ #define __ICorProfilerCallback5_FWD_DEFINED__ typedef interface ICorProfilerCallback5 ICorProfilerCallback5; #endif /* __ICorProfilerCallback5_FWD_DEFINED__ */ #ifndef __ICorProfilerCallback6_FWD_DEFINED__ #define __ICorProfilerCallback6_FWD_DEFINED__ typedef interface ICorProfilerCallback6 ICorProfilerCallback6; #endif /* __ICorProfilerCallback6_FWD_DEFINED__ */ #ifndef __ICorProfilerCallback7_FWD_DEFINED__ #define __ICorProfilerCallback7_FWD_DEFINED__ typedef interface ICorProfilerCallback7 ICorProfilerCallback7; #endif /* __ICorProfilerCallback7_FWD_DEFINED__ */ #ifndef __ICorProfilerCallback8_FWD_DEFINED__ #define __ICorProfilerCallback8_FWD_DEFINED__ typedef interface ICorProfilerCallback8 ICorProfilerCallback8; #endif /* __ICorProfilerCallback8_FWD_DEFINED__ */ #ifndef __ICorProfilerCallback9_FWD_DEFINED__ #define __ICorProfilerCallback9_FWD_DEFINED__ typedef interface ICorProfilerCallback9 ICorProfilerCallback9; #endif /* __ICorProfilerCallback9_FWD_DEFINED__ */ #ifndef __ICorProfilerCallback10_FWD_DEFINED__ #define __ICorProfilerCallback10_FWD_DEFINED__ typedef interface ICorProfilerCallback10 ICorProfilerCallback10; #endif /* __ICorProfilerCallback10_FWD_DEFINED__ */ #ifndef __ICorProfilerCallback11_FWD_DEFINED__ #define __ICorProfilerCallback11_FWD_DEFINED__ typedef interface ICorProfilerCallback11 ICorProfilerCallback11; #endif /* __ICorProfilerCallback11_FWD_DEFINED__ */ #ifndef __ICorProfilerInfo_FWD_DEFINED__ #define __ICorProfilerInfo_FWD_DEFINED__ typedef interface ICorProfilerInfo ICorProfilerInfo; #endif /* __ICorProfilerInfo_FWD_DEFINED__ */ #ifndef __ICorProfilerInfo2_FWD_DEFINED__ #define __ICorProfilerInfo2_FWD_DEFINED__ typedef interface ICorProfilerInfo2 ICorProfilerInfo2; #endif /* __ICorProfilerInfo2_FWD_DEFINED__ */ #ifndef __ICorProfilerInfo3_FWD_DEFINED__ #define __ICorProfilerInfo3_FWD_DEFINED__ typedef interface ICorProfilerInfo3 ICorProfilerInfo3; #endif /* __ICorProfilerInfo3_FWD_DEFINED__ */ #ifndef __ICorProfilerObjectEnum_FWD_DEFINED__ #define __ICorProfilerObjectEnum_FWD_DEFINED__ typedef interface ICorProfilerObjectEnum ICorProfilerObjectEnum; #endif /* __ICorProfilerObjectEnum_FWD_DEFINED__ */ #ifndef __ICorProfilerFunctionEnum_FWD_DEFINED__ #define __ICorProfilerFunctionEnum_FWD_DEFINED__ typedef interface ICorProfilerFunctionEnum ICorProfilerFunctionEnum; #endif /* __ICorProfilerFunctionEnum_FWD_DEFINED__ */ #ifndef __ICorProfilerModuleEnum_FWD_DEFINED__ #define __ICorProfilerModuleEnum_FWD_DEFINED__ typedef interface ICorProfilerModuleEnum ICorProfilerModuleEnum; #endif /* __ICorProfilerModuleEnum_FWD_DEFINED__ */ #ifndef __IMethodMalloc_FWD_DEFINED__ #define __IMethodMalloc_FWD_DEFINED__ typedef interface IMethodMalloc IMethodMalloc; #endif /* __IMethodMalloc_FWD_DEFINED__ */ #ifndef __ICorProfilerFunctionControl_FWD_DEFINED__ #define __ICorProfilerFunctionControl_FWD_DEFINED__ typedef interface ICorProfilerFunctionControl ICorProfilerFunctionControl; #endif /* __ICorProfilerFunctionControl_FWD_DEFINED__ */ #ifndef __ICorProfilerInfo4_FWD_DEFINED__ #define __ICorProfilerInfo4_FWD_DEFINED__ typedef interface ICorProfilerInfo4 ICorProfilerInfo4; #endif /* __ICorProfilerInfo4_FWD_DEFINED__ */ #ifndef __ICorProfilerInfo5_FWD_DEFINED__ #define __ICorProfilerInfo5_FWD_DEFINED__ typedef interface ICorProfilerInfo5 ICorProfilerInfo5; #endif /* __ICorProfilerInfo5_FWD_DEFINED__ */ #ifndef __ICorProfilerInfo6_FWD_DEFINED__ #define __ICorProfilerInfo6_FWD_DEFINED__ typedef interface ICorProfilerInfo6 ICorProfilerInfo6; #endif /* __ICorProfilerInfo6_FWD_DEFINED__ */ #ifndef __ICorProfilerInfo7_FWD_DEFINED__ #define __ICorProfilerInfo7_FWD_DEFINED__ typedef interface ICorProfilerInfo7 ICorProfilerInfo7; #endif /* __ICorProfilerInfo7_FWD_DEFINED__ */ #ifndef __ICorProfilerInfo8_FWD_DEFINED__ #define __ICorProfilerInfo8_FWD_DEFINED__ typedef interface ICorProfilerInfo8 ICorProfilerInfo8; #endif /* __ICorProfilerInfo8_FWD_DEFINED__ */ #ifndef __ICorProfilerInfo9_FWD_DEFINED__ #define __ICorProfilerInfo9_FWD_DEFINED__ typedef interface ICorProfilerInfo9 ICorProfilerInfo9; #endif /* __ICorProfilerInfo9_FWD_DEFINED__ */ #ifndef __ICorProfilerInfo10_FWD_DEFINED__ #define __ICorProfilerInfo10_FWD_DEFINED__ typedef interface ICorProfilerInfo10 ICorProfilerInfo10; #endif /* __ICorProfilerInfo10_FWD_DEFINED__ */ #ifndef __ICorProfilerInfo11_FWD_DEFINED__ #define __ICorProfilerInfo11_FWD_DEFINED__ typedef interface ICorProfilerInfo11 ICorProfilerInfo11; #endif /* __ICorProfilerInfo11_FWD_DEFINED__ */ #ifndef __ICorProfilerInfo12_FWD_DEFINED__ #define __ICorProfilerInfo12_FWD_DEFINED__ typedef interface ICorProfilerInfo12 ICorProfilerInfo12; #endif /* __ICorProfilerInfo12_FWD_DEFINED__ */ #ifndef __ICorProfilerMethodEnum_FWD_DEFINED__ #define __ICorProfilerMethodEnum_FWD_DEFINED__ typedef interface ICorProfilerMethodEnum ICorProfilerMethodEnum; #endif /* __ICorProfilerMethodEnum_FWD_DEFINED__ */ #ifndef __ICorProfilerThreadEnum_FWD_DEFINED__ #define __ICorProfilerThreadEnum_FWD_DEFINED__ typedef interface ICorProfilerThreadEnum ICorProfilerThreadEnum; #endif /* __ICorProfilerThreadEnum_FWD_DEFINED__ */ #ifndef __ICorProfilerAssemblyReferenceProvider_FWD_DEFINED__ #define __ICorProfilerAssemblyReferenceProvider_FWD_DEFINED__ typedef interface ICorProfilerAssemblyReferenceProvider ICorProfilerAssemblyReferenceProvider; #endif /* __ICorProfilerAssemblyReferenceProvider_FWD_DEFINED__ */ /* header files for imported files */ #include "unknwn.h" #ifdef __cplusplus extern "C"{ #endif /* interface __MIDL_itf_corprof_0000_0000 */ /* [local] */ #define CorDB_CONTROL_Profiling "Cor_Enable_Profiling" #define CorDB_CONTROL_ProfilingL L"Cor_Enable_Profiling" #if 0 typedef LONG32 mdToken; typedef mdToken mdModule; typedef mdToken mdTypeDef; typedef mdToken mdMethodDef; typedef mdToken mdFieldDef; typedef ULONG CorElementType; typedef /* [public][public][public][public] */ struct __MIDL___MIDL_itf_corprof_0000_0000_0001 { DWORD dwOSPlatformId; DWORD dwOSMajorVersion; DWORD dwOSMinorVersion; } OSINFO; typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_corprof_0000_0000_0002 { USHORT usMajorVersion; USHORT usMinorVersion; USHORT usBuildNumber; USHORT usRevisionNumber; LPWSTR szLocale; ULONG cbLocale; DWORD *rProcessor; ULONG ulProcessor; OSINFO *rOS; ULONG ulOS; } ASSEMBLYMETADATA; #endif typedef const BYTE *LPCBYTE; typedef BYTE *LPBYTE; typedef BYTE COR_SIGNATURE; typedef COR_SIGNATURE *PCOR_SIGNATURE; typedef const COR_SIGNATURE *PCCOR_SIGNATURE; #ifndef _COR_IL_MAP #define _COR_IL_MAP typedef struct _COR_IL_MAP { ULONG32 oldOffset; ULONG32 newOffset; BOOL fAccurate; } COR_IL_MAP; #endif //_COR_IL_MAP #ifndef _COR_DEBUG_IL_TO_NATIVE_MAP_ #define _COR_DEBUG_IL_TO_NATIVE_MAP_ typedef enum CorDebugIlToNativeMappingTypes { NO_MAPPING = -1, PROLOG = -2, EPILOG = -3 } CorDebugIlToNativeMappingTypes; typedef struct COR_DEBUG_IL_TO_NATIVE_MAP { ULONG32 ilOffset; ULONG32 nativeStartOffset; ULONG32 nativeEndOffset; } COR_DEBUG_IL_TO_NATIVE_MAP; #endif // _COR_DEBUG_IL_TO_NATIVE_MAP_ #ifndef _COR_FIELD_OFFSET_ #define _COR_FIELD_OFFSET_ typedef struct _COR_FIELD_OFFSET { mdFieldDef ridOfField; ULONG ulOffset; } COR_FIELD_OFFSET; #endif // _COR_FIELD_OFFSET_ typedef UINT_PTR ProcessID; typedef UINT_PTR AssemblyID; typedef UINT_PTR AppDomainID; typedef UINT_PTR ModuleID; typedef UINT_PTR ClassID; typedef UINT_PTR ThreadID; typedef UINT_PTR ContextID; typedef UINT_PTR FunctionID; typedef UINT_PTR ObjectID; typedef UINT_PTR GCHandleID; typedef UINT_PTR COR_PRF_ELT_INFO; typedef UINT_PTR ReJITID; typedef /* [public][public][public][public][public][public][public][public][public][public][public][public][public] */ union __MIDL___MIDL_itf_corprof_0000_0000_0003 { FunctionID functionID; UINT_PTR clientID; } FunctionIDOrClientID; typedef UINT_PTR __stdcall __stdcall FunctionIDMapper( FunctionID funcId, BOOL *pbHookFunction); typedef UINT_PTR __stdcall __stdcall FunctionIDMapper2( FunctionID funcId, void *clientData, BOOL *pbHookFunction); typedef enum _COR_PRF_SNAPSHOT_INFO { COR_PRF_SNAPSHOT_DEFAULT = 0, COR_PRF_SNAPSHOT_REGISTER_CONTEXT = 0x1, COR_PRF_SNAPSHOT_X86_OPTIMIZED = 0x2 } COR_PRF_SNAPSHOT_INFO; typedef UINT_PTR COR_PRF_FRAME_INFO; typedef struct _COR_PRF_FUNCTION_ARGUMENT_RANGE { UINT_PTR startAddress; ULONG length; } COR_PRF_FUNCTION_ARGUMENT_RANGE; typedef struct _COR_PRF_FUNCTION_ARGUMENT_INFO { ULONG numRanges; ULONG totalArgumentSize; COR_PRF_FUNCTION_ARGUMENT_RANGE ranges[ 1 ]; } COR_PRF_FUNCTION_ARGUMENT_INFO; typedef struct _COR_PRF_CODE_INFO { UINT_PTR startAddress; SIZE_T size; } COR_PRF_CODE_INFO; typedef /* [public][public] */ enum __MIDL___MIDL_itf_corprof_0000_0000_0004 { COR_PRF_FIELD_NOT_A_STATIC = 0, COR_PRF_FIELD_APP_DOMAIN_STATIC = 0x1, COR_PRF_FIELD_THREAD_STATIC = 0x2, COR_PRF_FIELD_CONTEXT_STATIC = 0x4, COR_PRF_FIELD_RVA_STATIC = 0x8 } COR_PRF_STATIC_TYPE; typedef struct _COR_PRF_FUNCTION { FunctionID functionId; ReJITID reJitId; } COR_PRF_FUNCTION; typedef struct _COR_PRF_ASSEMBLY_REFERENCE_INFO { void *pbPublicKeyOrToken; ULONG cbPublicKeyOrToken; LPCWSTR szName; ASSEMBLYMETADATA *pMetaData; void *pbHashValue; ULONG cbHashValue; DWORD dwAssemblyRefFlags; } COR_PRF_ASSEMBLY_REFERENCE_INFO; typedef struct _COR_PRF_METHOD { ModuleID moduleId; mdMethodDef methodId; } COR_PRF_METHOD; typedef void FunctionEnter( FunctionID funcID); typedef void FunctionLeave( FunctionID funcID); typedef void FunctionTailcall( FunctionID funcID); typedef void FunctionEnter2( FunctionID funcId, UINT_PTR clientData, COR_PRF_FRAME_INFO func, COR_PRF_FUNCTION_ARGUMENT_INFO *argumentInfo); typedef void FunctionLeave2( FunctionID funcId, UINT_PTR clientData, COR_PRF_FRAME_INFO func, COR_PRF_FUNCTION_ARGUMENT_RANGE *retvalRange); typedef void FunctionTailcall2( FunctionID funcId, UINT_PTR clientData, COR_PRF_FRAME_INFO func); typedef void FunctionEnter3( FunctionIDOrClientID functionIDOrClientID); typedef void FunctionLeave3( FunctionIDOrClientID functionIDOrClientID); typedef void FunctionTailcall3( FunctionIDOrClientID functionIDOrClientID); typedef void FunctionEnter3WithInfo( FunctionIDOrClientID functionIDOrClientID, COR_PRF_ELT_INFO eltInfo); typedef void FunctionLeave3WithInfo( FunctionIDOrClientID functionIDOrClientID, COR_PRF_ELT_INFO eltInfo); typedef void FunctionTailcall3WithInfo( FunctionIDOrClientID functionIDOrClientID, COR_PRF_ELT_INFO eltInfo); typedef HRESULT __stdcall __stdcall StackSnapshotCallback( FunctionID funcId, UINT_PTR ip, COR_PRF_FRAME_INFO frameInfo, ULONG32 contextSize, BYTE context[ ], void *clientData); typedef BOOL ObjectReferenceCallback( ObjectID root, ObjectID *reference, void *clientData); typedef /* [public] */ enum __MIDL___MIDL_itf_corprof_0000_0000_0005 { COR_PRF_MONITOR_NONE = 0, COR_PRF_MONITOR_FUNCTION_UNLOADS = 0x1, COR_PRF_MONITOR_CLASS_LOADS = 0x2, COR_PRF_MONITOR_MODULE_LOADS = 0x4, COR_PRF_MONITOR_ASSEMBLY_LOADS = 0x8, COR_PRF_MONITOR_APPDOMAIN_LOADS = 0x10, COR_PRF_MONITOR_JIT_COMPILATION = 0x20, COR_PRF_MONITOR_EXCEPTIONS = 0x40, COR_PRF_MONITOR_GC = 0x80, COR_PRF_MONITOR_OBJECT_ALLOCATED = 0x100, COR_PRF_MONITOR_THREADS = 0x200, COR_PRF_MONITOR_REMOTING = 0x400, COR_PRF_MONITOR_CODE_TRANSITIONS = 0x800, COR_PRF_MONITOR_ENTERLEAVE = 0x1000, COR_PRF_MONITOR_CCW = 0x2000, COR_PRF_MONITOR_REMOTING_COOKIE = ( 0x4000 | COR_PRF_MONITOR_REMOTING ) , COR_PRF_MONITOR_REMOTING_ASYNC = ( 0x8000 | COR_PRF_MONITOR_REMOTING ) , COR_PRF_MONITOR_SUSPENDS = 0x10000, COR_PRF_MONITOR_CACHE_SEARCHES = 0x20000, COR_PRF_ENABLE_REJIT = 0x40000, COR_PRF_ENABLE_INPROC_DEBUGGING = 0x80000, COR_PRF_ENABLE_JIT_MAPS = 0x100000, COR_PRF_DISABLE_INLINING = 0x200000, COR_PRF_DISABLE_OPTIMIZATIONS = 0x400000, COR_PRF_ENABLE_OBJECT_ALLOCATED = 0x800000, COR_PRF_MONITOR_CLR_EXCEPTIONS = 0x1000000, COR_PRF_MONITOR_ALL = 0x107ffff, COR_PRF_ENABLE_FUNCTION_ARGS = 0x2000000, COR_PRF_ENABLE_FUNCTION_RETVAL = 0x4000000, COR_PRF_ENABLE_FRAME_INFO = 0x8000000, COR_PRF_ENABLE_STACK_SNAPSHOT = 0x10000000, COR_PRF_USE_PROFILE_IMAGES = 0x20000000, COR_PRF_DISABLE_TRANSPARENCY_CHECKS_UNDER_FULL_TRUST = 0x40000000, COR_PRF_DISABLE_ALL_NGEN_IMAGES = 0x80000000, COR_PRF_ALL = 0x8fffffff, COR_PRF_REQUIRE_PROFILE_IMAGE = ( ( COR_PRF_USE_PROFILE_IMAGES | COR_PRF_MONITOR_CODE_TRANSITIONS ) | COR_PRF_MONITOR_ENTERLEAVE ) , COR_PRF_ALLOWABLE_AFTER_ATTACH = ( ( ( ( ( ( ( ( ( ( COR_PRF_MONITOR_THREADS | COR_PRF_MONITOR_MODULE_LOADS ) | COR_PRF_MONITOR_ASSEMBLY_LOADS ) | COR_PRF_MONITOR_APPDOMAIN_LOADS ) | COR_PRF_ENABLE_STACK_SNAPSHOT ) | COR_PRF_MONITOR_GC ) | COR_PRF_MONITOR_SUSPENDS ) | COR_PRF_MONITOR_CLASS_LOADS ) | COR_PRF_MONITOR_EXCEPTIONS ) | COR_PRF_MONITOR_JIT_COMPILATION ) | COR_PRF_ENABLE_REJIT ) , COR_PRF_ALLOWABLE_NOTIFICATION_PROFILER = ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( COR_PRF_MONITOR_FUNCTION_UNLOADS | COR_PRF_MONITOR_CLASS_LOADS ) | COR_PRF_MONITOR_MODULE_LOADS ) | COR_PRF_MONITOR_ASSEMBLY_LOADS ) | COR_PRF_MONITOR_APPDOMAIN_LOADS ) | COR_PRF_MONITOR_JIT_COMPILATION ) | COR_PRF_MONITOR_EXCEPTIONS ) | COR_PRF_MONITOR_OBJECT_ALLOCATED ) | COR_PRF_MONITOR_THREADS ) | COR_PRF_MONITOR_CODE_TRANSITIONS ) | COR_PRF_MONITOR_CCW ) | COR_PRF_MONITOR_SUSPENDS ) | COR_PRF_MONITOR_CACHE_SEARCHES ) | COR_PRF_DISABLE_INLINING ) | COR_PRF_DISABLE_OPTIMIZATIONS ) | COR_PRF_ENABLE_OBJECT_ALLOCATED ) | COR_PRF_MONITOR_CLR_EXCEPTIONS ) | COR_PRF_ENABLE_STACK_SNAPSHOT ) | COR_PRF_USE_PROFILE_IMAGES ) | COR_PRF_DISABLE_ALL_NGEN_IMAGES ) , COR_PRF_MONITOR_IMMUTABLE = ( ( ( ( ( ( ( ( ( ( ( ( ( ( COR_PRF_MONITOR_CODE_TRANSITIONS | COR_PRF_MONITOR_REMOTING ) | COR_PRF_MONITOR_REMOTING_COOKIE ) | COR_PRF_MONITOR_REMOTING_ASYNC ) | COR_PRF_ENABLE_INPROC_DEBUGGING ) | COR_PRF_ENABLE_JIT_MAPS ) | COR_PRF_DISABLE_OPTIMIZATIONS ) | COR_PRF_DISABLE_INLINING ) | COR_PRF_ENABLE_OBJECT_ALLOCATED ) | COR_PRF_ENABLE_FUNCTION_ARGS ) | COR_PRF_ENABLE_FUNCTION_RETVAL ) | COR_PRF_ENABLE_FRAME_INFO ) | COR_PRF_USE_PROFILE_IMAGES ) | COR_PRF_DISABLE_TRANSPARENCY_CHECKS_UNDER_FULL_TRUST ) | COR_PRF_DISABLE_ALL_NGEN_IMAGES ) } COR_PRF_MONITOR; typedef /* [public] */ enum __MIDL___MIDL_itf_corprof_0000_0000_0006 { COR_PRF_HIGH_MONITOR_NONE = 0, COR_PRF_HIGH_ADD_ASSEMBLY_REFERENCES = 0x1, COR_PRF_HIGH_IN_MEMORY_SYMBOLS_UPDATED = 0x2, COR_PRF_HIGH_MONITOR_DYNAMIC_FUNCTION_UNLOADS = 0x4, COR_PRF_HIGH_DISABLE_TIERED_COMPILATION = 0x8, COR_PRF_HIGH_BASIC_GC = 0x10, COR_PRF_HIGH_MONITOR_GC_MOVED_OBJECTS = 0x20, COR_PRF_HIGH_REQUIRE_PROFILE_IMAGE = 0, COR_PRF_HIGH_MONITOR_LARGEOBJECT_ALLOCATED = 0x40, COR_PRF_HIGH_MONITOR_EVENT_PIPE = 0x80, COR_PRF_HIGH_MONITOR_PINNEDOBJECT_ALLOCATED = 0x100, COR_PRF_HIGH_ALLOWABLE_AFTER_ATTACH = ( ( ( ( ( COR_PRF_HIGH_IN_MEMORY_SYMBOLS_UPDATED | COR_PRF_HIGH_MONITOR_DYNAMIC_FUNCTION_UNLOADS ) | COR_PRF_HIGH_BASIC_GC ) | COR_PRF_HIGH_MONITOR_GC_MOVED_OBJECTS ) | COR_PRF_HIGH_MONITOR_LARGEOBJECT_ALLOCATED ) | COR_PRF_HIGH_MONITOR_EVENT_PIPE ) , COR_PRF_HIGH_ALLOWABLE_NOTIFICATION_PROFILER = ( ( ( ( ( ( COR_PRF_HIGH_IN_MEMORY_SYMBOLS_UPDATED | COR_PRF_HIGH_MONITOR_DYNAMIC_FUNCTION_UNLOADS ) | COR_PRF_HIGH_DISABLE_TIERED_COMPILATION ) | COR_PRF_HIGH_BASIC_GC ) | COR_PRF_HIGH_MONITOR_GC_MOVED_OBJECTS ) | COR_PRF_HIGH_MONITOR_LARGEOBJECT_ALLOCATED ) | COR_PRF_HIGH_MONITOR_EVENT_PIPE ) , COR_PRF_HIGH_MONITOR_IMMUTABLE = COR_PRF_HIGH_DISABLE_TIERED_COMPILATION } COR_PRF_HIGH_MONITOR; typedef /* [public] */ enum __MIDL___MIDL_itf_corprof_0000_0000_0007 { PROFILER_PARENT_UNKNOWN = 0xfffffffd, PROFILER_GLOBAL_CLASS = 0xfffffffe, PROFILER_GLOBAL_MODULE = 0xffffffff } COR_PRF_MISC; typedef /* [public][public] */ enum __MIDL___MIDL_itf_corprof_0000_0000_0008 { COR_PRF_CACHED_FUNCTION_FOUND = 0, COR_PRF_CACHED_FUNCTION_NOT_FOUND = ( COR_PRF_CACHED_FUNCTION_FOUND + 1 ) } COR_PRF_JIT_CACHE; typedef /* [public][public][public] */ enum __MIDL___MIDL_itf_corprof_0000_0000_0009 { COR_PRF_TRANSITION_CALL = 0, COR_PRF_TRANSITION_RETURN = ( COR_PRF_TRANSITION_CALL + 1 ) } COR_PRF_TRANSITION_REASON; typedef /* [public][public] */ enum __MIDL___MIDL_itf_corprof_0000_0000_0010 { COR_PRF_SUSPEND_OTHER = 0, COR_PRF_SUSPEND_FOR_GC = 1, COR_PRF_SUSPEND_FOR_APPDOMAIN_SHUTDOWN = 2, COR_PRF_SUSPEND_FOR_CODE_PITCHING = 3, COR_PRF_SUSPEND_FOR_SHUTDOWN = 4, COR_PRF_SUSPEND_FOR_INPROC_DEBUGGER = 6, COR_PRF_SUSPEND_FOR_GC_PREP = 7, COR_PRF_SUSPEND_FOR_REJIT = 8, COR_PRF_SUSPEND_FOR_PROFILER = 9 } COR_PRF_SUSPEND_REASON; typedef /* [public][public] */ enum __MIDL___MIDL_itf_corprof_0000_0000_0011 { COR_PRF_DESKTOP_CLR = 0x1, COR_PRF_CORE_CLR = 0x2 } COR_PRF_RUNTIME_TYPE; typedef /* [public] */ enum __MIDL___MIDL_itf_corprof_0000_0000_0012 { COR_PRF_REJIT_BLOCK_INLINING = 0x1, COR_PRF_REJIT_INLINING_CALLBACKS = 0x2 } COR_PRF_REJIT_FLAGS; typedef UINT_PTR EVENTPIPE_PROVIDER; typedef UINT_PTR EVENTPIPE_EVENT; typedef UINT64 EVENTPIPE_SESSION; typedef /* [public] */ enum __MIDL___MIDL_itf_corprof_0000_0000_0013 { COR_PRF_EVENTPIPE_OBJECT = 1, COR_PRF_EVENTPIPE_BOOLEAN = 3, COR_PRF_EVENTPIPE_CHAR = 4, COR_PRF_EVENTPIPE_SBYTE = 5, COR_PRF_EVENTPIPE_BYTE = 6, COR_PRF_EVENTPIPE_INT16 = 7, COR_PRF_EVENTPIPE_UINT16 = 8, COR_PRF_EVENTPIPE_INT32 = 9, COR_PRF_EVENTPIPE_UINT32 = 10, COR_PRF_EVENTPIPE_INT64 = 11, COR_PRF_EVENTPIPE_UINT64 = 12, COR_PRF_EVENTPIPE_SINGLE = 13, COR_PRF_EVENTPIPE_DOUBLE = 14, COR_PRF_EVENTPIPE_DECIMAL = 15, COR_PRF_EVENTPIPE_DATETIME = 16, COR_PRF_EVENTPIPE_GUID = 17, COR_PRF_EVENTPIPE_STRING = 18, COR_PRF_EVENTPIPE_ARRAY = 19 } COR_PRF_EVENTPIPE_PARAM_TYPE; typedef /* [public] */ enum __MIDL___MIDL_itf_corprof_0000_0000_0014 { COR_PRF_EVENTPIPE_LOGALWAYS = 0, COR_PRF_EVENTPIPE_CRITICAL = 1, COR_PRF_EVENTPIPE_ERROR = 2, COR_PRF_EVENTPIPE_WARNING = 3, COR_PRF_EVENTPIPE_INFORMATIONAL = 4, COR_PRF_EVENTPIPE_VERBOSE = 5 } COR_PRF_EVENTPIPE_LEVEL; typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_corprof_0000_0000_0015 { const WCHAR *providerName; UINT64 keywords; UINT32 loggingLevel; const WCHAR *filterData; } COR_PRF_EVENTPIPE_PROVIDER_CONFIG; typedef /* [public][public] */ struct __MIDL___MIDL_itf_corprof_0000_0000_0016 { UINT32 type; UINT32 elementType; const WCHAR *name; } COR_PRF_EVENTPIPE_PARAM_DESC; typedef /* [public][public] */ struct __MIDL___MIDL_itf_corprof_0000_0000_0017 { UINT64 ptr; UINT32 size; UINT32 reserved; } COR_PRF_EVENT_DATA; extern RPC_IF_HANDLE __MIDL_itf_corprof_0000_0000_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_corprof_0000_0000_v0_0_s_ifspec; #ifndef __ICorProfilerCallback_INTERFACE_DEFINED__ #define __ICorProfilerCallback_INTERFACE_DEFINED__ /* interface ICorProfilerCallback */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerCallback; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("176FBED1-A55C-4796-98CA-A9DA0EF883E7") ICorProfilerCallback : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Initialize( /* [in] */ IUnknown *pICorProfilerInfoUnk) = 0; virtual HRESULT STDMETHODCALLTYPE Shutdown( void) = 0; virtual HRESULT STDMETHODCALLTYPE AppDomainCreationStarted( /* [in] */ AppDomainID appDomainId) = 0; virtual HRESULT STDMETHODCALLTYPE AppDomainCreationFinished( /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus) = 0; virtual HRESULT STDMETHODCALLTYPE AppDomainShutdownStarted( /* [in] */ AppDomainID appDomainId) = 0; virtual HRESULT STDMETHODCALLTYPE AppDomainShutdownFinished( /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus) = 0; virtual HRESULT STDMETHODCALLTYPE AssemblyLoadStarted( /* [in] */ AssemblyID assemblyId) = 0; virtual HRESULT STDMETHODCALLTYPE AssemblyLoadFinished( /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus) = 0; virtual HRESULT STDMETHODCALLTYPE AssemblyUnloadStarted( /* [in] */ AssemblyID assemblyId) = 0; virtual HRESULT STDMETHODCALLTYPE AssemblyUnloadFinished( /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus) = 0; virtual HRESULT STDMETHODCALLTYPE ModuleLoadStarted( /* [in] */ ModuleID moduleId) = 0; virtual HRESULT STDMETHODCALLTYPE ModuleLoadFinished( /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus) = 0; virtual HRESULT STDMETHODCALLTYPE ModuleUnloadStarted( /* [in] */ ModuleID moduleId) = 0; virtual HRESULT STDMETHODCALLTYPE ModuleUnloadFinished( /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus) = 0; virtual HRESULT STDMETHODCALLTYPE ModuleAttachedToAssembly( /* [in] */ ModuleID moduleId, /* [in] */ AssemblyID AssemblyId) = 0; virtual HRESULT STDMETHODCALLTYPE ClassLoadStarted( /* [in] */ ClassID classId) = 0; virtual HRESULT STDMETHODCALLTYPE ClassLoadFinished( /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus) = 0; virtual HRESULT STDMETHODCALLTYPE ClassUnloadStarted( /* [in] */ ClassID classId) = 0; virtual HRESULT STDMETHODCALLTYPE ClassUnloadFinished( /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus) = 0; virtual HRESULT STDMETHODCALLTYPE FunctionUnloadStarted( /* [in] */ FunctionID functionId) = 0; virtual HRESULT STDMETHODCALLTYPE JITCompilationStarted( /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock) = 0; virtual HRESULT STDMETHODCALLTYPE JITCompilationFinished( /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock) = 0; virtual HRESULT STDMETHODCALLTYPE JITCachedFunctionSearchStarted( /* [in] */ FunctionID functionId, /* [out] */ BOOL *pbUseCachedFunction) = 0; virtual HRESULT STDMETHODCALLTYPE JITCachedFunctionSearchFinished( /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_JIT_CACHE result) = 0; virtual HRESULT STDMETHODCALLTYPE JITFunctionPitched( /* [in] */ FunctionID functionId) = 0; virtual HRESULT STDMETHODCALLTYPE JITInlining( /* [in] */ FunctionID callerId, /* [in] */ FunctionID calleeId, /* [out] */ BOOL *pfShouldInline) = 0; virtual HRESULT STDMETHODCALLTYPE ThreadCreated( /* [in] */ ThreadID threadId) = 0; virtual HRESULT STDMETHODCALLTYPE ThreadDestroyed( /* [in] */ ThreadID threadId) = 0; virtual HRESULT STDMETHODCALLTYPE ThreadAssignedToOSThread( /* [in] */ ThreadID managedThreadId, /* [in] */ DWORD osThreadId) = 0; virtual HRESULT STDMETHODCALLTYPE RemotingClientInvocationStarted( void) = 0; virtual HRESULT STDMETHODCALLTYPE RemotingClientSendingMessage( /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync) = 0; virtual HRESULT STDMETHODCALLTYPE RemotingClientReceivingReply( /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync) = 0; virtual HRESULT STDMETHODCALLTYPE RemotingClientInvocationFinished( void) = 0; virtual HRESULT STDMETHODCALLTYPE RemotingServerReceivingMessage( /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync) = 0; virtual HRESULT STDMETHODCALLTYPE RemotingServerInvocationStarted( void) = 0; virtual HRESULT STDMETHODCALLTYPE RemotingServerInvocationReturned( void) = 0; virtual HRESULT STDMETHODCALLTYPE RemotingServerSendingReply( /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync) = 0; virtual HRESULT STDMETHODCALLTYPE UnmanagedToManagedTransition( /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason) = 0; virtual HRESULT STDMETHODCALLTYPE ManagedToUnmanagedTransition( /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason) = 0; virtual HRESULT STDMETHODCALLTYPE RuntimeSuspendStarted( /* [in] */ COR_PRF_SUSPEND_REASON suspendReason) = 0; virtual HRESULT STDMETHODCALLTYPE RuntimeSuspendFinished( void) = 0; virtual HRESULT STDMETHODCALLTYPE RuntimeSuspendAborted( void) = 0; virtual HRESULT STDMETHODCALLTYPE RuntimeResumeStarted( void) = 0; virtual HRESULT STDMETHODCALLTYPE RuntimeResumeFinished( void) = 0; virtual HRESULT STDMETHODCALLTYPE RuntimeThreadSuspended( /* [in] */ ThreadID threadId) = 0; virtual HRESULT STDMETHODCALLTYPE RuntimeThreadResumed( /* [in] */ ThreadID threadId) = 0; virtual HRESULT STDMETHODCALLTYPE MovedReferences( /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE ObjectAllocated( /* [in] */ ObjectID objectId, /* [in] */ ClassID classId) = 0; virtual HRESULT STDMETHODCALLTYPE ObjectsAllocatedByClass( /* [in] */ ULONG cClassCount, /* [size_is][in] */ ClassID classIds[ ], /* [size_is][in] */ ULONG cObjects[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE ObjectReferences( /* [in] */ ObjectID objectId, /* [in] */ ClassID classId, /* [in] */ ULONG cObjectRefs, /* [size_is][in] */ ObjectID objectRefIds[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE RootReferences( /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE ExceptionThrown( /* [in] */ ObjectID thrownObjectId) = 0; virtual HRESULT STDMETHODCALLTYPE ExceptionSearchFunctionEnter( /* [in] */ FunctionID functionId) = 0; virtual HRESULT STDMETHODCALLTYPE ExceptionSearchFunctionLeave( void) = 0; virtual HRESULT STDMETHODCALLTYPE ExceptionSearchFilterEnter( /* [in] */ FunctionID functionId) = 0; virtual HRESULT STDMETHODCALLTYPE ExceptionSearchFilterLeave( void) = 0; virtual HRESULT STDMETHODCALLTYPE ExceptionSearchCatcherFound( /* [in] */ FunctionID functionId) = 0; virtual HRESULT STDMETHODCALLTYPE ExceptionOSHandlerEnter( /* [in] */ UINT_PTR __unused) = 0; virtual HRESULT STDMETHODCALLTYPE ExceptionOSHandlerLeave( /* [in] */ UINT_PTR __unused) = 0; virtual HRESULT STDMETHODCALLTYPE ExceptionUnwindFunctionEnter( /* [in] */ FunctionID functionId) = 0; virtual HRESULT STDMETHODCALLTYPE ExceptionUnwindFunctionLeave( void) = 0; virtual HRESULT STDMETHODCALLTYPE ExceptionUnwindFinallyEnter( /* [in] */ FunctionID functionId) = 0; virtual HRESULT STDMETHODCALLTYPE ExceptionUnwindFinallyLeave( void) = 0; virtual HRESULT STDMETHODCALLTYPE ExceptionCatcherEnter( /* [in] */ FunctionID functionId, /* [in] */ ObjectID objectId) = 0; virtual HRESULT STDMETHODCALLTYPE ExceptionCatcherLeave( void) = 0; virtual HRESULT STDMETHODCALLTYPE COMClassicVTableCreated( /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable, /* [in] */ ULONG cSlots) = 0; virtual HRESULT STDMETHODCALLTYPE COMClassicVTableDestroyed( /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable) = 0; virtual HRESULT STDMETHODCALLTYPE ExceptionCLRCatcherFound( void) = 0; virtual HRESULT STDMETHODCALLTYPE ExceptionCLRCatcherExecute( void) = 0; }; #else /* C style interface */ typedef struct ICorProfilerCallbackVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerCallback * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerCallback * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerCallback * This); HRESULT ( STDMETHODCALLTYPE *Initialize )( ICorProfilerCallback * This, /* [in] */ IUnknown *pICorProfilerInfoUnk); HRESULT ( STDMETHODCALLTYPE *Shutdown )( ICorProfilerCallback * This); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationStarted )( ICorProfilerCallback * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationFinished )( ICorProfilerCallback * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownStarted )( ICorProfilerCallback * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownFinished )( ICorProfilerCallback * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadStarted )( ICorProfilerCallback * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadFinished )( ICorProfilerCallback * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadStarted )( ICorProfilerCallback * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadFinished )( ICorProfilerCallback * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleLoadStarted )( ICorProfilerCallback * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleLoadFinished )( ICorProfilerCallback * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadStarted )( ICorProfilerCallback * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadFinished )( ICorProfilerCallback * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleAttachedToAssembly )( ICorProfilerCallback * This, /* [in] */ ModuleID moduleId, /* [in] */ AssemblyID AssemblyId); HRESULT ( STDMETHODCALLTYPE *ClassLoadStarted )( ICorProfilerCallback * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassLoadFinished )( ICorProfilerCallback * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ClassUnloadStarted )( ICorProfilerCallback * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassUnloadFinished )( ICorProfilerCallback * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *FunctionUnloadStarted )( ICorProfilerCallback * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITCompilationStarted )( ICorProfilerCallback * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCompilationFinished )( ICorProfilerCallback * This, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchStarted )( ICorProfilerCallback * This, /* [in] */ FunctionID functionId, /* [out] */ BOOL *pbUseCachedFunction); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchFinished )( ICorProfilerCallback * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_JIT_CACHE result); HRESULT ( STDMETHODCALLTYPE *JITFunctionPitched )( ICorProfilerCallback * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITInlining )( ICorProfilerCallback * This, /* [in] */ FunctionID callerId, /* [in] */ FunctionID calleeId, /* [out] */ BOOL *pfShouldInline); HRESULT ( STDMETHODCALLTYPE *ThreadCreated )( ICorProfilerCallback * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadDestroyed )( ICorProfilerCallback * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadAssignedToOSThread )( ICorProfilerCallback * This, /* [in] */ ThreadID managedThreadId, /* [in] */ DWORD osThreadId); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationStarted )( ICorProfilerCallback * This); HRESULT ( STDMETHODCALLTYPE *RemotingClientSendingMessage )( ICorProfilerCallback * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientReceivingReply )( ICorProfilerCallback * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationFinished )( ICorProfilerCallback * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerReceivingMessage )( ICorProfilerCallback * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationStarted )( ICorProfilerCallback * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationReturned )( ICorProfilerCallback * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerSendingReply )( ICorProfilerCallback * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *UnmanagedToManagedTransition )( ICorProfilerCallback * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *ManagedToUnmanagedTransition )( ICorProfilerCallback * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendStarted )( ICorProfilerCallback * This, /* [in] */ COR_PRF_SUSPEND_REASON suspendReason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendFinished )( ICorProfilerCallback * This); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendAborted )( ICorProfilerCallback * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeStarted )( ICorProfilerCallback * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeFinished )( ICorProfilerCallback * This); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadSuspended )( ICorProfilerCallback * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadResumed )( ICorProfilerCallback * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *MovedReferences )( ICorProfilerCallback * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectAllocated )( ICorProfilerCallback * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ObjectsAllocatedByClass )( ICorProfilerCallback * This, /* [in] */ ULONG cClassCount, /* [size_is][in] */ ClassID classIds[ ], /* [size_is][in] */ ULONG cObjects[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectReferences )( ICorProfilerCallback * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId, /* [in] */ ULONG cObjectRefs, /* [size_is][in] */ ObjectID objectRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *RootReferences )( ICorProfilerCallback * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *ExceptionThrown )( ICorProfilerCallback * This, /* [in] */ ObjectID thrownObjectId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionEnter )( ICorProfilerCallback * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionLeave )( ICorProfilerCallback * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterEnter )( ICorProfilerCallback * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterLeave )( ICorProfilerCallback * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchCatcherFound )( ICorProfilerCallback * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerEnter )( ICorProfilerCallback * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerLeave )( ICorProfilerCallback * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionEnter )( ICorProfilerCallback * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionLeave )( ICorProfilerCallback * This); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyEnter )( ICorProfilerCallback * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyLeave )( ICorProfilerCallback * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherEnter )( ICorProfilerCallback * This, /* [in] */ FunctionID functionId, /* [in] */ ObjectID objectId); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherLeave )( ICorProfilerCallback * This); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableCreated )( ICorProfilerCallback * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable, /* [in] */ ULONG cSlots); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableDestroyed )( ICorProfilerCallback * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherFound )( ICorProfilerCallback * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherExecute )( ICorProfilerCallback * This); END_INTERFACE } ICorProfilerCallbackVtbl; interface ICorProfilerCallback { CONST_VTBL struct ICorProfilerCallbackVtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerCallback_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerCallback_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerCallback_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerCallback_Initialize(This,pICorProfilerInfoUnk) \ ( (This)->lpVtbl -> Initialize(This,pICorProfilerInfoUnk) ) #define ICorProfilerCallback_Shutdown(This) \ ( (This)->lpVtbl -> Shutdown(This) ) #define ICorProfilerCallback_AppDomainCreationStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainCreationStarted(This,appDomainId) ) #define ICorProfilerCallback_AppDomainCreationFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainCreationFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback_AppDomainShutdownStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainShutdownStarted(This,appDomainId) ) #define ICorProfilerCallback_AppDomainShutdownFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainShutdownFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback_AssemblyLoadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyLoadStarted(This,assemblyId) ) #define ICorProfilerCallback_AssemblyLoadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyLoadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback_AssemblyUnloadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyUnloadStarted(This,assemblyId) ) #define ICorProfilerCallback_AssemblyUnloadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyUnloadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback_ModuleLoadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleLoadStarted(This,moduleId) ) #define ICorProfilerCallback_ModuleLoadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleLoadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback_ModuleUnloadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleUnloadStarted(This,moduleId) ) #define ICorProfilerCallback_ModuleUnloadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleUnloadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback_ModuleAttachedToAssembly(This,moduleId,AssemblyId) \ ( (This)->lpVtbl -> ModuleAttachedToAssembly(This,moduleId,AssemblyId) ) #define ICorProfilerCallback_ClassLoadStarted(This,classId) \ ( (This)->lpVtbl -> ClassLoadStarted(This,classId) ) #define ICorProfilerCallback_ClassLoadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassLoadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback_ClassUnloadStarted(This,classId) \ ( (This)->lpVtbl -> ClassUnloadStarted(This,classId) ) #define ICorProfilerCallback_ClassUnloadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassUnloadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback_FunctionUnloadStarted(This,functionId) \ ( (This)->lpVtbl -> FunctionUnloadStarted(This,functionId) ) #define ICorProfilerCallback_JITCompilationStarted(This,functionId,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationStarted(This,functionId,fIsSafeToBlock) ) #define ICorProfilerCallback_JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback_JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) \ ( (This)->lpVtbl -> JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) ) #define ICorProfilerCallback_JITCachedFunctionSearchFinished(This,functionId,result) \ ( (This)->lpVtbl -> JITCachedFunctionSearchFinished(This,functionId,result) ) #define ICorProfilerCallback_JITFunctionPitched(This,functionId) \ ( (This)->lpVtbl -> JITFunctionPitched(This,functionId) ) #define ICorProfilerCallback_JITInlining(This,callerId,calleeId,pfShouldInline) \ ( (This)->lpVtbl -> JITInlining(This,callerId,calleeId,pfShouldInline) ) #define ICorProfilerCallback_ThreadCreated(This,threadId) \ ( (This)->lpVtbl -> ThreadCreated(This,threadId) ) #define ICorProfilerCallback_ThreadDestroyed(This,threadId) \ ( (This)->lpVtbl -> ThreadDestroyed(This,threadId) ) #define ICorProfilerCallback_ThreadAssignedToOSThread(This,managedThreadId,osThreadId) \ ( (This)->lpVtbl -> ThreadAssignedToOSThread(This,managedThreadId,osThreadId) ) #define ICorProfilerCallback_RemotingClientInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingClientInvocationStarted(This) ) #define ICorProfilerCallback_RemotingClientSendingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientSendingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback_RemotingClientReceivingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientReceivingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback_RemotingClientInvocationFinished(This) \ ( (This)->lpVtbl -> RemotingClientInvocationFinished(This) ) #define ICorProfilerCallback_RemotingServerReceivingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerReceivingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback_RemotingServerInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingServerInvocationStarted(This) ) #define ICorProfilerCallback_RemotingServerInvocationReturned(This) \ ( (This)->lpVtbl -> RemotingServerInvocationReturned(This) ) #define ICorProfilerCallback_RemotingServerSendingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerSendingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback_UnmanagedToManagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> UnmanagedToManagedTransition(This,functionId,reason) ) #define ICorProfilerCallback_ManagedToUnmanagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> ManagedToUnmanagedTransition(This,functionId,reason) ) #define ICorProfilerCallback_RuntimeSuspendStarted(This,suspendReason) \ ( (This)->lpVtbl -> RuntimeSuspendStarted(This,suspendReason) ) #define ICorProfilerCallback_RuntimeSuspendFinished(This) \ ( (This)->lpVtbl -> RuntimeSuspendFinished(This) ) #define ICorProfilerCallback_RuntimeSuspendAborted(This) \ ( (This)->lpVtbl -> RuntimeSuspendAborted(This) ) #define ICorProfilerCallback_RuntimeResumeStarted(This) \ ( (This)->lpVtbl -> RuntimeResumeStarted(This) ) #define ICorProfilerCallback_RuntimeResumeFinished(This) \ ( (This)->lpVtbl -> RuntimeResumeFinished(This) ) #define ICorProfilerCallback_RuntimeThreadSuspended(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadSuspended(This,threadId) ) #define ICorProfilerCallback_RuntimeThreadResumed(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadResumed(This,threadId) ) #define ICorProfilerCallback_MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback_ObjectAllocated(This,objectId,classId) \ ( (This)->lpVtbl -> ObjectAllocated(This,objectId,classId) ) #define ICorProfilerCallback_ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) \ ( (This)->lpVtbl -> ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) ) #define ICorProfilerCallback_ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) \ ( (This)->lpVtbl -> ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) ) #define ICorProfilerCallback_RootReferences(This,cRootRefs,rootRefIds) \ ( (This)->lpVtbl -> RootReferences(This,cRootRefs,rootRefIds) ) #define ICorProfilerCallback_ExceptionThrown(This,thrownObjectId) \ ( (This)->lpVtbl -> ExceptionThrown(This,thrownObjectId) ) #define ICorProfilerCallback_ExceptionSearchFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFunctionEnter(This,functionId) ) #define ICorProfilerCallback_ExceptionSearchFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFunctionLeave(This) ) #define ICorProfilerCallback_ExceptionSearchFilterEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFilterEnter(This,functionId) ) #define ICorProfilerCallback_ExceptionSearchFilterLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFilterLeave(This) ) #define ICorProfilerCallback_ExceptionSearchCatcherFound(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchCatcherFound(This,functionId) ) #define ICorProfilerCallback_ExceptionOSHandlerEnter(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerEnter(This,__unused) ) #define ICorProfilerCallback_ExceptionOSHandlerLeave(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerLeave(This,__unused) ) #define ICorProfilerCallback_ExceptionUnwindFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionEnter(This,functionId) ) #define ICorProfilerCallback_ExceptionUnwindFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionLeave(This) ) #define ICorProfilerCallback_ExceptionUnwindFinallyEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyEnter(This,functionId) ) #define ICorProfilerCallback_ExceptionUnwindFinallyLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyLeave(This) ) #define ICorProfilerCallback_ExceptionCatcherEnter(This,functionId,objectId) \ ( (This)->lpVtbl -> ExceptionCatcherEnter(This,functionId,objectId) ) #define ICorProfilerCallback_ExceptionCatcherLeave(This) \ ( (This)->lpVtbl -> ExceptionCatcherLeave(This) ) #define ICorProfilerCallback_COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) \ ( (This)->lpVtbl -> COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) ) #define ICorProfilerCallback_COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) \ ( (This)->lpVtbl -> COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) ) #define ICorProfilerCallback_ExceptionCLRCatcherFound(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherFound(This) ) #define ICorProfilerCallback_ExceptionCLRCatcherExecute(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherExecute(This) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerCallback_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_corprof_0000_0001 */ /* [local] */ typedef /* [public][public] */ enum __MIDL___MIDL_itf_corprof_0000_0001_0001 { COR_PRF_GC_ROOT_STACK = 1, COR_PRF_GC_ROOT_FINALIZER = 2, COR_PRF_GC_ROOT_HANDLE = 3, COR_PRF_GC_ROOT_OTHER = 0 } COR_PRF_GC_ROOT_KIND; typedef /* [public][public] */ enum __MIDL___MIDL_itf_corprof_0000_0001_0002 { COR_PRF_GC_ROOT_PINNING = 0x1, COR_PRF_GC_ROOT_WEAKREF = 0x2, COR_PRF_GC_ROOT_INTERIOR = 0x4, COR_PRF_GC_ROOT_REFCOUNTED = 0x8 } COR_PRF_GC_ROOT_FLAGS; typedef /* [public] */ enum __MIDL___MIDL_itf_corprof_0000_0001_0003 { COR_PRF_FINALIZER_CRITICAL = 0x1 } COR_PRF_FINALIZER_FLAGS; typedef /* [public][public][public][public] */ enum __MIDL___MIDL_itf_corprof_0000_0001_0004 { COR_PRF_GC_GEN_0 = 0, COR_PRF_GC_GEN_1 = 1, COR_PRF_GC_GEN_2 = 2, COR_PRF_GC_LARGE_OBJECT_HEAP = 3, COR_PRF_GC_PINNED_OBJECT_HEAP = 4 } COR_PRF_GC_GENERATION; typedef struct COR_PRF_GC_GENERATION_RANGE { COR_PRF_GC_GENERATION generation; ObjectID rangeStart; UINT_PTR rangeLength; UINT_PTR rangeLengthReserved; } COR_PRF_GC_GENERATION_RANGE; typedef /* [public][public][public] */ enum __MIDL___MIDL_itf_corprof_0000_0001_0005 { COR_PRF_CLAUSE_NONE = 0, COR_PRF_CLAUSE_FILTER = 1, COR_PRF_CLAUSE_CATCH = 2, COR_PRF_CLAUSE_FINALLY = 3 } COR_PRF_CLAUSE_TYPE; typedef struct COR_PRF_EX_CLAUSE_INFO { COR_PRF_CLAUSE_TYPE clauseType; UINT_PTR programCounter; UINT_PTR framePointer; UINT_PTR shadowStackPointer; } COR_PRF_EX_CLAUSE_INFO; typedef /* [public][public] */ enum __MIDL___MIDL_itf_corprof_0000_0001_0006 { COR_PRF_GC_INDUCED = 1, COR_PRF_GC_OTHER = 0 } COR_PRF_GC_REASON; typedef /* [public] */ enum __MIDL___MIDL_itf_corprof_0000_0001_0007 { COR_PRF_MODULE_DISK = 0x1, COR_PRF_MODULE_NGEN = 0x2, COR_PRF_MODULE_DYNAMIC = 0x4, COR_PRF_MODULE_COLLECTIBLE = 0x8, COR_PRF_MODULE_RESOURCE = 0x10, COR_PRF_MODULE_FLAT_LAYOUT = 0x20, COR_PRF_MODULE_WINDOWS_RUNTIME = 0x40 } COR_PRF_MODULE_FLAGS; extern RPC_IF_HANDLE __MIDL_itf_corprof_0000_0001_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_corprof_0000_0001_v0_0_s_ifspec; #ifndef __ICorProfilerCallback2_INTERFACE_DEFINED__ #define __ICorProfilerCallback2_INTERFACE_DEFINED__ /* interface ICorProfilerCallback2 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerCallback2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("8A8CC829-CCF2-49fe-BBAE-0F022228071A") ICorProfilerCallback2 : public ICorProfilerCallback { public: virtual HRESULT STDMETHODCALLTYPE ThreadNameChanged( /* [in] */ ThreadID threadId, /* [in] */ ULONG cchName, /* [annotation][in] */ _In_reads_opt_(cchName) WCHAR name[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE GarbageCollectionStarted( /* [in] */ int cGenerations, /* [size_is][in] */ BOOL generationCollected[ ], /* [in] */ COR_PRF_GC_REASON reason) = 0; virtual HRESULT STDMETHODCALLTYPE SurvivingReferences( /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE GarbageCollectionFinished( void) = 0; virtual HRESULT STDMETHODCALLTYPE FinalizeableObjectQueued( /* [in] */ DWORD finalizerFlags, /* [in] */ ObjectID objectID) = 0; virtual HRESULT STDMETHODCALLTYPE RootReferences2( /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_KIND rootKinds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_FLAGS rootFlags[ ], /* [size_is][in] */ UINT_PTR rootIds[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE HandleCreated( /* [in] */ GCHandleID handleId, /* [in] */ ObjectID initialObjectId) = 0; virtual HRESULT STDMETHODCALLTYPE HandleDestroyed( /* [in] */ GCHandleID handleId) = 0; }; #else /* C style interface */ typedef struct ICorProfilerCallback2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerCallback2 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerCallback2 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *Initialize )( ICorProfilerCallback2 * This, /* [in] */ IUnknown *pICorProfilerInfoUnk); HRESULT ( STDMETHODCALLTYPE *Shutdown )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationStarted )( ICorProfilerCallback2 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationFinished )( ICorProfilerCallback2 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownStarted )( ICorProfilerCallback2 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownFinished )( ICorProfilerCallback2 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadStarted )( ICorProfilerCallback2 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadFinished )( ICorProfilerCallback2 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadStarted )( ICorProfilerCallback2 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadFinished )( ICorProfilerCallback2 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleLoadStarted )( ICorProfilerCallback2 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleLoadFinished )( ICorProfilerCallback2 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadStarted )( ICorProfilerCallback2 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadFinished )( ICorProfilerCallback2 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleAttachedToAssembly )( ICorProfilerCallback2 * This, /* [in] */ ModuleID moduleId, /* [in] */ AssemblyID AssemblyId); HRESULT ( STDMETHODCALLTYPE *ClassLoadStarted )( ICorProfilerCallback2 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassLoadFinished )( ICorProfilerCallback2 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ClassUnloadStarted )( ICorProfilerCallback2 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassUnloadFinished )( ICorProfilerCallback2 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *FunctionUnloadStarted )( ICorProfilerCallback2 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITCompilationStarted )( ICorProfilerCallback2 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCompilationFinished )( ICorProfilerCallback2 * This, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchStarted )( ICorProfilerCallback2 * This, /* [in] */ FunctionID functionId, /* [out] */ BOOL *pbUseCachedFunction); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchFinished )( ICorProfilerCallback2 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_JIT_CACHE result); HRESULT ( STDMETHODCALLTYPE *JITFunctionPitched )( ICorProfilerCallback2 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITInlining )( ICorProfilerCallback2 * This, /* [in] */ FunctionID callerId, /* [in] */ FunctionID calleeId, /* [out] */ BOOL *pfShouldInline); HRESULT ( STDMETHODCALLTYPE *ThreadCreated )( ICorProfilerCallback2 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadDestroyed )( ICorProfilerCallback2 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadAssignedToOSThread )( ICorProfilerCallback2 * This, /* [in] */ ThreadID managedThreadId, /* [in] */ DWORD osThreadId); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationStarted )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *RemotingClientSendingMessage )( ICorProfilerCallback2 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientReceivingReply )( ICorProfilerCallback2 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationFinished )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerReceivingMessage )( ICorProfilerCallback2 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationStarted )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationReturned )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerSendingReply )( ICorProfilerCallback2 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *UnmanagedToManagedTransition )( ICorProfilerCallback2 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *ManagedToUnmanagedTransition )( ICorProfilerCallback2 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendStarted )( ICorProfilerCallback2 * This, /* [in] */ COR_PRF_SUSPEND_REASON suspendReason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendFinished )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendAborted )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeStarted )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeFinished )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadSuspended )( ICorProfilerCallback2 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadResumed )( ICorProfilerCallback2 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *MovedReferences )( ICorProfilerCallback2 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectAllocated )( ICorProfilerCallback2 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ObjectsAllocatedByClass )( ICorProfilerCallback2 * This, /* [in] */ ULONG cClassCount, /* [size_is][in] */ ClassID classIds[ ], /* [size_is][in] */ ULONG cObjects[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectReferences )( ICorProfilerCallback2 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId, /* [in] */ ULONG cObjectRefs, /* [size_is][in] */ ObjectID objectRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *RootReferences )( ICorProfilerCallback2 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *ExceptionThrown )( ICorProfilerCallback2 * This, /* [in] */ ObjectID thrownObjectId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionEnter )( ICorProfilerCallback2 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionLeave )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterEnter )( ICorProfilerCallback2 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterLeave )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchCatcherFound )( ICorProfilerCallback2 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerEnter )( ICorProfilerCallback2 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerLeave )( ICorProfilerCallback2 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionEnter )( ICorProfilerCallback2 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionLeave )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyEnter )( ICorProfilerCallback2 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyLeave )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherEnter )( ICorProfilerCallback2 * This, /* [in] */ FunctionID functionId, /* [in] */ ObjectID objectId); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherLeave )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableCreated )( ICorProfilerCallback2 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable, /* [in] */ ULONG cSlots); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableDestroyed )( ICorProfilerCallback2 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherFound )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherExecute )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *ThreadNameChanged )( ICorProfilerCallback2 * This, /* [in] */ ThreadID threadId, /* [in] */ ULONG cchName, /* [annotation][in] */ _In_reads_opt_(cchName) WCHAR name[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionStarted )( ICorProfilerCallback2 * This, /* [in] */ int cGenerations, /* [size_is][in] */ BOOL generationCollected[ ], /* [in] */ COR_PRF_GC_REASON reason); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences )( ICorProfilerCallback2 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionFinished )( ICorProfilerCallback2 * This); HRESULT ( STDMETHODCALLTYPE *FinalizeableObjectQueued )( ICorProfilerCallback2 * This, /* [in] */ DWORD finalizerFlags, /* [in] */ ObjectID objectID); HRESULT ( STDMETHODCALLTYPE *RootReferences2 )( ICorProfilerCallback2 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_KIND rootKinds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_FLAGS rootFlags[ ], /* [size_is][in] */ UINT_PTR rootIds[ ]); HRESULT ( STDMETHODCALLTYPE *HandleCreated )( ICorProfilerCallback2 * This, /* [in] */ GCHandleID handleId, /* [in] */ ObjectID initialObjectId); HRESULT ( STDMETHODCALLTYPE *HandleDestroyed )( ICorProfilerCallback2 * This, /* [in] */ GCHandleID handleId); END_INTERFACE } ICorProfilerCallback2Vtbl; interface ICorProfilerCallback2 { CONST_VTBL struct ICorProfilerCallback2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerCallback2_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerCallback2_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerCallback2_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerCallback2_Initialize(This,pICorProfilerInfoUnk) \ ( (This)->lpVtbl -> Initialize(This,pICorProfilerInfoUnk) ) #define ICorProfilerCallback2_Shutdown(This) \ ( (This)->lpVtbl -> Shutdown(This) ) #define ICorProfilerCallback2_AppDomainCreationStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainCreationStarted(This,appDomainId) ) #define ICorProfilerCallback2_AppDomainCreationFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainCreationFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback2_AppDomainShutdownStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainShutdownStarted(This,appDomainId) ) #define ICorProfilerCallback2_AppDomainShutdownFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainShutdownFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback2_AssemblyLoadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyLoadStarted(This,assemblyId) ) #define ICorProfilerCallback2_AssemblyLoadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyLoadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback2_AssemblyUnloadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyUnloadStarted(This,assemblyId) ) #define ICorProfilerCallback2_AssemblyUnloadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyUnloadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback2_ModuleLoadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleLoadStarted(This,moduleId) ) #define ICorProfilerCallback2_ModuleLoadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleLoadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback2_ModuleUnloadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleUnloadStarted(This,moduleId) ) #define ICorProfilerCallback2_ModuleUnloadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleUnloadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback2_ModuleAttachedToAssembly(This,moduleId,AssemblyId) \ ( (This)->lpVtbl -> ModuleAttachedToAssembly(This,moduleId,AssemblyId) ) #define ICorProfilerCallback2_ClassLoadStarted(This,classId) \ ( (This)->lpVtbl -> ClassLoadStarted(This,classId) ) #define ICorProfilerCallback2_ClassLoadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassLoadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback2_ClassUnloadStarted(This,classId) \ ( (This)->lpVtbl -> ClassUnloadStarted(This,classId) ) #define ICorProfilerCallback2_ClassUnloadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassUnloadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback2_FunctionUnloadStarted(This,functionId) \ ( (This)->lpVtbl -> FunctionUnloadStarted(This,functionId) ) #define ICorProfilerCallback2_JITCompilationStarted(This,functionId,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationStarted(This,functionId,fIsSafeToBlock) ) #define ICorProfilerCallback2_JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback2_JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) \ ( (This)->lpVtbl -> JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) ) #define ICorProfilerCallback2_JITCachedFunctionSearchFinished(This,functionId,result) \ ( (This)->lpVtbl -> JITCachedFunctionSearchFinished(This,functionId,result) ) #define ICorProfilerCallback2_JITFunctionPitched(This,functionId) \ ( (This)->lpVtbl -> JITFunctionPitched(This,functionId) ) #define ICorProfilerCallback2_JITInlining(This,callerId,calleeId,pfShouldInline) \ ( (This)->lpVtbl -> JITInlining(This,callerId,calleeId,pfShouldInline) ) #define ICorProfilerCallback2_ThreadCreated(This,threadId) \ ( (This)->lpVtbl -> ThreadCreated(This,threadId) ) #define ICorProfilerCallback2_ThreadDestroyed(This,threadId) \ ( (This)->lpVtbl -> ThreadDestroyed(This,threadId) ) #define ICorProfilerCallback2_ThreadAssignedToOSThread(This,managedThreadId,osThreadId) \ ( (This)->lpVtbl -> ThreadAssignedToOSThread(This,managedThreadId,osThreadId) ) #define ICorProfilerCallback2_RemotingClientInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingClientInvocationStarted(This) ) #define ICorProfilerCallback2_RemotingClientSendingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientSendingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback2_RemotingClientReceivingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientReceivingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback2_RemotingClientInvocationFinished(This) \ ( (This)->lpVtbl -> RemotingClientInvocationFinished(This) ) #define ICorProfilerCallback2_RemotingServerReceivingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerReceivingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback2_RemotingServerInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingServerInvocationStarted(This) ) #define ICorProfilerCallback2_RemotingServerInvocationReturned(This) \ ( (This)->lpVtbl -> RemotingServerInvocationReturned(This) ) #define ICorProfilerCallback2_RemotingServerSendingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerSendingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback2_UnmanagedToManagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> UnmanagedToManagedTransition(This,functionId,reason) ) #define ICorProfilerCallback2_ManagedToUnmanagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> ManagedToUnmanagedTransition(This,functionId,reason) ) #define ICorProfilerCallback2_RuntimeSuspendStarted(This,suspendReason) \ ( (This)->lpVtbl -> RuntimeSuspendStarted(This,suspendReason) ) #define ICorProfilerCallback2_RuntimeSuspendFinished(This) \ ( (This)->lpVtbl -> RuntimeSuspendFinished(This) ) #define ICorProfilerCallback2_RuntimeSuspendAborted(This) \ ( (This)->lpVtbl -> RuntimeSuspendAborted(This) ) #define ICorProfilerCallback2_RuntimeResumeStarted(This) \ ( (This)->lpVtbl -> RuntimeResumeStarted(This) ) #define ICorProfilerCallback2_RuntimeResumeFinished(This) \ ( (This)->lpVtbl -> RuntimeResumeFinished(This) ) #define ICorProfilerCallback2_RuntimeThreadSuspended(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadSuspended(This,threadId) ) #define ICorProfilerCallback2_RuntimeThreadResumed(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadResumed(This,threadId) ) #define ICorProfilerCallback2_MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback2_ObjectAllocated(This,objectId,classId) \ ( (This)->lpVtbl -> ObjectAllocated(This,objectId,classId) ) #define ICorProfilerCallback2_ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) \ ( (This)->lpVtbl -> ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) ) #define ICorProfilerCallback2_ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) \ ( (This)->lpVtbl -> ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) ) #define ICorProfilerCallback2_RootReferences(This,cRootRefs,rootRefIds) \ ( (This)->lpVtbl -> RootReferences(This,cRootRefs,rootRefIds) ) #define ICorProfilerCallback2_ExceptionThrown(This,thrownObjectId) \ ( (This)->lpVtbl -> ExceptionThrown(This,thrownObjectId) ) #define ICorProfilerCallback2_ExceptionSearchFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFunctionEnter(This,functionId) ) #define ICorProfilerCallback2_ExceptionSearchFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFunctionLeave(This) ) #define ICorProfilerCallback2_ExceptionSearchFilterEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFilterEnter(This,functionId) ) #define ICorProfilerCallback2_ExceptionSearchFilterLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFilterLeave(This) ) #define ICorProfilerCallback2_ExceptionSearchCatcherFound(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchCatcherFound(This,functionId) ) #define ICorProfilerCallback2_ExceptionOSHandlerEnter(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerEnter(This,__unused) ) #define ICorProfilerCallback2_ExceptionOSHandlerLeave(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerLeave(This,__unused) ) #define ICorProfilerCallback2_ExceptionUnwindFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionEnter(This,functionId) ) #define ICorProfilerCallback2_ExceptionUnwindFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionLeave(This) ) #define ICorProfilerCallback2_ExceptionUnwindFinallyEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyEnter(This,functionId) ) #define ICorProfilerCallback2_ExceptionUnwindFinallyLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyLeave(This) ) #define ICorProfilerCallback2_ExceptionCatcherEnter(This,functionId,objectId) \ ( (This)->lpVtbl -> ExceptionCatcherEnter(This,functionId,objectId) ) #define ICorProfilerCallback2_ExceptionCatcherLeave(This) \ ( (This)->lpVtbl -> ExceptionCatcherLeave(This) ) #define ICorProfilerCallback2_COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) \ ( (This)->lpVtbl -> COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) ) #define ICorProfilerCallback2_COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) \ ( (This)->lpVtbl -> COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) ) #define ICorProfilerCallback2_ExceptionCLRCatcherFound(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherFound(This) ) #define ICorProfilerCallback2_ExceptionCLRCatcherExecute(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherExecute(This) ) #define ICorProfilerCallback2_ThreadNameChanged(This,threadId,cchName,name) \ ( (This)->lpVtbl -> ThreadNameChanged(This,threadId,cchName,name) ) #define ICorProfilerCallback2_GarbageCollectionStarted(This,cGenerations,generationCollected,reason) \ ( (This)->lpVtbl -> GarbageCollectionStarted(This,cGenerations,generationCollected,reason) ) #define ICorProfilerCallback2_SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback2_GarbageCollectionFinished(This) \ ( (This)->lpVtbl -> GarbageCollectionFinished(This) ) #define ICorProfilerCallback2_FinalizeableObjectQueued(This,finalizerFlags,objectID) \ ( (This)->lpVtbl -> FinalizeableObjectQueued(This,finalizerFlags,objectID) ) #define ICorProfilerCallback2_RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) \ ( (This)->lpVtbl -> RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) ) #define ICorProfilerCallback2_HandleCreated(This,handleId,initialObjectId) \ ( (This)->lpVtbl -> HandleCreated(This,handleId,initialObjectId) ) #define ICorProfilerCallback2_HandleDestroyed(This,handleId) \ ( (This)->lpVtbl -> HandleDestroyed(This,handleId) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerCallback2_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerCallback3_INTERFACE_DEFINED__ #define __ICorProfilerCallback3_INTERFACE_DEFINED__ /* interface ICorProfilerCallback3 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerCallback3; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("4FD2ED52-7731-4b8d-9469-03D2CC3086C5") ICorProfilerCallback3 : public ICorProfilerCallback2 { public: virtual HRESULT STDMETHODCALLTYPE InitializeForAttach( /* [in] */ IUnknown *pCorProfilerInfoUnk, /* [in] */ void *pvClientData, /* [in] */ UINT cbClientData) = 0; virtual HRESULT STDMETHODCALLTYPE ProfilerAttachComplete( void) = 0; virtual HRESULT STDMETHODCALLTYPE ProfilerDetachSucceeded( void) = 0; }; #else /* C style interface */ typedef struct ICorProfilerCallback3Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerCallback3 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerCallback3 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *Initialize )( ICorProfilerCallback3 * This, /* [in] */ IUnknown *pICorProfilerInfoUnk); HRESULT ( STDMETHODCALLTYPE *Shutdown )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationStarted )( ICorProfilerCallback3 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationFinished )( ICorProfilerCallback3 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownStarted )( ICorProfilerCallback3 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownFinished )( ICorProfilerCallback3 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadStarted )( ICorProfilerCallback3 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadFinished )( ICorProfilerCallback3 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadStarted )( ICorProfilerCallback3 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadFinished )( ICorProfilerCallback3 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleLoadStarted )( ICorProfilerCallback3 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleLoadFinished )( ICorProfilerCallback3 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadStarted )( ICorProfilerCallback3 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadFinished )( ICorProfilerCallback3 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleAttachedToAssembly )( ICorProfilerCallback3 * This, /* [in] */ ModuleID moduleId, /* [in] */ AssemblyID AssemblyId); HRESULT ( STDMETHODCALLTYPE *ClassLoadStarted )( ICorProfilerCallback3 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassLoadFinished )( ICorProfilerCallback3 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ClassUnloadStarted )( ICorProfilerCallback3 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassUnloadFinished )( ICorProfilerCallback3 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *FunctionUnloadStarted )( ICorProfilerCallback3 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITCompilationStarted )( ICorProfilerCallback3 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCompilationFinished )( ICorProfilerCallback3 * This, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchStarted )( ICorProfilerCallback3 * This, /* [in] */ FunctionID functionId, /* [out] */ BOOL *pbUseCachedFunction); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchFinished )( ICorProfilerCallback3 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_JIT_CACHE result); HRESULT ( STDMETHODCALLTYPE *JITFunctionPitched )( ICorProfilerCallback3 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITInlining )( ICorProfilerCallback3 * This, /* [in] */ FunctionID callerId, /* [in] */ FunctionID calleeId, /* [out] */ BOOL *pfShouldInline); HRESULT ( STDMETHODCALLTYPE *ThreadCreated )( ICorProfilerCallback3 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadDestroyed )( ICorProfilerCallback3 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadAssignedToOSThread )( ICorProfilerCallback3 * This, /* [in] */ ThreadID managedThreadId, /* [in] */ DWORD osThreadId); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationStarted )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *RemotingClientSendingMessage )( ICorProfilerCallback3 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientReceivingReply )( ICorProfilerCallback3 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationFinished )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerReceivingMessage )( ICorProfilerCallback3 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationStarted )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationReturned )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerSendingReply )( ICorProfilerCallback3 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *UnmanagedToManagedTransition )( ICorProfilerCallback3 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *ManagedToUnmanagedTransition )( ICorProfilerCallback3 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendStarted )( ICorProfilerCallback3 * This, /* [in] */ COR_PRF_SUSPEND_REASON suspendReason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendFinished )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendAborted )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeStarted )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeFinished )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadSuspended )( ICorProfilerCallback3 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadResumed )( ICorProfilerCallback3 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *MovedReferences )( ICorProfilerCallback3 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectAllocated )( ICorProfilerCallback3 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ObjectsAllocatedByClass )( ICorProfilerCallback3 * This, /* [in] */ ULONG cClassCount, /* [size_is][in] */ ClassID classIds[ ], /* [size_is][in] */ ULONG cObjects[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectReferences )( ICorProfilerCallback3 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId, /* [in] */ ULONG cObjectRefs, /* [size_is][in] */ ObjectID objectRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *RootReferences )( ICorProfilerCallback3 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *ExceptionThrown )( ICorProfilerCallback3 * This, /* [in] */ ObjectID thrownObjectId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionEnter )( ICorProfilerCallback3 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionLeave )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterEnter )( ICorProfilerCallback3 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterLeave )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchCatcherFound )( ICorProfilerCallback3 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerEnter )( ICorProfilerCallback3 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerLeave )( ICorProfilerCallback3 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionEnter )( ICorProfilerCallback3 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionLeave )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyEnter )( ICorProfilerCallback3 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyLeave )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherEnter )( ICorProfilerCallback3 * This, /* [in] */ FunctionID functionId, /* [in] */ ObjectID objectId); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherLeave )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableCreated )( ICorProfilerCallback3 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable, /* [in] */ ULONG cSlots); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableDestroyed )( ICorProfilerCallback3 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherFound )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherExecute )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *ThreadNameChanged )( ICorProfilerCallback3 * This, /* [in] */ ThreadID threadId, /* [in] */ ULONG cchName, /* [annotation][in] */ _In_reads_opt_(cchName) WCHAR name[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionStarted )( ICorProfilerCallback3 * This, /* [in] */ int cGenerations, /* [size_is][in] */ BOOL generationCollected[ ], /* [in] */ COR_PRF_GC_REASON reason); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences )( ICorProfilerCallback3 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionFinished )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *FinalizeableObjectQueued )( ICorProfilerCallback3 * This, /* [in] */ DWORD finalizerFlags, /* [in] */ ObjectID objectID); HRESULT ( STDMETHODCALLTYPE *RootReferences2 )( ICorProfilerCallback3 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_KIND rootKinds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_FLAGS rootFlags[ ], /* [size_is][in] */ UINT_PTR rootIds[ ]); HRESULT ( STDMETHODCALLTYPE *HandleCreated )( ICorProfilerCallback3 * This, /* [in] */ GCHandleID handleId, /* [in] */ ObjectID initialObjectId); HRESULT ( STDMETHODCALLTYPE *HandleDestroyed )( ICorProfilerCallback3 * This, /* [in] */ GCHandleID handleId); HRESULT ( STDMETHODCALLTYPE *InitializeForAttach )( ICorProfilerCallback3 * This, /* [in] */ IUnknown *pCorProfilerInfoUnk, /* [in] */ void *pvClientData, /* [in] */ UINT cbClientData); HRESULT ( STDMETHODCALLTYPE *ProfilerAttachComplete )( ICorProfilerCallback3 * This); HRESULT ( STDMETHODCALLTYPE *ProfilerDetachSucceeded )( ICorProfilerCallback3 * This); END_INTERFACE } ICorProfilerCallback3Vtbl; interface ICorProfilerCallback3 { CONST_VTBL struct ICorProfilerCallback3Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerCallback3_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerCallback3_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerCallback3_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerCallback3_Initialize(This,pICorProfilerInfoUnk) \ ( (This)->lpVtbl -> Initialize(This,pICorProfilerInfoUnk) ) #define ICorProfilerCallback3_Shutdown(This) \ ( (This)->lpVtbl -> Shutdown(This) ) #define ICorProfilerCallback3_AppDomainCreationStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainCreationStarted(This,appDomainId) ) #define ICorProfilerCallback3_AppDomainCreationFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainCreationFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback3_AppDomainShutdownStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainShutdownStarted(This,appDomainId) ) #define ICorProfilerCallback3_AppDomainShutdownFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainShutdownFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback3_AssemblyLoadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyLoadStarted(This,assemblyId) ) #define ICorProfilerCallback3_AssemblyLoadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyLoadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback3_AssemblyUnloadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyUnloadStarted(This,assemblyId) ) #define ICorProfilerCallback3_AssemblyUnloadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyUnloadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback3_ModuleLoadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleLoadStarted(This,moduleId) ) #define ICorProfilerCallback3_ModuleLoadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleLoadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback3_ModuleUnloadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleUnloadStarted(This,moduleId) ) #define ICorProfilerCallback3_ModuleUnloadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleUnloadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback3_ModuleAttachedToAssembly(This,moduleId,AssemblyId) \ ( (This)->lpVtbl -> ModuleAttachedToAssembly(This,moduleId,AssemblyId) ) #define ICorProfilerCallback3_ClassLoadStarted(This,classId) \ ( (This)->lpVtbl -> ClassLoadStarted(This,classId) ) #define ICorProfilerCallback3_ClassLoadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassLoadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback3_ClassUnloadStarted(This,classId) \ ( (This)->lpVtbl -> ClassUnloadStarted(This,classId) ) #define ICorProfilerCallback3_ClassUnloadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassUnloadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback3_FunctionUnloadStarted(This,functionId) \ ( (This)->lpVtbl -> FunctionUnloadStarted(This,functionId) ) #define ICorProfilerCallback3_JITCompilationStarted(This,functionId,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationStarted(This,functionId,fIsSafeToBlock) ) #define ICorProfilerCallback3_JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback3_JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) \ ( (This)->lpVtbl -> JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) ) #define ICorProfilerCallback3_JITCachedFunctionSearchFinished(This,functionId,result) \ ( (This)->lpVtbl -> JITCachedFunctionSearchFinished(This,functionId,result) ) #define ICorProfilerCallback3_JITFunctionPitched(This,functionId) \ ( (This)->lpVtbl -> JITFunctionPitched(This,functionId) ) #define ICorProfilerCallback3_JITInlining(This,callerId,calleeId,pfShouldInline) \ ( (This)->lpVtbl -> JITInlining(This,callerId,calleeId,pfShouldInline) ) #define ICorProfilerCallback3_ThreadCreated(This,threadId) \ ( (This)->lpVtbl -> ThreadCreated(This,threadId) ) #define ICorProfilerCallback3_ThreadDestroyed(This,threadId) \ ( (This)->lpVtbl -> ThreadDestroyed(This,threadId) ) #define ICorProfilerCallback3_ThreadAssignedToOSThread(This,managedThreadId,osThreadId) \ ( (This)->lpVtbl -> ThreadAssignedToOSThread(This,managedThreadId,osThreadId) ) #define ICorProfilerCallback3_RemotingClientInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingClientInvocationStarted(This) ) #define ICorProfilerCallback3_RemotingClientSendingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientSendingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback3_RemotingClientReceivingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientReceivingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback3_RemotingClientInvocationFinished(This) \ ( (This)->lpVtbl -> RemotingClientInvocationFinished(This) ) #define ICorProfilerCallback3_RemotingServerReceivingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerReceivingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback3_RemotingServerInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingServerInvocationStarted(This) ) #define ICorProfilerCallback3_RemotingServerInvocationReturned(This) \ ( (This)->lpVtbl -> RemotingServerInvocationReturned(This) ) #define ICorProfilerCallback3_RemotingServerSendingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerSendingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback3_UnmanagedToManagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> UnmanagedToManagedTransition(This,functionId,reason) ) #define ICorProfilerCallback3_ManagedToUnmanagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> ManagedToUnmanagedTransition(This,functionId,reason) ) #define ICorProfilerCallback3_RuntimeSuspendStarted(This,suspendReason) \ ( (This)->lpVtbl -> RuntimeSuspendStarted(This,suspendReason) ) #define ICorProfilerCallback3_RuntimeSuspendFinished(This) \ ( (This)->lpVtbl -> RuntimeSuspendFinished(This) ) #define ICorProfilerCallback3_RuntimeSuspendAborted(This) \ ( (This)->lpVtbl -> RuntimeSuspendAborted(This) ) #define ICorProfilerCallback3_RuntimeResumeStarted(This) \ ( (This)->lpVtbl -> RuntimeResumeStarted(This) ) #define ICorProfilerCallback3_RuntimeResumeFinished(This) \ ( (This)->lpVtbl -> RuntimeResumeFinished(This) ) #define ICorProfilerCallback3_RuntimeThreadSuspended(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadSuspended(This,threadId) ) #define ICorProfilerCallback3_RuntimeThreadResumed(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadResumed(This,threadId) ) #define ICorProfilerCallback3_MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback3_ObjectAllocated(This,objectId,classId) \ ( (This)->lpVtbl -> ObjectAllocated(This,objectId,classId) ) #define ICorProfilerCallback3_ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) \ ( (This)->lpVtbl -> ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) ) #define ICorProfilerCallback3_ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) \ ( (This)->lpVtbl -> ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) ) #define ICorProfilerCallback3_RootReferences(This,cRootRefs,rootRefIds) \ ( (This)->lpVtbl -> RootReferences(This,cRootRefs,rootRefIds) ) #define ICorProfilerCallback3_ExceptionThrown(This,thrownObjectId) \ ( (This)->lpVtbl -> ExceptionThrown(This,thrownObjectId) ) #define ICorProfilerCallback3_ExceptionSearchFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFunctionEnter(This,functionId) ) #define ICorProfilerCallback3_ExceptionSearchFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFunctionLeave(This) ) #define ICorProfilerCallback3_ExceptionSearchFilterEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFilterEnter(This,functionId) ) #define ICorProfilerCallback3_ExceptionSearchFilterLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFilterLeave(This) ) #define ICorProfilerCallback3_ExceptionSearchCatcherFound(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchCatcherFound(This,functionId) ) #define ICorProfilerCallback3_ExceptionOSHandlerEnter(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerEnter(This,__unused) ) #define ICorProfilerCallback3_ExceptionOSHandlerLeave(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerLeave(This,__unused) ) #define ICorProfilerCallback3_ExceptionUnwindFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionEnter(This,functionId) ) #define ICorProfilerCallback3_ExceptionUnwindFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionLeave(This) ) #define ICorProfilerCallback3_ExceptionUnwindFinallyEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyEnter(This,functionId) ) #define ICorProfilerCallback3_ExceptionUnwindFinallyLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyLeave(This) ) #define ICorProfilerCallback3_ExceptionCatcherEnter(This,functionId,objectId) \ ( (This)->lpVtbl -> ExceptionCatcherEnter(This,functionId,objectId) ) #define ICorProfilerCallback3_ExceptionCatcherLeave(This) \ ( (This)->lpVtbl -> ExceptionCatcherLeave(This) ) #define ICorProfilerCallback3_COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) \ ( (This)->lpVtbl -> COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) ) #define ICorProfilerCallback3_COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) \ ( (This)->lpVtbl -> COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) ) #define ICorProfilerCallback3_ExceptionCLRCatcherFound(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherFound(This) ) #define ICorProfilerCallback3_ExceptionCLRCatcherExecute(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherExecute(This) ) #define ICorProfilerCallback3_ThreadNameChanged(This,threadId,cchName,name) \ ( (This)->lpVtbl -> ThreadNameChanged(This,threadId,cchName,name) ) #define ICorProfilerCallback3_GarbageCollectionStarted(This,cGenerations,generationCollected,reason) \ ( (This)->lpVtbl -> GarbageCollectionStarted(This,cGenerations,generationCollected,reason) ) #define ICorProfilerCallback3_SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback3_GarbageCollectionFinished(This) \ ( (This)->lpVtbl -> GarbageCollectionFinished(This) ) #define ICorProfilerCallback3_FinalizeableObjectQueued(This,finalizerFlags,objectID) \ ( (This)->lpVtbl -> FinalizeableObjectQueued(This,finalizerFlags,objectID) ) #define ICorProfilerCallback3_RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) \ ( (This)->lpVtbl -> RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) ) #define ICorProfilerCallback3_HandleCreated(This,handleId,initialObjectId) \ ( (This)->lpVtbl -> HandleCreated(This,handleId,initialObjectId) ) #define ICorProfilerCallback3_HandleDestroyed(This,handleId) \ ( (This)->lpVtbl -> HandleDestroyed(This,handleId) ) #define ICorProfilerCallback3_InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) \ ( (This)->lpVtbl -> InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) ) #define ICorProfilerCallback3_ProfilerAttachComplete(This) \ ( (This)->lpVtbl -> ProfilerAttachComplete(This) ) #define ICorProfilerCallback3_ProfilerDetachSucceeded(This) \ ( (This)->lpVtbl -> ProfilerDetachSucceeded(This) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerCallback3_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerCallback4_INTERFACE_DEFINED__ #define __ICorProfilerCallback4_INTERFACE_DEFINED__ /* interface ICorProfilerCallback4 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerCallback4; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("7B63B2E3-107D-4d48-B2F6-F61E229470D2") ICorProfilerCallback4 : public ICorProfilerCallback3 { public: virtual HRESULT STDMETHODCALLTYPE ReJITCompilationStarted( /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ BOOL fIsSafeToBlock) = 0; virtual HRESULT STDMETHODCALLTYPE GetReJITParameters( /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ ICorProfilerFunctionControl *pFunctionControl) = 0; virtual HRESULT STDMETHODCALLTYPE ReJITCompilationFinished( /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock) = 0; virtual HRESULT STDMETHODCALLTYPE ReJITError( /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus) = 0; virtual HRESULT STDMETHODCALLTYPE MovedReferences2( /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE SurvivingReferences2( /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]) = 0; }; #else /* C style interface */ typedef struct ICorProfilerCallback4Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerCallback4 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerCallback4 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *Initialize )( ICorProfilerCallback4 * This, /* [in] */ IUnknown *pICorProfilerInfoUnk); HRESULT ( STDMETHODCALLTYPE *Shutdown )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationStarted )( ICorProfilerCallback4 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationFinished )( ICorProfilerCallback4 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownStarted )( ICorProfilerCallback4 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownFinished )( ICorProfilerCallback4 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadStarted )( ICorProfilerCallback4 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadFinished )( ICorProfilerCallback4 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadStarted )( ICorProfilerCallback4 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadFinished )( ICorProfilerCallback4 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleLoadStarted )( ICorProfilerCallback4 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleLoadFinished )( ICorProfilerCallback4 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadStarted )( ICorProfilerCallback4 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadFinished )( ICorProfilerCallback4 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleAttachedToAssembly )( ICorProfilerCallback4 * This, /* [in] */ ModuleID moduleId, /* [in] */ AssemblyID AssemblyId); HRESULT ( STDMETHODCALLTYPE *ClassLoadStarted )( ICorProfilerCallback4 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassLoadFinished )( ICorProfilerCallback4 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ClassUnloadStarted )( ICorProfilerCallback4 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassUnloadFinished )( ICorProfilerCallback4 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *FunctionUnloadStarted )( ICorProfilerCallback4 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITCompilationStarted )( ICorProfilerCallback4 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCompilationFinished )( ICorProfilerCallback4 * This, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchStarted )( ICorProfilerCallback4 * This, /* [in] */ FunctionID functionId, /* [out] */ BOOL *pbUseCachedFunction); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchFinished )( ICorProfilerCallback4 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_JIT_CACHE result); HRESULT ( STDMETHODCALLTYPE *JITFunctionPitched )( ICorProfilerCallback4 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITInlining )( ICorProfilerCallback4 * This, /* [in] */ FunctionID callerId, /* [in] */ FunctionID calleeId, /* [out] */ BOOL *pfShouldInline); HRESULT ( STDMETHODCALLTYPE *ThreadCreated )( ICorProfilerCallback4 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadDestroyed )( ICorProfilerCallback4 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadAssignedToOSThread )( ICorProfilerCallback4 * This, /* [in] */ ThreadID managedThreadId, /* [in] */ DWORD osThreadId); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationStarted )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *RemotingClientSendingMessage )( ICorProfilerCallback4 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientReceivingReply )( ICorProfilerCallback4 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationFinished )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerReceivingMessage )( ICorProfilerCallback4 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationStarted )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationReturned )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerSendingReply )( ICorProfilerCallback4 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *UnmanagedToManagedTransition )( ICorProfilerCallback4 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *ManagedToUnmanagedTransition )( ICorProfilerCallback4 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendStarted )( ICorProfilerCallback4 * This, /* [in] */ COR_PRF_SUSPEND_REASON suspendReason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendFinished )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendAborted )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeStarted )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeFinished )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadSuspended )( ICorProfilerCallback4 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadResumed )( ICorProfilerCallback4 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *MovedReferences )( ICorProfilerCallback4 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectAllocated )( ICorProfilerCallback4 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ObjectsAllocatedByClass )( ICorProfilerCallback4 * This, /* [in] */ ULONG cClassCount, /* [size_is][in] */ ClassID classIds[ ], /* [size_is][in] */ ULONG cObjects[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectReferences )( ICorProfilerCallback4 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId, /* [in] */ ULONG cObjectRefs, /* [size_is][in] */ ObjectID objectRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *RootReferences )( ICorProfilerCallback4 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *ExceptionThrown )( ICorProfilerCallback4 * This, /* [in] */ ObjectID thrownObjectId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionEnter )( ICorProfilerCallback4 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionLeave )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterEnter )( ICorProfilerCallback4 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterLeave )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchCatcherFound )( ICorProfilerCallback4 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerEnter )( ICorProfilerCallback4 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerLeave )( ICorProfilerCallback4 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionEnter )( ICorProfilerCallback4 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionLeave )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyEnter )( ICorProfilerCallback4 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyLeave )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherEnter )( ICorProfilerCallback4 * This, /* [in] */ FunctionID functionId, /* [in] */ ObjectID objectId); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherLeave )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableCreated )( ICorProfilerCallback4 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable, /* [in] */ ULONG cSlots); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableDestroyed )( ICorProfilerCallback4 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherFound )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherExecute )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *ThreadNameChanged )( ICorProfilerCallback4 * This, /* [in] */ ThreadID threadId, /* [in] */ ULONG cchName, /* [annotation][in] */ _In_reads_opt_(cchName) WCHAR name[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionStarted )( ICorProfilerCallback4 * This, /* [in] */ int cGenerations, /* [size_is][in] */ BOOL generationCollected[ ], /* [in] */ COR_PRF_GC_REASON reason); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences )( ICorProfilerCallback4 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionFinished )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *FinalizeableObjectQueued )( ICorProfilerCallback4 * This, /* [in] */ DWORD finalizerFlags, /* [in] */ ObjectID objectID); HRESULT ( STDMETHODCALLTYPE *RootReferences2 )( ICorProfilerCallback4 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_KIND rootKinds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_FLAGS rootFlags[ ], /* [size_is][in] */ UINT_PTR rootIds[ ]); HRESULT ( STDMETHODCALLTYPE *HandleCreated )( ICorProfilerCallback4 * This, /* [in] */ GCHandleID handleId, /* [in] */ ObjectID initialObjectId); HRESULT ( STDMETHODCALLTYPE *HandleDestroyed )( ICorProfilerCallback4 * This, /* [in] */ GCHandleID handleId); HRESULT ( STDMETHODCALLTYPE *InitializeForAttach )( ICorProfilerCallback4 * This, /* [in] */ IUnknown *pCorProfilerInfoUnk, /* [in] */ void *pvClientData, /* [in] */ UINT cbClientData); HRESULT ( STDMETHODCALLTYPE *ProfilerAttachComplete )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *ProfilerDetachSucceeded )( ICorProfilerCallback4 * This); HRESULT ( STDMETHODCALLTYPE *ReJITCompilationStarted )( ICorProfilerCallback4 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *GetReJITParameters )( ICorProfilerCallback4 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ ICorProfilerFunctionControl *pFunctionControl); HRESULT ( STDMETHODCALLTYPE *ReJITCompilationFinished )( ICorProfilerCallback4 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *ReJITError )( ICorProfilerCallback4 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *MovedReferences2 )( ICorProfilerCallback4 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences2 )( ICorProfilerCallback4 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]); END_INTERFACE } ICorProfilerCallback4Vtbl; interface ICorProfilerCallback4 { CONST_VTBL struct ICorProfilerCallback4Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerCallback4_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerCallback4_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerCallback4_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerCallback4_Initialize(This,pICorProfilerInfoUnk) \ ( (This)->lpVtbl -> Initialize(This,pICorProfilerInfoUnk) ) #define ICorProfilerCallback4_Shutdown(This) \ ( (This)->lpVtbl -> Shutdown(This) ) #define ICorProfilerCallback4_AppDomainCreationStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainCreationStarted(This,appDomainId) ) #define ICorProfilerCallback4_AppDomainCreationFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainCreationFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback4_AppDomainShutdownStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainShutdownStarted(This,appDomainId) ) #define ICorProfilerCallback4_AppDomainShutdownFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainShutdownFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback4_AssemblyLoadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyLoadStarted(This,assemblyId) ) #define ICorProfilerCallback4_AssemblyLoadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyLoadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback4_AssemblyUnloadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyUnloadStarted(This,assemblyId) ) #define ICorProfilerCallback4_AssemblyUnloadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyUnloadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback4_ModuleLoadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleLoadStarted(This,moduleId) ) #define ICorProfilerCallback4_ModuleLoadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleLoadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback4_ModuleUnloadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleUnloadStarted(This,moduleId) ) #define ICorProfilerCallback4_ModuleUnloadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleUnloadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback4_ModuleAttachedToAssembly(This,moduleId,AssemblyId) \ ( (This)->lpVtbl -> ModuleAttachedToAssembly(This,moduleId,AssemblyId) ) #define ICorProfilerCallback4_ClassLoadStarted(This,classId) \ ( (This)->lpVtbl -> ClassLoadStarted(This,classId) ) #define ICorProfilerCallback4_ClassLoadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassLoadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback4_ClassUnloadStarted(This,classId) \ ( (This)->lpVtbl -> ClassUnloadStarted(This,classId) ) #define ICorProfilerCallback4_ClassUnloadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassUnloadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback4_FunctionUnloadStarted(This,functionId) \ ( (This)->lpVtbl -> FunctionUnloadStarted(This,functionId) ) #define ICorProfilerCallback4_JITCompilationStarted(This,functionId,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationStarted(This,functionId,fIsSafeToBlock) ) #define ICorProfilerCallback4_JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback4_JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) \ ( (This)->lpVtbl -> JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) ) #define ICorProfilerCallback4_JITCachedFunctionSearchFinished(This,functionId,result) \ ( (This)->lpVtbl -> JITCachedFunctionSearchFinished(This,functionId,result) ) #define ICorProfilerCallback4_JITFunctionPitched(This,functionId) \ ( (This)->lpVtbl -> JITFunctionPitched(This,functionId) ) #define ICorProfilerCallback4_JITInlining(This,callerId,calleeId,pfShouldInline) \ ( (This)->lpVtbl -> JITInlining(This,callerId,calleeId,pfShouldInline) ) #define ICorProfilerCallback4_ThreadCreated(This,threadId) \ ( (This)->lpVtbl -> ThreadCreated(This,threadId) ) #define ICorProfilerCallback4_ThreadDestroyed(This,threadId) \ ( (This)->lpVtbl -> ThreadDestroyed(This,threadId) ) #define ICorProfilerCallback4_ThreadAssignedToOSThread(This,managedThreadId,osThreadId) \ ( (This)->lpVtbl -> ThreadAssignedToOSThread(This,managedThreadId,osThreadId) ) #define ICorProfilerCallback4_RemotingClientInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingClientInvocationStarted(This) ) #define ICorProfilerCallback4_RemotingClientSendingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientSendingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback4_RemotingClientReceivingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientReceivingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback4_RemotingClientInvocationFinished(This) \ ( (This)->lpVtbl -> RemotingClientInvocationFinished(This) ) #define ICorProfilerCallback4_RemotingServerReceivingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerReceivingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback4_RemotingServerInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingServerInvocationStarted(This) ) #define ICorProfilerCallback4_RemotingServerInvocationReturned(This) \ ( (This)->lpVtbl -> RemotingServerInvocationReturned(This) ) #define ICorProfilerCallback4_RemotingServerSendingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerSendingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback4_UnmanagedToManagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> UnmanagedToManagedTransition(This,functionId,reason) ) #define ICorProfilerCallback4_ManagedToUnmanagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> ManagedToUnmanagedTransition(This,functionId,reason) ) #define ICorProfilerCallback4_RuntimeSuspendStarted(This,suspendReason) \ ( (This)->lpVtbl -> RuntimeSuspendStarted(This,suspendReason) ) #define ICorProfilerCallback4_RuntimeSuspendFinished(This) \ ( (This)->lpVtbl -> RuntimeSuspendFinished(This) ) #define ICorProfilerCallback4_RuntimeSuspendAborted(This) \ ( (This)->lpVtbl -> RuntimeSuspendAborted(This) ) #define ICorProfilerCallback4_RuntimeResumeStarted(This) \ ( (This)->lpVtbl -> RuntimeResumeStarted(This) ) #define ICorProfilerCallback4_RuntimeResumeFinished(This) \ ( (This)->lpVtbl -> RuntimeResumeFinished(This) ) #define ICorProfilerCallback4_RuntimeThreadSuspended(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadSuspended(This,threadId) ) #define ICorProfilerCallback4_RuntimeThreadResumed(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadResumed(This,threadId) ) #define ICorProfilerCallback4_MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback4_ObjectAllocated(This,objectId,classId) \ ( (This)->lpVtbl -> ObjectAllocated(This,objectId,classId) ) #define ICorProfilerCallback4_ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) \ ( (This)->lpVtbl -> ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) ) #define ICorProfilerCallback4_ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) \ ( (This)->lpVtbl -> ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) ) #define ICorProfilerCallback4_RootReferences(This,cRootRefs,rootRefIds) \ ( (This)->lpVtbl -> RootReferences(This,cRootRefs,rootRefIds) ) #define ICorProfilerCallback4_ExceptionThrown(This,thrownObjectId) \ ( (This)->lpVtbl -> ExceptionThrown(This,thrownObjectId) ) #define ICorProfilerCallback4_ExceptionSearchFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFunctionEnter(This,functionId) ) #define ICorProfilerCallback4_ExceptionSearchFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFunctionLeave(This) ) #define ICorProfilerCallback4_ExceptionSearchFilterEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFilterEnter(This,functionId) ) #define ICorProfilerCallback4_ExceptionSearchFilterLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFilterLeave(This) ) #define ICorProfilerCallback4_ExceptionSearchCatcherFound(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchCatcherFound(This,functionId) ) #define ICorProfilerCallback4_ExceptionOSHandlerEnter(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerEnter(This,__unused) ) #define ICorProfilerCallback4_ExceptionOSHandlerLeave(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerLeave(This,__unused) ) #define ICorProfilerCallback4_ExceptionUnwindFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionEnter(This,functionId) ) #define ICorProfilerCallback4_ExceptionUnwindFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionLeave(This) ) #define ICorProfilerCallback4_ExceptionUnwindFinallyEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyEnter(This,functionId) ) #define ICorProfilerCallback4_ExceptionUnwindFinallyLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyLeave(This) ) #define ICorProfilerCallback4_ExceptionCatcherEnter(This,functionId,objectId) \ ( (This)->lpVtbl -> ExceptionCatcherEnter(This,functionId,objectId) ) #define ICorProfilerCallback4_ExceptionCatcherLeave(This) \ ( (This)->lpVtbl -> ExceptionCatcherLeave(This) ) #define ICorProfilerCallback4_COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) \ ( (This)->lpVtbl -> COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) ) #define ICorProfilerCallback4_COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) \ ( (This)->lpVtbl -> COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) ) #define ICorProfilerCallback4_ExceptionCLRCatcherFound(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherFound(This) ) #define ICorProfilerCallback4_ExceptionCLRCatcherExecute(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherExecute(This) ) #define ICorProfilerCallback4_ThreadNameChanged(This,threadId,cchName,name) \ ( (This)->lpVtbl -> ThreadNameChanged(This,threadId,cchName,name) ) #define ICorProfilerCallback4_GarbageCollectionStarted(This,cGenerations,generationCollected,reason) \ ( (This)->lpVtbl -> GarbageCollectionStarted(This,cGenerations,generationCollected,reason) ) #define ICorProfilerCallback4_SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback4_GarbageCollectionFinished(This) \ ( (This)->lpVtbl -> GarbageCollectionFinished(This) ) #define ICorProfilerCallback4_FinalizeableObjectQueued(This,finalizerFlags,objectID) \ ( (This)->lpVtbl -> FinalizeableObjectQueued(This,finalizerFlags,objectID) ) #define ICorProfilerCallback4_RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) \ ( (This)->lpVtbl -> RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) ) #define ICorProfilerCallback4_HandleCreated(This,handleId,initialObjectId) \ ( (This)->lpVtbl -> HandleCreated(This,handleId,initialObjectId) ) #define ICorProfilerCallback4_HandleDestroyed(This,handleId) \ ( (This)->lpVtbl -> HandleDestroyed(This,handleId) ) #define ICorProfilerCallback4_InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) \ ( (This)->lpVtbl -> InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) ) #define ICorProfilerCallback4_ProfilerAttachComplete(This) \ ( (This)->lpVtbl -> ProfilerAttachComplete(This) ) #define ICorProfilerCallback4_ProfilerDetachSucceeded(This) \ ( (This)->lpVtbl -> ProfilerDetachSucceeded(This) ) #define ICorProfilerCallback4_ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) \ ( (This)->lpVtbl -> ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) ) #define ICorProfilerCallback4_GetReJITParameters(This,moduleId,methodId,pFunctionControl) \ ( (This)->lpVtbl -> GetReJITParameters(This,moduleId,methodId,pFunctionControl) ) #define ICorProfilerCallback4_ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback4_ReJITError(This,moduleId,methodId,functionId,hrStatus) \ ( (This)->lpVtbl -> ReJITError(This,moduleId,methodId,functionId,hrStatus) ) #define ICorProfilerCallback4_MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback4_SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerCallback4_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerCallback5_INTERFACE_DEFINED__ #define __ICorProfilerCallback5_INTERFACE_DEFINED__ /* interface ICorProfilerCallback5 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerCallback5; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("8DFBA405-8C9F-45F8-BFFA-83B14CEF78B5") ICorProfilerCallback5 : public ICorProfilerCallback4 { public: virtual HRESULT STDMETHODCALLTYPE ConditionalWeakTableElementReferences( /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID keyRefIds[ ], /* [size_is][in] */ ObjectID valueRefIds[ ], /* [size_is][in] */ GCHandleID rootIds[ ]) = 0; }; #else /* C style interface */ typedef struct ICorProfilerCallback5Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerCallback5 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerCallback5 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *Initialize )( ICorProfilerCallback5 * This, /* [in] */ IUnknown *pICorProfilerInfoUnk); HRESULT ( STDMETHODCALLTYPE *Shutdown )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationStarted )( ICorProfilerCallback5 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationFinished )( ICorProfilerCallback5 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownStarted )( ICorProfilerCallback5 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownFinished )( ICorProfilerCallback5 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadStarted )( ICorProfilerCallback5 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadFinished )( ICorProfilerCallback5 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadStarted )( ICorProfilerCallback5 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadFinished )( ICorProfilerCallback5 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleLoadStarted )( ICorProfilerCallback5 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleLoadFinished )( ICorProfilerCallback5 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadStarted )( ICorProfilerCallback5 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadFinished )( ICorProfilerCallback5 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleAttachedToAssembly )( ICorProfilerCallback5 * This, /* [in] */ ModuleID moduleId, /* [in] */ AssemblyID AssemblyId); HRESULT ( STDMETHODCALLTYPE *ClassLoadStarted )( ICorProfilerCallback5 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassLoadFinished )( ICorProfilerCallback5 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ClassUnloadStarted )( ICorProfilerCallback5 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassUnloadFinished )( ICorProfilerCallback5 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *FunctionUnloadStarted )( ICorProfilerCallback5 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITCompilationStarted )( ICorProfilerCallback5 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCompilationFinished )( ICorProfilerCallback5 * This, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchStarted )( ICorProfilerCallback5 * This, /* [in] */ FunctionID functionId, /* [out] */ BOOL *pbUseCachedFunction); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchFinished )( ICorProfilerCallback5 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_JIT_CACHE result); HRESULT ( STDMETHODCALLTYPE *JITFunctionPitched )( ICorProfilerCallback5 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITInlining )( ICorProfilerCallback5 * This, /* [in] */ FunctionID callerId, /* [in] */ FunctionID calleeId, /* [out] */ BOOL *pfShouldInline); HRESULT ( STDMETHODCALLTYPE *ThreadCreated )( ICorProfilerCallback5 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadDestroyed )( ICorProfilerCallback5 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadAssignedToOSThread )( ICorProfilerCallback5 * This, /* [in] */ ThreadID managedThreadId, /* [in] */ DWORD osThreadId); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationStarted )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *RemotingClientSendingMessage )( ICorProfilerCallback5 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientReceivingReply )( ICorProfilerCallback5 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationFinished )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerReceivingMessage )( ICorProfilerCallback5 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationStarted )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationReturned )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerSendingReply )( ICorProfilerCallback5 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *UnmanagedToManagedTransition )( ICorProfilerCallback5 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *ManagedToUnmanagedTransition )( ICorProfilerCallback5 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendStarted )( ICorProfilerCallback5 * This, /* [in] */ COR_PRF_SUSPEND_REASON suspendReason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendFinished )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendAborted )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeStarted )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeFinished )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadSuspended )( ICorProfilerCallback5 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadResumed )( ICorProfilerCallback5 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *MovedReferences )( ICorProfilerCallback5 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectAllocated )( ICorProfilerCallback5 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ObjectsAllocatedByClass )( ICorProfilerCallback5 * This, /* [in] */ ULONG cClassCount, /* [size_is][in] */ ClassID classIds[ ], /* [size_is][in] */ ULONG cObjects[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectReferences )( ICorProfilerCallback5 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId, /* [in] */ ULONG cObjectRefs, /* [size_is][in] */ ObjectID objectRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *RootReferences )( ICorProfilerCallback5 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *ExceptionThrown )( ICorProfilerCallback5 * This, /* [in] */ ObjectID thrownObjectId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionEnter )( ICorProfilerCallback5 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionLeave )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterEnter )( ICorProfilerCallback5 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterLeave )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchCatcherFound )( ICorProfilerCallback5 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerEnter )( ICorProfilerCallback5 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerLeave )( ICorProfilerCallback5 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionEnter )( ICorProfilerCallback5 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionLeave )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyEnter )( ICorProfilerCallback5 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyLeave )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherEnter )( ICorProfilerCallback5 * This, /* [in] */ FunctionID functionId, /* [in] */ ObjectID objectId); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherLeave )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableCreated )( ICorProfilerCallback5 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable, /* [in] */ ULONG cSlots); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableDestroyed )( ICorProfilerCallback5 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherFound )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherExecute )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *ThreadNameChanged )( ICorProfilerCallback5 * This, /* [in] */ ThreadID threadId, /* [in] */ ULONG cchName, /* [annotation][in] */ _In_reads_opt_(cchName) WCHAR name[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionStarted )( ICorProfilerCallback5 * This, /* [in] */ int cGenerations, /* [size_is][in] */ BOOL generationCollected[ ], /* [in] */ COR_PRF_GC_REASON reason); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences )( ICorProfilerCallback5 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionFinished )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *FinalizeableObjectQueued )( ICorProfilerCallback5 * This, /* [in] */ DWORD finalizerFlags, /* [in] */ ObjectID objectID); HRESULT ( STDMETHODCALLTYPE *RootReferences2 )( ICorProfilerCallback5 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_KIND rootKinds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_FLAGS rootFlags[ ], /* [size_is][in] */ UINT_PTR rootIds[ ]); HRESULT ( STDMETHODCALLTYPE *HandleCreated )( ICorProfilerCallback5 * This, /* [in] */ GCHandleID handleId, /* [in] */ ObjectID initialObjectId); HRESULT ( STDMETHODCALLTYPE *HandleDestroyed )( ICorProfilerCallback5 * This, /* [in] */ GCHandleID handleId); HRESULT ( STDMETHODCALLTYPE *InitializeForAttach )( ICorProfilerCallback5 * This, /* [in] */ IUnknown *pCorProfilerInfoUnk, /* [in] */ void *pvClientData, /* [in] */ UINT cbClientData); HRESULT ( STDMETHODCALLTYPE *ProfilerAttachComplete )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *ProfilerDetachSucceeded )( ICorProfilerCallback5 * This); HRESULT ( STDMETHODCALLTYPE *ReJITCompilationStarted )( ICorProfilerCallback5 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *GetReJITParameters )( ICorProfilerCallback5 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ ICorProfilerFunctionControl *pFunctionControl); HRESULT ( STDMETHODCALLTYPE *ReJITCompilationFinished )( ICorProfilerCallback5 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *ReJITError )( ICorProfilerCallback5 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *MovedReferences2 )( ICorProfilerCallback5 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences2 )( ICorProfilerCallback5 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ConditionalWeakTableElementReferences )( ICorProfilerCallback5 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID keyRefIds[ ], /* [size_is][in] */ ObjectID valueRefIds[ ], /* [size_is][in] */ GCHandleID rootIds[ ]); END_INTERFACE } ICorProfilerCallback5Vtbl; interface ICorProfilerCallback5 { CONST_VTBL struct ICorProfilerCallback5Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerCallback5_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerCallback5_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerCallback5_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerCallback5_Initialize(This,pICorProfilerInfoUnk) \ ( (This)->lpVtbl -> Initialize(This,pICorProfilerInfoUnk) ) #define ICorProfilerCallback5_Shutdown(This) \ ( (This)->lpVtbl -> Shutdown(This) ) #define ICorProfilerCallback5_AppDomainCreationStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainCreationStarted(This,appDomainId) ) #define ICorProfilerCallback5_AppDomainCreationFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainCreationFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback5_AppDomainShutdownStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainShutdownStarted(This,appDomainId) ) #define ICorProfilerCallback5_AppDomainShutdownFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainShutdownFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback5_AssemblyLoadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyLoadStarted(This,assemblyId) ) #define ICorProfilerCallback5_AssemblyLoadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyLoadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback5_AssemblyUnloadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyUnloadStarted(This,assemblyId) ) #define ICorProfilerCallback5_AssemblyUnloadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyUnloadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback5_ModuleLoadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleLoadStarted(This,moduleId) ) #define ICorProfilerCallback5_ModuleLoadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleLoadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback5_ModuleUnloadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleUnloadStarted(This,moduleId) ) #define ICorProfilerCallback5_ModuleUnloadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleUnloadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback5_ModuleAttachedToAssembly(This,moduleId,AssemblyId) \ ( (This)->lpVtbl -> ModuleAttachedToAssembly(This,moduleId,AssemblyId) ) #define ICorProfilerCallback5_ClassLoadStarted(This,classId) \ ( (This)->lpVtbl -> ClassLoadStarted(This,classId) ) #define ICorProfilerCallback5_ClassLoadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassLoadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback5_ClassUnloadStarted(This,classId) \ ( (This)->lpVtbl -> ClassUnloadStarted(This,classId) ) #define ICorProfilerCallback5_ClassUnloadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassUnloadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback5_FunctionUnloadStarted(This,functionId) \ ( (This)->lpVtbl -> FunctionUnloadStarted(This,functionId) ) #define ICorProfilerCallback5_JITCompilationStarted(This,functionId,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationStarted(This,functionId,fIsSafeToBlock) ) #define ICorProfilerCallback5_JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback5_JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) \ ( (This)->lpVtbl -> JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) ) #define ICorProfilerCallback5_JITCachedFunctionSearchFinished(This,functionId,result) \ ( (This)->lpVtbl -> JITCachedFunctionSearchFinished(This,functionId,result) ) #define ICorProfilerCallback5_JITFunctionPitched(This,functionId) \ ( (This)->lpVtbl -> JITFunctionPitched(This,functionId) ) #define ICorProfilerCallback5_JITInlining(This,callerId,calleeId,pfShouldInline) \ ( (This)->lpVtbl -> JITInlining(This,callerId,calleeId,pfShouldInline) ) #define ICorProfilerCallback5_ThreadCreated(This,threadId) \ ( (This)->lpVtbl -> ThreadCreated(This,threadId) ) #define ICorProfilerCallback5_ThreadDestroyed(This,threadId) \ ( (This)->lpVtbl -> ThreadDestroyed(This,threadId) ) #define ICorProfilerCallback5_ThreadAssignedToOSThread(This,managedThreadId,osThreadId) \ ( (This)->lpVtbl -> ThreadAssignedToOSThread(This,managedThreadId,osThreadId) ) #define ICorProfilerCallback5_RemotingClientInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingClientInvocationStarted(This) ) #define ICorProfilerCallback5_RemotingClientSendingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientSendingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback5_RemotingClientReceivingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientReceivingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback5_RemotingClientInvocationFinished(This) \ ( (This)->lpVtbl -> RemotingClientInvocationFinished(This) ) #define ICorProfilerCallback5_RemotingServerReceivingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerReceivingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback5_RemotingServerInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingServerInvocationStarted(This) ) #define ICorProfilerCallback5_RemotingServerInvocationReturned(This) \ ( (This)->lpVtbl -> RemotingServerInvocationReturned(This) ) #define ICorProfilerCallback5_RemotingServerSendingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerSendingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback5_UnmanagedToManagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> UnmanagedToManagedTransition(This,functionId,reason) ) #define ICorProfilerCallback5_ManagedToUnmanagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> ManagedToUnmanagedTransition(This,functionId,reason) ) #define ICorProfilerCallback5_RuntimeSuspendStarted(This,suspendReason) \ ( (This)->lpVtbl -> RuntimeSuspendStarted(This,suspendReason) ) #define ICorProfilerCallback5_RuntimeSuspendFinished(This) \ ( (This)->lpVtbl -> RuntimeSuspendFinished(This) ) #define ICorProfilerCallback5_RuntimeSuspendAborted(This) \ ( (This)->lpVtbl -> RuntimeSuspendAborted(This) ) #define ICorProfilerCallback5_RuntimeResumeStarted(This) \ ( (This)->lpVtbl -> RuntimeResumeStarted(This) ) #define ICorProfilerCallback5_RuntimeResumeFinished(This) \ ( (This)->lpVtbl -> RuntimeResumeFinished(This) ) #define ICorProfilerCallback5_RuntimeThreadSuspended(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadSuspended(This,threadId) ) #define ICorProfilerCallback5_RuntimeThreadResumed(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadResumed(This,threadId) ) #define ICorProfilerCallback5_MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback5_ObjectAllocated(This,objectId,classId) \ ( (This)->lpVtbl -> ObjectAllocated(This,objectId,classId) ) #define ICorProfilerCallback5_ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) \ ( (This)->lpVtbl -> ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) ) #define ICorProfilerCallback5_ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) \ ( (This)->lpVtbl -> ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) ) #define ICorProfilerCallback5_RootReferences(This,cRootRefs,rootRefIds) \ ( (This)->lpVtbl -> RootReferences(This,cRootRefs,rootRefIds) ) #define ICorProfilerCallback5_ExceptionThrown(This,thrownObjectId) \ ( (This)->lpVtbl -> ExceptionThrown(This,thrownObjectId) ) #define ICorProfilerCallback5_ExceptionSearchFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFunctionEnter(This,functionId) ) #define ICorProfilerCallback5_ExceptionSearchFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFunctionLeave(This) ) #define ICorProfilerCallback5_ExceptionSearchFilterEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFilterEnter(This,functionId) ) #define ICorProfilerCallback5_ExceptionSearchFilterLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFilterLeave(This) ) #define ICorProfilerCallback5_ExceptionSearchCatcherFound(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchCatcherFound(This,functionId) ) #define ICorProfilerCallback5_ExceptionOSHandlerEnter(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerEnter(This,__unused) ) #define ICorProfilerCallback5_ExceptionOSHandlerLeave(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerLeave(This,__unused) ) #define ICorProfilerCallback5_ExceptionUnwindFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionEnter(This,functionId) ) #define ICorProfilerCallback5_ExceptionUnwindFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionLeave(This) ) #define ICorProfilerCallback5_ExceptionUnwindFinallyEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyEnter(This,functionId) ) #define ICorProfilerCallback5_ExceptionUnwindFinallyLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyLeave(This) ) #define ICorProfilerCallback5_ExceptionCatcherEnter(This,functionId,objectId) \ ( (This)->lpVtbl -> ExceptionCatcherEnter(This,functionId,objectId) ) #define ICorProfilerCallback5_ExceptionCatcherLeave(This) \ ( (This)->lpVtbl -> ExceptionCatcherLeave(This) ) #define ICorProfilerCallback5_COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) \ ( (This)->lpVtbl -> COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) ) #define ICorProfilerCallback5_COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) \ ( (This)->lpVtbl -> COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) ) #define ICorProfilerCallback5_ExceptionCLRCatcherFound(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherFound(This) ) #define ICorProfilerCallback5_ExceptionCLRCatcherExecute(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherExecute(This) ) #define ICorProfilerCallback5_ThreadNameChanged(This,threadId,cchName,name) \ ( (This)->lpVtbl -> ThreadNameChanged(This,threadId,cchName,name) ) #define ICorProfilerCallback5_GarbageCollectionStarted(This,cGenerations,generationCollected,reason) \ ( (This)->lpVtbl -> GarbageCollectionStarted(This,cGenerations,generationCollected,reason) ) #define ICorProfilerCallback5_SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback5_GarbageCollectionFinished(This) \ ( (This)->lpVtbl -> GarbageCollectionFinished(This) ) #define ICorProfilerCallback5_FinalizeableObjectQueued(This,finalizerFlags,objectID) \ ( (This)->lpVtbl -> FinalizeableObjectQueued(This,finalizerFlags,objectID) ) #define ICorProfilerCallback5_RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) \ ( (This)->lpVtbl -> RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) ) #define ICorProfilerCallback5_HandleCreated(This,handleId,initialObjectId) \ ( (This)->lpVtbl -> HandleCreated(This,handleId,initialObjectId) ) #define ICorProfilerCallback5_HandleDestroyed(This,handleId) \ ( (This)->lpVtbl -> HandleDestroyed(This,handleId) ) #define ICorProfilerCallback5_InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) \ ( (This)->lpVtbl -> InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) ) #define ICorProfilerCallback5_ProfilerAttachComplete(This) \ ( (This)->lpVtbl -> ProfilerAttachComplete(This) ) #define ICorProfilerCallback5_ProfilerDetachSucceeded(This) \ ( (This)->lpVtbl -> ProfilerDetachSucceeded(This) ) #define ICorProfilerCallback5_ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) \ ( (This)->lpVtbl -> ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) ) #define ICorProfilerCallback5_GetReJITParameters(This,moduleId,methodId,pFunctionControl) \ ( (This)->lpVtbl -> GetReJITParameters(This,moduleId,methodId,pFunctionControl) ) #define ICorProfilerCallback5_ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback5_ReJITError(This,moduleId,methodId,functionId,hrStatus) \ ( (This)->lpVtbl -> ReJITError(This,moduleId,methodId,functionId,hrStatus) ) #define ICorProfilerCallback5_MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback5_SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback5_ConditionalWeakTableElementReferences(This,cRootRefs,keyRefIds,valueRefIds,rootIds) \ ( (This)->lpVtbl -> ConditionalWeakTableElementReferences(This,cRootRefs,keyRefIds,valueRefIds,rootIds) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerCallback5_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerCallback6_INTERFACE_DEFINED__ #define __ICorProfilerCallback6_INTERFACE_DEFINED__ /* interface ICorProfilerCallback6 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerCallback6; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("FC13DF4B-4448-4F4F-950C-BA8D19D00C36") ICorProfilerCallback6 : public ICorProfilerCallback5 { public: virtual HRESULT STDMETHODCALLTYPE GetAssemblyReferences( /* [string][in] */ const WCHAR *wszAssemblyPath, /* [in] */ ICorProfilerAssemblyReferenceProvider *pAsmRefProvider) = 0; }; #else /* C style interface */ typedef struct ICorProfilerCallback6Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerCallback6 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerCallback6 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *Initialize )( ICorProfilerCallback6 * This, /* [in] */ IUnknown *pICorProfilerInfoUnk); HRESULT ( STDMETHODCALLTYPE *Shutdown )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationStarted )( ICorProfilerCallback6 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationFinished )( ICorProfilerCallback6 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownStarted )( ICorProfilerCallback6 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownFinished )( ICorProfilerCallback6 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadStarted )( ICorProfilerCallback6 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadFinished )( ICorProfilerCallback6 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadStarted )( ICorProfilerCallback6 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadFinished )( ICorProfilerCallback6 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleLoadStarted )( ICorProfilerCallback6 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleLoadFinished )( ICorProfilerCallback6 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadStarted )( ICorProfilerCallback6 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadFinished )( ICorProfilerCallback6 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleAttachedToAssembly )( ICorProfilerCallback6 * This, /* [in] */ ModuleID moduleId, /* [in] */ AssemblyID AssemblyId); HRESULT ( STDMETHODCALLTYPE *ClassLoadStarted )( ICorProfilerCallback6 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassLoadFinished )( ICorProfilerCallback6 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ClassUnloadStarted )( ICorProfilerCallback6 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassUnloadFinished )( ICorProfilerCallback6 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *FunctionUnloadStarted )( ICorProfilerCallback6 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITCompilationStarted )( ICorProfilerCallback6 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCompilationFinished )( ICorProfilerCallback6 * This, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchStarted )( ICorProfilerCallback6 * This, /* [in] */ FunctionID functionId, /* [out] */ BOOL *pbUseCachedFunction); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchFinished )( ICorProfilerCallback6 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_JIT_CACHE result); HRESULT ( STDMETHODCALLTYPE *JITFunctionPitched )( ICorProfilerCallback6 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITInlining )( ICorProfilerCallback6 * This, /* [in] */ FunctionID callerId, /* [in] */ FunctionID calleeId, /* [out] */ BOOL *pfShouldInline); HRESULT ( STDMETHODCALLTYPE *ThreadCreated )( ICorProfilerCallback6 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadDestroyed )( ICorProfilerCallback6 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadAssignedToOSThread )( ICorProfilerCallback6 * This, /* [in] */ ThreadID managedThreadId, /* [in] */ DWORD osThreadId); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationStarted )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *RemotingClientSendingMessage )( ICorProfilerCallback6 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientReceivingReply )( ICorProfilerCallback6 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationFinished )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerReceivingMessage )( ICorProfilerCallback6 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationStarted )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationReturned )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerSendingReply )( ICorProfilerCallback6 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *UnmanagedToManagedTransition )( ICorProfilerCallback6 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *ManagedToUnmanagedTransition )( ICorProfilerCallback6 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendStarted )( ICorProfilerCallback6 * This, /* [in] */ COR_PRF_SUSPEND_REASON suspendReason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendFinished )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendAborted )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeStarted )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeFinished )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadSuspended )( ICorProfilerCallback6 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadResumed )( ICorProfilerCallback6 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *MovedReferences )( ICorProfilerCallback6 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectAllocated )( ICorProfilerCallback6 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ObjectsAllocatedByClass )( ICorProfilerCallback6 * This, /* [in] */ ULONG cClassCount, /* [size_is][in] */ ClassID classIds[ ], /* [size_is][in] */ ULONG cObjects[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectReferences )( ICorProfilerCallback6 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId, /* [in] */ ULONG cObjectRefs, /* [size_is][in] */ ObjectID objectRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *RootReferences )( ICorProfilerCallback6 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *ExceptionThrown )( ICorProfilerCallback6 * This, /* [in] */ ObjectID thrownObjectId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionEnter )( ICorProfilerCallback6 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionLeave )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterEnter )( ICorProfilerCallback6 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterLeave )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchCatcherFound )( ICorProfilerCallback6 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerEnter )( ICorProfilerCallback6 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerLeave )( ICorProfilerCallback6 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionEnter )( ICorProfilerCallback6 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionLeave )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyEnter )( ICorProfilerCallback6 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyLeave )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherEnter )( ICorProfilerCallback6 * This, /* [in] */ FunctionID functionId, /* [in] */ ObjectID objectId); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherLeave )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableCreated )( ICorProfilerCallback6 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable, /* [in] */ ULONG cSlots); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableDestroyed )( ICorProfilerCallback6 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherFound )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherExecute )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *ThreadNameChanged )( ICorProfilerCallback6 * This, /* [in] */ ThreadID threadId, /* [in] */ ULONG cchName, /* [annotation][in] */ _In_reads_opt_(cchName) WCHAR name[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionStarted )( ICorProfilerCallback6 * This, /* [in] */ int cGenerations, /* [size_is][in] */ BOOL generationCollected[ ], /* [in] */ COR_PRF_GC_REASON reason); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences )( ICorProfilerCallback6 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionFinished )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *FinalizeableObjectQueued )( ICorProfilerCallback6 * This, /* [in] */ DWORD finalizerFlags, /* [in] */ ObjectID objectID); HRESULT ( STDMETHODCALLTYPE *RootReferences2 )( ICorProfilerCallback6 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_KIND rootKinds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_FLAGS rootFlags[ ], /* [size_is][in] */ UINT_PTR rootIds[ ]); HRESULT ( STDMETHODCALLTYPE *HandleCreated )( ICorProfilerCallback6 * This, /* [in] */ GCHandleID handleId, /* [in] */ ObjectID initialObjectId); HRESULT ( STDMETHODCALLTYPE *HandleDestroyed )( ICorProfilerCallback6 * This, /* [in] */ GCHandleID handleId); HRESULT ( STDMETHODCALLTYPE *InitializeForAttach )( ICorProfilerCallback6 * This, /* [in] */ IUnknown *pCorProfilerInfoUnk, /* [in] */ void *pvClientData, /* [in] */ UINT cbClientData); HRESULT ( STDMETHODCALLTYPE *ProfilerAttachComplete )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *ProfilerDetachSucceeded )( ICorProfilerCallback6 * This); HRESULT ( STDMETHODCALLTYPE *ReJITCompilationStarted )( ICorProfilerCallback6 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *GetReJITParameters )( ICorProfilerCallback6 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ ICorProfilerFunctionControl *pFunctionControl); HRESULT ( STDMETHODCALLTYPE *ReJITCompilationFinished )( ICorProfilerCallback6 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *ReJITError )( ICorProfilerCallback6 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *MovedReferences2 )( ICorProfilerCallback6 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences2 )( ICorProfilerCallback6 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ConditionalWeakTableElementReferences )( ICorProfilerCallback6 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID keyRefIds[ ], /* [size_is][in] */ ObjectID valueRefIds[ ], /* [size_is][in] */ GCHandleID rootIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetAssemblyReferences )( ICorProfilerCallback6 * This, /* [string][in] */ const WCHAR *wszAssemblyPath, /* [in] */ ICorProfilerAssemblyReferenceProvider *pAsmRefProvider); END_INTERFACE } ICorProfilerCallback6Vtbl; interface ICorProfilerCallback6 { CONST_VTBL struct ICorProfilerCallback6Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerCallback6_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerCallback6_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerCallback6_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerCallback6_Initialize(This,pICorProfilerInfoUnk) \ ( (This)->lpVtbl -> Initialize(This,pICorProfilerInfoUnk) ) #define ICorProfilerCallback6_Shutdown(This) \ ( (This)->lpVtbl -> Shutdown(This) ) #define ICorProfilerCallback6_AppDomainCreationStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainCreationStarted(This,appDomainId) ) #define ICorProfilerCallback6_AppDomainCreationFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainCreationFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback6_AppDomainShutdownStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainShutdownStarted(This,appDomainId) ) #define ICorProfilerCallback6_AppDomainShutdownFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainShutdownFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback6_AssemblyLoadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyLoadStarted(This,assemblyId) ) #define ICorProfilerCallback6_AssemblyLoadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyLoadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback6_AssemblyUnloadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyUnloadStarted(This,assemblyId) ) #define ICorProfilerCallback6_AssemblyUnloadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyUnloadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback6_ModuleLoadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleLoadStarted(This,moduleId) ) #define ICorProfilerCallback6_ModuleLoadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleLoadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback6_ModuleUnloadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleUnloadStarted(This,moduleId) ) #define ICorProfilerCallback6_ModuleUnloadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleUnloadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback6_ModuleAttachedToAssembly(This,moduleId,AssemblyId) \ ( (This)->lpVtbl -> ModuleAttachedToAssembly(This,moduleId,AssemblyId) ) #define ICorProfilerCallback6_ClassLoadStarted(This,classId) \ ( (This)->lpVtbl -> ClassLoadStarted(This,classId) ) #define ICorProfilerCallback6_ClassLoadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassLoadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback6_ClassUnloadStarted(This,classId) \ ( (This)->lpVtbl -> ClassUnloadStarted(This,classId) ) #define ICorProfilerCallback6_ClassUnloadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassUnloadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback6_FunctionUnloadStarted(This,functionId) \ ( (This)->lpVtbl -> FunctionUnloadStarted(This,functionId) ) #define ICorProfilerCallback6_JITCompilationStarted(This,functionId,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationStarted(This,functionId,fIsSafeToBlock) ) #define ICorProfilerCallback6_JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback6_JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) \ ( (This)->lpVtbl -> JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) ) #define ICorProfilerCallback6_JITCachedFunctionSearchFinished(This,functionId,result) \ ( (This)->lpVtbl -> JITCachedFunctionSearchFinished(This,functionId,result) ) #define ICorProfilerCallback6_JITFunctionPitched(This,functionId) \ ( (This)->lpVtbl -> JITFunctionPitched(This,functionId) ) #define ICorProfilerCallback6_JITInlining(This,callerId,calleeId,pfShouldInline) \ ( (This)->lpVtbl -> JITInlining(This,callerId,calleeId,pfShouldInline) ) #define ICorProfilerCallback6_ThreadCreated(This,threadId) \ ( (This)->lpVtbl -> ThreadCreated(This,threadId) ) #define ICorProfilerCallback6_ThreadDestroyed(This,threadId) \ ( (This)->lpVtbl -> ThreadDestroyed(This,threadId) ) #define ICorProfilerCallback6_ThreadAssignedToOSThread(This,managedThreadId,osThreadId) \ ( (This)->lpVtbl -> ThreadAssignedToOSThread(This,managedThreadId,osThreadId) ) #define ICorProfilerCallback6_RemotingClientInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingClientInvocationStarted(This) ) #define ICorProfilerCallback6_RemotingClientSendingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientSendingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback6_RemotingClientReceivingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientReceivingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback6_RemotingClientInvocationFinished(This) \ ( (This)->lpVtbl -> RemotingClientInvocationFinished(This) ) #define ICorProfilerCallback6_RemotingServerReceivingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerReceivingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback6_RemotingServerInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingServerInvocationStarted(This) ) #define ICorProfilerCallback6_RemotingServerInvocationReturned(This) \ ( (This)->lpVtbl -> RemotingServerInvocationReturned(This) ) #define ICorProfilerCallback6_RemotingServerSendingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerSendingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback6_UnmanagedToManagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> UnmanagedToManagedTransition(This,functionId,reason) ) #define ICorProfilerCallback6_ManagedToUnmanagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> ManagedToUnmanagedTransition(This,functionId,reason) ) #define ICorProfilerCallback6_RuntimeSuspendStarted(This,suspendReason) \ ( (This)->lpVtbl -> RuntimeSuspendStarted(This,suspendReason) ) #define ICorProfilerCallback6_RuntimeSuspendFinished(This) \ ( (This)->lpVtbl -> RuntimeSuspendFinished(This) ) #define ICorProfilerCallback6_RuntimeSuspendAborted(This) \ ( (This)->lpVtbl -> RuntimeSuspendAborted(This) ) #define ICorProfilerCallback6_RuntimeResumeStarted(This) \ ( (This)->lpVtbl -> RuntimeResumeStarted(This) ) #define ICorProfilerCallback6_RuntimeResumeFinished(This) \ ( (This)->lpVtbl -> RuntimeResumeFinished(This) ) #define ICorProfilerCallback6_RuntimeThreadSuspended(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadSuspended(This,threadId) ) #define ICorProfilerCallback6_RuntimeThreadResumed(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadResumed(This,threadId) ) #define ICorProfilerCallback6_MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback6_ObjectAllocated(This,objectId,classId) \ ( (This)->lpVtbl -> ObjectAllocated(This,objectId,classId) ) #define ICorProfilerCallback6_ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) \ ( (This)->lpVtbl -> ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) ) #define ICorProfilerCallback6_ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) \ ( (This)->lpVtbl -> ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) ) #define ICorProfilerCallback6_RootReferences(This,cRootRefs,rootRefIds) \ ( (This)->lpVtbl -> RootReferences(This,cRootRefs,rootRefIds) ) #define ICorProfilerCallback6_ExceptionThrown(This,thrownObjectId) \ ( (This)->lpVtbl -> ExceptionThrown(This,thrownObjectId) ) #define ICorProfilerCallback6_ExceptionSearchFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFunctionEnter(This,functionId) ) #define ICorProfilerCallback6_ExceptionSearchFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFunctionLeave(This) ) #define ICorProfilerCallback6_ExceptionSearchFilterEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFilterEnter(This,functionId) ) #define ICorProfilerCallback6_ExceptionSearchFilterLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFilterLeave(This) ) #define ICorProfilerCallback6_ExceptionSearchCatcherFound(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchCatcherFound(This,functionId) ) #define ICorProfilerCallback6_ExceptionOSHandlerEnter(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerEnter(This,__unused) ) #define ICorProfilerCallback6_ExceptionOSHandlerLeave(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerLeave(This,__unused) ) #define ICorProfilerCallback6_ExceptionUnwindFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionEnter(This,functionId) ) #define ICorProfilerCallback6_ExceptionUnwindFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionLeave(This) ) #define ICorProfilerCallback6_ExceptionUnwindFinallyEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyEnter(This,functionId) ) #define ICorProfilerCallback6_ExceptionUnwindFinallyLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyLeave(This) ) #define ICorProfilerCallback6_ExceptionCatcherEnter(This,functionId,objectId) \ ( (This)->lpVtbl -> ExceptionCatcherEnter(This,functionId,objectId) ) #define ICorProfilerCallback6_ExceptionCatcherLeave(This) \ ( (This)->lpVtbl -> ExceptionCatcherLeave(This) ) #define ICorProfilerCallback6_COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) \ ( (This)->lpVtbl -> COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) ) #define ICorProfilerCallback6_COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) \ ( (This)->lpVtbl -> COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) ) #define ICorProfilerCallback6_ExceptionCLRCatcherFound(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherFound(This) ) #define ICorProfilerCallback6_ExceptionCLRCatcherExecute(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherExecute(This) ) #define ICorProfilerCallback6_ThreadNameChanged(This,threadId,cchName,name) \ ( (This)->lpVtbl -> ThreadNameChanged(This,threadId,cchName,name) ) #define ICorProfilerCallback6_GarbageCollectionStarted(This,cGenerations,generationCollected,reason) \ ( (This)->lpVtbl -> GarbageCollectionStarted(This,cGenerations,generationCollected,reason) ) #define ICorProfilerCallback6_SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback6_GarbageCollectionFinished(This) \ ( (This)->lpVtbl -> GarbageCollectionFinished(This) ) #define ICorProfilerCallback6_FinalizeableObjectQueued(This,finalizerFlags,objectID) \ ( (This)->lpVtbl -> FinalizeableObjectQueued(This,finalizerFlags,objectID) ) #define ICorProfilerCallback6_RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) \ ( (This)->lpVtbl -> RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) ) #define ICorProfilerCallback6_HandleCreated(This,handleId,initialObjectId) \ ( (This)->lpVtbl -> HandleCreated(This,handleId,initialObjectId) ) #define ICorProfilerCallback6_HandleDestroyed(This,handleId) \ ( (This)->lpVtbl -> HandleDestroyed(This,handleId) ) #define ICorProfilerCallback6_InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) \ ( (This)->lpVtbl -> InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) ) #define ICorProfilerCallback6_ProfilerAttachComplete(This) \ ( (This)->lpVtbl -> ProfilerAttachComplete(This) ) #define ICorProfilerCallback6_ProfilerDetachSucceeded(This) \ ( (This)->lpVtbl -> ProfilerDetachSucceeded(This) ) #define ICorProfilerCallback6_ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) \ ( (This)->lpVtbl -> ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) ) #define ICorProfilerCallback6_GetReJITParameters(This,moduleId,methodId,pFunctionControl) \ ( (This)->lpVtbl -> GetReJITParameters(This,moduleId,methodId,pFunctionControl) ) #define ICorProfilerCallback6_ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback6_ReJITError(This,moduleId,methodId,functionId,hrStatus) \ ( (This)->lpVtbl -> ReJITError(This,moduleId,methodId,functionId,hrStatus) ) #define ICorProfilerCallback6_MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback6_SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback6_ConditionalWeakTableElementReferences(This,cRootRefs,keyRefIds,valueRefIds,rootIds) \ ( (This)->lpVtbl -> ConditionalWeakTableElementReferences(This,cRootRefs,keyRefIds,valueRefIds,rootIds) ) #define ICorProfilerCallback6_GetAssemblyReferences(This,wszAssemblyPath,pAsmRefProvider) \ ( (This)->lpVtbl -> GetAssemblyReferences(This,wszAssemblyPath,pAsmRefProvider) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerCallback6_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerCallback7_INTERFACE_DEFINED__ #define __ICorProfilerCallback7_INTERFACE_DEFINED__ /* interface ICorProfilerCallback7 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerCallback7; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("F76A2DBA-1D52-4539-866C-2AA518F9EFC3") ICorProfilerCallback7 : public ICorProfilerCallback6 { public: virtual HRESULT STDMETHODCALLTYPE ModuleInMemorySymbolsUpdated( ModuleID moduleId) = 0; }; #else /* C style interface */ typedef struct ICorProfilerCallback7Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerCallback7 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerCallback7 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *Initialize )( ICorProfilerCallback7 * This, /* [in] */ IUnknown *pICorProfilerInfoUnk); HRESULT ( STDMETHODCALLTYPE *Shutdown )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationStarted )( ICorProfilerCallback7 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationFinished )( ICorProfilerCallback7 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownStarted )( ICorProfilerCallback7 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownFinished )( ICorProfilerCallback7 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadStarted )( ICorProfilerCallback7 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadFinished )( ICorProfilerCallback7 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadStarted )( ICorProfilerCallback7 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadFinished )( ICorProfilerCallback7 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleLoadStarted )( ICorProfilerCallback7 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleLoadFinished )( ICorProfilerCallback7 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadStarted )( ICorProfilerCallback7 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadFinished )( ICorProfilerCallback7 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleAttachedToAssembly )( ICorProfilerCallback7 * This, /* [in] */ ModuleID moduleId, /* [in] */ AssemblyID AssemblyId); HRESULT ( STDMETHODCALLTYPE *ClassLoadStarted )( ICorProfilerCallback7 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassLoadFinished )( ICorProfilerCallback7 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ClassUnloadStarted )( ICorProfilerCallback7 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassUnloadFinished )( ICorProfilerCallback7 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *FunctionUnloadStarted )( ICorProfilerCallback7 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITCompilationStarted )( ICorProfilerCallback7 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCompilationFinished )( ICorProfilerCallback7 * This, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchStarted )( ICorProfilerCallback7 * This, /* [in] */ FunctionID functionId, /* [out] */ BOOL *pbUseCachedFunction); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchFinished )( ICorProfilerCallback7 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_JIT_CACHE result); HRESULT ( STDMETHODCALLTYPE *JITFunctionPitched )( ICorProfilerCallback7 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITInlining )( ICorProfilerCallback7 * This, /* [in] */ FunctionID callerId, /* [in] */ FunctionID calleeId, /* [out] */ BOOL *pfShouldInline); HRESULT ( STDMETHODCALLTYPE *ThreadCreated )( ICorProfilerCallback7 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadDestroyed )( ICorProfilerCallback7 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadAssignedToOSThread )( ICorProfilerCallback7 * This, /* [in] */ ThreadID managedThreadId, /* [in] */ DWORD osThreadId); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationStarted )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *RemotingClientSendingMessage )( ICorProfilerCallback7 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientReceivingReply )( ICorProfilerCallback7 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationFinished )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerReceivingMessage )( ICorProfilerCallback7 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationStarted )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationReturned )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerSendingReply )( ICorProfilerCallback7 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *UnmanagedToManagedTransition )( ICorProfilerCallback7 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *ManagedToUnmanagedTransition )( ICorProfilerCallback7 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendStarted )( ICorProfilerCallback7 * This, /* [in] */ COR_PRF_SUSPEND_REASON suspendReason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendFinished )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendAborted )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeStarted )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeFinished )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadSuspended )( ICorProfilerCallback7 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadResumed )( ICorProfilerCallback7 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *MovedReferences )( ICorProfilerCallback7 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectAllocated )( ICorProfilerCallback7 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ObjectsAllocatedByClass )( ICorProfilerCallback7 * This, /* [in] */ ULONG cClassCount, /* [size_is][in] */ ClassID classIds[ ], /* [size_is][in] */ ULONG cObjects[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectReferences )( ICorProfilerCallback7 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId, /* [in] */ ULONG cObjectRefs, /* [size_is][in] */ ObjectID objectRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *RootReferences )( ICorProfilerCallback7 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *ExceptionThrown )( ICorProfilerCallback7 * This, /* [in] */ ObjectID thrownObjectId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionEnter )( ICorProfilerCallback7 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionLeave )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterEnter )( ICorProfilerCallback7 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterLeave )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchCatcherFound )( ICorProfilerCallback7 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerEnter )( ICorProfilerCallback7 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerLeave )( ICorProfilerCallback7 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionEnter )( ICorProfilerCallback7 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionLeave )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyEnter )( ICorProfilerCallback7 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyLeave )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherEnter )( ICorProfilerCallback7 * This, /* [in] */ FunctionID functionId, /* [in] */ ObjectID objectId); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherLeave )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableCreated )( ICorProfilerCallback7 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable, /* [in] */ ULONG cSlots); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableDestroyed )( ICorProfilerCallback7 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherFound )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherExecute )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *ThreadNameChanged )( ICorProfilerCallback7 * This, /* [in] */ ThreadID threadId, /* [in] */ ULONG cchName, /* [annotation][in] */ _In_reads_opt_(cchName) WCHAR name[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionStarted )( ICorProfilerCallback7 * This, /* [in] */ int cGenerations, /* [size_is][in] */ BOOL generationCollected[ ], /* [in] */ COR_PRF_GC_REASON reason); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences )( ICorProfilerCallback7 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionFinished )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *FinalizeableObjectQueued )( ICorProfilerCallback7 * This, /* [in] */ DWORD finalizerFlags, /* [in] */ ObjectID objectID); HRESULT ( STDMETHODCALLTYPE *RootReferences2 )( ICorProfilerCallback7 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_KIND rootKinds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_FLAGS rootFlags[ ], /* [size_is][in] */ UINT_PTR rootIds[ ]); HRESULT ( STDMETHODCALLTYPE *HandleCreated )( ICorProfilerCallback7 * This, /* [in] */ GCHandleID handleId, /* [in] */ ObjectID initialObjectId); HRESULT ( STDMETHODCALLTYPE *HandleDestroyed )( ICorProfilerCallback7 * This, /* [in] */ GCHandleID handleId); HRESULT ( STDMETHODCALLTYPE *InitializeForAttach )( ICorProfilerCallback7 * This, /* [in] */ IUnknown *pCorProfilerInfoUnk, /* [in] */ void *pvClientData, /* [in] */ UINT cbClientData); HRESULT ( STDMETHODCALLTYPE *ProfilerAttachComplete )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *ProfilerDetachSucceeded )( ICorProfilerCallback7 * This); HRESULT ( STDMETHODCALLTYPE *ReJITCompilationStarted )( ICorProfilerCallback7 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *GetReJITParameters )( ICorProfilerCallback7 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ ICorProfilerFunctionControl *pFunctionControl); HRESULT ( STDMETHODCALLTYPE *ReJITCompilationFinished )( ICorProfilerCallback7 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *ReJITError )( ICorProfilerCallback7 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *MovedReferences2 )( ICorProfilerCallback7 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences2 )( ICorProfilerCallback7 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ConditionalWeakTableElementReferences )( ICorProfilerCallback7 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID keyRefIds[ ], /* [size_is][in] */ ObjectID valueRefIds[ ], /* [size_is][in] */ GCHandleID rootIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetAssemblyReferences )( ICorProfilerCallback7 * This, /* [string][in] */ const WCHAR *wszAssemblyPath, /* [in] */ ICorProfilerAssemblyReferenceProvider *pAsmRefProvider); HRESULT ( STDMETHODCALLTYPE *ModuleInMemorySymbolsUpdated )( ICorProfilerCallback7 * This, ModuleID moduleId); END_INTERFACE } ICorProfilerCallback7Vtbl; interface ICorProfilerCallback7 { CONST_VTBL struct ICorProfilerCallback7Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerCallback7_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerCallback7_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerCallback7_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerCallback7_Initialize(This,pICorProfilerInfoUnk) \ ( (This)->lpVtbl -> Initialize(This,pICorProfilerInfoUnk) ) #define ICorProfilerCallback7_Shutdown(This) \ ( (This)->lpVtbl -> Shutdown(This) ) #define ICorProfilerCallback7_AppDomainCreationStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainCreationStarted(This,appDomainId) ) #define ICorProfilerCallback7_AppDomainCreationFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainCreationFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback7_AppDomainShutdownStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainShutdownStarted(This,appDomainId) ) #define ICorProfilerCallback7_AppDomainShutdownFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainShutdownFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback7_AssemblyLoadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyLoadStarted(This,assemblyId) ) #define ICorProfilerCallback7_AssemblyLoadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyLoadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback7_AssemblyUnloadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyUnloadStarted(This,assemblyId) ) #define ICorProfilerCallback7_AssemblyUnloadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyUnloadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback7_ModuleLoadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleLoadStarted(This,moduleId) ) #define ICorProfilerCallback7_ModuleLoadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleLoadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback7_ModuleUnloadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleUnloadStarted(This,moduleId) ) #define ICorProfilerCallback7_ModuleUnloadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleUnloadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback7_ModuleAttachedToAssembly(This,moduleId,AssemblyId) \ ( (This)->lpVtbl -> ModuleAttachedToAssembly(This,moduleId,AssemblyId) ) #define ICorProfilerCallback7_ClassLoadStarted(This,classId) \ ( (This)->lpVtbl -> ClassLoadStarted(This,classId) ) #define ICorProfilerCallback7_ClassLoadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassLoadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback7_ClassUnloadStarted(This,classId) \ ( (This)->lpVtbl -> ClassUnloadStarted(This,classId) ) #define ICorProfilerCallback7_ClassUnloadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassUnloadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback7_FunctionUnloadStarted(This,functionId) \ ( (This)->lpVtbl -> FunctionUnloadStarted(This,functionId) ) #define ICorProfilerCallback7_JITCompilationStarted(This,functionId,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationStarted(This,functionId,fIsSafeToBlock) ) #define ICorProfilerCallback7_JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback7_JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) \ ( (This)->lpVtbl -> JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) ) #define ICorProfilerCallback7_JITCachedFunctionSearchFinished(This,functionId,result) \ ( (This)->lpVtbl -> JITCachedFunctionSearchFinished(This,functionId,result) ) #define ICorProfilerCallback7_JITFunctionPitched(This,functionId) \ ( (This)->lpVtbl -> JITFunctionPitched(This,functionId) ) #define ICorProfilerCallback7_JITInlining(This,callerId,calleeId,pfShouldInline) \ ( (This)->lpVtbl -> JITInlining(This,callerId,calleeId,pfShouldInline) ) #define ICorProfilerCallback7_ThreadCreated(This,threadId) \ ( (This)->lpVtbl -> ThreadCreated(This,threadId) ) #define ICorProfilerCallback7_ThreadDestroyed(This,threadId) \ ( (This)->lpVtbl -> ThreadDestroyed(This,threadId) ) #define ICorProfilerCallback7_ThreadAssignedToOSThread(This,managedThreadId,osThreadId) \ ( (This)->lpVtbl -> ThreadAssignedToOSThread(This,managedThreadId,osThreadId) ) #define ICorProfilerCallback7_RemotingClientInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingClientInvocationStarted(This) ) #define ICorProfilerCallback7_RemotingClientSendingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientSendingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback7_RemotingClientReceivingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientReceivingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback7_RemotingClientInvocationFinished(This) \ ( (This)->lpVtbl -> RemotingClientInvocationFinished(This) ) #define ICorProfilerCallback7_RemotingServerReceivingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerReceivingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback7_RemotingServerInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingServerInvocationStarted(This) ) #define ICorProfilerCallback7_RemotingServerInvocationReturned(This) \ ( (This)->lpVtbl -> RemotingServerInvocationReturned(This) ) #define ICorProfilerCallback7_RemotingServerSendingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerSendingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback7_UnmanagedToManagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> UnmanagedToManagedTransition(This,functionId,reason) ) #define ICorProfilerCallback7_ManagedToUnmanagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> ManagedToUnmanagedTransition(This,functionId,reason) ) #define ICorProfilerCallback7_RuntimeSuspendStarted(This,suspendReason) \ ( (This)->lpVtbl -> RuntimeSuspendStarted(This,suspendReason) ) #define ICorProfilerCallback7_RuntimeSuspendFinished(This) \ ( (This)->lpVtbl -> RuntimeSuspendFinished(This) ) #define ICorProfilerCallback7_RuntimeSuspendAborted(This) \ ( (This)->lpVtbl -> RuntimeSuspendAborted(This) ) #define ICorProfilerCallback7_RuntimeResumeStarted(This) \ ( (This)->lpVtbl -> RuntimeResumeStarted(This) ) #define ICorProfilerCallback7_RuntimeResumeFinished(This) \ ( (This)->lpVtbl -> RuntimeResumeFinished(This) ) #define ICorProfilerCallback7_RuntimeThreadSuspended(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadSuspended(This,threadId) ) #define ICorProfilerCallback7_RuntimeThreadResumed(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadResumed(This,threadId) ) #define ICorProfilerCallback7_MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback7_ObjectAllocated(This,objectId,classId) \ ( (This)->lpVtbl -> ObjectAllocated(This,objectId,classId) ) #define ICorProfilerCallback7_ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) \ ( (This)->lpVtbl -> ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) ) #define ICorProfilerCallback7_ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) \ ( (This)->lpVtbl -> ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) ) #define ICorProfilerCallback7_RootReferences(This,cRootRefs,rootRefIds) \ ( (This)->lpVtbl -> RootReferences(This,cRootRefs,rootRefIds) ) #define ICorProfilerCallback7_ExceptionThrown(This,thrownObjectId) \ ( (This)->lpVtbl -> ExceptionThrown(This,thrownObjectId) ) #define ICorProfilerCallback7_ExceptionSearchFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFunctionEnter(This,functionId) ) #define ICorProfilerCallback7_ExceptionSearchFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFunctionLeave(This) ) #define ICorProfilerCallback7_ExceptionSearchFilterEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFilterEnter(This,functionId) ) #define ICorProfilerCallback7_ExceptionSearchFilterLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFilterLeave(This) ) #define ICorProfilerCallback7_ExceptionSearchCatcherFound(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchCatcherFound(This,functionId) ) #define ICorProfilerCallback7_ExceptionOSHandlerEnter(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerEnter(This,__unused) ) #define ICorProfilerCallback7_ExceptionOSHandlerLeave(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerLeave(This,__unused) ) #define ICorProfilerCallback7_ExceptionUnwindFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionEnter(This,functionId) ) #define ICorProfilerCallback7_ExceptionUnwindFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionLeave(This) ) #define ICorProfilerCallback7_ExceptionUnwindFinallyEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyEnter(This,functionId) ) #define ICorProfilerCallback7_ExceptionUnwindFinallyLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyLeave(This) ) #define ICorProfilerCallback7_ExceptionCatcherEnter(This,functionId,objectId) \ ( (This)->lpVtbl -> ExceptionCatcherEnter(This,functionId,objectId) ) #define ICorProfilerCallback7_ExceptionCatcherLeave(This) \ ( (This)->lpVtbl -> ExceptionCatcherLeave(This) ) #define ICorProfilerCallback7_COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) \ ( (This)->lpVtbl -> COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) ) #define ICorProfilerCallback7_COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) \ ( (This)->lpVtbl -> COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) ) #define ICorProfilerCallback7_ExceptionCLRCatcherFound(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherFound(This) ) #define ICorProfilerCallback7_ExceptionCLRCatcherExecute(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherExecute(This) ) #define ICorProfilerCallback7_ThreadNameChanged(This,threadId,cchName,name) \ ( (This)->lpVtbl -> ThreadNameChanged(This,threadId,cchName,name) ) #define ICorProfilerCallback7_GarbageCollectionStarted(This,cGenerations,generationCollected,reason) \ ( (This)->lpVtbl -> GarbageCollectionStarted(This,cGenerations,generationCollected,reason) ) #define ICorProfilerCallback7_SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback7_GarbageCollectionFinished(This) \ ( (This)->lpVtbl -> GarbageCollectionFinished(This) ) #define ICorProfilerCallback7_FinalizeableObjectQueued(This,finalizerFlags,objectID) \ ( (This)->lpVtbl -> FinalizeableObjectQueued(This,finalizerFlags,objectID) ) #define ICorProfilerCallback7_RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) \ ( (This)->lpVtbl -> RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) ) #define ICorProfilerCallback7_HandleCreated(This,handleId,initialObjectId) \ ( (This)->lpVtbl -> HandleCreated(This,handleId,initialObjectId) ) #define ICorProfilerCallback7_HandleDestroyed(This,handleId) \ ( (This)->lpVtbl -> HandleDestroyed(This,handleId) ) #define ICorProfilerCallback7_InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) \ ( (This)->lpVtbl -> InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) ) #define ICorProfilerCallback7_ProfilerAttachComplete(This) \ ( (This)->lpVtbl -> ProfilerAttachComplete(This) ) #define ICorProfilerCallback7_ProfilerDetachSucceeded(This) \ ( (This)->lpVtbl -> ProfilerDetachSucceeded(This) ) #define ICorProfilerCallback7_ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) \ ( (This)->lpVtbl -> ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) ) #define ICorProfilerCallback7_GetReJITParameters(This,moduleId,methodId,pFunctionControl) \ ( (This)->lpVtbl -> GetReJITParameters(This,moduleId,methodId,pFunctionControl) ) #define ICorProfilerCallback7_ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback7_ReJITError(This,moduleId,methodId,functionId,hrStatus) \ ( (This)->lpVtbl -> ReJITError(This,moduleId,methodId,functionId,hrStatus) ) #define ICorProfilerCallback7_MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback7_SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback7_ConditionalWeakTableElementReferences(This,cRootRefs,keyRefIds,valueRefIds,rootIds) \ ( (This)->lpVtbl -> ConditionalWeakTableElementReferences(This,cRootRefs,keyRefIds,valueRefIds,rootIds) ) #define ICorProfilerCallback7_GetAssemblyReferences(This,wszAssemblyPath,pAsmRefProvider) \ ( (This)->lpVtbl -> GetAssemblyReferences(This,wszAssemblyPath,pAsmRefProvider) ) #define ICorProfilerCallback7_ModuleInMemorySymbolsUpdated(This,moduleId) \ ( (This)->lpVtbl -> ModuleInMemorySymbolsUpdated(This,moduleId) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerCallback7_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerCallback8_INTERFACE_DEFINED__ #define __ICorProfilerCallback8_INTERFACE_DEFINED__ /* interface ICorProfilerCallback8 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerCallback8; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("5BED9B15-C079-4D47-BFE2-215A140C07E0") ICorProfilerCallback8 : public ICorProfilerCallback7 { public: virtual HRESULT STDMETHODCALLTYPE DynamicMethodJITCompilationStarted( /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock, /* [in] */ LPCBYTE pILHeader, /* [in] */ ULONG cbILHeader) = 0; virtual HRESULT STDMETHODCALLTYPE DynamicMethodJITCompilationFinished( /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock) = 0; }; #else /* C style interface */ typedef struct ICorProfilerCallback8Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerCallback8 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerCallback8 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *Initialize )( ICorProfilerCallback8 * This, /* [in] */ IUnknown *pICorProfilerInfoUnk); HRESULT ( STDMETHODCALLTYPE *Shutdown )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationStarted )( ICorProfilerCallback8 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationFinished )( ICorProfilerCallback8 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownStarted )( ICorProfilerCallback8 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownFinished )( ICorProfilerCallback8 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadStarted )( ICorProfilerCallback8 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadFinished )( ICorProfilerCallback8 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadStarted )( ICorProfilerCallback8 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadFinished )( ICorProfilerCallback8 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleLoadStarted )( ICorProfilerCallback8 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleLoadFinished )( ICorProfilerCallback8 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadStarted )( ICorProfilerCallback8 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadFinished )( ICorProfilerCallback8 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleAttachedToAssembly )( ICorProfilerCallback8 * This, /* [in] */ ModuleID moduleId, /* [in] */ AssemblyID AssemblyId); HRESULT ( STDMETHODCALLTYPE *ClassLoadStarted )( ICorProfilerCallback8 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassLoadFinished )( ICorProfilerCallback8 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ClassUnloadStarted )( ICorProfilerCallback8 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassUnloadFinished )( ICorProfilerCallback8 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *FunctionUnloadStarted )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITCompilationStarted )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCompilationFinished )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchStarted )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId, /* [out] */ BOOL *pbUseCachedFunction); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchFinished )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_JIT_CACHE result); HRESULT ( STDMETHODCALLTYPE *JITFunctionPitched )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITInlining )( ICorProfilerCallback8 * This, /* [in] */ FunctionID callerId, /* [in] */ FunctionID calleeId, /* [out] */ BOOL *pfShouldInline); HRESULT ( STDMETHODCALLTYPE *ThreadCreated )( ICorProfilerCallback8 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadDestroyed )( ICorProfilerCallback8 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadAssignedToOSThread )( ICorProfilerCallback8 * This, /* [in] */ ThreadID managedThreadId, /* [in] */ DWORD osThreadId); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationStarted )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *RemotingClientSendingMessage )( ICorProfilerCallback8 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientReceivingReply )( ICorProfilerCallback8 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationFinished )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerReceivingMessage )( ICorProfilerCallback8 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationStarted )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationReturned )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerSendingReply )( ICorProfilerCallback8 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *UnmanagedToManagedTransition )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *ManagedToUnmanagedTransition )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendStarted )( ICorProfilerCallback8 * This, /* [in] */ COR_PRF_SUSPEND_REASON suspendReason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendFinished )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendAborted )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeStarted )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeFinished )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadSuspended )( ICorProfilerCallback8 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadResumed )( ICorProfilerCallback8 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *MovedReferences )( ICorProfilerCallback8 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectAllocated )( ICorProfilerCallback8 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ObjectsAllocatedByClass )( ICorProfilerCallback8 * This, /* [in] */ ULONG cClassCount, /* [size_is][in] */ ClassID classIds[ ], /* [size_is][in] */ ULONG cObjects[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectReferences )( ICorProfilerCallback8 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId, /* [in] */ ULONG cObjectRefs, /* [size_is][in] */ ObjectID objectRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *RootReferences )( ICorProfilerCallback8 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *ExceptionThrown )( ICorProfilerCallback8 * This, /* [in] */ ObjectID thrownObjectId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionEnter )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionLeave )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterEnter )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterLeave )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchCatcherFound )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerEnter )( ICorProfilerCallback8 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerLeave )( ICorProfilerCallback8 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionEnter )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionLeave )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyEnter )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyLeave )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherEnter )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId, /* [in] */ ObjectID objectId); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherLeave )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableCreated )( ICorProfilerCallback8 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable, /* [in] */ ULONG cSlots); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableDestroyed )( ICorProfilerCallback8 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherFound )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherExecute )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *ThreadNameChanged )( ICorProfilerCallback8 * This, /* [in] */ ThreadID threadId, /* [in] */ ULONG cchName, /* [annotation][in] */ _In_reads_opt_(cchName) WCHAR name[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionStarted )( ICorProfilerCallback8 * This, /* [in] */ int cGenerations, /* [size_is][in] */ BOOL generationCollected[ ], /* [in] */ COR_PRF_GC_REASON reason); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences )( ICorProfilerCallback8 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionFinished )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *FinalizeableObjectQueued )( ICorProfilerCallback8 * This, /* [in] */ DWORD finalizerFlags, /* [in] */ ObjectID objectID); HRESULT ( STDMETHODCALLTYPE *RootReferences2 )( ICorProfilerCallback8 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_KIND rootKinds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_FLAGS rootFlags[ ], /* [size_is][in] */ UINT_PTR rootIds[ ]); HRESULT ( STDMETHODCALLTYPE *HandleCreated )( ICorProfilerCallback8 * This, /* [in] */ GCHandleID handleId, /* [in] */ ObjectID initialObjectId); HRESULT ( STDMETHODCALLTYPE *HandleDestroyed )( ICorProfilerCallback8 * This, /* [in] */ GCHandleID handleId); HRESULT ( STDMETHODCALLTYPE *InitializeForAttach )( ICorProfilerCallback8 * This, /* [in] */ IUnknown *pCorProfilerInfoUnk, /* [in] */ void *pvClientData, /* [in] */ UINT cbClientData); HRESULT ( STDMETHODCALLTYPE *ProfilerAttachComplete )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *ProfilerDetachSucceeded )( ICorProfilerCallback8 * This); HRESULT ( STDMETHODCALLTYPE *ReJITCompilationStarted )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *GetReJITParameters )( ICorProfilerCallback8 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ ICorProfilerFunctionControl *pFunctionControl); HRESULT ( STDMETHODCALLTYPE *ReJITCompilationFinished )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *ReJITError )( ICorProfilerCallback8 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *MovedReferences2 )( ICorProfilerCallback8 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences2 )( ICorProfilerCallback8 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ConditionalWeakTableElementReferences )( ICorProfilerCallback8 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID keyRefIds[ ], /* [size_is][in] */ ObjectID valueRefIds[ ], /* [size_is][in] */ GCHandleID rootIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetAssemblyReferences )( ICorProfilerCallback8 * This, /* [string][in] */ const WCHAR *wszAssemblyPath, /* [in] */ ICorProfilerAssemblyReferenceProvider *pAsmRefProvider); HRESULT ( STDMETHODCALLTYPE *ModuleInMemorySymbolsUpdated )( ICorProfilerCallback8 * This, ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *DynamicMethodJITCompilationStarted )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock, /* [in] */ LPCBYTE pILHeader, /* [in] */ ULONG cbILHeader); HRESULT ( STDMETHODCALLTYPE *DynamicMethodJITCompilationFinished )( ICorProfilerCallback8 * This, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); END_INTERFACE } ICorProfilerCallback8Vtbl; interface ICorProfilerCallback8 { CONST_VTBL struct ICorProfilerCallback8Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerCallback8_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerCallback8_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerCallback8_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerCallback8_Initialize(This,pICorProfilerInfoUnk) \ ( (This)->lpVtbl -> Initialize(This,pICorProfilerInfoUnk) ) #define ICorProfilerCallback8_Shutdown(This) \ ( (This)->lpVtbl -> Shutdown(This) ) #define ICorProfilerCallback8_AppDomainCreationStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainCreationStarted(This,appDomainId) ) #define ICorProfilerCallback8_AppDomainCreationFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainCreationFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback8_AppDomainShutdownStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainShutdownStarted(This,appDomainId) ) #define ICorProfilerCallback8_AppDomainShutdownFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainShutdownFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback8_AssemblyLoadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyLoadStarted(This,assemblyId) ) #define ICorProfilerCallback8_AssemblyLoadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyLoadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback8_AssemblyUnloadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyUnloadStarted(This,assemblyId) ) #define ICorProfilerCallback8_AssemblyUnloadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyUnloadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback8_ModuleLoadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleLoadStarted(This,moduleId) ) #define ICorProfilerCallback8_ModuleLoadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleLoadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback8_ModuleUnloadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleUnloadStarted(This,moduleId) ) #define ICorProfilerCallback8_ModuleUnloadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleUnloadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback8_ModuleAttachedToAssembly(This,moduleId,AssemblyId) \ ( (This)->lpVtbl -> ModuleAttachedToAssembly(This,moduleId,AssemblyId) ) #define ICorProfilerCallback8_ClassLoadStarted(This,classId) \ ( (This)->lpVtbl -> ClassLoadStarted(This,classId) ) #define ICorProfilerCallback8_ClassLoadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassLoadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback8_ClassUnloadStarted(This,classId) \ ( (This)->lpVtbl -> ClassUnloadStarted(This,classId) ) #define ICorProfilerCallback8_ClassUnloadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassUnloadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback8_FunctionUnloadStarted(This,functionId) \ ( (This)->lpVtbl -> FunctionUnloadStarted(This,functionId) ) #define ICorProfilerCallback8_JITCompilationStarted(This,functionId,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationStarted(This,functionId,fIsSafeToBlock) ) #define ICorProfilerCallback8_JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback8_JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) \ ( (This)->lpVtbl -> JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) ) #define ICorProfilerCallback8_JITCachedFunctionSearchFinished(This,functionId,result) \ ( (This)->lpVtbl -> JITCachedFunctionSearchFinished(This,functionId,result) ) #define ICorProfilerCallback8_JITFunctionPitched(This,functionId) \ ( (This)->lpVtbl -> JITFunctionPitched(This,functionId) ) #define ICorProfilerCallback8_JITInlining(This,callerId,calleeId,pfShouldInline) \ ( (This)->lpVtbl -> JITInlining(This,callerId,calleeId,pfShouldInline) ) #define ICorProfilerCallback8_ThreadCreated(This,threadId) \ ( (This)->lpVtbl -> ThreadCreated(This,threadId) ) #define ICorProfilerCallback8_ThreadDestroyed(This,threadId) \ ( (This)->lpVtbl -> ThreadDestroyed(This,threadId) ) #define ICorProfilerCallback8_ThreadAssignedToOSThread(This,managedThreadId,osThreadId) \ ( (This)->lpVtbl -> ThreadAssignedToOSThread(This,managedThreadId,osThreadId) ) #define ICorProfilerCallback8_RemotingClientInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingClientInvocationStarted(This) ) #define ICorProfilerCallback8_RemotingClientSendingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientSendingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback8_RemotingClientReceivingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientReceivingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback8_RemotingClientInvocationFinished(This) \ ( (This)->lpVtbl -> RemotingClientInvocationFinished(This) ) #define ICorProfilerCallback8_RemotingServerReceivingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerReceivingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback8_RemotingServerInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingServerInvocationStarted(This) ) #define ICorProfilerCallback8_RemotingServerInvocationReturned(This) \ ( (This)->lpVtbl -> RemotingServerInvocationReturned(This) ) #define ICorProfilerCallback8_RemotingServerSendingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerSendingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback8_UnmanagedToManagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> UnmanagedToManagedTransition(This,functionId,reason) ) #define ICorProfilerCallback8_ManagedToUnmanagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> ManagedToUnmanagedTransition(This,functionId,reason) ) #define ICorProfilerCallback8_RuntimeSuspendStarted(This,suspendReason) \ ( (This)->lpVtbl -> RuntimeSuspendStarted(This,suspendReason) ) #define ICorProfilerCallback8_RuntimeSuspendFinished(This) \ ( (This)->lpVtbl -> RuntimeSuspendFinished(This) ) #define ICorProfilerCallback8_RuntimeSuspendAborted(This) \ ( (This)->lpVtbl -> RuntimeSuspendAborted(This) ) #define ICorProfilerCallback8_RuntimeResumeStarted(This) \ ( (This)->lpVtbl -> RuntimeResumeStarted(This) ) #define ICorProfilerCallback8_RuntimeResumeFinished(This) \ ( (This)->lpVtbl -> RuntimeResumeFinished(This) ) #define ICorProfilerCallback8_RuntimeThreadSuspended(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadSuspended(This,threadId) ) #define ICorProfilerCallback8_RuntimeThreadResumed(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadResumed(This,threadId) ) #define ICorProfilerCallback8_MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback8_ObjectAllocated(This,objectId,classId) \ ( (This)->lpVtbl -> ObjectAllocated(This,objectId,classId) ) #define ICorProfilerCallback8_ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) \ ( (This)->lpVtbl -> ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) ) #define ICorProfilerCallback8_ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) \ ( (This)->lpVtbl -> ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) ) #define ICorProfilerCallback8_RootReferences(This,cRootRefs,rootRefIds) \ ( (This)->lpVtbl -> RootReferences(This,cRootRefs,rootRefIds) ) #define ICorProfilerCallback8_ExceptionThrown(This,thrownObjectId) \ ( (This)->lpVtbl -> ExceptionThrown(This,thrownObjectId) ) #define ICorProfilerCallback8_ExceptionSearchFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFunctionEnter(This,functionId) ) #define ICorProfilerCallback8_ExceptionSearchFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFunctionLeave(This) ) #define ICorProfilerCallback8_ExceptionSearchFilterEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFilterEnter(This,functionId) ) #define ICorProfilerCallback8_ExceptionSearchFilterLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFilterLeave(This) ) #define ICorProfilerCallback8_ExceptionSearchCatcherFound(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchCatcherFound(This,functionId) ) #define ICorProfilerCallback8_ExceptionOSHandlerEnter(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerEnter(This,__unused) ) #define ICorProfilerCallback8_ExceptionOSHandlerLeave(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerLeave(This,__unused) ) #define ICorProfilerCallback8_ExceptionUnwindFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionEnter(This,functionId) ) #define ICorProfilerCallback8_ExceptionUnwindFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionLeave(This) ) #define ICorProfilerCallback8_ExceptionUnwindFinallyEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyEnter(This,functionId) ) #define ICorProfilerCallback8_ExceptionUnwindFinallyLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyLeave(This) ) #define ICorProfilerCallback8_ExceptionCatcherEnter(This,functionId,objectId) \ ( (This)->lpVtbl -> ExceptionCatcherEnter(This,functionId,objectId) ) #define ICorProfilerCallback8_ExceptionCatcherLeave(This) \ ( (This)->lpVtbl -> ExceptionCatcherLeave(This) ) #define ICorProfilerCallback8_COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) \ ( (This)->lpVtbl -> COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) ) #define ICorProfilerCallback8_COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) \ ( (This)->lpVtbl -> COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) ) #define ICorProfilerCallback8_ExceptionCLRCatcherFound(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherFound(This) ) #define ICorProfilerCallback8_ExceptionCLRCatcherExecute(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherExecute(This) ) #define ICorProfilerCallback8_ThreadNameChanged(This,threadId,cchName,name) \ ( (This)->lpVtbl -> ThreadNameChanged(This,threadId,cchName,name) ) #define ICorProfilerCallback8_GarbageCollectionStarted(This,cGenerations,generationCollected,reason) \ ( (This)->lpVtbl -> GarbageCollectionStarted(This,cGenerations,generationCollected,reason) ) #define ICorProfilerCallback8_SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback8_GarbageCollectionFinished(This) \ ( (This)->lpVtbl -> GarbageCollectionFinished(This) ) #define ICorProfilerCallback8_FinalizeableObjectQueued(This,finalizerFlags,objectID) \ ( (This)->lpVtbl -> FinalizeableObjectQueued(This,finalizerFlags,objectID) ) #define ICorProfilerCallback8_RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) \ ( (This)->lpVtbl -> RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) ) #define ICorProfilerCallback8_HandleCreated(This,handleId,initialObjectId) \ ( (This)->lpVtbl -> HandleCreated(This,handleId,initialObjectId) ) #define ICorProfilerCallback8_HandleDestroyed(This,handleId) \ ( (This)->lpVtbl -> HandleDestroyed(This,handleId) ) #define ICorProfilerCallback8_InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) \ ( (This)->lpVtbl -> InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) ) #define ICorProfilerCallback8_ProfilerAttachComplete(This) \ ( (This)->lpVtbl -> ProfilerAttachComplete(This) ) #define ICorProfilerCallback8_ProfilerDetachSucceeded(This) \ ( (This)->lpVtbl -> ProfilerDetachSucceeded(This) ) #define ICorProfilerCallback8_ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) \ ( (This)->lpVtbl -> ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) ) #define ICorProfilerCallback8_GetReJITParameters(This,moduleId,methodId,pFunctionControl) \ ( (This)->lpVtbl -> GetReJITParameters(This,moduleId,methodId,pFunctionControl) ) #define ICorProfilerCallback8_ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback8_ReJITError(This,moduleId,methodId,functionId,hrStatus) \ ( (This)->lpVtbl -> ReJITError(This,moduleId,methodId,functionId,hrStatus) ) #define ICorProfilerCallback8_MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback8_SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback8_ConditionalWeakTableElementReferences(This,cRootRefs,keyRefIds,valueRefIds,rootIds) \ ( (This)->lpVtbl -> ConditionalWeakTableElementReferences(This,cRootRefs,keyRefIds,valueRefIds,rootIds) ) #define ICorProfilerCallback8_GetAssemblyReferences(This,wszAssemblyPath,pAsmRefProvider) \ ( (This)->lpVtbl -> GetAssemblyReferences(This,wszAssemblyPath,pAsmRefProvider) ) #define ICorProfilerCallback8_ModuleInMemorySymbolsUpdated(This,moduleId) \ ( (This)->lpVtbl -> ModuleInMemorySymbolsUpdated(This,moduleId) ) #define ICorProfilerCallback8_DynamicMethodJITCompilationStarted(This,functionId,fIsSafeToBlock,pILHeader,cbILHeader) \ ( (This)->lpVtbl -> DynamicMethodJITCompilationStarted(This,functionId,fIsSafeToBlock,pILHeader,cbILHeader) ) #define ICorProfilerCallback8_DynamicMethodJITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> DynamicMethodJITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerCallback8_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerCallback9_INTERFACE_DEFINED__ #define __ICorProfilerCallback9_INTERFACE_DEFINED__ /* interface ICorProfilerCallback9 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerCallback9; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("27583EC3-C8F5-482F-8052-194B8CE4705A") ICorProfilerCallback9 : public ICorProfilerCallback8 { public: virtual HRESULT STDMETHODCALLTYPE DynamicMethodUnloaded( /* [in] */ FunctionID functionId) = 0; }; #else /* C style interface */ typedef struct ICorProfilerCallback9Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerCallback9 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerCallback9 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *Initialize )( ICorProfilerCallback9 * This, /* [in] */ IUnknown *pICorProfilerInfoUnk); HRESULT ( STDMETHODCALLTYPE *Shutdown )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationStarted )( ICorProfilerCallback9 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationFinished )( ICorProfilerCallback9 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownStarted )( ICorProfilerCallback9 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownFinished )( ICorProfilerCallback9 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadStarted )( ICorProfilerCallback9 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadFinished )( ICorProfilerCallback9 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadStarted )( ICorProfilerCallback9 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadFinished )( ICorProfilerCallback9 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleLoadStarted )( ICorProfilerCallback9 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleLoadFinished )( ICorProfilerCallback9 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadStarted )( ICorProfilerCallback9 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadFinished )( ICorProfilerCallback9 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleAttachedToAssembly )( ICorProfilerCallback9 * This, /* [in] */ ModuleID moduleId, /* [in] */ AssemblyID AssemblyId); HRESULT ( STDMETHODCALLTYPE *ClassLoadStarted )( ICorProfilerCallback9 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassLoadFinished )( ICorProfilerCallback9 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ClassUnloadStarted )( ICorProfilerCallback9 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassUnloadFinished )( ICorProfilerCallback9 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *FunctionUnloadStarted )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITCompilationStarted )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCompilationFinished )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchStarted )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId, /* [out] */ BOOL *pbUseCachedFunction); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchFinished )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_JIT_CACHE result); HRESULT ( STDMETHODCALLTYPE *JITFunctionPitched )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITInlining )( ICorProfilerCallback9 * This, /* [in] */ FunctionID callerId, /* [in] */ FunctionID calleeId, /* [out] */ BOOL *pfShouldInline); HRESULT ( STDMETHODCALLTYPE *ThreadCreated )( ICorProfilerCallback9 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadDestroyed )( ICorProfilerCallback9 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadAssignedToOSThread )( ICorProfilerCallback9 * This, /* [in] */ ThreadID managedThreadId, /* [in] */ DWORD osThreadId); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationStarted )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *RemotingClientSendingMessage )( ICorProfilerCallback9 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientReceivingReply )( ICorProfilerCallback9 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationFinished )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerReceivingMessage )( ICorProfilerCallback9 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationStarted )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationReturned )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerSendingReply )( ICorProfilerCallback9 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *UnmanagedToManagedTransition )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *ManagedToUnmanagedTransition )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendStarted )( ICorProfilerCallback9 * This, /* [in] */ COR_PRF_SUSPEND_REASON suspendReason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendFinished )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendAborted )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeStarted )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeFinished )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadSuspended )( ICorProfilerCallback9 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadResumed )( ICorProfilerCallback9 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *MovedReferences )( ICorProfilerCallback9 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectAllocated )( ICorProfilerCallback9 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ObjectsAllocatedByClass )( ICorProfilerCallback9 * This, /* [in] */ ULONG cClassCount, /* [size_is][in] */ ClassID classIds[ ], /* [size_is][in] */ ULONG cObjects[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectReferences )( ICorProfilerCallback9 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId, /* [in] */ ULONG cObjectRefs, /* [size_is][in] */ ObjectID objectRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *RootReferences )( ICorProfilerCallback9 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *ExceptionThrown )( ICorProfilerCallback9 * This, /* [in] */ ObjectID thrownObjectId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionEnter )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionLeave )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterEnter )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterLeave )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchCatcherFound )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerEnter )( ICorProfilerCallback9 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerLeave )( ICorProfilerCallback9 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionEnter )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionLeave )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyEnter )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyLeave )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherEnter )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId, /* [in] */ ObjectID objectId); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherLeave )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableCreated )( ICorProfilerCallback9 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable, /* [in] */ ULONG cSlots); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableDestroyed )( ICorProfilerCallback9 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherFound )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherExecute )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *ThreadNameChanged )( ICorProfilerCallback9 * This, /* [in] */ ThreadID threadId, /* [in] */ ULONG cchName, /* [annotation][in] */ _In_reads_opt_(cchName) WCHAR name[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionStarted )( ICorProfilerCallback9 * This, /* [in] */ int cGenerations, /* [size_is][in] */ BOOL generationCollected[ ], /* [in] */ COR_PRF_GC_REASON reason); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences )( ICorProfilerCallback9 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionFinished )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *FinalizeableObjectQueued )( ICorProfilerCallback9 * This, /* [in] */ DWORD finalizerFlags, /* [in] */ ObjectID objectID); HRESULT ( STDMETHODCALLTYPE *RootReferences2 )( ICorProfilerCallback9 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_KIND rootKinds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_FLAGS rootFlags[ ], /* [size_is][in] */ UINT_PTR rootIds[ ]); HRESULT ( STDMETHODCALLTYPE *HandleCreated )( ICorProfilerCallback9 * This, /* [in] */ GCHandleID handleId, /* [in] */ ObjectID initialObjectId); HRESULT ( STDMETHODCALLTYPE *HandleDestroyed )( ICorProfilerCallback9 * This, /* [in] */ GCHandleID handleId); HRESULT ( STDMETHODCALLTYPE *InitializeForAttach )( ICorProfilerCallback9 * This, /* [in] */ IUnknown *pCorProfilerInfoUnk, /* [in] */ void *pvClientData, /* [in] */ UINT cbClientData); HRESULT ( STDMETHODCALLTYPE *ProfilerAttachComplete )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *ProfilerDetachSucceeded )( ICorProfilerCallback9 * This); HRESULT ( STDMETHODCALLTYPE *ReJITCompilationStarted )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *GetReJITParameters )( ICorProfilerCallback9 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ ICorProfilerFunctionControl *pFunctionControl); HRESULT ( STDMETHODCALLTYPE *ReJITCompilationFinished )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *ReJITError )( ICorProfilerCallback9 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *MovedReferences2 )( ICorProfilerCallback9 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences2 )( ICorProfilerCallback9 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ConditionalWeakTableElementReferences )( ICorProfilerCallback9 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID keyRefIds[ ], /* [size_is][in] */ ObjectID valueRefIds[ ], /* [size_is][in] */ GCHandleID rootIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetAssemblyReferences )( ICorProfilerCallback9 * This, /* [string][in] */ const WCHAR *wszAssemblyPath, /* [in] */ ICorProfilerAssemblyReferenceProvider *pAsmRefProvider); HRESULT ( STDMETHODCALLTYPE *ModuleInMemorySymbolsUpdated )( ICorProfilerCallback9 * This, ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *DynamicMethodJITCompilationStarted )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock, /* [in] */ LPCBYTE pILHeader, /* [in] */ ULONG cbILHeader); HRESULT ( STDMETHODCALLTYPE *DynamicMethodJITCompilationFinished )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *DynamicMethodUnloaded )( ICorProfilerCallback9 * This, /* [in] */ FunctionID functionId); END_INTERFACE } ICorProfilerCallback9Vtbl; interface ICorProfilerCallback9 { CONST_VTBL struct ICorProfilerCallback9Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerCallback9_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerCallback9_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerCallback9_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerCallback9_Initialize(This,pICorProfilerInfoUnk) \ ( (This)->lpVtbl -> Initialize(This,pICorProfilerInfoUnk) ) #define ICorProfilerCallback9_Shutdown(This) \ ( (This)->lpVtbl -> Shutdown(This) ) #define ICorProfilerCallback9_AppDomainCreationStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainCreationStarted(This,appDomainId) ) #define ICorProfilerCallback9_AppDomainCreationFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainCreationFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback9_AppDomainShutdownStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainShutdownStarted(This,appDomainId) ) #define ICorProfilerCallback9_AppDomainShutdownFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainShutdownFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback9_AssemblyLoadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyLoadStarted(This,assemblyId) ) #define ICorProfilerCallback9_AssemblyLoadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyLoadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback9_AssemblyUnloadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyUnloadStarted(This,assemblyId) ) #define ICorProfilerCallback9_AssemblyUnloadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyUnloadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback9_ModuleLoadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleLoadStarted(This,moduleId) ) #define ICorProfilerCallback9_ModuleLoadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleLoadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback9_ModuleUnloadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleUnloadStarted(This,moduleId) ) #define ICorProfilerCallback9_ModuleUnloadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleUnloadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback9_ModuleAttachedToAssembly(This,moduleId,AssemblyId) \ ( (This)->lpVtbl -> ModuleAttachedToAssembly(This,moduleId,AssemblyId) ) #define ICorProfilerCallback9_ClassLoadStarted(This,classId) \ ( (This)->lpVtbl -> ClassLoadStarted(This,classId) ) #define ICorProfilerCallback9_ClassLoadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassLoadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback9_ClassUnloadStarted(This,classId) \ ( (This)->lpVtbl -> ClassUnloadStarted(This,classId) ) #define ICorProfilerCallback9_ClassUnloadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassUnloadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback9_FunctionUnloadStarted(This,functionId) \ ( (This)->lpVtbl -> FunctionUnloadStarted(This,functionId) ) #define ICorProfilerCallback9_JITCompilationStarted(This,functionId,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationStarted(This,functionId,fIsSafeToBlock) ) #define ICorProfilerCallback9_JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback9_JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) \ ( (This)->lpVtbl -> JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) ) #define ICorProfilerCallback9_JITCachedFunctionSearchFinished(This,functionId,result) \ ( (This)->lpVtbl -> JITCachedFunctionSearchFinished(This,functionId,result) ) #define ICorProfilerCallback9_JITFunctionPitched(This,functionId) \ ( (This)->lpVtbl -> JITFunctionPitched(This,functionId) ) #define ICorProfilerCallback9_JITInlining(This,callerId,calleeId,pfShouldInline) \ ( (This)->lpVtbl -> JITInlining(This,callerId,calleeId,pfShouldInline) ) #define ICorProfilerCallback9_ThreadCreated(This,threadId) \ ( (This)->lpVtbl -> ThreadCreated(This,threadId) ) #define ICorProfilerCallback9_ThreadDestroyed(This,threadId) \ ( (This)->lpVtbl -> ThreadDestroyed(This,threadId) ) #define ICorProfilerCallback9_ThreadAssignedToOSThread(This,managedThreadId,osThreadId) \ ( (This)->lpVtbl -> ThreadAssignedToOSThread(This,managedThreadId,osThreadId) ) #define ICorProfilerCallback9_RemotingClientInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingClientInvocationStarted(This) ) #define ICorProfilerCallback9_RemotingClientSendingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientSendingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback9_RemotingClientReceivingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientReceivingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback9_RemotingClientInvocationFinished(This) \ ( (This)->lpVtbl -> RemotingClientInvocationFinished(This) ) #define ICorProfilerCallback9_RemotingServerReceivingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerReceivingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback9_RemotingServerInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingServerInvocationStarted(This) ) #define ICorProfilerCallback9_RemotingServerInvocationReturned(This) \ ( (This)->lpVtbl -> RemotingServerInvocationReturned(This) ) #define ICorProfilerCallback9_RemotingServerSendingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerSendingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback9_UnmanagedToManagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> UnmanagedToManagedTransition(This,functionId,reason) ) #define ICorProfilerCallback9_ManagedToUnmanagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> ManagedToUnmanagedTransition(This,functionId,reason) ) #define ICorProfilerCallback9_RuntimeSuspendStarted(This,suspendReason) \ ( (This)->lpVtbl -> RuntimeSuspendStarted(This,suspendReason) ) #define ICorProfilerCallback9_RuntimeSuspendFinished(This) \ ( (This)->lpVtbl -> RuntimeSuspendFinished(This) ) #define ICorProfilerCallback9_RuntimeSuspendAborted(This) \ ( (This)->lpVtbl -> RuntimeSuspendAborted(This) ) #define ICorProfilerCallback9_RuntimeResumeStarted(This) \ ( (This)->lpVtbl -> RuntimeResumeStarted(This) ) #define ICorProfilerCallback9_RuntimeResumeFinished(This) \ ( (This)->lpVtbl -> RuntimeResumeFinished(This) ) #define ICorProfilerCallback9_RuntimeThreadSuspended(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadSuspended(This,threadId) ) #define ICorProfilerCallback9_RuntimeThreadResumed(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadResumed(This,threadId) ) #define ICorProfilerCallback9_MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback9_ObjectAllocated(This,objectId,classId) \ ( (This)->lpVtbl -> ObjectAllocated(This,objectId,classId) ) #define ICorProfilerCallback9_ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) \ ( (This)->lpVtbl -> ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) ) #define ICorProfilerCallback9_ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) \ ( (This)->lpVtbl -> ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) ) #define ICorProfilerCallback9_RootReferences(This,cRootRefs,rootRefIds) \ ( (This)->lpVtbl -> RootReferences(This,cRootRefs,rootRefIds) ) #define ICorProfilerCallback9_ExceptionThrown(This,thrownObjectId) \ ( (This)->lpVtbl -> ExceptionThrown(This,thrownObjectId) ) #define ICorProfilerCallback9_ExceptionSearchFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFunctionEnter(This,functionId) ) #define ICorProfilerCallback9_ExceptionSearchFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFunctionLeave(This) ) #define ICorProfilerCallback9_ExceptionSearchFilterEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFilterEnter(This,functionId) ) #define ICorProfilerCallback9_ExceptionSearchFilterLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFilterLeave(This) ) #define ICorProfilerCallback9_ExceptionSearchCatcherFound(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchCatcherFound(This,functionId) ) #define ICorProfilerCallback9_ExceptionOSHandlerEnter(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerEnter(This,__unused) ) #define ICorProfilerCallback9_ExceptionOSHandlerLeave(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerLeave(This,__unused) ) #define ICorProfilerCallback9_ExceptionUnwindFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionEnter(This,functionId) ) #define ICorProfilerCallback9_ExceptionUnwindFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionLeave(This) ) #define ICorProfilerCallback9_ExceptionUnwindFinallyEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyEnter(This,functionId) ) #define ICorProfilerCallback9_ExceptionUnwindFinallyLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyLeave(This) ) #define ICorProfilerCallback9_ExceptionCatcherEnter(This,functionId,objectId) \ ( (This)->lpVtbl -> ExceptionCatcherEnter(This,functionId,objectId) ) #define ICorProfilerCallback9_ExceptionCatcherLeave(This) \ ( (This)->lpVtbl -> ExceptionCatcherLeave(This) ) #define ICorProfilerCallback9_COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) \ ( (This)->lpVtbl -> COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) ) #define ICorProfilerCallback9_COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) \ ( (This)->lpVtbl -> COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) ) #define ICorProfilerCallback9_ExceptionCLRCatcherFound(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherFound(This) ) #define ICorProfilerCallback9_ExceptionCLRCatcherExecute(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherExecute(This) ) #define ICorProfilerCallback9_ThreadNameChanged(This,threadId,cchName,name) \ ( (This)->lpVtbl -> ThreadNameChanged(This,threadId,cchName,name) ) #define ICorProfilerCallback9_GarbageCollectionStarted(This,cGenerations,generationCollected,reason) \ ( (This)->lpVtbl -> GarbageCollectionStarted(This,cGenerations,generationCollected,reason) ) #define ICorProfilerCallback9_SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback9_GarbageCollectionFinished(This) \ ( (This)->lpVtbl -> GarbageCollectionFinished(This) ) #define ICorProfilerCallback9_FinalizeableObjectQueued(This,finalizerFlags,objectID) \ ( (This)->lpVtbl -> FinalizeableObjectQueued(This,finalizerFlags,objectID) ) #define ICorProfilerCallback9_RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) \ ( (This)->lpVtbl -> RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) ) #define ICorProfilerCallback9_HandleCreated(This,handleId,initialObjectId) \ ( (This)->lpVtbl -> HandleCreated(This,handleId,initialObjectId) ) #define ICorProfilerCallback9_HandleDestroyed(This,handleId) \ ( (This)->lpVtbl -> HandleDestroyed(This,handleId) ) #define ICorProfilerCallback9_InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) \ ( (This)->lpVtbl -> InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) ) #define ICorProfilerCallback9_ProfilerAttachComplete(This) \ ( (This)->lpVtbl -> ProfilerAttachComplete(This) ) #define ICorProfilerCallback9_ProfilerDetachSucceeded(This) \ ( (This)->lpVtbl -> ProfilerDetachSucceeded(This) ) #define ICorProfilerCallback9_ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) \ ( (This)->lpVtbl -> ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) ) #define ICorProfilerCallback9_GetReJITParameters(This,moduleId,methodId,pFunctionControl) \ ( (This)->lpVtbl -> GetReJITParameters(This,moduleId,methodId,pFunctionControl) ) #define ICorProfilerCallback9_ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback9_ReJITError(This,moduleId,methodId,functionId,hrStatus) \ ( (This)->lpVtbl -> ReJITError(This,moduleId,methodId,functionId,hrStatus) ) #define ICorProfilerCallback9_MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback9_SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback9_ConditionalWeakTableElementReferences(This,cRootRefs,keyRefIds,valueRefIds,rootIds) \ ( (This)->lpVtbl -> ConditionalWeakTableElementReferences(This,cRootRefs,keyRefIds,valueRefIds,rootIds) ) #define ICorProfilerCallback9_GetAssemblyReferences(This,wszAssemblyPath,pAsmRefProvider) \ ( (This)->lpVtbl -> GetAssemblyReferences(This,wszAssemblyPath,pAsmRefProvider) ) #define ICorProfilerCallback9_ModuleInMemorySymbolsUpdated(This,moduleId) \ ( (This)->lpVtbl -> ModuleInMemorySymbolsUpdated(This,moduleId) ) #define ICorProfilerCallback9_DynamicMethodJITCompilationStarted(This,functionId,fIsSafeToBlock,pILHeader,cbILHeader) \ ( (This)->lpVtbl -> DynamicMethodJITCompilationStarted(This,functionId,fIsSafeToBlock,pILHeader,cbILHeader) ) #define ICorProfilerCallback9_DynamicMethodJITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> DynamicMethodJITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback9_DynamicMethodUnloaded(This,functionId) \ ( (This)->lpVtbl -> DynamicMethodUnloaded(This,functionId) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerCallback9_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerCallback10_INTERFACE_DEFINED__ #define __ICorProfilerCallback10_INTERFACE_DEFINED__ /* interface ICorProfilerCallback10 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerCallback10; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("CEC5B60E-C69C-495F-87F6-84D28EE16FFB") ICorProfilerCallback10 : public ICorProfilerCallback9 { public: virtual HRESULT STDMETHODCALLTYPE EventPipeEventDelivered( /* [in] */ EVENTPIPE_PROVIDER provider, /* [in] */ DWORD eventId, /* [in] */ DWORD eventVersion, /* [in] */ ULONG cbMetadataBlob, /* [size_is][in] */ LPCBYTE metadataBlob, /* [in] */ ULONG cbEventData, /* [size_is][in] */ LPCBYTE eventData, /* [in] */ LPCGUID pActivityId, /* [in] */ LPCGUID pRelatedActivityId, /* [in] */ ThreadID eventThread, /* [in] */ ULONG numStackFrames, /* [length_is][in] */ UINT_PTR stackFrames[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE EventPipeProviderCreated( /* [in] */ EVENTPIPE_PROVIDER provider) = 0; }; #else /* C style interface */ typedef struct ICorProfilerCallback10Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerCallback10 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerCallback10 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *Initialize )( ICorProfilerCallback10 * This, /* [in] */ IUnknown *pICorProfilerInfoUnk); HRESULT ( STDMETHODCALLTYPE *Shutdown )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationStarted )( ICorProfilerCallback10 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationFinished )( ICorProfilerCallback10 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownStarted )( ICorProfilerCallback10 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownFinished )( ICorProfilerCallback10 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadStarted )( ICorProfilerCallback10 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadFinished )( ICorProfilerCallback10 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadStarted )( ICorProfilerCallback10 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadFinished )( ICorProfilerCallback10 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleLoadStarted )( ICorProfilerCallback10 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleLoadFinished )( ICorProfilerCallback10 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadStarted )( ICorProfilerCallback10 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadFinished )( ICorProfilerCallback10 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleAttachedToAssembly )( ICorProfilerCallback10 * This, /* [in] */ ModuleID moduleId, /* [in] */ AssemblyID AssemblyId); HRESULT ( STDMETHODCALLTYPE *ClassLoadStarted )( ICorProfilerCallback10 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassLoadFinished )( ICorProfilerCallback10 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ClassUnloadStarted )( ICorProfilerCallback10 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassUnloadFinished )( ICorProfilerCallback10 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *FunctionUnloadStarted )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITCompilationStarted )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCompilationFinished )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchStarted )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId, /* [out] */ BOOL *pbUseCachedFunction); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchFinished )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_JIT_CACHE result); HRESULT ( STDMETHODCALLTYPE *JITFunctionPitched )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITInlining )( ICorProfilerCallback10 * This, /* [in] */ FunctionID callerId, /* [in] */ FunctionID calleeId, /* [out] */ BOOL *pfShouldInline); HRESULT ( STDMETHODCALLTYPE *ThreadCreated )( ICorProfilerCallback10 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadDestroyed )( ICorProfilerCallback10 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadAssignedToOSThread )( ICorProfilerCallback10 * This, /* [in] */ ThreadID managedThreadId, /* [in] */ DWORD osThreadId); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationStarted )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *RemotingClientSendingMessage )( ICorProfilerCallback10 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientReceivingReply )( ICorProfilerCallback10 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationFinished )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerReceivingMessage )( ICorProfilerCallback10 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationStarted )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationReturned )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerSendingReply )( ICorProfilerCallback10 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *UnmanagedToManagedTransition )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *ManagedToUnmanagedTransition )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendStarted )( ICorProfilerCallback10 * This, /* [in] */ COR_PRF_SUSPEND_REASON suspendReason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendFinished )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendAborted )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeStarted )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeFinished )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadSuspended )( ICorProfilerCallback10 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadResumed )( ICorProfilerCallback10 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *MovedReferences )( ICorProfilerCallback10 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectAllocated )( ICorProfilerCallback10 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ObjectsAllocatedByClass )( ICorProfilerCallback10 * This, /* [in] */ ULONG cClassCount, /* [size_is][in] */ ClassID classIds[ ], /* [size_is][in] */ ULONG cObjects[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectReferences )( ICorProfilerCallback10 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId, /* [in] */ ULONG cObjectRefs, /* [size_is][in] */ ObjectID objectRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *RootReferences )( ICorProfilerCallback10 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *ExceptionThrown )( ICorProfilerCallback10 * This, /* [in] */ ObjectID thrownObjectId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionEnter )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionLeave )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterEnter )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterLeave )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchCatcherFound )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerEnter )( ICorProfilerCallback10 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerLeave )( ICorProfilerCallback10 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionEnter )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionLeave )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyEnter )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyLeave )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherEnter )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId, /* [in] */ ObjectID objectId); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherLeave )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableCreated )( ICorProfilerCallback10 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable, /* [in] */ ULONG cSlots); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableDestroyed )( ICorProfilerCallback10 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherFound )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherExecute )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *ThreadNameChanged )( ICorProfilerCallback10 * This, /* [in] */ ThreadID threadId, /* [in] */ ULONG cchName, /* [annotation][in] */ _In_reads_opt_(cchName) WCHAR name[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionStarted )( ICorProfilerCallback10 * This, /* [in] */ int cGenerations, /* [size_is][in] */ BOOL generationCollected[ ], /* [in] */ COR_PRF_GC_REASON reason); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences )( ICorProfilerCallback10 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionFinished )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *FinalizeableObjectQueued )( ICorProfilerCallback10 * This, /* [in] */ DWORD finalizerFlags, /* [in] */ ObjectID objectID); HRESULT ( STDMETHODCALLTYPE *RootReferences2 )( ICorProfilerCallback10 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_KIND rootKinds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_FLAGS rootFlags[ ], /* [size_is][in] */ UINT_PTR rootIds[ ]); HRESULT ( STDMETHODCALLTYPE *HandleCreated )( ICorProfilerCallback10 * This, /* [in] */ GCHandleID handleId, /* [in] */ ObjectID initialObjectId); HRESULT ( STDMETHODCALLTYPE *HandleDestroyed )( ICorProfilerCallback10 * This, /* [in] */ GCHandleID handleId); HRESULT ( STDMETHODCALLTYPE *InitializeForAttach )( ICorProfilerCallback10 * This, /* [in] */ IUnknown *pCorProfilerInfoUnk, /* [in] */ void *pvClientData, /* [in] */ UINT cbClientData); HRESULT ( STDMETHODCALLTYPE *ProfilerAttachComplete )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *ProfilerDetachSucceeded )( ICorProfilerCallback10 * This); HRESULT ( STDMETHODCALLTYPE *ReJITCompilationStarted )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *GetReJITParameters )( ICorProfilerCallback10 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ ICorProfilerFunctionControl *pFunctionControl); HRESULT ( STDMETHODCALLTYPE *ReJITCompilationFinished )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *ReJITError )( ICorProfilerCallback10 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *MovedReferences2 )( ICorProfilerCallback10 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences2 )( ICorProfilerCallback10 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ConditionalWeakTableElementReferences )( ICorProfilerCallback10 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID keyRefIds[ ], /* [size_is][in] */ ObjectID valueRefIds[ ], /* [size_is][in] */ GCHandleID rootIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetAssemblyReferences )( ICorProfilerCallback10 * This, /* [string][in] */ const WCHAR *wszAssemblyPath, /* [in] */ ICorProfilerAssemblyReferenceProvider *pAsmRefProvider); HRESULT ( STDMETHODCALLTYPE *ModuleInMemorySymbolsUpdated )( ICorProfilerCallback10 * This, ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *DynamicMethodJITCompilationStarted )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock, /* [in] */ LPCBYTE pILHeader, /* [in] */ ULONG cbILHeader); HRESULT ( STDMETHODCALLTYPE *DynamicMethodJITCompilationFinished )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *DynamicMethodUnloaded )( ICorProfilerCallback10 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *EventPipeEventDelivered )( ICorProfilerCallback10 * This, /* [in] */ EVENTPIPE_PROVIDER provider, /* [in] */ DWORD eventId, /* [in] */ DWORD eventVersion, /* [in] */ ULONG cbMetadataBlob, /* [size_is][in] */ LPCBYTE metadataBlob, /* [in] */ ULONG cbEventData, /* [size_is][in] */ LPCBYTE eventData, /* [in] */ LPCGUID pActivityId, /* [in] */ LPCGUID pRelatedActivityId, /* [in] */ ThreadID eventThread, /* [in] */ ULONG numStackFrames, /* [length_is][in] */ UINT_PTR stackFrames[ ]); HRESULT ( STDMETHODCALLTYPE *EventPipeProviderCreated )( ICorProfilerCallback10 * This, /* [in] */ EVENTPIPE_PROVIDER provider); END_INTERFACE } ICorProfilerCallback10Vtbl; interface ICorProfilerCallback10 { CONST_VTBL struct ICorProfilerCallback10Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerCallback10_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerCallback10_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerCallback10_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerCallback10_Initialize(This,pICorProfilerInfoUnk) \ ( (This)->lpVtbl -> Initialize(This,pICorProfilerInfoUnk) ) #define ICorProfilerCallback10_Shutdown(This) \ ( (This)->lpVtbl -> Shutdown(This) ) #define ICorProfilerCallback10_AppDomainCreationStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainCreationStarted(This,appDomainId) ) #define ICorProfilerCallback10_AppDomainCreationFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainCreationFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback10_AppDomainShutdownStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainShutdownStarted(This,appDomainId) ) #define ICorProfilerCallback10_AppDomainShutdownFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainShutdownFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback10_AssemblyLoadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyLoadStarted(This,assemblyId) ) #define ICorProfilerCallback10_AssemblyLoadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyLoadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback10_AssemblyUnloadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyUnloadStarted(This,assemblyId) ) #define ICorProfilerCallback10_AssemblyUnloadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyUnloadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback10_ModuleLoadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleLoadStarted(This,moduleId) ) #define ICorProfilerCallback10_ModuleLoadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleLoadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback10_ModuleUnloadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleUnloadStarted(This,moduleId) ) #define ICorProfilerCallback10_ModuleUnloadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleUnloadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback10_ModuleAttachedToAssembly(This,moduleId,AssemblyId) \ ( (This)->lpVtbl -> ModuleAttachedToAssembly(This,moduleId,AssemblyId) ) #define ICorProfilerCallback10_ClassLoadStarted(This,classId) \ ( (This)->lpVtbl -> ClassLoadStarted(This,classId) ) #define ICorProfilerCallback10_ClassLoadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassLoadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback10_ClassUnloadStarted(This,classId) \ ( (This)->lpVtbl -> ClassUnloadStarted(This,classId) ) #define ICorProfilerCallback10_ClassUnloadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassUnloadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback10_FunctionUnloadStarted(This,functionId) \ ( (This)->lpVtbl -> FunctionUnloadStarted(This,functionId) ) #define ICorProfilerCallback10_JITCompilationStarted(This,functionId,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationStarted(This,functionId,fIsSafeToBlock) ) #define ICorProfilerCallback10_JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback10_JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) \ ( (This)->lpVtbl -> JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) ) #define ICorProfilerCallback10_JITCachedFunctionSearchFinished(This,functionId,result) \ ( (This)->lpVtbl -> JITCachedFunctionSearchFinished(This,functionId,result) ) #define ICorProfilerCallback10_JITFunctionPitched(This,functionId) \ ( (This)->lpVtbl -> JITFunctionPitched(This,functionId) ) #define ICorProfilerCallback10_JITInlining(This,callerId,calleeId,pfShouldInline) \ ( (This)->lpVtbl -> JITInlining(This,callerId,calleeId,pfShouldInline) ) #define ICorProfilerCallback10_ThreadCreated(This,threadId) \ ( (This)->lpVtbl -> ThreadCreated(This,threadId) ) #define ICorProfilerCallback10_ThreadDestroyed(This,threadId) \ ( (This)->lpVtbl -> ThreadDestroyed(This,threadId) ) #define ICorProfilerCallback10_ThreadAssignedToOSThread(This,managedThreadId,osThreadId) \ ( (This)->lpVtbl -> ThreadAssignedToOSThread(This,managedThreadId,osThreadId) ) #define ICorProfilerCallback10_RemotingClientInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingClientInvocationStarted(This) ) #define ICorProfilerCallback10_RemotingClientSendingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientSendingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback10_RemotingClientReceivingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientReceivingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback10_RemotingClientInvocationFinished(This) \ ( (This)->lpVtbl -> RemotingClientInvocationFinished(This) ) #define ICorProfilerCallback10_RemotingServerReceivingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerReceivingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback10_RemotingServerInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingServerInvocationStarted(This) ) #define ICorProfilerCallback10_RemotingServerInvocationReturned(This) \ ( (This)->lpVtbl -> RemotingServerInvocationReturned(This) ) #define ICorProfilerCallback10_RemotingServerSendingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerSendingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback10_UnmanagedToManagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> UnmanagedToManagedTransition(This,functionId,reason) ) #define ICorProfilerCallback10_ManagedToUnmanagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> ManagedToUnmanagedTransition(This,functionId,reason) ) #define ICorProfilerCallback10_RuntimeSuspendStarted(This,suspendReason) \ ( (This)->lpVtbl -> RuntimeSuspendStarted(This,suspendReason) ) #define ICorProfilerCallback10_RuntimeSuspendFinished(This) \ ( (This)->lpVtbl -> RuntimeSuspendFinished(This) ) #define ICorProfilerCallback10_RuntimeSuspendAborted(This) \ ( (This)->lpVtbl -> RuntimeSuspendAborted(This) ) #define ICorProfilerCallback10_RuntimeResumeStarted(This) \ ( (This)->lpVtbl -> RuntimeResumeStarted(This) ) #define ICorProfilerCallback10_RuntimeResumeFinished(This) \ ( (This)->lpVtbl -> RuntimeResumeFinished(This) ) #define ICorProfilerCallback10_RuntimeThreadSuspended(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadSuspended(This,threadId) ) #define ICorProfilerCallback10_RuntimeThreadResumed(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadResumed(This,threadId) ) #define ICorProfilerCallback10_MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback10_ObjectAllocated(This,objectId,classId) \ ( (This)->lpVtbl -> ObjectAllocated(This,objectId,classId) ) #define ICorProfilerCallback10_ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) \ ( (This)->lpVtbl -> ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) ) #define ICorProfilerCallback10_ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) \ ( (This)->lpVtbl -> ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) ) #define ICorProfilerCallback10_RootReferences(This,cRootRefs,rootRefIds) \ ( (This)->lpVtbl -> RootReferences(This,cRootRefs,rootRefIds) ) #define ICorProfilerCallback10_ExceptionThrown(This,thrownObjectId) \ ( (This)->lpVtbl -> ExceptionThrown(This,thrownObjectId) ) #define ICorProfilerCallback10_ExceptionSearchFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFunctionEnter(This,functionId) ) #define ICorProfilerCallback10_ExceptionSearchFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFunctionLeave(This) ) #define ICorProfilerCallback10_ExceptionSearchFilterEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFilterEnter(This,functionId) ) #define ICorProfilerCallback10_ExceptionSearchFilterLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFilterLeave(This) ) #define ICorProfilerCallback10_ExceptionSearchCatcherFound(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchCatcherFound(This,functionId) ) #define ICorProfilerCallback10_ExceptionOSHandlerEnter(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerEnter(This,__unused) ) #define ICorProfilerCallback10_ExceptionOSHandlerLeave(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerLeave(This,__unused) ) #define ICorProfilerCallback10_ExceptionUnwindFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionEnter(This,functionId) ) #define ICorProfilerCallback10_ExceptionUnwindFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionLeave(This) ) #define ICorProfilerCallback10_ExceptionUnwindFinallyEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyEnter(This,functionId) ) #define ICorProfilerCallback10_ExceptionUnwindFinallyLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyLeave(This) ) #define ICorProfilerCallback10_ExceptionCatcherEnter(This,functionId,objectId) \ ( (This)->lpVtbl -> ExceptionCatcherEnter(This,functionId,objectId) ) #define ICorProfilerCallback10_ExceptionCatcherLeave(This) \ ( (This)->lpVtbl -> ExceptionCatcherLeave(This) ) #define ICorProfilerCallback10_COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) \ ( (This)->lpVtbl -> COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) ) #define ICorProfilerCallback10_COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) \ ( (This)->lpVtbl -> COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) ) #define ICorProfilerCallback10_ExceptionCLRCatcherFound(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherFound(This) ) #define ICorProfilerCallback10_ExceptionCLRCatcherExecute(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherExecute(This) ) #define ICorProfilerCallback10_ThreadNameChanged(This,threadId,cchName,name) \ ( (This)->lpVtbl -> ThreadNameChanged(This,threadId,cchName,name) ) #define ICorProfilerCallback10_GarbageCollectionStarted(This,cGenerations,generationCollected,reason) \ ( (This)->lpVtbl -> GarbageCollectionStarted(This,cGenerations,generationCollected,reason) ) #define ICorProfilerCallback10_SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback10_GarbageCollectionFinished(This) \ ( (This)->lpVtbl -> GarbageCollectionFinished(This) ) #define ICorProfilerCallback10_FinalizeableObjectQueued(This,finalizerFlags,objectID) \ ( (This)->lpVtbl -> FinalizeableObjectQueued(This,finalizerFlags,objectID) ) #define ICorProfilerCallback10_RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) \ ( (This)->lpVtbl -> RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) ) #define ICorProfilerCallback10_HandleCreated(This,handleId,initialObjectId) \ ( (This)->lpVtbl -> HandleCreated(This,handleId,initialObjectId) ) #define ICorProfilerCallback10_HandleDestroyed(This,handleId) \ ( (This)->lpVtbl -> HandleDestroyed(This,handleId) ) #define ICorProfilerCallback10_InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) \ ( (This)->lpVtbl -> InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) ) #define ICorProfilerCallback10_ProfilerAttachComplete(This) \ ( (This)->lpVtbl -> ProfilerAttachComplete(This) ) #define ICorProfilerCallback10_ProfilerDetachSucceeded(This) \ ( (This)->lpVtbl -> ProfilerDetachSucceeded(This) ) #define ICorProfilerCallback10_ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) \ ( (This)->lpVtbl -> ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) ) #define ICorProfilerCallback10_GetReJITParameters(This,moduleId,methodId,pFunctionControl) \ ( (This)->lpVtbl -> GetReJITParameters(This,moduleId,methodId,pFunctionControl) ) #define ICorProfilerCallback10_ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback10_ReJITError(This,moduleId,methodId,functionId,hrStatus) \ ( (This)->lpVtbl -> ReJITError(This,moduleId,methodId,functionId,hrStatus) ) #define ICorProfilerCallback10_MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback10_SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback10_ConditionalWeakTableElementReferences(This,cRootRefs,keyRefIds,valueRefIds,rootIds) \ ( (This)->lpVtbl -> ConditionalWeakTableElementReferences(This,cRootRefs,keyRefIds,valueRefIds,rootIds) ) #define ICorProfilerCallback10_GetAssemblyReferences(This,wszAssemblyPath,pAsmRefProvider) \ ( (This)->lpVtbl -> GetAssemblyReferences(This,wszAssemblyPath,pAsmRefProvider) ) #define ICorProfilerCallback10_ModuleInMemorySymbolsUpdated(This,moduleId) \ ( (This)->lpVtbl -> ModuleInMemorySymbolsUpdated(This,moduleId) ) #define ICorProfilerCallback10_DynamicMethodJITCompilationStarted(This,functionId,fIsSafeToBlock,pILHeader,cbILHeader) \ ( (This)->lpVtbl -> DynamicMethodJITCompilationStarted(This,functionId,fIsSafeToBlock,pILHeader,cbILHeader) ) #define ICorProfilerCallback10_DynamicMethodJITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> DynamicMethodJITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback10_DynamicMethodUnloaded(This,functionId) \ ( (This)->lpVtbl -> DynamicMethodUnloaded(This,functionId) ) #define ICorProfilerCallback10_EventPipeEventDelivered(This,provider,eventId,eventVersion,cbMetadataBlob,metadataBlob,cbEventData,eventData,pActivityId,pRelatedActivityId,eventThread,numStackFrames,stackFrames) \ ( (This)->lpVtbl -> EventPipeEventDelivered(This,provider,eventId,eventVersion,cbMetadataBlob,metadataBlob,cbEventData,eventData,pActivityId,pRelatedActivityId,eventThread,numStackFrames,stackFrames) ) #define ICorProfilerCallback10_EventPipeProviderCreated(This,provider) \ ( (This)->lpVtbl -> EventPipeProviderCreated(This,provider) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerCallback10_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerCallback11_INTERFACE_DEFINED__ #define __ICorProfilerCallback11_INTERFACE_DEFINED__ /* interface ICorProfilerCallback11 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerCallback11; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("42350846-AAED-47F7-B128-FD0C98881CDE") ICorProfilerCallback11 : public ICorProfilerCallback10 { public: virtual HRESULT STDMETHODCALLTYPE LoadAsNotficationOnly( BOOL *pbNotificationOnly) = 0; }; #else /* C style interface */ typedef struct ICorProfilerCallback11Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerCallback11 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerCallback11 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *Initialize )( ICorProfilerCallback11 * This, /* [in] */ IUnknown *pICorProfilerInfoUnk); HRESULT ( STDMETHODCALLTYPE *Shutdown )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationStarted )( ICorProfilerCallback11 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainCreationFinished )( ICorProfilerCallback11 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownStarted )( ICorProfilerCallback11 * This, /* [in] */ AppDomainID appDomainId); HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownFinished )( ICorProfilerCallback11 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadStarted )( ICorProfilerCallback11 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyLoadFinished )( ICorProfilerCallback11 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadStarted )( ICorProfilerCallback11 * This, /* [in] */ AssemblyID assemblyId); HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadFinished )( ICorProfilerCallback11 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleLoadStarted )( ICorProfilerCallback11 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleLoadFinished )( ICorProfilerCallback11 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadStarted )( ICorProfilerCallback11 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *ModuleUnloadFinished )( ICorProfilerCallback11 * This, /* [in] */ ModuleID moduleId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ModuleAttachedToAssembly )( ICorProfilerCallback11 * This, /* [in] */ ModuleID moduleId, /* [in] */ AssemblyID AssemblyId); HRESULT ( STDMETHODCALLTYPE *ClassLoadStarted )( ICorProfilerCallback11 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassLoadFinished )( ICorProfilerCallback11 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *ClassUnloadStarted )( ICorProfilerCallback11 * This, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ClassUnloadFinished )( ICorProfilerCallback11 * This, /* [in] */ ClassID classId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *FunctionUnloadStarted )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITCompilationStarted )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCompilationFinished )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchStarted )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId, /* [out] */ BOOL *pbUseCachedFunction); HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchFinished )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_JIT_CACHE result); HRESULT ( STDMETHODCALLTYPE *JITFunctionPitched )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *JITInlining )( ICorProfilerCallback11 * This, /* [in] */ FunctionID callerId, /* [in] */ FunctionID calleeId, /* [out] */ BOOL *pfShouldInline); HRESULT ( STDMETHODCALLTYPE *ThreadCreated )( ICorProfilerCallback11 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadDestroyed )( ICorProfilerCallback11 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *ThreadAssignedToOSThread )( ICorProfilerCallback11 * This, /* [in] */ ThreadID managedThreadId, /* [in] */ DWORD osThreadId); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationStarted )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *RemotingClientSendingMessage )( ICorProfilerCallback11 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientReceivingReply )( ICorProfilerCallback11 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationFinished )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerReceivingMessage )( ICorProfilerCallback11 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationStarted )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationReturned )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *RemotingServerSendingReply )( ICorProfilerCallback11 * This, /* [in] */ GUID *pCookie, /* [in] */ BOOL fIsAsync); HRESULT ( STDMETHODCALLTYPE *UnmanagedToManagedTransition )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *ManagedToUnmanagedTransition )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_TRANSITION_REASON reason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendStarted )( ICorProfilerCallback11 * This, /* [in] */ COR_PRF_SUSPEND_REASON suspendReason); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendFinished )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendAborted )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeStarted )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeResumeFinished )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadSuspended )( ICorProfilerCallback11 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *RuntimeThreadResumed )( ICorProfilerCallback11 * This, /* [in] */ ThreadID threadId); HRESULT ( STDMETHODCALLTYPE *MovedReferences )( ICorProfilerCallback11 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectAllocated )( ICorProfilerCallback11 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId); HRESULT ( STDMETHODCALLTYPE *ObjectsAllocatedByClass )( ICorProfilerCallback11 * This, /* [in] */ ULONG cClassCount, /* [size_is][in] */ ClassID classIds[ ], /* [size_is][in] */ ULONG cObjects[ ]); HRESULT ( STDMETHODCALLTYPE *ObjectReferences )( ICorProfilerCallback11 * This, /* [in] */ ObjectID objectId, /* [in] */ ClassID classId, /* [in] */ ULONG cObjectRefs, /* [size_is][in] */ ObjectID objectRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *RootReferences )( ICorProfilerCallback11 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ]); HRESULT ( STDMETHODCALLTYPE *ExceptionThrown )( ICorProfilerCallback11 * This, /* [in] */ ObjectID thrownObjectId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionEnter )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionLeave )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterEnter )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterLeave )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionSearchCatcherFound )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerEnter )( ICorProfilerCallback11 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerLeave )( ICorProfilerCallback11 * This, /* [in] */ UINT_PTR __unused); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionEnter )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionLeave )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyEnter )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyLeave )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherEnter )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId, /* [in] */ ObjectID objectId); HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherLeave )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableCreated )( ICorProfilerCallback11 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable, /* [in] */ ULONG cSlots); HRESULT ( STDMETHODCALLTYPE *COMClassicVTableDestroyed )( ICorProfilerCallback11 * This, /* [in] */ ClassID wrappedClassId, /* [in] */ REFGUID implementedIID, /* [in] */ void *pVTable); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherFound )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherExecute )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *ThreadNameChanged )( ICorProfilerCallback11 * This, /* [in] */ ThreadID threadId, /* [in] */ ULONG cchName, /* [annotation][in] */ _In_reads_opt_(cchName) WCHAR name[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionStarted )( ICorProfilerCallback11 * This, /* [in] */ int cGenerations, /* [size_is][in] */ BOOL generationCollected[ ], /* [in] */ COR_PRF_GC_REASON reason); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences )( ICorProfilerCallback11 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ ULONG cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *GarbageCollectionFinished )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *FinalizeableObjectQueued )( ICorProfilerCallback11 * This, /* [in] */ DWORD finalizerFlags, /* [in] */ ObjectID objectID); HRESULT ( STDMETHODCALLTYPE *RootReferences2 )( ICorProfilerCallback11 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID rootRefIds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_KIND rootKinds[ ], /* [size_is][in] */ COR_PRF_GC_ROOT_FLAGS rootFlags[ ], /* [size_is][in] */ UINT_PTR rootIds[ ]); HRESULT ( STDMETHODCALLTYPE *HandleCreated )( ICorProfilerCallback11 * This, /* [in] */ GCHandleID handleId, /* [in] */ ObjectID initialObjectId); HRESULT ( STDMETHODCALLTYPE *HandleDestroyed )( ICorProfilerCallback11 * This, /* [in] */ GCHandleID handleId); HRESULT ( STDMETHODCALLTYPE *InitializeForAttach )( ICorProfilerCallback11 * This, /* [in] */ IUnknown *pCorProfilerInfoUnk, /* [in] */ void *pvClientData, /* [in] */ UINT cbClientData); HRESULT ( STDMETHODCALLTYPE *ProfilerAttachComplete )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *ProfilerDetachSucceeded )( ICorProfilerCallback11 * This); HRESULT ( STDMETHODCALLTYPE *ReJITCompilationStarted )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *GetReJITParameters )( ICorProfilerCallback11 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ ICorProfilerFunctionControl *pFunctionControl); HRESULT ( STDMETHODCALLTYPE *ReJITCompilationFinished )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID rejitId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *ReJITError )( ICorProfilerCallback11 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus); HRESULT ( STDMETHODCALLTYPE *MovedReferences2 )( ICorProfilerCallback11 * This, /* [in] */ ULONG cMovedObjectIDRanges, /* [size_is][in] */ ObjectID oldObjectIDRangeStart[ ], /* [size_is][in] */ ObjectID newObjectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *SurvivingReferences2 )( ICorProfilerCallback11 * This, /* [in] */ ULONG cSurvivingObjectIDRanges, /* [size_is][in] */ ObjectID objectIDRangeStart[ ], /* [size_is][in] */ SIZE_T cObjectIDRangeLength[ ]); HRESULT ( STDMETHODCALLTYPE *ConditionalWeakTableElementReferences )( ICorProfilerCallback11 * This, /* [in] */ ULONG cRootRefs, /* [size_is][in] */ ObjectID keyRefIds[ ], /* [size_is][in] */ ObjectID valueRefIds[ ], /* [size_is][in] */ GCHandleID rootIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetAssemblyReferences )( ICorProfilerCallback11 * This, /* [string][in] */ const WCHAR *wszAssemblyPath, /* [in] */ ICorProfilerAssemblyReferenceProvider *pAsmRefProvider); HRESULT ( STDMETHODCALLTYPE *ModuleInMemorySymbolsUpdated )( ICorProfilerCallback11 * This, ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *DynamicMethodJITCompilationStarted )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fIsSafeToBlock, /* [in] */ LPCBYTE pILHeader, /* [in] */ ULONG cbILHeader); HRESULT ( STDMETHODCALLTYPE *DynamicMethodJITCompilationFinished )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId, /* [in] */ HRESULT hrStatus, /* [in] */ BOOL fIsSafeToBlock); HRESULT ( STDMETHODCALLTYPE *DynamicMethodUnloaded )( ICorProfilerCallback11 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *EventPipeEventDelivered )( ICorProfilerCallback11 * This, /* [in] */ EVENTPIPE_PROVIDER provider, /* [in] */ DWORD eventId, /* [in] */ DWORD eventVersion, /* [in] */ ULONG cbMetadataBlob, /* [size_is][in] */ LPCBYTE metadataBlob, /* [in] */ ULONG cbEventData, /* [size_is][in] */ LPCBYTE eventData, /* [in] */ LPCGUID pActivityId, /* [in] */ LPCGUID pRelatedActivityId, /* [in] */ ThreadID eventThread, /* [in] */ ULONG numStackFrames, /* [length_is][in] */ UINT_PTR stackFrames[ ]); HRESULT ( STDMETHODCALLTYPE *EventPipeProviderCreated )( ICorProfilerCallback11 * This, /* [in] */ EVENTPIPE_PROVIDER provider); HRESULT ( STDMETHODCALLTYPE *LoadAsNotficationOnly )( ICorProfilerCallback11 * This, BOOL *pbNotificationOnly); END_INTERFACE } ICorProfilerCallback11Vtbl; interface ICorProfilerCallback11 { CONST_VTBL struct ICorProfilerCallback11Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerCallback11_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerCallback11_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerCallback11_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerCallback11_Initialize(This,pICorProfilerInfoUnk) \ ( (This)->lpVtbl -> Initialize(This,pICorProfilerInfoUnk) ) #define ICorProfilerCallback11_Shutdown(This) \ ( (This)->lpVtbl -> Shutdown(This) ) #define ICorProfilerCallback11_AppDomainCreationStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainCreationStarted(This,appDomainId) ) #define ICorProfilerCallback11_AppDomainCreationFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainCreationFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback11_AppDomainShutdownStarted(This,appDomainId) \ ( (This)->lpVtbl -> AppDomainShutdownStarted(This,appDomainId) ) #define ICorProfilerCallback11_AppDomainShutdownFinished(This,appDomainId,hrStatus) \ ( (This)->lpVtbl -> AppDomainShutdownFinished(This,appDomainId,hrStatus) ) #define ICorProfilerCallback11_AssemblyLoadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyLoadStarted(This,assemblyId) ) #define ICorProfilerCallback11_AssemblyLoadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyLoadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback11_AssemblyUnloadStarted(This,assemblyId) \ ( (This)->lpVtbl -> AssemblyUnloadStarted(This,assemblyId) ) #define ICorProfilerCallback11_AssemblyUnloadFinished(This,assemblyId,hrStatus) \ ( (This)->lpVtbl -> AssemblyUnloadFinished(This,assemblyId,hrStatus) ) #define ICorProfilerCallback11_ModuleLoadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleLoadStarted(This,moduleId) ) #define ICorProfilerCallback11_ModuleLoadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleLoadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback11_ModuleUnloadStarted(This,moduleId) \ ( (This)->lpVtbl -> ModuleUnloadStarted(This,moduleId) ) #define ICorProfilerCallback11_ModuleUnloadFinished(This,moduleId,hrStatus) \ ( (This)->lpVtbl -> ModuleUnloadFinished(This,moduleId,hrStatus) ) #define ICorProfilerCallback11_ModuleAttachedToAssembly(This,moduleId,AssemblyId) \ ( (This)->lpVtbl -> ModuleAttachedToAssembly(This,moduleId,AssemblyId) ) #define ICorProfilerCallback11_ClassLoadStarted(This,classId) \ ( (This)->lpVtbl -> ClassLoadStarted(This,classId) ) #define ICorProfilerCallback11_ClassLoadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassLoadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback11_ClassUnloadStarted(This,classId) \ ( (This)->lpVtbl -> ClassUnloadStarted(This,classId) ) #define ICorProfilerCallback11_ClassUnloadFinished(This,classId,hrStatus) \ ( (This)->lpVtbl -> ClassUnloadFinished(This,classId,hrStatus) ) #define ICorProfilerCallback11_FunctionUnloadStarted(This,functionId) \ ( (This)->lpVtbl -> FunctionUnloadStarted(This,functionId) ) #define ICorProfilerCallback11_JITCompilationStarted(This,functionId,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationStarted(This,functionId,fIsSafeToBlock) ) #define ICorProfilerCallback11_JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback11_JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) \ ( (This)->lpVtbl -> JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) ) #define ICorProfilerCallback11_JITCachedFunctionSearchFinished(This,functionId,result) \ ( (This)->lpVtbl -> JITCachedFunctionSearchFinished(This,functionId,result) ) #define ICorProfilerCallback11_JITFunctionPitched(This,functionId) \ ( (This)->lpVtbl -> JITFunctionPitched(This,functionId) ) #define ICorProfilerCallback11_JITInlining(This,callerId,calleeId,pfShouldInline) \ ( (This)->lpVtbl -> JITInlining(This,callerId,calleeId,pfShouldInline) ) #define ICorProfilerCallback11_ThreadCreated(This,threadId) \ ( (This)->lpVtbl -> ThreadCreated(This,threadId) ) #define ICorProfilerCallback11_ThreadDestroyed(This,threadId) \ ( (This)->lpVtbl -> ThreadDestroyed(This,threadId) ) #define ICorProfilerCallback11_ThreadAssignedToOSThread(This,managedThreadId,osThreadId) \ ( (This)->lpVtbl -> ThreadAssignedToOSThread(This,managedThreadId,osThreadId) ) #define ICorProfilerCallback11_RemotingClientInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingClientInvocationStarted(This) ) #define ICorProfilerCallback11_RemotingClientSendingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientSendingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback11_RemotingClientReceivingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingClientReceivingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback11_RemotingClientInvocationFinished(This) \ ( (This)->lpVtbl -> RemotingClientInvocationFinished(This) ) #define ICorProfilerCallback11_RemotingServerReceivingMessage(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerReceivingMessage(This,pCookie,fIsAsync) ) #define ICorProfilerCallback11_RemotingServerInvocationStarted(This) \ ( (This)->lpVtbl -> RemotingServerInvocationStarted(This) ) #define ICorProfilerCallback11_RemotingServerInvocationReturned(This) \ ( (This)->lpVtbl -> RemotingServerInvocationReturned(This) ) #define ICorProfilerCallback11_RemotingServerSendingReply(This,pCookie,fIsAsync) \ ( (This)->lpVtbl -> RemotingServerSendingReply(This,pCookie,fIsAsync) ) #define ICorProfilerCallback11_UnmanagedToManagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> UnmanagedToManagedTransition(This,functionId,reason) ) #define ICorProfilerCallback11_ManagedToUnmanagedTransition(This,functionId,reason) \ ( (This)->lpVtbl -> ManagedToUnmanagedTransition(This,functionId,reason) ) #define ICorProfilerCallback11_RuntimeSuspendStarted(This,suspendReason) \ ( (This)->lpVtbl -> RuntimeSuspendStarted(This,suspendReason) ) #define ICorProfilerCallback11_RuntimeSuspendFinished(This) \ ( (This)->lpVtbl -> RuntimeSuspendFinished(This) ) #define ICorProfilerCallback11_RuntimeSuspendAborted(This) \ ( (This)->lpVtbl -> RuntimeSuspendAborted(This) ) #define ICorProfilerCallback11_RuntimeResumeStarted(This) \ ( (This)->lpVtbl -> RuntimeResumeStarted(This) ) #define ICorProfilerCallback11_RuntimeResumeFinished(This) \ ( (This)->lpVtbl -> RuntimeResumeFinished(This) ) #define ICorProfilerCallback11_RuntimeThreadSuspended(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadSuspended(This,threadId) ) #define ICorProfilerCallback11_RuntimeThreadResumed(This,threadId) \ ( (This)->lpVtbl -> RuntimeThreadResumed(This,threadId) ) #define ICorProfilerCallback11_MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback11_ObjectAllocated(This,objectId,classId) \ ( (This)->lpVtbl -> ObjectAllocated(This,objectId,classId) ) #define ICorProfilerCallback11_ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) \ ( (This)->lpVtbl -> ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) ) #define ICorProfilerCallback11_ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) \ ( (This)->lpVtbl -> ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) ) #define ICorProfilerCallback11_RootReferences(This,cRootRefs,rootRefIds) \ ( (This)->lpVtbl -> RootReferences(This,cRootRefs,rootRefIds) ) #define ICorProfilerCallback11_ExceptionThrown(This,thrownObjectId) \ ( (This)->lpVtbl -> ExceptionThrown(This,thrownObjectId) ) #define ICorProfilerCallback11_ExceptionSearchFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFunctionEnter(This,functionId) ) #define ICorProfilerCallback11_ExceptionSearchFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFunctionLeave(This) ) #define ICorProfilerCallback11_ExceptionSearchFilterEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchFilterEnter(This,functionId) ) #define ICorProfilerCallback11_ExceptionSearchFilterLeave(This) \ ( (This)->lpVtbl -> ExceptionSearchFilterLeave(This) ) #define ICorProfilerCallback11_ExceptionSearchCatcherFound(This,functionId) \ ( (This)->lpVtbl -> ExceptionSearchCatcherFound(This,functionId) ) #define ICorProfilerCallback11_ExceptionOSHandlerEnter(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerEnter(This,__unused) ) #define ICorProfilerCallback11_ExceptionOSHandlerLeave(This,__unused) \ ( (This)->lpVtbl -> ExceptionOSHandlerLeave(This,__unused) ) #define ICorProfilerCallback11_ExceptionUnwindFunctionEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionEnter(This,functionId) ) #define ICorProfilerCallback11_ExceptionUnwindFunctionLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFunctionLeave(This) ) #define ICorProfilerCallback11_ExceptionUnwindFinallyEnter(This,functionId) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyEnter(This,functionId) ) #define ICorProfilerCallback11_ExceptionUnwindFinallyLeave(This) \ ( (This)->lpVtbl -> ExceptionUnwindFinallyLeave(This) ) #define ICorProfilerCallback11_ExceptionCatcherEnter(This,functionId,objectId) \ ( (This)->lpVtbl -> ExceptionCatcherEnter(This,functionId,objectId) ) #define ICorProfilerCallback11_ExceptionCatcherLeave(This) \ ( (This)->lpVtbl -> ExceptionCatcherLeave(This) ) #define ICorProfilerCallback11_COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) \ ( (This)->lpVtbl -> COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) ) #define ICorProfilerCallback11_COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) \ ( (This)->lpVtbl -> COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) ) #define ICorProfilerCallback11_ExceptionCLRCatcherFound(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherFound(This) ) #define ICorProfilerCallback11_ExceptionCLRCatcherExecute(This) \ ( (This)->lpVtbl -> ExceptionCLRCatcherExecute(This) ) #define ICorProfilerCallback11_ThreadNameChanged(This,threadId,cchName,name) \ ( (This)->lpVtbl -> ThreadNameChanged(This,threadId,cchName,name) ) #define ICorProfilerCallback11_GarbageCollectionStarted(This,cGenerations,generationCollected,reason) \ ( (This)->lpVtbl -> GarbageCollectionStarted(This,cGenerations,generationCollected,reason) ) #define ICorProfilerCallback11_SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback11_GarbageCollectionFinished(This) \ ( (This)->lpVtbl -> GarbageCollectionFinished(This) ) #define ICorProfilerCallback11_FinalizeableObjectQueued(This,finalizerFlags,objectID) \ ( (This)->lpVtbl -> FinalizeableObjectQueued(This,finalizerFlags,objectID) ) #define ICorProfilerCallback11_RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) \ ( (This)->lpVtbl -> RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) ) #define ICorProfilerCallback11_HandleCreated(This,handleId,initialObjectId) \ ( (This)->lpVtbl -> HandleCreated(This,handleId,initialObjectId) ) #define ICorProfilerCallback11_HandleDestroyed(This,handleId) \ ( (This)->lpVtbl -> HandleDestroyed(This,handleId) ) #define ICorProfilerCallback11_InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) \ ( (This)->lpVtbl -> InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) ) #define ICorProfilerCallback11_ProfilerAttachComplete(This) \ ( (This)->lpVtbl -> ProfilerAttachComplete(This) ) #define ICorProfilerCallback11_ProfilerDetachSucceeded(This) \ ( (This)->lpVtbl -> ProfilerDetachSucceeded(This) ) #define ICorProfilerCallback11_ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) \ ( (This)->lpVtbl -> ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) ) #define ICorProfilerCallback11_GetReJITParameters(This,moduleId,methodId,pFunctionControl) \ ( (This)->lpVtbl -> GetReJITParameters(This,moduleId,methodId,pFunctionControl) ) #define ICorProfilerCallback11_ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback11_ReJITError(This,moduleId,methodId,functionId,hrStatus) \ ( (This)->lpVtbl -> ReJITError(This,moduleId,methodId,functionId,hrStatus) ) #define ICorProfilerCallback11_MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback11_SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) \ ( (This)->lpVtbl -> SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) #define ICorProfilerCallback11_ConditionalWeakTableElementReferences(This,cRootRefs,keyRefIds,valueRefIds,rootIds) \ ( (This)->lpVtbl -> ConditionalWeakTableElementReferences(This,cRootRefs,keyRefIds,valueRefIds,rootIds) ) #define ICorProfilerCallback11_GetAssemblyReferences(This,wszAssemblyPath,pAsmRefProvider) \ ( (This)->lpVtbl -> GetAssemblyReferences(This,wszAssemblyPath,pAsmRefProvider) ) #define ICorProfilerCallback11_ModuleInMemorySymbolsUpdated(This,moduleId) \ ( (This)->lpVtbl -> ModuleInMemorySymbolsUpdated(This,moduleId) ) #define ICorProfilerCallback11_DynamicMethodJITCompilationStarted(This,functionId,fIsSafeToBlock,pILHeader,cbILHeader) \ ( (This)->lpVtbl -> DynamicMethodJITCompilationStarted(This,functionId,fIsSafeToBlock,pILHeader,cbILHeader) ) #define ICorProfilerCallback11_DynamicMethodJITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) \ ( (This)->lpVtbl -> DynamicMethodJITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) ) #define ICorProfilerCallback11_DynamicMethodUnloaded(This,functionId) \ ( (This)->lpVtbl -> DynamicMethodUnloaded(This,functionId) ) #define ICorProfilerCallback11_EventPipeEventDelivered(This,provider,eventId,eventVersion,cbMetadataBlob,metadataBlob,cbEventData,eventData,pActivityId,pRelatedActivityId,eventThread,numStackFrames,stackFrames) \ ( (This)->lpVtbl -> EventPipeEventDelivered(This,provider,eventId,eventVersion,cbMetadataBlob,metadataBlob,cbEventData,eventData,pActivityId,pRelatedActivityId,eventThread,numStackFrames,stackFrames) ) #define ICorProfilerCallback11_EventPipeProviderCreated(This,provider) \ ( (This)->lpVtbl -> EventPipeProviderCreated(This,provider) ) #define ICorProfilerCallback11_LoadAsNotficationOnly(This,pbNotificationOnly) \ ( (This)->lpVtbl -> LoadAsNotficationOnly(This,pbNotificationOnly) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerCallback11_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_corprof_0000_0011 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_corprof_0000_0011_0001 { COR_PRF_CODEGEN_DISABLE_INLINING = 0x1, COR_PRF_CODEGEN_DISABLE_ALL_OPTIMIZATIONS = 0x2 } COR_PRF_CODEGEN_FLAGS; extern RPC_IF_HANDLE __MIDL_itf_corprof_0000_0011_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_corprof_0000_0011_v0_0_s_ifspec; #ifndef __ICorProfilerInfo_INTERFACE_DEFINED__ #define __ICorProfilerInfo_INTERFACE_DEFINED__ /* interface ICorProfilerInfo */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerInfo; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("28B5557D-3F3F-48b4-90B2-5F9EEA2F6C48") ICorProfilerInfo : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetClassFromObject( /* [in] */ ObjectID objectId, /* [out] */ ClassID *pClassId) = 0; virtual HRESULT STDMETHODCALLTYPE GetClassFromToken( /* [in] */ ModuleID moduleId, /* [in] */ mdTypeDef typeDef, /* [out] */ ClassID *pClassId) = 0; virtual HRESULT STDMETHODCALLTYPE GetCodeInfo( /* [in] */ FunctionID functionId, /* [out] */ LPCBYTE *pStart, /* [out] */ ULONG *pcSize) = 0; virtual HRESULT STDMETHODCALLTYPE GetEventMask( /* [out] */ DWORD *pdwEvents) = 0; virtual HRESULT STDMETHODCALLTYPE GetFunctionFromIP( /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId) = 0; virtual HRESULT STDMETHODCALLTYPE GetFunctionFromToken( /* [in] */ ModuleID moduleId, /* [in] */ mdToken token, /* [out] */ FunctionID *pFunctionId) = 0; virtual HRESULT STDMETHODCALLTYPE GetHandleFromThread( /* [in] */ ThreadID threadId, /* [out] */ HANDLE *phThread) = 0; virtual HRESULT STDMETHODCALLTYPE GetObjectSize( /* [in] */ ObjectID objectId, /* [out] */ ULONG *pcSize) = 0; virtual HRESULT STDMETHODCALLTYPE IsArrayClass( /* [in] */ ClassID classId, /* [out] */ CorElementType *pBaseElemType, /* [out] */ ClassID *pBaseClassId, /* [out] */ ULONG *pcRank) = 0; virtual HRESULT STDMETHODCALLTYPE GetThreadInfo( /* [in] */ ThreadID threadId, /* [out] */ DWORD *pdwWin32ThreadId) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentThreadID( /* [out] */ ThreadID *pThreadId) = 0; virtual HRESULT STDMETHODCALLTYPE GetClassIDInfo( /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken) = 0; virtual HRESULT STDMETHODCALLTYPE GetFunctionInfo( /* [in] */ FunctionID functionId, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken) = 0; virtual HRESULT STDMETHODCALLTYPE SetEventMask( /* [in] */ DWORD dwEvents) = 0; virtual HRESULT STDMETHODCALLTYPE SetEnterLeaveFunctionHooks( /* [in] */ FunctionEnter *pFuncEnter, /* [in] */ FunctionLeave *pFuncLeave, /* [in] */ FunctionTailcall *pFuncTailcall) = 0; virtual HRESULT STDMETHODCALLTYPE SetFunctionIDMapper( /* [in] */ FunctionIDMapper *pFunc) = 0; virtual HRESULT STDMETHODCALLTYPE GetTokenAndMetaDataFromFunction( /* [in] */ FunctionID functionId, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppImport, /* [out] */ mdToken *pToken) = 0; virtual HRESULT STDMETHODCALLTYPE GetModuleInfo( /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId) = 0; virtual HRESULT STDMETHODCALLTYPE GetModuleMetaData( /* [in] */ ModuleID moduleId, /* [in] */ DWORD dwOpenFlags, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppOut) = 0; virtual HRESULT STDMETHODCALLTYPE GetILFunctionBody( /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [out] */ LPCBYTE *ppMethodHeader, /* [out] */ ULONG *pcbMethodSize) = 0; virtual HRESULT STDMETHODCALLTYPE GetILFunctionBodyAllocator( /* [in] */ ModuleID moduleId, /* [out] */ IMethodMalloc **ppMalloc) = 0; virtual HRESULT STDMETHODCALLTYPE SetILFunctionBody( /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodid, /* [in] */ LPCBYTE pbNewILMethodHeader) = 0; virtual HRESULT STDMETHODCALLTYPE GetAppDomainInfo( /* [in] */ AppDomainID appDomainId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ ProcessID *pProcessId) = 0; virtual HRESULT STDMETHODCALLTYPE GetAssemblyInfo( /* [in] */ AssemblyID assemblyId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AppDomainID *pAppDomainId, /* [out] */ ModuleID *pModuleId) = 0; virtual HRESULT STDMETHODCALLTYPE SetFunctionReJIT( /* [in] */ FunctionID functionId) = 0; virtual HRESULT STDMETHODCALLTYPE ForceGC( void) = 0; virtual HRESULT STDMETHODCALLTYPE SetILInstrumentedCodeMap( /* [in] */ FunctionID functionId, /* [in] */ BOOL fStartJit, /* [in] */ ULONG cILMapEntries, /* [size_is][in] */ COR_IL_MAP rgILMapEntries[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE GetInprocInspectionInterface( /* [out] */ IUnknown **ppicd) = 0; virtual HRESULT STDMETHODCALLTYPE GetInprocInspectionIThisThread( /* [out] */ IUnknown **ppicd) = 0; virtual HRESULT STDMETHODCALLTYPE GetThreadContext( /* [in] */ ThreadID threadId, /* [out] */ ContextID *pContextId) = 0; virtual HRESULT STDMETHODCALLTYPE BeginInprocDebugging( /* [in] */ BOOL fThisThreadOnly, /* [out] */ DWORD *pdwProfilerContext) = 0; virtual HRESULT STDMETHODCALLTYPE EndInprocDebugging( /* [in] */ DWORD dwProfilerContext) = 0; virtual HRESULT STDMETHODCALLTYPE GetILToNativeMapping( /* [in] */ FunctionID functionId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]) = 0; }; #else /* C style interface */ typedef struct ICorProfilerInfoVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerInfo * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerInfo * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerInfo * This); HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( ICorProfilerInfo * This, /* [in] */ ObjectID objectId, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( ICorProfilerInfo * This, /* [in] */ ModuleID moduleId, /* [in] */ mdTypeDef typeDef, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( ICorProfilerInfo * This, /* [in] */ FunctionID functionId, /* [out] */ LPCBYTE *pStart, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask )( ICorProfilerInfo * This, /* [out] */ DWORD *pdwEvents); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( ICorProfilerInfo * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( ICorProfilerInfo * This, /* [in] */ ModuleID moduleId, /* [in] */ mdToken token, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( ICorProfilerInfo * This, /* [in] */ ThreadID threadId, /* [out] */ HANDLE *phThread); HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( ICorProfilerInfo * This, /* [in] */ ObjectID objectId, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( ICorProfilerInfo * This, /* [in] */ ClassID classId, /* [out] */ CorElementType *pBaseElemType, /* [out] */ ClassID *pBaseClassId, /* [out] */ ULONG *pcRank); HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( ICorProfilerInfo * This, /* [in] */ ThreadID threadId, /* [out] */ DWORD *pdwWin32ThreadId); HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( ICorProfilerInfo * This, /* [out] */ ThreadID *pThreadId); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( ICorProfilerInfo * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( ICorProfilerInfo * This, /* [in] */ FunctionID functionId, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *SetEventMask )( ICorProfilerInfo * This, /* [in] */ DWORD dwEvents); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( ICorProfilerInfo * This, /* [in] */ FunctionEnter *pFuncEnter, /* [in] */ FunctionLeave *pFuncLeave, /* [in] */ FunctionTailcall *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( ICorProfilerInfo * This, /* [in] */ FunctionIDMapper *pFunc); HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( ICorProfilerInfo * This, /* [in] */ FunctionID functionId, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppImport, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( ICorProfilerInfo * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId); HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( ICorProfilerInfo * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD dwOpenFlags, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppOut); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( ICorProfilerInfo * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [out] */ LPCBYTE *ppMethodHeader, /* [out] */ ULONG *pcbMethodSize); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( ICorProfilerInfo * This, /* [in] */ ModuleID moduleId, /* [out] */ IMethodMalloc **ppMalloc); HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( ICorProfilerInfo * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodid, /* [in] */ LPCBYTE pbNewILMethodHeader); HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( ICorProfilerInfo * This, /* [in] */ AppDomainID appDomainId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ ProcessID *pProcessId); HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( ICorProfilerInfo * This, /* [in] */ AssemblyID assemblyId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AppDomainID *pAppDomainId, /* [out] */ ModuleID *pModuleId); HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( ICorProfilerInfo * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ForceGC )( ICorProfilerInfo * This); HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( ICorProfilerInfo * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fStartJit, /* [in] */ ULONG cILMapEntries, /* [size_is][in] */ COR_IL_MAP rgILMapEntries[ ]); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( ICorProfilerInfo * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( ICorProfilerInfo * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( ICorProfilerInfo * This, /* [in] */ ThreadID threadId, /* [out] */ ContextID *pContextId); HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( ICorProfilerInfo * This, /* [in] */ BOOL fThisThreadOnly, /* [out] */ DWORD *pdwProfilerContext); HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( ICorProfilerInfo * This, /* [in] */ DWORD dwProfilerContext); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( ICorProfilerInfo * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); END_INTERFACE } ICorProfilerInfoVtbl; interface ICorProfilerInfo { CONST_VTBL struct ICorProfilerInfoVtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerInfo_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerInfo_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerInfo_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerInfo_GetClassFromObject(This,objectId,pClassId) \ ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) #define ICorProfilerInfo_GetClassFromToken(This,moduleId,typeDef,pClassId) \ ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) #define ICorProfilerInfo_GetCodeInfo(This,functionId,pStart,pcSize) \ ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) #define ICorProfilerInfo_GetEventMask(This,pdwEvents) \ ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) #define ICorProfilerInfo_GetFunctionFromIP(This,ip,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) #define ICorProfilerInfo_GetFunctionFromToken(This,moduleId,token,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) #define ICorProfilerInfo_GetHandleFromThread(This,threadId,phThread) \ ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) #define ICorProfilerInfo_GetObjectSize(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) #define ICorProfilerInfo_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \ ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) #define ICorProfilerInfo_GetThreadInfo(This,threadId,pdwWin32ThreadId) \ ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) #define ICorProfilerInfo_GetCurrentThreadID(This,pThreadId) \ ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) #define ICorProfilerInfo_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \ ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) #define ICorProfilerInfo_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) \ ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) #define ICorProfilerInfo_SetEventMask(This,dwEvents) \ ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) #define ICorProfilerInfo_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo_SetFunctionIDMapper(This,pFunc) \ ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) #define ICorProfilerInfo_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) \ ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) #define ICorProfilerInfo_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) \ ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) #define ICorProfilerInfo_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) \ ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) #define ICorProfilerInfo_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) \ ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) #define ICorProfilerInfo_GetILFunctionBodyAllocator(This,moduleId,ppMalloc) \ ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) #define ICorProfilerInfo_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) \ ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) #define ICorProfilerInfo_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) \ ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) #define ICorProfilerInfo_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) \ ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) #define ICorProfilerInfo_SetFunctionReJIT(This,functionId) \ ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) #define ICorProfilerInfo_ForceGC(This) \ ( (This)->lpVtbl -> ForceGC(This) ) #define ICorProfilerInfo_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) \ ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) #define ICorProfilerInfo_GetInprocInspectionInterface(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) #define ICorProfilerInfo_GetInprocInspectionIThisThread(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) #define ICorProfilerInfo_GetThreadContext(This,threadId,pContextId) \ ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) #define ICorProfilerInfo_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) \ ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) #define ICorProfilerInfo_EndInprocDebugging(This,dwProfilerContext) \ ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) #define ICorProfilerInfo_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerInfo_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerInfo2_INTERFACE_DEFINED__ #define __ICorProfilerInfo2_INTERFACE_DEFINED__ /* interface ICorProfilerInfo2 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerInfo2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("CC0935CD-A518-487d-B0BB-A93214E65478") ICorProfilerInfo2 : public ICorProfilerInfo { public: virtual HRESULT STDMETHODCALLTYPE DoStackSnapshot( /* [in] */ ThreadID thread, /* [in] */ StackSnapshotCallback *callback, /* [in] */ ULONG32 infoFlags, /* [in] */ void *clientData, /* [size_is][in] */ BYTE context[ ], /* [in] */ ULONG32 contextSize) = 0; virtual HRESULT STDMETHODCALLTYPE SetEnterLeaveFunctionHooks2( /* [in] */ FunctionEnter2 *pFuncEnter, /* [in] */ FunctionLeave2 *pFuncLeave, /* [in] */ FunctionTailcall2 *pFuncTailcall) = 0; virtual HRESULT STDMETHODCALLTYPE GetFunctionInfo2( /* [in] */ FunctionID funcId, /* [in] */ COR_PRF_FRAME_INFO frameInfo, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken, /* [in] */ ULONG32 cTypeArgs, /* [out] */ ULONG32 *pcTypeArgs, /* [out] */ ClassID typeArgs[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE GetStringLayout( /* [out] */ ULONG *pBufferLengthOffset, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset) = 0; virtual HRESULT STDMETHODCALLTYPE GetClassLayout( /* [in] */ ClassID classID, /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[ ], /* [in] */ ULONG cFieldOffset, /* [out] */ ULONG *pcFieldOffset, /* [out] */ ULONG *pulClassSize) = 0; virtual HRESULT STDMETHODCALLTYPE GetClassIDInfo2( /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken, /* [out] */ ClassID *pParentClassId, /* [in] */ ULONG32 cNumTypeArgs, /* [out] */ ULONG32 *pcNumTypeArgs, /* [out] */ ClassID typeArgs[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE GetCodeInfo2( /* [in] */ FunctionID functionID, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE GetClassFromTokenAndTypeArgs( /* [in] */ ModuleID moduleID, /* [in] */ mdTypeDef typeDef, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ ClassID *pClassID) = 0; virtual HRESULT STDMETHODCALLTYPE GetFunctionFromTokenAndTypeArgs( /* [in] */ ModuleID moduleID, /* [in] */ mdMethodDef funcDef, /* [in] */ ClassID classId, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ FunctionID *pFunctionID) = 0; virtual HRESULT STDMETHODCALLTYPE EnumModuleFrozenObjects( /* [in] */ ModuleID moduleID, /* [out] */ ICorProfilerObjectEnum **ppEnum) = 0; virtual HRESULT STDMETHODCALLTYPE GetArrayObjectInfo( /* [in] */ ObjectID objectId, /* [in] */ ULONG32 cDimensions, /* [size_is][out] */ ULONG32 pDimensionSizes[ ], /* [size_is][out] */ int pDimensionLowerBounds[ ], /* [out] */ BYTE **ppData) = 0; virtual HRESULT STDMETHODCALLTYPE GetBoxClassLayout( /* [in] */ ClassID classId, /* [out] */ ULONG32 *pBufferOffset) = 0; virtual HRESULT STDMETHODCALLTYPE GetThreadAppDomain( /* [in] */ ThreadID threadId, /* [out] */ AppDomainID *pAppDomainId) = 0; virtual HRESULT STDMETHODCALLTYPE GetRVAStaticAddress( /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ void **ppAddress) = 0; virtual HRESULT STDMETHODCALLTYPE GetAppDomainStaticAddress( /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [out] */ void **ppAddress) = 0; virtual HRESULT STDMETHODCALLTYPE GetThreadStaticAddress( /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress) = 0; virtual HRESULT STDMETHODCALLTYPE GetContextStaticAddress( /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ContextID contextId, /* [out] */ void **ppAddress) = 0; virtual HRESULT STDMETHODCALLTYPE GetStaticFieldInfo( /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo) = 0; virtual HRESULT STDMETHODCALLTYPE GetGenerationBounds( /* [in] */ ULONG cObjectRanges, /* [out] */ ULONG *pcObjectRanges, /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE GetObjectGeneration( /* [in] */ ObjectID objectId, /* [out] */ COR_PRF_GC_GENERATION_RANGE *range) = 0; virtual HRESULT STDMETHODCALLTYPE GetNotifiedExceptionClauseInfo( /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo) = 0; }; #else /* C style interface */ typedef struct ICorProfilerInfo2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerInfo2 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerInfo2 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerInfo2 * This); HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( ICorProfilerInfo2 * This, /* [in] */ ObjectID objectId, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( ICorProfilerInfo2 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdTypeDef typeDef, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( ICorProfilerInfo2 * This, /* [in] */ FunctionID functionId, /* [out] */ LPCBYTE *pStart, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask )( ICorProfilerInfo2 * This, /* [out] */ DWORD *pdwEvents); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( ICorProfilerInfo2 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( ICorProfilerInfo2 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdToken token, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( ICorProfilerInfo2 * This, /* [in] */ ThreadID threadId, /* [out] */ HANDLE *phThread); HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( ICorProfilerInfo2 * This, /* [in] */ ObjectID objectId, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( ICorProfilerInfo2 * This, /* [in] */ ClassID classId, /* [out] */ CorElementType *pBaseElemType, /* [out] */ ClassID *pBaseClassId, /* [out] */ ULONG *pcRank); HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( ICorProfilerInfo2 * This, /* [in] */ ThreadID threadId, /* [out] */ DWORD *pdwWin32ThreadId); HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( ICorProfilerInfo2 * This, /* [out] */ ThreadID *pThreadId); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( ICorProfilerInfo2 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( ICorProfilerInfo2 * This, /* [in] */ FunctionID functionId, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *SetEventMask )( ICorProfilerInfo2 * This, /* [in] */ DWORD dwEvents); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( ICorProfilerInfo2 * This, /* [in] */ FunctionEnter *pFuncEnter, /* [in] */ FunctionLeave *pFuncLeave, /* [in] */ FunctionTailcall *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( ICorProfilerInfo2 * This, /* [in] */ FunctionIDMapper *pFunc); HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( ICorProfilerInfo2 * This, /* [in] */ FunctionID functionId, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppImport, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( ICorProfilerInfo2 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId); HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( ICorProfilerInfo2 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD dwOpenFlags, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppOut); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( ICorProfilerInfo2 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [out] */ LPCBYTE *ppMethodHeader, /* [out] */ ULONG *pcbMethodSize); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( ICorProfilerInfo2 * This, /* [in] */ ModuleID moduleId, /* [out] */ IMethodMalloc **ppMalloc); HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( ICorProfilerInfo2 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodid, /* [in] */ LPCBYTE pbNewILMethodHeader); HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( ICorProfilerInfo2 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ ProcessID *pProcessId); HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( ICorProfilerInfo2 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AppDomainID *pAppDomainId, /* [out] */ ModuleID *pModuleId); HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( ICorProfilerInfo2 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ForceGC )( ICorProfilerInfo2 * This); HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( ICorProfilerInfo2 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fStartJit, /* [in] */ ULONG cILMapEntries, /* [size_is][in] */ COR_IL_MAP rgILMapEntries[ ]); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( ICorProfilerInfo2 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( ICorProfilerInfo2 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( ICorProfilerInfo2 * This, /* [in] */ ThreadID threadId, /* [out] */ ContextID *pContextId); HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( ICorProfilerInfo2 * This, /* [in] */ BOOL fThisThreadOnly, /* [out] */ DWORD *pdwProfilerContext); HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( ICorProfilerInfo2 * This, /* [in] */ DWORD dwProfilerContext); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( ICorProfilerInfo2 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( ICorProfilerInfo2 * This, /* [in] */ ThreadID thread, /* [in] */ StackSnapshotCallback *callback, /* [in] */ ULONG32 infoFlags, /* [in] */ void *clientData, /* [size_is][in] */ BYTE context[ ], /* [in] */ ULONG32 contextSize); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( ICorProfilerInfo2 * This, /* [in] */ FunctionEnter2 *pFuncEnter, /* [in] */ FunctionLeave2 *pFuncLeave, /* [in] */ FunctionTailcall2 *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( ICorProfilerInfo2 * This, /* [in] */ FunctionID funcId, /* [in] */ COR_PRF_FRAME_INFO frameInfo, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken, /* [in] */ ULONG32 cTypeArgs, /* [out] */ ULONG32 *pcTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( ICorProfilerInfo2 * This, /* [out] */ ULONG *pBufferLengthOffset, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( ICorProfilerInfo2 * This, /* [in] */ ClassID classID, /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[ ], /* [in] */ ULONG cFieldOffset, /* [out] */ ULONG *pcFieldOffset, /* [out] */ ULONG *pulClassSize); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( ICorProfilerInfo2 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken, /* [out] */ ClassID *pParentClassId, /* [in] */ ULONG32 cNumTypeArgs, /* [out] */ ULONG32 *pcNumTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( ICorProfilerInfo2 * This, /* [in] */ FunctionID functionID, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( ICorProfilerInfo2 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdTypeDef typeDef, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ ClassID *pClassID); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( ICorProfilerInfo2 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdMethodDef funcDef, /* [in] */ ClassID classId, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ FunctionID *pFunctionID); HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( ICorProfilerInfo2 * This, /* [in] */ ModuleID moduleID, /* [out] */ ICorProfilerObjectEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( ICorProfilerInfo2 * This, /* [in] */ ObjectID objectId, /* [in] */ ULONG32 cDimensions, /* [size_is][out] */ ULONG32 pDimensionSizes[ ], /* [size_is][out] */ int pDimensionLowerBounds[ ], /* [out] */ BYTE **ppData); HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( ICorProfilerInfo2 * This, /* [in] */ ClassID classId, /* [out] */ ULONG32 *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( ICorProfilerInfo2 * This, /* [in] */ ThreadID threadId, /* [out] */ AppDomainID *pAppDomainId); HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( ICorProfilerInfo2 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( ICorProfilerInfo2 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( ICorProfilerInfo2 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( ICorProfilerInfo2 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ContextID contextId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( ICorProfilerInfo2 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo); HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( ICorProfilerInfo2 * This, /* [in] */ ULONG cObjectRanges, /* [out] */ ULONG *pcObjectRanges, /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[ ]); HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( ICorProfilerInfo2 * This, /* [in] */ ObjectID objectId, /* [out] */ COR_PRF_GC_GENERATION_RANGE *range); HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( ICorProfilerInfo2 * This, /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo); END_INTERFACE } ICorProfilerInfo2Vtbl; interface ICorProfilerInfo2 { CONST_VTBL struct ICorProfilerInfo2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerInfo2_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerInfo2_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerInfo2_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerInfo2_GetClassFromObject(This,objectId,pClassId) \ ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) #define ICorProfilerInfo2_GetClassFromToken(This,moduleId,typeDef,pClassId) \ ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) #define ICorProfilerInfo2_GetCodeInfo(This,functionId,pStart,pcSize) \ ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) #define ICorProfilerInfo2_GetEventMask(This,pdwEvents) \ ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) #define ICorProfilerInfo2_GetFunctionFromIP(This,ip,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) #define ICorProfilerInfo2_GetFunctionFromToken(This,moduleId,token,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) #define ICorProfilerInfo2_GetHandleFromThread(This,threadId,phThread) \ ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) #define ICorProfilerInfo2_GetObjectSize(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) #define ICorProfilerInfo2_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \ ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) #define ICorProfilerInfo2_GetThreadInfo(This,threadId,pdwWin32ThreadId) \ ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) #define ICorProfilerInfo2_GetCurrentThreadID(This,pThreadId) \ ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) #define ICorProfilerInfo2_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \ ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) #define ICorProfilerInfo2_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) \ ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) #define ICorProfilerInfo2_SetEventMask(This,dwEvents) \ ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) #define ICorProfilerInfo2_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo2_SetFunctionIDMapper(This,pFunc) \ ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) #define ICorProfilerInfo2_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) \ ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) #define ICorProfilerInfo2_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) \ ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) #define ICorProfilerInfo2_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) \ ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) #define ICorProfilerInfo2_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) \ ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) #define ICorProfilerInfo2_GetILFunctionBodyAllocator(This,moduleId,ppMalloc) \ ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) #define ICorProfilerInfo2_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) \ ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) #define ICorProfilerInfo2_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) \ ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) #define ICorProfilerInfo2_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) \ ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) #define ICorProfilerInfo2_SetFunctionReJIT(This,functionId) \ ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) #define ICorProfilerInfo2_ForceGC(This) \ ( (This)->lpVtbl -> ForceGC(This) ) #define ICorProfilerInfo2_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) \ ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) #define ICorProfilerInfo2_GetInprocInspectionInterface(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) #define ICorProfilerInfo2_GetInprocInspectionIThisThread(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) #define ICorProfilerInfo2_GetThreadContext(This,threadId,pContextId) \ ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) #define ICorProfilerInfo2_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) \ ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) #define ICorProfilerInfo2_EndInprocDebugging(This,dwProfilerContext) \ ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) #define ICorProfilerInfo2_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) #define ICorProfilerInfo2_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) \ ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) #define ICorProfilerInfo2_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo2_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) #define ICorProfilerInfo2_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo2_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) \ ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) #define ICorProfilerInfo2_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) #define ICorProfilerInfo2_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo2_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) \ ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) #define ICorProfilerInfo2_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) \ ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) #define ICorProfilerInfo2_EnumModuleFrozenObjects(This,moduleID,ppEnum) \ ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) #define ICorProfilerInfo2_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) \ ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) #define ICorProfilerInfo2_GetBoxClassLayout(This,classId,pBufferOffset) \ ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) #define ICorProfilerInfo2_GetThreadAppDomain(This,threadId,pAppDomainId) \ ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) #define ICorProfilerInfo2_GetRVAStaticAddress(This,classId,fieldToken,ppAddress) \ ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) #define ICorProfilerInfo2_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) \ ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) #define ICorProfilerInfo2_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) #define ICorProfilerInfo2_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \ ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) #define ICorProfilerInfo2_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) \ ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) #define ICorProfilerInfo2_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) \ ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) #define ICorProfilerInfo2_GetObjectGeneration(This,objectId,range) \ ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) #define ICorProfilerInfo2_GetNotifiedExceptionClauseInfo(This,pinfo) \ ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerInfo2_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerInfo3_INTERFACE_DEFINED__ #define __ICorProfilerInfo3_INTERFACE_DEFINED__ /* interface ICorProfilerInfo3 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerInfo3; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("B555ED4F-452A-4E54-8B39-B5360BAD32A0") ICorProfilerInfo3 : public ICorProfilerInfo2 { public: virtual HRESULT STDMETHODCALLTYPE EnumJITedFunctions( /* [out] */ ICorProfilerFunctionEnum **ppEnum) = 0; virtual HRESULT STDMETHODCALLTYPE RequestProfilerDetach( /* [in] */ DWORD dwExpectedCompletionMilliseconds) = 0; virtual HRESULT STDMETHODCALLTYPE SetFunctionIDMapper2( /* [in] */ FunctionIDMapper2 *pFunc, /* [in] */ void *clientData) = 0; virtual HRESULT STDMETHODCALLTYPE GetStringLayout2( /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset) = 0; virtual HRESULT STDMETHODCALLTYPE SetEnterLeaveFunctionHooks3( /* [in] */ FunctionEnter3 *pFuncEnter3, /* [in] */ FunctionLeave3 *pFuncLeave3, /* [in] */ FunctionTailcall3 *pFuncTailcall3) = 0; virtual HRESULT STDMETHODCALLTYPE SetEnterLeaveFunctionHooks3WithInfo( /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo, /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo, /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo) = 0; virtual HRESULT STDMETHODCALLTYPE GetFunctionEnter3Info( /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out][in] */ ULONG *pcbArgumentInfo, /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo) = 0; virtual HRESULT STDMETHODCALLTYPE GetFunctionLeave3Info( /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange) = 0; virtual HRESULT STDMETHODCALLTYPE GetFunctionTailcall3Info( /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo) = 0; virtual HRESULT STDMETHODCALLTYPE EnumModules( /* [out] */ ICorProfilerModuleEnum **ppEnum) = 0; virtual HRESULT STDMETHODCALLTYPE GetRuntimeInformation( /* [out] */ USHORT *pClrInstanceId, /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType, /* [out] */ USHORT *pMajorVersion, /* [out] */ USHORT *pMinorVersion, /* [out] */ USHORT *pBuildNumber, /* [out] */ USHORT *pQFEVersion, /* [in] */ ULONG cchVersionString, /* [out] */ ULONG *pcchVersionString, /* [annotation][out] */ _Out_writes_to_(cchVersionString, *pcchVersionString) WCHAR szVersionString[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE GetThreadStaticAddress2( /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress) = 0; virtual HRESULT STDMETHODCALLTYPE GetAppDomainsContainingModule( /* [in] */ ModuleID moduleId, /* [in] */ ULONG32 cAppDomainIds, /* [out] */ ULONG32 *pcAppDomainIds, /* [length_is][size_is][out] */ AppDomainID appDomainIds[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE GetModuleInfo2( /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId, /* [out] */ DWORD *pdwModuleFlags) = 0; }; #else /* C style interface */ typedef struct ICorProfilerInfo3Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerInfo3 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerInfo3 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerInfo3 * This); HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( ICorProfilerInfo3 * This, /* [in] */ ObjectID objectId, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( ICorProfilerInfo3 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdTypeDef typeDef, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( ICorProfilerInfo3 * This, /* [in] */ FunctionID functionId, /* [out] */ LPCBYTE *pStart, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask )( ICorProfilerInfo3 * This, /* [out] */ DWORD *pdwEvents); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( ICorProfilerInfo3 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( ICorProfilerInfo3 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdToken token, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( ICorProfilerInfo3 * This, /* [in] */ ThreadID threadId, /* [out] */ HANDLE *phThread); HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( ICorProfilerInfo3 * This, /* [in] */ ObjectID objectId, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( ICorProfilerInfo3 * This, /* [in] */ ClassID classId, /* [out] */ CorElementType *pBaseElemType, /* [out] */ ClassID *pBaseClassId, /* [out] */ ULONG *pcRank); HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( ICorProfilerInfo3 * This, /* [in] */ ThreadID threadId, /* [out] */ DWORD *pdwWin32ThreadId); HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( ICorProfilerInfo3 * This, /* [out] */ ThreadID *pThreadId); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( ICorProfilerInfo3 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( ICorProfilerInfo3 * This, /* [in] */ FunctionID functionId, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *SetEventMask )( ICorProfilerInfo3 * This, /* [in] */ DWORD dwEvents); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( ICorProfilerInfo3 * This, /* [in] */ FunctionEnter *pFuncEnter, /* [in] */ FunctionLeave *pFuncLeave, /* [in] */ FunctionTailcall *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( ICorProfilerInfo3 * This, /* [in] */ FunctionIDMapper *pFunc); HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( ICorProfilerInfo3 * This, /* [in] */ FunctionID functionId, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppImport, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( ICorProfilerInfo3 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId); HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( ICorProfilerInfo3 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD dwOpenFlags, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppOut); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( ICorProfilerInfo3 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [out] */ LPCBYTE *ppMethodHeader, /* [out] */ ULONG *pcbMethodSize); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( ICorProfilerInfo3 * This, /* [in] */ ModuleID moduleId, /* [out] */ IMethodMalloc **ppMalloc); HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( ICorProfilerInfo3 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodid, /* [in] */ LPCBYTE pbNewILMethodHeader); HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( ICorProfilerInfo3 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ ProcessID *pProcessId); HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( ICorProfilerInfo3 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AppDomainID *pAppDomainId, /* [out] */ ModuleID *pModuleId); HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( ICorProfilerInfo3 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ForceGC )( ICorProfilerInfo3 * This); HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( ICorProfilerInfo3 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fStartJit, /* [in] */ ULONG cILMapEntries, /* [size_is][in] */ COR_IL_MAP rgILMapEntries[ ]); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( ICorProfilerInfo3 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( ICorProfilerInfo3 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( ICorProfilerInfo3 * This, /* [in] */ ThreadID threadId, /* [out] */ ContextID *pContextId); HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( ICorProfilerInfo3 * This, /* [in] */ BOOL fThisThreadOnly, /* [out] */ DWORD *pdwProfilerContext); HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( ICorProfilerInfo3 * This, /* [in] */ DWORD dwProfilerContext); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( ICorProfilerInfo3 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( ICorProfilerInfo3 * This, /* [in] */ ThreadID thread, /* [in] */ StackSnapshotCallback *callback, /* [in] */ ULONG32 infoFlags, /* [in] */ void *clientData, /* [size_is][in] */ BYTE context[ ], /* [in] */ ULONG32 contextSize); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( ICorProfilerInfo3 * This, /* [in] */ FunctionEnter2 *pFuncEnter, /* [in] */ FunctionLeave2 *pFuncLeave, /* [in] */ FunctionTailcall2 *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( ICorProfilerInfo3 * This, /* [in] */ FunctionID funcId, /* [in] */ COR_PRF_FRAME_INFO frameInfo, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken, /* [in] */ ULONG32 cTypeArgs, /* [out] */ ULONG32 *pcTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( ICorProfilerInfo3 * This, /* [out] */ ULONG *pBufferLengthOffset, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( ICorProfilerInfo3 * This, /* [in] */ ClassID classID, /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[ ], /* [in] */ ULONG cFieldOffset, /* [out] */ ULONG *pcFieldOffset, /* [out] */ ULONG *pulClassSize); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( ICorProfilerInfo3 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken, /* [out] */ ClassID *pParentClassId, /* [in] */ ULONG32 cNumTypeArgs, /* [out] */ ULONG32 *pcNumTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( ICorProfilerInfo3 * This, /* [in] */ FunctionID functionID, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( ICorProfilerInfo3 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdTypeDef typeDef, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ ClassID *pClassID); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( ICorProfilerInfo3 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdMethodDef funcDef, /* [in] */ ClassID classId, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ FunctionID *pFunctionID); HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( ICorProfilerInfo3 * This, /* [in] */ ModuleID moduleID, /* [out] */ ICorProfilerObjectEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( ICorProfilerInfo3 * This, /* [in] */ ObjectID objectId, /* [in] */ ULONG32 cDimensions, /* [size_is][out] */ ULONG32 pDimensionSizes[ ], /* [size_is][out] */ int pDimensionLowerBounds[ ], /* [out] */ BYTE **ppData); HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( ICorProfilerInfo3 * This, /* [in] */ ClassID classId, /* [out] */ ULONG32 *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( ICorProfilerInfo3 * This, /* [in] */ ThreadID threadId, /* [out] */ AppDomainID *pAppDomainId); HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( ICorProfilerInfo3 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( ICorProfilerInfo3 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( ICorProfilerInfo3 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( ICorProfilerInfo3 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ContextID contextId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( ICorProfilerInfo3 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo); HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( ICorProfilerInfo3 * This, /* [in] */ ULONG cObjectRanges, /* [out] */ ULONG *pcObjectRanges, /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[ ]); HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( ICorProfilerInfo3 * This, /* [in] */ ObjectID objectId, /* [out] */ COR_PRF_GC_GENERATION_RANGE *range); HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( ICorProfilerInfo3 * This, /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( ICorProfilerInfo3 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( ICorProfilerInfo3 * This, /* [in] */ DWORD dwExpectedCompletionMilliseconds); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( ICorProfilerInfo3 * This, /* [in] */ FunctionIDMapper2 *pFunc, /* [in] */ void *clientData); HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( ICorProfilerInfo3 * This, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( ICorProfilerInfo3 * This, /* [in] */ FunctionEnter3 *pFuncEnter3, /* [in] */ FunctionLeave3 *pFuncLeave3, /* [in] */ FunctionTailcall3 *pFuncTailcall3); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( ICorProfilerInfo3 * This, /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo, /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo, /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( ICorProfilerInfo3 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out][in] */ ULONG *pcbArgumentInfo, /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( ICorProfilerInfo3 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange); HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( ICorProfilerInfo3 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo); HRESULT ( STDMETHODCALLTYPE *EnumModules )( ICorProfilerInfo3 * This, /* [out] */ ICorProfilerModuleEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( ICorProfilerInfo3 * This, /* [out] */ USHORT *pClrInstanceId, /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType, /* [out] */ USHORT *pMajorVersion, /* [out] */ USHORT *pMinorVersion, /* [out] */ USHORT *pBuildNumber, /* [out] */ USHORT *pQFEVersion, /* [in] */ ULONG cchVersionString, /* [out] */ ULONG *pcchVersionString, /* [annotation][out] */ _Out_writes_to_(cchVersionString, *pcchVersionString) WCHAR szVersionString[ ]); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( ICorProfilerInfo3 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( ICorProfilerInfo3 * This, /* [in] */ ModuleID moduleId, /* [in] */ ULONG32 cAppDomainIds, /* [out] */ ULONG32 *pcAppDomainIds, /* [length_is][size_is][out] */ AppDomainID appDomainIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( ICorProfilerInfo3 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId, /* [out] */ DWORD *pdwModuleFlags); END_INTERFACE } ICorProfilerInfo3Vtbl; interface ICorProfilerInfo3 { CONST_VTBL struct ICorProfilerInfo3Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerInfo3_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerInfo3_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerInfo3_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerInfo3_GetClassFromObject(This,objectId,pClassId) \ ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) #define ICorProfilerInfo3_GetClassFromToken(This,moduleId,typeDef,pClassId) \ ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) #define ICorProfilerInfo3_GetCodeInfo(This,functionId,pStart,pcSize) \ ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) #define ICorProfilerInfo3_GetEventMask(This,pdwEvents) \ ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) #define ICorProfilerInfo3_GetFunctionFromIP(This,ip,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) #define ICorProfilerInfo3_GetFunctionFromToken(This,moduleId,token,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) #define ICorProfilerInfo3_GetHandleFromThread(This,threadId,phThread) \ ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) #define ICorProfilerInfo3_GetObjectSize(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) #define ICorProfilerInfo3_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \ ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) #define ICorProfilerInfo3_GetThreadInfo(This,threadId,pdwWin32ThreadId) \ ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) #define ICorProfilerInfo3_GetCurrentThreadID(This,pThreadId) \ ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) #define ICorProfilerInfo3_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \ ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) #define ICorProfilerInfo3_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) \ ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) #define ICorProfilerInfo3_SetEventMask(This,dwEvents) \ ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) #define ICorProfilerInfo3_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo3_SetFunctionIDMapper(This,pFunc) \ ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) #define ICorProfilerInfo3_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) \ ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) #define ICorProfilerInfo3_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) \ ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) #define ICorProfilerInfo3_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) \ ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) #define ICorProfilerInfo3_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) \ ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) #define ICorProfilerInfo3_GetILFunctionBodyAllocator(This,moduleId,ppMalloc) \ ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) #define ICorProfilerInfo3_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) \ ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) #define ICorProfilerInfo3_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) \ ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) #define ICorProfilerInfo3_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) \ ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) #define ICorProfilerInfo3_SetFunctionReJIT(This,functionId) \ ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) #define ICorProfilerInfo3_ForceGC(This) \ ( (This)->lpVtbl -> ForceGC(This) ) #define ICorProfilerInfo3_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) \ ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) #define ICorProfilerInfo3_GetInprocInspectionInterface(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) #define ICorProfilerInfo3_GetInprocInspectionIThisThread(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) #define ICorProfilerInfo3_GetThreadContext(This,threadId,pContextId) \ ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) #define ICorProfilerInfo3_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) \ ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) #define ICorProfilerInfo3_EndInprocDebugging(This,dwProfilerContext) \ ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) #define ICorProfilerInfo3_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) #define ICorProfilerInfo3_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) \ ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) #define ICorProfilerInfo3_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo3_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) #define ICorProfilerInfo3_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo3_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) \ ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) #define ICorProfilerInfo3_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) #define ICorProfilerInfo3_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo3_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) \ ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) #define ICorProfilerInfo3_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) \ ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) #define ICorProfilerInfo3_EnumModuleFrozenObjects(This,moduleID,ppEnum) \ ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) #define ICorProfilerInfo3_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) \ ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) #define ICorProfilerInfo3_GetBoxClassLayout(This,classId,pBufferOffset) \ ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) #define ICorProfilerInfo3_GetThreadAppDomain(This,threadId,pAppDomainId) \ ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) #define ICorProfilerInfo3_GetRVAStaticAddress(This,classId,fieldToken,ppAddress) \ ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) #define ICorProfilerInfo3_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) \ ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) #define ICorProfilerInfo3_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) #define ICorProfilerInfo3_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \ ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) #define ICorProfilerInfo3_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) \ ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) #define ICorProfilerInfo3_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) \ ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) #define ICorProfilerInfo3_GetObjectGeneration(This,objectId,range) \ ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) #define ICorProfilerInfo3_GetNotifiedExceptionClauseInfo(This,pinfo) \ ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) #define ICorProfilerInfo3_EnumJITedFunctions(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) #define ICorProfilerInfo3_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \ ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) #define ICorProfilerInfo3_SetFunctionIDMapper2(This,pFunc,clientData) \ ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) #define ICorProfilerInfo3_GetStringLayout2(This,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo3_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) #define ICorProfilerInfo3_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) #define ICorProfilerInfo3_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) \ ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) #define ICorProfilerInfo3_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) \ ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) #define ICorProfilerInfo3_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \ ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) #define ICorProfilerInfo3_EnumModules(This,ppEnum) \ ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) #define ICorProfilerInfo3_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) \ ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) #define ICorProfilerInfo3_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) #define ICorProfilerInfo3_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) \ ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) #define ICorProfilerInfo3_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) \ ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerInfo3_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerObjectEnum_INTERFACE_DEFINED__ #define __ICorProfilerObjectEnum_INTERFACE_DEFINED__ /* interface ICorProfilerObjectEnum */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerObjectEnum; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("2C6269BD-2D13-4321-AE12-6686365FD6AF") ICorProfilerObjectEnum : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG celt) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ ICorProfilerObjectEnum **ppEnum) = 0; virtual HRESULT STDMETHODCALLTYPE GetCount( /* [out] */ ULONG *pcelt) = 0; virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG celt, /* [length_is][size_is][out] */ ObjectID objects[ ], /* [out] */ ULONG *pceltFetched) = 0; }; #else /* C style interface */ typedef struct ICorProfilerObjectEnumVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerObjectEnum * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerObjectEnum * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerObjectEnum * This); HRESULT ( STDMETHODCALLTYPE *Skip )( ICorProfilerObjectEnum * This, /* [in] */ ULONG celt); HRESULT ( STDMETHODCALLTYPE *Reset )( ICorProfilerObjectEnum * This); HRESULT ( STDMETHODCALLTYPE *Clone )( ICorProfilerObjectEnum * This, /* [out] */ ICorProfilerObjectEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetCount )( ICorProfilerObjectEnum * This, /* [out] */ ULONG *pcelt); HRESULT ( STDMETHODCALLTYPE *Next )( ICorProfilerObjectEnum * This, /* [in] */ ULONG celt, /* [length_is][size_is][out] */ ObjectID objects[ ], /* [out] */ ULONG *pceltFetched); END_INTERFACE } ICorProfilerObjectEnumVtbl; interface ICorProfilerObjectEnum { CONST_VTBL struct ICorProfilerObjectEnumVtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerObjectEnum_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerObjectEnum_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerObjectEnum_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerObjectEnum_Skip(This,celt) \ ( (This)->lpVtbl -> Skip(This,celt) ) #define ICorProfilerObjectEnum_Reset(This) \ ( (This)->lpVtbl -> Reset(This) ) #define ICorProfilerObjectEnum_Clone(This,ppEnum) \ ( (This)->lpVtbl -> Clone(This,ppEnum) ) #define ICorProfilerObjectEnum_GetCount(This,pcelt) \ ( (This)->lpVtbl -> GetCount(This,pcelt) ) #define ICorProfilerObjectEnum_Next(This,celt,objects,pceltFetched) \ ( (This)->lpVtbl -> Next(This,celt,objects,pceltFetched) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerObjectEnum_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerFunctionEnum_INTERFACE_DEFINED__ #define __ICorProfilerFunctionEnum_INTERFACE_DEFINED__ /* interface ICorProfilerFunctionEnum */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerFunctionEnum; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("FF71301A-B994-429D-A10B-B345A65280EF") ICorProfilerFunctionEnum : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG celt) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ ICorProfilerFunctionEnum **ppEnum) = 0; virtual HRESULT STDMETHODCALLTYPE GetCount( /* [out] */ ULONG *pcelt) = 0; virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG celt, /* [length_is][size_is][out] */ COR_PRF_FUNCTION ids[ ], /* [out] */ ULONG *pceltFetched) = 0; }; #else /* C style interface */ typedef struct ICorProfilerFunctionEnumVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerFunctionEnum * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerFunctionEnum * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerFunctionEnum * This); HRESULT ( STDMETHODCALLTYPE *Skip )( ICorProfilerFunctionEnum * This, /* [in] */ ULONG celt); HRESULT ( STDMETHODCALLTYPE *Reset )( ICorProfilerFunctionEnum * This); HRESULT ( STDMETHODCALLTYPE *Clone )( ICorProfilerFunctionEnum * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetCount )( ICorProfilerFunctionEnum * This, /* [out] */ ULONG *pcelt); HRESULT ( STDMETHODCALLTYPE *Next )( ICorProfilerFunctionEnum * This, /* [in] */ ULONG celt, /* [length_is][size_is][out] */ COR_PRF_FUNCTION ids[ ], /* [out] */ ULONG *pceltFetched); END_INTERFACE } ICorProfilerFunctionEnumVtbl; interface ICorProfilerFunctionEnum { CONST_VTBL struct ICorProfilerFunctionEnumVtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerFunctionEnum_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerFunctionEnum_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerFunctionEnum_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerFunctionEnum_Skip(This,celt) \ ( (This)->lpVtbl -> Skip(This,celt) ) #define ICorProfilerFunctionEnum_Reset(This) \ ( (This)->lpVtbl -> Reset(This) ) #define ICorProfilerFunctionEnum_Clone(This,ppEnum) \ ( (This)->lpVtbl -> Clone(This,ppEnum) ) #define ICorProfilerFunctionEnum_GetCount(This,pcelt) \ ( (This)->lpVtbl -> GetCount(This,pcelt) ) #define ICorProfilerFunctionEnum_Next(This,celt,ids,pceltFetched) \ ( (This)->lpVtbl -> Next(This,celt,ids,pceltFetched) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerFunctionEnum_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerModuleEnum_INTERFACE_DEFINED__ #define __ICorProfilerModuleEnum_INTERFACE_DEFINED__ /* interface ICorProfilerModuleEnum */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerModuleEnum; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("b0266d75-2081-4493-af7f-028ba34db891") ICorProfilerModuleEnum : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG celt) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ ICorProfilerModuleEnum **ppEnum) = 0; virtual HRESULT STDMETHODCALLTYPE GetCount( /* [out] */ ULONG *pcelt) = 0; virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG celt, /* [length_is][size_is][out] */ ModuleID ids[ ], /* [out] */ ULONG *pceltFetched) = 0; }; #else /* C style interface */ typedef struct ICorProfilerModuleEnumVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerModuleEnum * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerModuleEnum * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerModuleEnum * This); HRESULT ( STDMETHODCALLTYPE *Skip )( ICorProfilerModuleEnum * This, /* [in] */ ULONG celt); HRESULT ( STDMETHODCALLTYPE *Reset )( ICorProfilerModuleEnum * This); HRESULT ( STDMETHODCALLTYPE *Clone )( ICorProfilerModuleEnum * This, /* [out] */ ICorProfilerModuleEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetCount )( ICorProfilerModuleEnum * This, /* [out] */ ULONG *pcelt); HRESULT ( STDMETHODCALLTYPE *Next )( ICorProfilerModuleEnum * This, /* [in] */ ULONG celt, /* [length_is][size_is][out] */ ModuleID ids[ ], /* [out] */ ULONG *pceltFetched); END_INTERFACE } ICorProfilerModuleEnumVtbl; interface ICorProfilerModuleEnum { CONST_VTBL struct ICorProfilerModuleEnumVtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerModuleEnum_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerModuleEnum_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerModuleEnum_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerModuleEnum_Skip(This,celt) \ ( (This)->lpVtbl -> Skip(This,celt) ) #define ICorProfilerModuleEnum_Reset(This) \ ( (This)->lpVtbl -> Reset(This) ) #define ICorProfilerModuleEnum_Clone(This,ppEnum) \ ( (This)->lpVtbl -> Clone(This,ppEnum) ) #define ICorProfilerModuleEnum_GetCount(This,pcelt) \ ( (This)->lpVtbl -> GetCount(This,pcelt) ) #define ICorProfilerModuleEnum_Next(This,celt,ids,pceltFetched) \ ( (This)->lpVtbl -> Next(This,celt,ids,pceltFetched) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerModuleEnum_INTERFACE_DEFINED__ */ #ifndef __IMethodMalloc_INTERFACE_DEFINED__ #define __IMethodMalloc_INTERFACE_DEFINED__ /* interface IMethodMalloc */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_IMethodMalloc; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("A0EFB28B-6EE2-4d7b-B983-A75EF7BEEDB8") IMethodMalloc : public IUnknown { public: virtual PVOID STDMETHODCALLTYPE Alloc( /* [in] */ ULONG cb) = 0; }; #else /* C style interface */ typedef struct IMethodMallocVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMethodMalloc * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMethodMalloc * This); ULONG ( STDMETHODCALLTYPE *Release )( IMethodMalloc * This); PVOID ( STDMETHODCALLTYPE *Alloc )( IMethodMalloc * This, /* [in] */ ULONG cb); END_INTERFACE } IMethodMallocVtbl; interface IMethodMalloc { CONST_VTBL struct IMethodMallocVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMethodMalloc_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define IMethodMalloc_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define IMethodMalloc_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define IMethodMalloc_Alloc(This,cb) \ ( (This)->lpVtbl -> Alloc(This,cb) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __IMethodMalloc_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerFunctionControl_INTERFACE_DEFINED__ #define __ICorProfilerFunctionControl_INTERFACE_DEFINED__ /* interface ICorProfilerFunctionControl */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerFunctionControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("F0963021-E1EA-4732-8581-E01B0BD3C0C6") ICorProfilerFunctionControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetCodegenFlags( /* [in] */ DWORD flags) = 0; virtual HRESULT STDMETHODCALLTYPE SetILFunctionBody( /* [in] */ ULONG cbNewILMethodHeader, /* [size_is][in] */ LPCBYTE pbNewILMethodHeader) = 0; virtual HRESULT STDMETHODCALLTYPE SetILInstrumentedCodeMap( /* [in] */ ULONG cILMapEntries, /* [size_is][in] */ COR_IL_MAP rgILMapEntries[ ]) = 0; }; #else /* C style interface */ typedef struct ICorProfilerFunctionControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerFunctionControl * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerFunctionControl * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerFunctionControl * This); HRESULT ( STDMETHODCALLTYPE *SetCodegenFlags )( ICorProfilerFunctionControl * This, /* [in] */ DWORD flags); HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( ICorProfilerFunctionControl * This, /* [in] */ ULONG cbNewILMethodHeader, /* [size_is][in] */ LPCBYTE pbNewILMethodHeader); HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( ICorProfilerFunctionControl * This, /* [in] */ ULONG cILMapEntries, /* [size_is][in] */ COR_IL_MAP rgILMapEntries[ ]); END_INTERFACE } ICorProfilerFunctionControlVtbl; interface ICorProfilerFunctionControl { CONST_VTBL struct ICorProfilerFunctionControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerFunctionControl_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerFunctionControl_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerFunctionControl_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerFunctionControl_SetCodegenFlags(This,flags) \ ( (This)->lpVtbl -> SetCodegenFlags(This,flags) ) #define ICorProfilerFunctionControl_SetILFunctionBody(This,cbNewILMethodHeader,pbNewILMethodHeader) \ ( (This)->lpVtbl -> SetILFunctionBody(This,cbNewILMethodHeader,pbNewILMethodHeader) ) #define ICorProfilerFunctionControl_SetILInstrumentedCodeMap(This,cILMapEntries,rgILMapEntries) \ ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,cILMapEntries,rgILMapEntries) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerFunctionControl_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerInfo4_INTERFACE_DEFINED__ #define __ICorProfilerInfo4_INTERFACE_DEFINED__ /* interface ICorProfilerInfo4 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerInfo4; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("0d8fdcaa-6257-47bf-b1bf-94dac88466ee") ICorProfilerInfo4 : public ICorProfilerInfo3 { public: virtual HRESULT STDMETHODCALLTYPE EnumThreads( /* [out] */ ICorProfilerThreadEnum **ppEnum) = 0; virtual HRESULT STDMETHODCALLTYPE InitializeCurrentThread( void) = 0; virtual HRESULT STDMETHODCALLTYPE RequestReJIT( /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE RequestRevert( /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ], /* [size_is][out] */ HRESULT status[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE GetCodeInfo3( /* [in] */ FunctionID functionID, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE GetFunctionFromIP2( /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId, /* [out] */ ReJITID *pReJitId) = 0; virtual HRESULT STDMETHODCALLTYPE GetReJITIDs( /* [in] */ FunctionID functionId, /* [in] */ ULONG cReJitIds, /* [out] */ ULONG *pcReJitIds, /* [length_is][size_is][out] */ ReJITID reJitIds[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE GetILToNativeMapping2( /* [in] */ FunctionID functionId, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE EnumJITedFunctions2( /* [out] */ ICorProfilerFunctionEnum **ppEnum) = 0; virtual HRESULT STDMETHODCALLTYPE GetObjectSize2( /* [in] */ ObjectID objectId, /* [out] */ SIZE_T *pcSize) = 0; }; #else /* C style interface */ typedef struct ICorProfilerInfo4Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerInfo4 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerInfo4 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerInfo4 * This); HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( ICorProfilerInfo4 * This, /* [in] */ ObjectID objectId, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( ICorProfilerInfo4 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdTypeDef typeDef, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( ICorProfilerInfo4 * This, /* [in] */ FunctionID functionId, /* [out] */ LPCBYTE *pStart, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask )( ICorProfilerInfo4 * This, /* [out] */ DWORD *pdwEvents); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( ICorProfilerInfo4 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( ICorProfilerInfo4 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdToken token, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( ICorProfilerInfo4 * This, /* [in] */ ThreadID threadId, /* [out] */ HANDLE *phThread); HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( ICorProfilerInfo4 * This, /* [in] */ ObjectID objectId, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( ICorProfilerInfo4 * This, /* [in] */ ClassID classId, /* [out] */ CorElementType *pBaseElemType, /* [out] */ ClassID *pBaseClassId, /* [out] */ ULONG *pcRank); HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( ICorProfilerInfo4 * This, /* [in] */ ThreadID threadId, /* [out] */ DWORD *pdwWin32ThreadId); HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( ICorProfilerInfo4 * This, /* [out] */ ThreadID *pThreadId); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( ICorProfilerInfo4 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( ICorProfilerInfo4 * This, /* [in] */ FunctionID functionId, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *SetEventMask )( ICorProfilerInfo4 * This, /* [in] */ DWORD dwEvents); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( ICorProfilerInfo4 * This, /* [in] */ FunctionEnter *pFuncEnter, /* [in] */ FunctionLeave *pFuncLeave, /* [in] */ FunctionTailcall *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( ICorProfilerInfo4 * This, /* [in] */ FunctionIDMapper *pFunc); HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( ICorProfilerInfo4 * This, /* [in] */ FunctionID functionId, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppImport, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( ICorProfilerInfo4 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId); HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( ICorProfilerInfo4 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD dwOpenFlags, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppOut); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( ICorProfilerInfo4 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [out] */ LPCBYTE *ppMethodHeader, /* [out] */ ULONG *pcbMethodSize); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( ICorProfilerInfo4 * This, /* [in] */ ModuleID moduleId, /* [out] */ IMethodMalloc **ppMalloc); HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( ICorProfilerInfo4 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodid, /* [in] */ LPCBYTE pbNewILMethodHeader); HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( ICorProfilerInfo4 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ ProcessID *pProcessId); HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( ICorProfilerInfo4 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AppDomainID *pAppDomainId, /* [out] */ ModuleID *pModuleId); HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( ICorProfilerInfo4 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ForceGC )( ICorProfilerInfo4 * This); HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( ICorProfilerInfo4 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fStartJit, /* [in] */ ULONG cILMapEntries, /* [size_is][in] */ COR_IL_MAP rgILMapEntries[ ]); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( ICorProfilerInfo4 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( ICorProfilerInfo4 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( ICorProfilerInfo4 * This, /* [in] */ ThreadID threadId, /* [out] */ ContextID *pContextId); HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( ICorProfilerInfo4 * This, /* [in] */ BOOL fThisThreadOnly, /* [out] */ DWORD *pdwProfilerContext); HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( ICorProfilerInfo4 * This, /* [in] */ DWORD dwProfilerContext); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( ICorProfilerInfo4 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( ICorProfilerInfo4 * This, /* [in] */ ThreadID thread, /* [in] */ StackSnapshotCallback *callback, /* [in] */ ULONG32 infoFlags, /* [in] */ void *clientData, /* [size_is][in] */ BYTE context[ ], /* [in] */ ULONG32 contextSize); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( ICorProfilerInfo4 * This, /* [in] */ FunctionEnter2 *pFuncEnter, /* [in] */ FunctionLeave2 *pFuncLeave, /* [in] */ FunctionTailcall2 *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( ICorProfilerInfo4 * This, /* [in] */ FunctionID funcId, /* [in] */ COR_PRF_FRAME_INFO frameInfo, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken, /* [in] */ ULONG32 cTypeArgs, /* [out] */ ULONG32 *pcTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( ICorProfilerInfo4 * This, /* [out] */ ULONG *pBufferLengthOffset, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( ICorProfilerInfo4 * This, /* [in] */ ClassID classID, /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[ ], /* [in] */ ULONG cFieldOffset, /* [out] */ ULONG *pcFieldOffset, /* [out] */ ULONG *pulClassSize); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( ICorProfilerInfo4 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken, /* [out] */ ClassID *pParentClassId, /* [in] */ ULONG32 cNumTypeArgs, /* [out] */ ULONG32 *pcNumTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( ICorProfilerInfo4 * This, /* [in] */ FunctionID functionID, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( ICorProfilerInfo4 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdTypeDef typeDef, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ ClassID *pClassID); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( ICorProfilerInfo4 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdMethodDef funcDef, /* [in] */ ClassID classId, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ FunctionID *pFunctionID); HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( ICorProfilerInfo4 * This, /* [in] */ ModuleID moduleID, /* [out] */ ICorProfilerObjectEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( ICorProfilerInfo4 * This, /* [in] */ ObjectID objectId, /* [in] */ ULONG32 cDimensions, /* [size_is][out] */ ULONG32 pDimensionSizes[ ], /* [size_is][out] */ int pDimensionLowerBounds[ ], /* [out] */ BYTE **ppData); HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( ICorProfilerInfo4 * This, /* [in] */ ClassID classId, /* [out] */ ULONG32 *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( ICorProfilerInfo4 * This, /* [in] */ ThreadID threadId, /* [out] */ AppDomainID *pAppDomainId); HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( ICorProfilerInfo4 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( ICorProfilerInfo4 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( ICorProfilerInfo4 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( ICorProfilerInfo4 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ContextID contextId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( ICorProfilerInfo4 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo); HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( ICorProfilerInfo4 * This, /* [in] */ ULONG cObjectRanges, /* [out] */ ULONG *pcObjectRanges, /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[ ]); HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( ICorProfilerInfo4 * This, /* [in] */ ObjectID objectId, /* [out] */ COR_PRF_GC_GENERATION_RANGE *range); HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( ICorProfilerInfo4 * This, /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( ICorProfilerInfo4 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( ICorProfilerInfo4 * This, /* [in] */ DWORD dwExpectedCompletionMilliseconds); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( ICorProfilerInfo4 * This, /* [in] */ FunctionIDMapper2 *pFunc, /* [in] */ void *clientData); HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( ICorProfilerInfo4 * This, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( ICorProfilerInfo4 * This, /* [in] */ FunctionEnter3 *pFuncEnter3, /* [in] */ FunctionLeave3 *pFuncLeave3, /* [in] */ FunctionTailcall3 *pFuncTailcall3); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( ICorProfilerInfo4 * This, /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo, /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo, /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( ICorProfilerInfo4 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out][in] */ ULONG *pcbArgumentInfo, /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( ICorProfilerInfo4 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange); HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( ICorProfilerInfo4 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo); HRESULT ( STDMETHODCALLTYPE *EnumModules )( ICorProfilerInfo4 * This, /* [out] */ ICorProfilerModuleEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( ICorProfilerInfo4 * This, /* [out] */ USHORT *pClrInstanceId, /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType, /* [out] */ USHORT *pMajorVersion, /* [out] */ USHORT *pMinorVersion, /* [out] */ USHORT *pBuildNumber, /* [out] */ USHORT *pQFEVersion, /* [in] */ ULONG cchVersionString, /* [out] */ ULONG *pcchVersionString, /* [annotation][out] */ _Out_writes_to_(cchVersionString, *pcchVersionString) WCHAR szVersionString[ ]); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( ICorProfilerInfo4 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( ICorProfilerInfo4 * This, /* [in] */ ModuleID moduleId, /* [in] */ ULONG32 cAppDomainIds, /* [out] */ ULONG32 *pcAppDomainIds, /* [length_is][size_is][out] */ AppDomainID appDomainIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( ICorProfilerInfo4 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId, /* [out] */ DWORD *pdwModuleFlags); HRESULT ( STDMETHODCALLTYPE *EnumThreads )( ICorProfilerInfo4 * This, /* [out] */ ICorProfilerThreadEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *InitializeCurrentThread )( ICorProfilerInfo4 * This); HRESULT ( STDMETHODCALLTYPE *RequestReJIT )( ICorProfilerInfo4 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ]); HRESULT ( STDMETHODCALLTYPE *RequestRevert )( ICorProfilerInfo4 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ], /* [size_is][out] */ HRESULT status[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo3 )( ICorProfilerInfo4 * This, /* [in] */ FunctionID functionID, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP2 )( ICorProfilerInfo4 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId, /* [out] */ ReJITID *pReJitId); HRESULT ( STDMETHODCALLTYPE *GetReJITIDs )( ICorProfilerInfo4 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG cReJitIds, /* [out] */ ULONG *pcReJitIds, /* [length_is][size_is][out] */ ReJITID reJitIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping2 )( ICorProfilerInfo4 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions2 )( ICorProfilerInfo4 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetObjectSize2 )( ICorProfilerInfo4 * This, /* [in] */ ObjectID objectId, /* [out] */ SIZE_T *pcSize); END_INTERFACE } ICorProfilerInfo4Vtbl; interface ICorProfilerInfo4 { CONST_VTBL struct ICorProfilerInfo4Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerInfo4_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerInfo4_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerInfo4_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerInfo4_GetClassFromObject(This,objectId,pClassId) \ ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) #define ICorProfilerInfo4_GetClassFromToken(This,moduleId,typeDef,pClassId) \ ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) #define ICorProfilerInfo4_GetCodeInfo(This,functionId,pStart,pcSize) \ ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) #define ICorProfilerInfo4_GetEventMask(This,pdwEvents) \ ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) #define ICorProfilerInfo4_GetFunctionFromIP(This,ip,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) #define ICorProfilerInfo4_GetFunctionFromToken(This,moduleId,token,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) #define ICorProfilerInfo4_GetHandleFromThread(This,threadId,phThread) \ ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) #define ICorProfilerInfo4_GetObjectSize(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) #define ICorProfilerInfo4_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \ ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) #define ICorProfilerInfo4_GetThreadInfo(This,threadId,pdwWin32ThreadId) \ ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) #define ICorProfilerInfo4_GetCurrentThreadID(This,pThreadId) \ ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) #define ICorProfilerInfo4_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \ ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) #define ICorProfilerInfo4_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) \ ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) #define ICorProfilerInfo4_SetEventMask(This,dwEvents) \ ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) #define ICorProfilerInfo4_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo4_SetFunctionIDMapper(This,pFunc) \ ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) #define ICorProfilerInfo4_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) \ ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) #define ICorProfilerInfo4_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) \ ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) #define ICorProfilerInfo4_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) \ ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) #define ICorProfilerInfo4_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) \ ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) #define ICorProfilerInfo4_GetILFunctionBodyAllocator(This,moduleId,ppMalloc) \ ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) #define ICorProfilerInfo4_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) \ ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) #define ICorProfilerInfo4_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) \ ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) #define ICorProfilerInfo4_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) \ ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) #define ICorProfilerInfo4_SetFunctionReJIT(This,functionId) \ ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) #define ICorProfilerInfo4_ForceGC(This) \ ( (This)->lpVtbl -> ForceGC(This) ) #define ICorProfilerInfo4_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) \ ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) #define ICorProfilerInfo4_GetInprocInspectionInterface(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) #define ICorProfilerInfo4_GetInprocInspectionIThisThread(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) #define ICorProfilerInfo4_GetThreadContext(This,threadId,pContextId) \ ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) #define ICorProfilerInfo4_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) \ ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) #define ICorProfilerInfo4_EndInprocDebugging(This,dwProfilerContext) \ ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) #define ICorProfilerInfo4_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) #define ICorProfilerInfo4_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) \ ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) #define ICorProfilerInfo4_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo4_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) #define ICorProfilerInfo4_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo4_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) \ ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) #define ICorProfilerInfo4_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) #define ICorProfilerInfo4_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo4_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) \ ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) #define ICorProfilerInfo4_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) \ ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) #define ICorProfilerInfo4_EnumModuleFrozenObjects(This,moduleID,ppEnum) \ ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) #define ICorProfilerInfo4_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) \ ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) #define ICorProfilerInfo4_GetBoxClassLayout(This,classId,pBufferOffset) \ ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) #define ICorProfilerInfo4_GetThreadAppDomain(This,threadId,pAppDomainId) \ ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) #define ICorProfilerInfo4_GetRVAStaticAddress(This,classId,fieldToken,ppAddress) \ ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) #define ICorProfilerInfo4_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) \ ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) #define ICorProfilerInfo4_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) #define ICorProfilerInfo4_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \ ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) #define ICorProfilerInfo4_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) \ ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) #define ICorProfilerInfo4_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) \ ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) #define ICorProfilerInfo4_GetObjectGeneration(This,objectId,range) \ ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) #define ICorProfilerInfo4_GetNotifiedExceptionClauseInfo(This,pinfo) \ ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) #define ICorProfilerInfo4_EnumJITedFunctions(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) #define ICorProfilerInfo4_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \ ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) #define ICorProfilerInfo4_SetFunctionIDMapper2(This,pFunc,clientData) \ ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) #define ICorProfilerInfo4_GetStringLayout2(This,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo4_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) #define ICorProfilerInfo4_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) #define ICorProfilerInfo4_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) \ ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) #define ICorProfilerInfo4_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) \ ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) #define ICorProfilerInfo4_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \ ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) #define ICorProfilerInfo4_EnumModules(This,ppEnum) \ ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) #define ICorProfilerInfo4_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) \ ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) #define ICorProfilerInfo4_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) #define ICorProfilerInfo4_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) \ ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) #define ICorProfilerInfo4_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) \ ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) #define ICorProfilerInfo4_EnumThreads(This,ppEnum) \ ( (This)->lpVtbl -> EnumThreads(This,ppEnum) ) #define ICorProfilerInfo4_InitializeCurrentThread(This) \ ( (This)->lpVtbl -> InitializeCurrentThread(This) ) #define ICorProfilerInfo4_RequestReJIT(This,cFunctions,moduleIds,methodIds) \ ( (This)->lpVtbl -> RequestReJIT(This,cFunctions,moduleIds,methodIds) ) #define ICorProfilerInfo4_RequestRevert(This,cFunctions,moduleIds,methodIds,status) \ ( (This)->lpVtbl -> RequestRevert(This,cFunctions,moduleIds,methodIds,status) ) #define ICorProfilerInfo4_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo4_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) \ ( (This)->lpVtbl -> GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) ) #define ICorProfilerInfo4_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) \ ( (This)->lpVtbl -> GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) ) #define ICorProfilerInfo4_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) ) #define ICorProfilerInfo4_EnumJITedFunctions2(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions2(This,ppEnum) ) #define ICorProfilerInfo4_GetObjectSize2(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize2(This,objectId,pcSize) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerInfo4_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerInfo5_INTERFACE_DEFINED__ #define __ICorProfilerInfo5_INTERFACE_DEFINED__ /* interface ICorProfilerInfo5 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerInfo5; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("07602928-CE38-4B83-81E7-74ADAF781214") ICorProfilerInfo5 : public ICorProfilerInfo4 { public: virtual HRESULT STDMETHODCALLTYPE GetEventMask2( /* [out] */ DWORD *pdwEventsLow, /* [out] */ DWORD *pdwEventsHigh) = 0; virtual HRESULT STDMETHODCALLTYPE SetEventMask2( /* [in] */ DWORD dwEventsLow, /* [in] */ DWORD dwEventsHigh) = 0; }; #else /* C style interface */ typedef struct ICorProfilerInfo5Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerInfo5 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerInfo5 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerInfo5 * This); HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( ICorProfilerInfo5 * This, /* [in] */ ObjectID objectId, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( ICorProfilerInfo5 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdTypeDef typeDef, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( ICorProfilerInfo5 * This, /* [in] */ FunctionID functionId, /* [out] */ LPCBYTE *pStart, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask )( ICorProfilerInfo5 * This, /* [out] */ DWORD *pdwEvents); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( ICorProfilerInfo5 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( ICorProfilerInfo5 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdToken token, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( ICorProfilerInfo5 * This, /* [in] */ ThreadID threadId, /* [out] */ HANDLE *phThread); HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( ICorProfilerInfo5 * This, /* [in] */ ObjectID objectId, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( ICorProfilerInfo5 * This, /* [in] */ ClassID classId, /* [out] */ CorElementType *pBaseElemType, /* [out] */ ClassID *pBaseClassId, /* [out] */ ULONG *pcRank); HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( ICorProfilerInfo5 * This, /* [in] */ ThreadID threadId, /* [out] */ DWORD *pdwWin32ThreadId); HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( ICorProfilerInfo5 * This, /* [out] */ ThreadID *pThreadId); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( ICorProfilerInfo5 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( ICorProfilerInfo5 * This, /* [in] */ FunctionID functionId, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *SetEventMask )( ICorProfilerInfo5 * This, /* [in] */ DWORD dwEvents); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( ICorProfilerInfo5 * This, /* [in] */ FunctionEnter *pFuncEnter, /* [in] */ FunctionLeave *pFuncLeave, /* [in] */ FunctionTailcall *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( ICorProfilerInfo5 * This, /* [in] */ FunctionIDMapper *pFunc); HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( ICorProfilerInfo5 * This, /* [in] */ FunctionID functionId, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppImport, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( ICorProfilerInfo5 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId); HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( ICorProfilerInfo5 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD dwOpenFlags, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppOut); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( ICorProfilerInfo5 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [out] */ LPCBYTE *ppMethodHeader, /* [out] */ ULONG *pcbMethodSize); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( ICorProfilerInfo5 * This, /* [in] */ ModuleID moduleId, /* [out] */ IMethodMalloc **ppMalloc); HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( ICorProfilerInfo5 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodid, /* [in] */ LPCBYTE pbNewILMethodHeader); HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( ICorProfilerInfo5 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ ProcessID *pProcessId); HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( ICorProfilerInfo5 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AppDomainID *pAppDomainId, /* [out] */ ModuleID *pModuleId); HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( ICorProfilerInfo5 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ForceGC )( ICorProfilerInfo5 * This); HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( ICorProfilerInfo5 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fStartJit, /* [in] */ ULONG cILMapEntries, /* [size_is][in] */ COR_IL_MAP rgILMapEntries[ ]); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( ICorProfilerInfo5 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( ICorProfilerInfo5 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( ICorProfilerInfo5 * This, /* [in] */ ThreadID threadId, /* [out] */ ContextID *pContextId); HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( ICorProfilerInfo5 * This, /* [in] */ BOOL fThisThreadOnly, /* [out] */ DWORD *pdwProfilerContext); HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( ICorProfilerInfo5 * This, /* [in] */ DWORD dwProfilerContext); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( ICorProfilerInfo5 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( ICorProfilerInfo5 * This, /* [in] */ ThreadID thread, /* [in] */ StackSnapshotCallback *callback, /* [in] */ ULONG32 infoFlags, /* [in] */ void *clientData, /* [size_is][in] */ BYTE context[ ], /* [in] */ ULONG32 contextSize); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( ICorProfilerInfo5 * This, /* [in] */ FunctionEnter2 *pFuncEnter, /* [in] */ FunctionLeave2 *pFuncLeave, /* [in] */ FunctionTailcall2 *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( ICorProfilerInfo5 * This, /* [in] */ FunctionID funcId, /* [in] */ COR_PRF_FRAME_INFO frameInfo, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken, /* [in] */ ULONG32 cTypeArgs, /* [out] */ ULONG32 *pcTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( ICorProfilerInfo5 * This, /* [out] */ ULONG *pBufferLengthOffset, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( ICorProfilerInfo5 * This, /* [in] */ ClassID classID, /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[ ], /* [in] */ ULONG cFieldOffset, /* [out] */ ULONG *pcFieldOffset, /* [out] */ ULONG *pulClassSize); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( ICorProfilerInfo5 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken, /* [out] */ ClassID *pParentClassId, /* [in] */ ULONG32 cNumTypeArgs, /* [out] */ ULONG32 *pcNumTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( ICorProfilerInfo5 * This, /* [in] */ FunctionID functionID, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( ICorProfilerInfo5 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdTypeDef typeDef, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ ClassID *pClassID); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( ICorProfilerInfo5 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdMethodDef funcDef, /* [in] */ ClassID classId, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ FunctionID *pFunctionID); HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( ICorProfilerInfo5 * This, /* [in] */ ModuleID moduleID, /* [out] */ ICorProfilerObjectEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( ICorProfilerInfo5 * This, /* [in] */ ObjectID objectId, /* [in] */ ULONG32 cDimensions, /* [size_is][out] */ ULONG32 pDimensionSizes[ ], /* [size_is][out] */ int pDimensionLowerBounds[ ], /* [out] */ BYTE **ppData); HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( ICorProfilerInfo5 * This, /* [in] */ ClassID classId, /* [out] */ ULONG32 *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( ICorProfilerInfo5 * This, /* [in] */ ThreadID threadId, /* [out] */ AppDomainID *pAppDomainId); HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( ICorProfilerInfo5 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( ICorProfilerInfo5 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( ICorProfilerInfo5 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( ICorProfilerInfo5 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ContextID contextId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( ICorProfilerInfo5 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo); HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( ICorProfilerInfo5 * This, /* [in] */ ULONG cObjectRanges, /* [out] */ ULONG *pcObjectRanges, /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[ ]); HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( ICorProfilerInfo5 * This, /* [in] */ ObjectID objectId, /* [out] */ COR_PRF_GC_GENERATION_RANGE *range); HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( ICorProfilerInfo5 * This, /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( ICorProfilerInfo5 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( ICorProfilerInfo5 * This, /* [in] */ DWORD dwExpectedCompletionMilliseconds); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( ICorProfilerInfo5 * This, /* [in] */ FunctionIDMapper2 *pFunc, /* [in] */ void *clientData); HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( ICorProfilerInfo5 * This, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( ICorProfilerInfo5 * This, /* [in] */ FunctionEnter3 *pFuncEnter3, /* [in] */ FunctionLeave3 *pFuncLeave3, /* [in] */ FunctionTailcall3 *pFuncTailcall3); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( ICorProfilerInfo5 * This, /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo, /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo, /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( ICorProfilerInfo5 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out][in] */ ULONG *pcbArgumentInfo, /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( ICorProfilerInfo5 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange); HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( ICorProfilerInfo5 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo); HRESULT ( STDMETHODCALLTYPE *EnumModules )( ICorProfilerInfo5 * This, /* [out] */ ICorProfilerModuleEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( ICorProfilerInfo5 * This, /* [out] */ USHORT *pClrInstanceId, /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType, /* [out] */ USHORT *pMajorVersion, /* [out] */ USHORT *pMinorVersion, /* [out] */ USHORT *pBuildNumber, /* [out] */ USHORT *pQFEVersion, /* [in] */ ULONG cchVersionString, /* [out] */ ULONG *pcchVersionString, /* [annotation][out] */ _Out_writes_to_(cchVersionString, *pcchVersionString) WCHAR szVersionString[ ]); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( ICorProfilerInfo5 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( ICorProfilerInfo5 * This, /* [in] */ ModuleID moduleId, /* [in] */ ULONG32 cAppDomainIds, /* [out] */ ULONG32 *pcAppDomainIds, /* [length_is][size_is][out] */ AppDomainID appDomainIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( ICorProfilerInfo5 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId, /* [out] */ DWORD *pdwModuleFlags); HRESULT ( STDMETHODCALLTYPE *EnumThreads )( ICorProfilerInfo5 * This, /* [out] */ ICorProfilerThreadEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *InitializeCurrentThread )( ICorProfilerInfo5 * This); HRESULT ( STDMETHODCALLTYPE *RequestReJIT )( ICorProfilerInfo5 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ]); HRESULT ( STDMETHODCALLTYPE *RequestRevert )( ICorProfilerInfo5 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ], /* [size_is][out] */ HRESULT status[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo3 )( ICorProfilerInfo5 * This, /* [in] */ FunctionID functionID, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP2 )( ICorProfilerInfo5 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId, /* [out] */ ReJITID *pReJitId); HRESULT ( STDMETHODCALLTYPE *GetReJITIDs )( ICorProfilerInfo5 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG cReJitIds, /* [out] */ ULONG *pcReJitIds, /* [length_is][size_is][out] */ ReJITID reJitIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping2 )( ICorProfilerInfo5 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions2 )( ICorProfilerInfo5 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetObjectSize2 )( ICorProfilerInfo5 * This, /* [in] */ ObjectID objectId, /* [out] */ SIZE_T *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask2 )( ICorProfilerInfo5 * This, /* [out] */ DWORD *pdwEventsLow, /* [out] */ DWORD *pdwEventsHigh); HRESULT ( STDMETHODCALLTYPE *SetEventMask2 )( ICorProfilerInfo5 * This, /* [in] */ DWORD dwEventsLow, /* [in] */ DWORD dwEventsHigh); END_INTERFACE } ICorProfilerInfo5Vtbl; interface ICorProfilerInfo5 { CONST_VTBL struct ICorProfilerInfo5Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerInfo5_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerInfo5_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerInfo5_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerInfo5_GetClassFromObject(This,objectId,pClassId) \ ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) #define ICorProfilerInfo5_GetClassFromToken(This,moduleId,typeDef,pClassId) \ ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) #define ICorProfilerInfo5_GetCodeInfo(This,functionId,pStart,pcSize) \ ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) #define ICorProfilerInfo5_GetEventMask(This,pdwEvents) \ ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) #define ICorProfilerInfo5_GetFunctionFromIP(This,ip,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) #define ICorProfilerInfo5_GetFunctionFromToken(This,moduleId,token,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) #define ICorProfilerInfo5_GetHandleFromThread(This,threadId,phThread) \ ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) #define ICorProfilerInfo5_GetObjectSize(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) #define ICorProfilerInfo5_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \ ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) #define ICorProfilerInfo5_GetThreadInfo(This,threadId,pdwWin32ThreadId) \ ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) #define ICorProfilerInfo5_GetCurrentThreadID(This,pThreadId) \ ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) #define ICorProfilerInfo5_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \ ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) #define ICorProfilerInfo5_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) \ ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) #define ICorProfilerInfo5_SetEventMask(This,dwEvents) \ ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) #define ICorProfilerInfo5_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo5_SetFunctionIDMapper(This,pFunc) \ ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) #define ICorProfilerInfo5_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) \ ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) #define ICorProfilerInfo5_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) \ ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) #define ICorProfilerInfo5_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) \ ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) #define ICorProfilerInfo5_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) \ ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) #define ICorProfilerInfo5_GetILFunctionBodyAllocator(This,moduleId,ppMalloc) \ ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) #define ICorProfilerInfo5_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) \ ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) #define ICorProfilerInfo5_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) \ ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) #define ICorProfilerInfo5_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) \ ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) #define ICorProfilerInfo5_SetFunctionReJIT(This,functionId) \ ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) #define ICorProfilerInfo5_ForceGC(This) \ ( (This)->lpVtbl -> ForceGC(This) ) #define ICorProfilerInfo5_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) \ ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) #define ICorProfilerInfo5_GetInprocInspectionInterface(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) #define ICorProfilerInfo5_GetInprocInspectionIThisThread(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) #define ICorProfilerInfo5_GetThreadContext(This,threadId,pContextId) \ ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) #define ICorProfilerInfo5_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) \ ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) #define ICorProfilerInfo5_EndInprocDebugging(This,dwProfilerContext) \ ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) #define ICorProfilerInfo5_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) #define ICorProfilerInfo5_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) \ ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) #define ICorProfilerInfo5_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo5_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) #define ICorProfilerInfo5_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo5_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) \ ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) #define ICorProfilerInfo5_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) #define ICorProfilerInfo5_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo5_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) \ ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) #define ICorProfilerInfo5_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) \ ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) #define ICorProfilerInfo5_EnumModuleFrozenObjects(This,moduleID,ppEnum) \ ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) #define ICorProfilerInfo5_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) \ ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) #define ICorProfilerInfo5_GetBoxClassLayout(This,classId,pBufferOffset) \ ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) #define ICorProfilerInfo5_GetThreadAppDomain(This,threadId,pAppDomainId) \ ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) #define ICorProfilerInfo5_GetRVAStaticAddress(This,classId,fieldToken,ppAddress) \ ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) #define ICorProfilerInfo5_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) \ ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) #define ICorProfilerInfo5_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) #define ICorProfilerInfo5_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \ ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) #define ICorProfilerInfo5_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) \ ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) #define ICorProfilerInfo5_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) \ ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) #define ICorProfilerInfo5_GetObjectGeneration(This,objectId,range) \ ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) #define ICorProfilerInfo5_GetNotifiedExceptionClauseInfo(This,pinfo) \ ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) #define ICorProfilerInfo5_EnumJITedFunctions(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) #define ICorProfilerInfo5_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \ ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) #define ICorProfilerInfo5_SetFunctionIDMapper2(This,pFunc,clientData) \ ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) #define ICorProfilerInfo5_GetStringLayout2(This,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo5_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) #define ICorProfilerInfo5_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) #define ICorProfilerInfo5_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) \ ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) #define ICorProfilerInfo5_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) \ ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) #define ICorProfilerInfo5_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \ ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) #define ICorProfilerInfo5_EnumModules(This,ppEnum) \ ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) #define ICorProfilerInfo5_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) \ ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) #define ICorProfilerInfo5_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) #define ICorProfilerInfo5_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) \ ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) #define ICorProfilerInfo5_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) \ ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) #define ICorProfilerInfo5_EnumThreads(This,ppEnum) \ ( (This)->lpVtbl -> EnumThreads(This,ppEnum) ) #define ICorProfilerInfo5_InitializeCurrentThread(This) \ ( (This)->lpVtbl -> InitializeCurrentThread(This) ) #define ICorProfilerInfo5_RequestReJIT(This,cFunctions,moduleIds,methodIds) \ ( (This)->lpVtbl -> RequestReJIT(This,cFunctions,moduleIds,methodIds) ) #define ICorProfilerInfo5_RequestRevert(This,cFunctions,moduleIds,methodIds,status) \ ( (This)->lpVtbl -> RequestRevert(This,cFunctions,moduleIds,methodIds,status) ) #define ICorProfilerInfo5_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo5_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) \ ( (This)->lpVtbl -> GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) ) #define ICorProfilerInfo5_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) \ ( (This)->lpVtbl -> GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) ) #define ICorProfilerInfo5_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) ) #define ICorProfilerInfo5_EnumJITedFunctions2(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions2(This,ppEnum) ) #define ICorProfilerInfo5_GetObjectSize2(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize2(This,objectId,pcSize) ) #define ICorProfilerInfo5_GetEventMask2(This,pdwEventsLow,pdwEventsHigh) \ ( (This)->lpVtbl -> GetEventMask2(This,pdwEventsLow,pdwEventsHigh) ) #define ICorProfilerInfo5_SetEventMask2(This,dwEventsLow,dwEventsHigh) \ ( (This)->lpVtbl -> SetEventMask2(This,dwEventsLow,dwEventsHigh) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerInfo5_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerInfo6_INTERFACE_DEFINED__ #define __ICorProfilerInfo6_INTERFACE_DEFINED__ /* interface ICorProfilerInfo6 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerInfo6; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("F30A070D-BFFB-46A7-B1D8-8781EF7B698A") ICorProfilerInfo6 : public ICorProfilerInfo5 { public: virtual HRESULT STDMETHODCALLTYPE EnumNgenModuleMethodsInliningThisMethod( /* [in] */ ModuleID inlinersModuleId, /* [in] */ ModuleID inlineeModuleId, /* [in] */ mdMethodDef inlineeMethodId, /* [out] */ BOOL *incompleteData, /* [out] */ ICorProfilerMethodEnum **ppEnum) = 0; }; #else /* C style interface */ typedef struct ICorProfilerInfo6Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerInfo6 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerInfo6 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerInfo6 * This); HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( ICorProfilerInfo6 * This, /* [in] */ ObjectID objectId, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( ICorProfilerInfo6 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdTypeDef typeDef, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( ICorProfilerInfo6 * This, /* [in] */ FunctionID functionId, /* [out] */ LPCBYTE *pStart, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask )( ICorProfilerInfo6 * This, /* [out] */ DWORD *pdwEvents); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( ICorProfilerInfo6 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( ICorProfilerInfo6 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdToken token, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( ICorProfilerInfo6 * This, /* [in] */ ThreadID threadId, /* [out] */ HANDLE *phThread); HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( ICorProfilerInfo6 * This, /* [in] */ ObjectID objectId, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( ICorProfilerInfo6 * This, /* [in] */ ClassID classId, /* [out] */ CorElementType *pBaseElemType, /* [out] */ ClassID *pBaseClassId, /* [out] */ ULONG *pcRank); HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( ICorProfilerInfo6 * This, /* [in] */ ThreadID threadId, /* [out] */ DWORD *pdwWin32ThreadId); HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( ICorProfilerInfo6 * This, /* [out] */ ThreadID *pThreadId); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( ICorProfilerInfo6 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( ICorProfilerInfo6 * This, /* [in] */ FunctionID functionId, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *SetEventMask )( ICorProfilerInfo6 * This, /* [in] */ DWORD dwEvents); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( ICorProfilerInfo6 * This, /* [in] */ FunctionEnter *pFuncEnter, /* [in] */ FunctionLeave *pFuncLeave, /* [in] */ FunctionTailcall *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( ICorProfilerInfo6 * This, /* [in] */ FunctionIDMapper *pFunc); HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( ICorProfilerInfo6 * This, /* [in] */ FunctionID functionId, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppImport, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( ICorProfilerInfo6 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId); HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( ICorProfilerInfo6 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD dwOpenFlags, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppOut); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( ICorProfilerInfo6 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [out] */ LPCBYTE *ppMethodHeader, /* [out] */ ULONG *pcbMethodSize); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( ICorProfilerInfo6 * This, /* [in] */ ModuleID moduleId, /* [out] */ IMethodMalloc **ppMalloc); HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( ICorProfilerInfo6 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodid, /* [in] */ LPCBYTE pbNewILMethodHeader); HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( ICorProfilerInfo6 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ ProcessID *pProcessId); HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( ICorProfilerInfo6 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AppDomainID *pAppDomainId, /* [out] */ ModuleID *pModuleId); HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( ICorProfilerInfo6 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ForceGC )( ICorProfilerInfo6 * This); HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( ICorProfilerInfo6 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fStartJit, /* [in] */ ULONG cILMapEntries, /* [size_is][in] */ COR_IL_MAP rgILMapEntries[ ]); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( ICorProfilerInfo6 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( ICorProfilerInfo6 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( ICorProfilerInfo6 * This, /* [in] */ ThreadID threadId, /* [out] */ ContextID *pContextId); HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( ICorProfilerInfo6 * This, /* [in] */ BOOL fThisThreadOnly, /* [out] */ DWORD *pdwProfilerContext); HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( ICorProfilerInfo6 * This, /* [in] */ DWORD dwProfilerContext); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( ICorProfilerInfo6 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( ICorProfilerInfo6 * This, /* [in] */ ThreadID thread, /* [in] */ StackSnapshotCallback *callback, /* [in] */ ULONG32 infoFlags, /* [in] */ void *clientData, /* [size_is][in] */ BYTE context[ ], /* [in] */ ULONG32 contextSize); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( ICorProfilerInfo6 * This, /* [in] */ FunctionEnter2 *pFuncEnter, /* [in] */ FunctionLeave2 *pFuncLeave, /* [in] */ FunctionTailcall2 *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( ICorProfilerInfo6 * This, /* [in] */ FunctionID funcId, /* [in] */ COR_PRF_FRAME_INFO frameInfo, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken, /* [in] */ ULONG32 cTypeArgs, /* [out] */ ULONG32 *pcTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( ICorProfilerInfo6 * This, /* [out] */ ULONG *pBufferLengthOffset, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( ICorProfilerInfo6 * This, /* [in] */ ClassID classID, /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[ ], /* [in] */ ULONG cFieldOffset, /* [out] */ ULONG *pcFieldOffset, /* [out] */ ULONG *pulClassSize); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( ICorProfilerInfo6 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken, /* [out] */ ClassID *pParentClassId, /* [in] */ ULONG32 cNumTypeArgs, /* [out] */ ULONG32 *pcNumTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( ICorProfilerInfo6 * This, /* [in] */ FunctionID functionID, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( ICorProfilerInfo6 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdTypeDef typeDef, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ ClassID *pClassID); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( ICorProfilerInfo6 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdMethodDef funcDef, /* [in] */ ClassID classId, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ FunctionID *pFunctionID); HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( ICorProfilerInfo6 * This, /* [in] */ ModuleID moduleID, /* [out] */ ICorProfilerObjectEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( ICorProfilerInfo6 * This, /* [in] */ ObjectID objectId, /* [in] */ ULONG32 cDimensions, /* [size_is][out] */ ULONG32 pDimensionSizes[ ], /* [size_is][out] */ int pDimensionLowerBounds[ ], /* [out] */ BYTE **ppData); HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( ICorProfilerInfo6 * This, /* [in] */ ClassID classId, /* [out] */ ULONG32 *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( ICorProfilerInfo6 * This, /* [in] */ ThreadID threadId, /* [out] */ AppDomainID *pAppDomainId); HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( ICorProfilerInfo6 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( ICorProfilerInfo6 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( ICorProfilerInfo6 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( ICorProfilerInfo6 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ContextID contextId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( ICorProfilerInfo6 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo); HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( ICorProfilerInfo6 * This, /* [in] */ ULONG cObjectRanges, /* [out] */ ULONG *pcObjectRanges, /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[ ]); HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( ICorProfilerInfo6 * This, /* [in] */ ObjectID objectId, /* [out] */ COR_PRF_GC_GENERATION_RANGE *range); HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( ICorProfilerInfo6 * This, /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( ICorProfilerInfo6 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( ICorProfilerInfo6 * This, /* [in] */ DWORD dwExpectedCompletionMilliseconds); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( ICorProfilerInfo6 * This, /* [in] */ FunctionIDMapper2 *pFunc, /* [in] */ void *clientData); HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( ICorProfilerInfo6 * This, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( ICorProfilerInfo6 * This, /* [in] */ FunctionEnter3 *pFuncEnter3, /* [in] */ FunctionLeave3 *pFuncLeave3, /* [in] */ FunctionTailcall3 *pFuncTailcall3); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( ICorProfilerInfo6 * This, /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo, /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo, /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( ICorProfilerInfo6 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out][in] */ ULONG *pcbArgumentInfo, /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( ICorProfilerInfo6 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange); HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( ICorProfilerInfo6 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo); HRESULT ( STDMETHODCALLTYPE *EnumModules )( ICorProfilerInfo6 * This, /* [out] */ ICorProfilerModuleEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( ICorProfilerInfo6 * This, /* [out] */ USHORT *pClrInstanceId, /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType, /* [out] */ USHORT *pMajorVersion, /* [out] */ USHORT *pMinorVersion, /* [out] */ USHORT *pBuildNumber, /* [out] */ USHORT *pQFEVersion, /* [in] */ ULONG cchVersionString, /* [out] */ ULONG *pcchVersionString, /* [annotation][out] */ _Out_writes_to_(cchVersionString, *pcchVersionString) WCHAR szVersionString[ ]); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( ICorProfilerInfo6 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( ICorProfilerInfo6 * This, /* [in] */ ModuleID moduleId, /* [in] */ ULONG32 cAppDomainIds, /* [out] */ ULONG32 *pcAppDomainIds, /* [length_is][size_is][out] */ AppDomainID appDomainIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( ICorProfilerInfo6 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId, /* [out] */ DWORD *pdwModuleFlags); HRESULT ( STDMETHODCALLTYPE *EnumThreads )( ICorProfilerInfo6 * This, /* [out] */ ICorProfilerThreadEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *InitializeCurrentThread )( ICorProfilerInfo6 * This); HRESULT ( STDMETHODCALLTYPE *RequestReJIT )( ICorProfilerInfo6 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ]); HRESULT ( STDMETHODCALLTYPE *RequestRevert )( ICorProfilerInfo6 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ], /* [size_is][out] */ HRESULT status[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo3 )( ICorProfilerInfo6 * This, /* [in] */ FunctionID functionID, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP2 )( ICorProfilerInfo6 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId, /* [out] */ ReJITID *pReJitId); HRESULT ( STDMETHODCALLTYPE *GetReJITIDs )( ICorProfilerInfo6 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG cReJitIds, /* [out] */ ULONG *pcReJitIds, /* [length_is][size_is][out] */ ReJITID reJitIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping2 )( ICorProfilerInfo6 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions2 )( ICorProfilerInfo6 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetObjectSize2 )( ICorProfilerInfo6 * This, /* [in] */ ObjectID objectId, /* [out] */ SIZE_T *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask2 )( ICorProfilerInfo6 * This, /* [out] */ DWORD *pdwEventsLow, /* [out] */ DWORD *pdwEventsHigh); HRESULT ( STDMETHODCALLTYPE *SetEventMask2 )( ICorProfilerInfo6 * This, /* [in] */ DWORD dwEventsLow, /* [in] */ DWORD dwEventsHigh); HRESULT ( STDMETHODCALLTYPE *EnumNgenModuleMethodsInliningThisMethod )( ICorProfilerInfo6 * This, /* [in] */ ModuleID inlinersModuleId, /* [in] */ ModuleID inlineeModuleId, /* [in] */ mdMethodDef inlineeMethodId, /* [out] */ BOOL *incompleteData, /* [out] */ ICorProfilerMethodEnum **ppEnum); END_INTERFACE } ICorProfilerInfo6Vtbl; interface ICorProfilerInfo6 { CONST_VTBL struct ICorProfilerInfo6Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerInfo6_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerInfo6_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerInfo6_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerInfo6_GetClassFromObject(This,objectId,pClassId) \ ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) #define ICorProfilerInfo6_GetClassFromToken(This,moduleId,typeDef,pClassId) \ ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) #define ICorProfilerInfo6_GetCodeInfo(This,functionId,pStart,pcSize) \ ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) #define ICorProfilerInfo6_GetEventMask(This,pdwEvents) \ ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) #define ICorProfilerInfo6_GetFunctionFromIP(This,ip,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) #define ICorProfilerInfo6_GetFunctionFromToken(This,moduleId,token,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) #define ICorProfilerInfo6_GetHandleFromThread(This,threadId,phThread) \ ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) #define ICorProfilerInfo6_GetObjectSize(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) #define ICorProfilerInfo6_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \ ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) #define ICorProfilerInfo6_GetThreadInfo(This,threadId,pdwWin32ThreadId) \ ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) #define ICorProfilerInfo6_GetCurrentThreadID(This,pThreadId) \ ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) #define ICorProfilerInfo6_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \ ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) #define ICorProfilerInfo6_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) \ ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) #define ICorProfilerInfo6_SetEventMask(This,dwEvents) \ ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) #define ICorProfilerInfo6_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo6_SetFunctionIDMapper(This,pFunc) \ ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) #define ICorProfilerInfo6_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) \ ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) #define ICorProfilerInfo6_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) \ ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) #define ICorProfilerInfo6_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) \ ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) #define ICorProfilerInfo6_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) \ ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) #define ICorProfilerInfo6_GetILFunctionBodyAllocator(This,moduleId,ppMalloc) \ ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) #define ICorProfilerInfo6_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) \ ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) #define ICorProfilerInfo6_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) \ ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) #define ICorProfilerInfo6_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) \ ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) #define ICorProfilerInfo6_SetFunctionReJIT(This,functionId) \ ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) #define ICorProfilerInfo6_ForceGC(This) \ ( (This)->lpVtbl -> ForceGC(This) ) #define ICorProfilerInfo6_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) \ ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) #define ICorProfilerInfo6_GetInprocInspectionInterface(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) #define ICorProfilerInfo6_GetInprocInspectionIThisThread(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) #define ICorProfilerInfo6_GetThreadContext(This,threadId,pContextId) \ ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) #define ICorProfilerInfo6_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) \ ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) #define ICorProfilerInfo6_EndInprocDebugging(This,dwProfilerContext) \ ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) #define ICorProfilerInfo6_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) #define ICorProfilerInfo6_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) \ ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) #define ICorProfilerInfo6_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo6_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) #define ICorProfilerInfo6_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo6_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) \ ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) #define ICorProfilerInfo6_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) #define ICorProfilerInfo6_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo6_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) \ ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) #define ICorProfilerInfo6_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) \ ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) #define ICorProfilerInfo6_EnumModuleFrozenObjects(This,moduleID,ppEnum) \ ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) #define ICorProfilerInfo6_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) \ ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) #define ICorProfilerInfo6_GetBoxClassLayout(This,classId,pBufferOffset) \ ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) #define ICorProfilerInfo6_GetThreadAppDomain(This,threadId,pAppDomainId) \ ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) #define ICorProfilerInfo6_GetRVAStaticAddress(This,classId,fieldToken,ppAddress) \ ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) #define ICorProfilerInfo6_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) \ ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) #define ICorProfilerInfo6_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) #define ICorProfilerInfo6_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \ ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) #define ICorProfilerInfo6_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) \ ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) #define ICorProfilerInfo6_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) \ ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) #define ICorProfilerInfo6_GetObjectGeneration(This,objectId,range) \ ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) #define ICorProfilerInfo6_GetNotifiedExceptionClauseInfo(This,pinfo) \ ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) #define ICorProfilerInfo6_EnumJITedFunctions(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) #define ICorProfilerInfo6_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \ ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) #define ICorProfilerInfo6_SetFunctionIDMapper2(This,pFunc,clientData) \ ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) #define ICorProfilerInfo6_GetStringLayout2(This,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo6_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) #define ICorProfilerInfo6_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) #define ICorProfilerInfo6_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) \ ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) #define ICorProfilerInfo6_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) \ ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) #define ICorProfilerInfo6_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \ ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) #define ICorProfilerInfo6_EnumModules(This,ppEnum) \ ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) #define ICorProfilerInfo6_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) \ ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) #define ICorProfilerInfo6_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) #define ICorProfilerInfo6_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) \ ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) #define ICorProfilerInfo6_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) \ ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) #define ICorProfilerInfo6_EnumThreads(This,ppEnum) \ ( (This)->lpVtbl -> EnumThreads(This,ppEnum) ) #define ICorProfilerInfo6_InitializeCurrentThread(This) \ ( (This)->lpVtbl -> InitializeCurrentThread(This) ) #define ICorProfilerInfo6_RequestReJIT(This,cFunctions,moduleIds,methodIds) \ ( (This)->lpVtbl -> RequestReJIT(This,cFunctions,moduleIds,methodIds) ) #define ICorProfilerInfo6_RequestRevert(This,cFunctions,moduleIds,methodIds,status) \ ( (This)->lpVtbl -> RequestRevert(This,cFunctions,moduleIds,methodIds,status) ) #define ICorProfilerInfo6_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo6_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) \ ( (This)->lpVtbl -> GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) ) #define ICorProfilerInfo6_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) \ ( (This)->lpVtbl -> GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) ) #define ICorProfilerInfo6_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) ) #define ICorProfilerInfo6_EnumJITedFunctions2(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions2(This,ppEnum) ) #define ICorProfilerInfo6_GetObjectSize2(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize2(This,objectId,pcSize) ) #define ICorProfilerInfo6_GetEventMask2(This,pdwEventsLow,pdwEventsHigh) \ ( (This)->lpVtbl -> GetEventMask2(This,pdwEventsLow,pdwEventsHigh) ) #define ICorProfilerInfo6_SetEventMask2(This,dwEventsLow,dwEventsHigh) \ ( (This)->lpVtbl -> SetEventMask2(This,dwEventsLow,dwEventsHigh) ) #define ICorProfilerInfo6_EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) \ ( (This)->lpVtbl -> EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerInfo6_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerInfo7_INTERFACE_DEFINED__ #define __ICorProfilerInfo7_INTERFACE_DEFINED__ /* interface ICorProfilerInfo7 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerInfo7; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("9AEECC0D-63E0-4187-8C00-E312F503F663") ICorProfilerInfo7 : public ICorProfilerInfo6 { public: virtual HRESULT STDMETHODCALLTYPE ApplyMetaData( /* [in] */ ModuleID moduleId) = 0; virtual HRESULT STDMETHODCALLTYPE GetInMemorySymbolsLength( /* [in] */ ModuleID moduleId, /* [out] */ DWORD *pCountSymbolBytes) = 0; virtual HRESULT STDMETHODCALLTYPE ReadInMemorySymbols( /* [in] */ ModuleID moduleId, /* [in] */ DWORD symbolsReadOffset, /* [out] */ BYTE *pSymbolBytes, /* [in] */ DWORD countSymbolBytes, /* [out] */ DWORD *pCountSymbolBytesRead) = 0; }; #else /* C style interface */ typedef struct ICorProfilerInfo7Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerInfo7 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerInfo7 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerInfo7 * This); HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( ICorProfilerInfo7 * This, /* [in] */ ObjectID objectId, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( ICorProfilerInfo7 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdTypeDef typeDef, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( ICorProfilerInfo7 * This, /* [in] */ FunctionID functionId, /* [out] */ LPCBYTE *pStart, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask )( ICorProfilerInfo7 * This, /* [out] */ DWORD *pdwEvents); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( ICorProfilerInfo7 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( ICorProfilerInfo7 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdToken token, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( ICorProfilerInfo7 * This, /* [in] */ ThreadID threadId, /* [out] */ HANDLE *phThread); HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( ICorProfilerInfo7 * This, /* [in] */ ObjectID objectId, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( ICorProfilerInfo7 * This, /* [in] */ ClassID classId, /* [out] */ CorElementType *pBaseElemType, /* [out] */ ClassID *pBaseClassId, /* [out] */ ULONG *pcRank); HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( ICorProfilerInfo7 * This, /* [in] */ ThreadID threadId, /* [out] */ DWORD *pdwWin32ThreadId); HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( ICorProfilerInfo7 * This, /* [out] */ ThreadID *pThreadId); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( ICorProfilerInfo7 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( ICorProfilerInfo7 * This, /* [in] */ FunctionID functionId, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *SetEventMask )( ICorProfilerInfo7 * This, /* [in] */ DWORD dwEvents); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( ICorProfilerInfo7 * This, /* [in] */ FunctionEnter *pFuncEnter, /* [in] */ FunctionLeave *pFuncLeave, /* [in] */ FunctionTailcall *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( ICorProfilerInfo7 * This, /* [in] */ FunctionIDMapper *pFunc); HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( ICorProfilerInfo7 * This, /* [in] */ FunctionID functionId, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppImport, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( ICorProfilerInfo7 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId); HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( ICorProfilerInfo7 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD dwOpenFlags, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppOut); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( ICorProfilerInfo7 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [out] */ LPCBYTE *ppMethodHeader, /* [out] */ ULONG *pcbMethodSize); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( ICorProfilerInfo7 * This, /* [in] */ ModuleID moduleId, /* [out] */ IMethodMalloc **ppMalloc); HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( ICorProfilerInfo7 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodid, /* [in] */ LPCBYTE pbNewILMethodHeader); HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( ICorProfilerInfo7 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ ProcessID *pProcessId); HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( ICorProfilerInfo7 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AppDomainID *pAppDomainId, /* [out] */ ModuleID *pModuleId); HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( ICorProfilerInfo7 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ForceGC )( ICorProfilerInfo7 * This); HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( ICorProfilerInfo7 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fStartJit, /* [in] */ ULONG cILMapEntries, /* [size_is][in] */ COR_IL_MAP rgILMapEntries[ ]); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( ICorProfilerInfo7 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( ICorProfilerInfo7 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( ICorProfilerInfo7 * This, /* [in] */ ThreadID threadId, /* [out] */ ContextID *pContextId); HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( ICorProfilerInfo7 * This, /* [in] */ BOOL fThisThreadOnly, /* [out] */ DWORD *pdwProfilerContext); HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( ICorProfilerInfo7 * This, /* [in] */ DWORD dwProfilerContext); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( ICorProfilerInfo7 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( ICorProfilerInfo7 * This, /* [in] */ ThreadID thread, /* [in] */ StackSnapshotCallback *callback, /* [in] */ ULONG32 infoFlags, /* [in] */ void *clientData, /* [size_is][in] */ BYTE context[ ], /* [in] */ ULONG32 contextSize); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( ICorProfilerInfo7 * This, /* [in] */ FunctionEnter2 *pFuncEnter, /* [in] */ FunctionLeave2 *pFuncLeave, /* [in] */ FunctionTailcall2 *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( ICorProfilerInfo7 * This, /* [in] */ FunctionID funcId, /* [in] */ COR_PRF_FRAME_INFO frameInfo, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken, /* [in] */ ULONG32 cTypeArgs, /* [out] */ ULONG32 *pcTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( ICorProfilerInfo7 * This, /* [out] */ ULONG *pBufferLengthOffset, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( ICorProfilerInfo7 * This, /* [in] */ ClassID classID, /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[ ], /* [in] */ ULONG cFieldOffset, /* [out] */ ULONG *pcFieldOffset, /* [out] */ ULONG *pulClassSize); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( ICorProfilerInfo7 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken, /* [out] */ ClassID *pParentClassId, /* [in] */ ULONG32 cNumTypeArgs, /* [out] */ ULONG32 *pcNumTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( ICorProfilerInfo7 * This, /* [in] */ FunctionID functionID, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( ICorProfilerInfo7 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdTypeDef typeDef, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ ClassID *pClassID); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( ICorProfilerInfo7 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdMethodDef funcDef, /* [in] */ ClassID classId, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ FunctionID *pFunctionID); HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( ICorProfilerInfo7 * This, /* [in] */ ModuleID moduleID, /* [out] */ ICorProfilerObjectEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( ICorProfilerInfo7 * This, /* [in] */ ObjectID objectId, /* [in] */ ULONG32 cDimensions, /* [size_is][out] */ ULONG32 pDimensionSizes[ ], /* [size_is][out] */ int pDimensionLowerBounds[ ], /* [out] */ BYTE **ppData); HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( ICorProfilerInfo7 * This, /* [in] */ ClassID classId, /* [out] */ ULONG32 *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( ICorProfilerInfo7 * This, /* [in] */ ThreadID threadId, /* [out] */ AppDomainID *pAppDomainId); HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( ICorProfilerInfo7 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( ICorProfilerInfo7 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( ICorProfilerInfo7 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( ICorProfilerInfo7 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ContextID contextId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( ICorProfilerInfo7 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo); HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( ICorProfilerInfo7 * This, /* [in] */ ULONG cObjectRanges, /* [out] */ ULONG *pcObjectRanges, /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[ ]); HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( ICorProfilerInfo7 * This, /* [in] */ ObjectID objectId, /* [out] */ COR_PRF_GC_GENERATION_RANGE *range); HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( ICorProfilerInfo7 * This, /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( ICorProfilerInfo7 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( ICorProfilerInfo7 * This, /* [in] */ DWORD dwExpectedCompletionMilliseconds); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( ICorProfilerInfo7 * This, /* [in] */ FunctionIDMapper2 *pFunc, /* [in] */ void *clientData); HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( ICorProfilerInfo7 * This, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( ICorProfilerInfo7 * This, /* [in] */ FunctionEnter3 *pFuncEnter3, /* [in] */ FunctionLeave3 *pFuncLeave3, /* [in] */ FunctionTailcall3 *pFuncTailcall3); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( ICorProfilerInfo7 * This, /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo, /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo, /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( ICorProfilerInfo7 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out][in] */ ULONG *pcbArgumentInfo, /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( ICorProfilerInfo7 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange); HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( ICorProfilerInfo7 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo); HRESULT ( STDMETHODCALLTYPE *EnumModules )( ICorProfilerInfo7 * This, /* [out] */ ICorProfilerModuleEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( ICorProfilerInfo7 * This, /* [out] */ USHORT *pClrInstanceId, /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType, /* [out] */ USHORT *pMajorVersion, /* [out] */ USHORT *pMinorVersion, /* [out] */ USHORT *pBuildNumber, /* [out] */ USHORT *pQFEVersion, /* [in] */ ULONG cchVersionString, /* [out] */ ULONG *pcchVersionString, /* [annotation][out] */ _Out_writes_to_(cchVersionString, *pcchVersionString) WCHAR szVersionString[ ]); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( ICorProfilerInfo7 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( ICorProfilerInfo7 * This, /* [in] */ ModuleID moduleId, /* [in] */ ULONG32 cAppDomainIds, /* [out] */ ULONG32 *pcAppDomainIds, /* [length_is][size_is][out] */ AppDomainID appDomainIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( ICorProfilerInfo7 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId, /* [out] */ DWORD *pdwModuleFlags); HRESULT ( STDMETHODCALLTYPE *EnumThreads )( ICorProfilerInfo7 * This, /* [out] */ ICorProfilerThreadEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *InitializeCurrentThread )( ICorProfilerInfo7 * This); HRESULT ( STDMETHODCALLTYPE *RequestReJIT )( ICorProfilerInfo7 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ]); HRESULT ( STDMETHODCALLTYPE *RequestRevert )( ICorProfilerInfo7 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ], /* [size_is][out] */ HRESULT status[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo3 )( ICorProfilerInfo7 * This, /* [in] */ FunctionID functionID, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP2 )( ICorProfilerInfo7 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId, /* [out] */ ReJITID *pReJitId); HRESULT ( STDMETHODCALLTYPE *GetReJITIDs )( ICorProfilerInfo7 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG cReJitIds, /* [out] */ ULONG *pcReJitIds, /* [length_is][size_is][out] */ ReJITID reJitIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping2 )( ICorProfilerInfo7 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions2 )( ICorProfilerInfo7 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetObjectSize2 )( ICorProfilerInfo7 * This, /* [in] */ ObjectID objectId, /* [out] */ SIZE_T *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask2 )( ICorProfilerInfo7 * This, /* [out] */ DWORD *pdwEventsLow, /* [out] */ DWORD *pdwEventsHigh); HRESULT ( STDMETHODCALLTYPE *SetEventMask2 )( ICorProfilerInfo7 * This, /* [in] */ DWORD dwEventsLow, /* [in] */ DWORD dwEventsHigh); HRESULT ( STDMETHODCALLTYPE *EnumNgenModuleMethodsInliningThisMethod )( ICorProfilerInfo7 * This, /* [in] */ ModuleID inlinersModuleId, /* [in] */ ModuleID inlineeModuleId, /* [in] */ mdMethodDef inlineeMethodId, /* [out] */ BOOL *incompleteData, /* [out] */ ICorProfilerMethodEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *ApplyMetaData )( ICorProfilerInfo7 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *GetInMemorySymbolsLength )( ICorProfilerInfo7 * This, /* [in] */ ModuleID moduleId, /* [out] */ DWORD *pCountSymbolBytes); HRESULT ( STDMETHODCALLTYPE *ReadInMemorySymbols )( ICorProfilerInfo7 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD symbolsReadOffset, /* [out] */ BYTE *pSymbolBytes, /* [in] */ DWORD countSymbolBytes, /* [out] */ DWORD *pCountSymbolBytesRead); END_INTERFACE } ICorProfilerInfo7Vtbl; interface ICorProfilerInfo7 { CONST_VTBL struct ICorProfilerInfo7Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerInfo7_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerInfo7_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerInfo7_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerInfo7_GetClassFromObject(This,objectId,pClassId) \ ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) #define ICorProfilerInfo7_GetClassFromToken(This,moduleId,typeDef,pClassId) \ ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) #define ICorProfilerInfo7_GetCodeInfo(This,functionId,pStart,pcSize) \ ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) #define ICorProfilerInfo7_GetEventMask(This,pdwEvents) \ ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) #define ICorProfilerInfo7_GetFunctionFromIP(This,ip,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) #define ICorProfilerInfo7_GetFunctionFromToken(This,moduleId,token,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) #define ICorProfilerInfo7_GetHandleFromThread(This,threadId,phThread) \ ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) #define ICorProfilerInfo7_GetObjectSize(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) #define ICorProfilerInfo7_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \ ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) #define ICorProfilerInfo7_GetThreadInfo(This,threadId,pdwWin32ThreadId) \ ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) #define ICorProfilerInfo7_GetCurrentThreadID(This,pThreadId) \ ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) #define ICorProfilerInfo7_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \ ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) #define ICorProfilerInfo7_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) \ ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) #define ICorProfilerInfo7_SetEventMask(This,dwEvents) \ ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) #define ICorProfilerInfo7_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo7_SetFunctionIDMapper(This,pFunc) \ ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) #define ICorProfilerInfo7_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) \ ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) #define ICorProfilerInfo7_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) \ ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) #define ICorProfilerInfo7_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) \ ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) #define ICorProfilerInfo7_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) \ ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) #define ICorProfilerInfo7_GetILFunctionBodyAllocator(This,moduleId,ppMalloc) \ ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) #define ICorProfilerInfo7_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) \ ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) #define ICorProfilerInfo7_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) \ ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) #define ICorProfilerInfo7_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) \ ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) #define ICorProfilerInfo7_SetFunctionReJIT(This,functionId) \ ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) #define ICorProfilerInfo7_ForceGC(This) \ ( (This)->lpVtbl -> ForceGC(This) ) #define ICorProfilerInfo7_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) \ ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) #define ICorProfilerInfo7_GetInprocInspectionInterface(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) #define ICorProfilerInfo7_GetInprocInspectionIThisThread(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) #define ICorProfilerInfo7_GetThreadContext(This,threadId,pContextId) \ ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) #define ICorProfilerInfo7_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) \ ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) #define ICorProfilerInfo7_EndInprocDebugging(This,dwProfilerContext) \ ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) #define ICorProfilerInfo7_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) #define ICorProfilerInfo7_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) \ ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) #define ICorProfilerInfo7_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo7_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) #define ICorProfilerInfo7_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo7_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) \ ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) #define ICorProfilerInfo7_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) #define ICorProfilerInfo7_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo7_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) \ ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) #define ICorProfilerInfo7_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) \ ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) #define ICorProfilerInfo7_EnumModuleFrozenObjects(This,moduleID,ppEnum) \ ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) #define ICorProfilerInfo7_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) \ ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) #define ICorProfilerInfo7_GetBoxClassLayout(This,classId,pBufferOffset) \ ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) #define ICorProfilerInfo7_GetThreadAppDomain(This,threadId,pAppDomainId) \ ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) #define ICorProfilerInfo7_GetRVAStaticAddress(This,classId,fieldToken,ppAddress) \ ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) #define ICorProfilerInfo7_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) \ ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) #define ICorProfilerInfo7_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) #define ICorProfilerInfo7_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \ ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) #define ICorProfilerInfo7_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) \ ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) #define ICorProfilerInfo7_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) \ ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) #define ICorProfilerInfo7_GetObjectGeneration(This,objectId,range) \ ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) #define ICorProfilerInfo7_GetNotifiedExceptionClauseInfo(This,pinfo) \ ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) #define ICorProfilerInfo7_EnumJITedFunctions(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) #define ICorProfilerInfo7_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \ ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) #define ICorProfilerInfo7_SetFunctionIDMapper2(This,pFunc,clientData) \ ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) #define ICorProfilerInfo7_GetStringLayout2(This,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo7_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) #define ICorProfilerInfo7_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) #define ICorProfilerInfo7_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) \ ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) #define ICorProfilerInfo7_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) \ ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) #define ICorProfilerInfo7_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \ ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) #define ICorProfilerInfo7_EnumModules(This,ppEnum) \ ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) #define ICorProfilerInfo7_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) \ ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) #define ICorProfilerInfo7_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) #define ICorProfilerInfo7_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) \ ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) #define ICorProfilerInfo7_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) \ ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) #define ICorProfilerInfo7_EnumThreads(This,ppEnum) \ ( (This)->lpVtbl -> EnumThreads(This,ppEnum) ) #define ICorProfilerInfo7_InitializeCurrentThread(This) \ ( (This)->lpVtbl -> InitializeCurrentThread(This) ) #define ICorProfilerInfo7_RequestReJIT(This,cFunctions,moduleIds,methodIds) \ ( (This)->lpVtbl -> RequestReJIT(This,cFunctions,moduleIds,methodIds) ) #define ICorProfilerInfo7_RequestRevert(This,cFunctions,moduleIds,methodIds,status) \ ( (This)->lpVtbl -> RequestRevert(This,cFunctions,moduleIds,methodIds,status) ) #define ICorProfilerInfo7_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo7_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) \ ( (This)->lpVtbl -> GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) ) #define ICorProfilerInfo7_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) \ ( (This)->lpVtbl -> GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) ) #define ICorProfilerInfo7_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) ) #define ICorProfilerInfo7_EnumJITedFunctions2(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions2(This,ppEnum) ) #define ICorProfilerInfo7_GetObjectSize2(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize2(This,objectId,pcSize) ) #define ICorProfilerInfo7_GetEventMask2(This,pdwEventsLow,pdwEventsHigh) \ ( (This)->lpVtbl -> GetEventMask2(This,pdwEventsLow,pdwEventsHigh) ) #define ICorProfilerInfo7_SetEventMask2(This,dwEventsLow,dwEventsHigh) \ ( (This)->lpVtbl -> SetEventMask2(This,dwEventsLow,dwEventsHigh) ) #define ICorProfilerInfo7_EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) \ ( (This)->lpVtbl -> EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) ) #define ICorProfilerInfo7_ApplyMetaData(This,moduleId) \ ( (This)->lpVtbl -> ApplyMetaData(This,moduleId) ) #define ICorProfilerInfo7_GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes) \ ( (This)->lpVtbl -> GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes) ) #define ICorProfilerInfo7_ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead) \ ( (This)->lpVtbl -> ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerInfo7_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerInfo8_INTERFACE_DEFINED__ #define __ICorProfilerInfo8_INTERFACE_DEFINED__ /* interface ICorProfilerInfo8 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerInfo8; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C5AC80A6-782E-4716-8044-39598C60CFBF") ICorProfilerInfo8 : public ICorProfilerInfo7 { public: virtual HRESULT STDMETHODCALLTYPE IsFunctionDynamic( /* [in] */ FunctionID functionId, /* [out] */ BOOL *isDynamic) = 0; virtual HRESULT STDMETHODCALLTYPE GetFunctionFromIP3( /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *functionId, /* [out] */ ReJITID *pReJitId) = 0; virtual HRESULT STDMETHODCALLTYPE GetDynamicFunctionInfo( /* [in] */ FunctionID functionId, /* [out] */ ModuleID *moduleId, /* [out] */ PCCOR_SIGNATURE *ppvSig, /* [out] */ ULONG *pbSig, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [out] */ WCHAR wszName[ ]) = 0; }; #else /* C style interface */ typedef struct ICorProfilerInfo8Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerInfo8 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerInfo8 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerInfo8 * This); HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( ICorProfilerInfo8 * This, /* [in] */ ObjectID objectId, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( ICorProfilerInfo8 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdTypeDef typeDef, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( ICorProfilerInfo8 * This, /* [in] */ FunctionID functionId, /* [out] */ LPCBYTE *pStart, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask )( ICorProfilerInfo8 * This, /* [out] */ DWORD *pdwEvents); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( ICorProfilerInfo8 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( ICorProfilerInfo8 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdToken token, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( ICorProfilerInfo8 * This, /* [in] */ ThreadID threadId, /* [out] */ HANDLE *phThread); HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( ICorProfilerInfo8 * This, /* [in] */ ObjectID objectId, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( ICorProfilerInfo8 * This, /* [in] */ ClassID classId, /* [out] */ CorElementType *pBaseElemType, /* [out] */ ClassID *pBaseClassId, /* [out] */ ULONG *pcRank); HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( ICorProfilerInfo8 * This, /* [in] */ ThreadID threadId, /* [out] */ DWORD *pdwWin32ThreadId); HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( ICorProfilerInfo8 * This, /* [out] */ ThreadID *pThreadId); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( ICorProfilerInfo8 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( ICorProfilerInfo8 * This, /* [in] */ FunctionID functionId, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *SetEventMask )( ICorProfilerInfo8 * This, /* [in] */ DWORD dwEvents); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( ICorProfilerInfo8 * This, /* [in] */ FunctionEnter *pFuncEnter, /* [in] */ FunctionLeave *pFuncLeave, /* [in] */ FunctionTailcall *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( ICorProfilerInfo8 * This, /* [in] */ FunctionIDMapper *pFunc); HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( ICorProfilerInfo8 * This, /* [in] */ FunctionID functionId, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppImport, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( ICorProfilerInfo8 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId); HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( ICorProfilerInfo8 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD dwOpenFlags, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppOut); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( ICorProfilerInfo8 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [out] */ LPCBYTE *ppMethodHeader, /* [out] */ ULONG *pcbMethodSize); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( ICorProfilerInfo8 * This, /* [in] */ ModuleID moduleId, /* [out] */ IMethodMalloc **ppMalloc); HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( ICorProfilerInfo8 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodid, /* [in] */ LPCBYTE pbNewILMethodHeader); HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( ICorProfilerInfo8 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ ProcessID *pProcessId); HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( ICorProfilerInfo8 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AppDomainID *pAppDomainId, /* [out] */ ModuleID *pModuleId); HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( ICorProfilerInfo8 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ForceGC )( ICorProfilerInfo8 * This); HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( ICorProfilerInfo8 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fStartJit, /* [in] */ ULONG cILMapEntries, /* [size_is][in] */ COR_IL_MAP rgILMapEntries[ ]); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( ICorProfilerInfo8 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( ICorProfilerInfo8 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( ICorProfilerInfo8 * This, /* [in] */ ThreadID threadId, /* [out] */ ContextID *pContextId); HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( ICorProfilerInfo8 * This, /* [in] */ BOOL fThisThreadOnly, /* [out] */ DWORD *pdwProfilerContext); HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( ICorProfilerInfo8 * This, /* [in] */ DWORD dwProfilerContext); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( ICorProfilerInfo8 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( ICorProfilerInfo8 * This, /* [in] */ ThreadID thread, /* [in] */ StackSnapshotCallback *callback, /* [in] */ ULONG32 infoFlags, /* [in] */ void *clientData, /* [size_is][in] */ BYTE context[ ], /* [in] */ ULONG32 contextSize); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( ICorProfilerInfo8 * This, /* [in] */ FunctionEnter2 *pFuncEnter, /* [in] */ FunctionLeave2 *pFuncLeave, /* [in] */ FunctionTailcall2 *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( ICorProfilerInfo8 * This, /* [in] */ FunctionID funcId, /* [in] */ COR_PRF_FRAME_INFO frameInfo, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken, /* [in] */ ULONG32 cTypeArgs, /* [out] */ ULONG32 *pcTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( ICorProfilerInfo8 * This, /* [out] */ ULONG *pBufferLengthOffset, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( ICorProfilerInfo8 * This, /* [in] */ ClassID classID, /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[ ], /* [in] */ ULONG cFieldOffset, /* [out] */ ULONG *pcFieldOffset, /* [out] */ ULONG *pulClassSize); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( ICorProfilerInfo8 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken, /* [out] */ ClassID *pParentClassId, /* [in] */ ULONG32 cNumTypeArgs, /* [out] */ ULONG32 *pcNumTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( ICorProfilerInfo8 * This, /* [in] */ FunctionID functionID, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( ICorProfilerInfo8 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdTypeDef typeDef, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ ClassID *pClassID); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( ICorProfilerInfo8 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdMethodDef funcDef, /* [in] */ ClassID classId, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ FunctionID *pFunctionID); HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( ICorProfilerInfo8 * This, /* [in] */ ModuleID moduleID, /* [out] */ ICorProfilerObjectEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( ICorProfilerInfo8 * This, /* [in] */ ObjectID objectId, /* [in] */ ULONG32 cDimensions, /* [size_is][out] */ ULONG32 pDimensionSizes[ ], /* [size_is][out] */ int pDimensionLowerBounds[ ], /* [out] */ BYTE **ppData); HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( ICorProfilerInfo8 * This, /* [in] */ ClassID classId, /* [out] */ ULONG32 *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( ICorProfilerInfo8 * This, /* [in] */ ThreadID threadId, /* [out] */ AppDomainID *pAppDomainId); HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( ICorProfilerInfo8 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( ICorProfilerInfo8 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( ICorProfilerInfo8 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( ICorProfilerInfo8 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ContextID contextId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( ICorProfilerInfo8 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo); HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( ICorProfilerInfo8 * This, /* [in] */ ULONG cObjectRanges, /* [out] */ ULONG *pcObjectRanges, /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[ ]); HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( ICorProfilerInfo8 * This, /* [in] */ ObjectID objectId, /* [out] */ COR_PRF_GC_GENERATION_RANGE *range); HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( ICorProfilerInfo8 * This, /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( ICorProfilerInfo8 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( ICorProfilerInfo8 * This, /* [in] */ DWORD dwExpectedCompletionMilliseconds); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( ICorProfilerInfo8 * This, /* [in] */ FunctionIDMapper2 *pFunc, /* [in] */ void *clientData); HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( ICorProfilerInfo8 * This, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( ICorProfilerInfo8 * This, /* [in] */ FunctionEnter3 *pFuncEnter3, /* [in] */ FunctionLeave3 *pFuncLeave3, /* [in] */ FunctionTailcall3 *pFuncTailcall3); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( ICorProfilerInfo8 * This, /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo, /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo, /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( ICorProfilerInfo8 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out][in] */ ULONG *pcbArgumentInfo, /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( ICorProfilerInfo8 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange); HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( ICorProfilerInfo8 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo); HRESULT ( STDMETHODCALLTYPE *EnumModules )( ICorProfilerInfo8 * This, /* [out] */ ICorProfilerModuleEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( ICorProfilerInfo8 * This, /* [out] */ USHORT *pClrInstanceId, /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType, /* [out] */ USHORT *pMajorVersion, /* [out] */ USHORT *pMinorVersion, /* [out] */ USHORT *pBuildNumber, /* [out] */ USHORT *pQFEVersion, /* [in] */ ULONG cchVersionString, /* [out] */ ULONG *pcchVersionString, /* [annotation][out] */ _Out_writes_to_(cchVersionString, *pcchVersionString) WCHAR szVersionString[ ]); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( ICorProfilerInfo8 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( ICorProfilerInfo8 * This, /* [in] */ ModuleID moduleId, /* [in] */ ULONG32 cAppDomainIds, /* [out] */ ULONG32 *pcAppDomainIds, /* [length_is][size_is][out] */ AppDomainID appDomainIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( ICorProfilerInfo8 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId, /* [out] */ DWORD *pdwModuleFlags); HRESULT ( STDMETHODCALLTYPE *EnumThreads )( ICorProfilerInfo8 * This, /* [out] */ ICorProfilerThreadEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *InitializeCurrentThread )( ICorProfilerInfo8 * This); HRESULT ( STDMETHODCALLTYPE *RequestReJIT )( ICorProfilerInfo8 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ]); HRESULT ( STDMETHODCALLTYPE *RequestRevert )( ICorProfilerInfo8 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ], /* [size_is][out] */ HRESULT status[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo3 )( ICorProfilerInfo8 * This, /* [in] */ FunctionID functionID, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP2 )( ICorProfilerInfo8 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId, /* [out] */ ReJITID *pReJitId); HRESULT ( STDMETHODCALLTYPE *GetReJITIDs )( ICorProfilerInfo8 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG cReJitIds, /* [out] */ ULONG *pcReJitIds, /* [length_is][size_is][out] */ ReJITID reJitIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping2 )( ICorProfilerInfo8 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions2 )( ICorProfilerInfo8 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetObjectSize2 )( ICorProfilerInfo8 * This, /* [in] */ ObjectID objectId, /* [out] */ SIZE_T *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask2 )( ICorProfilerInfo8 * This, /* [out] */ DWORD *pdwEventsLow, /* [out] */ DWORD *pdwEventsHigh); HRESULT ( STDMETHODCALLTYPE *SetEventMask2 )( ICorProfilerInfo8 * This, /* [in] */ DWORD dwEventsLow, /* [in] */ DWORD dwEventsHigh); HRESULT ( STDMETHODCALLTYPE *EnumNgenModuleMethodsInliningThisMethod )( ICorProfilerInfo8 * This, /* [in] */ ModuleID inlinersModuleId, /* [in] */ ModuleID inlineeModuleId, /* [in] */ mdMethodDef inlineeMethodId, /* [out] */ BOOL *incompleteData, /* [out] */ ICorProfilerMethodEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *ApplyMetaData )( ICorProfilerInfo8 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *GetInMemorySymbolsLength )( ICorProfilerInfo8 * This, /* [in] */ ModuleID moduleId, /* [out] */ DWORD *pCountSymbolBytes); HRESULT ( STDMETHODCALLTYPE *ReadInMemorySymbols )( ICorProfilerInfo8 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD symbolsReadOffset, /* [out] */ BYTE *pSymbolBytes, /* [in] */ DWORD countSymbolBytes, /* [out] */ DWORD *pCountSymbolBytesRead); HRESULT ( STDMETHODCALLTYPE *IsFunctionDynamic )( ICorProfilerInfo8 * This, /* [in] */ FunctionID functionId, /* [out] */ BOOL *isDynamic); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP3 )( ICorProfilerInfo8 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *functionId, /* [out] */ ReJITID *pReJitId); HRESULT ( STDMETHODCALLTYPE *GetDynamicFunctionInfo )( ICorProfilerInfo8 * This, /* [in] */ FunctionID functionId, /* [out] */ ModuleID *moduleId, /* [out] */ PCCOR_SIGNATURE *ppvSig, /* [out] */ ULONG *pbSig, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [out] */ WCHAR wszName[ ]); END_INTERFACE } ICorProfilerInfo8Vtbl; interface ICorProfilerInfo8 { CONST_VTBL struct ICorProfilerInfo8Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerInfo8_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerInfo8_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerInfo8_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerInfo8_GetClassFromObject(This,objectId,pClassId) \ ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) #define ICorProfilerInfo8_GetClassFromToken(This,moduleId,typeDef,pClassId) \ ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) #define ICorProfilerInfo8_GetCodeInfo(This,functionId,pStart,pcSize) \ ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) #define ICorProfilerInfo8_GetEventMask(This,pdwEvents) \ ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) #define ICorProfilerInfo8_GetFunctionFromIP(This,ip,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) #define ICorProfilerInfo8_GetFunctionFromToken(This,moduleId,token,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) #define ICorProfilerInfo8_GetHandleFromThread(This,threadId,phThread) \ ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) #define ICorProfilerInfo8_GetObjectSize(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) #define ICorProfilerInfo8_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \ ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) #define ICorProfilerInfo8_GetThreadInfo(This,threadId,pdwWin32ThreadId) \ ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) #define ICorProfilerInfo8_GetCurrentThreadID(This,pThreadId) \ ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) #define ICorProfilerInfo8_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \ ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) #define ICorProfilerInfo8_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) \ ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) #define ICorProfilerInfo8_SetEventMask(This,dwEvents) \ ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) #define ICorProfilerInfo8_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo8_SetFunctionIDMapper(This,pFunc) \ ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) #define ICorProfilerInfo8_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) \ ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) #define ICorProfilerInfo8_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) \ ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) #define ICorProfilerInfo8_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) \ ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) #define ICorProfilerInfo8_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) \ ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) #define ICorProfilerInfo8_GetILFunctionBodyAllocator(This,moduleId,ppMalloc) \ ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) #define ICorProfilerInfo8_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) \ ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) #define ICorProfilerInfo8_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) \ ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) #define ICorProfilerInfo8_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) \ ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) #define ICorProfilerInfo8_SetFunctionReJIT(This,functionId) \ ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) #define ICorProfilerInfo8_ForceGC(This) \ ( (This)->lpVtbl -> ForceGC(This) ) #define ICorProfilerInfo8_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) \ ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) #define ICorProfilerInfo8_GetInprocInspectionInterface(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) #define ICorProfilerInfo8_GetInprocInspectionIThisThread(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) #define ICorProfilerInfo8_GetThreadContext(This,threadId,pContextId) \ ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) #define ICorProfilerInfo8_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) \ ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) #define ICorProfilerInfo8_EndInprocDebugging(This,dwProfilerContext) \ ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) #define ICorProfilerInfo8_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) #define ICorProfilerInfo8_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) \ ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) #define ICorProfilerInfo8_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo8_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) #define ICorProfilerInfo8_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo8_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) \ ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) #define ICorProfilerInfo8_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) #define ICorProfilerInfo8_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo8_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) \ ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) #define ICorProfilerInfo8_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) \ ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) #define ICorProfilerInfo8_EnumModuleFrozenObjects(This,moduleID,ppEnum) \ ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) #define ICorProfilerInfo8_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) \ ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) #define ICorProfilerInfo8_GetBoxClassLayout(This,classId,pBufferOffset) \ ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) #define ICorProfilerInfo8_GetThreadAppDomain(This,threadId,pAppDomainId) \ ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) #define ICorProfilerInfo8_GetRVAStaticAddress(This,classId,fieldToken,ppAddress) \ ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) #define ICorProfilerInfo8_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) \ ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) #define ICorProfilerInfo8_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) #define ICorProfilerInfo8_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \ ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) #define ICorProfilerInfo8_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) \ ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) #define ICorProfilerInfo8_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) \ ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) #define ICorProfilerInfo8_GetObjectGeneration(This,objectId,range) \ ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) #define ICorProfilerInfo8_GetNotifiedExceptionClauseInfo(This,pinfo) \ ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) #define ICorProfilerInfo8_EnumJITedFunctions(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) #define ICorProfilerInfo8_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \ ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) #define ICorProfilerInfo8_SetFunctionIDMapper2(This,pFunc,clientData) \ ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) #define ICorProfilerInfo8_GetStringLayout2(This,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo8_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) #define ICorProfilerInfo8_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) #define ICorProfilerInfo8_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) \ ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) #define ICorProfilerInfo8_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) \ ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) #define ICorProfilerInfo8_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \ ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) #define ICorProfilerInfo8_EnumModules(This,ppEnum) \ ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) #define ICorProfilerInfo8_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) \ ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) #define ICorProfilerInfo8_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) #define ICorProfilerInfo8_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) \ ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) #define ICorProfilerInfo8_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) \ ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) #define ICorProfilerInfo8_EnumThreads(This,ppEnum) \ ( (This)->lpVtbl -> EnumThreads(This,ppEnum) ) #define ICorProfilerInfo8_InitializeCurrentThread(This) \ ( (This)->lpVtbl -> InitializeCurrentThread(This) ) #define ICorProfilerInfo8_RequestReJIT(This,cFunctions,moduleIds,methodIds) \ ( (This)->lpVtbl -> RequestReJIT(This,cFunctions,moduleIds,methodIds) ) #define ICorProfilerInfo8_RequestRevert(This,cFunctions,moduleIds,methodIds,status) \ ( (This)->lpVtbl -> RequestRevert(This,cFunctions,moduleIds,methodIds,status) ) #define ICorProfilerInfo8_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo8_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) \ ( (This)->lpVtbl -> GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) ) #define ICorProfilerInfo8_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) \ ( (This)->lpVtbl -> GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) ) #define ICorProfilerInfo8_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) ) #define ICorProfilerInfo8_EnumJITedFunctions2(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions2(This,ppEnum) ) #define ICorProfilerInfo8_GetObjectSize2(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize2(This,objectId,pcSize) ) #define ICorProfilerInfo8_GetEventMask2(This,pdwEventsLow,pdwEventsHigh) \ ( (This)->lpVtbl -> GetEventMask2(This,pdwEventsLow,pdwEventsHigh) ) #define ICorProfilerInfo8_SetEventMask2(This,dwEventsLow,dwEventsHigh) \ ( (This)->lpVtbl -> SetEventMask2(This,dwEventsLow,dwEventsHigh) ) #define ICorProfilerInfo8_EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) \ ( (This)->lpVtbl -> EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) ) #define ICorProfilerInfo8_ApplyMetaData(This,moduleId) \ ( (This)->lpVtbl -> ApplyMetaData(This,moduleId) ) #define ICorProfilerInfo8_GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes) \ ( (This)->lpVtbl -> GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes) ) #define ICorProfilerInfo8_ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead) \ ( (This)->lpVtbl -> ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead) ) #define ICorProfilerInfo8_IsFunctionDynamic(This,functionId,isDynamic) \ ( (This)->lpVtbl -> IsFunctionDynamic(This,functionId,isDynamic) ) #define ICorProfilerInfo8_GetFunctionFromIP3(This,ip,functionId,pReJitId) \ ( (This)->lpVtbl -> GetFunctionFromIP3(This,ip,functionId,pReJitId) ) #define ICorProfilerInfo8_GetDynamicFunctionInfo(This,functionId,moduleId,ppvSig,pbSig,cchName,pcchName,wszName) \ ( (This)->lpVtbl -> GetDynamicFunctionInfo(This,functionId,moduleId,ppvSig,pbSig,cchName,pcchName,wszName) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerInfo8_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerInfo9_INTERFACE_DEFINED__ #define __ICorProfilerInfo9_INTERFACE_DEFINED__ /* interface ICorProfilerInfo9 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerInfo9; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("008170DB-F8CC-4796-9A51-DC8AA0B47012") ICorProfilerInfo9 : public ICorProfilerInfo8 { public: virtual HRESULT STDMETHODCALLTYPE GetNativeCodeStartAddresses( FunctionID functionID, ReJITID reJitId, ULONG32 cCodeStartAddresses, ULONG32 *pcCodeStartAddresses, UINT_PTR codeStartAddresses[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE GetILToNativeMapping3( UINT_PTR pNativeCodeStartAddress, ULONG32 cMap, ULONG32 *pcMap, COR_DEBUG_IL_TO_NATIVE_MAP map[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE GetCodeInfo4( UINT_PTR pNativeCodeStartAddress, ULONG32 cCodeInfos, ULONG32 *pcCodeInfos, COR_PRF_CODE_INFO codeInfos[ ]) = 0; }; #else /* C style interface */ typedef struct ICorProfilerInfo9Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerInfo9 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerInfo9 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerInfo9 * This); HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( ICorProfilerInfo9 * This, /* [in] */ ObjectID objectId, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( ICorProfilerInfo9 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdTypeDef typeDef, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( ICorProfilerInfo9 * This, /* [in] */ FunctionID functionId, /* [out] */ LPCBYTE *pStart, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask )( ICorProfilerInfo9 * This, /* [out] */ DWORD *pdwEvents); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( ICorProfilerInfo9 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( ICorProfilerInfo9 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdToken token, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( ICorProfilerInfo9 * This, /* [in] */ ThreadID threadId, /* [out] */ HANDLE *phThread); HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( ICorProfilerInfo9 * This, /* [in] */ ObjectID objectId, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( ICorProfilerInfo9 * This, /* [in] */ ClassID classId, /* [out] */ CorElementType *pBaseElemType, /* [out] */ ClassID *pBaseClassId, /* [out] */ ULONG *pcRank); HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( ICorProfilerInfo9 * This, /* [in] */ ThreadID threadId, /* [out] */ DWORD *pdwWin32ThreadId); HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( ICorProfilerInfo9 * This, /* [out] */ ThreadID *pThreadId); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( ICorProfilerInfo9 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( ICorProfilerInfo9 * This, /* [in] */ FunctionID functionId, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *SetEventMask )( ICorProfilerInfo9 * This, /* [in] */ DWORD dwEvents); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( ICorProfilerInfo9 * This, /* [in] */ FunctionEnter *pFuncEnter, /* [in] */ FunctionLeave *pFuncLeave, /* [in] */ FunctionTailcall *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( ICorProfilerInfo9 * This, /* [in] */ FunctionIDMapper *pFunc); HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( ICorProfilerInfo9 * This, /* [in] */ FunctionID functionId, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppImport, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( ICorProfilerInfo9 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId); HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( ICorProfilerInfo9 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD dwOpenFlags, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppOut); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( ICorProfilerInfo9 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [out] */ LPCBYTE *ppMethodHeader, /* [out] */ ULONG *pcbMethodSize); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( ICorProfilerInfo9 * This, /* [in] */ ModuleID moduleId, /* [out] */ IMethodMalloc **ppMalloc); HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( ICorProfilerInfo9 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodid, /* [in] */ LPCBYTE pbNewILMethodHeader); HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( ICorProfilerInfo9 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ ProcessID *pProcessId); HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( ICorProfilerInfo9 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AppDomainID *pAppDomainId, /* [out] */ ModuleID *pModuleId); HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( ICorProfilerInfo9 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ForceGC )( ICorProfilerInfo9 * This); HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( ICorProfilerInfo9 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fStartJit, /* [in] */ ULONG cILMapEntries, /* [size_is][in] */ COR_IL_MAP rgILMapEntries[ ]); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( ICorProfilerInfo9 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( ICorProfilerInfo9 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( ICorProfilerInfo9 * This, /* [in] */ ThreadID threadId, /* [out] */ ContextID *pContextId); HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( ICorProfilerInfo9 * This, /* [in] */ BOOL fThisThreadOnly, /* [out] */ DWORD *pdwProfilerContext); HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( ICorProfilerInfo9 * This, /* [in] */ DWORD dwProfilerContext); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( ICorProfilerInfo9 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( ICorProfilerInfo9 * This, /* [in] */ ThreadID thread, /* [in] */ StackSnapshotCallback *callback, /* [in] */ ULONG32 infoFlags, /* [in] */ void *clientData, /* [size_is][in] */ BYTE context[ ], /* [in] */ ULONG32 contextSize); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( ICorProfilerInfo9 * This, /* [in] */ FunctionEnter2 *pFuncEnter, /* [in] */ FunctionLeave2 *pFuncLeave, /* [in] */ FunctionTailcall2 *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( ICorProfilerInfo9 * This, /* [in] */ FunctionID funcId, /* [in] */ COR_PRF_FRAME_INFO frameInfo, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken, /* [in] */ ULONG32 cTypeArgs, /* [out] */ ULONG32 *pcTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( ICorProfilerInfo9 * This, /* [out] */ ULONG *pBufferLengthOffset, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( ICorProfilerInfo9 * This, /* [in] */ ClassID classID, /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[ ], /* [in] */ ULONG cFieldOffset, /* [out] */ ULONG *pcFieldOffset, /* [out] */ ULONG *pulClassSize); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( ICorProfilerInfo9 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken, /* [out] */ ClassID *pParentClassId, /* [in] */ ULONG32 cNumTypeArgs, /* [out] */ ULONG32 *pcNumTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( ICorProfilerInfo9 * This, /* [in] */ FunctionID functionID, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( ICorProfilerInfo9 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdTypeDef typeDef, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ ClassID *pClassID); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( ICorProfilerInfo9 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdMethodDef funcDef, /* [in] */ ClassID classId, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ FunctionID *pFunctionID); HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( ICorProfilerInfo9 * This, /* [in] */ ModuleID moduleID, /* [out] */ ICorProfilerObjectEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( ICorProfilerInfo9 * This, /* [in] */ ObjectID objectId, /* [in] */ ULONG32 cDimensions, /* [size_is][out] */ ULONG32 pDimensionSizes[ ], /* [size_is][out] */ int pDimensionLowerBounds[ ], /* [out] */ BYTE **ppData); HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( ICorProfilerInfo9 * This, /* [in] */ ClassID classId, /* [out] */ ULONG32 *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( ICorProfilerInfo9 * This, /* [in] */ ThreadID threadId, /* [out] */ AppDomainID *pAppDomainId); HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( ICorProfilerInfo9 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( ICorProfilerInfo9 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( ICorProfilerInfo9 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( ICorProfilerInfo9 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ContextID contextId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( ICorProfilerInfo9 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo); HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( ICorProfilerInfo9 * This, /* [in] */ ULONG cObjectRanges, /* [out] */ ULONG *pcObjectRanges, /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[ ]); HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( ICorProfilerInfo9 * This, /* [in] */ ObjectID objectId, /* [out] */ COR_PRF_GC_GENERATION_RANGE *range); HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( ICorProfilerInfo9 * This, /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( ICorProfilerInfo9 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( ICorProfilerInfo9 * This, /* [in] */ DWORD dwExpectedCompletionMilliseconds); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( ICorProfilerInfo9 * This, /* [in] */ FunctionIDMapper2 *pFunc, /* [in] */ void *clientData); HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( ICorProfilerInfo9 * This, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( ICorProfilerInfo9 * This, /* [in] */ FunctionEnter3 *pFuncEnter3, /* [in] */ FunctionLeave3 *pFuncLeave3, /* [in] */ FunctionTailcall3 *pFuncTailcall3); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( ICorProfilerInfo9 * This, /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo, /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo, /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( ICorProfilerInfo9 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out][in] */ ULONG *pcbArgumentInfo, /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( ICorProfilerInfo9 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange); HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( ICorProfilerInfo9 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo); HRESULT ( STDMETHODCALLTYPE *EnumModules )( ICorProfilerInfo9 * This, /* [out] */ ICorProfilerModuleEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( ICorProfilerInfo9 * This, /* [out] */ USHORT *pClrInstanceId, /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType, /* [out] */ USHORT *pMajorVersion, /* [out] */ USHORT *pMinorVersion, /* [out] */ USHORT *pBuildNumber, /* [out] */ USHORT *pQFEVersion, /* [in] */ ULONG cchVersionString, /* [out] */ ULONG *pcchVersionString, /* [annotation][out] */ _Out_writes_to_(cchVersionString, *pcchVersionString) WCHAR szVersionString[ ]); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( ICorProfilerInfo9 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( ICorProfilerInfo9 * This, /* [in] */ ModuleID moduleId, /* [in] */ ULONG32 cAppDomainIds, /* [out] */ ULONG32 *pcAppDomainIds, /* [length_is][size_is][out] */ AppDomainID appDomainIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( ICorProfilerInfo9 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId, /* [out] */ DWORD *pdwModuleFlags); HRESULT ( STDMETHODCALLTYPE *EnumThreads )( ICorProfilerInfo9 * This, /* [out] */ ICorProfilerThreadEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *InitializeCurrentThread )( ICorProfilerInfo9 * This); HRESULT ( STDMETHODCALLTYPE *RequestReJIT )( ICorProfilerInfo9 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ]); HRESULT ( STDMETHODCALLTYPE *RequestRevert )( ICorProfilerInfo9 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ], /* [size_is][out] */ HRESULT status[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo3 )( ICorProfilerInfo9 * This, /* [in] */ FunctionID functionID, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP2 )( ICorProfilerInfo9 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId, /* [out] */ ReJITID *pReJitId); HRESULT ( STDMETHODCALLTYPE *GetReJITIDs )( ICorProfilerInfo9 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG cReJitIds, /* [out] */ ULONG *pcReJitIds, /* [length_is][size_is][out] */ ReJITID reJitIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping2 )( ICorProfilerInfo9 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions2 )( ICorProfilerInfo9 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetObjectSize2 )( ICorProfilerInfo9 * This, /* [in] */ ObjectID objectId, /* [out] */ SIZE_T *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask2 )( ICorProfilerInfo9 * This, /* [out] */ DWORD *pdwEventsLow, /* [out] */ DWORD *pdwEventsHigh); HRESULT ( STDMETHODCALLTYPE *SetEventMask2 )( ICorProfilerInfo9 * This, /* [in] */ DWORD dwEventsLow, /* [in] */ DWORD dwEventsHigh); HRESULT ( STDMETHODCALLTYPE *EnumNgenModuleMethodsInliningThisMethod )( ICorProfilerInfo9 * This, /* [in] */ ModuleID inlinersModuleId, /* [in] */ ModuleID inlineeModuleId, /* [in] */ mdMethodDef inlineeMethodId, /* [out] */ BOOL *incompleteData, /* [out] */ ICorProfilerMethodEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *ApplyMetaData )( ICorProfilerInfo9 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *GetInMemorySymbolsLength )( ICorProfilerInfo9 * This, /* [in] */ ModuleID moduleId, /* [out] */ DWORD *pCountSymbolBytes); HRESULT ( STDMETHODCALLTYPE *ReadInMemorySymbols )( ICorProfilerInfo9 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD symbolsReadOffset, /* [out] */ BYTE *pSymbolBytes, /* [in] */ DWORD countSymbolBytes, /* [out] */ DWORD *pCountSymbolBytesRead); HRESULT ( STDMETHODCALLTYPE *IsFunctionDynamic )( ICorProfilerInfo9 * This, /* [in] */ FunctionID functionId, /* [out] */ BOOL *isDynamic); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP3 )( ICorProfilerInfo9 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *functionId, /* [out] */ ReJITID *pReJitId); HRESULT ( STDMETHODCALLTYPE *GetDynamicFunctionInfo )( ICorProfilerInfo9 * This, /* [in] */ FunctionID functionId, /* [out] */ ModuleID *moduleId, /* [out] */ PCCOR_SIGNATURE *ppvSig, /* [out] */ ULONG *pbSig, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [out] */ WCHAR wszName[ ]); HRESULT ( STDMETHODCALLTYPE *GetNativeCodeStartAddresses )( ICorProfilerInfo9 * This, FunctionID functionID, ReJITID reJitId, ULONG32 cCodeStartAddresses, ULONG32 *pcCodeStartAddresses, UINT_PTR codeStartAddresses[ ]); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping3 )( ICorProfilerInfo9 * This, UINT_PTR pNativeCodeStartAddress, ULONG32 cMap, ULONG32 *pcMap, COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo4 )( ICorProfilerInfo9 * This, UINT_PTR pNativeCodeStartAddress, ULONG32 cCodeInfos, ULONG32 *pcCodeInfos, COR_PRF_CODE_INFO codeInfos[ ]); END_INTERFACE } ICorProfilerInfo9Vtbl; interface ICorProfilerInfo9 { CONST_VTBL struct ICorProfilerInfo9Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerInfo9_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerInfo9_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerInfo9_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerInfo9_GetClassFromObject(This,objectId,pClassId) \ ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) #define ICorProfilerInfo9_GetClassFromToken(This,moduleId,typeDef,pClassId) \ ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) #define ICorProfilerInfo9_GetCodeInfo(This,functionId,pStart,pcSize) \ ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) #define ICorProfilerInfo9_GetEventMask(This,pdwEvents) \ ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) #define ICorProfilerInfo9_GetFunctionFromIP(This,ip,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) #define ICorProfilerInfo9_GetFunctionFromToken(This,moduleId,token,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) #define ICorProfilerInfo9_GetHandleFromThread(This,threadId,phThread) \ ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) #define ICorProfilerInfo9_GetObjectSize(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) #define ICorProfilerInfo9_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \ ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) #define ICorProfilerInfo9_GetThreadInfo(This,threadId,pdwWin32ThreadId) \ ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) #define ICorProfilerInfo9_GetCurrentThreadID(This,pThreadId) \ ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) #define ICorProfilerInfo9_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \ ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) #define ICorProfilerInfo9_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) \ ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) #define ICorProfilerInfo9_SetEventMask(This,dwEvents) \ ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) #define ICorProfilerInfo9_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo9_SetFunctionIDMapper(This,pFunc) \ ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) #define ICorProfilerInfo9_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) \ ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) #define ICorProfilerInfo9_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) \ ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) #define ICorProfilerInfo9_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) \ ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) #define ICorProfilerInfo9_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) \ ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) #define ICorProfilerInfo9_GetILFunctionBodyAllocator(This,moduleId,ppMalloc) \ ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) #define ICorProfilerInfo9_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) \ ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) #define ICorProfilerInfo9_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) \ ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) #define ICorProfilerInfo9_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) \ ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) #define ICorProfilerInfo9_SetFunctionReJIT(This,functionId) \ ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) #define ICorProfilerInfo9_ForceGC(This) \ ( (This)->lpVtbl -> ForceGC(This) ) #define ICorProfilerInfo9_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) \ ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) #define ICorProfilerInfo9_GetInprocInspectionInterface(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) #define ICorProfilerInfo9_GetInprocInspectionIThisThread(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) #define ICorProfilerInfo9_GetThreadContext(This,threadId,pContextId) \ ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) #define ICorProfilerInfo9_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) \ ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) #define ICorProfilerInfo9_EndInprocDebugging(This,dwProfilerContext) \ ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) #define ICorProfilerInfo9_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) #define ICorProfilerInfo9_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) \ ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) #define ICorProfilerInfo9_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo9_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) #define ICorProfilerInfo9_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo9_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) \ ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) #define ICorProfilerInfo9_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) #define ICorProfilerInfo9_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo9_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) \ ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) #define ICorProfilerInfo9_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) \ ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) #define ICorProfilerInfo9_EnumModuleFrozenObjects(This,moduleID,ppEnum) \ ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) #define ICorProfilerInfo9_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) \ ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) #define ICorProfilerInfo9_GetBoxClassLayout(This,classId,pBufferOffset) \ ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) #define ICorProfilerInfo9_GetThreadAppDomain(This,threadId,pAppDomainId) \ ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) #define ICorProfilerInfo9_GetRVAStaticAddress(This,classId,fieldToken,ppAddress) \ ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) #define ICorProfilerInfo9_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) \ ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) #define ICorProfilerInfo9_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) #define ICorProfilerInfo9_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \ ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) #define ICorProfilerInfo9_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) \ ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) #define ICorProfilerInfo9_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) \ ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) #define ICorProfilerInfo9_GetObjectGeneration(This,objectId,range) \ ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) #define ICorProfilerInfo9_GetNotifiedExceptionClauseInfo(This,pinfo) \ ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) #define ICorProfilerInfo9_EnumJITedFunctions(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) #define ICorProfilerInfo9_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \ ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) #define ICorProfilerInfo9_SetFunctionIDMapper2(This,pFunc,clientData) \ ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) #define ICorProfilerInfo9_GetStringLayout2(This,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo9_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) #define ICorProfilerInfo9_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) #define ICorProfilerInfo9_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) \ ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) #define ICorProfilerInfo9_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) \ ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) #define ICorProfilerInfo9_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \ ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) #define ICorProfilerInfo9_EnumModules(This,ppEnum) \ ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) #define ICorProfilerInfo9_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) \ ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) #define ICorProfilerInfo9_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) #define ICorProfilerInfo9_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) \ ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) #define ICorProfilerInfo9_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) \ ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) #define ICorProfilerInfo9_EnumThreads(This,ppEnum) \ ( (This)->lpVtbl -> EnumThreads(This,ppEnum) ) #define ICorProfilerInfo9_InitializeCurrentThread(This) \ ( (This)->lpVtbl -> InitializeCurrentThread(This) ) #define ICorProfilerInfo9_RequestReJIT(This,cFunctions,moduleIds,methodIds) \ ( (This)->lpVtbl -> RequestReJIT(This,cFunctions,moduleIds,methodIds) ) #define ICorProfilerInfo9_RequestRevert(This,cFunctions,moduleIds,methodIds,status) \ ( (This)->lpVtbl -> RequestRevert(This,cFunctions,moduleIds,methodIds,status) ) #define ICorProfilerInfo9_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo9_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) \ ( (This)->lpVtbl -> GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) ) #define ICorProfilerInfo9_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) \ ( (This)->lpVtbl -> GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) ) #define ICorProfilerInfo9_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) ) #define ICorProfilerInfo9_EnumJITedFunctions2(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions2(This,ppEnum) ) #define ICorProfilerInfo9_GetObjectSize2(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize2(This,objectId,pcSize) ) #define ICorProfilerInfo9_GetEventMask2(This,pdwEventsLow,pdwEventsHigh) \ ( (This)->lpVtbl -> GetEventMask2(This,pdwEventsLow,pdwEventsHigh) ) #define ICorProfilerInfo9_SetEventMask2(This,dwEventsLow,dwEventsHigh) \ ( (This)->lpVtbl -> SetEventMask2(This,dwEventsLow,dwEventsHigh) ) #define ICorProfilerInfo9_EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) \ ( (This)->lpVtbl -> EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) ) #define ICorProfilerInfo9_ApplyMetaData(This,moduleId) \ ( (This)->lpVtbl -> ApplyMetaData(This,moduleId) ) #define ICorProfilerInfo9_GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes) \ ( (This)->lpVtbl -> GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes) ) #define ICorProfilerInfo9_ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead) \ ( (This)->lpVtbl -> ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead) ) #define ICorProfilerInfo9_IsFunctionDynamic(This,functionId,isDynamic) \ ( (This)->lpVtbl -> IsFunctionDynamic(This,functionId,isDynamic) ) #define ICorProfilerInfo9_GetFunctionFromIP3(This,ip,functionId,pReJitId) \ ( (This)->lpVtbl -> GetFunctionFromIP3(This,ip,functionId,pReJitId) ) #define ICorProfilerInfo9_GetDynamicFunctionInfo(This,functionId,moduleId,ppvSig,pbSig,cchName,pcchName,wszName) \ ( (This)->lpVtbl -> GetDynamicFunctionInfo(This,functionId,moduleId,ppvSig,pbSig,cchName,pcchName,wszName) ) #define ICorProfilerInfo9_GetNativeCodeStartAddresses(This,functionID,reJitId,cCodeStartAddresses,pcCodeStartAddresses,codeStartAddresses) \ ( (This)->lpVtbl -> GetNativeCodeStartAddresses(This,functionID,reJitId,cCodeStartAddresses,pcCodeStartAddresses,codeStartAddresses) ) #define ICorProfilerInfo9_GetILToNativeMapping3(This,pNativeCodeStartAddress,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping3(This,pNativeCodeStartAddress,cMap,pcMap,map) ) #define ICorProfilerInfo9_GetCodeInfo4(This,pNativeCodeStartAddress,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo4(This,pNativeCodeStartAddress,cCodeInfos,pcCodeInfos,codeInfos) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerInfo9_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerInfo10_INTERFACE_DEFINED__ #define __ICorProfilerInfo10_INTERFACE_DEFINED__ /* interface ICorProfilerInfo10 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerInfo10; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("2F1B5152-C869-40C9-AA5F-3ABE026BD720") ICorProfilerInfo10 : public ICorProfilerInfo9 { public: virtual HRESULT STDMETHODCALLTYPE EnumerateObjectReferences( ObjectID objectId, ObjectReferenceCallback callback, void *clientData) = 0; virtual HRESULT STDMETHODCALLTYPE IsFrozenObject( ObjectID objectId, BOOL *pbFrozen) = 0; virtual HRESULT STDMETHODCALLTYPE GetLOHObjectSizeThreshold( DWORD *pThreshold) = 0; virtual HRESULT STDMETHODCALLTYPE RequestReJITWithInliners( /* [in] */ DWORD dwRejitFlags, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE SuspendRuntime( void) = 0; virtual HRESULT STDMETHODCALLTYPE ResumeRuntime( void) = 0; }; #else /* C style interface */ typedef struct ICorProfilerInfo10Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerInfo10 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerInfo10 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerInfo10 * This); HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( ICorProfilerInfo10 * This, /* [in] */ ObjectID objectId, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( ICorProfilerInfo10 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdTypeDef typeDef, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( ICorProfilerInfo10 * This, /* [in] */ FunctionID functionId, /* [out] */ LPCBYTE *pStart, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask )( ICorProfilerInfo10 * This, /* [out] */ DWORD *pdwEvents); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( ICorProfilerInfo10 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( ICorProfilerInfo10 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdToken token, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( ICorProfilerInfo10 * This, /* [in] */ ThreadID threadId, /* [out] */ HANDLE *phThread); HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( ICorProfilerInfo10 * This, /* [in] */ ObjectID objectId, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( ICorProfilerInfo10 * This, /* [in] */ ClassID classId, /* [out] */ CorElementType *pBaseElemType, /* [out] */ ClassID *pBaseClassId, /* [out] */ ULONG *pcRank); HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( ICorProfilerInfo10 * This, /* [in] */ ThreadID threadId, /* [out] */ DWORD *pdwWin32ThreadId); HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( ICorProfilerInfo10 * This, /* [out] */ ThreadID *pThreadId); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( ICorProfilerInfo10 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( ICorProfilerInfo10 * This, /* [in] */ FunctionID functionId, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *SetEventMask )( ICorProfilerInfo10 * This, /* [in] */ DWORD dwEvents); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( ICorProfilerInfo10 * This, /* [in] */ FunctionEnter *pFuncEnter, /* [in] */ FunctionLeave *pFuncLeave, /* [in] */ FunctionTailcall *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( ICorProfilerInfo10 * This, /* [in] */ FunctionIDMapper *pFunc); HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( ICorProfilerInfo10 * This, /* [in] */ FunctionID functionId, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppImport, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( ICorProfilerInfo10 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId); HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( ICorProfilerInfo10 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD dwOpenFlags, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppOut); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( ICorProfilerInfo10 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [out] */ LPCBYTE *ppMethodHeader, /* [out] */ ULONG *pcbMethodSize); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( ICorProfilerInfo10 * This, /* [in] */ ModuleID moduleId, /* [out] */ IMethodMalloc **ppMalloc); HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( ICorProfilerInfo10 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodid, /* [in] */ LPCBYTE pbNewILMethodHeader); HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( ICorProfilerInfo10 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ ProcessID *pProcessId); HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( ICorProfilerInfo10 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AppDomainID *pAppDomainId, /* [out] */ ModuleID *pModuleId); HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( ICorProfilerInfo10 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ForceGC )( ICorProfilerInfo10 * This); HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( ICorProfilerInfo10 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fStartJit, /* [in] */ ULONG cILMapEntries, /* [size_is][in] */ COR_IL_MAP rgILMapEntries[ ]); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( ICorProfilerInfo10 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( ICorProfilerInfo10 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( ICorProfilerInfo10 * This, /* [in] */ ThreadID threadId, /* [out] */ ContextID *pContextId); HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( ICorProfilerInfo10 * This, /* [in] */ BOOL fThisThreadOnly, /* [out] */ DWORD *pdwProfilerContext); HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( ICorProfilerInfo10 * This, /* [in] */ DWORD dwProfilerContext); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( ICorProfilerInfo10 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( ICorProfilerInfo10 * This, /* [in] */ ThreadID thread, /* [in] */ StackSnapshotCallback *callback, /* [in] */ ULONG32 infoFlags, /* [in] */ void *clientData, /* [size_is][in] */ BYTE context[ ], /* [in] */ ULONG32 contextSize); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( ICorProfilerInfo10 * This, /* [in] */ FunctionEnter2 *pFuncEnter, /* [in] */ FunctionLeave2 *pFuncLeave, /* [in] */ FunctionTailcall2 *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( ICorProfilerInfo10 * This, /* [in] */ FunctionID funcId, /* [in] */ COR_PRF_FRAME_INFO frameInfo, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken, /* [in] */ ULONG32 cTypeArgs, /* [out] */ ULONG32 *pcTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( ICorProfilerInfo10 * This, /* [out] */ ULONG *pBufferLengthOffset, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( ICorProfilerInfo10 * This, /* [in] */ ClassID classID, /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[ ], /* [in] */ ULONG cFieldOffset, /* [out] */ ULONG *pcFieldOffset, /* [out] */ ULONG *pulClassSize); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( ICorProfilerInfo10 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken, /* [out] */ ClassID *pParentClassId, /* [in] */ ULONG32 cNumTypeArgs, /* [out] */ ULONG32 *pcNumTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( ICorProfilerInfo10 * This, /* [in] */ FunctionID functionID, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( ICorProfilerInfo10 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdTypeDef typeDef, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ ClassID *pClassID); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( ICorProfilerInfo10 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdMethodDef funcDef, /* [in] */ ClassID classId, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ FunctionID *pFunctionID); HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( ICorProfilerInfo10 * This, /* [in] */ ModuleID moduleID, /* [out] */ ICorProfilerObjectEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( ICorProfilerInfo10 * This, /* [in] */ ObjectID objectId, /* [in] */ ULONG32 cDimensions, /* [size_is][out] */ ULONG32 pDimensionSizes[ ], /* [size_is][out] */ int pDimensionLowerBounds[ ], /* [out] */ BYTE **ppData); HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( ICorProfilerInfo10 * This, /* [in] */ ClassID classId, /* [out] */ ULONG32 *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( ICorProfilerInfo10 * This, /* [in] */ ThreadID threadId, /* [out] */ AppDomainID *pAppDomainId); HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( ICorProfilerInfo10 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( ICorProfilerInfo10 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( ICorProfilerInfo10 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( ICorProfilerInfo10 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ContextID contextId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( ICorProfilerInfo10 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo); HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( ICorProfilerInfo10 * This, /* [in] */ ULONG cObjectRanges, /* [out] */ ULONG *pcObjectRanges, /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[ ]); HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( ICorProfilerInfo10 * This, /* [in] */ ObjectID objectId, /* [out] */ COR_PRF_GC_GENERATION_RANGE *range); HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( ICorProfilerInfo10 * This, /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( ICorProfilerInfo10 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( ICorProfilerInfo10 * This, /* [in] */ DWORD dwExpectedCompletionMilliseconds); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( ICorProfilerInfo10 * This, /* [in] */ FunctionIDMapper2 *pFunc, /* [in] */ void *clientData); HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( ICorProfilerInfo10 * This, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( ICorProfilerInfo10 * This, /* [in] */ FunctionEnter3 *pFuncEnter3, /* [in] */ FunctionLeave3 *pFuncLeave3, /* [in] */ FunctionTailcall3 *pFuncTailcall3); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( ICorProfilerInfo10 * This, /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo, /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo, /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( ICorProfilerInfo10 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out][in] */ ULONG *pcbArgumentInfo, /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( ICorProfilerInfo10 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange); HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( ICorProfilerInfo10 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo); HRESULT ( STDMETHODCALLTYPE *EnumModules )( ICorProfilerInfo10 * This, /* [out] */ ICorProfilerModuleEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( ICorProfilerInfo10 * This, /* [out] */ USHORT *pClrInstanceId, /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType, /* [out] */ USHORT *pMajorVersion, /* [out] */ USHORT *pMinorVersion, /* [out] */ USHORT *pBuildNumber, /* [out] */ USHORT *pQFEVersion, /* [in] */ ULONG cchVersionString, /* [out] */ ULONG *pcchVersionString, /* [annotation][out] */ _Out_writes_to_(cchVersionString, *pcchVersionString) WCHAR szVersionString[ ]); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( ICorProfilerInfo10 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( ICorProfilerInfo10 * This, /* [in] */ ModuleID moduleId, /* [in] */ ULONG32 cAppDomainIds, /* [out] */ ULONG32 *pcAppDomainIds, /* [length_is][size_is][out] */ AppDomainID appDomainIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( ICorProfilerInfo10 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId, /* [out] */ DWORD *pdwModuleFlags); HRESULT ( STDMETHODCALLTYPE *EnumThreads )( ICorProfilerInfo10 * This, /* [out] */ ICorProfilerThreadEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *InitializeCurrentThread )( ICorProfilerInfo10 * This); HRESULT ( STDMETHODCALLTYPE *RequestReJIT )( ICorProfilerInfo10 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ]); HRESULT ( STDMETHODCALLTYPE *RequestRevert )( ICorProfilerInfo10 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ], /* [size_is][out] */ HRESULT status[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo3 )( ICorProfilerInfo10 * This, /* [in] */ FunctionID functionID, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP2 )( ICorProfilerInfo10 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId, /* [out] */ ReJITID *pReJitId); HRESULT ( STDMETHODCALLTYPE *GetReJITIDs )( ICorProfilerInfo10 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG cReJitIds, /* [out] */ ULONG *pcReJitIds, /* [length_is][size_is][out] */ ReJITID reJitIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping2 )( ICorProfilerInfo10 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions2 )( ICorProfilerInfo10 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetObjectSize2 )( ICorProfilerInfo10 * This, /* [in] */ ObjectID objectId, /* [out] */ SIZE_T *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask2 )( ICorProfilerInfo10 * This, /* [out] */ DWORD *pdwEventsLow, /* [out] */ DWORD *pdwEventsHigh); HRESULT ( STDMETHODCALLTYPE *SetEventMask2 )( ICorProfilerInfo10 * This, /* [in] */ DWORD dwEventsLow, /* [in] */ DWORD dwEventsHigh); HRESULT ( STDMETHODCALLTYPE *EnumNgenModuleMethodsInliningThisMethod )( ICorProfilerInfo10 * This, /* [in] */ ModuleID inlinersModuleId, /* [in] */ ModuleID inlineeModuleId, /* [in] */ mdMethodDef inlineeMethodId, /* [out] */ BOOL *incompleteData, /* [out] */ ICorProfilerMethodEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *ApplyMetaData )( ICorProfilerInfo10 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *GetInMemorySymbolsLength )( ICorProfilerInfo10 * This, /* [in] */ ModuleID moduleId, /* [out] */ DWORD *pCountSymbolBytes); HRESULT ( STDMETHODCALLTYPE *ReadInMemorySymbols )( ICorProfilerInfo10 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD symbolsReadOffset, /* [out] */ BYTE *pSymbolBytes, /* [in] */ DWORD countSymbolBytes, /* [out] */ DWORD *pCountSymbolBytesRead); HRESULT ( STDMETHODCALLTYPE *IsFunctionDynamic )( ICorProfilerInfo10 * This, /* [in] */ FunctionID functionId, /* [out] */ BOOL *isDynamic); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP3 )( ICorProfilerInfo10 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *functionId, /* [out] */ ReJITID *pReJitId); HRESULT ( STDMETHODCALLTYPE *GetDynamicFunctionInfo )( ICorProfilerInfo10 * This, /* [in] */ FunctionID functionId, /* [out] */ ModuleID *moduleId, /* [out] */ PCCOR_SIGNATURE *ppvSig, /* [out] */ ULONG *pbSig, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [out] */ WCHAR wszName[ ]); HRESULT ( STDMETHODCALLTYPE *GetNativeCodeStartAddresses )( ICorProfilerInfo10 * This, FunctionID functionID, ReJITID reJitId, ULONG32 cCodeStartAddresses, ULONG32 *pcCodeStartAddresses, UINT_PTR codeStartAddresses[ ]); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping3 )( ICorProfilerInfo10 * This, UINT_PTR pNativeCodeStartAddress, ULONG32 cMap, ULONG32 *pcMap, COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo4 )( ICorProfilerInfo10 * This, UINT_PTR pNativeCodeStartAddress, ULONG32 cCodeInfos, ULONG32 *pcCodeInfos, COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *EnumerateObjectReferences )( ICorProfilerInfo10 * This, ObjectID objectId, ObjectReferenceCallback callback, void *clientData); HRESULT ( STDMETHODCALLTYPE *IsFrozenObject )( ICorProfilerInfo10 * This, ObjectID objectId, BOOL *pbFrozen); HRESULT ( STDMETHODCALLTYPE *GetLOHObjectSizeThreshold )( ICorProfilerInfo10 * This, DWORD *pThreshold); HRESULT ( STDMETHODCALLTYPE *RequestReJITWithInliners )( ICorProfilerInfo10 * This, /* [in] */ DWORD dwRejitFlags, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ]); HRESULT ( STDMETHODCALLTYPE *SuspendRuntime )( ICorProfilerInfo10 * This); HRESULT ( STDMETHODCALLTYPE *ResumeRuntime )( ICorProfilerInfo10 * This); END_INTERFACE } ICorProfilerInfo10Vtbl; interface ICorProfilerInfo10 { CONST_VTBL struct ICorProfilerInfo10Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerInfo10_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerInfo10_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerInfo10_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerInfo10_GetClassFromObject(This,objectId,pClassId) \ ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) #define ICorProfilerInfo10_GetClassFromToken(This,moduleId,typeDef,pClassId) \ ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) #define ICorProfilerInfo10_GetCodeInfo(This,functionId,pStart,pcSize) \ ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) #define ICorProfilerInfo10_GetEventMask(This,pdwEvents) \ ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) #define ICorProfilerInfo10_GetFunctionFromIP(This,ip,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) #define ICorProfilerInfo10_GetFunctionFromToken(This,moduleId,token,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) #define ICorProfilerInfo10_GetHandleFromThread(This,threadId,phThread) \ ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) #define ICorProfilerInfo10_GetObjectSize(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) #define ICorProfilerInfo10_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \ ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) #define ICorProfilerInfo10_GetThreadInfo(This,threadId,pdwWin32ThreadId) \ ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) #define ICorProfilerInfo10_GetCurrentThreadID(This,pThreadId) \ ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) #define ICorProfilerInfo10_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \ ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) #define ICorProfilerInfo10_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) \ ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) #define ICorProfilerInfo10_SetEventMask(This,dwEvents) \ ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) #define ICorProfilerInfo10_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo10_SetFunctionIDMapper(This,pFunc) \ ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) #define ICorProfilerInfo10_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) \ ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) #define ICorProfilerInfo10_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) \ ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) #define ICorProfilerInfo10_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) \ ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) #define ICorProfilerInfo10_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) \ ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) #define ICorProfilerInfo10_GetILFunctionBodyAllocator(This,moduleId,ppMalloc) \ ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) #define ICorProfilerInfo10_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) \ ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) #define ICorProfilerInfo10_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) \ ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) #define ICorProfilerInfo10_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) \ ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) #define ICorProfilerInfo10_SetFunctionReJIT(This,functionId) \ ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) #define ICorProfilerInfo10_ForceGC(This) \ ( (This)->lpVtbl -> ForceGC(This) ) #define ICorProfilerInfo10_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) \ ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) #define ICorProfilerInfo10_GetInprocInspectionInterface(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) #define ICorProfilerInfo10_GetInprocInspectionIThisThread(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) #define ICorProfilerInfo10_GetThreadContext(This,threadId,pContextId) \ ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) #define ICorProfilerInfo10_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) \ ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) #define ICorProfilerInfo10_EndInprocDebugging(This,dwProfilerContext) \ ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) #define ICorProfilerInfo10_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) #define ICorProfilerInfo10_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) \ ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) #define ICorProfilerInfo10_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo10_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) #define ICorProfilerInfo10_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo10_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) \ ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) #define ICorProfilerInfo10_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) #define ICorProfilerInfo10_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo10_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) \ ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) #define ICorProfilerInfo10_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) \ ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) #define ICorProfilerInfo10_EnumModuleFrozenObjects(This,moduleID,ppEnum) \ ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) #define ICorProfilerInfo10_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) \ ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) #define ICorProfilerInfo10_GetBoxClassLayout(This,classId,pBufferOffset) \ ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) #define ICorProfilerInfo10_GetThreadAppDomain(This,threadId,pAppDomainId) \ ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) #define ICorProfilerInfo10_GetRVAStaticAddress(This,classId,fieldToken,ppAddress) \ ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) #define ICorProfilerInfo10_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) \ ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) #define ICorProfilerInfo10_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) #define ICorProfilerInfo10_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \ ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) #define ICorProfilerInfo10_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) \ ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) #define ICorProfilerInfo10_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) \ ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) #define ICorProfilerInfo10_GetObjectGeneration(This,objectId,range) \ ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) #define ICorProfilerInfo10_GetNotifiedExceptionClauseInfo(This,pinfo) \ ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) #define ICorProfilerInfo10_EnumJITedFunctions(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) #define ICorProfilerInfo10_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \ ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) #define ICorProfilerInfo10_SetFunctionIDMapper2(This,pFunc,clientData) \ ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) #define ICorProfilerInfo10_GetStringLayout2(This,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo10_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) #define ICorProfilerInfo10_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) #define ICorProfilerInfo10_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) \ ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) #define ICorProfilerInfo10_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) \ ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) #define ICorProfilerInfo10_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \ ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) #define ICorProfilerInfo10_EnumModules(This,ppEnum) \ ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) #define ICorProfilerInfo10_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) \ ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) #define ICorProfilerInfo10_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) #define ICorProfilerInfo10_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) \ ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) #define ICorProfilerInfo10_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) \ ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) #define ICorProfilerInfo10_EnumThreads(This,ppEnum) \ ( (This)->lpVtbl -> EnumThreads(This,ppEnum) ) #define ICorProfilerInfo10_InitializeCurrentThread(This) \ ( (This)->lpVtbl -> InitializeCurrentThread(This) ) #define ICorProfilerInfo10_RequestReJIT(This,cFunctions,moduleIds,methodIds) \ ( (This)->lpVtbl -> RequestReJIT(This,cFunctions,moduleIds,methodIds) ) #define ICorProfilerInfo10_RequestRevert(This,cFunctions,moduleIds,methodIds,status) \ ( (This)->lpVtbl -> RequestRevert(This,cFunctions,moduleIds,methodIds,status) ) #define ICorProfilerInfo10_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo10_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) \ ( (This)->lpVtbl -> GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) ) #define ICorProfilerInfo10_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) \ ( (This)->lpVtbl -> GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) ) #define ICorProfilerInfo10_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) ) #define ICorProfilerInfo10_EnumJITedFunctions2(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions2(This,ppEnum) ) #define ICorProfilerInfo10_GetObjectSize2(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize2(This,objectId,pcSize) ) #define ICorProfilerInfo10_GetEventMask2(This,pdwEventsLow,pdwEventsHigh) \ ( (This)->lpVtbl -> GetEventMask2(This,pdwEventsLow,pdwEventsHigh) ) #define ICorProfilerInfo10_SetEventMask2(This,dwEventsLow,dwEventsHigh) \ ( (This)->lpVtbl -> SetEventMask2(This,dwEventsLow,dwEventsHigh) ) #define ICorProfilerInfo10_EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) \ ( (This)->lpVtbl -> EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) ) #define ICorProfilerInfo10_ApplyMetaData(This,moduleId) \ ( (This)->lpVtbl -> ApplyMetaData(This,moduleId) ) #define ICorProfilerInfo10_GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes) \ ( (This)->lpVtbl -> GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes) ) #define ICorProfilerInfo10_ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead) \ ( (This)->lpVtbl -> ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead) ) #define ICorProfilerInfo10_IsFunctionDynamic(This,functionId,isDynamic) \ ( (This)->lpVtbl -> IsFunctionDynamic(This,functionId,isDynamic) ) #define ICorProfilerInfo10_GetFunctionFromIP3(This,ip,functionId,pReJitId) \ ( (This)->lpVtbl -> GetFunctionFromIP3(This,ip,functionId,pReJitId) ) #define ICorProfilerInfo10_GetDynamicFunctionInfo(This,functionId,moduleId,ppvSig,pbSig,cchName,pcchName,wszName) \ ( (This)->lpVtbl -> GetDynamicFunctionInfo(This,functionId,moduleId,ppvSig,pbSig,cchName,pcchName,wszName) ) #define ICorProfilerInfo10_GetNativeCodeStartAddresses(This,functionID,reJitId,cCodeStartAddresses,pcCodeStartAddresses,codeStartAddresses) \ ( (This)->lpVtbl -> GetNativeCodeStartAddresses(This,functionID,reJitId,cCodeStartAddresses,pcCodeStartAddresses,codeStartAddresses) ) #define ICorProfilerInfo10_GetILToNativeMapping3(This,pNativeCodeStartAddress,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping3(This,pNativeCodeStartAddress,cMap,pcMap,map) ) #define ICorProfilerInfo10_GetCodeInfo4(This,pNativeCodeStartAddress,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo4(This,pNativeCodeStartAddress,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo10_EnumerateObjectReferences(This,objectId,callback,clientData) \ ( (This)->lpVtbl -> EnumerateObjectReferences(This,objectId,callback,clientData) ) #define ICorProfilerInfo10_IsFrozenObject(This,objectId,pbFrozen) \ ( (This)->lpVtbl -> IsFrozenObject(This,objectId,pbFrozen) ) #define ICorProfilerInfo10_GetLOHObjectSizeThreshold(This,pThreshold) \ ( (This)->lpVtbl -> GetLOHObjectSizeThreshold(This,pThreshold) ) #define ICorProfilerInfo10_RequestReJITWithInliners(This,dwRejitFlags,cFunctions,moduleIds,methodIds) \ ( (This)->lpVtbl -> RequestReJITWithInliners(This,dwRejitFlags,cFunctions,moduleIds,methodIds) ) #define ICorProfilerInfo10_SuspendRuntime(This) \ ( (This)->lpVtbl -> SuspendRuntime(This) ) #define ICorProfilerInfo10_ResumeRuntime(This) \ ( (This)->lpVtbl -> ResumeRuntime(This) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerInfo10_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerInfo11_INTERFACE_DEFINED__ #define __ICorProfilerInfo11_INTERFACE_DEFINED__ /* interface ICorProfilerInfo11 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerInfo11; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("06398876-8987-4154-B621-40A00D6E4D04") ICorProfilerInfo11 : public ICorProfilerInfo10 { public: virtual HRESULT STDMETHODCALLTYPE GetEnvironmentVariable( /* [string][in] */ const WCHAR *szName, /* [in] */ ULONG cchValue, /* [out] */ ULONG *pcchValue, /* [annotation][out] */ _Out_writes_to_(cchValue, *pcchValue) WCHAR szValue[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE SetEnvironmentVariable( /* [string][in] */ const WCHAR *szName, /* [string][in] */ const WCHAR *szValue) = 0; }; #else /* C style interface */ typedef struct ICorProfilerInfo11Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerInfo11 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerInfo11 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerInfo11 * This); HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( ICorProfilerInfo11 * This, /* [in] */ ObjectID objectId, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( ICorProfilerInfo11 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdTypeDef typeDef, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( ICorProfilerInfo11 * This, /* [in] */ FunctionID functionId, /* [out] */ LPCBYTE *pStart, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask )( ICorProfilerInfo11 * This, /* [out] */ DWORD *pdwEvents); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( ICorProfilerInfo11 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( ICorProfilerInfo11 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdToken token, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( ICorProfilerInfo11 * This, /* [in] */ ThreadID threadId, /* [out] */ HANDLE *phThread); HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( ICorProfilerInfo11 * This, /* [in] */ ObjectID objectId, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( ICorProfilerInfo11 * This, /* [in] */ ClassID classId, /* [out] */ CorElementType *pBaseElemType, /* [out] */ ClassID *pBaseClassId, /* [out] */ ULONG *pcRank); HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( ICorProfilerInfo11 * This, /* [in] */ ThreadID threadId, /* [out] */ DWORD *pdwWin32ThreadId); HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( ICorProfilerInfo11 * This, /* [out] */ ThreadID *pThreadId); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( ICorProfilerInfo11 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( ICorProfilerInfo11 * This, /* [in] */ FunctionID functionId, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *SetEventMask )( ICorProfilerInfo11 * This, /* [in] */ DWORD dwEvents); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( ICorProfilerInfo11 * This, /* [in] */ FunctionEnter *pFuncEnter, /* [in] */ FunctionLeave *pFuncLeave, /* [in] */ FunctionTailcall *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( ICorProfilerInfo11 * This, /* [in] */ FunctionIDMapper *pFunc); HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( ICorProfilerInfo11 * This, /* [in] */ FunctionID functionId, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppImport, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( ICorProfilerInfo11 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId); HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( ICorProfilerInfo11 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD dwOpenFlags, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppOut); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( ICorProfilerInfo11 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [out] */ LPCBYTE *ppMethodHeader, /* [out] */ ULONG *pcbMethodSize); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( ICorProfilerInfo11 * This, /* [in] */ ModuleID moduleId, /* [out] */ IMethodMalloc **ppMalloc); HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( ICorProfilerInfo11 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodid, /* [in] */ LPCBYTE pbNewILMethodHeader); HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( ICorProfilerInfo11 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ ProcessID *pProcessId); HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( ICorProfilerInfo11 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AppDomainID *pAppDomainId, /* [out] */ ModuleID *pModuleId); HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( ICorProfilerInfo11 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ForceGC )( ICorProfilerInfo11 * This); HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( ICorProfilerInfo11 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fStartJit, /* [in] */ ULONG cILMapEntries, /* [size_is][in] */ COR_IL_MAP rgILMapEntries[ ]); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( ICorProfilerInfo11 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( ICorProfilerInfo11 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( ICorProfilerInfo11 * This, /* [in] */ ThreadID threadId, /* [out] */ ContextID *pContextId); HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( ICorProfilerInfo11 * This, /* [in] */ BOOL fThisThreadOnly, /* [out] */ DWORD *pdwProfilerContext); HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( ICorProfilerInfo11 * This, /* [in] */ DWORD dwProfilerContext); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( ICorProfilerInfo11 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( ICorProfilerInfo11 * This, /* [in] */ ThreadID thread, /* [in] */ StackSnapshotCallback *callback, /* [in] */ ULONG32 infoFlags, /* [in] */ void *clientData, /* [size_is][in] */ BYTE context[ ], /* [in] */ ULONG32 contextSize); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( ICorProfilerInfo11 * This, /* [in] */ FunctionEnter2 *pFuncEnter, /* [in] */ FunctionLeave2 *pFuncLeave, /* [in] */ FunctionTailcall2 *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( ICorProfilerInfo11 * This, /* [in] */ FunctionID funcId, /* [in] */ COR_PRF_FRAME_INFO frameInfo, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken, /* [in] */ ULONG32 cTypeArgs, /* [out] */ ULONG32 *pcTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( ICorProfilerInfo11 * This, /* [out] */ ULONG *pBufferLengthOffset, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( ICorProfilerInfo11 * This, /* [in] */ ClassID classID, /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[ ], /* [in] */ ULONG cFieldOffset, /* [out] */ ULONG *pcFieldOffset, /* [out] */ ULONG *pulClassSize); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( ICorProfilerInfo11 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken, /* [out] */ ClassID *pParentClassId, /* [in] */ ULONG32 cNumTypeArgs, /* [out] */ ULONG32 *pcNumTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( ICorProfilerInfo11 * This, /* [in] */ FunctionID functionID, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( ICorProfilerInfo11 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdTypeDef typeDef, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ ClassID *pClassID); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( ICorProfilerInfo11 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdMethodDef funcDef, /* [in] */ ClassID classId, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ FunctionID *pFunctionID); HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( ICorProfilerInfo11 * This, /* [in] */ ModuleID moduleID, /* [out] */ ICorProfilerObjectEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( ICorProfilerInfo11 * This, /* [in] */ ObjectID objectId, /* [in] */ ULONG32 cDimensions, /* [size_is][out] */ ULONG32 pDimensionSizes[ ], /* [size_is][out] */ int pDimensionLowerBounds[ ], /* [out] */ BYTE **ppData); HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( ICorProfilerInfo11 * This, /* [in] */ ClassID classId, /* [out] */ ULONG32 *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( ICorProfilerInfo11 * This, /* [in] */ ThreadID threadId, /* [out] */ AppDomainID *pAppDomainId); HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( ICorProfilerInfo11 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( ICorProfilerInfo11 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( ICorProfilerInfo11 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( ICorProfilerInfo11 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ContextID contextId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( ICorProfilerInfo11 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo); HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( ICorProfilerInfo11 * This, /* [in] */ ULONG cObjectRanges, /* [out] */ ULONG *pcObjectRanges, /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[ ]); HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( ICorProfilerInfo11 * This, /* [in] */ ObjectID objectId, /* [out] */ COR_PRF_GC_GENERATION_RANGE *range); HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( ICorProfilerInfo11 * This, /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( ICorProfilerInfo11 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( ICorProfilerInfo11 * This, /* [in] */ DWORD dwExpectedCompletionMilliseconds); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( ICorProfilerInfo11 * This, /* [in] */ FunctionIDMapper2 *pFunc, /* [in] */ void *clientData); HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( ICorProfilerInfo11 * This, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( ICorProfilerInfo11 * This, /* [in] */ FunctionEnter3 *pFuncEnter3, /* [in] */ FunctionLeave3 *pFuncLeave3, /* [in] */ FunctionTailcall3 *pFuncTailcall3); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( ICorProfilerInfo11 * This, /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo, /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo, /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( ICorProfilerInfo11 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out][in] */ ULONG *pcbArgumentInfo, /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( ICorProfilerInfo11 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange); HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( ICorProfilerInfo11 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo); HRESULT ( STDMETHODCALLTYPE *EnumModules )( ICorProfilerInfo11 * This, /* [out] */ ICorProfilerModuleEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( ICorProfilerInfo11 * This, /* [out] */ USHORT *pClrInstanceId, /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType, /* [out] */ USHORT *pMajorVersion, /* [out] */ USHORT *pMinorVersion, /* [out] */ USHORT *pBuildNumber, /* [out] */ USHORT *pQFEVersion, /* [in] */ ULONG cchVersionString, /* [out] */ ULONG *pcchVersionString, /* [annotation][out] */ _Out_writes_to_(cchVersionString, *pcchVersionString) WCHAR szVersionString[ ]); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( ICorProfilerInfo11 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( ICorProfilerInfo11 * This, /* [in] */ ModuleID moduleId, /* [in] */ ULONG32 cAppDomainIds, /* [out] */ ULONG32 *pcAppDomainIds, /* [length_is][size_is][out] */ AppDomainID appDomainIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( ICorProfilerInfo11 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId, /* [out] */ DWORD *pdwModuleFlags); HRESULT ( STDMETHODCALLTYPE *EnumThreads )( ICorProfilerInfo11 * This, /* [out] */ ICorProfilerThreadEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *InitializeCurrentThread )( ICorProfilerInfo11 * This); HRESULT ( STDMETHODCALLTYPE *RequestReJIT )( ICorProfilerInfo11 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ]); HRESULT ( STDMETHODCALLTYPE *RequestRevert )( ICorProfilerInfo11 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ], /* [size_is][out] */ HRESULT status[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo3 )( ICorProfilerInfo11 * This, /* [in] */ FunctionID functionID, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP2 )( ICorProfilerInfo11 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId, /* [out] */ ReJITID *pReJitId); HRESULT ( STDMETHODCALLTYPE *GetReJITIDs )( ICorProfilerInfo11 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG cReJitIds, /* [out] */ ULONG *pcReJitIds, /* [length_is][size_is][out] */ ReJITID reJitIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping2 )( ICorProfilerInfo11 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions2 )( ICorProfilerInfo11 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetObjectSize2 )( ICorProfilerInfo11 * This, /* [in] */ ObjectID objectId, /* [out] */ SIZE_T *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask2 )( ICorProfilerInfo11 * This, /* [out] */ DWORD *pdwEventsLow, /* [out] */ DWORD *pdwEventsHigh); HRESULT ( STDMETHODCALLTYPE *SetEventMask2 )( ICorProfilerInfo11 * This, /* [in] */ DWORD dwEventsLow, /* [in] */ DWORD dwEventsHigh); HRESULT ( STDMETHODCALLTYPE *EnumNgenModuleMethodsInliningThisMethod )( ICorProfilerInfo11 * This, /* [in] */ ModuleID inlinersModuleId, /* [in] */ ModuleID inlineeModuleId, /* [in] */ mdMethodDef inlineeMethodId, /* [out] */ BOOL *incompleteData, /* [out] */ ICorProfilerMethodEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *ApplyMetaData )( ICorProfilerInfo11 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *GetInMemorySymbolsLength )( ICorProfilerInfo11 * This, /* [in] */ ModuleID moduleId, /* [out] */ DWORD *pCountSymbolBytes); HRESULT ( STDMETHODCALLTYPE *ReadInMemorySymbols )( ICorProfilerInfo11 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD symbolsReadOffset, /* [out] */ BYTE *pSymbolBytes, /* [in] */ DWORD countSymbolBytes, /* [out] */ DWORD *pCountSymbolBytesRead); HRESULT ( STDMETHODCALLTYPE *IsFunctionDynamic )( ICorProfilerInfo11 * This, /* [in] */ FunctionID functionId, /* [out] */ BOOL *isDynamic); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP3 )( ICorProfilerInfo11 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *functionId, /* [out] */ ReJITID *pReJitId); HRESULT ( STDMETHODCALLTYPE *GetDynamicFunctionInfo )( ICorProfilerInfo11 * This, /* [in] */ FunctionID functionId, /* [out] */ ModuleID *moduleId, /* [out] */ PCCOR_SIGNATURE *ppvSig, /* [out] */ ULONG *pbSig, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [out] */ WCHAR wszName[ ]); HRESULT ( STDMETHODCALLTYPE *GetNativeCodeStartAddresses )( ICorProfilerInfo11 * This, FunctionID functionID, ReJITID reJitId, ULONG32 cCodeStartAddresses, ULONG32 *pcCodeStartAddresses, UINT_PTR codeStartAddresses[ ]); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping3 )( ICorProfilerInfo11 * This, UINT_PTR pNativeCodeStartAddress, ULONG32 cMap, ULONG32 *pcMap, COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo4 )( ICorProfilerInfo11 * This, UINT_PTR pNativeCodeStartAddress, ULONG32 cCodeInfos, ULONG32 *pcCodeInfos, COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *EnumerateObjectReferences )( ICorProfilerInfo11 * This, ObjectID objectId, ObjectReferenceCallback callback, void *clientData); HRESULT ( STDMETHODCALLTYPE *IsFrozenObject )( ICorProfilerInfo11 * This, ObjectID objectId, BOOL *pbFrozen); HRESULT ( STDMETHODCALLTYPE *GetLOHObjectSizeThreshold )( ICorProfilerInfo11 * This, DWORD *pThreshold); HRESULT ( STDMETHODCALLTYPE *RequestReJITWithInliners )( ICorProfilerInfo11 * This, /* [in] */ DWORD dwRejitFlags, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ]); HRESULT ( STDMETHODCALLTYPE *SuspendRuntime )( ICorProfilerInfo11 * This); HRESULT ( STDMETHODCALLTYPE *ResumeRuntime )( ICorProfilerInfo11 * This); HRESULT ( STDMETHODCALLTYPE *GetEnvironmentVariable )( ICorProfilerInfo11 * This, /* [string][in] */ const WCHAR *szName, /* [in] */ ULONG cchValue, /* [out] */ ULONG *pcchValue, /* [annotation][out] */ _Out_writes_to_(cchValue, *pcchValue) WCHAR szValue[ ]); HRESULT ( STDMETHODCALLTYPE *SetEnvironmentVariable )( ICorProfilerInfo11 * This, /* [string][in] */ const WCHAR *szName, /* [string][in] */ const WCHAR *szValue); END_INTERFACE } ICorProfilerInfo11Vtbl; interface ICorProfilerInfo11 { CONST_VTBL struct ICorProfilerInfo11Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerInfo11_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerInfo11_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerInfo11_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerInfo11_GetClassFromObject(This,objectId,pClassId) \ ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) #define ICorProfilerInfo11_GetClassFromToken(This,moduleId,typeDef,pClassId) \ ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) #define ICorProfilerInfo11_GetCodeInfo(This,functionId,pStart,pcSize) \ ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) #define ICorProfilerInfo11_GetEventMask(This,pdwEvents) \ ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) #define ICorProfilerInfo11_GetFunctionFromIP(This,ip,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) #define ICorProfilerInfo11_GetFunctionFromToken(This,moduleId,token,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) #define ICorProfilerInfo11_GetHandleFromThread(This,threadId,phThread) \ ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) #define ICorProfilerInfo11_GetObjectSize(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) #define ICorProfilerInfo11_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \ ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) #define ICorProfilerInfo11_GetThreadInfo(This,threadId,pdwWin32ThreadId) \ ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) #define ICorProfilerInfo11_GetCurrentThreadID(This,pThreadId) \ ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) #define ICorProfilerInfo11_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \ ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) #define ICorProfilerInfo11_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) \ ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) #define ICorProfilerInfo11_SetEventMask(This,dwEvents) \ ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) #define ICorProfilerInfo11_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo11_SetFunctionIDMapper(This,pFunc) \ ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) #define ICorProfilerInfo11_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) \ ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) #define ICorProfilerInfo11_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) \ ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) #define ICorProfilerInfo11_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) \ ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) #define ICorProfilerInfo11_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) \ ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) #define ICorProfilerInfo11_GetILFunctionBodyAllocator(This,moduleId,ppMalloc) \ ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) #define ICorProfilerInfo11_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) \ ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) #define ICorProfilerInfo11_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) \ ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) #define ICorProfilerInfo11_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) \ ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) #define ICorProfilerInfo11_SetFunctionReJIT(This,functionId) \ ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) #define ICorProfilerInfo11_ForceGC(This) \ ( (This)->lpVtbl -> ForceGC(This) ) #define ICorProfilerInfo11_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) \ ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) #define ICorProfilerInfo11_GetInprocInspectionInterface(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) #define ICorProfilerInfo11_GetInprocInspectionIThisThread(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) #define ICorProfilerInfo11_GetThreadContext(This,threadId,pContextId) \ ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) #define ICorProfilerInfo11_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) \ ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) #define ICorProfilerInfo11_EndInprocDebugging(This,dwProfilerContext) \ ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) #define ICorProfilerInfo11_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) #define ICorProfilerInfo11_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) \ ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) #define ICorProfilerInfo11_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo11_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) #define ICorProfilerInfo11_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo11_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) \ ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) #define ICorProfilerInfo11_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) #define ICorProfilerInfo11_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo11_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) \ ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) #define ICorProfilerInfo11_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) \ ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) #define ICorProfilerInfo11_EnumModuleFrozenObjects(This,moduleID,ppEnum) \ ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) #define ICorProfilerInfo11_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) \ ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) #define ICorProfilerInfo11_GetBoxClassLayout(This,classId,pBufferOffset) \ ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) #define ICorProfilerInfo11_GetThreadAppDomain(This,threadId,pAppDomainId) \ ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) #define ICorProfilerInfo11_GetRVAStaticAddress(This,classId,fieldToken,ppAddress) \ ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) #define ICorProfilerInfo11_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) \ ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) #define ICorProfilerInfo11_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) #define ICorProfilerInfo11_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \ ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) #define ICorProfilerInfo11_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) \ ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) #define ICorProfilerInfo11_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) \ ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) #define ICorProfilerInfo11_GetObjectGeneration(This,objectId,range) \ ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) #define ICorProfilerInfo11_GetNotifiedExceptionClauseInfo(This,pinfo) \ ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) #define ICorProfilerInfo11_EnumJITedFunctions(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) #define ICorProfilerInfo11_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \ ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) #define ICorProfilerInfo11_SetFunctionIDMapper2(This,pFunc,clientData) \ ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) #define ICorProfilerInfo11_GetStringLayout2(This,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo11_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) #define ICorProfilerInfo11_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) #define ICorProfilerInfo11_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) \ ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) #define ICorProfilerInfo11_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) \ ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) #define ICorProfilerInfo11_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \ ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) #define ICorProfilerInfo11_EnumModules(This,ppEnum) \ ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) #define ICorProfilerInfo11_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) \ ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) #define ICorProfilerInfo11_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) #define ICorProfilerInfo11_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) \ ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) #define ICorProfilerInfo11_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) \ ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) #define ICorProfilerInfo11_EnumThreads(This,ppEnum) \ ( (This)->lpVtbl -> EnumThreads(This,ppEnum) ) #define ICorProfilerInfo11_InitializeCurrentThread(This) \ ( (This)->lpVtbl -> InitializeCurrentThread(This) ) #define ICorProfilerInfo11_RequestReJIT(This,cFunctions,moduleIds,methodIds) \ ( (This)->lpVtbl -> RequestReJIT(This,cFunctions,moduleIds,methodIds) ) #define ICorProfilerInfo11_RequestRevert(This,cFunctions,moduleIds,methodIds,status) \ ( (This)->lpVtbl -> RequestRevert(This,cFunctions,moduleIds,methodIds,status) ) #define ICorProfilerInfo11_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo11_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) \ ( (This)->lpVtbl -> GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) ) #define ICorProfilerInfo11_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) \ ( (This)->lpVtbl -> GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) ) #define ICorProfilerInfo11_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) ) #define ICorProfilerInfo11_EnumJITedFunctions2(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions2(This,ppEnum) ) #define ICorProfilerInfo11_GetObjectSize2(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize2(This,objectId,pcSize) ) #define ICorProfilerInfo11_GetEventMask2(This,pdwEventsLow,pdwEventsHigh) \ ( (This)->lpVtbl -> GetEventMask2(This,pdwEventsLow,pdwEventsHigh) ) #define ICorProfilerInfo11_SetEventMask2(This,dwEventsLow,dwEventsHigh) \ ( (This)->lpVtbl -> SetEventMask2(This,dwEventsLow,dwEventsHigh) ) #define ICorProfilerInfo11_EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) \ ( (This)->lpVtbl -> EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) ) #define ICorProfilerInfo11_ApplyMetaData(This,moduleId) \ ( (This)->lpVtbl -> ApplyMetaData(This,moduleId) ) #define ICorProfilerInfo11_GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes) \ ( (This)->lpVtbl -> GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes) ) #define ICorProfilerInfo11_ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead) \ ( (This)->lpVtbl -> ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead) ) #define ICorProfilerInfo11_IsFunctionDynamic(This,functionId,isDynamic) \ ( (This)->lpVtbl -> IsFunctionDynamic(This,functionId,isDynamic) ) #define ICorProfilerInfo11_GetFunctionFromIP3(This,ip,functionId,pReJitId) \ ( (This)->lpVtbl -> GetFunctionFromIP3(This,ip,functionId,pReJitId) ) #define ICorProfilerInfo11_GetDynamicFunctionInfo(This,functionId,moduleId,ppvSig,pbSig,cchName,pcchName,wszName) \ ( (This)->lpVtbl -> GetDynamicFunctionInfo(This,functionId,moduleId,ppvSig,pbSig,cchName,pcchName,wszName) ) #define ICorProfilerInfo11_GetNativeCodeStartAddresses(This,functionID,reJitId,cCodeStartAddresses,pcCodeStartAddresses,codeStartAddresses) \ ( (This)->lpVtbl -> GetNativeCodeStartAddresses(This,functionID,reJitId,cCodeStartAddresses,pcCodeStartAddresses,codeStartAddresses) ) #define ICorProfilerInfo11_GetILToNativeMapping3(This,pNativeCodeStartAddress,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping3(This,pNativeCodeStartAddress,cMap,pcMap,map) ) #define ICorProfilerInfo11_GetCodeInfo4(This,pNativeCodeStartAddress,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo4(This,pNativeCodeStartAddress,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo11_EnumerateObjectReferences(This,objectId,callback,clientData) \ ( (This)->lpVtbl -> EnumerateObjectReferences(This,objectId,callback,clientData) ) #define ICorProfilerInfo11_IsFrozenObject(This,objectId,pbFrozen) \ ( (This)->lpVtbl -> IsFrozenObject(This,objectId,pbFrozen) ) #define ICorProfilerInfo11_GetLOHObjectSizeThreshold(This,pThreshold) \ ( (This)->lpVtbl -> GetLOHObjectSizeThreshold(This,pThreshold) ) #define ICorProfilerInfo11_RequestReJITWithInliners(This,dwRejitFlags,cFunctions,moduleIds,methodIds) \ ( (This)->lpVtbl -> RequestReJITWithInliners(This,dwRejitFlags,cFunctions,moduleIds,methodIds) ) #define ICorProfilerInfo11_SuspendRuntime(This) \ ( (This)->lpVtbl -> SuspendRuntime(This) ) #define ICorProfilerInfo11_ResumeRuntime(This) \ ( (This)->lpVtbl -> ResumeRuntime(This) ) #define ICorProfilerInfo11_GetEnvironmentVariable(This,szName,cchValue,pcchValue,szValue) \ ( (This)->lpVtbl -> GetEnvironmentVariable(This,szName,cchValue,pcchValue,szValue) ) #define ICorProfilerInfo11_SetEnvironmentVariable(This,szName,szValue) \ ( (This)->lpVtbl -> SetEnvironmentVariable(This,szName,szValue) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerInfo11_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerInfo12_INTERFACE_DEFINED__ #define __ICorProfilerInfo12_INTERFACE_DEFINED__ /* interface ICorProfilerInfo12 */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerInfo12; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("27b24ccd-1cb1-47c5-96ee-98190dc30959") ICorProfilerInfo12 : public ICorProfilerInfo11 { public: virtual HRESULT STDMETHODCALLTYPE EventPipeStartSession( /* [in] */ UINT32 cProviderConfigs, /* [size_is][in] */ COR_PRF_EVENTPIPE_PROVIDER_CONFIG pProviderConfigs[ ], /* [in] */ BOOL requestRundown, /* [out] */ EVENTPIPE_SESSION *pSession) = 0; virtual HRESULT STDMETHODCALLTYPE EventPipeAddProviderToSession( /* [in] */ EVENTPIPE_SESSION session, /* [in] */ COR_PRF_EVENTPIPE_PROVIDER_CONFIG providerConfig) = 0; virtual HRESULT STDMETHODCALLTYPE EventPipeStopSession( /* [in] */ EVENTPIPE_SESSION session) = 0; virtual HRESULT STDMETHODCALLTYPE EventPipeCreateProvider( /* [string][in] */ const WCHAR *providerName, /* [out] */ EVENTPIPE_PROVIDER *pProvider) = 0; virtual HRESULT STDMETHODCALLTYPE EventPipeGetProviderInfo( /* [in] */ EVENTPIPE_PROVIDER provider, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR providerName[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE EventPipeDefineEvent( /* [in] */ EVENTPIPE_PROVIDER provider, /* [string][in] */ const WCHAR *eventName, /* [in] */ UINT32 eventID, /* [in] */ UINT64 keywords, /* [in] */ UINT32 eventVersion, /* [in] */ UINT32 level, /* [in] */ UINT8 opcode, /* [in] */ BOOL needStack, /* [in] */ UINT32 cParamDescs, /* [size_is][in] */ COR_PRF_EVENTPIPE_PARAM_DESC pParamDescs[ ], /* [out] */ EVENTPIPE_EVENT *pEvent) = 0; virtual HRESULT STDMETHODCALLTYPE EventPipeWriteEvent( /* [in] */ EVENTPIPE_EVENT event, /* [in] */ UINT32 cData, /* [size_is][in] */ COR_PRF_EVENT_DATA data[ ], /* [in] */ LPCGUID pActivityId, /* [in] */ LPCGUID pRelatedActivityId) = 0; }; #else /* C style interface */ typedef struct ICorProfilerInfo12Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerInfo12 * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerInfo12 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerInfo12 * This); HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( ICorProfilerInfo12 * This, /* [in] */ ObjectID objectId, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( ICorProfilerInfo12 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdTypeDef typeDef, /* [out] */ ClassID *pClassId); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( ICorProfilerInfo12 * This, /* [in] */ FunctionID functionId, /* [out] */ LPCBYTE *pStart, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask )( ICorProfilerInfo12 * This, /* [out] */ DWORD *pdwEvents); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( ICorProfilerInfo12 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( ICorProfilerInfo12 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdToken token, /* [out] */ FunctionID *pFunctionId); HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( ICorProfilerInfo12 * This, /* [in] */ ThreadID threadId, /* [out] */ HANDLE *phThread); HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( ICorProfilerInfo12 * This, /* [in] */ ObjectID objectId, /* [out] */ ULONG *pcSize); HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( ICorProfilerInfo12 * This, /* [in] */ ClassID classId, /* [out] */ CorElementType *pBaseElemType, /* [out] */ ClassID *pBaseClassId, /* [out] */ ULONG *pcRank); HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( ICorProfilerInfo12 * This, /* [in] */ ThreadID threadId, /* [out] */ DWORD *pdwWin32ThreadId); HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( ICorProfilerInfo12 * This, /* [out] */ ThreadID *pThreadId); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( ICorProfilerInfo12 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( ICorProfilerInfo12 * This, /* [in] */ FunctionID functionId, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *SetEventMask )( ICorProfilerInfo12 * This, /* [in] */ DWORD dwEvents); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( ICorProfilerInfo12 * This, /* [in] */ FunctionEnter *pFuncEnter, /* [in] */ FunctionLeave *pFuncLeave, /* [in] */ FunctionTailcall *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( ICorProfilerInfo12 * This, /* [in] */ FunctionIDMapper *pFunc); HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( ICorProfilerInfo12 * This, /* [in] */ FunctionID functionId, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppImport, /* [out] */ mdToken *pToken); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( ICorProfilerInfo12 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId); HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( ICorProfilerInfo12 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD dwOpenFlags, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppOut); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( ICorProfilerInfo12 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodId, /* [out] */ LPCBYTE *ppMethodHeader, /* [out] */ ULONG *pcbMethodSize); HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( ICorProfilerInfo12 * This, /* [in] */ ModuleID moduleId, /* [out] */ IMethodMalloc **ppMalloc); HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( ICorProfilerInfo12 * This, /* [in] */ ModuleID moduleId, /* [in] */ mdMethodDef methodid, /* [in] */ LPCBYTE pbNewILMethodHeader); HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( ICorProfilerInfo12 * This, /* [in] */ AppDomainID appDomainId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ ProcessID *pProcessId); HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( ICorProfilerInfo12 * This, /* [in] */ AssemblyID assemblyId, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AppDomainID *pAppDomainId, /* [out] */ ModuleID *pModuleId); HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( ICorProfilerInfo12 * This, /* [in] */ FunctionID functionId); HRESULT ( STDMETHODCALLTYPE *ForceGC )( ICorProfilerInfo12 * This); HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( ICorProfilerInfo12 * This, /* [in] */ FunctionID functionId, /* [in] */ BOOL fStartJit, /* [in] */ ULONG cILMapEntries, /* [size_is][in] */ COR_IL_MAP rgILMapEntries[ ]); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( ICorProfilerInfo12 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( ICorProfilerInfo12 * This, /* [out] */ IUnknown **ppicd); HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( ICorProfilerInfo12 * This, /* [in] */ ThreadID threadId, /* [out] */ ContextID *pContextId); HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( ICorProfilerInfo12 * This, /* [in] */ BOOL fThisThreadOnly, /* [out] */ DWORD *pdwProfilerContext); HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( ICorProfilerInfo12 * This, /* [in] */ DWORD dwProfilerContext); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( ICorProfilerInfo12 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( ICorProfilerInfo12 * This, /* [in] */ ThreadID thread, /* [in] */ StackSnapshotCallback *callback, /* [in] */ ULONG32 infoFlags, /* [in] */ void *clientData, /* [size_is][in] */ BYTE context[ ], /* [in] */ ULONG32 contextSize); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( ICorProfilerInfo12 * This, /* [in] */ FunctionEnter2 *pFuncEnter, /* [in] */ FunctionLeave2 *pFuncLeave, /* [in] */ FunctionTailcall2 *pFuncTailcall); HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( ICorProfilerInfo12 * This, /* [in] */ FunctionID funcId, /* [in] */ COR_PRF_FRAME_INFO frameInfo, /* [out] */ ClassID *pClassId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdToken *pToken, /* [in] */ ULONG32 cTypeArgs, /* [out] */ ULONG32 *pcTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( ICorProfilerInfo12 * This, /* [out] */ ULONG *pBufferLengthOffset, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( ICorProfilerInfo12 * This, /* [in] */ ClassID classID, /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[ ], /* [in] */ ULONG cFieldOffset, /* [out] */ ULONG *pcFieldOffset, /* [out] */ ULONG *pulClassSize); HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( ICorProfilerInfo12 * This, /* [in] */ ClassID classId, /* [out] */ ModuleID *pModuleId, /* [out] */ mdTypeDef *pTypeDefToken, /* [out] */ ClassID *pParentClassId, /* [in] */ ULONG32 cNumTypeArgs, /* [out] */ ULONG32 *pcNumTypeArgs, /* [out] */ ClassID typeArgs[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( ICorProfilerInfo12 * This, /* [in] */ FunctionID functionID, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( ICorProfilerInfo12 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdTypeDef typeDef, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ ClassID *pClassID); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( ICorProfilerInfo12 * This, /* [in] */ ModuleID moduleID, /* [in] */ mdMethodDef funcDef, /* [in] */ ClassID classId, /* [in] */ ULONG32 cTypeArgs, /* [size_is][in] */ ClassID typeArgs[ ], /* [out] */ FunctionID *pFunctionID); HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( ICorProfilerInfo12 * This, /* [in] */ ModuleID moduleID, /* [out] */ ICorProfilerObjectEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( ICorProfilerInfo12 * This, /* [in] */ ObjectID objectId, /* [in] */ ULONG32 cDimensions, /* [size_is][out] */ ULONG32 pDimensionSizes[ ], /* [size_is][out] */ int pDimensionLowerBounds[ ], /* [out] */ BYTE **ppData); HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( ICorProfilerInfo12 * This, /* [in] */ ClassID classId, /* [out] */ ULONG32 *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( ICorProfilerInfo12 * This, /* [in] */ ThreadID threadId, /* [out] */ AppDomainID *pAppDomainId); HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( ICorProfilerInfo12 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( ICorProfilerInfo12 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( ICorProfilerInfo12 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( ICorProfilerInfo12 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ ContextID contextId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( ICorProfilerInfo12 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo); HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( ICorProfilerInfo12 * This, /* [in] */ ULONG cObjectRanges, /* [out] */ ULONG *pcObjectRanges, /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[ ]); HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( ICorProfilerInfo12 * This, /* [in] */ ObjectID objectId, /* [out] */ COR_PRF_GC_GENERATION_RANGE *range); HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( ICorProfilerInfo12 * This, /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( ICorProfilerInfo12 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( ICorProfilerInfo12 * This, /* [in] */ DWORD dwExpectedCompletionMilliseconds); HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( ICorProfilerInfo12 * This, /* [in] */ FunctionIDMapper2 *pFunc, /* [in] */ void *clientData); HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( ICorProfilerInfo12 * This, /* [out] */ ULONG *pStringLengthOffset, /* [out] */ ULONG *pBufferOffset); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( ICorProfilerInfo12 * This, /* [in] */ FunctionEnter3 *pFuncEnter3, /* [in] */ FunctionLeave3 *pFuncLeave3, /* [in] */ FunctionTailcall3 *pFuncTailcall3); HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( ICorProfilerInfo12 * This, /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo, /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo, /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( ICorProfilerInfo12 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out][in] */ ULONG *pcbArgumentInfo, /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo); HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( ICorProfilerInfo12 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo, /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange); HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( ICorProfilerInfo12 * This, /* [in] */ FunctionID functionId, /* [in] */ COR_PRF_ELT_INFO eltInfo, /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo); HRESULT ( STDMETHODCALLTYPE *EnumModules )( ICorProfilerInfo12 * This, /* [out] */ ICorProfilerModuleEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( ICorProfilerInfo12 * This, /* [out] */ USHORT *pClrInstanceId, /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType, /* [out] */ USHORT *pMajorVersion, /* [out] */ USHORT *pMinorVersion, /* [out] */ USHORT *pBuildNumber, /* [out] */ USHORT *pQFEVersion, /* [in] */ ULONG cchVersionString, /* [out] */ ULONG *pcchVersionString, /* [annotation][out] */ _Out_writes_to_(cchVersionString, *pcchVersionString) WCHAR szVersionString[ ]); HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( ICorProfilerInfo12 * This, /* [in] */ ClassID classId, /* [in] */ mdFieldDef fieldToken, /* [in] */ AppDomainID appDomainId, /* [in] */ ThreadID threadId, /* [out] */ void **ppAddress); HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( ICorProfilerInfo12 * This, /* [in] */ ModuleID moduleId, /* [in] */ ULONG32 cAppDomainIds, /* [out] */ ULONG32 *pcAppDomainIds, /* [length_is][size_is][out] */ AppDomainID appDomainIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( ICorProfilerInfo12 * This, /* [in] */ ModuleID moduleId, /* [out] */ LPCBYTE *ppBaseLoadAddress, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR szName[ ], /* [out] */ AssemblyID *pAssemblyId, /* [out] */ DWORD *pdwModuleFlags); HRESULT ( STDMETHODCALLTYPE *EnumThreads )( ICorProfilerInfo12 * This, /* [out] */ ICorProfilerThreadEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *InitializeCurrentThread )( ICorProfilerInfo12 * This); HRESULT ( STDMETHODCALLTYPE *RequestReJIT )( ICorProfilerInfo12 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ]); HRESULT ( STDMETHODCALLTYPE *RequestRevert )( ICorProfilerInfo12 * This, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ], /* [size_is][out] */ HRESULT status[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo3 )( ICorProfilerInfo12 * This, /* [in] */ FunctionID functionID, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cCodeInfos, /* [out] */ ULONG32 *pcCodeInfos, /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP2 )( ICorProfilerInfo12 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *pFunctionId, /* [out] */ ReJITID *pReJitId); HRESULT ( STDMETHODCALLTYPE *GetReJITIDs )( ICorProfilerInfo12 * This, /* [in] */ FunctionID functionId, /* [in] */ ULONG cReJitIds, /* [out] */ ULONG *pcReJitIds, /* [length_is][size_is][out] */ ReJITID reJitIds[ ]); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping2 )( ICorProfilerInfo12 * This, /* [in] */ FunctionID functionId, /* [in] */ ReJITID reJitId, /* [in] */ ULONG32 cMap, /* [out] */ ULONG32 *pcMap, /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions2 )( ICorProfilerInfo12 * This, /* [out] */ ICorProfilerFunctionEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetObjectSize2 )( ICorProfilerInfo12 * This, /* [in] */ ObjectID objectId, /* [out] */ SIZE_T *pcSize); HRESULT ( STDMETHODCALLTYPE *GetEventMask2 )( ICorProfilerInfo12 * This, /* [out] */ DWORD *pdwEventsLow, /* [out] */ DWORD *pdwEventsHigh); HRESULT ( STDMETHODCALLTYPE *SetEventMask2 )( ICorProfilerInfo12 * This, /* [in] */ DWORD dwEventsLow, /* [in] */ DWORD dwEventsHigh); HRESULT ( STDMETHODCALLTYPE *EnumNgenModuleMethodsInliningThisMethod )( ICorProfilerInfo12 * This, /* [in] */ ModuleID inlinersModuleId, /* [in] */ ModuleID inlineeModuleId, /* [in] */ mdMethodDef inlineeMethodId, /* [out] */ BOOL *incompleteData, /* [out] */ ICorProfilerMethodEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *ApplyMetaData )( ICorProfilerInfo12 * This, /* [in] */ ModuleID moduleId); HRESULT ( STDMETHODCALLTYPE *GetInMemorySymbolsLength )( ICorProfilerInfo12 * This, /* [in] */ ModuleID moduleId, /* [out] */ DWORD *pCountSymbolBytes); HRESULT ( STDMETHODCALLTYPE *ReadInMemorySymbols )( ICorProfilerInfo12 * This, /* [in] */ ModuleID moduleId, /* [in] */ DWORD symbolsReadOffset, /* [out] */ BYTE *pSymbolBytes, /* [in] */ DWORD countSymbolBytes, /* [out] */ DWORD *pCountSymbolBytesRead); HRESULT ( STDMETHODCALLTYPE *IsFunctionDynamic )( ICorProfilerInfo12 * This, /* [in] */ FunctionID functionId, /* [out] */ BOOL *isDynamic); HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP3 )( ICorProfilerInfo12 * This, /* [in] */ LPCBYTE ip, /* [out] */ FunctionID *functionId, /* [out] */ ReJITID *pReJitId); HRESULT ( STDMETHODCALLTYPE *GetDynamicFunctionInfo )( ICorProfilerInfo12 * This, /* [in] */ FunctionID functionId, /* [out] */ ModuleID *moduleId, /* [out] */ PCCOR_SIGNATURE *ppvSig, /* [out] */ ULONG *pbSig, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [out] */ WCHAR wszName[ ]); HRESULT ( STDMETHODCALLTYPE *GetNativeCodeStartAddresses )( ICorProfilerInfo12 * This, FunctionID functionID, ReJITID reJitId, ULONG32 cCodeStartAddresses, ULONG32 *pcCodeStartAddresses, UINT_PTR codeStartAddresses[ ]); HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping3 )( ICorProfilerInfo12 * This, UINT_PTR pNativeCodeStartAddress, ULONG32 cMap, ULONG32 *pcMap, COR_DEBUG_IL_TO_NATIVE_MAP map[ ]); HRESULT ( STDMETHODCALLTYPE *GetCodeInfo4 )( ICorProfilerInfo12 * This, UINT_PTR pNativeCodeStartAddress, ULONG32 cCodeInfos, ULONG32 *pcCodeInfos, COR_PRF_CODE_INFO codeInfos[ ]); HRESULT ( STDMETHODCALLTYPE *EnumerateObjectReferences )( ICorProfilerInfo12 * This, ObjectID objectId, ObjectReferenceCallback callback, void *clientData); HRESULT ( STDMETHODCALLTYPE *IsFrozenObject )( ICorProfilerInfo12 * This, ObjectID objectId, BOOL *pbFrozen); HRESULT ( STDMETHODCALLTYPE *GetLOHObjectSizeThreshold )( ICorProfilerInfo12 * This, DWORD *pThreshold); HRESULT ( STDMETHODCALLTYPE *RequestReJITWithInliners )( ICorProfilerInfo12 * This, /* [in] */ DWORD dwRejitFlags, /* [in] */ ULONG cFunctions, /* [size_is][in] */ ModuleID moduleIds[ ], /* [size_is][in] */ mdMethodDef methodIds[ ]); HRESULT ( STDMETHODCALLTYPE *SuspendRuntime )( ICorProfilerInfo12 * This); HRESULT ( STDMETHODCALLTYPE *ResumeRuntime )( ICorProfilerInfo12 * This); HRESULT ( STDMETHODCALLTYPE *GetEnvironmentVariable )( ICorProfilerInfo12 * This, /* [string][in] */ const WCHAR *szName, /* [in] */ ULONG cchValue, /* [out] */ ULONG *pcchValue, /* [annotation][out] */ _Out_writes_to_(cchValue, *pcchValue) WCHAR szValue[ ]); HRESULT ( STDMETHODCALLTYPE *SetEnvironmentVariable )( ICorProfilerInfo12 * This, /* [string][in] */ const WCHAR *szName, /* [string][in] */ const WCHAR *szValue); HRESULT ( STDMETHODCALLTYPE *EventPipeStartSession )( ICorProfilerInfo12 * This, /* [in] */ UINT32 cProviderConfigs, /* [size_is][in] */ COR_PRF_EVENTPIPE_PROVIDER_CONFIG pProviderConfigs[ ], /* [in] */ BOOL requestRundown, /* [out] */ EVENTPIPE_SESSION *pSession); HRESULT ( STDMETHODCALLTYPE *EventPipeAddProviderToSession )( ICorProfilerInfo12 * This, /* [in] */ EVENTPIPE_SESSION session, /* [in] */ COR_PRF_EVENTPIPE_PROVIDER_CONFIG providerConfig); HRESULT ( STDMETHODCALLTYPE *EventPipeStopSession )( ICorProfilerInfo12 * This, /* [in] */ EVENTPIPE_SESSION session); HRESULT ( STDMETHODCALLTYPE *EventPipeCreateProvider )( ICorProfilerInfo12 * This, /* [string][in] */ const WCHAR *providerName, /* [out] */ EVENTPIPE_PROVIDER *pProvider); HRESULT ( STDMETHODCALLTYPE *EventPipeGetProviderInfo )( ICorProfilerInfo12 * This, /* [in] */ EVENTPIPE_PROVIDER provider, /* [in] */ ULONG cchName, /* [out] */ ULONG *pcchName, /* [annotation][out] */ _Out_writes_to_(cchName, *pcchName) WCHAR providerName[ ]); HRESULT ( STDMETHODCALLTYPE *EventPipeDefineEvent )( ICorProfilerInfo12 * This, /* [in] */ EVENTPIPE_PROVIDER provider, /* [string][in] */ const WCHAR *eventName, /* [in] */ UINT32 eventID, /* [in] */ UINT64 keywords, /* [in] */ UINT32 eventVersion, /* [in] */ UINT32 level, /* [in] */ UINT8 opcode, /* [in] */ BOOL needStack, /* [in] */ UINT32 cParamDescs, /* [size_is][in] */ COR_PRF_EVENTPIPE_PARAM_DESC pParamDescs[ ], /* [out] */ EVENTPIPE_EVENT *pEvent); HRESULT ( STDMETHODCALLTYPE *EventPipeWriteEvent )( ICorProfilerInfo12 * This, /* [in] */ EVENTPIPE_EVENT event, /* [in] */ UINT32 cData, /* [size_is][in] */ COR_PRF_EVENT_DATA data[ ], /* [in] */ LPCGUID pActivityId, /* [in] */ LPCGUID pRelatedActivityId); END_INTERFACE } ICorProfilerInfo12Vtbl; interface ICorProfilerInfo12 { CONST_VTBL struct ICorProfilerInfo12Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerInfo12_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerInfo12_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerInfo12_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerInfo12_GetClassFromObject(This,objectId,pClassId) \ ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) #define ICorProfilerInfo12_GetClassFromToken(This,moduleId,typeDef,pClassId) \ ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) #define ICorProfilerInfo12_GetCodeInfo(This,functionId,pStart,pcSize) \ ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) #define ICorProfilerInfo12_GetEventMask(This,pdwEvents) \ ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) #define ICorProfilerInfo12_GetFunctionFromIP(This,ip,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) #define ICorProfilerInfo12_GetFunctionFromToken(This,moduleId,token,pFunctionId) \ ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) #define ICorProfilerInfo12_GetHandleFromThread(This,threadId,phThread) \ ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) #define ICorProfilerInfo12_GetObjectSize(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) #define ICorProfilerInfo12_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \ ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) #define ICorProfilerInfo12_GetThreadInfo(This,threadId,pdwWin32ThreadId) \ ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) #define ICorProfilerInfo12_GetCurrentThreadID(This,pThreadId) \ ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) #define ICorProfilerInfo12_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \ ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) #define ICorProfilerInfo12_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) \ ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) #define ICorProfilerInfo12_SetEventMask(This,dwEvents) \ ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) #define ICorProfilerInfo12_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo12_SetFunctionIDMapper(This,pFunc) \ ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) #define ICorProfilerInfo12_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) \ ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) #define ICorProfilerInfo12_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) \ ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) #define ICorProfilerInfo12_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) \ ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) #define ICorProfilerInfo12_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) \ ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) #define ICorProfilerInfo12_GetILFunctionBodyAllocator(This,moduleId,ppMalloc) \ ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) #define ICorProfilerInfo12_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) \ ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) #define ICorProfilerInfo12_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) \ ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) #define ICorProfilerInfo12_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) \ ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) #define ICorProfilerInfo12_SetFunctionReJIT(This,functionId) \ ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) #define ICorProfilerInfo12_ForceGC(This) \ ( (This)->lpVtbl -> ForceGC(This) ) #define ICorProfilerInfo12_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) \ ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) #define ICorProfilerInfo12_GetInprocInspectionInterface(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) #define ICorProfilerInfo12_GetInprocInspectionIThisThread(This,ppicd) \ ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) #define ICorProfilerInfo12_GetThreadContext(This,threadId,pContextId) \ ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) #define ICorProfilerInfo12_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) \ ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) #define ICorProfilerInfo12_EndInprocDebugging(This,dwProfilerContext) \ ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) #define ICorProfilerInfo12_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) #define ICorProfilerInfo12_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) \ ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) #define ICorProfilerInfo12_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) #define ICorProfilerInfo12_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) #define ICorProfilerInfo12_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo12_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) \ ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) #define ICorProfilerInfo12_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) \ ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) #define ICorProfilerInfo12_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo12_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) \ ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) #define ICorProfilerInfo12_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) \ ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) #define ICorProfilerInfo12_EnumModuleFrozenObjects(This,moduleID,ppEnum) \ ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) #define ICorProfilerInfo12_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) \ ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) #define ICorProfilerInfo12_GetBoxClassLayout(This,classId,pBufferOffset) \ ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) #define ICorProfilerInfo12_GetThreadAppDomain(This,threadId,pAppDomainId) \ ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) #define ICorProfilerInfo12_GetRVAStaticAddress(This,classId,fieldToken,ppAddress) \ ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) #define ICorProfilerInfo12_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) \ ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) #define ICorProfilerInfo12_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) #define ICorProfilerInfo12_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \ ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) #define ICorProfilerInfo12_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) \ ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) #define ICorProfilerInfo12_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) \ ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) #define ICorProfilerInfo12_GetObjectGeneration(This,objectId,range) \ ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) #define ICorProfilerInfo12_GetNotifiedExceptionClauseInfo(This,pinfo) \ ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) #define ICorProfilerInfo12_EnumJITedFunctions(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) #define ICorProfilerInfo12_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \ ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) #define ICorProfilerInfo12_SetFunctionIDMapper2(This,pFunc,clientData) \ ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) #define ICorProfilerInfo12_GetStringLayout2(This,pStringLengthOffset,pBufferOffset) \ ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) #define ICorProfilerInfo12_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) #define ICorProfilerInfo12_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) \ ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) #define ICorProfilerInfo12_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) \ ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) #define ICorProfilerInfo12_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) \ ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) #define ICorProfilerInfo12_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \ ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) #define ICorProfilerInfo12_EnumModules(This,ppEnum) \ ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) #define ICorProfilerInfo12_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) \ ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) #define ICorProfilerInfo12_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) \ ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) #define ICorProfilerInfo12_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) \ ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) #define ICorProfilerInfo12_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) \ ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) #define ICorProfilerInfo12_EnumThreads(This,ppEnum) \ ( (This)->lpVtbl -> EnumThreads(This,ppEnum) ) #define ICorProfilerInfo12_InitializeCurrentThread(This) \ ( (This)->lpVtbl -> InitializeCurrentThread(This) ) #define ICorProfilerInfo12_RequestReJIT(This,cFunctions,moduleIds,methodIds) \ ( (This)->lpVtbl -> RequestReJIT(This,cFunctions,moduleIds,methodIds) ) #define ICorProfilerInfo12_RequestRevert(This,cFunctions,moduleIds,methodIds,status) \ ( (This)->lpVtbl -> RequestRevert(This,cFunctions,moduleIds,methodIds,status) ) #define ICorProfilerInfo12_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo12_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) \ ( (This)->lpVtbl -> GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) ) #define ICorProfilerInfo12_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) \ ( (This)->lpVtbl -> GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) ) #define ICorProfilerInfo12_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) ) #define ICorProfilerInfo12_EnumJITedFunctions2(This,ppEnum) \ ( (This)->lpVtbl -> EnumJITedFunctions2(This,ppEnum) ) #define ICorProfilerInfo12_GetObjectSize2(This,objectId,pcSize) \ ( (This)->lpVtbl -> GetObjectSize2(This,objectId,pcSize) ) #define ICorProfilerInfo12_GetEventMask2(This,pdwEventsLow,pdwEventsHigh) \ ( (This)->lpVtbl -> GetEventMask2(This,pdwEventsLow,pdwEventsHigh) ) #define ICorProfilerInfo12_SetEventMask2(This,dwEventsLow,dwEventsHigh) \ ( (This)->lpVtbl -> SetEventMask2(This,dwEventsLow,dwEventsHigh) ) #define ICorProfilerInfo12_EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) \ ( (This)->lpVtbl -> EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) ) #define ICorProfilerInfo12_ApplyMetaData(This,moduleId) \ ( (This)->lpVtbl -> ApplyMetaData(This,moduleId) ) #define ICorProfilerInfo12_GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes) \ ( (This)->lpVtbl -> GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes) ) #define ICorProfilerInfo12_ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead) \ ( (This)->lpVtbl -> ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead) ) #define ICorProfilerInfo12_IsFunctionDynamic(This,functionId,isDynamic) \ ( (This)->lpVtbl -> IsFunctionDynamic(This,functionId,isDynamic) ) #define ICorProfilerInfo12_GetFunctionFromIP3(This,ip,functionId,pReJitId) \ ( (This)->lpVtbl -> GetFunctionFromIP3(This,ip,functionId,pReJitId) ) #define ICorProfilerInfo12_GetDynamicFunctionInfo(This,functionId,moduleId,ppvSig,pbSig,cchName,pcchName,wszName) \ ( (This)->lpVtbl -> GetDynamicFunctionInfo(This,functionId,moduleId,ppvSig,pbSig,cchName,pcchName,wszName) ) #define ICorProfilerInfo12_GetNativeCodeStartAddresses(This,functionID,reJitId,cCodeStartAddresses,pcCodeStartAddresses,codeStartAddresses) \ ( (This)->lpVtbl -> GetNativeCodeStartAddresses(This,functionID,reJitId,cCodeStartAddresses,pcCodeStartAddresses,codeStartAddresses) ) #define ICorProfilerInfo12_GetILToNativeMapping3(This,pNativeCodeStartAddress,cMap,pcMap,map) \ ( (This)->lpVtbl -> GetILToNativeMapping3(This,pNativeCodeStartAddress,cMap,pcMap,map) ) #define ICorProfilerInfo12_GetCodeInfo4(This,pNativeCodeStartAddress,cCodeInfos,pcCodeInfos,codeInfos) \ ( (This)->lpVtbl -> GetCodeInfo4(This,pNativeCodeStartAddress,cCodeInfos,pcCodeInfos,codeInfos) ) #define ICorProfilerInfo12_EnumerateObjectReferences(This,objectId,callback,clientData) \ ( (This)->lpVtbl -> EnumerateObjectReferences(This,objectId,callback,clientData) ) #define ICorProfilerInfo12_IsFrozenObject(This,objectId,pbFrozen) \ ( (This)->lpVtbl -> IsFrozenObject(This,objectId,pbFrozen) ) #define ICorProfilerInfo12_GetLOHObjectSizeThreshold(This,pThreshold) \ ( (This)->lpVtbl -> GetLOHObjectSizeThreshold(This,pThreshold) ) #define ICorProfilerInfo12_RequestReJITWithInliners(This,dwRejitFlags,cFunctions,moduleIds,methodIds) \ ( (This)->lpVtbl -> RequestReJITWithInliners(This,dwRejitFlags,cFunctions,moduleIds,methodIds) ) #define ICorProfilerInfo12_SuspendRuntime(This) \ ( (This)->lpVtbl -> SuspendRuntime(This) ) #define ICorProfilerInfo12_ResumeRuntime(This) \ ( (This)->lpVtbl -> ResumeRuntime(This) ) #define ICorProfilerInfo12_GetEnvironmentVariable(This,szName,cchValue,pcchValue,szValue) \ ( (This)->lpVtbl -> GetEnvironmentVariable(This,szName,cchValue,pcchValue,szValue) ) #define ICorProfilerInfo12_SetEnvironmentVariable(This,szName,szValue) \ ( (This)->lpVtbl -> SetEnvironmentVariable(This,szName,szValue) ) #define ICorProfilerInfo12_EventPipeStartSession(This,cProviderConfigs,pProviderConfigs,requestRundown,pSession) \ ( (This)->lpVtbl -> EventPipeStartSession(This,cProviderConfigs,pProviderConfigs,requestRundown,pSession) ) #define ICorProfilerInfo12_EventPipeAddProviderToSession(This,session,providerConfig) \ ( (This)->lpVtbl -> EventPipeAddProviderToSession(This,session,providerConfig) ) #define ICorProfilerInfo12_EventPipeStopSession(This,session) \ ( (This)->lpVtbl -> EventPipeStopSession(This,session) ) #define ICorProfilerInfo12_EventPipeCreateProvider(This,providerName,pProvider) \ ( (This)->lpVtbl -> EventPipeCreateProvider(This,providerName,pProvider) ) #define ICorProfilerInfo12_EventPipeGetProviderInfo(This,provider,cchName,pcchName,providerName) \ ( (This)->lpVtbl -> EventPipeGetProviderInfo(This,provider,cchName,pcchName,providerName) ) #define ICorProfilerInfo12_EventPipeDefineEvent(This,provider,eventName,eventID,keywords,eventVersion,level,opcode,needStack,cParamDescs,pParamDescs,pEvent) \ ( (This)->lpVtbl -> EventPipeDefineEvent(This,provider,eventName,eventID,keywords,eventVersion,level,opcode,needStack,cParamDescs,pParamDescs,pEvent) ) #define ICorProfilerInfo12_EventPipeWriteEvent(This,event,cData,data,pActivityId,pRelatedActivityId) \ ( (This)->lpVtbl -> EventPipeWriteEvent(This,event,cData,data,pActivityId,pRelatedActivityId) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerInfo12_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerMethodEnum_INTERFACE_DEFINED__ #define __ICorProfilerMethodEnum_INTERFACE_DEFINED__ /* interface ICorProfilerMethodEnum */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerMethodEnum; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("FCCEE788-0088-454B-A811-C99F298D1942") ICorProfilerMethodEnum : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG celt) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ ICorProfilerMethodEnum **ppEnum) = 0; virtual HRESULT STDMETHODCALLTYPE GetCount( /* [out] */ ULONG *pcelt) = 0; virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG celt, /* [length_is][size_is][out] */ COR_PRF_METHOD elements[ ], /* [out] */ ULONG *pceltFetched) = 0; }; #else /* C style interface */ typedef struct ICorProfilerMethodEnumVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerMethodEnum * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerMethodEnum * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerMethodEnum * This); HRESULT ( STDMETHODCALLTYPE *Skip )( ICorProfilerMethodEnum * This, /* [in] */ ULONG celt); HRESULT ( STDMETHODCALLTYPE *Reset )( ICorProfilerMethodEnum * This); HRESULT ( STDMETHODCALLTYPE *Clone )( ICorProfilerMethodEnum * This, /* [out] */ ICorProfilerMethodEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetCount )( ICorProfilerMethodEnum * This, /* [out] */ ULONG *pcelt); HRESULT ( STDMETHODCALLTYPE *Next )( ICorProfilerMethodEnum * This, /* [in] */ ULONG celt, /* [length_is][size_is][out] */ COR_PRF_METHOD elements[ ], /* [out] */ ULONG *pceltFetched); END_INTERFACE } ICorProfilerMethodEnumVtbl; interface ICorProfilerMethodEnum { CONST_VTBL struct ICorProfilerMethodEnumVtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerMethodEnum_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerMethodEnum_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerMethodEnum_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerMethodEnum_Skip(This,celt) \ ( (This)->lpVtbl -> Skip(This,celt) ) #define ICorProfilerMethodEnum_Reset(This) \ ( (This)->lpVtbl -> Reset(This) ) #define ICorProfilerMethodEnum_Clone(This,ppEnum) \ ( (This)->lpVtbl -> Clone(This,ppEnum) ) #define ICorProfilerMethodEnum_GetCount(This,pcelt) \ ( (This)->lpVtbl -> GetCount(This,pcelt) ) #define ICorProfilerMethodEnum_Next(This,celt,elements,pceltFetched) \ ( (This)->lpVtbl -> Next(This,celt,elements,pceltFetched) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerMethodEnum_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerThreadEnum_INTERFACE_DEFINED__ #define __ICorProfilerThreadEnum_INTERFACE_DEFINED__ /* interface ICorProfilerThreadEnum */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerThreadEnum; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("571194f7-25ed-419f-aa8b-7016b3159701") ICorProfilerThreadEnum : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG celt) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ ICorProfilerThreadEnum **ppEnum) = 0; virtual HRESULT STDMETHODCALLTYPE GetCount( /* [out] */ ULONG *pcelt) = 0; virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG celt, /* [length_is][size_is][out] */ ThreadID ids[ ], /* [out] */ ULONG *pceltFetched) = 0; }; #else /* C style interface */ typedef struct ICorProfilerThreadEnumVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerThreadEnum * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerThreadEnum * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerThreadEnum * This); HRESULT ( STDMETHODCALLTYPE *Skip )( ICorProfilerThreadEnum * This, /* [in] */ ULONG celt); HRESULT ( STDMETHODCALLTYPE *Reset )( ICorProfilerThreadEnum * This); HRESULT ( STDMETHODCALLTYPE *Clone )( ICorProfilerThreadEnum * This, /* [out] */ ICorProfilerThreadEnum **ppEnum); HRESULT ( STDMETHODCALLTYPE *GetCount )( ICorProfilerThreadEnum * This, /* [out] */ ULONG *pcelt); HRESULT ( STDMETHODCALLTYPE *Next )( ICorProfilerThreadEnum * This, /* [in] */ ULONG celt, /* [length_is][size_is][out] */ ThreadID ids[ ], /* [out] */ ULONG *pceltFetched); END_INTERFACE } ICorProfilerThreadEnumVtbl; interface ICorProfilerThreadEnum { CONST_VTBL struct ICorProfilerThreadEnumVtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerThreadEnum_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerThreadEnum_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerThreadEnum_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerThreadEnum_Skip(This,celt) \ ( (This)->lpVtbl -> Skip(This,celt) ) #define ICorProfilerThreadEnum_Reset(This) \ ( (This)->lpVtbl -> Reset(This) ) #define ICorProfilerThreadEnum_Clone(This,ppEnum) \ ( (This)->lpVtbl -> Clone(This,ppEnum) ) #define ICorProfilerThreadEnum_GetCount(This,pcelt) \ ( (This)->lpVtbl -> GetCount(This,pcelt) ) #define ICorProfilerThreadEnum_Next(This,celt,ids,pceltFetched) \ ( (This)->lpVtbl -> Next(This,celt,ids,pceltFetched) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerThreadEnum_INTERFACE_DEFINED__ */ #ifndef __ICorProfilerAssemblyReferenceProvider_INTERFACE_DEFINED__ #define __ICorProfilerAssemblyReferenceProvider_INTERFACE_DEFINED__ /* interface ICorProfilerAssemblyReferenceProvider */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_ICorProfilerAssemblyReferenceProvider; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("66A78C24-2EEF-4F65-B45F-DD1D8038BF3C") ICorProfilerAssemblyReferenceProvider : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE AddAssemblyReference( const COR_PRF_ASSEMBLY_REFERENCE_INFO *pAssemblyRefInfo) = 0; }; #else /* C style interface */ typedef struct ICorProfilerAssemblyReferenceProviderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICorProfilerAssemblyReferenceProvider * This, /* [in] */ REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICorProfilerAssemblyReferenceProvider * This); ULONG ( STDMETHODCALLTYPE *Release )( ICorProfilerAssemblyReferenceProvider * This); HRESULT ( STDMETHODCALLTYPE *AddAssemblyReference )( ICorProfilerAssemblyReferenceProvider * This, const COR_PRF_ASSEMBLY_REFERENCE_INFO *pAssemblyRefInfo); END_INTERFACE } ICorProfilerAssemblyReferenceProviderVtbl; interface ICorProfilerAssemblyReferenceProvider { CONST_VTBL struct ICorProfilerAssemblyReferenceProviderVtbl *lpVtbl; }; #ifdef COBJMACROS #define ICorProfilerAssemblyReferenceProvider_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ICorProfilerAssemblyReferenceProvider_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ICorProfilerAssemblyReferenceProvider_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define ICorProfilerAssemblyReferenceProvider_AddAssemblyReference(This,pAssemblyRefInfo) \ ( (This)->lpVtbl -> AddAssemblyReference(This,pAssemblyRefInfo) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __ICorProfilerAssemblyReferenceProvider_INTERFACE_DEFINED__ */ /* Additional Prototypes for ALL interfaces */ /* end of Additional Prototypes */ #ifdef __cplusplus } #endif #endif ProcDump-for-Linux-2.2/profiler/inc/debugmacrosext.h000066400000000000000000000022311447614355600225640ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. //***************************************************************************** // DebugMacrosExt.h // // Simple debugging macros that take no dependencies on CLR headers. // This header can be used from outside the CLR. // //***************************************************************************** #ifndef __DebugMacrosExt_h__ #define __DebugMacrosExt_h__ #if !defined(_DEBUG_IMPL) && defined(_DEBUG) && !defined(DACCESS_COMPILE) #define _DEBUG_IMPL 1 #endif #ifdef _DEBUG // A macro to execute a statement only in _DEBUG. #define DEBUG_STMT(stmt) stmt #define INDEBUG(x) x #define INDEBUG_COMMA(x) x, #define COMMA_INDEBUG(x) ,x #define NOT_DEBUG(x) #else #define DEBUG_STMT(stmt) #define INDEBUG(x) #define INDEBUG_COMMA(x) #define COMMA_INDEBUG(x) #define NOT_DEBUG(x) x #endif #ifdef _DEBUG_IMPL #define INDEBUGIMPL(x) x #define INDEBUGIMPL_COMMA(x) x, #define COMMA_INDEBUGIMPL(x) ,x #else #define INDEBUGIMPL(x) #define INDEBUGIMPL_COMMA(x) #define COMMA_INDEBUGIMPL(x) #endif #endif ProcDump-for-Linux-2.2/profiler/inc/easylogging++.h000066400000000000000000005376551447614355600222350ustar00rootroot00000000000000// // Bismillah ar-Rahmaan ar-Raheem // // Easylogging++ v9.96.7 // Single-header only, cross-platform logging library for C++ applications // // Copyright (c) 2012-2018 Amrayn Web Services // Copyright (c) 2012-2018 @abumusamq // // This library is released under the MIT Licence. // https://github.com/amrayn/easyloggingpp/blob/master/LICENSE // // https://amrayn.com // http://muflihun.com // #ifndef EASYLOGGINGPP_H #define EASYLOGGINGPP_H // Compilers and C++0x/C++11 Evaluation #if __cplusplus >= 201103L # define ELPP_CXX11 1 #endif // __cplusplus >= 201103L #if (defined(__GNUC__)) # define ELPP_COMPILER_GCC 1 #else # define ELPP_COMPILER_GCC 0 #endif #if ELPP_COMPILER_GCC # define ELPP_GCC_VERSION (__GNUC__ * 10000 \ + __GNUC_MINOR__ * 100 \ + __GNUC_PATCHLEVEL__) # if defined(__GXX_EXPERIMENTAL_CXX0X__) # define ELPP_CXX0X 1 # endif #endif // Visual C++ #if defined(_MSC_VER) # define ELPP_COMPILER_MSVC 1 #else # define ELPP_COMPILER_MSVC 0 #endif #define ELPP_CRT_DBG_WARNINGS ELPP_COMPILER_MSVC #if ELPP_COMPILER_MSVC # if (_MSC_VER == 1600) # define ELPP_CXX0X 1 # elif(_MSC_VER >= 1700) # define ELPP_CXX11 1 # endif #endif // Clang++ #if (defined(__clang__) && (__clang__ == 1)) # define ELPP_COMPILER_CLANG 1 #else # define ELPP_COMPILER_CLANG 0 #endif #if ELPP_COMPILER_CLANG # if __has_include() # include // Make __GLIBCXX__ defined when using libstdc++ # if !defined(__GLIBCXX__) || __GLIBCXX__ >= 20150426 # define ELPP_CLANG_SUPPORTS_THREAD # endif // !defined(__GLIBCXX__) || __GLIBCXX__ >= 20150426 # endif // __has_include() #endif #if (defined(__MINGW32__) || defined(__MINGW64__)) # define ELPP_MINGW 1 #else # define ELPP_MINGW 0 #endif #if (defined(__CYGWIN__) && (__CYGWIN__ == 1)) # define ELPP_CYGWIN 1 #else # define ELPP_CYGWIN 0 #endif #if (defined(__INTEL_COMPILER)) # define ELPP_COMPILER_INTEL 1 #else # define ELPP_COMPILER_INTEL 0 #endif // Operating System Evaluation // Windows #if (defined(_WIN32) || defined(_WIN64)) # define ELPP_OS_WINDOWS 1 #else # define ELPP_OS_WINDOWS 0 #endif // Linux #if (defined(__linux) || defined(__linux__)) # define ELPP_OS_LINUX 1 #else # define ELPP_OS_LINUX 0 #endif #if (defined(__APPLE__)) # define ELPP_OS_MAC 1 #else # define ELPP_OS_MAC 0 #endif #if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) # define ELPP_OS_FREEBSD 1 #else # define ELPP_OS_FREEBSD 0 #endif #if (defined(__sun)) # define ELPP_OS_SOLARIS 1 #else # define ELPP_OS_SOLARIS 0 #endif #if (defined(_AIX)) # define ELPP_OS_AIX 1 #else # define ELPP_OS_AIX 0 #endif #if (defined(__NetBSD__)) # define ELPP_OS_NETBSD 1 #else # define ELPP_OS_NETBSD 0 #endif #if defined(__EMSCRIPTEN__) # define ELPP_OS_EMSCRIPTEN 1 #else # define ELPP_OS_EMSCRIPTEN 0 #endif #if (defined(__QNX__) || defined(__QNXNTO__)) # define ELPP_OS_QNX 1 #else # define ELPP_OS_QNX 0 #endif // Unix #if ((ELPP_OS_LINUX || ELPP_OS_MAC || ELPP_OS_FREEBSD || ELPP_OS_NETBSD || ELPP_OS_SOLARIS || ELPP_OS_AIX || ELPP_OS_EMSCRIPTEN || ELPP_OS_QNX) && (!ELPP_OS_WINDOWS)) # define ELPP_OS_UNIX 1 #else # define ELPP_OS_UNIX 0 #endif #if (defined(__ANDROID__)) # define ELPP_OS_ANDROID 1 #else # define ELPP_OS_ANDROID 0 #endif // Evaluating Cygwin as *nix OS #if !ELPP_OS_UNIX && !ELPP_OS_WINDOWS && ELPP_CYGWIN # undef ELPP_OS_UNIX # undef ELPP_OS_LINUX # define ELPP_OS_UNIX 1 # define ELPP_OS_LINUX 1 #endif // !ELPP_OS_UNIX && !ELPP_OS_WINDOWS && ELPP_CYGWIN #if !defined(ELPP_INTERNAL_DEBUGGING_OUT_INFO) # define ELPP_INTERNAL_DEBUGGING_OUT_INFO std::cout #endif // !defined(ELPP_INTERNAL_DEBUGGING_OUT) #if !defined(ELPP_INTERNAL_DEBUGGING_OUT_ERROR) # define ELPP_INTERNAL_DEBUGGING_OUT_ERROR std::cerr #endif // !defined(ELPP_INTERNAL_DEBUGGING_OUT) #if !defined(ELPP_INTERNAL_DEBUGGING_ENDL) # define ELPP_INTERNAL_DEBUGGING_ENDL std::endl #endif // !defined(ELPP_INTERNAL_DEBUGGING_OUT) #if !defined(ELPP_INTERNAL_DEBUGGING_MSG) # define ELPP_INTERNAL_DEBUGGING_MSG(msg) msg #endif // !defined(ELPP_INTERNAL_DEBUGGING_OUT) // Internal Assertions and errors #if !defined(ELPP_DISABLE_ASSERT) # if (defined(ELPP_DEBUG_ASSERT_FAILURE)) # define ELPP_ASSERT(expr, msg) if (!(expr)) { \ std::stringstream internalInfoStream; internalInfoStream << msg; \ ELPP_INTERNAL_DEBUGGING_OUT_ERROR \ << "EASYLOGGING++ ASSERTION FAILED (LINE: " << __LINE__ << ") [" #expr << "] WITH MESSAGE \"" \ << ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStream.str()) << "\"" << ELPP_INTERNAL_DEBUGGING_ENDL; base::utils::abort(1, \ "ELPP Assertion failure, please define ELPP_DEBUG_ASSERT_FAILURE"); } # else # define ELPP_ASSERT(expr, msg) if (!(expr)) { \ std::stringstream internalInfoStream; internalInfoStream << msg; \ ELPP_INTERNAL_DEBUGGING_OUT_ERROR\ << "ASSERTION FAILURE FROM EASYLOGGING++ (LINE: " \ << __LINE__ << ") [" #expr << "] WITH MESSAGE \"" << ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStream.str()) << "\"" \ << ELPP_INTERNAL_DEBUGGING_ENDL; } # endif // (defined(ELPP_DEBUG_ASSERT_FAILURE)) #else # define ELPP_ASSERT(x, y) #endif //(!defined(ELPP_DISABLE_ASSERT) #if ELPP_COMPILER_MSVC # define ELPP_INTERNAL_DEBUGGING_WRITE_PERROR \ { char buff[256]; strerror_s(buff, 256, errno); \ ELPP_INTERNAL_DEBUGGING_OUT_ERROR << ": " << buff << " [" << errno << "]";} (void)0 #else # define ELPP_INTERNAL_DEBUGGING_WRITE_PERROR \ ELPP_INTERNAL_DEBUGGING_OUT_ERROR << ": " << strerror(errno) << " [" << errno << "]"; (void)0 #endif // ELPP_COMPILER_MSVC #if defined(ELPP_DEBUG_ERRORS) # if !defined(ELPP_INTERNAL_ERROR) # define ELPP_INTERNAL_ERROR(msg, pe) { \ std::stringstream internalInfoStream; internalInfoStream << " " << msg; \ ELPP_INTERNAL_DEBUGGING_OUT_ERROR \ << "ERROR FROM EASYLOGGING++ (LINE: " << __LINE__ << ") " \ << ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStream.str()) << ELPP_INTERNAL_DEBUGGING_ENDL; \ if (pe) { ELPP_INTERNAL_DEBUGGING_OUT_ERROR << " "; ELPP_INTERNAL_DEBUGGING_WRITE_PERROR; }} (void)0 # endif #else # undef ELPP_INTERNAL_INFO # define ELPP_INTERNAL_ERROR(msg, pe) #endif // defined(ELPP_DEBUG_ERRORS) #if (defined(ELPP_DEBUG_INFO)) # if !(defined(ELPP_INTERNAL_INFO_LEVEL)) # define ELPP_INTERNAL_INFO_LEVEL 9 # endif // !(defined(ELPP_INTERNAL_INFO_LEVEL)) # if !defined(ELPP_INTERNAL_INFO) # define ELPP_INTERNAL_INFO(lvl, msg) { if (lvl <= ELPP_INTERNAL_INFO_LEVEL) { \ std::stringstream internalInfoStream; internalInfoStream << " " << msg; \ ELPP_INTERNAL_DEBUGGING_OUT_INFO << ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStream.str()) \ << ELPP_INTERNAL_DEBUGGING_ENDL; }} # endif #else # undef ELPP_INTERNAL_INFO # define ELPP_INTERNAL_INFO(lvl, msg) #endif // (defined(ELPP_DEBUG_INFO)) #if (defined(ELPP_FEATURE_ALL)) || (defined(ELPP_FEATURE_CRASH_LOG)) # if (ELPP_COMPILER_GCC && !ELPP_MINGW && !ELPP_CYGWIN && !ELPP_OS_ANDROID && !ELPP_OS_EMSCRIPTEN && !ELPP_OS_QNX) # define ELPP_STACKTRACE 1 # else # if ELPP_COMPILER_MSVC # pragma message("Stack trace not available for this compiler") # else # warning "Stack trace not available for this compiler"; # endif // ELPP_COMPILER_MSVC # define ELPP_STACKTRACE 0 # endif // ELPP_COMPILER_GCC #else # define ELPP_STACKTRACE 0 #endif // (defined(ELPP_FEATURE_ALL)) || (defined(ELPP_FEATURE_CRASH_LOG)) // Miscellaneous macros #define ELPP_UNUSED(x) (void)x #if ELPP_OS_UNIX // Log file permissions for unix-based systems # define ELPP_LOG_PERMS S_IRUSR | S_IWUSR | S_IXUSR | S_IWGRP | S_IRGRP | S_IXGRP | S_IWOTH | S_IXOTH #endif // ELPP_OS_UNIX #if defined(ELPP_AS_DLL) && ELPP_COMPILER_MSVC # if defined(ELPP_EXPORT_SYMBOLS) # define ELPP_EXPORT __declspec(dllexport) # else # define ELPP_EXPORT __declspec(dllimport) # endif // defined(ELPP_EXPORT_SYMBOLS) #else # define ELPP_EXPORT #endif // defined(ELPP_AS_DLL) && ELPP_COMPILER_MSVC // Some special functions that are VC++ specific #undef STRTOK #undef STRERROR #undef STRCAT #undef STRCPY #if ELPP_CRT_DBG_WARNINGS # define STRTOK(a, b, c) strtok_s(a, b, c) # define STRERROR(a, b, c) strerror_s(a, b, c) # define STRCAT(a, b, len) strcat_s(a, len, b) # define STRCPY(a, b, len) strcpy_s(a, len, b) #else # define STRTOK(a, b, c) strtok(a, b) # define STRERROR(a, b, c) strerror(c) # define STRCAT(a, b, len) strcat(a, b) # define STRCPY(a, b, len) strcpy(a, b) #endif // Compiler specific support evaluations #if (ELPP_MINGW && !defined(ELPP_FORCE_USE_STD_THREAD)) # define ELPP_USE_STD_THREADING 0 #else # if ((ELPP_COMPILER_CLANG && defined(ELPP_CLANG_SUPPORTS_THREAD)) || \ (!ELPP_COMPILER_CLANG && defined(ELPP_CXX11)) || \ defined(ELPP_FORCE_USE_STD_THREAD)) # define ELPP_USE_STD_THREADING 1 # else # define ELPP_USE_STD_THREADING 0 # endif #endif #undef ELPP_FINAL #if ELPP_COMPILER_INTEL || (ELPP_GCC_VERSION < 40702) # define ELPP_FINAL #else # define ELPP_FINAL final #endif // ELPP_COMPILER_INTEL || (ELPP_GCC_VERSION < 40702) #if defined(ELPP_EXPERIMENTAL_ASYNC) # define ELPP_ASYNC_LOGGING 1 #else # define ELPP_ASYNC_LOGGING 0 #endif // defined(ELPP_EXPERIMENTAL_ASYNC) #if defined(ELPP_THREAD_SAFE) || ELPP_ASYNC_LOGGING # define ELPP_THREADING_ENABLED 1 #else # define ELPP_THREADING_ENABLED 0 #endif // defined(ELPP_THREAD_SAFE) || ELPP_ASYNC_LOGGING // Function macro ELPP_FUNC #undef ELPP_FUNC #if ELPP_COMPILER_MSVC // Visual C++ # define ELPP_FUNC __FUNCSIG__ #elif ELPP_COMPILER_GCC // GCC # define ELPP_FUNC __PRETTY_FUNCTION__ #elif ELPP_COMPILER_INTEL // Intel C++ # define ELPP_FUNC __PRETTY_FUNCTION__ #elif ELPP_COMPILER_CLANG // Clang++ # define ELPP_FUNC __PRETTY_FUNCTION__ #else # if defined(__func__) # define ELPP_FUNC __func__ # else # define ELPP_FUNC "" # endif // defined(__func__) #endif // defined(_MSC_VER) #undef ELPP_VARIADIC_TEMPLATES_SUPPORTED // Keep following line commented until features are fixed #define ELPP_VARIADIC_TEMPLATES_SUPPORTED \ (ELPP_COMPILER_GCC || ELPP_COMPILER_CLANG || ELPP_COMPILER_INTEL || (ELPP_COMPILER_MSVC && _MSC_VER >= 1800)) // Logging Enable/Disable macros #if defined(ELPP_DISABLE_LOGS) #define ELPP_LOGGING_ENABLED 0 #else #define ELPP_LOGGING_ENABLED 1 #endif #if (!defined(ELPP_DISABLE_DEBUG_LOGS) && (ELPP_LOGGING_ENABLED)) # define ELPP_DEBUG_LOG 1 #else # define ELPP_DEBUG_LOG 0 #endif // (!defined(ELPP_DISABLE_DEBUG_LOGS) && (ELPP_LOGGING_ENABLED)) #if (!defined(ELPP_DISABLE_INFO_LOGS) && (ELPP_LOGGING_ENABLED)) # define ELPP_INFO_LOG 1 #else # define ELPP_INFO_LOG 0 #endif // (!defined(ELPP_DISABLE_INFO_LOGS) && (ELPP_LOGGING_ENABLED)) #if (!defined(ELPP_DISABLE_WARNING_LOGS) && (ELPP_LOGGING_ENABLED)) # define ELPP_WARNING_LOG 1 #else # define ELPP_WARNING_LOG 0 #endif // (!defined(ELPP_DISABLE_WARNING_LOGS) && (ELPP_LOGGING_ENABLED)) #if (!defined(ELPP_DISABLE_ERROR_LOGS) && (ELPP_LOGGING_ENABLED)) # define ELPP_ERROR_LOG 1 #else # define ELPP_ERROR_LOG 0 #endif // (!defined(ELPP_DISABLE_ERROR_LOGS) && (ELPP_LOGGING_ENABLED)) #if (!defined(ELPP_DISABLE_FATAL_LOGS) && (ELPP_LOGGING_ENABLED)) # define ELPP_FATAL_LOG 1 #else # define ELPP_FATAL_LOG 0 #endif // (!defined(ELPP_DISABLE_FATAL_LOGS) && (ELPP_LOGGING_ENABLED)) #if (!defined(ELPP_DISABLE_TRACE_LOGS) && (ELPP_LOGGING_ENABLED)) # define ELPP_TRACE_LOG 1 #else # define ELPP_TRACE_LOG 0 #endif // (!defined(ELPP_DISABLE_TRACE_LOGS) && (ELPP_LOGGING_ENABLED)) #if (!defined(ELPP_DISABLE_VERBOSE_LOGS) && (ELPP_LOGGING_ENABLED)) # define ELPP_VERBOSE_LOG 1 #else # define ELPP_VERBOSE_LOG 0 #endif // (!defined(ELPP_DISABLE_VERBOSE_LOGS) && (ELPP_LOGGING_ENABLED)) #if (!(ELPP_CXX0X || ELPP_CXX11)) # error "C++0x (or higher) support not detected! (Is `-std=c++11' missing?)" #endif // (!(ELPP_CXX0X || ELPP_CXX11)) // Headers #if defined(ELPP_SYSLOG) # include #endif // defined(ELPP_SYSLOG) #include #include #include #include #include #include #include #include #if defined(ELPP_UNICODE) # include # if ELPP_OS_WINDOWS # include # endif // ELPP_OS_WINDOWS #endif // defined(ELPP_UNICODE) #ifdef HAVE_EXECINFO # include # include #endif // ENABLE_EXECINFO #if ELPP_OS_ANDROID # include #endif // ELPP_OS_ANDROID #if ELPP_OS_UNIX # include # include #elif ELPP_OS_WINDOWS # include # include # if defined(WIN32_LEAN_AND_MEAN) # if defined(ELPP_WINSOCK2) # include # else # include # endif // defined(ELPP_WINSOCK2) # endif // defined(WIN32_LEAN_AND_MEAN) #endif // ELPP_OS_UNIX #include #include #include #include #include #include #include #include #include #include #include #include #if ELPP_THREADING_ENABLED # if ELPP_USE_STD_THREADING # include # include # else # if ELPP_OS_UNIX # include # endif // ELPP_OS_UNIX # endif // ELPP_USE_STD_THREADING #endif // ELPP_THREADING_ENABLED #if ELPP_ASYNC_LOGGING # if defined(ELPP_NO_SLEEP_FOR) # include # endif // defined(ELPP_NO_SLEEP_FOR) # include # include # include #endif // ELPP_ASYNC_LOGGING #if defined(ELPP_STL_LOGGING) // For logging STL based templates # include # include # include # include # include # include # if defined(ELPP_LOG_STD_ARRAY) # include # endif // defined(ELPP_LOG_STD_ARRAY) # if defined(ELPP_LOG_UNORDERED_SET) # include # endif // defined(ELPP_UNORDERED_SET) #endif // defined(ELPP_STL_LOGGING) #if defined(ELPP_QT_LOGGING) // For logging Qt based classes & templates # include # include # include # include # include # include # include # include # include # include # include # include #endif // defined(ELPP_QT_LOGGING) #if defined(ELPP_BOOST_LOGGING) // For logging boost based classes & templates # include # include # include # include # include # include # include # include #endif // defined(ELPP_BOOST_LOGGING) #if defined(ELPP_WXWIDGETS_LOGGING) // For logging wxWidgets based classes & templates # include #endif // defined(ELPP_WXWIDGETS_LOGGING) #if defined(ELPP_UTC_DATETIME) # define elpptime_r gmtime_r # define elpptime_s gmtime_s # define elpptime gmtime #else # define elpptime_r localtime_r # define elpptime_s localtime_s # define elpptime localtime #endif // defined(ELPP_UTC_DATETIME) // Forward declarations namespace el { class Logger; class LogMessage; class PerformanceTrackingData; class Loggers; class Helpers; template class Callback; class LogDispatchCallback; class PerformanceTrackingCallback; class LoggerRegistrationCallback; class LogDispatchData; namespace base { class Storage; class RegisteredLoggers; class PerformanceTracker; class MessageBuilder; class Writer; class PErrorWriter; class LogDispatcher; class DefaultLogBuilder; class DefaultLogDispatchCallback; #if ELPP_ASYNC_LOGGING class AsyncLogDispatchCallback; class AsyncDispatchWorker; #endif // ELPP_ASYNC_LOGGING class DefaultPerformanceTrackingCallback; } // namespace base } // namespace el /// @brief Easylogging++ entry namespace namespace el { /// @brief Namespace containing base/internal functionality used by Easylogging++ namespace base { /// @brief Data types used by Easylogging++ namespace type { #undef ELPP_LITERAL #undef ELPP_STRLEN #undef ELPP_COUT #if defined(ELPP_UNICODE) # define ELPP_LITERAL(txt) L##txt # define ELPP_STRLEN wcslen # if defined ELPP_CUSTOM_COUT # define ELPP_COUT ELPP_CUSTOM_COUT # else # define ELPP_COUT std::wcout # endif // defined ELPP_CUSTOM_COUT typedef wchar_t char_t; typedef std::wstring string_t; typedef std::wstringstream stringstream_t; typedef std::wfstream fstream_t; typedef std::wostream ostream_t; #else # define ELPP_LITERAL(txt) txt # define ELPP_STRLEN strlen # if defined ELPP_CUSTOM_COUT # define ELPP_COUT ELPP_CUSTOM_COUT # else # define ELPP_COUT std::cout # endif // defined ELPP_CUSTOM_COUT typedef char char_t; typedef std::string string_t; typedef std::stringstream stringstream_t; typedef std::fstream fstream_t; typedef std::ostream ostream_t; #endif // defined(ELPP_UNICODE) #if defined(ELPP_CUSTOM_COUT_LINE) # define ELPP_COUT_LINE(logLine) ELPP_CUSTOM_COUT_LINE(logLine) #else # define ELPP_COUT_LINE(logLine) logLine << std::flush #endif // defined(ELPP_CUSTOM_COUT_LINE) typedef unsigned int EnumType; typedef unsigned short VerboseLevel; typedef unsigned long int LineNumber; typedef std::shared_ptr StoragePointer; typedef std::shared_ptr LogDispatchCallbackPtr; typedef std::shared_ptr PerformanceTrackingCallbackPtr; typedef std::shared_ptr LoggerRegistrationCallbackPtr; typedef std::unique_ptr PerformanceTrackerPtr; } // namespace type /// @brief Internal helper class that prevent copy constructor for class /// /// @detail When using this class simply inherit it privately class NoCopy { protected: NoCopy(void) {} private: NoCopy(const NoCopy&); NoCopy& operator=(const NoCopy&); }; /// @brief Internal helper class that makes all default constructors private. /// /// @detail This prevents initializing class making it static unless an explicit constructor is declared. /// When using this class simply inherit it privately class StaticClass { private: StaticClass(void); StaticClass(const StaticClass&); StaticClass& operator=(const StaticClass&); }; } // namespace base /// @brief Represents enumeration for severity level used to determine level of logging /// /// @detail With Easylogging++, developers may disable or enable any level regardless of /// what the severity is. Or they can choose to log using hierarchical logging flag enum class Level : base::type::EnumType { /// @brief Generic level that represents all the levels. Useful when setting global configuration for all levels Global = 1, /// @brief Information that can be useful to back-trace certain events - mostly useful than debug logs. Trace = 2, /// @brief Informational events most useful for developers to debug application Debug = 4, /// @brief Severe error information that will presumably abort application Fatal = 8, /// @brief Information representing errors in application but application will keep running Error = 16, /// @brief Useful when application has potentially harmful situations Warning = 32, /// @brief Information that can be highly useful and vary with verbose logging level. Verbose = 64, /// @brief Mainly useful to represent current progress of application Info = 128, /// @brief Represents unknown level Unknown = 1010 }; } // namespace el namespace std { template<> struct hash { public: std::size_t operator()(const el::Level& l) const { return hash {}(static_cast(l)); } }; } namespace el { /// @brief Static class that contains helper functions for el::Level class LevelHelper : base::StaticClass { public: /// @brief Represents minimum valid level. Useful when iterating through enum. static const base::type::EnumType kMinValid = static_cast(Level::Trace); /// @brief Represents maximum valid level. This is used internally and you should not need it. static const base::type::EnumType kMaxValid = static_cast(Level::Info); /// @brief Casts level to int, useful for iterating through enum. static base::type::EnumType castToInt(Level level) { return static_cast(level); } /// @brief Casts int(ushort) to level, useful for iterating through enum. static Level castFromInt(base::type::EnumType l) { return static_cast(l); } /// @brief Converts level to associated const char* /// @return Upper case string based level. static const char* convertToString(Level level); /// @brief Converts from levelStr to Level /// @param levelStr Upper case string based level. /// Lower case is also valid but providing upper case is recommended. static Level convertFromString(const char* levelStr); /// @brief Applies specified function to each level starting from startIndex /// @param startIndex initial value to start the iteration from. This is passed as pointer and /// is left-shifted so this can be used inside function (fn) to represent current level. /// @param fn function to apply with each level. This bool represent whether or not to stop iterating through levels. static void forEachLevel(base::type::EnumType* startIndex, const std::function& fn); }; /// @brief Represents enumeration of ConfigurationType used to configure or access certain aspect /// of logging enum class ConfigurationType : base::type::EnumType { /// @brief Determines whether or not corresponding level and logger of logging is enabled /// You may disable all logs by using el::Level::Global Enabled = 1, /// @brief Whether or not to write corresponding log to log file ToFile = 2, /// @brief Whether or not to write corresponding level and logger log to standard output. /// By standard output meaning termnal, command prompt etc ToStandardOutput = 4, /// @brief Determines format of logging corresponding level and logger. Format = 8, /// @brief Determines log file (full path) to write logs to for corresponding level and logger Filename = 16, /// @brief Specifies precision of the subsecond part. It should be within range (1-6). SubsecondPrecision = 32, /// @brief Alias of SubsecondPrecision (for backward compatibility) MillisecondsWidth = SubsecondPrecision, /// @brief Determines whether or not performance tracking is enabled. /// /// @detail This does not depend on logger or level. Performance tracking always uses 'performance' logger PerformanceTracking = 64, /// @brief Specifies log file max size. /// /// @detail If file size of corresponding log file (for corresponding level) is >= specified size, log file will /// be truncated and re-initiated. MaxLogFileSize = 128, /// @brief Specifies number of log entries to hold until we flush pending log data LogFlushThreshold = 256, /// @brief Represents unknown configuration Unknown = 1010 }; /// @brief Static class that contains helper functions for el::ConfigurationType class ConfigurationTypeHelper : base::StaticClass { public: /// @brief Represents minimum valid configuration type. Useful when iterating through enum. static const base::type::EnumType kMinValid = static_cast(ConfigurationType::Enabled); /// @brief Represents maximum valid configuration type. This is used internally and you should not need it. static const base::type::EnumType kMaxValid = static_cast(ConfigurationType::MaxLogFileSize); /// @brief Casts configuration type to int, useful for iterating through enum. static base::type::EnumType castToInt(ConfigurationType configurationType) { return static_cast(configurationType); } /// @brief Casts int(ushort) to configuration type, useful for iterating through enum. static ConfigurationType castFromInt(base::type::EnumType c) { return static_cast(c); } /// @brief Converts configuration type to associated const char* /// @returns Upper case string based configuration type. static const char* convertToString(ConfigurationType configurationType); /// @brief Converts from configStr to ConfigurationType /// @param configStr Upper case string based configuration type. /// Lower case is also valid but providing upper case is recommended. static ConfigurationType convertFromString(const char* configStr); /// @brief Applies specified function to each configuration type starting from startIndex /// @param startIndex initial value to start the iteration from. This is passed by pointer and is left-shifted /// so this can be used inside function (fn) to represent current configuration type. /// @param fn function to apply with each configuration type. /// This bool represent whether or not to stop iterating through configurations. static inline void forEachConfigType(base::type::EnumType* startIndex, const std::function& fn); }; /// @brief Flags used while writing logs. This flags are set by user enum class LoggingFlag : base::type::EnumType { /// @brief Makes sure we have new line for each container log entry NewLineForContainer = 1, /// @brief Makes sure if -vmodule is used and does not specifies a module, then verbose /// logging is allowed via that module. AllowVerboseIfModuleNotSpecified = 2, /// @brief When handling crashes by default, detailed crash reason will be logged as well LogDetailedCrashReason = 4, /// @brief Allows to disable application abortion when logged using FATAL level DisableApplicationAbortOnFatalLog = 8, /// @brief Flushes log with every log-entry (performance sensitive) - Disabled by default ImmediateFlush = 16, /// @brief Enables strict file rolling StrictLogFileSizeCheck = 32, /// @brief Make terminal output colorful for supported terminals ColoredTerminalOutput = 64, /// @brief Supports use of multiple logging in same macro, e.g, CLOG(INFO, "default", "network") MultiLoggerSupport = 128, /// @brief Disables comparing performance tracker's checkpoints DisablePerformanceTrackingCheckpointComparison = 256, /// @brief Disable VModules DisableVModules = 512, /// @brief Disable VModules extensions DisableVModulesExtensions = 1024, /// @brief Enables hierarchical logging HierarchicalLogging = 2048, /// @brief Creates logger automatically when not available CreateLoggerAutomatically = 4096, /// @brief Adds spaces b/w logs that separated by left-shift operator AutoSpacing = 8192, /// @brief Preserves time format and does not convert it to sec, hour etc (performance tracking only) FixedTimeFormat = 16384, // @brief Ignore SIGINT or crash IgnoreSigInt = 32768, }; namespace base { /// @brief Namespace containing constants used internally. namespace consts { static const char kFormatSpecifierCharValue = 'v'; static const char kFormatSpecifierChar = '%'; static const unsigned int kMaxLogPerCounter = 100000; static const unsigned int kMaxLogPerContainer = 100; static const unsigned int kDefaultSubsecondPrecision = 3; #ifdef ELPP_DEFAULT_LOGGER static const char* kDefaultLoggerId = ELPP_DEFAULT_LOGGER; #else static const char* kDefaultLoggerId = "default"; #endif #if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) #ifdef ELPP_DEFAULT_PERFORMANCE_LOGGER static const char* kPerformanceLoggerId = ELPP_DEFAULT_PERFORMANCE_LOGGER; #else static const char* kPerformanceLoggerId = "performance"; #endif // ELPP_DEFAULT_PERFORMANCE_LOGGER #endif #if defined(ELPP_SYSLOG) static const char* kSysLogLoggerId = "syslog"; #endif // defined(ELPP_SYSLOG) #if ELPP_OS_WINDOWS static const char* kFilePathSeparator = "\\"; #else static const char* kFilePathSeparator = "/"; #endif // ELPP_OS_WINDOWS static const std::size_t kSourceFilenameMaxLength = 100; static const std::size_t kSourceLineMaxLength = 10; static const Level kPerformanceTrackerDefaultLevel = Level::Info; const struct { double value; const base::type::char_t* unit; } kTimeFormats[] = { { 1000.0f, ELPP_LITERAL("us") }, { 1000.0f, ELPP_LITERAL("ms") }, { 60.0f, ELPP_LITERAL("seconds") }, { 60.0f, ELPP_LITERAL("minutes") }, { 24.0f, ELPP_LITERAL("hours") }, { 7.0f, ELPP_LITERAL("days") } }; static const int kTimeFormatsCount = sizeof(kTimeFormats) / sizeof(kTimeFormats[0]); const struct { int numb; const char* name; const char* brief; const char* detail; } kCrashSignals[] = { // NOTE: Do not re-order, if you do please check CrashHandler(bool) constructor and CrashHandler::setHandler(..) { SIGABRT, "SIGABRT", "Abnormal termination", "Program was abnormally terminated." }, { SIGFPE, "SIGFPE", "Erroneous arithmetic operation", "Arithmetic operation issue such as division by zero or operation resulting in overflow." }, { SIGILL, "SIGILL", "Illegal instruction", "Generally due to a corruption in the code or to an attempt to execute data." }, { SIGSEGV, "SIGSEGV", "Invalid access to memory", "Program is trying to read an invalid (unallocated, deleted or corrupted) or inaccessible memory." }, { SIGINT, "SIGINT", "Interactive attention signal", "Interruption generated (generally) by user or operating system." }, }; static const int kCrashSignalsCount = sizeof(kCrashSignals) / sizeof(kCrashSignals[0]); } // namespace consts } // namespace base typedef std::function PreRollOutCallback; namespace base { static inline void defaultPreRollOutCallback(const char*, std::size_t) {} /// @brief Enum to represent timestamp unit enum class TimestampUnit : base::type::EnumType { Microsecond = 0, Millisecond = 1, Second = 2, Minute = 3, Hour = 4, Day = 5 }; /// @brief Format flags used to determine specifiers that are active for performance improvements. enum class FormatFlags : base::type::EnumType { DateTime = 1 << 1, LoggerId = 1 << 2, File = 1 << 3, Line = 1 << 4, Location = 1 << 5, Function = 1 << 6, User = 1 << 7, Host = 1 << 8, LogMessage = 1 << 9, VerboseLevel = 1 << 10, AppName = 1 << 11, ThreadId = 1 << 12, Level = 1 << 13, FileBase = 1 << 14, LevelShort = 1 << 15 }; /// @brief A subsecond precision class containing actual width and offset of the subsecond part class SubsecondPrecision { public: SubsecondPrecision(void) { init(base::consts::kDefaultSubsecondPrecision); } explicit SubsecondPrecision(int width) { init(width); } bool operator==(const SubsecondPrecision& ssPrec) { return m_width == ssPrec.m_width && m_offset == ssPrec.m_offset; } int m_width; unsigned int m_offset; private: void init(int width); }; /// @brief Type alias of SubsecondPrecision typedef SubsecondPrecision MillisecondsWidth; /// @brief Namespace containing utility functions/static classes used internally namespace utils { /// @brief Deletes memory safely and points to null template static typename std::enable_if::value, void>::type safeDelete(T*& pointer) { if (pointer == nullptr) return; delete pointer; pointer = nullptr; } /// @brief Bitwise operations for C++11 strong enum class. This casts e into Flag_T and returns value after bitwise operation /// Use these function as

flag = bitwise::Or(MyEnum::val1, flag);
namespace bitwise { template static inline base::type::EnumType And(Enum e, base::type::EnumType flag) { return static_cast(flag) & static_cast(e); } template static inline base::type::EnumType Not(Enum e, base::type::EnumType flag) { return static_cast(flag) & ~(static_cast(e)); } template static inline base::type::EnumType Or(Enum e, base::type::EnumType flag) { return static_cast(flag) | static_cast(e); } } // namespace bitwise template static inline void addFlag(Enum e, base::type::EnumType* flag) { *flag = base::utils::bitwise::Or(e, *flag); } template static inline void removeFlag(Enum e, base::type::EnumType* flag) { *flag = base::utils::bitwise::Not(e, *flag); } template static inline bool hasFlag(Enum e, base::type::EnumType flag) { return base::utils::bitwise::And(e, flag) > 0x0; } } // namespace utils namespace threading { #if ELPP_THREADING_ENABLED # if !ELPP_USE_STD_THREADING namespace internal { /// @brief A mutex wrapper for compiler that dont yet support std::recursive_mutex class Mutex : base::NoCopy { public: Mutex(void) { # if ELPP_OS_UNIX pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); pthread_mutex_init(&m_underlyingMutex, &attr); pthread_mutexattr_destroy(&attr); # elif ELPP_OS_WINDOWS InitializeCriticalSection(&m_underlyingMutex); # endif // ELPP_OS_UNIX } virtual ~Mutex(void) { # if ELPP_OS_UNIX pthread_mutex_destroy(&m_underlyingMutex); # elif ELPP_OS_WINDOWS DeleteCriticalSection(&m_underlyingMutex); # endif // ELPP_OS_UNIX } inline void lock(void) { # if ELPP_OS_UNIX pthread_mutex_lock(&m_underlyingMutex); # elif ELPP_OS_WINDOWS EnterCriticalSection(&m_underlyingMutex); # endif // ELPP_OS_UNIX } inline bool try_lock(void) { # if ELPP_OS_UNIX return (pthread_mutex_trylock(&m_underlyingMutex) == 0); # elif ELPP_OS_WINDOWS return TryEnterCriticalSection(&m_underlyingMutex); # endif // ELPP_OS_UNIX } inline void unlock(void) { # if ELPP_OS_UNIX pthread_mutex_unlock(&m_underlyingMutex); # elif ELPP_OS_WINDOWS LeaveCriticalSection(&m_underlyingMutex); # endif // ELPP_OS_UNIX } private: # if ELPP_OS_UNIX pthread_mutex_t m_underlyingMutex; # elif ELPP_OS_WINDOWS CRITICAL_SECTION m_underlyingMutex; # endif // ELPP_OS_UNIX }; /// @brief Scoped lock for compiler that dont yet support std::lock_guard template class ScopedLock : base::NoCopy { public: explicit ScopedLock(M& mutex) { m_mutex = &mutex; m_mutex->lock(); } virtual ~ScopedLock(void) { m_mutex->unlock(); } private: M* m_mutex; ScopedLock(void); }; } // namespace internal typedef base::threading::internal::Mutex Mutex; typedef base::threading::internal::ScopedLock ScopedLock; # else typedef std::recursive_mutex Mutex; typedef std::lock_guard ScopedLock; # endif // !ELPP_USE_STD_THREADING #else namespace internal { /// @brief Mutex wrapper used when multi-threading is disabled. class NoMutex : base::NoCopy { public: NoMutex(void) {} inline void lock(void) {} inline bool try_lock(void) { return true; } inline void unlock(void) {} }; /// @brief Lock guard wrapper used when multi-threading is disabled. template class NoScopedLock : base::NoCopy { public: explicit NoScopedLock(Mutex&) { } virtual ~NoScopedLock(void) { } private: NoScopedLock(void); }; } // namespace internal typedef base::threading::internal::NoMutex Mutex; typedef base::threading::internal::NoScopedLock ScopedLock; #endif // ELPP_THREADING_ENABLED /// @brief Base of thread safe class, this class is inheritable-only class ThreadSafe { public: virtual inline void acquireLock(void) ELPP_FINAL { m_mutex.lock(); } virtual inline void releaseLock(void) ELPP_FINAL { m_mutex.unlock(); } virtual inline base::threading::Mutex& lock(void) ELPP_FINAL { return m_mutex; } protected: ThreadSafe(void) {} virtual ~ThreadSafe(void) {} private: base::threading::Mutex m_mutex; }; #if ELPP_THREADING_ENABLED # if !ELPP_USE_STD_THREADING /// @brief Gets ID of currently running threading in windows systems. On unix, nothing is returned. static std::string getCurrentThreadId(void) { std::stringstream ss; # if (ELPP_OS_WINDOWS) ss << GetCurrentThreadId(); # endif // (ELPP_OS_WINDOWS) return ss.str(); } # else /// @brief Gets ID of currently running threading using std::this_thread::get_id() static std::string getCurrentThreadId(void) { std::stringstream ss; ss << std::this_thread::get_id(); return ss.str(); } # endif // !ELPP_USE_STD_THREADING #else static inline std::string getCurrentThreadId(void) { return std::string(); } #endif // ELPP_THREADING_ENABLED } // namespace threading namespace utils { class File : base::StaticClass { public: /// @brief Creates new out file stream for specified filename. /// @return Pointer to newly created fstream or nullptr static base::type::fstream_t* newFileStream(const std::string& filename); /// @brief Gets size of file provided in stream static std::size_t getSizeOfFile(base::type::fstream_t* fs); /// @brief Determines whether or not provided path exist in current file system static bool pathExists(const char* path, bool considerFile = false); /// @brief Creates specified path on file system /// @param path Path to create. static bool createPath(const std::string& path); /// @brief Extracts path of filename with leading slash static std::string extractPathFromFilename(const std::string& fullPath, const char* separator = base::consts::kFilePathSeparator); /// @brief builds stripped filename and puts it in buff static void buildStrippedFilename(const char* filename, char buff[], std::size_t limit = base::consts::kSourceFilenameMaxLength); /// @brief builds base filename and puts it in buff static void buildBaseFilename(const std::string& fullPath, char buff[], std::size_t limit = base::consts::kSourceFilenameMaxLength, const char* separator = base::consts::kFilePathSeparator); }; /// @brief String utilities helper class used internally. You should not use it. class Str : base::StaticClass { public: /// @brief Checks if character is digit. Dont use libc implementation of it to prevent locale issues. static inline bool isDigit(char c) { return c >= '0' && c <= '9'; } /// @brief Matches wildcards, '*' and '?' only supported. static bool wildCardMatch(const char* str, const char* pattern); static std::string& ltrim(std::string& str); static std::string& rtrim(std::string& str); static std::string& trim(std::string& str); /// @brief Determines whether or not str starts with specified string /// @param str String to check /// @param start String to check against /// @return Returns true if starts with specified string, false otherwise static bool startsWith(const std::string& str, const std::string& start); /// @brief Determines whether or not str ends with specified string /// @param str String to check /// @param end String to check against /// @return Returns true if ends with specified string, false otherwise static bool endsWith(const std::string& str, const std::string& end); /// @brief Replaces all instances of replaceWhat with 'replaceWith'. Original variable is changed for performance. /// @param [in,out] str String to replace from /// @param replaceWhat Character to replace /// @param replaceWith Character to replace with /// @return Modified version of str static std::string& replaceAll(std::string& str, char replaceWhat, char replaceWith); /// @brief Replaces all instances of 'replaceWhat' with 'replaceWith'. (String version) Replaces in place /// @param str String to replace from /// @param replaceWhat Character to replace /// @param replaceWith Character to replace with /// @return Modified (original) str static std::string& replaceAll(std::string& str, const std::string& replaceWhat, const std::string& replaceWith); static void replaceFirstWithEscape(base::type::string_t& str, const base::type::string_t& replaceWhat, const base::type::string_t& replaceWith); #if defined(ELPP_UNICODE) static void replaceFirstWithEscape(base::type::string_t& str, const base::type::string_t& replaceWhat, const std::string& replaceWith); #endif // defined(ELPP_UNICODE) /// @brief Converts string to uppercase /// @param str String to convert /// @return Uppercase string static std::string& toUpper(std::string& str); /// @brief Compares cstring equality - uses strcmp static bool cStringEq(const char* s1, const char* s2); /// @brief Compares cstring equality (case-insensitive) - uses toupper(char) /// Dont use strcasecmp because of CRT (VC++) static bool cStringCaseEq(const char* s1, const char* s2); /// @brief Returns true if c exist in str static bool contains(const char* str, char c); static char* convertAndAddToBuff(std::size_t n, int len, char* buf, const char* bufLim, bool zeroPadded = true); static char* addToBuff(const char* str, char* buf, const char* bufLim); static char* clearBuff(char buff[], std::size_t lim); /// @brief Converts wchar* to char* /// NOTE: Need to free return value after use! static char* wcharPtrToCharPtr(const wchar_t* line); }; /// @brief Operating System helper static class used internally. You should not use it. class OS : base::StaticClass { public: #if ELPP_OS_WINDOWS /// @brief Gets environment variables for Windows based OS. /// We are not using getenv(const char*) because of CRT deprecation /// @param varname Variable name to get environment variable value for /// @return If variable exist the value of it otherwise nullptr static const char* getWindowsEnvironmentVariable(const char* varname); #endif // ELPP_OS_WINDOWS #if ELPP_OS_ANDROID /// @brief Reads android property value static std::string getProperty(const char* prop); /// @brief Reads android device name static std::string getDeviceName(void); #endif // ELPP_OS_ANDROID /// @brief Runs command on terminal and returns the output. /// /// @detail This is applicable only on unix based systems, for all other OS, an empty string is returned. /// @param command Bash command /// @return Result of bash output or empty string if no result found. static const std::string getBashOutput(const char* command); /// @brief Gets environment variable. This is cross-platform and CRT safe (for VC++) /// @param variableName Environment variable name /// @param defaultVal If no environment variable or value found the value to return by default /// @param alternativeBashCommand If environment variable not found what would be alternative bash command /// in order to look for value user is looking for. E.g, for 'user' alternative command will 'whoami' static std::string getEnvironmentVariable(const char* variableName, const char* defaultVal, const char* alternativeBashCommand = nullptr); /// @brief Gets current username. static std::string currentUser(void); /// @brief Gets current host name or computer name. /// /// @detail For android systems this is device name with its manufacturer and model separated by hyphen static std::string currentHost(void); /// @brief Whether or not terminal supports colors static bool termSupportsColor(void); }; /// @brief Contains utilities for cross-platform date/time. This class make use of el::base::utils::Str class DateTime : base::StaticClass { public: /// @brief Cross platform gettimeofday for Windows and unix platform. This can be used to determine current microsecond. /// /// @detail For unix system it uses gettimeofday(timeval*, timezone*) and for Windows, a separate implementation is provided /// @param [in,out] tv Pointer that gets updated static void gettimeofday(struct timeval* tv); /// @brief Gets current date and time with a subsecond part. /// @param format User provided date/time format /// @param ssPrec A pointer to base::SubsecondPrecision from configuration (non-null) /// @returns string based date time in specified format. static std::string getDateTime(const char* format, const base::SubsecondPrecision* ssPrec); /// @brief Converts timeval (struct from ctime) to string using specified format and subsecond precision static std::string timevalToString(struct timeval tval, const char* format, const el::base::SubsecondPrecision* ssPrec); /// @brief Formats time to get unit accordingly, units like second if > 1000 or minutes if > 60000 etc static base::type::string_t formatTime(unsigned long long time, base::TimestampUnit timestampUnit); /// @brief Gets time difference in milli/micro second depending on timestampUnit static unsigned long long getTimeDifference(const struct timeval& endTime, const struct timeval& startTime, base::TimestampUnit timestampUnit); static struct ::tm* buildTimeInfo(struct timeval* currTime, struct ::tm* timeInfo); private: static char* parseFormat(char* buf, std::size_t bufSz, const char* format, const struct tm* tInfo, std::size_t msec, const base::SubsecondPrecision* ssPrec); }; /// @brief Command line arguments for application if specified using el::Helpers::setArgs(..) or START_EASYLOGGINGPP(..) class CommandLineArgs { public: CommandLineArgs(void) { setArgs(0, static_cast(nullptr)); } CommandLineArgs(int argc, const char** argv) { setArgs(argc, argv); } CommandLineArgs(int argc, char** argv) { setArgs(argc, argv); } virtual ~CommandLineArgs(void) {} /// @brief Sets arguments and parses them inline void setArgs(int argc, const char** argv) { setArgs(argc, const_cast(argv)); } /// @brief Sets arguments and parses them void setArgs(int argc, char** argv); /// @brief Returns true if arguments contain paramKey with a value (separated by '=') bool hasParamWithValue(const char* paramKey) const; /// @brief Returns value of arguments /// @see hasParamWithValue(const char*) const char* getParamValue(const char* paramKey) const; /// @brief Return true if arguments has a param (not having a value) i,e without '=' bool hasParam(const char* paramKey) const; /// @brief Returns true if no params available. This exclude argv[0] bool empty(void) const; /// @brief Returns total number of arguments. This exclude argv[0] std::size_t size(void) const; friend base::type::ostream_t& operator<<(base::type::ostream_t& os, const CommandLineArgs& c); private: int m_argc; char** m_argv; std::unordered_map m_paramsWithValue; std::vector m_params; }; /// @brief Abstract registry (aka repository) that provides basic interface for pointer repository specified by T_Ptr type. /// /// @detail Most of the functions are virtual final methods but anything implementing this abstract class should implement /// unregisterAll() and deepCopy(const AbstractRegistry&) and write registerNew() method according to container /// and few more methods; get() to find element, unregister() to unregister single entry. /// Please note that this is thread-unsafe and should also implement thread-safety mechanisms in implementation. template class AbstractRegistry : public base::threading::ThreadSafe { public: typedef typename Container::iterator iterator; typedef typename Container::const_iterator const_iterator; /// @brief Default constructor AbstractRegistry(void) {} /// @brief Move constructor that is useful for base classes AbstractRegistry(AbstractRegistry&& sr) { if (this == &sr) { return; } unregisterAll(); m_list = std::move(sr.m_list); } bool operator==(const AbstractRegistry& other) { if (size() != other.size()) { return false; } for (std::size_t i = 0; i < m_list.size(); ++i) { if (m_list.at(i) != other.m_list.at(i)) { return false; } } return true; } bool operator!=(const AbstractRegistry& other) { if (size() != other.size()) { return true; } for (std::size_t i = 0; i < m_list.size(); ++i) { if (m_list.at(i) != other.m_list.at(i)) { return true; } } return false; } /// @brief Assignment move operator AbstractRegistry& operator=(AbstractRegistry&& sr) { if (this == &sr) { return *this; } unregisterAll(); m_list = std::move(sr.m_list); return *this; } virtual ~AbstractRegistry(void) { } /// @return Iterator pointer from start of repository virtual inline iterator begin(void) ELPP_FINAL { return m_list.begin(); } /// @return Iterator pointer from end of repository virtual inline iterator end(void) ELPP_FINAL { return m_list.end(); } /// @return Constant iterator pointer from start of repository virtual inline const_iterator cbegin(void) const ELPP_FINAL { return m_list.cbegin(); } /// @return End of repository virtual inline const_iterator cend(void) const ELPP_FINAL { return m_list.cend(); } /// @return Whether or not repository is empty virtual inline bool empty(void) const ELPP_FINAL { return m_list.empty(); } /// @return Size of repository virtual inline std::size_t size(void) const ELPP_FINAL { return m_list.size(); } /// @brief Returns underlying container by reference virtual inline Container& list(void) ELPP_FINAL { return m_list; } /// @brief Returns underlying container by constant reference. virtual inline const Container& list(void) const ELPP_FINAL { return m_list; } /// @brief Unregisters all the pointers from current repository. virtual void unregisterAll(void) = 0; protected: virtual void deepCopy(const AbstractRegistry&) = 0; void reinitDeepCopy(const AbstractRegistry& sr) { unregisterAll(); deepCopy(sr); } private: Container m_list; }; /// @brief A pointer registry mechanism to manage memory and provide search functionalities. (non-predicate version) /// /// @detail NOTE: This is thread-unsafe implementation (although it contains lock function, it does not use these functions) /// of AbstractRegistry. Any implementation of this class should be /// explicitly (by using lock functions) template class Registry : public AbstractRegistry> { public: typedef typename Registry::iterator iterator; typedef typename Registry::const_iterator const_iterator; Registry(void) {} /// @brief Copy constructor that is useful for base classes. Try to avoid this constructor, use move constructor. Registry(const Registry& sr) : AbstractRegistry>() { if (this == &sr) { return; } this->reinitDeepCopy(sr); } /// @brief Assignment operator that unregisters all the existing registries and deeply copies each of repo element /// @see unregisterAll() /// @see deepCopy(const AbstractRegistry&) Registry& operator=(const Registry& sr) { if (this == &sr) { return *this; } this->reinitDeepCopy(sr); return *this; } virtual ~Registry(void) { unregisterAll(); } protected: virtual void unregisterAll(void) ELPP_FINAL { if (!this->empty()) { for (auto&& curr : this->list()) { base::utils::safeDelete(curr.second); } this->list().clear(); } } /// @brief Registers new registry to repository. virtual void registerNew(const T_Key& uniqKey, T_Ptr* ptr) ELPP_FINAL { unregister(uniqKey); this->list().insert(std::make_pair(uniqKey, ptr)); } /// @brief Unregisters single entry mapped to specified unique key void unregister(const T_Key& uniqKey) { T_Ptr* existing = get(uniqKey); if (existing != nullptr) { this->list().erase(uniqKey); base::utils::safeDelete(existing); } } /// @brief Gets pointer from repository. If none found, nullptr is returned. T_Ptr* get(const T_Key& uniqKey) { iterator it = this->list().find(uniqKey); return it == this->list().end() ? nullptr : it->second; } private: virtual void deepCopy(const AbstractRegistry>& sr) ELPP_FINAL { for (const_iterator it = sr.cbegin(); it != sr.cend(); ++it) { registerNew(it->first, new T_Ptr(*it->second)); } } }; /// @brief A pointer registry mechanism to manage memory and provide search functionalities. (predicate version) /// /// @detail NOTE: This is thread-unsafe implementation of AbstractRegistry. Any implementation of this class /// should be made thread-safe explicitly template class RegistryWithPred : public AbstractRegistry> { public: typedef typename RegistryWithPred::iterator iterator; typedef typename RegistryWithPred::const_iterator const_iterator; RegistryWithPred(void) { } virtual ~RegistryWithPred(void) { unregisterAll(); } /// @brief Copy constructor that is useful for base classes. Try to avoid this constructor, use move constructor. RegistryWithPred(const RegistryWithPred& sr) : AbstractRegistry>() { if (this == &sr) { return; } this->reinitDeepCopy(sr); } /// @brief Assignment operator that unregisters all the existing registries and deeply copies each of repo element /// @see unregisterAll() /// @see deepCopy(const AbstractRegistry&) RegistryWithPred& operator=(const RegistryWithPred& sr) { if (this == &sr) { return *this; } this->reinitDeepCopy(sr); return *this; } friend base::type::ostream_t& operator<<(base::type::ostream_t& os, const RegistryWithPred& sr) { for (const_iterator it = sr.list().begin(); it != sr.list().end(); ++it) { os << ELPP_LITERAL(" ") << **it << ELPP_LITERAL("\n"); } return os; } protected: virtual void unregisterAll(void) ELPP_FINAL { if (!this->empty()) { for (auto&& curr : this->list()) { base::utils::safeDelete(curr); } this->list().clear(); } } virtual void unregister(T_Ptr*& ptr) ELPP_FINAL { if (ptr) { iterator iter = this->begin(); for (; iter != this->end(); ++iter) { if (ptr == *iter) { break; } } if (iter != this->end() && *iter != nullptr) { this->list().erase(iter); base::utils::safeDelete(*iter); } } } virtual inline void registerNew(T_Ptr* ptr) ELPP_FINAL { this->list().push_back(ptr); } /// @brief Gets pointer from repository with specified arguments. Arguments are passed to predicate /// in order to validate pointer. template T_Ptr* get(const T& arg1, const T2 arg2) { iterator iter = std::find_if(this->list().begin(), this->list().end(), Pred(arg1, arg2)); if (iter != this->list().end() && *iter != nullptr) { return *iter; } return nullptr; } private: virtual void deepCopy(const AbstractRegistry>& sr) { for (const_iterator it = sr.list().begin(); it != sr.list().end(); ++it) { registerNew(new T_Ptr(**it)); } } }; class Utils { public: template static bool installCallback(const std::string& id, std::unordered_map* mapT) { if (mapT->find(id) == mapT->end()) { mapT->insert(std::make_pair(id, TPtr(new T()))); return true; } return false; } template static void uninstallCallback(const std::string& id, std::unordered_map* mapT) { if (mapT->find(id) != mapT->end()) { mapT->erase(id); } } template static T* callback(const std::string& id, std::unordered_map* mapT) { typename std::unordered_map::iterator iter = mapT->find(id); if (iter != mapT->end()) { return static_cast(iter->second.get()); } return nullptr; } }; } // namespace utils } // namespace base /// @brief Base of Easylogging++ friendly class /// /// @detail After inheriting this class publicly, implement pure-virtual function `void log(std::ostream&) const` class Loggable { public: virtual ~Loggable(void) {} virtual void log(el::base::type::ostream_t&) const = 0; private: friend inline el::base::type::ostream_t& operator<<(el::base::type::ostream_t& os, const Loggable& loggable) { loggable.log(os); return os; } }; namespace base { /// @brief Represents log format containing flags and date format. This is used internally to start initial log class LogFormat : public Loggable { public: LogFormat(void); LogFormat(Level level, const base::type::string_t& format); LogFormat(const LogFormat& logFormat); LogFormat(LogFormat&& logFormat); LogFormat& operator=(const LogFormat& logFormat); virtual ~LogFormat(void) {} bool operator==(const LogFormat& other); /// @brief Updates format to be used while logging. /// @param userFormat User provided format void parseFromFormat(const base::type::string_t& userFormat); inline Level level(void) const { return m_level; } inline const base::type::string_t& userFormat(void) const { return m_userFormat; } inline const base::type::string_t& format(void) const { return m_format; } inline const std::string& dateTimeFormat(void) const { return m_dateTimeFormat; } inline base::type::EnumType flags(void) const { return m_flags; } inline bool hasFlag(base::FormatFlags flag) const { return base::utils::hasFlag(flag, m_flags); } virtual void log(el::base::type::ostream_t& os) const { os << m_format; } protected: /// @brief Updates date time format if available in currFormat. /// @param index Index where %datetime, %date or %time was found /// @param [in,out] currFormat current format that is being used to format virtual void updateDateFormat(std::size_t index, base::type::string_t& currFormat) ELPP_FINAL; /// @brief Updates %level from format. This is so that we dont have to do it at log-writing-time. It uses m_format and m_level virtual void updateFormatSpec(void) ELPP_FINAL; inline void addFlag(base::FormatFlags flag) { base::utils::addFlag(flag, &m_flags); } private: Level m_level; base::type::string_t m_userFormat; base::type::string_t m_format; std::string m_dateTimeFormat; base::type::EnumType m_flags; std::string m_currentUser; std::string m_currentHost; friend class el::Logger; // To resolve loggerId format specifier easily }; } // namespace base /// @brief Resolving function for format specifier typedef std::function FormatSpecifierValueResolver; /// @brief User-provided custom format specifier /// @see el::Helpers::installCustomFormatSpecifier /// @see FormatSpecifierValueResolver class CustomFormatSpecifier { public: CustomFormatSpecifier(const char* formatSpecifier, const FormatSpecifierValueResolver& resolver) : m_formatSpecifier(formatSpecifier), m_resolver(resolver) {} inline const char* formatSpecifier(void) const { return m_formatSpecifier; } inline const FormatSpecifierValueResolver& resolver(void) const { return m_resolver; } inline bool operator==(const char* formatSpecifier) { return strcmp(m_formatSpecifier, formatSpecifier) == 0; } private: const char* m_formatSpecifier; FormatSpecifierValueResolver m_resolver; }; /// @brief Represents single configuration that has representing level, configuration type and a string based value. /// /// @detail String based value means any value either its boolean, integer or string itself, it will be embedded inside quotes /// and will be parsed later. /// /// Consider some examples below: /// * el::Configuration confEnabledInfo(el::Level::Info, el::ConfigurationType::Enabled, "true"); /// * el::Configuration confMaxLogFileSizeInfo(el::Level::Info, el::ConfigurationType::MaxLogFileSize, "2048"); /// * el::Configuration confFilenameInfo(el::Level::Info, el::ConfigurationType::Filename, "/var/log/my.log"); class Configuration : public Loggable { public: Configuration(const Configuration& c); Configuration& operator=(const Configuration& c); virtual ~Configuration(void) { } /// @brief Full constructor used to sets value of configuration Configuration(Level level, ConfigurationType configurationType, const std::string& value); /// @brief Gets level of current configuration inline Level level(void) const { return m_level; } /// @brief Gets configuration type of current configuration inline ConfigurationType configurationType(void) const { return m_configurationType; } /// @brief Gets string based configuration value inline const std::string& value(void) const { return m_value; } /// @brief Set string based configuration value /// @param value Value to set. Values have to be std::string; For boolean values use "true", "false", for any integral values /// use them in quotes. They will be parsed when configuring inline void setValue(const std::string& value) { m_value = value; } virtual void log(el::base::type::ostream_t& os) const; /// @brief Used to find configuration from configuration (pointers) repository. Avoid using it. class Predicate { public: Predicate(Level level, ConfigurationType configurationType); bool operator()(const Configuration* conf) const; private: Level m_level; ConfigurationType m_configurationType; }; private: Level m_level; ConfigurationType m_configurationType; std::string m_value; }; /// @brief Thread-safe Configuration repository /// /// @detail This repository represents configurations for all the levels and configuration type mapped to a value. class Configurations : public base::utils::RegistryWithPred { public: /// @brief Default constructor with empty repository Configurations(void); /// @brief Constructor used to set configurations using configuration file. /// @param configurationFile Full path to configuration file /// @param useDefaultsForRemaining Lets you set the remaining configurations to default. /// @param base If provided, this configuration will be based off existing repository that this argument is pointing to. /// @see parseFromFile(const std::string&, Configurations* base) /// @see setRemainingToDefault() Configurations(const std::string& configurationFile, bool useDefaultsForRemaining = true, Configurations* base = nullptr); virtual ~Configurations(void) { } /// @brief Parses configuration from file. /// @param configurationFile Full path to configuration file /// @param base Configurations to base new configuration repository off. This value is used when you want to use /// existing Configurations to base all the values and then set rest of configuration via configuration file. /// @return True if successfully parsed, false otherwise. You may define 'ELPP_DEBUG_ASSERT_FAILURE' to make sure you /// do not proceed without successful parse. bool parseFromFile(const std::string& configurationFile, Configurations* base = nullptr); /// @brief Parse configurations from configuration string. /// /// @detail This configuration string has same syntax as configuration file contents. Make sure all the necessary /// new line characters are provided. /// @param base Configurations to base new configuration repository off. This value is used when you want to use /// existing Configurations to base all the values and then set rest of configuration via configuration text. /// @return True if successfully parsed, false otherwise. You may define 'ELPP_DEBUG_ASSERT_FAILURE' to make sure you /// do not proceed without successful parse. bool parseFromText(const std::string& configurationsString, Configurations* base = nullptr); /// @brief Sets configuration based-off an existing configurations. /// @param base Pointer to existing configurations. void setFromBase(Configurations* base); /// @brief Determines whether or not specified configuration type exists in the repository. /// /// @detail Returns as soon as first level is found. /// @param configurationType Type of configuration to check existence for. bool hasConfiguration(ConfigurationType configurationType); /// @brief Determines whether or not specified configuration type exists for specified level /// @param level Level to check /// @param configurationType Type of configuration to check existence for. bool hasConfiguration(Level level, ConfigurationType configurationType); /// @brief Sets value of configuration for specified level. /// /// @detail Any existing configuration for specified level will be replaced. Also note that configuration types /// ConfigurationType::SubsecondPrecision and ConfigurationType::PerformanceTracking will be ignored if not set for /// Level::Global because these configurations are not dependant on level. /// @param level Level to set configuration for (el::Level). /// @param configurationType Type of configuration (el::ConfigurationType) /// @param value A string based value. Regardless of what the data type of configuration is, it will always be string /// from users' point of view. This is then parsed later to be used internally. /// @see Configuration::setValue(const std::string& value) /// @see el::Level /// @see el::ConfigurationType void set(Level level, ConfigurationType configurationType, const std::string& value); /// @brief Sets single configuration based on other single configuration. /// @see set(Level level, ConfigurationType configurationType, const std::string& value) void set(Configuration* conf); inline Configuration* get(Level level, ConfigurationType configurationType) { base::threading::ScopedLock scopedLock(lock()); return RegistryWithPred::get(level, configurationType); } /// @brief Sets configuration for all levels. /// @param configurationType Type of configuration /// @param value String based value /// @see Configurations::set(Level level, ConfigurationType configurationType, const std::string& value) inline void setGlobally(ConfigurationType configurationType, const std::string& value) { setGlobally(configurationType, value, false); } /// @brief Clears repository so that all the configurations are unset inline void clear(void) { base::threading::ScopedLock scopedLock(lock()); unregisterAll(); } /// @brief Gets configuration file used in parsing this configurations. /// /// @detail If this repository was set manually or by text this returns empty string. inline const std::string& configurationFile(void) const { return m_configurationFile; } /// @brief Sets configurations to "factory based" configurations. void setToDefault(void); /// @brief Lets you set the remaining configurations to default. /// /// @detail By remaining, it means that the level/type a configuration does not exist for. /// This function is useful when you want to minimize chances of failures, e.g, if you have a configuration file that sets /// configuration for all the configurations except for Enabled or not, we use this so that ENABLED is set to default i.e, /// true. If you dont do this explicitly (either by calling this function or by using second param in Constructor /// and try to access a value, an error is thrown void setRemainingToDefault(void); /// @brief Parser used internally to parse configurations from file or text. /// /// @detail This class makes use of base::utils::Str. /// You should not need this unless you are working on some tool for Easylogging++ class Parser : base::StaticClass { public: /// @brief Parses configuration from file. /// @param configurationFile Full path to configuration file /// @param sender Sender configurations pointer. Usually 'this' is used from calling class /// @param base Configurations to base new configuration repository off. This value is used when you want to use /// existing Configurations to base all the values and then set rest of configuration via configuration file. /// @return True if successfully parsed, false otherwise. You may define '_STOP_ON_FIRSTELPP_ASSERTION' to make sure you /// do not proceed without successful parse. static bool parseFromFile(const std::string& configurationFile, Configurations* sender, Configurations* base = nullptr); /// @brief Parse configurations from configuration string. /// /// @detail This configuration string has same syntax as configuration file contents. Make sure all the necessary /// new line characters are provided. You may define '_STOP_ON_FIRSTELPP_ASSERTION' to make sure you /// do not proceed without successful parse (This is recommended) /// @param configurationsString the configuration in plain text format /// @param sender Sender configurations pointer. Usually 'this' is used from calling class /// @param base Configurations to base new configuration repository off. This value is used when you want to use /// existing Configurations to base all the values and then set rest of configuration via configuration text. /// @return True if successfully parsed, false otherwise. static bool parseFromText(const std::string& configurationsString, Configurations* sender, Configurations* base = nullptr); private: friend class el::Loggers; static void ignoreComments(std::string* line); static bool isLevel(const std::string& line); static bool isComment(const std::string& line); static inline bool isConfig(const std::string& line); static bool parseLine(std::string* line, std::string* currConfigStr, std::string* currLevelStr, Level* currLevel, Configurations* conf); }; private: std::string m_configurationFile; bool m_isFromFile; friend class el::Loggers; /// @brief Unsafely sets configuration if does not already exist void unsafeSetIfNotExist(Level level, ConfigurationType configurationType, const std::string& value); /// @brief Thread unsafe set void unsafeSet(Level level, ConfigurationType configurationType, const std::string& value); /// @brief Sets configurations for all levels including Level::Global if includeGlobalLevel is true /// @see Configurations::setGlobally(ConfigurationType configurationType, const std::string& value) void setGlobally(ConfigurationType configurationType, const std::string& value, bool includeGlobalLevel); /// @brief Sets configurations (Unsafely) for all levels including Level::Global if includeGlobalLevel is true /// @see Configurations::setGlobally(ConfigurationType configurationType, const std::string& value) void unsafeSetGlobally(ConfigurationType configurationType, const std::string& value, bool includeGlobalLevel); }; namespace base { typedef std::shared_ptr FileStreamPtr; typedef std::unordered_map LogStreamsReferenceMap; typedef std::shared_ptr LogStreamsReferenceMapPtr; /// @brief Configurations with data types. /// /// @detail el::Configurations have string based values. This is whats used internally in order to read correct configurations. /// This is to perform faster while writing logs using correct configurations. /// /// This is thread safe and final class containing non-virtual destructor (means nothing should inherit this class) class TypedConfigurations : public base::threading::ThreadSafe { public: /// @brief Constructor to initialize (construct) the object off el::Configurations /// @param configurations Configurations pointer/reference to base this typed configurations off. /// @param logStreamsReference Use ELPP->registeredLoggers()->logStreamsReference() TypedConfigurations(Configurations* configurations, LogStreamsReferenceMapPtr logStreamsReference); TypedConfigurations(const TypedConfigurations& other); virtual ~TypedConfigurations(void) { } const Configurations* configurations(void) const { return m_configurations; } bool enabled(Level level); bool toFile(Level level); const std::string& filename(Level level); bool toStandardOutput(Level level); const base::LogFormat& logFormat(Level level); const base::SubsecondPrecision& subsecondPrecision(Level level = Level::Global); const base::MillisecondsWidth& millisecondsWidth(Level level = Level::Global); bool performanceTracking(Level level = Level::Global); base::type::fstream_t* fileStream(Level level); std::size_t maxLogFileSize(Level level); std::size_t logFlushThreshold(Level level); private: Configurations* m_configurations; std::unordered_map m_enabledMap; std::unordered_map m_toFileMap; std::unordered_map m_filenameMap; std::unordered_map m_toStandardOutputMap; std::unordered_map m_logFormatMap; std::unordered_map m_subsecondPrecisionMap; std::unordered_map m_performanceTrackingMap; std::unordered_map m_fileStreamMap; std::unordered_map m_maxLogFileSizeMap; std::unordered_map m_logFlushThresholdMap; LogStreamsReferenceMapPtr m_logStreamsReference = nullptr; friend class el::Helpers; friend class el::base::MessageBuilder; friend class el::base::Writer; friend class el::base::DefaultLogDispatchCallback; friend class el::base::LogDispatcher; template inline Conf_T getConfigByVal(Level level, const std::unordered_map* confMap, const char* confName) { base::threading::ScopedLock scopedLock(lock()); return unsafeGetConfigByVal(level, confMap, confName); // This is not unsafe anymore - mutex locked in scope } template inline Conf_T& getConfigByRef(Level level, std::unordered_map* confMap, const char* confName) { base::threading::ScopedLock scopedLock(lock()); return unsafeGetConfigByRef(level, confMap, confName); // This is not unsafe anymore - mutex locked in scope } template Conf_T unsafeGetConfigByVal(Level level, const std::unordered_map* confMap, const char* confName) { ELPP_UNUSED(confName); typename std::unordered_map::const_iterator it = confMap->find(level); if (it == confMap->end()) { try { return confMap->at(Level::Global); } catch (...) { ELPP_INTERNAL_ERROR("Unable to get configuration [" << confName << "] for level [" << LevelHelper::convertToString(level) << "]" << std::endl << "Please ensure you have properly configured logger.", false); return Conf_T(); } } return it->second; } template Conf_T& unsafeGetConfigByRef(Level level, std::unordered_map* confMap, const char* confName) { ELPP_UNUSED(confName); typename std::unordered_map::iterator it = confMap->find(level); if (it == confMap->end()) { try { return confMap->at(Level::Global); } catch (...) { ELPP_INTERNAL_ERROR("Unable to get configuration [" << confName << "] for level [" << LevelHelper::convertToString(level) << "]" << std::endl << "Please ensure you have properly configured logger.", false); } } return it->second; } template void setValue(Level level, const Conf_T& value, std::unordered_map* confMap, bool includeGlobalLevel = true) { // If map is empty and we are allowed to add into generic level (Level::Global), do it! if (confMap->empty() && includeGlobalLevel) { confMap->insert(std::make_pair(Level::Global, value)); return; } // If same value exist in generic level already, dont add it to explicit level typename std::unordered_map::iterator it = confMap->find(Level::Global); if (it != confMap->end() && it->second == value) { return; } // Now make sure we dont double up values if we really need to add it to explicit level it = confMap->find(level); if (it == confMap->end()) { // Value not found for level, add new confMap->insert(std::make_pair(level, value)); } else { // Value found, just update value confMap->at(level) = value; } } void build(Configurations* configurations); unsigned long getULong(std::string confVal); std::string resolveFilename(const std::string& filename); void insertFile(Level level, const std::string& fullFilename); bool unsafeValidateFileRolling(Level level, const PreRollOutCallback& preRollOutCallback); inline bool validateFileRolling(Level level, const PreRollOutCallback& preRollOutCallback) { base::threading::ScopedLock scopedLock(lock()); return unsafeValidateFileRolling(level, preRollOutCallback); } }; /// @brief Class that keeps record of current line hit for occasional logging class HitCounter { public: HitCounter(void) : m_filename(""), m_lineNumber(0), m_hitCounts(0) { } HitCounter(const char* filename, base::type::LineNumber lineNumber) : m_filename(filename), m_lineNumber(lineNumber), m_hitCounts(0) { } HitCounter(const HitCounter& hitCounter) : m_filename(hitCounter.m_filename), m_lineNumber(hitCounter.m_lineNumber), m_hitCounts(hitCounter.m_hitCounts) { } HitCounter& operator=(const HitCounter& hitCounter) { if (&hitCounter != this) { m_filename = hitCounter.m_filename; m_lineNumber = hitCounter.m_lineNumber; m_hitCounts = hitCounter.m_hitCounts; } return *this; } virtual ~HitCounter(void) { } /// @brief Resets location of current hit counter inline void resetLocation(const char* filename, base::type::LineNumber lineNumber) { m_filename = filename; m_lineNumber = lineNumber; } /// @brief Validates hit counts and resets it if necessary inline void validateHitCounts(std::size_t n) { if (m_hitCounts >= base::consts::kMaxLogPerCounter) { m_hitCounts = (n >= 1 ? base::consts::kMaxLogPerCounter % n : 0); } ++m_hitCounts; } inline const char* filename(void) const { return m_filename; } inline base::type::LineNumber lineNumber(void) const { return m_lineNumber; } inline std::size_t hitCounts(void) const { return m_hitCounts; } inline void increment(void) { ++m_hitCounts; } class Predicate { public: Predicate(const char* filename, base::type::LineNumber lineNumber) : m_filename(filename), m_lineNumber(lineNumber) { } inline bool operator()(const HitCounter* counter) { return ((counter != nullptr) && (strcmp(counter->m_filename, m_filename) == 0) && (counter->m_lineNumber == m_lineNumber)); } private: const char* m_filename; base::type::LineNumber m_lineNumber; }; private: const char* m_filename; base::type::LineNumber m_lineNumber; std::size_t m_hitCounts; }; /// @brief Repository for hit counters used across the application class RegisteredHitCounters : public base::utils::RegistryWithPred { public: /// @brief Validates counter for every N, i.e, registers new if does not exist otherwise updates original one /// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned bool validateEveryN(const char* filename, base::type::LineNumber lineNumber, std::size_t n); /// @brief Validates counter for hits >= N, i.e, registers new if does not exist otherwise updates original one /// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned bool validateAfterN(const char* filename, base::type::LineNumber lineNumber, std::size_t n); /// @brief Validates counter for hits are <= n, i.e, registers new if does not exist otherwise updates original one /// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned bool validateNTimes(const char* filename, base::type::LineNumber lineNumber, std::size_t n); /// @brief Gets hit counter registered at specified position inline const base::HitCounter* getCounter(const char* filename, base::type::LineNumber lineNumber) { base::threading::ScopedLock scopedLock(lock()); return get(filename, lineNumber); } }; /// @brief Action to be taken for dispatching enum class DispatchAction : base::type::EnumType { None = 1, NormalLog = 2, SysLog = 4 }; } // namespace base template class Callback : protected base::threading::ThreadSafe { public: Callback(void) : m_enabled(true) {} inline bool enabled(void) const { return m_enabled; } inline void setEnabled(bool enabled) { base::threading::ScopedLock scopedLock(lock()); m_enabled = enabled; } protected: virtual void handle(const T* handlePtr) = 0; private: bool m_enabled; }; class LogDispatchData { public: LogDispatchData() : m_logMessage(nullptr), m_dispatchAction(base::DispatchAction::None) {} inline const LogMessage* logMessage(void) const { return m_logMessage; } inline base::DispatchAction dispatchAction(void) const { return m_dispatchAction; } inline void setLogMessage(LogMessage* logMessage) { m_logMessage = logMessage; } inline void setDispatchAction(base::DispatchAction dispatchAction) { m_dispatchAction = dispatchAction; } private: LogMessage* m_logMessage; base::DispatchAction m_dispatchAction; friend class base::LogDispatcher; }; class LogDispatchCallback : public Callback { protected: virtual void handle(const LogDispatchData* data); base::threading::Mutex& fileHandle(const LogDispatchData* data); private: friend class base::LogDispatcher; std::unordered_map> m_fileLocks; base::threading::Mutex m_fileLocksMapLock; }; class PerformanceTrackingCallback : public Callback { private: friend class base::PerformanceTracker; }; class LoggerRegistrationCallback : public Callback { private: friend class base::RegisteredLoggers; }; class LogBuilder : base::NoCopy { public: LogBuilder() : m_termSupportsColor(base::utils::OS::termSupportsColor()) {} virtual ~LogBuilder(void) { ELPP_INTERNAL_INFO(3, "Destroying log builder...") } virtual base::type::string_t build(const LogMessage* logMessage, bool appendNewLine) const = 0; void convertToColoredOutput(base::type::string_t* logLine, Level level); private: bool m_termSupportsColor; friend class el::base::DefaultLogDispatchCallback; }; typedef std::shared_ptr LogBuilderPtr; /// @brief Represents a logger holding ID and configurations we need to write logs /// /// @detail This class does not write logs itself instead its used by writer to read configurations from. class Logger : public base::threading::ThreadSafe, public Loggable { public: Logger(const std::string& id, base::LogStreamsReferenceMapPtr logStreamsReference); Logger(const std::string& id, const Configurations& configurations, base::LogStreamsReferenceMapPtr logStreamsReference); Logger(const Logger& logger); Logger& operator=(const Logger& logger); virtual ~Logger(void) { base::utils::safeDelete(m_typedConfigurations); } virtual inline void log(el::base::type::ostream_t& os) const { os << m_id.c_str(); } /// @brief Configures the logger using specified configurations. void configure(const Configurations& configurations); /// @brief Reconfigures logger using existing configurations void reconfigure(void); inline const std::string& id(void) const { return m_id; } inline const std::string& parentApplicationName(void) const { return m_parentApplicationName; } inline void setParentApplicationName(const std::string& parentApplicationName) { m_parentApplicationName = parentApplicationName; } inline Configurations* configurations(void) { return &m_configurations; } inline base::TypedConfigurations* typedConfigurations(void) { return m_typedConfigurations; } static bool isValidId(const std::string& id); /// @brief Flushes logger to sync all log files for all levels void flush(void); void flush(Level level, base::type::fstream_t* fs); inline bool isFlushNeeded(Level level) { return ++m_unflushedCount.find(level)->second >= m_typedConfigurations->logFlushThreshold(level); } inline LogBuilder* logBuilder(void) const { return m_logBuilder.get(); } inline void setLogBuilder(const LogBuilderPtr& logBuilder) { m_logBuilder = logBuilder; } inline bool enabled(Level level) const { return m_typedConfigurations->enabled(level); } #if ELPP_VARIADIC_TEMPLATES_SUPPORTED # define LOGGER_LEVEL_WRITERS_SIGNATURES(FUNCTION_NAME)\ template \ inline void FUNCTION_NAME(const char*, const T&, const Args&...);\ template \ inline void FUNCTION_NAME(const T&); template inline void verbose(int, const char*, const T&, const Args&...); template inline void verbose(int, const T&); LOGGER_LEVEL_WRITERS_SIGNATURES(info) LOGGER_LEVEL_WRITERS_SIGNATURES(debug) LOGGER_LEVEL_WRITERS_SIGNATURES(warn) LOGGER_LEVEL_WRITERS_SIGNATURES(error) LOGGER_LEVEL_WRITERS_SIGNATURES(fatal) LOGGER_LEVEL_WRITERS_SIGNATURES(trace) # undef LOGGER_LEVEL_WRITERS_SIGNATURES #endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED private: std::string m_id; base::TypedConfigurations* m_typedConfigurations; base::type::stringstream_t m_stream; std::string m_parentApplicationName; bool m_isConfigured; Configurations m_configurations; std::unordered_map m_unflushedCount; base::LogStreamsReferenceMapPtr m_logStreamsReference = nullptr; LogBuilderPtr m_logBuilder; friend class el::LogMessage; friend class el::Loggers; friend class el::Helpers; friend class el::base::RegisteredLoggers; friend class el::base::DefaultLogDispatchCallback; friend class el::base::MessageBuilder; friend class el::base::Writer; friend class el::base::PErrorWriter; friend class el::base::Storage; friend class el::base::PerformanceTracker; friend class el::base::LogDispatcher; Logger(void); #if ELPP_VARIADIC_TEMPLATES_SUPPORTED template void log_(Level, int, const char*, const T&, const Args&...); template inline void log_(Level, int, const T&); template void log(Level, const char*, const T&, const Args&...); template inline void log(Level, const T&); #endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED void initUnflushedCount(void); inline base::type::stringstream_t& stream(void) { return m_stream; } void resolveLoggerFormatSpec(void) const; }; namespace base { /// @brief Loggers repository class RegisteredLoggers : public base::utils::Registry { public: explicit RegisteredLoggers(const LogBuilderPtr& defaultLogBuilder); virtual ~RegisteredLoggers(void) { unsafeFlushAll(); } inline void setDefaultConfigurations(const Configurations& configurations) { base::threading::ScopedLock scopedLock(lock()); m_defaultConfigurations.setFromBase(const_cast(&configurations)); } inline Configurations* defaultConfigurations(void) { return &m_defaultConfigurations; } Logger* get(const std::string& id, bool forceCreation = true); template inline bool installLoggerRegistrationCallback(const std::string& id) { return base::utils::Utils::installCallback(id, &m_loggerRegistrationCallbacks); } template inline void uninstallLoggerRegistrationCallback(const std::string& id) { base::utils::Utils::uninstallCallback(id, &m_loggerRegistrationCallbacks); } template inline T* loggerRegistrationCallback(const std::string& id) { return base::utils::Utils::callback(id, &m_loggerRegistrationCallbacks); } bool remove(const std::string& id); inline bool has(const std::string& id) { return get(id, false) != nullptr; } inline void unregister(Logger*& logger) { base::threading::ScopedLock scopedLock(lock()); base::utils::Registry::unregister(logger->id()); } inline LogStreamsReferenceMapPtr logStreamsReference(void) { return m_logStreamsReference; } inline void flushAll(void) { base::threading::ScopedLock scopedLock(lock()); unsafeFlushAll(); } inline void setDefaultLogBuilder(LogBuilderPtr& logBuilderPtr) { base::threading::ScopedLock scopedLock(lock()); m_defaultLogBuilder = logBuilderPtr; } private: LogBuilderPtr m_defaultLogBuilder; Configurations m_defaultConfigurations; base::LogStreamsReferenceMapPtr m_logStreamsReference = nullptr; std::unordered_map m_loggerRegistrationCallbacks; friend class el::base::Storage; void unsafeFlushAll(void); }; /// @brief Represents registries for verbose logging class VRegistry : base::NoCopy, public base::threading::ThreadSafe { public: explicit VRegistry(base::type::VerboseLevel level, base::type::EnumType* pFlags); /// @brief Sets verbose level. Accepted range is 0-9 void setLevel(base::type::VerboseLevel level); inline base::type::VerboseLevel level(void) const { return m_level; } inline void clearModules(void) { base::threading::ScopedLock scopedLock(lock()); m_modules.clear(); } void setModules(const char* modules); bool allowed(base::type::VerboseLevel vlevel, const char* file); inline const std::unordered_map& modules(void) const { return m_modules; } void setFromArgs(const base::utils::CommandLineArgs* commandLineArgs); /// @brief Whether or not vModules enabled inline bool vModulesEnabled(void) { return !base::utils::hasFlag(LoggingFlag::DisableVModules, *m_pFlags); } private: base::type::VerboseLevel m_level; base::type::EnumType* m_pFlags; std::unordered_map m_modules; }; } // namespace base class LogMessage { public: LogMessage(Level level, const std::string& file, base::type::LineNumber line, const std::string& func, base::type::VerboseLevel verboseLevel, Logger* logger) : m_level(level), m_file(file), m_line(line), m_func(func), m_verboseLevel(verboseLevel), m_logger(logger), m_message(logger->stream().str()) { } inline Level level(void) const { return m_level; } inline const std::string& file(void) const { return m_file; } inline base::type::LineNumber line(void) const { return m_line; } inline const std::string& func(void) const { return m_func; } inline base::type::VerboseLevel verboseLevel(void) const { return m_verboseLevel; } inline Logger* logger(void) const { return m_logger; } inline const base::type::string_t& message(void) const { return m_message; } private: Level m_level; std::string m_file; base::type::LineNumber m_line; std::string m_func; base::type::VerboseLevel m_verboseLevel; Logger* m_logger; base::type::string_t m_message; }; namespace base { #if ELPP_ASYNC_LOGGING class AsyncLogItem { public: explicit AsyncLogItem(const LogMessage& logMessage, const LogDispatchData& data, const base::type::string_t& logLine) : m_logMessage(logMessage), m_dispatchData(data), m_logLine(logLine) {} virtual ~AsyncLogItem() {} inline LogMessage* logMessage(void) { return &m_logMessage; } inline LogDispatchData* data(void) { return &m_dispatchData; } inline base::type::string_t logLine(void) { return m_logLine; } private: LogMessage m_logMessage; LogDispatchData m_dispatchData; base::type::string_t m_logLine; }; class AsyncLogQueue : public base::threading::ThreadSafe { public: virtual ~AsyncLogQueue() { ELPP_INTERNAL_INFO(6, "~AsyncLogQueue"); } inline AsyncLogItem next(void) { base::threading::ScopedLock scopedLock(lock()); AsyncLogItem result = m_queue.front(); m_queue.pop(); return result; } inline void push(const AsyncLogItem& item) { base::threading::ScopedLock scopedLock(lock()); m_queue.push(item); } inline void pop(void) { base::threading::ScopedLock scopedLock(lock()); m_queue.pop(); } inline AsyncLogItem front(void) { base::threading::ScopedLock scopedLock(lock()); return m_queue.front(); } inline bool empty(void) { base::threading::ScopedLock scopedLock(lock()); return m_queue.empty(); } private: std::queue m_queue; }; class IWorker { public: virtual ~IWorker() {} virtual void start() = 0; }; #endif // ELPP_ASYNC_LOGGING /// @brief Easylogging++ management storage class Storage : base::NoCopy, public base::threading::ThreadSafe { public: #if ELPP_ASYNC_LOGGING Storage(const LogBuilderPtr& defaultLogBuilder, base::IWorker* asyncDispatchWorker); #else explicit Storage(const LogBuilderPtr& defaultLogBuilder); #endif // ELPP_ASYNC_LOGGING virtual ~Storage(void); inline bool validateEveryNCounter(const char* filename, base::type::LineNumber lineNumber, std::size_t occasion) { return hitCounters()->validateEveryN(filename, lineNumber, occasion); } inline bool validateAfterNCounter(const char* filename, base::type::LineNumber lineNumber, std::size_t n) { return hitCounters()->validateAfterN(filename, lineNumber, n); } inline bool validateNTimesCounter(const char* filename, base::type::LineNumber lineNumber, std::size_t n) { return hitCounters()->validateNTimes(filename, lineNumber, n); } inline base::RegisteredHitCounters* hitCounters(void) const { return m_registeredHitCounters; } inline base::RegisteredLoggers* registeredLoggers(void) const { return m_registeredLoggers; } inline base::VRegistry* vRegistry(void) const { return m_vRegistry; } #if ELPP_ASYNC_LOGGING inline base::AsyncLogQueue* asyncLogQueue(void) const { return m_asyncLogQueue; } #endif // ELPP_ASYNC_LOGGING inline const base::utils::CommandLineArgs* commandLineArgs(void) const { return &m_commandLineArgs; } inline void addFlag(LoggingFlag flag) { base::utils::addFlag(flag, &m_flags); } inline void removeFlag(LoggingFlag flag) { base::utils::removeFlag(flag, &m_flags); } inline bool hasFlag(LoggingFlag flag) const { return base::utils::hasFlag(flag, m_flags); } inline base::type::EnumType flags(void) const { return m_flags; } inline void setFlags(base::type::EnumType flags) { m_flags = flags; } inline void setPreRollOutCallback(const PreRollOutCallback& callback) { m_preRollOutCallback = callback; } inline void unsetPreRollOutCallback(void) { m_preRollOutCallback = base::defaultPreRollOutCallback; } inline PreRollOutCallback& preRollOutCallback(void) { return m_preRollOutCallback; } bool hasCustomFormatSpecifier(const char* formatSpecifier); void installCustomFormatSpecifier(const CustomFormatSpecifier& customFormatSpecifier); bool uninstallCustomFormatSpecifier(const char* formatSpecifier); const std::vector* customFormatSpecifiers(void) const { return &m_customFormatSpecifiers; } base::threading::Mutex& customFormatSpecifiersLock() { return m_customFormatSpecifiersLock; } inline void setLoggingLevel(Level level) { m_loggingLevel = level; } template inline bool installLogDispatchCallback(const std::string& id) { return base::utils::Utils::installCallback(id, &m_logDispatchCallbacks); } template inline void uninstallLogDispatchCallback(const std::string& id) { base::utils::Utils::uninstallCallback(id, &m_logDispatchCallbacks); } template inline T* logDispatchCallback(const std::string& id) { return base::utils::Utils::callback(id, &m_logDispatchCallbacks); } #if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) template inline bool installPerformanceTrackingCallback(const std::string& id) { return base::utils::Utils::installCallback(id, &m_performanceTrackingCallbacks); } template inline void uninstallPerformanceTrackingCallback(const std::string& id) { base::utils::Utils::uninstallCallback(id, &m_performanceTrackingCallbacks); } template inline T* performanceTrackingCallback(const std::string& id) { return base::utils::Utils::callback(id, &m_performanceTrackingCallbacks); } #endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) /// @brief Sets thread name for current thread. Requires std::thread inline void setThreadName(const std::string& name) { if (name.empty()) return; base::threading::ScopedLock scopedLock(m_threadNamesLock); m_threadNames[base::threading::getCurrentThreadId()] = name; } inline std::string getThreadName(const std::string& threadId) { base::threading::ScopedLock scopedLock(m_threadNamesLock); std::unordered_map::const_iterator it = m_threadNames.find(threadId); if (it == m_threadNames.end()) { return threadId; } return it->second; } private: base::RegisteredHitCounters* m_registeredHitCounters; base::RegisteredLoggers* m_registeredLoggers; base::type::EnumType m_flags; base::VRegistry* m_vRegistry; #if ELPP_ASYNC_LOGGING base::AsyncLogQueue* m_asyncLogQueue; base::IWorker* m_asyncDispatchWorker; #endif // ELPP_ASYNC_LOGGING base::utils::CommandLineArgs m_commandLineArgs; PreRollOutCallback m_preRollOutCallback; std::unordered_map m_logDispatchCallbacks; std::unordered_map m_performanceTrackingCallbacks; std::unordered_map m_threadNames; std::vector m_customFormatSpecifiers; base::threading::Mutex m_customFormatSpecifiersLock; base::threading::Mutex m_threadNamesLock; Level m_loggingLevel; friend class el::Helpers; friend class el::base::DefaultLogDispatchCallback; friend class el::LogBuilder; friend class el::base::MessageBuilder; friend class el::base::Writer; friend class el::base::PerformanceTracker; friend class el::base::LogDispatcher; void setApplicationArguments(int argc, char** argv); inline void setApplicationArguments(int argc, const char** argv) { setApplicationArguments(argc, const_cast(argv)); } }; extern ELPP_EXPORT base::type::StoragePointer elStorage; #define ELPP el::base::elStorage class DefaultLogDispatchCallback : public LogDispatchCallback { protected: void handle(const LogDispatchData* data); private: const LogDispatchData* m_data; void dispatch(base::type::string_t&& logLine); }; #if ELPP_ASYNC_LOGGING class AsyncLogDispatchCallback : public LogDispatchCallback { protected: void handle(const LogDispatchData* data); }; class AsyncDispatchWorker : public base::IWorker, public base::threading::ThreadSafe { public: AsyncDispatchWorker(); virtual ~AsyncDispatchWorker(); bool clean(void); void emptyQueue(void); virtual void start(void); void handle(AsyncLogItem* logItem); void run(void); void setContinueRunning(bool value) { base::threading::ScopedLock scopedLock(m_continueRunningLock); m_continueRunning = value; } bool continueRunning(void) const { return m_continueRunning; } private: std::condition_variable cv; bool m_continueRunning; base::threading::Mutex m_continueRunningLock; }; #endif // ELPP_ASYNC_LOGGING } // namespace base namespace base { class DefaultLogBuilder : public LogBuilder { public: base::type::string_t build(const LogMessage* logMessage, bool appendNewLine) const; }; /// @brief Dispatches log messages class LogDispatcher : base::NoCopy { public: LogDispatcher(bool proceed, LogMessage* logMessage, base::DispatchAction dispatchAction) : m_proceed(proceed), m_logMessage(logMessage), m_dispatchAction(std::move(dispatchAction)) { } void dispatch(void); private: bool m_proceed; LogMessage* m_logMessage; base::DispatchAction m_dispatchAction; }; #if defined(ELPP_STL_LOGGING) /// @brief Workarounds to write some STL logs /// /// @detail There is workaround needed to loop through some stl containers. In order to do that, we need iterable containers /// of same type and provide iterator interface and pass it on to writeIterator(). /// Remember, this is passed by value in constructor so that we dont change original containers. /// This operation is as expensive as Big-O(std::min(class_.size(), base::consts::kMaxLogPerContainer)) namespace workarounds { /// @brief Abstract IterableContainer template that provides interface for iterable classes of type T template class IterableContainer { public: typedef typename Container::iterator iterator; typedef typename Container::const_iterator const_iterator; IterableContainer(void) {} virtual ~IterableContainer(void) {} iterator begin(void) { return getContainer().begin(); } iterator end(void) { return getContainer().end(); } private: virtual Container& getContainer(void) = 0; }; /// @brief Implements IterableContainer and provides iterable std::priority_queue class template, typename Comparator = std::less> class IterablePriorityQueue : public IterableContainer, public std::priority_queue { public: IterablePriorityQueue(std::priority_queue queue_) { std::size_t count_ = 0; while (++count_ < base::consts::kMaxLogPerContainer && !queue_.empty()) { this->push(queue_.top()); queue_.pop(); } } private: inline Container& getContainer(void) { return this->c; } }; /// @brief Implements IterableContainer and provides iterable std::queue class template> class IterableQueue : public IterableContainer, public std::queue { public: IterableQueue(std::queue queue_) { std::size_t count_ = 0; while (++count_ < base::consts::kMaxLogPerContainer && !queue_.empty()) { this->push(queue_.front()); queue_.pop(); } } private: inline Container& getContainer(void) { return this->c; } }; /// @brief Implements IterableContainer and provides iterable std::stack class template> class IterableStack : public IterableContainer, public std::stack { public: IterableStack(std::stack stack_) { std::size_t count_ = 0; while (++count_ < base::consts::kMaxLogPerContainer && !stack_.empty()) { this->push(stack_.top()); stack_.pop(); } } private: inline Container& getContainer(void) { return this->c; } }; } // namespace workarounds #endif // defined(ELPP_STL_LOGGING) // Log message builder class MessageBuilder { public: MessageBuilder(void) : m_logger(nullptr), m_containerLogSeparator(ELPP_LITERAL("")) {} void initialize(Logger* logger); # define ELPP_SIMPLE_LOG(LOG_TYPE)\ MessageBuilder& operator<<(LOG_TYPE msg) {\ m_logger->stream() << msg;\ if (ELPP->hasFlag(LoggingFlag::AutoSpacing)) {\ m_logger->stream() << " ";\ }\ return *this;\ } inline MessageBuilder& operator<<(const std::string& msg) { return operator<<(msg.c_str()); } ELPP_SIMPLE_LOG(char) ELPP_SIMPLE_LOG(bool) ELPP_SIMPLE_LOG(signed short) ELPP_SIMPLE_LOG(unsigned short) ELPP_SIMPLE_LOG(signed int) ELPP_SIMPLE_LOG(unsigned int) ELPP_SIMPLE_LOG(signed long) ELPP_SIMPLE_LOG(unsigned long) ELPP_SIMPLE_LOG(float) ELPP_SIMPLE_LOG(double) ELPP_SIMPLE_LOG(char*) ELPP_SIMPLE_LOG(const char*) ELPP_SIMPLE_LOG(const void*) ELPP_SIMPLE_LOG(long double) inline MessageBuilder& operator<<(const std::wstring& msg) { return operator<<(msg.c_str()); } MessageBuilder& operator<<(const wchar_t* msg); // ostream manipulators inline MessageBuilder& operator<<(std::ostream& (*OStreamMani)(std::ostream&)) { m_logger->stream() << OStreamMani; return *this; } #define ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(temp) \ template \ inline MessageBuilder& operator<<(const temp& template_inst) { \ return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ } #define ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(temp) \ template \ inline MessageBuilder& operator<<(const temp& template_inst) { \ return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ } #define ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(temp) \ template \ inline MessageBuilder& operator<<(const temp& template_inst) { \ return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ } #define ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(temp) \ template \ inline MessageBuilder& operator<<(const temp& template_inst) { \ return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ } #define ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG(temp) \ template \ inline MessageBuilder& operator<<(const temp& template_inst) { \ return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ } #if defined(ELPP_STL_LOGGING) ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(std::vector) ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(std::list) ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(std::deque) ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(std::set) ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(std::multiset) ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(std::map) ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(std::multimap) template inline MessageBuilder& operator<<(const std::queue& queue_) { base::workarounds::IterableQueue iterableQueue_ = static_cast >(queue_); return writeIterator(iterableQueue_.begin(), iterableQueue_.end(), iterableQueue_.size()); } template inline MessageBuilder& operator<<(const std::stack& stack_) { base::workarounds::IterableStack iterableStack_ = static_cast >(stack_); return writeIterator(iterableStack_.begin(), iterableStack_.end(), iterableStack_.size()); } template inline MessageBuilder& operator<<(const std::priority_queue& priorityQueue_) { base::workarounds::IterablePriorityQueue iterablePriorityQueue_ = static_cast >(priorityQueue_); return writeIterator(iterablePriorityQueue_.begin(), iterablePriorityQueue_.end(), iterablePriorityQueue_.size()); } template MessageBuilder& operator<<(const std::pair& pair_) { m_logger->stream() << ELPP_LITERAL("("); operator << (static_cast(pair_.first)); m_logger->stream() << ELPP_LITERAL(", "); operator << (static_cast(pair_.second)); m_logger->stream() << ELPP_LITERAL(")"); return *this; } template MessageBuilder& operator<<(const std::bitset& bitset_) { m_logger->stream() << ELPP_LITERAL("["); operator << (bitset_.to_string()); m_logger->stream() << ELPP_LITERAL("]"); return *this; } # if defined(ELPP_LOG_STD_ARRAY) template inline MessageBuilder& operator<<(const std::array& array) { return writeIterator(array.begin(), array.end(), array.size()); } # endif // defined(ELPP_LOG_STD_ARRAY) # if defined(ELPP_LOG_UNORDERED_MAP) ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG(std::unordered_map) ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG(std::unordered_multimap) # endif // defined(ELPP_LOG_UNORDERED_MAP) # if defined(ELPP_LOG_UNORDERED_SET) ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(std::unordered_set) ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(std::unordered_multiset) # endif // defined(ELPP_LOG_UNORDERED_SET) #endif // defined(ELPP_STL_LOGGING) #if defined(ELPP_QT_LOGGING) inline MessageBuilder& operator<<(const QString& msg) { # if defined(ELPP_UNICODE) m_logger->stream() << msg.toStdWString(); # else m_logger->stream() << msg.toStdString(); # endif // defined(ELPP_UNICODE) return *this; } inline MessageBuilder& operator<<(const QByteArray& msg) { return operator << (QString(msg)); } inline MessageBuilder& operator<<(const QStringRef& msg) { return operator<<(msg.toString()); } inline MessageBuilder& operator<<(qint64 msg) { # if defined(ELPP_UNICODE) m_logger->stream() << QString::number(msg).toStdWString(); # else m_logger->stream() << QString::number(msg).toStdString(); # endif // defined(ELPP_UNICODE) return *this; } inline MessageBuilder& operator<<(quint64 msg) { # if defined(ELPP_UNICODE) m_logger->stream() << QString::number(msg).toStdWString(); # else m_logger->stream() << QString::number(msg).toStdString(); # endif // defined(ELPP_UNICODE) return *this; } inline MessageBuilder& operator<<(QChar msg) { m_logger->stream() << msg.toLatin1(); return *this; } inline MessageBuilder& operator<<(const QLatin1String& msg) { m_logger->stream() << msg.latin1(); return *this; } ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QList) ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QVector) ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QQueue) ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QSet) ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QLinkedList) ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QStack) template MessageBuilder& operator<<(const QPair& pair_) { m_logger->stream() << ELPP_LITERAL("("); operator << (static_cast(pair_.first)); m_logger->stream() << ELPP_LITERAL(", "); operator << (static_cast(pair_.second)); m_logger->stream() << ELPP_LITERAL(")"); return *this; } template MessageBuilder& operator<<(const QMap& map_) { m_logger->stream() << ELPP_LITERAL("["); QList keys = map_.keys(); typename QList::const_iterator begin = keys.begin(); typename QList::const_iterator end = keys.end(); int max_ = static_cast(base::consts::kMaxLogPerContainer); // to prevent warning for (int index_ = 0; begin != end && index_ < max_; ++index_, ++begin) { m_logger->stream() << ELPP_LITERAL("("); operator << (static_cast(*begin)); m_logger->stream() << ELPP_LITERAL(", "); operator << (static_cast(map_.value(*begin))); m_logger->stream() << ELPP_LITERAL(")"); m_logger->stream() << ((index_ < keys.size() -1) ? m_containerLogSeparator : ELPP_LITERAL("")); } if (begin != end) { m_logger->stream() << ELPP_LITERAL("..."); } m_logger->stream() << ELPP_LITERAL("]"); return *this; } template inline MessageBuilder& operator<<(const QMultiMap& map_) { operator << (static_cast>(map_)); return *this; } template MessageBuilder& operator<<(const QHash& hash_) { m_logger->stream() << ELPP_LITERAL("["); QList keys = hash_.keys(); typename QList::const_iterator begin = keys.begin(); typename QList::const_iterator end = keys.end(); int max_ = static_cast(base::consts::kMaxLogPerContainer); // prevent type warning for (int index_ = 0; begin != end && index_ < max_; ++index_, ++begin) { m_logger->stream() << ELPP_LITERAL("("); operator << (static_cast(*begin)); m_logger->stream() << ELPP_LITERAL(", "); operator << (static_cast(hash_.value(*begin))); m_logger->stream() << ELPP_LITERAL(")"); m_logger->stream() << ((index_ < keys.size() -1) ? m_containerLogSeparator : ELPP_LITERAL("")); } if (begin != end) { m_logger->stream() << ELPP_LITERAL("..."); } m_logger->stream() << ELPP_LITERAL("]"); return *this; } template inline MessageBuilder& operator<<(const QMultiHash& multiHash_) { operator << (static_cast>(multiHash_)); return *this; } #endif // defined(ELPP_QT_LOGGING) #if defined(ELPP_BOOST_LOGGING) ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(boost::container::vector) ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(boost::container::stable_vector) ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(boost::container::list) ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(boost::container::deque) ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(boost::container::map) ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(boost::container::flat_map) ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(boost::container::set) ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(boost::container::flat_set) #endif // defined(ELPP_BOOST_LOGGING) /// @brief Macro used internally that can be used externally to make containers easylogging++ friendly /// /// @detail This macro expands to write an ostream& operator<< for container. This container is expected to /// have begin() and end() methods that return respective iterators /// @param ContainerType Type of container e.g, MyList from WX_DECLARE_LIST(int, MyList); in wxwidgets /// @param SizeMethod Method used to get size of container. /// @param ElementInstance Instance of element to be fed out. Instance name is "elem". See WXELPP_ENABLED macro /// for an example usage #define MAKE_CONTAINERELPP_FRIENDLY(ContainerType, SizeMethod, ElementInstance) \ el::base::type::ostream_t& operator<<(el::base::type::ostream_t& ss, const ContainerType& container) {\ const el::base::type::char_t* sep = ELPP->hasFlag(el::LoggingFlag::NewLineForContainer) ? \ ELPP_LITERAL("\n ") : ELPP_LITERAL(", ");\ ContainerType::const_iterator elem = container.begin();\ ContainerType::const_iterator endElem = container.end();\ std::size_t size_ = container.SizeMethod; \ ss << ELPP_LITERAL("[");\ for (std::size_t i = 0; elem != endElem && i < el::base::consts::kMaxLogPerContainer; ++i, ++elem) { \ ss << ElementInstance;\ ss << ((i < size_ - 1) ? sep : ELPP_LITERAL(""));\ }\ if (elem != endElem) {\ ss << ELPP_LITERAL("...");\ }\ ss << ELPP_LITERAL("]");\ return ss;\ } #if defined(ELPP_WXWIDGETS_LOGGING) ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(wxVector) # define ELPP_WX_PTR_ENABLED(ContainerType) MAKE_CONTAINERELPP_FRIENDLY(ContainerType, size(), *(*elem)) # define ELPP_WX_ENABLED(ContainerType) MAKE_CONTAINERELPP_FRIENDLY(ContainerType, size(), (*elem)) # define ELPP_WX_HASH_MAP_ENABLED(ContainerType) MAKE_CONTAINERELPP_FRIENDLY(ContainerType, size(), \ ELPP_LITERAL("(") << elem->first << ELPP_LITERAL(", ") << elem->second << ELPP_LITERAL(")") #else # define ELPP_WX_PTR_ENABLED(ContainerType) # define ELPP_WX_ENABLED(ContainerType) # define ELPP_WX_HASH_MAP_ENABLED(ContainerType) #endif // defined(ELPP_WXWIDGETS_LOGGING) // Other classes template ELPP_SIMPLE_LOG(const Class&) #undef ELPP_SIMPLE_LOG #undef ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG #undef ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG #undef ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG #undef ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG #undef ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG private: Logger* m_logger; const base::type::char_t* m_containerLogSeparator; template MessageBuilder& writeIterator(Iterator begin_, Iterator end_, std::size_t size_) { m_logger->stream() << ELPP_LITERAL("["); for (std::size_t i = 0; begin_ != end_ && i < base::consts::kMaxLogPerContainer; ++i, ++begin_) { operator << (*begin_); m_logger->stream() << ((i < size_ - 1) ? m_containerLogSeparator : ELPP_LITERAL("")); } if (begin_ != end_) { m_logger->stream() << ELPP_LITERAL("..."); } m_logger->stream() << ELPP_LITERAL("]"); if (ELPP->hasFlag(LoggingFlag::AutoSpacing)) { m_logger->stream() << " "; } return *this; } }; /// @brief Writes nothing - Used when certain log is disabled class NullWriter : base::NoCopy { public: NullWriter(void) {} // Null manipulator inline NullWriter& operator<<(std::ostream& (*)(std::ostream&)) { return *this; } template inline NullWriter& operator<<(const T&) { return *this; } inline operator bool() { return true; } }; /// @brief Main entry point of each logging class Writer : base::NoCopy { public: Writer(Level level, const char* file, base::type::LineNumber line, const char* func, base::DispatchAction dispatchAction = base::DispatchAction::NormalLog, base::type::VerboseLevel verboseLevel = 0) : m_msg(nullptr), m_level(level), m_file(file), m_line(line), m_func(func), m_verboseLevel(verboseLevel), m_logger(nullptr), m_proceed(false), m_dispatchAction(dispatchAction) { } Writer(LogMessage* msg, base::DispatchAction dispatchAction = base::DispatchAction::NormalLog) : m_msg(msg), m_level(msg != nullptr ? msg->level() : Level::Unknown), m_line(0), m_logger(nullptr), m_proceed(false), m_dispatchAction(dispatchAction) { } virtual ~Writer(void) { processDispatch(); } template inline Writer& operator<<(const T& log) { #if ELPP_LOGGING_ENABLED if (m_proceed) { m_messageBuilder << log; } #endif // ELPP_LOGGING_ENABLED return *this; } inline Writer& operator<<(std::ostream& (*log)(std::ostream&)) { #if ELPP_LOGGING_ENABLED if (m_proceed) { m_messageBuilder << log; } #endif // ELPP_LOGGING_ENABLED return *this; } inline operator bool() { return true; } Writer& construct(Logger* logger, bool needLock = true); Writer& construct(int count, const char* loggerIds, ...); protected: LogMessage* m_msg; Level m_level; const char* m_file; const base::type::LineNumber m_line; const char* m_func; base::type::VerboseLevel m_verboseLevel; Logger* m_logger; bool m_proceed; base::MessageBuilder m_messageBuilder; base::DispatchAction m_dispatchAction; std::vector m_loggerIds; friend class el::Helpers; void initializeLogger(const std::string& loggerId, bool lookup = true, bool needLock = true); void processDispatch(); void triggerDispatch(void); }; class PErrorWriter : public base::Writer { public: PErrorWriter(Level level, const char* file, base::type::LineNumber line, const char* func, base::DispatchAction dispatchAction = base::DispatchAction::NormalLog, base::type::VerboseLevel verboseLevel = 0) : base::Writer(level, file, line, func, dispatchAction, verboseLevel) { } virtual ~PErrorWriter(void); }; } // namespace base // Logging from Logger class. Why this is here? Because we have Storage and Writer class available #if ELPP_VARIADIC_TEMPLATES_SUPPORTED template void Logger::log_(Level level, int vlevel, const char* s, const T& value, const Args&... args) { base::MessageBuilder b; b.initialize(this); while (*s) { if (*s == base::consts::kFormatSpecifierChar) { if (*(s + 1) == base::consts::kFormatSpecifierChar) { ++s; } else { if (*(s + 1) == base::consts::kFormatSpecifierCharValue) { ++s; b << value; log_(level, vlevel, ++s, args...); return; } } } b << *s++; } ELPP_INTERNAL_ERROR("Too many arguments provided. Unable to handle. Please provide more format specifiers", false); } template void Logger::log_(Level level, int vlevel, const T& log) { if (level == Level::Verbose) { if (ELPP->vRegistry()->allowed(vlevel, __FILE__)) { base::Writer(Level::Verbose, "FILE", 0, "FUNCTION", base::DispatchAction::NormalLog, vlevel).construct(this, false) << log; } else { stream().str(ELPP_LITERAL("")); releaseLock(); } } else { base::Writer(level, "FILE", 0, "FUNCTION").construct(this, false) << log; } } template inline void Logger::log(Level level, const char* s, const T& value, const Args&... args) { acquireLock(); // released in Writer! log_(level, 0, s, value, args...); } template inline void Logger::log(Level level, const T& log) { acquireLock(); // released in Writer! log_(level, 0, log); } # if ELPP_VERBOSE_LOG template inline void Logger::verbose(int vlevel, const char* s, const T& value, const Args&... args) { acquireLock(); // released in Writer! log_(el::Level::Verbose, vlevel, s, value, args...); } template inline void Logger::verbose(int vlevel, const T& log) { acquireLock(); // released in Writer! log_(el::Level::Verbose, vlevel, log); } # else template inline void Logger::verbose(int, const char*, const T&, const Args&...) { return; } template inline void Logger::verbose(int, const T&) { return; } # endif // ELPP_VERBOSE_LOG # define LOGGER_LEVEL_WRITERS(FUNCTION_NAME, LOG_LEVEL)\ template \ inline void Logger::FUNCTION_NAME(const char* s, const T& value, const Args&... args) {\ log(LOG_LEVEL, s, value, args...);\ }\ template \ inline void Logger::FUNCTION_NAME(const T& value) {\ log(LOG_LEVEL, value);\ } # define LOGGER_LEVEL_WRITERS_DISABLED(FUNCTION_NAME, LOG_LEVEL)\ template \ inline void Logger::FUNCTION_NAME(const char*, const T&, const Args&...) {\ return;\ }\ template \ inline void Logger::FUNCTION_NAME(const T&) {\ return;\ } # if ELPP_INFO_LOG LOGGER_LEVEL_WRITERS(info, Level::Info) # else LOGGER_LEVEL_WRITERS_DISABLED(info, Level::Info) # endif // ELPP_INFO_LOG # if ELPP_DEBUG_LOG LOGGER_LEVEL_WRITERS(debug, Level::Debug) # else LOGGER_LEVEL_WRITERS_DISABLED(debug, Level::Debug) # endif // ELPP_DEBUG_LOG # if ELPP_WARNING_LOG LOGGER_LEVEL_WRITERS(warn, Level::Warning) # else LOGGER_LEVEL_WRITERS_DISABLED(warn, Level::Warning) # endif // ELPP_WARNING_LOG # if ELPP_ERROR_LOG LOGGER_LEVEL_WRITERS(error, Level::Error) # else LOGGER_LEVEL_WRITERS_DISABLED(error, Level::Error) # endif // ELPP_ERROR_LOG # if ELPP_FATAL_LOG LOGGER_LEVEL_WRITERS(fatal, Level::Fatal) # else LOGGER_LEVEL_WRITERS_DISABLED(fatal, Level::Fatal) # endif // ELPP_FATAL_LOG # if ELPP_TRACE_LOG LOGGER_LEVEL_WRITERS(trace, Level::Trace) # else LOGGER_LEVEL_WRITERS_DISABLED(trace, Level::Trace) # endif // ELPP_TRACE_LOG # undef LOGGER_LEVEL_WRITERS # undef LOGGER_LEVEL_WRITERS_DISABLED #endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED #if ELPP_COMPILER_MSVC # define ELPP_VARIADIC_FUNC_MSVC(variadicFunction, variadicArgs) variadicFunction variadicArgs # define ELPP_VARIADIC_FUNC_MSVC_RUN(variadicFunction, ...) ELPP_VARIADIC_FUNC_MSVC(variadicFunction, (__VA_ARGS__)) # define el_getVALength(...) ELPP_VARIADIC_FUNC_MSVC_RUN(el_resolveVALength, 0, ## __VA_ARGS__,\ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) #else # if ELPP_COMPILER_CLANG # define el_getVALength(...) el_resolveVALength(0, __VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) # else # define el_getVALength(...) el_resolveVALength(0, ## __VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) # endif // ELPP_COMPILER_CLANG #endif // ELPP_COMPILER_MSVC #define el_resolveVALength(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N #define ELPP_WRITE_LOG(writer, level, dispatchAction, ...) \ writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) #define ELPP_WRITE_LOG_IF(writer, condition, level, dispatchAction, ...) if (condition) \ writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) #define ELPP_WRITE_LOG_EVERY_N(writer, occasion, level, dispatchAction, ...) \ ELPP->validateEveryNCounter(__FILE__, __LINE__, occasion) && \ writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) #define ELPP_WRITE_LOG_AFTER_N(writer, n, level, dispatchAction, ...) \ ELPP->validateAfterNCounter(__FILE__, __LINE__, n) && \ writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) #define ELPP_WRITE_LOG_N_TIMES(writer, n, level, dispatchAction, ...) \ ELPP->validateNTimesCounter(__FILE__, __LINE__, n) && \ writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) #if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) class PerformanceTrackingData { public: enum class DataType : base::type::EnumType { Checkpoint = 1, Complete = 2 }; // Do not use constructor, will run into multiple definition error, use init(PerformanceTracker*) explicit PerformanceTrackingData(DataType dataType) : m_performanceTracker(nullptr), m_dataType(dataType), m_firstCheckpoint(false), m_file(""), m_line(0), m_func("") {} inline const std::string* blockName(void) const; inline const struct timeval* startTime(void) const; inline const struct timeval* endTime(void) const; inline const struct timeval* lastCheckpointTime(void) const; inline const base::PerformanceTracker* performanceTracker(void) const { return m_performanceTracker; } inline PerformanceTrackingData::DataType dataType(void) const { return m_dataType; } inline bool firstCheckpoint(void) const { return m_firstCheckpoint; } inline std::string checkpointId(void) const { return m_checkpointId; } inline const char* file(void) const { return m_file; } inline base::type::LineNumber line(void) const { return m_line; } inline const char* func(void) const { return m_func; } inline const base::type::string_t* formattedTimeTaken() const { return &m_formattedTimeTaken; } inline const std::string& loggerId(void) const; private: base::PerformanceTracker* m_performanceTracker; base::type::string_t m_formattedTimeTaken; PerformanceTrackingData::DataType m_dataType; bool m_firstCheckpoint; std::string m_checkpointId; const char* m_file; base::type::LineNumber m_line; const char* m_func; inline void init(base::PerformanceTracker* performanceTracker, bool firstCheckpoint = false) { m_performanceTracker = performanceTracker; m_firstCheckpoint = firstCheckpoint; } friend class el::base::PerformanceTracker; }; namespace base { /// @brief Represents performanceTracker block of code that conditionally adds performance status to log /// either when goes outside the scope of when checkpoint() is called class PerformanceTracker : public base::threading::ThreadSafe, public Loggable { public: PerformanceTracker(const std::string& blockName, base::TimestampUnit timestampUnit = base::TimestampUnit::Millisecond, const std::string& loggerId = std::string(el::base::consts::kPerformanceLoggerId), bool scopedLog = true, Level level = base::consts::kPerformanceTrackerDefaultLevel); /// @brief Copy constructor PerformanceTracker(const PerformanceTracker& t) : m_blockName(t.m_blockName), m_timestampUnit(t.m_timestampUnit), m_loggerId(t.m_loggerId), m_scopedLog(t.m_scopedLog), m_level(t.m_level), m_hasChecked(t.m_hasChecked), m_lastCheckpointId(t.m_lastCheckpointId), m_enabled(t.m_enabled), m_startTime(t.m_startTime), m_endTime(t.m_endTime), m_lastCheckpointTime(t.m_lastCheckpointTime) { } virtual ~PerformanceTracker(void); /// @brief A checkpoint for current performanceTracker block. void checkpoint(const std::string& id = std::string(), const char* file = __FILE__, base::type::LineNumber line = __LINE__, const char* func = ""); inline Level level(void) const { return m_level; } private: std::string m_blockName; base::TimestampUnit m_timestampUnit; std::string m_loggerId; bool m_scopedLog; Level m_level; bool m_hasChecked; std::string m_lastCheckpointId; bool m_enabled; struct timeval m_startTime, m_endTime, m_lastCheckpointTime; PerformanceTracker(void); friend class el::PerformanceTrackingData; friend class base::DefaultPerformanceTrackingCallback; const inline base::type::string_t getFormattedTimeTaken() const { return getFormattedTimeTaken(m_startTime); } const base::type::string_t getFormattedTimeTaken(struct timeval startTime) const; virtual inline void log(el::base::type::ostream_t& os) const { os << getFormattedTimeTaken(); } }; class DefaultPerformanceTrackingCallback : public PerformanceTrackingCallback { protected: void handle(const PerformanceTrackingData* data) { m_data = data; base::type::stringstream_t ss; if (m_data->dataType() == PerformanceTrackingData::DataType::Complete) { ss << ELPP_LITERAL("Executed [") << m_data->blockName()->c_str() << ELPP_LITERAL("] in [") << *m_data->formattedTimeTaken() << ELPP_LITERAL("]"); } else { ss << ELPP_LITERAL("Performance checkpoint"); if (!m_data->checkpointId().empty()) { ss << ELPP_LITERAL(" [") << m_data->checkpointId().c_str() << ELPP_LITERAL("]"); } ss << ELPP_LITERAL(" for block [") << m_data->blockName()->c_str() << ELPP_LITERAL("] : [") << *m_data->performanceTracker(); if (!ELPP->hasFlag(LoggingFlag::DisablePerformanceTrackingCheckpointComparison) && m_data->performanceTracker()->m_hasChecked) { ss << ELPP_LITERAL(" ([") << *m_data->formattedTimeTaken() << ELPP_LITERAL("] from "); if (m_data->performanceTracker()->m_lastCheckpointId.empty()) { ss << ELPP_LITERAL("last checkpoint"); } else { ss << ELPP_LITERAL("checkpoint '") << m_data->performanceTracker()->m_lastCheckpointId.c_str() << ELPP_LITERAL("'"); } ss << ELPP_LITERAL(")]"); } else { ss << ELPP_LITERAL("]"); } } el::base::Writer(m_data->performanceTracker()->level(), m_data->file(), m_data->line(), m_data->func()).construct(1, m_data->loggerId().c_str()) << ss.str(); } private: const PerformanceTrackingData* m_data; }; } // namespace base inline const std::string* PerformanceTrackingData::blockName() const { return const_cast(&m_performanceTracker->m_blockName); } inline const struct timeval* PerformanceTrackingData::startTime() const { return const_cast(&m_performanceTracker->m_startTime); } inline const struct timeval* PerformanceTrackingData::endTime() const { return const_cast(&m_performanceTracker->m_endTime); } inline const struct timeval* PerformanceTrackingData::lastCheckpointTime() const { return const_cast(&m_performanceTracker->m_lastCheckpointTime); } inline const std::string& PerformanceTrackingData::loggerId(void) const { return m_performanceTracker->m_loggerId; } #endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) namespace base { /// @brief Contains some internal debugging tools like crash handler and stack tracer namespace debug { #if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) class StackTrace : base::NoCopy { public: static const unsigned int kMaxStack = 64; static const unsigned int kStackStart = 2; // We want to skip c'tor and StackTrace::generateNew() class StackTraceEntry { public: StackTraceEntry(std::size_t index, const std::string& loc, const std::string& demang, const std::string& hex, const std::string& addr); StackTraceEntry(std::size_t index, const std::string& loc) : m_index(index), m_location(loc) { } std::size_t m_index; std::string m_location; std::string m_demangled; std::string m_hex; std::string m_addr; friend std::ostream& operator<<(std::ostream& ss, const StackTraceEntry& si); private: StackTraceEntry(void); }; StackTrace(void) { generateNew(); } virtual ~StackTrace(void) { } inline std::vector& getLatestStack(void) { return m_stack; } friend std::ostream& operator<<(std::ostream& os, const StackTrace& st); private: std::vector m_stack; void generateNew(void); }; /// @brief Handles unexpected crashes class CrashHandler : base::NoCopy { public: typedef void (*Handler)(int); explicit CrashHandler(bool useDefault); explicit CrashHandler(const Handler& cHandler) { setHandler(cHandler); } void setHandler(const Handler& cHandler); private: Handler m_handler; }; #else class CrashHandler { public: explicit CrashHandler(bool) {} }; #endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) } // namespace debug } // namespace base extern base::debug::CrashHandler elCrashHandler; #define MAKE_LOGGABLE(ClassType, ClassInstance, OutputStreamInstance) \ el::base::type::ostream_t& operator<<(el::base::type::ostream_t& OutputStreamInstance, const ClassType& ClassInstance) /// @brief Initializes syslog with process ID, options and facility. calls closelog() on d'tor class SysLogInitializer { public: SysLogInitializer(const char* processIdent, int options = 0, int facility = 0) { #if defined(ELPP_SYSLOG) (void)base::consts::kSysLogLoggerId; openlog(processIdent, options, facility); #else ELPP_UNUSED(processIdent); ELPP_UNUSED(options); ELPP_UNUSED(facility); #endif // defined(ELPP_SYSLOG) } virtual ~SysLogInitializer(void) { #if defined(ELPP_SYSLOG) closelog(); #endif // defined(ELPP_SYSLOG) } }; #define ELPP_INITIALIZE_SYSLOG(id, opt, fac) el::SysLogInitializer elSyslogInit(id, opt, fac) /// @brief Static helpers for developers class Helpers : base::StaticClass { public: /// @brief Shares logging repository (base::Storage) static inline void setStorage(base::type::StoragePointer storage) { ELPP = storage; } /// @return Main storage repository static inline base::type::StoragePointer storage() { return ELPP; } /// @brief Sets application arguments and figures out whats active for logging and whats not. static inline void setArgs(int argc, char** argv) { ELPP->setApplicationArguments(argc, argv); } /// @copydoc setArgs(int argc, char** argv) static inline void setArgs(int argc, const char** argv) { ELPP->setApplicationArguments(argc, const_cast(argv)); } /// @brief Sets thread name for current thread. Requires std::thread static inline void setThreadName(const std::string& name) { ELPP->setThreadName(name); } static inline std::string getThreadName() { return ELPP->getThreadName(base::threading::getCurrentThreadId()); } #if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) /// @brief Overrides default crash handler and installs custom handler. /// @param crashHandler A functor with no return type that takes single int argument. /// Handler is a typedef with specification: void (*Handler)(int) static inline void setCrashHandler(const el::base::debug::CrashHandler::Handler& crashHandler) { el::elCrashHandler.setHandler(crashHandler); } /// @brief Abort due to crash with signal in parameter /// @param sig Crash signal static void crashAbort(int sig, const char* sourceFile = "", unsigned int long line = 0); /// @brief Logs reason of crash as per sig /// @param sig Crash signal /// @param stackTraceIfAvailable Includes stack trace if available /// @param level Logging level /// @param logger Logger to use for logging static void logCrashReason(int sig, bool stackTraceIfAvailable = false, Level level = Level::Fatal, const char* logger = base::consts::kDefaultLoggerId); #endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) /// @brief Installs pre rollout callback, this callback is triggered when log file is about to be rolled out /// (can be useful for backing up) static inline void installPreRollOutCallback(const PreRollOutCallback& callback) { ELPP->setPreRollOutCallback(callback); } /// @brief Uninstalls pre rollout callback static inline void uninstallPreRollOutCallback(void) { ELPP->unsetPreRollOutCallback(); } /// @brief Installs post log dispatch callback, this callback is triggered when log is dispatched template static inline bool installLogDispatchCallback(const std::string& id) { return ELPP->installLogDispatchCallback(id); } /// @brief Uninstalls log dispatch callback template static inline void uninstallLogDispatchCallback(const std::string& id) { ELPP->uninstallLogDispatchCallback(id); } template static inline T* logDispatchCallback(const std::string& id) { return ELPP->logDispatchCallback(id); } #if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) /// @brief Installs post performance tracking callback, this callback is triggered when performance tracking is finished template static inline bool installPerformanceTrackingCallback(const std::string& id) { return ELPP->installPerformanceTrackingCallback(id); } /// @brief Uninstalls post performance tracking handler template static inline void uninstallPerformanceTrackingCallback(const std::string& id) { ELPP->uninstallPerformanceTrackingCallback(id); } template static inline T* performanceTrackingCallback(const std::string& id) { return ELPP->performanceTrackingCallback(id); } #endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) /// @brief Converts template to std::string - useful for loggable classes to log containers within log(std::ostream&) const template static std::string convertTemplateToStdString(const T& templ) { el::Logger* logger = ELPP->registeredLoggers()->get(el::base::consts::kDefaultLoggerId); if (logger == nullptr) { return std::string(); } base::MessageBuilder b; b.initialize(logger); logger->acquireLock(); b << templ; #if defined(ELPP_UNICODE) std::string s = std::string(logger->stream().str().begin(), logger->stream().str().end()); #else std::string s = logger->stream().str(); #endif // defined(ELPP_UNICODE) logger->stream().str(ELPP_LITERAL("")); logger->releaseLock(); return s; } /// @brief Returns command line arguments (pointer) provided to easylogging++ static inline const el::base::utils::CommandLineArgs* commandLineArgs(void) { return ELPP->commandLineArgs(); } /// @brief Reserve space for custom format specifiers for performance /// @see std::vector::reserve static inline void reserveCustomFormatSpecifiers(std::size_t size) { ELPP->m_customFormatSpecifiers.reserve(size); } /// @brief Installs user defined format specifier and handler static inline void installCustomFormatSpecifier(const CustomFormatSpecifier& customFormatSpecifier) { ELPP->installCustomFormatSpecifier(customFormatSpecifier); } /// @brief Uninstalls user defined format specifier and handler static inline bool uninstallCustomFormatSpecifier(const char* formatSpecifier) { return ELPP->uninstallCustomFormatSpecifier(formatSpecifier); } /// @brief Returns true if custom format specifier is installed static inline bool hasCustomFormatSpecifier(const char* formatSpecifier) { return ELPP->hasCustomFormatSpecifier(formatSpecifier); } static inline void validateFileRolling(Logger* logger, Level level) { if (ELPP == nullptr || logger == nullptr) return; logger->m_typedConfigurations->validateFileRolling(level, ELPP->preRollOutCallback()); } }; /// @brief Static helpers to deal with loggers and their configurations class Loggers : base::StaticClass { public: /// @brief Gets existing or registers new logger static Logger* getLogger(const std::string& identity, bool registerIfNotAvailable = true); /// @brief Changes default log builder for future loggers static void setDefaultLogBuilder(el::LogBuilderPtr& logBuilderPtr); /// @brief Installs logger registration callback, this callback is triggered when new logger is registered template static inline bool installLoggerRegistrationCallback(const std::string& id) { return ELPP->registeredLoggers()->installLoggerRegistrationCallback(id); } /// @brief Uninstalls log dispatch callback template static inline void uninstallLoggerRegistrationCallback(const std::string& id) { ELPP->registeredLoggers()->uninstallLoggerRegistrationCallback(id); } template static inline T* loggerRegistrationCallback(const std::string& id) { return ELPP->registeredLoggers()->loggerRegistrationCallback(id); } /// @brief Unregisters logger - use it only when you know what you are doing, you may unregister /// loggers initialized / used by third-party libs. static bool unregisterLogger(const std::string& identity); /// @brief Whether or not logger with id is registered static bool hasLogger(const std::string& identity); /// @brief Reconfigures specified logger with new configurations static Logger* reconfigureLogger(Logger* logger, const Configurations& configurations); /// @brief Reconfigures logger with new configurations after looking it up using identity static Logger* reconfigureLogger(const std::string& identity, const Configurations& configurations); /// @brief Reconfigures logger's single configuration static Logger* reconfigureLogger(const std::string& identity, ConfigurationType configurationType, const std::string& value); /// @brief Reconfigures all the existing loggers with new configurations static void reconfigureAllLoggers(const Configurations& configurations); /// @brief Reconfigures single configuration for all the loggers static inline void reconfigureAllLoggers(ConfigurationType configurationType, const std::string& value) { reconfigureAllLoggers(Level::Global, configurationType, value); } /// @brief Reconfigures single configuration for all the loggers for specified level static void reconfigureAllLoggers(Level level, ConfigurationType configurationType, const std::string& value); /// @brief Sets default configurations. This configuration is used for future (and conditionally for existing) loggers static void setDefaultConfigurations(const Configurations& configurations, bool reconfigureExistingLoggers = false); /// @brief Returns current default static const Configurations* defaultConfigurations(void); /// @brief Returns log stream reference pointer if needed by user static const base::LogStreamsReferenceMapPtr logStreamsReference(void); /// @brief Default typed configuration based on existing defaultConf static base::TypedConfigurations defaultTypedConfigurations(void); /// @brief Populates all logger IDs in current repository. /// @param [out] targetList List of fill up. static std::vector* populateAllLoggerIds(std::vector* targetList); /// @brief Sets configurations from global configuration file. static void configureFromGlobal(const char* globalConfigurationFilePath); /// @brief Configures loggers using command line arg. Ensure you have already set command line args, /// @return False if invalid argument or argument with no value provided, true if attempted to configure logger. /// If true is returned that does not mean it has been configured successfully, it only means that it /// has attempted to configure logger using configuration file provided in argument static bool configureFromArg(const char* argKey); /// @brief Flushes all loggers for all levels - Be careful if you dont know how many loggers are registered static void flushAll(void); /// @brief Adds logging flag used internally. static inline void addFlag(LoggingFlag flag) { ELPP->addFlag(flag); } /// @brief Removes logging flag used internally. static inline void removeFlag(LoggingFlag flag) { ELPP->removeFlag(flag); } /// @brief Determines whether or not certain flag is active static inline bool hasFlag(LoggingFlag flag) { return ELPP->hasFlag(flag); } /// @brief Adds flag and removes it when scope goes out class ScopedAddFlag { public: ScopedAddFlag(LoggingFlag flag) : m_flag(flag) { Loggers::addFlag(m_flag); } ~ScopedAddFlag(void) { Loggers::removeFlag(m_flag); } private: LoggingFlag m_flag; }; /// @brief Removes flag and add it when scope goes out class ScopedRemoveFlag { public: ScopedRemoveFlag(LoggingFlag flag) : m_flag(flag) { Loggers::removeFlag(m_flag); } ~ScopedRemoveFlag(void) { Loggers::addFlag(m_flag); } private: LoggingFlag m_flag; }; /// @brief Sets hierarchy for logging. Needs to enable logging flag (HierarchicalLogging) static void setLoggingLevel(Level level) { ELPP->setLoggingLevel(level); } /// @brief Sets verbose level on the fly static void setVerboseLevel(base::type::VerboseLevel level); /// @brief Gets current verbose level static base::type::VerboseLevel verboseLevel(void); /// @brief Sets vmodules as specified (on the fly) static void setVModules(const char* modules); /// @brief Clears vmodules static void clearVModules(void); }; class VersionInfo : base::StaticClass { public: /// @brief Current version number static const std::string version(void); /// @brief Release date of current version static const std::string releaseDate(void); }; } // namespace el #undef VLOG_IS_ON /// @brief Determines whether verbose logging is on for specified level current file. #define VLOG_IS_ON(verboseLevel) (ELPP->vRegistry()->allowed(verboseLevel, __FILE__)) #undef TIMED_BLOCK #undef TIMED_SCOPE #undef TIMED_SCOPE_IF #undef TIMED_FUNC #undef TIMED_FUNC_IF #undef ELPP_MIN_UNIT #if defined(ELPP_PERFORMANCE_MICROSECONDS) # define ELPP_MIN_UNIT el::base::TimestampUnit::Microsecond #else # define ELPP_MIN_UNIT el::base::TimestampUnit::Millisecond #endif // (defined(ELPP_PERFORMANCE_MICROSECONDS)) /// @brief Performance tracked scope. Performance gets written when goes out of scope using /// 'performance' logger. /// /// @detail Please note in order to check the performance at a certain time you can use obj->checkpoint(); /// @see el::base::PerformanceTracker /// @see el::base::PerformanceTracker::checkpoint // Note: Do not surround this definition with null macro because of obj instance #define TIMED_SCOPE_IF(obj, blockname, condition) el::base::type::PerformanceTrackerPtr obj( condition ? \ new el::base::PerformanceTracker(blockname, ELPP_MIN_UNIT) : nullptr ) #define TIMED_SCOPE(obj, blockname) TIMED_SCOPE_IF(obj, blockname, true) #define TIMED_BLOCK(obj, blockName) for (struct { int i; el::base::type::PerformanceTrackerPtr timer; } obj = { 0, \ el::base::type::PerformanceTrackerPtr(new el::base::PerformanceTracker(blockName, ELPP_MIN_UNIT)) }; obj.i < 1; ++obj.i) /// @brief Performance tracked function. Performance gets written when goes out of scope using /// 'performance' logger. /// /// @detail Please note in order to check the performance at a certain time you can use obj->checkpoint(); /// @see el::base::PerformanceTracker /// @see el::base::PerformanceTracker::checkpoint #define TIMED_FUNC_IF(obj,condition) TIMED_SCOPE_IF(obj, ELPP_FUNC, condition) #define TIMED_FUNC(obj) TIMED_SCOPE(obj, ELPP_FUNC) #undef PERFORMANCE_CHECKPOINT #undef PERFORMANCE_CHECKPOINT_WITH_ID #define PERFORMANCE_CHECKPOINT(obj) obj->checkpoint(std::string(), __FILE__, __LINE__, ELPP_FUNC) #define PERFORMANCE_CHECKPOINT_WITH_ID(obj, id) obj->checkpoint(id, __FILE__, __LINE__, ELPP_FUNC) #undef ELPP_COUNTER #undef ELPP_COUNTER_POS /// @brief Gets hit counter for file/line #define ELPP_COUNTER (ELPP->hitCounters()->getCounter(__FILE__, __LINE__)) /// @brief Gets hit counter position for file/line, -1 if not registered yet #define ELPP_COUNTER_POS (ELPP_COUNTER == nullptr ? -1 : ELPP_COUNTER->hitCounts()) // Undef levels to support LOG(LEVEL) #undef INFO #undef WARNING #undef DEBUG #undef ERROR #undef FATAL #undef TRACE #undef VERBOSE // Undef existing #undef CINFO #undef CWARNING #undef CDEBUG #undef CFATAL #undef CERROR #undef CTRACE #undef CVERBOSE #undef CINFO_IF #undef CWARNING_IF #undef CDEBUG_IF #undef CERROR_IF #undef CFATAL_IF #undef CTRACE_IF #undef CVERBOSE_IF #undef CINFO_EVERY_N #undef CWARNING_EVERY_N #undef CDEBUG_EVERY_N #undef CERROR_EVERY_N #undef CFATAL_EVERY_N #undef CTRACE_EVERY_N #undef CVERBOSE_EVERY_N #undef CINFO_AFTER_N #undef CWARNING_AFTER_N #undef CDEBUG_AFTER_N #undef CERROR_AFTER_N #undef CFATAL_AFTER_N #undef CTRACE_AFTER_N #undef CVERBOSE_AFTER_N #undef CINFO_N_TIMES #undef CWARNING_N_TIMES #undef CDEBUG_N_TIMES #undef CERROR_N_TIMES #undef CFATAL_N_TIMES #undef CTRACE_N_TIMES #undef CVERBOSE_N_TIMES // Normal logs #if ELPP_INFO_LOG # define CINFO(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Info, dispatchAction, __VA_ARGS__) #else # define CINFO(writer, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_INFO_LOG #if ELPP_WARNING_LOG # define CWARNING(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Warning, dispatchAction, __VA_ARGS__) #else # define CWARNING(writer, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_WARNING_LOG #if ELPP_DEBUG_LOG # define CDEBUG(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Debug, dispatchAction, __VA_ARGS__) #else # define CDEBUG(writer, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_DEBUG_LOG #if ELPP_ERROR_LOG # define CERROR(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Error, dispatchAction, __VA_ARGS__) #else # define CERROR(writer, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_ERROR_LOG #if ELPP_FATAL_LOG # define CFATAL(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Fatal, dispatchAction, __VA_ARGS__) #else # define CFATAL(writer, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_FATAL_LOG #if ELPP_TRACE_LOG # define CTRACE(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Trace, dispatchAction, __VA_ARGS__) #else # define CTRACE(writer, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_TRACE_LOG #if ELPP_VERBOSE_LOG # define CVERBOSE(writer, vlevel, dispatchAction, ...) if (VLOG_IS_ON(vlevel)) writer(\ el::Level::Verbose, __FILE__, __LINE__, ELPP_FUNC, dispatchAction, vlevel).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) #else # define CVERBOSE(writer, vlevel, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_VERBOSE_LOG // Conditional logs #if ELPP_INFO_LOG # define CINFO_IF(writer, condition_, dispatchAction, ...) \ ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Info, dispatchAction, __VA_ARGS__) #else # define CINFO_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_INFO_LOG #if ELPP_WARNING_LOG # define CWARNING_IF(writer, condition_, dispatchAction, ...)\ ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Warning, dispatchAction, __VA_ARGS__) #else # define CWARNING_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_WARNING_LOG #if ELPP_DEBUG_LOG # define CDEBUG_IF(writer, condition_, dispatchAction, ...)\ ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Debug, dispatchAction, __VA_ARGS__) #else # define CDEBUG_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_DEBUG_LOG #if ELPP_ERROR_LOG # define CERROR_IF(writer, condition_, dispatchAction, ...)\ ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Error, dispatchAction, __VA_ARGS__) #else # define CERROR_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_ERROR_LOG #if ELPP_FATAL_LOG # define CFATAL_IF(writer, condition_, dispatchAction, ...)\ ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Fatal, dispatchAction, __VA_ARGS__) #else # define CFATAL_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_FATAL_LOG #if ELPP_TRACE_LOG # define CTRACE_IF(writer, condition_, dispatchAction, ...)\ ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Trace, dispatchAction, __VA_ARGS__) #else # define CTRACE_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_TRACE_LOG #if ELPP_VERBOSE_LOG # define CVERBOSE_IF(writer, condition_, vlevel, dispatchAction, ...) if (VLOG_IS_ON(vlevel) && (condition_)) writer( \ el::Level::Verbose, __FILE__, __LINE__, ELPP_FUNC, dispatchAction, vlevel).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) #else # define CVERBOSE_IF(writer, condition_, vlevel, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_VERBOSE_LOG // Occasional logs #if ELPP_INFO_LOG # define CINFO_EVERY_N(writer, occasion, dispatchAction, ...)\ ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Info, dispatchAction, __VA_ARGS__) #else # define CINFO_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_INFO_LOG #if ELPP_WARNING_LOG # define CWARNING_EVERY_N(writer, occasion, dispatchAction, ...)\ ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Warning, dispatchAction, __VA_ARGS__) #else # define CWARNING_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_WARNING_LOG #if ELPP_DEBUG_LOG # define CDEBUG_EVERY_N(writer, occasion, dispatchAction, ...)\ ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Debug, dispatchAction, __VA_ARGS__) #else # define CDEBUG_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_DEBUG_LOG #if ELPP_ERROR_LOG # define CERROR_EVERY_N(writer, occasion, dispatchAction, ...)\ ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Error, dispatchAction, __VA_ARGS__) #else # define CERROR_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_ERROR_LOG #if ELPP_FATAL_LOG # define CFATAL_EVERY_N(writer, occasion, dispatchAction, ...)\ ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Fatal, dispatchAction, __VA_ARGS__) #else # define CFATAL_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_FATAL_LOG #if ELPP_TRACE_LOG # define CTRACE_EVERY_N(writer, occasion, dispatchAction, ...)\ ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Trace, dispatchAction, __VA_ARGS__) #else # define CTRACE_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_TRACE_LOG #if ELPP_VERBOSE_LOG # define CVERBOSE_EVERY_N(writer, occasion, vlevel, dispatchAction, ...)\ CVERBOSE_IF(writer, ELPP->validateEveryNCounter(__FILE__, __LINE__, occasion), vlevel, dispatchAction, __VA_ARGS__) #else # define CVERBOSE_EVERY_N(writer, occasion, vlevel, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_VERBOSE_LOG // After N logs #if ELPP_INFO_LOG # define CINFO_AFTER_N(writer, n, dispatchAction, ...)\ ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Info, dispatchAction, __VA_ARGS__) #else # define CINFO_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_INFO_LOG #if ELPP_WARNING_LOG # define CWARNING_AFTER_N(writer, n, dispatchAction, ...)\ ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Warning, dispatchAction, __VA_ARGS__) #else # define CWARNING_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_WARNING_LOG #if ELPP_DEBUG_LOG # define CDEBUG_AFTER_N(writer, n, dispatchAction, ...)\ ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Debug, dispatchAction, __VA_ARGS__) #else # define CDEBUG_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_DEBUG_LOG #if ELPP_ERROR_LOG # define CERROR_AFTER_N(writer, n, dispatchAction, ...)\ ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Error, dispatchAction, __VA_ARGS__) #else # define CERROR_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_ERROR_LOG #if ELPP_FATAL_LOG # define CFATAL_AFTER_N(writer, n, dispatchAction, ...)\ ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Fatal, dispatchAction, __VA_ARGS__) #else # define CFATAL_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_FATAL_LOG #if ELPP_TRACE_LOG # define CTRACE_AFTER_N(writer, n, dispatchAction, ...)\ ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Trace, dispatchAction, __VA_ARGS__) #else # define CTRACE_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_TRACE_LOG #if ELPP_VERBOSE_LOG # define CVERBOSE_AFTER_N(writer, n, vlevel, dispatchAction, ...)\ CVERBOSE_IF(writer, ELPP->validateAfterNCounter(__FILE__, __LINE__, n), vlevel, dispatchAction, __VA_ARGS__) #else # define CVERBOSE_AFTER_N(writer, n, vlevel, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_VERBOSE_LOG // N Times logs #if ELPP_INFO_LOG # define CINFO_N_TIMES(writer, n, dispatchAction, ...)\ ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Info, dispatchAction, __VA_ARGS__) #else # define CINFO_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_INFO_LOG #if ELPP_WARNING_LOG # define CWARNING_N_TIMES(writer, n, dispatchAction, ...)\ ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Warning, dispatchAction, __VA_ARGS__) #else # define CWARNING_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_WARNING_LOG #if ELPP_DEBUG_LOG # define CDEBUG_N_TIMES(writer, n, dispatchAction, ...)\ ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Debug, dispatchAction, __VA_ARGS__) #else # define CDEBUG_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_DEBUG_LOG #if ELPP_ERROR_LOG # define CERROR_N_TIMES(writer, n, dispatchAction, ...)\ ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Error, dispatchAction, __VA_ARGS__) #else # define CERROR_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_ERROR_LOG #if ELPP_FATAL_LOG # define CFATAL_N_TIMES(writer, n, dispatchAction, ...)\ ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Fatal, dispatchAction, __VA_ARGS__) #else # define CFATAL_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_FATAL_LOG #if ELPP_TRACE_LOG # define CTRACE_N_TIMES(writer, n, dispatchAction, ...)\ ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Trace, dispatchAction, __VA_ARGS__) #else # define CTRACE_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_TRACE_LOG #if ELPP_VERBOSE_LOG # define CVERBOSE_N_TIMES(writer, n, vlevel, dispatchAction, ...)\ CVERBOSE_IF(writer, ELPP->validateNTimesCounter(__FILE__, __LINE__, n), vlevel, dispatchAction, __VA_ARGS__) #else # define CVERBOSE_N_TIMES(writer, n, vlevel, dispatchAction, ...) el::base::NullWriter() #endif // ELPP_VERBOSE_LOG // // Custom Loggers - Requires (level, dispatchAction, loggerId/s) // // undef existing #undef CLOG #undef CLOG_VERBOSE #undef CVLOG #undef CLOG_IF #undef CLOG_VERBOSE_IF #undef CVLOG_IF #undef CLOG_EVERY_N #undef CVLOG_EVERY_N #undef CLOG_AFTER_N #undef CVLOG_AFTER_N #undef CLOG_N_TIMES #undef CVLOG_N_TIMES // Normal logs #define CLOG(LEVEL, ...)\ C##LEVEL(el::base::Writer, el::base::DispatchAction::NormalLog, __VA_ARGS__) #define CVLOG(vlevel, ...) CVERBOSE(el::base::Writer, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) // Conditional logs #define CLOG_IF(condition, LEVEL, ...)\ C##LEVEL##_IF(el::base::Writer, condition, el::base::DispatchAction::NormalLog, __VA_ARGS__) #define CVLOG_IF(condition, vlevel, ...)\ CVERBOSE_IF(el::base::Writer, condition, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) // Hit counts based logs #define CLOG_EVERY_N(n, LEVEL, ...)\ C##LEVEL##_EVERY_N(el::base::Writer, n, el::base::DispatchAction::NormalLog, __VA_ARGS__) #define CVLOG_EVERY_N(n, vlevel, ...)\ CVERBOSE_EVERY_N(el::base::Writer, n, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) #define CLOG_AFTER_N(n, LEVEL, ...)\ C##LEVEL##_AFTER_N(el::base::Writer, n, el::base::DispatchAction::NormalLog, __VA_ARGS__) #define CVLOG_AFTER_N(n, vlevel, ...)\ CVERBOSE_AFTER_N(el::base::Writer, n, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) #define CLOG_N_TIMES(n, LEVEL, ...)\ C##LEVEL##_N_TIMES(el::base::Writer, n, el::base::DispatchAction::NormalLog, __VA_ARGS__) #define CVLOG_N_TIMES(n, vlevel, ...)\ CVERBOSE_N_TIMES(el::base::Writer, n, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) // // Default Loggers macro using CLOG(), CLOG_VERBOSE() and CVLOG() macros // // undef existing #undef LOG #undef VLOG #undef LOG_IF #undef VLOG_IF #undef LOG_EVERY_N #undef VLOG_EVERY_N #undef LOG_AFTER_N #undef VLOG_AFTER_N #undef LOG_N_TIMES #undef VLOG_N_TIMES #undef ELPP_CURR_FILE_LOGGER_ID #if defined(ELPP_DEFAULT_LOGGER) # define ELPP_CURR_FILE_LOGGER_ID ELPP_DEFAULT_LOGGER #else # define ELPP_CURR_FILE_LOGGER_ID el::base::consts::kDefaultLoggerId #endif #undef ELPP_TRACE #define ELPP_TRACE CLOG(TRACE, ELPP_CURR_FILE_LOGGER_ID) // Normal logs #define LOG(LEVEL) CLOG(LEVEL, ELPP_CURR_FILE_LOGGER_ID) #define VLOG(vlevel) CVLOG(vlevel, ELPP_CURR_FILE_LOGGER_ID) // Conditional logs #define LOG_IF(condition, LEVEL) CLOG_IF(condition, LEVEL, ELPP_CURR_FILE_LOGGER_ID) #define VLOG_IF(condition, vlevel) CVLOG_IF(condition, vlevel, ELPP_CURR_FILE_LOGGER_ID) // Hit counts based logs #define LOG_EVERY_N(n, LEVEL) CLOG_EVERY_N(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) #define VLOG_EVERY_N(n, vlevel) CVLOG_EVERY_N(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) #define LOG_AFTER_N(n, LEVEL) CLOG_AFTER_N(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) #define VLOG_AFTER_N(n, vlevel) CVLOG_AFTER_N(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) #define LOG_N_TIMES(n, LEVEL) CLOG_N_TIMES(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) #define VLOG_N_TIMES(n, vlevel) CVLOG_N_TIMES(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) // Generic PLOG() #undef CPLOG #undef CPLOG_IF #undef PLOG #undef PLOG_IF #undef DCPLOG #undef DCPLOG_IF #undef DPLOG #undef DPLOG_IF #define CPLOG(LEVEL, ...)\ C##LEVEL(el::base::PErrorWriter, el::base::DispatchAction::NormalLog, __VA_ARGS__) #define CPLOG_IF(condition, LEVEL, ...)\ C##LEVEL##_IF(el::base::PErrorWriter, condition, el::base::DispatchAction::NormalLog, __VA_ARGS__) #define DCPLOG(LEVEL, ...)\ if (ELPP_DEBUG_LOG) C##LEVEL(el::base::PErrorWriter, el::base::DispatchAction::NormalLog, __VA_ARGS__) #define DCPLOG_IF(condition, LEVEL, ...)\ C##LEVEL##_IF(el::base::PErrorWriter, (ELPP_DEBUG_LOG) && (condition), el::base::DispatchAction::NormalLog, __VA_ARGS__) #define PLOG(LEVEL) CPLOG(LEVEL, ELPP_CURR_FILE_LOGGER_ID) #define PLOG_IF(condition, LEVEL) CPLOG_IF(condition, LEVEL, ELPP_CURR_FILE_LOGGER_ID) #define DPLOG(LEVEL) DCPLOG(LEVEL, ELPP_CURR_FILE_LOGGER_ID) #define DPLOG_IF(condition, LEVEL) DCPLOG_IF(condition, LEVEL, ELPP_CURR_FILE_LOGGER_ID) // Generic SYSLOG() #undef CSYSLOG #undef CSYSLOG_IF #undef CSYSLOG_EVERY_N #undef CSYSLOG_AFTER_N #undef CSYSLOG_N_TIMES #undef SYSLOG #undef SYSLOG_IF #undef SYSLOG_EVERY_N #undef SYSLOG_AFTER_N #undef SYSLOG_N_TIMES #undef DCSYSLOG #undef DCSYSLOG_IF #undef DCSYSLOG_EVERY_N #undef DCSYSLOG_AFTER_N #undef DCSYSLOG_N_TIMES #undef DSYSLOG #undef DSYSLOG_IF #undef DSYSLOG_EVERY_N #undef DSYSLOG_AFTER_N #undef DSYSLOG_N_TIMES #if defined(ELPP_SYSLOG) # define CSYSLOG(LEVEL, ...)\ C##LEVEL(el::base::Writer, el::base::DispatchAction::SysLog, __VA_ARGS__) # define CSYSLOG_IF(condition, LEVEL, ...)\ C##LEVEL##_IF(el::base::Writer, condition, el::base::DispatchAction::SysLog, __VA_ARGS__) # define CSYSLOG_EVERY_N(n, LEVEL, ...) C##LEVEL##_EVERY_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) # define CSYSLOG_AFTER_N(n, LEVEL, ...) C##LEVEL##_AFTER_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) # define CSYSLOG_N_TIMES(n, LEVEL, ...) C##LEVEL##_N_TIMES(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) # define SYSLOG(LEVEL) CSYSLOG(LEVEL, el::base::consts::kSysLogLoggerId) # define SYSLOG_IF(condition, LEVEL) CSYSLOG_IF(condition, LEVEL, el::base::consts::kSysLogLoggerId) # define SYSLOG_EVERY_N(n, LEVEL) CSYSLOG_EVERY_N(n, LEVEL, el::base::consts::kSysLogLoggerId) # define SYSLOG_AFTER_N(n, LEVEL) CSYSLOG_AFTER_N(n, LEVEL, el::base::consts::kSysLogLoggerId) # define SYSLOG_N_TIMES(n, LEVEL) CSYSLOG_N_TIMES(n, LEVEL, el::base::consts::kSysLogLoggerId) # define DCSYSLOG(LEVEL, ...) if (ELPP_DEBUG_LOG) C##LEVEL(el::base::Writer, el::base::DispatchAction::SysLog, __VA_ARGS__) # define DCSYSLOG_IF(condition, LEVEL, ...)\ C##LEVEL##_IF(el::base::Writer, (ELPP_DEBUG_LOG) && (condition), el::base::DispatchAction::SysLog, __VA_ARGS__) # define DCSYSLOG_EVERY_N(n, LEVEL, ...)\ if (ELPP_DEBUG_LOG) C##LEVEL##_EVERY_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) # define DCSYSLOG_AFTER_N(n, LEVEL, ...)\ if (ELPP_DEBUG_LOG) C##LEVEL##_AFTER_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) # define DCSYSLOG_N_TIMES(n, LEVEL, ...)\ if (ELPP_DEBUG_LOG) C##LEVEL##_EVERY_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) # define DSYSLOG(LEVEL) DCSYSLOG(LEVEL, el::base::consts::kSysLogLoggerId) # define DSYSLOG_IF(condition, LEVEL) DCSYSLOG_IF(condition, LEVEL, el::base::consts::kSysLogLoggerId) # define DSYSLOG_EVERY_N(n, LEVEL) DCSYSLOG_EVERY_N(n, LEVEL, el::base::consts::kSysLogLoggerId) # define DSYSLOG_AFTER_N(n, LEVEL) DCSYSLOG_AFTER_N(n, LEVEL, el::base::consts::kSysLogLoggerId) # define DSYSLOG_N_TIMES(n, LEVEL) DCSYSLOG_N_TIMES(n, LEVEL, el::base::consts::kSysLogLoggerId) #else # define CSYSLOG(LEVEL, ...) el::base::NullWriter() # define CSYSLOG_IF(condition, LEVEL, ...) el::base::NullWriter() # define CSYSLOG_EVERY_N(n, LEVEL, ...) el::base::NullWriter() # define CSYSLOG_AFTER_N(n, LEVEL, ...) el::base::NullWriter() # define CSYSLOG_N_TIMES(n, LEVEL, ...) el::base::NullWriter() # define SYSLOG(LEVEL) el::base::NullWriter() # define SYSLOG_IF(condition, LEVEL) el::base::NullWriter() # define SYSLOG_EVERY_N(n, LEVEL) el::base::NullWriter() # define SYSLOG_AFTER_N(n, LEVEL) el::base::NullWriter() # define SYSLOG_N_TIMES(n, LEVEL) el::base::NullWriter() # define DCSYSLOG(LEVEL, ...) el::base::NullWriter() # define DCSYSLOG_IF(condition, LEVEL, ...) el::base::NullWriter() # define DCSYSLOG_EVERY_N(n, LEVEL, ...) el::base::NullWriter() # define DCSYSLOG_AFTER_N(n, LEVEL, ...) el::base::NullWriter() # define DCSYSLOG_N_TIMES(n, LEVEL, ...) el::base::NullWriter() # define DSYSLOG(LEVEL) el::base::NullWriter() # define DSYSLOG_IF(condition, LEVEL) el::base::NullWriter() # define DSYSLOG_EVERY_N(n, LEVEL) el::base::NullWriter() # define DSYSLOG_AFTER_N(n, LEVEL) el::base::NullWriter() # define DSYSLOG_N_TIMES(n, LEVEL) el::base::NullWriter() #endif // defined(ELPP_SYSLOG) // // Custom Debug Only Loggers - Requires (level, loggerId/s) // // undef existing #undef DCLOG #undef DCVLOG #undef DCLOG_IF #undef DCVLOG_IF #undef DCLOG_EVERY_N #undef DCVLOG_EVERY_N #undef DCLOG_AFTER_N #undef DCVLOG_AFTER_N #undef DCLOG_N_TIMES #undef DCVLOG_N_TIMES // Normal logs #define DCLOG(LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG(LEVEL, __VA_ARGS__) #define DCLOG_VERBOSE(vlevel, ...) if (ELPP_DEBUG_LOG) CLOG_VERBOSE(vlevel, __VA_ARGS__) #define DCVLOG(vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG(vlevel, __VA_ARGS__) // Conditional logs #define DCLOG_IF(condition, LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG_IF(condition, LEVEL, __VA_ARGS__) #define DCVLOG_IF(condition, vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG_IF(condition, vlevel, __VA_ARGS__) // Hit counts based logs #define DCLOG_EVERY_N(n, LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG_EVERY_N(n, LEVEL, __VA_ARGS__) #define DCVLOG_EVERY_N(n, vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG_EVERY_N(n, vlevel, __VA_ARGS__) #define DCLOG_AFTER_N(n, LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG_AFTER_N(n, LEVEL, __VA_ARGS__) #define DCVLOG_AFTER_N(n, vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG_AFTER_N(n, vlevel, __VA_ARGS__) #define DCLOG_N_TIMES(n, LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG_N_TIMES(n, LEVEL, __VA_ARGS__) #define DCVLOG_N_TIMES(n, vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG_N_TIMES(n, vlevel, __VA_ARGS__) // // Default Debug Only Loggers macro using CLOG(), CLOG_VERBOSE() and CVLOG() macros // #if !defined(ELPP_NO_DEBUG_MACROS) // undef existing #undef DLOG #undef DVLOG #undef DLOG_IF #undef DVLOG_IF #undef DLOG_EVERY_N #undef DVLOG_EVERY_N #undef DLOG_AFTER_N #undef DVLOG_AFTER_N #undef DLOG_N_TIMES #undef DVLOG_N_TIMES // Normal logs #define DLOG(LEVEL) DCLOG(LEVEL, ELPP_CURR_FILE_LOGGER_ID) #define DVLOG(vlevel) DCVLOG(vlevel, ELPP_CURR_FILE_LOGGER_ID) // Conditional logs #define DLOG_IF(condition, LEVEL) DCLOG_IF(condition, LEVEL, ELPP_CURR_FILE_LOGGER_ID) #define DVLOG_IF(condition, vlevel) DCVLOG_IF(condition, vlevel, ELPP_CURR_FILE_LOGGER_ID) // Hit counts based logs #define DLOG_EVERY_N(n, LEVEL) DCLOG_EVERY_N(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) #define DVLOG_EVERY_N(n, vlevel) DCVLOG_EVERY_N(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) #define DLOG_AFTER_N(n, LEVEL) DCLOG_AFTER_N(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) #define DVLOG_AFTER_N(n, vlevel) DCVLOG_AFTER_N(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) #define DLOG_N_TIMES(n, LEVEL) DCLOG_N_TIMES(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) #define DVLOG_N_TIMES(n, vlevel) DCVLOG_N_TIMES(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) #endif // defined(ELPP_NO_DEBUG_MACROS) #if !defined(ELPP_NO_CHECK_MACROS) // Check macros #undef CCHECK #undef CPCHECK #undef CCHECK_EQ #undef CCHECK_NE #undef CCHECK_LT #undef CCHECK_GT #undef CCHECK_LE #undef CCHECK_GE #undef CCHECK_BOUNDS #undef CCHECK_NOTNULL #undef CCHECK_STRCASEEQ #undef CCHECK_STRCASENE #undef CHECK #undef PCHECK #undef CHECK_EQ #undef CHECK_NE #undef CHECK_LT #undef CHECK_GT #undef CHECK_LE #undef CHECK_GE #undef CHECK_BOUNDS #undef CHECK_NOTNULL #undef CHECK_STRCASEEQ #undef CHECK_STRCASENE #define CCHECK(condition, ...) CLOG_IF(!(condition), FATAL, __VA_ARGS__) << "Check failed: [" << #condition << "] " #define CPCHECK(condition, ...) CPLOG_IF(!(condition), FATAL, __VA_ARGS__) << "Check failed: [" << #condition << "] " #define CHECK(condition) CCHECK(condition, ELPP_CURR_FILE_LOGGER_ID) #define PCHECK(condition) CPCHECK(condition, ELPP_CURR_FILE_LOGGER_ID) #define CCHECK_EQ(a, b, ...) CCHECK(a == b, __VA_ARGS__) #define CCHECK_NE(a, b, ...) CCHECK(a != b, __VA_ARGS__) #define CCHECK_LT(a, b, ...) CCHECK(a < b, __VA_ARGS__) #define CCHECK_GT(a, b, ...) CCHECK(a > b, __VA_ARGS__) #define CCHECK_LE(a, b, ...) CCHECK(a <= b, __VA_ARGS__) #define CCHECK_GE(a, b, ...) CCHECK(a >= b, __VA_ARGS__) #define CCHECK_BOUNDS(val, min, max, ...) CCHECK(val >= min && val <= max, __VA_ARGS__) #define CHECK_EQ(a, b) CCHECK_EQ(a, b, ELPP_CURR_FILE_LOGGER_ID) #define CHECK_NE(a, b) CCHECK_NE(a, b, ELPP_CURR_FILE_LOGGER_ID) #define CHECK_LT(a, b) CCHECK_LT(a, b, ELPP_CURR_FILE_LOGGER_ID) #define CHECK_GT(a, b) CCHECK_GT(a, b, ELPP_CURR_FILE_LOGGER_ID) #define CHECK_LE(a, b) CCHECK_LE(a, b, ELPP_CURR_FILE_LOGGER_ID) #define CHECK_GE(a, b) CCHECK_GE(a, b, ELPP_CURR_FILE_LOGGER_ID) #define CHECK_BOUNDS(val, min, max) CCHECK_BOUNDS(val, min, max, ELPP_CURR_FILE_LOGGER_ID) #define CCHECK_NOTNULL(ptr, ...) CCHECK((ptr) != nullptr, __VA_ARGS__) #define CCHECK_STREQ(str1, str2, ...) CLOG_IF(!el::base::utils::Str::cStringEq(str1, str2), FATAL, __VA_ARGS__) \ << "Check failed: [" << #str1 << " == " << #str2 << "] " #define CCHECK_STRNE(str1, str2, ...) CLOG_IF(el::base::utils::Str::cStringEq(str1, str2), FATAL, __VA_ARGS__) \ << "Check failed: [" << #str1 << " != " << #str2 << "] " #define CCHECK_STRCASEEQ(str1, str2, ...) CLOG_IF(!el::base::utils::Str::cStringCaseEq(str1, str2), FATAL, __VA_ARGS__) \ << "Check failed: [" << #str1 << " == " << #str2 << "] " #define CCHECK_STRCASENE(str1, str2, ...) CLOG_IF(el::base::utils::Str::cStringCaseEq(str1, str2), FATAL, __VA_ARGS__) \ << "Check failed: [" << #str1 << " != " << #str2 << "] " #define CHECK_NOTNULL(ptr) CCHECK_NOTNULL((ptr), ELPP_CURR_FILE_LOGGER_ID) #define CHECK_STREQ(str1, str2) CCHECK_STREQ(str1, str2, ELPP_CURR_FILE_LOGGER_ID) #define CHECK_STRNE(str1, str2) CCHECK_STRNE(str1, str2, ELPP_CURR_FILE_LOGGER_ID) #define CHECK_STRCASEEQ(str1, str2) CCHECK_STRCASEEQ(str1, str2, ELPP_CURR_FILE_LOGGER_ID) #define CHECK_STRCASENE(str1, str2) CCHECK_STRCASENE(str1, str2, ELPP_CURR_FILE_LOGGER_ID) #undef DCCHECK #undef DCCHECK_EQ #undef DCCHECK_NE #undef DCCHECK_LT #undef DCCHECK_GT #undef DCCHECK_LE #undef DCCHECK_GE #undef DCCHECK_BOUNDS #undef DCCHECK_NOTNULL #undef DCCHECK_STRCASEEQ #undef DCCHECK_STRCASENE #undef DCPCHECK #undef DCHECK #undef DCHECK_EQ #undef DCHECK_NE #undef DCHECK_LT #undef DCHECK_GT #undef DCHECK_LE #undef DCHECK_GE #undef DCHECK_BOUNDS_ #undef DCHECK_NOTNULL #undef DCHECK_STRCASEEQ #undef DCHECK_STRCASENE #undef DPCHECK #define DCCHECK(condition, ...) if (ELPP_DEBUG_LOG) CCHECK(condition, __VA_ARGS__) #define DCCHECK_EQ(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_EQ(a, b, __VA_ARGS__) #define DCCHECK_NE(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_NE(a, b, __VA_ARGS__) #define DCCHECK_LT(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_LT(a, b, __VA_ARGS__) #define DCCHECK_GT(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_GT(a, b, __VA_ARGS__) #define DCCHECK_LE(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_LE(a, b, __VA_ARGS__) #define DCCHECK_GE(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_GE(a, b, __VA_ARGS__) #define DCCHECK_BOUNDS(val, min, max, ...) if (ELPP_DEBUG_LOG) CCHECK_BOUNDS(val, min, max, __VA_ARGS__) #define DCCHECK_NOTNULL(ptr, ...) if (ELPP_DEBUG_LOG) CCHECK_NOTNULL((ptr), __VA_ARGS__) #define DCCHECK_STREQ(str1, str2, ...) if (ELPP_DEBUG_LOG) CCHECK_STREQ(str1, str2, __VA_ARGS__) #define DCCHECK_STRNE(str1, str2, ...) if (ELPP_DEBUG_LOG) CCHECK_STRNE(str1, str2, __VA_ARGS__) #define DCCHECK_STRCASEEQ(str1, str2, ...) if (ELPP_DEBUG_LOG) CCHECK_STRCASEEQ(str1, str2, __VA_ARGS__) #define DCCHECK_STRCASENE(str1, str2, ...) if (ELPP_DEBUG_LOG) CCHECK_STRCASENE(str1, str2, __VA_ARGS__) #define DCPCHECK(condition, ...) if (ELPP_DEBUG_LOG) CPCHECK(condition, __VA_ARGS__) #define DCHECK(condition) DCCHECK(condition, ELPP_CURR_FILE_LOGGER_ID) #define DCHECK_EQ(a, b) DCCHECK_EQ(a, b, ELPP_CURR_FILE_LOGGER_ID) #define DCHECK_NE(a, b) DCCHECK_NE(a, b, ELPP_CURR_FILE_LOGGER_ID) #define DCHECK_LT(a, b) DCCHECK_LT(a, b, ELPP_CURR_FILE_LOGGER_ID) #define DCHECK_GT(a, b) DCCHECK_GT(a, b, ELPP_CURR_FILE_LOGGER_ID) #define DCHECK_LE(a, b) DCCHECK_LE(a, b, ELPP_CURR_FILE_LOGGER_ID) #define DCHECK_GE(a, b) DCCHECK_GE(a, b, ELPP_CURR_FILE_LOGGER_ID) #define DCHECK_BOUNDS(val, min, max) DCCHECK_BOUNDS(val, min, max, ELPP_CURR_FILE_LOGGER_ID) #define DCHECK_NOTNULL(ptr) DCCHECK_NOTNULL((ptr), ELPP_CURR_FILE_LOGGER_ID) #define DCHECK_STREQ(str1, str2) DCCHECK_STREQ(str1, str2, ELPP_CURR_FILE_LOGGER_ID) #define DCHECK_STRNE(str1, str2) DCCHECK_STRNE(str1, str2, ELPP_CURR_FILE_LOGGER_ID) #define DCHECK_STRCASEEQ(str1, str2) DCCHECK_STRCASEEQ(str1, str2, ELPP_CURR_FILE_LOGGER_ID) #define DCHECK_STRCASENE(str1, str2) DCCHECK_STRCASENE(str1, str2, ELPP_CURR_FILE_LOGGER_ID) #define DPCHECK(condition) DCPCHECK(condition, ELPP_CURR_FILE_LOGGER_ID) #endif // defined(ELPP_NO_CHECK_MACROS) #if defined(ELPP_DISABLE_DEFAULT_CRASH_HANDLING) # define ELPP_USE_DEF_CRASH_HANDLER false #else # define ELPP_USE_DEF_CRASH_HANDLER true #endif // defined(ELPP_DISABLE_DEFAULT_CRASH_HANDLING) #define ELPP_CRASH_HANDLER_INIT #define ELPP_INIT_EASYLOGGINGPP(val) \ namespace el { \ namespace base { \ el::base::type::StoragePointer elStorage(val); \ } \ el::base::debug::CrashHandler elCrashHandler(ELPP_USE_DEF_CRASH_HANDLER); \ } #if ELPP_ASYNC_LOGGING # define INITIALIZE_EASYLOGGINGPP ELPP_INIT_EASYLOGGINGPP(new el::base::Storage(el::LogBuilderPtr(new el::base::DefaultLogBuilder()),\ new el::base::AsyncDispatchWorker())) #else # define INITIALIZE_EASYLOGGINGPP ELPP_INIT_EASYLOGGINGPP(new el::base::Storage(el::LogBuilderPtr(new el::base::DefaultLogBuilder()))) #endif // ELPP_ASYNC_LOGGING #define INITIALIZE_NULL_EASYLOGGINGPP \ namespace el {\ namespace base {\ el::base::type::StoragePointer elStorage;\ }\ el::base::debug::CrashHandler elCrashHandler(ELPP_USE_DEF_CRASH_HANDLER);\ } #define SHARE_EASYLOGGINGPP(initializedStorage)\ namespace el {\ namespace base {\ el::base::type::StoragePointer elStorage(initializedStorage);\ }\ el::base::debug::CrashHandler elCrashHandler(ELPP_USE_DEF_CRASH_HANDLER);\ } #if defined(ELPP_UNICODE) # define START_EASYLOGGINGPP(argc, argv) el::Helpers::setArgs(argc, argv); std::locale::global(std::locale("")) #else # define START_EASYLOGGINGPP(argc, argv) el::Helpers::setArgs(argc, argv) #endif // defined(ELPP_UNICODE) #endif // EASYLOGGINGPP_H ProcDump-for-Linux-2.2/profiler/inc/no_sal2.h000066400000000000000000000371211447614355600211130ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. /*** * no_sal2.h - renders the SAL annotations for documenting APIs harmless. * * *Purpose: * sal.h provides a set of SAL2 annotations to describe how a function uses its * parameters - the assumptions it makes about them, and the guarantees it makes * upon finishing. This file redefines all those annotation macros to be harmless. * It is designed for use in down-level build environments where the tooling may * be unhappy with the standard SAL2 macro definitions. * * [Public] * * ****/ #ifndef _NO_SAL_2_H_ #define _NO_SAL_2_H_ #undef _When_ #define _When_(c,a) #undef _At_ #define _At_(t,a) #undef _At_buffer_ #define _At_buffer_(t,i,c,a) #undef _Group_ #define _Group_(a) #undef _Pre_ #define _Pre_ #undef _Post_ #define _Post_ #undef _Deref_ #define _Deref_ #undef _Null_ #define _Null_ #undef _Notnull_ #define _Notnull_ #undef _Maybenull_ #define _Maybenull_ #undef _Const_ #define _Const_ #undef _Check_return_ #define _Check_return_ #undef _Must_inspect_result_ #define _Must_inspect_result_ #undef _Pre_satisfies_ #define _Pre_satisfies_(e) #undef _Post_satisfies_ #define _Post_satisfies_(e) #undef _Writable_elements_ #define _Writable_elements_(s) #undef _Writable_bytes_ #define _Writable_bytes_(s) #undef _Readable_elements_ #define _Readable_elements_(s) #undef _Readable_bytes_ #define _Readable_bytes_(s) #undef _Null_terminated_ #define _Null_terminated_ #undef _NullNull_terminated_ #define _NullNull_terminated_ #undef _Valid_ #define _Valid_ #undef _Notvalid_ #define _Notvalid_ #undef _Success_ #define _Success_(c) #undef _Return_type_success_ #define _Return_type_success_(c) #undef _On_failure_ #define _On_failure_(a) #undef _Always_ #define _Always_(a) #undef _Use_decl_annotations_ #define _Use_decl_annotations_ #undef _Pre_defensive_ #define _Pre_defensive_ #undef _Post_defensive_ #define _Post_defensive_ #undef _Pre_unknown_ #define _Pre_unknown_ #undef _Acquires_lock_ #define _Acquires_lock_(e) #undef _Releases_lock_ #define _Releases_lock_(e) #undef _Requires_lock_held_ #define _Requires_lock_held_(e) #undef _Requires_lock_not_held_ #define _Requires_lock_not_held_(e) #undef _Requires_no_locks_held_ #define _Requires_no_locks_held_ #undef _Guarded_by_ #define _Guarded_by_(e) #undef _Write_guarded_by_ #define _Write_guarded_by_(e) #undef _Interlocked_ #define _Interlocked_ #undef _Post_same_lock_ #define _Post_same_lock_(e1,e2) #undef _Benign_race_begin_ #define _Benign_race_begin_ #undef _Benign_race_end_ #define _Benign_race_end_ #undef _No_competing_thread_ #define _No_competing_thread_ #undef _No_competing_thread_begin_ #define _No_competing_thread_begin_ #undef _No_competing_thread_end_ #define _No_competing_thread_end_ #undef _Acquires_shared_lock_ #define _Acquires_shared_lock_(e) #undef _Releases_shared_lock_ #define _Releases_shared_lock_(e) #undef _Requires_shared_lock_held_ #define _Requires_shared_lock_held_(e) #undef _Acquires_exclusive_lock_ #define _Acquires_exclusive_lock_(e) #undef _Releases_exclusive_lock_ #define _Releases_exclusive_lock_(e) #undef _Requires_exclusive_lock_held_ #define _Requires_exclusive_lock_held_(e) #undef _Has_lock_kind_ #define _Has_lock_kind_(n) #undef _Create_lock_level_ #define _Create_lock_level_(n) #undef _Has_lock_level_ #define _Has_lock_level_(n) #undef _Lock_level_order_ #define _Lock_level_order_(n1,n2) #undef _Analysis_assume_lock_acquired_ #define _Analysis_assume_lock_acquired_(e) #undef _Analysis_assume_lock_released_ #define _Analysis_assume_lock_released_(e) #undef _Analysis_assume_lock_held_ #define _Analysis_assume_lock_held_(e) #undef _Analysis_assume_lock_not_held_ #define _Analysis_assume_lock_not_held_(e) #undef _Analysis_assume_same_lock_ #define _Analysis_assume_same_lock_(e) #undef _In_ #define _In_ #undef _Out_ #define _Out_ #undef _Inout_ #define _Inout_ #undef _In_z_ #define _In_z_ #undef _Inout_z_ #define _Inout_z_ #undef _In_reads_ #define _In_reads_(s) #undef _In_reads_bytes_ #define _In_reads_bytes_(s) #undef _In_reads_z_ #define _In_reads_z_(s) #undef _In_reads_or_z_ #define _In_reads_or_z_(s) #undef _Out_writes_ #define _Out_writes_(s) #undef _Out_writes_bytes_ #define _Out_writes_bytes_(s) #undef _Out_writes_z_ #define _Out_writes_z_(s) #undef _Inout_updates_ #define _Inout_updates_(s) #undef _Inout_updates_bytes_ #define _Inout_updates_bytes_(s) #undef _Inout_updates_z_ #define _Inout_updates_z_(s) #undef _Out_writes_to_ #define _Out_writes_to_(s,c) #undef _Out_writes_bytes_to_ #define _Out_writes_bytes_to_(s,c) #undef _Out_writes_all_ #define _Out_writes_all_(s) #undef _Out_writes_bytes_all_ #define _Out_writes_bytes_all_(s) #undef _Inout_updates_to_ #define _Inout_updates_to_(s,c) #undef _Inout_updates_bytes_to_ #define _Inout_updates_bytes_to_(s,c) #undef _Inout_updates_all_ #define _Inout_updates_all_(s) #undef _Inout_updates_bytes_all_ #define _Inout_updates_bytes_all_(s) #undef _In_reads_to_ptr_ #define _In_reads_to_ptr_(p) #undef _In_reads_to_ptr_z_ #define _In_reads_to_ptr_z_(p) #undef _Out_writes_to_ptr_ #define _Out_writes_to_ptr_(p) #undef _Out_writes_to_ptr_z_ #define _Out_writes_to_ptr_z_(p) #undef _In_opt_ #define _In_opt_ #undef _Out_opt_ #define _Out_opt_ #undef _Inout_opt_ #define _Inout_opt_ #undef _In_opt_z_ #define _In_opt_z_ #undef _Inout_opt_z_ #define _Inout_opt_z_ #undef _In_reads_opt_ #define _In_reads_opt_(s) #undef _In_reads_bytes_opt_ #define _In_reads_bytes_opt_(s) #undef _Out_writes_opt_ #define _Out_writes_opt_(s) #undef _Out_writes_bytes_opt_ #define _Out_writes_bytes_opt_(s) #undef _Out_writes_opt_z_ #define _Out_writes_opt_z_(s) #undef _Inout_updates_opt_ #define _Inout_updates_opt_(s) #undef _Inout_updates_bytes_opt_ #define _Inout_updates_bytes_opt_(s) #undef _Inout_updates_opt_z_ #define _Inout_updates_opt_z_(s) #undef _Out_writes_to_opt_ #define _Out_writes_to_opt_(s,c) #undef _Out_writes_bytes_to_opt_ #define _Out_writes_bytes_to_opt_(s,c) #undef _Out_writes_all_opt_ #define _Out_writes_all_opt_(s) #undef _Out_writes_bytes_all_opt_ #define _Out_writes_bytes_all_opt_(s) #undef _Inout_updates_to_opt_ #define _Inout_updates_to_opt_(s,c) #undef _Inout_updates_bytes_to_opt_ #define _Inout_updates_bytes_to_opt_(s,c) #undef _Inout_updates_all_opt_ #define _Inout_updates_all_opt_(s) #undef _Inout_updates_bytes_all_opt_ #define _Inout_updates_bytes_all_opt_(s) #undef _In_reads_to_ptr_opt_ #define _In_reads_to_ptr_opt_(p) #undef _In_reads_to_ptr_opt_z_ #define _In_reads_to_ptr_opt_z_(p) #undef _Out_writes_to_ptr_opt_ #define _Out_writes_to_ptr_opt_(p) #undef _Out_writes_to_ptr_opt_z_ #define _Out_writes_to_ptr_opt_z_(p) #undef _Outptr_ #define _Outptr_ #undef _Outptr_opt_ #define _Outptr_opt_ #undef _Outptr_result_maybenull_ #define _Outptr_result_maybenull_ #undef _Outptr_opt_result_maybenull_ #define _Outptr_opt_result_maybenull_ #undef _Outptr_z_ #define _Outptr_z_ #undef _Outptr_opt_z_ #define _Outptr_opt_z_ #undef _Outptr_result_maybenull_z_ #define _Outptr_result_maybenull_z_ #undef _Outptr_opt_result_maybenull_z_ #define _Outptr_opt_result_maybenull_z_ #undef _COM_Outptr_ #define _COM_Outptr_ #undef _COM_Outptr_opt_ #define _COM_Outptr_opt_ #undef _COM_Outptr_result_maybenull_ #define _COM_Outptr_result_maybenull_ #undef _COM_Outptr_opt_result_maybenull_ #define _COM_Outptr_opt_result_maybenull_ #undef _Outptr_result_buffer_ #define _Outptr_result_buffer_(s) #undef _Outptr_result_bytebuffer_ #define _Outptr_result_bytebuffer_(s) #undef _Outptr_opt_result_buffer_ #define _Outptr_opt_result_buffer_(s) #undef _Outptr_opt_result_bytebuffer_ #define _Outptr_opt_result_bytebuffer_(s) #undef _Outptr_result_buffer_to_ #define _Outptr_result_buffer_to_(s,c) #undef _Outptr_result_bytebuffer_to_ #define _Outptr_result_bytebuffer_to_(s,c) #undef _Outptr_opt_result_buffer_to_ #define _Outptr_opt_result_buffer_to_(s,c) #undef _Outptr_opt_result_bytebuffer_to_ #define _Outptr_opt_result_bytebuffer_to_(s,c) #undef _Ret_ #define _Ret_ #undef _Ret_valid_ #define _Ret_valid_ #undef _Ret_z_ #define _Ret_z_ #undef _Ret_writes_ #define _Ret_writes_(s) #undef _Ret_writes_bytes_ #define _Ret_writes_bytes_(s) #undef _Ret_writes_z_ #define _Ret_writes_z_(s) #undef _Ret_writes_to_ #define _Ret_writes_to_(s,c) #undef _Ret_writes_bytes_to_ #define _Ret_writes_bytes_to_(s,c) #undef _Ret_writes_maybenull_ #define _Ret_writes_maybenull_(s) #undef _Ret_writes_bytes_maybenull_ #define _Ret_writes_bytes_maybenull_(s) #undef _Ret_writes_to_maybenull_ #define _Ret_writes_to_maybenull_(s,c) #undef _Ret_writes_bytes_to_maybenull_ #define _Ret_writes_bytes_to_maybenull_(s,c) #undef _Ret_writes_maybenull_z_ #define _Ret_writes_maybenull_z_(s) #undef _Ret_maybenull_ #define _Ret_maybenull_ #undef _Ret_maybenull_z_ #define _Ret_maybenull_z_ #undef _Field_size_ #define _Field_size_(s) #undef _Field_size_opt_ #define _Field_size_opt_(s) #undef _Field_size_bytes_ #define _Field_size_bytes_(s) #undef _Field_size_bytes_opt_ #define _Field_size_bytes_opt_(s) #undef _Field_size_part_ #define _Field_size_part_(s,c) #undef _Field_size_part_opt_ #define _Field_size_part_opt_(s,c) #undef _Field_size_bytes_part_ #define _Field_size_bytes_part_(s,c) #undef _Field_size_bytes_part_opt_ #define _Field_size_bytes_part_opt_(s,c) #undef _Field_size_full_ #define _Field_size_full_(s) #undef _Field_size_full_opt_ #define _Field_size_full_opt_(s) #undef _Field_size_bytes_full_ #define _Field_size_bytes_full_(s) #undef _Field_size_bytes_full_opt_ #define _Field_size_bytes_full_opt_(s) #undef _Printf_format_string_ #define _Printf_format_string_ #undef _Scanf_format_string_ #define _Scanf_format_string_ #undef _Scanf_s_format_string_ #define _Scanf_s_format_string_ #undef _Printf_format_string_params_ #define _Printf_format_string_params_(x) #undef _Scanf_format_string_params_ #define _Scanf_format_string_params_(x) #undef _Scanf_s_format_string_params_ #define _Scanf_s_format_string_params_(x) #undef _In_range_ #define _In_range_(l,h) #undef _Out_range_ #define _Out_range_(l,h) #undef _Ret_range_ #define _Ret_range_(l,h) #undef _Deref_in_range_ #define _Deref_in_range_(l,h) #undef _Deref_out_range_ #define _Deref_out_range_(l,h) #undef _Deref_inout_range_ #define _Deref_inout_range_(l,h) #undef _Field_range_ #define _Field_range_(l,h) #undef _Pre_equal_to_ #define _Pre_equal_to_(e) #undef _Post_equal_to_ #define _Post_equal_to_(e) #undef _Struct_size_bytes_ #define _Struct_size_bytes_(s) #undef _Analysis_assume_ #define _Analysis_assume_ #undef _Analysis_mode_ #define _Analysis_mode_(m) #undef _Analysis_noreturn_ #define _Analysis_noreturn_ #undef _Raises_SEH_exception_ #define _Raises_SEH_exception_ #undef _Maybe_raises_SEH_exception_ #define _Maybe_raises_SEH_exception_ #undef _Function_class_ #define _Function_class_(n) #undef _Literal_ #define _Literal_ #undef _Notliteral_ #define _Notliteral_ #undef _Enum_is_bitflag_ #define _Enum_is_bitflag_ #undef _Strict_type_match_ #define _Strict_type_match_ #undef _Points_to_data_ #define _Points_to_data_ #undef _Interlocked_operand_ #define _Interlocked_operand_ #undef _IRQL_raises_ #define _IRQL_raises_(i) #undef _IRQL_requires_ #define _IRQL_requires_(i) #undef _IRQL_requires_max_ #define _IRQL_requires_max_(i) #undef _IRQL_requires_min_ #define _IRQL_requires_min_(i) #undef _IRQL_saves_ #define _IRQL_saves_ #undef _IRQL_saves_global_ #define _IRQL_saves_global_(k,s) #undef _IRQL_restores_ #define _IRQL_restores_ #undef _IRQL_restores_global_ #define _IRQL_restores_global_(k,s) #undef _IRQL_always_function_min_ #define _IRQL_always_function_min_(i) #undef _IRQL_always_function_max_ #define _IRQL_always_function_max_(i) #undef _IRQL_requires_same_ #define _IRQL_requires_same_ #undef _IRQL_uses_cancel_ #define _IRQL_uses_cancel_ #undef _IRQL_is_cancel_ #define _IRQL_is_cancel_ #undef _Kernel_float_saved_ #define _Kernel_float_saved_ #undef _Kernel_float_restored_ #define _Kernel_float_restored_ #undef _Kernel_float_used_ #define _Kernel_float_used_ #undef _Kernel_acquires_resource_ #define _Kernel_acquires_resource_(k) #undef _Kernel_releases_resource_ #define _Kernel_releases_resource_(k) #undef _Kernel_requires_resource_held_ #define _Kernel_requires_resource_held_(k) #undef _Kernel_requires_resource_not_held_ #define _Kernel_requires_resource_not_held_(k) #undef _Kernel_clear_do_init_ #define _Kernel_clear_do_init_(yn) #undef _Kernel_IoGetDmaAdapter_ #define _Kernel_IoGetDmaAdapter_ #undef _Outref_ #define _Outref_ #undef _Outref_result_maybenull_ #define _Outref_result_maybenull_ #undef _Outref_result_buffer_ #define _Outref_result_buffer_(s) #undef _Outref_result_bytebuffer_ #define _Outref_result_bytebuffer_(s) #undef _Outref_result_buffer_to_ #define _Outref_result_buffer_to_(s,c) #undef _Outref_result_bytebuffer_to_ #define _Outref_result_bytebuffer_to_(s,c) #undef _Outref_result_buffer_all_ #define _Outref_result_buffer_all_(s) #undef _Outref_result_bytebuffer_all_ #define _Outref_result_bytebuffer_all_(s) #undef _Outref_result_buffer_maybenull_ #define _Outref_result_buffer_maybenull_(s) #undef _Outref_result_bytebuffer_maybenull_ #define _Outref_result_bytebuffer_maybenull_(s) #undef _Outref_result_buffer_to_maybenull_ #define _Outref_result_buffer_to_maybenull_(s,c) #undef _Outref_result_bytebuffer_to_maybenull_ #define _Outref_result_bytebuffer_to_maybenull_(s,c) #undef _Outref_result_buffer_all_maybenull_ #define _Outref_result_buffer_all_maybenull_(s) #undef _Outref_result_bytebuffer_all_maybenull_ #define _Outref_result_bytebuffer_all_maybenull_(s) #undef _In_defensive_ #define _In_defensive_(a) #undef _Out_defensive_ #define _Out_defensive_(a) #undef _Inout_defensive_ #define _Inout_defensive_(a) #undef _Outptr_result_nullonfailure_ #define _Outptr_result_nullonfailure_ #undef _Outptr_opt_result_nullonfailure_ #define _Outptr_opt_result_nullonfailure_ #undef _Outref_result_nullonfailure_ #define _Outref_result_nullonfailure_ #undef _Result_nullonfailure_ #define _Result_nullonfailure_ #undef _Result_zeroonfailure_ #define _Result_zeroonfailure_ #undef _Acquires_nonreentrant_lock_ #define _Acquires_nonreentrant_lock_(e) #undef _Releases_nonreentrant_lock_ #define _Releases_nonreentrant_lock_(e) #undef _Reserved_ #define _Reserved_ _Pre_equal_to_(0) _Pre_ _Null_ #undef _Pre_z_ #define _Pre_z_ _Pre_ _Null_terminated_ #undef _Post_z_ #define _Post_z_ _Post_ _Null_terminated_ #undef _Prepost_z_ #define _Prepost_z_ _Pre_z_ _Post_z_ #undef _Pre_null_ #define _Pre_null_ _Pre_ _Null_ #undef _Pre_maybenull_ #define _Pre_maybenull_ _Pre_ _Maybenull_ #undef _Pre_notnull_ #define _Pre_notnull_ _Pre_ _Notnull_ #undef _Pre_valid_ #define _Pre_valid_ _Pre_notnull_ _Pre_ _Valid_ #undef _Pre_opt_valid_ #define _Pre_opt_valid_ _Pre_maybenull_ _Pre_ _Valid_ #undef _Post_valid_ #define _Post_valid_ _Post_ _Valid_ #undef _Post_invalid_ #define _Post_invalid_ _Post_ _Deref_ _Notvalid_ #undef _Post_ptr_invalid_ #define _Post_ptr_invalid_ _Post_ _Notvalid_ #undef _Pre_readable_size_ #define _Pre_readable_size_(s) _Pre_ _Readable_elements_(s) _Pre_ _Valid_ #undef _Pre_writable_size_ #define _Pre_writable_size_(s) _Pre_ _Writable_elements_(s) #undef _Pre_readable_byte_size_ #define _Pre_readable_byte_size_(s) _Pre_ _Readable_bytes_(s) _Pre_ _Valid_ #undef _Pre_writable_byte_size_ #define _Pre_writable_byte_size_(s) _Pre_ _Writable_bytes_(s) #undef _Post_readable_size_ #define _Post_readable_size_(s) _Post_ _Readable_elements_(s) _Post_ _Valid_ #undef _Post_writable_size_ #define _Post_writable_size_(s) _Post_ _Writable_elements_(s) #undef _Post_readable_byte_size_ #define _Post_readable_byte_size_(s) _Post_ _Readable_bytes_(s) _Post_ _Valid_ #undef _Post_writable_byte_size_ #define _Post_writable_byte_size_(s) _Post_ _Writable_bytes_(s) #endif /* _NO_SAL_2_H_ */ ProcDump-for-Linux-2.2/profiler/inc/ntimage.h000066400000000000000000002243751447614355600212130ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // =========================================================================== // File: ntimage.h // // =========================================================================== // //Abstract: // // This is the include file that describes all image structures. // //Author: // // // //Revision History: // #ifndef _NTIMAGE_ #define _NTIMAGE_ #if _MSC_VER > 1000 #pragma once #endif // // Define the linker version number. #define IMAGE_MAJOR_LINKER_VERSION 2 // begin_winnt // // Image Format // #ifndef _MAC #include "pshpack4.h" // 4 byte packing is the default #define IMAGE_DOS_SIGNATURE 0x5A4D // MZ #define IMAGE_OS2_SIGNATURE 0x454E // NE #define IMAGE_OS2_SIGNATURE_LE 0x454C // LE #define IMAGE_VXD_SIGNATURE 0x454C // LE #define IMAGE_NT_SIGNATURE 0x00004550 // PE00 #include "pshpack2.h" // 16 bit headers are 2 byte packed #else #include "pshpack1.h" #define IMAGE_DOS_SIGNATURE 0x4D5A // MZ #define IMAGE_OS2_SIGNATURE 0x4E45 // NE #define IMAGE_OS2_SIGNATURE_LE 0x4C45 // LE #define IMAGE_NT_SIGNATURE 0x50450000 // PE00 #endif typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header USHORT e_magic; // Magic number USHORT e_cblp; // Bytes on last page of file USHORT e_cp; // Pages in file USHORT e_crlc; // Relocations USHORT e_cparhdr; // Size of header in paragraphs USHORT e_minalloc; // Minimum extra paragraphs needed USHORT e_maxalloc; // Maximum extra paragraphs needed USHORT e_ss; // Initial (relative) SS value USHORT e_sp; // Initial SP value USHORT e_csum; // Checksum USHORT e_ip; // Initial IP value USHORT e_cs; // Initial (relative) CS value USHORT e_lfarlc; // File address of relocation table USHORT e_ovno; // Overlay number USHORT e_res[4]; // Reserved words USHORT e_oemid; // OEM identifier (for e_oeminfo) USHORT e_oeminfo; // OEM information; e_oemid specific USHORT e_res2[10]; // Reserved words LONG e_lfanew; // File address of new exe header } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER; typedef struct _IMAGE_OS2_HEADER { // OS/2 .EXE header USHORT ne_magic; // Magic number CHAR ne_ver; // Version number CHAR ne_rev; // Revision number USHORT ne_enttab; // Offset of Entry Table USHORT ne_cbenttab; // Number of bytes in Entry Table LONG ne_crc; // Checksum of whole file USHORT ne_flags; // Flag word USHORT ne_autodata; // Automatic data segment number USHORT ne_heap; // Initial heap allocation USHORT ne_stack; // Initial stack allocation LONG ne_csip; // Initial CS:IP setting LONG ne_sssp; // Initial SS:SP setting USHORT ne_cseg; // Count of file segments USHORT ne_cmod; // Entries in Module Reference Table USHORT ne_cbnrestab; // Size of non-resident name table USHORT ne_segtab; // Offset of Segment Table USHORT ne_rsrctab; // Offset of Resource Table USHORT ne_restab; // Offset of resident name table USHORT ne_modtab; // Offset of Module Reference Table USHORT ne_imptab; // Offset of Imported Names Table LONG ne_nrestab; // Offset of Non-resident Names Table USHORT ne_cmovent; // Count of movable entries USHORT ne_align; // Segment alignment shift count USHORT ne_cres; // Count of resource segments UCHAR ne_exetyp; // Target Operating system UCHAR ne_flagsothers; // Other .EXE flags USHORT ne_pretthunks; // offset to return thunks USHORT ne_psegrefbytes; // offset to segment ref. bytes USHORT ne_swaparea; // Minimum code swap area size USHORT ne_expver; // Expected Windows version number } IMAGE_OS2_HEADER, *PIMAGE_OS2_HEADER; typedef struct _IMAGE_VXD_HEADER { // Windows VXD header USHORT e32_magic; // Magic number UCHAR e32_border; // The byte ordering for the VXD UCHAR e32_worder; // The word ordering for the VXD ULONG e32_level; // The EXE format level for now = 0 USHORT e32_cpu; // The CPU type USHORT e32_os; // The OS type ULONG e32_ver; // Module version ULONG e32_mflags; // Module flags ULONG e32_mpages; // Module # pages ULONG e32_startobj; // Object # for instruction pointer ULONG e32_eip; // Extended instruction pointer ULONG e32_stackobj; // Object # for stack pointer ULONG e32_esp; // Extended stack pointer ULONG e32_pagesize; // VXD page size ULONG e32_lastpagesize; // Last page size in VXD ULONG e32_fixupsize; // Fixup section size ULONG e32_fixupsum; // Fixup section checksum ULONG e32_ldrsize; // Loader section size ULONG e32_ldrsum; // Loader section checksum ULONG e32_objtab; // Object table offset ULONG e32_objcnt; // Number of objects in module ULONG e32_objmap; // Object page map offset ULONG e32_itermap; // Object iterated data map offset ULONG e32_rsrctab; // Offset of Resource Table ULONG e32_rsrccnt; // Number of resource entries ULONG e32_restab; // Offset of resident name table ULONG e32_enttab; // Offset of Entry Table ULONG e32_dirtab; // Offset of Module Directive Table ULONG e32_dircnt; // Number of module directives ULONG e32_fpagetab; // Offset of Fixup Page Table ULONG e32_frectab; // Offset of Fixup Record Table ULONG e32_impmod; // Offset of Import Module Name Table ULONG e32_impmodcnt; // Number of entries in Import Module Name Table ULONG e32_impproc; // Offset of Import Procedure Name Table ULONG e32_pagesum; // Offset of Per-Page Checksum Table ULONG e32_datapage; // Offset of Enumerated Data Pages ULONG e32_preload; // Number of preload pages ULONG e32_nrestab; // Offset of Non-resident Names Table ULONG e32_cbnrestab; // Size of Non-resident Name Table ULONG e32_nressum; // Non-resident Name Table Checksum ULONG e32_autodata; // Object # for automatic data object ULONG e32_debuginfo; // Offset of the debugging information ULONG e32_debuglen; // The length of the debugging info. in bytes ULONG e32_instpreload; // Number of instance pages in preload section of VXD file ULONG e32_instdemand; // Number of instance pages in demand load section of VXD file ULONG e32_heapsize; // Size of heap - for 16-bit apps UCHAR e32_res3[12]; // Reserved words ULONG e32_winresoff; ULONG e32_winreslen; USHORT e32_devid; // Device ID for VxD USHORT e32_ddkver; // DDK version for VxD } IMAGE_VXD_HEADER, *PIMAGE_VXD_HEADER; #ifndef _MAC #include "poppack.h" // Back to 4 byte packing #endif // // File header format. // typedef struct _IMAGE_FILE_HEADER { USHORT Machine; USHORT NumberOfSections; ULONG TimeDateStamp; ULONG PointerToSymbolTable; ULONG NumberOfSymbols; USHORT SizeOfOptionalHeader; USHORT Characteristics; } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; #define IMAGE_SIZEOF_FILE_HEADER 20 #define IMAGE_FILE_RELOCS_STRIPPED 0x0001 // Relocation info stripped from file. #define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 // File is executable (i.e. no unresolved externel references). #define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 // Line nunbers stripped from file. #define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 // Local symbols stripped from file. #define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x0010 // Agressively trim working set #define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020 // App can handle >2gb addresses #define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 // Bytes of machine word are reversed. #define IMAGE_FILE_32BIT_MACHINE 0x0100 // 32 bit word machine. #define IMAGE_FILE_DEBUG_STRIPPED 0x0200 // Debugging info stripped from file in .DBG file #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400 // If Image is on removable media, copy and run from the swap file. #define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800 // If Image is on Net, copy and run from the swap file. #define IMAGE_FILE_SYSTEM 0x1000 // System File. #define IMAGE_FILE_DLL 0x2000 // File is a DLL. #define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 // File should only be run on a UP machine #define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 // Bytes of machine word are reversed. #define IMAGE_FILE_MACHINE_UNKNOWN 0 #define IMAGE_FILE_MACHINE_I386 0x014c // Intel 386. #define IMAGE_FILE_MACHINE_R3000 0x0162 // MIPS little-endian, 0x160 big-endian #define IMAGE_FILE_MACHINE_R4000 0x0166 // MIPS little-endian #define IMAGE_FILE_MACHINE_R10000 0x0168 // MIPS little-endian #define IMAGE_FILE_MACHINE_WCEMIPSV2 0x0169 // MIPS little-endian WCE v2 #define IMAGE_FILE_MACHINE_ALPHA 0x0184 // Alpha_AXP #define IMAGE_FILE_MACHINE_SH3 0x01a2 // SH3 little-endian #define IMAGE_FILE_MACHINE_SH3DSP 0x01a3 #define IMAGE_FILE_MACHINE_SH3E 0x01a4 // SH3E little-endian #define IMAGE_FILE_MACHINE_SH4 0x01a6 // SH4 little-endian #define IMAGE_FILE_MACHINE_SH5 0x01a8 // SH5 #define IMAGE_FILE_MACHINE_ARM 0x01c0 // ARM Little-Endian #define IMAGE_FILE_MACHINE_THUMB 0x01c2 #define IMAGE_FILE_MACHINE_ARMNT 0x01c4 // ARM Thumb-2 Little-Endian #define IMAGE_FILE_MACHINE_AM33 0x01d3 #define IMAGE_FILE_MACHINE_POWERPC 0x01F0 // IBM PowerPC Little-Endian #define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1 #define IMAGE_FILE_MACHINE_IA64 0x0200 // Intel 64 #define IMAGE_FILE_MACHINE_MIPS16 0x0266 // MIPS #define IMAGE_FILE_MACHINE_ALPHA64 0x0284 // ALPHA64 #define IMAGE_FILE_MACHINE_MIPSFPU 0x0366 // MIPS #define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466 // MIPS #define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64 #define IMAGE_FILE_MACHINE_TRICORE 0x0520 // Infineon #define IMAGE_FILE_MACHINE_CEF 0x0CEF #define IMAGE_FILE_MACHINE_EBC 0x0EBC // EFI Byte Code #define IMAGE_FILE_MACHINE_AMD64 0x8664 // AMD64 (K8) #define IMAGE_FILE_MACHINE_M32R 0x9041 // M32R little-endian #define IMAGE_FILE_MACHINE_CEE 0xC0EE // // Directory format. // #ifndef IMAGE_DATA_DIRECTORY_DEFINED #define IMAGE_DATA_DIRECTORY_DEFINED typedef struct _IMAGE_DATA_DIRECTORY { ULONG VirtualAddress; ULONG Size; } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; #endif // IMAGE_DATA_DIRECTORY_DEFINED #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 // // Optional header format. // typedef struct _IMAGE_OPTIONAL_HEADER { // // Standard fields. // USHORT Magic; UCHAR MajorLinkerVersion; UCHAR MinorLinkerVersion; ULONG SizeOfCode; ULONG SizeOfInitializedData; ULONG SizeOfUninitializedData; ULONG AddressOfEntryPoint; ULONG BaseOfCode; ULONG BaseOfData; // // NT additional fields. // ULONG ImageBase; ULONG SectionAlignment; ULONG FileAlignment; USHORT MajorOperatingSystemVersion; USHORT MinorOperatingSystemVersion; USHORT MajorImageVersion; USHORT MinorImageVersion; USHORT MajorSubsystemVersion; USHORT MinorSubsystemVersion; ULONG Win32VersionValue; ULONG SizeOfImage; ULONG SizeOfHeaders; ULONG CheckSum; USHORT Subsystem; USHORT DllCharacteristics; ULONG SizeOfStackReserve; ULONG SizeOfStackCommit; ULONG SizeOfHeapReserve; ULONG SizeOfHeapCommit; ULONG LoaderFlags; ULONG NumberOfRvaAndSizes; IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; } IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32; typedef struct _IMAGE_ROM_OPTIONAL_HEADER { USHORT Magic; UCHAR MajorLinkerVersion; UCHAR MinorLinkerVersion; ULONG SizeOfCode; ULONG SizeOfInitializedData; ULONG SizeOfUninitializedData; ULONG AddressOfEntryPoint; ULONG BaseOfCode; ULONG BaseOfData; ULONG BaseOfBss; ULONG GprMask; ULONG CprMask[4]; ULONG GpValue; } IMAGE_ROM_OPTIONAL_HEADER, *PIMAGE_ROM_OPTIONAL_HEADER; typedef struct _IMAGE_OPTIONAL_HEADER64 { USHORT Magic; UCHAR MajorLinkerVersion; UCHAR MinorLinkerVersion; ULONG SizeOfCode; ULONG SizeOfInitializedData; ULONG SizeOfUninitializedData; ULONG AddressOfEntryPoint; ULONG BaseOfCode; ULONGLONG ImageBase; ULONG SectionAlignment; ULONG FileAlignment; USHORT MajorOperatingSystemVersion; USHORT MinorOperatingSystemVersion; USHORT MajorImageVersion; USHORT MinorImageVersion; USHORT MajorSubsystemVersion; USHORT MinorSubsystemVersion; ULONG Win32VersionValue; ULONG SizeOfImage; ULONG SizeOfHeaders; ULONG CheckSum; USHORT Subsystem; USHORT DllCharacteristics; ULONGLONG SizeOfStackReserve; ULONGLONG SizeOfStackCommit; ULONGLONG SizeOfHeapReserve; ULONGLONG SizeOfHeapCommit; ULONG LoaderFlags; ULONG NumberOfRvaAndSizes; IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; } IMAGE_OPTIONAL_HEADER64, *PIMAGE_OPTIONAL_HEADER64; #define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56 #define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28 #define IMAGE_SIZEOF_NT_OPTIONAL32_HEADER 224 #define IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 240 #define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b #define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b #define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 #ifdef HOST_64BIT typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER; typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER; #define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL64_HEADER #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC #else typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER; #define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL32_HEADER #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC #endif typedef struct _IMAGE_NT_HEADERS64 { ULONG Signature; IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER64 OptionalHeader; } IMAGE_NT_HEADERS64, *PIMAGE_NT_HEADERS64; typedef struct _IMAGE_NT_HEADERS { ULONG Signature; IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER32 OptionalHeader; } IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32; typedef struct _IMAGE_ROM_HEADERS { IMAGE_FILE_HEADER FileHeader; IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; } IMAGE_ROM_HEADERS, *PIMAGE_ROM_HEADERS; #ifdef HOST_64BIT typedef IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS; typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS; #else typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS; #endif // IMAGE_FIRST_SECTION doesn't need 32/64 versions since the file header is the same either way. #define IMAGE_FIRST_SECTION( ntheader ) ((PIMAGE_SECTION_HEADER) \ ((ULONG_PTR)ntheader + \ FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + \ VAL16(((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader) \ )) // Subsystem Values #define IMAGE_SUBSYSTEM_UNKNOWN 0 // Unknown subsystem. #define IMAGE_SUBSYSTEM_NATIVE 1 // Image doesn't require a subsystem. #define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 // Image runs in the Windows GUI subsystem. #define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 // Image runs in the Windows character subsystem. // end_winnt // reserved 4 // Old Windows CE subsystem. // begin_winnt #define IMAGE_SUBSYSTEM_OS2_CUI 5 // image runs in the OS/2 character subsystem. #define IMAGE_SUBSYSTEM_POSIX_CUI 7 // image runs in the Posix character subsystem. #define IMAGE_SUBSYSTEM_NATIVE_WINDOWS 8 // image is a native Win9x driver. #define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9 // Image runs in the Windows CE subsystem. #define IMAGE_SUBSYSTEM_EFI_APPLICATION 10 // #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11 // #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12 // #define IMAGE_SUBSYSTEM_EFI_ROM 13 #define IMAGE_SUBSYSTEM_XBOX 14 // DllCharacteristics Entries // IMAGE_LIBRARY_PROCESS_INIT 0x0001 // Reserved. // IMAGE_LIBRARY_PROCESS_TERM 0x0002 // Reserved. // IMAGE_LIBRARY_THREAD_INIT 0x0004 // Reserved. // IMAGE_LIBRARY_THREAD_TERM 0x0008 // Reserved. #define IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA 0x0020 // Image can handle a high entropy 64-bit virtual address space. #define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040 // DLL can move #define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100 // Image ix NX compatible #define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400 // Image does not use SEH. No SE handler may reside in this image #define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800 // Do not bind this image. #define IMAGE_DLLCHARACTERISTICS_APPCONTAINER 0x1000 // Image should execute in an AppContainer #define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000 // Driver uses WDM model // 0x4000 // Reserved. #define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000 // end_winnt #define IMAGE_DLLCHARACTERISTICS_X86_THUNK 0x1000 // Image is a Wx86 Thunk DLL // Note: The Borland linker sets IMAGE_LIBRARY_xxx flags in DllCharacteristics // LoaderFlags Values #define IMAGE_LOADER_FLAGS_COMPLUS 0x00000001 // COM+ image #define IMAGE_LOADER_FLAGS_SYSTEM_GLOBAL 0x01000000 // Global subsections apply across TS sessions. // begin_winnt // Directory Entries #define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // Export Directory #define IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Import Directory #define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 // Resource Directory #define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 // Exception Directory #define IMAGE_DIRECTORY_ENTRY_SECURITY 4 // Security Directory #define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 // Base Relocation Table #define IMAGE_DIRECTORY_ENTRY_DEBUG 6 // Debug Directory // IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 // (X86 usage) #define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE 7 // Architecture Specific Data #define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 // RVA of GP #define IMAGE_DIRECTORY_ENTRY_TLS 9 // TLS Directory #define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 // Load Configuration Directory #define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 // Bound Import Directory in headers #define IMAGE_DIRECTORY_ENTRY_IAT 12 // Import Address Table #define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13 // Delay Load Import Descriptors #define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14 // COM Runtime descriptor #ifdef _MSC_VER // // Non-COFF Object file header // typedef struct ANON_OBJECT_HEADER { USHORT Sig1; // Must be IMAGE_FILE_MACHINE_UNKNOWN USHORT Sig2; // Must be 0xffff USHORT Version; // >= 1 (implies the CLSID field is present) USHORT Machine; ULONG TimeDateStamp; CLSID ClassID; // Used to invoke CoCreateInstance ULONG SizeOfData; // Size of data that follows the header } ANON_OBJECT_HEADER; #endif // // Section header format. // #define IMAGE_SIZEOF_SHORT_NAME 8 typedef struct _IMAGE_SECTION_HEADER { UCHAR Name[IMAGE_SIZEOF_SHORT_NAME]; union { ULONG PhysicalAddress; ULONG VirtualSize; } Misc; ULONG VirtualAddress; ULONG SizeOfRawData; ULONG PointerToRawData; ULONG PointerToRelocations; ULONG PointerToLinenumbers; USHORT NumberOfRelocations; USHORT NumberOfLinenumbers; ULONG Characteristics; } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER; #define IMAGE_SIZEOF_SECTION_HEADER 40 // // Section characteristics. // // IMAGE_SCN_TYPE_REG 0x00000000 // Reserved. // IMAGE_SCN_TYPE_DSECT 0x00000001 // Reserved. // IMAGE_SCN_TYPE_NOLOAD 0x00000002 // Reserved. // IMAGE_SCN_TYPE_GROUP 0x00000004 // Reserved. #define IMAGE_SCN_TYPE_NO_PAD 0x00000008 // Reserved. // IMAGE_SCN_TYPE_COPY 0x00000010 // Reserved. #define IMAGE_SCN_CNT_CODE 0x00000020 // Section contains code. #define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 // Section contains initialized data. #define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 // Section contains uninitialized data. #define IMAGE_SCN_LNK_OTHER 0x00000100 // Reserved. #define IMAGE_SCN_LNK_INFO 0x00000200 // Section contains comments or some other type of information. // IMAGE_SCN_TYPE_OVER 0x00000400 // Reserved. #define IMAGE_SCN_LNK_REMOVE 0x00000800 // Section contents will not become part of image. #define IMAGE_SCN_LNK_COMDAT 0x00001000 // Section contents comdat. // 0x00002000 // Reserved. // IMAGE_SCN_MEM_PROTECTED - Obsolete 0x00004000 #define IMAGE_SCN_NO_DEFER_SPEC_EXC 0x00004000 // Reset speculative exceptions handling bits in the TLB entries for this section. #define IMAGE_SCN_GPREL 0x00008000 // Section content can be accessed relative to GP #define IMAGE_SCN_MEM_FARDATA 0x00008000 // IMAGE_SCN_MEM_SYSHEAP - Obsolete 0x00010000 #define IMAGE_SCN_MEM_PURGEABLE 0x00020000 #define IMAGE_SCN_MEM_16BIT 0x00020000 #define IMAGE_SCN_MEM_LOCKED 0x00040000 #define IMAGE_SCN_MEM_PRELOAD 0x00080000 #define IMAGE_SCN_ALIGN_1BYTES 0x00100000 // #define IMAGE_SCN_ALIGN_2BYTES 0x00200000 // #define IMAGE_SCN_ALIGN_4BYTES 0x00300000 // #define IMAGE_SCN_ALIGN_8BYTES 0x00400000 // #define IMAGE_SCN_ALIGN_16BYTES 0x00500000 // Default alignment if no others are specified. #define IMAGE_SCN_ALIGN_32BYTES 0x00600000 // #define IMAGE_SCN_ALIGN_64BYTES 0x00700000 // #define IMAGE_SCN_ALIGN_128BYTES 0x00800000 // #define IMAGE_SCN_ALIGN_256BYTES 0x00900000 // #define IMAGE_SCN_ALIGN_512BYTES 0x00A00000 // #define IMAGE_SCN_ALIGN_1024BYTES 0x00B00000 // #define IMAGE_SCN_ALIGN_2048BYTES 0x00C00000 // #define IMAGE_SCN_ALIGN_4096BYTES 0x00D00000 // #define IMAGE_SCN_ALIGN_8192BYTES 0x00E00000 // // Unused 0x00F00000 #define IMAGE_SCN_ALIGN_MASK 0x00F00000 #define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000 // Section contains extended relocations. #define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 // Section can be discarded. #define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 // Section is not cachable. #define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 // Section is not pageable. #define IMAGE_SCN_MEM_SHARED 0x10000000 // Section is shareable. #define IMAGE_SCN_MEM_EXECUTE 0x20000000 // Section is executable. #define IMAGE_SCN_MEM_READ 0x40000000 // Section is readable. #define IMAGE_SCN_MEM_WRITE 0x80000000 // Section is writeable. // // TLS Chaacteristic Flags // #define IMAGE_SCN_SCALE_INDEX 0x00000001 // Tls index is scaled #ifndef _MAC #include "pshpack2.h" // Symbols, relocs, and linenumbers are 2 byte packed #endif // // Symbol format. // typedef struct _IMAGE_SYMBOL { union { UCHAR ShortName[8]; struct { ULONG Short; // if 0, use LongName ULONG Long; // offset into string table } Name; ULONG LongName[2]; // PUCHAR[2] } N; ULONG Value; SHORT SectionNumber; USHORT Type; UCHAR StorageClass; UCHAR NumberOfAuxSymbols; } IMAGE_SYMBOL; typedef IMAGE_SYMBOL UNALIGNED *PIMAGE_SYMBOL; #define IMAGE_SIZEOF_SYMBOL 18 // // Section values. // // Symbols have a section number of the section in which they are // defined. Otherwise, section numbers have the following meanings: // #define IMAGE_SYM_UNDEFINED (SHORT)0 // Symbol is undefined or is common. #define IMAGE_SYM_ABSOLUTE (SHORT)-1 // Symbol is an absolute value. #define IMAGE_SYM_DEBUG (SHORT)-2 // Symbol is a special debug item. #define IMAGE_SYM_SECTION_MAX 0xFEFF // Values 0xFF00-0xFFFF are special // // Type (fundamental) values. // #define IMAGE_SYM_TYPE_NULL 0x0000 // no type. #define IMAGE_SYM_TYPE_VOID 0x0001 // #define IMAGE_SYM_TYPE_CHAR 0x0002 // type character. #define IMAGE_SYM_TYPE_SHORT 0x0003 // type short integer. #define IMAGE_SYM_TYPE_INT 0x0004 // #define IMAGE_SYM_TYPE_LONG 0x0005 // #define IMAGE_SYM_TYPE_FLOAT 0x0006 // #define IMAGE_SYM_TYPE_DOUBLE 0x0007 // #define IMAGE_SYM_TYPE_STRUCT 0x0008 // #define IMAGE_SYM_TYPE_UNION 0x0009 // #define IMAGE_SYM_TYPE_ENUM 0x000A // enumeration. #define IMAGE_SYM_TYPE_MOE 0x000B // member of enumeration. #define IMAGE_SYM_TYPE_UCHAR 0x000C // #define IMAGE_SYM_TYPE_USHORT 0x000D // #define IMAGE_SYM_TYPE_UINT 0x000E // #define IMAGE_SYM_TYPE_ULONG 0x000F // #define IMAGE_SYM_TYPE_PCODE 0x8000 // // // Type (derived) values. // #define IMAGE_SYM_DTYPE_NULL 0 // no derived type. #define IMAGE_SYM_DTYPE_POINTER 1 // pointer. #define IMAGE_SYM_DTYPE_FUNCTION 2 // function. #define IMAGE_SYM_DTYPE_ARRAY 3 // array. // // Storage classes. // #define IMAGE_SYM_CLASS_END_OF_FUNCTION (UCHAR)-1 #define IMAGE_SYM_CLASS_NULL 0x0000 #define IMAGE_SYM_CLASS_AUTOMATIC 0x0001 #define IMAGE_SYM_CLASS_EXTERNAL 0x0002 #define IMAGE_SYM_CLASS_STATIC 0x0003 #define IMAGE_SYM_CLASS_REGISTER 0x0004 #define IMAGE_SYM_CLASS_EXTERNAL_DEF 0x0005 #define IMAGE_SYM_CLASS_LABEL 0x0006 #define IMAGE_SYM_CLASS_UNDEFINED_LABEL 0x0007 #define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 0x0008 #define IMAGE_SYM_CLASS_ARGUMENT 0x0009 #define IMAGE_SYM_CLASS_STRUCT_TAG 0x000A #define IMAGE_SYM_CLASS_MEMBER_OF_UNION 0x000B #define IMAGE_SYM_CLASS_UNION_TAG 0x000C #define IMAGE_SYM_CLASS_TYPE_DEFINITION 0x000D #define IMAGE_SYM_CLASS_UNDEFINED_STATIC 0x000E #define IMAGE_SYM_CLASS_ENUM_TAG 0x000F #define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 0x0010 #define IMAGE_SYM_CLASS_REGISTER_PARAM 0x0011 #define IMAGE_SYM_CLASS_BIT_FIELD 0x0012 #define IMAGE_SYM_CLASS_FAR_EXTERNAL 0x0044 // #define IMAGE_SYM_CLASS_BLOCK 0x0064 #define IMAGE_SYM_CLASS_FUNCTION 0x0065 #define IMAGE_SYM_CLASS_END_OF_STRUCT 0x0066 #define IMAGE_SYM_CLASS_FILE 0x0067 // new #define IMAGE_SYM_CLASS_SECTION 0x0068 #define IMAGE_SYM_CLASS_WEAK_EXTERNAL 0x0069 #define IMAGE_SYM_CLASS_CLR_TOKEN 0x006B // type packing constants #define N_BTMASK 0x000F #define N_TMASK 0x0030 #define N_TMASK1 0x00C0 #define N_TMASK2 0x00F0 #define N_BTSHFT 4 #define N_TSHIFT 2 // MACROS // Basic Type of x #define BTYPE(x) ((x) & N_BTMASK) // Is x a pointer? #ifndef ISPTR #define ISPTR(x) (((x) & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT)) #endif // Is x a function? #ifndef ISFCN #define ISFCN(x) (((x) & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT)) #endif // Is x an array? #ifndef ISARY #define ISARY(x) (((x) & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT)) #endif // Is x a structure, union, or enumeration TAG? #ifndef ISTAG #define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG || (x)==IMAGE_SYM_CLASS_UNION_TAG || (x)==IMAGE_SYM_CLASS_ENUM_TAG) #endif #ifndef INCREF #define INCREF(x) ((((x)&~N_BTMASK)<>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK)) #endif // // Auxiliary entry format. // typedef union _IMAGE_AUX_SYMBOL { struct { ULONG TagIndex; // struct, union, or enum tag index union { struct { USHORT Linenumber; // declaration line number USHORT Size; // size of struct, union, or enum } LnSz; ULONG TotalSize; } Misc; union { struct { // if ISFCN, tag, or .bb ULONG PointerToLinenumber; ULONG PointerToNextFunction; } Function; struct { // if ISARY, up to 4 dimen. USHORT Dimension[4]; } Array; } FcnAry; USHORT TvIndex; // tv index } Sym; struct { UCHAR Name[IMAGE_SIZEOF_SYMBOL]; } File; struct { ULONG Length; // section length USHORT NumberOfRelocations; // number of relocation entries USHORT NumberOfLinenumbers; // number of line numbers ULONG CheckSum; // checksum for communal SHORT Number; // section number to associate with UCHAR Selection; // communal selection type } Section; } IMAGE_AUX_SYMBOL; typedef IMAGE_AUX_SYMBOL UNALIGNED *PIMAGE_AUX_SYMBOL; #define IMAGE_SIZEOF_AUX_SYMBOL 18 typedef enum IMAGE_AUX_SYMBOL_TYPE { IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1, } IMAGE_AUX_SYMBOL_TYPE; #include "pshpack2.h" typedef struct IMAGE_AUX_SYMBOL_TOKEN_DEF { UCHAR bAuxType; // IMAGE_AUX_SYMBOL_TYPE UCHAR bReserved; // Must be 0 ULONG SymbolTableIndex; UCHAR rgbReserved[12]; // Must be 0 } IMAGE_AUX_SYMBOL_TOKEN_DEF; typedef IMAGE_AUX_SYMBOL_TOKEN_DEF UNALIGNED *PIMAGE_AUX_SYMBOL_TOKEN_DEF; #include "poppack.h" // // Communal selection types. // #define IMAGE_COMDAT_SELECT_NODUPLICATES 1 #define IMAGE_COMDAT_SELECT_ANY 2 #define IMAGE_COMDAT_SELECT_SAME_SIZE 3 #define IMAGE_COMDAT_SELECT_EXACT_MATCH 4 #define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5 #define IMAGE_COMDAT_SELECT_LARGEST 6 #define IMAGE_COMDAT_SELECT_NEWEST 7 #define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1 #define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2 #define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3 // // Relocation format. // typedef struct _IMAGE_RELOCATION { union { ULONG VirtualAddress; ULONG RelocCount; // Set to the real count when IMAGE_SCN_LNK_NRELOC_OVFL is set }; ULONG SymbolTableIndex; USHORT Type; } IMAGE_RELOCATION; typedef IMAGE_RELOCATION UNALIGNED *PIMAGE_RELOCATION; #define IMAGE_SIZEOF_RELOCATION 10 // // I386 relocation types. // #define IMAGE_REL_I386_ABSOLUTE 0x0000 // Reference is absolute, no relocation is necessary #define IMAGE_REL_I386_DIR16 0x0001 // Direct 16-bit reference to the symbols virtual address #define IMAGE_REL_I386_REL16 0x0002 // PC-relative 16-bit reference to the symbols virtual address #define IMAGE_REL_I386_DIR32 0x0006 // Direct 32-bit reference to the symbols virtual address #define IMAGE_REL_I386_DIR32NB 0x0007 // Direct 32-bit reference to the symbols virtual address, base not included #define IMAGE_REL_I386_SEG12 0x0009 // Direct 16-bit reference to the segment-selector bits of a 32-bit virtual address #define IMAGE_REL_I386_SECTION 0x000A #define IMAGE_REL_I386_SECREL 0x000B #define IMAGE_REL_I386_TOKEN 0x000C // clr token #define IMAGE_REL_I386_SECREL7 0x000D // 7 bit offset from base of section containing target #define IMAGE_REL_I386_REL32 0x0014 // PC-relative 32-bit reference to the symbols virtual address // // MIPS relocation types. // #define IMAGE_REL_MIPS_ABSOLUTE 0x0000 // Reference is absolute, no relocation is necessary #define IMAGE_REL_MIPS_REFHALF 0x0001 #define IMAGE_REL_MIPS_REFWORD 0x0002 #define IMAGE_REL_MIPS_JMPADDR 0x0003 #define IMAGE_REL_MIPS_REFHI 0x0004 #define IMAGE_REL_MIPS_REFLO 0x0005 #define IMAGE_REL_MIPS_GPREL 0x0006 #define IMAGE_REL_MIPS_LITERAL 0x0007 #define IMAGE_REL_MIPS_SECTION 0x000A #define IMAGE_REL_MIPS_SECREL 0x000B #define IMAGE_REL_MIPS_SECRELLO 0x000C // Low 16-bit section relative referemce (used for >32k TLS) #define IMAGE_REL_MIPS_SECRELHI 0x000D // High 16-bit section relative reference (used for >32k TLS) #define IMAGE_REL_MIPS_TOKEN 0x000E // clr token #define IMAGE_REL_MIPS_JMPADDR16 0x0010 #define IMAGE_REL_MIPS_REFWORDNB 0x0022 #define IMAGE_REL_MIPS_PAIR 0x0025 // // Alpha Relocation types. // #define IMAGE_REL_ALPHA_ABSOLUTE 0x0000 #define IMAGE_REL_ALPHA_REFLONG 0x0001 #define IMAGE_REL_ALPHA_REFQUAD 0x0002 #define IMAGE_REL_ALPHA_GPREL32 0x0003 #define IMAGE_REL_ALPHA_LITERAL 0x0004 #define IMAGE_REL_ALPHA_LITUSE 0x0005 #define IMAGE_REL_ALPHA_GPDISP 0x0006 #define IMAGE_REL_ALPHA_BRADDR 0x0007 #define IMAGE_REL_ALPHA_HINT 0x0008 #define IMAGE_REL_ALPHA_INLINE_REFLONG 0x0009 #define IMAGE_REL_ALPHA_REFHI 0x000A #define IMAGE_REL_ALPHA_REFLO 0x000B #define IMAGE_REL_ALPHA_PAIR 0x000C #define IMAGE_REL_ALPHA_MATCH 0x000D #define IMAGE_REL_ALPHA_SECTION 0x000E #define IMAGE_REL_ALPHA_SECREL 0x000F #define IMAGE_REL_ALPHA_REFLONGNB 0x0010 #define IMAGE_REL_ALPHA_SECRELLO 0x0011 // Low 16-bit section relative reference #define IMAGE_REL_ALPHA_SECRELHI 0x0012 // High 16-bit section relative reference #define IMAGE_REL_ALPHA_REFQ3 0x0013 // High 16 bits of 48 bit reference #define IMAGE_REL_ALPHA_REFQ2 0x0014 // Middle 16 bits of 48 bit reference #define IMAGE_REL_ALPHA_REFQ1 0x0015 // Low 16 bits of 48 bit reference #define IMAGE_REL_ALPHA_GPRELLO 0x0016 // Low 16-bit GP relative reference #define IMAGE_REL_ALPHA_GPRELHI 0x0017 // High 16-bit GP relative reference // // IBM PowerPC relocation types. // #define IMAGE_REL_PPC_ABSOLUTE 0x0000 // NOP #define IMAGE_REL_PPC_ADDR64 0x0001 // 64-bit address #define IMAGE_REL_PPC_ADDR32 0x0002 // 32-bit address #define IMAGE_REL_PPC_ADDR24 0x0003 // 26-bit address, shifted left 2 (branch absolute) #define IMAGE_REL_PPC_ADDR16 0x0004 // 16-bit address #define IMAGE_REL_PPC_ADDR14 0x0005 // 16-bit address, shifted left 2 (load doubleword) #define IMAGE_REL_PPC_REL24 0x0006 // 26-bit PC-relative offset, shifted left 2 (branch relative) #define IMAGE_REL_PPC_REL14 0x0007 // 16-bit PC-relative offset, shifted left 2 (br cond relative) #define IMAGE_REL_PPC_TOCREL16 0x0008 // 16-bit offset from TOC base #define IMAGE_REL_PPC_TOCREL14 0x0009 // 16-bit offset from TOC base, shifted left 2 (load doubleword) #define IMAGE_REL_PPC_ADDR32NB 0x000A // 32-bit addr w/o image base #define IMAGE_REL_PPC_SECREL 0x000B // va of containing section (as in an image sectionhdr) #define IMAGE_REL_PPC_SECTION 0x000C // sectionheader number #define IMAGE_REL_PPC_IFGLUE 0x000D // substitute TOC restore instruction iff symbol is glue code #define IMAGE_REL_PPC_IMGLUE 0x000E // symbol is glue code; virtual address is TOC restore instruction #define IMAGE_REL_PPC_SECREL16 0x000F // va of containing section (limited to 16 bits) #define IMAGE_REL_PPC_REFHI 0x0010 #define IMAGE_REL_PPC_REFLO 0x0011 #define IMAGE_REL_PPC_PAIR 0x0012 #define IMAGE_REL_PPC_SECRELLO 0x0013 // Low 16-bit section relative reference (used for >32k TLS) #define IMAGE_REL_PPC_SECRELHI 0x0014 // High 16-bit section relative reference (used for >32k TLS) #define IMAGE_REL_PPC_GPREL 0x0015 #define IMAGE_REL_PPC_TOKEN 0x0016 // clr token #define IMAGE_REL_PPC_TYPEMASK 0x00FF // mask to isolate above values in IMAGE_RELOCATION.Type // Flag bits in IMAGE_RELOCATION.TYPE #define IMAGE_REL_PPC_NEG 0x0100 // subtract reloc value rather than adding it #define IMAGE_REL_PPC_BRTAKEN 0x0200 // fix branch prediction bit to predict branch taken #define IMAGE_REL_PPC_BRNTAKEN 0x0400 // fix branch prediction bit to predict branch not taken #define IMAGE_REL_PPC_TOCDEFN 0x0800 // toc slot defined in file (or, data in toc) // // Hitachi SH3 relocation types. // #define IMAGE_REL_SH3_ABSOLUTE 0x0000 // No relocation #define IMAGE_REL_SH3_DIRECT16 0x0001 // 16 bit direct #define IMAGE_REL_SH3_DIRECT32 0x0002 // 32 bit direct #define IMAGE_REL_SH3_DIRECT8 0x0003 // 8 bit direct, -128..255 #define IMAGE_REL_SH3_DIRECT8_WORD 0x0004 // 8 bit direct .W (0 ext.) #define IMAGE_REL_SH3_DIRECT8_LONG 0x0005 // 8 bit direct .L (0 ext.) #define IMAGE_REL_SH3_DIRECT4 0x0006 // 4 bit direct (0 ext.) #define IMAGE_REL_SH3_DIRECT4_WORD 0x0007 // 4 bit direct .W (0 ext.) #define IMAGE_REL_SH3_DIRECT4_LONG 0x0008 // 4 bit direct .L (0 ext.) #define IMAGE_REL_SH3_PCREL8_WORD 0x0009 // 8 bit PC relative .W #define IMAGE_REL_SH3_PCREL8_LONG 0x000A // 8 bit PC relative .L #define IMAGE_REL_SH3_PCREL12_WORD 0x000B // 12 LSB PC relative .W #define IMAGE_REL_SH3_STARTOF_SECTION 0x000C // Start of EXE section #define IMAGE_REL_SH3_SIZEOF_SECTION 0x000D // Size of EXE section #define IMAGE_REL_SH3_SECTION 0x000E // Section table index #define IMAGE_REL_SH3_SECREL 0x000F // Offset within section #define IMAGE_REL_SH3_DIRECT32_NB 0x0010 // 32 bit direct not based #define IMAGE_REL_SH3_GPREL4_LONG 0x0011 // GP-relative addressing #define IMAGE_REL_SH3_TOKEN 0x0012 // clr token #define IMAGE_REL_ARM_ABSOLUTE 0x0000 // No relocation required #define IMAGE_REL_ARM_ADDR32 0x0001 // 32 bit address #define IMAGE_REL_ARM_ADDR32NB 0x0002 // 32 bit address w/o image base #define IMAGE_REL_ARM_BRANCH24 0x0003 // 24 bit offset << 2 & sign ext. #define IMAGE_REL_ARM_BRANCH11 0x0004 // Thumb: 2 11 bit offsets #define IMAGE_REL_ARM_TOKEN 0x0005 // clr token #define IMAGE_REL_ARM_GPREL12 0x0006 // GP-relative addressing (ARM) #define IMAGE_REL_ARM_GPREL7 0x0007 // GP-relative addressing (Thumb) #define IMAGE_REL_ARM_BLX24 0x0008 #define IMAGE_REL_ARM_BLX11 0x0009 #define IMAGE_REL_ARM_SECTION 0x000E // Section table index #define IMAGE_REL_ARM_SECREL 0x000F // Offset within section // // ARM64 relocation types // #define IMAGE_REL_ARM64_ABSOLUTE 0x0000 #define IMAGE_REL_ARM64_ADDR32 0x0001 #define IMAGE_REL_ARM64_ADDR32NB 0x0002 #define IMAGE_REL_ARM64_BRANCH26 0x0003 #define IMAGE_REL_ARM64_PAGEBASE_REL21 0x0004 #define IMAGE_REL_ARM64_REL21 0x0005 #define IMAGE_REL_ARM64_PAGEOFFSET_12A 0x0006 #define IMAGE_REL_ARM64_PAGEOFFSET_12L 0x0007 #define IMAGE_REL_ARM64_SECREL 0x0008 #define IMAGE_REL_ARM64_SECREL_LOW12A 0x0009 #define IMAGE_REL_ARM64_SECREL_HIGH12A 0x000A #define IMAGE_REL_ARM64_SECREL_LOW12L 0x000B #define IMAGE_REL_ARM64_TOKEN 0x000C #define IMAGE_REL_ARM64_SECTION 0x000D #define IMAGE_REL_ARM64_ADDR64 0x000E #define IMAGE_REL_AM_ABSOLUTE 0x0000 #define IMAGE_REL_AM_ADDR32 0x0001 #define IMAGE_REL_AM_ADDR32NB 0x0002 #define IMAGE_REL_AM_CALL32 0x0003 #define IMAGE_REL_AM_FUNCINFO 0x0004 #define IMAGE_REL_AM_REL32_1 0x0005 #define IMAGE_REL_AM_REL32_2 0x0006 #define IMAGE_REL_AM_SECREL 0x0007 #define IMAGE_REL_AM_SECTION 0x0008 #define IMAGE_REL_AM_TOKEN 0x0009 // // X86-64 relocations // #define IMAGE_REL_AMD64_ABSOLUTE 0x0000 // Reference is absolute, no relocation is necessary #define IMAGE_REL_AMD64_ADDR64 0x0001 // 64-bit address (VA). #define IMAGE_REL_AMD64_ADDR32 0x0002 // 32-bit address (VA). #define IMAGE_REL_AMD64_ADDR32NB 0x0003 // 32-bit address w/o image base (RVA). #define IMAGE_REL_AMD64_REL32 0x0004 // 32-bit relative address from byte following reloc #define IMAGE_REL_AMD64_REL32_1 0x0005 // 32-bit relative address from byte distance 1 from reloc #define IMAGE_REL_AMD64_REL32_2 0x0006 // 32-bit relative address from byte distance 2 from reloc #define IMAGE_REL_AMD64_REL32_3 0x0007 // 32-bit relative address from byte distance 3 from reloc #define IMAGE_REL_AMD64_REL32_4 0x0008 // 32-bit relative address from byte distance 4 from reloc #define IMAGE_REL_AMD64_REL32_5 0x0009 // 32-bit relative address from byte distance 5 from reloc #define IMAGE_REL_AMD64_SECTION 0x000A // Section index #define IMAGE_REL_AMD64_SECREL 0x000B // 32 bit offset from base of section containing target #define IMAGE_REL_AMD64_SECREL7 0x000C // 7 bit unsigned offset from base of section containing target #define IMAGE_REL_AMD64_TOKEN 0x000D // 32 bit metadata token // // IA64 relocation types. // #define IMAGE_REL_IA64_ABSOLUTE 0x0000 #define IMAGE_REL_IA64_IMM14 0x0001 #define IMAGE_REL_IA64_IMM22 0x0002 #define IMAGE_REL_IA64_IMM64 0x0003 #define IMAGE_REL_IA64_DIR32 0x0004 #define IMAGE_REL_IA64_DIR64 0x0005 #define IMAGE_REL_IA64_PCREL21B 0x0006 #define IMAGE_REL_IA64_PCREL21M 0x0007 #define IMAGE_REL_IA64_PCREL21F 0x0008 #define IMAGE_REL_IA64_GPREL22 0x0009 #define IMAGE_REL_IA64_LTOFF22 0x000A #define IMAGE_REL_IA64_SECTION 0x000B #define IMAGE_REL_IA64_SECREL22 0x000C #define IMAGE_REL_IA64_SECREL64I 0x000D #define IMAGE_REL_IA64_SECREL32 0x000E // #define IMAGE_REL_IA64_DIR32NB 0x0010 #define IMAGE_REL_IA64_SREL14 0x0011 #define IMAGE_REL_IA64_SREL22 0x0012 #define IMAGE_REL_IA64_SREL32 0x0013 #define IMAGE_REL_IA64_UREL32 0x0014 #define IMAGE_REL_IA64_PCREL60X 0x0015 // This is always a BRL and never converted #define IMAGE_REL_IA64_PCREL60B 0x0016 // If possible, convert to MBB bundle with NOP.B in slot 1 #define IMAGE_REL_IA64_PCREL60F 0x0017 // If possible, convert to MFB bundle with NOP.F in slot 1 #define IMAGE_REL_IA64_PCREL60I 0x0018 // If possible, convert to MIB bundle with NOP.I in slot 1 #define IMAGE_REL_IA64_PCREL60M 0x0019 // If possible, convert to MMB bundle with NOP.M in slot 1 #define IMAGE_REL_IA64_IMMGPREL64 0x001A #define IMAGE_REL_IA64_TOKEN 0x001B // clr token #define IMAGE_REL_IA64_GPREL32 0x001C #define IMAGE_REL_IA64_ADDEND 0x001F // // CEF relocation types. // #define IMAGE_REL_CEF_ABSOLUTE 0x0000 // Reference is absolute, no relocation is necessary #define IMAGE_REL_CEF_ADDR32 0x0001 // 32-bit address (VA). #define IMAGE_REL_CEF_ADDR64 0x0002 // 64-bit address (VA). #define IMAGE_REL_CEF_ADDR32NB 0x0003 // 32-bit address w/o image base (RVA). #define IMAGE_REL_CEF_SECTION 0x0004 // Section index #define IMAGE_REL_CEF_SECREL 0x0005 // 32 bit offset from base of section containing target #define IMAGE_REL_CEF_TOKEN 0x0006 // 32 bit metadata token // // clr relocation types. // #define IMAGE_REL_CEE_ABSOLUTE 0x0000 // Reference is absolute, no relocation is necessary #define IMAGE_REL_CEE_ADDR32 0x0001 // 32-bit address (VA). #define IMAGE_REL_CEE_ADDR64 0x0002 // 64-bit address (VA). #define IMAGE_REL_CEE_ADDR32NB 0x0003 // 32-bit address w/o image base (RVA). #define IMAGE_REL_CEE_SECTION 0x0004 // Section index #define IMAGE_REL_CEE_SECREL 0x0005 // 32 bit offset from base of section containing target #define IMAGE_REL_CEE_TOKEN 0x0006 // 32 bit metadata token #define IMAGE_REL_M32R_ABSOLUTE 0x0000 // No relocation required #define IMAGE_REL_M32R_ADDR32 0x0001 // 32 bit address #define IMAGE_REL_M32R_ADDR32NB 0x0002 // 32 bit address w/o image base #define IMAGE_REL_M32R_ADDR24 0x0003 // 24 bit address #define IMAGE_REL_M32R_GPREL16 0x0004 // GP relative addressing #define IMAGE_REL_M32R_PCREL24 0x0005 // 24 bit offset << 2 & sign ext. #define IMAGE_REL_M32R_PCREL16 0x0006 // 16 bit offset << 2 & sign ext. #define IMAGE_REL_M32R_PCREL8 0x0007 // 8 bit offset << 2 & sign ext. #define IMAGE_REL_M32R_REFHALF 0x0008 // 16 MSBs #define IMAGE_REL_M32R_REFHI 0x0009 // 16 MSBs; adj for LSB sign ext. #define IMAGE_REL_M32R_REFLO 0x000A // 16 LSBs #define IMAGE_REL_M32R_PAIR 0x000B // Link HI and LO #define IMAGE_REL_M32R_SECTION 0x000C // Section table index #define IMAGE_REL_M32R_SECREL32 0x000D // 32 bit section relative reference #define IMAGE_REL_M32R_TOKEN 0x000E // clr token #define EXT_IMM64(Value, Address, Size, InstPos, ValPos) /* Intel-IA64-Filler */ \ Value |= (((ULONGLONG)((*(Address) >> InstPos) & (((ULONGLONG)1 << Size) - 1))) << ValPos) // Intel-IA64-Filler #define INS_IMM64(Value, Address, Size, InstPos, ValPos) /* Intel-IA64-Filler */\ *(PULONG)Address = (*(PULONG)Address & ~(((1 << Size) - 1) << InstPos)) | /* Intel-IA64-Filler */\ ((ULONG)((((ULONGLONG)Value >> ValPos) & (((ULONGLONG)1 << Size) - 1))) << InstPos) // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM7B_INST_WORD_X 3 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM7B_SIZE_X 7 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM7B_INST_WORD_POS_X 4 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM7B_VAL_POS_X 0 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM9D_INST_WORD_X 3 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM9D_SIZE_X 9 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM9D_INST_WORD_POS_X 18 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM9D_VAL_POS_X 7 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM5C_INST_WORD_X 3 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM5C_SIZE_X 5 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM5C_INST_WORD_POS_X 13 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM5C_VAL_POS_X 16 // Intel-IA64-Filler #define EMARCH_ENC_I17_IC_INST_WORD_X 3 // Intel-IA64-Filler #define EMARCH_ENC_I17_IC_SIZE_X 1 // Intel-IA64-Filler #define EMARCH_ENC_I17_IC_INST_WORD_POS_X 12 // Intel-IA64-Filler #define EMARCH_ENC_I17_IC_VAL_POS_X 21 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM41a_INST_WORD_X 1 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM41a_SIZE_X 10 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM41a_INST_WORD_POS_X 14 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM41a_VAL_POS_X 22 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM41b_INST_WORD_X 1 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM41b_SIZE_X 8 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM41b_INST_WORD_POS_X 24 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM41b_VAL_POS_X 32 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM41c_INST_WORD_X 2 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM41c_SIZE_X 23 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM41c_INST_WORD_POS_X 0 // Intel-IA64-Filler #define EMARCH_ENC_I17_IMM41c_VAL_POS_X 40 // Intel-IA64-Filler #define EMARCH_ENC_I17_SIGN_INST_WORD_X 3 // Intel-IA64-Filler #define EMARCH_ENC_I17_SIGN_SIZE_X 1 // Intel-IA64-Filler #define EMARCH_ENC_I17_SIGN_INST_WORD_POS_X 27 // Intel-IA64-Filler #define EMARCH_ENC_I17_SIGN_VAL_POS_X 63 // Intel-IA64-Filler // // Line number format. // typedef struct _IMAGE_LINENUMBER { union { ULONG SymbolTableIndex; // Symbol table index of function name if Linenumber is 0. ULONG VirtualAddress; // Virtual address of line number. } Type; USHORT Linenumber; // Line number. } IMAGE_LINENUMBER; typedef IMAGE_LINENUMBER UNALIGNED *PIMAGE_LINENUMBER; #define IMAGE_SIZEOF_LINENUMBER 6 #ifndef _MAC #include "poppack.h" // Back to 4 byte packing #endif // // Based relocation format. // typedef struct _IMAGE_BASE_RELOCATION { ULONG VirtualAddress; ULONG SizeOfBlock; // USHORT TypeOffset[1]; } IMAGE_BASE_RELOCATION; typedef IMAGE_BASE_RELOCATION UNALIGNED * PIMAGE_BASE_RELOCATION; #define IMAGE_SIZEOF_BASE_RELOCATION 8 // // Based relocation types. // #define IMAGE_REL_BASED_ABSOLUTE 0 #define IMAGE_REL_BASED_HIGH 1 #define IMAGE_REL_BASED_LOW 2 #define IMAGE_REL_BASED_HIGHLOW 3 #define IMAGE_REL_BASED_HIGHADJ 4 #define IMAGE_REL_BASED_MACHINE_SPECIFIC_5 5 #define IMAGE_REL_BASED_RESERVED 6 #define IMAGE_REL_BASED_MACHINE_SPECIFIC_7 7 #define IMAGE_REL_BASED_MACHINE_SPECIFIC_8 8 #define IMAGE_REL_BASED_MACHINE_SPECIFIC_9 9 #define IMAGE_REL_BASED_DIR64 10 // // Platform-specific based relocation types. // #define IMAGE_REL_BASED_IA64_IMM64 9 #define IMAGE_REL_BASED_MIPS_JMPADDR 5 #define IMAGE_REL_BASED_MIPS_JMPADDR16 9 #define IMAGE_REL_BASED_ARM_MOV32 5 #define IMAGE_REL_BASED_THUMB_MOV32 7 // // Archive format. // #define IMAGE_ARCHIVE_START_SIZE 8 #define IMAGE_ARCHIVE_START "!\n" #define IMAGE_ARCHIVE_END "`\n" #define IMAGE_ARCHIVE_PAD "\n" #define IMAGE_ARCHIVE_LINKER_MEMBER "/ " #define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// " typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER { UCHAR Name[16]; // File member name - `/' terminated. UCHAR Date[12]; // File member date - decimal. UCHAR UserID[6]; // File member user id - decimal. UCHAR GroupID[6]; // File member group id - decimal. UCHAR Mode[8]; // File member mode - octal. UCHAR Size[10]; // File member size - decimal. UCHAR EndHeader[2]; // String to end header. } IMAGE_ARCHIVE_MEMBER_HEADER, *PIMAGE_ARCHIVE_MEMBER_HEADER; #define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60 // // DLL support. // // // Export Format // typedef struct _IMAGE_EXPORT_DIRECTORY { ULONG Characteristics; ULONG TimeDateStamp; USHORT MajorVersion; USHORT MinorVersion; ULONG Name; ULONG Base; ULONG NumberOfFunctions; ULONG NumberOfNames; ULONG AddressOfFunctions; // RVA from base of image ULONG AddressOfNames; // RVA from base of image ULONG AddressOfNameOrdinals; // RVA from base of image } IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY; // // Import Format // typedef struct _IMAGE_IMPORT_BY_NAME { USHORT Hint; UCHAR Name[1]; } IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME; #include "pshpack8.h" // Use align 8 for the 64-bit IAT. typedef struct _IMAGE_THUNK_DATA64 { union { ULONGLONG ForwarderString; // PUCHAR ULONGLONG Function; // PULONG ULONGLONG Ordinal; ULONGLONG AddressOfData; // PIMAGE_IMPORT_BY_NAME } u1; } IMAGE_THUNK_DATA64; typedef IMAGE_THUNK_DATA64 * PIMAGE_THUNK_DATA64; #include "poppack.h" // Back to 4 byte packing typedef struct _IMAGE_THUNK_DATA32 { union { ULONG ForwarderString; // PUCHAR ULONG Function; // PULONG ULONG Ordinal; ULONG AddressOfData; // PIMAGE_IMPORT_BY_NAME } u1; } IMAGE_THUNK_DATA32; typedef IMAGE_THUNK_DATA32 * PIMAGE_THUNK_DATA32; #define IMAGE_ORDINAL_FLAG64 0x8000000000000000 #define IMAGE_ORDINAL_FLAG32 0x80000000 #define IMAGE_ORDINAL64(Ordinal) (Ordinal & 0xffff) #define IMAGE_ORDINAL32(Ordinal) (Ordinal & 0xffff) #define IMAGE_SNAP_BY_ORDINAL64(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG64) != 0) #define IMAGE_SNAP_BY_ORDINAL32(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG32) != 0) // // Thread Local Storage // #ifdef _MSC_VER typedef VOID (NTAPI *PIMAGE_TLS_CALLBACK) ( PVOID DllHandle, ULONG Reason, PVOID Reserved ); #endif typedef struct _IMAGE_TLS_DIRECTORY64 { ULONGLONG StartAddressOfRawData; ULONGLONG EndAddressOfRawData; ULONGLONG AddressOfIndex; // PULONG ULONGLONG AddressOfCallBacks; // PIMAGE_TLS_CALLBACK *; ULONG SizeOfZeroFill; ULONG Characteristics; } IMAGE_TLS_DIRECTORY64; typedef IMAGE_TLS_DIRECTORY64 * PIMAGE_TLS_DIRECTORY64; typedef struct _IMAGE_TLS_DIRECTORY32 { ULONG StartAddressOfRawData; ULONG EndAddressOfRawData; ULONG AddressOfIndex; // PULONG ULONG AddressOfCallBacks; // PIMAGE_TLS_CALLBACK * ULONG SizeOfZeroFill; ULONG Characteristics; } IMAGE_TLS_DIRECTORY32; typedef IMAGE_TLS_DIRECTORY32 * PIMAGE_TLS_DIRECTORY32; #ifdef HOST_64BIT #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG64 #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL64(Ordinal) typedef IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA; typedef PIMAGE_THUNK_DATA64 PIMAGE_THUNK_DATA; #define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL64(Ordinal) typedef IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY; typedef PIMAGE_TLS_DIRECTORY64 PIMAGE_TLS_DIRECTORY; #else #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG32 #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL32(Ordinal) typedef IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA; typedef PIMAGE_THUNK_DATA32 PIMAGE_THUNK_DATA; #define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL32(Ordinal) typedef IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY; typedef PIMAGE_TLS_DIRECTORY32 PIMAGE_TLS_DIRECTORY; #endif typedef struct _IMAGE_IMPORT_DESCRIPTOR { union { ULONG Characteristics; // 0 for terminating null import descriptor ULONG OriginalFirstThunk; // RVA to original unbound IAT (PIMAGE_THUNK_DATA) } u; ULONG TimeDateStamp; // 0 if not bound, // -1 if bound, and real date\time stamp // in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND) // O.W. date/time stamp of DLL bound to (Old BIND) ULONG ForwarderChain; // -1 if no forwarders ULONG Name; ULONG FirstThunk; // RVA to IAT (if bound this IAT has actual addresses) } IMAGE_IMPORT_DESCRIPTOR; typedef IMAGE_IMPORT_DESCRIPTOR UNALIGNED *PIMAGE_IMPORT_DESCRIPTOR; // // New format import descriptors pointed to by DataDirectory[ IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT ] // typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR { ULONG TimeDateStamp; USHORT OffsetModuleName; USHORT NumberOfModuleForwarderRefs; // Array of zero or more IMAGE_BOUND_FORWARDER_REF follows } IMAGE_BOUND_IMPORT_DESCRIPTOR, *PIMAGE_BOUND_IMPORT_DESCRIPTOR; typedef struct _IMAGE_BOUND_FORWARDER_REF { ULONG TimeDateStamp; USHORT OffsetModuleName; USHORT Reserved; } IMAGE_BOUND_FORWARDER_REF, *PIMAGE_BOUND_FORWARDER_REF; // // Resource Format. // // // Resource directory consists of two counts, following by a variable length // array of directory entries. The first count is the number of entries at // beginning of the array that have actual names associated with each entry. // The entries are in ascending order, case insensitive strings. The second // count is the number of entries that immediately follow the named entries. // This second count identifies the number of entries that have 16-bit integer // Ids as their name. These entries are also sorted in ascending order. // // This structure allows fast lookup by either name or number, but for any // given resource entry only one form of lookup is supported, not both. // This is consistant with the syntax of the .RC file and the .RES file. // typedef struct _IMAGE_RESOURCE_DIRECTORY { ULONG Characteristics; ULONG TimeDateStamp; USHORT MajorVersion; USHORT MinorVersion; USHORT NumberOfNamedEntries; USHORT NumberOfIdEntries; // IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[]; } IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY; #define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000 #define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000 // // Each directory contains the 32-bit Name of the entry and an offset, // relative to the beginning of the resource directory of the data associated // with this directory entry. If the name of the entry is an actual text // string instead of an integer Id, then the high order bit of the name field // is set to one and the low order 31-bits are an offset, relative to the // beginning of the resource directory of the string, which is of type // IMAGE_RESOURCE_DIRECTORY_STRING. Otherwise the high bit is clear and the // low-order 16-bits are the integer Id that identify this resource directory // entry. If the directory entry is yet another resource directory (i.e. a // subdirectory), then the high order bit of the offset field will be // set to indicate this. Otherwise the high bit is clear and the offset // field points to a resource data entry. // typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY { union { struct { ULONG NameOffset:31; ULONG NameIsString:1; }; ULONG Name; USHORT Id; }; union { ULONG OffsetToData; struct { ULONG OffsetToDirectory:31; ULONG DataIsDirectory:1; }; }; } IMAGE_RESOURCE_DIRECTORY_ENTRY, *PIMAGE_RESOURCE_DIRECTORY_ENTRY; // // For resource directory entries that have actual string names, the Name // field of the directory entry points to an object of the following type. // All of these string objects are stored together after the last resource // directory entry and before the first resource data object. This minimizes // the impact of these variable length objects on the alignment of the fixed // size directory entry objects. // typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING { USHORT Length; CHAR NameString[ 1 ]; } IMAGE_RESOURCE_DIRECTORY_STRING, *PIMAGE_RESOURCE_DIRECTORY_STRING; typedef struct _IMAGE_RESOURCE_DIR_STRING_U { USHORT Length; WCHAR NameString[ 1 ]; } IMAGE_RESOURCE_DIR_STRING_U, *PIMAGE_RESOURCE_DIR_STRING_U; // // Each resource data entry describes a leaf node in the resource directory // tree. It contains an offset, relative to the beginning of the resource // directory of the data for the resource, a size field that gives the number // of bytes of data at that offset, a CodePage that should be used when // decoding code point values within the resource data. Typically for new // applications the code page would be the unicode code page. // typedef struct _IMAGE_RESOURCE_DATA_ENTRY { ULONG OffsetToData; ULONG Size; ULONG CodePage; ULONG Reserved; } IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY; // // Load Configuration Directory Entry // typedef struct { ULONG Characteristics; ULONG TimeDateStamp; USHORT MajorVersion; USHORT MinorVersion; ULONG GlobalFlagsClear; ULONG GlobalFlagsSet; ULONG CriticalSectionDefaultTimeout; ULONG DeCommitFreeBlockThreshold; ULONG DeCommitTotalFreeThreshold; ULONG LockPrefixTable; // VA ULONG MaximumAllocationSize; ULONG VirtualMemoryThreshold; ULONG ProcessHeapFlags; ULONG ProcessAffinityMask; USHORT CSDVersion; USHORT Reserved1; ULONG EditList; // VA ULONG Reserved[ 1 ]; } IMAGE_LOAD_CONFIG_DIRECTORY32, *PIMAGE_LOAD_CONFIG_DIRECTORY32; typedef struct { ULONG Characteristics; ULONG TimeDateStamp; USHORT MajorVersion; USHORT MinorVersion; ULONG GlobalFlagsClear; ULONG GlobalFlagsSet; ULONG CriticalSectionDefaultTimeout; ULONGLONG DeCommitFreeBlockThreshold; ULONGLONG DeCommitTotalFreeThreshold; ULONGLONG LockPrefixTable; // VA ULONGLONG MaximumAllocationSize; ULONGLONG VirtualMemoryThreshold; ULONGLONG ProcessAffinityMask; ULONG ProcessHeapFlags; USHORT CSDVersion; USHORT Reserved1; ULONGLONG EditList; // VA ULONG Reserved[ 2 ]; } IMAGE_LOAD_CONFIG_DIRECTORY64, *PIMAGE_LOAD_CONFIG_DIRECTORY64; #ifdef HOST_64BIT typedef IMAGE_LOAD_CONFIG_DIRECTORY64 IMAGE_LOAD_CONFIG_DIRECTORY; typedef PIMAGE_LOAD_CONFIG_DIRECTORY64 PIMAGE_LOAD_CONFIG_DIRECTORY; #else typedef IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY; typedef PIMAGE_LOAD_CONFIG_DIRECTORY32 PIMAGE_LOAD_CONFIG_DIRECTORY; #endif // // WIN CE Exception table format // // // Function table entry format. Function table is pointed to by the // IMAGE_DIRECTORY_ENTRY_EXCEPTION directory entry. // typedef struct _IMAGE_CE_RUNTIME_FUNCTION_ENTRY { ULONG FuncStart; ULONG PrologLen : 8; ULONG FuncLen : 22; ULONG ThirtyTwoBit : 1; ULONG ExceptionFlag : 1; } IMAGE_CE_RUNTIME_FUNCTION_ENTRY, * PIMAGE_CE_RUNTIME_FUNCTION_ENTRY; typedef struct _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY { ULONGLONG BeginAddress; ULONGLONG EndAddress; ULONGLONG ExceptionHandler; ULONGLONG HandlerData; ULONGLONG PrologEndAddress; } IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY, *PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY; typedef struct _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY { ULONG BeginAddress; ULONG EndAddress; ULONG ExceptionHandler; ULONG HandlerData; ULONG PrologEndAddress; } IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY, *PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY; typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY { ULONG BeginAddress; ULONG EndAddress; ULONG UnwindInfoAddress; } _IMAGE_RUNTIME_FUNCTION_ENTRY, *_PIMAGE_RUNTIME_FUNCTION_ENTRY; typedef _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_IA64_RUNTIME_FUNCTION_ENTRY; typedef _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_IA64_RUNTIME_FUNCTION_ENTRY; #if defined(_AXP64_) typedef IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY IMAGE_AXP64_RUNTIME_FUNCTION_ENTRY; typedef PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY PIMAGE_AXP64_RUNTIME_FUNCTION_ENTRY; typedef IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; typedef PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; #elif defined(_ALPHA_) typedef IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; typedef PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; #else typedef _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; typedef _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; #endif // // Debug Format // typedef struct _IMAGE_DEBUG_DIRECTORY { ULONG Characteristics; ULONG TimeDateStamp; USHORT MajorVersion; USHORT MinorVersion; ULONG Type; ULONG SizeOfData; ULONG AddressOfRawData; ULONG PointerToRawData; } IMAGE_DEBUG_DIRECTORY, *PIMAGE_DEBUG_DIRECTORY; #define IMAGE_DEBUG_TYPE_UNKNOWN 0 #define IMAGE_DEBUG_TYPE_COFF 1 #define IMAGE_DEBUG_TYPE_CODEVIEW 2 #define IMAGE_DEBUG_TYPE_FPO 3 #define IMAGE_DEBUG_TYPE_MISC 4 #define IMAGE_DEBUG_TYPE_EXCEPTION 5 #define IMAGE_DEBUG_TYPE_FIXUP 6 #define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 #define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 #define IMAGE_DEBUG_TYPE_BORLAND 9 #define IMAGE_DEBUG_TYPE_RESERVED10 10 #define IMAGE_DEBUG_TYPE_CLSID 11 // end_winnt // // begin_winnt typedef struct _IMAGE_COFF_SYMBOLS_HEADER { ULONG NumberOfSymbols; ULONG LvaToFirstSymbol; ULONG NumberOfLinenumbers; ULONG LvaToFirstLinenumber; ULONG RvaToFirstByteOfCode; ULONG RvaToLastByteOfCode; ULONG RvaToFirstByteOfData; ULONG RvaToLastByteOfData; } IMAGE_COFF_SYMBOLS_HEADER, *PIMAGE_COFF_SYMBOLS_HEADER; #define FRAME_FPO 0 #define FRAME_TRAP 1 #define FRAME_TSS 2 #define FRAME_NONFPO 3 typedef struct _FPO_DATA { ULONG ulOffStart; // offset 1st byte of function code ULONG cbProcSize; // # bytes in function ULONG cdwLocals; // # bytes in locals/4 USHORT cdwParams; // # bytes in params/4 USHORT cbProlog : 8; // # bytes in prolog USHORT cbRegs : 3; // # regs saved USHORT fHasSEH : 1; // TRUE if SEH in func USHORT fUseBP : 1; // TRUE if EBP has been allocated USHORT reserved : 1; // reserved for future use USHORT cbFrame : 2; // frame type } FPO_DATA, *PFPO_DATA; #define SIZEOF_RFPO_DATA 16 #define IMAGE_DEBUG_MISC_EXENAME 1 typedef struct _IMAGE_DEBUG_MISC { ULONG DataType; // type of misc data, see defines ULONG Length; // total length of record, rounded to four // byte multiple. BOOLEAN Unicode; // TRUE if data is unicode string UCHAR Reserved[ 3 ]; UCHAR Data[ 1 ]; // Actual data } IMAGE_DEBUG_MISC, *PIMAGE_DEBUG_MISC; // // Function table extracted from MIPS/ALPHA/IA64 images. Does not contain // information needed only for runtime support. Just those fields for // each entry needed by a debugger. // typedef struct _IMAGE_FUNCTION_ENTRY { ULONG StartingAddress; ULONG EndingAddress; ULONG EndOfPrologue; } IMAGE_FUNCTION_ENTRY, *PIMAGE_FUNCTION_ENTRY; typedef struct _IMAGE_FUNCTION_ENTRY64 { ULONGLONG StartingAddress; ULONGLONG EndingAddress; union { ULONGLONG EndOfPrologue; ULONGLONG UnwindInfoAddress; } u; } IMAGE_FUNCTION_ENTRY64, *PIMAGE_FUNCTION_ENTRY64; // // Debugging information can be stripped from an image file and placed // in a separate .DBG file, whose file name part is the same as the // image file name part (e.g. symbols for CMD.EXE could be stripped // and placed in CMD.DBG). This is indicated by the IMAGE_FILE_DEBUG_STRIPPED // flag in the Characteristics field of the file header. The beginning of // the .DBG file contains the following structure which captures certain // information from the image file. This allows a debug to proceed even if // the original image file is not accessable. This header is followed by // zero of more IMAGE_SECTION_HEADER structures, followed by zero or more // IMAGE_DEBUG_DIRECTORY structures. The latter structures and those in // the image file contain file offsets relative to the beginning of the // .DBG file. // // If symbols have been stripped from an image, the IMAGE_DEBUG_MISC structure // is left in the image file, but not mapped. This allows a debugger to // compute the name of the .DBG file, from the name of the image in the // IMAGE_DEBUG_MISC structure. // typedef struct _IMAGE_SEPARATE_DEBUG_HEADER { USHORT Signature; USHORT Flags; USHORT Machine; USHORT Characteristics; ULONG TimeDateStamp; ULONG CheckSum; ULONG ImageBase; ULONG SizeOfImage; ULONG NumberOfSections; ULONG ExportedNamesSize; ULONG DebugDirectorySize; ULONG SectionAlignment; ULONG Reserved[2]; } IMAGE_SEPARATE_DEBUG_HEADER, *PIMAGE_SEPARATE_DEBUG_HEADER; typedef struct _NON_PAGED_DEBUG_INFO { USHORT Signature; USHORT Flags; ULONG Size; USHORT Machine; USHORT Characteristics; ULONG TimeDateStamp; ULONG CheckSum; ULONG SizeOfImage; ULONGLONG ImageBase; //DebugDirectorySize //IMAGE_DEBUG_DIRECTORY } NON_PAGED_DEBUG_INFO, *PNON_PAGED_DEBUG_INFO; #ifndef _MAC #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944 #define NON_PAGED_DEBUG_SIGNATURE 0x494E #else #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4449 // DI #define NON_PAGED_DEBUG_SIGNATURE 0x4E49 // NI #endif #define IMAGE_SEPARATE_DEBUG_FLAGS_MASK 0x8000 #define IMAGE_SEPARATE_DEBUG_MISMATCH 0x8000 // when DBG was updated, the // old checksum didn't match. // // The .arch section is made up of headers, each describing an amask position/value // pointing to an array of IMAGE_ARCHITECTURE_ENTRY's. Each "array" (both the header // and entry arrays) are terminiated by a quadword of 0xffffffffL. // // NOTE: There may be quadwords of 0 sprinkled around and must be skipped. // typedef struct _ImageArchitectureHeader { unsigned int AmaskValue: 1; // 1 -> code section depends on mask bit // 0 -> new instruction depends on mask bit int :7; // MBZ unsigned int AmaskShift: 8; // Amask bit in question for this fixup int :16; // MBZ ULONG FirstEntryRVA; // RVA into .arch section to array of ARCHITECTURE_ENTRY's } IMAGE_ARCHITECTURE_HEADER, *PIMAGE_ARCHITECTURE_HEADER; typedef struct _ImageArchitectureEntry { ULONG FixupInstRVA; // RVA of instruction to fixup ULONG NewInst; // fixup instruction (see alphaops.h) } IMAGE_ARCHITECTURE_ENTRY, *PIMAGE_ARCHITECTURE_ENTRY; #include "poppack.h" // Back to the initial value // The following structure defines the new import object. Note the values of the first two fields, // which must be set as stated in order to differentiate old and new import members. // Following this structure, the linker emits two null-terminated strings used to recreate the // import at the time of use. The first string is the import's name, the second is the dll's name. #define IMPORT_OBJECT_HDR_SIG2 0xffff typedef struct IMPORT_OBJECT_HEADER { USHORT Sig1; // Must be IMAGE_FILE_MACHINE_UNKNOWN USHORT Sig2; // Must be IMPORT_OBJECT_HDR_SIG2. USHORT Version; USHORT Machine; ULONG TimeDateStamp; // Time/date stamp ULONG SizeOfData; // particularly useful for incremental links union { USHORT Ordinal; // if grf & IMPORT_OBJECT_ORDINAL USHORT Hint; } u; USHORT Type : 2; // IMPORT_TYPE USHORT NameType : 3; // IMPORT_NAME_TYPE USHORT Reserved : 11; // Reserved. Must be zero. } IMPORT_OBJECT_HEADER; typedef enum IMPORT_OBJECT_TYPE { IMPORT_OBJECT_CODE = 0, IMPORT_OBJECT_DATA = 1, IMPORT_OBJECT_CONST = 2, } IMPORT_OBJECT_TYPE; typedef enum IMPORT_OBJECT_NAME_TYPE { IMPORT_OBJECT_ORDINAL = 0, // Import by ordinal IMPORT_OBJECT_NAME = 1, // Import name == public symbol name. IMPORT_OBJECT_NAME_NO_PREFIX = 2, // Import name == public symbol name skipping leading ?, @, or optionally _. IMPORT_OBJECT_NAME_UNDECORATE = 3, // Import name == public symbol name skipping leading ?, @, or optionally _ // and truncating at first @ } IMPORT_OBJECT_NAME_TYPE; // end_winnt // // End Image Format // // end_winnt #endif // _NTIMAGE_ ProcDump-for-Linux-2.2/profiler/inc/oaidl.h000066400000000000000000000053311447614355600206440ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // =========================================================================== // File: oaidl.h // // =========================================================================== #ifndef __OAIDL_H__ #define __OAIDL_H__ #include "rpc.h" #include "rpcndr.h" #include "unknwn.h" typedef struct tagEXCEPINFO { WORD wCode; WORD wReserved; BSTR bstrSource; BSTR bstrDescription; BSTR bstrHelpFile; DWORD dwHelpContext; PVOID pvReserved; HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *); SCODE scode; } EXCEPINFO, * LPEXCEPINFO; typedef interface IErrorInfo IErrorInfo; typedef /* [unique] */ IErrorInfo *LPERRORINFO; EXTERN_C const IID IID_IErrorInfo; interface IErrorInfo : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetGUID( /* [out] */ GUID *pGUID) = 0; virtual HRESULT STDMETHODCALLTYPE GetSource( /* [out] */ BSTR *pBstrSource) = 0; virtual HRESULT STDMETHODCALLTYPE GetDescription( /* [out] */ BSTR *pBstrDescription) = 0; virtual HRESULT STDMETHODCALLTYPE GetHelpFile( /* [out] */ BSTR *pBstrHelpFile) = 0; virtual HRESULT STDMETHODCALLTYPE GetHelpContext( /* [out] */ DWORD *pdwHelpContext) = 0; }; typedef interface ICreateErrorInfo ICreateErrorInfo; EXTERN_C const IID IID_ICreateErrorInfo; typedef /* [unique] */ ICreateErrorInfo *LPCREATEERRORINFO; interface ICreateErrorInfo : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetGUID( /* [in] */ REFGUID rguid) = 0; virtual HRESULT STDMETHODCALLTYPE SetSource( /* [in] */ LPOLESTR szSource) = 0; virtual HRESULT STDMETHODCALLTYPE SetDescription( /* [in] */ LPOLESTR szDescription) = 0; virtual HRESULT STDMETHODCALLTYPE SetHelpFile( /* [in] */ LPOLESTR szHelpFile) = 0; virtual HRESULT STDMETHODCALLTYPE SetHelpContext( /* [in] */ DWORD dwHelpContext) = 0; }; STDAPI SetErrorInfo(ULONG dwReserved, IErrorInfo FAR* perrinfo); STDAPI GetErrorInfo(ULONG dwReserved, IErrorInfo FAR* FAR* pperrinfo); STDAPI CreateErrorInfo(ICreateErrorInfo FAR* FAR* pperrinfo); typedef interface ISupportErrorInfo ISupportErrorInfo; typedef /* [unique] */ ISupportErrorInfo *LPSUPPORTERRORINFO; EXTERN_C const IID IID_ISupportErrorInfo; interface ISupportErrorInfo : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE InterfaceSupportsErrorInfo( /* [in] */ REFIID riid) = 0; }; #endif //__OAIDL_H__ ProcDump-for-Linux-2.2/profiler/inc/objidl.h000066400000000000000000000175321447614355600210250ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // =========================================================================== // File: objidl.h // // =========================================================================== // simplified objidl.h for PAL #include "rpc.h" #include "rpcndr.h" #include "unknwn.h" #ifndef __IEnumUnknown_INTERFACE_DEFINED__ #define __IEnumUnknown_INTERFACE_DEFINED__ // 00000100-0000-0000-C000-000000000046 EXTERN_C const IID IID_IEnumUnknown; interface IEnumUnknown : public IUnknown { public: virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next( /* [annotation][in] */ _In_ ULONG celt, /* [annotation][out] */ _Out_writes_to_(celt,*pceltFetched) IUnknown **rgelt, /* [annotation][out] */ _Out_opt_ ULONG *pceltFetched) = 0; virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG celt) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ __RPC__deref_out_opt IEnumUnknown **ppenum) = 0; }; #endif /* __IEnumUnknown_INTERFACE_DEFINED__ */ #ifndef __ISequentialStream_INTERFACE_DEFINED__ #define __ISequentialStream_INTERFACE_DEFINED__ // 0c733a30-2a1c-11ce-ade5-00aa0044773d EXTERN_C const IID IID_ISequentialStream; interface ISequentialStream : public IUnknown { public: virtual /* [local] */ HRESULT STDMETHODCALLTYPE Read( /* [length_is][size_is][out] */ void *pv, /* [in] */ ULONG cb, /* [out] */ ULONG *pcbRead) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE Write( /* [size_is][in] */ const void *pv, /* [in] */ ULONG cb, /* [out] */ ULONG *pcbWritten) = 0; }; #endif // __ISequentialStream_INTERFACE_DEFINED__ #ifndef __IStream_INTERFACE_DEFINED__ #define __IStream_INTERFACE_DEFINED__ typedef struct tagSTATSTG { LPOLESTR pwcsName; DWORD type; ULARGE_INTEGER cbSize; FILETIME mtime; FILETIME ctime; FILETIME atime; DWORD grfMode; DWORD grfLocksSupported; CLSID clsid; DWORD grfStateBits; DWORD reserved; } STATSTG; typedef enum tagSTGTY { STGTY_STORAGE = 1, STGTY_STREAM = 2, STGTY_LOCKBYTES = 3, STGTY_PROPERTY = 4 } STGTY; typedef enum tagSTREAM_SEEK { STREAM_SEEK_SET = 0, STREAM_SEEK_CUR = 1, STREAM_SEEK_END = 2 } STREAM_SEEK; typedef enum tagSTATFLAG { STATFLAG_DEFAULT = 0, STATFLAG_NONAME = 1, STATFLAG_NOOPEN = 2 } STATFLAG; // 0000000c-0000-0000-C000-000000000046 EXTERN_C const IID IID_IStream; interface DECLSPEC_UUID("0000000c-0000-0000-C000-000000000046") IStream : public ISequentialStream { public: virtual /* [local] */ HRESULT STDMETHODCALLTYPE Seek( /* [in] */ LARGE_INTEGER dlibMove, /* [in] */ DWORD dwOrigin, /* [out] */ ULARGE_INTEGER *plibNewPosition) = 0; virtual HRESULT STDMETHODCALLTYPE SetSize( /* [in] */ ULARGE_INTEGER libNewSize) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE CopyTo( /* [unique][in] */ IStream *pstm, /* [in] */ ULARGE_INTEGER cb, /* [out] */ ULARGE_INTEGER *pcbRead, /* [out] */ ULARGE_INTEGER *pcbWritten) = 0; virtual HRESULT STDMETHODCALLTYPE Commit( /* [in] */ DWORD grfCommitFlags) = 0; virtual HRESULT STDMETHODCALLTYPE Revert( void) = 0; virtual HRESULT STDMETHODCALLTYPE LockRegion( /* [in] */ ULARGE_INTEGER libOffset, /* [in] */ ULARGE_INTEGER cb, /* [in] */ DWORD dwLockType) = 0; virtual HRESULT STDMETHODCALLTYPE UnlockRegion( /* [in] */ ULARGE_INTEGER libOffset, /* [in] */ ULARGE_INTEGER cb, /* [in] */ DWORD dwLockType) = 0; virtual HRESULT STDMETHODCALLTYPE Stat( /* [out] */ STATSTG *pstatstg, /* [in] */ DWORD grfStatFlag) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ IStream **ppstm) = 0; }; #endif // __IStream_INTERFACE_DEFINED__ #ifndef __IStorage_INTERFACE_DEFINED__ #define __IStorage_INTERFACE_DEFINED__ typedef OLECHAR **SNB; interface IEnumSTATSTG; // 0000000b-0000-0000-C000-000000000046 interface IStorage : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE CreateStream( /* [string][in] */ const OLECHAR *pwcsName, /* [in] */ DWORD grfMode, /* [in] */ DWORD reserved1, /* [in] */ DWORD reserved2, /* [out] */ IStream **ppstm) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE OpenStream( /* [string][in] */ const OLECHAR *pwcsName, /* [unique][in] */ void *reserved1, /* [in] */ DWORD grfMode, /* [in] */ DWORD reserved2, /* [out] */ IStream **ppstm) = 0; virtual HRESULT STDMETHODCALLTYPE CreateStorage( /* [string][in] */ const OLECHAR *pwcsName, /* [in] */ DWORD grfMode, /* [in] */ DWORD reserved1, /* [in] */ DWORD reserved2, /* [out] */ IStorage **ppstg) = 0; virtual HRESULT STDMETHODCALLTYPE OpenStorage( /* [string][unique][in] */ const OLECHAR *pwcsName, /* [unique][in] */ IStorage *pstgPriority, /* [in] */ DWORD grfMode, /* [unique][in] */ SNB snbExclude, /* [in] */ DWORD reserved, /* [out] */ IStorage **ppstg) = 0; virtual HRESULT STDMETHODCALLTYPE CopyTo( /* [in] */ DWORD ciidExclude, /* [size_is][unique][in] */ const IID *rgiidExclude, /* [unique][in] */ SNB snbExclude, /* [unique][in] */ IStorage *pstgDest) = 0; virtual HRESULT STDMETHODCALLTYPE MoveElementTo( /* [string][in] */ const OLECHAR *pwcsName, /* [unique][in] */ IStorage *pstgDest, /* [string][in] */ const OLECHAR *pwcsNewName, /* [in] */ DWORD grfFlags) = 0; virtual HRESULT STDMETHODCALLTYPE Commit( /* [in] */ DWORD grfCommitFlags) = 0; virtual HRESULT STDMETHODCALLTYPE Revert( void) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE EnumElements( /* [in] */ DWORD reserved1, /* [size_is][unique][in] */ void *reserved2, /* [in] */ DWORD reserved3, /* [out] */ IEnumSTATSTG **ppenum) = 0; virtual HRESULT STDMETHODCALLTYPE DestroyElement( /* [string][in] */ const OLECHAR *pwcsName) = 0; virtual HRESULT STDMETHODCALLTYPE RenameElement( /* [string][in] */ const OLECHAR *pwcsOldName, /* [string][in] */ const OLECHAR *pwcsNewName) = 0; virtual HRESULT STDMETHODCALLTYPE SetElementTimes( /* [string][unique][in] */ const OLECHAR *pwcsName, /* [unique][in] */ const FILETIME *pctime, /* [unique][in] */ const FILETIME *patime, /* [unique][in] */ const FILETIME *pmtime) = 0; virtual HRESULT STDMETHODCALLTYPE SetClass( /* [in] */ REFCLSID clsid) = 0; virtual HRESULT STDMETHODCALLTYPE SetStateBits( /* [in] */ DWORD grfStateBits, /* [in] */ DWORD grfMask) = 0; virtual HRESULT STDMETHODCALLTYPE Stat( /* [out] */ STATSTG *pstatstg, /* [in] */ DWORD grfStatFlag) = 0; }; #endif // __IStorage_INTERFACE_DEFINED__ #ifndef __IMalloc_INTERFACE_DEFINED__ #define __IMalloc_INTERFACE_DEFINED__ /* interface IMalloc */ /* [uuid][object][local] */ // 0000001d-0000-0000-C000-000000000046 EXTERN_C const IID IID_IMalloc; interface IMalloc : public IUnknown { public: virtual void *STDMETHODCALLTYPE Alloc( /* [in] */ SIZE_T cb) = 0; virtual void *STDMETHODCALLTYPE Realloc( /* [in] */ void *pv, /* [in] */ SIZE_T cb) = 0; virtual void STDMETHODCALLTYPE Free( /* [in] */ void *pv) = 0; virtual SIZE_T STDMETHODCALLTYPE GetSize( /* [in] */ void *pv) = 0; virtual int STDMETHODCALLTYPE DidAlloc( void *pv) = 0; virtual void STDMETHODCALLTYPE HeapMinimize( void) = 0; }; typedef /* [unique] */ IMalloc *LPMALLOC; #endif // __IMalloc_INTERFACE_DEFINED__ ProcDump-for-Linux-2.2/profiler/inc/ole2.h000066400000000000000000000003471447614355600204170ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // dummy ole2.h for PAL #include "objidl.h" #include "servprov.h" #include "oaidl.h" ProcDump-for-Linux-2.2/profiler/inc/pal.h000066400000000000000000003766271447614355600203530ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. /*++ Module Name: pal.h Abstract: CoreCLR Platform Adaptation Layer (PAL) header file. This file defines all types and API calls required by the CoreCLR when compiled for Unix-like systems. Defines which control the behavior of this include file: UNICODE - define it to set the Ansi/Unicode neutral names to be the ...W names. Otherwise the neutral names default to be the ...A names. PAL_IMPLEMENTATION - define it when implementing the PAL. Otherwise leave it undefined when consuming the PAL. Note: some fields in structs have been renamed from the original SDK documentation names, with _PAL_Undefined appended. This leaves the structure layout identical to its Win32 version, but prevents PAL consumers from inadvertently referencing undefined fields. If you want to add a PAL_ wrapper function to a native function in here, you also need to edit palinternal.h and win32pal.h. --*/ #ifndef __PAL_H__ #define __PAL_H__ #ifdef PAL_STDCPP_COMPAT #include #include #include #include #include #include #include #include #include #include #include #include #include #endif #ifdef __cplusplus extern "C" { #endif // This macro is used to standardize the wide character string literals between UNIX and Windows. // Unix L"" is UTF32, and on windows it's UTF16. Because of built-in assumptions on the size // of string literals, it's important to match behaviour between Unix and Windows. Unix will be defined // as u"" (char16_t) #define W(str) u##str // Undefine the QUOTE_MACRO_L helper and redefine it in terms of u. // The reason that we do this is that quote macro is defined in ndp\common\inc, // not inside of coreclr sources. #define QUOTE_MACRO_L(x) QUOTE_MACRO_u(x) #define QUOTE_MACRO_u_HELPER(x) u###x #define QUOTE_MACRO_u(x) QUOTE_MACRO_u_HELPER(x) #include #include // Native system libray handle. // On Unix systems, NATIVE_LIBRARY_HANDLE type represents a library handle not registered with the PAL. typedef PVOID NATIVE_LIBRARY_HANDLE; /******************* Processor-specific glue *****************************/ #ifndef _MSC_VER #if defined(__i686__) && !defined(_M_IX86) #define _M_IX86 600 #elif defined(__i586__) && !defined(_M_IX86) #define _M_IX86 500 #elif defined(__i486__) && !defined(_M_IX86) #define _M_IX86 400 #elif defined(__i386__) && !defined(_M_IX86) #define _M_IX86 300 #elif defined(__x86_64__) && !defined(_M_AMD64) #define _M_AMD64 100 #elif defined(__arm__) && !defined(_M_ARM) #define _M_ARM 7 #elif defined(__aarch64__) && !defined(_M_ARM64) #define _M_ARM64 1 #elif defined(__s390x__) && !defined(_M_S390X) #define _M_S390X 1 #endif #if defined(_M_IX86) && !defined(HOST_X86) #define HOST_X86 #elif defined(_M_AMD64) && !defined(HOST_AMD64) #define HOST_AMD64 #elif defined(_M_ARM) && !defined(HOST_ARM) #define HOST_ARM #elif defined(_M_ARM64) && !defined(HOST_ARM64) #define HOST_ARM64 #elif defined(_M_S390X) && !defined(HOST_S390X) #define HOST_S390X #endif #endif // !_MSC_VER /******************* ABI-specific glue *******************************/ #define MAX_PATH 260 #define _MAX_PATH 260 #define _MAX_DRIVE 3 /* max. length of drive component */ #define _MAX_DIR 256 /* max. length of path component */ #define _MAX_FNAME 256 /* max. length of file name component */ #define _MAX_EXT 256 /* max. length of extension component */ // In some Win32 APIs MAX_PATH is used for file names (even though 256 is the normal file system limit) // use _MAX_PATH_FNAME to indicate these cases #define MAX_PATH_FNAME MAX_PATH #define MAX_LONGPATH 1024 /* max. length of full pathname */ #define MAXSHORT 0x7fff #define MAXLONG 0x7fffffff #define MAXCHAR 0x7f #define MAXDWORD 0xffffffff // Sorting IDs. // // Note that the named locale APIs (eg CompareStringExEx) are recommended. // #define LANG_ENGLISH 0x09 /******************* Compiler-specific glue *******************************/ #ifndef THROW_DECL #if defined(_MSC_VER) || !defined(__cplusplus) #define THROW_DECL #else #define THROW_DECL throw() #endif // !_MSC_VER #endif // !THROW_DECL #ifdef __sun #define MATH_THROW_DECL #else #define MATH_THROW_DECL THROW_DECL #endif #if defined(_MSC_VER) #define DECLSPEC_ALIGN(x) __declspec(align(x)) #else #define DECLSPEC_ALIGN(x) __attribute__ ((aligned(x))) #endif #define DECLSPEC_NORETURN PAL_NORETURN #ifdef __clang_analyzer__ #define ANALYZER_NORETURN __attribute((analyzer_noreturn)) #else #define ANALYZER_NORETURN #endif #define EMPTY_BASES_DECL #if !defined(_MSC_VER) || defined(SOURCE_FORMATTING) #define __assume(x) (void)0 #define __annotation(x) #endif //!MSC_VER #define UNALIGNED #ifndef FORCEINLINE #if _MSC_VER < 1200 #define FORCEINLINE inline #else #define FORCEINLINE __forceinline #endif #endif #ifndef NOOPT_ATTRIBUTE #if defined(__llvm__) #define NOOPT_ATTRIBUTE optnone #elif defined(__GNUC__) #define NOOPT_ATTRIBUTE optimize("O0") #endif #endif #ifndef NODEBUG_ATTRIBUTE #if defined(__llvm__) #define NODEBUG_ATTRIBUTE __nodebug__ #elif defined(__GNUC__) #define NODEBUG_ATTRIBUTE __artificial__ #endif #endif #ifndef __has_cpp_attribute #define __has_cpp_attribute(x) (0) #endif #ifndef FALLTHROUGH #if __has_cpp_attribute(fallthrough) #define FALLTHROUGH [[fallthrough]] #else // __has_cpp_attribute(fallthrough) #define FALLTHROUGH #endif // __has_cpp_attribute(fallthrough) #endif // FALLTHROUGH #ifndef PAL_STDCPP_COMPAT #if __GNUC__ typedef __builtin_va_list va_list; /* We should consider if the va_arg definition here is actually necessary. Could we use the standard va_arg definition? */ #define va_start __builtin_va_start #define va_arg __builtin_va_arg #define va_copy __builtin_va_copy #define va_end __builtin_va_end #define VOID void #else // __GNUC__ typedef char * va_list; #define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) ) #if _MSC_VER >= 1400 #ifdef __cplusplus #define _ADDRESSOF(v) ( &reinterpret_cast(v) ) #else #define _ADDRESSOF(v) ( &(v) ) #endif #define _crt_va_start(ap,v) ( ap = (va_list)_ADDRESSOF(v) + _INTSIZEOF(v) ) #define _crt_va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) ) #define _crt_va_end(ap) ( ap = (va_list)0 ) #define va_start _crt_va_start #define va_arg _crt_va_arg #define va_end _crt_va_end #else // _MSC_VER #define va_start(ap,v) (ap = (va_list) (&(v)) + _INTSIZEOF(v)) #define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) ) #define va_end(ap) #endif // _MSC_VER #define va_copy(dest,src) (dest = src) #endif // __GNUC__ #define CHAR_BIT 8 #define SCHAR_MIN (-128) #define SCHAR_MAX 127 #define UCHAR_MAX 0xff #define SHRT_MIN (-32768) #define SHRT_MAX 32767 #define USHRT_MAX 0xffff #define INT_MIN (-2147483647 - 1) #define INT_MAX 2147483647 #define UINT_MAX 0xffffffff // LONG_MIN, LONG_MAX, ULONG_MAX -- use INT32_MIN etc. instead. #define FLT_MAX 3.402823466e+38F #define DBL_MAX 1.7976931348623157e+308 #endif // !PAL_STDCPP_COMPAT /******************* PAL-Specific Entrypoints *****************************/ #define IsDebuggerPresent PAL_IsDebuggerPresent PALIMPORT BOOL PALAPI PAL_IsDebuggerPresent(); /* minimum signed 64 bit value */ #define _I64_MIN (I64(-9223372036854775807) - 1) /* maximum signed 64 bit value */ #define _I64_MAX I64(9223372036854775807) /* maximum unsigned 64 bit value */ #define _UI64_MAX UI64(0xffffffffffffffff) #define _I8_MAX SCHAR_MAX #define _I8_MIN SCHAR_MIN #define _I16_MAX SHRT_MAX #define _I16_MIN SHRT_MIN #define _I32_MAX INT_MAX #define _I32_MIN INT_MIN #define _UI8_MAX UCHAR_MAX #define _UI8_MIN UCHAR_MIN #define _UI16_MAX USHRT_MAX #define _UI16_MIN USHRT_MIN #define _UI32_MAX UINT_MAX #define _UI32_MIN UINT_MIN #undef NULL #if defined(__cplusplus) #define NULL 0 #else #define NULL ((PVOID)0) #endif #if defined(PAL_STDCPP_COMPAT) && !defined(__cplusplus) #define nullptr NULL #endif // defined(PAL_STDCPP_COMPAT) && !defined(__cplusplus) #ifndef PAL_STDCPP_COMPAT typedef __int64 time_t; #define _TIME_T_DEFINED #endif // !PAL_STDCPP_COMPAT #define DLL_PROCESS_ATTACH 1 #define DLL_THREAD_ATTACH 2 #define DLL_THREAD_DETACH 3 #define DLL_PROCESS_DETACH 0 #define PAL_INITIALIZE_NONE 0x00 #define PAL_INITIALIZE_SYNC_THREAD 0x01 #define PAL_INITIALIZE_EXEC_ALLOCATOR 0x02 #define PAL_INITIALIZE_STD_HANDLES 0x04 #define PAL_INITIALIZE_REGISTER_SIGTERM_HANDLER 0x08 #define PAL_INITIALIZE_DEBUGGER_EXCEPTIONS 0x10 #define PAL_INITIALIZE_ENSURE_STACK_SIZE 0x20 #define PAL_INITIALIZE_REGISTER_SIGNALS 0x40 // PAL_Initialize() flags #define PAL_INITIALIZE (PAL_INITIALIZE_SYNC_THREAD | \ PAL_INITIALIZE_STD_HANDLES) // PAL_InitializeDLL() flags - don't start any of the helper threads or register any exceptions #define PAL_INITIALIZE_DLL PAL_INITIALIZE_NONE // PAL_InitializeCoreCLR() flags #define PAL_INITIALIZE_CORECLR (PAL_INITIALIZE | \ PAL_INITIALIZE_EXEC_ALLOCATOR | \ PAL_INITIALIZE_REGISTER_SIGTERM_HANDLER | \ PAL_INITIALIZE_DEBUGGER_EXCEPTIONS | \ PAL_INITIALIZE_ENSURE_STACK_SIZE | \ PAL_INITIALIZE_REGISTER_SIGNALS) typedef DWORD (PALAPI_NOEXPORT *PTHREAD_START_ROUTINE)(LPVOID lpThreadParameter); typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE; /******************* PAL-Specific Entrypoints *****************************/ PALIMPORT int PALAPI PAL_Initialize( int argc, char * const argv[]); PALIMPORT void PALAPI PAL_InitializeWithFlags( DWORD flags); PALIMPORT int PALAPI PAL_InitializeDLL(); PALIMPORT void PALAPI PAL_SetInitializeDLLFlags( DWORD flags); PALIMPORT DWORD PALAPI PAL_InitializeCoreCLR( const char *szExePath, BOOL runningInExe); /// /// This function shuts down PAL WITHOUT exiting the current process. /// PALIMPORT void PALAPI PAL_Shutdown( void); /// /// This function shuts down PAL and exits the current process. /// PALIMPORT void PALAPI PAL_Terminate( void); /// /// This function shuts down PAL and exits the current process with /// the specified exit code. /// PALIMPORT void PALAPI PAL_TerminateEx( int exitCode); typedef VOID (*PSHUTDOWN_CALLBACK)(bool isExecutingOnAltStack); PALIMPORT VOID PALAPI PAL_SetShutdownCallback( IN PSHUTDOWN_CALLBACK callback); // Must be the same as the copy in excep.h and the WriteDumpFlags enum in the diagnostics repo enum { GenerateDumpFlagsNone = 0x00, GenerateDumpFlagsLoggingEnabled = 0x01, GenerateDumpFlagsVerboseLoggingEnabled = 0x02, GenerateDumpFlagsCrashReportEnabled = 0x04 }; PALIMPORT BOOL PALAPI PAL_GenerateCoreDump( IN LPCSTR dumpName, IN INT dumpType, IN ULONG32 flags); typedef VOID (*PPAL_STARTUP_CALLBACK)( char *modulePath, HMODULE hModule, PVOID parameter); PALIMPORT DWORD PALAPI PAL_RegisterForRuntimeStartup( IN DWORD dwProcessId, IN LPCWSTR lpApplicationGroupId, IN PPAL_STARTUP_CALLBACK pfnCallback, IN PVOID parameter, OUT PVOID *ppUnregisterToken); PALIMPORT DWORD PALAPI PAL_UnregisterForRuntimeStartup( IN PVOID pUnregisterToken); PALIMPORT BOOL PALAPI PAL_NotifyRuntimeStarted(); PALIMPORT LPCSTR PALAPI PAL_GetApplicationGroupId(); static const unsigned int MAX_DEBUGGER_TRANSPORT_PIPE_NAME_LENGTH = MAX_PATH; PALIMPORT VOID PALAPI PAL_GetTransportName( const unsigned int MAX_TRANSPORT_NAME_LENGTH, OUT char *name, IN const char *prefix, IN DWORD id, IN const char *applicationGroupId, IN const char *suffix); PALIMPORT VOID PALAPI PAL_GetTransportPipeName( OUT char *name, IN DWORD id, IN const char *applicationGroupId, IN const char *suffix); PALIMPORT void PALAPI PAL_IgnoreProfileSignal(int signalNum); PALIMPORT HINSTANCE PALAPI PAL_RegisterModule( IN LPCSTR lpLibFileName); PALIMPORT VOID PALAPI PAL_UnregisterModule( IN HINSTANCE hInstance); PALIMPORT VOID PALAPI PAL_Random( IN OUT LPVOID lpBuffer, IN DWORD dwLength); PALIMPORT BOOL PALAPI PAL_OpenProcessMemory( IN DWORD processId, OUT DWORD* pHandle ); PALIMPORT VOID PALAPI PAL_CloseProcessMemory( IN DWORD handle ); PALIMPORT BOOL PALAPI PAL_ReadProcessMemory( IN DWORD handle, IN ULONG64 address, IN LPVOID buffer, IN SIZE_T size, OUT SIZE_T* numberOfBytesRead ); PALIMPORT BOOL PALAPI PAL_ProbeMemory( PVOID pBuffer, DWORD cbBuffer, BOOL fWriteAccess); PALIMPORT int PALAPI // Start the jitdump file PAL_PerfJitDump_Start(const char* path); PALIMPORT int PALAPI // Log a method to the jitdump file. PAL_PerfJitDump_LogMethod(void* pCode, size_t codeSize, const char* symbol, void* debugInfo, void* unwindInfo); PALIMPORT int PALAPI // Finish the jitdump file PAL_PerfJitDump_Finish(); /******************* winuser.h Entrypoints *******************************/ #define MB_OK 0x00000000L #define MB_OKCANCEL 0x00000001L #define MB_ABORTRETRYIGNORE 0x00000002L #define MB_YESNO 0x00000004L #define MB_RETRYCANCEL 0x00000005L #define MB_ICONHAND 0x00000010L #define MB_ICONQUESTION 0x00000020L #define MB_ICONEXCLAMATION 0x00000030L #define MB_ICONASTERISK 0x00000040L #define MB_ICONINFORMATION MB_ICONASTERISK #define MB_ICONSTOP MB_ICONHAND #define MB_ICONERROR MB_ICONHAND #define MB_DEFBUTTON1 0x00000000L #define MB_DEFBUTTON2 0x00000100L #define MB_DEFBUTTON3 0x00000200L #define MB_SYSTEMMODAL 0x00001000L #define MB_TASKMODAL 0x00002000L #define MB_SETFOREGROUND 0x00010000L #define MB_TOPMOST 0x00040000L #define MB_NOFOCUS 0x00008000L #define MB_DEFAULT_DESKTOP_ONLY 0x00020000L // Note: this is the NT 4.0 and greater value. #define MB_SERVICE_NOTIFICATION 0x00200000L #define MB_TYPEMASK 0x0000000FL #define MB_ICONMASK 0x000000F0L #define MB_DEFMASK 0x00000F00L #define IDOK 1 #define IDCANCEL 2 #define IDABORT 3 #define IDRETRY 4 #define IDIGNORE 5 #define IDYES 6 #define IDNO 7 PALIMPORT int PALAPI MessageBoxW( IN LPVOID hWnd, // NOTE: diff from winuser.h IN LPCWSTR lpText, IN LPCWSTR lpCaption, IN UINT uType); #ifdef UNICODE #define MessageBox MessageBoxW #else #define MessageBox MessageBoxA #endif // From win32.h #ifndef _CRTIMP #ifdef __GNUC__ #define _CRTIMP #else // __GNUC__ #define _CRTIMP __declspec(dllimport) #endif // __GNUC__ #endif // _CRTIMP /******************* winbase.h Entrypoints and defines ************************/ typedef struct _SECURITY_ATTRIBUTES { DWORD nLength; LPVOID lpSecurityDescriptor; BOOL bInheritHandle; } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; #define _SH_DENYWR 0x20 /* deny write mode */ #define FILE_READ_DATA ( 0x0001 ) // file & pipe #define FILE_APPEND_DATA ( 0x0004 ) // file #define GENERIC_READ (0x80000000L) #define GENERIC_WRITE (0x40000000L) #define FILE_SHARE_READ 0x00000001 #define FILE_SHARE_WRITE 0x00000002 #define FILE_SHARE_DELETE 0x00000004 #define CREATE_NEW 1 #define CREATE_ALWAYS 2 #define OPEN_EXISTING 3 #define OPEN_ALWAYS 4 #define TRUNCATE_EXISTING 5 #define FILE_ATTRIBUTE_READONLY 0x00000001 #define FILE_ATTRIBUTE_HIDDEN 0x00000002 #define FILE_ATTRIBUTE_SYSTEM 0x00000004 #define FILE_ATTRIBUTE_DIRECTORY 0x00000010 #define FILE_ATTRIBUTE_ARCHIVE 0x00000020 #define FILE_ATTRIBUTE_DEVICE 0x00000040 #define FILE_ATTRIBUTE_NORMAL 0x00000080 #define FILE_FLAG_WRITE_THROUGH 0x80000000 #define FILE_FLAG_NO_BUFFERING 0x20000000 #define FILE_FLAG_RANDOM_ACCESS 0x10000000 #define FILE_FLAG_SEQUENTIAL_SCAN 0x08000000 #define FILE_FLAG_BACKUP_SEMANTICS 0x02000000 #define FILE_BEGIN 0 #define FILE_CURRENT 1 #define FILE_END 2 #define STILL_ACTIVE (0x00000103L) #define INVALID_SET_FILE_POINTER ((DWORD)-1) PALIMPORT HANDLE PALAPI CreateFileW( IN LPCWSTR lpFileName, IN DWORD dwDesiredAccess, IN DWORD dwShareMode, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes, IN DWORD dwCreationDisposition, IN DWORD dwFlagsAndAttributes, IN HANDLE hTemplateFile); #ifdef UNICODE #define CreateFile CreateFileW #else #define CreateFile CreateFileA #endif PALIMPORT DWORD PALAPI SearchPathW( IN LPCWSTR lpPath, IN LPCWSTR lpFileName, IN LPCWSTR lpExtension, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart ); #define SearchPath SearchPathW PALIMPORT BOOL PALAPI CopyFileW( IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN BOOL bFailIfExists); #ifdef UNICODE #define CopyFile CopyFileW #else #define CopyFile CopyFileA #endif PALIMPORT BOOL PALAPI DeleteFileW( IN LPCWSTR lpFileName); #ifdef UNICODE #define DeleteFile DeleteFileW #else #define DeleteFile DeleteFileA #endif #define MOVEFILE_REPLACE_EXISTING 0x00000001 #define MOVEFILE_COPY_ALLOWED 0x00000002 PALIMPORT BOOL PALAPI MoveFileExW( IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN DWORD dwFlags); #ifdef UNICODE #define MoveFileEx MoveFileExW #else #define MoveFileEx MoveFileExA #endif typedef struct _BY_HANDLE_FILE_INFORMATION { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD dwVolumeSerialNumber; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD nNumberOfLinks; DWORD nFileIndexHigh; DWORD nFileIndexLow; } BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION, *LPBY_HANDLE_FILE_INFORMATION; typedef struct _WIN32_FIND_DATAA { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwReserved0; DWORD dwReserved1; CHAR cFileName[ MAX_PATH_FNAME ]; CHAR cAlternateFileName[ 14 ]; } WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA; typedef struct _WIN32_FIND_DATAW { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwReserved0; DWORD dwReserved1; WCHAR cFileName[ MAX_PATH_FNAME ]; WCHAR cAlternateFileName[ 14 ]; } WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW; #ifdef UNICODE typedef WIN32_FIND_DATAW WIN32_FIND_DATA; typedef PWIN32_FIND_DATAW PWIN32_FIND_DATA; typedef LPWIN32_FIND_DATAW LPWIN32_FIND_DATA; #else typedef WIN32_FIND_DATAA WIN32_FIND_DATA; typedef PWIN32_FIND_DATAA PWIN32_FIND_DATA; typedef LPWIN32_FIND_DATAA LPWIN32_FIND_DATA; #endif PALIMPORT HANDLE PALAPI FindFirstFileW( IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData); #ifdef UNICODE #define FindFirstFile FindFirstFileW #else #define FindFirstFile FindFirstFileA #endif PALIMPORT BOOL PALAPI FindNextFileW( IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData); #ifdef UNICODE #define FindNextFile FindNextFileW #else #define FindNextFile FindNextFileA #endif PALIMPORT BOOL PALAPI FindClose( IN OUT HANDLE hFindFile); PALIMPORT DWORD PALAPI GetFileAttributesW( IN LPCWSTR lpFileName); #ifdef UNICODE #define GetFileAttributes GetFileAttributesW #else #define GetFileAttributes GetFileAttributesA #endif typedef enum _GET_FILEEX_INFO_LEVELS { GetFileExInfoStandard } GET_FILEEX_INFO_LEVELS; typedef enum _FINDEX_INFO_LEVELS { FindExInfoStandard, FindExInfoBasic, FindExInfoMaxInfoLevel } FINDEX_INFO_LEVELS; typedef enum _FINDEX_SEARCH_OPS { FindExSearchNameMatch, FindExSearchLimitToDirectories, FindExSearchLimitToDevices, FindExSearchMaxSearchOp } FINDEX_SEARCH_OPS; typedef struct _WIN32_FILE_ATTRIBUTE_DATA { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; } WIN32_FILE_ATTRIBUTE_DATA, *LPWIN32_FILE_ATTRIBUTE_DATA; PALIMPORT BOOL PALAPI GetFileAttributesExW( IN LPCWSTR lpFileName, IN GET_FILEEX_INFO_LEVELS fInfoLevelId, OUT LPVOID lpFileInformation); #ifdef UNICODE #define GetFileAttributesEx GetFileAttributesExW #endif typedef struct _OVERLAPPED { ULONG_PTR Internal; ULONG_PTR InternalHigh; DWORD Offset; DWORD OffsetHigh; HANDLE hEvent; } OVERLAPPED, *LPOVERLAPPED; PALIMPORT BOOL PALAPI WriteFile( IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped); PALIMPORT BOOL PALAPI ReadFile( IN HANDLE hFile, OUT LPVOID lpBuffer, IN DWORD nNumberOfBytesToRead, OUT LPDWORD lpNumberOfBytesRead, IN LPOVERLAPPED lpOverlapped); #define STD_INPUT_HANDLE ((DWORD)-10) #define STD_OUTPUT_HANDLE ((DWORD)-11) #define STD_ERROR_HANDLE ((DWORD)-12) PALIMPORT HANDLE PALAPI GetStdHandle( IN DWORD nStdHandle); PALIMPORT BOOL PALAPI SetEndOfFile( IN HANDLE hFile); PALIMPORT DWORD PALAPI SetFilePointer( IN HANDLE hFile, IN LONG lDistanceToMove, IN PLONG lpDistanceToMoveHigh, IN DWORD dwMoveMethod); PALIMPORT BOOL PALAPI SetFilePointerEx( IN HANDLE hFile, IN LARGE_INTEGER liDistanceToMove, OUT PLARGE_INTEGER lpNewFilePointer, IN DWORD dwMoveMethod); PALIMPORT DWORD PALAPI GetFileSize( IN HANDLE hFile, OUT LPDWORD lpFileSizeHigh); PALIMPORT BOOL PALAPI GetFileSizeEx( IN HANDLE hFile, OUT PLARGE_INTEGER lpFileSize); PALIMPORT VOID PALAPI GetSystemTimeAsFileTime( OUT LPFILETIME lpSystemTimeAsFileTime); typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds; } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME; PALIMPORT VOID PALAPI GetSystemTime( OUT LPSYSTEMTIME lpSystemTime); PALIMPORT BOOL PALAPI FileTimeToSystemTime( IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime); PALIMPORT BOOL PALAPI FlushFileBuffers( IN HANDLE hFile); PALIMPORT UINT PALAPI GetConsoleOutputCP(); PALIMPORT DWORD PALAPI GetFullPathNameW( IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart); #ifdef UNICODE #define GetFullPathName GetFullPathNameW #else #define GetFullPathName GetFullPathNameA #endif PALIMPORT UINT PALAPI GetTempFileNameW( IN LPCWSTR lpPathName, IN LPCWSTR lpPrefixString, IN UINT uUnique, OUT LPWSTR lpTempFileName); #ifdef UNICODE #define GetTempFileName GetTempFileNameW #else #define GetTempFileName GetTempFileNameA #endif PALIMPORT DWORD PALAPI GetTempPathW( IN DWORD nBufferLength, OUT LPWSTR lpBuffer); PALIMPORT DWORD PALAPI GetTempPathA( IN DWORD nBufferLength, OUT LPSTR lpBuffer); #ifdef UNICODE #define GetTempPath GetTempPathW #else #define GetTempPath GetTempPathA #endif PALIMPORT DWORD PALAPI GetCurrentDirectoryW( IN DWORD nBufferLength, OUT LPWSTR lpBuffer); #ifdef UNICODE #define GetCurrentDirectory GetCurrentDirectoryW #else #define GetCurrentDirectory GetCurrentDirectoryA #endif PALIMPORT HANDLE PALAPI CreateSemaphoreExW( IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, IN LONG lInitialCount, IN LONG lMaximumCount, IN LPCWSTR lpName, IN /*_Reserved_*/ DWORD dwFlags, IN DWORD dwDesiredAccess); PALIMPORT HANDLE PALAPI OpenSemaphoreW( IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN LPCWSTR lpName); #define CreateSemaphoreEx CreateSemaphoreExW PALIMPORT BOOL PALAPI ReleaseSemaphore( IN HANDLE hSemaphore, IN LONG lReleaseCount, OUT LPLONG lpPreviousCount); PALIMPORT HANDLE PALAPI CreateEventW( IN LPSECURITY_ATTRIBUTES lpEventAttributes, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName); PALIMPORT HANDLE PALAPI CreateEventExW( IN LPSECURITY_ATTRIBUTES lpEventAttributes, IN LPCWSTR lpName, IN DWORD dwFlags, IN DWORD dwDesiredAccess); // CreateEventExW: dwFlags #define CREATE_EVENT_MANUAL_RESET ((DWORD)0x1) #define CREATE_EVENT_INITIAL_SET ((DWORD)0x2) #define CreateEvent CreateEventW PALIMPORT BOOL PALAPI SetEvent( IN HANDLE hEvent); PALIMPORT BOOL PALAPI ResetEvent( IN HANDLE hEvent); PALIMPORT HANDLE PALAPI OpenEventW( IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN LPCWSTR lpName); #ifdef UNICODE #define OpenEvent OpenEventW #endif PALIMPORT HANDLE PALAPI CreateMutexW( IN LPSECURITY_ATTRIBUTES lpMutexAttributes, IN BOOL bInitialOwner, IN LPCWSTR lpName); PALIMPORT HANDLE PALAPI CreateMutexExW( IN LPSECURITY_ATTRIBUTES lpMutexAttributes, IN LPCWSTR lpName, IN DWORD dwFlags, IN DWORD dwDesiredAccess); // CreateMutexExW: dwFlags #define CREATE_MUTEX_INITIAL_OWNER ((DWORD)0x1) #define CreateMutex CreateMutexW PALIMPORT HANDLE PALAPI OpenMutexW( IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN LPCWSTR lpName); #ifdef UNICODE #define OpenMutex OpenMutexW #endif PALIMPORT BOOL PALAPI ReleaseMutex( IN HANDLE hMutex); PALIMPORT DWORD PALAPI GetCurrentProcessId(); PALIMPORT DWORD PALAPI GetCurrentSessionId(); PALIMPORT HANDLE PALAPI GetCurrentProcess(); PALIMPORT DWORD PALAPI GetCurrentThreadId(); PALIMPORT size_t PALAPI PAL_GetCurrentOSThreadId(); // To work around multiply-defined symbols in the Carbon framework. #define GetCurrentThread PAL_GetCurrentThread PALIMPORT HANDLE PALAPI GetCurrentThread(); #define STARTF_USESTDHANDLES 0x00000100 typedef struct _STARTUPINFOW { DWORD cb; LPWSTR lpReserved_PAL_Undefined; LPWSTR lpDesktop_PAL_Undefined; LPWSTR lpTitle_PAL_Undefined; DWORD dwX_PAL_Undefined; DWORD dwY_PAL_Undefined; DWORD dwXSize_PAL_Undefined; DWORD dwYSize_PAL_Undefined; DWORD dwXCountChars_PAL_Undefined; DWORD dwYCountChars_PAL_Undefined; DWORD dwFillAttribute_PAL_Undefined; DWORD dwFlags; WORD wShowWindow_PAL_Undefined; WORD cbReserved2_PAL_Undefined; LPBYTE lpReserved2_PAL_Undefined; HANDLE hStdInput; HANDLE hStdOutput; HANDLE hStdError; } STARTUPINFOW, *LPSTARTUPINFOW; typedef STARTUPINFOW STARTUPINFO; typedef LPSTARTUPINFOW LPSTARTUPINFO; #define CREATE_NEW_CONSOLE 0x00000010 #define NORMAL_PRIORITY_CLASS 0x00000020 typedef struct _PROCESS_INFORMATION { HANDLE hProcess; HANDLE hThread; DWORD dwProcessId; DWORD dwThreadId_PAL_Undefined; } PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION; PALIMPORT BOOL PALAPI CreateProcessW( IN LPCWSTR lpApplicationName, IN LPWSTR lpCommandLine, IN LPSECURITY_ATTRIBUTES lpProcessAttributes, IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN BOOL bInheritHandles, IN DWORD dwCreationFlags, IN LPVOID lpEnvironment, IN LPCWSTR lpCurrentDirectory, IN LPSTARTUPINFOW lpStartupInfo, OUT LPPROCESS_INFORMATION lpProcessInformation); #define CreateProcess CreateProcessW PALIMPORT PAL_NORETURN VOID PALAPI ExitProcess( IN UINT uExitCode); PALIMPORT BOOL PALAPI TerminateProcess( IN HANDLE hProcess, IN UINT uExitCode); PALIMPORT BOOL PALAPI GetExitCodeProcess( IN HANDLE hProcess, IN LPDWORD lpExitCode); PALIMPORT BOOL PALAPI GetProcessTimes( IN HANDLE hProcess, OUT LPFILETIME lpCreationTime, OUT LPFILETIME lpExitTime, OUT LPFILETIME lpKernelTime, OUT LPFILETIME lpUserTime); #define MAXIMUM_WAIT_OBJECTS 64 #define WAIT_OBJECT_0 0 #define WAIT_ABANDONED 0x00000080 #define WAIT_ABANDONED_0 0x00000080 #define WAIT_TIMEOUT 258 #define WAIT_FAILED ((DWORD)0xFFFFFFFF) #define INFINITE 0xFFFFFFFF // Infinite timeout PALIMPORT DWORD PALAPI WaitForSingleObject( IN HANDLE hHandle, IN DWORD dwMilliseconds); PALIMPORT DWORD PALAPI PAL_WaitForSingleObjectPrioritized( IN HANDLE hHandle, IN DWORD dwMilliseconds); PALIMPORT DWORD PALAPI WaitForSingleObjectEx( IN HANDLE hHandle, IN DWORD dwMilliseconds, IN BOOL bAlertable); PALIMPORT DWORD PALAPI WaitForMultipleObjects( IN DWORD nCount, IN CONST HANDLE *lpHandles, IN BOOL bWaitAll, IN DWORD dwMilliseconds); PALIMPORT DWORD PALAPI WaitForMultipleObjectsEx( IN DWORD nCount, IN CONST HANDLE *lpHandles, IN BOOL bWaitAll, IN DWORD dwMilliseconds, IN BOOL bAlertable); PALIMPORT DWORD PALAPI SignalObjectAndWait( IN HANDLE hObjectToSignal, IN HANDLE hObjectToWaitOn, IN DWORD dwMilliseconds, IN BOOL bAlertable); #define DUPLICATE_CLOSE_SOURCE 0x00000001 #define DUPLICATE_SAME_ACCESS 0x00000002 PALIMPORT BOOL PALAPI DuplicateHandle( IN HANDLE hSourceProcessHandle, IN HANDLE hSourceHandle, IN HANDLE hTargetProcessHandle, OUT LPHANDLE lpTargetHandle, IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwOptions); PALIMPORT VOID PALAPI Sleep( IN DWORD dwMilliseconds); PALIMPORT DWORD PALAPI SleepEx( IN DWORD dwMilliseconds, IN BOOL bAlertable); PALIMPORT BOOL PALAPI SwitchToThread(); #define DEBUG_PROCESS 0x00000001 #define DEBUG_ONLY_THIS_PROCESS 0x00000002 #define CREATE_SUSPENDED 0x00000004 #define STACK_SIZE_PARAM_IS_A_RESERVATION 0x00010000 PALIMPORT HANDLE PALAPI CreateThread( IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId); PALIMPORT HANDLE PALAPI PAL_CreateThread64( IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT SIZE_T* pThreadId); PALIMPORT PAL_NORETURN VOID PALAPI ExitThread( IN DWORD dwExitCode); PALIMPORT DWORD PALAPI ResumeThread( IN HANDLE hThread); typedef VOID (PALAPI_NOEXPORT *PAPCFUNC)(ULONG_PTR dwParam); PALIMPORT DWORD PALAPI QueueUserAPC( IN PAPCFUNC pfnAPC, IN HANDLE hThread, IN ULONG_PTR dwData); #ifdef HOST_X86 // // *********************************************************************************** // // NOTE: These context definitions are replicated in ndp/clr/src/debug/inc/DbgTargetContext.h (for the // purposes manipulating contexts from different platforms during remote debugging). Be sure to keep those // definitions in sync if you make any changes here. // // *********************************************************************************** // #define SIZE_OF_80387_REGISTERS 80 #define CONTEXT_i386 0x00010000 #define CONTEXT_CONTROL (CONTEXT_i386 | 0x00000001L) // SS:SP, CS:IP, FLAGS, BP #define CONTEXT_INTEGER (CONTEXT_i386 | 0x00000002L) // AX, BX, CX, DX, SI, DI #define CONTEXT_SEGMENTS (CONTEXT_i386 | 0x00000004L) #define CONTEXT_FLOATING_POINT (CONTEXT_i386 | 0x00000008L) // 387 state #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x00000010L) #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS) #define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386 | 0x00000020L) #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | CONTEXT_EXTENDED_REGISTERS) #define MAXIMUM_SUPPORTED_EXTENSION 512 #define CONTEXT_XSTATE (CONTEXT_i386 | 0x40L) #define CONTEXT_EXCEPTION_ACTIVE 0x8000000L #define CONTEXT_SERVICE_ACTIVE 0x10000000L #define CONTEXT_EXCEPTION_REQUEST 0x40000000L #define CONTEXT_EXCEPTION_REPORTING 0x80000000L // // This flag is set by the unwinder if it has unwound to a call // site, and cleared whenever it unwinds through a trap frame. // It is used by language-specific exception handlers to help // differentiate exception scopes during dispatching. // #define CONTEXT_UNWOUND_TO_CALL 0x20000000 typedef struct _FLOATING_SAVE_AREA { DWORD ControlWord; DWORD StatusWord; DWORD TagWord; DWORD ErrorOffset; DWORD ErrorSelector; DWORD DataOffset; DWORD DataSelector; BYTE RegisterArea[SIZE_OF_80387_REGISTERS]; DWORD Cr0NpxState; } FLOATING_SAVE_AREA; typedef FLOATING_SAVE_AREA *PFLOATING_SAVE_AREA; typedef struct _CONTEXT { ULONG ContextFlags; ULONG Dr0_PAL_Undefined; ULONG Dr1_PAL_Undefined; ULONG Dr2_PAL_Undefined; ULONG Dr3_PAL_Undefined; ULONG Dr6_PAL_Undefined; ULONG Dr7_PAL_Undefined; FLOATING_SAVE_AREA FloatSave; ULONG SegGs_PAL_Undefined; ULONG SegFs_PAL_Undefined; ULONG SegEs_PAL_Undefined; ULONG SegDs_PAL_Undefined; ULONG Edi; ULONG Esi; ULONG Ebx; ULONG Edx; ULONG Ecx; ULONG Eax; ULONG Ebp; ULONG Eip; ULONG SegCs; ULONG EFlags; ULONG Esp; ULONG SegSs; UCHAR ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION]; } CONTEXT, *PCONTEXT, *LPCONTEXT; // To support saving and loading xmm register context we need to know the offset in the ExtendedRegisters // section at which they are stored. This has been determined experimentally since I have found no // documentation thus far but it corresponds to the offset we'd expect if a fxsave instruction was used to // store the regular FP state along with the XMM registers at the start of the extended registers section. // Technically the offset doesn't really matter if no code in the PAL or runtime knows what the offset should // be either (as long as we're consistent across GetThreadContext() and SetThreadContext() and we don't // support any other values in the ExtendedRegisters) but we might as well be as accurate as we can. #define CONTEXT_EXREG_XMM_OFFSET 160 typedef struct _KNONVOLATILE_CONTEXT { DWORD Edi; DWORD Esi; DWORD Ebx; DWORD Ebp; } KNONVOLATILE_CONTEXT, *PKNONVOLATILE_CONTEXT; typedef struct _KNONVOLATILE_CONTEXT_POINTERS { // The ordering of these fields should be aligned with that // of corresponding fields in CONTEXT // // (See FillRegDisplay in inc/regdisp.h for details) PDWORD Edi; PDWORD Esi; PDWORD Ebx; PDWORD Edx; PDWORD Ecx; PDWORD Eax; PDWORD Ebp; } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS; #elif defined(HOST_AMD64) // copied from winnt.h #define CONTEXT_AMD64 0x100000 #define CONTEXT_CONTROL (CONTEXT_AMD64 | 0x1L) #define CONTEXT_INTEGER (CONTEXT_AMD64 | 0x2L) #define CONTEXT_SEGMENTS (CONTEXT_AMD64 | 0x4L) #define CONTEXT_FLOATING_POINT (CONTEXT_AMD64 | 0x8L) #define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x10L) #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT) #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS) #define CONTEXT_XSTATE (CONTEXT_AMD64 | 0x40L) #define CONTEXT_EXCEPTION_ACTIVE 0x8000000 #define CONTEXT_SERVICE_ACTIVE 0x10000000 #define CONTEXT_EXCEPTION_REQUEST 0x40000000 #define CONTEXT_EXCEPTION_REPORTING 0x80000000 typedef struct DECLSPEC_ALIGN(16) _M128A { ULONGLONG Low; LONGLONG High; } M128A, *PM128A; typedef struct _XMM_SAVE_AREA32 { WORD ControlWord; WORD StatusWord; BYTE TagWord; BYTE Reserved1; WORD ErrorOpcode; DWORD ErrorOffset; WORD ErrorSelector; WORD Reserved2; DWORD DataOffset; WORD DataSelector; WORD Reserved3; DWORD MxCsr; DWORD MxCsr_Mask; M128A FloatRegisters[8]; M128A XmmRegisters[16]; BYTE Reserved4[96]; } XMM_SAVE_AREA32, *PXMM_SAVE_AREA32; #define LEGACY_SAVE_AREA_LENGTH sizeof(XMM_SAVE_AREA32) // // Context Frame // // This frame has a several purposes: 1) it is used as an argument to // NtContinue, 2) is is used to constuct a call frame for APC delivery, // and 3) it is used in the user level thread creation routines. // // // The flags field within this record controls the contents of a CONTEXT // record. // // If the context record is used as an input parameter, then for each // portion of the context record controlled by a flag whose value is // set, it is assumed that that portion of the context record contains // valid context. If the context record is being used to modify a threads // context, then only that portion of the threads context is modified. // // If the context record is used as an output parameter to capture the // context of a thread, then only those portions of the thread's context // corresponding to set flags will be returned. // // CONTEXT_CONTROL specifies SegSs, Rsp, SegCs, Rip, and EFlags. // // CONTEXT_INTEGER specifies Rax, Rcx, Rdx, Rbx, Rbp, Rsi, Rdi, and R8-R15. // // CONTEXT_SEGMENTS specifies SegDs, SegEs, SegFs, and SegGs. // // CONTEXT_DEBUG_REGISTERS specifies Dr0-Dr3 and Dr6-Dr7. // // CONTEXT_MMX_REGISTERS specifies the floating point and extended registers // Mm0/St0-Mm7/St7 and Xmm0-Xmm15). // typedef struct DECLSPEC_ALIGN(16) _CONTEXT { // // Register parameter home addresses. // // N.B. These fields are for convience - they could be used to extend the // context record in the future. // DWORD64 P1Home; DWORD64 P2Home; DWORD64 P3Home; DWORD64 P4Home; DWORD64 P5Home; DWORD64 P6Home; // // Control flags. // DWORD ContextFlags; DWORD MxCsr; // // Segment Registers and processor flags. // WORD SegCs; WORD SegDs; WORD SegEs; WORD SegFs; WORD SegGs; WORD SegSs; DWORD EFlags; // // Debug registers // DWORD64 Dr0; DWORD64 Dr1; DWORD64 Dr2; DWORD64 Dr3; DWORD64 Dr6; DWORD64 Dr7; // // Integer registers. // DWORD64 Rax; DWORD64 Rcx; DWORD64 Rdx; DWORD64 Rbx; DWORD64 Rsp; DWORD64 Rbp; DWORD64 Rsi; DWORD64 Rdi; DWORD64 R8; DWORD64 R9; DWORD64 R10; DWORD64 R11; DWORD64 R12; DWORD64 R13; DWORD64 R14; DWORD64 R15; // // Program counter. // DWORD64 Rip; // // Floating point state. // union { XMM_SAVE_AREA32 FltSave; struct { M128A Header[2]; M128A Legacy[8]; M128A Xmm0; M128A Xmm1; M128A Xmm2; M128A Xmm3; M128A Xmm4; M128A Xmm5; M128A Xmm6; M128A Xmm7; M128A Xmm8; M128A Xmm9; M128A Xmm10; M128A Xmm11; M128A Xmm12; M128A Xmm13; M128A Xmm14; M128A Xmm15; }; }; // // Vector registers. // M128A VectorRegister[26]; DWORD64 VectorControl; // // Special debug control registers. // DWORD64 DebugControl; DWORD64 LastBranchToRip; DWORD64 LastBranchFromRip; DWORD64 LastExceptionToRip; DWORD64 LastExceptionFromRip; } CONTEXT, *PCONTEXT, *LPCONTEXT; // // Nonvolatile context pointer record. // typedef struct _KNONVOLATILE_CONTEXT_POINTERS { union { PM128A FloatingContext[16]; struct { PM128A Xmm0; PM128A Xmm1; PM128A Xmm2; PM128A Xmm3; PM128A Xmm4; PM128A Xmm5; PM128A Xmm6; PM128A Xmm7; PM128A Xmm8; PM128A Xmm9; PM128A Xmm10; PM128A Xmm11; PM128A Xmm12; PM128A Xmm13; PM128A Xmm14; PM128A Xmm15; } ; } ; union { PDWORD64 IntegerContext[16]; struct { PDWORD64 Rax; PDWORD64 Rcx; PDWORD64 Rdx; PDWORD64 Rbx; PDWORD64 Rsp; PDWORD64 Rbp; PDWORD64 Rsi; PDWORD64 Rdi; PDWORD64 R8; PDWORD64 R9; PDWORD64 R10; PDWORD64 R11; PDWORD64 R12; PDWORD64 R13; PDWORD64 R14; PDWORD64 R15; } ; } ; } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS; #elif defined(HOST_ARM) #define CONTEXT_ARM 0x00200000L // end_wx86 #define CONTEXT_CONTROL (CONTEXT_ARM | 0x1L) #define CONTEXT_INTEGER (CONTEXT_ARM | 0x2L) #define CONTEXT_FLOATING_POINT (CONTEXT_ARM | 0x4L) #define CONTEXT_DEBUG_REGISTERS (CONTEXT_ARM | 0x8L) #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT) #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS) #define CONTEXT_EXCEPTION_ACTIVE 0x8000000L #define CONTEXT_SERVICE_ACTIVE 0x10000000L #define CONTEXT_EXCEPTION_REQUEST 0x40000000L #define CONTEXT_EXCEPTION_REPORTING 0x80000000L // // This flag is set by the unwinder if it has unwound to a call // site, and cleared whenever it unwinds through a trap frame. // It is used by language-specific exception handlers to help // differentiate exception scopes during dispatching. // #define CONTEXT_UNWOUND_TO_CALL 0x20000000 // // Specify the number of breakpoints and watchpoints that the OS // will track. Architecturally, ARM supports up to 16. In practice, // however, almost no one implements more than 4 of each. // #define ARM_MAX_BREAKPOINTS 8 #define ARM_MAX_WATCHPOINTS 1 typedef struct _NEON128 { ULONGLONG Low; LONGLONG High; } NEON128, *PNEON128; // // Context Frame // // This frame has a several purposes: 1) it is used as an argument to // NtContinue, 2) it is used to constuct a call frame for APC delivery, // and 3) it is used in the user level thread creation routines. // // // The flags field within this record controls the contents of a CONTEXT // record. // // If the context record is used as an input parameter, then for each // portion of the context record controlled by a flag whose value is // set, it is assumed that that portion of the context record contains // valid context. If the context record is being used to modify a threads // context, then only that portion of the threads context is modified. // // If the context record is used as an output parameter to capture the // context of a thread, then only those portions of the thread's context // corresponding to set flags will be returned. // // CONTEXT_CONTROL specifies Sp, Lr, Pc, and Cpsr // // CONTEXT_INTEGER specifies R0-R12 // // CONTEXT_FLOATING_POINT specifies Q0-Q15 / D0-D31 / S0-S31 // // CONTEXT_DEBUG_REGISTERS specifies up to 16 of DBGBVR, DBGBCR, DBGWVR, // DBGWCR. // typedef struct DECLSPEC_ALIGN(8) _CONTEXT { // // Control flags. // DWORD ContextFlags; // // Integer registers // DWORD R0; DWORD R1; DWORD R2; DWORD R3; DWORD R4; DWORD R5; DWORD R6; DWORD R7; DWORD R8; DWORD R9; DWORD R10; DWORD R11; DWORD R12; // // Control Registers // DWORD Sp; DWORD Lr; DWORD Pc; DWORD Cpsr; // // Floating Point/NEON Registers // DWORD Fpscr; DWORD Padding; union { NEON128 Q[16]; ULONGLONG D[32]; DWORD S[32]; }; // // Debug registers // DWORD Bvr[ARM_MAX_BREAKPOINTS]; DWORD Bcr[ARM_MAX_BREAKPOINTS]; DWORD Wvr[ARM_MAX_WATCHPOINTS]; DWORD Wcr[ARM_MAX_WATCHPOINTS]; DWORD Padding2[2]; } CONTEXT, *PCONTEXT, *LPCONTEXT; // // Nonvolatile context pointer record. // typedef struct _KNONVOLATILE_CONTEXT_POINTERS { PDWORD R4; PDWORD R5; PDWORD R6; PDWORD R7; PDWORD R8; PDWORD R9; PDWORD R10; PDWORD R11; PDWORD Lr; PULONGLONG D8; PULONGLONG D9; PULONGLONG D10; PULONGLONG D11; PULONGLONG D12; PULONGLONG D13; PULONGLONG D14; PULONGLONG D15; } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS; typedef struct _IMAGE_ARM_RUNTIME_FUNCTION_ENTRY { DWORD BeginAddress; DWORD EndAddress; union { DWORD UnwindData; struct { DWORD Flag : 2; DWORD FunctionLength : 11; DWORD Ret : 2; DWORD H : 1; DWORD Reg : 3; DWORD R : 1; DWORD L : 1; DWORD C : 1; DWORD StackAdjust : 10; }; }; } IMAGE_ARM_RUNTIME_FUNCTION_ENTRY, * PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY; #elif defined(HOST_ARM64) #define CONTEXT_ARM64 0x00400000L #define CONTEXT_CONTROL (CONTEXT_ARM64 | 0x1L) #define CONTEXT_INTEGER (CONTEXT_ARM64 | 0x2L) #define CONTEXT_FLOATING_POINT (CONTEXT_ARM64 | 0x4L) #define CONTEXT_DEBUG_REGISTERS (CONTEXT_ARM64 | 0x8L) #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT) #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS) #define CONTEXT_EXCEPTION_ACTIVE 0x8000000L #define CONTEXT_SERVICE_ACTIVE 0x10000000L #define CONTEXT_EXCEPTION_REQUEST 0x40000000L #define CONTEXT_EXCEPTION_REPORTING 0x80000000L // // This flag is set by the unwinder if it has unwound to a call // site, and cleared whenever it unwinds through a trap frame. // It is used by language-specific exception handlers to help // differentiate exception scopes during dispatching. // #define CONTEXT_UNWOUND_TO_CALL 0x20000000 // // Define initial Cpsr/Fpscr value // #define INITIAL_CPSR 0x10 #define INITIAL_FPSCR 0 // begin_ntoshvp // // Specify the number of breakpoints and watchpoints that the OS // will track. Architecturally, ARM64 supports up to 16. In practice, // however, almost no one implements more than 4 of each. // #define ARM64_MAX_BREAKPOINTS 8 #define ARM64_MAX_WATCHPOINTS 2 // // Context Frame // // This frame has a several purposes: 1) it is used as an argument to // NtContinue, 2) it is used to constuct a call frame for APC delivery, // and 3) it is used in the user level thread creation routines. // // // The flags field within this record controls the contents of a CONTEXT // record. // // If the context record is used as an input parameter, then for each // portion of the context record controlled by a flag whose value is // set, it is assumed that that portion of the context record contains // valid context. If the context record is being used to modify a threads // context, then only that portion of the threads context is modified. // // If the context record is used as an output parameter to capture the // context of a thread, then only those portions of the thread's context // corresponding to set flags will be returned. // // CONTEXT_CONTROL specifies Sp, Lr, Pc, and Cpsr // // CONTEXT_INTEGER specifies R0-R12 // // CONTEXT_FLOATING_POINT specifies Q0-Q15 / D0-D31 / S0-S31 // // CONTEXT_DEBUG_REGISTERS specifies up to 16 of DBGBVR, DBGBCR, DBGWVR, // DBGWCR. // typedef struct _NEON128 { ULONGLONG Low; LONGLONG High; } NEON128, *PNEON128; typedef struct DECLSPEC_ALIGN(16) _CONTEXT { // // Control flags. // /* +0x000 */ DWORD ContextFlags; // // Integer registers // /* +0x004 */ DWORD Cpsr; // NZVF + DAIF + CurrentEL + SPSel /* +0x008 */ union { struct { DWORD64 X0; DWORD64 X1; DWORD64 X2; DWORD64 X3; DWORD64 X4; DWORD64 X5; DWORD64 X6; DWORD64 X7; DWORD64 X8; DWORD64 X9; DWORD64 X10; DWORD64 X11; DWORD64 X12; DWORD64 X13; DWORD64 X14; DWORD64 X15; DWORD64 X16; DWORD64 X17; DWORD64 X18; DWORD64 X19; DWORD64 X20; DWORD64 X21; DWORD64 X22; DWORD64 X23; DWORD64 X24; DWORD64 X25; DWORD64 X26; DWORD64 X27; DWORD64 X28; }; DWORD64 X[29]; }; /* +0x0f0 */ DWORD64 Fp; /* +0x0f8 */ DWORD64 Lr; /* +0x100 */ DWORD64 Sp; /* +0x108 */ DWORD64 Pc; // // Floating Point/NEON Registers // /* +0x110 */ NEON128 V[32]; /* +0x310 */ DWORD Fpcr; /* +0x314 */ DWORD Fpsr; // // Debug registers // /* +0x318 */ DWORD Bcr[ARM64_MAX_BREAKPOINTS]; /* +0x338 */ DWORD64 Bvr[ARM64_MAX_BREAKPOINTS]; /* +0x378 */ DWORD Wcr[ARM64_MAX_WATCHPOINTS]; /* +0x380 */ DWORD64 Wvr[ARM64_MAX_WATCHPOINTS]; /* +0x390 */ } CONTEXT, *PCONTEXT, *LPCONTEXT; // // Nonvolatile context pointer record. // typedef struct _KNONVOLATILE_CONTEXT_POINTERS { PDWORD64 X19; PDWORD64 X20; PDWORD64 X21; PDWORD64 X22; PDWORD64 X23; PDWORD64 X24; PDWORD64 X25; PDWORD64 X26; PDWORD64 X27; PDWORD64 X28; PDWORD64 Fp; PDWORD64 Lr; PDWORD64 D8; PDWORD64 D9; PDWORD64 D10; PDWORD64 D11; PDWORD64 D12; PDWORD64 D13; PDWORD64 D14; PDWORD64 D15; } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS; #elif defined(HOST_S390X) // There is no context for s390x defined in winnt.h, // so we re-use the amd64 values. #define CONTEXT_S390X 0x100000 #define CONTEXT_CONTROL (CONTEXT_S390X | 0x1L) #define CONTEXT_INTEGER (CONTEXT_S390X | 0x2L) #define CONTEXT_FLOATING_POINT (CONTEXT_S390X | 0x4L) #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT) #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT) #define CONTEXT_EXCEPTION_ACTIVE 0x8000000 #define CONTEXT_SERVICE_ACTIVE 0x10000000 #define CONTEXT_EXCEPTION_REQUEST 0x40000000 #define CONTEXT_EXCEPTION_REPORTING 0x80000000 typedef struct DECLSPEC_ALIGN(8) _CONTEXT { // // Control flags. // DWORD ContextFlags; // // Integer registers. // union { DWORD64 Gpr[16]; struct { DWORD64 R0; DWORD64 R1; DWORD64 R2; DWORD64 R3; DWORD64 R4; DWORD64 R5; DWORD64 R6; DWORD64 R7; DWORD64 R8; DWORD64 R9; DWORD64 R10; DWORD64 R11; DWORD64 R12; DWORD64 R13; DWORD64 R14; DWORD64 R15; }; }; // // Floating-point registers. // union { DWORD64 Fpr[16]; struct { DWORD64 F0; DWORD64 F1; DWORD64 F2; DWORD64 F3; DWORD64 F4; DWORD64 F5; DWORD64 F6; DWORD64 F7; DWORD64 F8; DWORD64 F9; DWORD64 F10; DWORD64 F11; DWORD64 F12; DWORD64 F13; DWORD64 F14; DWORD64 F15; }; }; // // Control registers. // DWORD64 PSWMask; DWORD64 PSWAddr; } CONTEXT, *PCONTEXT, *LPCONTEXT; // // Nonvolatile context pointer record. // typedef struct _KNONVOLATILE_CONTEXT_POINTERS { PDWORD64 R6; PDWORD64 R7; PDWORD64 R8; PDWORD64 R9; PDWORD64 R10; PDWORD64 R11; PDWORD64 R12; PDWORD64 R13; PDWORD64 R14; PDWORD64 R15; } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS; #else #error Unknown architecture for defining CONTEXT. #endif PALIMPORT BOOL PALAPI GetThreadContext( IN HANDLE hThread, IN OUT LPCONTEXT lpContext); PALIMPORT BOOL PALAPI SetThreadContext( IN HANDLE hThread, IN CONST CONTEXT *lpContext); #define THREAD_BASE_PRIORITY_LOWRT 15 #define THREAD_BASE_PRIORITY_MAX 2 #define THREAD_BASE_PRIORITY_MIN (-2) #define THREAD_BASE_PRIORITY_IDLE (-15) #define THREAD_PRIORITY_LOWEST THREAD_BASE_PRIORITY_MIN #define THREAD_PRIORITY_BELOW_NORMAL (THREAD_PRIORITY_LOWEST+1) #define THREAD_PRIORITY_NORMAL 0 #define THREAD_PRIORITY_HIGHEST THREAD_BASE_PRIORITY_MAX #define THREAD_PRIORITY_ABOVE_NORMAL (THREAD_PRIORITY_HIGHEST-1) #define THREAD_PRIORITY_ERROR_RETURN (MAXLONG) #define THREAD_PRIORITY_TIME_CRITICAL THREAD_BASE_PRIORITY_LOWRT #define THREAD_PRIORITY_IDLE THREAD_BASE_PRIORITY_IDLE PALIMPORT int PALAPI GetThreadPriority( IN HANDLE hThread); PALIMPORT BOOL PALAPI SetThreadPriority( IN HANDLE hThread, IN int nPriority); PALIMPORT BOOL PALAPI GetThreadTimes( IN HANDLE hThread, OUT LPFILETIME lpCreationTime, OUT LPFILETIME lpExitTime, OUT LPFILETIME lpKernelTime, OUT LPFILETIME lpUserTime); PALIMPORT HRESULT PALAPI SetThreadDescription( IN HANDLE hThread, IN PCWSTR lpThreadDescription ); #define TLS_OUT_OF_INDEXES ((DWORD)0xFFFFFFFF) PALIMPORT PVOID PALAPI PAL_GetStackBase(); PALIMPORT PVOID PALAPI PAL_GetStackLimit(); PALIMPORT DWORD PALAPI PAL_GetLogicalCpuCountFromOS(); PALIMPORT DWORD PALAPI PAL_GetTotalCpuCount(); PALIMPORT size_t PALAPI PAL_GetRestrictedPhysicalMemoryLimit(); PALIMPORT BOOL PALAPI PAL_GetPhysicalMemoryUsed(size_t* val); PALIMPORT BOOL PALAPI PAL_GetCpuLimit(UINT* val); PALIMPORT size_t PALAPI PAL_GetLogicalProcessorCacheSizeFromOS(); #define GetLogicalProcessorCacheSizeFromOS PAL_GetLogicalProcessorCacheSizeFromOS typedef BOOL(*UnwindReadMemoryCallback)(PVOID address, PVOID buffer, SIZE_T size); PALIMPORT BOOL PALAPI PAL_VirtualUnwind(CONTEXT *context, KNONVOLATILE_CONTEXT_POINTERS *contextPointers); PALIMPORT BOOL PALAPI PAL_VirtualUnwindOutOfProc(CONTEXT *context, KNONVOLATILE_CONTEXT_POINTERS *contextPointers, PULONG64 functionStart, SIZE_T baseAddress, UnwindReadMemoryCallback readMemoryCallback); PALIMPORT BOOL PALAPI PAL_GetUnwindInfoSize(SIZE_T baseAddress, ULONG64 ehFrameHdrAddr, UnwindReadMemoryCallback readMemoryCallback, PULONG64 ehFrameStart, PULONG64 ehFrameSize); /* PAL_CS_NATIVE_DATA_SIZE is defined as sizeof(PAL_CRITICAL_SECTION_NATIVE_DATA) */ #if defined(__APPLE__) && defined(__i386__) #define PAL_CS_NATIVE_DATA_SIZE 76 #elif defined(__APPLE__) && defined(__x86_64__) #define PAL_CS_NATIVE_DATA_SIZE 120 #elif defined(__APPLE__) && defined(HOST_ARM64) #define PAL_CS_NATIVE_DATA_SIZE 120 #elif defined(__FreeBSD__) && defined(HOST_X86) #define PAL_CS_NATIVE_DATA_SIZE 12 #elif defined(__FreeBSD__) && defined(__x86_64__) #define PAL_CS_NATIVE_DATA_SIZE 24 #elif defined(__linux__) && defined(HOST_ARM) #define PAL_CS_NATIVE_DATA_SIZE 80 #elif defined(__linux__) && defined(HOST_ARM64) #define PAL_CS_NATIVE_DATA_SIZE 116 #elif defined(__linux__) && defined(__i386__) #define PAL_CS_NATIVE_DATA_SIZE 76 #elif defined(__linux__) && defined(__x86_64__) #define PAL_CS_NATIVE_DATA_SIZE 96 #elif defined(__linux__) && defined(HOST_S390X) #define PAL_CS_NATIVE_DATA_SIZE 96 #elif defined(__NetBSD__) && defined(__amd64__) #define PAL_CS_NATIVE_DATA_SIZE 96 #elif defined(__NetBSD__) && defined(__earm__) #define PAL_CS_NATIVE_DATA_SIZE 56 #elif defined(__NetBSD__) && defined(__i386__) #define PAL_CS_NATIVE_DATA_SIZE 56 #elif defined(__sun) && defined(__x86_64__) #define PAL_CS_NATIVE_DATA_SIZE 48 #else #warning #error PAL_CS_NATIVE_DATA_SIZE is not defined for this architecture #endif // typedef struct _CRITICAL_SECTION { PVOID DebugInfo; LONG LockCount; LONG RecursionCount; HANDLE OwningThread; ULONG_PTR SpinCount; #ifdef PAL_TRACK_CRITICAL_SECTIONS_DATA BOOL bInternal; #endif // PAL_TRACK_CRITICAL_SECTIONS_DATA volatile DWORD dwInitState; union CSNativeDataStorage { BYTE rgNativeDataStorage[PAL_CS_NATIVE_DATA_SIZE]; PVOID pvAlign; // make sure the storage is machine-pointer-size aligned } csnds; } CRITICAL_SECTION, *PCRITICAL_SECTION, *LPCRITICAL_SECTION; PALIMPORT VOID PALAPI EnterCriticalSection(IN OUT LPCRITICAL_SECTION lpCriticalSection); PALIMPORT VOID PALAPI LeaveCriticalSection(IN OUT LPCRITICAL_SECTION lpCriticalSection); PALIMPORT VOID PALAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection); PALIMPORT BOOL PALAPI InitializeCriticalSectionEx(LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount, DWORD Flags); PALIMPORT VOID PALAPI DeleteCriticalSection(IN OUT LPCRITICAL_SECTION lpCriticalSection); PALIMPORT BOOL PALAPI TryEnterCriticalSection(IN OUT LPCRITICAL_SECTION lpCriticalSection); #define SEM_FAILCRITICALERRORS 0x0001 #define SEM_NOOPENFILEERRORBOX 0x8000 PALIMPORT UINT PALAPI SetErrorMode( IN UINT uMode); #define PAGE_NOACCESS 0x01 #define PAGE_READONLY 0x02 #define PAGE_READWRITE 0x04 #define PAGE_WRITECOPY 0x08 #define PAGE_EXECUTE 0x10 #define PAGE_EXECUTE_READ 0x20 #define PAGE_EXECUTE_READWRITE 0x40 #define PAGE_EXECUTE_WRITECOPY 0x80 #define MEM_COMMIT 0x1000 #define MEM_RESERVE 0x2000 #define MEM_DECOMMIT 0x4000 #define MEM_RELEASE 0x8000 #define MEM_RESET 0x80000 #define MEM_FREE 0x10000 #define MEM_PRIVATE 0x20000 #define MEM_MAPPED 0x40000 #define MEM_TOP_DOWN 0x100000 #define MEM_WRITE_WATCH 0x200000 #define MEM_LARGE_PAGES 0x20000000 #define MEM_RESERVE_EXECUTABLE 0x40000000 // reserve memory using executable memory allocator PALIMPORT HANDLE PALAPI CreateFileMappingW( IN HANDLE hFile, IN LPSECURITY_ATTRIBUTES lpFileMappingAttributes, IN DWORD flProtect, IN DWORD dwMaxmimumSizeHigh, IN DWORD dwMaximumSizeLow, IN LPCWSTR lpName); #define CreateFileMapping CreateFileMappingW #define SECTION_QUERY 0x0001 #define SECTION_MAP_WRITE 0x0002 #define SECTION_MAP_READ 0x0004 #define SECTION_ALL_ACCESS (SECTION_MAP_READ | SECTION_MAP_WRITE) // diff from winnt.h #define FILE_MAP_WRITE SECTION_MAP_WRITE #define FILE_MAP_READ SECTION_MAP_READ #define FILE_MAP_ALL_ACCESS SECTION_ALL_ACCESS #define FILE_MAP_COPY SECTION_QUERY PALIMPORT HANDLE PALAPI OpenFileMappingW( IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN LPCWSTR lpName); #define OpenFileMapping OpenFileMappingW typedef INT_PTR (PALAPI_NOEXPORT *FARPROC)(); PALIMPORT LPVOID PALAPI MapViewOfFile( IN HANDLE hFileMappingObject, IN DWORD dwDesiredAccess, IN DWORD dwFileOffsetHigh, IN DWORD dwFileOffsetLow, IN SIZE_T dwNumberOfBytesToMap); PALIMPORT LPVOID PALAPI MapViewOfFileEx( IN HANDLE hFileMappingObject, IN DWORD dwDesiredAccess, IN DWORD dwFileOffsetHigh, IN DWORD dwFileOffsetLow, IN SIZE_T dwNumberOfBytesToMap, IN LPVOID lpBaseAddress); PALIMPORT BOOL PALAPI UnmapViewOfFile( IN LPCVOID lpBaseAddress); PALIMPORT HMODULE PALAPI LoadLibraryW( IN LPCWSTR lpLibFileName); PALIMPORT HMODULE PALAPI LoadLibraryExW( IN LPCWSTR lpLibFileName, IN /*Reserved*/ HANDLE hFile, IN DWORD dwFlags); PALIMPORT NATIVE_LIBRARY_HANDLE PALAPI PAL_LoadLibraryDirect( IN LPCWSTR lpLibFileName); PALIMPORT BOOL PALAPI PAL_FreeLibraryDirect( IN NATIVE_LIBRARY_HANDLE dl_handle); PALIMPORT HMODULE PALAPI PAL_GetPalHostModule(); PALIMPORT FARPROC PALAPI PAL_GetProcAddressDirect( IN NATIVE_LIBRARY_HANDLE dl_handle, IN LPCSTR lpProcName); /*++ Function: PAL_LOADLoadPEFile Abstract Loads a PE file into memory. Properly maps all of the sections in the PE file. Returns a pointer to the loaded base. Parameters: IN hFile - The file to load IN offset - offset within hFile where the PE "file" is located Return value: A valid base address if successful. 0 if failure --*/ PALIMPORT PVOID PALAPI PAL_LOADLoadPEFile(HANDLE hFile, size_t offset); /*++ PAL_LOADUnloadPEFile Unload a PE file that was loaded by PAL_LOADLoadPEFile(). Parameters: IN ptr - the file pointer returned by PAL_LOADLoadPEFile() Return value: TRUE - success FALSE - failure (incorrect ptr, etc.) --*/ PALIMPORT BOOL PALAPI PAL_LOADUnloadPEFile(PVOID ptr); /*++ PAL_LOADMarkSectionAsNotNeeded Mark a section as NotNeeded that was loaded by PAL_LOADLoadPEFile(). Parameters: IN ptr - the section address mapped by PAL_LOADLoadPEFile() Return value: TRUE - success FALSE - failure (incorrect ptr, etc.) --*/ BOOL PALAPI PAL_LOADMarkSectionAsNotNeeded(void * ptr); #ifdef UNICODE #define LoadLibrary LoadLibraryW #define LoadLibraryEx LoadLibraryExW #else #define LoadLibrary LoadLibraryA #define LoadLibraryEx LoadLibraryExA #endif PALIMPORT FARPROC PALAPI GetProcAddress( IN HMODULE hModule, IN LPCSTR lpProcName); PALIMPORT BOOL PALAPI FreeLibrary( IN OUT HMODULE hLibModule); PALIMPORT PAL_NORETURN VOID PALAPI FreeLibraryAndExitThread( IN HMODULE hLibModule, IN DWORD dwExitCode); PALIMPORT BOOL PALAPI DisableThreadLibraryCalls( IN HMODULE hLibModule); PALIMPORT DWORD PALAPI GetModuleFileNameW( IN HMODULE hModule, OUT LPWSTR lpFileName, IN DWORD nSize); #ifdef UNICODE #define GetModuleFileName GetModuleFileNameW #else #define GetModuleFileName GetModuleFileNameA #endif PALIMPORT DWORD PALAPI GetModuleFileNameExW( IN HANDLE hProcess, IN HMODULE hModule, OUT LPWSTR lpFilename, IN DWORD nSize ); #ifdef UNICODE #define GetModuleFileNameEx GetModuleFileNameExW #endif // Get base address of the module containing a given symbol PALIMPORT LPCVOID PALAPI PAL_GetSymbolModuleBase(PVOID symbol); PALIMPORT LPCSTR PALAPI PAL_GetLoadLibraryError(); PALIMPORT LPVOID PALAPI PAL_VirtualReserveFromExecutableMemoryAllocatorWithinRange( IN LPCVOID lpBeginAddress, IN LPCVOID lpEndAddress, IN SIZE_T dwSize); PALIMPORT LPVOID PALAPI VirtualAlloc( IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD flAllocationType, IN DWORD flProtect); PALIMPORT BOOL PALAPI VirtualFree( IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD dwFreeType); #if defined(HOST_OSX) && defined(HOST_ARM64) PALIMPORT VOID PALAPI PAL_JitWriteProtect(bool writeEnable); #endif // defined(HOST_OSX) && defined(HOST_ARM64) PALIMPORT BOOL PALAPI VirtualProtect( IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD flNewProtect, OUT PDWORD lpflOldProtect); typedef struct _MEMORYSTATUSEX { DWORD dwLength; DWORD dwMemoryLoad; DWORDLONG ullTotalPhys; DWORDLONG ullAvailPhys; DWORDLONG ullTotalPageFile; DWORDLONG ullAvailPageFile; DWORDLONG ullTotalVirtual; DWORDLONG ullAvailVirtual; DWORDLONG ullAvailExtendedVirtual; } MEMORYSTATUSEX, *LPMEMORYSTATUSEX; PALIMPORT BOOL PALAPI GlobalMemoryStatusEx( IN OUT LPMEMORYSTATUSEX lpBuffer); typedef struct _MEMORY_BASIC_INFORMATION { PVOID BaseAddress; PVOID AllocationBase_PAL_Undefined; DWORD AllocationProtect; SIZE_T RegionSize; DWORD State; DWORD Protect; DWORD Type; } MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION; PALIMPORT SIZE_T PALAPI VirtualQuery( IN LPCVOID lpAddress, OUT PMEMORY_BASIC_INFORMATION lpBuffer, IN SIZE_T dwLength); #define MoveMemory memmove #define CopyMemory memcpy #define FillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length)) #define ZeroMemory(Destination,Length) memset((Destination),0,(Length)) #define LMEM_FIXED 0x0000 #define LMEM_MOVEABLE 0x0002 #define LMEM_ZEROINIT 0x0040 #define LPTR (LMEM_FIXED | LMEM_ZEROINIT) PALIMPORT HLOCAL PALAPI LocalAlloc( IN UINT uFlags, IN SIZE_T uBytes); PALIMPORT HLOCAL PALAPI LocalFree( IN HLOCAL hMem); PALIMPORT BOOL PALAPI FlushInstructionCache( IN HANDLE hProcess, IN LPCVOID lpBaseAddress, IN SIZE_T dwSize); #define MAX_LEADBYTES 12 #define MAX_DEFAULTCHAR 2 PALIMPORT UINT PALAPI GetACP(void); typedef struct _cpinfo { UINT MaxCharSize; BYTE DefaultChar[MAX_DEFAULTCHAR]; BYTE LeadByte[MAX_LEADBYTES]; } CPINFO, *LPCPINFO; #define MB_PRECOMPOSED 0x00000001 #define MB_ERR_INVALID_CHARS 0x00000008 PALIMPORT int PALAPI MultiByteToWideChar( IN UINT CodePage, IN DWORD dwFlags, IN LPCSTR lpMultiByteStr, IN int cbMultiByte, OUT LPWSTR lpWideCharStr, IN int cchWideChar); #define WC_NO_BEST_FIT_CHARS 0x00000400 PALIMPORT int PALAPI WideCharToMultiByte( IN UINT CodePage, IN DWORD dwFlags, IN LPCWSTR lpWideCharStr, IN int cchWideChar, OUT LPSTR lpMultiByteStr, IN int cbMultyByte, IN LPCSTR lpDefaultChar, OUT LPBOOL lpUsedDefaultChar); #define EXCEPTION_NONCONTINUABLE 0x1 #define EXCEPTION_UNWINDING 0x2 #define EXCEPTION_EXIT_UNWIND 0x4 // Exit unwind is in progress (not used by PAL SEH) #define EXCEPTION_NESTED_CALL 0x10 // Nested exception handler call #define EXCEPTION_TARGET_UNWIND 0x20 // Target unwind in progress #define EXCEPTION_COLLIDED_UNWIND 0x40 // Collided exception handler call #define EXCEPTION_SKIP_VEH 0x200 #define EXCEPTION_UNWIND (EXCEPTION_UNWINDING | EXCEPTION_EXIT_UNWIND | \ EXCEPTION_TARGET_UNWIND | EXCEPTION_COLLIDED_UNWIND) #define IS_DISPATCHING(Flag) ((Flag & EXCEPTION_UNWIND) == 0) #define IS_UNWINDING(Flag) ((Flag & EXCEPTION_UNWIND) != 0) #define IS_TARGET_UNWIND(Flag) (Flag & EXCEPTION_TARGET_UNWIND) #define EXCEPTION_IS_SIGNAL 0x100 #define EXCEPTION_MAXIMUM_PARAMETERS 15 // Index in the ExceptionInformation array where we will keep the reference // to the native exception that needs to be deleted when dispatching // exception in managed code. #define NATIVE_EXCEPTION_ASYNC_SLOT (EXCEPTION_MAXIMUM_PARAMETERS-1) typedef struct _EXCEPTION_RECORD { DWORD ExceptionCode; DWORD ExceptionFlags; struct _EXCEPTION_RECORD *ExceptionRecord; PVOID ExceptionAddress; DWORD NumberParameters; ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; } EXCEPTION_RECORD, *PEXCEPTION_RECORD; typedef struct _EXCEPTION_POINTERS { PEXCEPTION_RECORD ExceptionRecord; PCONTEXT ContextRecord; } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS, *LPEXCEPTION_POINTERS; typedef LONG EXCEPTION_DISPOSITION; enum { ExceptionContinueExecution, ExceptionContinueSearch, ExceptionNestedException, ExceptionCollidedUnwind, }; // // A function table entry is generated for each frame function. // typedef struct _RUNTIME_FUNCTION { DWORD BeginAddress; #ifdef TARGET_AMD64 DWORD EndAddress; #endif DWORD UnwindData; } RUNTIME_FUNCTION, *PRUNTIME_FUNCTION; #define STANDARD_RIGHTS_REQUIRED (0x000F0000L) #define SYNCHRONIZE (0x00100000L) #define READ_CONTROL (0x00020000L) #define MAXIMUM_ALLOWED (0x02000000L) #define EVENT_MODIFY_STATE (0x0002) #define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3) #define MUTANT_QUERY_STATE (0x0001) #define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE) #define MUTEX_ALL_ACCESS MUTANT_ALL_ACCESS #define SEMAPHORE_MODIFY_STATE (0x0002) #define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3) #define PROCESS_TERMINATE (0x0001) #define PROCESS_CREATE_THREAD (0x0002) #define PROCESS_SET_SESSIONID (0x0004) #define PROCESS_VM_OPERATION (0x0008) #define PROCESS_VM_READ (0x0010) #define PROCESS_VM_WRITE (0x0020) #define PROCESS_DUP_HANDLE (0x0040) #define PROCESS_CREATE_PROCESS (0x0080) #define PROCESS_SET_QUOTA (0x0100) #define PROCESS_SET_INFORMATION (0x0200) #define PROCESS_QUERY_INFORMATION (0x0400) #define PROCESS_SUSPEND_RESUME (0x0800) #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \ 0xFFF) PALIMPORT HANDLE PALAPI OpenProcess( IN DWORD dwDesiredAccess, /* PROCESS_DUP_HANDLE or PROCESS_ALL_ACCESS */ IN BOOL bInheritHandle, IN DWORD dwProcessId ); PALIMPORT BOOL PALAPI EnumProcessModules( IN HANDLE hProcess, OUT HMODULE *lphModule, IN DWORD cb, OUT LPDWORD lpcbNeeded ); PALIMPORT VOID PALAPI OutputDebugStringA( IN LPCSTR lpOutputString); PALIMPORT VOID PALAPI OutputDebugStringW( IN LPCWSTR lpOutputStrig); #ifdef UNICODE #define OutputDebugString OutputDebugStringW #else #define OutputDebugString OutputDebugStringA #endif PALIMPORT VOID PALAPI DebugBreak(); PALIMPORT DWORD PALAPI GetEnvironmentVariableW( IN LPCWSTR lpName, OUT LPWSTR lpBuffer, IN DWORD nSize); #ifdef UNICODE #define GetEnvironmentVariable GetEnvironmentVariableW #else #define GetEnvironmentVariable GetEnvironmentVariableA #endif PALIMPORT BOOL PALAPI SetEnvironmentVariableW( IN LPCWSTR lpName, IN LPCWSTR lpValue); #ifdef UNICODE #define SetEnvironmentVariable SetEnvironmentVariableW #else #define SetEnvironmentVariable SetEnvironmentVariableA #endif PALIMPORT LPWSTR PALAPI GetEnvironmentStringsW(); #define GetEnvironmentStrings GetEnvironmentStringsW PALIMPORT BOOL PALAPI FreeEnvironmentStringsW( IN LPWSTR); #define FreeEnvironmentStrings FreeEnvironmentStringsW PALIMPORT BOOL PALAPI CloseHandle( IN OUT HANDLE hObject); PALIMPORT VOID PALAPI RaiseException( IN DWORD dwExceptionCode, IN DWORD dwExceptionFlags, IN DWORD nNumberOfArguments, IN CONST ULONG_PTR *lpArguments); PALIMPORT VOID PALAPI RaiseFailFastException( IN PEXCEPTION_RECORD pExceptionRecord, IN PCONTEXT pContextRecord, IN DWORD dwFlags); PALIMPORT DWORD PALAPI GetTickCount(); PALIMPORT ULONGLONG PALAPI GetTickCount64(); PALIMPORT BOOL PALAPI QueryPerformanceCounter( OUT LARGE_INTEGER *lpPerformanceCount ); PALIMPORT BOOL PALAPI QueryPerformanceFrequency( OUT LARGE_INTEGER *lpFrequency ); PALIMPORT BOOL PALAPI QueryThreadCycleTime( IN HANDLE ThreadHandle, OUT PULONG64 CycleTime); PALIMPORT INT PALAPI PAL_nanosleep( IN long timeInNs); typedef EXCEPTION_DISPOSITION (PALAPI_NOEXPORT *PVECTORED_EXCEPTION_HANDLER)( struct _EXCEPTION_POINTERS *ExceptionPointers); // Define BitScanForward64 and BitScanForward // Per MSDN, BitScanForward64 will search the mask data from LSB to MSB for a set bit. // If one is found, its bit position is stored in the out PDWORD argument and 1 is returned; // otherwise, an undefined value is stored in the out PDWORD argument and 0 is returned. // // On GCC, the equivalent function is __builtin_ffsll. It returns 1+index of the least // significant set bit, or 0 if if mask is zero. // // The same is true for BitScanForward, except that the GCC function is __builtin_ffs. EXTERN_C PALIMPORT inline unsigned char PALAPI BitScanForward( IN OUT PDWORD Index, IN UINT qwMask) { int iIndex = __builtin_ffs(qwMask); // Set the Index after deducting unity *Index = (DWORD)(iIndex - 1); // Both GCC and Clang generate better, smaller code if we check whether the // mask was/is zero rather than the equivalent check that iIndex is zero. return qwMask != 0 ? TRUE : FALSE; } EXTERN_C PALIMPORT inline unsigned char PALAPI BitScanForward64( IN OUT PDWORD Index, IN UINT64 qwMask) { int iIndex = __builtin_ffsll(qwMask); // Set the Index after deducting unity *Index = (DWORD)(iIndex - 1); // Both GCC and Clang generate better, smaller code if we check whether the // mask was/is zero rather than the equivalent check that iIndex is zero. return qwMask != 0 ? TRUE : FALSE; } // Define BitScanReverse64 and BitScanReverse // Per MSDN, BitScanReverse64 will search the mask data from MSB to LSB for a set bit. // If one is found, its bit position is stored in the out PDWORD argument and 1 is returned. // Otherwise, an undefined value is stored in the out PDWORD argument and 0 is returned. // // GCC/clang don't have a directly equivalent intrinsic; they do provide the __builtin_clzll // intrinsic, which returns the number of leading 0-bits in x starting at the most significant // bit position (the result is undefined when x = 0). // // The same is true for BitScanReverse, except that the GCC function is __builtin_clzl. EXTERN_C PALIMPORT inline unsigned char PALAPI BitScanReverse( IN OUT PDWORD Index, IN UINT qwMask) { // The result of __builtin_clzl is undefined when qwMask is zero, // but it's still OK to call the intrinsic in that case (just don't use the output). // Unconditionally calling the intrinsic in this way allows the compiler to // emit branchless code for this function when possible (depending on how the // intrinsic is implemented for the target platform). int lzcount = __builtin_clzl(qwMask); *Index = (DWORD)(31 - lzcount); return qwMask != 0; } EXTERN_C PALIMPORT inline unsigned char PALAPI BitScanReverse64( IN OUT PDWORD Index, IN UINT64 qwMask) { // The result of __builtin_clzll is undefined when qwMask is zero, // but it's still OK to call the intrinsic in that case (just don't use the output). // Unconditionally calling the intrinsic in this way allows the compiler to // emit branchless code for this function when possible (depending on how the // intrinsic is implemented for the target platform). int lzcount = __builtin_clzll(qwMask); *Index = (DWORD)(63 - lzcount); return qwMask != 0; } FORCEINLINE void PAL_ArmInterlockedOperationBarrier() { #ifdef HOST_ARM64 // On arm64, most of the __sync* functions generate a code sequence like: // loop: // ldaxr (load acquire exclusive) // ... // stlxr (store release exclusive) // cbnz loop // // It is possible for a load following the code sequence above to be reordered to occur prior to the store above due to the // release barrier, this is substantiated by https://github.com/dotnet/coreclr/pull/17508. Interlocked operations in the PAL // require the load to occur after the store. This memory barrier should be used following a call to a __sync* function to // prevent that reordering. Code generated for arm32 includes a 'dmb' after 'cbnz', so no issue there at the moment. __sync_synchronize(); #endif // HOST_ARM64 } /*++ Function: InterlockedIncrement The InterlockedIncrement function increments (increases by one) the value of the specified variable and checks the resulting value. The function prevents more than one thread from using the same variable simultaneously. Parameters lpAddend [in/out] Pointer to the variable to increment. Return Values The return value is the resulting incremented value. --*/ EXTERN_C PALIMPORT inline LONG PALAPI InterlockedIncrement( IN OUT LONG volatile *lpAddend) { LONG result = __sync_add_and_fetch(lpAddend, (LONG)1); PAL_ArmInterlockedOperationBarrier(); return result; } EXTERN_C PALIMPORT inline LONGLONG PALAPI InterlockedIncrement64( IN OUT LONGLONG volatile *lpAddend) { LONGLONG result = __sync_add_and_fetch(lpAddend, (LONGLONG)1); PAL_ArmInterlockedOperationBarrier(); return result; } /*++ Function: InterlockedDecrement The InterlockedDecrement function decrements (decreases by one) the value of the specified variable and checks the resulting value. The function prevents more than one thread from using the same variable simultaneously. Parameters lpAddend [in/out] Pointer to the variable to decrement. Return Values The return value is the resulting decremented value. --*/ EXTERN_C PALIMPORT inline LONG PALAPI InterlockedDecrement( IN OUT LONG volatile *lpAddend) { LONG result = __sync_sub_and_fetch(lpAddend, (LONG)1); PAL_ArmInterlockedOperationBarrier(); return result; } #define InterlockedDecrementAcquire InterlockedDecrement #define InterlockedDecrementRelease InterlockedDecrement EXTERN_C PALIMPORT inline LONGLONG PALAPI InterlockedDecrement64( IN OUT LONGLONG volatile *lpAddend) { LONGLONG result = __sync_sub_and_fetch(lpAddend, (LONGLONG)1); PAL_ArmInterlockedOperationBarrier(); return result; } /*++ Function: InterlockedExchange The InterlockedExchange function atomically exchanges a pair of values. The function prevents more than one thread from using the same variable simultaneously. Parameters Target [in/out] Pointer to the value to exchange. The function sets this variable to Value, and returns its prior value. Value [in] Specifies a new value for the variable pointed to by Target. Return Values The function returns the initial value pointed to by Target. --*/ EXTERN_C PALIMPORT inline LONG PALAPI InterlockedExchange( IN OUT LONG volatile *Target, IN LONG Value) { LONG result = __atomic_exchange_n(Target, Value, __ATOMIC_ACQ_REL); PAL_ArmInterlockedOperationBarrier(); return result; } EXTERN_C PALIMPORT inline LONGLONG PALAPI InterlockedExchange64( IN OUT LONGLONG volatile *Target, IN LONGLONG Value) { LONGLONG result = __atomic_exchange_n(Target, Value, __ATOMIC_ACQ_REL); PAL_ArmInterlockedOperationBarrier(); return result; } /*++ Function: InterlockedCompareExchange The InterlockedCompareExchange function performs an atomic comparison of the specified values and exchanges the values, based on the outcome of the comparison. The function prevents more than one thread from using the same variable simultaneously. If you are exchanging pointer values, this function has been superseded by the InterlockedCompareExchangePointer function. Parameters Destination [in/out] Specifies the address of the destination value. The sign is ignored. Exchange [in] Specifies the exchange value. The sign is ignored. Comperand [in] Specifies the value to compare to Destination. The sign is ignored. Return Values The return value is the initial value of the destination. --*/ EXTERN_C PALIMPORT inline LONG PALAPI InterlockedCompareExchange( IN OUT LONG volatile *Destination, IN LONG Exchange, IN LONG Comperand) { LONG result = __sync_val_compare_and_swap( Destination, /* The pointer to a variable whose value is to be compared with. */ Comperand, /* The value to be compared */ Exchange /* The value to be stored */); PAL_ArmInterlockedOperationBarrier(); return result; } #define InterlockedCompareExchangeAcquire InterlockedCompareExchange #define InterlockedCompareExchangeRelease InterlockedCompareExchange // See the 32-bit variant in interlock2.s EXTERN_C PALIMPORT inline LONGLONG PALAPI InterlockedCompareExchange64( IN OUT LONGLONG volatile *Destination, IN LONGLONG Exchange, IN LONGLONG Comperand) { LONGLONG result = __sync_val_compare_and_swap( Destination, /* The pointer to a variable whose value is to be compared with. */ Comperand, /* The value to be compared */ Exchange /* The value to be stored */); PAL_ArmInterlockedOperationBarrier(); return result; } /*++ Function: InterlockedExchangeAdd The InterlockedExchangeAdd function atomically adds the value of 'Value' to the variable that 'Addend' points to. Parameters lpAddend [in/out] Pointer to the variable to to added. Return Values The return value is the original value that 'Addend' pointed to. --*/ EXTERN_C PALIMPORT inline LONG PALAPI InterlockedExchangeAdd( IN OUT LONG volatile *Addend, IN LONG Value) { LONG result = __sync_fetch_and_add(Addend, Value); PAL_ArmInterlockedOperationBarrier(); return result; } EXTERN_C PALIMPORT inline LONGLONG PALAPI InterlockedExchangeAdd64( IN OUT LONGLONG volatile *Addend, IN LONGLONG Value) { LONGLONG result = __sync_fetch_and_add(Addend, Value); PAL_ArmInterlockedOperationBarrier(); return result; } EXTERN_C PALIMPORT inline LONG PALAPI InterlockedAnd( IN OUT LONG volatile *Destination, IN LONG Value) { LONG result = __sync_fetch_and_and(Destination, Value); PAL_ArmInterlockedOperationBarrier(); return result; } EXTERN_C PALIMPORT inline LONG PALAPI InterlockedOr( IN OUT LONG volatile *Destination, IN LONG Value) { LONG result = __sync_fetch_and_or(Destination, Value); PAL_ArmInterlockedOperationBarrier(); return result; } EXTERN_C PALIMPORT inline UCHAR PALAPI InterlockedBitTestAndReset( IN OUT LONG volatile *Base, IN LONG Bit) { return (InterlockedAnd(Base, ~(1 << Bit)) & (1 << Bit)) != 0; } EXTERN_C PALIMPORT inline UCHAR PALAPI InterlockedBitTestAndSet( IN OUT LONG volatile *Base, IN LONG Bit) { return (InterlockedOr(Base, (1 << Bit)) & (1 << Bit)) != 0; } #if defined(HOST_64BIT) #define InterlockedExchangePointer(Target, Value) \ ((PVOID)InterlockedExchange64((PLONG64)(Target), (LONGLONG)(Value))) #define InterlockedCompareExchangePointer(Destination, ExChange, Comperand) \ ((PVOID)InterlockedCompareExchange64((PLONG64)(Destination), (LONGLONG)(ExChange), (LONGLONG)(Comperand))) #else #define InterlockedExchangePointer(Target, Value) \ ((PVOID)(UINT_PTR)InterlockedExchange((PLONG)(UINT_PTR)(Target), (LONG)(UINT_PTR)(Value))) #define InterlockedCompareExchangePointer(Destination, ExChange, Comperand) \ ((PVOID)(UINT_PTR)InterlockedCompareExchange((PLONG)(UINT_PTR)(Destination), (LONG)(UINT_PTR)(ExChange), (LONG)(UINT_PTR)(Comperand))) #endif /*++ Function: MemoryBarrier The MemoryBarrier function creates a full memory barrier. --*/ EXTERN_C PALIMPORT inline VOID PALAPI MemoryBarrier() { __sync_synchronize(); } EXTERN_C PALIMPORT inline VOID PALAPI YieldProcessor() { #if defined(HOST_X86) || defined(HOST_AMD64) __asm__ __volatile__( "rep\n" "nop"); #elif defined(HOST_ARM) || defined(HOST_ARM64) __asm__ __volatile__( "yield"); #else return; #endif } PALIMPORT DWORD PALAPI GetCurrentProcessorNumber(); /*++ Function: PAL_HasGetCurrentProcessorNumber Checks if GetCurrentProcessorNumber is available in the current environment --*/ PALIMPORT BOOL PALAPI PAL_HasGetCurrentProcessorNumber(); #define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x00000100 #define FORMAT_MESSAGE_IGNORE_INSERTS 0x00000200 #define FORMAT_MESSAGE_FROM_STRING 0x00000400 #define FORMAT_MESSAGE_FROM_SYSTEM 0x00001000 #define FORMAT_MESSAGE_ARGUMENT_ARRAY 0x00002000 #define FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000FF PALIMPORT DWORD PALAPI FormatMessageW( IN DWORD dwFlags, IN LPCVOID lpSource, IN DWORD dwMessageId, IN DWORD dwLanguageId, OUT LPWSTR lpBffer, IN DWORD nSize, IN va_list *Arguments); #ifdef UNICODE #define FormatMessage FormatMessageW #endif PALIMPORT DWORD PALAPI GetLastError(); PALIMPORT VOID PALAPI SetLastError( IN DWORD dwErrCode); PALIMPORT LPWSTR PALAPI GetCommandLineW(); #ifdef UNICODE #define GetCommandLine GetCommandLineW #endif PALIMPORT VOID PALAPI RtlRestoreContext( IN PCONTEXT ContextRecord, IN PEXCEPTION_RECORD ExceptionRecord ); PALIMPORT VOID PALAPI RtlCaptureContext( OUT PCONTEXT ContextRecord ); PALIMPORT VOID PALAPI FlushProcessWriteBuffers(); typedef void (*PAL_ActivationFunction)(CONTEXT *context); typedef BOOL (*PAL_SafeActivationCheckFunction)(SIZE_T ip, BOOL checkingCurrentThread); PALIMPORT VOID PALAPI PAL_SetActivationFunction( IN PAL_ActivationFunction pActivationFunction, IN PAL_SafeActivationCheckFunction pSafeActivationCheckFunction); PALIMPORT BOOL PALAPI PAL_InjectActivation( IN HANDLE hThread ); #define VER_PLATFORM_WIN32_WINDOWS 1 #define VER_PLATFORM_WIN32_NT 2 #define VER_PLATFORM_UNIX 10 #define VER_PLATFORM_MACOSX 11 typedef struct _OSVERSIONINFOA { DWORD dwOSVersionInfoSize; DWORD dwMajorVersion; DWORD dwMinorVersion; DWORD dwBuildNumber; DWORD dwPlatformId; CHAR szCSDVersion[ 128 ]; } OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA; typedef struct _OSVERSIONINFOW { DWORD dwOSVersionInfoSize; DWORD dwMajorVersion; DWORD dwMinorVersion; DWORD dwBuildNumber; DWORD dwPlatformId; WCHAR szCSDVersion[ 128 ]; } OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW; #ifdef UNICODE typedef OSVERSIONINFOW OSVERSIONINFO; typedef POSVERSIONINFOW POSVERSIONINFO; typedef LPOSVERSIONINFOW LPOSVERSIONINFO; #else typedef OSVERSIONINFOA OSVERSIONINFO; typedef POSVERSIONINFOA POSVERSIONINFO; typedef LPOSVERSIONINFOA LPOSVERSIONINFO; #endif typedef struct _OSVERSIONINFOEXA { DWORD dwOSVersionInfoSize; DWORD dwMajorVersion; DWORD dwMinorVersion; DWORD dwBuildNumber; DWORD dwPlatformId; CHAR szCSDVersion[ 128 ]; WORD wServicePackMajor; WORD wServicePackMinor; WORD wSuiteMask; BYTE wProductType; BYTE wReserved; } OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA; typedef struct _OSVERSIONINFOEXW { DWORD dwOSVersionInfoSize; DWORD dwMajorVersion; DWORD dwMinorVersion; DWORD dwBuildNumber; DWORD dwPlatformId; WCHAR szCSDVersion[ 128 ]; WORD wServicePackMajor; WORD wServicePackMinor; WORD wSuiteMask; BYTE wProductType; BYTE wReserved; } OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW; #ifdef UNICODE typedef OSVERSIONINFOEXW OSVERSIONINFOEX; typedef POSVERSIONINFOEXW POSVERSIONINFOEX; typedef LPOSVERSIONINFOEXW LPOSVERSIONINFOEX; #else typedef OSVERSIONINFOEXA OSVERSIONINFOEX; typedef POSVERSIONINFOEXA POSVERSIONINFOEX; typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX; #endif #define IMAGE_FILE_MACHINE_I386 0x014c #define IMAGE_FILE_MACHINE_ARM64 0xAA64 // ARM64 Little-Endian typedef struct _SYSTEM_INFO { WORD wProcessorArchitecture_PAL_Undefined; WORD wReserved_PAL_Undefined; // NOTE: diff from winbase.h - no obsolete dwOemId union DWORD dwPageSize; LPVOID lpMinimumApplicationAddress; LPVOID lpMaximumApplicationAddress; DWORD_PTR dwActiveProcessorMask_PAL_Undefined; DWORD dwNumberOfProcessors; DWORD dwProcessorType_PAL_Undefined; DWORD dwAllocationGranularity; WORD wProcessorLevel_PAL_Undefined; WORD wProcessorRevision_PAL_Undefined; } SYSTEM_INFO, *LPSYSTEM_INFO; PALIMPORT VOID PALAPI GetSystemInfo( OUT LPSYSTEM_INFO lpSystemInfo); PALIMPORT BOOL PALAPI CreatePipe( OUT PHANDLE hReadPipe, OUT PHANDLE hWritePipe, IN LPSECURITY_ATTRIBUTES lpPipeAttributes, IN DWORD nSize ); // // NUMA related APIs // PALIMPORT BOOL PALAPI GetNumaHighestNodeNumber( OUT PULONG HighestNodeNumber ); PALIMPORT BOOL PALAPI PAL_GetNumaProcessorNode(WORD procNo, WORD* node); PALIMPORT LPVOID PALAPI VirtualAllocExNuma( IN HANDLE hProcess, IN OPTIONAL LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD flAllocationType, IN DWORD flProtect, IN DWORD nndPreferred ); PALIMPORT BOOL PALAPI PAL_SetCurrentThreadAffinity(WORD procNo); PALIMPORT BOOL PALAPI PAL_GetCurrentThreadAffinitySet(SIZE_T size, UINT_PTR* data); // // The types of events that can be logged. // #define EVENTLOG_SUCCESS 0x0000 #define EVENTLOG_ERROR_TYPE 0x0001 #define EVENTLOG_WARNING_TYPE 0x0002 #define EVENTLOG_INFORMATION_TYPE 0x0004 #define EVENTLOG_AUDIT_SUCCESS 0x0008 #define EVENTLOG_AUDIT_FAILURE 0x0010 #if defined FEATURE_PAL_ANSI #include "palprivate.h" #endif //FEATURE_PAL_ANSI /******************* C Runtime Entrypoints *******************************/ /* Some C runtime functions needs to be reimplemented by the PAL. To avoid name collisions, those functions have been renamed using defines */ #ifndef PAL_STDCPP_COMPAT #define exit PAL_exit #define printf PAL_printf #define vprintf PAL_vprintf #define wprintf PAL_wprintf #define wcstod PAL_wcstod #define wcstoul PAL_wcstoul #define wcscat PAL_wcscat #define wcscpy PAL_wcscpy #define wcslen PAL_wcslen #define wcsncmp PAL_wcsncmp #define wcschr PAL_wcschr #define wcsrchr PAL_wcsrchr #define wcsstr PAL_wcsstr #define swscanf PAL_swscanf #define wcspbrk PAL_wcspbrk #define wcscmp PAL_wcscmp #define wcsncpy PAL_wcsncpy #define wcstok PAL_wcstok #define wcscspn PAL_wcscspn #define realloc PAL_realloc #define fopen PAL_fopen #define strtok PAL_strtok #define strtoul PAL_strtoul #define strtoull PAL_strtoull #define fprintf PAL_fprintf #define fwprintf PAL_fwprintf #define vfprintf PAL_vfprintf #define vfwprintf PAL_vfwprintf #define rand PAL_rand #define time PAL_time #define getenv PAL_getenv #define fgets PAL_fgets #define qsort PAL_qsort #define bsearch PAL_bsearch #define ferror PAL_ferror #define fread PAL_fread #define fwrite PAL_fwrite #define ftell PAL_ftell #define fclose PAL_fclose #define fflush PAL_fflush #define fputs PAL_fputs #define fseek PAL_fseek #define fgetpos PAL_fgetpos #define fsetpos PAL_fsetpos #define setvbuf PAL_setvbuf #define acos PAL_acos #define asin PAL_asin #define atan2 PAL_atan2 #define exp PAL_exp #define ilogb PAL_ilogb #define log PAL_log #define log10 PAL_log10 #define pow PAL_pow #define sincos PAL_sincos #define acosf PAL_acosf #define asinf PAL_asinf #define atan2f PAL_atan2f #define expf PAL_expf #define ilogbf PAL_ilogbf #define logf PAL_logf #define log10f PAL_log10f #define powf PAL_powf #define sincosf PAL_sincosf #define malloc PAL_malloc #define free PAL_free #define _strdup PAL__strdup #define _open PAL__open #define _pread PAL__pread #define _close PAL__close #define _wcstoui64 PAL__wcstoui64 #define _flushall PAL__flushall #define strnlen PAL_strnlen #define wcsnlen PAL_wcsnlen #ifdef HOST_AMD64 #define _mm_getcsr PAL__mm_getcsr #define _mm_setcsr PAL__mm_setcsr #endif // HOST_AMD64 #endif // !PAL_STDCPP_COMPAT #ifndef _CONST_RETURN #ifdef __cplusplus #define _CONST_RETURN const #define _CRT_CONST_CORRECT_OVERLOADS #else #define _CONST_RETURN #endif #endif /* For backwards compatibility */ #define _WConst_return _CONST_RETURN #define EOF (-1) typedef int errno_t; #if defined(__WINT_TYPE__) typedef __WINT_TYPE__ wint_t; #else typedef unsigned int wint_t; #endif #ifndef PAL_STDCPP_COMPAT #if defined(_DEBUG) /*++ Function: PAL_memcpy Overlapping buffer-safe version of memcpy. See MSDN doc for memcpy --*/ EXTERN_C PALIMPORT DLLEXPORT void *PAL_memcpy (void *dest, const void * src, size_t count); PALIMPORT void * __cdecl memcpy(void *, const void *, size_t) THROW_DECL; #define memcpy PAL_memcpy #define IS_PAL_memcpy 1 #define TEST_PAL_DEFERRED(def) IS_##def #define IS_REDEFINED_IN_PAL(def) TEST_PAL_DEFERRED(def) #else //defined(_DEBUG) PALIMPORT void * __cdecl memcpy(void *, const void *, size_t); #endif //defined(_DEBUG) PALIMPORT int __cdecl memcmp(const void *, const void *, size_t); PALIMPORT void * __cdecl memset(void *, int, size_t); PALIMPORT void * __cdecl memmove(void *, const void *, size_t); PALIMPORT void * __cdecl memchr(const void *, int, size_t); PALIMPORT long long int __cdecl atoll(const char *) MATH_THROW_DECL; PALIMPORT size_t __cdecl strlen(const char *); PALIMPORT int __cdecl strcmp(const char*, const char *); PALIMPORT int __cdecl strncmp(const char*, const char *, size_t); PALIMPORT int __cdecl _strnicmp(const char *, const char *, size_t); PALIMPORT char * __cdecl strcat(char *, const char *); PALIMPORT char * __cdecl strncat(char *, const char *, size_t); PALIMPORT char * __cdecl strcpy(char *, const char *); PALIMPORT char * __cdecl strncpy(char *, const char *, size_t); PALIMPORT char * __cdecl strchr(const char *, int); PALIMPORT char * __cdecl strrchr(const char *, int); PALIMPORT char * __cdecl strpbrk(const char *, const char *); PALIMPORT char * __cdecl strstr(const char *, const char *); PALIMPORT char * __cdecl strtok(char *, const char *); PALIMPORT size_t __cdecl strspn(const char *, const char *); PALIMPORT size_t __cdecl strcspn(const char *, const char *); PALIMPORT int __cdecl atoi(const char *); PALIMPORT ULONG __cdecl strtoul(const char *, char **, int); PALIMPORT ULONGLONG __cdecl strtoull(const char *, char **, int); PALIMPORT double __cdecl atof(const char *); PALIMPORT double __cdecl strtod(const char *, char **); PALIMPORT int __cdecl isprint(int); PALIMPORT int __cdecl isspace(int); PALIMPORT int __cdecl isalpha(int); PALIMPORT int __cdecl isalnum(int); PALIMPORT int __cdecl isdigit(int); PALIMPORT int __cdecl isxdigit(int); PALIMPORT int __cdecl isupper(int); PALIMPORT int __cdecl islower(int); PALIMPORT int __cdecl tolower(int); PALIMPORT int __cdecl toupper(int); PALIMPORT int __cdecl iswalpha(wint_t); PALIMPORT int __cdecl iswdigit(wint_t); PALIMPORT int __cdecl iswupper(wint_t); PALIMPORT int __cdecl iswprint(wint_t); PALIMPORT int __cdecl iswspace(wint_t); PALIMPORT int __cdecl iswxdigit(wint_t); PALIMPORT wint_t __cdecl towupper(wint_t); PALIMPORT wint_t __cdecl towlower(wint_t); #endif // PAL_STDCPP_COMPAT /* _TRUNCATE */ #if !defined(_TRUNCATE) #define _TRUNCATE ((size_t)-1) #endif PALIMPORT DLLEXPORT errno_t __cdecl memcpy_s(void *, size_t, const void *, size_t) THROW_DECL; PALIMPORT errno_t __cdecl memmove_s(void *, size_t, const void *, size_t); PALIMPORT DLLEXPORT int __cdecl _stricmp(const char *, const char *); PALIMPORT DLLEXPORT int __cdecl vsprintf_s(char *, size_t, const char *, va_list); PALIMPORT char * __cdecl _gcvt_s(char *, int, double, int); PALIMPORT int __cdecl __iscsym(int); PALIMPORT DLLEXPORT int __cdecl _wcsicmp(const WCHAR *, const WCHAR*); PALIMPORT int __cdecl _wcsnicmp(const WCHAR *, const WCHAR *, size_t); PALIMPORT int __cdecl _vsnprintf(char *, size_t, const char *, va_list); PALIMPORT DLLEXPORT int __cdecl _vsnprintf_s(char *, size_t, size_t, const char *, va_list); PALIMPORT DLLEXPORT int __cdecl _vsnwprintf_s(WCHAR *, size_t, size_t, const WCHAR *, va_list); PALIMPORT DLLEXPORT int __cdecl _snwprintf_s(WCHAR *, size_t, size_t, const WCHAR *, ...); PALIMPORT DLLEXPORT int __cdecl _snprintf_s(char *, size_t, size_t, const char *, ...); PALIMPORT DLLEXPORT int __cdecl sprintf_s(char *, size_t, const char *, ... ); PALIMPORT DLLEXPORT int __cdecl swprintf_s(WCHAR *, size_t, const WCHAR *, ... ); PALIMPORT int __cdecl _snwprintf_s(WCHAR *, size_t, size_t, const WCHAR *, ...); PALIMPORT int __cdecl vswprintf_s( WCHAR *, size_t, const WCHAR *, va_list); PALIMPORT DLLEXPORT int __cdecl sscanf_s(const char *, const char *, ...); PALIMPORT DLLEXPORT errno_t __cdecl _itow_s(int, WCHAR *, size_t, int); PALIMPORT DLLEXPORT size_t __cdecl PAL_wcslen(const WCHAR *); PALIMPORT DLLEXPORT int __cdecl PAL_wcscmp(const WCHAR*, const WCHAR*); PALIMPORT DLLEXPORT int __cdecl PAL_wcsncmp(const WCHAR *, const WCHAR *, size_t); PALIMPORT DLLEXPORT WCHAR * __cdecl PAL_wcscat(WCHAR *, const WCHAR *); PALIMPORT WCHAR * __cdecl PAL_wcscpy(WCHAR *, const WCHAR *); PALIMPORT WCHAR * __cdecl PAL_wcsncpy(WCHAR *, const WCHAR *, size_t); PALIMPORT DLLEXPORT const WCHAR * __cdecl PAL_wcschr(const WCHAR *, WCHAR); PALIMPORT DLLEXPORT const WCHAR * __cdecl PAL_wcsrchr(const WCHAR *, WCHAR); PALIMPORT WCHAR _WConst_return * __cdecl PAL_wcspbrk(const WCHAR *, const WCHAR *); PALIMPORT DLLEXPORT WCHAR _WConst_return * __cdecl PAL_wcsstr(const WCHAR *, const WCHAR *); PALIMPORT WCHAR * __cdecl PAL_wcstok(WCHAR *, const WCHAR *); PALIMPORT DLLEXPORT size_t __cdecl PAL_wcscspn(const WCHAR *, const WCHAR *); PALIMPORT int __cdecl PAL_swprintf(WCHAR *, const WCHAR *, ...); PALIMPORT int __cdecl PAL_vswprintf(WCHAR *, const WCHAR *, va_list); PALIMPORT int __cdecl PAL_swscanf(const WCHAR *, const WCHAR *, ...); PALIMPORT DLLEXPORT ULONG __cdecl PAL_wcstoul(const WCHAR *, WCHAR **, int); PALIMPORT double __cdecl PAL_wcstod(const WCHAR *, WCHAR **); PALIMPORT errno_t __cdecl _wcslwr_s(WCHAR *, size_t sz); PALIMPORT DLLEXPORT ULONGLONG _wcstoui64(const WCHAR *, WCHAR **, int); PALIMPORT DLLEXPORT errno_t __cdecl _i64tow_s(long long, WCHAR *, size_t, int); PALIMPORT int __cdecl _wtoi(const WCHAR *); #ifdef __cplusplus extern "C++" { inline WCHAR *PAL_wcschr(WCHAR* S, WCHAR C) {return ((WCHAR *)PAL_wcschr((const WCHAR *)S, C)); } inline WCHAR *PAL_wcsrchr(WCHAR* S, WCHAR C) {return ((WCHAR *)PAL_wcsrchr((const WCHAR *)S, C)); } inline WCHAR *PAL_wcspbrk(WCHAR* S, const WCHAR* P) {return ((WCHAR *)PAL_wcspbrk((const WCHAR *)S, P)); } inline WCHAR *PAL_wcsstr(WCHAR* S, const WCHAR* P) {return ((WCHAR *)PAL_wcsstr((const WCHAR *)S, P)); } } #endif #if defined(__llvm__) #define HAS_ROTL __has_builtin(_rotl) #define HAS_ROTR __has_builtin(_rotr) #else #define HAS_ROTL 0 #define HAS_ROTR 0 #endif #if !HAS_ROTL /*++ Function: _rotl See MSDN doc. --*/ EXTERN_C PALIMPORT inline unsigned int __cdecl _rotl(unsigned int value, int shift) { unsigned int retval = 0; shift &= 0x1f; retval = (value << shift) | (value >> (sizeof(int) * CHAR_BIT - shift)); return retval; } #endif // !HAS_ROTL // On 64 bit unix, make the long an int. #ifdef HOST_64BIT #define _lrotl _rotl #endif // HOST_64BIT #if !HAS_ROTR /*++ Function: _rotr See MSDN doc. --*/ EXTERN_C PALIMPORT inline unsigned int __cdecl _rotr(unsigned int value, int shift) { unsigned int retval; shift &= 0x1f; retval = (value >> shift) | (value << (sizeof(int) * CHAR_BIT - shift)); return retval; } #endif // !HAS_ROTR PALIMPORT int __cdecl abs(int); // clang complains if this is declared with __int64 PALIMPORT long long __cdecl llabs(long long); #ifndef PAL_STDCPP_COMPAT PALIMPORT int __cdecl _finite(double); PALIMPORT int __cdecl _isnan(double); PALIMPORT double __cdecl _copysign(double, double); PALIMPORT double __cdecl acos(double); PALIMPORT double __cdecl acosh(double) MATH_THROW_DECL; PALIMPORT double __cdecl asin(double); PALIMPORT double __cdecl asinh(double) MATH_THROW_DECL; PALIMPORT double __cdecl atan(double) MATH_THROW_DECL; PALIMPORT double __cdecl atanh(double) MATH_THROW_DECL; PALIMPORT double __cdecl atan2(double, double); PALIMPORT double __cdecl cbrt(double) MATH_THROW_DECL; PALIMPORT double __cdecl ceil(double); PALIMPORT double __cdecl cos(double); PALIMPORT double __cdecl cosh(double); PALIMPORT double __cdecl exp(double); PALIMPORT double __cdecl fabs(double); PALIMPORT double __cdecl floor(double); PALIMPORT double __cdecl fmod(double, double); PALIMPORT double __cdecl fma(double, double, double) MATH_THROW_DECL; PALIMPORT int __cdecl ilogb(double); PALIMPORT double __cdecl log(double); PALIMPORT double __cdecl log2(double) MATH_THROW_DECL; PALIMPORT double __cdecl log10(double); PALIMPORT double __cdecl modf(double, double*); PALIMPORT double __cdecl pow(double, double); PALIMPORT double __cdecl sin(double); PALIMPORT void __cdecl sincos(double, double*, double*); PALIMPORT double __cdecl sinh(double); PALIMPORT double __cdecl sqrt(double); PALIMPORT double __cdecl tan(double); PALIMPORT double __cdecl tanh(double); PALIMPORT int __cdecl _finitef(float); PALIMPORT int __cdecl _isnanf(float); PALIMPORT float __cdecl _copysignf(float, float); PALIMPORT float __cdecl acosf(float); PALIMPORT float __cdecl acoshf(float) MATH_THROW_DECL; PALIMPORT float __cdecl asinf(float); PALIMPORT float __cdecl asinhf(float) MATH_THROW_DECL; PALIMPORT float __cdecl atanf(float) MATH_THROW_DECL; PALIMPORT float __cdecl atanhf(float) MATH_THROW_DECL; PALIMPORT float __cdecl atan2f(float, float); PALIMPORT float __cdecl cbrtf(float) MATH_THROW_DECL; PALIMPORT float __cdecl ceilf(float); PALIMPORT float __cdecl cosf(float); PALIMPORT float __cdecl coshf(float); PALIMPORT float __cdecl expf(float); PALIMPORT float __cdecl fabsf(float); PALIMPORT float __cdecl floorf(float); PALIMPORT float __cdecl fmodf(float, float); PALIMPORT float __cdecl fmaf(float, float, float) MATH_THROW_DECL; PALIMPORT int __cdecl ilogbf(float); PALIMPORT float __cdecl logf(float); PALIMPORT float __cdecl log2f(float) MATH_THROW_DECL; PALIMPORT float __cdecl log10f(float); PALIMPORT float __cdecl modff(float, float*); PALIMPORT float __cdecl powf(float, float); PALIMPORT float __cdecl sinf(float); PALIMPORT void __cdecl sincosf(float, float*, float*); PALIMPORT float __cdecl sinhf(float); PALIMPORT float __cdecl sqrtf(float); PALIMPORT float __cdecl tanf(float); PALIMPORT float __cdecl tanhf(float); #endif // !PAL_STDCPP_COMPAT #ifndef PAL_STDCPP_COMPAT #ifdef __cplusplus extern "C++" { inline __int64 abs(__int64 _X) { return llabs(_X); } } #endif PALIMPORT DLLEXPORT void * __cdecl malloc(size_t); PALIMPORT DLLEXPORT void __cdecl free(void *); PALIMPORT DLLEXPORT void * __cdecl realloc(void *, size_t); PALIMPORT char * __cdecl _strdup(const char *); #if defined(_MSC_VER) #define alloca _alloca #else #define _alloca alloca #endif //_MSC_VER #define alloca __builtin_alloca #define max(a, b) (((a) > (b)) ? (a) : (b)) #define min(a, b) (((a) < (b)) ? (a) : (b)) #endif // !PAL_STDCPP_COMPAT PALIMPORT PAL_NORETURN void __cdecl exit(int); #ifndef PAL_STDCPP_COMPAT PALIMPORT DLLEXPORT void __cdecl qsort(void *, size_t, size_t, int(__cdecl *)(const void *, const void *)); PALIMPORT DLLEXPORT void * __cdecl bsearch(const void *, const void *, size_t, size_t, int(__cdecl *)(const void *, const void *)); PALIMPORT time_t __cdecl time(time_t *); #endif // !PAL_STDCPP_COMPAT PALIMPORT DLLEXPORT int __cdecl _open(const char *szPath, int nFlags, ...); PALIMPORT DLLEXPORT size_t __cdecl _pread(int fd, void *buf, size_t nbytes, ULONG64 offset); PALIMPORT DLLEXPORT int __cdecl _close(int); PALIMPORT DLLEXPORT int __cdecl _flushall(); #ifdef PAL_STDCPP_COMPAT struct _PAL_FILE; typedef struct _PAL_FILE PAL_FILE; #else // PAL_STDCPP_COMPAT struct _FILE; typedef struct _FILE FILE; typedef struct _FILE PAL_FILE; #define SEEK_SET 0 #define SEEK_CUR 1 #define SEEK_END 2 /* Locale categories */ #define LC_ALL 0 #define LC_COLLATE 1 #define LC_CTYPE 2 #define LC_MONETARY 3 #define LC_NUMERIC 4 #define LC_TIME 5 #define _IOFBF 0 /* setvbuf should set fully buffered */ #define _IOLBF 1 /* setvbuf should set line buffered */ #define _IONBF 2 /* setvbuf should set unbuffered */ #endif // PAL_STDCPP_COMPAT PALIMPORT int __cdecl PAL_fclose(PAL_FILE *); PALIMPORT DLLEXPORT int __cdecl PAL_fflush(PAL_FILE *); PALIMPORT size_t __cdecl PAL_fwrite(const void *, size_t, size_t, PAL_FILE *); PALIMPORT size_t __cdecl PAL_fread(void *, size_t, size_t, PAL_FILE *); PALIMPORT char * __cdecl PAL_fgets(char *, int, PAL_FILE *); PALIMPORT int __cdecl PAL_fputs(const char *, PAL_FILE *); PALIMPORT DLLEXPORT int __cdecl PAL_fprintf(PAL_FILE *, const char *, ...); PALIMPORT int __cdecl PAL_vfprintf(PAL_FILE *, const char *, va_list); PALIMPORT int __cdecl PAL_fseek(PAL_FILE *, LONG, int); PALIMPORT LONG __cdecl PAL_ftell(PAL_FILE *); PALIMPORT int __cdecl PAL_ferror(PAL_FILE *); PALIMPORT PAL_FILE * __cdecl PAL_fopen(const char *, const char *); PALIMPORT int __cdecl PAL_setvbuf(PAL_FILE *stream, char *, int, size_t); PALIMPORT DLLEXPORT int __cdecl PAL_fwprintf(PAL_FILE *, const WCHAR *, ...); PALIMPORT int __cdecl PAL_vfwprintf(PAL_FILE *, const WCHAR *, va_list); PALIMPORT int __cdecl PAL_wprintf(const WCHAR*, ...); PALIMPORT int __cdecl _getw(PAL_FILE *); PALIMPORT int __cdecl _putw(int, PAL_FILE *); PALIMPORT PAL_FILE * __cdecl _fdopen(int, const char *); PALIMPORT PAL_FILE * __cdecl _wfopen(const WCHAR *, const WCHAR *); /* Maximum value that can be returned by the rand function. */ #ifndef PAL_STDCPP_COMPAT #define RAND_MAX 0x7fff #endif // !PAL_STDCPP_COMPAT PALIMPORT int __cdecl rand(void); PALIMPORT void __cdecl srand(unsigned int); PALIMPORT DLLEXPORT int __cdecl printf(const char *, ...); PALIMPORT int __cdecl vprintf(const char *, va_list); #ifdef _MSC_VER #define PAL_get_caller _MSC_VER #else #define PAL_get_caller 0 #endif PALIMPORT DLLEXPORT PAL_FILE * __cdecl PAL_get_stdout(int caller); PALIMPORT PAL_FILE * __cdecl PAL_get_stdin(int caller); PALIMPORT DLLEXPORT PAL_FILE * __cdecl PAL_get_stderr(int caller); PALIMPORT DLLEXPORT int * __cdecl PAL_errno(int caller); #ifdef PAL_STDCPP_COMPAT #define PAL_stdout (PAL_get_stdout(PAL_get_caller)) #define PAL_stdin (PAL_get_stdin(PAL_get_caller)) #define PAL_stderr (PAL_get_stderr(PAL_get_caller)) #define PAL_errno (*PAL_errno(PAL_get_caller)) #else // PAL_STDCPP_COMPAT #define stdout (PAL_get_stdout(PAL_get_caller)) #define stdin (PAL_get_stdin(PAL_get_caller)) #define stderr (PAL_get_stderr(PAL_get_caller)) #define errno (*PAL_errno(PAL_get_caller)) #endif // PAL_STDCPP_COMPAT PALIMPORT DLLEXPORT char * __cdecl getenv(const char *); PALIMPORT DLLEXPORT int __cdecl _putenv(const char *); #define ERANGE 34 PALIMPORT WCHAR __cdecl PAL_ToUpperInvariant(WCHAR); PALIMPORT WCHAR __cdecl PAL_ToLowerInvariant(WCHAR); /******************* PAL-specific I/O completion port *****************/ typedef struct _PAL_IOCP_CPU_INFORMATION { union { FILETIME ftLastRecordedIdleTime; FILETIME ftLastRecordedCurrentTime; } LastRecordedTime; FILETIME ftLastRecordedKernelTime; FILETIME ftLastRecordedUserTime; } PAL_IOCP_CPU_INFORMATION; PALIMPORT INT PALAPI PAL_GetCPUBusyTime( IN OUT PAL_IOCP_CPU_INFORMATION *lpPrevCPUInfo); /****************PAL Perf functions for PInvoke*********************/ #if PAL_PERF PALIMPORT VOID PALAPI PAL_EnableProcessProfile(); PALIMPORT VOID PALAPI PAL_DisableProcessProfile(); PALIMPORT BOOL PALAPI PAL_IsProcessProfileEnabled(); PALIMPORT INT64 PALAPI PAL_GetCpuTickCount(); #endif // PAL_PERF /******************* PAL functions for SIMD extensions *****************/ PALIMPORT unsigned int _mm_getcsr(void); PALIMPORT void _mm_setcsr(unsigned int i); /******************* PAL functions for CPU capability detection *******/ #ifdef __cplusplus class CORJIT_FLAGS; PALIMPORT VOID PALAPI PAL_GetJitCpuCapabilityFlags(CORJIT_FLAGS *flags); #endif #ifdef __cplusplus PALIMPORT VOID PALAPI PAL_FreeExceptionRecords( IN EXCEPTION_RECORD *exceptionRecord, IN CONTEXT *contextRecord); #define EXCEPTION_CONTINUE_SEARCH 0 #define EXCEPTION_EXECUTE_HANDLER 1 #define EXCEPTION_CONTINUE_EXECUTION -1 struct PAL_SEHException { private: static const SIZE_T NoTargetFrameSp = (SIZE_T)SIZE_MAX; void Move(PAL_SEHException& ex) { ExceptionPointers.ExceptionRecord = ex.ExceptionPointers.ExceptionRecord; ExceptionPointers.ContextRecord = ex.ExceptionPointers.ContextRecord; TargetFrameSp = ex.TargetFrameSp; RecordsOnStack = ex.RecordsOnStack; ManagedToNativeExceptionCallback = ex.ManagedToNativeExceptionCallback; ManagedToNativeExceptionCallbackContext = ex.ManagedToNativeExceptionCallbackContext; ex.Clear(); } void FreeRecords() { if (ExceptionPointers.ExceptionRecord != NULL && !RecordsOnStack ) { PAL_FreeExceptionRecords(ExceptionPointers.ExceptionRecord, ExceptionPointers.ContextRecord); ExceptionPointers.ExceptionRecord = NULL; ExceptionPointers.ContextRecord = NULL; } } public: EXCEPTION_POINTERS ExceptionPointers; // Target frame stack pointer set before the 2nd pass. SIZE_T TargetFrameSp; bool RecordsOnStack; void(*ManagedToNativeExceptionCallback)(void* context); void* ManagedToNativeExceptionCallbackContext; PAL_SEHException(EXCEPTION_RECORD *pExceptionRecord, CONTEXT *pContextRecord, bool onStack = false) { ExceptionPointers.ExceptionRecord = pExceptionRecord; ExceptionPointers.ContextRecord = pContextRecord; TargetFrameSp = NoTargetFrameSp; RecordsOnStack = onStack; ManagedToNativeExceptionCallback = NULL; ManagedToNativeExceptionCallbackContext = NULL; } PAL_SEHException() { Clear(); } // The copy constructor and copy assignment operators are deleted so that the PAL_SEHException // can never be copied, only moved. This enables simple lifetime management of the exception and // context records, since there is always just one PAL_SEHException instance referring to the same records. PAL_SEHException(const PAL_SEHException& ex) = delete; PAL_SEHException& operator=(const PAL_SEHException& ex) = delete; PAL_SEHException(PAL_SEHException&& ex) { Move(ex); } PAL_SEHException& operator=(PAL_SEHException&& ex) { FreeRecords(); Move(ex); return *this; } ~PAL_SEHException() { FreeRecords(); } void Clear() { ExceptionPointers.ExceptionRecord = NULL; ExceptionPointers.ContextRecord = NULL; TargetFrameSp = NoTargetFrameSp; RecordsOnStack = false; ManagedToNativeExceptionCallback = NULL; ManagedToNativeExceptionCallbackContext = NULL; } CONTEXT* GetContextRecord() { return ExceptionPointers.ContextRecord; } EXCEPTION_RECORD* GetExceptionRecord() { return ExceptionPointers.ExceptionRecord; } bool IsFirstPass() { return (TargetFrameSp == NoTargetFrameSp); } void SecondPassDone() { TargetFrameSp = NoTargetFrameSp; } bool HasPropagateExceptionCallback() { return ManagedToNativeExceptionCallback != NULL; } void SetPropagateExceptionCallback( void(*callback)(void*), void* context) { ManagedToNativeExceptionCallback = callback; ManagedToNativeExceptionCallbackContext = context; } }; typedef BOOL (*PHARDWARE_EXCEPTION_HANDLER)(PAL_SEHException* ex); typedef BOOL (*PHARDWARE_EXCEPTION_SAFETY_CHECK_FUNCTION)(PCONTEXT contextRecord, PEXCEPTION_RECORD exceptionRecord); typedef VOID (*PTERMINATION_REQUEST_HANDLER)(int terminationExitCode); typedef DWORD (*PGET_GCMARKER_EXCEPTION_CODE)(LPVOID ip); PALIMPORT VOID PALAPI PAL_SetHardwareExceptionHandler( IN PHARDWARE_EXCEPTION_HANDLER exceptionHandler, IN PHARDWARE_EXCEPTION_SAFETY_CHECK_FUNCTION exceptionCheckFunction); PALIMPORT VOID PALAPI PAL_SetGetGcMarkerExceptionCode( IN PGET_GCMARKER_EXCEPTION_CODE getGcMarkerExceptionCode); PALIMPORT VOID PALAPI PAL_ThrowExceptionFromContext( IN CONTEXT* context, IN PAL_SEHException* ex); PALIMPORT VOID PALAPI PAL_SetTerminationRequestHandler( IN PTERMINATION_REQUEST_HANDLER terminationRequestHandler); PALIMPORT VOID PALAPI PAL_CatchHardwareExceptionHolderEnter(); PALIMPORT VOID PALAPI PAL_CatchHardwareExceptionHolderExit(); // // This holder is used to indicate that a hardware // exception should be raised as a C++ exception // to better emulate SEH on the xplat platforms. // class CatchHardwareExceptionHolder { public: CatchHardwareExceptionHolder() { PAL_CatchHardwareExceptionHolderEnter(); } ~CatchHardwareExceptionHolder() { PAL_CatchHardwareExceptionHolderExit(); } static bool IsEnabled(); }; // // NOTE: This is only defined in one PAL test. // #ifdef FEATURE_ENABLE_HARDWARE_EXCEPTIONS #define HardwareExceptionHolder CatchHardwareExceptionHolder __catchHardwareException; #else #define HardwareExceptionHolder #endif // FEATURE_ENABLE_HARDWARE_EXCEPTIONS class NativeExceptionHolderBase; PALIMPORT PALAPI NativeExceptionHolderBase ** PAL_GetNativeExceptionHolderHead(); extern "C++" { // // This is the base class of native exception holder used to provide // the filter function to the exception dispatcher. This allows the // filter to be called during the first pass to better emulate SEH // the xplat platforms that only have C++ exception support. // class NativeExceptionHolderBase { // Save the address of the holder head so the destructor // doesn't have access the slow (on Linux) TLS value again. NativeExceptionHolderBase **m_head; // The next holder on the stack NativeExceptionHolderBase *m_next; protected: NativeExceptionHolderBase() { m_head = nullptr; m_next = nullptr; } ~NativeExceptionHolderBase() { // Only destroy if Push was called if (m_head != nullptr) { *m_head = m_next; m_head = nullptr; m_next = nullptr; } } public: // Calls the holder's filter handler. virtual EXCEPTION_DISPOSITION InvokeFilter(PAL_SEHException& ex) = 0; // Adds the holder to the "stack" of holders. This is done explicitly instead // of in the constructor was to avoid the mess of move constructors combined // with return value optimization (in CreateHolder). void Push() { NativeExceptionHolderBase **head = PAL_GetNativeExceptionHolderHead(); m_head = head; m_next = *head; *head = this; } // Given the currentHolder and locals stack range find the next holder starting with this one // To find the first holder, pass nullptr as the currentHolder. static NativeExceptionHolderBase *FindNextHolder(NativeExceptionHolderBase *currentHolder, PVOID frameLowAddress, PVOID frameHighAddress); }; // // This is the second part of the native exception filter holder. It is // templated because the lambda used to wrap the exception filter is a // unknown type. // template class NativeExceptionHolder : public NativeExceptionHolderBase { FilterType* m_exceptionFilter; public: NativeExceptionHolder(FilterType* exceptionFilter) : NativeExceptionHolderBase() { m_exceptionFilter = exceptionFilter; } virtual EXCEPTION_DISPOSITION InvokeFilter(PAL_SEHException& ex) { return (*m_exceptionFilter)(ex); } }; // // This is a native exception holder that is used when the catch catches // all exceptions. // class NativeExceptionHolderCatchAll : public NativeExceptionHolderBase { public: NativeExceptionHolderCatchAll() : NativeExceptionHolderBase() { } virtual EXCEPTION_DISPOSITION InvokeFilter(PAL_SEHException& ex) { return EXCEPTION_EXECUTE_HANDLER; } }; // This is a native exception holder that doesn't catch any exceptions. class NativeExceptionHolderNoCatch : public NativeExceptionHolderBase { public: NativeExceptionHolderNoCatch() : NativeExceptionHolderBase() { } virtual EXCEPTION_DISPOSITION InvokeFilter(PAL_SEHException& ex) { return EXCEPTION_CONTINUE_SEARCH; } }; // // This factory class for the native exception holder is necessary because // templated functions don't need the explicit type parameter and can infer // the template type from the parameter. // class NativeExceptionHolderFactory { public: template static NativeExceptionHolder CreateHolder(FilterType* exceptionFilter) { return NativeExceptionHolder(exceptionFilter); } }; // Start of a try block for exceptions raised by RaiseException #define PAL_TRY(__ParamType, __paramDef, __paramRef) \ { \ __ParamType __param = __paramRef; \ auto tryBlock = [](__ParamType __paramDef) \ { // Start of an exception handler. If an exception raised by the RaiseException // occurs in the try block and the disposition is EXCEPTION_EXECUTE_HANDLER, // the handler code is executed. If the disposition is EXCEPTION_CONTINUE_SEARCH, // the exception is rethrown. The EXCEPTION_CONTINUE_EXECUTION disposition is // not supported. #define PAL_EXCEPT(dispositionExpression) \ }; \ const bool isFinally = false; \ auto finallyBlock = []() {}; \ EXCEPTION_DISPOSITION disposition = EXCEPTION_CONTINUE_EXECUTION; \ auto exceptionFilter = [&disposition, &__param](PAL_SEHException& ex) \ { \ (void)__param; \ disposition = dispositionExpression; \ _ASSERTE(disposition != EXCEPTION_CONTINUE_EXECUTION); \ return disposition; \ }; \ try \ { \ HardwareExceptionHolder \ auto __exceptionHolder = NativeExceptionHolderFactory::CreateHolder(&exceptionFilter); \ __exceptionHolder.Push(); \ tryBlock(__param); \ } \ catch (PAL_SEHException& ex) \ { \ if (disposition == EXCEPTION_CONTINUE_EXECUTION) \ { \ exceptionFilter(ex); \ } \ if (disposition == EXCEPTION_CONTINUE_SEARCH) \ { \ throw; \ } \ ex.SecondPassDone(); // Start of an exception handler. It works the same way as the PAL_EXCEPT except // that the disposition is obtained by calling the specified filter. #define PAL_EXCEPT_FILTER(filter) PAL_EXCEPT(filter(&ex.ExceptionPointers, __param)) // Start of a finally block. The finally block is executed both when the try block // finishes or when an exception is raised using the RaiseException in it. #define PAL_FINALLY \ }; \ const bool isFinally = true; \ auto finallyBlock = [&]() \ { // End of an except or a finally block. #define PAL_ENDTRY \ }; \ if (isFinally) \ { \ try \ { \ tryBlock(__param); \ } \ catch (...) \ { \ finallyBlock(); \ throw; \ } \ finallyBlock(); \ } \ } } // extern "C++" #define PAL_CPP_THROW(type, obj) { throw obj; } #define PAL_CPP_RETHROW { throw; } #define PAL_CPP_TRY try { HardwareExceptionHolder #define PAL_CPP_CATCH_EXCEPTION(ident) } catch (Exception *ident) { #define PAL_CPP_CATCH_EXCEPTION_NOARG } catch (Exception *) { #define PAL_CPP_CATCH_DERIVED(type, ident) } catch (type *ident) { #define PAL_CPP_CATCH_ALL } catch (...) { \ try { throw; } \ catch (PAL_SEHException& ex) { ex.SecondPassDone(); } \ catch (...) {} #define PAL_CPP_ENDTRY } #ifdef _MSC_VER #pragma warning(disable:4611) // interaction between '_setjmp' and C++ object destruction is non-portable #endif #define PAL_TRY_FOR_DLLMAIN(ParamType, paramDef, paramRef, _reason) PAL_TRY(ParamType, paramDef, paramRef) #endif // __cplusplus // Platform-specific library naming // #ifdef __APPLE__ #define MAKEDLLNAME_W(name) u"lib" name u".dylib" #define MAKEDLLNAME_A(name) "lib" name ".dylib" #else #define MAKEDLLNAME_W(name) u"lib" name u".so" #define MAKEDLLNAME_A(name) "lib" name ".so" #endif #ifdef UNICODE #define MAKEDLLNAME(x) MAKEDLLNAME_W(x) #else #define MAKEDLLNAME(x) MAKEDLLNAME_A(x) #endif #define PAL_SHLIB_PREFIX "lib" #define PAL_SHLIB_PREFIX_W u"lib" #if __APPLE__ #define PAL_SHLIB_SUFFIX ".dylib" #define PAL_SHLIB_SUFFIX_W u".dylib" #else #define PAL_SHLIB_SUFFIX ".so" #define PAL_SHLIB_SUFFIX_W u".so" #endif #define DBG_EXCEPTION_HANDLED ((DWORD )0x00010001L) #define DBG_CONTINUE ((DWORD )0x00010002L) #define DBG_EXCEPTION_NOT_HANDLED ((DWORD )0x80010001L) #define DBG_TERMINATE_THREAD ((DWORD )0x40010003L) #define DBG_TERMINATE_PROCESS ((DWORD )0x40010004L) #define DBG_CONTROL_C ((DWORD )0x40010005L) #define DBG_RIPEXCEPTION ((DWORD )0x40010007L) #define DBG_CONTROL_BREAK ((DWORD )0x40010008L) #define DBG_COMMAND_EXCEPTION ((DWORD )0x40010009L) #define STATUS_USER_APC ((DWORD )0x000000C0L) #define STATUS_GUARD_PAGE_VIOLATION ((DWORD )0x80000001L) #define STATUS_DATATYPE_MISALIGNMENT ((DWORD )0x80000002L) #define STATUS_BREAKPOINT ((DWORD )0x80000003L) #define STATUS_SINGLE_STEP ((DWORD )0x80000004L) #define STATUS_LONGJUMP ((DWORD )0x80000026L) #define STATUS_UNWIND_CONSOLIDATE ((DWORD )0x80000029L) #define STATUS_ACCESS_VIOLATION ((DWORD )0xC0000005L) #define STATUS_IN_PAGE_ERROR ((DWORD )0xC0000006L) #define STATUS_INVALID_HANDLE ((DWORD )0xC0000008L) #define STATUS_NO_MEMORY ((DWORD )0xC0000017L) #define STATUS_ILLEGAL_INSTRUCTION ((DWORD )0xC000001DL) #define STATUS_NONCONTINUABLE_EXCEPTION ((DWORD )0xC0000025L) #define STATUS_INVALID_DISPOSITION ((DWORD )0xC0000026L) #define STATUS_ARRAY_BOUNDS_EXCEEDED ((DWORD )0xC000008CL) #define STATUS_FLOAT_DENORMAL_OPERAND ((DWORD )0xC000008DL) #define STATUS_FLOAT_DIVIDE_BY_ZERO ((DWORD )0xC000008EL) #define STATUS_FLOAT_INEXACT_RESULT ((DWORD )0xC000008FL) #define STATUS_FLOAT_INVALID_OPERATION ((DWORD )0xC0000090L) #define STATUS_FLOAT_OVERFLOW ((DWORD )0xC0000091L) #define STATUS_FLOAT_STACK_CHECK ((DWORD )0xC0000092L) #define STATUS_FLOAT_UNDERFLOW ((DWORD )0xC0000093L) #define STATUS_INTEGER_DIVIDE_BY_ZERO ((DWORD )0xC0000094L) #define STATUS_INTEGER_OVERFLOW ((DWORD )0xC0000095L) #define STATUS_PRIVILEGED_INSTRUCTION ((DWORD )0xC0000096L) #define STATUS_STACK_OVERFLOW ((DWORD )0xC00000FDL) #define STATUS_CONTROL_C_EXIT ((DWORD )0xC000013AL) #define WAIT_IO_COMPLETION STATUS_USER_APC #define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION #define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT #define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT #define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP #define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED #define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND #define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO #define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT #define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION #define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW #define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK #define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW #define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO #define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW #define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION #define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR #define EXCEPTION_ILLEGAL_INSTRUCTION STATUS_ILLEGAL_INSTRUCTION #define EXCEPTION_NONCONTINUABLE_EXCEPTION STATUS_NONCONTINUABLE_EXCEPTION #define EXCEPTION_STACK_OVERFLOW STATUS_STACK_OVERFLOW #define EXCEPTION_INVALID_DISPOSITION STATUS_INVALID_DISPOSITION #define EXCEPTION_GUARD_PAGE STATUS_GUARD_PAGE_VIOLATION #define EXCEPTION_INVALID_HANDLE STATUS_INVALID_HANDLE #define CONTROL_C_EXIT STATUS_CONTROL_C_EXIT /******************* HRESULT types ****************************************/ #define FACILITY_WINDOWS 8 #define FACILITY_URT 19 #define FACILITY_UMI 22 #define FACILITY_SXS 23 #define FACILITY_STORAGE 3 #define FACILITY_SSPI 9 #define FACILITY_SCARD 16 #define FACILITY_SETUPAPI 15 #define FACILITY_SECURITY 9 #define FACILITY_RPC 1 #define FACILITY_WIN32 7 #define FACILITY_CONTROL 10 #define FACILITY_NULL 0 #define FACILITY_MSMQ 14 #define FACILITY_MEDIASERVER 13 #define FACILITY_INTERNET 12 #define FACILITY_ITF 4 #define FACILITY_DPLAY 21 #define FACILITY_DISPATCH 2 #define FACILITY_COMPLUS 17 #define FACILITY_CERT 11 #define FACILITY_ACS 20 #define FACILITY_AAF 18 #define NO_ERROR 0L #define SEVERITY_SUCCESS 0 #define SEVERITY_ERROR 1 #define SUCCEEDED(Status) ((HRESULT)(Status) >= 0) #define FAILED(Status) ((HRESULT)(Status)<0) #define IS_ERROR(Status) ((ULONG)(Status) >> 31 == SEVERITY_ERROR) // diff from win32 #define HRESULT_CODE(hr) ((hr) & 0xFFFF) #define SCODE_CODE(sc) ((sc) & 0xFFFF) #define HRESULT_FACILITY(hr) (((hr) >> 16) & 0x1fff) #define SCODE_FACILITY(sc) (((sc) >> 16) & 0x1fff) #define HRESULT_SEVERITY(hr) (((hr) >> 31) & 0x1) #define SCODE_SEVERITY(sc) (((sc) >> 31) & 0x1) // both macros diff from Win32 #define MAKE_HRESULT(sev,fac,code) \ ((HRESULT) (((ULONG)(sev)<<31) | ((ULONG)(fac)<<16) | ((ULONG)(code))) ) #define MAKE_SCODE(sev,fac,code) \ ((SCODE) (((ULONG)(sev)<<31) | ((ULONG)(fac)<<16) | ((LONG)(code))) ) #define FACILITY_NT_BIT 0x10000000 #define HRESULT_FROM_WIN32(x) ((HRESULT)(x) <= 0 ? ((HRESULT)(x)) : ((HRESULT) (((x) & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000))) #define __HRESULT_FROM_WIN32(x) HRESULT_FROM_WIN32(x) #define HRESULT_FROM_NT(x) ((HRESULT) ((x) | FACILITY_NT_BIT)) #ifdef __cplusplus } #endif #endif // __PAL_H__ ProcDump-for-Linux-2.2/profiler/inc/pal_assert.h000066400000000000000000000031501447614355600217060ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. /*++ --*/ #ifndef __PAL_ASSERT_H__ #define __PAL_ASSERT_H__ #ifdef __cplusplus extern "C" { #endif #ifdef __cplusplus // // C_ASSERT() can be used to perform many compile-time assertions: // type sizes, field offsets, etc. // #define C_ASSERT(e) static_assert(e, #e) // // CPP_ASSERT() can be used within a class definition, to perform a // compile-time assertion involving private names within the class. // #define CPP_ASSERT(n, e) static_assert(e, #e) #endif // __cplusplus #if defined(_DEBUG) #define _ASSERTE(e) do { \ if (!(e)) { \ fprintf (stderr, \ "ASSERT FAILED\n" \ "\tExpression: %s\n" \ "\tLocation: line %d in %s\n" \ "\tFunction: %s\n" \ "\tProcess: %d\n", \ #e, __LINE__, __FILE__, __FUNCTION__, \ GetCurrentProcessId()); \ DebugBreak(); \ } \ }while (0) #else // !DEBUG #define _ASSERTE(e) ((void)0) #endif #ifndef assert #define assert(e) _ASSERTE(e) #endif // assert #ifdef __cplusplus } #endif #endif // __PAL_ASSERT_H__ ProcDump-for-Linux-2.2/profiler/inc/pal_endian.h000066400000000000000000000102531447614355600216450ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. /*++ --*/ #ifndef __PAL_ENDIAN_H__ #define __PAL_ENDIAN_H__ #ifdef __cplusplus extern "C++" { inline UINT16 SWAP16(UINT16 x) { return (x >> 8) | (x << 8); } inline UINT32 SWAP32(UINT32 x) { return (x >> 24) | ((x >> 8) & 0x0000FF00L) | ((x & 0x0000FF00L) << 8) | (x << 24); } } #endif // __cplusplus #if BIGENDIAN #ifdef __cplusplus extern "C++" { inline UINT16 VAL16(UINT16 x) { return SWAP16(x); } inline UINT32 VAL32(UINT32 x) { return SWAP32(x); } inline UINT64 VAL64(UINT64 x) { return ((UINT64)VAL32(x) << 32) | VAL32(x >> 32); } inline void SwapString(WCHAR *szString) { unsigned i; for (i = 0; szString[i] != L'\0'; i++) { szString[i] = VAL16(szString[i]); } } inline void SwapStringLength(WCHAR *szString, ULONG StringLength) { unsigned i; for (i = 0; i < StringLength; i++) { szString[i] = VAL16(szString[i]); } } inline void SwapGuid(GUID *pGuid) { pGuid->Data1 = VAL32(pGuid->Data1); pGuid->Data2 = VAL16(pGuid->Data2); pGuid->Data3 = VAL16(pGuid->Data3); } }; #else // __cplusplus /* C Version of VAL functionality. Swap functions omitted for lack of use in C code */ #define VAL16(x) (((x) >> 8) | ((x) << 8)) #define VAL32(y) (((y) >> 24) | (((y) >> 8) & 0x0000FF00L) | (((y) & 0x0000FF00L) << 8) | ((y) << 24)) #define VAL64(z) (((UINT64)VAL32(z) << 32) | VAL32((z) >> 32)) #endif // __cplusplus #else // !BIGENDIAN #define VAL16(x) x #define VAL32(x) x #define VAL64(x) x #define SwapString(x) #define SwapStringLength(x, y) #define SwapGuid(x) #endif // !BIGENDIAN #ifdef HOST_64BIT #define VALPTR(x) VAL64(x) #else #define VALPTR(x) VAL32(x) #endif #ifdef HOST_ARM #define LOG2_PTRSIZE 2 #define ALIGN_ACCESS ((1< long = 64 bits // LLP64 => longs = 32 bits, long long = 64 bits) // // To handle this difference, we #define long to be int (and thus 32 bits) when // compiling those files. (See the bottom of this file or search for // #define long to see where we do this.) // // But this fix is more complicated than it seems, because we also use the // preprocessor to #define __int64 to long for LP64 architectures (__int64 // isn't a builtin in gcc). We don't want __int64 to be an int (by cascading // macro rules). So we play this little trick below where we add // __cppmungestrip before "long", which is what we're really #defining __int64 // to. The preprocessor sees __cppmungestriplong as something different than // long, so it doesn't replace it with int. The during the cppmunge phase, we // remove the __cppmungestrip part, leaving long for the compiler to see. // // Note that we can't just use a typedef to define __int64 as long before // #defining long because typedefed types can't be signedness-agnostic (i.e. // they must be either signed or unsigned) and we want to be able to use // __int64 as though it were intrinsic #ifdef HOST_64BIT #define __int64 long #else // HOST_64BIT #define __int64 long long #endif // HOST_64BIT #define __int32 int #define __int16 short int #define __int8 char // assumes char is signed #endif // _MSC_VER #ifndef PAL_STDCPP_COMPAT // Defined in gnu's types.h. For non PAL_IMPLEMENTATION system // includes are not included, so we need to define them. #ifndef PAL_IMPLEMENTATION typedef __int64 int64_t; typedef unsigned __int64 uint64_t; typedef __int32 int32_t; typedef unsigned __int32 uint32_t; typedef __int16 int16_t; typedef unsigned __int16 uint16_t; typedef __int8 int8_t; typedef unsigned __int8 uint8_t; #endif // PAL_IMPLEMENTATION #ifndef _MSC_VER #if HOST_64BIT typedef long double LONG_DOUBLE; #endif #endif // _MSC_VER #endif // !PAL_STDCPP_COMPAT typedef void VOID; typedef int LONG; // NOTE: diff from windows.h, for LP64 compat typedef unsigned int ULONG; // NOTE: diff from windows.h, for LP64 compat typedef __int64 LONGLONG; typedef unsigned __int64 ULONGLONG; typedef ULONGLONG DWORD64; typedef DWORD64 *PDWORD64; typedef LONGLONG *PLONG64; typedef ULONGLONG *PULONG64; typedef ULONGLONG *PULONGLONG; typedef ULONG *PULONG; typedef short SHORT; typedef SHORT *PSHORT; typedef unsigned short USHORT; typedef USHORT *PUSHORT; typedef unsigned char UCHAR; typedef UCHAR *PUCHAR; typedef char *PSZ; typedef ULONGLONG DWORDLONG; typedef unsigned int DWORD; // NOTE: diff from windows.h, for LP64 compat typedef unsigned int DWORD32, *PDWORD32; typedef int BOOL; typedef unsigned char BYTE; typedef unsigned short WORD; typedef float FLOAT; typedef double DOUBLE; typedef BOOL *PBOOL; typedef BOOL *LPBOOL; typedef BYTE *PBYTE; typedef BYTE *LPBYTE; typedef const BYTE *LPCBYTE; typedef int *PINT; typedef int *LPINT; typedef WORD *PWORD; typedef WORD *LPWORD; typedef LONG *LPLONG; typedef LPLONG PLONG; typedef DWORD *PDWORD; typedef DWORD *LPDWORD; typedef void *PVOID; typedef void *LPVOID; typedef CONST void *LPCVOID; typedef int INT; typedef unsigned int UINT; typedef unsigned int *PUINT; typedef BYTE BOOLEAN; typedef BOOLEAN *PBOOLEAN; typedef unsigned __int8 UINT8; typedef signed __int8 INT8; typedef unsigned __int16 UINT16; typedef signed __int16 INT16; typedef unsigned __int32 UINT32, *PUINT32; typedef signed __int32 INT32, *PINT32; typedef unsigned __int64 UINT64, *PUINT64; typedef signed __int64 INT64, *PINT64; typedef unsigned __int32 ULONG32, *PULONG32; typedef signed __int32 LONG32, *PLONG32; typedef unsigned __int64 ULONG64; typedef signed __int64 LONG64; #if defined(HOST_X86) && _MSC_VER >= 1300 #define _W64 __w64 #else #define _W64 #endif #ifdef HOST_64BIT #define _atoi64 (__int64)atoll typedef __int64 INT_PTR, *PINT_PTR; typedef unsigned __int64 UINT_PTR, *PUINT_PTR; typedef __int64 LONG_PTR, *PLONG_PTR; typedef unsigned __int64 ULONG_PTR, *PULONG_PTR; typedef unsigned __int64 DWORD_PTR, *PDWORD_PTR; /* maximum signed 64 bit value */ #define LONG_PTR_MAX I64(9223372036854775807) /* maximum unsigned 64 bit value */ #define ULONG_PTR_MAX UI64(0xffffffffffffffff) #ifndef SIZE_MAX #define SIZE_MAX _UI64_MAX #endif #define __int3264 __int64 #if !defined(HOST_64BIT) __inline unsigned long HandleToULong( const void *h ) { return((unsigned long) (ULONG_PTR) h ); } __inline long HandleToLong( const void *h ) { return((long) (LONG_PTR) h ); } __inline void * ULongToHandle( const unsigned long h ) { return((void *) (UINT_PTR) h ); } __inline void * LongToHandle( const long h ) { return((void *) (INT_PTR) h ); } __inline unsigned long PtrToUlong( const void *p ) { return((unsigned long) (ULONG_PTR) p ); } __inline unsigned int PtrToUint( const void *p ) { return((unsigned int) (UINT_PTR) p ); } __inline unsigned short PtrToUshort( const void *p ) { return((unsigned short) (unsigned long) (ULONG_PTR) p ); } __inline long PtrToLong( const void *p ) { return((long) (LONG_PTR) p ); } __inline int PtrToInt( const void *p ) { return((int) (INT_PTR) p ); } __inline short PtrToShort( const void *p ) { return((short) (long) (LONG_PTR) p ); } __inline void * IntToPtr( const int i ) // Caution: IntToPtr() sign-extends the int value. { return( (void *)(INT_PTR)i ); } __inline void * UIntToPtr( const unsigned int ui ) // Caution: UIntToPtr() zero-extends the unsigned int value. { return( (void *)(UINT_PTR)ui ); } __inline void * LongToPtr( const long l ) // Caution: LongToPtr() sign-extends the long value. { return( (void *)(LONG_PTR)l ); } __inline void * ULongToPtr( const unsigned long ul ) // Caution: ULongToPtr() zero-extends the unsigned long value. { return( (void *)(ULONG_PTR)ul ); } __inline void * ShortToPtr( const short s ) // Caution: ShortToPtr() sign-extends the short value. { return( (void *)(INT_PTR)s ); } __inline void * UShortToPtr( const unsigned short us ) // Caution: UShortToPtr() zero-extends the unsigned short value. { return( (void *)(UINT_PTR)us ); } #else // !defined(HOST_64BIT) #define HandleToULong( h ) ((ULONG)(ULONG_PTR)(h) ) #define HandleToLong( h ) ((LONG)(LONG_PTR) (h) ) #define ULongToHandle( ul ) ((HANDLE)(ULONG_PTR) (ul) ) #define LongToHandle( h ) ((HANDLE)(LONG_PTR) (h) ) #define PtrToUlong( p ) ((ULONG)(ULONG_PTR) (p) ) #define PtrToLong( p ) ((LONG)(LONG_PTR) (p) ) #define PtrToUint( p ) ((UINT)(UINT_PTR) (p) ) #define PtrToInt( p ) ((INT)(INT_PTR) (p) ) #define PtrToUshort( p ) ((unsigned short)(ULONG_PTR)(p) ) #define PtrToShort( p ) ((short)(LONG_PTR)(p) ) #define IntToPtr( i ) ((VOID *)(INT_PTR)((int)(i))) #define UIntToPtr( ui ) ((VOID *)(UINT_PTR)((unsigned int)(ui))) #define LongToPtr( l ) ((VOID *)(LONG_PTR)((long)(l))) #define ULongToPtr( ul ) ((VOID *)(ULONG_PTR)((unsigned long)(ul))) #define ShortToPtr( s ) ((VOID *)(INT_PTR)((short)(s))) #define UShortToPtr( us ) ((VOID *)(UINT_PTR)((unsigned short)(s))) #endif // !defined(HOST_64BIT) #else typedef _W64 __int32 INT_PTR; typedef _W64 unsigned __int32 UINT_PTR; typedef _W64 __int32 LONG_PTR; typedef _W64 unsigned __int32 ULONG_PTR, *PULONG_PTR; typedef _W64 unsigned __int32 DWORD_PTR, *PDWORD_PTR; /* maximum signed 32 bit value */ #define LONG_PTR_MAX 2147483647L /* maximum unsigned 32 bit value */ #define ULONG_PTR_MAX 0xffffffffUL #ifndef SIZE_MAX #define SIZE_MAX UINT_MAX #endif #define __int3264 __int32 #define HandleToULong( h ) ((ULONG)(ULONG_PTR)(h) ) #define HandleToLong( h ) ((LONG)(LONG_PTR) (h) ) #define ULongToHandle( ul ) ((HANDLE)(ULONG_PTR) (ul) ) #define LongToHandle( h ) ((HANDLE)(LONG_PTR) (h) ) #define PtrToUlong( p ) ((ULONG)(ULONG_PTR) (p) ) #define PtrToLong( p ) ((LONG)(LONG_PTR) (p) ) #define PtrToUint( p ) ((UINT)(UINT_PTR) (p) ) #define PtrToInt( p ) ((INT)(INT_PTR) (p) ) #define PtrToUshort( p ) ((unsigned short)(ULONG_PTR)(p) ) #define PtrToShort( p ) ((short)(LONG_PTR)(p) ) #define IntToPtr( i ) ((VOID *)(INT_PTR)((int)i)) #define UIntToPtr( ui ) ((VOID *)(UINT_PTR)((unsigned int)ui)) #define LongToPtr( l ) ((VOID *)(LONG_PTR)((long)l)) #define ULongToPtr( ul ) ((VOID *)(ULONG_PTR)((unsigned long)ul)) #define ShortToPtr( s ) ((VOID *)(INT_PTR)((short)s)) #define UShortToPtr( us ) ((VOID *)(UINT_PTR)((unsigned short)s)) #endif #define HandleToUlong(h) HandleToULong(h) #define UlongToHandle(ul) ULongToHandle(ul) #define UlongToPtr(ul) ULongToPtr(ul) #define UintToPtr(ui) UIntToPtr(ui) typedef ULONG_PTR SIZE_T, *PSIZE_T; typedef LONG_PTR SSIZE_T, *PSSIZE_T; #ifndef SIZE_T_MAX #define SIZE_T_MAX ULONG_PTR_MAX #endif // SIZE_T_MAX #ifndef SSIZE_T_MAX #define SSIZE_T_MAX LONG_PTR_MAX #endif #ifndef SSIZE_T_MIN #define SSIZE_T_MIN (ssize_t)I64(0x8000000000000000) #endif #ifndef PAL_STDCPP_COMPAT #if defined(__APPLE_CC__) || defined(__linux__) #ifdef HOST_64BIT typedef unsigned long size_t; typedef long ptrdiff_t; #else // !HOST_64BIT typedef unsigned int size_t; typedef int ptrdiff_t; #endif // !HOST_64BIT #else typedef ULONG_PTR size_t; typedef LONG_PTR ptrdiff_t; #endif #endif // !PAL_STDCPP_COMPAT #define _SIZE_T_DEFINED typedef LONG_PTR LPARAM; #define _PTRDIFF_T_DEFINED #ifdef _MINGW_ // We need to define _PTRDIFF_T to make sure ptrdiff_t doesn't get defined // again by system headers - but only for MinGW. #define _PTRDIFF_T #endif typedef char16_t WCHAR; #ifndef PAL_STDCPP_COMPAT #if defined(__linux__) #ifdef HOST_64BIT typedef long int intptr_t; typedef unsigned long int uintptr_t; #else // !HOST_64BIT typedef int intptr_t; typedef unsigned int uintptr_t; #endif // !HOST_64BIT #else typedef INT_PTR intptr_t; typedef UINT_PTR uintptr_t; #endif #endif // PAL_STDCPP_COMPAT #define _INTPTR_T_DEFINED #define _UINTPTR_T_DEFINED typedef DWORD LCID; typedef PDWORD PLCID; typedef WORD LANGID; typedef DWORD LCTYPE; typedef WCHAR *PWCHAR; typedef WCHAR *LPWCH, *PWCH; typedef CONST WCHAR *LPCWCH, *PCWCH; typedef WCHAR *NWPSTR; typedef WCHAR *LPWSTR, *PWSTR; typedef CONST WCHAR *LPCWSTR, *PCWSTR; typedef char CHAR; typedef CHAR *PCHAR; typedef CHAR *LPCH, *PCH; typedef CONST CHAR *LPCCH, *PCCH; typedef CHAR *NPSTR; typedef CHAR *LPSTR, *PSTR; typedef CONST CHAR *LPCSTR, *PCSTR; #ifdef UNICODE typedef WCHAR TCHAR; typedef WCHAR _TCHAR; #else typedef CHAR TCHAR; typedef CHAR _TCHAR; #endif typedef TCHAR *PTCHAR; typedef TCHAR *LPTSTR, *PTSTR; typedef CONST TCHAR *LPCTSTR; #define MAKEWORD(a, b) ((WORD)(((BYTE)((DWORD_PTR)(a) & 0xff)) | ((WORD)((BYTE)((DWORD_PTR)(b) & 0xff))) << 8)) #define MAKELONG(a, b) ((LONG)(((WORD)((DWORD_PTR)(a) & 0xffff)) | ((DWORD)((WORD)((DWORD_PTR)(b) & 0xffff))) << 16)) #define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xffff)) #define HIWORD(l) ((WORD)((DWORD_PTR)(l) >> 16)) #define LOBYTE(w) ((BYTE)((DWORD_PTR)(w) & 0xff)) #define HIBYTE(w) ((BYTE)((DWORD_PTR)(w) >> 8)) typedef VOID *HANDLE; typedef HANDLE HWND; typedef struct __PAL_RemoteHandle__ { HANDLE h; } *RHANDLE; typedef HANDLE *PHANDLE; typedef HANDLE *LPHANDLE; #define INVALID_HANDLE_VALUE ((VOID *)(-1)) #define INVALID_FILE_SIZE ((DWORD)0xFFFFFFFF) #define INVALID_FILE_ATTRIBUTES ((DWORD) -1) typedef HANDLE HMODULE; typedef HANDLE HINSTANCE; typedef HANDLE HGLOBAL; typedef HANDLE HLOCAL; typedef HANDLE HRSRC; typedef LONG HRESULT; typedef LONG NTSTATUS; typedef union _LARGE_INTEGER { struct { #if BIGENDIAN LONG HighPart; DWORD LowPart; #else DWORD LowPart; LONG HighPart; #endif } u; LONGLONG QuadPart; } LARGE_INTEGER, *PLARGE_INTEGER; #ifndef GUID_DEFINED typedef struct _GUID { ULONG Data1; // NOTE: diff from Win32, for LP64 USHORT Data2; USHORT Data3; UCHAR Data4[ 8 ]; } GUID; typedef const GUID *LPCGUID; #define GUID_DEFINED #endif // !GUID_DEFINED typedef struct _FILETIME { DWORD dwLowDateTime; DWORD dwHighDateTime; } FILETIME, *PFILETIME, *LPFILETIME; /* Code Page Default Values */ #define CP_ACP 0 /* default to ANSI code page */ #define CP_UTF8 65001 /* UTF-8 translation */ typedef PVOID PSID; #ifdef __cplusplus } #endif #endif // __PAL_MSTYPES_H__ ProcDump-for-Linux-2.2/profiler/inc/palrt.h000066400000000000000000001213251447614355600207000ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // =========================================================================== // File: palrt.h // // =========================================================================== /*++ Abstract: PAL runtime functions. These are functions which are ordinarily implemented as part of the Win32 API set, but when compiling CoreCLR for Unix-like systems, are implemented as a runtime library on top of the PAL. Author: Revision History: --*/ #ifndef __PALRT_H__ #define __PALRT_H__ /******************* HRESULTs *********************************************/ #ifdef RC_INVOKED #define _HRESULT_TYPEDEF_(_sc) _sc #else // RC_INVOKED #define _HRESULT_TYPEDEF_(_sc) ((HRESULT)_sc) #endif // RC_INVOKED #define S_OK _HRESULT_TYPEDEF_(0x00000000L) #define S_FALSE _HRESULT_TYPEDEF_(0x00000001L) #define E_NOTIMPL _HRESULT_TYPEDEF_(0x80004001L) #define E_NOINTERFACE _HRESULT_TYPEDEF_(0x80004002L) #define E_UNEXPECTED _HRESULT_TYPEDEF_(0x8000FFFFL) #define E_OUTOFMEMORY _HRESULT_TYPEDEF_(0x8007000EL) #define E_INVALIDARG _HRESULT_TYPEDEF_(0x80070057L) #define E_POINTER _HRESULT_TYPEDEF_(0x80004003L) #define E_HANDLE _HRESULT_TYPEDEF_(0x80070006L) #define E_ABORT _HRESULT_TYPEDEF_(0x80004004L) #define E_FAIL _HRESULT_TYPEDEF_(0x80004005L) #define E_ACCESSDENIED _HRESULT_TYPEDEF_(0x80070005L) #define E_PENDING _HRESULT_TYPEDEF_(0x8000000AL) #define DISP_E_PARAMNOTFOUND _HRESULT_TYPEDEF_(0x80020004L) #define DISP_E_TYPEMISMATCH _HRESULT_TYPEDEF_(0x80020005L) #define DISP_E_BADVARTYPE _HRESULT_TYPEDEF_(0x80020008L) #define DISP_E_OVERFLOW _HRESULT_TYPEDEF_(0x8002000AL) #define DISP_E_DIVBYZERO _HRESULT_TYPEDEF_(0x80020012L) #define CLASS_E_CLASSNOTAVAILABLE _HRESULT_TYPEDEF_(0x80040111L) #define CLASS_E_NOAGGREGATION _HRESULT_TYPEDEF_(0x80040110L) #define CO_E_CLASSSTRING _HRESULT_TYPEDEF_(0x800401F3L) #define MK_E_SYNTAX _HRESULT_TYPEDEF_(0x800401E4L) #define STG_E_INVALIDFUNCTION _HRESULT_TYPEDEF_(0x80030001L) #define STG_E_FILENOTFOUND _HRESULT_TYPEDEF_(0x80030002L) #define STG_E_PATHNOTFOUND _HRESULT_TYPEDEF_(0x80030003L) #define STG_E_WRITEFAULT _HRESULT_TYPEDEF_(0x8003001DL) #define STG_E_FILEALREADYEXISTS _HRESULT_TYPEDEF_(0x80030050L) #define STG_E_ABNORMALAPIEXIT _HRESULT_TYPEDEF_(0x800300FAL) #define NTE_BAD_UID _HRESULT_TYPEDEF_(0x80090001L) #define NTE_BAD_HASH _HRESULT_TYPEDEF_(0x80090002L) #define NTE_BAD_KEY _HRESULT_TYPEDEF_(0x80090003L) #define NTE_BAD_LEN _HRESULT_TYPEDEF_(0x80090004L) #define NTE_BAD_DATA _HRESULT_TYPEDEF_(0x80090005L) #define NTE_BAD_SIGNATURE _HRESULT_TYPEDEF_(0x80090006L) #define NTE_BAD_VER _HRESULT_TYPEDEF_(0x80090007L) #define NTE_BAD_ALGID _HRESULT_TYPEDEF_(0x80090008L) #define NTE_BAD_FLAGS _HRESULT_TYPEDEF_(0x80090009L) #define NTE_BAD_TYPE _HRESULT_TYPEDEF_(0x8009000AL) #define NTE_BAD_KEY_STATE _HRESULT_TYPEDEF_(0x8009000BL) #define NTE_BAD_HASH_STATE _HRESULT_TYPEDEF_(0x8009000CL) #define NTE_NO_KEY _HRESULT_TYPEDEF_(0x8009000DL) #define NTE_NO_MEMORY _HRESULT_TYPEDEF_(0x8009000EL) #define NTE_SIGNATURE_FILE_BAD _HRESULT_TYPEDEF_(0x8009001CL) #define NTE_FAIL _HRESULT_TYPEDEF_(0x80090020L) #define CRYPT_E_HASH_VALUE _HRESULT_TYPEDEF_(0x80091007L) #define TYPE_E_SIZETOOBIG _HRESULT_TYPEDEF_(0x800288C5L) #define TYPE_E_DUPLICATEID _HRESULT_TYPEDEF_(0x800288C6L) #define STD_CTL_SCODE(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_CONTROL, n) #define CTL_E_OVERFLOW STD_CTL_SCODE(6) #define CTL_E_OUTOFMEMORY STD_CTL_SCODE(7) #define CTL_E_DIVISIONBYZERO STD_CTL_SCODE(11) #define CTL_E_OUTOFSTACKSPACE STD_CTL_SCODE(28) #define CTL_E_FILENOTFOUND STD_CTL_SCODE(53) #define CTL_E_DEVICEIOERROR STD_CTL_SCODE(57) #define CTL_E_PERMISSIONDENIED STD_CTL_SCODE(70) #define CTL_E_PATHFILEACCESSERROR STD_CTL_SCODE(75) #define CTL_E_PATHNOTFOUND STD_CTL_SCODE(76) #define INET_E_CANNOT_CONNECT _HRESULT_TYPEDEF_(0x800C0004L) #define INET_E_RESOURCE_NOT_FOUND _HRESULT_TYPEDEF_(0x800C0005L) #define INET_E_OBJECT_NOT_FOUND _HRESULT_TYPEDEF_(0x800C0006L) #define INET_E_DATA_NOT_AVAILABLE _HRESULT_TYPEDEF_(0x800C0007L) #define INET_E_DOWNLOAD_FAILURE _HRESULT_TYPEDEF_(0x800C0008L) #define INET_E_CONNECTION_TIMEOUT _HRESULT_TYPEDEF_(0x800C000BL) #define INET_E_UNKNOWN_PROTOCOL _HRESULT_TYPEDEF_(0x800C000DL) #define DBG_PRINTEXCEPTION_C _HRESULT_TYPEDEF_(0x40010006L) /********************** errorrep.h ****************************************/ typedef enum tagEFaultRepRetVal { frrvOk = 0, frrvOkManifest, frrvOkQueued, frrvErr, frrvErrNoDW, frrvErrTimeout, frrvLaunchDebugger, frrvOkHeadless, frrvErrAnotherInstance } EFaultRepRetVal; /**************************************************************************/ #ifndef RC_INVOKED #include "pal.h" #ifndef PAL_STDCPP_COMPAT #ifdef __cplusplus #ifndef __PLACEMENT_NEW_INLINE #define __PLACEMENT_NEW_INLINE inline void *__cdecl operator new(size_t, void *_P) { return (_P); } #endif // __PLACEMENT_NEW_INLINE #endif // __cplusplus #endif // !PAL_STDCPP_COMPAT #include #define NTAPI __cdecl #define WINAPI __cdecl #define CALLBACK __cdecl #define NTSYSAPI #define _WINNT_ // C++ standard, 18.1.5 - offsetof requires a POD (plain old data) struct or // union. Since offsetof is a macro, gcc doesn't actually check for improper // use of offsetof, it keys off of the -> from NULL (which is also invalid for // non-POD types by 18.1.5) // // As we have numerous examples of this behavior in our codebase, // making an offsetof which doesn't use 0. // PAL_safe_offsetof is a version of offsetof that protects against an // overridden operator& #define FIELD_OFFSET(type, field) __builtin_offsetof(type, field) #ifndef offsetof #define offsetof(type, field) __builtin_offsetof(type, field) #endif #define PAL_safe_offsetof(type, field) __builtin_offsetof(type, field) #define CONTAINING_RECORD(address, type, field) \ ((type *)((LONG_PTR)(address) - FIELD_OFFSET(type, field))) #define ARGUMENT_PRESENT(ArgumentPointer) (\ (CHAR *)(ArgumentPointer) != (CHAR *)(NULL) ) #if defined(HOST_64BIT) #define MAX_NATURAL_ALIGNMENT sizeof(ULONGLONG) #else #define MAX_NATURAL_ALIGNMENT sizeof(ULONG) #endif #define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name #ifndef COM_NO_WINDOWS_H #define COM_NO_WINDOWS_H #endif #define interface struct #define STDMETHODCALLTYPE __cdecl #define STDMETHODVCALLTYPE __cdecl #define STDAPICALLTYPE __cdecl #define STDAPIVCALLTYPE __cdecl #define STDMETHODIMP HRESULT STDMETHODCALLTYPE #define STDMETHODIMP_(type) type STDMETHODCALLTYPE #define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE #define STDMETHODIMPV_(type) type STDMETHODVCALLTYPE #define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method #define STDMETHOD_(type,method) virtual type STDMETHODCALLTYPE method #define STDMETHODV(method) virtual HRESULT STDMETHODVCALLTYPE method #define STDMETHODV_(type,method) virtual type STDMETHODVCALLTYPE method #define STDAPI EXTERN_C HRESULT STDAPICALLTYPE #define STDAPI_(type) EXTERN_C type STDAPICALLTYPE #define STDAPI_VIS(vis,type) EXTERN_C vis type STDAPICALLTYPE #define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE #define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE #define PURE = 0 #define THIS_ #define THIS void #define DECLSPEC_NOVTABLE #define DECLARE_INTERFACE(iface) interface DECLSPEC_NOVTABLE iface #define DECLARE_INTERFACE_(iface, baseiface) interface DECLSPEC_NOVTABLE iface : public baseiface #ifdef __cplusplus #define REFGUID const GUID & #else #define REFGUID const GUID * #endif EXTERN_C const GUID GUID_NULL; typedef GUID *LPGUID; typedef const GUID FAR *LPCGUID; #ifdef __cplusplus extern "C++" { #if !defined _SYS_GUID_OPERATOR_EQ_ && !defined _NO_SYS_GUID_OPERATOR_EQ_ #define _SYS_GUID_OPERATOR_EQ_ inline int IsEqualGUID(REFGUID rguid1, REFGUID rguid2) { return !memcmp(&rguid1, &rguid2, sizeof(GUID)); } inline int operator==(REFGUID guidOne, REFGUID guidOther) { return IsEqualGUID(guidOne,guidOther); } inline int operator!=(REFGUID guidOne, REFGUID guidOther) { return !IsEqualGUID(guidOne,guidOther); } #endif }; #endif // __cplusplus #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ EXTERN_C const GUID FAR name typedef GUID IID; #ifdef __cplusplus #define REFIID const IID & #else #define REFIID const IID * #endif #define IID_NULL GUID_NULL #define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2) #define __IID_DEFINED__ typedef GUID CLSID; #define CLSID_DEFINED #ifdef __cplusplus #define REFCLSID const CLSID & #else #define REFCLSID const CLSID * #endif #define CLSID_NULL GUID_NULL #define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2) typedef CLSID *LPCLSID; typedef UINT_PTR WPARAM; typedef LONG_PTR LRESULT; typedef LONG SCODE; typedef union _ULARGE_INTEGER { struct { #if BIGENDIAN DWORD HighPart; DWORD LowPart; #else DWORD LowPart; DWORD HighPart; #endif } #ifndef PAL_STDCPP_COMPAT u #endif // PAL_STDCPP_COMPAT ; ULONGLONG QuadPart; } ULARGE_INTEGER, *PULARGE_INTEGER; /******************* OLE, BSTR, VARIANT *************************/ STDAPI_VIS(DLLEXPORT, LPVOID) CoTaskMemAlloc(SIZE_T cb); STDAPI_VIS(DLLEXPORT, void) CoTaskMemFree(LPVOID pv); typedef SHORT VARIANT_BOOL; #define VARIANT_TRUE ((VARIANT_BOOL)-1) #define VARIANT_FALSE ((VARIANT_BOOL)0) typedef WCHAR OLECHAR; typedef OLECHAR* LPOLESTR; typedef const OLECHAR* LPCOLESTR; typedef WCHAR *BSTR; STDAPI_VIS(DLLEXPORT, BSTR) SysAllocString(const OLECHAR*); STDAPI_VIS(DLLEXPORT, BSTR) SysAllocStringLen(const OLECHAR*, UINT); STDAPI_VIS(DLLEXPORT, BSTR) SysAllocStringByteLen(const char *, UINT); STDAPI_VIS(DLLEXPORT, void) SysFreeString(BSTR); STDAPI_VIS(DLLEXPORT, UINT) SysStringLen(BSTR); STDAPI_VIS(DLLEXPORT, UINT) SysStringByteLen(BSTR); typedef double DATE; typedef union tagCY { struct { #if BIGENDIAN LONG Hi; ULONG Lo; #else ULONG Lo; LONG Hi; #endif } u; LONGLONG int64; } CY, *LPCY; typedef CY CURRENCY; typedef struct tagDEC { // Decimal.cs treats the first two shorts as one long // And they seriable the data so we need to little endian // seriliazation // The wReserved overlaps with Variant's vt member #if BIGENDIAN union { struct { BYTE sign; BYTE scale; } u; USHORT signscale; } u; USHORT wReserved; #else USHORT wReserved; union { struct { BYTE scale; BYTE sign; } u; USHORT signscale; } u; #endif ULONG Hi32; union { struct { ULONG Lo32; ULONG Mid32; } v; ULONGLONG Lo64; } v; } DECIMAL, *LPDECIMAL; #define DECIMAL_NEG ((BYTE)0x80) #define DECIMAL_SCALE(dec) ((dec).u.u.scale) #define DECIMAL_SIGN(dec) ((dec).u.u.sign) #define DECIMAL_SIGNSCALE(dec) ((dec).u.signscale) #define DECIMAL_LO32(dec) ((dec).v.v.Lo32) #define DECIMAL_MID32(dec) ((dec).v.v.Mid32) #define DECIMAL_HI32(dec) ((dec).Hi32) #define DECIMAL_LO64_GET(dec) ((dec).v.Lo64) #define DECIMAL_LO64_SET(dec,value) {(dec).v.Lo64 = value; } #define DECIMAL_SETZERO(dec) {DECIMAL_LO32(dec) = 0; DECIMAL_MID32(dec) = 0; DECIMAL_HI32(dec) = 0; DECIMAL_SIGNSCALE(dec) = 0;} typedef struct tagBLOB { ULONG cbSize; BYTE *pBlobData; } BLOB, *LPBLOB; interface IStream; interface IRecordInfo; typedef unsigned short VARTYPE; enum VARENUM { VT_EMPTY = 0, VT_NULL = 1, VT_I2 = 2, VT_I4 = 3, VT_R4 = 4, VT_R8 = 5, VT_CY = 6, VT_DATE = 7, VT_BSTR = 8, VT_DISPATCH = 9, VT_ERROR = 10, VT_BOOL = 11, VT_VARIANT = 12, VT_UNKNOWN = 13, VT_DECIMAL = 14, VT_I1 = 16, VT_UI1 = 17, VT_UI2 = 18, VT_UI4 = 19, VT_I8 = 20, VT_UI8 = 21, VT_INT = 22, VT_UINT = 23, VT_VOID = 24, VT_HRESULT = 25, VT_PTR = 26, VT_SAFEARRAY = 27, VT_CARRAY = 28, VT_USERDEFINED = 29, VT_LPSTR = 30, VT_LPWSTR = 31, VT_RECORD = 36, VT_INT_PTR = 37, VT_UINT_PTR = 38, VT_FILETIME = 64, VT_BLOB = 65, VT_STREAM = 66, VT_STORAGE = 67, VT_STREAMED_OBJECT = 68, VT_STORED_OBJECT = 69, VT_BLOB_OBJECT = 70, VT_CF = 71, VT_CLSID = 72, VT_VECTOR = 0x1000, VT_ARRAY = 0x2000, VT_BYREF = 0x4000, VT_TYPEMASK = 0xfff, }; typedef struct tagVARIANT VARIANT, *LPVARIANT; typedef struct tagSAFEARRAY SAFEARRAY; struct tagVARIANT { union { struct { #if BIGENDIAN // We need to make sure vt overlaps with DECIMAL's wReserved. // See the DECIMAL type for details. WORD wReserved1; VARTYPE vt; #else VARTYPE vt; WORD wReserved1; #endif WORD wReserved2; WORD wReserved3; union { LONGLONG llVal; LONG lVal; BYTE bVal; SHORT iVal; FLOAT fltVal; DOUBLE dblVal; VARIANT_BOOL boolVal; SCODE scode; CY cyVal; DATE date; BSTR bstrVal; interface IUnknown *punkVal; interface IDispatch *pdispVal; SAFEARRAY *parray; BYTE *pbVal; SHORT *piVal; LONG *plVal; LONGLONG *pllVal; FLOAT *pfltVal; DOUBLE *pdblVal; VARIANT_BOOL *pboolVal; SCODE *pscode; CY *pcyVal; DATE *pdate; BSTR *pbstrVal; interface IUnknown **ppunkVal; VARIANT *pvarVal; PVOID byref; CHAR cVal; USHORT uiVal; ULONG ulVal; ULONGLONG ullVal; INT intVal; UINT uintVal; DECIMAL *pdecVal; CHAR *pcVal; USHORT *puiVal; ULONG *pulVal; ULONGLONG *pullVal; INT *pintVal; UINT *puintVal; struct __tagBRECORD { PVOID pvRecord; interface IRecordInfo *pRecInfo; } brecVal; } n3; } n2; DECIMAL decVal; } n1; }; typedef VARIANT VARIANTARG, *LPVARIANTARG; STDAPI_(void) VariantInit(VARIANT * pvarg); STDAPI_(HRESULT) VariantClear(VARIANT * pvarg); #define V_VT(X) ((X)->n1.n2.vt) #define V_UNION(X, Y) ((X)->n1.n2.n3.Y) #define V_RECORDINFO(X) ((X)->n1.n2.n3.brecVal.pRecInfo) #define V_RECORD(X) ((X)->n1.n2.n3.brecVal.pvRecord) #define V_UI1(X) V_UNION(X, bVal) #define V_UI1REF(X) V_UNION(X, pbVal) #define V_I2(X) V_UNION(X, iVal) #define V_I2REF(X) V_UNION(X, piVal) #define V_I4(X) V_UNION(X, lVal) #define V_I4REF(X) V_UNION(X, plVal) #define V_I8(X) V_UNION(X, llVal) #define V_I8REF(X) V_UNION(X, pllVal) #define V_R4(X) V_UNION(X, fltVal) #define V_R4REF(X) V_UNION(X, pfltVal) #define V_R8(X) V_UNION(X, dblVal) #define V_R8REF(X) V_UNION(X, pdblVal) #define V_I1(X) V_UNION(X, cVal) #define V_I1REF(X) V_UNION(X, pcVal) #define V_UI2(X) V_UNION(X, uiVal) #define V_UI2REF(X) V_UNION(X, puiVal) #define V_UI4(X) V_UNION(X, ulVal) #define V_UI4REF(X) V_UNION(X, pulVal) #define V_UI8(X) V_UNION(X, ullVal) #define V_UI8REF(X) V_UNION(X, pullVal) #define V_INT(X) V_UNION(X, intVal) #define V_INTREF(X) V_UNION(X, pintVal) #define V_UINT(X) V_UNION(X, uintVal) #define V_UINTREF(X) V_UNION(X, puintVal) #define V_ARRAY(X) V_UNION(X, parray) #ifdef HOST_64BIT #define V_INT_PTR(X) V_UNION(X, llVal) #define V_UINT_PTR(X) V_UNION(X, ullVal) #define V_INT_PTRREF(X) V_UNION(X, pllVal) #define V_UINT_PTRREF(X) V_UNION(X, pullVal) #else #define V_INT_PTR(X) V_UNION(X, lVal) #define V_UINT_PTR(X) V_UNION(X, ulVal) #define V_INT_PTRREF(X) V_UNION(X, plVal) #define V_UINT_PTRREF(X) V_UNION(X, pulVal) #endif #define V_CY(X) V_UNION(X, cyVal) #define V_CYREF(X) V_UNION(X, pcyVal) #define V_DATE(X) V_UNION(X, date) #define V_DATEREF(X) V_UNION(X, pdate) #define V_BSTR(X) V_UNION(X, bstrVal) #define V_BSTRREF(X) V_UNION(X, pbstrVal) #define V_UNKNOWN(X) V_UNION(X, punkVal) #define V_UNKNOWNREF(X) V_UNION(X, ppunkVal) #define V_VARIANTREF(X) V_UNION(X, pvarVal) #define V_DISPATCH(X) V_UNION(X, pdispVal) #define V_ERROR(X) V_UNION(X, scode) #define V_ERRORREF(X) V_UNION(X, pscode) #define V_BOOL(X) V_UNION(X, boolVal) #define V_BOOLREF(X) V_UNION(X, pboolVal) #define V_BYREF(X) V_UNION(X, byref) #define V_DECIMAL(X) ((X)->n1.decVal) #define V_DECIMALREF(X) V_UNION(X, pdecVal) #define V_ISBYREF(X) (V_VT(X)&VT_BYREF) STDAPI CreateStreamOnHGlobal(PVOID hGlobal, BOOL fDeleteOnRelease, interface IStream** ppstm); #define STGM_DIRECT 0x00000000L #define STGM_READ 0x00000000L #define STGM_WRITE 0x00000001L #define STGM_READWRITE 0x00000002L #define STGM_SHARE_DENY_NONE 0x00000040L #define STGM_SHARE_DENY_READ 0x00000030L #define STGM_SHARE_DENY_WRITE 0x00000020L #define STGM_SHARE_EXCLUSIVE 0x00000010L #define STGM_DELETEONRELEASE 0x04000000L #define STGM_CREATE 0x00001000L #define STGM_CONVERT 0x00020000L #define STGM_FAILIFTHERE 0x00000000L #define STGM_NOSNAPSHOT 0x00200000L STDAPI IIDFromString(LPOLESTR lpsz, IID* lpiid); STDAPI_(int) StringFromGUID2(REFGUID rguid, LPOLESTR lpsz, int cchMax); /******************* CRYPT **************************************/ #define PUBLICKEYBLOB 0x6 // // Algorithm IDs and Flags // #define GET_ALG_CLASS(x) (x & (7 << 13)) #define GET_ALG_TYPE(x) (x & (15 << 9)) #define GET_ALG_SID(x) (x & (511)) typedef unsigned int ALG_ID; // Algorithm classes #define ALG_CLASS_SIGNATURE (1 << 13) #define ALG_CLASS_HASH (4 << 13) // Algorithm types #define ALG_TYPE_ANY (0) // Hash sub ids #define ALG_SID_SHA1 4 // algorithm identifier definitions #define CALG_SHA1 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA1) /******************* NLS ****************************************/ #define LCMAP_LOWERCASE 0x00000100 #define LCMAP_UPPERCASE 0x00000200 // 8 characters for language // 8 characters for region // 64 characters for suffix (script) // 2 characters for '-' separators // 2 characters for prefix like "i-" or "x-" // 1 null termination #define LOCALE_NAME_MAX_LENGTH 85 #define CSTR_LESS_THAN 1 #define CSTR_EQUAL 2 #define CSTR_GREATER_THAN 3 /******************* shlwapi ************************************/ // note: diff in NULL handing and calling convetion #define StrCpyW PAL_wcscpy #define StrCatW PAL_wcscat #define StrChrW (WCHAR*)PAL_wcschr #define StrCmpW PAL_wcscmp #define StrCmpIW _wcsicmp #define StrCmpNW PAL_wcsncmp #define StrCmpNIW _wcsnicmp STDAPI_(LPWSTR) StrNCatW(LPWSTR lpFront, LPCWSTR lpBack, int cchMax); STDAPI_(int) StrToIntW(LPCWSTR lpSrc); STDAPI_(LPWSTR) StrStrIW(LPCWSTR lpFirst, LPCWSTR lpSrch); STDAPI_(LPWSTR) StrRChrW(LPCWSTR lpStart, LPCWSTR lpEnd, WCHAR wMatch); STDAPI_(LPWSTR) StrCatBuffW(LPWSTR pszDest, LPCWSTR pszSrc, int cchDestBuffSize); #define lstrcmpW PAL_wcscmp #define lstrcmpiW _wcsicmp #ifdef UNICODE #define StrCpy StrCpyW #define StrCat StrCatW #define StrNCat StrNCatW #define StrChr StrChrW #define StrCmp StrCmpW #define StrCmpN StrCmpNW #define StrCmpI StrCmpIW #define StrCmpNI StrCmpNIW #define StrToInt StrToIntW #define StrStrI StrStrIW #define StrRChr StrRChrW #define StrCatBuff StrCatBuffW #define lstrcmp lstrcmpW #define lstrcmpi lstrcmpiW #endif #ifdef __cplusplus /* Safe CRT functions are not available (yet) on all platforms, so we use our own implementations from safecrt.h. */ #define _CRT_ALTERNATIVE_INLINES #define _SAFECRT_NO_INCLUDES 1 #define _SAFECRT_USE_INLINES 1 #define _SAFECRT_SET_ERRNO 0 #define _SAFECRT_DEFINE_MBS_FUNCTIONS 0 #define _SAFECRT_DEFINE_TCS_MACROS 1 #include "safecrt.h" #include "specstrings.h" /* The wrappers below are simple implementations that may not be as robust as complete functions in the Secure CRT library. Remember to fix the errcode defintion in safecrt.h. */ #define swscanf_s swscanf #define _wfopen_s _wfopen_unsafe #define fopen_s _fopen_unsafe #define _vscprintf _vscprintf_unsafe extern "C++" { #include inline int __cdecl _vscprintf_unsafe(const char *_Format, va_list _ArgList) { int guess = 10; while (true) { char *buf = (char *)malloc(guess * sizeof(char)); if(buf == nullptr) return 0; va_list argListCopy; va_copy(argListCopy, _ArgList); int ret = _vsnprintf_s(buf, guess, _TRUNCATE, _Format, argListCopy); free(buf); va_end(argListCopy); if ((ret != -1) && (ret < guess)) return ret; guess *= 2; } } inline errno_t __cdecl _wfopen_unsafe(PAL_FILE * *ff, const WCHAR *fileName, const WCHAR *mode) { PAL_FILE *result = _wfopen(fileName, mode); if(result == 0) { return 1; } else { *ff = result; return 0; } } inline errno_t __cdecl _fopen_unsafe(PAL_FILE * *ff, const char *fileName, const char *mode) { PAL_FILE *result = PAL_fopen(fileName, mode); if(result == 0) { return 1; } else { *ff = result; return 0; } } } #endif /* __cplusplus */ STDAPI_(BOOL) PathAppendW(LPWSTR pszPath, LPCWSTR pszMore); STDAPI_(int) PathCommonPrefixW(LPCWSTR pszFile1, LPCWSTR pszFile2, LPWSTR pszPath); PALIMPORT LPWSTR PALAPI PathFindFileNameW(LPCWSTR pPath); STDAPI_(int) PathGetDriveNumberW(LPCWSTR lpsz); STDAPI_(BOOL) PathIsRelativeW(LPCWSTR lpszPath); STDAPI_(BOOL) PathIsUNCW(LPCWSTR pszPath); STDAPI_(LPWSTR) PathAddBackslashW(LPWSTR lpszPath); STDAPI_(LPWSTR) PathRemoveBackslashW(LPWSTR lpszPath); STDAPI_(void) PathRemoveExtensionW(LPWSTR pszPath); STDAPI_(LPWSTR) PathCombineW(LPWSTR lpszDest, LPCWSTR lpszDir, LPCWSTR lpszFile); STDAPI_(BOOL) PathCanonicalizeW(LPWSTR lpszDst, LPCWSTR lpszSrc); STDAPI_(BOOL) PathRelativePathToW(LPWSTR pszPath, LPCWSTR pszFrom, DWORD dwAttrFrom, LPCWSTR pszTo, DWORD dwAttrTo); STDAPI_(BOOL) PathRenameExtensionW(LPWSTR pszPath, LPCWSTR pszExt); STDAPI_(BOOL) PathRemoveFileSpecW(LPWSTR pFile); STDAPI_(void) PathStripPathW (LPWSTR pszPath); #ifdef UNICODE #define PathAppend PathAppendW #define PathCommonPrefix PathCommonPrefixW #define PathFindFileName PathFindFileNameW #define PathIsRelative PathIsRelativeW #define PathGetDriveNumber PathGetDriveNumberW #define PathIsUNC PathIsUNCW #define PathAddBackslash PathAddBackslashW #define PathRemoveBackslash PathRemoveBackslashW #define PathRemoveExtension PathRemoveExtensionW #define PathCombine PathCombineW #define PathSkipRoot PathSkipRootW #define PathFindExtension PathFindExtensionW #define PathCanonicalize PathCanonicalizeW #define PathRelativePathTo PathRelativePathToW #define PathRemoveFileSpec PathRemoveFileSpecW #define PathRenameExtension PathRenameExtensionW #define PathStripPath PathStripPathW #endif // UNICODE /******************* misc ***************************************/ #ifdef __cplusplus namespace std { typedef decltype(nullptr) nullptr_t; } extern "C++" template< class T > typename std::remove_reference::type&& move( T&& t ); #endif // __cplusplus #define __RPC__out #define __RPC__in #define __RPC__deref_out_opt #define __RPC__in_opt #define __RPC__inout_xcount(x) #define __RPC__in_ecount_full(x) #define __RPC__out_ecount_part(x, y) #define __RPC__in_xcount(x) #define __RPC__inout #define __RPC__deref_out_ecount_full_opt(x) typedef DWORD OLE_COLOR; #define PF_COMPARE_EXCHANGE_DOUBLE 2 typedef VOID (NTAPI * WAITORTIMERCALLBACKFUNC) (PVOID, BOOLEAN ); typedef HANDLE HWND; #define IS_TEXT_UNICODE_SIGNATURE 0x0008 #define IS_TEXT_UNICODE_UNICODE_MASK 0x000F typedef struct _LIST_ENTRY { struct _LIST_ENTRY *Flink; struct _LIST_ENTRY *Blink; } LIST_ENTRY, *PLIST_ENTRY; typedef VOID (NTAPI *WAITORTIMERCALLBACK)(PVOID, BOOLEAN); // PORTABILITY_ASSERT and PORTABILITY_WARNING macros are meant to be used to // mark places in the code that needs attention for portability. The usual // usage pattern is: // // int get_scratch_register() { // #if defined(TARGET_X86) // return eax; // #elif defined(TARGET_AMD64) // return rax; // #elif defined(TARGET_ARM) // return r0; // #else // PORTABILITY_ASSERT("scratch register"); // return 0; // #endif // } // // PORTABILITY_ASSERT is meant to be used inside functions/methods. It can // introduce compile-time and/or run-time errors. // PORTABILITY_WARNING is meant to be used outside functions/methods. It can // introduce compile-time errors or warnings only. // // People starting new ports will first define these to just cause run-time // errors. Once they fix all the places that need attention for portability, // they can define PORTABILITY_ASSERT and PORTABILITY_WARNING to cause // compile-time errors to make sure that they haven't missed anything. // // If it is reasonably possible all codepaths containing PORTABILITY_ASSERT // should be compilable (e.g. functions should return NULL or something if // they are expected to return a value). // // The message in these two macros should not contain any keywords like TODO // or NYI. It should be just the brief description of the problem. #ifdef PORTABILITY_CHECK // Finished ports - compile-time errors #define PORTABILITY_WARNING(message) NEED_TO_PORT_THIS_ONE(NEED_TO_PORT_THIS_ONE) #define PORTABILITY_ASSERT(message) NEED_TO_PORT_THIS_ONE(NEED_TO_PORT_THIS_ONE) #else // Ports in progress - run-time asserts only #define PORTABILITY_WARNING(message) #define PORTABILITY_ASSERT(message) _ASSERTE(false && message) #endif #define UNREFERENCED_PARAMETER(P) (void)(P) #ifdef HOST_64BIT #define VALPTR(x) VAL64(x) #define GET_UNALIGNED_PTR(x) GET_UNALIGNED_64(x) #define GET_UNALIGNED_VALPTR(x) GET_UNALIGNED_VAL64(x) #define SET_UNALIGNED_PTR(p,x) SET_UNALIGNED_64(p,x) #define SET_UNALIGNED_VALPTR(p,x) SET_UNALIGNED_VAL64(p,x) #else #define VALPTR(x) VAL32(x) #define GET_UNALIGNED_PTR(x) GET_UNALIGNED_32(x) #define GET_UNALIGNED_VALPTR(x) GET_UNALIGNED_VAL32(x) #define SET_UNALIGNED_PTR(p,x) SET_UNALIGNED_32(p,x) #define SET_UNALIGNED_VALPTR(p,x) SET_UNALIGNED_VAL32(p,x) #endif #ifdef TARGET_AMD64 #define RUNTIME_FUNCTION_INDIRECT 0x1 #endif #define _ReturnAddress() __builtin_return_address(0) #define DIRECTORY_SEPARATOR_CHAR_A '/' #define DIRECTORY_SEPARATOR_CHAR_W W('/') #define DIRECTORY_SEPARATOR_STR_A "/" #define DIRECTORY_SEPARATOR_STR_W W("/") #define PATH_SEPARATOR_CHAR_W W(':') #define PATH_SEPARATOR_STR_W W(":") #define VOLUME_SEPARATOR_CHAR_W W('/') #ifndef IMAGE_IMPORT_DESC_FIELD #define IMAGE_IMPORT_DESC_FIELD(img, f) ((img).u.f) #endif #ifndef IMAGE_COR20_HEADER_FIELD #define IMAGE_COR20_HEADER_FIELD(obj, f) ((obj).f) #endif // copied from winnt.h #define PROCESSOR_ARCHITECTURE_INTEL 0 #define PROCESSOR_ARCHITECTURE_MIPS 1 #define PROCESSOR_ARCHITECTURE_ALPHA 2 #define PROCESSOR_ARCHITECTURE_PPC 3 #define PROCESSOR_ARCHITECTURE_SHX 4 #define PROCESSOR_ARCHITECTURE_ARM 5 #define PROCESSOR_ARCHITECTURE_IA64 6 #define PROCESSOR_ARCHITECTURE_ALPHA64 7 #define PROCESSOR_ARCHITECTURE_MSIL 8 #define PROCESSOR_ARCHITECTURE_AMD64 9 #define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10 #define PROCESSOR_ARCHITECTURE_NEUTRAL 11 #define PROCESSOR_ARCHITECTURE_ARM64 12 #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF // // JIT Debugging Info. This structure is defined to have constant size in // both the emulated and native environment. // typedef struct _JIT_DEBUG_INFO { DWORD dwSize; DWORD dwProcessorArchitecture; DWORD dwThreadID; DWORD dwReserved0; ULONG64 lpExceptionAddress; ULONG64 lpExceptionRecord; ULONG64 lpContextRecord; } JIT_DEBUG_INFO, *LPJIT_DEBUG_INFO; typedef JIT_DEBUG_INFO JIT_DEBUG_INFO32, *LPJIT_DEBUG_INFO32; typedef JIT_DEBUG_INFO JIT_DEBUG_INFO64, *LPJIT_DEBUG_INFO64; /******************* resources ***************************************/ #define IS_INTRESOURCE(_r) ((((ULONG_PTR)(_r)) >> 16) == 0) #define MAKEINTRESOURCEW(i) ((LPWSTR)((ULONG_PTR)((WORD)(i)))) #define MAKEINTRESOURCE(i) ((LPWSTR)((ULONG_PTR)((WORD)(i)))) #define RT_RCDATA MAKEINTRESOURCE(10) #define RT_VERSION MAKEINTRESOURCE(16) /******************* SAFEARRAY ************************/ #define FADF_VARIANT ( 0x800 ) typedef struct tagSAFEARRAYBOUND { ULONG cElements; LONG lLbound; } SAFEARRAYBOUND; typedef struct tagSAFEARRAYBOUND *LPSAFEARRAYBOUND; typedef struct tagSAFEARRAY { USHORT cDims; USHORT fFeatures; ULONG cbElements; ULONG cLocks; PVOID pvData; SAFEARRAYBOUND rgsabound[ 1 ]; } SAFEARRAY; typedef SAFEARRAY *LPSAFEARRAY; STDAPI_(SAFEARRAY *) SafeArrayCreateVector(VARTYPE vt, LONG lLbound, ULONG cElements); STDAPI_(UINT) SafeArrayGetDim(SAFEARRAY * psa); STDAPI SafeArrayGetElement(SAFEARRAY * psa, LONG * rgIndices, void * pv); STDAPI SafeArrayGetLBound(SAFEARRAY * psa, UINT nDim, LONG * plLbound); STDAPI SafeArrayGetUBound(SAFEARRAY * psa, UINT nDim, LONG * plUbound); STDAPI SafeArrayGetVartype(SAFEARRAY * psa, VARTYPE * pvt); STDAPI SafeArrayPutElement(SAFEARRAY * psa, LONG * rgIndices, void * pv); STDAPI SafeArrayDestroy(SAFEARRAY * psa); EXTERN_C void * _stdcall _lfind(const void *, const void *, unsigned int *, unsigned int, int (__cdecl *)(const void *, const void *)); /******************* clean this up ************************/ interface IDispatch; interface ITypeInfo; interface ITypeLib; interface IMoniker; typedef VOID (WINAPI *LPOVERLAPPED_COMPLETION_ROUTINE)( DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped); // // Debug APIs // #define EXCEPTION_DEBUG_EVENT 1 #define CREATE_THREAD_DEBUG_EVENT 2 #define CREATE_PROCESS_DEBUG_EVENT 3 #define EXIT_THREAD_DEBUG_EVENT 4 #define EXIT_PROCESS_DEBUG_EVENT 5 #define LOAD_DLL_DEBUG_EVENT 6 #define UNLOAD_DLL_DEBUG_EVENT 7 #define OUTPUT_DEBUG_STRING_EVENT 8 #define RIP_EVENT 9 typedef struct _EXCEPTION_DEBUG_INFO { EXCEPTION_RECORD ExceptionRecord; DWORD dwFirstChance; } EXCEPTION_DEBUG_INFO, *LPEXCEPTION_DEBUG_INFO; typedef struct _CREATE_THREAD_DEBUG_INFO { HANDLE hThread; LPVOID lpThreadLocalBase; LPTHREAD_START_ROUTINE lpStartAddress; } CREATE_THREAD_DEBUG_INFO, *LPCREATE_THREAD_DEBUG_INFO; typedef struct _CREATE_PROCESS_DEBUG_INFO { HANDLE hFile; HANDLE hProcess; HANDLE hThread; LPVOID lpBaseOfImage; DWORD dwDebugInfoFileOffset; DWORD nDebugInfoSize; LPVOID lpThreadLocalBase; LPTHREAD_START_ROUTINE lpStartAddress; LPVOID lpImageName; WORD fUnicode; } CREATE_PROCESS_DEBUG_INFO, *LPCREATE_PROCESS_DEBUG_INFO; typedef struct _EXIT_THREAD_DEBUG_INFO { DWORD dwExitCode; } EXIT_THREAD_DEBUG_INFO, *LPEXIT_THREAD_DEBUG_INFO; typedef struct _EXIT_PROCESS_DEBUG_INFO { DWORD dwExitCode; } EXIT_PROCESS_DEBUG_INFO, *LPEXIT_PROCESS_DEBUG_INFO; typedef struct _LOAD_DLL_DEBUG_INFO { HANDLE hFile; LPVOID lpBaseOfDll; DWORD dwDebugInfoFileOffset; DWORD nDebugInfoSize; LPVOID lpImageName; WORD fUnicode; } LOAD_DLL_DEBUG_INFO, *LPLOAD_DLL_DEBUG_INFO; typedef struct _UNLOAD_DLL_DEBUG_INFO { LPVOID lpBaseOfDll; } UNLOAD_DLL_DEBUG_INFO, *LPUNLOAD_DLL_DEBUG_INFO; typedef struct _OUTPUT_DEBUG_STRING_INFO { LPSTR lpDebugStringData; WORD fUnicode; WORD nDebugStringLength; } OUTPUT_DEBUG_STRING_INFO, *LPOUTPUT_DEBUG_STRING_INFO; typedef struct _RIP_INFO { DWORD dwError; DWORD dwType; } RIP_INFO, *LPRIP_INFO; typedef struct _DEBUG_EVENT { DWORD dwDebugEventCode; DWORD dwProcessId; DWORD dwThreadId; union { EXCEPTION_DEBUG_INFO Exception; CREATE_THREAD_DEBUG_INFO CreateThread; CREATE_PROCESS_DEBUG_INFO CreateProcessInfo; EXIT_THREAD_DEBUG_INFO ExitThread; EXIT_PROCESS_DEBUG_INFO ExitProcess; LOAD_DLL_DEBUG_INFO LoadDll; UNLOAD_DLL_DEBUG_INFO UnloadDll; OUTPUT_DEBUG_STRING_INFO DebugString; RIP_INFO RipInfo; } u; } DEBUG_EVENT, *LPDEBUG_EVENT; // // Define dynamic function table entry. // typedef PRUNTIME_FUNCTION GET_RUNTIME_FUNCTION_CALLBACK ( DWORD64 ControlPc, PVOID Context ); typedef GET_RUNTIME_FUNCTION_CALLBACK *PGET_RUNTIME_FUNCTION_CALLBACK; typedef DWORD OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK ( HANDLE Process, PVOID TableAddress, PDWORD Entries, PRUNTIME_FUNCTION* Functions ); typedef OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK *POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK; #define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME \ "OutOfProcessFunctionTableCallback" typedef EXCEPTION_DISPOSITION (*PEXCEPTION_ROUTINE) ( PEXCEPTION_RECORD ExceptionRecord, ULONG64 EstablisherFrame, PCONTEXT ContextRecord, PVOID DispatcherContext ); #if defined(HOST_ARM) typedef struct _DISPATCHER_CONTEXT { DWORD ControlPc; DWORD ImageBase; PRUNTIME_FUNCTION FunctionEntry; DWORD EstablisherFrame; DWORD TargetPc; PCONTEXT ContextRecord; PEXCEPTION_ROUTINE LanguageHandler; PVOID HandlerData; PVOID HistoryTable; DWORD ScopeIndex; BOOLEAN ControlPcIsUnwound; PBYTE NonVolatileRegisters; DWORD Reserved; } DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT; #elif defined(HOST_ARM64) typedef struct _DISPATCHER_CONTEXT { ULONG64 ControlPc; ULONG64 ImageBase; PRUNTIME_FUNCTION FunctionEntry; ULONG64 EstablisherFrame; ULONG64 TargetPc; PCONTEXT ContextRecord; PEXCEPTION_ROUTINE LanguageHandler; PVOID HandlerData; PVOID HistoryTable; ULONG64 ScopeIndex; BOOLEAN ControlPcIsUnwound; PBYTE NonVolatileRegisters; ULONG64 Reserved; } DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT; #elif defined(HOST_AMD64) typedef struct _DISPATCHER_CONTEXT { ULONG64 ControlPc; ULONG64 ImageBase; PRUNTIME_FUNCTION FunctionEntry; ULONG64 EstablisherFrame; ULONG64 TargetIp; PCONTEXT ContextRecord; PEXCEPTION_ROUTINE LanguageHandler; PVOID HandlerData; PVOID HistoryTable; } DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT; #elif defined(HOST_X86) typedef struct _DISPATCHER_CONTEXT { DWORD ControlPc; DWORD ImageBase; PRUNTIME_FUNCTION FunctionEntry; DWORD EstablisherFrame; DWORD TargetIp; PKNONVOLATILE_CONTEXT CurrentNonVolatileContextRecord; PCONTEXT ContextRecord; PEXCEPTION_ROUTINE LanguageHandler; PVOID HandlerData; PVOID HistoryTable; BOOLEAN ControlPcIsUnwound; } DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT; #elif defined(HOST_S390X) typedef struct _DISPATCHER_CONTEXT { // S390X does not build the VM or JIT at this point, // so we only provide a dummy definition. DWORD Reserved; } DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT; #else #error Unknown architecture for defining DISPATCHER_CONTEXT. #endif // #endif // !defined(TARGET_OSX) typedef DISPATCHER_CONTEXT *PDISPATCHER_CONTEXT; #define ExceptionContinueSearch EXCEPTION_CONTINUE_SEARCH #define ExceptionStackUnwind EXCEPTION_EXECUTE_HANDLER #define ExceptionContinueExecution EXCEPTION_CONTINUE_EXECUTION typedef struct _EXCEPTION_REGISTRATION_RECORD EXCEPTION_REGISTRATION_RECORD; typedef EXCEPTION_REGISTRATION_RECORD *PEXCEPTION_REGISTRATION_RECORD; typedef LPVOID HKEY; typedef LPVOID PACL; typedef LPVOID LPBC; typedef LPVOID PSECURITY_DESCRIPTOR; typedef struct _EXCEPTION_RECORD64 { DWORD ExceptionCode; ULONG ExceptionFlags; ULONG64 ExceptionRecord; ULONG64 ExceptionAddress; ULONG NumberParameters; ULONG __unusedAlignment; ULONG64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; } EXCEPTION_RECORD64, *PEXCEPTION_RECORD64; typedef LONG (WINAPI *PTOP_LEVEL_EXCEPTION_FILTER)( IN struct _EXCEPTION_POINTERS *ExceptionInfo ); typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; /******************* ntdef ************************************/ #ifndef ANYSIZE_ARRAY #define ANYSIZE_ARRAY 1 // winnt #endif /******************* winnt ************************************/ typedef struct LIST_ENTRY32 { ULONG Flink; ULONG Blink; } LIST_ENTRY32; typedef LIST_ENTRY32 *PLIST_ENTRY32; typedef struct LIST_ENTRY64 { ULONGLONG Flink; ULONGLONG Blink; } LIST_ENTRY64; typedef LIST_ENTRY64 *PLIST_ENTRY64; /******************** PAL RT APIs *******************************/ typedef struct _HSATELLITE *HSATELLITE; EXTERN_C HSATELLITE PALAPI PAL_LoadSatelliteResourceW(LPCWSTR SatelliteResourceFileName); EXTERN_C HSATELLITE PALAPI PAL_LoadSatelliteResourceA(LPCSTR SatelliteResourceFileName); EXTERN_C BOOL PALAPI PAL_FreeSatelliteResource(HSATELLITE SatelliteResource); EXTERN_C UINT PALAPI PAL_LoadSatelliteStringW(HSATELLITE SatelliteResource, UINT uID, LPWSTR lpBuffer, UINT nBufferMax); EXTERN_C UINT PALAPI PAL_LoadSatelliteStringA(HSATELLITE SatelliteResource, UINT uID, LPSTR lpBuffer, UINT nBufferMax); EXTERN_C HRESULT PALAPI PAL_CoCreateInstance(REFCLSID rclsid, REFIID riid, void **ppv); // So we can have CoCreateInstance in most of the code base, // instead of spreading around of if'def FEATURE_PALs for PAL_CoCreateInstance. #define CoCreateInstance(rclsid, pUnkOuter, dwClsContext, riid, ppv) PAL_CoCreateInstance(rclsid, riid, ppv) STDAPI CoCreateGuid(OUT GUID * pguid); /************** verrsrc.h ************************************/ /* ----- VS_VERSION.dwFileFlags ----- */ #define VS_FF_DEBUG 0x00000001L #define VS_FF_PRERELEASE 0x00000002L #define VS_FF_PATCHED 0x00000004L #define VS_FF_PRIVATEBUILD 0x00000008L #define VS_FF_INFOINFERRED 0x00000010L #define VS_FF_SPECIALBUILD 0x00000020L /* ----- Types and structures ----- */ typedef struct tagVS_FIXEDFILEINFO { DWORD dwSignature; /* e.g. 0xfeef04bd */ DWORD dwStrucVersion; /* e.g. 0x00000042 = "0.42" */ DWORD dwFileVersionMS; /* e.g. 0x00030075 = "3.75" */ DWORD dwFileVersionLS; /* e.g. 0x00000031 = "0.31" */ DWORD dwProductVersionMS; /* e.g. 0x00030010 = "3.10" */ DWORD dwProductVersionLS; /* e.g. 0x00000031 = "0.31" */ DWORD dwFileFlagsMask; /* = 0x3F for version "0.42" */ DWORD dwFileFlags; /* e.g. VFF_DEBUG | VFF_PRERELEASE */ DWORD dwFileOS; /* e.g. VOS_DOS_WINDOWS16 */ DWORD dwFileType; /* e.g. VFT_DRIVER */ DWORD dwFileSubtype; /* e.g. VFT2_DRV_KEYBOARD */ DWORD dwFileDateMS; /* e.g. 0 */ DWORD dwFileDateLS; /* e.g. 0 */ } VS_FIXEDFILEINFO; /************** Byte swapping & unaligned access ******************/ #include /******************** external includes *************************/ #include "ntimage.h" #endif // RC_INVOKED #endif // __PALRT_H__ ProcDump-for-Linux-2.2/profiler/inc/poppack.h000066400000000000000000000022751447614355600212150ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // =========================================================================== // File: poppack.h // // =========================================================================== /* Abstract: This file turns packing of structures off. (That is, it enables automatic alignment of structure fields.) An include file is needed because various compilers do this in different ways. poppack.h is the complement to pshpack?.h. An inclusion of poppack.h MUST ALWAYS be preceded by an inclusion of one of pshpack?.h, in one-to-one correspondence. For Microsoft compatible compilers, this file uses the pop option to the pack pragma so that it can restore the previous saved by the pshpack?.h include file. */ #if ! (defined(lint) || defined(RC_INVOKED)) #if ( _MSC_VER >= 800 && !defined(_M_I86)) || defined(_PUSHPOP_SUPPORTED) #pragma warning(disable:4103) #if !(defined( MIDL_PASS )) || defined( __midl ) #pragma pack(pop) #else #pragma pack() #endif #else #pragma pack() #endif #endif // ! (defined(lint) || defined(RC_INVOKED)) ProcDump-for-Linux-2.2/profiler/inc/profiler_pal.h000066400000000000000000000007041447614355600222310ustar00rootroot00000000000000// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. #pragma once #ifndef WIN32 #include #include "pal_mstypes.h" #include "pal.h" #include "ntimage.h" #include "corhdr.h" #define CoTaskMemAlloc(cb) malloc(cb) #define CoTaskMemFree(cb) free(cb) #define UINT_PTR_FORMAT "lx" #else #define UINT_PTR_FORMAT "llx" #endifProcDump-for-Linux-2.2/profiler/inc/profilerstring.h000066400000000000000000000172361447614355600226340ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. #pragma once #include #include #include #include #include #ifdef _WIN32 #define WCHAR(str) L##str #define CAST_CHAR(ch) ch #else // defined(_WIN32) // Definitely won't work for non-ascii characters so hopefully we never start using // them in the tests #define CAST_CHAR(ch) static_cast(ch) // On linux the runtime uses 16 bit strings but the native platform wchar_t is 32 bit. // This means there aren't c runtime functions like wcslen for 16 bit strings. The idea // here is to provide the easy ones to avoid all the copying and transforming. If more complex // string operations become necessary we should either write them in C++ or convert the string to // 32 bit and call the c runtime ones. #define WCHAR(str) u##str inline size_t wcslen(const char16_t *str) { if (str == NULL) { return 0; } size_t len = 0; while (*str != 0) { ++str; ++len; } return len; } inline int wcscmp(const char16_t *lhs, const char16_t *rhs) { int i = 0; while (true) { if (lhs[i] != rhs[i] || (lhs[i] == 0 && rhs[i] == 0)) { break; } ++i; } return lhs[i] - rhs[i]; } inline int wcscpy(char16_t *dst, size_t dmax,const char16_t *src) { while (dmax > 0) { *dst = *src; if (*dst == u'\0') { return 0; } dmax--; dst++; src++; } return 0; } inline int wcslwr(char16_t *str, size_t len) { for (size_t i = 0; i < len; ++i) { if ((str[i] >= u'A') && (str[i] <= u'Z')) str[i] = str[i] + (u'a' - u'A'); } return 0; } #endif // defined(__WIN32) template TARGET convertString(const SOURCE &s) { TARGET result; result.assign(s.begin(), s.end()); return result; } // 16 bit string type that works cross plat and doesn't require changing widths // on non-windows platforms class String { friend std::wostream& operator<<(std::wostream& os, const String& obj); private: WCHAR *buffer; size_t bufferLen; wchar_t *printBuffer; size_t printBufferLen; const size_t DefaultStringLength = 1024; void CopyBuffer(const WCHAR *other) { assert(other != nullptr); size_t otherLen = wcslen(other) + 1; if (buffer == nullptr || otherLen > bufferLen) { bufferLen = std::max(DefaultStringLength, otherLen); if (buffer != nullptr) { delete[] buffer; } buffer = new WCHAR[bufferLen]; } memcpy(buffer, other, otherLen * sizeof(WCHAR)); } public: String(const WCHAR *s = WCHAR("")) : buffer(nullptr), bufferLen(0), printBuffer(nullptr), printBufferLen(0) { CopyBuffer(s); } ~String() { if (buffer != nullptr) { bufferLen = 0; delete[] buffer; } if (printBuffer != nullptr) { printBufferLen = 0; delete[] printBuffer; } } String(const String& other) : buffer(nullptr), bufferLen(0), printBuffer(nullptr), printBufferLen(0) { CopyBuffer(other.buffer); } String(String&& other) noexcept : buffer(nullptr), bufferLen(0), printBuffer(nullptr), printBufferLen(0) { std::swap(buffer, other.buffer); std::swap(bufferLen, other.bufferLen); } String& operator=(const String& other) { if(this != &other) { if (other.buffer != nullptr) { CopyBuffer(other.buffer); } } printBuffer = nullptr; printBufferLen = 0; return *this; } String& operator=(String&& other) noexcept { std::swap(buffer, other.buffer); std::swap(bufferLen, other.bufferLen); printBuffer = nullptr; printBufferLen = 0; return *this; } bool operator==(const String& other) const { if (buffer == nullptr) { return buffer == other.buffer; } return wcscmp(buffer, other.buffer) == 0; } bool operator!=(const String& other) const { return !(*this == other); } String& operator+=(const String& other) { size_t currLen = wcslen(buffer); size_t otherLen = wcslen(other.buffer); size_t candidateLen = currLen + otherLen + 1; if (candidateLen > bufferLen) { WCHAR *newBuffer = new WCHAR[candidateLen]; memcpy(newBuffer, buffer, currLen * sizeof(WCHAR)); delete[] buffer; buffer = newBuffer; } memcpy(buffer + currLen, other.buffer, otherLen * sizeof(WCHAR)); buffer[candidateLen - 1] = 0; return *this; } WCHAR& operator[] (size_t pos) { return buffer[pos]; } const WCHAR& operator[] (size_t pos) const { return buffer[pos]; } void Clear() { if (buffer != nullptr) { buffer[0] = 0; } } const wchar_t *ToCStr() { if (bufferLen == 0 || buffer == nullptr) { // Nothing to convert return nullptr; } if (bufferLen > printBufferLen) { if (printBuffer != nullptr) { delete[] printBuffer; } printBuffer = new wchar_t[bufferLen]; printBufferLen = bufferLen; } for (size_t i = 0; i < bufferLen; ++i) { printBuffer[i] = CAST_CHAR(buffer[i]); } // Make sure it's null terminated printBuffer[bufferLen - 1] = '\0'; return printBuffer; } std::wstring ToWString() { std::wstring temp; for (size_t i = 0; i < bufferLen; ++i) { if (buffer[i] == 0) { break; } temp.push_back(CAST_CHAR(buffer[i])); } return temp; } size_t Length() const { return wcslen(buffer); } }; inline std::wostream& operator<<(std::wostream& os, const String& obj) { for (size_t i = 0; i < obj.bufferLen; ++i) { if (obj.buffer[i] == 0) { break; } os << CAST_CHAR(obj.buffer[i]); } return os; } inline bool EndsWith(const char *lhs, const char *rhs) { size_t lhsLen = strlen(lhs); size_t rhsLen = strlen(rhs); if (lhsLen < rhsLen) { return false; } size_t lhsPos = lhsLen - rhsLen; size_t rhsPos = 0; while (rhsPos < rhsLen) { if (lhs[lhsPos] != rhs[rhsPos]) { return false; } ++lhsPos; ++rhsPos; } return true; } inline bool EndsWith(const String &lhs, const String &rhs) { size_t lhsLength = lhs.Length(); size_t rhsLength = rhs.Length(); if (lhsLength < rhsLength) { return false; } size_t lhsPos = lhsLength - rhsLength; size_t rhsPos = 0; while (rhsPos < rhsLength) { if (std::tolower(lhs[lhsPos]) != std::tolower(rhs[rhsPos])) { return false; } ++lhsPos; ++rhsPos; } return true; } inline WCHAR *getWCHARs(const String &src) { size_t len = src.Length(); WCHAR* tempbuff = new WCHAR[len+1]; for (size_t i = 0; i < len; ++i) { tempbuff[i] = src[i]; } tempbuff[len] = u'\0'; return tempbuff; }ProcDump-for-Linux-2.2/profiler/inc/pshpack1.h000066400000000000000000000021361447614355600212660ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // =========================================================================== // File: pshpack1.h // // =========================================================================== /*++ Abstract: This file turns 1 byte packing of structures on. (That is, it disables automatic alignment of structure fields.) An include file is needed because various compilers do this in different ways. For Microsoft compatible compilers, this files uses the push option to the pack pragma so that the poppack.h include file can restore the previous packing reliably. The file poppack.h is the complement to this file. --*/ #if ! (defined(lint) || defined(RC_INVOKED)) #if ( _MSC_VER >= 800 && !defined(_M_I86)) || defined(_PUSHPOP_SUPPORTED) #pragma warning(disable:4103) #if !(defined( MIDL_PASS )) || defined( __midl ) #pragma pack(push,1) #else #pragma pack(1) #endif #else #pragma pack(1) #endif #endif // ! (defined(lint) || defined(RC_INVOKED)) ProcDump-for-Linux-2.2/profiler/inc/pshpack2.h000066400000000000000000000021351447614355600212660ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // =========================================================================== // File: pshpack2.h // // =========================================================================== /*++ Abstract: This file turns 2 byte packing of structures on. (That is, it disables automatic alignment of structure fields.) An include file is needed because various compilers do this in different ways. For Microsoft compatible compilers, this files uses the push option to the pack pragma so that the poppack.h include file can restore the previous packing reliably. The file poppack.h is the complement to this file. --*/ #if ! (defined(lint) || defined(RC_INVOKED)) #if ( _MSC_VER >= 800 && !defined(_M_I86)) || defined(_PUSHPOP_SUPPORTED) #pragma warning(disable:4103) #if !(defined( MIDL_PASS )) || defined( __midl ) #pragma pack(push,2) #else #pragma pack(2) #endif #else #pragma pack(2) #endif #endif // ! (defined(lint) || defined(RC_INVOKED)) ProcDump-for-Linux-2.2/profiler/inc/pshpack4.h000066400000000000000000000021361447614355600212710ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // =========================================================================== // File: pshpack4.h // // =========================================================================== /*++ Abstract: This file turns 4 byte packing of structures on. (That is, it disables automatic alignment of structure fields.) An include file is needed because various compilers do this in different ways. For Microsoft compatible compilers, this files uses the push option to the pack pragma so that the poppack.h include file can restore the previous packing reliably. The file poppack.h is the complement to this file. --*/ #if ! (defined(lint) || defined(RC_INVOKED)) #if ( _MSC_VER >= 800 && !defined(_M_I86)) || defined(_PUSHPOP_SUPPORTED) #pragma warning(disable:4103) #if !(defined( MIDL_PASS )) || defined( __midl ) #pragma pack(push,4) #else #pragma pack(4) #endif #else #pragma pack(4) #endif #endif // ! (defined(lint) || defined(RC_INVOKED)) ProcDump-for-Linux-2.2/profiler/inc/pshpack8.h000066400000000000000000000021361447614355600212750ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // =========================================================================== // File: pshpack8.h // // =========================================================================== /*++ Abstract: This file turns 8 byte packing of structures on. (That is, it disables automatic alignment of structure fields.) An include file is needed because various compilers do this in different ways. For Microsoft compatible compilers, this files uses the push option to the pack pragma so that the poppack.h include file can restore the previous packing reliably. The file poppack.h is the complement to this file. --*/ #if ! (defined(lint) || defined(RC_INVOKED)) #if ( _MSC_VER >= 800 && !defined(_M_I86)) || defined(_PUSHPOP_SUPPORTED) #pragma warning(disable:4103) #if !(defined( MIDL_PASS )) || defined( __midl ) #pragma pack(push,8) #else #pragma pack(8) #endif #else #pragma pack(8) #endif #endif // ! (defined(lint) || defined(RC_INVOKED)) ProcDump-for-Linux-2.2/profiler/inc/rpc.h000066400000000000000000000015231447614355600203370ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // =========================================================================== // File: rpc.h // // =========================================================================== // dummy rpc.h for PAL #ifndef __RPC_H__ #define __RPC_H__ #include "palrt.h" #define __RPC_STUB #define __RPC_USER #define __RPC_FAR #define __uuidof(type) IID_##type #define DECLSPEC_UUID(x) #define MIDL_INTERFACE(x) struct DECLSPEC_UUID(x) DECLSPEC_NOVTABLE #define EXTERN_GUID(itf,l1,s1,s2,c1,c2,c3,c4,c5,c6,c7,c8) \ constexpr IID itf = {l1,s1,s2,{c1,c2,c3,c4,c5,c6,c7,c8}} interface IRpcStubBuffer; interface IRpcChannelBuffer; typedef void* PRPC_MESSAGE; typedef void* RPC_IF_HANDLE; #endif // __RPC_H__ ProcDump-for-Linux-2.2/profiler/inc/rpcndr.h000066400000000000000000000007431447614355600210460ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // =========================================================================== // File: rpcndr.h // // =========================================================================== // dummy rpcndr.h for PAL #ifndef __RPCNDR_H__ #define __RPCNDR_H__ #ifndef __RPCNDR_H_VERSION__ #define __RPCNDR_H_VERSION__ #endif #endif // __RPCNDR_H__ ProcDump-for-Linux-2.2/profiler/inc/safecrt.h000066400000000000000000001326571447614355600212170ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // /*** *safecrt.h - secure crt downlevel for windows build * *Purpose: * This file contains a subset of the Secure CRT. It is meant to * be used in the Windows source tree. * ****/ /* #pragma once */ /* guard against other includes */ #if !defined(_CRT_ALTERNATIVE_INLINES) #error "_CRT_ALTERNATIVE_INLINES needs to be defined to use safecrt.h. This will make sure the safecrt functions are not declared in the standard headers." #endif #if defined(_CRT_ALTERNATIVE_IMPORTED) #error "_CRT_ALTERNATIVE_IMPORTED is defined. This means some files were included with _CRT_ALTERNATIVE_INLINES undefined." #endif #if !defined(_INC_SAFECRT) #define _INC_SAFECRT #if !defined(_SAFECRT_NO_INCLUDES) #include /* for va_start, etc. */ #endif /* _SAFECRT switches */ #if !defined(_SAFECRT_USE_INLINES) #define _SAFECRT_USE_INLINES 0 #endif #if !defined(_SAFECRT_SET_ERRNO) #define _SAFECRT_SET_ERRNO 1 #endif #if !defined(_SAFECRT_DEFINE_TCS_MACROS) #define _SAFECRT_DEFINE_TCS_MACROS 0 #endif #if !defined(_SAFECRT_DEFINE_MBS_FUNCTIONS) #define _SAFECRT_DEFINE_MBS_FUNCTIONS 1 #endif #if !defined(_SAFECRT_USE_CPP_OVERLOADS) #define _SAFECRT_USE_CPP_OVERLOADS 0 #endif #if !defined(_SAFECRT_FILL_BUFFER) #if defined(_DEBUG) #define _SAFECRT_FILL_BUFFER 1 #else #define _SAFECRT_FILL_BUFFER 0 #endif #endif #if !defined(_SAFECRT_FILL_BUFFER_PATTERN) #define _SAFECRT_FILL_BUFFER_PATTERN 0xFD #endif #if !defined(_SAFECRT_INVALID_PARAMETER_DEBUG_INFO) #define _SAFECRT_INVALID_PARAMETER_DEBUG_INFO 0 #endif #if !defined(_SAFECRT_IMPL) && defined (_SAFECRT_USE_INLINES) #define _SAFECRT__INLINE __inline #else #define _SAFECRT__INLINE #endif /* additional includes */ #if _SAFECRT_USE_INLINES && !defined(_SAFECRT_NO_INCLUDES) #include /* for _MAX_DRIVE */ #include /* for memset */ #include /* for NTSTATUS, RaiseException */ #if _SAFECRT_SET_ERRNO #include #endif #if _SAFECRT_DEFINE_MBS_FUNCTIONS #include #endif #endif /* NULL */ #if !defined(NULL) #if !defined(__cplusplus) #define NULL 0 #else #define NULL ((void *)0) #endif #endif /* _W64 */ #if !defined(_W64) #if !defined(__midl) && (defined(HOST_X86) || defined(_M_IX86)) && _MSC_VER >= 1300 #define _W64 __w64 #else #define _W64 #endif #endif /* uintptr_t */ #if !defined(_UINTPTR_T_DEFINED) #if defined(HOST_64BIT) typedef unsigned __int64 uintptr_t; #else typedef _W64 unsigned int uintptr_t; #endif #define _UINTPTR_T_DEFINED #endif #ifdef __GNUC__ #define SAFECRT_DEPRECATED __attribute__((deprecated)) #else #define SAFECRT_DEPRECATED __declspec(deprecated) #endif /* errno_t */ #if !defined(_ERRCODE_DEFINED) #define _ERRCODE_DEFINED /* errcode is deprecated in favor or errno_t, which is part of the standard proposal */ SAFECRT_DEPRECATED typedef int errcode; typedef int errno_t; /* standard */ #endif /* error codes */ #if !defined(_SECURECRT_ERRCODE_VALUES_DEFINED) #define _SECURECRT_ERRCODE_VALUES_DEFINED #if !defined(EINVAL) #define EINVAL 22 #endif #if !defined(ERANGE) #define ERANGE 34 #endif #if !defined(EILSEQ) #define EILSEQ 42 #endif #if !defined(STRUNCATE) #define STRUNCATE 80 #endif #endif /* _TRUNCATE */ #if !defined(_TRUNCATE) #define _TRUNCATE ((size_t)-1) #endif /* _SAFECRT_AUTOMATICALLY_REPLACED_CALL */ #if !defined(_SAFECRT_AUTOMATICALLY_REPLACED_CALL) #define _SAFECRT_AUTOMATICALLY_REPLACED_CALL(v) (v) #endif /* internal macros */ #if _SAFECRT_USE_INLINES #define _SAFECRT__EXTERN_C #else #if defined(__cplusplus) #define _SAFECRT__EXTERN_C extern "C" #else #define _SAFECRT__EXTERN_C extern #endif #endif /* _SAFECRT_USE_INLINES */ #if !defined(_SAFECRT_IMPL) #define _SAFECRT__STR2WSTR(str) L##str #define _SAFECRT__STR2WSTR2(str) _SAFECRT__STR2WSTR(str) #if !defined(__FILEW__) #define __FILEW__ _SAFECRT__STR2WSTR2(__FILE__) #endif #if !defined(__FUNCTIONW__) #define __FUNCTIONW__ _SAFECRT__STR2WSTR2(__FUNCTION__) #endif #endif /* validation macros */ #if !defined(_SAFECRT_INVALID_PARAMETER) #if _SAFECRT_INVALID_PARAMETER_DEBUG_INFO #define _SAFECRT_INVALID_PARAMETER(message) _invalid_parameter(message, __FUNCTIONW__, __FILEW__, __LINE__, 0) #else #define _SAFECRT_INVALID_PARAMETER(message) _invalid_parameter(nullptr, nullptr, nullptr, 0, 0) #endif #endif #if !defined(_SAFECRT__SET_ERRNO) #if _SAFECRT_SET_ERRNO #define _SAFECRT__SET_ERRNO(_ErrorCode) errno = (_ErrorCode) #else #define _SAFECRT__SET_ERRNO(_ErrorCode) #endif #endif #if !defined(_SAFECRT__RETURN_ERROR) #define _SAFECRT__RETURN_ERROR(_Msg, _Ret) \ _SAFECRT__SET_ERRNO(EINVAL); \ _SAFECRT_INVALID_PARAMETER(_Msg); \ return _Ret #endif #if !defined(_SAFECRT__VALIDATE_STRING_ERROR) #define _SAFECRT__VALIDATE_STRING_ERROR(_String, _Size, _Ret) \ if ((_String) == nullptr || (_Size) == 0) \ { \ _SAFECRT__SET_ERRNO(EINVAL); \ _SAFECRT_INVALID_PARAMETER(L"String " _SAFECRT__STR2WSTR(#_String) L" is invalid"); \ return _Ret; \ } #endif #if !defined(_SAFECRT__VALIDATE_STRING) #define _SAFECRT__VALIDATE_STRING(_String, _Size) _SAFECRT__VALIDATE_STRING_ERROR(_String, _Size, EINVAL) #endif #if !defined(_SAFECRT__VALIDATE_POINTER_ERROR_RETURN) #define _SAFECRT__VALIDATE_POINTER_ERROR_RETURN(_Pointer, _ErrorCode, _Ret) \ if ((_Pointer) == nullptr) \ { \ _SAFECRT__SET_ERRNO(_ErrorCode); \ _SAFECRT_INVALID_PARAMETER(L"Pointer " _SAFECRT__STR2WSTR(#_Pointer) L" is invalid"); \ return _Ret; \ } #endif #if !defined(_SAFECRT__VALIDATE_POINTER_ERROR) #define _SAFECRT__VALIDATE_POINTER_ERROR(_Pointer, _Ret) \ _SAFECRT__VALIDATE_POINTER_ERROR_RETURN(_Pointer, EINVAL, _Ret) #endif #if !defined(_SAFECRT__VALIDATE_POINTER) #define _SAFECRT__VALIDATE_POINTER(_Pointer) \ _SAFECRT__VALIDATE_POINTER_ERROR(_Pointer, EINVAL) #endif #if !defined(_SAFECRT__VALIDATE_POINTER_RESET_STRING_ERROR) #define _SAFECRT__VALIDATE_POINTER_RESET_STRING_ERROR(_Pointer, _String, _Size, _Ret) \ if ((_Pointer) == nullptr) \ { \ _SAFECRT__SET_ERRNO(EINVAL); \ _SAFECRT__RESET_STRING(_String, _Size); \ _SAFECRT_INVALID_PARAMETER(L"Pointer " _SAFECRT__STR2WSTR(#_Pointer) L" is invalid"); \ return _Ret; \ } #endif #if !defined(_SAFECRT__VALIDATE_POINTER_RESET_STRING) #define _SAFECRT__VALIDATE_POINTER_RESET_STRING(_Pointer, _String, _Size) \ _SAFECRT__VALIDATE_POINTER_RESET_STRING_ERROR(_Pointer, _String, _Size, EINVAL) #endif #if !defined(_SAFECRT__VALIDATE_CONDITION_ERROR_RETURN) #define _SAFECRT__VALIDATE_CONDITION_ERROR_RETURN(_Condition, _ErrorCode, _Ret) \ if (!(_Condition)) \ { \ _SAFECRT__SET_ERRNO(_ErrorCode); \ _SAFECRT_INVALID_PARAMETER(_SAFECRT__STR2WSTR(#_Condition)); \ return _Ret; \ } #endif #if !defined(_SAFECRT__VALIDATE_CONDITION_ERROR) #define _SAFECRT__VALIDATE_CONDITION_ERROR(_Condition, _Ret) \ _SAFECRT__VALIDATE_CONDITION_ERROR_RETURN(_Condition, EINVAL, _Ret) #endif /* if _SAFECRT_FILL_BUFFER is on, fill the interval [_Offset, _Size) with _SAFECRT_FILL_BUFFER_PATTERN; * assume that the string has been validated with _SAFECRT__VALIDATE_STRING */ #if !defined(_SAFECRT__FILL_STRING) #if _SAFECRT_FILL_BUFFER #define _SAFECRT__FILL_STRING(_String, _Size, _Offset) \ if ((size_t)(_Offset) < (_Size)) \ { \ memset((_String) + (_Offset), _SAFECRT_FILL_BUFFER_PATTERN, ((_Size) - (_Offset)) * sizeof(*(_String))); \ } #else #define _SAFECRT__FILL_STRING(_String, _Size, _Offset) #endif #endif /* if _SAFECRT_FILL_BUFFER is on, set the byte to _SAFECRT_FILL_BUFFER_PATTERN */ #if !defined(_SAFECRT__FILL_BYTE) #if _SAFECRT_FILL_BUFFER #define _SAFECRT__FILL_BYTE(_Position) \ (_Position) = _SAFECRT_FILL_BUFFER_PATTERN #else #define _SAFECRT__FILL_BYTE(_Position) #endif #endif /* put a null terminator at the beginning of the string and then calls _SAFECRT__FILL_STRING; * assume that the string has been validated with _SAFECRT__VALIDATE_STRING */ #if !defined(_SAFECRT__RESET_STRING) #define _SAFECRT__RESET_STRING(_String, _Size) \ *(_String) = 0; \ _SAFECRT__FILL_STRING(_String, _Size, 1); #endif #if !defined(_SAFECRT__RETURN_BUFFER_TOO_SMALL_ERROR) #define _SAFECRT__RETURN_BUFFER_TOO_SMALL_ERROR(_String, _Size, _Ret) \ _SAFECRT__SET_ERRNO(ERANGE); \ _SAFECRT_INVALID_PARAMETER(L"Buffer " _SAFECRT__STR2WSTR(#_String) L" is too small"); \ return _Ret; #endif #if !defined(_SAFECRT__RETURN_BUFFER_TOO_SMALL) #define _SAFECRT__RETURN_BUFFER_TOO_SMALL(_String, _Size) \ _SAFECRT__RETURN_BUFFER_TOO_SMALL_ERROR(_String, _Size, ERANGE) #endif #if !defined(_SAFECRT__RETURN_DEST_NOT_NULL_TERMINATED) #define _SAFECRT__RETURN_DEST_NOT_NULL_TERMINATED(_String, _Size) \ _SAFECRT__SET_ERRNO(EINVAL); \ _SAFECRT_INVALID_PARAMETER(L"String " _SAFECRT__STR2WSTR(#_String) L" is not terminated"); \ return EINVAL; #endif #if !defined(_SAFECRT__RETURN_EINVAL) #define _SAFECRT__RETURN_EINVAL \ _SAFECRT__SET_ERRNO(EINVAL); \ _SAFECRT_INVALID_PARAMETER(L"Invalid parameter"); \ return EINVAL; #endif _SAFECRT__EXTERN_C void __cdecl _invalid_parameter(const WCHAR *_Message, const WCHAR *_FunctionName, const WCHAR *_FileName, unsigned int _LineNumber, uintptr_t _Reserved); #if (_SAFECRT_USE_INLINES || _SAFECRT_IMPL) && !defined(_SAFECRT_DO_NOT_DEFINE_INVALID_PARAMETER) #ifndef STATUS_INVALID_PARAMETER #define STATUS_INVALID_PARAMETER ((NTSTATUS)0xC000000DL) #endif _SAFECRT__INLINE void __cdecl _invalid_parameter(const WCHAR *_Message, const WCHAR *_FunctionName, const WCHAR *_FileName, unsigned int _LineNumber, uintptr_t _Reserved) { #ifdef _MSC_VER (_Message); (_FunctionName); (_FileName); (_LineNumber); (_Reserved); #endif /* invoke Watson */ RaiseException((DWORD)STATUS_INVALID_PARAMETER, 0, 0, nullptr); } #endif //#if !defined(_SAFECRT_IMPL) #if _SAFECRT_DEFINE_TCS_MACROS /* _tcs macros */ #if !defined(_UNICODE) && !defined(UNICODE) #define _tcscpy_s strcpy_s #define _tcsncpy_s strncpy_s #define _tcscat_s strcat_s #define _tcsncat_s strncat_s #define _tcsset_s _strset_s #define _tcsnset_s _strnset_s #define _tcstok_s strtok_s #define _vsntprintf_s _vsnprintf_s #elif defined(_UNICODE) || defined(UNICODE) #define _tcscpy_s wcscpy_s #define _tcsncpy_s wcsncpy_s #define _tcscat_s wcscat_s #define _tcsncat_s wcsncat_s #define _tcsset_s _wcsset_s #define _tcsnset_s _wcsnset_s #define _tcstok_s wcstok_s #define _tmakepath_s _wmakepath_s #define _tsplitpath_s _wsplitpath_s #define _stprintf_s swprintf_s #define _vsntprintf_s _vsnwprintf_s #define _tscanf_s wscanf_s #define _tsscanf_s swscanf_s #else #error We should not get here... #endif #endif /* _SAFECRT_DEFINE_TCS_MACROS */ /* strcpy_s */ /* * strcpy_s, wcscpy_s copy string _Src into _Dst; * will call _SAFECRT_INVALID_PARAMETER if string _Src does not fit into _Dst */ _SAFECRT__EXTERN_C errno_t __cdecl strcpy_s(char *_Dst, size_t _SizeInBytes, const char *_Src); #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline errno_t __cdecl strcpy_s(char (&_Dst)[_SizeInBytes], const char *_Src) { return strcpy_s(_Dst, _SizeInBytes, _Src); } #endif #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE errno_t __cdecl strcpy_s(char *_Dst, size_t _SizeInBytes, const char *_Src) { char *p; size_t available; /* validation section */ _SAFECRT__VALIDATE_STRING(_Dst, _SizeInBytes); _SAFECRT__VALIDATE_POINTER_RESET_STRING(_Src, _Dst, _SizeInBytes); p = _Dst; available = _SizeInBytes; while ((*p++ = *_Src++) != 0 && --available > 0) { } if (available == 0) { _SAFECRT__RESET_STRING(_Dst, _SizeInBytes); _SAFECRT__RETURN_BUFFER_TOO_SMALL(_Dst, _SizeInBytes); } _SAFECRT__FILL_STRING(_Dst, _SizeInBytes, _SizeInBytes - available + 1); return 0; } #endif /* wcscpy_s */ _SAFECRT__EXTERN_C errno_t __cdecl wcscpy_s(WCHAR *_Dst, size_t _SizeInWords, const WCHAR *_Src); #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline errno_t __cdecl wcscpy_s(WCHAR (&_Dst)[_SizeInWords], const WCHAR *_Src) { return wcscpy_s(_Dst, _SizeInWords, _Src); } #endif #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE errno_t __cdecl wcscpy_s(WCHAR *_Dst, size_t _SizeInWords, const WCHAR *_Src) { WCHAR *p; size_t available; /* validation section */ _SAFECRT__VALIDATE_STRING(_Dst, _SizeInWords); _SAFECRT__VALIDATE_POINTER_RESET_STRING(_Src, _Dst, _SizeInWords); p = _Dst; available = _SizeInWords; while ((*p++ = *_Src++) != 0 && --available > 0) { } if (available == 0) { _SAFECRT__RESET_STRING(_Dst, _SizeInWords); _SAFECRT__RETURN_BUFFER_TOO_SMALL(_Dst, _SizeInWords); } _SAFECRT__FILL_STRING(_Dst, _SizeInWords, _SizeInWords - available + 1); return 0; } #endif /* strncpy_s */ /* * strncpy_s, wcsncpy_s copy at max _Count characters from string _Src into _Dst; * string _Dst will always be null-terminated; * will call _SAFECRT_INVALID_PARAMETER if there is not enough space in _Dst; * if _Count == _TRUNCATE, we will copy as many characters as we can from _Src into _Dst, and * return STRUNCATE if _Src does not entirely fit into _Dst (we will not call _SAFECRT_INVALID_PARAMETER); * if _Count == 0, then (_Dst == nullptr && _SizeInBytes == 0) is allowed */ _SAFECRT__EXTERN_C errno_t __cdecl strncpy_s(char *_Dst, size_t _SizeInBytes, const char *_Src, size_t _Count); #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline errno_t __cdecl strncpy_s(char (&_Dst)[_SizeInBytes], const char *_Src, size_t _Count) { return strncpy_s(_Dst, _SizeInBytes, _Src, _Count); } #endif #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE errno_t __cdecl strncpy_s(char *_Dst, size_t _SizeInBytes, const char *_Src, size_t _Count) { char *p; size_t available; if (_Count == 0 && _Dst == nullptr && _SizeInBytes == 0) { /* this case is allowed; nothing to do */ return 0; } /* validation section */ _SAFECRT__VALIDATE_STRING(_Dst, _SizeInBytes); if (_Count == 0) { /* notice that the source string pointer can be nullptr in this case */ _SAFECRT__RESET_STRING(_Dst, _SizeInBytes); return 0; } _SAFECRT__VALIDATE_POINTER_RESET_STRING(_Src, _Dst, _SizeInBytes); p = _Dst; available = _SizeInBytes; if (_Count == _TRUNCATE) { while ((*p++ = *_Src++) != 0 && --available > 0) { } } else { while ((*p++ = *_Src++) != 0 && --available > 0 && --_Count > 0) { } if (_Count == 0) { *p = 0; } } if (available == 0) { if (_Count == _TRUNCATE) { _Dst[_SizeInBytes - 1] = 0; return STRUNCATE; } _SAFECRT__RESET_STRING(_Dst, _SizeInBytes); _SAFECRT__RETURN_BUFFER_TOO_SMALL(_Dst, _SizeInBytes); } _SAFECRT__FILL_STRING(_Dst, _SizeInBytes, _SizeInBytes - available + 1); return 0; } #endif /* wcsncpy_s */ _SAFECRT__EXTERN_C errno_t __cdecl wcsncpy_s(WCHAR *_Dst, size_t _SizeInWords, const WCHAR *_Src, size_t _Count); #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline errno_t __cdecl wcsncpy_s(WCHAR (&_Dst)[_SizeInWords], const WCHAR *_Src, size_t _Count) { return wcsncpy_s(_Dst, _SizeInWords, _Src, _Count); } #endif #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE errno_t __cdecl wcsncpy_s(WCHAR *_Dst, size_t _SizeInWords, const WCHAR *_Src, size_t _Count) { WCHAR *p; size_t available; if (_Count == 0 && _Dst == nullptr && _SizeInWords == 0) { /* this case is allowed; nothing to do */ return 0; } /* validation section */ _SAFECRT__VALIDATE_STRING(_Dst, _SizeInWords); if (_Count == 0) { /* notice that the source string pointer can be nullptr in this case */ _SAFECRT__RESET_STRING(_Dst, _SizeInWords); return 0; } _SAFECRT__VALIDATE_POINTER_RESET_STRING(_Src, _Dst, _SizeInWords); p = _Dst; available = _SizeInWords; if (_Count == _TRUNCATE) { while ((*p++ = *_Src++) != 0 && --available > 0) { } } else { while ((*p++ = *_Src++) != 0 && --available > 0 && --_Count > 0) { } if (_Count == 0) { *p = 0; } } if (available == 0) { if (_Count == _TRUNCATE) { _Dst[_SizeInWords - 1] = 0; return STRUNCATE; } _SAFECRT__RESET_STRING(_Dst, _SizeInWords); _SAFECRT__RETURN_BUFFER_TOO_SMALL(_Dst, _SizeInWords); } _SAFECRT__FILL_STRING(_Dst, _SizeInWords, _SizeInWords - available + 1); return 0; } #endif /* strcat_s */ /* * strcat_s, wcscat_s append string _Src to _Dst; * will call _SAFECRT_INVALID_PARAMETER if there is not enough space in _Dst */ _SAFECRT__EXTERN_C errno_t __cdecl strcat_s(char *_Dst, size_t _SizeInBytes, const char *_Src); #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline errno_t __cdecl strcat_s(char (&_Dst)[_SizeInBytes], const char *_Src) { return strcat_s(_Dst, _SizeInBytes, _Src); } #endif #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE errno_t __cdecl strcat_s(char *_Dst, size_t _SizeInBytes, const char *_Src) { char *p; size_t available; /* validation section */ _SAFECRT__VALIDATE_STRING(_Dst, _SizeInBytes); _SAFECRT__VALIDATE_POINTER_RESET_STRING(_Src, _Dst, _SizeInBytes); p = _Dst; available = _SizeInBytes; while (available > 0 && *p != 0) { p++; available--; } if (available == 0) { _SAFECRT__RESET_STRING(_Dst, _SizeInBytes); _SAFECRT__RETURN_DEST_NOT_NULL_TERMINATED(_Dst, _SizeInBytes); } while ((*p++ = *_Src++) != 0 && --available > 0) { } if (available == 0) { _SAFECRT__RESET_STRING(_Dst, _SizeInBytes); _SAFECRT__RETURN_BUFFER_TOO_SMALL(_Dst, _SizeInBytes); } _SAFECRT__FILL_STRING(_Dst, _SizeInBytes, _SizeInBytes - available + 1); return 0; } #endif /* wcscat_s */ _SAFECRT__EXTERN_C errno_t __cdecl wcscat_s(WCHAR *_Dst, size_t _SizeInWords, const WCHAR *_Src); #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline errno_t __cdecl wcscat_s(WCHAR (&_Dst)[_SizeInWords], const WCHAR *_Src) { return wcscat_s(_Dst, _SizeInWords, _Src); } #endif #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE errno_t __cdecl wcscat_s(WCHAR *_Dst, size_t _SizeInWords, const WCHAR *_Src) { WCHAR *p; size_t available; /* validation section */ _SAFECRT__VALIDATE_STRING(_Dst, _SizeInWords); _SAFECRT__VALIDATE_POINTER_RESET_STRING(_Src, _Dst, _SizeInWords); p = _Dst; available = _SizeInWords; while (available > 0 && *p != 0) { p++; available--; } if (available == 0) { _SAFECRT__RESET_STRING(_Dst, _SizeInWords); _SAFECRT__RETURN_DEST_NOT_NULL_TERMINATED(_Dst, _SizeInWords); } while ((*p++ = *_Src++) != 0 && --available > 0) { } if (available == 0) { _SAFECRT__RESET_STRING(_Dst, _SizeInWords); _SAFECRT__RETURN_BUFFER_TOO_SMALL(_Dst, _SizeInWords); } _SAFECRT__FILL_STRING(_Dst, _SizeInWords, _SizeInWords - available + 1); return 0; } #endif /* strncat_s */ /* * strncat_s, wcsncat_s append at max _Count characters from string _Src to _Dst; * string _Dst will always be null-terminated; * will call _SAFECRT_INVALID_PARAMETER if there is not enough space in _Dst; * if _Count == _TRUNCATE, we will append as many characters as we can from _Src to _Dst, and * return STRUNCATE if _Src does not entirely fit into _Dst (we will not call _SAFECRT_INVALID_PARAMETER); * if _Count == 0, then (_Dst == nullptr && _SizeInBytes == 0) is allowed */ _SAFECRT__EXTERN_C errno_t __cdecl strncat_s(char *_Dst, size_t _SizeInBytes, const char *_Src, size_t _Count); #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline errno_t __cdecl strncat_s(char (&_Dst)[_SizeInBytes], const char *_Src, size_t _Count) { return strncat_s(_Dst, _SizeInBytes, _Src, _Count); } #endif #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE errno_t __cdecl strncat_s(char *_Dst, size_t _SizeInBytes, const char *_Src, size_t _Count) { char *p; size_t available; if (_Count == 0 && _Dst == nullptr && _SizeInBytes == 0) { /* this case is allowed; nothing to do */ return 0; } /* validation section */ _SAFECRT__VALIDATE_STRING(_Dst, _SizeInBytes); if (_Count != 0) { _SAFECRT__VALIDATE_POINTER_RESET_STRING(_Src, _Dst, _SizeInBytes); } p = _Dst; available = _SizeInBytes; while (available > 0 && *p != 0) { p++; available--; } if (available == 0) { _SAFECRT__RESET_STRING(_Dst, _SizeInBytes); _SAFECRT__RETURN_DEST_NOT_NULL_TERMINATED(_Dst, _SizeInBytes); } if (_Count == _TRUNCATE) { while ((*p++ = *_Src++) != 0 && --available > 0) { } } else { while (_Count > 0 && (*p++ = *_Src++) != 0 && --available > 0) { _Count--; } if (_Count == 0) { *p = 0; } } if (available == 0) { if (_Count == _TRUNCATE) { _Dst[_SizeInBytes - 1] = 0; return STRUNCATE; } _SAFECRT__RESET_STRING(_Dst, _SizeInBytes); _SAFECRT__RETURN_BUFFER_TOO_SMALL(_Dst, _SizeInBytes); } _SAFECRT__FILL_STRING(_Dst, _SizeInBytes, _SizeInBytes - available + 1); return 0; } #endif /* wcsncat_s */ _SAFECRT__EXTERN_C errno_t __cdecl wcsncat_s(WCHAR *_Dst, size_t _SizeInWords, const WCHAR *_Src, size_t _Count); #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline errno_t __cdecl wcsncat_s(WCHAR (&_Dst)[_SizeInWords], const WCHAR *_Src, size_t _Count) { return wcsncat_s(_Dst, _SizeInWords, _Src, _Count); } #endif #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE errno_t __cdecl wcsncat_s(WCHAR *_Dst, size_t _SizeInWords, const WCHAR *_Src, size_t _Count) { WCHAR *p; size_t available; if (_Count == 0 && _Dst == nullptr && _SizeInWords == 0) { /* this case is allowed; nothing to do */ return 0; } /* validation section */ _SAFECRT__VALIDATE_STRING(_Dst, _SizeInWords); if (_Count != 0) { _SAFECRT__VALIDATE_POINTER_RESET_STRING(_Src, _Dst, _SizeInWords); } p = _Dst; available = _SizeInWords; while (available > 0 && *p != 0) { p++; available--; } if (available == 0) { _SAFECRT__RESET_STRING(_Dst, _SizeInWords); _SAFECRT__RETURN_DEST_NOT_NULL_TERMINATED(_Dst, _SizeInWords); } if (_Count == _TRUNCATE) { while ((*p++ = *_Src++) != 0 && --available > 0) { } } else { while (_Count > 0 && (*p++ = *_Src++) != 0 && --available > 0) { _Count--; } if (_Count == 0) { *p = 0; } } if (available == 0) { if (_Count == _TRUNCATE) { _Dst[_SizeInWords - 1] = 0; return STRUNCATE; } _SAFECRT__RESET_STRING(_Dst, _SizeInWords); _SAFECRT__RETURN_BUFFER_TOO_SMALL(_Dst, _SizeInWords); } _SAFECRT__FILL_STRING(_Dst, _SizeInWords, _SizeInWords - available + 1); return 0; } #endif /* _strset_s */ /* * _strset_s, _wcsset_s ; * will call _SAFECRT_INVALID_PARAMETER if _Dst is not null terminated. */ _SAFECRT__EXTERN_C errno_t __cdecl _strset_s(char *_Dst, size_t _SizeInBytes, int _Value); #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline errno_t __cdecl _strset_s(char (&_Dst)[_SizeInBytes], int _Value) { return _strset_s(_Dst, _SizeInBytes, _Value); } #endif #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE errno_t __cdecl _strset_s(char *_Dst, size_t _SizeInBytes, int _Value) { char *p; size_t available; /* validation section */ _SAFECRT__VALIDATE_STRING(_Dst, _SizeInBytes); p = _Dst; available = _SizeInBytes; while (*p != 0 && --available > 0) { *p++ = (char)_Value; } if (available == 0) { _SAFECRT__RESET_STRING(_Dst, _SizeInBytes); _SAFECRT__RETURN_DEST_NOT_NULL_TERMINATED(_Dst, _SizeInBytes); } _SAFECRT__FILL_STRING(_Dst, _SizeInBytes, _SizeInBytes - available + 1); return 0; } #endif /* _wcsset_s */ _SAFECRT__EXTERN_C errno_t __cdecl _wcsset_s(WCHAR *_Dst, size_t _SizeInWords, WCHAR _Value); #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline errno_t __cdecl _wcsset_s(WCHAR (&_Dst)[_SizeInWords], WCHAR _Value) { return _wcsset_s(_Dst, _SizeInWords, _Value); } #endif #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE errno_t __cdecl _wcsset_s(WCHAR *_Dst, size_t _SizeInWords, WCHAR _Value) { WCHAR *p; size_t available; /* validation section */ _SAFECRT__VALIDATE_STRING(_Dst, _SizeInWords); p = _Dst; available = _SizeInWords; while (*p != 0 && --available > 0) { *p++ = (WCHAR)_Value; } if (available == 0) { _SAFECRT__RESET_STRING(_Dst, _SizeInWords); _SAFECRT__RETURN_DEST_NOT_NULL_TERMINATED(_Dst, _SizeInWords); } _SAFECRT__FILL_STRING(_Dst, _SizeInWords, _SizeInWords - available + 1); return 0; } #endif /* _strnset_s */ /* * _strnset_s, _wcsnset_s ; * will call _SAFECRT_INVALID_PARAMETER if _Dst is not null terminated. */ _SAFECRT__EXTERN_C errno_t __cdecl _strnset_s(char *_Dst, size_t _SizeInBytes, int _Value, size_t _Count); #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline errno_t __cdecl _strnset_s(char (&_Dst)[_SizeInBytes], int _Value, size_t _Count) { return _strnset_s(_Dst, _SizeInBytes, _Value, _Count); } #endif #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE errno_t __cdecl _strnset_s(char *_Dst, size_t _SizeInBytes, int _Value, size_t _Count) { char *p; size_t available; /* validation section */ if (_Count == 0 && _Dst == nullptr && _SizeInBytes == 0) { /* this case is allowed; nothing to do */ return 0; } _SAFECRT__VALIDATE_STRING(_Dst, _SizeInBytes); p = _Dst; available = _SizeInBytes; while (*p != 0 && _Count > 0 && --available > 0) { *p++ = (char)_Value; --_Count; } if (available == 0) { _SAFECRT__RESET_STRING(_Dst, _SizeInBytes); _SAFECRT__RETURN_DEST_NOT_NULL_TERMINATED(_Dst, _SizeInBytes); } if (_Count == 0) { *p = 0; } _SAFECRT__FILL_STRING(_Dst, _SizeInBytes, _SizeInBytes - available + 1); return 0; } #endif /* _wcsnset_s */ _SAFECRT__EXTERN_C errno_t __cdecl _wcsnset_s(WCHAR *_Dst, size_t _SizeInWords, WCHAR _Value, size_t _Count); #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline errno_t __cdecl _wcsnset_s(WCHAR (&_Dst)[_SizeInWords], WCHAR _Value, size_t _Count) { return _wcsnset_s(_Dst, _SizeInWords, _Value, _Count); } #endif #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE errno_t __cdecl _wcsnset_s(WCHAR *_Dst, size_t _SizeInWords, WCHAR _Value, size_t _Count) { WCHAR *p; size_t available; /* validation section */ if (_Count == 0 && _Dst == nullptr && _SizeInWords == 0) { /* this case is allowed; nothing to do */ return 0; } _SAFECRT__VALIDATE_STRING(_Dst, _SizeInWords); p = _Dst; available = _SizeInWords; while (*p != 0 && _Count > 0 && --available > 0) { *p++ = (WCHAR)_Value; --_Count; } if (available == 0) { _SAFECRT__RESET_STRING(_Dst, _SizeInWords); _SAFECRT__RETURN_DEST_NOT_NULL_TERMINATED(_Dst, _SizeInWords); } if (_Count == 0) { *p = 0; } _SAFECRT__FILL_STRING(_Dst, _SizeInWords, _SizeInWords - available + 1); return 0; } #endif /* strtok_s */ /* * strtok_s, wcstok_s ; * uses _Context to keep track of the position in the string. */ _SAFECRT__EXTERN_C char * __cdecl strtok_s(char *_String, const char *_Control, char **_Context); #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE char * __cdecl strtok_s(char *_String, const char *_Control, char **_Context) { unsigned char *str; const unsigned char *ctl = (const unsigned char *)_Control; unsigned char map[32]; int count; /* validation section */ _SAFECRT__VALIDATE_POINTER_ERROR_RETURN(_Context, EINVAL, nullptr); _SAFECRT__VALIDATE_POINTER_ERROR_RETURN(_Control, EINVAL, nullptr); _SAFECRT__VALIDATE_CONDITION_ERROR_RETURN(_String != nullptr || *_Context != nullptr, EINVAL, nullptr); /* Clear control map */ for (count = 0; count < 32; count++) { map[count] = 0; } /* Set bits in delimiter table */ do { map[*ctl >> 3] |= (1 << (*ctl & 7)); } while (*ctl++); /* If string is nullptr, set str to the saved * pointer (i.e., continue breaking tokens out of the string * from the last strtok call) */ if (_String != nullptr) { str = (unsigned char *)_String; } else { str = (unsigned char *)*_Context; } /* Find beginning of token (skip over leading delimiters). Note that * there is no token iff this loop sets str to point to the terminal * null (*str == 0) */ while ((map[*str >> 3] & (1 << (*str & 7))) && *str != 0) { str++; } _String = (char *)str; /* Find the end of the token. If it is not the end of the string, * put a null there. */ for ( ; *str != 0 ; str++ ) { if (map[*str >> 3] & (1 << (*str & 7))) { *str++ = 0; break; } } /* Update context */ *_Context = (char *)str; /* Determine if a token has been found. */ if (_String == (char *)str) { return nullptr; } else { return _String; } } #endif /* wcstok_s */ _SAFECRT__EXTERN_C WCHAR * __cdecl wcstok_s(WCHAR *_String, const WCHAR *_Control, WCHAR **_Context); #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE WCHAR * __cdecl wcstok_s(WCHAR *_String, const WCHAR *_Control, WCHAR **_Context) { WCHAR *token; const WCHAR *ctl; /* validation section */ _SAFECRT__VALIDATE_POINTER_ERROR_RETURN(_Context, EINVAL, nullptr); _SAFECRT__VALIDATE_POINTER_ERROR_RETURN(_Control, EINVAL, nullptr); _SAFECRT__VALIDATE_CONDITION_ERROR_RETURN(_String != nullptr || *_Context != nullptr, EINVAL, nullptr); /* If string==nullptr, continue with previous string */ if (!_String) { _String = *_Context; } /* Find beginning of token (skip over leading delimiters). Note that * there is no token iff this loop sets string to point to the terminal null. */ for ( ; *_String != 0 ; _String++) { for (ctl = _Control; *ctl != 0 && *ctl != *_String; ctl++) ; if (*ctl == 0) { break; } } token = _String; /* Find the end of the token. If it is not the end of the string, * put a null there. */ for ( ; *_String != 0 ; _String++) { for (ctl = _Control; *ctl != 0 && *ctl != *_String; ctl++) ; if (*ctl != 0) { *_String++ = 0; break; } } /* Update the context */ *_Context = _String; /* Determine if a token has been found. */ if (token == _String) { return nullptr; } else { return token; } } #endif #ifndef PAL_STDCPP_COMPAT /* strnlen */ /* * strnlen, wcsnlen ; * returns inMaxSize if the null character is not found. */ _SAFECRT__EXTERN_C size_t __cdecl strnlen(const char* inString, size_t inMaxSize); #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE size_t __cdecl strnlen(const char* inString, size_t inMaxSize) { size_t n; /* Note that we do not check if s == nullptr, because we do not * return errno_t... */ for (n = 0; n < inMaxSize && *inString; n++, inString++) ; return n; } #endif /* wcsnlen */ _SAFECRT__EXTERN_C size_t __cdecl wcsnlen(const WCHAR *inString, size_t inMaxSize); #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE size_t __cdecl wcsnlen(const WCHAR *inString, size_t inMaxSize) { size_t n; /* Note that we do not check if s == nullptr, because we do not * return errno_t... */ for (n = 0; n < inMaxSize && *inString; n++, inString++) ; return n; } #endif #endif // PAL_STDCPP_COMPAT /* _wmakepath_s */ _SAFECRT__EXTERN_C errno_t __cdecl _wmakepath_s(WCHAR *_Dst, size_t _SizeInWords, const WCHAR *_Drive, const WCHAR *_Dir, const WCHAR *_Filename, const WCHAR *_Ext); #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline errno_t __cdecl _wmakepath_s(WCHAR (&_Dst)[_SizeInWords], const WCHAR *_Drive, const WCHAR *_Dir, const WCHAR *_Filename, const WCHAR *_Ext) { return _wmakepath_s(_Dst, _SizeInWords, _Drive, _Dir, _Filename, _Ext); } #endif #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE errno_t __cdecl _wmakepath_s(WCHAR *_Dst, size_t _SizeInWords, const WCHAR *_Drive, const WCHAR *_Dir, const WCHAR *_Filename, const WCHAR *_Ext) { size_t written; const WCHAR *p; WCHAR *d; /* validation section */ _SAFECRT__VALIDATE_STRING(_Dst, _SizeInWords); /* copy drive */ written = 0; d = _Dst; if (_Drive != nullptr && *_Drive != 0) { written += 2; if(written >= _SizeInWords) { goto error_return; } *d++ = *_Drive; *d++ = L':'; } /* copy dir */ p = _Dir; if (p != nullptr && *p != 0) { do { if(++written >= _SizeInWords) { goto error_return; } *d++ = *p++; } while (*p != 0); p = p - 1; if (*p != L'/' && *p != L'\\') { if(++written >= _SizeInWords) { goto error_return; } *d++ = L'\\'; } } /* copy fname */ p = _Filename; if (p != nullptr) { while (*p != 0) { if(++written >= _SizeInWords) { goto error_return; } *d++ = *p++; } } /* copy extension; check to see if a '.' needs to be inserted */ p = _Ext; if (p != nullptr) { if (*p != 0 && *p != L'.') { if(++written >= _SizeInWords) { goto error_return; } *d++ = L'.'; } while (*p != 0) { if(++written >= _SizeInWords) { goto error_return; } *d++ = *p++; } } if(++written > _SizeInWords) { goto error_return; } *d = 0; _SAFECRT__FILL_STRING(_Dst, _SizeInWords, written); return 0; error_return: _SAFECRT__RESET_STRING(_Dst, _SizeInWords); _SAFECRT__RETURN_BUFFER_TOO_SMALL(_Dst, _SizeInWords); /* should never happen, but compiler can't tell */ return EINVAL; } #endif /* _wsplitpath_s */ _SAFECRT__EXTERN_C errno_t __cdecl _wsplitpath_s( const WCHAR *_Path, WCHAR *_Drive, size_t _DriveSize, WCHAR *_Dir, size_t _DirSize, WCHAR *_Filename, size_t _FilenameSize, WCHAR *_Ext, size_t _ExtSize ); /* no C++ overload for _wsplitpath_s */ #if _SAFECRT_USE_INLINES || _SAFECRT_IMPL _SAFECRT__INLINE errno_t __cdecl _wsplitpath_s( const WCHAR *_Path, WCHAR *_Drive, size_t _DriveSize, WCHAR *_Dir, size_t _DirSize, WCHAR *_Filename, size_t _FilenameSize, WCHAR *_Ext, size_t _ExtSize ) { const WCHAR *tmp; const WCHAR *last_slash; const WCHAR *dot; int drive_set = 0; size_t length = 0; int bEinval = 0; /* validation section */ _SAFECRT__VALIDATE_POINTER(_Path); if ((_Drive == nullptr && _DriveSize != 0) || (_Drive != nullptr && _DriveSize == 0)) { goto error_einval; } if ((_Dir == nullptr && _DirSize != 0) || (_Dir != nullptr && _DirSize == 0)) { goto error_einval; } if ((_Filename == nullptr && _FilenameSize != 0) || (_Filename != nullptr && _FilenameSize == 0)) { goto error_einval; } if ((_Ext == nullptr && _ExtSize != 0) || (_Ext != nullptr && _ExtSize == 0)) { goto error_einval; } /* check if _Path begins with the longpath prefix */ if (_Path[0] == L'\\' && _Path[1] == L'\\' && _Path[2] == L'?' && _Path[3] == L'\\') { _Path += 4; } /* extract drive letter and ':', if any */ if (!drive_set) { size_t skip = _MAX_DRIVE - 2; tmp = _Path; while (skip > 0 && *tmp != 0) { skip--; tmp++; } if (*tmp == L':') { if (_Drive != nullptr) { if (_DriveSize < _MAX_DRIVE) { goto error_erange; } wcsncpy_s(_Drive, _DriveSize, _Path, _MAX_DRIVE - 1); } _Path = tmp + 1; } else { if (_Drive != nullptr) { _SAFECRT__RESET_STRING(_Drive, _DriveSize); } } } /* extract path string, if any. _Path now points to the first character * of the path, if any, or the filename or extension, if no path was * specified. Scan ahead for the last occurrence, if any, of a '/' or * '\' path separator character. If none is found, there is no path. * We will also note the last '.' character found, if any, to aid in * handling the extension. */ last_slash = nullptr; dot = nullptr; tmp = _Path; for (; *tmp != 0; ++tmp) { { if (*tmp == L'/' || *tmp == L'\\') { /* point to one beyond for later copy */ last_slash = tmp + 1; } else if (*tmp == L'.') { dot = tmp; } } } if (last_slash != nullptr) { /* found a path - copy up through last_slash or max characters * allowed, whichever is smaller */ if (_Dir != nullptr) { length = (size_t)(last_slash - _Path); if (_DirSize <= length) { goto error_erange; } wcsncpy_s(_Dir, _DirSize, _Path, length); } _Path = last_slash; } else { /* there is no path */ if (_Dir != nullptr) { _SAFECRT__RESET_STRING(_Dir, _DirSize); } } /* extract file name and extension, if any. Path now points to the * first character of the file name, if any, or the extension if no * file name was given. Dot points to the '.' beginning the extension, * if any. */ if (dot != nullptr && (dot >= _Path)) { /* found the marker for an extension - copy the file name up to the '.' */ if (_Filename) { length = (size_t)(dot - _Path); if (_FilenameSize <= length) { goto error_erange; } wcsncpy_s(_Filename, _FilenameSize, _Path, length); } /* now we can get the extension - remember that tmp still points * to the terminating nullptr character of path. */ if (_Ext) { length = (size_t)(tmp - dot); if (_ExtSize <= length) { goto error_erange; } wcsncpy_s(_Ext, _ExtSize, dot, length); } } else { /* found no extension, give empty extension and copy rest of * string into fname. */ if (_Filename) { length = (size_t)(tmp - _Path); if (_FilenameSize <= length) { goto error_erange; } wcsncpy_s(_Filename, _FilenameSize, _Path, length); } if (_Ext) { _SAFECRT__RESET_STRING(_Ext, _ExtSize); } } return 0; error_einval: bEinval = 1; error_erange: if (_Drive != nullptr && _DriveSize > 0) { _SAFECRT__RESET_STRING(_Drive, _DriveSize); } if (_Dir != nullptr && _DirSize > 0) { _SAFECRT__RESET_STRING(_Dir, _DirSize); } if (_Filename != nullptr && _FilenameSize > 0) { _SAFECRT__RESET_STRING(_Filename, _FilenameSize); } if (_Ext != nullptr && _ExtSize > 0) { _SAFECRT__RESET_STRING(_Ext, _ExtSize); } if (bEinval) { _SAFECRT__RETURN_EINVAL; } _SAFECRT__RETURN_BUFFER_TOO_SMALL(_Strings, _StringSizes); /* should never happen, but compiler can't tell */ return EINVAL; } #endif /* vsprintf_s */ /* * swprintf_s, vsprintf_s, vswprintf_s format a string and copy it into _Dst; * need safecrt.lib and msvcrt.dll; * will call _SAFECRT_INVALID_PARAMETER if there is not enough space in _Dst; * will call _SAFECRT_INVALID_PARAMETER if the format string is malformed; * the %n format type is not allowed; * return the length of string _Dst; * return a negative number if something goes wrong with mbcs conversions (we will not call _SAFECRT_INVALID_PARAMETER); * _SizeInBytes/_SizeInWords must be <= (INT_MAX / sizeof(char/WCHAR)); * cannot be used without safecrt.lib */ _SAFECRT__EXTERN_C int __cdecl vsprintf_s(char *_Dst, size_t _SizeInBytes, const char *_Format, va_list _ArgList); #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline int __cdecl vsprintf_s(char (&_Dst)[_SizeInBytes], const char *_Format, va_list _ArgList) { return vsprintf_s(_Dst, _SizeInBytes, _Format, _ArgList); } #endif /* no inline version of vsprintf_s */ /* swprintf_s, vswprintf_s */ _SAFECRT__EXTERN_C int __cdecl swprintf_s(WCHAR *_Dst, size_t _SizeInWords, const WCHAR *_Format, ...); _SAFECRT__EXTERN_C int __cdecl vswprintf_s(WCHAR *_Dst, size_t _SizeInWords, const WCHAR *_Format, va_list _ArgList); #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline int __cdecl swprintf_s(WCHAR (&_Dst)[_SizeInWords], const WCHAR *_Format, ...) { int ret; va_list _ArgList; va_start(_ArgList, _Format); ret = vswprintf_s(_Dst, _SizeInWords, _Format, _ArgList); va_end(_ArgList); return ret; } template inline int __cdecl vswprintf_s(WCHAR (&_Dst)[_SizeInWords], const WCHAR *_Format, va_list _ArgList) { return vswprintf_s(_Dst, _SizeInWords, _Format, _ArgList); } #endif /* no inline version of swprintf_s, vswprintf_s */ /* _vsnprintf_s */ /* * _snwprintf_s, _vsnprintf_s, _vsnwprintf_s format a string and copy at max _Count characters into _Dst; * need safecrt.lib and msvcrt.dll; * string _Dst will always be null-terminated; * will call _SAFECRT_INVALID_PARAMETER if there is not enough space in _Dst; * will call _SAFECRT_INVALID_PARAMETER if the format string is malformed; * the %n format type is not allowed; * return the length of string _Dst; * return a negative number if something goes wrong with mbcs conversions (we will not call _SAFECRT_INVALID_PARAMETER); * _SizeInBytes/_SizeInWords must be <= (INT_MAX / sizeof(char/WCHAR)); * cannot be used without safecrt.lib; * if _Count == _TRUNCATE, we will copy into _Dst as many characters as we can, and * return -1 if the formatted string does not entirely fit into _Dst (we will not call _SAFECRT_INVALID_PARAMETER); * if _Count == 0, then (_Dst == nullptr && _SizeInBytes == 0) is allowed */ #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline int __cdecl _vsnprintf_s(char (&_Dst)[_SizeInBytes], size_t _Count, const char *_Format, va_list _ArgList) { return _vsnprintf_s(_Dst, _SizeInBytes, _Count, _Format, _ArgList); } #endif /* no inline version of _vsnprintf_s */ /* _snwprintf_s, _vsnwprintf_s */ _SAFECRT__EXTERN_C int __cdecl _vsnwprintf_s(WCHAR *_Dst, size_t _SizeInWords, size_t _Count, const WCHAR *_Format, va_list _ArgList); #if defined(__cplusplus) && _SAFECRT_USE_CPP_OVERLOADS template inline int __cdecl _snwprintf_s(WCHAR (&_Dst)[_SizeInWords], size_t _Count, const WCHAR *_Format, ...) { int ret; va_list _ArgList; va_start(_ArgList, _Format); ret = _vsnwprintf_s(_Dst, _SizeInWords, _Count, _Format, _ArgList); va_end(_ArgList); return ret; } template inline int __cdecl _vsnwprintf_s(char (&_Dst)[_SizeInWords], size_t _Count, const char *_Format, va_list _ArgList) { return _vsnwprintf_s(_Dst, _SizeInWords, _Count, _Format, _ArgList); } #endif /* no inline version of _snwprintf_s, _vsnwprintf_s */ /* wscanf_s */ _SAFECRT__EXTERN_C int __cdecl wscanf_s(const WCHAR *_Format, ...); /* no C++ overload for wscanf_s */ /* no inline version of wscanf_s */ /* swscanf_s */ _SAFECRT__EXTERN_C int __cdecl swscanf_s(const WCHAR *_String, const WCHAR *_Format, ...); /* no C++ overload for swscanf_s */ /* no inline version of swscanf_s */ /* _swnscanf_s */ _SAFECRT__EXTERN_C int __cdecl _swnscanf_s(const WCHAR *_String, size_t _Count, const WCHAR *_Format, ...); /* no C++ overload for _swnscanf_s */ /* no inline version of _swnscanf_s */ //#endif /* ndef _SAFECRT_IMPL */ #endif /* _INC_SAFECRT */ ProcDump-for-Linux-2.2/profiler/inc/safemath.h000066400000000000000000000641361447614355600213540ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // --------------------------------------------------------------------------- // safemath.h // // overflow checking infrastructure // --------------------------------------------------------------------------- #ifndef SAFEMATH_H_ #define SAFEMATH_H_ // This file is included from several places outside the CLR, so we can't // pull in files like DebugMacros.h. However, we assume that the standard // clrtypes (UINT32 etc.) are defined. #include "debugmacrosext.h" #ifndef _ASSERTE_SAFEMATH #ifdef _ASSERTE // Use _ASSERTE if we have it (should always be the case in the CLR) #define _ASSERTE_SAFEMATH _ASSERTE #else // Otherwise (eg. we're being used from a tool like SOS) there isn't much // we can rely on that is available everywhere. In // several other tools we just take the recourse of disabling asserts, // we'll do the same here. // Ideally we'd have a collection of common utilities available everywhere. #define _ASSERTE_SAFEMATH(a) #endif #endif #include "static_assert.h" #ifdef PAL_STDCPP_COMPAT #include #else #include "clr_std/type_traits" #endif //================================================================== // Semantics: if val can be represented as the exact same value // when cast to Dst type, then FitsIn(val) will return true; // otherwise FitsIn returns false. // // Dst and Src must both be integral types. // // It's important to note that most of the conditionals in this // function are based on static type information and as such will // be optimized away. In particular, the case where the signs are // identical will result in no code branches. #ifdef _PREFAST_ #pragma warning(push) #pragma warning(disable:6326) // PREfast warning: Potential comparison of a constant with another constant #endif // _PREFAST_ template inline bool FitsIn(Src val) { #ifdef _MSC_VER static_assert_no_msg(!__is_class(Dst)); static_assert_no_msg(!__is_class(Src)); #endif if (std::is_signed::value == std::is_signed::value) { // Src and Dst are equally signed if (sizeof(Src) <= sizeof(Dst)) { // No truncation is possible return true; } else { // Truncation is possible, requiring runtime check return val == (Src)((Dst)val); } } else if (std::is_signed::value) { // Src is signed, Dst is unsigned #ifdef __GNUC__ // Workaround for GCC warning: "comparison is always // false due to limited range of data type." if (!(val == 0 || val > 0)) #else if (val < 0) #endif { // A negative number cannot be represented by an unsigned type return false; } else { if (sizeof(Src) <= sizeof(Dst)) { // No truncation is possible return true; } else { // Truncation is possible, requiring runtime check return val == (Src)((Dst)val); } } } else { // Src is unsigned, Dst is signed if (sizeof(Src) < sizeof(Dst)) { // No truncation is possible. Note that Src is strictly // smaller than Dst. return true; } else { // Truncation is possible, requiring runtime check #ifdef __GNUC__ // Workaround for GCC warning: "comparison is always // true due to limited range of data type." If in fact // Dst were unsigned we'd never execute this code // anyway. return ((Dst)val > 0 || (Dst)val == 0) && #else return ((Dst)val >= 0) && #endif (val == (Src)((Dst)val)); } } } // Requires that Dst is an integral type, and that DstMin and DstMax are the // minimum and maximum values of that type, respectively. Returns "true" iff // "val" can be represented in the range [DstMin..DstMax] (allowing loss of precision, but // not truncation). template inline bool FloatFitsInIntType(float val) { float DstMinF = static_cast(DstMin); float DstMaxF = static_cast(DstMax); return DstMinF <= val && val <= DstMaxF; } template inline bool DoubleFitsInIntType(double val) { double DstMinD = static_cast(DstMin); double DstMaxD = static_cast(DstMax); return DstMinD <= val && val <= DstMaxD; } #ifdef _PREFAST_ #pragma warning(pop) #endif //_PREFAST_ #define ovadd_lt(a, b, rhs) (((a) + (b) < (rhs) ) && ((a) + (b) >= (a))) #define ovadd_le(a, b, rhs) (((a) + (b) <= (rhs) ) && ((a) + (b) >= (a))) #define ovadd_gt(a, b, rhs) (((a) + (b) > (rhs) ) || ((a) + (b) < (a))) #define ovadd_ge(a, b, rhs) (((a) + (b) >= (rhs) ) || ((a) + (b) < (a))) #define ovadd3_gt(a, b, c, rhs) (((a) + (b) + (c) > (rhs)) || ((a) + (b) < (a)) || ((a) + (b) + (c) < (c))) //----------------------------------------------------------------------------- // // Liberally lifted from https://github.com/dcleblanc/SafeInt and modified. // // Modified to track an overflow bit instead of throwing exceptions. In most // cases the Visual C++ optimizer (Whidbey beta1 - v14.00.40607) is able to // optimize the bool away completely. // Note that using a sentinal value (IntMax for example) to represent overflow // actually results in poorer code-gen. // // This has also been simplified significantly to remove functionality we // don't currently want (division, implicit conversions, many additional operators etc.) // // Example: // unsafe: UINT32 bufSize = headerSize + elementCount * sizeof(void*); // becomes: // S_UINT32 bufSize = S_UINT32(headerSize) + S_UINT32(elementCount) * // S_UINT32( sizeof(void*) ); // if( bufSize.IsOverflow() ) { } // else { use bufSize.Value() } // or: // UINT32 tmp, bufSize; // if( !ClrSafeInt::multiply( elementCount, sizeof(void*), tmp ) || // !ClrSafeInt::addition( tmp, headerSize, bufSize ) ) // { } // else { use bufSize } // //----------------------------------------------------------------------------- // TODO: Any way to prevent unintended instantiations? This is only designed to // work with unsigned integral types (signed types will work but we probably // don't need signed support). template class ClrSafeInt { public: // Default constructor - 0 value by default ClrSafeInt() : m_value(0), m_overflow(false) COMMA_INDEBUG( m_checkedOverflow( false ) ) { } // Value constructor // This is explicit because otherwise it would be harder to // differentiate between checked and unchecked usage of an operator. // I.e. si + x + y vs. si + ( x + y ) // // Set the m_checkedOverflow bit to true since this is being initialized // with a constant value and we know that it is valid. A scenario in // which this is useful is when an overflow causes a fallback value to // be used: // if (val.IsOverflow()) // val = ClrSafeInt(some_value); explicit ClrSafeInt( T v ) : m_value(v), m_overflow(false) COMMA_INDEBUG( m_checkedOverflow( true ) ) { } template explicit ClrSafeInt(U u) : m_value(0), m_overflow(false) COMMA_INDEBUG( m_checkedOverflow( false ) ) { if (!FitsIn(u)) { m_overflow = true; } else { m_value = (T)u; } } template ClrSafeInt(ClrSafeInt u) : m_value(0), m_overflow(false) COMMA_INDEBUG( m_checkedOverflow( false ) ) { if (u.IsOverflow() || !FitsIn(u.Value())) { m_overflow = true; } else { m_value = (T)u.Value(); } } // Note: compiler-generated copy constructor and assignment operator // are correct for our purposes. // Note: The MS compiler will sometimes silently perform value-destroying // conversions when calling the operators below. // Eg. "ClrSafeInt s(0); s += int(-1);" will result in s // having the value 0xffffffff without generating a compile-time warning. // Narrowing conversions are generally level 4 warnings so may or may not // be visible. // // In the original SafeInt class, all operators have an // additional overload that takes an arbitrary type U and then safe // conversions are performed (resulting in overflow whenever the value // cannot be preserved). // We could do the same thing, but currently don't because: // - we don't believe there are common cases where this would result in a // security hole. // - the extra complexity isn't worth the benefits // - it would prevent compiler warnings in the cases we do get warnings for. // true if there has been an overflow leading up to the creation of this // value, false otherwise. // Note that in debug builds we track whether our client called this, // so we should not be calling this method ourselves from within this class. inline bool IsOverflow() const { INDEBUG( m_checkedOverflow = true; ) return m_overflow; } // Get the value of this integer. // Must only be called when IsOverflow()==false. If this is called // on overflow we'll assert in Debug and return 0 in release. inline T Value() const { _ASSERTE_SAFEMATH( m_checkedOverflow ); // Ensure our caller first checked the overflow bit _ASSERTE_SAFEMATH( !m_overflow ); return m_value; } // force the value into the overflow state. inline void SetOverflow() { INDEBUG( this->m_checkedOverflow = false; ) this->m_overflow = true; // incase someone manages to call Value in release mode - should be optimized out this->m_value = 0; } // // OPERATORS // // Addition and multiplication. Only permitted when both sides are explicitly // wrapped inside of a ClrSafeInt and when the types match exactly. // If we permitted a RHS of type 'T', then there would be differences // in correctness between mathematically equivalent expressions such as // "si + x + y" and "si + ( x + y )". Unfortunately, not permitting this // makes expressions involving constants tedius and ugly since the constants // must be wrapped in ClrSafeInt instances. If we become confident that // our tools (PreFast) will catch all integer overflows, then we can probably // safely add this. inline ClrSafeInt operator +(ClrSafeInt rhs) const { ClrSafeInt result; // value is initialized to 0 if( this->m_overflow || rhs.m_overflow || !addition( this->m_value, rhs.m_value, result.m_value ) ) { result.m_overflow = true; } return result; } inline ClrSafeInt operator -(ClrSafeInt rhs) const { ClrSafeInt result; // value is initialized to 0 if( this->m_overflow || rhs.m_overflow || !subtraction( this->m_value, rhs.m_value, result.m_value ) ) { result.m_overflow = true; } return result; } inline ClrSafeInt operator *(ClrSafeInt rhs) const { ClrSafeInt result; // value is initialized to 0 if( this->m_overflow || rhs.m_overflow || !multiply( this->m_value, rhs.m_value, result.m_value ) ) { result.m_overflow = true; } return result; } // Accumulation operators // Here it's ok to have versions that take a value of type 'T', however we still // don't allow any mixed-type operations. inline ClrSafeInt& operator +=(ClrSafeInt rhs) { INDEBUG( this->m_checkedOverflow = false; ) if( this->m_overflow || rhs.m_overflow || !ClrSafeInt::addition( this->m_value, rhs.m_value, this->m_value ) ) { this->SetOverflow(); } return *this; } inline ClrSafeInt& operator +=(T rhs) { INDEBUG( this->m_checkedOverflow = false; ) if( this->m_overflow || !ClrSafeInt::addition( this->m_value, rhs, this->m_value ) ) { this->SetOverflow(); } return *this; } inline ClrSafeInt& operator *=(ClrSafeInt rhs) { INDEBUG( this->m_checkedOverflow = false; ) if( this->m_overflow || rhs.m_overflow || !ClrSafeInt::multiply( this->m_value, rhs.m_value, this->m_value ) ) { this->SetOverflow(); } return *this; } inline ClrSafeInt& operator *=(T rhs) { INDEBUG( this->m_checkedOverflow = false; ) if( this->m_overflow || !ClrSafeInt::multiply( this->m_value, rhs, this->m_value ) ) { this->SetOverflow(); } return *this; } // // STATIC HELPER METHODS //these compile down to something as efficient as macros and allow run-time testing //of type by the developer // template static bool IsSigned(U) { return std::is_signed::value; } static bool IsSigned() { return std::is_signed::value; } static bool IsMixedSign(T lhs, T rhs) { return ((lhs ^ rhs) < 0); } static unsigned char BitCount(){return (sizeof(T)*8);} static bool Is64Bit(){return sizeof(T) == 8;} static bool Is32Bit(){return sizeof(T) == 4;} static bool Is16Bit(){return sizeof(T) == 2;} static bool Is8Bit(){return sizeof(T) == 1;} //both of the following should optimize away static T MaxInt() { if(IsSigned()) { return (T)~((T)1 << (BitCount()-1)); } //else return (T)(~(T)0); } static T MinInt() { if(IsSigned()) { return (T)((T)1 << (BitCount()-1)); } else { return ((T)0); } } // Align a value up to the nearest boundary, which must be a power of 2 inline void AlignUp( T alignment ) { _ASSERTE_SAFEMATH( IsPowerOf2( alignment ) ); *this += (alignment - 1); if( !this->m_overflow ) { m_value &= ~(alignment - 1); } } // // Arithmetic implementation functions // //note - this looks complex, but most of the conditionals //are constant and optimize away //for example, a signed 64-bit check collapses to: /* if(lhs == 0 || rhs == 0) return 0; if(MaxInt()/+lhs < +rhs) { //overflow throw SafeIntException(ERROR_ARITHMETIC_OVERFLOW); } //ok return lhs * rhs; Which ought to inline nicely */ // Returns true if safe, false for overflow. static bool multiply(T lhs, T rhs, T &result) { if(Is64Bit()) { //fast track this one - and avoid DIV_0 below if(lhs == 0 || rhs == 0) { result = 0; return true; } //we're 64 bit - slow, but the only way to do it if(IsSigned()) { if(!IsMixedSign(lhs, rhs)) { //both positive or both negative //result will be positive, check for lhs * rhs > MaxInt if(lhs > 0) { //both positive if(MaxInt()/lhs < rhs) { //overflow return false; } } else { //both negative //comparison gets tricky unless we force it to positive //EXCEPT that -MinInt is undefined - can't be done //And MinInt always has a greater magnitude than MaxInt if(lhs == MinInt() || rhs == MinInt()) { //overflow return false; } #ifdef _MSC_VER #pragma warning(push) #pragma warning( disable : 4146 ) // unary minus applied to unsigned is still unsigned #endif if(MaxInt()/(-lhs) < (-rhs) ) { //overflow return false; } #ifdef _MSC_VER #pragma warning(pop) #endif } } else { //mixed sign - this case is difficult //test case is lhs * rhs < MinInt => overflow //if lhs < 0 (implies rhs > 0), //lhs < MinInt/rhs is the correct test //else if lhs > 0 //rhs < MinInt/lhs is the correct test //avoid dividing MinInt by a negative number, //because MinInt/-1 is a corner case if(lhs < 0) { if(lhs < MinInt()/rhs) { //overflow return false; } } else { if(rhs < MinInt()/lhs) { //overflow return false; } } } //ok result = lhs * rhs; return true; } else { //unsigned, easy case if(MaxInt()/lhs < rhs) { //overflow return false; } //ok result = lhs * rhs; return true; } } else if(Is32Bit()) { //we're 32-bit if(IsSigned()) { INT64 tmp = (INT64)lhs * (INT64)rhs; //upper 33 bits must be the same //most common case is likely that both are positive - test first if( (tmp & 0xffffffff80000000LL) == 0 || (tmp & 0xffffffff80000000LL) == 0xffffffff80000000LL) { //this is OK result = (T)tmp; return true; } //overflow return false; } else { UINT64 tmp = (UINT64)lhs * (UINT64)rhs; if (tmp & 0xffffffff00000000ULL) //overflow { //overflow return false; } result = (T)tmp; return true; } } else if(Is16Bit()) { //16-bit if(IsSigned()) { INT32 tmp = (INT32)lhs * (INT32)rhs; //upper 17 bits must be the same //most common case is likely that both are positive - test first if( (tmp & 0xffff8000) == 0 || (tmp & 0xffff8000) == 0xffff8000) { //this is OK result = (T)tmp; return true; } //overflow return false; } else { UINT32 tmp = (UINT32)lhs * (UINT32)rhs; if (tmp & 0xffff0000) //overflow { return false; } result = (T)tmp; return true; } } else //8-bit { _ASSERTE_SAFEMATH(Is8Bit()); if(IsSigned()) { INT16 tmp = (INT16)lhs * (INT16)rhs; //upper 9 bits must be the same //most common case is likely that both are positive - test first if( (tmp & 0xff80) == 0 || (tmp & 0xff80) == 0xff80) { //this is OK result = (T)tmp; return true; } //overflow return false; } else { UINT16 tmp = ((UINT16)lhs) * ((UINT16)rhs); if (tmp & 0xff00) //overflow { return false; } result = (T)tmp; return true; } } } // Returns true if safe, false on overflow static inline bool addition(T lhs, T rhs, T &result) { if(IsSigned()) { //test for +/- combo if(!IsMixedSign(lhs, rhs)) { //either two negatives, or 2 positives #ifdef __GNUC__ // Workaround for GCC warning: "comparison is always // false due to limited range of data type." if (!(rhs == 0 || rhs > 0)) #else if(rhs < 0) #endif // __GNUC__ else { //two negatives if(lhs < (T)(MinInt() - rhs)) //remember rhs < 0 { return false; } //ok } else { //two positives if((T)(MaxInt() - lhs) < rhs) { return false; } //OK } } //else overflow not possible result = lhs + rhs; return true; } else //unsigned { if((T)(MaxInt() - lhs) < rhs) { return false; } result = lhs + rhs; return true; } } // Returns true if safe, false on overflow static inline bool subtraction(T lhs, T rhs, T& result) { T tmp = lhs - rhs; if(IsSigned()) { if(IsMixedSign(lhs, rhs)) //test for +/- combo { //mixed positive and negative //two cases - +X - -Y => X + Y - check for overflow against MaxInt() // -X - +Y - check for overflow against MinInt() if(lhs >= 0) //first case { //test is X - -Y > MaxInt() //equivalent to X > MaxInt() - |Y| //Y == MinInt() creates special case //Even 0 - MinInt() can't be done //note that the special case collapses into the general case, due to the fact //MaxInt() - MinInt() == -1, and lhs is non-negative //OR tmp should be GTE lhs // old test - leave in for clarity //if(lhs > (T)(MaxInt() + rhs)) //remember that rhs is negative if(tmp < lhs) { return false; } //fall through to return value } else { //second case //test is -X - Y < MinInt() //or -X < MinInt() + Y //we do not have the same issues because abs(MinInt()) > MaxInt() //tmp should be LTE lhs //if(lhs < (T)(MinInt() + rhs)) // old test - leave in for clarity if(tmp > lhs) { return false; } //fall through to return value } } // else //both negative, or both positive //no possible overflow result = tmp; return true; } else { //easy unsigned case if(lhs < rhs) { return false; } result = tmp; return true; } } private: // Private helper functions // Note that's it occasionally handy to call the arithmetic implementation // functions above so we leave them public, even though we almost always use // the operators instead. // True if the specified value is a power of two. static inline bool IsPowerOf2( T x ) { // find the smallest power of 2 >= x T testPow = 1; while( testPow < x ) { testPow = testPow << 1; // advance to next power of 2 if( testPow <= 0 ) { return false; // overflow } } return( testPow == x ); } // // Instance data // // The integer value this instance represents, or 0 if overflow. T m_value; // True if overflow has been reached. Once this is set, it cannot be cleared. bool m_overflow; // In debug builds we verify that our caller checked the overflow bit before // accessing the value. This flag is cleared on initialization, and whenever // m_value or m_overflow changes, and set only when IsOverflow // is called. INDEBUG( mutable bool m_checkedOverflow; ) }; // Allows creation of a ClrSafeInt corresponding to the type of the argument. template ClrSafeInt AsClrSafeInt(T t) { return ClrSafeInt(t); } template ClrSafeInt AsClrSafeInt(ClrSafeInt t) { return t; } // Convenience safe-integer types. Currently these are the only types // we are using ClrSafeInt with. We may want to add others. // These type names are based on our standardized names in clrtypes.h typedef ClrSafeInt S_UINT8; typedef ClrSafeInt S_UINT16; //typedef ClrSafeInt S_UINT32; #define S_UINT32 ClrSafeInt typedef ClrSafeInt S_UINT64; typedef ClrSafeInt S_SIZE_T; #endif // SAFEMATH_H_ ProcDump-for-Linux-2.2/profiler/inc/sal.h000066400000000000000000006312031447614355600203360ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. /*** *sal.h - markers for documenting the semantics of APIs * * *Purpose: * sal.h provides a set of annotations to describe how a function uses its * parameters - the assumptions it makes about them, and the guarantees it makes * upon finishing. ****/ #pragma once /*========================================================================== The comments in this file are intended to give basic understanding of the usage of SAL, the Microsoft Source Code Annotation Language. For more details, please see http://go.microsoft.com/fwlink/?LinkID=242134 The macros are defined in 3 layers, plus the structural set: _In_/_Out_/_Ret_ Layer: ---------------------- This layer provides the highest abstraction and its macros should be used in most cases. These macros typically start with: _In_ : input parameter to a function, unmodified by called function _Out_ : output parameter, written to by called function, pointed-to location not expected to be initialized prior to call _Outptr_ : like _Out_ when returned variable is a pointer type (so param is pointer-to-pointer type). Called function provides/allocated space. _Outref_ : like _Outptr_, except param is reference-to-pointer type. _Inout_ : inout parameter, read from and potentially modified by called function. _Ret_ : for return values _Field_ : class/struct field invariants For common usage, this class of SAL provides the most concise annotations. Note that _In_/_Out_/_Inout_/_Outptr_ annotations are designed to be used with a parameter target. Using them with _At_ to specify non-parameter targets may yield unexpected results. This layer also includes a number of other properties that can be specified to extend the ability of code analysis, most notably: -- Designating parameters as format strings for printf/scanf/scanf_s -- Requesting stricter type checking for C enum parameters _Pre_/_Post_ Layer: ------------------ The macros of this layer only should be used when there is no suitable macro in the _In_/_Out_ layer. Its macros start with _Pre_ or _Post_. This layer provides the most flexibility for annotations. Implementation Abstraction Layer: -------------------------------- Macros from this layer should never be used directly. The layer only exists to hide the implementation of the annotation macros. Structural Layer: ---------------- These annotations, like _At_ and _When_, are used with annotations from any of the other layers as modifiers, indicating exactly when and where the annotations apply. Common syntactic conventions: ---------------------------- Usage: ----- _In_, _Out_, _Inout_, _Pre_, _Post_, are for formal parameters. _Ret_, _Deref_ret_ must be used for return values. Nullness: -------- If the parameter can be NULL as a precondition to the function, the annotation contains _opt. If the macro does not contain '_opt' the parameter cannot be NULL. If an out/inout parameter returns a null pointer as a postcondition, this is indicated by _Ret_maybenull_ or _result_maybenull_. If the macro is not of this form, then the result will not be NULL as a postcondition. _Outptr_ - output value is not NULL _Outptr_result_maybenull_ - output value might be NULL String Type: ----------- _z: NullTerminated string for _In_ parameters the buffer must have the specified stringtype before the call for _Out_ parameters the buffer must have the specified stringtype after the call for _Inout_ parameters both conditions apply Extent Syntax: ------------- Buffer sizes are expressed as element counts, unless the macro explicitly contains _byte_ or _bytes_. Some annotations specify two buffer sizes, in which case the second is used to indicate how much of the buffer is valid as a postcondition. This table outlines the precondition buffer allocation size, precondition number of valid elements, postcondition allocation size, and postcondition number of valid elements for representative buffer size annotations: Pre | Pre | Post | Post alloc | valid | alloc | valid Annotation elems | elems | elems | elems ---------- ------------------------------------ _In_reads_(s) s | s | s | s _Inout_updates_(s) s | s | s | s _Inout_updates_to_(s,c) s | s | s | c _Out_writes_(s) s | 0 | s | s _Out_writes_to_(s,c) s | 0 | s | c _Outptr_result_buffer_(s) ? | ? | s | s _Outptr_result_buffer_to_(s,c) ? | ? | s | c For the _Outptr_ annotations, the buffer in question is at one level of dereference. The called function is responsible for supplying the buffer. Success and failure: ------------------- The SAL concept of success allows functions to define expressions that can be tested by the caller, which if it evaluates to non-zero, indicates the function succeeded, which means that its postconditions are guaranteed to hold. Otherwise, if the expression evaluates to zero, the function is considered to have failed, and the postconditions are not guaranteed. The success criteria can be specified with the _Success_(expr) annotation: _Success_(return != FALSE) BOOL PathCanonicalizeA(_Out_writes_(MAX_PATH) LPSTR pszBuf, LPCSTR pszPath) : pszBuf is only guaranteed to be NULL-terminated when TRUE is returned, and FALSE indiates failure. In common practice, callers check for zero vs. non-zero returns, so it is preferable to express the success criteria in terms of zero/non-zero, not checked for exactly TRUE. Functions can specify that some postconditions will still hold, even when the function fails, using _On_failure_(anno-list), or postconditions that hold regardless of success or failure using _Always_(anno-list). The annotation _Return_type_success_(expr) may be used with a typedef to give a default _Success_ criteria to all functions returning that type. This is the case for common Windows API status types, including HRESULT and NTSTATUS. This may be overridden on a per-function basis by specifying a _Success_ annotation locally. ============================================================================*/ #define __ATTR_SAL #ifndef _SAL_VERSION /*IFSTRIP=IGN*/ #define _SAL_VERSION 20 #endif #ifdef _PREFAST_ // [ // choose attribute or __declspec implementation #ifndef _USE_DECLSPECS_FOR_SAL // [ #define _USE_DECLSPECS_FOR_SAL 1 #endif // ] #if _USE_DECLSPECS_FOR_SAL // [ #undef _USE_ATTRIBUTES_FOR_SAL #define _USE_ATTRIBUTES_FOR_SAL 0 #elif !defined(_USE_ATTRIBUTES_FOR_SAL) // ][ #if _MSC_VER >= 1400 /*IFSTRIP=IGN*/ // [ #define _USE_ATTRIBUTES_FOR_SAL 1 #else // ][ #define _USE_ATTRIBUTES_FOR_SAL 0 #endif // ] #endif // ] #if !_USE_DECLSPECS_FOR_SAL // [ #if !_USE_ATTRIBUTES_FOR_SAL // [ #if _MSC_VER >= 1400 /*IFSTRIP=IGN*/ // [ #undef _USE_ATTRIBUTES_FOR_SAL #define _USE_ATTRIBUTES_FOR_SAL 1 #else // ][ #undef _USE_DECLSPECS_FOR_SAL #define _USE_DECLSPECS_FOR_SAL 1 #endif // ] #endif // ] #endif // ] #else // Disable expansion of SAL macros in non-Prefast mode to // improve compiler throughput. #ifndef _USE_DECLSPECS_FOR_SAL // [ #define _USE_DECLSPECS_FOR_SAL 0 #endif // ] #ifndef _USE_ATTRIBUTES_FOR_SAL // [ #define _USE_ATTRIBUTES_FOR_SAL 0 #endif // ] #endif // ] // safeguard for MIDL and RC builds #if _USE_DECLSPECS_FOR_SAL && ( defined( MIDL_PASS ) || defined(__midl) || defined(RC_INVOKED) || !defined(_PREFAST_) ) /*IFSTRIP=IGN*/ // [ #undef _USE_DECLSPECS_FOR_SAL #define _USE_DECLSPECS_FOR_SAL 0 #endif // ] #if _USE_ATTRIBUTES_FOR_SAL && ( !defined(_MSC_EXTENSIONS) || defined( MIDL_PASS ) || defined(__midl) || defined(RC_INVOKED) ) /*IFSTRIP=IGN*/ // [ #undef _USE_ATTRIBUTES_FOR_SAL #define _USE_ATTRIBUTES_FOR_SAL 0 #endif // ] #if _USE_DECLSPECS_FOR_SAL || _USE_ATTRIBUTES_FOR_SAL // Special enum type for Y/N/M enum __SAL_YesNo {_SAL_notpresent, _SAL_no, _SAL_maybe, _SAL_yes, _SAL_default}; #endif #if defined(BUILD_WINDOWS) && !_USE_ATTRIBUTES_FOR_SAL /*IFSTRIP=IGN*/ #define _SAL1_Source_(Name, args, annotes) _SA_annotes3(SAL_name, #Name, "", "1") _GrouP_(annotes _SAL_nop_impl_) #define _SAL1_1_Source_(Name, args, annotes) _SA_annotes3(SAL_name, #Name, "", "1.1") _GrouP_(annotes _SAL_nop_impl_) #define _SAL1_2_Source_(Name, args, annotes) _SA_annotes3(SAL_name, #Name, "", "1.2") _GrouP_(annotes _SAL_nop_impl_) #define _SAL2_Source_(Name, args, annotes) _SA_annotes3(SAL_name, #Name, "", "2") _GrouP_(annotes _SAL_nop_impl_) #else #define _SAL1_Source_(Name, args, annotes) _SA_annotes3(SAL_name, #Name, "", "1") _Group_(annotes _SAL_nop_impl_) #define _SAL1_1_Source_(Name, args, annotes) _SA_annotes3(SAL_name, #Name, "", "1.1") _Group_(annotes _SAL_nop_impl_) #define _SAL1_2_Source_(Name, args, annotes) _SA_annotes3(SAL_name, #Name, "", "1.2") _Group_(annotes _SAL_nop_impl_) #define _SAL2_Source_(Name, args, annotes) _SA_annotes3(SAL_name, #Name, "", "2") _Group_(annotes _SAL_nop_impl_) #endif //============================================================================ // Structural SAL: // These annotations modify the use of other annotations. They may // express the annotation target (i.e. what parameter/field the annotation // applies to) or the condition under which the annotation is applicable. //============================================================================ // _At_(target, annos) specifies that the annotations listed in 'annos' is to // be applied to 'target' rather than to the identifier which is the current // lexical target. #define _At_(target, annos) _At_impl_(target, annos _SAL_nop_impl_) // _At_buffer_(target, iter, bound, annos) is similar to _At_, except that // target names a buffer, and each annotation in annos is applied to each // element of target up to bound, with the variable named in iter usable // by the annotations to refer to relevant offsets within target. #define _At_buffer_(target, iter, bound, annos) _At_buffer_impl_(target, iter, bound, annos _SAL_nop_impl_) // _When_(expr, annos) specifies that the annotations listed in 'annos' only // apply when 'expr' evaluates to non-zero. #define _When_(expr, annos) _When_impl_(expr, annos _SAL_nop_impl_) #define _Group_(annos) _Group_impl_(annos _SAL_nop_impl_) #define _GrouP_(annos) _GrouP_impl_(annos _SAL_nop_impl_) // indicates whether normal post conditions apply to a function #define _Success_(expr) _SAL2_Source_(_Success_, (expr), _Success_impl_(expr)) // indicates whether post conditions apply to a function returning // the type that this annotation is applied to #define _Return_type_success_(expr) _SAL2_Source_(_Return_type_success_, (expr), _Success_impl_(expr)) // Establish postconditions that apply only if the function does not succeed #define _On_failure_(annos) _On_failure_impl_(annos _SAL_nop_impl_) // Establish postconditions that apply in both success and failure cases. // Only applicable with functions that have _Success_ or _Return_type_succss_. #define _Always_(annos) _Always_impl_(annos _SAL_nop_impl_) // Usable on a function defintion. Asserts that a function declaration is // in scope, and its annotations are to be used. There are no other annotations // allowed on the function definition. #define _Use_decl_annotations_ _Use_decl_anno_impl_ // _Notref_ may precede a _Deref_ or "real" annotation, and removes one // level of dereference if the parameter is a C++ reference (&). If the // net deref on a "real" annotation is negative, it is simply discarded. #define _Notref_ _Notref_impl_ // Annotations for defensive programming styles. #define _Pre_defensive_ _SA_annotes0(SAL_pre_defensive) #define _Post_defensive_ _SA_annotes0(SAL_post_defensive) #define _In_defensive_(annotes) _Pre_defensive_ _Group_(annotes) #define _Out_defensive_(annotes) _Post_defensive_ _Group_(annotes) #define _Inout_defensive_(annotes) _Pre_defensive_ _Post_defensive_ _Group_(annotes) //============================================================================ // _In_\_Out_ Layer: //============================================================================ // Reserved pointer parameters, must always be NULL. #define _Reserved_ _SAL2_Source_(_Reserved_, (), _Pre1_impl_(__null_impl)) // _Const_ allows specification that any namable memory location is considered // readonly for a given call. #define _Const_ _SAL2_Source_(_Const_, (), _Pre1_impl_(__readaccess_impl_notref)) // Input parameters -------------------------- // _In_ - Annotations for parameters where data is passed into the function, but not modified. // _In_ by itself can be used with non-pointer types (although it is redundant). // e.g. void SetPoint( _In_ const POINT* pPT ); #define _In_ _SAL2_Source_(_In_, (), _Pre1_impl_(__notnull_impl_notref) _Pre_valid_impl_ _Deref_pre1_impl_(__readaccess_impl_notref)) #define _In_opt_ _SAL2_Source_(_In_opt_, (), _Pre1_impl_(__maybenull_impl_notref) _Pre_valid_impl_ _Deref_pre_readonly_) // nullterminated 'in' parameters. // e.g. void CopyStr( _In_z_ const char* szFrom, _Out_z_cap_(cchTo) char* szTo, size_t cchTo ); #define _In_z_ _SAL2_Source_(_In_z_, (), _In_ _Pre1_impl_(__zterm_impl)) #define _In_opt_z_ _SAL2_Source_(_In_opt_z_, (), _In_opt_ _Pre1_impl_(__zterm_impl)) // 'input' buffers with given size #define _In_reads_(size) _SAL2_Source_(_In_reads_, (size), _Pre_count_(size) _Deref_pre_readonly_) #define _In_reads_opt_(size) _SAL2_Source_(_In_reads_opt_, (size), _Pre_opt_count_(size) _Deref_pre_readonly_) #define _In_reads_bytes_(size) _SAL2_Source_(_In_reads_bytes_, (size), _Pre_bytecount_(size) _Deref_pre_readonly_) #define _In_reads_bytes_opt_(size) _SAL2_Source_(_In_reads_bytes_opt_, (size), _Pre_opt_bytecount_(size) _Deref_pre_readonly_) #define _In_reads_z_(size) _SAL2_Source_(_In_reads_z_, (size), _In_reads_(size) _Pre_z_) #define _In_reads_opt_z_(size) _SAL2_Source_(_In_reads_opt_z_, (size), _Pre_opt_count_(size) _Deref_pre_readonly_ _Pre_opt_z_) #define _In_reads_or_z_(size) _SAL2_Source_(_In_reads_or_z_, (size), _In_ _When_(_String_length_(_Curr_) < (size), _Pre_z_) _When_(_String_length_(_Curr_) >= (size), _Pre1_impl_(__count_impl(size)))) #define _In_reads_or_z_opt_(size) _SAL2_Source_(_In_reads_or_z_opt_, (size), _In_opt_ _When_(_String_length_(_Curr_) < (size), _Pre_z_) _When_(_String_length_(_Curr_) >= (size), _Pre1_impl_(__count_impl(size)))) // 'input' buffers valid to the given end pointer #define _In_reads_to_ptr_(ptr) _SAL2_Source_(_In_reads_to_ptr_, (ptr), _Pre_ptrdiff_count_(ptr) _Deref_pre_readonly_) #define _In_reads_to_ptr_opt_(ptr) _SAL2_Source_(_In_reads_to_ptr_opt_, (ptr), _Pre_opt_ptrdiff_count_(ptr) _Deref_pre_readonly_) #define _In_reads_to_ptr_z_(ptr) _SAL2_Source_(_In_reads_to_ptr_z_, (ptr), _In_reads_to_ptr_(ptr) _Pre_z_) #define _In_reads_to_ptr_opt_z_(ptr) _SAL2_Source_(_In_reads_to_ptr_opt_z_, (ptr), _Pre_opt_ptrdiff_count_(ptr) _Deref_pre_readonly_ _Pre_opt_z_) // Output parameters -------------------------- // _Out_ - Annotations for pointer or reference parameters where data passed back to the caller. // These are mostly used where the pointer/reference is to a non-pointer type. // _Outptr_/_Outref) (see below) are typically used to return pointers via parameters. // e.g. void GetPoint( _Out_ POINT* pPT ); #define _Out_ _SAL2_Source_(_Out_, (), _Out_impl_) #define _Out_opt_ _SAL2_Source_(_Out_opt_, (), _Out_opt_impl_) #define _Out_writes_(size) _SAL2_Source_(_Out_writes_, (size), _Pre_cap_(size) _Post_valid_impl_) #define _Out_writes_opt_(size) _SAL2_Source_(_Out_writes_opt_, (size), _Pre_opt_cap_(size) _Post_valid_impl_) #define _Out_writes_bytes_(size) _SAL2_Source_(_Out_writes_bytes_, (size), _Pre_bytecap_(size) _Post_valid_impl_) #define _Out_writes_bytes_opt_(size) _SAL2_Source_(_Out_writes_bytes_opt_, (size), _Pre_opt_bytecap_(size) _Post_valid_impl_) #define _Out_writes_z_(size) _SAL2_Source_(_Out_writes_z_, (size), _Pre_cap_(size) _Post_valid_impl_ _Post_z_) #define _Out_writes_opt_z_(size) _SAL2_Source_(_Out_writes_opt_z_, (size), _Pre_opt_cap_(size) _Post_valid_impl_ _Post_z_) #define _Out_writes_to_(size,count) _SAL2_Source_(_Out_writes_to_, (size,count), _Pre_cap_(size) _Post_valid_impl_ _Post_count_(count)) #define _Out_writes_to_opt_(size,count) _SAL2_Source_(_Out_writes_to_opt_, (size,count), _Pre_opt_cap_(size) _Post_valid_impl_ _Post_count_(count)) #define _Out_writes_all_(size) _SAL2_Source_(_Out_writes_all_, (size), _Out_writes_to_(_Old_(size), _Old_(size))) #define _Out_writes_all_opt_(size) _SAL2_Source_(_Out_writes_all_opt_, (size), _Out_writes_to_opt_(_Old_(size), _Old_(size))) #define _Out_writes_bytes_to_(size,count) _SAL2_Source_(_Out_writes_bytes_to_, (size,count), _Pre_bytecap_(size) _Post_valid_impl_ _Post_bytecount_(count)) #define _Out_writes_bytes_to_opt_(size,count) _SAL2_Source_(_Out_writes_bytes_to_opt_, (size,count), _Pre_opt_bytecap_(size) _Post_valid_impl_ _Post_bytecount_(count)) #define _Out_writes_bytes_all_(size) _SAL2_Source_(_Out_writes_bytes_all_, (size), _Out_writes_bytes_to_(_Old_(size), _Old_(size))) #define _Out_writes_bytes_all_opt_(size) _SAL2_Source_(_Out_writes_bytes_all_opt_, (size), _Out_writes_bytes_to_opt_(_Old_(size), _Old_(size))) #define _Out_writes_to_ptr_(ptr) _SAL2_Source_(_Out_writes_to_ptr_, (ptr), _Pre_ptrdiff_cap_(ptr) _Post_valid_impl_) #define _Out_writes_to_ptr_opt_(ptr) _SAL2_Source_(_Out_writes_to_ptr_opt_, (ptr), _Pre_opt_ptrdiff_cap_(ptr) _Post_valid_impl_) #define _Out_writes_to_ptr_z_(ptr) _SAL2_Source_(_Out_writes_to_ptr_z_, (ptr), _Pre_ptrdiff_cap_(ptr) _Post_valid_impl_ Post_z_) #define _Out_writes_to_ptr_opt_z_(ptr) _SAL2_Source_(_Out_writes_to_ptr_opt_z_, (ptr), _Pre_opt_ptrdiff_cap_(ptr) _Post_valid_impl_ Post_z_) // Inout parameters ---------------------------- // _Inout_ - Annotations for pointer or reference parameters where data is passed in and // potentially modified. // void ModifyPoint( _Inout_ POINT* pPT ); // void ModifyPointByRef( _Inout_ POINT& pPT ); #define _Inout_ _SAL2_Source_(_Inout_, (), _Prepost_valid_) #define _Inout_opt_ _SAL2_Source_(_Inout_opt_, (), _Prepost_opt_valid_) // For modifying string buffers // void toupper( _Inout_z_ char* sz ); #define _Inout_z_ _SAL2_Source_(_Inout_z_, (), _Prepost_z_) #define _Inout_opt_z_ _SAL2_Source_(_Inout_opt_z_, (), _Prepost_opt_z_) // For modifying buffers with explicit element size #define _Inout_updates_(size) _SAL2_Source_(_Inout_updates_, (size), _Pre_cap_(size) _Pre_valid_impl_ _Post_valid_impl_) #define _Inout_updates_opt_(size) _SAL2_Source_(_Inout_updates_opt_, (size), _Pre_opt_cap_(size) _Pre_valid_impl_ _Post_valid_impl_) #define _Inout_updates_z_(size) _SAL2_Source_(_Inout_updates_z_, (size), _Pre_cap_(size) _Pre_valid_impl_ _Post_valid_impl_ _Pre1_impl_(__zterm_impl) _Post1_impl_(__zterm_impl)) #define _Inout_updates_opt_z_(size) _SAL2_Source_(_Inout_updates_opt_z_, (size), _Pre_opt_cap_(size) _Pre_valid_impl_ _Post_valid_impl_ _Pre1_impl_(__zterm_impl) _Post1_impl_(__zterm_impl)) #define _Inout_updates_to_(size,count) _SAL2_Source_(_Inout_updates_to_, (size,count), _Out_writes_to_(size,count) _Pre_valid_impl_ _Pre1_impl_(__count_impl(count))) #define _Inout_updates_to_opt_(size,count) _SAL2_Source_(_Inout_updates_to_opt_, (size,count), _Out_writes_to_opt_(size,count) _Pre_valid_impl_ _Pre1_impl_(__count_impl(count))) #define _Inout_updates_all_(size) _SAL2_Source_(_Inout_updates_all_, (size), _Inout_updates_to_(_Old_(size), _Old_(size))) #define _Inout_updates_all_opt_(size) _SAL2_Source_(_Inout_updates_all_opt_, (size), _Inout_updates_to_opt_(_Old_(size), _Old_(size))) // For modifying buffers with explicit byte size #define _Inout_updates_bytes_(size) _SAL2_Source_(_Inout_updates_bytes_, (size), _Pre_bytecap_(size) _Pre_valid_impl_ _Post_valid_impl_) #define _Inout_updates_bytes_opt_(size) _SAL2_Source_(_Inout_updates_bytes_opt_, (size), _Pre_opt_bytecap_(size) _Pre_valid_impl_ _Post_valid_impl_) #define _Inout_updates_bytes_to_(size,count) _SAL2_Source_(_Inout_updates_bytes_to_, (size,count), _Out_writes_bytes_to_(size,count) _Pre_valid_impl_ _Pre1_impl_(__bytecount_impl(count))) #define _Inout_updates_bytes_to_opt_(size,count) _SAL2_Source_(_Inout_updates_bytes_to_opt_, (size,count), _Out_writes_bytes_to_opt_(size,count) _Pre_valid_impl_ _Pre1_impl_(__bytecount_impl(count))) #define _Inout_updates_bytes_all_(size) _SAL2_Source_(_Inout_updates_bytes_all_, (size), _Inout_updates_bytes_to_(_Old_(size), _Old_(size))) #define _Inout_updates_bytes_all_opt_(size) _SAL2_Source_(_Inout_updates_bytes_all_opt_, (size), _Inout_updates_bytes_to_opt_(_Old_(size), _Old_(size))) // Pointer to pointer parameters ------------------------- // _Outptr_ - Annotations for output params returning pointers // These describe parameters where the called function provides the buffer: // HRESULT SHStrDupW(_In_ LPCWSTR psz, _Outptr_ LPWSTR *ppwsz); // The caller passes the address of an LPWSTR variable as ppwsz, and SHStrDupW allocates // and initializes memory and returns the pointer to the new LPWSTR in *ppwsz. // // _Outptr_opt_ - describes parameters that are allowed to be NULL. // _Outptr_*_result_maybenull_ - describes parameters where the called function might return NULL to the caller. // // Example: // void MyFunc(_Outptr_opt_ int **ppData1, _Outptr_result_maybenull_ int **ppData2); // Callers: // MyFunc(NULL, NULL); // error: parameter 2, ppData2, should not be NULL // MyFunc(&pData1, &pData2); // ok: both non-NULL // if (*pData1 == *pData2) ... // error: pData2 might be NULL after call #define _Outptr_ _SAL2_Source_(_Outptr_, (), _Out_impl_ _Deref_post2_impl_(__notnull_impl_notref, __count_impl(1))) #define _Outptr_result_maybenull_ _SAL2_Source_(_Outptr_result_maybenull_, (), _Out_impl_ _Deref_post2_impl_(__maybenull_impl_notref, __count_impl(1))) #define _Outptr_opt_ _SAL2_Source_(_Outptr_opt_, (), _Out_opt_impl_ _Deref_post2_impl_(__notnull_impl_notref, __count_impl(1))) #define _Outptr_opt_result_maybenull_ _SAL2_Source_(_Outptr_opt_result_maybenull_, (), _Out_opt_impl_ _Deref_post2_impl_(__maybenull_impl_notref, __count_impl(1))) // Annotations for _Outptr_ parameters returning pointers to null terminated strings. #define _Outptr_result_z_ _SAL2_Source_(_Outptr_result_z_, (), _Out_impl_ _Deref_post_z_) #define _Outptr_opt_result_z_ _SAL2_Source_(_Outptr_opt_result_z_, (), _Out_opt_impl_ _Deref_post_z_) #define _Outptr_result_maybenull_z_ _SAL2_Source_(_Outptr_result_maybenull_z_, (), _Out_impl_ _Deref_post_opt_z_) #define _Outptr_opt_result_maybenull_z_ _SAL2_Source_(_Outptr_opt_result_maybenull_z_, (), _Out_opt_impl_ _Deref_post_opt_z_) // Annotations for _Outptr_ parameters where the output pointer is set to NULL if the function fails. #define _Outptr_result_nullonfailure_ _SAL2_Source_(_Outptr_result_nullonfailure_, (), _Outptr_ _On_failure_(_Deref_post_null_)) #define _Outptr_opt_result_nullonfailure_ _SAL2_Source_(_Outptr_opt_result_nullonfailure_, (), _Outptr_opt_ _On_failure_(_Deref_post_null_)) // Annotations for _Outptr_ parameters which return a pointer to a ref-counted COM object, // following the COM convention of setting the output to NULL on failure. // The current implementation is identical to _Outptr_result_nullonfailure_. // For pointers to types that are not COM objects, _Outptr_result_nullonfailure_ is preferred. #define _COM_Outptr_ _SAL2_Source_(_COM_Outptr_, (), _Outptr_ _On_failure_(_Deref_post_null_)) #define _COM_Outptr_result_maybenull_ _SAL2_Source_(_COM_Outptr_result_maybenull_, (), _Outptr_result_maybenull_ _On_failure_(_Deref_post_null_)) #define _COM_Outptr_opt_ _SAL2_Source_(_COM_Outptr_opt_, (), _Outptr_opt_ _On_failure_(_Deref_post_null_)) #define _COM_Outptr_opt_result_maybenull_ _SAL2_Source_(_COM_Outptr_opt_result_maybenull_, (), _Outptr_opt_result_maybenull_ _On_failure_(_Deref_post_null_)) // Annotations for _Outptr_ parameters returning a pointer to buffer with a specified number of elements/bytes #define _Outptr_result_buffer_(size) _SAL2_Source_(_Outptr_result_buffer_, (size), _Out_impl_ _Deref_post2_impl_(__notnull_impl_notref, __cap_impl(size))) #define _Outptr_opt_result_buffer_(size) _SAL2_Source_(_Outptr_opt_result_buffer_, (size), _Out_opt_impl_ _Deref_post2_impl_(__notnull_impl_notref, __cap_impl(size))) #define _Outptr_result_buffer_to_(size, count) _SAL2_Source_(_Outptr_result_buffer_to_, (size, count), _Out_impl_ _Deref_post3_impl_(__notnull_impl_notref, __cap_impl(size), __count_impl(count))) #define _Outptr_opt_result_buffer_to_(size, count) _SAL2_Source_(_Outptr_opt_result_buffer_to_, (size, count), _Out_opt_impl_ _Deref_post3_impl_(__notnull_impl_notref, __cap_impl(size), __count_impl(count))) #define _Outptr_result_buffer_all_(size) _SAL2_Source_(_Outptr_result_buffer_all_, (size), _Out_impl_ _Deref_post2_impl_(__notnull_impl_notref, __count_impl(size))) #define _Outptr_opt_result_buffer_all_(size) _SAL2_Source_(_Outptr_opt_result_buffer_all_, (size), _Out_opt_impl_ _Deref_post2_impl_(__notnull_impl_notref, __count_impl(size))) #define _Outptr_result_buffer_maybenull_(size) _SAL2_Source_(_Outptr_result_buffer_maybenull_, (size), _Out_impl_ _Deref_post2_impl_(__maybenull_impl_notref, __cap_impl(size))) #define _Outptr_opt_result_buffer_maybenull_(size) _SAL2_Source_(_Outptr_opt_result_buffer_maybenull_, (size), _Out_opt_impl_ _Deref_post2_impl_(__maybenull_impl_notref, __cap_impl(size))) #define _Outptr_result_buffer_to_maybenull_(size, count) _SAL2_Source_(_Outptr_result_buffer_to_maybenull_, (size, count), _Out_impl_ _Deref_post3_impl_(__maybenull_impl_notref, __cap_impl(size), __count_impl(count))) #define _Outptr_opt_result_buffer_to_maybenull_(size, count) _SAL2_Source_(_Outptr_opt_result_buffer_to_maybenull_, (size, count), _Out_opt_impl_ _Deref_post3_impl_(__maybenull_impl_notref, __cap_impl(size), __count_impl(count))) #define _Outptr_result_buffer_all_maybenull_(size) _SAL2_Source_(_Outptr_result_buffer_all_maybenull_, (size), _Out_impl_ _Deref_post2_impl_(__maybenull_impl_notref, __count_impl(size))) #define _Outptr_opt_result_buffer_all_maybenull_(size) _SAL2_Source_(_Outptr_opt_result_buffer_all_maybenull_, (size), _Out_opt_impl_ _Deref_post2_impl_(__maybenull_impl_notref, __count_impl(size))) #define _Outptr_result_bytebuffer_(size) _SAL2_Source_(_Outptr_result_bytebuffer_, (size), _Out_impl_ _Deref_post2_impl_(__notnull_impl_notref, __bytecap_impl(size))) #define _Outptr_opt_result_bytebuffer_(size) _SAL2_Source_(_Outptr_opt_result_bytebuffer_, (size), _Out_opt_impl_ _Deref_post2_impl_(__notnull_impl_notref, __bytecap_impl(size))) #define _Outptr_result_bytebuffer_to_(size, count) _SAL2_Source_(_Outptr_result_bytebuffer_to_, (size, count), _Out_impl_ _Deref_post3_impl_(__notnull_impl_notref, __bytecap_impl(size), __bytecount_impl(count))) #define _Outptr_opt_result_bytebuffer_to_(size, count) _SAL2_Source_(_Outptr_opt_result_bytebuffer_to_, (size, count), _Out_opt_impl_ _Deref_post3_impl_(__notnull_impl_notref, __bytecap_impl(size), __bytecount_impl(count))) #define _Outptr_result_bytebuffer_all_(size) _SAL2_Source_(_Outptr_result_bytebuffer_all_, (size), _Out_impl_ _Deref_post2_impl_(__notnull_impl_notref, __bytecount_impl(size))) #define _Outptr_opt_result_bytebuffer_all_(size) _SAL2_Source_(_Outptr_opt_result_bytebuffer_all_, (size), _Out_opt_impl_ _Deref_post2_impl_(__notnull_impl_notref, __bytecount_impl(size))) #define _Outptr_result_bytebuffer_maybenull_(size) _SAL2_Source_(_Outptr_result_bytebuffer_maybenull_, (size), _Out_impl_ _Deref_post2_impl_(__maybenull_impl_notref, __bytecap_impl(size))) #define _Outptr_opt_result_bytebuffer_maybenull_(size) _SAL2_Source_(_Outptr_opt_result_bytebuffer_maybenull_, (size), _Out_opt_impl_ _Deref_post2_impl_(__maybenull_impl_notref, __bytecap_impl(size))) #define _Outptr_result_bytebuffer_to_maybenull_(size, count) _SAL2_Source_(_Outptr_result_bytebuffer_to_maybenull_, (size, count), _Out_impl_ _Deref_post3_impl_(__maybenull_impl_notref, __bytecap_impl(size), __bytecount_impl(count))) #define _Outptr_opt_result_bytebuffer_to_maybenull_(size, count) _SAL2_Source_(_Outptr_opt_result_bytebuffer_to_maybenull_, (size, count), _Out_opt_impl_ _Deref_post3_impl_(__maybenull_impl_notref, __bytecap_impl(size), __bytecount_impl(count))) #define _Outptr_result_bytebuffer_all_maybenull_(size) _SAL2_Source_(_Outptr_result_bytebuffer_all_maybenull_, (size), _Out_impl_ _Deref_post2_impl_(__maybenull_impl_notref, __bytecount_impl(size))) #define _Outptr_opt_result_bytebuffer_all_maybenull_(size) _SAL2_Source_(_Outptr_opt_result_bytebuffer_all_maybenull_, (size), _Out_opt_impl_ _Deref_post2_impl_(__maybenull_impl_notref, __bytecount_impl(size))) // Annotations for output reference to pointer parameters. #define _Outref_ _SAL2_Source_(_Outref_, (), _Out_impl_ _Post_notnull_) #define _Outref_result_maybenull_ _SAL2_Source_(_Outref_result_maybenull_, (), _Pre2_impl_(__notnull_impl_notref, __cap_c_one_notref_impl) _Post_maybenull_ _Post_valid_impl_) #define _Outref_result_buffer_(size) _SAL2_Source_(_Outref_result_buffer_, (size), _Outref_ _Post1_impl_(__cap_impl(size))) #define _Outref_result_bytebuffer_(size) _SAL2_Source_(_Outref_result_bytebuffer_, (size), _Outref_ _Post1_impl_(__bytecap_impl(size))) #define _Outref_result_buffer_to_(size, count) _SAL2_Source_(_Outref_result_buffer_to_, (size, count), _Outref_result_buffer_(size) _Post1_impl_(__count_impl(count))) #define _Outref_result_bytebuffer_to_(size, count) _SAL2_Source_(_Outref_result_bytebuffer_to_, (size, count), _Outref_result_bytebuffer_(size) _Post1_impl_(__bytecount_impl(count))) #define _Outref_result_buffer_all_(size) _SAL2_Source_(_Outref_result_buffer_all_, (size), _Outref_result_buffer_to_(size, _Old_(size))) #define _Outref_result_bytebuffer_all_(size) _SAL2_Source_(_Outref_result_bytebuffer_all_, (size), _Outref_result_bytebuffer_to_(size, _Old_(size))) #define _Outref_result_buffer_maybenull_(size) _SAL2_Source_(_Outref_result_buffer_maybenull_, (size), _Outref_result_maybenull_ _Post1_impl_(__cap_impl(size))) #define _Outref_result_bytebuffer_maybenull_(size) _SAL2_Source_(_Outref_result_bytebuffer_maybenull_, (size), _Outref_result_maybenull_ _Post1_impl_(__bytecap_impl(size))) #define _Outref_result_buffer_to_maybenull_(size, count) _SAL2_Source_(_Outref_result_buffer_to_maybenull_, (size, count), _Outref_result_buffer_maybenull_(size) _Post1_impl_(__count_impl(count))) #define _Outref_result_bytebuffer_to_maybenull_(size, count) _SAL2_Source_(_Outref_result_bytebuffer_to_maybenull_, (size, count), _Outref_result_bytebuffer_maybenull_(size) _Post1_impl_(__bytecount_impl(count))) #define _Outref_result_buffer_all_maybenull_(size) _SAL2_Source_(_Outref_result_buffer_all_maybenull_, (size), _Outref_result_buffer_to_maybenull_(size, _Old_(size))) #define _Outref_result_bytebuffer_all_maybenull_(size) _SAL2_Source_(_Outref_result_bytebuffer_all_maybenull_, (size), _Outref_result_bytebuffer_to_maybenull_(size, _Old_(size))) // Annotations for output reference to pointer parameters that guarantee // that the pointer is set to NULL on failure. #define _Outref_result_nullonfailure_ _SAL2_Source_(_Outref_result_nullonfailure_, (), _Outref_ _On_failure_(_Post_null_)) // Generic annotations to set output value of a by-pointer or by-reference parameter to null/zero on failure. #define _Result_nullonfailure_ _SAL2_Source_(_Result_nullonfailure_, (), _On_failure_(_Notref_impl_ _Deref_impl_ _Post_null_)) #define _Result_zeroonfailure_ _SAL2_Source_(_Result_zeroonfailure_, (), _On_failure_(_Notref_impl_ _Deref_impl_ _Out_range_(==, 0))) // return values ------------------------------- // // _Ret_ annotations // // describing conditions that hold for return values after the call // e.g. _Ret_z_ CString::operator const WCHAR*() const throw(); #define _Ret_z_ _SAL2_Source_(_Ret_z_, (), _Ret2_impl_(__notnull_impl, __zterm_impl) _Ret_valid_impl_) #define _Ret_maybenull_z_ _SAL2_Source_(_Ret_maybenull_z_, (), _Ret2_impl_(__maybenull_impl,__zterm_impl) _Ret_valid_impl_) // used with allocated but not yet initialized objects #define _Ret_notnull_ _SAL2_Source_(_Ret_notnull_, (), _Ret1_impl_(__notnull_impl)) #define _Ret_maybenull_ _SAL2_Source_(_Ret_maybenull_, (), _Ret1_impl_(__maybenull_impl)) #define _Ret_null_ _SAL2_Source_(_Ret_null_, (), _Ret1_impl_(__null_impl)) // used with allocated and initialized objects // returns single valid object #define _Ret_valid_ _SAL2_Source_(_Ret_valid_, (), _Ret1_impl_(__notnull_impl_notref) _Ret_valid_impl_) // returns pointer to initialized buffer of specified size #define _Ret_writes_(size) _SAL2_Source_(_Ret_writes_, (size), _Ret2_impl_(__notnull_impl, __count_impl(size)) _Ret_valid_impl_) #define _Ret_writes_z_(size) _SAL2_Source_(_Ret_writes_z_, (size), _Ret3_impl_(__notnull_impl, __count_impl(size), __zterm_impl) _Ret_valid_impl_) #define _Ret_writes_bytes_(size) _SAL2_Source_(_Ret_writes_bytes_, (size), _Ret2_impl_(__notnull_impl, __bytecount_impl(size)) _Ret_valid_impl_) #define _Ret_writes_maybenull_(size) _SAL2_Source_(_Ret_writes_maybenull_, (size), _Ret2_impl_(__maybenull_impl,__count_impl(size)) _Ret_valid_impl_) #define _Ret_writes_maybenull_z_(size) _SAL2_Source_(_Ret_writes_maybenull_z_, (size), _Ret3_impl_(__maybenull_impl,__count_impl(size),__zterm_impl) _Ret_valid_impl_) #define _Ret_writes_bytes_maybenull_(size) _SAL2_Source_(_Ret_writes_bytes_maybenull_, (size), _Ret2_impl_(__maybenull_impl,__bytecount_impl(size)) _Ret_valid_impl_) // returns pointer to partially initialized buffer, with total size 'size' and initialized size 'count' #define _Ret_writes_to_(size,count) _SAL2_Source_(_Ret_writes_to_, (size,count), _Ret3_impl_(__notnull_impl, __cap_impl(size), __count_impl(count)) _Ret_valid_impl_) #define _Ret_writes_bytes_to_(size,count) _SAL2_Source_(_Ret_writes_bytes_to_, (size,count), _Ret3_impl_(__notnull_impl, __bytecap_impl(size), __bytecount_impl(count)) _Ret_valid_impl_) #define _Ret_writes_to_maybenull_(size,count) _SAL2_Source_(_Ret_writes_to_maybenull_, (size,count), _Ret3_impl_(__maybenull_impl, __cap_impl(size), __count_impl(count)) _Ret_valid_impl_) #define _Ret_writes_bytes_to_maybenull_(size,count) _SAL2_Source_(_Ret_writes_bytes_to_maybenull_, (size,count), _Ret3_impl_(__maybenull_impl, __bytecap_impl(size), __bytecount_impl(count)) _Ret_valid_impl_) // Annotations for strict type checking #define _Points_to_data_ _SAL2_Source_(_Points_to_data_, (), _Pre_ _Points_to_data_impl_) #define _Literal_ _SAL2_Source_(_Literal_, (), _Pre_ _Literal_impl_) #define _Notliteral_ _SAL2_Source_(_Notliteral_, (), _Pre_ _Notliteral_impl_) // Check the return value of a function e.g. _Check_return_ ErrorCode Foo(); #define _Check_return_ _SAL2_Source_(_Check_return_, (), _Check_return_impl_) #define _Must_inspect_result_ _SAL2_Source_(_Must_inspect_result_, (), _Must_inspect_impl_ _Check_return_impl_) // e.g. MyPrintF( _Printf_format_string_ const WCHAR* wzFormat, ... ); #define _Printf_format_string_ _SAL2_Source_(_Printf_format_string_, (), _Printf_format_string_impl_) #define _Scanf_format_string_ _SAL2_Source_(_Scanf_format_string_, (), _Scanf_format_string_impl_) #define _Scanf_s_format_string_ _SAL2_Source_(_Scanf_s_format_string_, (), _Scanf_s_format_string_impl_) #define _Format_string_impl_(kind,where) _SA_annotes2(SAL_IsFormatString2, kind, where) #define _Printf_format_string_params_(x) _SAL2_Source_(_Printf_format_string_params_, (x), _Format_string_impl_("printf", x)) #define _Scanf_format_string_params_(x) _SAL2_Source_(_Scanf_format_string_params_, (x), _Format_string_impl_("scanf", x)) #define _Scanf_s_format_string_params_(x) _SAL2_Source_(_Scanf_s_format_string_params_, (x), _Format_string_impl_("scanf_s", x)) // annotations to express value of integral or pointer parameter #define _In_range_(lb,ub) _SAL2_Source_(_In_range_, (lb,ub), _In_range_impl_(lb,ub)) #define _Out_range_(lb,ub) _SAL2_Source_(_Out_range_, (lb,ub), _Out_range_impl_(lb,ub)) #define _Ret_range_(lb,ub) _SAL2_Source_(_Ret_range_, (lb,ub), _Ret_range_impl_(lb,ub)) #define _Deref_in_range_(lb,ub) _SAL2_Source_(_Deref_in_range_, (lb,ub), _Deref_in_range_impl_(lb,ub)) #define _Deref_out_range_(lb,ub) _SAL2_Source_(_Deref_out_range_, (lb,ub), _Deref_out_range_impl_(lb,ub)) #define _Deref_ret_range_(lb,ub) _SAL2_Source_(_Deref_ret_range_, (lb,ub), _Deref_ret_range_impl_(lb,ub)) #define _Pre_equal_to_(expr) _SAL2_Source_(_Pre_equal_to_, (expr), _In_range_(==, expr)) #define _Post_equal_to_(expr) _SAL2_Source_(_Post_equal_to_, (expr), _Out_range_(==, expr)) // annotation to express that a value (usually a field of a mutable class) // is not changed by a function call #define _Unchanged_(e) _SAL2_Source_(_Unchanged_, (e), _At_(e, _Post_equal_to_(_Old_(e)) _Const_)) // Annotations to allow expressing generalized pre and post conditions. // 'cond' may be any valid SAL expression that is considered to be true as a precondition // or postcondition (respsectively). #define _Pre_satisfies_(cond) _SAL2_Source_(_Pre_satisfies_, (cond), _Pre_satisfies_impl_(cond)) #define _Post_satisfies_(cond) _SAL2_Source_(_Post_satisfies_, (cond), _Post_satisfies_impl_(cond)) // Annotations to express struct, class and field invariants #define _Struct_size_bytes_(size) _SAL2_Source_(_Struct_size_bytes_, (size), _Writable_bytes_(size)) #define _Field_size_(size) _SAL2_Source_(_Field_size_, (size), _Notnull_ _Writable_elements_(size)) #define _Field_size_opt_(size) _SAL2_Source_(_Field_size_opt_, (size), _Maybenull_ _Writable_elements_(size)) #define _Field_size_part_(size, count) _SAL2_Source_(_Field_size_part_, (size, count), _Notnull_ _Writable_elements_(size) _Readable_elements_(count)) #define _Field_size_part_opt_(size, count) _SAL2_Source_(_Field_size_part_opt_, (size, count), _Maybenull_ _Writable_elements_(size) _Readable_elements_(count)) #define _Field_size_full_(size) _SAL2_Source_(_Field_size_full_, (size), _Field_size_part_(size, size)) #define _Field_size_full_opt_(size) _SAL2_Source_(_Field_size_full_opt_, (size), _Field_size_part_opt_(size, size)) #define _Field_size_bytes_(size) _SAL2_Source_(_Field_size_bytes_, (size), _Notnull_ _Writable_bytes_(size)) #define _Field_size_bytes_opt_(size) _SAL2_Source_(_Field_size_bytes_opt_, (size), _Maybenull_ _Writable_bytes_(size)) #define _Field_size_bytes_part_(size, count) _SAL2_Source_(_Field_size_bytes_part_, (size, count), _Notnull_ _Writable_bytes_(size) _Readable_bytes_(count)) #define _Field_size_bytes_part_opt_(size, count) _SAL2_Source_(_Field_size_bytes_part_opt_, (size, count), _Maybenull_ _Writable_bytes_(size) _Readable_bytes_(count)) #define _Field_size_bytes_full_(size) _SAL2_Source_(_Field_size_bytes_full_, (size), _Field_size_bytes_part_(size, size)) #define _Field_size_bytes_full_opt_(size) _SAL2_Source_(_Field_size_bytes_full_opt_, (size), _Field_size_bytes_part_opt_(size, size)) #define _Field_z_ _SAL2_Source_(_Field_z_, (), _Null_terminated_) #define _Field_range_(min,max) _SAL2_Source_(_Field_range_, (min,max), _Field_range_impl_(min,max)) //============================================================================ // _Pre_\_Post_ Layer: //============================================================================ // // Raw Pre/Post for declaring custom pre/post conditions // #define _Pre_ _Pre_impl_ #define _Post_ _Post_impl_ // // Validity property // #define _Valid_ _Valid_impl_ #define _Notvalid_ _Notvalid_impl_ #define _Maybevalid_ _Maybevalid_impl_ // // Buffer size properties // // Expressing buffer sizes without specifying pre or post condition #define _Readable_bytes_(size) _SAL2_Source_(_Readable_bytes_, (size), _Readable_bytes_impl_(size)) #define _Readable_elements_(size) _SAL2_Source_(_Readable_elements_, (size), _Readable_elements_impl_(size)) #define _Writable_bytes_(size) _SAL2_Source_(_Writable_bytes_, (size), _Writable_bytes_impl_(size)) #define _Writable_elements_(size) _SAL2_Source_(_Writable_elements_, (size), _Writable_elements_impl_(size)) #define _Null_terminated_ _SAL2_Source_(_Null_terminated_, (), _Null_terminated_impl_) #define _NullNull_terminated_ _SAL2_Source_(_NullNull_terminated_, (), _NullNull_terminated_impl_) // Expressing buffer size as pre or post condition #define _Pre_readable_size_(size) _SAL2_Source_(_Pre_readable_size_, (size), _Pre1_impl_(__count_impl(size)) _Pre_valid_impl_) #define _Pre_writable_size_(size) _SAL2_Source_(_Pre_writable_size_, (size), _Pre1_impl_(__cap_impl(size))) #define _Pre_readable_byte_size_(size) _SAL2_Source_(_Pre_readable_byte_size_, (size), _Pre1_impl_(__bytecount_impl(size)) _Pre_valid_impl_) #define _Pre_writable_byte_size_(size) _SAL2_Source_(_Pre_writable_byte_size_, (size), _Pre1_impl_(__bytecap_impl(size))) #define _Post_readable_size_(size) _SAL2_Source_(_Post_readable_size_, (size), _Post1_impl_(__count_impl(size)) _Post_valid_impl_) #define _Post_writable_size_(size) _SAL2_Source_(_Post_writable_size_, (size), _Post1_impl_(__cap_impl(size))) #define _Post_readable_byte_size_(size) _SAL2_Source_(_Post_readable_byte_size_, (size), _Post1_impl_(__bytecount_impl(size)) _Post_valid_impl_) #define _Post_writable_byte_size_(size) _SAL2_Source_(_Post_writable_byte_size_, (size), _Post1_impl_(__bytecap_impl(size))) // // Pointer null-ness properties // #define _Null_ _Null_impl_ #define _Notnull_ _Notnull_impl_ #define _Maybenull_ _Maybenull_impl_ // // _Pre_ annotations --- // // describing conditions that must be met before the call of the function // e.g. int strlen( _Pre_z_ const char* sz ); // buffer is a zero terminated string #define _Pre_z_ _SAL2_Source_(_Pre_z_, (), _Pre1_impl_(__zterm_impl) _Pre_valid_impl_) // valid size unknown or indicated by type (e.g.:LPSTR) #define _Pre_valid_ _SAL2_Source_(_Pre_valid_, (), _Pre1_impl_(__notnull_impl_notref) _Pre_valid_impl_) #define _Pre_opt_valid_ _SAL2_Source_(_Pre_opt_valid_, (), _Pre1_impl_(__maybenull_impl_notref) _Pre_valid_impl_) #define _Pre_invalid_ _SAL2_Source_(_Pre_invalid_, (), _Deref_pre1_impl_(__notvalid_impl)) // Overrides recursive valid when some field is not yet initialized when using _Inout_ #define _Pre_unknown_ _SAL2_Source_(_Pre_unknown_, (), _Pre1_impl_(__maybevalid_impl)) // used with allocated but not yet initialized objects #define _Pre_notnull_ _SAL2_Source_(_Pre_notnull_, (), _Pre1_impl_(__notnull_impl_notref)) #define _Pre_maybenull_ _SAL2_Source_(_Pre_maybenull_, (), _Pre1_impl_(__maybenull_impl_notref)) #define _Pre_null_ _SAL2_Source_(_Pre_null_, (), _Pre1_impl_(__null_impl_notref)) // // _Post_ annotations --- // // describing conditions that hold after the function call // void CopyStr( _In_z_ const char* szFrom, _Pre_cap_(cch) _Post_z_ char* szFrom, size_t cchFrom ); // buffer will be a zero-terminated string after the call #define _Post_z_ _SAL2_Source_(_Post_z_, (), _Post1_impl_(__zterm_impl) _Post_valid_impl_) // e.g. HRESULT InitStruct( _Post_valid_ Struct* pobj ); #define _Post_valid_ _SAL2_Source_(_Post_valid_, (), _Post_valid_impl_) #define _Post_invalid_ _SAL2_Source_(_Post_invalid_, (), _Deref_post1_impl_(__notvalid_impl)) // e.g. void free( _Post_ptr_invalid_ void* pv ); #define _Post_ptr_invalid_ _SAL2_Source_(_Post_ptr_invalid_, (), _Post1_impl_(__notvalid_impl)) // e.g. void ThrowExceptionIfNull( _Post_notnull_ const void* pv ); #define _Post_notnull_ _SAL2_Source_(_Post_notnull_, (), _Post1_impl_(__notnull_impl)) // e.g. HRESULT GetObject(_Outptr_ _On_failure_(_At_(*p, _Post_null_)) T **p); #define _Post_null_ _SAL2_Source_(_Post_null_, (), _Post1_impl_(__null_impl)) #define _Post_maybenull_ _SAL2_Source_(_Post_maybenull_, (), _Post1_impl_(__maybenull_impl)) #define _Prepost_z_ _SAL2_Source_(_Prepost_z_, (), _Pre_z_ _Post_z_) // #pragma region Input Buffer SAL 1 compatibility macros /*========================================================================== This section contains definitions for macros defined for VS2010 and earlier. Usage of these macros is still supported, but the SAL 2 macros defined above are recommended instead. This comment block is retained to assist in understanding SAL that still uses the older syntax. The macros are defined in 3 layers: _In_\_Out_ Layer: ---------------- This layer provides the highest abstraction and its macros should be used in most cases. Its macros start with _In_, _Out_ or _Inout_. For the typical case they provide the most concise annotations. _Pre_\_Post_ Layer: ------------------ The macros of this layer only should be used when there is no suitable macro in the _In_\_Out_ layer. Its macros start with _Pre_, _Post_, _Ret_, _Deref_pre_ _Deref_post_ and _Deref_ret_. This layer provides the most flexibility for annotations. Implementation Abstraction Layer: -------------------------------- Macros from this layer should never be used directly. The layer only exists to hide the implementation of the annotation macros. Annotation Syntax: |--------------|----------|----------------|-----------------------------| | Usage | Nullness | ZeroTerminated | Extent | |--------------|----------|----------------|-----------------------------| | _In_ | <> | <> | <> | | _Out_ | opt_ | z_ | [byte]cap_[c_|x_]( size ) | | _Inout_ | | | [byte]count_[c_|x_]( size ) | | _Deref_out_ | | | ptrdiff_cap_( ptr ) | |--------------| | | ptrdiff_count_( ptr ) | | _Ret_ | | | | | _Deref_ret_ | | | | |--------------| | | | | _Pre_ | | | | | _Post_ | | | | | _Deref_pre_ | | | | | _Deref_post_ | | | | |--------------|----------|----------------|-----------------------------| Usage: ----- _In_, _Out_, _Inout_, _Pre_, _Post_, _Deref_pre_, _Deref_post_ are for formal parameters. _Ret_, _Deref_ret_ must be used for return values. Nullness: -------- If the pointer can be NULL the annotation contains _opt. If the macro does not contain '_opt' the pointer may not be NULL. String Type: ----------- _z: NullTerminated string for _In_ parameters the buffer must have the specified stringtype before the call for _Out_ parameters the buffer must have the specified stringtype after the call for _Inout_ parameters both conditions apply Extent Syntax: |------|---------------|---------------| | Unit | Writ\Readable | Argument Type | |------|---------------|---------------| | <> | cap_ | <> | | byte | count_ | c_ | | | | x_ | |------|---------------|---------------| 'cap' (capacity) describes the writable size of the buffer and is typically used with _Out_. The default unit is elements. Use 'bytecap' if the size is given in bytes 'count' describes the readable size of the buffer and is typically used with _In_. The default unit is elements. Use 'bytecount' if the size is given in bytes. Argument syntax for cap_, bytecap_, count_, bytecount_: (|return)[+n] e.g. cch, return, cb+2 If the buffer size is a constant expression use the c_ postfix. E.g. cap_c_(20), count_c_(MAX_PATH), bytecount_c_(16) If the buffer size is given by a limiting pointer use the ptrdiff_ versions of the macros. If the buffer size is neither a parameter nor a constant expression use the x_ postfix. e.g. bytecount_x_(num*size) x_ annotations accept any arbitrary string. No analysis can be done for x_ annotations but they at least tell the tool that the buffer has some sort of extent description. x_ annotations might be supported by future compiler versions. ============================================================================*/ // e.g. void SetCharRange( _In_count_(cch) const char* rgch, size_t cch ) // valid buffer extent described by another parameter #define _In_count_(size) _SAL1_1_Source_(_In_count_, (size), _Pre_count_(size) _Deref_pre_readonly_) #define _In_opt_count_(size) _SAL1_1_Source_(_In_opt_count_, (size), _Pre_opt_count_(size) _Deref_pre_readonly_) #define _In_bytecount_(size) _SAL1_1_Source_(_In_bytecount_, (size), _Pre_bytecount_(size) _Deref_pre_readonly_) #define _In_opt_bytecount_(size) _SAL1_1_Source_(_In_opt_bytecount_, (size), _Pre_opt_bytecount_(size) _Deref_pre_readonly_) // valid buffer extent described by a constant extression #define _In_count_c_(size) _SAL1_1_Source_(_In_count_c_, (size), _Pre_count_c_(size) _Deref_pre_readonly_) #define _In_opt_count_c_(size) _SAL1_1_Source_(_In_opt_count_c_, (size), _Pre_opt_count_c_(size) _Deref_pre_readonly_) #define _In_bytecount_c_(size) _SAL1_1_Source_(_In_bytecount_c_, (size), _Pre_bytecount_c_(size) _Deref_pre_readonly_) #define _In_opt_bytecount_c_(size) _SAL1_1_Source_(_In_opt_bytecount_c_, (size), _Pre_opt_bytecount_c_(size) _Deref_pre_readonly_) // nullterminated 'input' buffers with given size // e.g. void SetCharRange( _In_count_(cch) const char* rgch, size_t cch ) // nullterminated valid buffer extent described by another parameter #define _In_z_count_(size) _SAL1_1_Source_(_In_z_count_, (size), _Pre_z_ _Pre_count_(size) _Deref_pre_readonly_) #define _In_opt_z_count_(size) _SAL1_1_Source_(_In_opt_z_count_, (size), _Pre_opt_z_ _Pre_opt_count_(size) _Deref_pre_readonly_) #define _In_z_bytecount_(size) _SAL1_1_Source_(_In_z_bytecount_, (size), _Pre_z_ _Pre_bytecount_(size) _Deref_pre_readonly_) #define _In_opt_z_bytecount_(size) _SAL1_1_Source_(_In_opt_z_bytecount_, (size), _Pre_opt_z_ _Pre_opt_bytecount_(size) _Deref_pre_readonly_) // nullterminated valid buffer extent described by a constant extression #define _In_z_count_c_(size) _SAL1_1_Source_(_In_z_count_c_, (size), _Pre_z_ _Pre_count_c_(size) _Deref_pre_readonly_) #define _In_opt_z_count_c_(size) _SAL1_1_Source_(_In_opt_z_count_c_, (size), _Pre_opt_z_ _Pre_opt_count_c_(size) _Deref_pre_readonly_) #define _In_z_bytecount_c_(size) _SAL1_1_Source_(_In_z_bytecount_c_, (size), _Pre_z_ _Pre_bytecount_c_(size) _Deref_pre_readonly_) #define _In_opt_z_bytecount_c_(size) _SAL1_1_Source_(_In_opt_z_bytecount_c_, (size), _Pre_opt_z_ _Pre_opt_bytecount_c_(size) _Deref_pre_readonly_) // buffer capacity is described by another pointer // e.g. void Foo( _In_ptrdiff_count_(pchMax) const char* pch, const char* pchMax ) { while pch < pchMax ) pch++; } #define _In_ptrdiff_count_(size) _SAL1_1_Source_(_In_ptrdiff_count_, (size), _Pre_ptrdiff_count_(size) _Deref_pre_readonly_) #define _In_opt_ptrdiff_count_(size) _SAL1_1_Source_(_In_opt_ptrdiff_count_, (size), _Pre_opt_ptrdiff_count_(size) _Deref_pre_readonly_) // 'x' version for complex expressions that are not supported by the current compiler version // e.g. void Set3ColMatrix( _In_count_x_(3*cRows) const Elem* matrix, int cRows ); #define _In_count_x_(size) _SAL1_1_Source_(_In_count_x_, (size), _Pre_count_x_(size) _Deref_pre_readonly_) #define _In_opt_count_x_(size) _SAL1_1_Source_(_In_opt_count_x_, (size), _Pre_opt_count_x_(size) _Deref_pre_readonly_) #define _In_bytecount_x_(size) _SAL1_1_Source_(_In_bytecount_x_, (size), _Pre_bytecount_x_(size) _Deref_pre_readonly_) #define _In_opt_bytecount_x_(size) _SAL1_1_Source_(_In_opt_bytecount_x_, (size), _Pre_opt_bytecount_x_(size) _Deref_pre_readonly_) // 'out' with buffer size // e.g. void GetIndeces( _Out_cap_(cIndeces) int* rgIndeces, size_t cIndices ); // buffer capacity is described by another parameter #define _Out_cap_(size) _SAL1_1_Source_(_Out_cap_, (size), _Pre_cap_(size) _Post_valid_impl_) #define _Out_opt_cap_(size) _SAL1_1_Source_(_Out_opt_cap_, (size), _Pre_opt_cap_(size) _Post_valid_impl_) #define _Out_bytecap_(size) _SAL1_1_Source_(_Out_bytecap_, (size), _Pre_bytecap_(size) _Post_valid_impl_) #define _Out_opt_bytecap_(size) _SAL1_1_Source_(_Out_opt_bytecap_, (size), _Pre_opt_bytecap_(size) _Post_valid_impl_) // buffer capacity is described by a constant expression #define _Out_cap_c_(size) _SAL1_1_Source_(_Out_cap_c_, (size), _Pre_cap_c_(size) _Post_valid_impl_) #define _Out_opt_cap_c_(size) _SAL1_1_Source_(_Out_opt_cap_c_, (size), _Pre_opt_cap_c_(size) _Post_valid_impl_) #define _Out_bytecap_c_(size) _SAL1_1_Source_(_Out_bytecap_c_, (size), _Pre_bytecap_c_(size) _Post_valid_impl_) #define _Out_opt_bytecap_c_(size) _SAL1_1_Source_(_Out_opt_bytecap_c_, (size), _Pre_opt_bytecap_c_(size) _Post_valid_impl_) // buffer capacity is described by another parameter multiplied by a constant expression #define _Out_cap_m_(mult,size) _SAL1_1_Source_(_Out_cap_m_, (mult,size), _Pre_cap_m_(mult,size) _Post_valid_impl_) #define _Out_opt_cap_m_(mult,size) _SAL1_1_Source_(_Out_opt_cap_m_, (mult,size), _Pre_opt_cap_m_(mult,size) _Post_valid_impl_) #define _Out_z_cap_m_(mult,size) _SAL1_1_Source_(_Out_z_cap_m_, (mult,size), _Pre_cap_m_(mult,size) _Post_valid_impl_ _Post_z_) #define _Out_opt_z_cap_m_(mult,size) _SAL1_1_Source_(_Out_opt_z_cap_m_, (mult,size), _Pre_opt_cap_m_(mult,size) _Post_valid_impl_ _Post_z_) // buffer capacity is described by another pointer // e.g. void Foo( _Out_ptrdiff_cap_(pchMax) char* pch, const char* pchMax ) { while pch < pchMax ) pch++; } #define _Out_ptrdiff_cap_(size) _SAL1_1_Source_(_Out_ptrdiff_cap_, (size), _Pre_ptrdiff_cap_(size) _Post_valid_impl_) #define _Out_opt_ptrdiff_cap_(size) _SAL1_1_Source_(_Out_opt_ptrdiff_cap_, (size), _Pre_opt_ptrdiff_cap_(size) _Post_valid_impl_) // buffer capacity is described by a complex expression #define _Out_cap_x_(size) _SAL1_1_Source_(_Out_cap_x_, (size), _Pre_cap_x_(size) _Post_valid_impl_) #define _Out_opt_cap_x_(size) _SAL1_1_Source_(_Out_opt_cap_x_, (size), _Pre_opt_cap_x_(size) _Post_valid_impl_) #define _Out_bytecap_x_(size) _SAL1_1_Source_(_Out_bytecap_x_, (size), _Pre_bytecap_x_(size) _Post_valid_impl_) #define _Out_opt_bytecap_x_(size) _SAL1_1_Source_(_Out_opt_bytecap_x_, (size), _Pre_opt_bytecap_x_(size) _Post_valid_impl_) // a zero terminated string is filled into a buffer of given capacity // e.g. void CopyStr( _In_z_ const char* szFrom, _Out_z_cap_(cchTo) char* szTo, size_t cchTo ); // buffer capacity is described by another parameter #define _Out_z_cap_(size) _SAL1_1_Source_(_Out_z_cap_, (size), _Pre_cap_(size) _Post_valid_impl_ _Post_z_) #define _Out_opt_z_cap_(size) _SAL1_1_Source_(_Out_opt_z_cap_, (size), _Pre_opt_cap_(size) _Post_valid_impl_ _Post_z_) #define _Out_z_bytecap_(size) _SAL1_1_Source_(_Out_z_bytecap_, (size), _Pre_bytecap_(size) _Post_valid_impl_ _Post_z_) #define _Out_opt_z_bytecap_(size) _SAL1_1_Source_(_Out_opt_z_bytecap_, (size), _Pre_opt_bytecap_(size) _Post_valid_impl_ _Post_z_) // buffer capacity is described by a constant expression #define _Out_z_cap_c_(size) _SAL1_1_Source_(_Out_z_cap_c_, (size), _Pre_cap_c_(size) _Post_valid_impl_ _Post_z_) #define _Out_opt_z_cap_c_(size) _SAL1_1_Source_(_Out_opt_z_cap_c_, (size), _Pre_opt_cap_c_(size) _Post_valid_impl_ _Post_z_) #define _Out_z_bytecap_c_(size) _SAL1_1_Source_(_Out_z_bytecap_c_, (size), _Pre_bytecap_c_(size) _Post_valid_impl_ _Post_z_) #define _Out_opt_z_bytecap_c_(size) _SAL1_1_Source_(_Out_opt_z_bytecap_c_, (size), _Pre_opt_bytecap_c_(size) _Post_valid_impl_ _Post_z_) // buffer capacity is described by a complex expression #define _Out_z_cap_x_(size) _SAL1_1_Source_(_Out_z_cap_x_, (size), _Pre_cap_x_(size) _Post_valid_impl_ _Post_z_) #define _Out_opt_z_cap_x_(size) _SAL1_1_Source_(_Out_opt_z_cap_x_, (size), _Pre_opt_cap_x_(size) _Post_valid_impl_ _Post_z_) #define _Out_z_bytecap_x_(size) _SAL1_1_Source_(_Out_z_bytecap_x_, (size), _Pre_bytecap_x_(size) _Post_valid_impl_ _Post_z_) #define _Out_opt_z_bytecap_x_(size) _SAL1_1_Source_(_Out_opt_z_bytecap_x_, (size), _Pre_opt_bytecap_x_(size) _Post_valid_impl_ _Post_z_) // a zero terminated string is filled into a buffer of given capacity // e.g. size_t CopyCharRange( _In_count_(cchFrom) const char* rgchFrom, size_t cchFrom, _Out_cap_post_count_(cchTo,return)) char* rgchTo, size_t cchTo ); #define _Out_cap_post_count_(cap,count) _SAL1_1_Source_(_Out_cap_post_count_, (cap,count), _Pre_cap_(cap) _Post_valid_impl_ _Post_count_(count)) #define _Out_opt_cap_post_count_(cap,count) _SAL1_1_Source_(_Out_opt_cap_post_count_, (cap,count), _Pre_opt_cap_(cap) _Post_valid_impl_ _Post_count_(count)) #define _Out_bytecap_post_bytecount_(cap,count) _SAL1_1_Source_(_Out_bytecap_post_bytecount_, (cap,count), _Pre_bytecap_(cap) _Post_valid_impl_ _Post_bytecount_(count)) #define _Out_opt_bytecap_post_bytecount_(cap,count) _SAL1_1_Source_(_Out_opt_bytecap_post_bytecount_, (cap,count), _Pre_opt_bytecap_(cap) _Post_valid_impl_ _Post_bytecount_(count)) // a zero terminated string is filled into a buffer of given capacity // e.g. size_t CopyStr( _In_z_ const char* szFrom, _Out_z_cap_post_count_(cchTo,return+1) char* szTo, size_t cchTo ); #define _Out_z_cap_post_count_(cap,count) _SAL1_1_Source_(_Out_z_cap_post_count_, (cap,count), _Pre_cap_(cap) _Post_valid_impl_ _Post_z_count_(count)) #define _Out_opt_z_cap_post_count_(cap,count) _SAL1_1_Source_(_Out_opt_z_cap_post_count_, (cap,count), _Pre_opt_cap_(cap) _Post_valid_impl_ _Post_z_count_(count)) #define _Out_z_bytecap_post_bytecount_(cap,count) _SAL1_1_Source_(_Out_z_bytecap_post_bytecount_, (cap,count), _Pre_bytecap_(cap) _Post_valid_impl_ _Post_z_bytecount_(count)) #define _Out_opt_z_bytecap_post_bytecount_(cap,count) _SAL1_1_Source_(_Out_opt_z_bytecap_post_bytecount_, (cap,count), _Pre_opt_bytecap_(cap) _Post_valid_impl_ _Post_z_bytecount_(count)) // only use with dereferenced arguments e.g. '*pcch' #define _Out_capcount_(capcount) _SAL1_1_Source_(_Out_capcount_, (capcount), _Pre_cap_(capcount) _Post_valid_impl_ _Post_count_(capcount)) #define _Out_opt_capcount_(capcount) _SAL1_1_Source_(_Out_opt_capcount_, (capcount), _Pre_opt_cap_(capcount) _Post_valid_impl_ _Post_count_(capcount)) #define _Out_bytecapcount_(capcount) _SAL1_1_Source_(_Out_bytecapcount_, (capcount), _Pre_bytecap_(capcount) _Post_valid_impl_ _Post_bytecount_(capcount)) #define _Out_opt_bytecapcount_(capcount) _SAL1_1_Source_(_Out_opt_bytecapcount_, (capcount), _Pre_opt_bytecap_(capcount) _Post_valid_impl_ _Post_bytecount_(capcount)) #define _Out_capcount_x_(capcount) _SAL1_1_Source_(_Out_capcount_x_, (capcount), _Pre_cap_x_(capcount) _Post_valid_impl_ _Post_count_x_(capcount)) #define _Out_opt_capcount_x_(capcount) _SAL1_1_Source_(_Out_opt_capcount_x_, (capcount), _Pre_opt_cap_x_(capcount) _Post_valid_impl_ _Post_count_x_(capcount)) #define _Out_bytecapcount_x_(capcount) _SAL1_1_Source_(_Out_bytecapcount_x_, (capcount), _Pre_bytecap_x_(capcount) _Post_valid_impl_ _Post_bytecount_x_(capcount)) #define _Out_opt_bytecapcount_x_(capcount) _SAL1_1_Source_(_Out_opt_bytecapcount_x_, (capcount), _Pre_opt_bytecap_x_(capcount) _Post_valid_impl_ _Post_bytecount_x_(capcount)) // e.g. GetString( _Out_z_capcount_(*pLen+1) char* sz, size_t* pLen ); #define _Out_z_capcount_(capcount) _SAL1_1_Source_(_Out_z_capcount_, (capcount), _Pre_cap_(capcount) _Post_valid_impl_ _Post_z_count_(capcount)) #define _Out_opt_z_capcount_(capcount) _SAL1_1_Source_(_Out_opt_z_capcount_, (capcount), _Pre_opt_cap_(capcount) _Post_valid_impl_ _Post_z_count_(capcount)) #define _Out_z_bytecapcount_(capcount) _SAL1_1_Source_(_Out_z_bytecapcount_, (capcount), _Pre_bytecap_(capcount) _Post_valid_impl_ _Post_z_bytecount_(capcount)) #define _Out_opt_z_bytecapcount_(capcount) _SAL1_1_Source_(_Out_opt_z_bytecapcount_, (capcount), _Pre_opt_bytecap_(capcount) _Post_valid_impl_ _Post_z_bytecount_(capcount)) // 'inout' buffers with initialized elements before and after the call // e.g. void ModifyIndices( _Inout_count_(cIndices) int* rgIndeces, size_t cIndices ); #define _Inout_count_(size) _SAL1_1_Source_(_Inout_count_, (size), _Prepost_count_(size)) #define _Inout_opt_count_(size) _SAL1_1_Source_(_Inout_opt_count_, (size), _Prepost_opt_count_(size)) #define _Inout_bytecount_(size) _SAL1_1_Source_(_Inout_bytecount_, (size), _Prepost_bytecount_(size)) #define _Inout_opt_bytecount_(size) _SAL1_1_Source_(_Inout_opt_bytecount_, (size), _Prepost_opt_bytecount_(size)) #define _Inout_count_c_(size) _SAL1_1_Source_(_Inout_count_c_, (size), _Prepost_count_c_(size)) #define _Inout_opt_count_c_(size) _SAL1_1_Source_(_Inout_opt_count_c_, (size), _Prepost_opt_count_c_(size)) #define _Inout_bytecount_c_(size) _SAL1_1_Source_(_Inout_bytecount_c_, (size), _Prepost_bytecount_c_(size)) #define _Inout_opt_bytecount_c_(size) _SAL1_1_Source_(_Inout_opt_bytecount_c_, (size), _Prepost_opt_bytecount_c_(size)) // nullterminated 'inout' buffers with initialized elements before and after the call // e.g. void ModifyIndices( _Inout_count_(cIndices) int* rgIndeces, size_t cIndices ); #define _Inout_z_count_(size) _SAL1_1_Source_(_Inout_z_count_, (size), _Prepost_z_ _Prepost_count_(size)) #define _Inout_opt_z_count_(size) _SAL1_1_Source_(_Inout_opt_z_count_, (size), _Prepost_z_ _Prepost_opt_count_(size)) #define _Inout_z_bytecount_(size) _SAL1_1_Source_(_Inout_z_bytecount_, (size), _Prepost_z_ _Prepost_bytecount_(size)) #define _Inout_opt_z_bytecount_(size) _SAL1_1_Source_(_Inout_opt_z_bytecount_, (size), _Prepost_z_ _Prepost_opt_bytecount_(size)) #define _Inout_z_count_c_(size) _SAL1_1_Source_(_Inout_z_count_c_, (size), _Prepost_z_ _Prepost_count_c_(size)) #define _Inout_opt_z_count_c_(size) _SAL1_1_Source_(_Inout_opt_z_count_c_, (size), _Prepost_z_ _Prepost_opt_count_c_(size)) #define _Inout_z_bytecount_c_(size) _SAL1_1_Source_(_Inout_z_bytecount_c_, (size), _Prepost_z_ _Prepost_bytecount_c_(size)) #define _Inout_opt_z_bytecount_c_(size) _SAL1_1_Source_(_Inout_opt_z_bytecount_c_, (size), _Prepost_z_ _Prepost_opt_bytecount_c_(size)) #define _Inout_ptrdiff_count_(size) _SAL1_1_Source_(_Inout_ptrdiff_count_, (size), _Pre_ptrdiff_count_(size)) #define _Inout_opt_ptrdiff_count_(size) _SAL1_1_Source_(_Inout_opt_ptrdiff_count_, (size), _Pre_opt_ptrdiff_count_(size)) #define _Inout_count_x_(size) _SAL1_1_Source_(_Inout_count_x_, (size), _Prepost_count_x_(size)) #define _Inout_opt_count_x_(size) _SAL1_1_Source_(_Inout_opt_count_x_, (size), _Prepost_opt_count_x_(size)) #define _Inout_bytecount_x_(size) _SAL1_1_Source_(_Inout_bytecount_x_, (size), _Prepost_bytecount_x_(size)) #define _Inout_opt_bytecount_x_(size) _SAL1_1_Source_(_Inout_opt_bytecount_x_, (size), _Prepost_opt_bytecount_x_(size)) // e.g. void AppendToLPSTR( _In_ LPCSTR szFrom, _Inout_cap_(cchTo) LPSTR* szTo, size_t cchTo ); #define _Inout_cap_(size) _SAL1_1_Source_(_Inout_cap_, (size), _Pre_valid_cap_(size) _Post_valid_) #define _Inout_opt_cap_(size) _SAL1_1_Source_(_Inout_opt_cap_, (size), _Pre_opt_valid_cap_(size) _Post_valid_) #define _Inout_bytecap_(size) _SAL1_1_Source_(_Inout_bytecap_, (size), _Pre_valid_bytecap_(size) _Post_valid_) #define _Inout_opt_bytecap_(size) _SAL1_1_Source_(_Inout_opt_bytecap_, (size), _Pre_opt_valid_bytecap_(size) _Post_valid_) #define _Inout_cap_c_(size) _SAL1_1_Source_(_Inout_cap_c_, (size), _Pre_valid_cap_c_(size) _Post_valid_) #define _Inout_opt_cap_c_(size) _SAL1_1_Source_(_Inout_opt_cap_c_, (size), _Pre_opt_valid_cap_c_(size) _Post_valid_) #define _Inout_bytecap_c_(size) _SAL1_1_Source_(_Inout_bytecap_c_, (size), _Pre_valid_bytecap_c_(size) _Post_valid_) #define _Inout_opt_bytecap_c_(size) _SAL1_1_Source_(_Inout_opt_bytecap_c_, (size), _Pre_opt_valid_bytecap_c_(size) _Post_valid_) #define _Inout_cap_x_(size) _SAL1_1_Source_(_Inout_cap_x_, (size), _Pre_valid_cap_x_(size) _Post_valid_) #define _Inout_opt_cap_x_(size) _SAL1_1_Source_(_Inout_opt_cap_x_, (size), _Pre_opt_valid_cap_x_(size) _Post_valid_) #define _Inout_bytecap_x_(size) _SAL1_1_Source_(_Inout_bytecap_x_, (size), _Pre_valid_bytecap_x_(size) _Post_valid_) #define _Inout_opt_bytecap_x_(size) _SAL1_1_Source_(_Inout_opt_bytecap_x_, (size), _Pre_opt_valid_bytecap_x_(size) _Post_valid_) // inout string buffers with writable size // e.g. void AppendStr( _In_z_ const char* szFrom, _Inout_z_cap_(cchTo) char* szTo, size_t cchTo ); #define _Inout_z_cap_(size) _SAL1_1_Source_(_Inout_z_cap_, (size), _Pre_z_cap_(size) _Post_z_) #define _Inout_opt_z_cap_(size) _SAL1_1_Source_(_Inout_opt_z_cap_, (size), _Pre_opt_z_cap_(size) _Post_z_) #define _Inout_z_bytecap_(size) _SAL1_1_Source_(_Inout_z_bytecap_, (size), _Pre_z_bytecap_(size) _Post_z_) #define _Inout_opt_z_bytecap_(size) _SAL1_1_Source_(_Inout_opt_z_bytecap_, (size), _Pre_opt_z_bytecap_(size) _Post_z_) #define _Inout_z_cap_c_(size) _SAL1_1_Source_(_Inout_z_cap_c_, (size), _Pre_z_cap_c_(size) _Post_z_) #define _Inout_opt_z_cap_c_(size) _SAL1_1_Source_(_Inout_opt_z_cap_c_, (size), _Pre_opt_z_cap_c_(size) _Post_z_) #define _Inout_z_bytecap_c_(size) _SAL1_1_Source_(_Inout_z_bytecap_c_, (size), _Pre_z_bytecap_c_(size) _Post_z_) #define _Inout_opt_z_bytecap_c_(size) _SAL1_1_Source_(_Inout_opt_z_bytecap_c_, (size), _Pre_opt_z_bytecap_c_(size) _Post_z_) #define _Inout_z_cap_x_(size) _SAL1_1_Source_(_Inout_z_cap_x_, (size), _Pre_z_cap_x_(size) _Post_z_) #define _Inout_opt_z_cap_x_(size) _SAL1_1_Source_(_Inout_opt_z_cap_x_, (size), _Pre_opt_z_cap_x_(size) _Post_z_) #define _Inout_z_bytecap_x_(size) _SAL1_1_Source_(_Inout_z_bytecap_x_, (size), _Pre_z_bytecap_x_(size) _Post_z_) #define _Inout_opt_z_bytecap_x_(size) _SAL1_1_Source_(_Inout_opt_z_bytecap_x_, (size), _Pre_opt_z_bytecap_x_(size) _Post_z_) // returning pointers to valid objects #define _Ret_ _SAL1_1_Source_(_Ret_, (), _Ret_valid_) #define _Ret_opt_ _SAL1_1_Source_(_Ret_opt_, (), _Ret_opt_valid_) // annotations to express 'boundedness' of integral value parameter #define _In_bound_ _SAL1_1_Source_(_In_bound_, (), _In_bound_impl_) #define _Out_bound_ _SAL1_1_Source_(_Out_bound_, (), _Out_bound_impl_) #define _Ret_bound_ _SAL1_1_Source_(_Ret_bound_, (), _Ret_bound_impl_) #define _Deref_in_bound_ _SAL1_1_Source_(_Deref_in_bound_, (), _Deref_in_bound_impl_) #define _Deref_out_bound_ _SAL1_1_Source_(_Deref_out_bound_, (), _Deref_out_bound_impl_) #define _Deref_inout_bound_ _SAL1_1_Source_(_Deref_inout_bound_, (), _Deref_in_bound_ _Deref_out_bound_) #define _Deref_ret_bound_ _SAL1_1_Source_(_Deref_ret_bound_, (), _Deref_ret_bound_impl_) // e.g. HRESULT HrCreatePoint( _Deref_out_opt_ POINT** ppPT ); #define _Deref_out_ _SAL1_1_Source_(_Deref_out_, (), _Out_ _Deref_post_valid_) #define _Deref_out_opt_ _SAL1_1_Source_(_Deref_out_opt_, (), _Out_ _Deref_post_opt_valid_) #define _Deref_opt_out_ _SAL1_1_Source_(_Deref_opt_out_, (), _Out_opt_ _Deref_post_valid_) #define _Deref_opt_out_opt_ _SAL1_1_Source_(_Deref_opt_out_opt_, (), _Out_opt_ _Deref_post_opt_valid_) // e.g. void CloneString( _In_z_ const WCHAR* wzFrom, _Deref_out_z_ WCHAR** pWzTo ); #define _Deref_out_z_ _SAL1_1_Source_(_Deref_out_z_, (), _Out_ _Deref_post_z_) #define _Deref_out_opt_z_ _SAL1_1_Source_(_Deref_out_opt_z_, (), _Out_ _Deref_post_opt_z_) #define _Deref_opt_out_z_ _SAL1_1_Source_(_Deref_opt_out_z_, (), _Out_opt_ _Deref_post_z_) #define _Deref_opt_out_opt_z_ _SAL1_1_Source_(_Deref_opt_out_opt_z_, (), _Out_opt_ _Deref_post_opt_z_) // // _Deref_pre_ --- // // describing conditions for array elements of dereferenced pointer parameters that must be met before the call // e.g. void SaveStringArray( _In_count_(cStrings) _Deref_pre_z_ const WCHAR* const rgpwch[] ); #define _Deref_pre_z_ _SAL1_1_Source_(_Deref_pre_z_, (), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__zterm_impl) _Pre_valid_impl_) #define _Deref_pre_opt_z_ _SAL1_1_Source_(_Deref_pre_opt_z_, (), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__zterm_impl) _Pre_valid_impl_) // e.g. void FillInArrayOfStr32( _In_count_(cStrings) _Deref_pre_cap_c_(32) _Deref_post_z_ WCHAR* const rgpwch[] ); // buffer capacity is described by another parameter #define _Deref_pre_cap_(size) _SAL1_1_Source_(_Deref_pre_cap_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__cap_impl(size))) #define _Deref_pre_opt_cap_(size) _SAL1_1_Source_(_Deref_pre_opt_cap_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__cap_impl(size))) #define _Deref_pre_bytecap_(size) _SAL1_1_Source_(_Deref_pre_bytecap_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__bytecap_impl(size))) #define _Deref_pre_opt_bytecap_(size) _SAL1_1_Source_(_Deref_pre_opt_bytecap_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__bytecap_impl(size))) // buffer capacity is described by a constant expression #define _Deref_pre_cap_c_(size) _SAL1_1_Source_(_Deref_pre_cap_c_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__cap_c_impl(size))) #define _Deref_pre_opt_cap_c_(size) _SAL1_1_Source_(_Deref_pre_opt_cap_c_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__cap_c_impl(size))) #define _Deref_pre_bytecap_c_(size) _SAL1_1_Source_(_Deref_pre_bytecap_c_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__bytecap_c_impl(size))) #define _Deref_pre_opt_bytecap_c_(size) _SAL1_1_Source_(_Deref_pre_opt_bytecap_c_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__bytecap_c_impl(size))) // buffer capacity is described by a complex condition #define _Deref_pre_cap_x_(size) _SAL1_1_Source_(_Deref_pre_cap_x_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__cap_x_impl(size))) #define _Deref_pre_opt_cap_x_(size) _SAL1_1_Source_(_Deref_pre_opt_cap_x_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__cap_x_impl(size))) #define _Deref_pre_bytecap_x_(size) _SAL1_1_Source_(_Deref_pre_bytecap_x_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__bytecap_x_impl(size))) #define _Deref_pre_opt_bytecap_x_(size) _SAL1_1_Source_(_Deref_pre_opt_bytecap_x_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__bytecap_x_impl(size))) // convenience macros for nullterminated buffers with given capacity #define _Deref_pre_z_cap_(size) _SAL1_1_Source_(_Deref_pre_z_cap_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre2_impl_(__zterm_impl,__cap_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_z_cap_(size) _SAL1_1_Source_(_Deref_pre_opt_z_cap_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre2_impl_(__zterm_impl,__cap_impl(size)) _Pre_valid_impl_) #define _Deref_pre_z_bytecap_(size) _SAL1_1_Source_(_Deref_pre_z_bytecap_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre2_impl_(__zterm_impl,__bytecap_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_z_bytecap_(size) _SAL1_1_Source_(_Deref_pre_opt_z_bytecap_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre2_impl_(__zterm_impl,__bytecap_impl(size)) _Pre_valid_impl_) #define _Deref_pre_z_cap_c_(size) _SAL1_1_Source_(_Deref_pre_z_cap_c_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre2_impl_(__zterm_impl,__cap_c_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_z_cap_c_(size) _SAL1_1_Source_(_Deref_pre_opt_z_cap_c_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre2_impl_(__zterm_impl,__cap_c_impl(size)) _Pre_valid_impl_) #define _Deref_pre_z_bytecap_c_(size) _SAL1_1_Source_(_Deref_pre_z_bytecap_c_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre2_impl_(__zterm_impl,__bytecap_c_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_z_bytecap_c_(size) _SAL1_1_Source_(_Deref_pre_opt_z_bytecap_c_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre2_impl_(__zterm_impl,__bytecap_c_impl(size)) _Pre_valid_impl_) #define _Deref_pre_z_cap_x_(size) _SAL1_1_Source_(_Deref_pre_z_cap_x_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre2_impl_(__zterm_impl,__cap_x_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_z_cap_x_(size) _SAL1_1_Source_(_Deref_pre_opt_z_cap_x_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre2_impl_(__zterm_impl,__cap_x_impl(size)) _Pre_valid_impl_) #define _Deref_pre_z_bytecap_x_(size) _SAL1_1_Source_(_Deref_pre_z_bytecap_x_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre2_impl_(__zterm_impl,__bytecap_x_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_z_bytecap_x_(size) _SAL1_1_Source_(_Deref_pre_opt_z_bytecap_x_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre2_impl_(__zterm_impl,__bytecap_x_impl(size)) _Pre_valid_impl_) // known capacity and valid but unknown readable extent #define _Deref_pre_valid_cap_(size) _SAL1_1_Source_(_Deref_pre_valid_cap_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__cap_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_valid_cap_(size) _SAL1_1_Source_(_Deref_pre_opt_valid_cap_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__cap_impl(size)) _Pre_valid_impl_) #define _Deref_pre_valid_bytecap_(size) _SAL1_1_Source_(_Deref_pre_valid_bytecap_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__bytecap_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_valid_bytecap_(size) _SAL1_1_Source_(_Deref_pre_opt_valid_bytecap_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__bytecap_impl(size)) _Pre_valid_impl_) #define _Deref_pre_valid_cap_c_(size) _SAL1_1_Source_(_Deref_pre_valid_cap_c_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__cap_c_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_valid_cap_c_(size) _SAL1_1_Source_(_Deref_pre_opt_valid_cap_c_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__cap_c_impl(size)) _Pre_valid_impl_) #define _Deref_pre_valid_bytecap_c_(size) _SAL1_1_Source_(_Deref_pre_valid_bytecap_c_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__bytecap_c_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_valid_bytecap_c_(size) _SAL1_1_Source_(_Deref_pre_opt_valid_bytecap_c_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__bytecap_c_impl(size)) _Pre_valid_impl_) #define _Deref_pre_valid_cap_x_(size) _SAL1_1_Source_(_Deref_pre_valid_cap_x_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__cap_x_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_valid_cap_x_(size) _SAL1_1_Source_(_Deref_pre_opt_valid_cap_x_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__cap_x_impl(size)) _Pre_valid_impl_) #define _Deref_pre_valid_bytecap_x_(size) _SAL1_1_Source_(_Deref_pre_valid_bytecap_x_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__bytecap_x_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_valid_bytecap_x_(size) _SAL1_1_Source_(_Deref_pre_opt_valid_bytecap_x_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__bytecap_x_impl(size)) _Pre_valid_impl_) // e.g. void SaveMatrix( _In_count_(n) _Deref_pre_count_(n) const Elem** matrix, size_t n ); // valid buffer extent is described by another parameter #define _Deref_pre_count_(size) _SAL1_1_Source_(_Deref_pre_count_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__count_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_count_(size) _SAL1_1_Source_(_Deref_pre_opt_count_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__count_impl(size)) _Pre_valid_impl_) #define _Deref_pre_bytecount_(size) _SAL1_1_Source_(_Deref_pre_bytecount_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__bytecount_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_bytecount_(size) _SAL1_1_Source_(_Deref_pre_opt_bytecount_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__bytecount_impl(size)) _Pre_valid_impl_) // valid buffer extent is described by a constant expression #define _Deref_pre_count_c_(size) _SAL1_1_Source_(_Deref_pre_count_c_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__count_c_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_count_c_(size) _SAL1_1_Source_(_Deref_pre_opt_count_c_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__count_c_impl(size)) _Pre_valid_impl_) #define _Deref_pre_bytecount_c_(size) _SAL1_1_Source_(_Deref_pre_bytecount_c_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__bytecount_c_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_bytecount_c_(size) _SAL1_1_Source_(_Deref_pre_opt_bytecount_c_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__bytecount_c_impl(size)) _Pre_valid_impl_) // valid buffer extent is described by a complex expression #define _Deref_pre_count_x_(size) _SAL1_1_Source_(_Deref_pre_count_x_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__count_x_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_count_x_(size) _SAL1_1_Source_(_Deref_pre_opt_count_x_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__count_x_impl(size)) _Pre_valid_impl_) #define _Deref_pre_bytecount_x_(size) _SAL1_1_Source_(_Deref_pre_bytecount_x_, (size), _Deref_pre1_impl_(__notnull_impl_notref) _Deref_pre1_impl_(__bytecount_x_impl(size)) _Pre_valid_impl_) #define _Deref_pre_opt_bytecount_x_(size) _SAL1_1_Source_(_Deref_pre_opt_bytecount_x_, (size), _Deref_pre1_impl_(__maybenull_impl_notref) _Deref_pre1_impl_(__bytecount_x_impl(size)) _Pre_valid_impl_) // e.g. void PrintStringArray( _In_count_(cElems) _Deref_pre_valid_ LPCSTR rgStr[], size_t cElems ); #define _Deref_pre_valid_ _SAL1_1_Source_(_Deref_pre_valid_, (), _Deref_pre1_impl_(__notnull_impl_notref) _Pre_valid_impl_) #define _Deref_pre_opt_valid_ _SAL1_1_Source_(_Deref_pre_opt_valid_, (), _Deref_pre1_impl_(__maybenull_impl_notref) _Pre_valid_impl_) #define _Deref_pre_invalid_ _SAL1_1_Source_(_Deref_pre_invalid_, (), _Deref_pre1_impl_(__notvalid_impl)) #define _Deref_pre_notnull_ _SAL1_1_Source_(_Deref_pre_notnull_, (), _Deref_pre1_impl_(__notnull_impl_notref)) #define _Deref_pre_maybenull_ _SAL1_1_Source_(_Deref_pre_maybenull_, (), _Deref_pre1_impl_(__maybenull_impl_notref)) #define _Deref_pre_null_ _SAL1_1_Source_(_Deref_pre_null_, (), _Deref_pre1_impl_(__null_impl_notref)) // restrict access rights #define _Deref_pre_readonly_ _SAL1_1_Source_(_Deref_pre_readonly_, (), _Deref_pre1_impl_(__readaccess_impl_notref)) #define _Deref_pre_writeonly_ _SAL1_1_Source_(_Deref_pre_writeonly_, (), _Deref_pre1_impl_(__writeaccess_impl_notref)) // // _Deref_post_ --- // // describing conditions for array elements or dereferenced pointer parameters that hold after the call // e.g. void CloneString( _In_z_ const Wchar_t* wzIn _Out_ _Deref_post_z_ WCHAR** pWzOut ); #define _Deref_post_z_ _SAL1_1_Source_(_Deref_post_z_, (), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__zterm_impl) _Post_valid_impl_) #define _Deref_post_opt_z_ _SAL1_1_Source_(_Deref_post_opt_z_, (), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__zterm_impl) _Post_valid_impl_) // e.g. HRESULT HrAllocateMemory( size_t cb, _Out_ _Deref_post_bytecap_(cb) void** ppv ); // buffer capacity is described by another parameter #define _Deref_post_cap_(size) _SAL1_1_Source_(_Deref_post_cap_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__cap_impl(size))) #define _Deref_post_opt_cap_(size) _SAL1_1_Source_(_Deref_post_opt_cap_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__cap_impl(size))) #define _Deref_post_bytecap_(size) _SAL1_1_Source_(_Deref_post_bytecap_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__bytecap_impl(size))) #define _Deref_post_opt_bytecap_(size) _SAL1_1_Source_(_Deref_post_opt_bytecap_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__bytecap_impl(size))) // buffer capacity is described by a constant expression #define _Deref_post_cap_c_(size) _SAL1_1_Source_(_Deref_post_cap_c_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__cap_c_impl(size))) #define _Deref_post_opt_cap_c_(size) _SAL1_1_Source_(_Deref_post_opt_cap_c_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__cap_c_impl(size))) #define _Deref_post_bytecap_c_(size) _SAL1_1_Source_(_Deref_post_bytecap_c_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__bytecap_c_impl(size))) #define _Deref_post_opt_bytecap_c_(size) _SAL1_1_Source_(_Deref_post_opt_bytecap_c_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__bytecap_c_impl(size))) // buffer capacity is described by a complex expression #define _Deref_post_cap_x_(size) _SAL1_1_Source_(_Deref_post_cap_x_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__cap_x_impl(size))) #define _Deref_post_opt_cap_x_(size) _SAL1_1_Source_(_Deref_post_opt_cap_x_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__cap_x_impl(size))) #define _Deref_post_bytecap_x_(size) _SAL1_1_Source_(_Deref_post_bytecap_x_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__bytecap_x_impl(size))) #define _Deref_post_opt_bytecap_x_(size) _SAL1_1_Source_(_Deref_post_opt_bytecap_x_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__bytecap_x_impl(size))) // convenience macros for nullterminated buffers with given capacity #define _Deref_post_z_cap_(size) _SAL1_1_Source_(_Deref_post_z_cap_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post2_impl_(__zterm_impl,__cap_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_z_cap_(size) _SAL1_1_Source_(_Deref_post_opt_z_cap_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post2_impl_(__zterm_impl,__cap_impl(size)) _Post_valid_impl_) #define _Deref_post_z_bytecap_(size) _SAL1_1_Source_(_Deref_post_z_bytecap_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post2_impl_(__zterm_impl,__bytecap_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_z_bytecap_(size) _SAL1_1_Source_(_Deref_post_opt_z_bytecap_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post2_impl_(__zterm_impl,__bytecap_impl(size)) _Post_valid_impl_) #define _Deref_post_z_cap_c_(size) _SAL1_1_Source_(_Deref_post_z_cap_c_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post2_impl_(__zterm_impl,__cap_c_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_z_cap_c_(size) _SAL1_1_Source_(_Deref_post_opt_z_cap_c_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post2_impl_(__zterm_impl,__cap_c_impl(size)) _Post_valid_impl_) #define _Deref_post_z_bytecap_c_(size) _SAL1_1_Source_(_Deref_post_z_bytecap_c_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post2_impl_(__zterm_impl,__bytecap_c_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_z_bytecap_c_(size) _SAL1_1_Source_(_Deref_post_opt_z_bytecap_c_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post2_impl_(__zterm_impl,__bytecap_c_impl(size)) _Post_valid_impl_) #define _Deref_post_z_cap_x_(size) _SAL1_1_Source_(_Deref_post_z_cap_x_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post2_impl_(__zterm_impl,__cap_x_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_z_cap_x_(size) _SAL1_1_Source_(_Deref_post_opt_z_cap_x_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post2_impl_(__zterm_impl,__cap_x_impl(size)) _Post_valid_impl_) #define _Deref_post_z_bytecap_x_(size) _SAL1_1_Source_(_Deref_post_z_bytecap_x_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post2_impl_(__zterm_impl,__bytecap_x_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_z_bytecap_x_(size) _SAL1_1_Source_(_Deref_post_opt_z_bytecap_x_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post2_impl_(__zterm_impl,__bytecap_x_impl(size)) _Post_valid_impl_) // known capacity and valid but unknown readable extent #define _Deref_post_valid_cap_(size) _SAL1_1_Source_(_Deref_post_valid_cap_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__cap_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_valid_cap_(size) _SAL1_1_Source_(_Deref_post_opt_valid_cap_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__cap_impl(size)) _Post_valid_impl_) #define _Deref_post_valid_bytecap_(size) _SAL1_1_Source_(_Deref_post_valid_bytecap_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__bytecap_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_valid_bytecap_(size) _SAL1_1_Source_(_Deref_post_opt_valid_bytecap_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__bytecap_impl(size)) _Post_valid_impl_) #define _Deref_post_valid_cap_c_(size) _SAL1_1_Source_(_Deref_post_valid_cap_c_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__cap_c_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_valid_cap_c_(size) _SAL1_1_Source_(_Deref_post_opt_valid_cap_c_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__cap_c_impl(size)) _Post_valid_impl_) #define _Deref_post_valid_bytecap_c_(size) _SAL1_1_Source_(_Deref_post_valid_bytecap_c_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__bytecap_c_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_valid_bytecap_c_(size) _SAL1_1_Source_(_Deref_post_opt_valid_bytecap_c_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__bytecap_c_impl(size)) _Post_valid_impl_) #define _Deref_post_valid_cap_x_(size) _SAL1_1_Source_(_Deref_post_valid_cap_x_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__cap_x_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_valid_cap_x_(size) _SAL1_1_Source_(_Deref_post_opt_valid_cap_x_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__cap_x_impl(size)) _Post_valid_impl_) #define _Deref_post_valid_bytecap_x_(size) _SAL1_1_Source_(_Deref_post_valid_bytecap_x_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__bytecap_x_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_valid_bytecap_x_(size) _SAL1_1_Source_(_Deref_post_opt_valid_bytecap_x_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__bytecap_x_impl(size)) _Post_valid_impl_) // e.g. HRESULT HrAllocateZeroInitializedMemory( size_t cb, _Out_ _Deref_post_bytecount_(cb) void** ppv ); // valid buffer extent is described by another parameter #define _Deref_post_count_(size) _SAL1_1_Source_(_Deref_post_count_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__count_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_count_(size) _SAL1_1_Source_(_Deref_post_opt_count_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__count_impl(size)) _Post_valid_impl_) #define _Deref_post_bytecount_(size) _SAL1_1_Source_(_Deref_post_bytecount_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__bytecount_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_bytecount_(size) _SAL1_1_Source_(_Deref_post_opt_bytecount_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__bytecount_impl(size)) _Post_valid_impl_) // buffer capacity is described by a constant expression #define _Deref_post_count_c_(size) _SAL1_1_Source_(_Deref_post_count_c_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__count_c_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_count_c_(size) _SAL1_1_Source_(_Deref_post_opt_count_c_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__count_c_impl(size)) _Post_valid_impl_) #define _Deref_post_bytecount_c_(size) _SAL1_1_Source_(_Deref_post_bytecount_c_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__bytecount_c_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_bytecount_c_(size) _SAL1_1_Source_(_Deref_post_opt_bytecount_c_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__bytecount_c_impl(size)) _Post_valid_impl_) // buffer capacity is described by a complex expression #define _Deref_post_count_x_(size) _SAL1_1_Source_(_Deref_post_count_x_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__count_x_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_count_x_(size) _SAL1_1_Source_(_Deref_post_opt_count_x_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__count_x_impl(size)) _Post_valid_impl_) #define _Deref_post_bytecount_x_(size) _SAL1_1_Source_(_Deref_post_bytecount_x_, (size), _Deref_post1_impl_(__notnull_impl_notref) _Deref_post1_impl_(__bytecount_x_impl(size)) _Post_valid_impl_) #define _Deref_post_opt_bytecount_x_(size) _SAL1_1_Source_(_Deref_post_opt_bytecount_x_, (size), _Deref_post1_impl_(__maybenull_impl_notref) _Deref_post1_impl_(__bytecount_x_impl(size)) _Post_valid_impl_) // e.g. void GetStrings( _Out_count_(cElems) _Deref_post_valid_ LPSTR const rgStr[], size_t cElems ); #define _Deref_post_valid_ _SAL1_1_Source_(_Deref_post_valid_, (), _Deref_post1_impl_(__notnull_impl_notref) _Post_valid_impl_) #define _Deref_post_opt_valid_ _SAL1_1_Source_(_Deref_post_opt_valid_, (), _Deref_post1_impl_(__maybenull_impl_notref) _Post_valid_impl_) #define _Deref_post_notnull_ _SAL1_1_Source_(_Deref_post_notnull_, (), _Deref_post1_impl_(__notnull_impl_notref)) #define _Deref_post_maybenull_ _SAL1_1_Source_(_Deref_post_maybenull_, (), _Deref_post1_impl_(__maybenull_impl_notref)) #define _Deref_post_null_ _SAL1_1_Source_(_Deref_post_null_, (), _Deref_post1_impl_(__null_impl_notref)) // // _Deref_ret_ --- // #define _Deref_ret_z_ _SAL1_1_Source_(_Deref_ret_z_, (), _Deref_ret1_impl_(__notnull_impl_notref) _Deref_ret1_impl_(__zterm_impl)) #define _Deref_ret_opt_z_ _SAL1_1_Source_(_Deref_ret_opt_z_, (), _Deref_ret1_impl_(__maybenull_impl_notref) _Ret1_impl_(__zterm_impl)) // // special _Deref_ --- // #define _Deref2_pre_readonly_ _SAL1_1_Source_(_Deref2_pre_readonly_, (), _Deref2_pre1_impl_(__readaccess_impl_notref)) // // _Ret_ --- // // e.g. _Ret_opt_valid_ LPSTR void* CloneSTR( _Pre_valid_ LPSTR src ); #define _Ret_opt_valid_ _SAL1_1_Source_(_Ret_opt_valid_, (), _Ret1_impl_(__maybenull_impl_notref) _Ret_valid_impl_) #define _Ret_opt_z_ _SAL1_1_Source_(_Ret_opt_z_, (), _Ret2_impl_(__maybenull_impl,__zterm_impl) _Ret_valid_impl_) // e.g. _Ret_opt_bytecap_(cb) void* AllocateMemory( size_t cb ); // Buffer capacity is described by another parameter #define _Ret_cap_(size) _SAL1_1_Source_(_Ret_cap_, (size), _Ret1_impl_(__notnull_impl_notref) _Ret1_impl_(__cap_impl(size))) #define _Ret_opt_cap_(size) _SAL1_1_Source_(_Ret_opt_cap_, (size), _Ret1_impl_(__maybenull_impl_notref) _Ret1_impl_(__cap_impl(size))) #define _Ret_bytecap_(size) _SAL1_1_Source_(_Ret_bytecap_, (size), _Ret1_impl_(__notnull_impl_notref) _Ret1_impl_(__bytecap_impl(size))) #define _Ret_opt_bytecap_(size) _SAL1_1_Source_(_Ret_opt_bytecap_, (size), _Ret1_impl_(__maybenull_impl_notref) _Ret1_impl_(__bytecap_impl(size))) // Buffer capacity is described by a constant expression #define _Ret_cap_c_(size) _SAL1_1_Source_(_Ret_cap_c_, (size), _Ret1_impl_(__notnull_impl_notref) _Ret1_impl_(__cap_c_impl(size))) #define _Ret_opt_cap_c_(size) _SAL1_1_Source_(_Ret_opt_cap_c_, (size), _Ret1_impl_(__maybenull_impl_notref) _Ret1_impl_(__cap_c_impl(size))) #define _Ret_bytecap_c_(size) _SAL1_1_Source_(_Ret_bytecap_c_, (size), _Ret1_impl_(__notnull_impl_notref) _Ret1_impl_(__bytecap_c_impl(size))) #define _Ret_opt_bytecap_c_(size) _SAL1_1_Source_(_Ret_opt_bytecap_c_, (size), _Ret1_impl_(__maybenull_impl_notref) _Ret1_impl_(__bytecap_c_impl(size))) // Buffer capacity is described by a complex condition #define _Ret_cap_x_(size) _SAL1_1_Source_(_Ret_cap_x_, (size), _Ret1_impl_(__notnull_impl_notref) _Ret1_impl_(__cap_x_impl(size))) #define _Ret_opt_cap_x_(size) _SAL1_1_Source_(_Ret_opt_cap_x_, (size), _Ret1_impl_(__maybenull_impl_notref) _Ret1_impl_(__cap_x_impl(size))) #define _Ret_bytecap_x_(size) _SAL1_1_Source_(_Ret_bytecap_x_, (size), _Ret1_impl_(__notnull_impl_notref) _Ret1_impl_(__bytecap_x_impl(size))) #define _Ret_opt_bytecap_x_(size) _SAL1_1_Source_(_Ret_opt_bytecap_x_, (size), _Ret1_impl_(__maybenull_impl_notref) _Ret1_impl_(__bytecap_x_impl(size))) // return value is nullterminated and capacity is given by another parameter #define _Ret_z_cap_(size) _SAL1_1_Source_(_Ret_z_cap_, (size), _Ret1_impl_(__notnull_impl_notref) _Ret2_impl_(__zterm_impl,__cap_impl(size)) _Ret_valid_impl_) #define _Ret_opt_z_cap_(size) _SAL1_1_Source_(_Ret_opt_z_cap_, (size), _Ret1_impl_(__maybenull_impl_notref) _Ret2_impl_(__zterm_impl,__cap_impl(size)) _Ret_valid_impl_) #define _Ret_z_bytecap_(size) _SAL1_1_Source_(_Ret_z_bytecap_, (size), _Ret1_impl_(__notnull_impl_notref) _Ret2_impl_(__zterm_impl,__bytecap_impl(size)) _Ret_valid_impl_) #define _Ret_opt_z_bytecap_(size) _SAL1_1_Source_(_Ret_opt_z_bytecap_, (size), _Ret1_impl_(__maybenull_impl_notref) _Ret2_impl_(__zterm_impl,__bytecap_impl(size)) _Ret_valid_impl_) // e.g. _Ret_opt_bytecount_(cb) void* AllocateZeroInitializedMemory( size_t cb ); // Valid Buffer extent is described by another parameter #define _Ret_count_(size) _SAL1_1_Source_(_Ret_count_, (size), _Ret1_impl_(__notnull_impl_notref) _Ret1_impl_(__count_impl(size)) _Ret_valid_impl_) #define _Ret_opt_count_(size) _SAL1_1_Source_(_Ret_opt_count_, (size), _Ret1_impl_(__maybenull_impl_notref) _Ret1_impl_(__count_impl(size)) _Ret_valid_impl_) #define _Ret_bytecount_(size) _SAL1_1_Source_(_Ret_bytecount_, (size), _Ret1_impl_(__notnull_impl_notref) _Ret1_impl_(__bytecount_impl(size)) _Ret_valid_impl_) #define _Ret_opt_bytecount_(size) _SAL1_1_Source_(_Ret_opt_bytecount_, (size), _Ret1_impl_(__maybenull_impl_notref) _Ret1_impl_(__bytecount_impl(size)) _Ret_valid_impl_) // Valid Buffer extent is described by a constant expression #define _Ret_count_c_(size) _SAL1_1_Source_(_Ret_count_c_, (size), _Ret1_impl_(__notnull_impl_notref) _Ret1_impl_(__count_c_impl(size)) _Ret_valid_impl_) #define _Ret_opt_count_c_(size) _SAL1_1_Source_(_Ret_opt_count_c_, (size), _Ret1_impl_(__maybenull_impl_notref) _Ret1_impl_(__count_c_impl(size)) _Ret_valid_impl_) #define _Ret_bytecount_c_(size) _SAL1_1_Source_(_Ret_bytecount_c_, (size), _Ret1_impl_(__notnull_impl_notref) _Ret1_impl_(__bytecount_c_impl(size)) _Ret_valid_impl_) #define _Ret_opt_bytecount_c_(size) _SAL1_1_Source_(_Ret_opt_bytecount_c_, (size), _Ret1_impl_(__maybenull_impl_notref) _Ret1_impl_(__bytecount_c_impl(size)) _Ret_valid_impl_) // Valid Buffer extent is described by a complex expression #define _Ret_count_x_(size) _SAL1_1_Source_(_Ret_count_x_, (size), _Ret1_impl_(__notnull_impl_notref) _Ret1_impl_(__count_x_impl(size)) _Ret_valid_impl_) #define _Ret_opt_count_x_(size) _SAL1_1_Source_(_Ret_opt_count_x_, (size), _Ret1_impl_(__maybenull_impl_notref) _Ret1_impl_(__count_x_impl(size)) _Ret_valid_impl_) #define _Ret_bytecount_x_(size) _SAL1_1_Source_(_Ret_bytecount_x_, (size), _Ret1_impl_(__notnull_impl_notref) _Ret1_impl_(__bytecount_x_impl(size)) _Ret_valid_impl_) #define _Ret_opt_bytecount_x_(size) _SAL1_1_Source_(_Ret_opt_bytecount_x_, (size), _Ret1_impl_(__maybenull_impl_notref) _Ret1_impl_(__bytecount_x_impl(size)) _Ret_valid_impl_) // return value is nullterminated and length is given by another parameter #define _Ret_z_count_(size) _SAL1_1_Source_(_Ret_z_count_, (size), _Ret1_impl_(__notnull_impl_notref) _Ret2_impl_(__zterm_impl,__count_impl(size)) _Ret_valid_impl_) #define _Ret_opt_z_count_(size) _SAL1_1_Source_(_Ret_opt_z_count_, (size), _Ret1_impl_(__maybenull_impl_notref) _Ret2_impl_(__zterm_impl,__count_impl(size)) _Ret_valid_impl_) #define _Ret_z_bytecount_(size) _SAL1_1_Source_(_Ret_z_bytecount_, (size), _Ret1_impl_(__notnull_impl_notref) _Ret2_impl_(__zterm_impl,__bytecount_impl(size)) _Ret_valid_impl_) #define _Ret_opt_z_bytecount_(size) _SAL1_1_Source_(_Ret_opt_z_bytecount_, (size), _Ret1_impl_(__maybenull_impl_notref) _Ret2_impl_(__zterm_impl,__bytecount_impl(size)) _Ret_valid_impl_) // _Pre_ annotations --- #define _Pre_opt_z_ _SAL1_1_Source_(_Pre_opt_z_, (), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__zterm_impl) _Pre_valid_impl_) // restrict access rights #define _Pre_readonly_ _SAL1_1_Source_(_Pre_readonly_, (), _Pre1_impl_(__readaccess_impl_notref)) #define _Pre_writeonly_ _SAL1_1_Source_(_Pre_writeonly_, (), _Pre1_impl_(__writeaccess_impl_notref)) // e.g. void FreeMemory( _Pre_bytecap_(cb) _Post_ptr_invalid_ void* pv, size_t cb ); // buffer capacity described by another parameter #define _Pre_cap_(size) _SAL1_1_Source_(_Pre_cap_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__cap_impl(size))) #define _Pre_opt_cap_(size) _SAL1_1_Source_(_Pre_opt_cap_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__cap_impl(size))) #define _Pre_bytecap_(size) _SAL1_1_Source_(_Pre_bytecap_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__bytecap_impl(size))) #define _Pre_opt_bytecap_(size) _SAL1_1_Source_(_Pre_opt_bytecap_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__bytecap_impl(size))) // buffer capacity described by a constant expression #define _Pre_cap_c_(size) _SAL1_1_Source_(_Pre_cap_c_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__cap_c_impl(size))) #define _Pre_opt_cap_c_(size) _SAL1_1_Source_(_Pre_opt_cap_c_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__cap_c_impl(size))) #define _Pre_bytecap_c_(size) _SAL1_1_Source_(_Pre_bytecap_c_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__bytecap_c_impl(size))) #define _Pre_opt_bytecap_c_(size) _SAL1_1_Source_(_Pre_opt_bytecap_c_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__bytecap_c_impl(size))) #define _Pre_cap_c_one_ _SAL1_1_Source_(_Pre_cap_c_one_, (), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__cap_c_one_notref_impl)) #define _Pre_opt_cap_c_one_ _SAL1_1_Source_(_Pre_opt_cap_c_one_, (), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__cap_c_one_notref_impl)) // buffer capacity is described by another parameter multiplied by a constant expression #define _Pre_cap_m_(mult,size) _SAL1_1_Source_(_Pre_cap_m_, (mult,size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__mult_impl(mult,size))) #define _Pre_opt_cap_m_(mult,size) _SAL1_1_Source_(_Pre_opt_cap_m_, (mult,size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__mult_impl(mult,size))) // buffer capacity described by size of other buffer, only used by dangerous legacy APIs // e.g. int strcpy(_Pre_cap_for_(src) char* dst, const char* src); #define _Pre_cap_for_(param) _SAL1_1_Source_(_Pre_cap_for_, (param), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__cap_for_impl(param))) #define _Pre_opt_cap_for_(param) _SAL1_1_Source_(_Pre_opt_cap_for_, (param), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__cap_for_impl(param))) // buffer capacity described by a complex condition #define _Pre_cap_x_(size) _SAL1_1_Source_(_Pre_cap_x_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__cap_x_impl(size))) #define _Pre_opt_cap_x_(size) _SAL1_1_Source_(_Pre_opt_cap_x_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__cap_x_impl(size))) #define _Pre_bytecap_x_(size) _SAL1_1_Source_(_Pre_bytecap_x_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__bytecap_x_impl(size))) #define _Pre_opt_bytecap_x_(size) _SAL1_1_Source_(_Pre_opt_bytecap_x_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__bytecap_x_impl(size))) // buffer capacity described by the difference to another pointer parameter #define _Pre_ptrdiff_cap_(ptr) _SAL1_1_Source_(_Pre_ptrdiff_cap_, (ptr), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__cap_x_impl(__ptrdiff(ptr)))) #define _Pre_opt_ptrdiff_cap_(ptr) _SAL1_1_Source_(_Pre_opt_ptrdiff_cap_, (ptr), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__cap_x_impl(__ptrdiff(ptr)))) // e.g. void AppendStr( _Pre_z_ const char* szFrom, _Pre_z_cap_(cchTo) _Post_z_ char* szTo, size_t cchTo ); #define _Pre_z_cap_(size) _SAL1_1_Source_(_Pre_z_cap_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre2_impl_(__zterm_impl,__cap_impl(size)) _Pre_valid_impl_) #define _Pre_opt_z_cap_(size) _SAL1_1_Source_(_Pre_opt_z_cap_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre2_impl_(__zterm_impl,__cap_impl(size)) _Pre_valid_impl_) #define _Pre_z_bytecap_(size) _SAL1_1_Source_(_Pre_z_bytecap_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre2_impl_(__zterm_impl,__bytecap_impl(size)) _Pre_valid_impl_) #define _Pre_opt_z_bytecap_(size) _SAL1_1_Source_(_Pre_opt_z_bytecap_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre2_impl_(__zterm_impl,__bytecap_impl(size)) _Pre_valid_impl_) #define _Pre_z_cap_c_(size) _SAL1_1_Source_(_Pre_z_cap_c_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre2_impl_(__zterm_impl,__cap_c_impl(size)) _Pre_valid_impl_) #define _Pre_opt_z_cap_c_(size) _SAL1_1_Source_(_Pre_opt_z_cap_c_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre2_impl_(__zterm_impl,__cap_c_impl(size)) _Pre_valid_impl_) #define _Pre_z_bytecap_c_(size) _SAL1_1_Source_(_Pre_z_bytecap_c_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre2_impl_(__zterm_impl,__bytecap_c_impl(size)) _Pre_valid_impl_) #define _Pre_opt_z_bytecap_c_(size) _SAL1_1_Source_(_Pre_opt_z_bytecap_c_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre2_impl_(__zterm_impl,__bytecap_c_impl(size)) _Pre_valid_impl_) #define _Pre_z_cap_x_(size) _SAL1_1_Source_(_Pre_z_cap_x_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre2_impl_(__zterm_impl,__cap_x_impl(size)) _Pre_valid_impl_) #define _Pre_opt_z_cap_x_(size) _SAL1_1_Source_(_Pre_opt_z_cap_x_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre2_impl_(__zterm_impl,__cap_x_impl(size)) _Pre_valid_impl_) #define _Pre_z_bytecap_x_(size) _SAL1_1_Source_(_Pre_z_bytecap_x_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre2_impl_(__zterm_impl,__bytecap_x_impl(size)) _Pre_valid_impl_) #define _Pre_opt_z_bytecap_x_(size) _SAL1_1_Source_(_Pre_opt_z_bytecap_x_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre2_impl_(__zterm_impl,__bytecap_x_impl(size)) _Pre_valid_impl_) // known capacity and valid but unknown readable extent #define _Pre_valid_cap_(size) _SAL1_1_Source_(_Pre_valid_cap_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__cap_impl(size)) _Pre_valid_impl_) #define _Pre_opt_valid_cap_(size) _SAL1_1_Source_(_Pre_opt_valid_cap_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__cap_impl(size)) _Pre_valid_impl_) #define _Pre_valid_bytecap_(size) _SAL1_1_Source_(_Pre_valid_bytecap_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__bytecap_impl(size)) _Pre_valid_impl_) #define _Pre_opt_valid_bytecap_(size) _SAL1_1_Source_(_Pre_opt_valid_bytecap_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__bytecap_impl(size)) _Pre_valid_impl_) #define _Pre_valid_cap_c_(size) _SAL1_1_Source_(_Pre_valid_cap_c_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__cap_c_impl(size)) _Pre_valid_impl_) #define _Pre_opt_valid_cap_c_(size) _SAL1_1_Source_(_Pre_opt_valid_cap_c_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__cap_c_impl(size)) _Pre_valid_impl_) #define _Pre_valid_bytecap_c_(size) _SAL1_1_Source_(_Pre_valid_bytecap_c_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__bytecap_c_impl(size)) _Pre_valid_impl_) #define _Pre_opt_valid_bytecap_c_(size) _SAL1_1_Source_(_Pre_opt_valid_bytecap_c_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__bytecap_c_impl(size)) _Pre_valid_impl_) #define _Pre_valid_cap_x_(size) _SAL1_1_Source_(_Pre_valid_cap_x_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__cap_x_impl(size)) _Pre_valid_impl_) #define _Pre_opt_valid_cap_x_(size) _SAL1_1_Source_(_Pre_opt_valid_cap_x_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__cap_x_impl(size)) _Pre_valid_impl_) #define _Pre_valid_bytecap_x_(size) _SAL1_1_Source_(_Pre_valid_bytecap_x_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__bytecap_x_impl(size)) _Pre_valid_impl_) #define _Pre_opt_valid_bytecap_x_(size) _SAL1_1_Source_(_Pre_opt_valid_bytecap_x_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__bytecap_x_impl(size)) _Pre_valid_impl_) // e.g. void AppendCharRange( _Pre_count_(cchFrom) const char* rgFrom, size_t cchFrom, _Out_z_cap_(cchTo) char* szTo, size_t cchTo ); // Valid buffer extent described by another parameter #define _Pre_count_(size) _SAL1_1_Source_(_Pre_count_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__count_impl(size)) _Pre_valid_impl_) #define _Pre_opt_count_(size) _SAL1_1_Source_(_Pre_opt_count_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__count_impl(size)) _Pre_valid_impl_) #define _Pre_bytecount_(size) _SAL1_1_Source_(_Pre_bytecount_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__bytecount_impl(size)) _Pre_valid_impl_) #define _Pre_opt_bytecount_(size) _SAL1_1_Source_(_Pre_opt_bytecount_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__bytecount_impl(size)) _Pre_valid_impl_) // Valid buffer extent described by a constant expression #define _Pre_count_c_(size) _SAL1_1_Source_(_Pre_count_c_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__count_c_impl(size)) _Pre_valid_impl_) #define _Pre_opt_count_c_(size) _SAL1_1_Source_(_Pre_opt_count_c_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__count_c_impl(size)) _Pre_valid_impl_) #define _Pre_bytecount_c_(size) _SAL1_1_Source_(_Pre_bytecount_c_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__bytecount_c_impl(size)) _Pre_valid_impl_) #define _Pre_opt_bytecount_c_(size) _SAL1_1_Source_(_Pre_opt_bytecount_c_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__bytecount_c_impl(size)) _Pre_valid_impl_) // Valid buffer extent described by a complex expression #define _Pre_count_x_(size) _SAL1_1_Source_(_Pre_count_x_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__count_x_impl(size)) _Pre_valid_impl_) #define _Pre_opt_count_x_(size) _SAL1_1_Source_(_Pre_opt_count_x_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__count_x_impl(size)) _Pre_valid_impl_) #define _Pre_bytecount_x_(size) _SAL1_1_Source_(_Pre_bytecount_x_, (size), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__bytecount_x_impl(size)) _Pre_valid_impl_) #define _Pre_opt_bytecount_x_(size) _SAL1_1_Source_(_Pre_opt_bytecount_x_, (size), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__bytecount_x_impl(size)) _Pre_valid_impl_) // Valid buffer extent described by the difference to another pointer parameter #define _Pre_ptrdiff_count_(ptr) _SAL1_1_Source_(_Pre_ptrdiff_count_, (ptr), _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__count_x_impl(__ptrdiff(ptr))) _Pre_valid_impl_) #define _Pre_opt_ptrdiff_count_(ptr) _SAL1_1_Source_(_Pre_opt_ptrdiff_count_, (ptr), _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__count_x_impl(__ptrdiff(ptr))) _Pre_valid_impl_) // char * strncpy(_Out_cap_(_Count) _Post_maybez_ char * _Dest, _In_z_ const char * _Source, _In_ size_t _Count) // buffer maybe zero-terminated after the call #define _Post_maybez_ _SAL1_1_Source_(_Post_maybez_, (), _Post1_impl_(__maybezterm_impl)) // e.g. SIZE_T HeapSize( _In_ HANDLE hHeap, DWORD dwFlags, _Pre_notnull_ _Post_bytecap_(return) LPCVOID lpMem ); #define _Post_cap_(size) _SAL1_1_Source_(_Post_cap_, (size), _Post1_impl_(__cap_impl(size))) #define _Post_bytecap_(size) _SAL1_1_Source_(_Post_bytecap_, (size), _Post1_impl_(__bytecap_impl(size))) // e.g. int strlen( _In_z_ _Post_count_(return+1) const char* sz ); #define _Post_count_(size) _SAL1_1_Source_(_Post_count_, (size), _Post1_impl_(__count_impl(size)) _Post_valid_impl_) #define _Post_bytecount_(size) _SAL1_1_Source_(_Post_bytecount_, (size), _Post1_impl_(__bytecount_impl(size)) _Post_valid_impl_) #define _Post_count_c_(size) _SAL1_1_Source_(_Post_count_c_, (size), _Post1_impl_(__count_c_impl(size)) _Post_valid_impl_) #define _Post_bytecount_c_(size) _SAL1_1_Source_(_Post_bytecount_c_, (size), _Post1_impl_(__bytecount_c_impl(size)) _Post_valid_impl_) #define _Post_count_x_(size) _SAL1_1_Source_(_Post_count_x_, (size), _Post1_impl_(__count_x_impl(size)) _Post_valid_impl_) #define _Post_bytecount_x_(size) _SAL1_1_Source_(_Post_bytecount_x_, (size), _Post1_impl_(__bytecount_x_impl(size)) _Post_valid_impl_) // e.g. size_t CopyStr( _In_z_ const char* szFrom, _Pre_cap_(cch) _Post_z_count_(return+1) char* szFrom, size_t cchFrom ); #define _Post_z_count_(size) _SAL1_1_Source_(_Post_z_count_, (size), _Post2_impl_(__zterm_impl,__count_impl(size)) _Post_valid_impl_) #define _Post_z_bytecount_(size) _SAL1_1_Source_(_Post_z_bytecount_, (size), _Post2_impl_(__zterm_impl,__bytecount_impl(size)) _Post_valid_impl_) #define _Post_z_count_c_(size) _SAL1_1_Source_(_Post_z_count_c_, (size), _Post2_impl_(__zterm_impl,__count_c_impl(size)) _Post_valid_impl_) #define _Post_z_bytecount_c_(size) _SAL1_1_Source_(_Post_z_bytecount_c_, (size), _Post2_impl_(__zterm_impl,__bytecount_c_impl(size)) _Post_valid_impl_) #define _Post_z_count_x_(size) _SAL1_1_Source_(_Post_z_count_x_, (size), _Post2_impl_(__zterm_impl,__count_x_impl(size)) _Post_valid_impl_) #define _Post_z_bytecount_x_(size) _SAL1_1_Source_(_Post_z_bytecount_x_, (size), _Post2_impl_(__zterm_impl,__bytecount_x_impl(size)) _Post_valid_impl_) // // _Prepost_ --- // // describing conditions that hold before and after the function call #define _Prepost_opt_z_ _SAL1_1_Source_(_Prepost_opt_z_, (), _Pre_opt_z_ _Post_z_) #define _Prepost_count_(size) _SAL1_1_Source_(_Prepost_count_, (size), _Pre_count_(size) _Post_count_(size)) #define _Prepost_opt_count_(size) _SAL1_1_Source_(_Prepost_opt_count_, (size), _Pre_opt_count_(size) _Post_count_(size)) #define _Prepost_bytecount_(size) _SAL1_1_Source_(_Prepost_bytecount_, (size), _Pre_bytecount_(size) _Post_bytecount_(size)) #define _Prepost_opt_bytecount_(size) _SAL1_1_Source_(_Prepost_opt_bytecount_, (size), _Pre_opt_bytecount_(size) _Post_bytecount_(size)) #define _Prepost_count_c_(size) _SAL1_1_Source_(_Prepost_count_c_, (size), _Pre_count_c_(size) _Post_count_c_(size)) #define _Prepost_opt_count_c_(size) _SAL1_1_Source_(_Prepost_opt_count_c_, (size), _Pre_opt_count_c_(size) _Post_count_c_(size)) #define _Prepost_bytecount_c_(size) _SAL1_1_Source_(_Prepost_bytecount_c_, (size), _Pre_bytecount_c_(size) _Post_bytecount_c_(size)) #define _Prepost_opt_bytecount_c_(size) _SAL1_1_Source_(_Prepost_opt_bytecount_c_, (size), _Pre_opt_bytecount_c_(size) _Post_bytecount_c_(size)) #define _Prepost_count_x_(size) _SAL1_1_Source_(_Prepost_count_x_, (size), _Pre_count_x_(size) _Post_count_x_(size)) #define _Prepost_opt_count_x_(size) _SAL1_1_Source_(_Prepost_opt_count_x_, (size), _Pre_opt_count_x_(size) _Post_count_x_(size)) #define _Prepost_bytecount_x_(size) _SAL1_1_Source_(_Prepost_bytecount_x_, (size), _Pre_bytecount_x_(size) _Post_bytecount_x_(size)) #define _Prepost_opt_bytecount_x_(size) _SAL1_1_Source_(_Prepost_opt_bytecount_x_, (size), _Pre_opt_bytecount_x_(size) _Post_bytecount_x_(size)) #define _Prepost_valid_ _SAL1_1_Source_(_Prepost_valid_, (), _Pre_valid_ _Post_valid_) #define _Prepost_opt_valid_ _SAL1_1_Source_(_Prepost_opt_valid_, (), _Pre_opt_valid_ _Post_valid_) // // _Deref_ --- // // short version for _Deref_pre_ _Deref_post_ // describing conditions for array elements or dereferenced pointer parameters that hold before and after the call #define _Deref_prepost_z_ _SAL1_1_Source_(_Deref_prepost_z_, (), _Deref_pre_z_ _Deref_post_z_) #define _Deref_prepost_opt_z_ _SAL1_1_Source_(_Deref_prepost_opt_z_, (), _Deref_pre_opt_z_ _Deref_post_opt_z_) #define _Deref_prepost_cap_(size) _SAL1_1_Source_(_Deref_prepost_cap_, (size), _Deref_pre_cap_(size) _Deref_post_cap_(size)) #define _Deref_prepost_opt_cap_(size) _SAL1_1_Source_(_Deref_prepost_opt_cap_, (size), _Deref_pre_opt_cap_(size) _Deref_post_opt_cap_(size)) #define _Deref_prepost_bytecap_(size) _SAL1_1_Source_(_Deref_prepost_bytecap_, (size), _Deref_pre_bytecap_(size) _Deref_post_bytecap_(size)) #define _Deref_prepost_opt_bytecap_(size) _SAL1_1_Source_(_Deref_prepost_opt_bytecap_, (size), _Deref_pre_opt_bytecap_(size) _Deref_post_opt_bytecap_(size)) #define _Deref_prepost_cap_x_(size) _SAL1_1_Source_(_Deref_prepost_cap_x_, (size), _Deref_pre_cap_x_(size) _Deref_post_cap_x_(size)) #define _Deref_prepost_opt_cap_x_(size) _SAL1_1_Source_(_Deref_prepost_opt_cap_x_, (size), _Deref_pre_opt_cap_x_(size) _Deref_post_opt_cap_x_(size)) #define _Deref_prepost_bytecap_x_(size) _SAL1_1_Source_(_Deref_prepost_bytecap_x_, (size), _Deref_pre_bytecap_x_(size) _Deref_post_bytecap_x_(size)) #define _Deref_prepost_opt_bytecap_x_(size) _SAL1_1_Source_(_Deref_prepost_opt_bytecap_x_, (size), _Deref_pre_opt_bytecap_x_(size) _Deref_post_opt_bytecap_x_(size)) #define _Deref_prepost_z_cap_(size) _SAL1_1_Source_(_Deref_prepost_z_cap_, (size), _Deref_pre_z_cap_(size) _Deref_post_z_cap_(size)) #define _Deref_prepost_opt_z_cap_(size) _SAL1_1_Source_(_Deref_prepost_opt_z_cap_, (size), _Deref_pre_opt_z_cap_(size) _Deref_post_opt_z_cap_(size)) #define _Deref_prepost_z_bytecap_(size) _SAL1_1_Source_(_Deref_prepost_z_bytecap_, (size), _Deref_pre_z_bytecap_(size) _Deref_post_z_bytecap_(size)) #define _Deref_prepost_opt_z_bytecap_(size) _SAL1_1_Source_(_Deref_prepost_opt_z_bytecap_, (size), _Deref_pre_opt_z_bytecap_(size) _Deref_post_opt_z_bytecap_(size)) #define _Deref_prepost_valid_cap_(size) _SAL1_1_Source_(_Deref_prepost_valid_cap_, (size), _Deref_pre_valid_cap_(size) _Deref_post_valid_cap_(size)) #define _Deref_prepost_opt_valid_cap_(size) _SAL1_1_Source_(_Deref_prepost_opt_valid_cap_, (size), _Deref_pre_opt_valid_cap_(size) _Deref_post_opt_valid_cap_(size)) #define _Deref_prepost_valid_bytecap_(size) _SAL1_1_Source_(_Deref_prepost_valid_bytecap_, (size), _Deref_pre_valid_bytecap_(size) _Deref_post_valid_bytecap_(size)) #define _Deref_prepost_opt_valid_bytecap_(size) _SAL1_1_Source_(_Deref_prepost_opt_valid_bytecap_, (size), _Deref_pre_opt_valid_bytecap_(size) _Deref_post_opt_valid_bytecap_(size)) #define _Deref_prepost_valid_cap_x_(size) _SAL1_1_Source_(_Deref_prepost_valid_cap_x_, (size), _Deref_pre_valid_cap_x_(size) _Deref_post_valid_cap_x_(size)) #define _Deref_prepost_opt_valid_cap_x_(size) _SAL1_1_Source_(_Deref_prepost_opt_valid_cap_x_, (size), _Deref_pre_opt_valid_cap_x_(size) _Deref_post_opt_valid_cap_x_(size)) #define _Deref_prepost_valid_bytecap_x_(size) _SAL1_1_Source_(_Deref_prepost_valid_bytecap_x_, (size), _Deref_pre_valid_bytecap_x_(size) _Deref_post_valid_bytecap_x_(size)) #define _Deref_prepost_opt_valid_bytecap_x_(size) _SAL1_1_Source_(_Deref_prepost_opt_valid_bytecap_x_, (size), _Deref_pre_opt_valid_bytecap_x_(size) _Deref_post_opt_valid_bytecap_x_(size)) #define _Deref_prepost_count_(size) _SAL1_1_Source_(_Deref_prepost_count_, (size), _Deref_pre_count_(size) _Deref_post_count_(size)) #define _Deref_prepost_opt_count_(size) _SAL1_1_Source_(_Deref_prepost_opt_count_, (size), _Deref_pre_opt_count_(size) _Deref_post_opt_count_(size)) #define _Deref_prepost_bytecount_(size) _SAL1_1_Source_(_Deref_prepost_bytecount_, (size), _Deref_pre_bytecount_(size) _Deref_post_bytecount_(size)) #define _Deref_prepost_opt_bytecount_(size) _SAL1_1_Source_(_Deref_prepost_opt_bytecount_, (size), _Deref_pre_opt_bytecount_(size) _Deref_post_opt_bytecount_(size)) #define _Deref_prepost_count_x_(size) _SAL1_1_Source_(_Deref_prepost_count_x_, (size), _Deref_pre_count_x_(size) _Deref_post_count_x_(size)) #define _Deref_prepost_opt_count_x_(size) _SAL1_1_Source_(_Deref_prepost_opt_count_x_, (size), _Deref_pre_opt_count_x_(size) _Deref_post_opt_count_x_(size)) #define _Deref_prepost_bytecount_x_(size) _SAL1_1_Source_(_Deref_prepost_bytecount_x_, (size), _Deref_pre_bytecount_x_(size) _Deref_post_bytecount_x_(size)) #define _Deref_prepost_opt_bytecount_x_(size) _SAL1_1_Source_(_Deref_prepost_opt_bytecount_x_, (size), _Deref_pre_opt_bytecount_x_(size) _Deref_post_opt_bytecount_x_(size)) #define _Deref_prepost_valid_ _SAL1_1_Source_(_Deref_prepost_valid_, (), _Deref_pre_valid_ _Deref_post_valid_) #define _Deref_prepost_opt_valid_ _SAL1_1_Source_(_Deref_prepost_opt_valid_, (), _Deref_pre_opt_valid_ _Deref_post_opt_valid_) // // _Deref_ // // used with references to arrays #define _Deref_out_z_cap_c_(size) _SAL1_1_Source_(_Deref_out_z_cap_c_, (size), _Deref_pre_cap_c_(size) _Deref_post_z_) #define _Deref_inout_z_cap_c_(size) _SAL1_1_Source_(_Deref_inout_z_cap_c_, (size), _Deref_pre_z_cap_c_(size) _Deref_post_z_) #define _Deref_out_z_bytecap_c_(size) _SAL1_1_Source_(_Deref_out_z_bytecap_c_, (size), _Deref_pre_bytecap_c_(size) _Deref_post_z_) #define _Deref_inout_z_bytecap_c_(size) _SAL1_1_Source_(_Deref_inout_z_bytecap_c_, (size), _Deref_pre_z_bytecap_c_(size) _Deref_post_z_) #define _Deref_inout_z_ _SAL1_1_Source_(_Deref_inout_z_, (), _Deref_prepost_z_) // #pragma endregion Input Buffer SAL 1 compatibility macros //============================================================================ // Implementation Layer: //============================================================================ // Naming conventions: // A symbol the begins with _SA_ is for the machinery of creating any // annotations; many of those come from sourceannotations.h in the case // of attributes. // A symbol that ends with _impl is the very lowest level macro. It is // not required to be a legal standalone annotation, and in the case // of attribute annotations, usually is not. (In the case of some declspec // annotations, it might be, but it should not be assumed so.) Those // symols will be used in the _PreN..., _PostN... and _RetN... annotations // to build up more complete annotations. // A symbol ending in _impl_ is reserved to the implementation as well, // but it does form a complete annotation; usually they are used to build // up even higher level annotations. #if _USE_ATTRIBUTES_FOR_SAL || _USE_DECLSPECS_FOR_SAL // [ // Sharable "_impl" macros: these can be shared between the various annotation // forms but are part of the implementation of the macros. These are collected // here to assure that only necessary differences in the annotations // exist. #define _Always_impl_(annos) _Group_(annos _SAL_nop_impl_) _On_failure_impl_(annos _SAL_nop_impl_) #define _Bound_impl_ _SA_annotes0(SAL_bound) #define _Field_range_impl_(min,max) _Range_impl_(min,max) #define _Literal_impl_ _SA_annotes1(SAL_constant, __yes) #define _Maybenull_impl_ _SA_annotes1(SAL_null, __maybe) #define _Maybevalid_impl_ _SA_annotes1(SAL_valid, __maybe) #define _Must_inspect_impl_ _Post_impl_ _SA_annotes0(SAL_mustInspect) #define _Notliteral_impl_ _SA_annotes1(SAL_constant, __no) #define _Notnull_impl_ _SA_annotes1(SAL_null, __no) #define _Notvalid_impl_ _SA_annotes1(SAL_valid, __no) #define _NullNull_terminated_impl_ _Group_(_SA_annotes1(SAL_nullTerminated, __yes) _SA_annotes1(SAL_readableTo,inexpressibleCount("NullNull terminated string"))) #define _Null_impl_ _SA_annotes1(SAL_null, __yes) #define _Null_terminated_impl_ _SA_annotes1(SAL_nullTerminated, __yes) #define _Out_impl_ _Pre1_impl_(__notnull_impl_notref) _Pre1_impl_(__cap_c_one_notref_impl) _Post_valid_impl_ #define _Out_opt_impl_ _Pre1_impl_(__maybenull_impl_notref) _Pre1_impl_(__cap_c_one_notref_impl) _Post_valid_impl_ #define _Points_to_data_impl_ _At_(*_Curr_, _SA_annotes1(SAL_mayBePointer, __no)) #define _Post_satisfies_impl_(cond) _Post_impl_ _Satisfies_impl_(cond) #define _Post_valid_impl_ _Post1_impl_(__valid_impl) #define _Pre_satisfies_impl_(cond) _Pre_impl_ _Satisfies_impl_(cond) #define _Pre_valid_impl_ _Pre1_impl_(__valid_impl) #define _Range_impl_(min,max) _SA_annotes2(SAL_range, min, max) #define _Readable_bytes_impl_(size) _SA_annotes1(SAL_readableTo, byteCount(size)) #define _Readable_elements_impl_(size) _SA_annotes1(SAL_readableTo, elementCount(size)) #define _Ret_valid_impl_ _Ret1_impl_(__valid_impl) #define _Satisfies_impl_(cond) _SA_annotes1(SAL_satisfies, cond) #define _Valid_impl_ _SA_annotes1(SAL_valid, __yes) #define _Writable_bytes_impl_(size) _SA_annotes1(SAL_writableTo, byteCount(size)) #define _Writable_elements_impl_(size) _SA_annotes1(SAL_writableTo, elementCount(size)) #define _In_range_impl_(min,max) _Pre_impl_ _Range_impl_(min,max) #define _Out_range_impl_(min,max) _Post_impl_ _Range_impl_(min,max) #define _Ret_range_impl_(min,max) _Post_impl_ _Range_impl_(min,max) #define _Deref_in_range_impl_(min,max) _Deref_pre_impl_ _Range_impl_(min,max) #define _Deref_out_range_impl_(min,max) _Deref_post_impl_ _Range_impl_(min,max) #define _Deref_ret_range_impl_(min,max) _Deref_post_impl_ _Range_impl_(min,max) #define _Deref_pre_impl_ _Pre_impl_ _Notref_impl_ _Deref_impl_ #define _Deref_post_impl_ _Post_impl_ _Notref_impl_ _Deref_impl_ // The following are for the implementation machinery, and are not // suitable for annotating general code. // We're tying to phase this out, someday. The parser quotes the param. #define __AuToQuOtE _SA_annotes0(SAL_AuToQuOtE) // Normally the parser does some simple type checking of annotation params, // defer that check to the plugin. #define __deferTypecheck _SA_annotes0(SAL_deferTypecheck) #define _SA_SPECSTRIZE( x ) #x #define _SAL_nop_impl_ /* nothing */ #define __nop_impl(x) x #endif #if _USE_ATTRIBUTES_FOR_SAL // [ // Using attributes for sal #include "codeanalysis\sourceannotations.h" #define _SA_annotes0(n) [SAL_annotes(Name=#n)] #define _SA_annotes1(n,pp1) [SAL_annotes(Name=#n, p1=_SA_SPECSTRIZE(pp1))] #define _SA_annotes2(n,pp1,pp2) [SAL_annotes(Name=#n, p1=_SA_SPECSTRIZE(pp1), p2=_SA_SPECSTRIZE(pp2))] #define _SA_annotes3(n,pp1,pp2,pp3) [SAL_annotes(Name=#n, p1=_SA_SPECSTRIZE(pp1), p2=_SA_SPECSTRIZE(pp2), p3=_SA_SPECSTRIZE(pp3))] #define _Pre_impl_ [SAL_pre] #define _Post_impl_ [SAL_post] #define _Deref_impl_ [SAL_deref] #define _Notref_impl_ [SAL_notref] // Declare a function to be an annotation or primop (respectively). // Done this way so that they don't appear in the regular compiler's // namespace. #define __ANNOTATION(fun) _SA_annotes0(SAL_annotation) void __SA_##fun; #define __PRIMOP(type, fun) _SA_annotes0(SAL_primop) type __SA_##fun; #define __QUALIFIER(fun) _SA_annotes0(SAL_qualifier) void __SA_##fun; // Benign declspec needed here for WindowsPREfast #define __In_impl_ [SA_Pre(Valid=SA_Yes)] [SA_Pre(Deref=1, Notref=1, Access=SA_Read)] __declspec("SAL_pre SAL_valid") #elif _USE_DECLSPECS_FOR_SAL // ][ // Using declspecs for sal #define _SA_annotes0(n) __declspec(#n) #define _SA_annotes1(n,pp1) __declspec(#n "(" _SA_SPECSTRIZE(pp1) ")" ) #define _SA_annotes2(n,pp1,pp2) __declspec(#n "(" _SA_SPECSTRIZE(pp1) "," _SA_SPECSTRIZE(pp2) ")") #define _SA_annotes3(n,pp1,pp2,pp3) __declspec(#n "(" _SA_SPECSTRIZE(pp1) "," _SA_SPECSTRIZE(pp2) "," _SA_SPECSTRIZE(pp3) ")") #define _Pre_impl_ _SA_annotes0(SAL_pre) #define _Post_impl_ _SA_annotes0(SAL_post) #define _Deref_impl_ _SA_annotes0(SAL_deref) #define _Notref_impl_ _SA_annotes0(SAL_notref) // Declare a function to be an annotation or primop (respectively). // Done this way so that they don't appear in the regular compiler's // namespace. #define __ANNOTATION(fun) _SA_annotes0(SAL_annotation) void __SA_##fun #define __PRIMOP(type, fun) _SA_annotes0(SAL_primop) type __SA_##fun #define __QUALIFIER(fun) _SA_annotes0(SAL_qualifier) void __SA_##fun; #define __In_impl_ _Pre_impl_ _SA_annotes0(SAL_valid) _Pre_impl_ _Deref_impl_ _Notref_impl_ _SA_annotes0(SAL_readonly) #else // ][ // Using "nothing" for sal #define _SA_annotes0(n) #define _SA_annotes1(n,pp1) #define _SA_annotes2(n,pp1,pp2) #define _SA_annotes3(n,pp1,pp2,pp3) #define __ANNOTATION(fun) #define __PRIMOP(type, fun) #define __QUALIFIER(type, fun) #endif // ] #if _USE_ATTRIBUTES_FOR_SAL || _USE_DECLSPECS_FOR_SAL // [ // Declare annotations that need to be declared. __ANNOTATION(SAL_useHeader(void)); __ANNOTATION(SAL_bound(void)); __ANNOTATION(SAL_allocator(void)); //??? resolve with PFD __ANNOTATION(SAL_file_parser(__AuToQuOtE __In_impl_ char *, __In_impl_ char *)); __ANNOTATION(SAL_source_code_content(__In_impl_ char *)); __ANNOTATION(SAL_analysisHint(__AuToQuOtE __In_impl_ char *)); __ANNOTATION(SAL_untrusted_data_source(__AuToQuOtE __In_impl_ char *)); __ANNOTATION(SAL_untrusted_data_source_this(__AuToQuOtE __In_impl_ char *)); __ANNOTATION(SAL_validated(__AuToQuOtE __In_impl_ char *)); __ANNOTATION(SAL_validated_this(__AuToQuOtE __In_impl_ char *)); __ANNOTATION(SAL_encoded(void)); __ANNOTATION(SAL_adt(__AuToQuOtE __In_impl_ char *, __AuToQuOtE __In_impl_ char *)); __ANNOTATION(SAL_add_adt_property(__AuToQuOtE __In_impl_ char *, __AuToQuOtE __In_impl_ char *)); __ANNOTATION(SAL_remove_adt_property(__AuToQuOtE __In_impl_ char *, __AuToQuOtE __In_impl_ char *)); __ANNOTATION(SAL_transfer_adt_property_from(__AuToQuOtE __In_impl_ char *)); __ANNOTATION(SAL_post_type(__AuToQuOtE __In_impl_ char *)); __ANNOTATION(SAL_volatile(void)); __ANNOTATION(SAL_nonvolatile(void)); __ANNOTATION(SAL_entrypoint(__AuToQuOtE __In_impl_ char *, __AuToQuOtE __In_impl_ char *)); __ANNOTATION(SAL_blocksOn(__In_impl_ void*)); __ANNOTATION(SAL_mustInspect(void)); // Only appears in model files, but needs to be declared. __ANNOTATION(SAL_TypeName(__AuToQuOtE __In_impl_ char *)); // To be declared well-known soon. __ANNOTATION(SAL_interlocked(void);) #pragma warning (suppress: 28227 28241) __ANNOTATION(SAL_name(__In_impl_ char *, __In_impl_ char *, __In_impl_ char *);) __PRIMOP(char *, _Macro_value_(__In_impl_ char *)); __PRIMOP(int, _Macro_defined_(__In_impl_ char *)); __PRIMOP(char *, _Strstr_(__In_impl_ char *, __In_impl_ char *)); #endif // ] #if _USE_ATTRIBUTES_FOR_SAL // [ #define _Check_return_impl_ [SA_Post(MustCheck=SA_Yes)] #define _Success_impl_(expr) [SA_Success(Condition=#expr)] #define _On_failure_impl_(annos) [SAL_context(p1="SAL_failed")] _Group_(_Post_impl_ _Group_(annos _SAL_nop_impl_)) #define _Printf_format_string_impl_ [SA_FormatString(Style="printf")] #define _Scanf_format_string_impl_ [SA_FormatString(Style="scanf")] #define _Scanf_s_format_string_impl_ [SA_FormatString(Style="scanf_s")] #define _In_bound_impl_ [SA_PreBound(Deref=0)] #define _Out_bound_impl_ [SA_PostBound(Deref=0)] #define _Ret_bound_impl_ [SA_PostBound(Deref=0)] #define _Deref_in_bound_impl_ [SA_PreBound(Deref=1)] #define _Deref_out_bound_impl_ [SA_PostBound(Deref=1)] #define _Deref_ret_bound_impl_ [SA_PostBound(Deref=1)] #define __valid_impl Valid=SA_Yes #define __maybevalid_impl Valid=SA_Maybe #define __notvalid_impl Valid=SA_No #define __null_impl Null=SA_Yes #define __maybenull_impl Null=SA_Maybe #define __notnull_impl Null=SA_No #define __null_impl_notref Null=SA_Yes,Notref=1 #define __maybenull_impl_notref Null=SA_Maybe,Notref=1 #define __notnull_impl_notref Null=SA_No,Notref=1 #define __zterm_impl NullTerminated=SA_Yes #define __maybezterm_impl NullTerminated=SA_Maybe #define __maybzterm_impl NullTerminated=SA_Maybe #define __notzterm_impl NullTerminated=SA_No #define __readaccess_impl Access=SA_Read #define __writeaccess_impl Access=SA_Write #define __allaccess_impl Access=SA_ReadWrite #define __readaccess_impl_notref Access=SA_Read,Notref=1 #define __writeaccess_impl_notref Access=SA_Write,Notref=1 #define __allaccess_impl_notref Access=SA_ReadWrite,Notref=1 #if _MSC_VER >= 1610 /*IFSTRIP=IGN*/ // [ // For SAL2, we need to expect general expressions. #define __cap_impl(size) WritableElements="\n"#size #define __bytecap_impl(size) WritableBytes="\n"#size #define __bytecount_impl(size) ValidBytes="\n"#size #define __count_impl(size) ValidElements="\n"#size #else // ][ #define __cap_impl(size) WritableElements=#size #define __bytecap_impl(size) WritableBytes=#size #define __bytecount_impl(size) ValidBytes=#size #define __count_impl(size) ValidElements=#size #endif // ] #define __cap_c_impl(size) WritableElementsConst=size #define __cap_c_one_notref_impl WritableElementsConst=1,Notref=1 #define __cap_for_impl(param) WritableElementsLength=#param #define __cap_x_impl(size) WritableElements="\n@"#size #define __bytecap_c_impl(size) WritableBytesConst=size #define __bytecap_x_impl(size) WritableBytes="\n@"#size #define __mult_impl(mult,size) __cap_impl((mult)*(size)) #define __count_c_impl(size) ValidElementsConst=size #define __count_x_impl(size) ValidElements="\n@"#size #define __bytecount_c_impl(size) ValidBytesConst=size #define __bytecount_x_impl(size) ValidBytes="\n@"#size #define _At_impl_(target, annos) [SAL_at(p1=#target)] _Group_(annos) #define _At_buffer_impl_(target, iter, bound, annos) [SAL_at_buffer(p1=#target, p2=#iter, p3=#bound)] _Group_(annos) #define _When_impl_(expr, annos) [SAL_when(p1=#expr)] _Group_(annos) #define _Group_impl_(annos) [SAL_begin] annos [SAL_end] #define _GrouP_impl_(annos) [SAL_BEGIN] annos [SAL_END] #define _Use_decl_anno_impl_ _SA_annotes0(SAL_useHeader) // this is a special case! #define _Pre1_impl_(p1) [SA_Pre(p1)] #define _Pre2_impl_(p1,p2) [SA_Pre(p1,p2)] #define _Pre3_impl_(p1,p2,p3) [SA_Pre(p1,p2,p3)] #define _Post1_impl_(p1) [SA_Post(p1)] #define _Post2_impl_(p1,p2) [SA_Post(p1,p2)] #define _Post3_impl_(p1,p2,p3) [SA_Post(p1,p2,p3)] #define _Ret1_impl_(p1) [SA_Post(p1)] #define _Ret2_impl_(p1,p2) [SA_Post(p1,p2)] #define _Ret3_impl_(p1,p2,p3) [SA_Post(p1,p2,p3)] #define _Deref_pre1_impl_(p1) [SA_Pre(Deref=1,p1)] #define _Deref_pre2_impl_(p1,p2) [SA_Pre(Deref=1,p1,p2)] #define _Deref_pre3_impl_(p1,p2,p3) [SA_Pre(Deref=1,p1,p2,p3)] #define _Deref_post1_impl_(p1) [SA_Post(Deref=1,p1)] #define _Deref_post2_impl_(p1,p2) [SA_Post(Deref=1,p1,p2)] #define _Deref_post3_impl_(p1,p2,p3) [SA_Post(Deref=1,p1,p2,p3)] #define _Deref_ret1_impl_(p1) [SA_Post(Deref=1,p1)] #define _Deref_ret2_impl_(p1,p2) [SA_Post(Deref=1,p1,p2)] #define _Deref_ret3_impl_(p1,p2,p3) [SA_Post(Deref=1,p1,p2,p3)] #define _Deref2_pre1_impl_(p1) [SA_Pre(Deref=2,Notref=1,p1)] #define _Deref2_post1_impl_(p1) [SA_Post(Deref=2,Notref=1,p1)] #define _Deref2_ret1_impl_(p1) [SA_Post(Deref=2,Notref=1,p1)] // Obsolete -- may be needed for transition to attributes. #define __inner_typefix(ctype) [SAL_typefix(p1=_SA_SPECSTRIZE(ctype))] #define __inner_exceptthat [SAL_except] #elif _USE_DECLSPECS_FOR_SAL // ][ #define _Check_return_impl_ __post _SA_annotes0(SAL_checkReturn) #define _Success_impl_(expr) _SA_annotes1(SAL_success, expr) #define _On_failure_impl_(annos) _SA_annotes1(SAL_context, SAL_failed) _Group_(_Post_impl_ _Group_(_SAL_nop_impl_ annos)) #define _Printf_format_string_impl_ _SA_annotes1(SAL_IsFormatString, "printf") #define _Scanf_format_string_impl_ _SA_annotes1(SAL_IsFormatString, "scanf") #define _Scanf_s_format_string_impl_ _SA_annotes1(SAL_IsFormatString, "scanf_s") #define _In_bound_impl_ _Pre_impl_ _Bound_impl_ #define _Out_bound_impl_ _Post_impl_ _Bound_impl_ #define _Ret_bound_impl_ _Post_impl_ _Bound_impl_ #define _Deref_in_bound_impl_ _Deref_pre_impl_ _Bound_impl_ #define _Deref_out_bound_impl_ _Deref_post_impl_ _Bound_impl_ #define _Deref_ret_bound_impl_ _Deref_post_impl_ _Bound_impl_ #define __null_impl _SA_annotes0(SAL_null) // _SA_annotes1(SAL_null, __yes) #define __notnull_impl _SA_annotes0(SAL_notnull) // _SA_annotes1(SAL_null, __no) #define __maybenull_impl _SA_annotes0(SAL_maybenull) // _SA_annotes1(SAL_null, __maybe) #define __valid_impl _SA_annotes0(SAL_valid) // _SA_annotes1(SAL_valid, __yes) #define __notvalid_impl _SA_annotes0(SAL_notvalid) // _SA_annotes1(SAL_valid, __no) #define __maybevalid_impl _SA_annotes0(SAL_maybevalid) // _SA_annotes1(SAL_valid, __maybe) #define __null_impl_notref _Notref_ _Null_impl_ #define __maybenull_impl_notref _Notref_ _Maybenull_impl_ #define __notnull_impl_notref _Notref_ _Notnull_impl_ #define __zterm_impl _SA_annotes1(SAL_nullTerminated, __yes) #define __maybezterm_impl _SA_annotes1(SAL_nullTerminated, __maybe) #define __maybzterm_impl _SA_annotes1(SAL_nullTerminated, __maybe) #define __notzterm_impl _SA_annotes1(SAL_nullTerminated, __no) #define __readaccess_impl _SA_annotes1(SAL_access, 0x1) #define __writeaccess_impl _SA_annotes1(SAL_access, 0x2) #define __allaccess_impl _SA_annotes1(SAL_access, 0x3) #define __readaccess_impl_notref _Notref_ _SA_annotes1(SAL_access, 0x1) #define __writeaccess_impl_notref _Notref_ _SA_annotes1(SAL_access, 0x2) #define __allaccess_impl_notref _Notref_ _SA_annotes1(SAL_access, 0x3) #define __cap_impl(size) _SA_annotes1(SAL_writableTo,elementCount(size)) #define __cap_c_impl(size) _SA_annotes1(SAL_writableTo,elementCount(size)) #define __cap_c_one_notref_impl _Notref_ _SA_annotes1(SAL_writableTo,elementCount(1)) #define __cap_for_impl(param) _SA_annotes1(SAL_writableTo,inexpressibleCount(sizeof(param))) #define __cap_x_impl(size) _SA_annotes1(SAL_writableTo,inexpressibleCount(#size)) #define __bytecap_impl(size) _SA_annotes1(SAL_writableTo,byteCount(size)) #define __bytecap_c_impl(size) _SA_annotes1(SAL_writableTo,byteCount(size)) #define __bytecap_x_impl(size) _SA_annotes1(SAL_writableTo,inexpressibleCount(#size)) #define __mult_impl(mult,size) _SA_annotes1(SAL_writableTo,(mult)*(size)) #define __count_impl(size) _SA_annotes1(SAL_readableTo,elementCount(size)) #define __count_c_impl(size) _SA_annotes1(SAL_readableTo,elementCount(size)) #define __count_x_impl(size) _SA_annotes1(SAL_readableTo,inexpressibleCount(#size)) #define __bytecount_impl(size) _SA_annotes1(SAL_readableTo,byteCount(size)) #define __bytecount_c_impl(size) _SA_annotes1(SAL_readableTo,byteCount(size)) #define __bytecount_x_impl(size) _SA_annotes1(SAL_readableTo,inexpressibleCount(#size)) #define _At_impl_(target, annos) _SA_annotes0(SAL_at(target)) _Group_(annos) #define _At_buffer_impl_(target, iter, bound, annos) _SA_annotes3(SAL_at_buffer, target, iter, bound) _Group_(annos) #define _Group_impl_(annos) _SA_annotes0(SAL_begin) annos _SA_annotes0(SAL_end) #define _GrouP_impl_(annos) _SA_annotes0(SAL_BEGIN) annos _SA_annotes0(SAL_END) #define _When_impl_(expr, annos) _SA_annotes0(SAL_when(expr)) _Group_(annos) #define _Use_decl_anno_impl_ __declspec("SAL_useHeader()") // this is a special case! #define _Pre1_impl_(p1) _Pre_impl_ p1 #define _Pre2_impl_(p1,p2) _Pre_impl_ p1 _Pre_impl_ p2 #define _Pre3_impl_(p1,p2,p3) _Pre_impl_ p1 _Pre_impl_ p2 _Pre_impl_ p3 #define _Post1_impl_(p1) _Post_impl_ p1 #define _Post2_impl_(p1,p2) _Post_impl_ p1 _Post_impl_ p2 #define _Post3_impl_(p1,p2,p3) _Post_impl_ p1 _Post_impl_ p2 _Post_impl_ p3 #define _Ret1_impl_(p1) _Post_impl_ p1 #define _Ret2_impl_(p1,p2) _Post_impl_ p1 _Post_impl_ p2 #define _Ret3_impl_(p1,p2,p3) _Post_impl_ p1 _Post_impl_ p2 _Post_impl_ p3 #define _Deref_pre1_impl_(p1) _Deref_pre_impl_ p1 #define _Deref_pre2_impl_(p1,p2) _Deref_pre_impl_ p1 _Deref_pre_impl_ p2 #define _Deref_pre3_impl_(p1,p2,p3) _Deref_pre_impl_ p1 _Deref_pre_impl_ p2 _Deref_pre_impl_ p3 #define _Deref_post1_impl_(p1) _Deref_post_impl_ p1 #define _Deref_post2_impl_(p1,p2) _Deref_post_impl_ p1 _Deref_post_impl_ p2 #define _Deref_post3_impl_(p1,p2,p3) _Deref_post_impl_ p1 _Deref_post_impl_ p2 _Deref_post_impl_ p3 #define _Deref_ret1_impl_(p1) _Deref_post_impl_ p1 #define _Deref_ret2_impl_(p1,p2) _Deref_post_impl_ p1 _Deref_post_impl_ p2 #define _Deref_ret3_impl_(p1,p2,p3) _Deref_post_impl_ p1 _Deref_post_impl_ p2 _Deref_post_impl_ p3 #define _Deref2_pre1_impl_(p1) _Deref_pre_impl_ _Notref_impl_ _Deref_impl_ p1 #define _Deref2_post1_impl_(p1) _Deref_post_impl_ _Notref_impl_ _Deref_impl_ p1 #define _Deref2_ret1_impl_(p1) _Deref_post_impl_ _Notref_impl_ _Deref_impl_ p1 #define __inner_typefix(ctype) _SA_annotes1(SAL_typefix, ctype) #define __inner_exceptthat _SA_annotes0(SAL_except) #elif defined(_MSC_EXTENSIONS) && !defined( MIDL_PASS ) && !defined(__midl) && !defined(RC_INVOKED) && defined(_PFT_VER) && _MSC_VER >= 1400 /*IFSTRIP=IGN*/ // ][ // minimum attribute expansion for foreground build #pragma push_macro( "SA" ) #pragma push_macro( "REPEATABLE" ) #ifdef __cplusplus // [ #define SA( id ) id #define REPEATABLE [repeatable] #else // !__cplusplus // ][ #define SA( id ) SA_##id #define REPEATABLE #endif // !__cplusplus // ] REPEATABLE [source_annotation_attribute( SA( Parameter ) )] struct __P_impl { #ifdef __cplusplus // [ __P_impl(); #endif // ] int __d_; }; typedef struct __P_impl __P_impl; REPEATABLE [source_annotation_attribute( SA( ReturnValue ) )] struct __R_impl { #ifdef __cplusplus // [ __R_impl(); #endif // ] int __d_; }; typedef struct __R_impl __R_impl; [source_annotation_attribute( SA( Method ) )] struct __M_ { #ifdef __cplusplus // [ __M_(); #endif // ] int __d_; }; typedef struct __M_ __M_; [source_annotation_attribute( SA( All ) )] struct __A_ { #ifdef __cplusplus // [ __A_(); #endif // ] int __d_; }; typedef struct __A_ __A_; [source_annotation_attribute( SA( Field ) )] struct __F_ { #ifdef __cplusplus // [ __F_(); #endif // ] int __d_; }; typedef struct __F_ __F_; #pragma pop_macro( "REPEATABLE" ) #pragma pop_macro( "SA" ) #define _SAL_nop_impl_ #define _At_impl_(target, annos) [__A_(__d_=0)] #define _At_buffer_impl_(target, iter, bound, annos) [__A_(__d_=0)] #define _When_impl_(expr, annos) annos #define _Group_impl_(annos) annos #define _GrouP_impl_(annos) annos #define _Use_decl_anno_impl_ [__M_(__d_=0)] #define _Points_to_data_impl_ [__P_impl(__d_=0)] #define _Literal_impl_ [__P_impl(__d_=0)] #define _Notliteral_impl_ [__P_impl(__d_=0)] #define _Pre_valid_impl_ [__P_impl(__d_=0)] #define _Post_valid_impl_ [__P_impl(__d_=0)] #define _Ret_valid_impl_ [__R_impl(__d_=0)] #define _Check_return_impl_ [__R_impl(__d_=0)] #define _Must_inspect_impl_ [__R_impl(__d_=0)] #define _Success_impl_(expr) [__M_(__d_=0)] #define _On_failure_impl_(expr) [__M_(__d_=0)] #define _Always_impl_(expr) [__M_(__d_=0)] #define _Printf_format_string_impl_ [__P_impl(__d_=0)] #define _Scanf_format_string_impl_ [__P_impl(__d_=0)] #define _Scanf_s_format_string_impl_ [__P_impl(__d_=0)] #define _Raises_SEH_exception_impl_ [__M_(__d_=0)] #define _Maybe_raises_SEH_exception_impl_ [__M_(__d_=0)] #define _In_bound_impl_ [__P_impl(__d_=0)] #define _Out_bound_impl_ [__P_impl(__d_=0)] #define _Ret_bound_impl_ [__R_impl(__d_=0)] #define _Deref_in_bound_impl_ [__P_impl(__d_=0)] #define _Deref_out_bound_impl_ [__P_impl(__d_=0)] #define _Deref_ret_bound_impl_ [__R_impl(__d_=0)] #define _Range_impl_(min,max) [__P_impl(__d_=0)] #define _In_range_impl_(min,max) [__P_impl(__d_=0)] #define _Out_range_impl_(min,max) [__P_impl(__d_=0)] #define _Ret_range_impl_(min,max) [__R_impl(__d_=0)] #define _Deref_in_range_impl_(min,max) [__P_impl(__d_=0)] #define _Deref_out_range_impl_(min,max) [__P_impl(__d_=0)] #define _Deref_ret_range_impl_(min,max) [__R_impl(__d_=0)] #define _Field_range_impl_(min,max) [__F_(__d_=0)] #define _Pre_satisfies_impl_(cond) [__A_(__d_=0)] #define _Post_satisfies_impl_(cond) [__A_(__d_=0)] #define _Satisfies_impl_(cond) [__A_(__d_=0)] #define _Null_impl_ [__A_(__d_=0)] #define _Notnull_impl_ [__A_(__d_=0)] #define _Maybenull_impl_ [__A_(__d_=0)] #define _Valid_impl_ [__A_(__d_=0)] #define _Notvalid_impl_ [__A_(__d_=0)] #define _Maybevalid_impl_ [__A_(__d_=0)] #define _Readable_bytes_impl_(size) [__A_(__d_=0)] #define _Readable_elements_impl_(size) [__A_(__d_=0)] #define _Writable_bytes_impl_(size) [__A_(__d_=0)] #define _Writable_elements_impl_(size) [__A_(__d_=0)] #define _Null_terminated_impl_ [__A_(__d_=0)] #define _NullNull_terminated_impl_ [__A_(__d_=0)] #define _Pre_impl_ [__P_impl(__d_=0)] #define _Pre1_impl_(p1) [__P_impl(__d_=0)] #define _Pre2_impl_(p1,p2) [__P_impl(__d_=0)] #define _Pre3_impl_(p1,p2,p3) [__P_impl(__d_=0)] #define _Post_impl_ [__P_impl(__d_=0)] #define _Post1_impl_(p1) [__P_impl(__d_=0)] #define _Post2_impl_(p1,p2) [__P_impl(__d_=0)] #define _Post3_impl_(p1,p2,p3) [__P_impl(__d_=0)] #define _Ret1_impl_(p1) [__R_impl(__d_=0)] #define _Ret2_impl_(p1,p2) [__R_impl(__d_=0)] #define _Ret3_impl_(p1,p2,p3) [__R_impl(__d_=0)] #define _Deref_pre1_impl_(p1) [__P_impl(__d_=0)] #define _Deref_pre2_impl_(p1,p2) [__P_impl(__d_=0)] #define _Deref_pre3_impl_(p1,p2,p3) [__P_impl(__d_=0)] #define _Deref_post1_impl_(p1) [__P_impl(__d_=0)] #define _Deref_post2_impl_(p1,p2) [__P_impl(__d_=0)] #define _Deref_post3_impl_(p1,p2,p3) [__P_impl(__d_=0)] #define _Deref_ret1_impl_(p1) [__R_impl(__d_=0)] #define _Deref_ret2_impl_(p1,p2) [__R_impl(__d_=0)] #define _Deref_ret3_impl_(p1,p2,p3) [__R_impl(__d_=0)] #define _Deref2_pre1_impl_(p1) //[__P_impl(__d_=0)] #define _Deref2_post1_impl_(p1) //[__P_impl(__d_=0)] #define _Deref2_ret1_impl_(p1) //[__P_impl(__d_=0)] #else // ][ #define _SAL_nop_impl_ X #define _At_impl_(target, annos) #define _When_impl_(expr, annos) #define _Group_impl_(annos) #define _GrouP_impl_(annos) #define _At_buffer_impl_(target, iter, bound, annos) #define _Use_decl_anno_impl_ #define _Points_to_data_impl_ #define _Literal_impl_ #define _Notliteral_impl_ #define _Notref_impl_ #define _Pre_valid_impl_ #define _Post_valid_impl_ #define _Ret_valid_impl_ #define _Check_return_impl_ #define _Must_inspect_impl_ #define _Success_impl_(expr) #define _On_failure_impl_(annos) #define _Always_impl_(annos) #define _Printf_format_string_impl_ #define _Scanf_format_string_impl_ #define _Scanf_s_format_string_impl_ #define _In_bound_impl_ #define _Out_bound_impl_ #define _Ret_bound_impl_ #define _Deref_in_bound_impl_ #define _Deref_out_bound_impl_ #define _Deref_ret_bound_impl_ #define _Range_impl_(min,max) #define _In_range_impl_(min,max) #define _Out_range_impl_(min,max) #define _Ret_range_impl_(min,max) #define _Deref_in_range_impl_(min,max) #define _Deref_out_range_impl_(min,max) #define _Deref_ret_range_impl_(min,max) #define _Satisfies_impl_(expr) #define _Pre_satisfies_impl_(expr) #define _Post_satisfies_impl_(expr) #define _Null_impl_ #define _Notnull_impl_ #define _Maybenull_impl_ #define _Valid_impl_ #define _Notvalid_impl_ #define _Maybevalid_impl_ #define _Field_range_impl_(min,max) #define _Pre_impl_ #define _Pre1_impl_(p1) #define _Pre2_impl_(p1,p2) #define _Pre3_impl_(p1,p2,p3) #define _Post_impl_ #define _Post1_impl_(p1) #define _Post2_impl_(p1,p2) #define _Post3_impl_(p1,p2,p3) #define _Ret1_impl_(p1) #define _Ret2_impl_(p1,p2) #define _Ret3_impl_(p1,p2,p3) #define _Deref_pre1_impl_(p1) #define _Deref_pre2_impl_(p1,p2) #define _Deref_pre3_impl_(p1,p2,p3) #define _Deref_post1_impl_(p1) #define _Deref_post2_impl_(p1,p2) #define _Deref_post3_impl_(p1,p2,p3) #define _Deref_ret1_impl_(p1) #define _Deref_ret2_impl_(p1,p2) #define _Deref_ret3_impl_(p1,p2,p3) #define _Deref2_pre1_impl_(p1) #define _Deref2_post1_impl_(p1) #define _Deref2_ret1_impl_(p1) #define _Readable_bytes_impl_(size) #define _Readable_elements_impl_(size) #define _Writable_bytes_impl_(size) #define _Writable_elements_impl_(size) #define _Null_terminated_impl_ #define _NullNull_terminated_impl_ // Obsolete -- may be needed for transition to attributes. #define __inner_typefix(ctype) #define __inner_exceptthat #endif // ] // This section contains the deprecated annotations /* ------------------------------------------------------------------------------- Introduction sal.h provides a set of annotations to describe how a function uses its parameters - the assumptions it makes about them, and the guarantees it makes upon finishing. Annotations may be placed before either a function parameter's type or its return type, and describe the function's behavior regarding the parameter or return value. There are two classes of annotations: buffer annotations and advanced annotations. Buffer annotations describe how functions use their pointer parameters, and advanced annotations either describe complex/unusual buffer behavior, or provide additional information about a parameter that is not otherwise expressible. ------------------------------------------------------------------------------- Buffer Annotations The most important annotations in sal.h provide a consistent way to annotate buffer parameters or return values for a function. Each of these annotations describes a single buffer (which could be a string, a fixed-length or variable-length array, or just a pointer) that the function interacts with: where it is, how large it is, how much is initialized, and what the function does with it. The appropriate macro for a given buffer can be constructed using the table below. Just pick the appropriate values from each category, and combine them together with a leading underscore. Some combinations of values do not make sense as buffer annotations. Only meaningful annotations can be added to your code; for a list of these, see the buffer annotation definitions section. Only a single buffer annotation should be used for each parameter. |------------|------------|---------|--------|----------|----------|---------------| | Level | Usage | Size | Output | NullTerm | Optional | Parameters | |------------|------------|---------|--------|----------|----------|---------------| | <> | <> | <> | <> | _z | <> | <> | | _deref | _in | _ecount | _full | _nz | _opt | (size) | | _deref_opt | _out | _bcount | _part | | | (size,length) | | | _inout | | | | | | | | | | | | | | |------------|------------|---------|--------|----------|----------|---------------| Level: Describes the buffer pointer's level of indirection from the parameter or return value 'p'. <> : p is the buffer pointer. _deref : *p is the buffer pointer. p must not be NULL. _deref_opt : *p may be the buffer pointer. p may be NULL, in which case the rest of the annotation is ignored. Usage: Describes how the function uses the buffer. <> : The buffer is not accessed. If used on the return value or with _deref, the function will provide the buffer, and it will be uninitialized at exit. Otherwise, the caller must provide the buffer. This should only be used for alloc and free functions. _in : The function will only read from the buffer. The caller must provide the buffer and initialize it. Cannot be used with _deref. _out : The function will only write to the buffer. If used on the return value or with _deref, the function will provide the buffer and initialize it. Otherwise, the caller must provide the buffer, and the function will initialize it. _inout : The function may freely read from and write to the buffer. The caller must provide the buffer and initialize it. If used with _deref, the buffer may be reallocated by the function. Size: Describes the total size of the buffer. This may be less than the space actually allocated for the buffer, in which case it describes the accessible amount. <> : No buffer size is given. If the type specifies the buffer size (such as with LPSTR and LPWSTR), that amount is used. Otherwise, the buffer is one element long. Must be used with _in, _out, or _inout. _ecount : The buffer size is an explicit element count. _bcount : The buffer size is an explicit byte count. Output: Describes how much of the buffer will be initialized by the function. For _inout buffers, this also describes how much is initialized at entry. Omit this category for _in buffers; they must be fully initialized by the caller. <> : The type specifies how much is initialized. For instance, a function initializing an LPWSTR must NULL-terminate the string. _full : The function initializes the entire buffer. _part : The function initializes part of the buffer, and explicitly indicates how much. NullTerm: States if the present of a '\0' marks the end of valid elements in the buffer. _z : A '\0' indicated the end of the buffer _nz : The buffer may not be null terminated and a '\0' does not indicate the end of the buffer. Optional: Describes if the buffer itself is optional. <> : The pointer to the buffer must not be NULL. _opt : The pointer to the buffer might be NULL. It will be checked before being dereferenced. Parameters: Gives explicit counts for the size and length of the buffer. <> : There is no explicit count. Use when neither _ecount nor _bcount is used. (size) : Only the buffer's total size is given. Use with _ecount or _bcount but not _part. (size,length) : The buffer's total size and initialized length are given. Use with _ecount_part and _bcount_part. ------------------------------------------------------------------------------- Buffer Annotation Examples LWSTDAPI_(BOOL) StrToIntExA( __in LPCSTR pszString, DWORD dwFlags, __out int *piRet -- A pointer whose dereference will be filled in. ); void MyPaintingFunction( __in HWND hwndControl, -- An initialized read-only parameter. __in_opt HDC hdcOptional, -- An initialized read-only parameter that might be NULL. __inout IPropertyStore *ppsStore -- An initialized parameter that may be freely used -- and modified. ); LWSTDAPI_(BOOL) PathCompactPathExA( __out_ecount(cchMax) LPSTR pszOut, -- A string buffer with cch elements that will -- be NULL terminated on exit. __in LPCSTR pszSrc, UINT cchMax, DWORD dwFlags ); HRESULT SHLocalAllocBytes( size_t cb, __deref_bcount(cb) T **ppv -- A pointer whose dereference will be set to an -- uninitialized buffer with cb bytes. ); __inout_bcount_full(cb) : A buffer with cb elements that is fully initialized at entry and exit, and may be written to by this function. __out_ecount_part(count, *countOut) : A buffer with count elements that will be partially initialized by this function. The function indicates how much it initialized by setting *countOut. ------------------------------------------------------------------------------- Advanced Annotations Advanced annotations describe behavior that is not expressible with the regular buffer macros. These may be used either to annotate buffer parameters that involve complex or conditional behavior, or to enrich existing annotations with additional information. __success(expr) f : indicates whether function f succeeded or not. If is true at exit, all the function's guarantees (as given by other annotations) must hold. If is false at exit, the caller should not expect any of the function's guarantees to hold. If not used, the function must always satisfy its guarantees. Added automatically to functions that indicate success in standard ways, such as by returning an HRESULT. __nullterminated p : Pointer p is a buffer that may be read or written up to and including the first NULL character or pointer. May be used on typedefs, which marks valid (properly initialized) instances of that type as being NULL-terminated. __nullnullterminated p : Pointer p is a buffer that may be read or written up to and including the first sequence of two NULL characters or pointers. May be used on typedefs, which marks valid instances of that type as being double-NULL terminated. __reserved v : Value v must be 0/NULL, reserved for future use. __checkReturn v : Return value v must not be ignored by callers of this function. __typefix(ctype) v : Value v should be treated as an instance of ctype, rather than its declared type. __override f : Specify C#-style 'override' behaviour for overriding virtual methods. __callback f : Function f can be used as a function pointer. __format_string p : Pointer p is a string that contains % markers in the style of printf. __blocksOn(resource) f : Function f blocks on the resource 'resource'. FALLTHROUGH : Annotates switch statement labels where fall-through is desired, to distinguish from forgotten break statements. ------------------------------------------------------------------------------- Advanced Annotation Examples __success(return != FALSE) LWSTDAPI_(BOOL) PathCanonicalizeA(__out_ecount(MAX_PATH) LPSTR pszBuf, LPCSTR pszPath) : pszBuf is only guaranteed to be NULL-terminated when TRUE is returned. typedef __nullterminated WCHAR* LPWSTR : Initialized LPWSTRs are NULL-terminated strings. __out_ecount(cch) __typefix(LPWSTR) void *psz : psz is a buffer parameter which will be a NULL-terminated WCHAR string at exit, and which initially contains cch WCHARs. ------------------------------------------------------------------------------- */ #define __specstrings #ifdef __cplusplus // [ #ifndef __nothrow // [ # define __nothrow NOTHROW_DECL #endif // ] extern "C" { #else // ][ #ifndef __nothrow // [ # define __nothrow #endif // ] #endif /* #ifdef __cplusplus */ // ] /* ------------------------------------------------------------------------------- Helper Macro Definitions These express behavior common to many of the high-level annotations. DO NOT USE THESE IN YOUR CODE. ------------------------------------------------------------------------------- */ /* The helper annotations are only understood by the compiler version used by various defect detection tools. When the regular compiler is running, they are defined into nothing, and do not affect the compiled code. */ #if !defined(__midl) && defined(_PREFAST_) // [ /* In the primitive "SAL_*" annotations "SAL" stands for Standard Annotation Language. These "SAL_*" annotations are the primitives the compiler understands and high-level MACROs will decompose into these primivates. */ #define _SA_SPECSTRIZE( x ) #x /* __null p __notnull p __maybenull p Annotates a pointer p. States that pointer p is null. Commonly used in the negated form __notnull or the possibly null form __maybenull. */ #ifndef PAL_STDCPP_COMPAT #define __null _Null_impl_ #define __notnull _Notnull_impl_ #define __maybenull _Maybenull_impl_ #endif // !PAL_STDCPP_COMPAT /* __readonly l __notreadonly l __mabyereadonly l Annotates a location l. States that location l is not modified after this point. If the annotation is placed on the precondition state of a function, the restriction only applies until the postcondition state of the function. __maybereadonly states that the annotated location may be modified, whereas __notreadonly states that a location must be modified. */ #define __readonly _Pre1_impl_(__readaccess_impl) #define __notreadonly _Pre1_impl_(__allaccess_impl) #define __maybereadonly _Pre1_impl_(__readaccess_impl) /* __valid v __notvalid v __maybevalid v Annotates any value v. States that the value satisfies all properties of valid values of its type. For example, for a string buffer, valid means that the buffer pointer is either NULL or points to a NULL-terminated string. */ #define __valid _Valid_impl_ #define __notvalid _Notvalid_impl_ #define __maybevalid _Maybevalid_impl_ /* __readableTo(extent) p Annotates a buffer pointer p. If the buffer can be read, extent describes how much of the buffer is readable. For a reader of the buffer, this is an explicit permission to read up to that amount, rather than a restriction to read only up to it. */ #define __readableTo(extent) _SA_annotes1(SAL_readableTo, extent) /* __elem_readableTo(size) Annotates a buffer pointer p as being readable to size elements. */ #define __elem_readableTo(size) _SA_annotes1(SAL_readableTo, elementCount( size )) /* __byte_readableTo(size) Annotates a buffer pointer p as being readable to size bytes. */ #define __byte_readableTo(size) _SA_annotes1(SAL_readableTo, byteCount(size)) /* __writableTo(extent) p Annotates a buffer pointer p. If the buffer can be modified, extent describes how much of the buffer is writable (usually the allocation size). For a writer of the buffer, this is an explicit permission to write up to that amount, rather than a restriction to write only up to it. */ #define __writableTo(size) _SA_annotes1(SAL_writableTo, size) /* __elem_writableTo(size) Annotates a buffer pointer p as being writable to size elements. */ #define __elem_writableTo(size) _SA_annotes1(SAL_writableTo, elementCount( size )) /* __byte_writableTo(size) Annotates a buffer pointer p as being writable to size bytes. */ #define __byte_writableTo(size) _SA_annotes1(SAL_writableTo, byteCount( size)) /* __deref p Annotates a pointer p. The next annotation applies one dereference down in the type. If readableTo(p, size) then the next annotation applies to all elements *(p+i) for which i satisfies the size. If p is a pointer to a struct, the next annotation applies to all fields of the struct. */ #define __deref _Deref_impl_ /* __pre __next_annotation The next annotation applies in the precondition state */ #define __pre _Pre_impl_ /* __post __next_annotation The next annotation applies in the postcondition state */ #define __post _Post_impl_ /* __precond() When is true, the next annotation applies in the precondition state (currently not enabled) */ #define __precond(expr) __pre /* __postcond() When is true, the next annotation applies in the postcondition state (currently not enabled) */ #define __postcond(expr) __post /* __exceptthat Given a set of annotations Q containing __exceptthat maybeP, the effect of the except clause is to erase any P or notP annotations (explicit or implied) within Q at the same level of dereferencing that the except clause appears, and to replace it with maybeP. Example 1: __valid __pre_except_maybenull on a pointer p means that the pointer may be null, and is otherwise valid, thus overriding the implicit notnull annotation implied by __valid on pointers. Example 2: __valid __deref __pre_except_maybenull on an int **p means that p is not null (implied by valid), but the elements pointed to by p could be null, and are otherwise valid. */ #define __exceptthat __inner_exceptthat /* _refparam Added to all out parameter macros to indicate that they are all reference parameters. */ #define __refparam _Notref_ __deref __notreadonly /* __inner_* Helper macros that directly correspond to certain high-level annotations. */ /* Macros to classify the entrypoints and indicate their category. Pre-defined control point categories include: RPC, LPC, DeviceDriver, UserToKernel, ISAPI, COM. */ #define __inner_control_entrypoint(category) _SA_annotes2(SAL_entrypoint, controlEntry, category) /* Pre-defined data entry point categories include: Registry, File, Network. */ #define __inner_data_entrypoint(category) _SA_annotes2(SAL_entrypoint, dataEntry, category) #define __inner_override _SA_annotes0(__override) #define __inner_callback _SA_annotes0(__callback) #define __inner_blocksOn(resource) _SA_annotes1(SAL_blocksOn, resource) #define __post_except_maybenull __post __inner_exceptthat _Maybenull_impl_ #define __pre_except_maybenull __pre __inner_exceptthat _Maybenull_impl_ #define __post_deref_except_maybenull __post __deref __inner_exceptthat _Maybenull_impl_ #define __pre_deref_except_maybenull __pre __deref __inner_exceptthat _Maybenull_impl_ #define __inexpressible_readableTo(size) _Readable_elements_impl_(_Inexpressible_(size)) #define __inexpressible_writableTo(size) _Writable_elements_impl_(_Inexpressible_(size)) #else // ][ #ifndef PAL_STDCPP_COMPAT #define __null #define __notnull #define __deref #endif // !PAL_STDCPP_COMPAT #define __maybenull #define __readonly #define __notreadonly #define __maybereadonly #define __valid #define __notvalid #define __maybevalid #define __readableTo(extent) #define __elem_readableTo(size) #define __byte_readableTo(size) #define __writableTo(size) #define __elem_writableTo(size) #define __byte_writableTo(size) #define __pre #define __post #define __precond(expr) #define __postcond(expr) #define __exceptthat #define __inner_override #define __inner_callback #define __inner_blocksOn(resource) #define __refparam #define __inner_control_entrypoint(category) #define __inner_data_entrypoint(category) #define __post_except_maybenull #define __pre_except_maybenull #define __post_deref_except_maybenull #define __pre_deref_except_maybenull #define __inexpressible_readableTo(size) #define __inexpressible_writableTo(size) #endif /* #if !defined(__midl) && defined(_PREFAST_) */ // ] /* ------------------------------------------------------------------------------- Buffer Annotation Definitions Any of these may be used to directly annotate functions, but only one should be used for each parameter. To determine which annotation to use for a given buffer, use the table in the buffer annotations section. ------------------------------------------------------------------------------- */ // These macros conflict with c++ headers. #ifndef PAL_STDCPP_COMPAT #define __in _SAL1_Source_(__in, (), _In_) #define __out _SAL1_Source_(__out, (), _Out_) #endif // !PAL_STDCPP_COMPAT #define __ecount(size) _SAL1_Source_(__ecount, (size), __notnull __elem_writableTo(size)) #define __bcount(size) _SAL1_Source_(__bcount, (size), __notnull __byte_writableTo(size)) #define __in_ecount(size) _SAL1_Source_(__in_ecount, (size), _In_reads_(size)) #define __in_bcount(size) _SAL1_Source_(__in_bcount, (size), _In_reads_bytes_(size)) #define __in_z _SAL1_Source_(__in_z, (), _In_z_) #define __in_ecount_z(size) _SAL1_Source_(__in_ecount_z, (size), _In_reads_z_(size)) #define __in_bcount_z(size) _SAL1_Source_(__in_bcount_z, (size), __in_bcount(size) __pre __nullterminated) #define __in_nz _SAL1_Source_(__in_nz, (), __in) #define __in_ecount_nz(size) _SAL1_Source_(__in_ecount_nz, (size), __in_ecount(size)) #define __in_bcount_nz(size) _SAL1_Source_(__in_bcount_nz, (size), __in_bcount(size)) #define __out_ecount(size) _SAL1_Source_(__out_ecount, (size), _Out_writes_(size)) #define __out_bcount(size) _SAL1_Source_(__out_bcount, (size), _Out_writes_bytes_(size)) #define __out_ecount_part(size,length) _SAL1_Source_(__out_ecount_part, (size,length), _Out_writes_to_(size,length)) #define __out_bcount_part(size,length) _SAL1_Source_(__out_bcount_part, (size,length), _Out_writes_bytes_to_(size,length)) #define __out_ecount_full(size) _SAL1_Source_(__out_ecount_full, (size), _Out_writes_all_(size)) #define __out_bcount_full(size) _SAL1_Source_(__out_bcount_full, (size), _Out_writes_bytes_all_(size)) #define __out_z _SAL1_Source_(__out_z, (), __post __valid __refparam __post __nullterminated) #define __out_z_opt _SAL1_Source_(__out_z_opt, (), __post __valid __refparam __post __nullterminated __pre_except_maybenull) #define __out_ecount_z(size) _SAL1_Source_(__out_ecount_z, (size), __ecount(size) __post __valid __refparam __post __nullterminated) #define __out_bcount_z(size) _SAL1_Source_(__out_bcount_z, (size), __bcount(size) __post __valid __refparam __post __nullterminated) #define __out_ecount_part_z(size,length) _SAL1_Source_(__out_ecount_part_z, (size,length), __out_ecount_part(size,length) __post __nullterminated) #define __out_bcount_part_z(size,length) _SAL1_Source_(__out_bcount_part_z, (size,length), __out_bcount_part(size,length) __post __nullterminated) #define __out_ecount_full_z(size) _SAL1_Source_(__out_ecount_full_z, (size), __out_ecount_full(size) __post __nullterminated) #define __out_bcount_full_z(size) _SAL1_Source_(__out_bcount_full_z, (size), __out_bcount_full(size) __post __nullterminated) #define __out_nz _SAL1_Source_(__out_nz, (), __post __valid __refparam) #define __out_nz_opt _SAL1_Source_(__out_nz_opt, (), __post __valid __refparam __post_except_maybenull_) #define __out_ecount_nz(size) _SAL1_Source_(__out_ecount_nz, (size), __ecount(size) __post __valid __refparam) #define __out_bcount_nz(size) _SAL1_Source_(__out_bcount_nz, (size), __bcount(size) __post __valid __refparam) #define __inout _SAL1_Source_(__inout, (), _Inout_) #define __inout_ecount(size) _SAL1_Source_(__inout_ecount, (size), _Inout_updates_(size)) #define __inout_bcount(size) _SAL1_Source_(__inout_bcount, (size), _Inout_updates_bytes_(size)) #define __inout_ecount_part(size,length) _SAL1_Source_(__inout_ecount_part, (size,length), _Inout_updates_to_(size,length)) #define __inout_bcount_part(size,length) _SAL1_Source_(__inout_bcount_part, (size,length), _Inout_updates_bytes_to_(size,length)) #define __inout_ecount_full(size) _SAL1_Source_(__inout_ecount_full, (size), _Inout_updates_all_(size)) #define __inout_bcount_full(size) _SAL1_Source_(__inout_bcount_full, (size), _Inout_updates_bytes_all_(size)) #define __inout_z _SAL1_Source_(__inout_z, (), _Inout_z_) #define __inout_ecount_z(size) _SAL1_Source_(__inout_ecount_z, (size), _Inout_updates_z_(size)) #define __inout_bcount_z(size) _SAL1_Source_(__inout_bcount_z, (size), __inout_bcount(size) __pre __nullterminated __post __nullterminated) #define __inout_nz _SAL1_Source_(__inout_nz, (), __inout) #define __inout_ecount_nz(size) _SAL1_Source_(__inout_ecount_nz, (size), __inout_ecount(size)) #define __inout_bcount_nz(size) _SAL1_Source_(__inout_bcount_nz, (size), __inout_bcount(size)) #define __ecount_opt(size) _SAL1_Source_(__ecount_opt, (size), __ecount(size) __pre_except_maybenull) #define __bcount_opt(size) _SAL1_Source_(__bcount_opt, (size), __bcount(size) __pre_except_maybenull) #define __in_opt _SAL1_Source_(__in_opt, (), _In_opt_) #define __in_ecount_opt(size) _SAL1_Source_(__in_ecount_opt, (size), _In_reads_opt_(size)) #define __in_bcount_opt(size) _SAL1_Source_(__in_bcount_opt, (size), _In_reads_bytes_opt_(size)) #define __in_z_opt _SAL1_Source_(__in_z_opt, (), _In_opt_z_) #define __in_ecount_z_opt(size) _SAL1_Source_(__in_ecount_z_opt, (size), __in_ecount_opt(size) __pre __nullterminated) #define __in_bcount_z_opt(size) _SAL1_Source_(__in_bcount_z_opt, (size), __in_bcount_opt(size) __pre __nullterminated) #define __in_nz_opt _SAL1_Source_(__in_nz_opt, (), __in_opt) #define __in_ecount_nz_opt(size) _SAL1_Source_(__in_ecount_nz_opt, (size), __in_ecount_opt(size)) #define __in_bcount_nz_opt(size) _SAL1_Source_(__in_bcount_nz_opt, (size), __in_bcount_opt(size)) #define __out_opt _SAL1_Source_(__out_opt, (), _Out_opt_) #define __out_ecount_opt(size) _SAL1_Source_(__out_ecount_opt, (size), _Out_writes_opt_(size)) #define __out_bcount_opt(size) _SAL1_Source_(__out_bcount_opt, (size), _Out_writes_bytes_opt_(size)) #define __out_ecount_part_opt(size,length) _SAL1_Source_(__out_ecount_part_opt, (size,length), __out_ecount_part(size,length) __pre_except_maybenull) #define __out_bcount_part_opt(size,length) _SAL1_Source_(__out_bcount_part_opt, (size,length), __out_bcount_part(size,length) __pre_except_maybenull) #define __out_ecount_full_opt(size) _SAL1_Source_(__out_ecount_full_opt, (size), __out_ecount_full(size) __pre_except_maybenull) #define __out_bcount_full_opt(size) _SAL1_Source_(__out_bcount_full_opt, (size), __out_bcount_full(size) __pre_except_maybenull) #define __out_ecount_z_opt(size) _SAL1_Source_(__out_ecount_z_opt, (size), __out_ecount_opt(size) __post __nullterminated) #define __out_bcount_z_opt(size) _SAL1_Source_(__out_bcount_z_opt, (size), __out_bcount_opt(size) __post __nullterminated) #define __out_ecount_part_z_opt(size,length) _SAL1_Source_(__out_ecount_part_z_opt, (size,length), __out_ecount_part_opt(size,length) __post __nullterminated) #define __out_bcount_part_z_opt(size,length) _SAL1_Source_(__out_bcount_part_z_opt, (size,length), __out_bcount_part_opt(size,length) __post __nullterminated) #define __out_ecount_full_z_opt(size) _SAL1_Source_(__out_ecount_full_z_opt, (size), __out_ecount_full_opt(size) __post __nullterminated) #define __out_bcount_full_z_opt(size) _SAL1_Source_(__out_bcount_full_z_opt, (size), __out_bcount_full_opt(size) __post __nullterminated) #define __out_ecount_nz_opt(size) _SAL1_Source_(__out_ecount_nz_opt, (size), __out_ecount_opt(size) __post __nullterminated) #define __out_bcount_nz_opt(size) _SAL1_Source_(__out_bcount_nz_opt, (size), __out_bcount_opt(size) __post __nullterminated) #define __inout_opt _SAL1_Source_(__inout_opt, (), _Inout_opt_) #define __inout_ecount_opt(size) _SAL1_Source_(__inout_ecount_opt, (size), __inout_ecount(size) __pre_except_maybenull) #define __inout_bcount_opt(size) _SAL1_Source_(__inout_bcount_opt, (size), __inout_bcount(size) __pre_except_maybenull) #define __inout_ecount_part_opt(size,length) _SAL1_Source_(__inout_ecount_part_opt, (size,length), __inout_ecount_part(size,length) __pre_except_maybenull) #define __inout_bcount_part_opt(size,length) _SAL1_Source_(__inout_bcount_part_opt, (size,length), __inout_bcount_part(size,length) __pre_except_maybenull) #define __inout_ecount_full_opt(size) _SAL1_Source_(__inout_ecount_full_opt, (size), __inout_ecount_full(size) __pre_except_maybenull) #define __inout_bcount_full_opt(size) _SAL1_Source_(__inout_bcount_full_opt, (size), __inout_bcount_full(size) __pre_except_maybenull) #define __inout_z_opt _SAL1_Source_(__inout_z_opt, (), __inout_opt __pre __nullterminated __post __nullterminated) #define __inout_ecount_z_opt(size) _SAL1_Source_(__inout_ecount_z_opt, (size), __inout_ecount_opt(size) __pre __nullterminated __post __nullterminated) #define __inout_ecount_z_opt(size) _SAL1_Source_(__inout_ecount_z_opt, (size), __inout_ecount_opt(size) __pre __nullterminated __post __nullterminated) #define __inout_bcount_z_opt(size) _SAL1_Source_(__inout_bcount_z_opt, (size), __inout_bcount_opt(size)) #define __inout_nz_opt _SAL1_Source_(__inout_nz_opt, (), __inout_opt) #define __inout_ecount_nz_opt(size) _SAL1_Source_(__inout_ecount_nz_opt, (size), __inout_ecount_opt(size)) #define __inout_bcount_nz_opt(size) _SAL1_Source_(__inout_bcount_nz_opt, (size), __inout_bcount_opt(size)) #define __deref_ecount(size) _SAL1_Source_(__deref_ecount, (size), _Notref_ __ecount(1) __post _Notref_ __elem_readableTo(1) __post _Notref_ __deref _Notref_ __notnull __post __deref __elem_writableTo(size)) #define __deref_bcount(size) _SAL1_Source_(__deref_bcount, (size), _Notref_ __ecount(1) __post _Notref_ __elem_readableTo(1) __post _Notref_ __deref _Notref_ __notnull __post __deref __byte_writableTo(size)) #define __deref_out _SAL1_Source_(__deref_out, (), _Outptr_) #define __deref_out_ecount(size) _SAL1_Source_(__deref_out_ecount, (size), _Outptr_result_buffer_(size)) #define __deref_out_bcount(size) _SAL1_Source_(__deref_out_bcount, (size), _Outptr_result_bytebuffer_(size)) #define __deref_out_ecount_part(size,length) _SAL1_Source_(__deref_out_ecount_part, (size,length), _Outptr_result_buffer_to_(size,length)) #define __deref_out_bcount_part(size,length) _SAL1_Source_(__deref_out_bcount_part, (size,length), _Outptr_result_bytebuffer_to_(size,length)) #define __deref_out_ecount_full(size) _SAL1_Source_(__deref_out_ecount_full, (size), __deref_out_ecount_part(size,size)) #define __deref_out_bcount_full(size) _SAL1_Source_(__deref_out_bcount_full, (size), __deref_out_bcount_part(size,size)) #define __deref_out_z _SAL1_Source_(__deref_out_z, (), _Outptr_result_z_) #define __deref_out_ecount_z(size) _SAL1_Source_(__deref_out_ecount_z, (size), __deref_out_ecount(size) __post __deref __nullterminated) #define __deref_out_bcount_z(size) _SAL1_Source_(__deref_out_bcount_z, (size), __deref_out_bcount(size) __post __deref __nullterminated) #define __deref_out_nz _SAL1_Source_(__deref_out_nz, (), __deref_out) #define __deref_out_ecount_nz(size) _SAL1_Source_(__deref_out_ecount_nz, (size), __deref_out_ecount(size)) #define __deref_out_bcount_nz(size) _SAL1_Source_(__deref_out_bcount_nz, (size), __deref_out_ecount(size)) #define __deref_inout _SAL1_Source_(__deref_inout, (), _Notref_ __notnull _Notref_ __elem_readableTo(1) __pre __deref __valid __post _Notref_ __deref __valid __refparam) #define __deref_inout_z _SAL1_Source_(__deref_inout_z, (), __deref_inout __pre __deref __nullterminated __post _Notref_ __deref __nullterminated) #define __deref_inout_ecount(size) _SAL1_Source_(__deref_inout_ecount, (size), __deref_inout __pre __deref __elem_writableTo(size) __post _Notref_ __deref __elem_writableTo(size)) #define __deref_inout_bcount(size) _SAL1_Source_(__deref_inout_bcount, (size), __deref_inout __pre __deref __byte_writableTo(size) __post _Notref_ __deref __byte_writableTo(size)) #define __deref_inout_ecount_part(size,length) _SAL1_Source_(__deref_inout_ecount_part, (size,length), __deref_inout_ecount(size) __pre __deref __elem_readableTo(length) __post __deref __elem_readableTo(length)) #define __deref_inout_bcount_part(size,length) _SAL1_Source_(__deref_inout_bcount_part, (size,length), __deref_inout_bcount(size) __pre __deref __byte_readableTo(length) __post __deref __byte_readableTo(length)) #define __deref_inout_ecount_full(size) _SAL1_Source_(__deref_inout_ecount_full, (size), __deref_inout_ecount_part(size,size)) #define __deref_inout_bcount_full(size) _SAL1_Source_(__deref_inout_bcount_full, (size), __deref_inout_bcount_part(size,size)) #define __deref_inout_ecount_z(size) _SAL1_Source_(__deref_inout_ecount_z, (size), __deref_inout_ecount(size) __pre __deref __nullterminated __post __deref __nullterminated) #define __deref_inout_bcount_z(size) _SAL1_Source_(__deref_inout_bcount_z, (size), __deref_inout_bcount(size) __pre __deref __nullterminated __post __deref __nullterminated) #define __deref_inout_nz _SAL1_Source_(__deref_inout_nz, (), __deref_inout) #define __deref_inout_ecount_nz(size) _SAL1_Source_(__deref_inout_ecount_nz, (size), __deref_inout_ecount(size)) #define __deref_inout_bcount_nz(size) _SAL1_Source_(__deref_inout_bcount_nz, (size), __deref_inout_ecount(size)) #define __deref_ecount_opt(size) _SAL1_Source_(__deref_ecount_opt, (size), __deref_ecount(size) __post_deref_except_maybenull) #define __deref_bcount_opt(size) _SAL1_Source_(__deref_bcount_opt, (size), __deref_bcount(size) __post_deref_except_maybenull) #define __deref_out_opt _SAL1_Source_(__deref_out_opt, (), __deref_out __post_deref_except_maybenull) #define __deref_out_ecount_opt(size) _SAL1_Source_(__deref_out_ecount_opt, (size), __deref_out_ecount(size) __post_deref_except_maybenull) #define __deref_out_bcount_opt(size) _SAL1_Source_(__deref_out_bcount_opt, (size), __deref_out_bcount(size) __post_deref_except_maybenull) #define __deref_out_ecount_part_opt(size,length) _SAL1_Source_(__deref_out_ecount_part_opt, (size,length), __deref_out_ecount_part(size,length) __post_deref_except_maybenull) #define __deref_out_bcount_part_opt(size,length) _SAL1_Source_(__deref_out_bcount_part_opt, (size,length), __deref_out_bcount_part(size,length) __post_deref_except_maybenull) #define __deref_out_ecount_full_opt(size) _SAL1_Source_(__deref_out_ecount_full_opt, (size), __deref_out_ecount_full(size) __post_deref_except_maybenull) #define __deref_out_bcount_full_opt(size) _SAL1_Source_(__deref_out_bcount_full_opt, (size), __deref_out_bcount_full(size) __post_deref_except_maybenull) #define __deref_out_z_opt _SAL1_Source_(__deref_out_z_opt, (), _Outptr_result_maybenull_z_) #define __deref_out_ecount_z_opt(size) _SAL1_Source_(__deref_out_ecount_z_opt, (size), __deref_out_ecount_opt(size) __post __deref __nullterminated) #define __deref_out_bcount_z_opt(size) _SAL1_Source_(__deref_out_bcount_z_opt, (size), __deref_out_bcount_opt(size) __post __deref __nullterminated) #define __deref_out_nz_opt _SAL1_Source_(__deref_out_nz_opt, (), __deref_out_opt) #define __deref_out_ecount_nz_opt(size) _SAL1_Source_(__deref_out_ecount_nz_opt, (size), __deref_out_ecount_opt(size)) #define __deref_out_bcount_nz_opt(size) _SAL1_Source_(__deref_out_bcount_nz_opt, (size), __deref_out_bcount_opt(size)) #define __deref_inout_opt _SAL1_Source_(__deref_inout_opt, (), __deref_inout __pre_deref_except_maybenull __post_deref_except_maybenull) #define __deref_inout_ecount_opt(size) _SAL1_Source_(__deref_inout_ecount_opt, (size), __deref_inout_ecount(size) __pre_deref_except_maybenull __post_deref_except_maybenull) #define __deref_inout_bcount_opt(size) _SAL1_Source_(__deref_inout_bcount_opt, (size), __deref_inout_bcount(size) __pre_deref_except_maybenull __post_deref_except_maybenull) #define __deref_inout_ecount_part_opt(size,length) _SAL1_Source_(__deref_inout_ecount_part_opt, (size,length), __deref_inout_ecount_part(size,length) __pre_deref_except_maybenull __post_deref_except_maybenull) #define __deref_inout_bcount_part_opt(size,length) _SAL1_Source_(__deref_inout_bcount_part_opt, (size,length), __deref_inout_bcount_part(size,length) __pre_deref_except_maybenull __post_deref_except_maybenull) #define __deref_inout_ecount_full_opt(size) _SAL1_Source_(__deref_inout_ecount_full_opt, (size), __deref_inout_ecount_full(size) __pre_deref_except_maybenull __post_deref_except_maybenull) #define __deref_inout_bcount_full_opt(size) _SAL1_Source_(__deref_inout_bcount_full_opt, (size), __deref_inout_bcount_full(size) __pre_deref_except_maybenull __post_deref_except_maybenull) #define __deref_inout_z_opt _SAL1_Source_(__deref_inout_z_opt, (), __deref_inout_opt __pre __deref __nullterminated __post __deref __nullterminated) #define __deref_inout_ecount_z_opt(size) _SAL1_Source_(__deref_inout_ecount_z_opt, (size), __deref_inout_ecount_opt(size) __pre __deref __nullterminated __post __deref __nullterminated) #define __deref_inout_bcount_z_opt(size) _SAL1_Source_(__deref_inout_bcount_z_opt, (size), __deref_inout_bcount_opt(size) __pre __deref __nullterminated __post __deref __nullterminated) #define __deref_inout_nz_opt _SAL1_Source_(__deref_inout_nz_opt, (), __deref_inout_opt) #define __deref_inout_ecount_nz_opt(size) _SAL1_Source_(__deref_inout_ecount_nz_opt, (size), __deref_inout_ecount_opt(size)) #define __deref_inout_bcount_nz_opt(size) _SAL1_Source_(__deref_inout_bcount_nz_opt, (size), __deref_inout_bcount_opt(size)) #define __deref_opt_ecount(size) _SAL1_Source_(__deref_opt_ecount, (size), __deref_ecount(size) __pre_except_maybenull) #define __deref_opt_bcount(size) _SAL1_Source_(__deref_opt_bcount, (size), __deref_bcount(size) __pre_except_maybenull) #define __deref_opt_out _SAL1_Source_(__deref_opt_out, (), _Outptr_opt_) #define __deref_opt_out_z _SAL1_Source_(__deref_opt_out_z, (), _Outptr_opt_result_z_) #define __deref_opt_out_ecount(size) _SAL1_Source_(__deref_opt_out_ecount, (size), __deref_out_ecount(size) __pre_except_maybenull) #define __deref_opt_out_bcount(size) _SAL1_Source_(__deref_opt_out_bcount, (size), __deref_out_bcount(size) __pre_except_maybenull) #define __deref_opt_out_ecount_part(size,length) _SAL1_Source_(__deref_opt_out_ecount_part, (size,length), __deref_out_ecount_part(size,length) __pre_except_maybenull) #define __deref_opt_out_bcount_part(size,length) _SAL1_Source_(__deref_opt_out_bcount_part, (size,length), __deref_out_bcount_part(size,length) __pre_except_maybenull) #define __deref_opt_out_ecount_full(size) _SAL1_Source_(__deref_opt_out_ecount_full, (size), __deref_out_ecount_full(size) __pre_except_maybenull) #define __deref_opt_out_bcount_full(size) _SAL1_Source_(__deref_opt_out_bcount_full, (size), __deref_out_bcount_full(size) __pre_except_maybenull) #define __deref_opt_inout _SAL1_Source_(__deref_opt_inout, (), _Inout_opt_) #define __deref_opt_inout_ecount(size) _SAL1_Source_(__deref_opt_inout_ecount, (size), __deref_inout_ecount(size) __pre_except_maybenull) #define __deref_opt_inout_bcount(size) _SAL1_Source_(__deref_opt_inout_bcount, (size), __deref_inout_bcount(size) __pre_except_maybenull) #define __deref_opt_inout_ecount_part(size,length) _SAL1_Source_(__deref_opt_inout_ecount_part, (size,length), __deref_inout_ecount_part(size,length) __pre_except_maybenull) #define __deref_opt_inout_bcount_part(size,length) _SAL1_Source_(__deref_opt_inout_bcount_part, (size,length), __deref_inout_bcount_part(size,length) __pre_except_maybenull) #define __deref_opt_inout_ecount_full(size) _SAL1_Source_(__deref_opt_inout_ecount_full, (size), __deref_inout_ecount_full(size) __pre_except_maybenull) #define __deref_opt_inout_bcount_full(size) _SAL1_Source_(__deref_opt_inout_bcount_full, (size), __deref_inout_bcount_full(size) __pre_except_maybenull) #define __deref_opt_inout_z _SAL1_Source_(__deref_opt_inout_z, (), __deref_opt_inout __pre __deref __nullterminated __post __deref __nullterminated) #define __deref_opt_inout_ecount_z(size) _SAL1_Source_(__deref_opt_inout_ecount_z, (size), __deref_opt_inout_ecount(size) __pre __deref __nullterminated __post __deref __nullterminated) #define __deref_opt_inout_bcount_z(size) _SAL1_Source_(__deref_opt_inout_bcount_z, (size), __deref_opt_inout_bcount(size) __pre __deref __nullterminated __post __deref __nullterminated) #define __deref_opt_inout_nz _SAL1_Source_(__deref_opt_inout_nz, (), __deref_opt_inout) #define __deref_opt_inout_ecount_nz(size) _SAL1_Source_(__deref_opt_inout_ecount_nz, (size), __deref_opt_inout_ecount(size)) #define __deref_opt_inout_bcount_nz(size) _SAL1_Source_(__deref_opt_inout_bcount_nz, (size), __deref_opt_inout_bcount(size)) #define __deref_opt_ecount_opt(size) _SAL1_Source_(__deref_opt_ecount_opt, (size), __deref_ecount_opt(size) __pre_except_maybenull) #define __deref_opt_bcount_opt(size) _SAL1_Source_(__deref_opt_bcount_opt, (size), __deref_bcount_opt(size) __pre_except_maybenull) #define __deref_opt_out_opt _SAL1_Source_(__deref_opt_out_opt, (), _Outptr_opt_result_maybenull_) #define __deref_opt_out_ecount_opt(size) _SAL1_Source_(__deref_opt_out_ecount_opt, (size), __deref_out_ecount_opt(size) __pre_except_maybenull) #define __deref_opt_out_bcount_opt(size) _SAL1_Source_(__deref_opt_out_bcount_opt, (size), __deref_out_bcount_opt(size) __pre_except_maybenull) #define __deref_opt_out_ecount_part_opt(size,length) _SAL1_Source_(__deref_opt_out_ecount_part_opt, (size,length), __deref_out_ecount_part_opt(size,length) __pre_except_maybenull) #define __deref_opt_out_bcount_part_opt(size,length) _SAL1_Source_(__deref_opt_out_bcount_part_opt, (size,length), __deref_out_bcount_part_opt(size,length) __pre_except_maybenull) #define __deref_opt_out_ecount_full_opt(size) _SAL1_Source_(__deref_opt_out_ecount_full_opt, (size), __deref_out_ecount_full_opt(size) __pre_except_maybenull) #define __deref_opt_out_bcount_full_opt(size) _SAL1_Source_(__deref_opt_out_bcount_full_opt, (size), __deref_out_bcount_full_opt(size) __pre_except_maybenull) #define __deref_opt_out_z_opt _SAL1_Source_(__deref_opt_out_z_opt, (), __post __deref __valid __refparam __pre_except_maybenull __pre_deref_except_maybenull __post_deref_except_maybenull __post __deref __nullterminated) #define __deref_opt_out_ecount_z_opt(size) _SAL1_Source_(__deref_opt_out_ecount_z_opt, (size), __deref_opt_out_ecount_opt(size) __post __deref __nullterminated) #define __deref_opt_out_bcount_z_opt(size) _SAL1_Source_(__deref_opt_out_bcount_z_opt, (size), __deref_opt_out_bcount_opt(size) __post __deref __nullterminated) #define __deref_opt_out_nz_opt _SAL1_Source_(__deref_opt_out_nz_opt, (), __deref_opt_out_opt) #define __deref_opt_out_ecount_nz_opt(size) _SAL1_Source_(__deref_opt_out_ecount_nz_opt, (size), __deref_opt_out_ecount_opt(size)) #define __deref_opt_out_bcount_nz_opt(size) _SAL1_Source_(__deref_opt_out_bcount_nz_opt, (size), __deref_opt_out_bcount_opt(size)) #define __deref_opt_inout_opt _SAL1_Source_(__deref_opt_inout_opt, (), __deref_inout_opt __pre_except_maybenull) #define __deref_opt_inout_ecount_opt(size) _SAL1_Source_(__deref_opt_inout_ecount_opt, (size), __deref_inout_ecount_opt(size) __pre_except_maybenull) #define __deref_opt_inout_bcount_opt(size) _SAL1_Source_(__deref_opt_inout_bcount_opt, (size), __deref_inout_bcount_opt(size) __pre_except_maybenull) #define __deref_opt_inout_ecount_part_opt(size,length) _SAL1_Source_(__deref_opt_inout_ecount_part_opt, (size,length), __deref_inout_ecount_part_opt(size,length) __pre_except_maybenull) #define __deref_opt_inout_bcount_part_opt(size,length) _SAL1_Source_(__deref_opt_inout_bcount_part_opt, (size,length), __deref_inout_bcount_part_opt(size,length) __pre_except_maybenull) #define __deref_opt_inout_ecount_full_opt(size) _SAL1_Source_(__deref_opt_inout_ecount_full_opt, (size), __deref_inout_ecount_full_opt(size) __pre_except_maybenull) #define __deref_opt_inout_bcount_full_opt(size) _SAL1_Source_(__deref_opt_inout_bcount_full_opt, (size), __deref_inout_bcount_full_opt(size) __pre_except_maybenull) #define __deref_opt_inout_z_opt _SAL1_Source_(__deref_opt_inout_z_opt, (), __deref_opt_inout_opt __pre __deref __nullterminated __post __deref __nullterminated) #define __deref_opt_inout_ecount_z_opt(size) _SAL1_Source_(__deref_opt_inout_ecount_z_opt, (size), __deref_opt_inout_ecount_opt(size) __pre __deref __nullterminated __post __deref __nullterminated) #define __deref_opt_inout_bcount_z_opt(size) _SAL1_Source_(__deref_opt_inout_bcount_z_opt, (size), __deref_opt_inout_bcount_opt(size) __pre __deref __nullterminated __post __deref __nullterminated) #define __deref_opt_inout_nz_opt _SAL1_Source_(__deref_opt_inout_nz_opt, (), __deref_opt_inout_opt) #define __deref_opt_inout_ecount_nz_opt(size) _SAL1_Source_(__deref_opt_inout_ecount_nz_opt, (size), __deref_opt_inout_ecount_opt(size)) #define __deref_opt_inout_bcount_nz_opt(size) _SAL1_Source_(__deref_opt_inout_bcount_nz_opt, (size), __deref_opt_inout_bcount_opt(size)) /* ------------------------------------------------------------------------------- Advanced Annotation Definitions Any of these may be used to directly annotate functions, and may be used in combination with each other or with regular buffer macros. For an explanation of each annotation, see the advanced annotations section. ------------------------------------------------------------------------------- */ #define __success(expr) _Success_(expr) #define __nullterminated _Null_terminated_ #define __nullnullterminated #define __clr_reserved _SAL1_Source_(__reserved, (), _Reserved_) #define __checkReturn _SAL1_Source_(__checkReturn, (), _Check_return_) #define __typefix(ctype) _SAL1_Source_(__typefix, (ctype), __inner_typefix(ctype)) #define __override __inner_override #define __callback __inner_callback #define __format_string _Printf_format_string_ #define __blocksOn(resource) __inner_blocksOn(resource) #define __control_entrypoint(category) __inner_control_entrypoint(category) #define __data_entrypoint(category) __inner_data_entrypoint(category) #define __useHeader _Use_decl_anno_impl_ #define __on_failure(annotes) _On_failure_impl_(annotes _SAL_nop_impl_) #ifndef __fallthrough // [ #if __has_cpp_attribute(fallthrough) #define __fallthrough [[fallthrough]] #else #define __fallthrough #endif #endif // ] #ifndef __analysis_assume // [ #ifdef _PREFAST_ // [ #define __analysis_assume(expr) __assume(expr) #else // ][ #define __analysis_assume(expr) #endif // ] #endif // ] #ifndef _Analysis_assume_ // [ #ifdef _PREFAST_ // [ #define _Analysis_assume_(expr) __assume(expr) #else // ][ #define _Analysis_assume_(expr) #endif // ] #endif // ] #define _Analysis_noreturn_ _SAL2_Source_(_Analysis_noreturn_, (), _SA_annotes0(SAL_terminates)) #ifdef _PREFAST_ // [ __inline __nothrow void __AnalysisAssumeNullterminated(_Post_ __nullterminated void *p); #define _Analysis_assume_nullterminated_(x) __AnalysisAssumeNullterminated(x) #else // ][ #define _Analysis_assume_nullterminated_(x) #endif // ] // // Set the analysis mode (global flags to analysis). // They take effect at the point of declaration; use at global scope // as a declaration. // // Synthesize a unique symbol. #define ___MKID(x, y) x ## y #define __MKID(x, y) ___MKID(x, y) #define __GENSYM(x) __MKID(x, __COUNTER__) __ANNOTATION(SAL_analysisMode(__AuToQuOtE __In_impl_ char *mode);) #define _Analysis_mode_impl_(mode) _SA_annotes1(SAL_analysisMode, #mode) #define _Analysis_mode_(mode) \ typedef _Analysis_mode_impl_(mode) int \ __GENSYM(__prefast_analysis_mode_flag); // The following are predefined: // _Analysis_operator_new_throw_ (operator new throws) // _Analysis_operator_new_null_ (operator new returns null) // _Analysis_operator_new_never_fails_ (operator new never fails) // // Function class annotations. __ANNOTATION(SAL_functionClassNew(__In_impl_ char*);) __PRIMOP(int, _In_function_class_(__In_impl_ char*);) #define _In_function_class_(x) _In_function_class_(#x) #define _Function_class_(x) _SA_annotes1(SAL_functionClassNew, #x) /* * interlocked operand used in interlocked instructions */ //#define _Interlocked_operand_ _Pre_ _SA_annotes0(SAL_interlocked) #define _Enum_is_bitflag_ _SA_annotes0(SAL_enumIsBitflag) #define _Strict_type_match_ _SA_annotes0(SAL_strictType2) #define _Maybe_raises_SEH_exception_ _Pre_ _SA_annotes1(SAL_inTry,__yes) #define _Raises_SEH_exception_ _Group_(_Maybe_raises_SEH_exception_ _Analysis_noreturn_) #ifdef __cplusplus // [ } #endif // ] ProcDump-for-Linux-2.2/profiler/inc/servprov.h000066400000000000000000000015541447614355600214450ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // =========================================================================== // File: servprov.h // // =========================================================================== // simplified servprov.h for PAL #include "rpc.h" #include "rpcndr.h" #include "unknwn.h" #ifndef __IServiceProvider_INTERFACE_DEFINED__ #define __IServiceProvider_INTERFACE_DEFINED__ // 6d5140c1-7436-11ce-8034-00aa006009fa EXTERN_C const IID IID_IServiceProvider; interface IServiceProvider : public IUnknown { virtual /* [local] */ HRESULT STDMETHODCALLTYPE QueryService( /* [in] */ REFGUID guidService, /* [in] */ REFIID riid, /* [out] */ void **ppvObject) = 0; }; #endif // __IServiceProvider_INTERFACE_DEFINED__ ProcDump-for-Linux-2.2/profiler/inc/specstrings.h000066400000000000000000000742101447614355600221220ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // #ifndef SPECSTRINGS_H #define SPECSTRINGS_H /*** *specstrings.h - support for markers for documenting the semantics of APIs * * * [Public] ****/ /************************************************************************* * See specstrings_strict.h for documentation of all user visible macros. *************************************************************************/ #if _MSC_VER #pragma once #endif #if !defined(_SAL_VERSION_SAL2) #if defined(__BUILDMACHINE__) || defined(_USE_SAL2_ONLY) #define _SAL_VERSION_SAL2(_A) SAL_2_Clean_Violation_using ## _A #else #define _SAL_VERSION_SAL2(_A) #endif #ifdef _USE_SAL2_ONLY #define _SAL2_STRICT #define _SAL_VERSION_CHECK(_A) _SAL_VERSION_SAL2(_A) #else #define _SAL_VERSION_CHECK(_A) #endif #ifndef SAL_VERSION_CHECK #define SAL_VERSION_CHECK(_A) _SAL_VERSION_CHECK(_A) #define SAL_VERSION_SAL2(_A) _SAL_VERSION_SAL2(_A) #endif #endif #include #ifndef __SAL_H_FULL_VER #define __SAL_H_FULL_VER 140050727 #endif #ifdef __cplusplus extern "C" { #endif /* version specific fixes to bring sal.h upto date */ #if __SAL_H_FULL_VER <= 140050727 #if !defined(__midl) && defined(_PREFAST_) && _MSC_VER >= 1000 // [ /* Missing from RTM sal.h */ #define __inner_bound _SA_annotes0(SAL_bound) #define __inner_range(lb,ub) _SA_annotes2(SAL_range,lb,ub) #define __inner_assume_bound_dec __inline __nothrow void __AssumeBoundInt(_Post_ __inner_bound int i) {i;} #define __inner_assume_bound(i) __AssumeBoundInt(i); #define __inner_allocator _SA_annotes0(SAL_allocator) #define __static_context(ctx, annotes) \ _SA_annotes1(SAL_context,ctx) _Group_(__nop_impl(annotes)) #define __failure(x) __static_context(SAL_return_convention, \ _SA_annotes1(SAL_failure,x)) __ANNOTATION(SAL_valueUndefined()); #define __valueUndefined _SA_annotes0(SAL_valueUndefined) enum __SAL_failureKind{__failureUnspecified = 0, __failureUndefined = 1}; __ANNOTATION(SAL_failureDefault(enum __SAL_failureKind)); #define __failureDefault(kind) __static_context(SAL_return_convention, \ _SA_annotes1(SAL_failureDefault,kind)) #else // ][ #define __inner_bound #define __inner_range(lb,ub) #define __inner_assume_bound_dec #define __inner_assume_bound(i) #define __inner_allocator #define __static_context(ctx, annotes) #define __failure(x) #define __valueUndefined #define __failureDefault(x) #endif // ] #define __xcount(size) __notnull __inexpressible_writableTo(size) #define __in_xcount(size) __in _Pre_ __inexpressible_readableTo(size) #define __out_xcount(size) __xcount(size) _Post_ __valid __refparam #define __out_xcount_part(size,length) __out_xcount(size) _Post_ __inexpressible_readableTo(length) #define __out_xcount_full(size) __out_xcount_part(size,size) #define __inout_xcount(size) __out_xcount(size) _Pre_ __valid #define __inout_xcount_part(size,length) __out_xcount_part(size,length) _Pre_ __valid _Pre_ __inexpressible_readableTo(length) #define __inout_xcount_full(size) __inout_xcount_part(size,size) #define __xcount_opt(size) __xcount(size) __exceptthat __maybenull #define __in_xcount_opt(size) __in_xcount(size) __exceptthat __maybenull #define __out_xcount_opt(size) __out_xcount(size) __exceptthat __maybenull #define __out_xcount_part_opt(size,length) __out_xcount_part(size,length) __exceptthat __maybenull #define __out_xcount_full_opt(size) __out_xcount_full(size) __exceptthat __maybenull #define __inout_xcount_opt(size) __inout_xcount(size) __exceptthat __maybenull #define __inout_xcount_part_opt(size,length) __inout_xcount_part(size,length) __exceptthat __maybenull #define __inout_xcount_full_opt(size) __inout_xcount_full(size) __exceptthat __maybenull #define __deref_xcount(size) __ecount(1) _Post_ __elem_readableTo(1) _Post_ __deref __notnull _Post_ __deref __inexpressible_writableTo(size) #define __deref_in __in _Pre_ __deref __deref __readonly #define __deref_in_ecount(size) __deref_in _Pre_ __deref __elem_readableTo(size) #define __deref_in_bcount(size) __deref_in _Pre_ __deref __byte_readableTo(size) #define __deref_in_xcount(size) __deref_in _Pre_ __deref __inexpressible_readableTo(size) #define __deref_out_xcount(size) __deref_xcount(size) _Post_ __deref __valid __refparam #define __deref_out_xcount_part(size,length) __deref_out_xcount(size) _Post_ __deref __inexpressible_readableTo(length) #define __deref_out_xcount_full(size) __deref_out_xcount_part(size,size) #define __deref_out_xcount(size) __deref_xcount(size) _Post_ __deref __valid __refparam #define __inout_xcount_opt(size) __inout_xcount(size) __exceptthat __maybenull #define __inout_xcount_part_opt(size,length) __inout_xcount_part(size,length) __exceptthat __maybenull #define __inout_xcount_full_opt(size) __inout_xcount_full(size) __exceptthat __maybenull #define __deref_xcount(size) __ecount(1) _Post_ __elem_readableTo(1) _Post_ __deref __notnull _Post_ __deref __inexpressible_writableTo(size) #define __deref_in __in _Pre_ __deref __deref __readonly #define __deref_in_ecount(size) __deref_in _Pre_ __deref __elem_readableTo(size) #define __deref_in_bcount(size) __deref_in _Pre_ __deref __byte_readableTo(size) #define __deref_in_xcount(size) __deref_in _Pre_ __deref __inexpressible_readableTo(size) #define __deref_out_xcount(size) __deref_xcount(size) _Post_ __deref __valid __refparam #define __deref_out_xcount_part(size,length) __deref_out_xcount(size) _Post_ __deref __inexpressible_readableTo(length) #define __deref_out_xcount_full(size) __deref_out_xcount_part(size,size) #define __deref_out_xcount(size) __deref_xcount(size) _Post_ __deref __valid __refparam #define __deref_inout_xcount(size) __deref_inout _Pre_ __deref __inexpressible_writableTo(size) _Post_ __deref __inexpressible_writableTo(size) #define __deref_inout_xcount_part(size,length) __deref_inout_xcount(size) _Pre_ __deref __inexpressible_readableTo(length) _Post_ __deref __inexpressible_readableTo(length) #define __deref_inout_xcount_full(size) __deref_inout_xcount_part(size,size) #define __deref_xcount_opt(size) __deref_xcount(size) _Post_ __deref __exceptthat __maybenull #define __deref_in_opt __deref_in _Pre_ __deref __exceptthat __maybenull #define __deref_in_opt_out __deref_inout _Pre_ __deref __exceptthat __maybenull _Post_ __deref __notnull #define __deref_in_ecount_opt(size) __deref_in_ecount(size) _Pre_ __deref __exceptthat __maybenull #define __deref_in_bcount_opt(size) __deref_in_bcount(size) _Pre_ __deref __exceptthat __maybenull #define __deref_in_xcount_opt(size) __deref_in_xcount(size) _Pre_ __deref __exceptthat __maybenull #define __deref_out_xcount_opt(size) __deref_out_xcount(size) _Post_ __deref __exceptthat __maybenull #define __deref_out_xcount_part_opt(size,length) __deref_out_xcount_part(size,length) _Post_ __deref __exceptthat __maybenull #define __deref_out_xcount_full_opt(size) __deref_out_xcount_full(size) _Post_ __deref __exceptthat __maybenull #define __deref_inout_xcount_opt(size) __deref_inout_xcount(size) _Pre_ __deref __exceptthat __maybenull _Post_ __deref __exceptthat __maybenull #define __deref_inout_xcount_part_opt(size,length) __deref_inout_xcount_part(size,length) _Pre_ __deref __exceptthat __maybenull _Post_ __deref __exceptthat __maybenull #define __deref_inout_xcount_full_opt(size) __deref_inout_xcount_full(size) _Pre_ __deref __exceptthat __maybenull _Post_ __deref __exceptthat __maybenull #define __deref_opt_xcount(size) __deref_xcount(size) __exceptthat __maybenull #define __deref_opt_in __deref_in __exceptthat __maybenull #define __deref_opt_in_ecount(size) __deref_in_ecount(size) __exceptthat __maybenull #define __deref_opt_in_bcount(size) __deref_in_bcount(size) __exceptthat __maybenull #define __deref_opt_in_xcount(size) __deref_in_xcount(size) __exceptthat __maybenull #define __deref_opt_out_xcount(size) __deref_out_xcount(size) __exceptthat __maybenull #define __deref_opt_out_xcount_part(size,length) __deref_out_xcount_part(size,length) __exceptthat __maybenull #define __deref_opt_out_xcount_full(size) __deref_out_xcount_full(size) __exceptthat __maybenull #define __deref_opt_inout_xcount(size) __deref_inout_xcount(size) __exceptthat __maybenull #define __deref_opt_inout_xcount_part(size,length) __deref_inout_xcount_part(size,length) __exceptthat __maybenull #define __deref_opt_inout_xcount_full(size) __deref_inout_xcount_full(size) __exceptthat __maybenull #define __deref_opt_xcount_opt(size) __deref_xcount_opt(size) __exceptthat __maybenull #define __deref_opt_in_opt __deref_in_opt __exceptthat __maybenull #define __deref_opt_in_ecount_opt(size) __deref_in_ecount_opt(size) __exceptthat __maybenull #define __deref_opt_in_bcount_opt(size) __deref_in_bcount_opt(size) __exceptthat __maybenull #define __deref_opt_in_xcount_opt(size) __deref_in_xcount_opt(size) __exceptthat __maybenull #define __deref_opt_out_xcount_opt(size) __deref_out_xcount_opt(size) __exceptthat __maybenull #define __deref_opt_out_xcount_part_opt(size,length) __deref_out_xcount_part_opt(size,length) __exceptthat __maybenull #define __deref_opt_out_xcount_full_opt(size) __deref_out_xcount_full_opt(size) __exceptthat __maybenull #define __deref_opt_inout_xcount_opt(size) __deref_inout_xcount_opt(size) __exceptthat __maybenull #define __deref_opt_inout_xcount_part_opt(size,length) __deref_inout_xcount_part_opt(size,length) __exceptthat __maybenull #define __deref_opt_inout_xcount_full_opt(size) __deref_inout_xcount_full_opt(size) __exceptthat __maybenull #define __deref_in_ecount_iterator(size, incr) __inout _Pre_ __deref __elem_readableTo(size) __deref_out_range(==, _Old_(*_Curr_) + incr) #define __deref_out_ecount_iterator(size, incr) __inout _Pre_ __deref __elem_writableTo(size) __deref_out_range(==, _Old_(*_Curr_) + incr) #define __deref_inout_ecount_iterator(size, incr) __inout _Pre_ __deref __elem_readableTo(size) _Pre_ __deref __elem_writableTo(size) __deref_out_range(==, _Old_(*_Curr_) + incr) #define __post_bcount(size) _Post_ __byte_writableTo(size) #define __post_ecount(size) _Post_ __elem_writableTo(size) #define __deref_realloc_bcount(insize, outsize) __inout _Pre_ __deref __byte_readableTo(insize) _Post_ __deref __byte_writableTo(outsize) /* __in_ecount_or_z(c) specifies semantics like strncmp, where a string * parameter is either null terminated, or valid up to c elements. */ #define __in_ecount_or_z(c) _When_(_String_length_(_Curr_) < (c), __in_z) \ _When_(_String_length_(_Curr_) >= (c), __in_ecount(c)) /* Provide default definition to be overridden when needed */ #define __post_nullnullterminated /* Must protect redfinitions of macros to workaround rc.exe issues. */ #ifndef RC_INVOKED #undef __nullnullterminated #define __nullnullterminated __inexpressible_readableTo("string terminated by two nulls") __nullterminated #undef __post_nullnullterminated #define __post_nullnullterminated _Post_ __inexpressible_readableTo("string terminated by two nulls") _Post_ __nullterminated #endif #endif //__SAL_H_FULL_VER <= 140050727 /************************************************************************ New extensions to sal.h follow here. *************************************************************************/ #if (_MSC_VER >= 1000) && !defined(__midl) && defined(_PREFAST_) #define __file_parser(typ) _SA_annotes2(SAL_file_parser,"function",typ) #define __file_parser_class(typ) _SA_annotes2(SAL_file_parser,"class",typ) #define __file_parser_library(typ) extern int _SA_annotes2(SAL_file_parser, "library", typ) __iSALFileParserLibrary##typ; #define __source_code_content(typ) extern int _SA_annotes1(SAL_source_code_content, typ) __iSAL_Source_Code_Content##typ; #define __class_code_content(typ) _SA_annotes1(SAL_class_code_content, typ) #define __analysis_assert(e) __assume(e) #define __analysis_hint(hint) _SA_annotes1(SAL_analysisHint, hint) // For "breakpoint": doesn't return as far as analysis is concerned. #define __analysis_noreturn __declspec(noreturn) /* Internal defintions */ #define __inner_data_source(src_raw) _SA_annotes1(SAL_untrusted_data_source,src_raw) #define __inner_this_data_source(src_raw) _SA_annotes1(SAL_untrusted_data_source_this,src_raw) #define __inner_out_validated(typ_raw) _Post_ _SA_annotes1(SAL_validated,typ_raw) #define __inner_this_out_validated(typ_raw) _SA_annotes1(SAL_validated_this,typ_raw) #define __inner_assume_validated_dec __inline __nothrow void __AssumeValidated(__inner_out_validated("BY_DESIGN") const void *p) {p;} #define __inner_assume_validated(p) __AssumeValidated(p) #define __inner_transfer(formal) _SA_annotes1(SAL_transfer_adt_property_from,formal) #define __inner_encoded _SA_annotes0(SAL_encoded) #if defined(_MSC_EXTENSIONS) || defined(_PREFAST_) || defined(OACR) #define __inner_adt_prop(adt,prop) _SA_annotes2(SAL_adt, adt,prop) #define __inner_adt_add_prop(adt,prop) _SA_annotes2(SAL_add_adt_property,adt,prop) #define __inner_adt_remove_prop(adt,prop) _SA_annotes2(SAL_remove_adt_property,adt,prop) #define __inner_adt_transfer_prop(arg) _SA_annotes1(SAL_transfer_adt_property_from,arg) #define __inner_adt_type_props(typ) _SA_annotes1(SAL_post_type,typ) #define __inner_volatile _SA_annotes0(SAL_volatile) #define __inner_nonvolatile _SA_annotes0(SAL_nonvolatile) #define __inner_possibly_notnullterminated _SA_annotes1(SAL_nullTerminated,__maybe) #define __inner_analysis_assume_nullterminated_dec __inline __nothrow void __AnalysisAssumeNullterminated(_Post_ __nullterminated void *p) {*(char*)p=0;} #define __inner_analysis_assume_nullterminated(x) __AnalysisAssumeNullterminated(x); #endif #else #define __file_parser(typ) #define __file_parser_class(typ) #define __file_parser_library(typ) #define __source_code_content(typ) #define __class_code_content(typ) #define __analysis_assert(e) #define __analysis_hint(hint) #define __analysis_noreturn /* Internal defintions */ #define __inner_data_source(src_raw) #define __inner_this_data_source(src_raw) #define __inner_out_validated(typ_raw) #define __inner_this_out_validated(typ_raw) #define __inner_assume_validated_dec #define __inner_assume_validated(p) #define __inner_transfer(formal) #define __inner_encoded #define __inner_adt_prop(adt,prop) #define __inner_adt_add_prop(adt,prop) #define __inner_adt_remove_prop(adt,prop) #define __inner_adt_transfer_prop(arg) #define __inner_adt_type_props(typ) #define __inner_volatile #define __inner_nonvolatile #define __inner_possibly_notnullterminated #define __inner_analysis_assume_nullterminated_dec #define __inner_analysis_assume_nullterminated(x) #endif // #if (_MSC_VER >= 1000) && !defined(__midl) && defined(_PREFAST_) #define __field_ecount(size) __notnull __elem_writableTo(size) #define __field_bcount(size) __notnull __byte_writableTo(size) #define __field_xcount(size) __notnull __inexpressible_writableTo(size) #define __field_ecount_opt(size) __maybenull __elem_writableTo(size) #define __field_bcount_opt(size) __maybenull __byte_writableTo(size) #define __field_xcount_opt(size) __maybenull __inexpressible_writableTo(size) #define __field_ecount_part(size,init) __notnull __elem_writableTo(size) __elem_readableTo(init) #define __field_bcount_part(size,init) __notnull __byte_writableTo(size) __byte_readableTo(init) #define __field_xcount_part(size,init) __notnull __inexpressible_writableTo(size) __inexpressible_readableTo(init) #define __field_ecount_part_opt(size,init) __maybenull __elem_writableTo(size) __elem_readableTo(init) #define __field_bcount_part_opt(size,init) __maybenull __byte_writableTo(size) __byte_readableTo(init) #define __field_xcount_part_opt(size,init) __maybenull __inexpressible_writableTo(size) __inexpressible_readableTo(init) #define __field_ecount_full(size) __field_ecount_part(size,size) #define __field_bcount_full(size) __field_bcount_part(size,size) #define __field_xcount_full(size) __field_xcount_part(size,size) #define __field_ecount_full_opt(size) __field_ecount_part_opt(size,size) #define __field_bcount_full_opt(size) __field_bcount_part_opt(size,size) #define __field_xcount_full_opt(size) __field_xcount_part_opt(size,size) #define __field_nullterminated __nullterminated #define __struct_bcount(size) __byte_writableTo(size) #define __struct_xcount(size) __inexpressible_writableTo(size) #define __out_awcount(expr,size) _Pre_ __notnull \ __byte_writableTo((expr) ? (size) : (size) * 2) \ _Post_ __valid __refparam #define __in_awcount(expr,size) _Pre_ __valid \ _Pre_ _Notref_ __deref __readonly \ __byte_readableTo((expr) ? (size) : (size) * 2) #define __post_invalid _Post_ __notvalid /* integer related macros */ #ifndef PAL_STDCPP_COMPAT #define __allocator __inner_allocator #define __deallocate(kind) _Pre_ __notnull __post_invalid #define __deallocate_opt(kind) _Pre_ __maybenull __post_invalid #endif #define __bound __inner_bound #define __range(lb,ub) __inner_range(lb,ub) #define __in_bound _Pre_ __inner_bound #define __out_bound _Post_ __inner_bound #define __deref_out_bound _Post_ __deref __inner_bound #define __in_range(lb,ub) _Pre_ __inner_range(lb,ub) #define __out_range(lb,ub) _Post_ __inner_range(lb,ub) #define __deref_in_range(lb,ub) _Pre_ __deref __inner_range(lb,ub) #define __deref_out_range(lb,ub) _Post_ __deref __inner_range(lb,ub) #define __deref_inout_range(lb,ub) __deref_in_range(lb,ub) __deref_out_range(lb,ub) #define __field_range(lb,ub) __range(lb,ub) #define __field_data_source(src_sym) __inner_data_source(#src_sym) #define __range_max(a,b) __range(==, a > b ? a : b) #define __range_min(a,b) __range(==, a < b ? a : b) /* Penetration review macros */ #define __in_data_source(src_sym) _Pre_ __inner_data_source(#src_sym) #define __out_data_source(src_sym) _Post_ __inner_data_source(#src_sym) #define __out_validated(typ_sym) __inner_out_validated(#typ_sym) #define __this_out_data_source(src_sym) __inner_this_data_source(#src_sym) #define __this_out_validated(typ_sym) __inner_this_out_validated(#typ_sym) #define __transfer(formal) _Post_ __inner_transfer(formal) #define __rpc_entry __inner_control_entrypoint(RPC) #define __kernel_entry __inner_control_entrypoint(UserToKernel) #define __gdi_entry __inner_control_entrypoint(GDI) #define __encoded_pointer __inner_encoded #define __encoded_array __inner_encoded #define __field_encoded_pointer __inner_encoded #define __field_encoded_array __inner_encoded #if defined(_MSC_EXTENSIONS) || defined(_PREFAST_) || defined(OACR) #define __type_has_adt_prop(adt,prop) __inner_adt_prop(adt,prop) #define __out_has_adt_prop(adt,prop) _Post_ __inner_adt_add_prop(adt,prop) #define __out_not_has_adt_prop(adt,prop) _Post_ __inner_adt_remove_prop(adt,prop) #define __out_transfer_adt_prop(arg) _Post_ __inner_adt_transfer_prop(arg) #define __out_has_type_adt_props(typ) _Post_ __inner_adt_type_props(typ) /* useful PFD related macros */ #define __possibly_notnullterminated __inner_possibly_notnullterminated /* Windows Internal */ #define __volatile __inner_volatile #define __nonvolatile __inner_nonvolatile #else #define __out_has_type_adt_props(typ) /* nothing */ #endif #define __deref_volatile __deref __volatile #define __deref_nonvolatile __deref __nonvolatile /* declare stub functions for macros */ __inner_assume_validated_dec __inner_assume_bound_dec __inner_analysis_assume_nullterminated_dec #define __analysis_assume_nullterminated(x) __inner_analysis_assume_nullterminated(x) #define __assume_validated(p) __inner_assume_validated(p) #define __assume_bound(i) __inner_assume_bound(i) /************************************************************************** * SAL 2 extensions for Windows-specific APIs. ***************************************************************************/ // Annotation for parameters that are not used in any way by the function. // Unlike _Reserved_, an _Unreferenced_parameter_ pointer need not be NULL. #ifndef _Unreferenced_parameter_ #define _Unreferenced_parameter_ _Const_ #endif // Pointer parameters that are freed by the function, and thus the pointed-to // memory should not be used after return. #ifndef _Frees_ptr_ #define _Frees_ptr_ _Pre_notnull_ _Post_ptr_invalid_ #endif #ifndef _Frees_ptr_opt_ #define _Frees_ptr_opt_ _Pre_maybenull_ _Post_ptr_invalid_ #endif // NLS APIs allow strings to be specified either by an element count or // null termination. Unlike _In_reads_or_z_, this is not whichever comes // first, but based on whether the size is negative or not. #define _In_NLS_string_(size) _When_((size) < 0, _In_z_) \ _When_((size) >= 0, _In_reads_(size)) // Minifilter CompletionContext parameters on the pre-operation callback // default to NULL. For return type FLT_PREOP_SUCCESS_WITH_CALLBACK or // FLT_PREOP_SYNCHRONIZE, it may be set to NULL or a valid pointer. For all // other returns, it must be NULL. #define _Flt_CompletionContext_Outptr_ \ _Outptr_result_maybenull_ _Pre_valid_ \ _At_(*_Curr_, _Pre_null_ \ _When_(return != FLT_PREOP_SUCCESS_WITH_CALLBACK && return != FLT_PREOP_SYNCHRONIZE, _Post_null_)) // Minifilter ConnectionCookie parameters on the port connect notify callback // default to NULL. On successful return, it may be set to NULL or non-NULL, // but it must be NULL on failure. #define _Flt_ConnectionCookie_Outptr_ \ _Outptr_result_maybenull_ _Pre_valid_ \ _At_(*_Curr_, _Pre_null_ _On_failure_(_Post_null_)) // // A common pattern is to pass an "_Inout_ PCHAR* ppBuf" of size "_Inout_ DWORD* pSize" // to a function that writes to **pBuf, incrementing *ppBuf to point to one // past the last written byte. Thus the length of the write is // (*ppBuf - Old(*ppBuf)). The size of the remaining unwritten capacity // is written to *pSize. // // This pattern is frequently used when progressively filling a // large buffer in chunks // (e.g. when reading from a network interface in a driver). // // It is expected that these supplementary annotations would be used inside an // _At_, like so: // // _At_(*ppBuf, _Writes_and_advances_ptr_(*pBufSize)) // HRESULT WriteChunkOfData(_Inout_ PCHAR* ppBuf, _Inout_ DWORD* pBufSize); // #ifndef _Writes_and_advances_ptr_ #define _Writes_and_advances_ptr_(size) \ _At_((void*)_Curr_, _Inout_) \ _At_(_Curr_, \ _Pre_writable_size_(size) \ _Post_writable_size_(size) \ _Post_satisfies_(_Curr_ - _Old_(_Curr_) == size)) \ _At_(_Old_(_Curr_), \ _Post_readable_size_(_Old_(size) - size)) #endif #ifndef _Writes_bytes_and_advances_ptr_ #define _Writes_bytes_and_advances_ptr_(size) \ _At_((void*)_Curr_, _Inout_) \ _At_(_Curr_, \ _Pre_writable_byte_size_(size) \ _Post_writable_byte_size_(size) \ _Post_satisfies_(((char*)_Curr_) - ((void*)_Old_(_Curr_)) == size)) \ _At_(_Old_(_Curr_), \ _Post_readable_byte_size_(_Old_(size) - size)) #endif // // Gets the current error code (as returned by GetLastError()), and stores // in _Curr_ as a postcondition. This is currently approximated by assuming // that GetLastError() always returns a failed error code. This is not a // completely accurate approximation, but reasonable. // #define _Post_equals_last_error_ _Post_satisfies_(_Curr_ != 0) #ifdef __cplusplus } #endif #ifdef _PREFIX_ /************************************************************************** * Defintion of __pfx_assume and __pfx_assert. Thse should be the only * defintions of these functions. ***************************************************************************/ #if __cplusplus extern "C" void __pfx_assert(bool, const char *); extern "C" void __pfx_assume(bool, const char *); #else void __pfx_assert(int, const char *); void __pfx_assume(int, const char *); #endif /************************************************************************** * Redefintion of __analysis_assume and __analysis_assert for PREFIX build **************************************************************************/ #undef __analysis_assume #undef __analysis_assert #define __analysis_assume(e) (__pfx_assume(e,"pfx_assume"),__assume(e)); #define __analysis_assert(e) (__pfx_assert(e,"pfx_assert"),__assume(e)); #endif /* ifdef _PREFIX_ */ /************************************************************************** * This include should always be the last thing in this file. * Must avoid redfinitions of macros to workaround rc.exe issues. ***************************************************************************/ #if !(defined(RC_INVOKED) || defined(SORTPP_PASS)) #include #endif /* if !(defined(RC_INVOKED) || defined(SORTPP_PASS)) */ /* If no SAL 2 appears to have been defined (_Outptr_ is a representative choice) then we must be operating in a downlevel build environment (such as VS10). We also test against the compiler version to identify a downlevel environment, as VS11 is the minimum required for SAL 2 support. If we are operating in a downlevel build environment (such as VS10) we need to undefine the following symbols before including driverspecs.h or we will end up referencing SAL 2 implementation symbols and cause build failures. */ #if (!defined(_Outptr_) || _MSC_VER <= 1600) && !( defined( MIDL_PASS ) || defined(__midl) || defined(RC_INVOKED) ) /*IFSTRIP=IGN*/ #undef __ANNOTATION #define __ANNOTATION(fun) /* fun */ #undef __PRIMOP #define __PRIMOP(type, fun) #endif /* !defined(_Outptr_) || _MSC_VER <= 1600 */ /* If no SAL 2 appears to have been defined (_Outptr_ is a representative choice) then we must be operating in a downlevel build environment (such as VS10). We also test against the compiler version to identify a downlevel environment, as VS11 is the minimum required for SAL 2 support. If we are in a downlevel environment, we can go ahead and include no_sal2.h to make all of SAL 2 no-ops to ensure no build failures. */ #if (!defined(_Outptr_) || _MSC_VER <= 1600) && !( defined( MIDL_PASS ) || defined(__midl) || defined(RC_INVOKED) ) && !( defined( _SDV_ ) ) /*IFSTRIP=IGN*/ #include #endif /* !defined(_Outptr_) || _MSC_VER <= 1600 */ #endif /* #ifndef SPECSTRINGS_H */ ProcDump-for-Linux-2.2/profiler/inc/specstrings_strict.h000066400000000000000000001732531447614355600235210ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. /************************************************************************* * This file documents all the macros approved for use in windows source * code. It includes some experimental macros which should only be used by * experts. * * DO NOT include this file directly. This file is include after * specstrings.h. So we can undefine every possible old definition including * private internal macros people should not be using, as well as macros from * sal.h. Macros are redefined here in a way to cause syntax errors when used * incorrectly during a normal build when specstrings.h is included and * __SPECSTRINGS_STRICT_LEVEL is defined. * * There are several levels of strictness, each level includes the behavior of * all previous levels. * * 0 - Disable strict checking * 1 - Break on unapproved macros and misuse of statement * macros such as __fallthrough (default) * 2 - Deprecated some old macros that should not be used * 3 - Use VS 2005 Source Annotation to make sure every macro * is used in the right context. For example placing __in on a return * parameter will result in an error. * * ************************************************************************/ #ifndef __SPECSTRINGS_STRICT_LEVEL #define __SPECSTRINGS_STRICT_LEVEL 1 #endif /************************************************************************ * Introduction * * specstrings.h provides a set of annotations to describe how a function uses * its parameters - the assumptions it makes about them, and the guarantees it * makes upon finishing. * * Annotations must be placed before a function parameter's type or its return * type. There are two basic classes of common annotations buffer annotations * and advanced annotations. Buffer annotations describe how functions use * their pointer parameters, and advanced annotations either describe * complex/unusual buffer behavior, or provide additional information about a * parameter that is not otherwise expressible. * * Buffer Annotations * * The most important annotations in SpecStrings.h provide a consistent way to * annotate buffer parameters or return values for a function. Each of these * annotations describes a single buffer (which could be a string, a * fixed-length or variable-length array, or just a pointer) that the function * interacts with: where it is, how large it is, how much is initialized, and * what the function does with it. * * The appropriate macro for a given buffer can be constructed using the table * below. Just pick the appropriate values from each category, and combine * them together with a leading underscore. Some combinations of values do not * make sense as buffer annotations. Only meaningful annotations can be added * to your code; for a list of these, see the buffer annotation definitions * section. * * Only a single buffer annotation should be used for each parameter. * * |------------|------------|---------|--------|----------|---------------| * | Level | Usage | Size | Output | Optional | Parameters | * |------------|------------|---------|--------|----------|---------------| * | <> | <> | <> | <> | <> | <> | * | _deref | _in | _ecount | _full | _opt | (size) | * | _deref_opt | _out | _bcount | _part | | (size,length) | * | | _inout | | | | | * | | | | | | | * |------------|------------|---------|--------|----------|---------------| * * Note: "<>" represents the empty string. * * Level: Describes the buffer pointer's level of indirection from the * parameter or return value 'p'. * * <> : p is the buffer pointer. * _deref : *p is the buffer pointer. p must not be NULL. * _deref_opt : *p may be the buffer pointer. p may be NULL, in which case the * rest of the annotation is ignored. * * Usage: Describes how the function uses the buffer. * * <> : The buffer is not accessed. If used on the return value or with * _deref, the function will provide the buffer, and it will be uninitialized * at exit. Otherwise, the caller must provide the buffer. This should only * be used for alloc and free functions. * * _in : The function will only read from the buffer. The caller must provide * the buffer and initialize it. * * _out : The function will only write to the buffer. If used on the return * value or with _deref, the function will provide the buffer and initialize * it. Otherwise, the caller must provide the buffer, and the function will * initialize it. * * _inout : The function may freely read from and write to the buffer. The * caller must provide the buffer and initialize it. If used with _deref, the * buffer may be reallocated by the function. * * Size: Describes the total size of the buffer. This may be less than the * space actually allocated for the buffer, in which case it describes the * accessible amount. * * <> : No buffer size is given. If the type specifies the buffer size (such * as with LPSTR and LPWSTR), that amount is used. Otherwise, the buffer is * one element long. Must be used with _in, _out, or _inout. * * _ecount : The buffer size is an explicit element count. * * _bcount : The buffer size is an explicit byte count. * * Output: Describes how much of the buffer will be initialized by the * function. For _inout buffers, this also describes how much is initialized * at entry. Omit this category for _in buffers; they must be fully * initialized by the caller. * * <> : The type specifies how much is initialized. For instance, a function * initializing an LPWSTR must NULL-terminate the string. * * _full : The function initializes the entire buffer. * * _part : The function initializes part of the buffer, and explicitly * indicates how much. * * Optional: Describes if the buffer itself is optional. * * <> : The pointer to the buffer must not be NULL. * * _opt : The pointer to the buffer might be NULL. It will be checked before * being dereferenced. * * Parameters: Gives explicit counts for the size and length of the buffer. * * <> : There is no explicit count. Use when neither _ecount nor _bcount is * used. * * (size) : Only the buffer's total size is given. Use with _ecount or _bcount * but not _part. * * (size,length) : The buffer's total size and initialized length are * given. Use with _ecount_part and _bcount_part. * * ---------------------------------------------------------------------------- * Buffer Annotation Examples * * LWSTDAPI_(BOOL) StrToIntExA( * LPCSTR pszString, // No annotation required, const implies __in. * DWORD dwFlags, * __out int *piRet // A pointer whose dereference will be filled in. * ); * * void MyPaintingFunction( * __in HWND hwndControl, // An initialized read-only parameter. * __in_opt HDC hdcOptional, // An initialized read-only parameter that * // might be NULL. * __inout IPropertyStore *ppsStore // An initialized parameter that * // may be freely used and modified. * ); * * LWSTDAPI_(BOOL) PathCompactPathExA( * __out_ecount(cchMax) LPSTR pszOut, // A string buffer with cch elements * // that will be '\0' terminated * // on exit. * LPCSTR pszSrc, // No annotation required, * // const implies __in. * UINT cchMax, * DWORD dwFlags * ); * * HRESULT SHLocalAllocBytes( * size_t cb, * __deref_bcount(cb) T **ppv // A pointer whose dereference will be set * // to an uninitialized buffer with cb bytes. * ); * * __inout_bcount_full(cb) : A buffer with cb elements that is fully * initialized at entry and exit, and may be written to by this function. * * __out_ecount_part(count, *countOut) : A buffer with count elements that * will be partially initialized by this function. The function indicates how * much it initialized by setting *countOut. * ************************************************************************/ #if (_MSC_VER >= 1400) && !defined(__midl) && !defined(_PREFAST_) && (__SPECSTRINGS_STRICT_LEVEL > 0) #pragma once #include #define __ecount(size) _SAL_VERSION_CHECK(__ecount) #define __bcount(size) _SAL_VERSION_CHECK(__bcount) #define __xcount(size) _SAL_VERSION_CHECK(__xcount) #define __in _SAL_VERSION_CHECK(__in) #define __in_ecount(size) _SAL_VERSION_CHECK(__in_ecount) #define __in_bcount(size) _SAL_VERSION_CHECK(__in_bcount) #define __in_xcount(size) _SAL_VERSION_CHECK(__in_xcount) #define __in_z _SAL_VERSION_CHECK(__in_z) #define __in_ecount_z(size) _SAL_VERSION_CHECK(__in_ecount_z) #define __in_bcount_z(size) _SAL_VERSION_CHECK(__in_bcount_z) #define __out _SAL_VERSION_CHECK(__out) #define __out_ecount(size) _SAL_VERSION_CHECK(__out_ecount) #define __out_bcount(size) _SAL_VERSION_CHECK(__out_bcount) #define __out_xcount(size) _SAL_VERSION_CHECK(__out_xcount) #define __out_ecount_part(size,len) _SAL_VERSION_CHECK(__out_ecount_part) #define __out_bcount_part(size,len) _SAL_VERSION_CHECK(__out_bcount_part) #define __out_xcount_part(size,len) _SAL_VERSION_CHECK(__out_xcount_part) #define __out_ecount_full(size) _SAL_VERSION_CHECK(__out_ecount_full) #define __out_bcount_full(size) _SAL_VERSION_CHECK(__out_bcount_full) #define __out_xcount_full(size) _SAL_VERSION_CHECK(__out_xcount_full) #define __out_z _SAL_VERSION_CHECK(__out_z) #define __out_ecount_z(size) _SAL_VERSION_CHECK(__out_ecount_z) #define __out_bcount_z(size) _SAL_VERSION_CHECK(__out_bcount_z) #define __inout _SAL_VERSION_CHECK(__inout) #define __inout_ecount(size) _SAL_VERSION_CHECK(__inout_ecount) #define __inout_bcount(size) _SAL_VERSION_CHECK(__inout_bcount) #define __inout_xcount(size) _SAL_VERSION_CHECK(__inout_xcount) #define __inout_ecount_part(size,len) _SAL_VERSION_CHECK(__inout_ecount_part) #define __inout_bcount_part(size,len) _SAL_VERSION_CHECK(__inout_bcount_part) #define __inout_xcount_part(size,len) _SAL_VERSION_CHECK(__inout_xcount_part) #define __inout_ecount_full(size) _SAL_VERSION_CHECK(__inout_ecount_full) #define __inout_bcount_full(size) _SAL_VERSION_CHECK(__inout_bcount_full) #define __inout_xcount_full(size) _SAL_VERSION_CHECK(__inout_xcount_full) #define __inout_z __allowed(on_parameter) #define __inout_ecount_z(size) __allowed(on_parameter) #define __inout_bcount_z(size) __allowed(on_parameter) #define __ecount_opt(size) __allowed(on_parameter) #define __bcount_opt(size) __allowed(on_parameter) #define __xcount_opt(size) __allowed(on_parameter) #define __in_opt _SAL_VERSION_CHECK(__in_opt) #define __in_ecount_opt(size) _SAL_VERSION_CHECK(__in_ecount_opt) #define __in_bcount_opt(size) _SAL_VERSION_CHECK(__in_bcount_opt) #define __in_z_opt __allowed(on_parameter) #define __in_ecount_z_opt(size) __allowed(on_parameter) #define __in_bcount_z_opt(size) __allowed(on_parameter) #define __in_xcount_opt(size) __allowed(on_parameter) #define __out_opt _SAL_VERSION_CHECK(__out_opt) #define __out_ecount_opt(size) _SAL_VERSION_CHECK(__out_ecount_opt) #define __out_bcount_opt(size) _SAL_VERSION_CHECK(__out_bcount_opt) #define __out_xcount_opt(size) __allowed(on_parameter) #define __out_ecount_part_opt(size,len) __allowed(on_parameter) #define __out_bcount_part_opt(size,len) __allowed(on_parameter) #define __out_xcount_part_opt(size,len) __allowed(on_parameter) #define __out_ecount_full_opt(size) __allowed(on_parameter) #define __out_bcount_full_opt(size) __allowed(on_parameter) #define __out_xcount_full_opt(size) __allowed(on_parameter) #define __out_ecount_z_opt(size) __allowed(on_parameter) #define __out_bcount_z_opt(size) __allowed(on_parameter) #define __inout_opt _SAL_VERSION_CHECK(__inout_opt) #define __inout_ecount_opt(size) _SAL_VERSION_CHECK(__inout_ecount_opt) #define __inout_bcount_opt(size) _SAL_VERSION_CHECK(__inout_bcount_opt) #define __inout_xcount_opt(size) _SAL_VERSION_CHECK(__inout_xcount_opt) #define __inout_ecount_part_opt(size,len) _SAL_VERSION_CHECK(__inout_ecount_part_opt) #define __inout_bcount_part_opt(size,len) _SAL_VERSION_CHECK(__inout_bcount_part_opt) #define __inout_xcount_part_opt(size,len) _SAL_VERSION_CHECK(__inout_xcount_part_opt) #define __inout_ecount_full_opt(size) _SAL_VERSION_CHECK(__inout_ecount_full_opt) #define __inout_bcount_full_opt(size) _SAL_VERSION_CHECK(__inout_bcount_full_opt) #define __inout_xcount_full_opt(size) _SAL_VERSION_CHECK(__inout_xcount_full_opt) #define __inout_z_opt __allowed(on_parameter) #define __inout_ecount_z_opt(size) __allowed(on_parameter) #define __inout_ecount_z_opt(size) __allowed(on_parameter) #define __inout_bcount_z_opt(size) __allowed(on_parameter) #define __deref_ecount(size) __allowed(on_parameter) #define __deref_bcount(size) __allowed(on_parameter) #define __deref_xcount(size) __allowed(on_parameter) #define __deref_in _SAL_VERSION_CHECK(__deref_in) #define __deref_in_ecount(size) _SAL_VERSION_CHECK(__deref_in_ecount) #define __deref_in_bcount(size) _SAL_VERSION_CHECK(__deref_in_bcount) #define __deref_in_xcount(size) _SAL_VERSION_CHECK(__deref_in_xcount) #define __deref_out _SAL_VERSION_CHECK(__deref_out) #define __deref_out_ecount(size) _SAL_VERSION_CHECK(__deref_out_ecount) #define __deref_out_bcount(size) _SAL_VERSION_CHECK(__deref_out_bcount) #define __deref_out_xcount(size) _SAL_VERSION_CHECK(__deref_out_xcount) #define __deref_out_ecount_part(size,len) _SAL_VERSION_CHECK(__deref_out_ecount_part) #define __deref_out_bcount_part(size,len) _SAL_VERSION_CHECK(__deref_out_bcount_part) #define __deref_out_xcount_part(size,len) _SAL_VERSION_CHECK(__deref_out_xcount_part) #define __deref_out_ecount_full(size) _SAL_VERSION_CHECK(__deref_out_ecount_full) #define __deref_out_bcount_full(size) _SAL_VERSION_CHECK(__deref_out_bcount_full) #define __deref_out_xcount_full(size) _SAL_VERSION_CHECK(__deref_out_xcount_full) #define __deref_out_z __allowed(on_parameter) #define __deref_out_ecount_z(size) __allowed(on_parameter) #define __deref_out_bcount_z(size) __allowed(on_parameter) #define __deref_inout _SAL_VERSION_CHECK(__deref_inout) #define __deref_inout_ecount(size) _SAL_VERSION_CHECK(__deref_inout_ecount) #define __deref_inout_bcount(size) _SAL_VERSION_CHECK(__deref_inout_bcount) #define __deref_inout_xcount(size) _SAL_VERSION_CHECK(__deref_inout_xcount) #define __deref_inout_ecount_part(size,len) __allowed(on_parameter) #define __deref_inout_bcount_part(size,len) __allowed(on_parameter) #define __deref_inout_xcount_part(size,len) __allowed(on_parameter) #define __deref_inout_ecount_full(size) __allowed(on_parameter) #define __deref_inout_bcount_full(size) __allowed(on_parameter) #define __deref_inout_xcount_full(size) __allowed(on_parameter) #define __deref_inout_z __allowed(on_parameter) #define __deref_inout_ecount_z(size) __allowed(on_parameter) #define __deref_inout_bcount_z(size) __allowed(on_parameter) #define __deref_ecount_opt(size) __allowed(on_parameter) #define __deref_bcount_opt(size) __allowed(on_parameter) #define __deref_xcount_opt(size) __allowed(on_parameter) #define __deref_in_opt __allowed(on_parameter) #define __deref_in_opt_out __allowed(on_parameter) #define __deref_in_ecount_opt(size) __allowed(on_parameter) #define __deref_in_bcount_opt(size) __allowed(on_parameter) #define __deref_in_xcount_opt(size) __allowed(on_parameter) #define __deref_out_opt _SAL_VERSION_CHECK(__deref_out_opt) #define __deref_out_ecount_opt(size) _SAL_VERSION_CHECK(__deref_out_ecount_opt) #define __deref_out_bcount_opt(size) _SAL_VERSION_CHECK(__deref_out_bcount_opt) #define __deref_out_xcount_opt(size) _SAL_VERSION_CHECK(__deref_out_xcount_opt) #define __deref_out_ecount_part_opt(size,len) _SAL_VERSION_CHECK(__deref_out_ecount_part_opt) #define __deref_out_bcount_part_opt(size,len) _SAL_VERSION_CHECK(__deref_out_bcount_part_opt) #define __deref_out_xcount_part_opt(size,len) _SAL_VERSION_CHECK(__deref_out_xcount_part_opt) #define __deref_out_ecount_full_opt(size) _SAL_VERSION_CHECK(__deref_out_ecount_full_opt) #define __deref_out_bcount_full_opt(size) _SAL_VERSION_CHECK(__deref_out_bcount_full_opt) #define __deref_out_xcount_full_opt(size) _SAL_VERSION_CHECK(__deref_out_xcount_full_opt) #define __deref_out_z_opt __allowed(on_parameter) #define __deref_out_ecount_z_opt(size) __allowed(on_parameter) #define __deref_out_bcount_z_opt(size) __allowed(on_parameter) #define __deref_inout_opt __allowed(on_parameter) #define __deref_inout_ecount_opt(size) __allowed(on_parameter) #define __deref_inout_bcount_opt(size) __allowed(on_parameter) #define __deref_inout_xcount_opt(size) __allowed(on_parameter) #define __deref_inout_ecount_part_opt(size,len) __allowed(on_parameter) #define __deref_inout_bcount_part_opt(size,len) __allowed(on_parameter) #define __deref_inout_xcount_part_opt(size,len) __allowed(on_parameter) #define __deref_inout_ecount_full_opt(size) __allowed(on_parameter) #define __deref_inout_bcount_full_opt(size) __allowed(on_parameter) #define __deref_inout_xcount_full_opt(size) __allowed(on_parameter) #define __deref_inout_z_opt __allowed(on_parameter) #define __deref_inout_ecount_z_opt(size) __allowed(on_parameter) #define __deref_inout_bcount_z_opt(size) __allowed(on_parameter) #define __deref_opt_ecount(size) __allowed(on_parameter) #define __deref_opt_bcount(size) __allowed(on_parameter) #define __deref_opt_xcount(size) __allowed(on_parameter) #define __deref_opt_in __allowed(on_parameter) #define __deref_opt_in_ecount(size) __allowed(on_parameter) #define __deref_opt_in_bcount(size) __allowed(on_parameter) #define __deref_opt_in_xcount(size) __allowed(on_parameter) #define __deref_opt_out _SAL_VERSION_CHECK(__deref_opt_out) #define __deref_opt_out_ecount(size) _SAL_VERSION_CHECK(__deref_opt_out_ecount) #define __deref_opt_out_bcount(size) _SAL_VERSION_CHECK(__deref_opt_out_bcount) #define __deref_opt_out_xcount(size) _SAL_VERSION_CHECK(__deref_opt_out_xcount) #define __deref_opt_out_ecount_part(size,len) __allowed(on_parameter) #define __deref_opt_out_bcount_part(size,len) __allowed(on_parameter) #define __deref_opt_out_xcount_part(size,len) __allowed(on_parameter) #define __deref_opt_out_ecount_full(size) __allowed(on_parameter) #define __deref_opt_out_bcount_full(size) __allowed(on_parameter) #define __deref_opt_out_xcount_full(size) __allowed(on_parameter) #define __deref_opt_inout __allowed(on_parameter) #define __deref_opt_inout_ecount(size) __allowed(on_parameter) #define __deref_opt_inout_bcount(size) __allowed(on_parameter) #define __deref_opt_inout_xcount(size) __allowed(on_parameter) #define __deref_opt_inout_ecount_part(size,len) __allowed(on_parameter) #define __deref_opt_inout_bcount_part(size,len) __allowed(on_parameter) #define __deref_opt_inout_xcount_part(size,len) __allowed(on_parameter) #define __deref_opt_inout_ecount_full(size) __allowed(on_parameter) #define __deref_opt_inout_bcount_full(size) __allowed(on_parameter) #define __deref_opt_inout_xcount_full(size) __allowed(on_parameter) #define __deref_opt_inout_z __allowed(on_parameter) #define __deref_opt_inout_ecount_z(size) __allowed(on_parameter) #define __deref_opt_inout_bcount_z(size) __allowed(on_parameter) #define __deref_opt_ecount_opt(size) __allowed(on_parameter) #define __deref_opt_bcount_opt(size) __allowed(on_parameter) #define __deref_opt_xcount_opt(size) __allowed(on_parameter) #define __deref_opt_in_opt __allowed(on_parameter) #define __deref_opt_in_ecount_opt(size) __allowed(on_parameter) #define __deref_opt_in_bcount_opt(size) __allowed(on_parameter) #define __deref_opt_in_xcount_opt(size) __allowed(on_parameter) #define __deref_opt_out_opt __allowed(on_parameter) #define __deref_opt_out_ecount_opt(size) __allowed(on_parameter) #define __deref_opt_out_bcount_opt(size) __allowed(on_parameter) #define __deref_opt_out_xcount_opt(size) __allowed(on_parameter) #define __deref_opt_out_ecount_part_opt(size,len) __allowed(on_parameter) #define __deref_opt_out_bcount_part_opt(size,len) __allowed(on_parameter) #define __deref_opt_out_xcount_part_opt(size,len) __allowed(on_parameter) #define __deref_opt_out_ecount_full_opt(size) __allowed(on_parameter) #define __deref_opt_out_bcount_full_opt(size) __allowed(on_parameter) #define __deref_opt_out_xcount_full_opt(size) __allowed(on_parameter) #define __deref_opt_out_z_opt __allowed(on_parameter) #define __deref_opt_out_ecount_z_opt(size) __allowed(on_parameter) #define __deref_opt_out_bcount_z_opt(size) __allowed(on_parameter) #define __deref_opt_inout_opt __allowed(on_parameter) #define __deref_opt_inout_ecount_opt(size) __allowed(on_parameter) #define __deref_opt_inout_bcount_opt(size) __allowed(on_parameter) #define __deref_opt_inout_xcount_opt(size) __allowed(on_parameter) #define __deref_opt_inout_ecount_part_opt(size,len) __allowed(on_parameter) #define __deref_opt_inout_bcount_part_opt(size,len) __allowed(on_parameter) #define __deref_opt_inout_xcount_part_opt(size,len) __allowed(on_parameter) #define __deref_opt_inout_ecount_full_opt(size) __allowed(on_parameter) #define __deref_opt_inout_bcount_full_opt(size) __allowed(on_parameter) #define __deref_opt_inout_xcount_full_opt(size) __allowed(on_parameter) #define __deref_opt_inout_z_opt __allowed(on_parameter) #define __deref_opt_inout_ecount_z_opt(size) __allowed(on_parameter) #define __deref_opt_inout_bcount_z_opt(size) __allowed(on_parameter) #define __deref_in_ecount_iterator(size,incr) __allowed(on_parameter) #define __deref_out_ecount_iterator(size,incr) __allowed(on_parameter) #define __deref_inout_ecount_iterator(size,incr) __allowed(on_parameter) #define __deref_realloc_bcount(insize,outsize) __allowed(on_parameter) /************************************************************************ * SAL 2 _Ouptr_ family of annotations ************************************************************************/ #define _Outptr_ __allowed(on_parameter) #define _Outptr_result_maybenull_ __allowed(on_parameter) #define _Outptr_opt_ __allowed(on_parameter) #define _Outptr_opt_result_maybenull_ __allowed(on_parameter) #define _Outptr_result_z_ __allowed(on_parameter) #define _Outptr_opt_result_z_ __allowed(on_parameter) #define _Outptr_result_maybenull_z_ __allowed(on_parameter) #define _Outptr_opt_result_maybenull_z_ __allowed(on_parameter) #define _Outptr_result_nullonfailure_ __allowed(on_parameter) #define _Outptr_opt_result_nullonfailure_ __allowed(on_parameter) #define _COM_Outptr_ __allowed(on_parameter) #define _COM_Outptr_result_maybenull_ __allowed(on_parameter) #define _COM_Outptr_opt_ __allowed(on_parameter) #define _COM_Outptr_opt_result_maybenull_ __allowed(on_parameter) #define _Outptr_result_buffer_(size) __allowed(on_parameter) #define _Outptr_opt_result_buffer_(size) __allowed(on_parameter) #define _Outptr_result_buffer_to_(size, count) __allowed(on_parameter) #define _Outptr_opt_result_buffer_to_(size, count) __allowed(on_parameter) #define _Outptr_result_buffer_all_(size) __allowed(on_parameter) #define _Outptr_opt_result_buffer_all_(size) __allowed(on_parameter) #define _Outptr_result_buffer_maybenull_(size) __allowed(on_parameter) #define _Outptr_opt_result_buffer_maybenull_(size) __allowed(on_parameter) #define _Outptr_result_buffer_to_maybenull_(size, count) __allowed(on_parameter) #define _Outptr_opt_result_buffer_to_maybenull_(size, count) __allowed(on_parameter) #define _Outptr_result_buffer_all_maybenull_(size) __allowed(on_parameter) #define _Outptr_opt_result_buffer_all_maybenull_(size) __allowed(on_parameter) #define _Outptr_result_bytebuffer_(size) __allowed(on_parameter) #define _Outptr_opt_result_bytebuffer_(size) __allowed(on_parameter) #define _Outptr_result_bytebuffer_to_(size, count) __allowed(on_parameter) #define _Outptr_opt_result_bytebuffer_to_(size, count) __allowed(on_parameter) #define _Outptr_result_bytebuffer_all_(size) __allowed(on_parameter) #define _Outptr_opt_result_bytebuffer_all_(size) __allowed(on_parameter) #define _Outptr_result_bytebuffer_maybenull_(size) __allowed(on_parameter) #define _Outptr_opt_result_bytebuffer_maybenull_(size) __allowed(on_parameter) #define _Outptr_result_bytebuffer_to_maybenull_(size, count) __allowed(on_parameter) #define _Outptr_opt_result_bytebuffer_to_maybenull_(size, count) __allowed(on_parameter) #define _Outptr_result_bytebuffer_all_maybenull_(size) __allowed(on_parameter) #define _Outptr_opt_result_bytebuffer_all_maybenull_(size) __allowed(on_parameter) /************************************************************************ * Orcas SAL ************************************************************************/ #define _Deref_out_ _SAL_VERSION_CHECK(_Deref_out_) #define _Deref_out_opt_ _SAL_VERSION_CHECK(_Deref_out_opt_) #define _Deref_opt_out_ _SAL_VERSION_CHECK(_Deref_opt_out_) #define _Deref_opt_out_opt_ _SAL_VERSION_CHECK(_Deref_opt_out_opt_) #define _In_count_(size) _SAL_VERSION_CHECK(_In_count_) #define _In_opt_count_(size) _SAL_VERSION_CHECK(_In_opt_count_) #define _In_bytecount_(size) _SAL_VERSION_CHECK(_In_bytecount_) #define _In_opt_bytecount_(size) _SAL_VERSION_CHECK(_In_opt_bytecount_) #define _Out_cap_(size) _SAL_VERSION_CHECK(_Out_cap_) #define _Out_opt_cap_(size) _SAL_VERSION_CHECK(_Out_opt_cap_) #define _Out_bytecap_(size) _SAL_VERSION_CHECK(_Out_bytecap_) #define _Out_opt_bytecap_(size) _SAL_VERSION_CHECK(_Out_opt_bytecap_) #define _Deref_post_count_(size) _SAL_VERSION_CHECK(_Deref_post_count_) #define _Deref_post_opt_count_(size) _SAL_VERSION_CHECK(_Deref_post_opt_count_) #define _Deref_post_bytecount_(size) _SAL_VERSION_CHECK(_Deref_post_bytecount_) #define _Deref_post_opt_bytecount_(size) _SAL_VERSION_CHECK(_Deref_post_opt_bytecount_) #define _Deref_post_cap_(size) _SAL_VERSION_CHECK(_Deref_post_cap_) #define _Deref_post_opt_cap_(size) _SAL_VERSION_CHECK(_Deref_post_opt_cap_) #define _Deref_post_bytecap_(size) _SAL_VERSION_CHECK(_Deref_post_bytecap_) #define _Deref_post_opt_bytecap_(size) _SAL_VERSION_CHECK(_Deref_post_opt_bytecap_) /************************************************************************ * Advanced Annotations * * Advanced annotations describe behavior that is not expressible with the * regular buffer macros. These may be used either to annotate buffer * parameters that involve complex or conditional behavior, or to enrich * existing annotations with additional information. * * _At_(expr, annotes) : annotation list annotes applies to target 'expr' * * _When_(expr, annotes) : annotation list annotes applies when 'expr' is true * * __success(expr) T f() : indicates whether function f succeeded or * not. If is true at exit, all the function's guarantees (as given * by other annotations) must hold. If is false at exit, the caller * should not expect any of the function's guarantees to hold. If not used, * the function must always satisfy its guarantees. Added automatically to * functions that indicate success in standard ways, such as by returning an * HRESULT. * * __out_awcount(expr, size) T *p : Pointer p is a buffer whose size may be * given in either bytes or elements. If is true, this acts like * __out_bcount. If is false, this acts like __out_ecount. This * should only be used to annotate old APIs. * * __in_awcount(expr, size) T* p : Pointer p is a buffer whose size may be given * in either bytes or elements. If is true, this acts like * __in_bcount. If is false, this acts like __in_ecount. This should * only be used to annotate old APIs. * * __nullterminated T* p : Pointer p is a buffer that may be read or written * up to and including the first '\0' character or pointer. May be used on * typedefs, which marks valid (properly initialized) instances of that type * as being null-terminated. * * __nullnullterminated T* p : Pointer p is a buffer that may be read or * written up to and including the first sequence of two '\0' characters or * pointers. May be used on typedefs, which marks valid instances of that * type as being double-null terminated. * * __reserved T v : Value v must be 0/NULL, reserved for future use. * * __checkReturn T f(); : Return value of f must not be ignored by callers * of this function. * * __typefix(ctype) T v : Value v should be treated as an instance of ctype, * rather than its declared type when considering validity. * * __override T f(); : Specify C#-style 'override' behaviour for overriding * virtual methods. * * __callback T f(); : Function f can be used as a function pointer. * * __format_string T p : Pointer p is a string that contains % markers in * the style of printf. * * __blocksOn(resource) f(); : Function f blocks on the resource 'resource'. * * __fallthrough : Annotates switch statement labels where fall-through is * desired, to distinguish from forgotten break statements. * * __range(low_bnd, up_bnd) int f(): The return from the function "f" must * be in the inclusive numeric range [low_bnd, up_bnd]. * * __in_range(low_bnd, up_bnd) int i : Precondition that integer i must be * in the inclusive numeric range [low_bnd, up_bnd]. * * __out_range(low_bnd, up_bnd) int i : Postcondition that integer i must be * in the inclusive numeric range [low_bnd, up_bnd]. * * __deref_in_range(low_bnd, up_bnd) int* pi : Precondition that integer *pi * must be in the inclusive numeric range [low_bnd, up_bnd]. * * __deref_out_range(low_bnd, up_bnd) int* pi : Postcondition that integer * *pi must be in the inclusive numeric range [low_bnd, up_bnd]. * * __deref_inout_range(low_bnd, up_bnd) int* pi : Invariant that the integer * *pi must be in the inclusive numeric range [low_bnd, up_bnd]. * * The first argument of a range macro may also be a C relational operator * (<,>,!=, ==, <=, >=). * * __range(rel_op, j) int f(): Postcondition that "f() rel_op j" must be * true. Note that j may be a expression known only at runtime. * * __in_range(rel_op, j) int i : Precondition that "i rel_op j" must be * true. Note that j may be a expression known only at runtime. * * __out_range(rel_op, j) int i : Postcondition that integer "i rel_op j" * must be true. Note that j may be a expression known only at runtime. * * __deref_in_range(rel_op, j) int *pi : Precondition that "*pi rel_op j" * must be true. Note that j may be a expression known only at runtime. * * __deref_out_range(rel_op, j) int *pi : Postcondition that "*pi rel_op j" * must be true. Note that j may be a expression known only at runtime. * * __deref_inout_range(rel_op, j) int *pi : Invariant that "*pi rel_op j" * must be true. Note that j may be a expression known only at runtime. * * __range_max(a, b) int f(): Postcondition f acts as 'max', returns larger * of a and b. Note that a and b may be expressions known only at runtime. * * __range_min(a, b) int f(): Postcondition f acts as 'min', returns smaller * of a and b. Note that a and b may be expressions known only at runtime. * * __in_bound int i : Precondition that integer i must be bound, but the * exact range can't be specified at compile time. __in_range should be * used if the range can be explicitly stated. * * __out_bound int i : Postcondition that integer i must be bound, but the * exact range can't be specified at compile time. __out_range should be * used if the range can be explicitly stated. * * __deref_out_bound int pi : Postcondition that integer *pi must be bound, * but the exact range can't be specified at compile time. * __deref_out_range should be used if the range can be explicitly stated. * * __assume_bound(expr); : Assume that the expression is bound to some known * range. This can be used to suppress integer overflow warnings on integral * expressions that are known to be bound due to reasons not explicit in the * code. Use as a statement in the body of a function. * * __analysis_assume_nulltermianted(expr); : Assume that the expression is * a null terminated buffer. Use this to suppress tool noise specific to * nulltermination warnings, and capture deeper invariants tools can not * discover. * * __allocator void f(): Function allocates memory using an integral size * argument * * void myfree(__deallocate(Mem) void *p) : Memory is freed, no longer usable * upon return, and p may not be null. * * void myfree(__deallocate_opt(Mem) void *p) : Memory is freed, no longer * usable upon return, and p may be null. * * void free(__post_invalid void* x): Mark memory as unusable when * function returns. * * ---------------------------------------------------------------------------- * Advanced Annotation Examples * * __success(return == TRUE) LWSTDAPI_(BOOL) * PathCanonicalizeA(__out_ecount(MAX_PATH) LPSTR pszBuf, LPCSTR pszPath); * // pszBuf is only guaranteed to be null-terminated when TRUE is returned. * * // Initialized LPWSTRs are null-terminated strings. * typedef __nullterminated WCHAR* LPWSTR; * * __out_ecount(cch) __typefix(LPWSTR) void *psz; * // psz is a buffer parameter which will be a null-terminated WCHAR string * // at exit, and which initially contains cch WCHARs. * ************************************************************************/ #define _At_(expr, annotes) __allowed(on_parameter_or_return) #define _When_(expr, annotes) __allowed(on_parameter_or_return) #define __success(expr) _SAL_VERSION_CHECK(__success) #define __out_awcount(expr,size) __allowed(on_parameter) #define __in_awcount(expr,size) __allowed(on_parameter) #define __nullterminated _SAL_VERSION_CHECK(__nullterminated) #define __nullnullterminated _SAL_VERSION_CHECK(__nullnullterminated) #define __clr_reserved _SAL_VERSION_CHECK(__reserved) #define __checkReturn _SAL_VERSION_CHECK(__checkReturn) #define __typefix(ctype) __allowed(on_parameter_or_return) #define __override __allowed(on_function) #define __callback __allowed(on_function) #define __format_string __allowed(on_parameter_or_return) #define __blocksOn(resource) __allowed(on_function) #define __fallthrough __allowed(as_statement) #define __range(lb,ub) __allowed(on_return) #define __in_range(lb,ub) _SAL_VERSION_CHECK(__in_range) #define __out_range(lb,ub) _SAL_VERSION_CHECK(__out_range) #define __deref_in_range(lb,ub) __allowed(on_parameter) #define __deref_out_range(lb,ub) _SAL_VERSION_CHECK(__deref_out_range) #define __deref_inout_range(lb,ub) __allowed(on_parameter) #define __field_range(lb,ub) _SAL_VERSION_CHECK(__field_range) #define __range_max(a,b) __allowed(on_return) #define __range_min(a,b) __allowed(on_return) #define __bound __allowed(on_return) #define __in_bound __allowed(on_parameter) #define __out_bound __allowed(on_parameter) #define __deref_out_bound __allowed(on_parameter) #define __assume_bound(i) __allowed(as_statement_with_arg(i)) #define __analysis_assume_nullterminated(x) \ __allowed(as_statement_with_arg(x)) #define __allocator __allowed(on_function) #define __deallocate(kind) __allowed(on_parameter) #define __deallocate_opt(kind) __allowed(on_parameter) #define __post_invalid __allowed(on_parameter_or_return) #define __post_nullnullterminated \ __allowed(on_parameter_or_return) /*************************************************************************** * Expert Macros ***************************************************************************/ #define __null __allowed(on_typedecl) #define __notnull __allowed(on_typedecl) #define __maybenull __allowed(on_typedecl) #define __exceptthat __allowed(on_typedecl) /*************************************************************************** * Macros to classify fields of structures. * Structure Annotations * * The buffer annotations are a convenient way of describing * relationships between buffers and their size on a function by * function basis. Very often struct or class data members have similar * invariants, which can be expressed directly on the type. * * Similar to our buffer annotations we can summarize all the various * structure annotations by one choosing an element from each column of * this table to build a composite annotation. * * +--------------------------------------------------+ * | Selector | Units | Size/Init | Optional | * |----------+---------+------------------+----------| * | __field | _ecount | (size) | empty | * |----------+---------+------------------+----------| * | __struct | _bcount | _full(size) | _opt | * |----------+---------+------------------+----------| * | | _xcount | _part(size,init) | | * +--------------------------------------------------+ * * Note that empty represents the empty string. Sometime arguments need * to be "floated" to the left to give us a valid annotation name. For * example the naive combination __field_ecount(size)_opt is actually * written as __field_ecount_opt(size). Not all possible combinations * are currently supported or sensible. See specstrings_strict.h for * the currently supported set. Those that are supported are documented * below. * *Summary of Elements * * Selector * * __field * The annotation should only be placed in front * of data members of structures and classes. The * data members are pointers to a block of data. * The annotations describe properties about the * size of the block of data. This can be used for * * __struct * The annotation should only be placed at the * beginning of the definition of a structure or * class. These annotations are used when a struct * or class is used as a "header" that is * allocated inline with a block of data and there * is no apparent field that represents the tail * end of the structure. * * Units * * _ecount * All size and initialization values are in terms * of elements of the appropriate type * * _bcount * All size and initialization values are in terms * of raw byte sizes. * * _xcount * The size or initialization values cannot be * properly expressed as a simple byte or element * count, and instead a place holder is used to * document the relationship. * * Size/Init * All the size/init expressions can contain references to * other fields in the struct or class. * * (size) * The size of the buffer is determined by the * expression size. Unless, the type of the buffer * provides more information nothing is know about * how much of this data is initialized. For * example, if the data member happens to be a * string type such as LPSTR. It is assumed that * the data is initialized to the first '\0'. * * _full(size) * The size of the buffer is determined by the * expression size and all the data in the buffer * is guaranteed to be initialized. * * _part(size,init) * The size of the buffer is determined by the * expression size and all the data in the buffer * is guaranteed to be initialized up to init * elements or bytes. * * Optional * * empty * The pointer to the block of memory is never * NULL * * _opt * The pointer to the block of memory is may be * NULL * * * // Basic Usage of Struct Annotations * #include * #include * struct buf_s { * int sz; * __field_bcount_full(sz) * char *buf; * }; * void InitBuf(__out struct *buf_s b,int sz) { * b->buf = calloc(sz,sizeof(char)); * b->sz = sz; * } * void WriteBuf(__in FILE *fp,__in struct *buf_s b) { * fwrite(b->buf,b->sz,sizeof(char),fp); * } * void ReadBuf(__in FILE *fp,__inout struct *buf_s b) { * fread(b->buf,b->sz,sizeof(char),fp); * } * * * * // Inline Allocated Buffer * struct buf_s { * int sz; * __field_bcount(sz) * char buf[1]; * }; * void WriteBuf(__in FILE *fp,__in struct *buf_s b) { * fwrite(&(b->buf),b->sz,sizeof(char),fp); * } * void ReadBuf(__in FILE *fp,__inout struct *buf_s b) { * fread(&(b->buf),b->sz,sizeof(char),fp); * } * * * * // Embedded Header Structure * __struct_bcount(sz) * struct buf_s { * int sz; * }; * void WriteBuf(__in FILE *fp,__in struct *buf_s b) { * fwrite(&b,b->sz,sizeof(char),fp); * } * void ReadBuf(__in FILE *fp,__inout struct *buf_s b) { * fread(&b,b->sz,sizeof(char),fp); * } * * ****************************************************************************/ #define __field_ecount(size) _SAL_VERSION_CHECK(__field_ecount) #define __field_bcount(size) _SAL_VERSION_CHECK(__field_bcount) #define __field_xcount(size) __allowed(on_field) #define __field_ecount_opt(size) __allowed(on_field) #define __field_bcount_opt(size) __allowed(on_field) #define __field_xcount_opt(size) __allowed(on_field) #define __field_ecount_part(size,init) __allowed(on_field) #define __field_bcount_part(size,init) __allowed(on_field) #define __field_xcount_part(size,init) __allowed(on_field) #define __field_ecount_part_opt(size,init) __allowed(on_field) #define __field_bcount_part_opt(size,init) __allowed(on_field) #define __field_xcount_part_opt(size,init) __allowed(on_field) #define __field_ecount_full(size) __allowed(on_field) #define __field_bcount_full(size) __allowed(on_field) #define __field_xcount_full(size) __allowed(on_field) #define __field_ecount_full_opt(size) __allowed(on_field) #define __field_bcount_full_opt(size) __allowed(on_field) #define __field_xcount_full_opt(size) __allowed(on_field) #define __field_nullterminated __allowed(on_field) #define __struct_bcount(size) __allowed(on_struct) #define __struct_xcount(size) __allowed(on_struct) /*************************************************************************** * Macros to classify the entrypoints and indicate their category. * * Pre-defined control point categories include: RPC, KERNEL, GDI. * * Pre-defined control point macros include: * __rpc_entry, __kernel_entry, __gdi_entry. ***************************************************************************/ #define __control_entrypoint(category) __allowed(on_function) #define __rpc_entry __allowed(on_function) #define __kernel_entry __allowed(on_function) #define __gdi_entry __allowed(on_function) /*************************************************************************** * Macros to track untrusted data and their validation. The list of untrusted * sources include: * * FILE - File reading stream or API * NETWORK - Socket readers * INTERNET - WinInet and WinHttp readers * USER_REGISTRY - HKCU portions of the registry * USER_MODE - Parameters to kernel entry points * RPC - Parameters to RPC entry points * DRIVER - Device driver ***************************************************************************/ #define __in_data_source(src_sym) __allowed(on_parameter) #define __out_data_source(src_sym) __allowed(on_parameter) #define __field_data_source(src_sym) __allowed(on_field) #define __this_out_data_source(src_syn) __allowed(on_function) /************************************************************************** * Macros to tag file parsing code. Predefined formats include: * PNG - Portable Network Graphics * JPEG - Joint Photographic Experts Group * BMP - Bitmap * RC_BMP - Resource bitmap * WMF - Windows Metafile * EMF - Windows Enhanced Metafile * GIF - Graphics Interchange Format * MIME_TYPE - MIME type from header tokens * MAIL_MONIKER - MAIL information refered by URL moniker * HTML - HyperText Markup Language * WMPHOTO - Windows media photo * OE_VCARD - Outlook Express virtual card * OE_CONTACT - Outlook Express contact * MIDI - Musical Instrument Digital Interface * LDIF - LDAP Data Interchange Format * AVI - Audio Visual Interchange * ACM - Audio Compression Manager **************************************************************************/ #define __out_validated(filetype_sym) __allowed(on_parameter) #define __this_out_validated(filetype_sym) __allowed(on_function) #define __file_parser(filetype_sym) __allowed(on_function) #define __file_parser_class(filetype_sym) __allowed(on_struct) #define __file_parser_library(filetype_sym) __allowed(as_global_decl) /*************************************************************************** * Macros to track the code content in the file. The type of code * contents currently tracked: * * NDIS_DRIVER - NDIS Device driver ***************************************************************************/ #define __source_code_content(codetype_sym) __allowed(as_global_decl) /*************************************************************************** * Macros to track the code content in the class. The type of code * contents currently tracked: * * DCOM - Class implementing DCOM ***************************************************************************/ #define __class_code_content(codetype_sym) __allowed(on_struct) /************************************************************************* * Macros to tag encoded function pointers **************************************************************************/ #define __encoded_pointer #define __encoded_array #define __field_encoded_pointer __allowed(on_field) #define __field_encoded_array __allowed(on_field) #define __transfer(formal) __allowed(on_parameter_or_return) #define __assume_validated(exp) __allowed(as_statement_with_arg(exp)) /************************************************************************* * __analysis_assume(expr) : Expert macro use only when directed. Use this to * tell static analysis tools like PREfix and PREfast about a non-coded * assumption that you wish the tools to assume. The assumption will be * understood by those tools. By default there is no dynamic checking or * static checking of the assumption in any build. * * To obtain dynamic checking wrap this macro in your local version of a debug * assert. * Please do not put function calls in the expression because this is not * supported by all tools: * __analysis_assume(GetObject () != NULL); // DO NOT DO THIS * *************************************************************************/ #define __analysis_assume(expr) __allowed(as_statement_with_arg(expr)) #define __analysis_assert(expr) __allowed(as_statement_with_arg(expr)) /************************************************************************* * __analysis_hint(hint_sym) : Expert macro use only when * directed. Use this to influence certain analysis heuristics * used by the tools. These hints do not describe the semantics * of functions but simply direct the tools to act in a certain * way. * * Current hints that are supported are: * * INLINE - inline this function during analysis overrides any * default heuristics * NOINLINE - do not inline this function during analysis overrides * and default heuristics *************************************************************************/ #define __analysis_hint(hint) __allowed(on_function) /************************************************************************* * Macros to encode abstract properties of values. Used by SALadt.h *************************************************************************/ #define __type_has_adt_prop(adt,prop) __allowed(on_typdecl) #define __out_has_adt_prop(adt,prop) __allowed(on_parameter) #define __out_not_has_adt_prop(adt,prop) __allowed(on_parameter) #define __out_transfer_adt_prop(arg) __allowed(on_parameter) #define __out_has_type_adt_props(typ) __allowed(on_parameter) /************************************************************************* * Macros used by Prefast for Drivers * * __possibly_notnullterminated : * * Used for return values of parameters or functions that do not * guarantee nulltermination in all cases. * *************************************************************************/ #define __possibly_notnullterminated __allowed(on_parameter_or_return) /************************************************************************* * Advanced macros * * __volatile * The __volatile annotation identifies a global variable or * structure field that: * 1) is not declared volatile; * 2) is accessed concurrently by multiple threads. * * The __deref_volatile annotation identifies a global variable * or structure field that stores a pointer to some data that: * 1) is not declared volatile; * 2) is accessed concurrently by multiple threads. * * Prefast uses these annotations to find patterns of code that * may result in unexpected re-fetching of the global variable * into a local variable. * * We also provide two complimentary annotations __nonvolatile * and __deref_nonvolatile that could be used to suppress Prefast * * re-fetching warnings on variables that are known either: * 1) not to be in danger of being re-fetched or, * 2) not to lead to incorrect results if they are re-fetched * *************************************************************************/ #define __volatile __allowed(on_global_or_field) #define __deref_volatile __allowed(on_global_or_field) #define __nonvolatile __allowed(on_global_or_field) #define __deref_nonvolatile __allowed(on_global_or_field) /************************************************************************* * Macros deprecated with strict level greater then 1. **************************************************************************/ #if (__SPECSTRINGS_STRICT_LEVEL > 1) /* Must come before macro defintions */ #pragma deprecated(__in_nz) #pragma deprecated(__in_ecount_nz) #pragma deprecated(__in_bcount_nz) #pragma deprecated(__out_nz) #pragma deprecated(__out_nz_opt) #pragma deprecated(__out_ecount_nz) #pragma deprecated(__out_bcount_nz) #pragma deprecated(__inout_nz) #pragma deprecated(__inout_ecount_nz) #pragma deprecated(__inout_bcount_nz) #pragma deprecated(__in_nz_opt) #pragma deprecated(__in_ecount_nz_opt) #pragma deprecated(__in_bcount_nz_opt) #pragma deprecated(__out_ecount_nz_opt) #pragma deprecated(__out_bcount_nz_opt) #pragma deprecated(__inout_nz_opt) #pragma deprecated(__inout_ecount_nz_opt) #pragma deprecated(__inout_bcount_nz_opt) #pragma deprecated(__deref_out_nz) #pragma deprecated(__deref_out_ecount_nz) #pragma deprecated(__deref_out_bcount_nz) #pragma deprecated(__deref_inout_nz) #pragma deprecated(__deref_inout_ecount_nz) #pragma deprecated(__deref_inout_bcount_nz) #pragma deprecated(__deref_out_nz_opt) #pragma deprecated(__deref_out_ecount_nz_opt) #pragma deprecated(__deref_out_bcount_nz_opt) #pragma deprecated(__deref_inout_nz_opt) #pragma deprecated(__deref_inout_ecount_nz_opt) #pragma deprecated(__deref_inout_bcount_nz_opt) #pragma deprecated(__deref_opt_inout_nz) #pragma deprecated(__deref_opt_inout_ecount_nz) #pragma deprecated(__deref_opt_inout_bcount_nz) #pragma deprecated(__deref_opt_out_nz_opt) #pragma deprecated(__deref_opt_out_ecount_nz_opt) #pragma deprecated(__deref_opt_out_bcount_nz_opt) #pragma deprecated(__deref_opt_inout_nz_opt) #pragma deprecated(__deref_opt_inout_ecount_nz_opt) #pragma deprecated(__deref_opt_inout_bcount_nz_opt) #pragma deprecated(__deref) #pragma deprecated(__pre) #pragma deprecated(__post) #pragma deprecated(__readableTo) #pragma deprecated(__writableTo) #pragma deprecated(__maybevalid) #pragma deprecated(__data_entrypoint) #pragma deprecated(__inexpressible_readableTo) #pragma deprecated(__readonly) #pragma deprecated(__byte_writableTo) #pragma deprecated(__byte_readableTo) #pragma deprecated(__elem_readableTo) #pragma deprecated(__elem_writableTo) #pragma deprecated(__valid) #pragma deprecated(__notvalid) #pragma deprecated(__refparam) #pragma deprecated(__precond) #endif /* Define soon to be deprecated macros to nops. */ #define __in_nz #define __in_ecount_nz(size) #define __in_bcount_nz(size) #define __out_nz #define __out_nz_opt #define __out_ecount_nz(size) #define __out_bcount_nz(size) #define __inout_nz #define __inout_ecount_nz(size) #define __inout_bcount_nz(size) #define __in_nz_opt #define __in_ecount_nz_opt(size) #define __in_bcount_nz_opt(size) #define __out_ecount_nz_opt(size) #define __out_bcount_nz_opt(size) #define __inout_nz_opt #define __inout_ecount_nz_opt(size) #define __inout_bcount_nz_opt(size) #define __deref_out_nz #define __deref_out_ecount_nz(size) #define __deref_out_bcount_nz(size) #define __deref_inout_nz #define __deref_inout_ecount_nz(size) #define __deref_inout_bcount_nz(size) #define __deref_out_nz_opt #define __deref_out_ecount_nz_opt(size) #define __deref_out_bcount_nz_opt(size) #define __deref_inout_nz_opt #define __deref_inout_ecount_nz_opt(size) #define __deref_inout_bcount_nz_opt(size) #define __deref_opt_inout_nz #define __deref_opt_inout_ecount_nz(size) #define __deref_opt_inout_bcount_nz(size) #define __deref_opt_out_nz_opt #define __deref_opt_out_ecount_nz_opt(size) #define __deref_opt_out_bcount_nz_opt(size) #define __deref_opt_inout_nz_opt #define __deref_opt_inout_ecount_nz_opt(size) #define __deref_opt_inout_bcount_nz_opt(size) #define __deref #define __pre #define __post #define __readableTo(count) #define __writableTo(count) #define __maybevalid #define __inexpressible_readableTo(string) #define __data_entrypoint(category) #define __readonly #define __byte_writableTo(count) #define __byte_readableTo(count) #define __elem_readableTo(count) #define __elem_writableTo(count) #define __valid #define __notvalid #define __refparam #define __precond(condition) /************************************************************************* * Definitions to force a compile error when macros are used improperly. * Relies on VS 2005 source annotations. *************************************************************************/ #if !defined(_MSC_EXTENSIONS) && !defined(_PREFAST_) && !defined(OACR) #define __allowed(p) /* nothing */ #else #define __allowed(p) __$allowed_##p #define __$allowed_as_global_decl /* empty */ #define __$allowed_as_statement_with_arg(x) \ __pragma(warning(push)) __pragma(warning(disable : 4548)) \ do {__noop(x);} while((0,0) __pragma(warning(pop)) ) #define __$allowed_as_statement __$allowed_as_statement_with_arg(1) /************************************************************************** * This should go away. It's only for __success which we should split into. * __success and __typdecl_sucess ***************************************************************************/ #define __$allowed_on_function_or_typedecl /* empty */ #if (__SPECSTRINGS_STRICT_LEVEL == 1) || (__SPECSTRINGS_STRICT_LEVEL == 2) #define __$allowed_on_typedecl /* empty */ #define __$allowed_on_return /* empty */ #define __$allowed_on_parameter /* empty */ #define __$allowed_on_function /* empty */ #define __$allowed_on_struct /* empty */ #define __$allowed_on_field /* empty */ #define __$allowed_on_parameter_or_return /* empty */ #define __$allowed_on_global_or_field /* empty */ #elif __SPECSTRINGS_STRICT_LEVEL == 3 #define __$allowed_on_typedecl /* empty */ /* Define dummy source attributes. Still needs more testing */ #define __$allowed_on_return [returnvalue: OnReturnOnly] #define __$allowed_on_parameter [OnParameterOnly] #define __$allowed_on_function [method: OnFunctionOnly] #define __$allowed_on_struct [OnStructOnly] #define __$allowed_on_field [OnFieldOnly] #define __$allowed_on_parameter_or_return [OnParameterOrReturnOnly] #define __$allowed_on_global_or_field /* empty */ #pragma push_macro( "DECL_SA" ) #pragma push_macro( "SA" ) #ifdef __cplusplus #define SA(x) x #define DECL_SA(name,loc) \ [repeatable] \ [source_annotation_attribute( loc )] \ struct name##Attribute { name##Attribute(); const char* ignored; }; #else #define SA(x) SA_##x #define DECL_SA(name,loc) \ [source_annotation_attribute( loc )] \ struct name { const char* ignored; };\ typedef struct name name; #endif /* #endif __cplusplus */ DECL_SA(OnParameterOnly,SA(Parameter)); DECL_SA(OnReturnOnly,SA(ReturnValue)); DECL_SA(OnFunctionOnly,SA(Method)); DECL_SA(OnStructOnly,SA(Struct)); DECL_SA(OnFieldOnly,SA(Field)); DECL_SA(OnParameterOrReturnOnly,SA(Parameter) | SA(ReturnValue)); #pragma pop_macro( "SA" ) #pragma pop_macro( "DECL_SA" ) #endif #endif #endif ProcDump-for-Linux-2.2/profiler/inc/static_assert.h000066400000000000000000000021561447614355600224260ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // --------------------------------------------------------------------------- // static_assert.h // // Static assertion infrastructure // --------------------------------------------------------------------------- //-------------------------------------------------------------------------------- // static_assert represents a check which should be made at compile time. It // can only be done on a constant expression. //-------------------------------------------------------------------------------- #ifndef __STATIC_ASSERT_H__ #define __STATIC_ASSERT_H__ // static_assert( cond, msg ) is now a compiler-supported intrinsic in Dev10 C++ compiler. // Replaces previous uses of STATIC_ASSERT_MSG and COMPILE_TIME_ASSERT_MSG. // Replaces previous uses of CPP_ASSERT #define static_assert_n( n, cond ) static_assert( cond, #cond ) // Replaces previous uses of C_ASSERT and COMPILE_TIME_ASSERT #define static_assert_no_msg( cond ) static_assert( cond, #cond ) #endif // __STATIC_ASSERT_H__ ProcDump-for-Linux-2.2/profiler/inc/unknwn.h000066400000000000000000000027061447614355600210770ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // =========================================================================== // File: unknwn.h // // =========================================================================== // simplified unknwn.h for PAL #include "rpc.h" #include "rpcndr.h" #ifndef __IUnknown_INTERFACE_DEFINED__ #define __IUnknown_INTERFACE_DEFINED__ typedef interface IUnknown IUnknown; typedef /* [unique] */ IUnknown *LPUNKNOWN; // 00000000-0000-0000-C000-000000000046 EXTERN_C const IID IID_IUnknown; MIDL_INTERFACE("00000000-0000-0000-C000-000000000046") IUnknown { virtual HRESULT STDMETHODCALLTYPE QueryInterface( REFIID riid, void **ppvObject) = 0; virtual ULONG STDMETHODCALLTYPE AddRef( void) = 0; virtual ULONG STDMETHODCALLTYPE Release( void) = 0; }; #endif // __IUnknown_INTERFACE_DEFINED__ #ifndef __IClassFactory_INTERFACE_DEFINED__ #define __IClassFactory_INTERFACE_DEFINED__ // 00000001-0000-0000-C000-000000000046 EXTERN_C const IID IID_IClassFactory; MIDL_INTERFACE("00000001-0000-0000-C000-000000000046") IClassFactory : public IUnknown { virtual HRESULT STDMETHODCALLTYPE CreateInstance( IUnknown *pUnkOuter, REFIID riid, void **ppvObject) = 0; virtual HRESULT STDMETHODCALLTYPE LockServer( BOOL fLock) = 0; }; #endif // __IClassFactory_INTERFACE_DEFINED__ ProcDump-for-Linux-2.2/profiler/inc/unreachable.h000066400000000000000000000016031447614355600220230ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // --------------------------------------------------------------------------- // unreachable.h // --------------------------------------------------------------------------- #ifndef __UNREACHABLE_H__ #define __UNREACHABLE_H__ #if defined(_MSC_VER) || defined(_PREFIX_) #if defined(TARGET_AMD64) // Empty methods that consist of UNREACHABLE() result in a zero-sized declspec(noreturn) method // which causes the pdb file to make the next method declspec(noreturn) as well, thus breaking BBT // Remove when we get a VC compiler that fixes VSW 449170 # define __UNREACHABLE() do { DebugBreak(); __assume(0); } while (0) #else # define __UNREACHABLE() __assume(0) #endif #else #define __UNREACHABLE() __builtin_unreachable() #endif #endif // __UNREACHABLE_H__ ProcDump-for-Linux-2.2/profiler/inc/winerror.h000066400000000000000000000005651447614355600214270ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // =========================================================================== // File: winerror.h // // =========================================================================== // dummy winerror.h for PAL #include "palrt.h" ProcDump-for-Linux-2.2/profiler/src/000077500000000000000000000000001447614355600174175ustar00rootroot00000000000000ProcDump-for-Linux-2.2/profiler/src/ClassFactory.cpp000066400000000000000000000025341447614355600225240ustar00rootroot00000000000000// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. #include "ClassFactory.h" #include "ProcDumpProfiler.h" ClassFactory::ClassFactory() : refCount(0) { } ClassFactory::~ClassFactory() { } HRESULT STDMETHODCALLTYPE ClassFactory::QueryInterface(REFIID riid, void **ppvObject) { if (riid == IID_IUnknown || riid == IID_IClassFactory) { *ppvObject = this; this->AddRef(); return S_OK; } *ppvObject = nullptr; return E_NOINTERFACE; } ULONG STDMETHODCALLTYPE ClassFactory::AddRef() { return std::atomic_fetch_add(&this->refCount, 1) + 1; } ULONG STDMETHODCALLTYPE ClassFactory::Release() { int count = std::atomic_fetch_sub(&this->refCount, 1) - 1; if (count <= 0) { delete this; } return count; } HRESULT STDMETHODCALLTYPE ClassFactory::CreateInstance(IUnknown *pUnkOuter, REFIID riid, void **ppvObject) { if (pUnkOuter != nullptr) { *ppvObject = nullptr; return CLASS_E_NOAGGREGATION; } CorProfiler* profiler = new CorProfiler(); if (profiler == nullptr) { return E_FAIL; } return profiler->QueryInterface(riid, ppvObject); } HRESULT STDMETHODCALLTYPE ClassFactory::LockServer(BOOL fLock) { return S_OK; }ProcDump-for-Linux-2.2/profiler/src/ClrProfiler.def000066400000000000000000000001341447614355600223200ustar00rootroot00000000000000LIBRARY "ClrProfiler.Dll" EXPORTS DllCanUnloadNow PRIVATE DllGetClassObject PRIVATEProcDump-for-Linux-2.2/profiler/src/ProcDumpProfiler.cpp000066400000000000000000002116741447614355600233720ustar00rootroot00000000000000// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. #include "ProcDumpProfiler.h" #include "corhlpr.h" #include "CComPtr.h" #include "profiler_pal.h" #include #include INITIALIZE_EASYLOGGINGPP //------------------------------------------------------------------------------------------------------------------------------------------------------ // HealthThread // // Periodically (default 5s) calls the procdump status pipe for a health check. If we're unable to communicate with procdump it means it has been // terminated and we can unload. //------------------------------------------------------------------------------------------------------------------------------------------------------ void* HealthThread(void* args) { LOG(TRACE) << "HealthThread: Enter"; CorProfiler* profiler = static_cast (args); char* sockPath = NULL; while(true) { if(profiler->SendDumpCompletedStatus("", PROFILER_STATUS_HEALTH)==-1) { LOG(TRACE) << "HealthThread: Procdump not reachable..unloading ourselves"; sockPath = profiler->GetSocketPath("procdump/procdump-status-", profiler->procDumpPid, getpid()); if(sockPath) { LOG(TRACE) << "HealthThread: Unlinking the socket path " << sockPath; // if procdump exited abnormally, the socket file will still exist so we clean it up. unlink(sockPath); free(sockPath); } profiler->UnloadProfiler(); break; } LOG(TRACE) << "HealthThread: Procdump running..."; sleep(HEALTH_POLL_FREQ); // sleep is a thread cancellation point } LOG(TRACE) << "HealthThread: Exit"; return NULL; } //-------------------------------------------------------------------- // // CorProfiler::WildcardSearch // Search string supports '*' anywhere and any number of times // //-------------------------------------------------------------------- bool CorProfiler::WildcardSearch(WCHAR* szClassName, WCHAR* szSearch) { if ((szClassName == NULL) || (szSearch == NULL)) return false; WCHAR* szClassLowerMalloc = (WCHAR*)malloc(sizeof(WCHAR)*(wcslen(szClassName)+1)); if (szClassLowerMalloc == NULL) return false; WCHAR* szSearchLowerMalloc = (WCHAR*)malloc(sizeof(WCHAR)*(wcslen(szSearch)+1)); if (szSearchLowerMalloc == NULL) { free(szClassLowerMalloc); return false; } WCHAR* szClassLower = szClassLowerMalloc; wcscpy(szClassLower, (wcslen(szClassName)+1), szClassName); wcslwr(szClassLower, (wcslen(szClassName)+1)); WCHAR* szSearchLower = szSearchLowerMalloc; wcscpy(szSearchLower, (wcslen(szSearch)+1), szSearch); wcslwr(szSearchLower, (wcslen(szSearch)+1)); while ((*szSearchLower != u'\0') && (*szClassLower != u'\0')) { if (*szSearchLower != u'*') { // Straight (case insensitive) compare if (*szSearchLower != *szClassLower) { free(szClassLowerMalloc); szClassLowerMalloc = NULL; free(szSearchLowerMalloc); szSearchLowerMalloc = NULL; return false; } szSearchLower++; szClassLower++; continue; } // // Wildcard processing // ContinueWildcard: szSearchLower++; // The wildcard is on the end; e.g. '*' 'blah*' or '*blah*' // Must be a match if (*szSearchLower == u'\0') { free(szClassLowerMalloc); szClassLowerMalloc = NULL; free(szSearchLowerMalloc); szSearchLowerMalloc = NULL; return true; } // Double Wildcard; e.g. '**' 'blah**' or '*blah**' if (*szSearchLower == u'*') goto ContinueWildcard; // Find the length of the sub-string to search for int endpos = 0; while ((szSearchLower[endpos] != u'\0') && (szSearchLower[endpos] != u'*')) endpos++; // Find a match of the sub-search string anywhere within the class string int cc = 0; // Offset in to the Class int ss = 0; // Offset in to the Sub-Search while (ss < endpos) { if (szClassLower[ss+cc] == u'\0') { free(szClassLowerMalloc); szClassLowerMalloc = NULL; free(szSearchLowerMalloc); szSearchLowerMalloc = NULL; return false; } if (szSearchLower[ss] != szClassLower[ss+cc]) { cc++; ss = 0; continue; } ss++; } // If we get here, we found a match; move each string forward szSearchLower += ss; szClassLower += (ss + cc); } // Do we have a trailing wildcard? // This happens when Class = ABC.XYZ and Search = *XYZ* // Needed as the trailing wildcard code (above) doesn't run after the ss/cc search as Class is null while (*szSearchLower == u'*') { szSearchLower++; } // If Class and Search have no residual, this is a match. if ((*szSearchLower == u'\0') && (*szClassLower == u'\0')) { free(szClassLowerMalloc); szClassLowerMalloc = NULL; free(szSearchLowerMalloc); szSearchLowerMalloc = NULL; return true; } free(szClassLowerMalloc); szClassLowerMalloc = NULL; free(szSearchLowerMalloc); szSearchLowerMalloc = NULL; return false; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::IsHighPerfBasicGC //------------------------------------------------------------------------------------------------------------------------------------------------------ bool CorProfiler::IsHighPerfBasicGC() { if(triggerType == GCThreshold || triggerType == GCGeneration) { return true; } return false; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::CorProfiler //------------------------------------------------------------------------------------------------------------------------------------------------------ CorProfiler::CorProfiler() : refCount(0), corProfilerInfo8(nullptr), corProfilerInfo3(nullptr), corProfilerInfo(nullptr), procDumpPid(0), currentThresholdIndex(0), gcGeneration(-1), gcGenStarted(false) { // Configure logging el::Loggers::reconfigureAllLoggers(el::ConfigurationType::Filename, LOG_FILE); el::Loggers::reconfigureAllLoggers(el::ConfigurationType::MaxLogFileSize, MAX_LOG_FILE_SIZE); el::Loggers::reconfigureAllLoggers(el::ConfigurationType::ToStandardOutput, "false"); el::Loggers::reconfigureAllLoggers(el::ConfigurationType::Format, "%datetime %level [%thread] [%func] [%loc] %msg"); pthread_mutex_init(&endDumpCondition, NULL); } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::~CorProfiler //------------------------------------------------------------------------------------------------------------------------------------------------------ CorProfiler::~CorProfiler() { pthread_mutex_destroy(&endDumpCondition); } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::InitializeForAttach //------------------------------------------------------------------------------------------------------------------------------------------------------ HRESULT STDMETHODCALLTYPE CorProfiler::InitializeForAttach(IUnknown *pCorProfilerInfoUnk, void *pvClientData, UINT cbClientData) { LOG(TRACE) << "CorProfiler::InitializeForAttach: Enter"; char* clientData = new char[cbClientData+1]; if(clientData == NULL) { LOG(TRACE) << "CorProfiler::InitializeForAttach: Failed to allocate memory for clientData filter"; return E_FAIL; } memcpy(clientData, pvClientData, cbClientData); clientData[cbClientData]='\0'; if(ParseClientData(clientData)==false) { LOG(TRACE) << "CorProfiler::InitializeForAttach: Failed to parse client data"; delete[] clientData; return E_FAIL; } delete[] clientData; processName = GetProcessName(); if(processName.empty()) { LOG(TRACE) << "CorProfiler::InitializeForAttach: Failed to get process name"; return E_FAIL; } HRESULT queryInterfaceResult = pCorProfilerInfoUnk->QueryInterface(__uuidof(ICorProfilerInfo8), reinterpret_cast(&this->corProfilerInfo8)); if (FAILED(queryInterfaceResult)) { LOG(TRACE) << "CorProfiler::InitializeForAttach: Failed to query for ICorProfilerInfo8"; return E_FAIL; } queryInterfaceResult = pCorProfilerInfoUnk->QueryInterface(__uuidof(ICorProfilerInfo3), reinterpret_cast(&this->corProfilerInfo3)); if (FAILED(queryInterfaceResult)) { LOG(TRACE) << "CorProfiler::InitializeForAttach: Failed to query for ICorProfilerInfo3"; return E_FAIL; } queryInterfaceResult = pCorProfilerInfoUnk->QueryInterface(__uuidof(ICorProfilerInfo), reinterpret_cast(&this->corProfilerInfo)); if (FAILED(queryInterfaceResult)) { LOG(TRACE) << "CorProfiler::InitializeForAttach: Failed to query for ICorProfilerInfo"; return E_FAIL; } if(triggerType == Exception) { HRESULT hr = this->corProfilerInfo8->SetEventMask(COR_PRF_MONITOR_EXCEPTIONS); if(FAILED(hr)) { LOG(TRACE) << "CorProfiler::InitializeForAttach: Failed to set event mask: COR_PRF_MONITOR_EXCEPTIONS"; return E_FAIL; } } else if(IsHighPerfBasicGC() == true) { HRESULT hr = this->corProfilerInfo8->SetEventMask2(0, COR_PRF_HIGH_BASIC_GC); if(FAILED(hr)) { LOG(TRACE) << "CorProfiler::InitializeForAttach: Failed to set event mask: COR_PRF_HIGH_BASIC_GC"; return E_FAIL; } } else { LOG(TRACE) << "CorProfiler::InitializeForAttach: Invalid trigger type found"; return E_FAIL; } // Create the health check thread which periodically pings procdump to see if its still alive pthread_create(&healthThread, NULL, HealthThread, this); LOG(TRACE) << "CorProfiler::InitializeForAttach: Exit"; return S_OK; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::GetUint16 // // Primitive conversion from char* to uint16_t*. // //------------------------------------------------------------------------------------------------------------------------------------------------------ WCHAR* CorProfiler::GetUint16(char* buffer) { LOG(TRACE) << "CorProfiler::GetUint16: Enter"; WCHAR* dumpFileNameW = NULL; if(buffer!=NULL) { dumpFileNameW = static_cast (malloc((strlen(buffer)+1)*sizeof(WCHAR))); if(!dumpFileNameW) { return NULL; } for(int i=0; i<(strlen(buffer)+1); i++) { dumpFileNameW[i] = static_cast (buffer[i]); } } LOG(TRACE) << "CorProfiler::GetUint16: Exit"; return dumpFileNameW; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::ParseClientData // // Syntax of client data: ;... // // DOTNET_EXCEPTION_TRIGGER;;;:;:,... // DOTNET_GC_THRESHOLD_TRIGGER;;;[ | 3(LOH) | 4(POH) | 2008 (total mem)];Threshold1;Threshold2,... // DOTNET_GC_GEN_TRIGGER;;;GCGeneration // //------------------------------------------------------------------------------------------------------------------------------------------------------ bool CorProfiler::ParseClientData(char* clientData) { LOG(TRACE) << "CorProfiler::ParseClientData: Enter clientData = " << clientData; std::stringstream clientDataStream(clientData); std::string segment; std::vector dataList; while(std::getline(clientDataStream, segment, ';')) { dataList.push_back(segment); } int i=0; for(std::string dataItem : dataList) { if(i == 0) { // // First part of list is the type of trigger that is being invoked. // triggerType = static_cast(std::stoi(dataItem)); LOG(TRACE) << "CorProfiler::ParseClientData: trigger type = " << triggerType; i++; } else if(i == 1) { // // Second part of the list is either: // > base path to dump location (if it ends with '/') // > full path to dump file // fullDumpPath = dataItem; LOG(TRACE) << "CorProfiler::ParseClientData: Full path to dump = " << fullDumpPath; i++; } else if(i == 2) { // // Third part of the list is always the procdump pid. // we we need this to communicate back status to procdump // procDumpPid = std::stoi(dataItem); LOG(TRACE) << "CorProfiler::ParseClientData: ProcDump PID = " << procDumpPid; i++; } else if(triggerType == Exception) { // exception filter std::string segment2; std::stringstream stream(dataItem); ExceptionMonitorEntry entry; entry.exceptionID = NULL; entry.collectedDumps = 0; std::getline(stream, segment2, ':'); entry.exception = segment2; std::getline(stream, segment2, ':'); entry.dumpsToCollect = std::stoi(segment2); exceptionMonitorList.push_back(entry); } else if (triggerType == GCThreshold) { // GC threshold list if(i == 3) { // first element is the generation gcGeneration = std::stoi(dataItem); i++; } else { gcMemoryThresholdMonitorList.push_back(std::stoi(dataItem) << 20); } } else if (triggerType == GCGeneration) { // GC generation gcGeneration = std::stoi(dataItem); break; } else { LOG(TRACE) << "CorProfiler::ParseClientData Unrecognized trigger type"; return false; } } for (auto & element : exceptionMonitorList) { LOG(TRACE) << "CorProfiler::ParseClientData:Exception filter " << element.exception << " with dump count set to " << std::to_string(element.dumpsToCollect); } for (auto & element : gcMemoryThresholdMonitorList) { LOG(TRACE) << "CorProfiler::ParseClientData:GCMemoryThreshold " << element; } if(gcGeneration != -1) { if( gcGeneration == CUMULATIVE_GC_SIZE) { LOG(TRACE) << "CorProfiler::ParseClientData:GCGeneration " << "Cumulative"; } else { LOG(TRACE) << "CorProfiler::ParseClientData:GCGeneration " << gcGeneration; } } LOG(TRACE) << "CorProfiler::ParseClientData: Exit"; return true; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::Initialize //------------------------------------------------------------------------------------------------------------------------------------------------------ HRESULT STDMETHODCALLTYPE CorProfiler::Initialize(IUnknown *pICorProfilerInfoUnk) { return S_OK; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::Shutdown //------------------------------------------------------------------------------------------------------------------------------------------------------ HRESULT STDMETHODCALLTYPE CorProfiler::Shutdown() { LOG(TRACE) << "CorProfiler::Shutdown: Enter"; if (this->corProfilerInfo8 != nullptr) { this->corProfilerInfo8->Release(); this->corProfilerInfo8 = nullptr; } if (this->corProfilerInfo3 != nullptr) { this->corProfilerInfo3->Release(); this->corProfilerInfo3 = nullptr; } if (this->corProfilerInfo != nullptr) { this->corProfilerInfo->Release(); this->corProfilerInfo = nullptr; } CleanupProfiler(); LOG(TRACE) << "CorProfiler::Shutdown: Exit"; return S_OK; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::SendCatastrophicFailureStatus // Sends a catastrophic failure notification to procdump. Procdump should immediately stop monitoring as a result since the profiler will unload itself //------------------------------------------------------------------------------------------------------------------------------------------------------ void CorProfiler::SendCatastrophicFailureStatus() { LOG(TRACE) << "CorProfiler::SendCatastrophicFailureStatus: Enter"; SendDumpCompletedStatus("", PROFILER_STATUS_FAILURE); CleanupProfiler(); UnloadProfiler(); LOG(TRACE) << "CorProfiler::SendCatastrophicFailureStatus: Exit"; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::SendDumpCompletedStatus // Sends a status notification to procdump. The status flag should be one of the following: // > If dump was succesfully written: '1' // > 'H' for health pings. If it fails, means procdump was terminated. // > Any catastrophic failure of the profiler: PROFILER_STATUS_FAILURE (procdump should immediately stop monitoring as this results in an unload of the profiler) //------------------------------------------------------------------------------------------------------------------------------------------------------ int CorProfiler::SendDumpCompletedStatus(std::string dump, char status) { LOG(TRACE) << "CorProfiler::SendDumpCompletedStatus: Enter with status '" << status << "'"; int s, len; struct sockaddr_un remote; char* tmpFolder = NULL; tmpFolder = GetSocketPath("procdump/procdump-status-", procDumpPid, getpid()); LOG(TRACE) << "CorProfiler::SendDumpCompletedStatus: Socket path: " << tmpFolder; if((s = socket(AF_UNIX, SOCK_STREAM, 0))==-1) { LOG(TRACE) << "CorProfiler::SendDumpCompletedStatus: Failed to create socket: " << errno; delete[] tmpFolder; return -1; } // make sure the procdump listening on sockect before try to connect int retryCount = 0; while(access(tmpFolder,F_OK)!=0) { usleep(10); retryCount++; if(retryCount == 5) { LOG(TRACE) << "CorProfiler::SendDumpCompletedStatus: Socket path " << tmpFolder << " not found"; delete[] tmpFolder; close(s); return -1; } } LOG(TRACE) << "CorProfiler::SendDumpCompletedStatus: Trying to connect..."; remote.sun_family = AF_UNIX; strcpy(remote.sun_path, tmpFolder); len = strlen(remote.sun_path) + sizeof(remote.sun_family); if(connect(s, (struct sockaddr *) (&remote), len)==-1) { LOG(TRACE) << "CorProfiler::SendDumpCompletedStatus: Failed to connect: " << errno; delete[] tmpFolder; close(s); return -1; } LOG(TRACE) << "CorProfiler::SendDumpCompletedStatus: Connected"; // packet looks like this: <[uint]payload_len><[byte] 0=failure, 1=success><[uint] dumpfile_path_len><[char*]Dumpfile path> uint totalPayloadLen = sizeof(uint) + sizeof(char) + sizeof(uint) + dump.length(); uint payLoadLen = sizeof(char) + sizeof(uint) + dump.length(); char* payload = new char[totalPayloadLen]; if(payload==NULL) { LOG(TRACE) << "CorProfiler::SendDumpCompletedStatus: Failed memory allocation for payload"; delete[] tmpFolder; close(s); return -1; } char* current = payload; memcpy(current, &payLoadLen, sizeof(uint)); current+=sizeof(uint); memcpy(current, &status, sizeof(char)); current+=sizeof(char); uint pathLen = dump.length(); memcpy(current, &pathLen, sizeof(uint)); current+=sizeof(uint); memcpy(current, dump.c_str(), strlen(dump.c_str())); current+=strlen(dump.c_str()); if(send_all(s, payload, totalPayloadLen)==-1) { LOG(TRACE) << "CorProfiler::SendDumpCompletedStatus: Failed to send completion status"; close(s); delete[] payload; delete[] tmpFolder; return -1; } delete[] payload; delete[] tmpFolder; LOG(TRACE) << "CorProfiler::SendDumpCompletedStatus: Exit"; return 0; } //-------------------------------------------------------------------- // // CorProfiler::GetProcessName - Get current process name // //-------------------------------------------------------------------- std::string CorProfiler::GetProcessName() { LOG(TRACE) << "CorProfiler::GetProcessName: Enter"; char fileBuffer[PATH_MAX+1] = {0}; int charactersRead = 0; int itr = 0; char* stringItr = NULL; char* processName = NULL; FILE* procFile = NULL; procFile = fopen("/proc/self/cmdline", "r"); if(procFile != NULL) { if(fgets(fileBuffer, PATH_MAX, procFile) == NULL) { LOG(TRACE) << "CorProfiler::GetProcessName: Failed to get /proc/self/cmdline contents"; fclose(procFile); return NULL; } } else { LOG(TRACE) << "CorProfiler::GetProcessName: Failed to open /proc/self/cmdline"; return NULL; } fclose(procFile); // Extract process name stringItr = fileBuffer; charactersRead = strlen(fileBuffer); for(int i = 0; i <= charactersRead; i++) { if(fileBuffer[i] == '\0') { itr = i - itr; if(strcmp(stringItr, "sudo") != 0) { processName = strrchr(stringItr, '/'); if(processName != NULL) { return std::string(strdup(processName + 1)); } else { return std::string(strdup(stringItr)); } } else { stringItr += (itr+1); // +1 to move past '\0' } } } LOG(TRACE) << "CorProfiler::GetProcessName: Exit"; return NULL; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::GetDumpName //------------------------------------------------------------------------------------------------------------------------------------------------------ std::string CorProfiler::GetDumpName(u_int16_t dumpCount, std::string name) { LOG(TRACE) << "CorProfiler::GetDumpName: Enter"; std::ostringstream tmp; // // If the path ends in '/' it means we have a base path and need to create the full path according to: // /___ // if(fullDumpPath[fullDumpPath.length()-1] == '/') { time_t rawTime = {0}; struct tm* timerInfo = NULL; char date[DATE_LENGTH]; LOG(TRACE) << "CorProfiler::GetDumpName: Base path specified."; // get time for current dump generated rawTime = time(NULL); if((timerInfo = localtime(&rawTime)) == NULL) { LOG(TRACE) << "CorProfiler::GetDumpName: Failed to get localtime."; return ""; } strftime(date, 26, "%Y-%m-%d_%H:%M:%S", timerInfo); LOG(TRACE) << "CorProfiler::GetDumpName: Date/time " << date; tmp << fullDumpPath << processName.c_str() << "_" << dumpCount << "_" << name << "_" << date; LOG(TRACE) << "CorProfiler::GetDumpName: Full path name " << tmp.str(); } else { // // We have a full path...append the dump count to the very end (_X) // LOG(TRACE) << "CorProfiler::GetDumpName: Full path specified."; tmp << fullDumpPath << "_" << dumpCount; LOG(TRACE) << "CorProfiler::GetDumpName: Full path name " << tmp.str(); } LOG(TRACE) << "CorProfiler::GetDumpName: Exit"; return tmp.str(); } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::GetGCHeapSize //------------------------------------------------------------------------------------------------------------------------------------------------------ uint64_t CorProfiler::GetGCHeapSize(int generation) { LOG(TRACE) << "CorProfiler::GetGCHeapSize: Enter"; uint64_t gcHeapSize = 0; ULONG nObjectRanges = 0; bool fHeapAlloc = false; COR_PRF_GC_GENERATION_RANGE* pObjectRanges = NULL; const ULONG cRanges = 32; COR_PRF_GC_GENERATION_RANGE objectRangesStackBuffer[cRanges]; HRESULT hr = corProfilerInfo8->GetGenerationBounds(cRanges, &nObjectRanges, objectRangesStackBuffer); if (FAILED(hr)) { LOG(TRACE) << "CorProfiler::GetGCHeapSize: Failed calling GetGenerationBounds " << hr; return 0; } if (nObjectRanges <= cRanges) { pObjectRanges = objectRangesStackBuffer; } if (pObjectRanges == NULL) { pObjectRanges = new COR_PRF_GC_GENERATION_RANGE[nObjectRanges]; if (pObjectRanges == NULL) { LOG(TRACE) << "CorProfiler::GetGCHeapSize: Failed to allocate memory for object ranges "; return 0; } fHeapAlloc = true; ULONG nObjectRanges2 = 0; HRESULT hr = corProfilerInfo8->GetGenerationBounds(nObjectRanges, &nObjectRanges2, pObjectRanges); if (FAILED(hr) || nObjectRanges != nObjectRanges2) { LOG(TRACE) << "CorProfiler::GetGCHeapSize: Failed to call GetGenerationBounds with allocated memory"; delete[] pObjectRanges; return 0; } } for (int i = nObjectRanges - 1; i >= 0; i--) { // Uncomment this to help track down .NET memory usage while debugging. //LOG(TRACE) << "Range Len: " << pObjectRanges[i].rangeLength << " Gen: " << pObjectRanges[i].generation; if(generation == CUMULATIVE_GC_SIZE) { gcHeapSize += pObjectRanges[i].rangeLength; } else if(pObjectRanges[i].generation == generation) { gcHeapSize += pObjectRanges[i].rangeLength; } } if(fHeapAlloc == true) { delete[] pObjectRanges; } LOG(TRACE) << "CorProfiler::GetGCHeapSize: Exit"; return gcHeapSize; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::WriteDumpHelper //------------------------------------------------------------------------------------------------------------------------------------------------------ bool CorProfiler::WriteDumpHelper(std::string dumpName) { LOG(TRACE) << "CorProfiler::WriteDumpHelper: Enter"; AutoMutex lock = AutoMutex(&endDumpCondition); char* socketName = NULL; if(IsCoreClrProcess(getpid(), &socketName)) { LOG(TRACE) << "CorProfiler::WriteDumpHelper: Target is .NET process"; bool res = GenerateCoreClrDump(socketName, const_cast (dumpName.c_str())); if(res == false) { LOG(TRACE) << "CorProfiler::WriteDumpHelper: Failed to generate core dump"; delete[] socketName; return false; } // Notify procdump that a dump was generated if(SendDumpCompletedStatus(dumpName, PROFILER_STATUS_SUCCESS) == -1) { LOG(TRACE) << "CorProfiler::WriteDumpHelper: Failed to notify procdump about dump creation"; delete[] socketName; return false; } LOG(TRACE) << "CorProfiler::WriteDumpHelper: Generating core dump result: " << res; delete[] socketName; } else { LOG(TRACE) << "CorProfiler::WriteDumpHelper: Target process is not a .NET process"; return false; } LOG(TRACE) << "CorProfiler::WriteDumpHelper: Exit"; return true; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::GarbageCollectionStarted //------------------------------------------------------------------------------------------------------------------------------------------------------ HRESULT STDMETHODCALLTYPE CorProfiler::GarbageCollectionStarted(int cGenerations, BOOL generationCollected[], COR_PRF_GC_REASON reason) { LOG(TRACE) << "CorProfiler::GarbageCollectionStarted: Enter"; if(gcGeneration != -1 && gcGenStarted == false && gcGeneration == CUMULATIVE_GC_SIZE || (gcGeneration < cGenerations && generationCollected[gcGeneration] == true)) { gcGenStarted = true; if(gcMemoryThresholdMonitorList.size() == 0) { // GC Generation dump LOG(TRACE) << "CorProfiler::GarbageCollectionStarted: Dump on generation: " << gcGeneration << " and cGenerations = " << cGenerations; std::string dump = GetDumpName(1, convertString(L"gc_gen")); if(WriteDumpHelper(dump) == false) { SendCatastrophicFailureStatus(); return E_FAIL; } } } else { LOG(TRACE) << "CorProfiler::GarbageCollectionStarted: Trigger = " << triggerType << " cGenerations " << cGenerations << " gcGeneration " << gcGeneration << " threshold size " << gcMemoryThresholdMonitorList.size(); } LOG(TRACE) << "CorProfiler::GarbageCollectionStarted: Exit"; return S_OK; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::GarbageCollectionFinished //------------------------------------------------------------------------------------------------------------------------------------------------------ HRESULT STDMETHODCALLTYPE CorProfiler::GarbageCollectionFinished() { LOG(TRACE) << "CorProfiler::GarbageCollectionFinished: Enter"; if(gcGenStarted == true && gcMemoryThresholdMonitorList.size() > 0) { // During a GC threshold trigger, we only want to check heap sizes and thresholds after the gen collection uint64_t heapSize = 0; gcGenStarted = false; if(gcGeneration == CUMULATIVE_GC_SIZE) { // If a generation was not explicitly specified on the command line (for example: -gcm 10,20,30) we want to get _all_ the memory of // the managed heap and hence we add up all generations, LOH and POH. heapSize += GetGCHeapSize(CUMULATIVE_GC_SIZE); LOG(TRACE) << "CorProfiler::GarbageCollectionFinished: Cumulative heap size " << heapSize; } else { heapSize = GetGCHeapSize(gcGeneration); LOG(TRACE) << "CorProfiler::GarbageCollectionFinished: Generation " << gcGeneration << " heap size " << heapSize; } if(currentThresholdIndex < gcMemoryThresholdMonitorList.size() && heapSize >= gcMemoryThresholdMonitorList[currentThresholdIndex]) { LOG(TRACE) << "CorProfiler::GarbageCollectionFinished: Current threshold value " << gcMemoryThresholdMonitorList[currentThresholdIndex]; std::string dump = GetDumpName(currentThresholdIndex + 1,convertString(L"gc_size")); // Generate dump if(WriteDumpHelper(dump) == false) { SendCatastrophicFailureStatus(); return E_FAIL; } else { currentThresholdIndex++; } if(currentThresholdIndex >= gcMemoryThresholdMonitorList.size()) { // Stop monitoring LOG(TRACE) << "CorProfiler::GarbageCollectionFinished: Reached last threshold "; CleanupProfiler(); UnloadProfiler(); } } } else if(gcGenStarted == true && gcMemoryThresholdMonitorList.size() == 0) { // GC Generation dump LOG(TRACE) << "CorProfiler::GarbageCollectionFinished: Dump on generation: " << gcGeneration; gcGenStarted = false; std::string dump = GetDumpName(2, convertString(L"gc_gen")); if(WriteDumpHelper(dump) == false) { SendCatastrophicFailureStatus(); return E_FAIL; } // Stop monitoring CleanupProfiler(); UnloadProfiler(); } LOG(TRACE) << "CorProfiler::GarbageCollectionFinished: Exit"; return S_OK; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::ExceptionThrown //------------------------------------------------------------------------------------------------------------------------------------------------------ HRESULT STDMETHODCALLTYPE CorProfiler::ExceptionThrown(ObjectID thrownObjectId) { LOG(TRACE) << "CorProfiler::ExceptionThrown: Enter"; String exceptionNameAndMsg; String exceptionName = GetExceptionName(thrownObjectId); if(exceptionName.Length() == 0) { LOG(TRACE) << "CorProfiler::ExceptionThrown: Unable to get the name of the exception."; return E_FAIL; } String exceptionMsg = GetExceptionMessage(thrownObjectId); if(exceptionMsg.Length() == 0) { exceptionNameAndMsg += exceptionName; LOG(TRACE) << "CorProfiler::ExceptionThrown: exception name: " << exceptionNameAndMsg.ToCStr(); } else { exceptionNameAndMsg += exceptionName; exceptionNameAndMsg += WCHAR(": "); exceptionNameAndMsg += exceptionMsg; LOG(TRACE) << "CorProfiler::ExceptionThrown: exception name: " << exceptionNameAndMsg.ToCStr(); } WCHAR* exceptionWCHARs = getWCHARs(exceptionNameAndMsg); // Check to see if we have any matches on exceptions for (auto & element : exceptionMonitorList) { WCHAR* exception = GetUint16(const_cast (element.exception.c_str())); if(exception == NULL) { LOG(TRACE) << "CorProfiler::ExceptionThrown: Unable to get exception name (WHCAR)."; SendCatastrophicFailureStatus(); return E_FAIL; } if(WildcardSearch(exceptionWCHARs,exception) && element.exceptionID != thrownObjectId) { if(element.collectedDumps == element.dumpsToCollect) { LOG(TRACE) << "CorProfiler::ExceptionThrown: Dump count has been reached...exiting early"; free(exception); return S_OK; } LOG(TRACE) << "CorProfiler::ExceptionThrown: Starting dump generation for exception " << exceptionName.ToCStr() << " with dump count set to " << std::to_string(element.dumpsToCollect); std::string dump = GetDumpName(element.collectedDumps,convertString(exceptionName.ToWString())); if(WriteDumpHelper(dump) == false) { SendCatastrophicFailureStatus(); free(exception); return E_FAIL; } // // In asp.net, an exception thrown in the app is caught by asp.net and then rethrown and caught again. To avoid // generating multiple dumps for the same exception instance we store the objectID. If we have already generated // a dump for that object ID we simply ignore it // element.exceptionID = thrownObjectId; element.collectedDumps++; if(element.collectedDumps == element.dumpsToCollect) { // We're done collecting dumps... LOG(TRACE) << "CorProfiler::ExceptionThrown: Dump count has been reached...cleaning up and unloading"; CleanupProfiler(); UnloadProfiler(); } } free(exception); } free(exceptionWCHARs); LOG(TRACE) << "CorProfiler::ExceptionThrown: Exit"; return S_OK; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::CleanupProfiler //------------------------------------------------------------------------------------------------------------------------------------------------------ void CorProfiler::CleanupProfiler() { LOG(TRACE) << "CorProfiler::CleanupProfiler: Enter"; pthread_cancel(healthThread); pthread_join(healthThread, NULL); LOG(TRACE) << "CorProfiler::CleanupProfiler: Exit"; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::UnloadProfiler //------------------------------------------------------------------------------------------------------------------------------------------------------ void CorProfiler::UnloadProfiler() { LOG(TRACE) << "CorProfiler::UnloadProfiler: Enter"; corProfilerInfo3->RequestProfilerDetach(DETACH_TIMEOUT); LOG(TRACE) << "CorProfiler::UnloadProfiler: Exit"; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::GetExceptionName //------------------------------------------------------------------------------------------------------------------------------------------------------ String CorProfiler::GetExceptionName(ObjectID objectId) { LOG(TRACE) << "CorProfiler::GetExceptionName: Enter with objectId =" << objectId; String name; ClassID classId; ModuleID moduleId; mdTypeDef typeDefToken; IMetaDataImport* metadata; ULONG read = 0; HRESULT hRes = corProfilerInfo->GetClassFromObject(objectId, &classId); if(FAILED(hRes)) { LOG(TRACE) << "CorProfiler::GetExceptionName: Failed in call to GetClassFromObject " << hRes; return WCHAR(""); } hRes = corProfilerInfo->GetClassIDInfo(classId, &moduleId, &typeDefToken); if(FAILED(hRes)) { LOG(TRACE) << "CorProfiler::GetExceptionName: Failed in call to GetClassIDInfo " << hRes; return WCHAR(""); } hRes = corProfilerInfo->GetModuleMetaData(moduleId, ofRead, IID_IMetaDataImport, (IUnknown**) (&metadata)); if(FAILED(hRes)) { LOG(TRACE) << "CorProfiler::GetExceptionName: Failed in call to GetModuleMetaData " << hRes; return WCHAR(""); } WCHAR funcName[1024]; hRes = metadata->GetTypeDefProps(typeDefToken, funcName, 1024, &read, NULL, NULL); if(FAILED(hRes)) { LOG(TRACE) << "CorProfiler::GetExceptionName: Failed in call to GetTypeDefProps " << hRes; metadata->Release(); return WCHAR(""); } name+=funcName; metadata->Release(); LOG(TRACE) << "CorProfiler::GetExceptionName: Exit"; return name; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::GetExceptionMesssage //------------------------------------------------------------------------------------------------------------------------------------------------------ String CorProfiler::GetExceptionMessage(ObjectID objectId) { LOG(TRACE) << "CorProfiler::GetExceptionMessage: Enter with objectId =" << objectId; ClassID classId; ClassID parentClassId = NULL; ClassID systemExceptionClassId = NULL; ModuleID moduleId; mdTypeDef typeDefToken; IMetaDataImport* metadata = NULL; ULONG read = 0; WCHAR exceptionName[256]; ULONG fieldCount; COR_FIELD_OFFSET* pFieldOffsets = NULL; WCHAR fieldName[256]; ULONG stringLengthOffset; ULONG stringBufferOffset; LONG_PTR msgField; INT32 stringLength; WCHAR * stringBuffer = NULL; String msg; HRESULT hRes = corProfilerInfo8->GetClassFromObject(objectId, &classId); if(FAILED(hRes)) { LOG(TRACE) << "CorProfiler::GetExceptionMessage: Failed in call to GetClassFromObject " << hRes; return WCHAR(""); } // // Loop to find the classId for "System.Exception" // do { hRes = corProfilerInfo8->GetClassIDInfo2(classId, &moduleId, &typeDefToken, &parentClassId, 0, nullptr, nullptr); if(FAILED(hRes)) { LOG(TRACE) << "CorProfiler::GetExceptionMessage: Failed in call to GetClassIDInfo2 " << hRes; return WCHAR(""); } hRes = corProfilerInfo8->GetModuleMetaData(moduleId, ofRead, IID_IMetaDataImport, (IUnknown**) (&metadata)); if(FAILED(hRes)) { LOG(TRACE) << "CorProfiler::GetExceptionMessage: Failed in call to GetModuleMetaData " << hRes; return WCHAR(""); } hRes = metadata->GetTypeDefProps(typeDefToken, exceptionName, 256, &read, NULL, NULL); if(FAILED(hRes)) { LOG(TRACE) << "CorProfiler::GetExceptionMessage: Failed in call to GetTypeDefProps " << hRes; metadata->Release(); return WCHAR(""); } if(wcscmp(u"System.Exception",exceptionName)==0) { systemExceptionClassId = classId; break; } else { classId = parentClassId; metadata->Release(); metadata = NULL; } }while(parentClassId != NULL); if(systemExceptionClassId != NULL) { hRes = corProfilerInfo8->GetClassLayout(systemExceptionClassId, NULL, 0, &fieldCount, NULL); if(FAILED(hRes)) { LOG(TRACE) << "CorProfiler::GetExceptionMessage: Failed in call to GetClassLayout " << hRes; if(metadata != NULL) metadata->Release(); return WCHAR(""); } if(fieldCount == 0) { LOG(TRACE) << "CorProfiler::GetExceptionMessage: GetClassLayout returned zero fieldCount"; if(metadata != NULL) metadata->Release(); return WCHAR(""); } pFieldOffsets = new COR_FIELD_OFFSET[fieldCount]; if(pFieldOffsets==NULL) { LOG(TRACE) << "CorProfiler::GetExceptionMessage: Failed memory allocation for pFieldOffsets"; if(metadata != NULL) metadata->Release(); return WCHAR("");; } hRes = corProfilerInfo8->GetClassLayout(systemExceptionClassId, pFieldOffsets, fieldCount, &fieldCount, NULL); if(FAILED(hRes)) { LOG(TRACE) << "CorProfiler::GetExceptionMessage: Failed in call to GetClassLayout " << hRes; if(metadata != NULL) metadata->Release(); delete [] pFieldOffsets; return WCHAR(""); } // // Loop to locate the "_message" field // Get stringLength from the "_message" field stringLengthOffset // Copy the number of (stringLength+1) WCHARs from the "_message" field stringBufferOffset to our stringBuffer // for (ULONG fieldIndex = 0; fieldIndex < fieldCount; fieldIndex++) { hRes = metadata->GetFieldProps(pFieldOffsets[fieldIndex].ridOfField, NULL, fieldName, 256, NULL, NULL, NULL, NULL, NULL, NULL, NULL); if(FAILED(hRes)) { LOG(TRACE) << "CorProfiler::GetExceptionMessage: Failed in call to GetFieldProps " << hRes; if(metadata != NULL) metadata->Release(); delete [] pFieldOffsets; return WCHAR(""); } if(wcscmp(u"_message",fieldName)==0) { hRes = corProfilerInfo8->GetStringLayout2(&stringLengthOffset, &stringBufferOffset); if(FAILED(hRes)) { LOG(TRACE) << "CorProfiler::GetExceptionMessage: Failed in call to GetStringLayout2 " << hRes; if(metadata != NULL) metadata->Release(); delete [] pFieldOffsets; return WCHAR(""); } msgField = *(PLONG_PTR)(((BYTE *)objectId) + pFieldOffsets[fieldIndex].ulOffset); if(msgField != NULL) { stringLength = *(PINT32)((BYTE *)msgField + stringLengthOffset); stringBuffer = new WCHAR[stringLength+1]; if(stringBuffer==NULL) { LOG(TRACE) << "CorProfiler::GetExceptionMessage: Failed memory allocation for stringBuffer"; if(metadata != NULL) metadata->Release(); delete [] pFieldOffsets; return WCHAR("");; } memcpy(stringBuffer, (BYTE *)msgField+stringBufferOffset,(stringLength+1)*sizeof(WCHAR)); msg+=stringBuffer; } break; } } } if(metadata != NULL) metadata->Release(); if(pFieldOffsets != NULL) delete [] pFieldOffsets; if(stringBuffer != NULL) delete stringBuffer; LOG(TRACE) << "CorProfiler::GetExceptionMessage: Exit"; return msg; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // IsCoreClrProcess //------------------------------------------------------------------------------------------------------------------------------------------------------ bool CorProfiler::IsCoreClrProcess(pid_t pid, char** socketName) { LOG(TRACE) << "CorProfiler::IsCoreClrProcess: Enter"; bool bRet = false; *socketName = NULL; FILE *procFile = NULL; char lineBuf[4096]; char* tmpFolder = NULL; // If $TMPDIR is set, use it as the path, otherwise we use /tmp // per https://github.com/dotnet/diagnostics/blob/master/documentation/design-docs/ipc-protocol.md tmpFolder = GetSocketPath("dotnet-diagnostic-", pid, 0); // Enumerate all open domain sockets exposed from the process. If one // exists by the following prefix, we assume its a .NET process: // dotnet-diagnostic-{%d:PID} // The sockets are found in /proc/net/unix if(tmpFolder!=NULL) { procFile = fopen("/proc/net/unix", "r"); if(procFile != NULL) { fgets(lineBuf, sizeof(lineBuf), procFile); // Skip first line with column headers. while(fgets(lineBuf, 4096, procFile) != NULL) { char* ptr = GetPath(lineBuf); if(ptr!=NULL) { if(strncmp(ptr, tmpFolder, strlen(tmpFolder)) == 0) { // Found the correct socket *socketName = new char[(sizeof(char)*strlen(ptr)+1)]; if(*socketName!=NULL) { memset(*socketName, 0, sizeof(char)*strlen(ptr)+1); if(strncpy(*socketName, ptr, sizeof(char)*strlen(ptr)+1)!=NULL) { LOG(TRACE) << "CorProfiler::IsCoreClrProcess: CoreCLR diagnostics socket: " << (*socketName); bRet = true; } break; } } } } fclose(procFile); } else { LOG(TRACE) << "CorProfiler::IsCoreClrProcess: Failed to open /proc/net/unix: " << errno; } } if(tmpFolder) { delete[] tmpFolder; } if(*socketName!=NULL && bRet==false) { delete[] *socketName; *socketName = NULL; } LOG(TRACE) << "CorProfiler::IsCoreClrProcess: Exit"; return bRet; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::send_all // // Helper that waits until all data has been sent. //------------------------------------------------------------------------------------------------------------------------------------------------------ int CorProfiler::send_all(int socket, void* buffer, size_t length) { char *ptr = (char*) buffer; while (length > 0) { int i = send(socket, ptr, length, 0); if (i < 1) { return -1; } ptr += i; length -= i; } return 0; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::recv_all // // Helper that waits until all data has been read. //------------------------------------------------------------------------------------------------------------------------------------------------------ int CorProfiler::recv_all(int socket, void* buffer, size_t length) { char *ptr = (char*) buffer; while (length > 0) { int i = recv(socket, ptr, length, 0); if (i < 1) { return -1; } ptr += i; length -= i; } return 0; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::GenerateCoreClrDump //------------------------------------------------------------------------------------------------------------------------------------------------------ bool CorProfiler::GenerateCoreClrDump(char* socketName, char* dumpFileName) { LOG(TRACE) << "CorProfiler::GenerateCoreClrDump: Enter"; bool bRet = false; struct sockaddr_un addr = {0}; int fd = 0; WCHAR* dumpFileNameW = NULL; char* temp_buffer = NULL; if( (dumpFileNameW = GetUint16(dumpFileName))!=NULL) { if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) { LOG(TRACE) << "CorProfiler::GenerateCoreClrDump: Failed to create socket for .NET dump generation."; } else { LOG(TRACE) << "CorProfiler::GenerateCoreClrDump: Success creating socket for .NET dump generation."; // Create socket to diagnostics server memset(&addr, 0, sizeof(struct sockaddr_un)); addr.sun_family = AF_UNIX; strncpy(addr.sun_path, socketName, sizeof(addr.sun_path)-1); if (connect(fd, (struct sockaddr*) (&addr), sizeof(struct sockaddr_un)) == -1) { LOG(TRACE) << "CorProfiler::GenerateCoreClrDump: Failed to connect to socket for .NET dump generation."; } else { LOG(TRACE) << "CorProfiler::GenerateCoreClrDump: Success connecting to socket for .NET dump generation."; unsigned int dumpFileNameLen = ((strlen(dumpFileName)+1)); int payloadSize = sizeof(dumpFileNameLen); payloadSize += dumpFileNameLen*sizeof(wchar_t); unsigned int dumpType = CORECLR_DUMPTYPE_FULL; payloadSize += sizeof(dumpType); unsigned int diagnostics = CORECLR_DUMPLOGGING_OFF; payloadSize += sizeof(diagnostics); uint16_t totalPacketSize = sizeof(struct IpcHeader)+payloadSize; // First initialize header temp_buffer = new char[totalPacketSize]; if(temp_buffer!=NULL) { memset(temp_buffer, 0, totalPacketSize); struct IpcHeader dumpHeader = { { {"DOTNET_IPC_V1"} }, (uint16_t)totalPacketSize, (uint8_t)0x01, (uint8_t)0x01, (uint16_t)0x0000 }; char* temp_buffer_cur = temp_buffer; memcpy(temp_buffer_cur, &dumpHeader, sizeof(struct IpcHeader)); temp_buffer_cur += sizeof(struct IpcHeader); // Now we add the payload memcpy(temp_buffer_cur, &dumpFileNameLen, sizeof(dumpFileNameLen)); temp_buffer_cur += sizeof(dumpFileNameLen); memcpy(temp_buffer_cur, dumpFileNameW, dumpFileNameLen*sizeof(uint16_t)); temp_buffer_cur += dumpFileNameLen*sizeof(uint16_t); // next, the dumpType memcpy(temp_buffer_cur, &dumpType, sizeof(unsigned int)); temp_buffer_cur += sizeof(unsigned int); // next, the diagnostics flag memcpy(temp_buffer_cur, &diagnostics, sizeof(unsigned int)); if(send_all(fd, temp_buffer, totalPacketSize)==-1) { LOG(TRACE) << "CorProfiler::GenerateCoreClrDump: Failed sending packet to diagnostics server: " << errno; } else { LOG(TRACE) << "CorProfiler::GenerateCoreClrDump: Success sending packet to diagnostics server: "; // Lets get the header first struct IpcHeader retHeader; if(recv_all(fd, &retHeader, sizeof(struct IpcHeader))==-1) { LOG(TRACE) << "CorProfiler::GenerateCoreClrDump: Failed receiving response header from diagnostics server: " << errno; } else { LOG(TRACE) << "CorProfiler::GenerateCoreClrDump: Success receiving response header from diagnostics server"; // Check the header to make sure its the right size if(retHeader.Size != CORECLR_DIAG_IPCHEADER_SIZE) { LOG(TRACE) << "CorProfiler::GenerateCoreClrDump: Failed validating header size in response header from diagnostics server " << retHeader.Size << "!= 24]"; } else { LOG(TRACE) << "CorProfiler::GenerateCoreClrDump: Success validating header size in response header from diagnostics server "; // Next, get the payload which contains a single uint32 (hresult) int32_t res = -1; if(recv_all(fd, &res, sizeof(int32_t))==-1) { LOG(TRACE) << "CorProfiler::GenerateCoreClrDump: Failed receiving result code from response payload from diagnostics server: " << errno; } else { LOG(TRACE) << "CorProfiler::GenerateCoreClrDump: Success receiving result code from response payload from diagnostics server: " << errno; if(res==0) { LOG(TRACE) << "CorProfiler::GenerateCoreClrDump: Core dump generation success "; bRet = true; } else { LOG(TRACE) << "CorProfiler::GenerateCoreClrDump: Response error: " << res; } } } } } delete[] temp_buffer; } close(fd); } } free(dumpFileNameW); } LOG(TRACE) << "CorProfiler::GenerateCoreClrDump: Exit"; return bRet; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::GenerateCoreClrDump //------------------------------------------------------------------------------------------------------------------------------------------------------ char* CorProfiler::GetSocketPath(char* prefix, pid_t pid, pid_t targetPid) { LOG(TRACE) << "CorProfiler::GetSocketPath: Enter"; char* prefixTmpFolder = NULL; char* t = NULL; // If $TMPDIR is set, use it as the path, otherwise we use /tmp prefixTmpFolder = getenv("TMPDIR"); if(prefixTmpFolder==NULL) { prefixTmpFolder = "/tmp"; } if(targetPid) { int len = snprintf(NULL, 0, "%s/%s%d-%d", prefixTmpFolder, prefix, pid, targetPid); t = new char[len+1]; if(t==NULL) { return NULL; } snprintf(t, len+1, "%s/%s%d-%d", prefixTmpFolder, prefix, pid, targetPid); } else { int len = snprintf(NULL, 0, "%s/%s%d", prefixTmpFolder, prefix, pid); t = new char[len+1]; if(t==NULL) { return NULL; } snprintf(t, len+1, "%s/%s%d", prefixTmpFolder, prefix, pid); } LOG(TRACE) << "CorProfiler::GetSocketPath: Exit"; return t; } //------------------------------------------------------------------------------------------------------------------------------------------------------ // CorProfiler::GetPath //------------------------------------------------------------------------------------------------------------------------------------------------------ char* CorProfiler::GetPath(char* lineBuf) { char delim[] = " "; // example of /proc/net/unix line: // 0000000000000000: 00000003 00000000 00000000 0001 03 20287 @/tmp/.X11-unix/X0 char *ptr = strtok(lineBuf, delim); // Move to last column which contains the name of the file (/socket) for(int i=0; i<7; i++) { ptr = strtok(NULL, delim); } if(ptr!=NULL) { ptr[strlen(ptr)-1]='\0'; } return ptr; } // ======================================================================================================================== // ======================================================================================================================== HRESULT STDMETHODCALLTYPE CorProfiler::AppDomainCreationStarted(AppDomainID appDomainId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::AppDomainCreationFinished(AppDomainID appDomainId, HRESULT hrStatus) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::AppDomainShutdownStarted(AppDomainID appDomainId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::AppDomainShutdownFinished(AppDomainID appDomainId, HRESULT hrStatus) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::AssemblyLoadStarted(AssemblyID assemblyId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::AssemblyLoadFinished(AssemblyID assemblyId, HRESULT hrStatus) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::AssemblyUnloadStarted(AssemblyID assemblyId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::AssemblyUnloadFinished(AssemblyID assemblyId, HRESULT hrStatus) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ModuleLoadStarted(ModuleID moduleId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ModuleLoadFinished(ModuleID moduleId, HRESULT hrStatus) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ModuleUnloadStarted(ModuleID moduleId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ModuleUnloadFinished(ModuleID moduleId, HRESULT hrStatus) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ModuleAttachedToAssembly(ModuleID moduleId, AssemblyID AssemblyId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ClassLoadStarted(ClassID classId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ClassLoadFinished(ClassID classId, HRESULT hrStatus) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ClassUnloadStarted(ClassID classId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ClassUnloadFinished(ClassID classId, HRESULT hrStatus) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::FunctionUnloadStarted(FunctionID functionId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::JITCompilationStarted(FunctionID functionId, BOOL fIsSafeToBlock) { return S_OK;} HRESULT STDMETHODCALLTYPE CorProfiler::JITCompilationFinished(FunctionID functionId, HRESULT hrStatus, BOOL fIsSafeToBlock) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::JITCachedFunctionSearchStarted(FunctionID functionId, BOOL *pbUseCachedFunction) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::JITCachedFunctionSearchFinished(FunctionID functionId, COR_PRF_JIT_CACHE result) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::JITFunctionPitched(FunctionID functionId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::JITInlining(FunctionID callerId, FunctionID calleeId, BOOL *pfShouldInline) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ThreadCreated(ThreadID threadId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ThreadDestroyed(ThreadID threadId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ThreadAssignedToOSThread(ThreadID managedThreadId, DWORD osThreadId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RemotingClientInvocationStarted() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RemotingClientSendingMessage(GUID *pCookie, BOOL fIsAsync) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RemotingClientReceivingReply(GUID *pCookie, BOOL fIsAsync) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RemotingClientInvocationFinished() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RemotingServerReceivingMessage(GUID *pCookie, BOOL fIsAsync) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RemotingServerInvocationStarted() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RemotingServerInvocationReturned() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RemotingServerSendingReply(GUID *pCookie, BOOL fIsAsync) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::UnmanagedToManagedTransition(FunctionID functionId, COR_PRF_TRANSITION_REASON reason) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ManagedToUnmanagedTransition(FunctionID functionId, COR_PRF_TRANSITION_REASON reason) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RuntimeSuspendStarted(COR_PRF_SUSPEND_REASON suspendReason) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RuntimeSuspendFinished() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RuntimeSuspendAborted() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RuntimeResumeStarted() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RuntimeResumeFinished() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RuntimeThreadSuspended(ThreadID threadId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RuntimeThreadResumed(ThreadID threadId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::MovedReferences(ULONG cMovedObjectIDRanges, ObjectID oldObjectIDRangeStart[], ObjectID newObjectIDRangeStart[], ULONG cObjectIDRangeLength[]) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ObjectAllocated(ObjectID objectId, ClassID classId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ObjectsAllocatedByClass(ULONG cClassCount, ClassID classIds[], ULONG cObjects[]) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ObjectReferences(ObjectID objectId, ClassID classId, ULONG cObjectRefs, ObjectID objectRefIds[]) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RootReferences(ULONG cRootRefs, ObjectID rootRefIds[]) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ExceptionSearchFunctionEnter(FunctionID functionId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ExceptionSearchFunctionLeave() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ExceptionSearchFilterEnter(FunctionID functionId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ExceptionSearchFilterLeave() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ExceptionSearchCatcherFound(FunctionID functionId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ExceptionOSHandlerEnter(UINT_PTR __unused) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ExceptionOSHandlerLeave(UINT_PTR __unused) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ExceptionUnwindFunctionEnter(FunctionID functionId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ExceptionUnwindFunctionLeave() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ExceptionUnwindFinallyEnter(FunctionID functionId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ExceptionUnwindFinallyLeave() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ExceptionCatcherEnter(FunctionID functionId, ObjectID objectId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ExceptionCatcherLeave() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::COMClassicVTableCreated(ClassID wrappedClassId, REFGUID implementedIID, void *pVTable, ULONG cSlots) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::COMClassicVTableDestroyed(ClassID wrappedClassId, REFGUID implementedIID, void *pVTable) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ExceptionCLRCatcherFound() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ExceptionCLRCatcherExecute() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ThreadNameChanged(ThreadID threadId, ULONG cchName, WCHAR name[]) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::SurvivingReferences(ULONG cSurvivingObjectIDRanges, ObjectID objectIDRangeStart[], ULONG cObjectIDRangeLength[]) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::FinalizeableObjectQueued(DWORD finalizerFlags, ObjectID objectID) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::RootReferences2(ULONG cRootRefs, ObjectID rootRefIds[], COR_PRF_GC_ROOT_KIND rootKinds[], COR_PRF_GC_ROOT_FLAGS rootFlags[], UINT_PTR rootIds[]) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::HandleCreated(GCHandleID handleId, ObjectID initialObjectId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::HandleDestroyed(GCHandleID handleId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ProfilerAttachComplete() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ProfilerDetachSucceeded() { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ReJITCompilationStarted(FunctionID functionId, ReJITID rejitId, BOOL fIsSafeToBlock) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::GetReJITParameters(ModuleID moduleId, mdMethodDef methodId, ICorProfilerFunctionControl *pFunctionControl) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ReJITCompilationFinished(FunctionID functionId, ReJITID rejitId, HRESULT hrStatus, BOOL fIsSafeToBlock) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ReJITError(ModuleID moduleId, mdMethodDef methodId, FunctionID functionId, HRESULT hrStatus) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::MovedReferences2(ULONG cMovedObjectIDRanges, ObjectID oldObjectIDRangeStart[], ObjectID newObjectIDRangeStart[], SIZE_T cObjectIDRangeLength[]) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::SurvivingReferences2(ULONG cSurvivingObjectIDRanges, ObjectID objectIDRangeStart[], SIZE_T cObjectIDRangeLength[]) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ConditionalWeakTableElementReferences(ULONG cRootRefs, ObjectID keyRefIds[], ObjectID valueRefIds[], GCHandleID rootIds[]) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::GetAssemblyReferences(const WCHAR *wszAssemblyPath, ICorProfilerAssemblyReferenceProvider *pAsmRefProvider) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::ModuleInMemorySymbolsUpdated(ModuleID moduleId) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::DynamicMethodJITCompilationStarted(FunctionID functionId, BOOL fIsSafeToBlock, LPCBYTE ilHeader, ULONG cbILHeader) { return S_OK; } HRESULT STDMETHODCALLTYPE CorProfiler::DynamicMethodJITCompilationFinished(FunctionID functionId, HRESULT hrStatus, BOOL fIsSafeToBlock) { return S_OK; }ProcDump-for-Linux-2.2/profiler/src/corprof_i.cpp000066400000000000000000000116571447614355600221170ustar00rootroot00000000000000// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. /* this ALWAYS GENERATED file contains the IIDs and CLSIDs */ /* link this file in with the server and any clients */ /* File created by MIDL compiler version 8.01.0622 */ /* @@MIDL_FILE_HEADING( ) */ #pragma warning( disable: 4049 ) /* more than 64k source lines */ #ifdef __cplusplus extern "C"{ #endif #include #include #ifdef _MIDL_USE_GUIDDEF_ #ifndef INITGUID #define INITGUID #include #undef INITGUID #else #include #endif #define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \ DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) #else // !_MIDL_USE_GUIDDEF_ #ifndef __IID_DEFINED__ #define __IID_DEFINED__ typedef struct _IID { unsigned long x; unsigned short s1; unsigned short s2; unsigned char c[8]; } IID; #endif // __IID_DEFINED__ #ifndef CLSID_DEFINED #define CLSID_DEFINED typedef IID CLSID; #endif // CLSID_DEFINED #define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \ EXTERN_C __declspec(selectany) const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} #endif // !_MIDL_USE_GUIDDEF_ MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback,0x176FBED1,0xA55C,0x4796,0x98,0xCA,0xA9,0xDA,0x0E,0xF8,0x83,0xE7); MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback2,0x8A8CC829,0xCCF2,0x49fe,0xBB,0xAE,0x0F,0x02,0x22,0x28,0x07,0x1A); MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback3,0x4FD2ED52,0x7731,0x4b8d,0x94,0x69,0x03,0xD2,0xCC,0x30,0x86,0xC5); MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback4,0x7B63B2E3,0x107D,0x4d48,0xB2,0xF6,0xF6,0x1E,0x22,0x94,0x70,0xD2); MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback5,0x8DFBA405,0x8C9F,0x45F8,0xBF,0xFA,0x83,0xB1,0x4C,0xEF,0x78,0xB5); MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback6,0xFC13DF4B,0x4448,0x4F4F,0x95,0x0C,0xBA,0x8D,0x19,0xD0,0x0C,0x36); MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback7,0xF76A2DBA,0x1D52,0x4539,0x86,0x6C,0x2A,0xA5,0x18,0xF9,0xEF,0xC3); MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback8,0x5BED9B15,0xC079,0x4D47,0xBF,0xE2,0x21,0x5A,0x14,0x0C,0x07,0xE0); MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback9,0x27583EC3,0xC8F5,0x482F,0x80,0x52,0x19,0x4B,0x8C,0xE4,0x70,0x5A); MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback10,0xCEC5B60E,0xC69C,0x495F,0x87,0xF6,0x84,0xD2,0x8E,0xE1,0x6F,0xFB); MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback11,0x42350846,0xAAED,0x47F7,0xB1,0x28,0xFD,0x0C,0x98,0x88,0x1C,0xDE); MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo,0x28B5557D,0x3F3F,0x48b4,0x90,0xB2,0x5F,0x9E,0xEA,0x2F,0x6C,0x48); MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo2,0xCC0935CD,0xA518,0x487d,0xB0,0xBB,0xA9,0x32,0x14,0xE6,0x54,0x78); MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo3,0xB555ED4F,0x452A,0x4E54,0x8B,0x39,0xB5,0x36,0x0B,0xAD,0x32,0xA0); MIDL_DEFINE_GUID(IID, IID_ICorProfilerObjectEnum,0x2C6269BD,0x2D13,0x4321,0xAE,0x12,0x66,0x86,0x36,0x5F,0xD6,0xAF); MIDL_DEFINE_GUID(IID, IID_ICorProfilerFunctionEnum,0xFF71301A,0xB994,0x429D,0xA1,0x0B,0xB3,0x45,0xA6,0x52,0x80,0xEF); MIDL_DEFINE_GUID(IID, IID_ICorProfilerModuleEnum,0xb0266d75,0x2081,0x4493,0xaf,0x7f,0x02,0x8b,0xa3,0x4d,0xb8,0x91); MIDL_DEFINE_GUID(IID, IID_IMethodMalloc,0xA0EFB28B,0x6EE2,0x4d7b,0xB9,0x83,0xA7,0x5E,0xF7,0xBE,0xED,0xB8); MIDL_DEFINE_GUID(IID, IID_ICorProfilerFunctionControl,0xF0963021,0xE1EA,0x4732,0x85,0x81,0xE0,0x1B,0x0B,0xD3,0xC0,0xC6); MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo4,0x0d8fdcaa,0x6257,0x47bf,0xb1,0xbf,0x94,0xda,0xc8,0x84,0x66,0xee); MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo5,0x07602928,0xCE38,0x4B83,0x81,0xE7,0x74,0xAD,0xAF,0x78,0x12,0x14); MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo6,0xF30A070D,0xBFFB,0x46A7,0xB1,0xD8,0x87,0x81,0xEF,0x7B,0x69,0x8A); MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo7,0x9AEECC0D,0x63E0,0x4187,0x8C,0x00,0xE3,0x12,0xF5,0x03,0xF6,0x63); MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo8,0xC5AC80A6,0x782E,0x4716,0x80,0x44,0x39,0x59,0x8C,0x60,0xCF,0xBF); MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo9,0x008170DB,0xF8CC,0x4796,0x9A,0x51,0xDC,0x8A,0xA0,0xB4,0x70,0x12); MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo10,0x2F1B5152,0xC869,0x40C9,0xAA,0x5F,0x3A,0xBE,0x02,0x6B,0xD7,0x20); MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo11,0x06398876,0x8987,0x4154,0xB6,0x21,0x40,0xA0,0x0D,0x6E,0x4D,0x04); MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo12,0x27b24ccd,0x1cb1,0x47c5,0x96,0xee,0x98,0x19,0x0d,0xc3,0x09,0x59); MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo13,0x19C4179D,0xF92C,0x4D25,0x9F,0x20,0x5F,0xEB,0xFB,0xBD,0x29,0x78); MIDL_DEFINE_GUID(IID, IID_ICorProfilerMethodEnum,0xFCCEE788,0x0088,0x454B,0xA8,0x11,0xC9,0x9F,0x29,0x8D,0x19,0x42); MIDL_DEFINE_GUID(IID, IID_ICorProfilerThreadEnum,0x571194f7,0x25ed,0x419f,0xaa,0x8b,0x70,0x16,0xb3,0x15,0x97,0x01); MIDL_DEFINE_GUID(IID, IID_ICorProfilerAssemblyReferenceProvider,0x66A78C24,0x2EEF,0x4F65,0xB4,0x5F,0xDD,0x1D,0x80,0x38,0xBF,0x3C); #undef MIDL_DEFINE_GUID #ifdef __cplusplus } #endif ProcDump-for-Linux-2.2/profiler/src/dllmain.cpp000066400000000000000000000021521447614355600215430ustar00rootroot00000000000000// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. #include "ClassFactory.h" const IID IID_IUnknown = { 0x00000000, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 } }; const IID IID_IClassFactory = { 0x00000001, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 } }; BOOL STDMETHODCALLTYPE DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { return TRUE; } extern "C" HRESULT STDMETHODCALLTYPE DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) { // {cf0d821e-299b-5307-a3d8-b283c03916dd} const GUID CLSID_CorProfiler = { 0xcf0d821e, 0x299b, 0x5307, { 0xa3, 0xd8, 0xb2, 0x83, 0xc0, 0x39, 0x16, 0xdd } }; if (ppv == nullptr || rclsid != CLSID_CorProfiler) { return E_FAIL; } auto factory = new ClassFactory; if (factory == nullptr) { return E_FAIL; } return factory->QueryInterface(riid, ppv); } extern "C" HRESULT STDMETHODCALLTYPE DllCanUnloadNow() { return S_OK; }ProcDump-for-Linux-2.2/profiler/src/easylogging++.cc000066400000000000000000003561611447614355600224000ustar00rootroot00000000000000// // Bismillah ar-Rahmaan ar-Raheem // // Easylogging++ v9.96.7 // Cross-platform logging library for C++ applications // // Copyright (c) 2012-2018 Amrayn Web Services // Copyright (c) 2012-2018 @abumusamq // // This library is released under the MIT Licence. // https://github.com/amrayn/easyloggingpp/blob/master/LICENSE // // https://amrayn.com // http://muflihun.com // #include "easylogging++.h" #if defined(AUTO_INITIALIZE_EASYLOGGINGPP) INITIALIZE_EASYLOGGINGPP #endif namespace el { // el::base namespace base { // el::base::consts namespace consts { // Level log values - These are values that are replaced in place of %level format specifier // Extra spaces after format specifiers are only for readability purposes in log files static const base::type::char_t* kInfoLevelLogValue = ELPP_LITERAL("INFO"); static const base::type::char_t* kDebugLevelLogValue = ELPP_LITERAL("DEBUG"); static const base::type::char_t* kWarningLevelLogValue = ELPP_LITERAL("WARNING"); static const base::type::char_t* kErrorLevelLogValue = ELPP_LITERAL("ERROR"); static const base::type::char_t* kFatalLevelLogValue = ELPP_LITERAL("FATAL"); static const base::type::char_t* kVerboseLevelLogValue = ELPP_LITERAL("VERBOSE"); // will become VERBOSE-x where x = verbose level static const base::type::char_t* kTraceLevelLogValue = ELPP_LITERAL("TRACE"); static const base::type::char_t* kInfoLevelShortLogValue = ELPP_LITERAL("I"); static const base::type::char_t* kDebugLevelShortLogValue = ELPP_LITERAL("D"); static const base::type::char_t* kWarningLevelShortLogValue = ELPP_LITERAL("W"); static const base::type::char_t* kErrorLevelShortLogValue = ELPP_LITERAL("E"); static const base::type::char_t* kFatalLevelShortLogValue = ELPP_LITERAL("F"); static const base::type::char_t* kVerboseLevelShortLogValue = ELPP_LITERAL("V"); static const base::type::char_t* kTraceLevelShortLogValue = ELPP_LITERAL("T"); // Format specifiers - These are used to define log format static const base::type::char_t* kAppNameFormatSpecifier = ELPP_LITERAL("%app"); static const base::type::char_t* kLoggerIdFormatSpecifier = ELPP_LITERAL("%logger"); static const base::type::char_t* kThreadIdFormatSpecifier = ELPP_LITERAL("%thread"); static const base::type::char_t* kSeverityLevelFormatSpecifier = ELPP_LITERAL("%level"); static const base::type::char_t* kSeverityLevelShortFormatSpecifier = ELPP_LITERAL("%levshort"); static const base::type::char_t* kDateTimeFormatSpecifier = ELPP_LITERAL("%datetime"); static const base::type::char_t* kLogFileFormatSpecifier = ELPP_LITERAL("%file"); static const base::type::char_t* kLogFileBaseFormatSpecifier = ELPP_LITERAL("%fbase"); static const base::type::char_t* kLogLineFormatSpecifier = ELPP_LITERAL("%line"); static const base::type::char_t* kLogLocationFormatSpecifier = ELPP_LITERAL("%loc"); static const base::type::char_t* kLogFunctionFormatSpecifier = ELPP_LITERAL("%func"); static const base::type::char_t* kCurrentUserFormatSpecifier = ELPP_LITERAL("%user"); static const base::type::char_t* kCurrentHostFormatSpecifier = ELPP_LITERAL("%host"); static const base::type::char_t* kMessageFormatSpecifier = ELPP_LITERAL("%msg"); static const base::type::char_t* kVerboseLevelFormatSpecifier = ELPP_LITERAL("%vlevel"); static const char* kDateTimeFormatSpecifierForFilename = "%datetime"; // Date/time static const char* kDays[7] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; static const char* kDaysAbbrev[7] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; static const char* kMonths[12] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; static const char* kMonthsAbbrev[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; static const char* kDefaultDateTimeFormat = "%Y-%M-%d %H:%m:%s,%g"; static const char* kDefaultDateTimeFormatInFilename = "%Y-%M-%d_%H-%m"; static const int kYearBase = 1900; static const char* kAm = "AM"; static const char* kPm = "PM"; // Miscellaneous constants static const char* kNullPointer = "nullptr"; #if ELPP_VARIADIC_TEMPLATES_SUPPORTED #endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED static const base::type::VerboseLevel kMaxVerboseLevel = 9; static const char* kUnknownUser = "unknown-user"; static const char* kUnknownHost = "unknown-host"; //---------------- DEFAULT LOG FILE ----------------------- #if defined(ELPP_NO_DEFAULT_LOG_FILE) # if ELPP_OS_UNIX static const char* kDefaultLogFile = "/dev/null"; # elif ELPP_OS_WINDOWS static const char* kDefaultLogFile = "nul"; # endif // ELPP_OS_UNIX #elif defined(ELPP_DEFAULT_LOG_FILE) static const char* kDefaultLogFile = ELPP_DEFAULT_LOG_FILE; #else static const char* kDefaultLogFile = "myeasylog.log"; #endif // defined(ELPP_NO_DEFAULT_LOG_FILE) #if !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG) static const char* kDefaultLogFileParam = "--default-log-file"; #endif // !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG) #if defined(ELPP_LOGGING_FLAGS_FROM_ARG) static const char* kLoggingFlagsParam = "--logging-flags"; #endif // defined(ELPP_LOGGING_FLAGS_FROM_ARG) static const char* kValidLoggerIdSymbols = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._"; static const char* kConfigurationComment = "##"; static const char* kConfigurationLevel = "*"; static const char* kConfigurationLoggerId = "--"; } // el::base::utils namespace utils { /// @brief Aborts application due with user-defined status static void abort(int status, const std::string& reason) { // Both status and reason params are there for debugging with tools like gdb etc ELPP_UNUSED(status); ELPP_UNUSED(reason); #if defined(ELPP_COMPILER_MSVC) && defined(_M_IX86) && defined(_DEBUG) // Ignore msvc critical error dialog - break instead (on debug mode) _asm int 3 #else ::abort(); #endif // defined(ELPP_COMPILER_MSVC) && defined(_M_IX86) && defined(_DEBUG) } } // namespace utils } // namespace base // el // LevelHelper const char* LevelHelper::convertToString(Level level) { // Do not use switch over strongly typed enums because Intel C++ compilers dont support them yet. if (level == Level::Global) return "GLOBAL"; if (level == Level::Debug) return "DEBUG"; if (level == Level::Info) return "INFO"; if (level == Level::Warning) return "WARNING"; if (level == Level::Error) return "ERROR"; if (level == Level::Fatal) return "FATAL"; if (level == Level::Verbose) return "VERBOSE"; if (level == Level::Trace) return "TRACE"; return "UNKNOWN"; } struct StringToLevelItem { const char* levelString; Level level; }; static struct StringToLevelItem stringToLevelMap[] = { { "global", Level::Global }, { "debug", Level::Debug }, { "info", Level::Info }, { "warning", Level::Warning }, { "error", Level::Error }, { "fatal", Level::Fatal }, { "verbose", Level::Verbose }, { "trace", Level::Trace } }; Level LevelHelper::convertFromString(const char* levelStr) { for (auto& item : stringToLevelMap) { if (base::utils::Str::cStringCaseEq(levelStr, item.levelString)) { return item.level; } } return Level::Unknown; } void LevelHelper::forEachLevel(base::type::EnumType* startIndex, const std::function& fn) { base::type::EnumType lIndexMax = LevelHelper::kMaxValid; do { if (fn()) { break; } *startIndex = static_cast(*startIndex << 1); } while (*startIndex <= lIndexMax); } // ConfigurationTypeHelper const char* ConfigurationTypeHelper::convertToString(ConfigurationType configurationType) { // Do not use switch over strongly typed enums because Intel C++ compilers dont support them yet. if (configurationType == ConfigurationType::Enabled) return "ENABLED"; if (configurationType == ConfigurationType::Filename) return "FILENAME"; if (configurationType == ConfigurationType::Format) return "FORMAT"; if (configurationType == ConfigurationType::ToFile) return "TO_FILE"; if (configurationType == ConfigurationType::ToStandardOutput) return "TO_STANDARD_OUTPUT"; if (configurationType == ConfigurationType::SubsecondPrecision) return "SUBSECOND_PRECISION"; if (configurationType == ConfigurationType::PerformanceTracking) return "PERFORMANCE_TRACKING"; if (configurationType == ConfigurationType::MaxLogFileSize) return "MAX_LOG_FILE_SIZE"; if (configurationType == ConfigurationType::LogFlushThreshold) return "LOG_FLUSH_THRESHOLD"; return "UNKNOWN"; } struct ConfigurationStringToTypeItem { const char* configString; ConfigurationType configType; }; static struct ConfigurationStringToTypeItem configStringToTypeMap[] = { { "enabled", ConfigurationType::Enabled }, { "to_file", ConfigurationType::ToFile }, { "to_standard_output", ConfigurationType::ToStandardOutput }, { "format", ConfigurationType::Format }, { "filename", ConfigurationType::Filename }, { "subsecond_precision", ConfigurationType::SubsecondPrecision }, { "milliseconds_width", ConfigurationType::MillisecondsWidth }, { "performance_tracking", ConfigurationType::PerformanceTracking }, { "max_log_file_size", ConfigurationType::MaxLogFileSize }, { "log_flush_threshold", ConfigurationType::LogFlushThreshold }, }; ConfigurationType ConfigurationTypeHelper::convertFromString(const char* configStr) { for (auto& item : configStringToTypeMap) { if (base::utils::Str::cStringCaseEq(configStr, item.configString)) { return item.configType; } } return ConfigurationType::Unknown; } void ConfigurationTypeHelper::forEachConfigType(base::type::EnumType* startIndex, const std::function& fn) { base::type::EnumType cIndexMax = ConfigurationTypeHelper::kMaxValid; do { if (fn()) { break; } *startIndex = static_cast(*startIndex << 1); } while (*startIndex <= cIndexMax); } // Configuration Configuration::Configuration(const Configuration& c) : m_level(c.m_level), m_configurationType(c.m_configurationType), m_value(c.m_value) { } Configuration& Configuration::operator=(const Configuration& c) { if (&c != this) { m_level = c.m_level; m_configurationType = c.m_configurationType; m_value = c.m_value; } return *this; } /// @brief Full constructor used to sets value of configuration Configuration::Configuration(Level level, ConfigurationType configurationType, const std::string& value) : m_level(level), m_configurationType(configurationType), m_value(value) { } void Configuration::log(el::base::type::ostream_t& os) const { os << LevelHelper::convertToString(m_level) << ELPP_LITERAL(" ") << ConfigurationTypeHelper::convertToString(m_configurationType) << ELPP_LITERAL(" = ") << m_value.c_str(); } /// @brief Used to find configuration from configuration (pointers) repository. Avoid using it. Configuration::Predicate::Predicate(Level level, ConfigurationType configurationType) : m_level(level), m_configurationType(configurationType) { } bool Configuration::Predicate::operator()(const Configuration* conf) const { return ((conf != nullptr) && (conf->level() == m_level) && (conf->configurationType() == m_configurationType)); } // Configurations Configurations::Configurations(void) : m_configurationFile(std::string()), m_isFromFile(false) { } Configurations::Configurations(const std::string& configurationFile, bool useDefaultsForRemaining, Configurations* base) : m_configurationFile(configurationFile), m_isFromFile(false) { parseFromFile(configurationFile, base); if (useDefaultsForRemaining) { setRemainingToDefault(); } } bool Configurations::parseFromFile(const std::string& configurationFile, Configurations* base) { // We initial assertion with true because if we have assertion disabled, we want to pass this // check and if assertion is enabled we will have values re-assigned any way. bool assertionPassed = true; ELPP_ASSERT((assertionPassed = base::utils::File::pathExists(configurationFile.c_str(), true)) == true, "Configuration file [" << configurationFile << "] does not exist!"); if (!assertionPassed) { return false; } bool success = Parser::parseFromFile(configurationFile, this, base); m_isFromFile = success; return success; } bool Configurations::parseFromText(const std::string& configurationsString, Configurations* base) { bool success = Parser::parseFromText(configurationsString, this, base); if (success) { m_isFromFile = false; } return success; } void Configurations::setFromBase(Configurations* base) { if (base == nullptr || base == this) { return; } base::threading::ScopedLock scopedLock(base->lock()); for (Configuration*& conf : base->list()) { set(conf); } } bool Configurations::hasConfiguration(ConfigurationType configurationType) { base::type::EnumType lIndex = LevelHelper::kMinValid; bool result = false; LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { if (hasConfiguration(LevelHelper::castFromInt(lIndex), configurationType)) { result = true; } return result; }); return result; } bool Configurations::hasConfiguration(Level level, ConfigurationType configurationType) { base::threading::ScopedLock scopedLock(lock()); #if ELPP_COMPILER_INTEL // We cant specify template types here, Intel C++ throws compilation error // "error: type name is not allowed" return RegistryWithPred::get(level, configurationType) != nullptr; #else return RegistryWithPred::get(level, configurationType) != nullptr; #endif // ELPP_COMPILER_INTEL } void Configurations::set(Level level, ConfigurationType configurationType, const std::string& value) { base::threading::ScopedLock scopedLock(lock()); unsafeSet(level, configurationType, value); // This is not unsafe anymore as we have locked mutex if (level == Level::Global) { unsafeSetGlobally(configurationType, value, false); // Again this is not unsafe either } } void Configurations::set(Configuration* conf) { if (conf == nullptr) { return; } set(conf->level(), conf->configurationType(), conf->value()); } void Configurations::setToDefault(void) { setGlobally(ConfigurationType::Enabled, std::string("true"), true); setGlobally(ConfigurationType::Filename, std::string(base::consts::kDefaultLogFile), true); #if defined(ELPP_NO_LOG_TO_FILE) setGlobally(ConfigurationType::ToFile, std::string("false"), true); #else setGlobally(ConfigurationType::ToFile, std::string("true"), true); #endif // defined(ELPP_NO_LOG_TO_FILE) setGlobally(ConfigurationType::ToStandardOutput, std::string("true"), true); setGlobally(ConfigurationType::SubsecondPrecision, std::string("3"), true); setGlobally(ConfigurationType::PerformanceTracking, std::string("true"), true); setGlobally(ConfigurationType::MaxLogFileSize, std::string("0"), true); setGlobally(ConfigurationType::LogFlushThreshold, std::string("0"), true); setGlobally(ConfigurationType::Format, std::string("%datetime %level [%logger] %msg"), true); set(Level::Debug, ConfigurationType::Format, std::string("%datetime %level [%logger] [%user@%host] [%func] [%loc] %msg")); // INFO and WARNING are set to default by Level::Global set(Level::Error, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); set(Level::Fatal, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); set(Level::Verbose, ConfigurationType::Format, std::string("%datetime %level-%vlevel [%logger] %msg")); set(Level::Trace, ConfigurationType::Format, std::string("%datetime %level [%logger] [%func] [%loc] %msg")); } void Configurations::setRemainingToDefault(void) { base::threading::ScopedLock scopedLock(lock()); #if defined(ELPP_NO_LOG_TO_FILE) unsafeSetIfNotExist(Level::Global, ConfigurationType::Enabled, std::string("false")); #else unsafeSetIfNotExist(Level::Global, ConfigurationType::Enabled, std::string("true")); #endif // defined(ELPP_NO_LOG_TO_FILE) unsafeSetIfNotExist(Level::Global, ConfigurationType::Filename, std::string(base::consts::kDefaultLogFile)); unsafeSetIfNotExist(Level::Global, ConfigurationType::ToStandardOutput, std::string("true")); unsafeSetIfNotExist(Level::Global, ConfigurationType::SubsecondPrecision, std::string("3")); unsafeSetIfNotExist(Level::Global, ConfigurationType::PerformanceTracking, std::string("true")); unsafeSetIfNotExist(Level::Global, ConfigurationType::MaxLogFileSize, std::string("0")); unsafeSetIfNotExist(Level::Global, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); unsafeSetIfNotExist(Level::Debug, ConfigurationType::Format, std::string("%datetime %level [%logger] [%user@%host] [%func] [%loc] %msg")); // INFO and WARNING are set to default by Level::Global unsafeSetIfNotExist(Level::Error, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); unsafeSetIfNotExist(Level::Fatal, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); unsafeSetIfNotExist(Level::Verbose, ConfigurationType::Format, std::string("%datetime %level-%vlevel [%logger] %msg")); unsafeSetIfNotExist(Level::Trace, ConfigurationType::Format, std::string("%datetime %level [%logger] [%func] [%loc] %msg")); } bool Configurations::Parser::parseFromFile(const std::string& configurationFile, Configurations* sender, Configurations* base) { sender->setFromBase(base); std::ifstream fileStream_(configurationFile.c_str(), std::ifstream::in); ELPP_ASSERT(fileStream_.is_open(), "Unable to open configuration file [" << configurationFile << "] for parsing."); bool parsedSuccessfully = false; std::string line = std::string(); Level currLevel = Level::Unknown; std::string currConfigStr = std::string(); std::string currLevelStr = std::string(); while (fileStream_.good()) { std::getline(fileStream_, line); parsedSuccessfully = parseLine(&line, &currConfigStr, &currLevelStr, &currLevel, sender); ELPP_ASSERT(parsedSuccessfully, "Unable to parse configuration line: " << line); } return parsedSuccessfully; } bool Configurations::Parser::parseFromText(const std::string& configurationsString, Configurations* sender, Configurations* base) { sender->setFromBase(base); bool parsedSuccessfully = false; std::stringstream ss(configurationsString); std::string line = std::string(); Level currLevel = Level::Unknown; std::string currConfigStr = std::string(); std::string currLevelStr = std::string(); while (std::getline(ss, line)) { parsedSuccessfully = parseLine(&line, &currConfigStr, &currLevelStr, &currLevel, sender); ELPP_ASSERT(parsedSuccessfully, "Unable to parse configuration line: " << line); } return parsedSuccessfully; } void Configurations::Parser::ignoreComments(std::string* line) { std::size_t foundAt = 0; std::size_t quotesStart = line->find("\""); std::size_t quotesEnd = std::string::npos; if (quotesStart != std::string::npos) { quotesEnd = line->find("\"", quotesStart + 1); while (quotesEnd != std::string::npos && line->at(quotesEnd - 1) == '\\') { // Do not erase slash yet - we will erase it in parseLine(..) while loop quotesEnd = line->find("\"", quotesEnd + 2); } } if ((foundAt = line->find(base::consts::kConfigurationComment)) != std::string::npos) { if (foundAt < quotesEnd) { foundAt = line->find(base::consts::kConfigurationComment, quotesEnd + 1); } *line = line->substr(0, foundAt); } } bool Configurations::Parser::isLevel(const std::string& line) { return base::utils::Str::startsWith(line, std::string(base::consts::kConfigurationLevel)); } bool Configurations::Parser::isComment(const std::string& line) { return base::utils::Str::startsWith(line, std::string(base::consts::kConfigurationComment)); } bool Configurations::Parser::isConfig(const std::string& line) { std::size_t assignment = line.find('='); return line != "" && ((line[0] >= 'A' && line[0] <= 'Z') || (line[0] >= 'a' && line[0] <= 'z')) && (assignment != std::string::npos) && (line.size() > assignment); } bool Configurations::Parser::parseLine(std::string* line, std::string* currConfigStr, std::string* currLevelStr, Level* currLevel, Configurations* conf) { ConfigurationType currConfig = ConfigurationType::Unknown; std::string currValue = std::string(); *line = base::utils::Str::trim(*line); if (isComment(*line)) return true; ignoreComments(line); *line = base::utils::Str::trim(*line); if (line->empty()) { // Comment ignored return true; } if (isLevel(*line)) { if (line->size() <= 2) { return true; } *currLevelStr = line->substr(1, line->size() - 2); *currLevelStr = base::utils::Str::toUpper(*currLevelStr); *currLevelStr = base::utils::Str::trim(*currLevelStr); *currLevel = LevelHelper::convertFromString(currLevelStr->c_str()); return true; } if (isConfig(*line)) { std::size_t assignment = line->find('='); *currConfigStr = line->substr(0, assignment); *currConfigStr = base::utils::Str::toUpper(*currConfigStr); *currConfigStr = base::utils::Str::trim(*currConfigStr); currConfig = ConfigurationTypeHelper::convertFromString(currConfigStr->c_str()); currValue = line->substr(assignment + 1); currValue = base::utils::Str::trim(currValue); std::size_t quotesStart = currValue.find("\"", 0); std::size_t quotesEnd = std::string::npos; if (quotesStart != std::string::npos) { quotesEnd = currValue.find("\"", quotesStart + 1); while (quotesEnd != std::string::npos && currValue.at(quotesEnd - 1) == '\\') { currValue = currValue.erase(quotesEnd - 1, 1); quotesEnd = currValue.find("\"", quotesEnd + 2); } } if (quotesStart != std::string::npos && quotesEnd != std::string::npos) { // Quote provided - check and strip if valid ELPP_ASSERT((quotesStart < quotesEnd), "Configuration error - No ending quote found in [" << currConfigStr << "]"); ELPP_ASSERT((quotesStart + 1 != quotesEnd), "Empty configuration value for [" << currConfigStr << "]"); if ((quotesStart != quotesEnd) && (quotesStart + 1 != quotesEnd)) { // Explicit check in case if assertion is disabled currValue = currValue.substr(quotesStart + 1, quotesEnd - 1); } } } ELPP_ASSERT(*currLevel != Level::Unknown, "Unrecognized severity level [" << *currLevelStr << "]"); ELPP_ASSERT(currConfig != ConfigurationType::Unknown, "Unrecognized configuration [" << *currConfigStr << "]"); if (*currLevel == Level::Unknown || currConfig == ConfigurationType::Unknown) { return false; // unrecognizable level or config } conf->set(*currLevel, currConfig, currValue); return true; } void Configurations::unsafeSetIfNotExist(Level level, ConfigurationType configurationType, const std::string& value) { Configuration* conf = RegistryWithPred::get(level, configurationType); if (conf == nullptr) { unsafeSet(level, configurationType, value); } } void Configurations::unsafeSet(Level level, ConfigurationType configurationType, const std::string& value) { Configuration* conf = RegistryWithPred::get(level, configurationType); if (conf == nullptr) { registerNew(new Configuration(level, configurationType, value)); } else { conf->setValue(value); } if (level == Level::Global) { unsafeSetGlobally(configurationType, value, false); } } void Configurations::setGlobally(ConfigurationType configurationType, const std::string& value, bool includeGlobalLevel) { if (includeGlobalLevel) { set(Level::Global, configurationType, value); } base::type::EnumType lIndex = LevelHelper::kMinValid; LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { set(LevelHelper::castFromInt(lIndex), configurationType, value); return false; // Do not break lambda function yet as we need to set all levels regardless }); } void Configurations::unsafeSetGlobally(ConfigurationType configurationType, const std::string& value, bool includeGlobalLevel) { if (includeGlobalLevel) { unsafeSet(Level::Global, configurationType, value); } base::type::EnumType lIndex = LevelHelper::kMinValid; LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { unsafeSet(LevelHelper::castFromInt(lIndex), configurationType, value); return false; // Do not break lambda function yet as we need to set all levels regardless }); } // LogBuilder void LogBuilder::convertToColoredOutput(base::type::string_t* logLine, Level level) { if (!m_termSupportsColor) return; const base::type::char_t* resetColor = ELPP_LITERAL("\x1b[0m"); if (level == Level::Error || level == Level::Fatal) *logLine = ELPP_LITERAL("\x1b[31m") + *logLine + resetColor; else if (level == Level::Warning) *logLine = ELPP_LITERAL("\x1b[33m") + *logLine + resetColor; else if (level == Level::Debug) *logLine = ELPP_LITERAL("\x1b[32m") + *logLine + resetColor; else if (level == Level::Info) *logLine = ELPP_LITERAL("\x1b[36m") + *logLine + resetColor; else if (level == Level::Trace) *logLine = ELPP_LITERAL("\x1b[35m") + *logLine + resetColor; } // Logger Logger::Logger(const std::string& id, base::LogStreamsReferenceMapPtr logStreamsReference) : m_id(id), m_typedConfigurations(nullptr), m_parentApplicationName(std::string()), m_isConfigured(false), m_logStreamsReference(logStreamsReference) { initUnflushedCount(); } Logger::Logger(const std::string& id, const Configurations& configurations, base::LogStreamsReferenceMapPtr logStreamsReference) : m_id(id), m_typedConfigurations(nullptr), m_parentApplicationName(std::string()), m_isConfigured(false), m_logStreamsReference(logStreamsReference) { initUnflushedCount(); configure(configurations); } Logger::Logger(const Logger& logger) { base::utils::safeDelete(m_typedConfigurations); m_id = logger.m_id; m_typedConfigurations = logger.m_typedConfigurations; m_parentApplicationName = logger.m_parentApplicationName; m_isConfigured = logger.m_isConfigured; m_configurations = logger.m_configurations; m_unflushedCount = logger.m_unflushedCount; m_logStreamsReference = logger.m_logStreamsReference; } Logger& Logger::operator=(const Logger& logger) { if (&logger != this) { base::utils::safeDelete(m_typedConfigurations); m_id = logger.m_id; m_typedConfigurations = logger.m_typedConfigurations; m_parentApplicationName = logger.m_parentApplicationName; m_isConfigured = logger.m_isConfigured; m_configurations = logger.m_configurations; m_unflushedCount = logger.m_unflushedCount; m_logStreamsReference = logger.m_logStreamsReference; } return *this; } void Logger::configure(const Configurations& configurations) { m_isConfigured = false; // we set it to false in case if we fail initUnflushedCount(); if (m_typedConfigurations != nullptr) { Configurations* c = const_cast(m_typedConfigurations->configurations()); if (c->hasConfiguration(Level::Global, ConfigurationType::Filename)) { flush(); } } base::threading::ScopedLock scopedLock(lock()); if (m_configurations != configurations) { m_configurations.setFromBase(const_cast(&configurations)); } base::utils::safeDelete(m_typedConfigurations); m_typedConfigurations = new base::TypedConfigurations(&m_configurations, m_logStreamsReference); resolveLoggerFormatSpec(); m_isConfigured = true; } void Logger::reconfigure(void) { ELPP_INTERNAL_INFO(1, "Reconfiguring logger [" << m_id << "]"); configure(m_configurations); } bool Logger::isValidId(const std::string& id) { for (std::string::const_iterator it = id.begin(); it != id.end(); ++it) { if (!base::utils::Str::contains(base::consts::kValidLoggerIdSymbols, *it)) { return false; } } return true; } void Logger::flush(void) { ELPP_INTERNAL_INFO(3, "Flushing logger [" << m_id << "] all levels"); base::threading::ScopedLock scopedLock(lock()); base::type::EnumType lIndex = LevelHelper::kMinValid; LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { flush(LevelHelper::castFromInt(lIndex), nullptr); return false; }); } void Logger::flush(Level level, base::type::fstream_t* fs) { if (fs == nullptr && m_typedConfigurations->toFile(level)) { fs = m_typedConfigurations->fileStream(level); } if (fs != nullptr) { fs->flush(); std::unordered_map::iterator iter = m_unflushedCount.find(level); if (iter != m_unflushedCount.end()) { iter->second = 0; } Helpers::validateFileRolling(this, level); } } void Logger::initUnflushedCount(void) { m_unflushedCount.clear(); base::type::EnumType lIndex = LevelHelper::kMinValid; LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { m_unflushedCount.insert(std::make_pair(LevelHelper::castFromInt(lIndex), 0)); return false; }); } void Logger::resolveLoggerFormatSpec(void) const { base::type::EnumType lIndex = LevelHelper::kMinValid; LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { base::LogFormat* logFormat = const_cast(&m_typedConfigurations->logFormat(LevelHelper::castFromInt(lIndex))); base::utils::Str::replaceFirstWithEscape(logFormat->m_format, base::consts::kLoggerIdFormatSpecifier, m_id); return false; }); } // el::base namespace base { // el::base::utils namespace utils { // File base::type::fstream_t* File::newFileStream(const std::string& filename) { base::type::fstream_t *fs = new base::type::fstream_t(filename.c_str(), base::type::fstream_t::out #if !defined(ELPP_FRESH_LOG_FILE) | base::type::fstream_t::app #endif ); #if defined(ELPP_UNICODE) std::locale elppUnicodeLocale(""); # if ELPP_OS_WINDOWS std::locale elppUnicodeLocaleWindows(elppUnicodeLocale, new std::codecvt_utf8_utf16); elppUnicodeLocale = elppUnicodeLocaleWindows; # endif // ELPP_OS_WINDOWS fs->imbue(elppUnicodeLocale); #endif // defined(ELPP_UNICODE) if (fs->is_open()) { fs->flush(); } else { base::utils::safeDelete(fs); ELPP_INTERNAL_ERROR("Bad file [" << filename << "]", true); } return fs; } std::size_t File::getSizeOfFile(base::type::fstream_t* fs) { if (fs == nullptr) { return 0; } // Since the file stream is appended to or truncated, the current // offset is the file size. std::size_t size = static_cast(fs->tellg()); return size; } bool File::pathExists(const char* path, bool considerFile) { if (path == nullptr) { return false; } #if ELPP_OS_UNIX ELPP_UNUSED(considerFile); struct stat st; return (stat(path, &st) == 0); #elif ELPP_OS_WINDOWS DWORD fileType = GetFileAttributesA(path); if (fileType == INVALID_FILE_ATTRIBUTES) { return false; } return considerFile ? true : ((fileType & FILE_ATTRIBUTE_DIRECTORY) == 0 ? false : true); #endif // ELPP_OS_UNIX } bool File::createPath(const std::string& path) { if (path.empty()) { return false; } if (base::utils::File::pathExists(path.c_str())) { return true; } int status = -1; char* currPath = const_cast(path.c_str()); std::string builtPath = std::string(); #if ELPP_OS_UNIX if (path[0] == '/') { builtPath = "/"; } currPath = STRTOK(currPath, base::consts::kFilePathSeparator, 0); #elif ELPP_OS_WINDOWS // Use secure functions API char* nextTok_ = nullptr; currPath = STRTOK(currPath, base::consts::kFilePathSeparator, &nextTok_); ELPP_UNUSED(nextTok_); #endif // ELPP_OS_UNIX while (currPath != nullptr) { builtPath.append(currPath); builtPath.append(base::consts::kFilePathSeparator); #if ELPP_OS_UNIX status = mkdir(builtPath.c_str(), ELPP_LOG_PERMS); currPath = STRTOK(nullptr, base::consts::kFilePathSeparator, 0); #elif ELPP_OS_WINDOWS status = _mkdir(builtPath.c_str()); currPath = STRTOK(nullptr, base::consts::kFilePathSeparator, &nextTok_); #endif // ELPP_OS_UNIX } if (status == -1) { ELPP_INTERNAL_ERROR("Error while creating path [" << path << "]", true); return false; } return true; } std::string File::extractPathFromFilename(const std::string& fullPath, const char* separator) { if ((fullPath == "") || (fullPath.find(separator) == std::string::npos)) { return fullPath; } std::size_t lastSlashAt = fullPath.find_last_of(separator); if (lastSlashAt == 0) { return std::string(separator); } return fullPath.substr(0, lastSlashAt + 1); } void File::buildStrippedFilename(const char* filename, char buff[], std::size_t limit) { std::size_t sizeOfFilename = strlen(filename); if (sizeOfFilename >= limit) { filename += (sizeOfFilename - limit); if (filename[0] != '.' && filename[1] != '.') { // prepend if not already filename += 3; // 3 = '..' STRCAT(buff, "..", limit); } } STRCAT(buff, filename, limit); } void File::buildBaseFilename(const std::string& fullPath, char buff[], std::size_t limit, const char* separator) { const char *filename = fullPath.c_str(); std::size_t lastSlashAt = fullPath.find_last_of(separator); filename += lastSlashAt ? lastSlashAt+1 : 0; std::size_t sizeOfFilename = strlen(filename); if (sizeOfFilename >= limit) { filename += (sizeOfFilename - limit); if (filename[0] != '.' && filename[1] != '.') { // prepend if not already filename += 3; // 3 = '..' STRCAT(buff, "..", limit); } } STRCAT(buff, filename, limit); } // Str bool Str::wildCardMatch(const char* str, const char* pattern) { while (*pattern) { switch (*pattern) { case '?': if (!*str) return false; ++str; ++pattern; break; case '*': if (wildCardMatch(str, pattern + 1)) return true; if (*str && wildCardMatch(str + 1, pattern)) return true; return false; default: if (*str++ != *pattern++) return false; break; } } return !*str && !*pattern; } std::string& Str::ltrim(std::string& str) { str.erase(str.begin(), std::find_if(str.begin(), str.end(), [](char c) { return !std::isspace(c); } )); return str; } std::string& Str::rtrim(std::string& str) { str.erase(std::find_if(str.rbegin(), str.rend(), [](char c) { return !std::isspace(c); }).base(), str.end()); return str; } std::string& Str::trim(std::string& str) { return ltrim(rtrim(str)); } bool Str::startsWith(const std::string& str, const std::string& start) { return (str.length() >= start.length()) && (str.compare(0, start.length(), start) == 0); } bool Str::endsWith(const std::string& str, const std::string& end) { return (str.length() >= end.length()) && (str.compare(str.length() - end.length(), end.length(), end) == 0); } std::string& Str::replaceAll(std::string& str, char replaceWhat, char replaceWith) { std::replace(str.begin(), str.end(), replaceWhat, replaceWith); return str; } std::string& Str::replaceAll(std::string& str, const std::string& replaceWhat, const std::string& replaceWith) { if (replaceWhat == replaceWith) return str; std::size_t foundAt = std::string::npos; while ((foundAt = str.find(replaceWhat, foundAt + 1)) != std::string::npos) { str.replace(foundAt, replaceWhat.length(), replaceWith); } return str; } void Str::replaceFirstWithEscape(base::type::string_t& str, const base::type::string_t& replaceWhat, const base::type::string_t& replaceWith) { std::size_t foundAt = base::type::string_t::npos; while ((foundAt = str.find(replaceWhat, foundAt + 1)) != base::type::string_t::npos) { if (foundAt > 0 && str[foundAt - 1] == base::consts::kFormatSpecifierChar) { str.erase(foundAt - 1, 1); ++foundAt; } else { str.replace(foundAt, replaceWhat.length(), replaceWith); return; } } } #if defined(ELPP_UNICODE) void Str::replaceFirstWithEscape(base::type::string_t& str, const base::type::string_t& replaceWhat, const std::string& replaceWith) { replaceFirstWithEscape(str, replaceWhat, base::type::string_t(replaceWith.begin(), replaceWith.end())); } #endif // defined(ELPP_UNICODE) std::string& Str::toUpper(std::string& str) { std::transform(str.begin(), str.end(), str.begin(), [](char c) { return static_cast(::toupper(c)); }); return str; } bool Str::cStringEq(const char* s1, const char* s2) { if (s1 == nullptr && s2 == nullptr) return true; if (s1 == nullptr || s2 == nullptr) return false; return strcmp(s1, s2) == 0; } bool Str::cStringCaseEq(const char* s1, const char* s2) { if (s1 == nullptr && s2 == nullptr) return true; if (s1 == nullptr || s2 == nullptr) return false; // With thanks to cygwin for this code int d = 0; while (true) { const int c1 = toupper(*s1++); const int c2 = toupper(*s2++); if (((d = c1 - c2) != 0) || (c2 == '\0')) { break; } } return d == 0; } bool Str::contains(const char* str, char c) { for (; *str; ++str) { if (*str == c) return true; } return false; } char* Str::convertAndAddToBuff(std::size_t n, int len, char* buf, const char* bufLim, bool zeroPadded) { char localBuff[10] = ""; char* p = localBuff + sizeof(localBuff) - 2; if (n > 0) { for (; n > 0 && p > localBuff && len > 0; n /= 10, --len) *--p = static_cast(n % 10 + '0'); } else { *--p = '0'; --len; } if (zeroPadded) while (p > localBuff && len-- > 0) *--p = static_cast('0'); return addToBuff(p, buf, bufLim); } char* Str::addToBuff(const char* str, char* buf, const char* bufLim) { while ((buf < bufLim) && ((*buf = *str++) != '\0')) ++buf; return buf; } char* Str::clearBuff(char buff[], std::size_t lim) { STRCPY(buff, "", lim); ELPP_UNUSED(lim); // For *nix we dont have anything using lim in above STRCPY macro return buff; } /// @brief Converts wchar* to char* /// NOTE: Need to free return value after use! char* Str::wcharPtrToCharPtr(const wchar_t* line) { std::size_t len_ = wcslen(line) + 1; char* buff_ = static_cast(malloc(len_ + 1)); # if ELPP_OS_UNIX || (ELPP_OS_WINDOWS && !ELPP_CRT_DBG_WARNINGS) std::wcstombs(buff_, line, len_); # elif ELPP_OS_WINDOWS std::size_t convCount_ = 0; mbstate_t mbState_; ::memset(static_cast(&mbState_), 0, sizeof(mbState_)); wcsrtombs_s(&convCount_, buff_, len_, &line, len_, &mbState_); # endif // ELPP_OS_UNIX || (ELPP_OS_WINDOWS && !ELPP_CRT_DBG_WARNINGS) return buff_; } // OS #if ELPP_OS_WINDOWS /// @brief Gets environment variables for Windows based OS. /// We are not using getenv(const char*) because of CRT deprecation /// @param varname Variable name to get environment variable value for /// @return If variable exist the value of it otherwise nullptr const char* OS::getWindowsEnvironmentVariable(const char* varname) { const DWORD bufferLen = 50; static char buffer[bufferLen]; if (GetEnvironmentVariableA(varname, buffer, bufferLen)) { return buffer; } return nullptr; } #endif // ELPP_OS_WINDOWS #if ELPP_OS_ANDROID std::string OS::getProperty(const char* prop) { char propVal[PROP_VALUE_MAX + 1]; int ret = __system_property_get(prop, propVal); return ret == 0 ? std::string() : std::string(propVal); } std::string OS::getDeviceName(void) { std::stringstream ss; std::string manufacturer = getProperty("ro.product.manufacturer"); std::string model = getProperty("ro.product.model"); if (manufacturer.empty() || model.empty()) { return std::string(); } ss << manufacturer << "-" << model; return ss.str(); } #endif // ELPP_OS_ANDROID const std::string OS::getBashOutput(const char* command) { #if (ELPP_OS_UNIX && !ELPP_OS_ANDROID && !ELPP_CYGWIN) if (command == nullptr) { return std::string(); } FILE* proc = nullptr; if ((proc = popen(command, "r")) == nullptr) { ELPP_INTERNAL_ERROR("\nUnable to run command [" << command << "]", true); return std::string(); } char hBuff[4096]; if (fgets(hBuff, sizeof(hBuff), proc) != nullptr) { pclose(proc); const std::size_t buffLen = strlen(hBuff); if (buffLen > 0 && hBuff[buffLen - 1] == '\n') { hBuff[buffLen - 1] = '\0'; } return std::string(hBuff); } else { pclose(proc); } return std::string(); #else ELPP_UNUSED(command); return std::string(); #endif // (ELPP_OS_UNIX && !ELPP_OS_ANDROID && !ELPP_CYGWIN) } std::string OS::getEnvironmentVariable(const char* variableName, const char* defaultVal, const char* alternativeBashCommand) { #if ELPP_OS_UNIX const char* val = getenv(variableName); #elif ELPP_OS_WINDOWS const char* val = getWindowsEnvironmentVariable(variableName); #endif // ELPP_OS_UNIX if ((val == nullptr) || ((strcmp(val, "") == 0))) { #if ELPP_OS_UNIX && defined(ELPP_FORCE_ENV_VAR_FROM_BASH) // Try harder on unix-based systems std::string valBash = base::utils::OS::getBashOutput(alternativeBashCommand); if (valBash.empty()) { return std::string(defaultVal); } else { return valBash; } #elif ELPP_OS_WINDOWS || ELPP_OS_UNIX ELPP_UNUSED(alternativeBashCommand); return std::string(defaultVal); #endif // ELPP_OS_UNIX && defined(ELPP_FORCE_ENV_VAR_FROM_BASH) } return std::string(val); } std::string OS::currentUser(void) { #if ELPP_OS_UNIX && !ELPP_OS_ANDROID return getEnvironmentVariable("USER", base::consts::kUnknownUser, "whoami"); #elif ELPP_OS_WINDOWS return getEnvironmentVariable("USERNAME", base::consts::kUnknownUser); #elif ELPP_OS_ANDROID ELPP_UNUSED(base::consts::kUnknownUser); return std::string("android"); #else return std::string(); #endif // ELPP_OS_UNIX && !ELPP_OS_ANDROID } std::string OS::currentHost(void) { #if ELPP_OS_UNIX && !ELPP_OS_ANDROID return getEnvironmentVariable("HOSTNAME", base::consts::kUnknownHost, "hostname"); #elif ELPP_OS_WINDOWS return getEnvironmentVariable("COMPUTERNAME", base::consts::kUnknownHost); #elif ELPP_OS_ANDROID ELPP_UNUSED(base::consts::kUnknownHost); return getDeviceName(); #else return std::string(); #endif // ELPP_OS_UNIX && !ELPP_OS_ANDROID } bool OS::termSupportsColor(void) { std::string term = getEnvironmentVariable("TERM", ""); return term == "xterm" || term == "xterm-color" || term == "xterm-256color" || term == "screen" || term == "linux" || term == "cygwin" || term == "screen-256color"; } // DateTime void DateTime::gettimeofday(struct timeval* tv) { #if ELPP_OS_WINDOWS if (tv != nullptr) { # if ELPP_COMPILER_MSVC || defined(_MSC_EXTENSIONS) const unsigned __int64 delta_ = 11644473600000000Ui64; # else const unsigned __int64 delta_ = 11644473600000000ULL; # endif // ELPP_COMPILER_MSVC || defined(_MSC_EXTENSIONS) const double secOffSet = 0.000001; const unsigned long usecOffSet = 1000000; FILETIME fileTime; GetSystemTimeAsFileTime(&fileTime); unsigned __int64 present = 0; present |= fileTime.dwHighDateTime; present = present << 32; present |= fileTime.dwLowDateTime; present /= 10; // mic-sec // Subtract the difference present -= delta_; tv->tv_sec = static_cast(present * secOffSet); tv->tv_usec = static_cast(present % usecOffSet); } #else ::gettimeofday(tv, nullptr); #endif // ELPP_OS_WINDOWS } std::string DateTime::getDateTime(const char* format, const base::SubsecondPrecision* ssPrec) { struct timeval currTime; gettimeofday(&currTime); return timevalToString(currTime, format, ssPrec); } std::string DateTime::timevalToString(struct timeval tval, const char* format, const el::base::SubsecondPrecision* ssPrec) { struct ::tm timeInfo; buildTimeInfo(&tval, &timeInfo); const int kBuffSize = 30; char buff_[kBuffSize] = ""; parseFormat(buff_, kBuffSize, format, &timeInfo, static_cast(tval.tv_usec / ssPrec->m_offset), ssPrec); return std::string(buff_); } base::type::string_t DateTime::formatTime(unsigned long long time, base::TimestampUnit timestampUnit) { base::type::EnumType start = static_cast(timestampUnit); const base::type::char_t* unit = base::consts::kTimeFormats[start].unit; for (base::type::EnumType i = start; i < base::consts::kTimeFormatsCount - 1; ++i) { if (time <= base::consts::kTimeFormats[i].value) { break; } if (base::consts::kTimeFormats[i].value == 1000.0f && time / 1000.0f < 1.9f) { break; } time /= static_cast(base::consts::kTimeFormats[i].value); unit = base::consts::kTimeFormats[i + 1].unit; } base::type::stringstream_t ss; ss << time << " " << unit; return ss.str(); } unsigned long long DateTime::getTimeDifference(const struct timeval& endTime, const struct timeval& startTime, base::TimestampUnit timestampUnit) { if (timestampUnit == base::TimestampUnit::Microsecond) { return static_cast(static_cast(1000000 * endTime.tv_sec + endTime.tv_usec) - static_cast(1000000 * startTime.tv_sec + startTime.tv_usec)); } // milliseconds auto conv = [](const struct timeval& tim) { return static_cast((tim.tv_sec * 1000) + (tim.tv_usec / 1000)); }; return static_cast(conv(endTime) - conv(startTime)); } struct ::tm* DateTime::buildTimeInfo(struct timeval* currTime, struct ::tm* timeInfo) { #if ELPP_OS_UNIX time_t rawTime = currTime->tv_sec; ::elpptime_r(&rawTime, timeInfo); return timeInfo; #else # if ELPP_COMPILER_MSVC ELPP_UNUSED(currTime); time_t t; # if defined(_USE_32BIT_TIME_T) _time32(&t); # else _time64(&t); # endif elpptime_s(timeInfo, &t); return timeInfo; # else // For any other compilers that don't have CRT warnings issue e.g, MinGW or TDM GCC- we use different method time_t rawTime = currTime->tv_sec; struct tm* tmInf = elpptime(&rawTime); *timeInfo = *tmInf; return timeInfo; # endif // ELPP_COMPILER_MSVC #endif // ELPP_OS_UNIX } char* DateTime::parseFormat(char* buf, std::size_t bufSz, const char* format, const struct tm* tInfo, std::size_t msec, const base::SubsecondPrecision* ssPrec) { const char* bufLim = buf + bufSz; for (; *format; ++format) { if (*format == base::consts::kFormatSpecifierChar) { switch (*++format) { case base::consts::kFormatSpecifierChar: // Escape break; case '\0': // End --format; break; case 'd': // Day buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_mday, 2, buf, bufLim); continue; case 'a': // Day of week (short) buf = base::utils::Str::addToBuff(base::consts::kDaysAbbrev[tInfo->tm_wday], buf, bufLim); continue; case 'A': // Day of week (long) buf = base::utils::Str::addToBuff(base::consts::kDays[tInfo->tm_wday], buf, bufLim); continue; case 'M': // month buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_mon + 1, 2, buf, bufLim); continue; case 'b': // month (short) buf = base::utils::Str::addToBuff(base::consts::kMonthsAbbrev[tInfo->tm_mon], buf, bufLim); continue; case 'B': // month (long) buf = base::utils::Str::addToBuff(base::consts::kMonths[tInfo->tm_mon], buf, bufLim); continue; case 'y': // year (two digits) buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_year + base::consts::kYearBase, 2, buf, bufLim); continue; case 'Y': // year (four digits) buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_year + base::consts::kYearBase, 4, buf, bufLim); continue; case 'h': // hour (12-hour) buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_hour % 12, 2, buf, bufLim); continue; case 'H': // hour (24-hour) buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_hour, 2, buf, bufLim); continue; case 'm': // minute buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_min, 2, buf, bufLim); continue; case 's': // second buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_sec, 2, buf, bufLim); continue; case 'z': // subsecond part case 'g': buf = base::utils::Str::convertAndAddToBuff(msec, ssPrec->m_width, buf, bufLim); continue; case 'F': // AM/PM buf = base::utils::Str::addToBuff((tInfo->tm_hour >= 12) ? base::consts::kPm : base::consts::kAm, buf, bufLim); continue; default: continue; } } if (buf == bufLim) break; *buf++ = *format; } return buf; } // CommandLineArgs void CommandLineArgs::setArgs(int argc, char** argv) { m_params.clear(); m_paramsWithValue.clear(); if (argc == 0 || argv == nullptr) { return; } m_argc = argc; m_argv = argv; for (int i = 1; i < m_argc; ++i) { const char* v = (strstr(m_argv[i], "=")); if (v != nullptr && strlen(v) > 0) { std::string key = std::string(m_argv[i]); key = key.substr(0, key.find_first_of('=')); if (hasParamWithValue(key.c_str())) { ELPP_INTERNAL_INFO(1, "Skipping [" << key << "] arg since it already has value [" << getParamValue(key.c_str()) << "]"); } else { m_paramsWithValue.insert(std::make_pair(key, std::string(v + 1))); } } if (v == nullptr) { if (hasParam(m_argv[i])) { ELPP_INTERNAL_INFO(1, "Skipping [" << m_argv[i] << "] arg since it already exists"); } else { m_params.push_back(std::string(m_argv[i])); } } } } bool CommandLineArgs::hasParamWithValue(const char* paramKey) const { return m_paramsWithValue.find(std::string(paramKey)) != m_paramsWithValue.end(); } const char* CommandLineArgs::getParamValue(const char* paramKey) const { std::unordered_map::const_iterator iter = m_paramsWithValue.find(std::string(paramKey)); return iter != m_paramsWithValue.end() ? iter->second.c_str() : ""; } bool CommandLineArgs::hasParam(const char* paramKey) const { return std::find(m_params.begin(), m_params.end(), std::string(paramKey)) != m_params.end(); } bool CommandLineArgs::empty(void) const { return m_params.empty() && m_paramsWithValue.empty(); } std::size_t CommandLineArgs::size(void) const { return m_params.size() + m_paramsWithValue.size(); } base::type::ostream_t& operator<<(base::type::ostream_t& os, const CommandLineArgs& c) { for (int i = 1; i < c.m_argc; ++i) { os << ELPP_LITERAL("[") << c.m_argv[i] << ELPP_LITERAL("]"); if (i < c.m_argc - 1) { os << ELPP_LITERAL(" "); } } return os; } } // namespace utils // el::base::threading namespace threading { #if ELPP_THREADING_ENABLED # if ELPP_USE_STD_THREADING # if ELPP_ASYNC_LOGGING static void msleep(int ms) { // Only when async logging enabled - this is because async is strict on compiler # if defined(ELPP_NO_SLEEP_FOR) usleep(ms * 1000); # else std::this_thread::sleep_for(std::chrono::milliseconds(ms)); # endif // defined(ELPP_NO_SLEEP_FOR) } # endif // ELPP_ASYNC_LOGGING # endif // !ELPP_USE_STD_THREADING #endif // ELPP_THREADING_ENABLED } // namespace threading // el::base // SubsecondPrecision void SubsecondPrecision::init(int width) { if (width < 1 || width > 6) { width = base::consts::kDefaultSubsecondPrecision; } m_width = width; switch (m_width) { case 3: m_offset = 1000; break; case 4: m_offset = 100; break; case 5: m_offset = 10; break; case 6: m_offset = 1; break; default: m_offset = 1000; break; } } // LogFormat LogFormat::LogFormat(void) : m_level(Level::Unknown), m_userFormat(base::type::string_t()), m_format(base::type::string_t()), m_dateTimeFormat(std::string()), m_flags(0x0), m_currentUser(base::utils::OS::currentUser()), m_currentHost(base::utils::OS::currentHost()) { } LogFormat::LogFormat(Level level, const base::type::string_t& format) : m_level(level), m_userFormat(format), m_currentUser(base::utils::OS::currentUser()), m_currentHost(base::utils::OS::currentHost()) { parseFromFormat(m_userFormat); } LogFormat::LogFormat(const LogFormat& logFormat): m_level(logFormat.m_level), m_userFormat(logFormat.m_userFormat), m_format(logFormat.m_format), m_dateTimeFormat(logFormat.m_dateTimeFormat), m_flags(logFormat.m_flags), m_currentUser(logFormat.m_currentUser), m_currentHost(logFormat.m_currentHost) { } LogFormat::LogFormat(LogFormat&& logFormat) { m_level = std::move(logFormat.m_level); m_userFormat = std::move(logFormat.m_userFormat); m_format = std::move(logFormat.m_format); m_dateTimeFormat = std::move(logFormat.m_dateTimeFormat); m_flags = std::move(logFormat.m_flags); m_currentUser = std::move(logFormat.m_currentUser); m_currentHost = std::move(logFormat.m_currentHost); } LogFormat& LogFormat::operator=(const LogFormat& logFormat) { if (&logFormat != this) { m_level = logFormat.m_level; m_userFormat = logFormat.m_userFormat; m_dateTimeFormat = logFormat.m_dateTimeFormat; m_flags = logFormat.m_flags; m_currentUser = logFormat.m_currentUser; m_currentHost = logFormat.m_currentHost; } return *this; } bool LogFormat::operator==(const LogFormat& other) { return m_level == other.m_level && m_userFormat == other.m_userFormat && m_format == other.m_format && m_dateTimeFormat == other.m_dateTimeFormat && m_flags == other.m_flags; } /// @brief Updates format to be used while logging. /// @param userFormat User provided format void LogFormat::parseFromFormat(const base::type::string_t& userFormat) { // We make copy because we will be changing the format // i.e, removing user provided date format from original format // and then storing it. base::type::string_t formatCopy = userFormat; m_flags = 0x0; auto conditionalAddFlag = [&](const base::type::char_t* specifier, base::FormatFlags flag) { std::size_t foundAt = base::type::string_t::npos; while ((foundAt = formatCopy.find(specifier, foundAt + 1)) != base::type::string_t::npos) { if (foundAt > 0 && formatCopy[foundAt - 1] == base::consts::kFormatSpecifierChar) { if (hasFlag(flag)) { // If we already have flag we remove the escape chars so that '%%' is turned to '%' // even after specifier resolution - this is because we only replaceFirst specifier formatCopy.erase(foundAt - 1, 1); ++foundAt; } } else { if (!hasFlag(flag)) addFlag(flag); } } }; conditionalAddFlag(base::consts::kAppNameFormatSpecifier, base::FormatFlags::AppName); conditionalAddFlag(base::consts::kSeverityLevelFormatSpecifier, base::FormatFlags::Level); conditionalAddFlag(base::consts::kSeverityLevelShortFormatSpecifier, base::FormatFlags::LevelShort); conditionalAddFlag(base::consts::kLoggerIdFormatSpecifier, base::FormatFlags::LoggerId); conditionalAddFlag(base::consts::kThreadIdFormatSpecifier, base::FormatFlags::ThreadId); conditionalAddFlag(base::consts::kLogFileFormatSpecifier, base::FormatFlags::File); conditionalAddFlag(base::consts::kLogFileBaseFormatSpecifier, base::FormatFlags::FileBase); conditionalAddFlag(base::consts::kLogLineFormatSpecifier, base::FormatFlags::Line); conditionalAddFlag(base::consts::kLogLocationFormatSpecifier, base::FormatFlags::Location); conditionalAddFlag(base::consts::kLogFunctionFormatSpecifier, base::FormatFlags::Function); conditionalAddFlag(base::consts::kCurrentUserFormatSpecifier, base::FormatFlags::User); conditionalAddFlag(base::consts::kCurrentHostFormatSpecifier, base::FormatFlags::Host); conditionalAddFlag(base::consts::kMessageFormatSpecifier, base::FormatFlags::LogMessage); conditionalAddFlag(base::consts::kVerboseLevelFormatSpecifier, base::FormatFlags::VerboseLevel); // For date/time we need to extract user's date format first std::size_t dateIndex = std::string::npos; if ((dateIndex = formatCopy.find(base::consts::kDateTimeFormatSpecifier)) != std::string::npos) { while (dateIndex != std::string::npos && dateIndex > 0 && formatCopy[dateIndex - 1] == base::consts::kFormatSpecifierChar) { dateIndex = formatCopy.find(base::consts::kDateTimeFormatSpecifier, dateIndex + 1); } if (dateIndex != std::string::npos) { addFlag(base::FormatFlags::DateTime); updateDateFormat(dateIndex, formatCopy); } } m_format = formatCopy; updateFormatSpec(); } void LogFormat::updateDateFormat(std::size_t index, base::type::string_t& currFormat) { if (hasFlag(base::FormatFlags::DateTime)) { index += ELPP_STRLEN(base::consts::kDateTimeFormatSpecifier); } const base::type::char_t* ptr = currFormat.c_str() + index; if ((currFormat.size() > index) && (ptr[0] == '{')) { // User has provided format for date/time ++ptr; int count = 1; // Start by 1 in order to remove starting brace std::stringstream ss; for (; *ptr; ++ptr, ++count) { if (*ptr == '}') { ++count; // In order to remove ending brace break; } ss << static_cast(*ptr); } currFormat.erase(index, count); m_dateTimeFormat = ss.str(); } else { // No format provided, use default if (hasFlag(base::FormatFlags::DateTime)) { m_dateTimeFormat = std::string(base::consts::kDefaultDateTimeFormat); } } } void LogFormat::updateFormatSpec(void) { // Do not use switch over strongly typed enums because Intel C++ compilers dont support them yet. if (m_level == Level::Debug) { base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, base::consts::kDebugLevelLogValue); base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, base::consts::kDebugLevelShortLogValue); } else if (m_level == Level::Info) { base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, base::consts::kInfoLevelLogValue); base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, base::consts::kInfoLevelShortLogValue); } else if (m_level == Level::Warning) { base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, base::consts::kWarningLevelLogValue); base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, base::consts::kWarningLevelShortLogValue); } else if (m_level == Level::Error) { base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, base::consts::kErrorLevelLogValue); base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, base::consts::kErrorLevelShortLogValue); } else if (m_level == Level::Fatal) { base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, base::consts::kFatalLevelLogValue); base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, base::consts::kFatalLevelShortLogValue); } else if (m_level == Level::Verbose) { base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, base::consts::kVerboseLevelLogValue); base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, base::consts::kVerboseLevelShortLogValue); } else if (m_level == Level::Trace) { base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, base::consts::kTraceLevelLogValue); base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, base::consts::kTraceLevelShortLogValue); } if (hasFlag(base::FormatFlags::User)) { base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kCurrentUserFormatSpecifier, m_currentUser); } if (hasFlag(base::FormatFlags::Host)) { base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kCurrentHostFormatSpecifier, m_currentHost); } // Ignore Level::Global and Level::Unknown } // TypedConfigurations TypedConfigurations::TypedConfigurations(Configurations* configurations, LogStreamsReferenceMapPtr logStreamsReference) { m_configurations = configurations; m_logStreamsReference = logStreamsReference; build(m_configurations); } TypedConfigurations::TypedConfigurations(const TypedConfigurations& other) { this->m_configurations = other.m_configurations; this->m_logStreamsReference = other.m_logStreamsReference; build(m_configurations); } bool TypedConfigurations::enabled(Level level) { return getConfigByVal(level, &m_enabledMap, "enabled"); } bool TypedConfigurations::toFile(Level level) { return getConfigByVal(level, &m_toFileMap, "toFile"); } const std::string& TypedConfigurations::filename(Level level) { return getConfigByRef(level, &m_filenameMap, "filename"); } bool TypedConfigurations::toStandardOutput(Level level) { return getConfigByVal(level, &m_toStandardOutputMap, "toStandardOutput"); } const base::LogFormat& TypedConfigurations::logFormat(Level level) { return getConfigByRef(level, &m_logFormatMap, "logFormat"); } const base::SubsecondPrecision& TypedConfigurations::subsecondPrecision(Level level) { return getConfigByRef(level, &m_subsecondPrecisionMap, "subsecondPrecision"); } const base::MillisecondsWidth& TypedConfigurations::millisecondsWidth(Level level) { return getConfigByRef(level, &m_subsecondPrecisionMap, "millisecondsWidth"); } bool TypedConfigurations::performanceTracking(Level level) { return getConfigByVal(level, &m_performanceTrackingMap, "performanceTracking"); } base::type::fstream_t* TypedConfigurations::fileStream(Level level) { return getConfigByRef(level, &m_fileStreamMap, "fileStream").get(); } std::size_t TypedConfigurations::maxLogFileSize(Level level) { return getConfigByVal(level, &m_maxLogFileSizeMap, "maxLogFileSize"); } std::size_t TypedConfigurations::logFlushThreshold(Level level) { return getConfigByVal(level, &m_logFlushThresholdMap, "logFlushThreshold"); } void TypedConfigurations::build(Configurations* configurations) { base::threading::ScopedLock scopedLock(lock()); auto getBool = [] (std::string boolStr) -> bool { // Pass by value for trimming base::utils::Str::trim(boolStr); return (boolStr == "TRUE" || boolStr == "true" || boolStr == "1"); }; std::vector withFileSizeLimit; for (Configurations::const_iterator it = configurations->begin(); it != configurations->end(); ++it) { Configuration* conf = *it; // We cannot use switch on strong enums because Intel C++ dont support them yet if (conf->configurationType() == ConfigurationType::Enabled) { setValue(conf->level(), getBool(conf->value()), &m_enabledMap); } else if (conf->configurationType() == ConfigurationType::ToFile) { setValue(conf->level(), getBool(conf->value()), &m_toFileMap); } else if (conf->configurationType() == ConfigurationType::ToStandardOutput) { setValue(conf->level(), getBool(conf->value()), &m_toStandardOutputMap); } else if (conf->configurationType() == ConfigurationType::Filename) { // We do not yet configure filename but we will configure in another // loop. This is because if file cannot be created, we will force ToFile // to be false. Because configuring logger is not necessarily performance // sensitive operation, we can live with another loop; (by the way this loop // is not very heavy either) } else if (conf->configurationType() == ConfigurationType::Format) { setValue(conf->level(), base::LogFormat(conf->level(), base::type::string_t(conf->value().begin(), conf->value().end())), &m_logFormatMap); } else if (conf->configurationType() == ConfigurationType::SubsecondPrecision) { setValue(Level::Global, base::SubsecondPrecision(static_cast(getULong(conf->value()))), &m_subsecondPrecisionMap); } else if (conf->configurationType() == ConfigurationType::PerformanceTracking) { setValue(Level::Global, getBool(conf->value()), &m_performanceTrackingMap); } else if (conf->configurationType() == ConfigurationType::MaxLogFileSize) { auto v = getULong(conf->value()); setValue(conf->level(), static_cast(v), &m_maxLogFileSizeMap); if (v != 0) { withFileSizeLimit.push_back(conf); } } else if (conf->configurationType() == ConfigurationType::LogFlushThreshold) { setValue(conf->level(), static_cast(getULong(conf->value())), &m_logFlushThresholdMap); } } // As mentioned earlier, we will now set filename configuration in separate loop to deal with non-existent files for (Configurations::const_iterator it = configurations->begin(); it != configurations->end(); ++it) { Configuration* conf = *it; if (conf->configurationType() == ConfigurationType::Filename) { insertFile(conf->level(), conf->value()); } } for (std::vector::iterator conf = withFileSizeLimit.begin(); conf != withFileSizeLimit.end(); ++conf) { // This is not unsafe as mutex is locked in currect scope unsafeValidateFileRolling((*conf)->level(), base::defaultPreRollOutCallback); } } unsigned long TypedConfigurations::getULong(std::string confVal) { bool valid = true; base::utils::Str::trim(confVal); valid = !confVal.empty() && std::find_if(confVal.begin(), confVal.end(), [](char c) { return !base::utils::Str::isDigit(c); }) == confVal.end(); if (!valid) { valid = false; ELPP_ASSERT(valid, "Configuration value not a valid integer [" << confVal << "]"); return 0; } return atol(confVal.c_str()); } std::string TypedConfigurations::resolveFilename(const std::string& filename) { std::string resultingFilename = filename; std::size_t dateIndex = std::string::npos; std::string dateTimeFormatSpecifierStr = std::string(base::consts::kDateTimeFormatSpecifierForFilename); if ((dateIndex = resultingFilename.find(dateTimeFormatSpecifierStr.c_str())) != std::string::npos) { while (dateIndex > 0 && resultingFilename[dateIndex - 1] == base::consts::kFormatSpecifierChar) { dateIndex = resultingFilename.find(dateTimeFormatSpecifierStr.c_str(), dateIndex + 1); } if (dateIndex != std::string::npos) { const char* ptr = resultingFilename.c_str() + dateIndex; // Goto end of specifier ptr += dateTimeFormatSpecifierStr.size(); std::string fmt; if ((resultingFilename.size() > dateIndex) && (ptr[0] == '{')) { // User has provided format for date/time ++ptr; int count = 1; // Start by 1 in order to remove starting brace std::stringstream ss; for (; *ptr; ++ptr, ++count) { if (*ptr == '}') { ++count; // In order to remove ending brace break; } ss << *ptr; } resultingFilename.erase(dateIndex + dateTimeFormatSpecifierStr.size(), count); fmt = ss.str(); } else { fmt = std::string(base::consts::kDefaultDateTimeFormatInFilename); } base::SubsecondPrecision ssPrec(3); std::string now = base::utils::DateTime::getDateTime(fmt.c_str(), &ssPrec); base::utils::Str::replaceAll(now, '/', '-'); // Replace path element since we are dealing with filename base::utils::Str::replaceAll(resultingFilename, dateTimeFormatSpecifierStr, now); } } return resultingFilename; } void TypedConfigurations::insertFile(Level level, const std::string& fullFilename) { std::string resolvedFilename = resolveFilename(fullFilename); if (resolvedFilename.empty()) { std::cerr << "Could not load empty file for logging, please re-check your configurations for level [" << LevelHelper::convertToString(level) << "]"; } std::string filePath = base::utils::File::extractPathFromFilename(resolvedFilename, base::consts::kFilePathSeparator); if (filePath.size() < resolvedFilename.size()) { base::utils::File::createPath(filePath); } auto create = [&](Level level) { base::LogStreamsReferenceMap::iterator filestreamIter = m_logStreamsReference->find(resolvedFilename); base::type::fstream_t* fs = nullptr; if (filestreamIter == m_logStreamsReference->end()) { // We need a completely new stream, nothing to share with fs = base::utils::File::newFileStream(resolvedFilename); m_filenameMap.insert(std::make_pair(level, resolvedFilename)); m_fileStreamMap.insert(std::make_pair(level, base::FileStreamPtr(fs))); m_logStreamsReference->insert(std::make_pair(resolvedFilename, base::FileStreamPtr(m_fileStreamMap.at(level)))); } else { // Woops! we have an existing one, share it! m_filenameMap.insert(std::make_pair(level, filestreamIter->first)); m_fileStreamMap.insert(std::make_pair(level, base::FileStreamPtr(filestreamIter->second))); fs = filestreamIter->second.get(); } if (fs == nullptr) { // We display bad file error from newFileStream() ELPP_INTERNAL_ERROR("Setting [TO_FILE] of [" << LevelHelper::convertToString(level) << "] to FALSE", false); setValue(level, false, &m_toFileMap); } }; // If we dont have file conf for any level, create it for Level::Global first // otherwise create for specified level create(m_filenameMap.empty() && m_fileStreamMap.empty() ? Level::Global : level); } bool TypedConfigurations::unsafeValidateFileRolling(Level level, const PreRollOutCallback& preRollOutCallback) { base::type::fstream_t* fs = unsafeGetConfigByRef(level, &m_fileStreamMap, "fileStream").get(); if (fs == nullptr) { return true; } std::size_t maxLogFileSize = unsafeGetConfigByVal(level, &m_maxLogFileSizeMap, "maxLogFileSize"); std::size_t currFileSize = base::utils::File::getSizeOfFile(fs); if (maxLogFileSize != 0 && currFileSize >= maxLogFileSize) { std::string fname = unsafeGetConfigByRef(level, &m_filenameMap, "filename"); ELPP_INTERNAL_INFO(1, "Truncating log file [" << fname << "] as a result of configurations for level [" << LevelHelper::convertToString(level) << "]"); fs->close(); preRollOutCallback(fname.c_str(), currFileSize); fs->open(fname, std::fstream::out | std::fstream::trunc); return true; } return false; } // RegisteredHitCounters bool RegisteredHitCounters::validateEveryN(const char* filename, base::type::LineNumber lineNumber, std::size_t n) { base::threading::ScopedLock scopedLock(lock()); base::HitCounter* counter = get(filename, lineNumber); if (counter == nullptr) { registerNew(counter = new base::HitCounter(filename, lineNumber)); } counter->validateHitCounts(n); bool result = (n >= 1 && counter->hitCounts() != 0 && counter->hitCounts() % n == 0); return result; } /// @brief Validates counter for hits >= N, i.e, registers new if does not exist otherwise updates original one /// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned bool RegisteredHitCounters::validateAfterN(const char* filename, base::type::LineNumber lineNumber, std::size_t n) { base::threading::ScopedLock scopedLock(lock()); base::HitCounter* counter = get(filename, lineNumber); if (counter == nullptr) { registerNew(counter = new base::HitCounter(filename, lineNumber)); } // Do not use validateHitCounts here since we do not want to reset counter here // Note the >= instead of > because we are incrementing // after this check if (counter->hitCounts() >= n) return true; counter->increment(); return false; } /// @brief Validates counter for hits are <= n, i.e, registers new if does not exist otherwise updates original one /// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned bool RegisteredHitCounters::validateNTimes(const char* filename, base::type::LineNumber lineNumber, std::size_t n) { base::threading::ScopedLock scopedLock(lock()); base::HitCounter* counter = get(filename, lineNumber); if (counter == nullptr) { registerNew(counter = new base::HitCounter(filename, lineNumber)); } counter->increment(); // Do not use validateHitCounts here since we do not want to reset counter here if (counter->hitCounts() <= n) return true; return false; } // RegisteredLoggers RegisteredLoggers::RegisteredLoggers(const LogBuilderPtr& defaultLogBuilder) : m_defaultLogBuilder(defaultLogBuilder) { m_defaultConfigurations.setToDefault(); m_logStreamsReference = std::make_shared(); } Logger* RegisteredLoggers::get(const std::string& id, bool forceCreation) { base::threading::ScopedLock scopedLock(lock()); Logger* logger_ = base::utils::Registry::get(id); if (logger_ == nullptr && forceCreation) { bool validId = Logger::isValidId(id); if (!validId) { ELPP_ASSERT(validId, "Invalid logger ID [" << id << "]. Not registering this logger."); return nullptr; } logger_ = new Logger(id, m_defaultConfigurations, m_logStreamsReference); logger_->m_logBuilder = m_defaultLogBuilder; registerNew(id, logger_); LoggerRegistrationCallback* callback = nullptr; for (const std::pair& h : m_loggerRegistrationCallbacks) { callback = h.second.get(); if (callback != nullptr && callback->enabled()) { callback->handle(logger_); } } } return logger_; } bool RegisteredLoggers::remove(const std::string& id) { if (id == base::consts::kDefaultLoggerId) { return false; } // get has internal lock Logger* logger = base::utils::Registry::get(id); if (logger != nullptr) { // unregister has internal lock unregister(logger); } return true; } void RegisteredLoggers::unsafeFlushAll(void) { ELPP_INTERNAL_INFO(1, "Flushing all log files"); for (base::LogStreamsReferenceMap::iterator it = m_logStreamsReference->begin(); it != m_logStreamsReference->end(); ++it) { if (it->second.get() == nullptr) continue; it->second->flush(); } } // VRegistry VRegistry::VRegistry(base::type::VerboseLevel level, base::type::EnumType* pFlags) : m_level(level), m_pFlags(pFlags) { } /// @brief Sets verbose level. Accepted range is 0-9 void VRegistry::setLevel(base::type::VerboseLevel level) { base::threading::ScopedLock scopedLock(lock()); if (level > 9) m_level = base::consts::kMaxVerboseLevel; else m_level = level; } void VRegistry::setModules(const char* modules) { base::threading::ScopedLock scopedLock(lock()); auto addSuffix = [](std::stringstream& ss, const char* sfx, const char* prev) { if (prev != nullptr && base::utils::Str::endsWith(ss.str(), std::string(prev))) { std::string chr(ss.str().substr(0, ss.str().size() - strlen(prev))); ss.str(std::string("")); ss << chr; } if (base::utils::Str::endsWith(ss.str(), std::string(sfx))) { std::string chr(ss.str().substr(0, ss.str().size() - strlen(sfx))); ss.str(std::string("")); ss << chr; } ss << sfx; }; auto insert = [&](std::stringstream& ss, base::type::VerboseLevel level) { if (!base::utils::hasFlag(LoggingFlag::DisableVModulesExtensions, *m_pFlags)) { addSuffix(ss, ".h", nullptr); m_modules.insert(std::make_pair(ss.str(), level)); addSuffix(ss, ".c", ".h"); m_modules.insert(std::make_pair(ss.str(), level)); addSuffix(ss, ".cpp", ".c"); m_modules.insert(std::make_pair(ss.str(), level)); addSuffix(ss, ".cc", ".cpp"); m_modules.insert(std::make_pair(ss.str(), level)); addSuffix(ss, ".cxx", ".cc"); m_modules.insert(std::make_pair(ss.str(), level)); addSuffix(ss, ".-inl.h", ".cxx"); m_modules.insert(std::make_pair(ss.str(), level)); addSuffix(ss, ".hxx", ".-inl.h"); m_modules.insert(std::make_pair(ss.str(), level)); addSuffix(ss, ".hpp", ".hxx"); m_modules.insert(std::make_pair(ss.str(), level)); addSuffix(ss, ".hh", ".hpp"); } m_modules.insert(std::make_pair(ss.str(), level)); }; bool isMod = true; bool isLevel = false; std::stringstream ss; int level = -1; for (; *modules; ++modules) { switch (*modules) { case '=': isLevel = true; isMod = false; break; case ',': isLevel = false; isMod = true; if (!ss.str().empty() && level != -1) { insert(ss, static_cast(level)); ss.str(std::string("")); level = -1; } break; default: if (isMod) { ss << *modules; } else if (isLevel) { if (isdigit(*modules)) { level = static_cast(*modules) - 48; } } break; } } if (!ss.str().empty() && level != -1) { insert(ss, static_cast(level)); } } bool VRegistry::allowed(base::type::VerboseLevel vlevel, const char* file) { base::threading::ScopedLock scopedLock(lock()); if (m_modules.empty() || file == nullptr) { return vlevel <= m_level; } else { char baseFilename[base::consts::kSourceFilenameMaxLength] = ""; base::utils::File::buildBaseFilename(file, baseFilename); std::unordered_map::iterator it = m_modules.begin(); for (; it != m_modules.end(); ++it) { if (base::utils::Str::wildCardMatch(baseFilename, it->first.c_str())) { return vlevel <= it->second; } } if (base::utils::hasFlag(LoggingFlag::AllowVerboseIfModuleNotSpecified, *m_pFlags)) { return true; } return false; } } void VRegistry::setFromArgs(const base::utils::CommandLineArgs* commandLineArgs) { if (commandLineArgs->hasParam("-v") || commandLineArgs->hasParam("--verbose") || commandLineArgs->hasParam("-V") || commandLineArgs->hasParam("--VERBOSE")) { setLevel(base::consts::kMaxVerboseLevel); } else if (commandLineArgs->hasParamWithValue("--v")) { setLevel(static_cast(atoi(commandLineArgs->getParamValue("--v")))); } else if (commandLineArgs->hasParamWithValue("--V")) { setLevel(static_cast(atoi(commandLineArgs->getParamValue("--V")))); } else if ((commandLineArgs->hasParamWithValue("-vmodule")) && vModulesEnabled()) { setModules(commandLineArgs->getParamValue("-vmodule")); } else if (commandLineArgs->hasParamWithValue("-VMODULE") && vModulesEnabled()) { setModules(commandLineArgs->getParamValue("-VMODULE")); } } #if !defined(ELPP_DEFAULT_LOGGING_FLAGS) # define ELPP_DEFAULT_LOGGING_FLAGS 0x0 #endif // !defined(ELPP_DEFAULT_LOGGING_FLAGS) // Storage #if ELPP_ASYNC_LOGGING Storage::Storage(const LogBuilderPtr& defaultLogBuilder, base::IWorker* asyncDispatchWorker) : #else Storage::Storage(const LogBuilderPtr& defaultLogBuilder) : #endif // ELPP_ASYNC_LOGGING m_registeredHitCounters(new base::RegisteredHitCounters()), m_registeredLoggers(new base::RegisteredLoggers(defaultLogBuilder)), m_flags(ELPP_DEFAULT_LOGGING_FLAGS), m_vRegistry(new base::VRegistry(0, &m_flags)), #if ELPP_ASYNC_LOGGING m_asyncLogQueue(new base::AsyncLogQueue()), m_asyncDispatchWorker(asyncDispatchWorker), #endif // ELPP_ASYNC_LOGGING m_preRollOutCallback(base::defaultPreRollOutCallback) { // Register default logger m_registeredLoggers->get(std::string(base::consts::kDefaultLoggerId)); // We register default logger anyway (worse case it's not going to register) just in case m_registeredLoggers->get("default"); #if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) // Register performance logger and reconfigure format Logger* performanceLogger = m_registeredLoggers->get(std::string(base::consts::kPerformanceLoggerId)); m_registeredLoggers->get("performance"); performanceLogger->configurations()->setGlobally(ConfigurationType::Format, std::string("%datetime %level %msg")); performanceLogger->reconfigure(); #endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) #if defined(ELPP_SYSLOG) // Register syslog logger and reconfigure format Logger* sysLogLogger = m_registeredLoggers->get(std::string(base::consts::kSysLogLoggerId)); sysLogLogger->configurations()->setGlobally(ConfigurationType::Format, std::string("%level: %msg")); sysLogLogger->reconfigure(); #endif // defined(ELPP_SYSLOG) addFlag(LoggingFlag::AllowVerboseIfModuleNotSpecified); #if ELPP_ASYNC_LOGGING installLogDispatchCallback(std::string("AsyncLogDispatchCallback")); #else installLogDispatchCallback(std::string("DefaultLogDispatchCallback")); #endif // ELPP_ASYNC_LOGGING #if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) installPerformanceTrackingCallback (std::string("DefaultPerformanceTrackingCallback")); #endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) ELPP_INTERNAL_INFO(1, "Easylogging++ has been initialized"); #if ELPP_ASYNC_LOGGING m_asyncDispatchWorker->start(); #endif // ELPP_ASYNC_LOGGING } Storage::~Storage(void) { ELPP_INTERNAL_INFO(4, "Destroying storage"); #if ELPP_ASYNC_LOGGING ELPP_INTERNAL_INFO(5, "Replacing log dispatch callback to synchronous"); uninstallLogDispatchCallback(std::string("AsyncLogDispatchCallback")); installLogDispatchCallback(std::string("DefaultLogDispatchCallback")); ELPP_INTERNAL_INFO(5, "Destroying asyncDispatchWorker"); base::utils::safeDelete(m_asyncDispatchWorker); ELPP_INTERNAL_INFO(5, "Destroying asyncLogQueue"); base::utils::safeDelete(m_asyncLogQueue); #endif // ELPP_ASYNC_LOGGING ELPP_INTERNAL_INFO(5, "Destroying registeredHitCounters"); base::utils::safeDelete(m_registeredHitCounters); ELPP_INTERNAL_INFO(5, "Destroying registeredLoggers"); base::utils::safeDelete(m_registeredLoggers); ELPP_INTERNAL_INFO(5, "Destroying vRegistry"); base::utils::safeDelete(m_vRegistry); } bool Storage::hasCustomFormatSpecifier(const char* formatSpecifier) { base::threading::ScopedLock scopedLock(customFormatSpecifiersLock()); return std::find(m_customFormatSpecifiers.begin(), m_customFormatSpecifiers.end(), formatSpecifier) != m_customFormatSpecifiers.end(); } void Storage::installCustomFormatSpecifier(const CustomFormatSpecifier& customFormatSpecifier) { if (hasCustomFormatSpecifier(customFormatSpecifier.formatSpecifier())) { return; } base::threading::ScopedLock scopedLock(customFormatSpecifiersLock()); m_customFormatSpecifiers.push_back(customFormatSpecifier); } bool Storage::uninstallCustomFormatSpecifier(const char* formatSpecifier) { base::threading::ScopedLock scopedLock(customFormatSpecifiersLock()); std::vector::iterator it = std::find(m_customFormatSpecifiers.begin(), m_customFormatSpecifiers.end(), formatSpecifier); if (it != m_customFormatSpecifiers.end() && strcmp(formatSpecifier, it->formatSpecifier()) == 0) { m_customFormatSpecifiers.erase(it); return true; } return false; } void Storage::setApplicationArguments(int argc, char** argv) { m_commandLineArgs.setArgs(argc, argv); m_vRegistry->setFromArgs(commandLineArgs()); // default log file #if !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG) if (m_commandLineArgs.hasParamWithValue(base::consts::kDefaultLogFileParam)) { Configurations c; c.setGlobally(ConfigurationType::Filename, std::string(m_commandLineArgs.getParamValue(base::consts::kDefaultLogFileParam))); registeredLoggers()->setDefaultConfigurations(c); for (base::RegisteredLoggers::iterator it = registeredLoggers()->begin(); it != registeredLoggers()->end(); ++it) { it->second->configure(c); } } #endif // !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG) #if defined(ELPP_LOGGING_FLAGS_FROM_ARG) if (m_commandLineArgs.hasParamWithValue(base::consts::kLoggingFlagsParam)) { int userInput = atoi(m_commandLineArgs.getParamValue(base::consts::kLoggingFlagsParam)); if (ELPP_DEFAULT_LOGGING_FLAGS == 0x0) { m_flags = userInput; } else { base::utils::addFlag(userInput, &m_flags); } } #endif // defined(ELPP_LOGGING_FLAGS_FROM_ARG) } } // namespace base // LogDispatchCallback #if defined(ELPP_THREAD_SAFE) void LogDispatchCallback::handle(const LogDispatchData* data) { base::threading::ScopedLock scopedLock(m_fileLocksMapLock); std::string filename = data->logMessage()->logger()->typedConfigurations()->filename(data->logMessage()->level()); auto lock = m_fileLocks.find(filename); if (lock == m_fileLocks.end()) { m_fileLocks.emplace(std::make_pair(filename, std::unique_ptr(new base::threading::Mutex))); } } #else void LogDispatchCallback::handle(const LogDispatchData* /*data*/) {} #endif base::threading::Mutex& LogDispatchCallback::fileHandle(const LogDispatchData* data) { auto it = m_fileLocks.find(data->logMessage()->logger()->typedConfigurations()->filename(data->logMessage()->level())); return *(it->second.get()); } namespace base { // DefaultLogDispatchCallback void DefaultLogDispatchCallback::handle(const LogDispatchData* data) { #if defined(ELPP_THREAD_SAFE) LogDispatchCallback::handle(data); base::threading::ScopedLock scopedLock(fileHandle(data)); #endif m_data = data; dispatch(m_data->logMessage()->logger()->logBuilder()->build(m_data->logMessage(), m_data->dispatchAction() == base::DispatchAction::NormalLog)); } void DefaultLogDispatchCallback::dispatch(base::type::string_t&& logLine) { if (m_data->dispatchAction() == base::DispatchAction::NormalLog) { if (m_data->logMessage()->logger()->m_typedConfigurations->toFile(m_data->logMessage()->level())) { base::type::fstream_t* fs = m_data->logMessage()->logger()->m_typedConfigurations->fileStream( m_data->logMessage()->level()); if (fs != nullptr) { fs->write(logLine.c_str(), logLine.size()); if (fs->fail()) { ELPP_INTERNAL_ERROR("Unable to write log to file [" << m_data->logMessage()->logger()->m_typedConfigurations->filename(m_data->logMessage()->level()) << "].\n" << "Few possible reasons (could be something else):\n" << " * Permission denied\n" << " * Disk full\n" << " * Disk is not writable", true); } else { if (ELPP->hasFlag(LoggingFlag::ImmediateFlush) || (m_data->logMessage()->logger()->isFlushNeeded(m_data->logMessage()->level()))) { m_data->logMessage()->logger()->flush(m_data->logMessage()->level(), fs); } } } else { ELPP_INTERNAL_ERROR("Log file for [" << LevelHelper::convertToString(m_data->logMessage()->level()) << "] " << "has not been configured but [TO_FILE] is configured to TRUE. [Logger ID: " << m_data->logMessage()->logger()->id() << "]", false); } } if (m_data->logMessage()->logger()->m_typedConfigurations->toStandardOutput(m_data->logMessage()->level())) { if (ELPP->hasFlag(LoggingFlag::ColoredTerminalOutput)) m_data->logMessage()->logger()->logBuilder()->convertToColoredOutput(&logLine, m_data->logMessage()->level()); ELPP_COUT << ELPP_COUT_LINE(logLine); } } #if defined(ELPP_SYSLOG) else if (m_data->dispatchAction() == base::DispatchAction::SysLog) { // Determine syslog priority int sysLogPriority = 0; if (m_data->logMessage()->level() == Level::Fatal) sysLogPriority = LOG_EMERG; else if (m_data->logMessage()->level() == Level::Error) sysLogPriority = LOG_ERR; else if (m_data->logMessage()->level() == Level::Warning) sysLogPriority = LOG_WARNING; else if (m_data->logMessage()->level() == Level::Info) sysLogPriority = LOG_INFO; else if (m_data->logMessage()->level() == Level::Debug) sysLogPriority = LOG_DEBUG; else sysLogPriority = LOG_NOTICE; # if defined(ELPP_UNICODE) char* line = base::utils::Str::wcharPtrToCharPtr(logLine.c_str()); syslog(sysLogPriority, "%s", line); free(line); # else syslog(sysLogPriority, "%s", logLine.c_str()); # endif } #endif // defined(ELPP_SYSLOG) } #if ELPP_ASYNC_LOGGING // AsyncLogDispatchCallback void AsyncLogDispatchCallback::handle(const LogDispatchData* data) { base::type::string_t logLine = data->logMessage()->logger()->logBuilder()->build(data->logMessage(), data->dispatchAction() == base::DispatchAction::NormalLog); if (data->dispatchAction() == base::DispatchAction::NormalLog && data->logMessage()->logger()->typedConfigurations()->toStandardOutput(data->logMessage()->level())) { if (ELPP->hasFlag(LoggingFlag::ColoredTerminalOutput)) data->logMessage()->logger()->logBuilder()->convertToColoredOutput(&logLine, data->logMessage()->level()); ELPP_COUT << ELPP_COUT_LINE(logLine); } // Save resources and only queue if we want to write to file otherwise just ignore handler if (data->logMessage()->logger()->typedConfigurations()->toFile(data->logMessage()->level())) { ELPP->asyncLogQueue()->push(AsyncLogItem(*(data->logMessage()), *data, logLine)); } } // AsyncDispatchWorker AsyncDispatchWorker::AsyncDispatchWorker() { setContinueRunning(false); } AsyncDispatchWorker::~AsyncDispatchWorker() { setContinueRunning(false); ELPP_INTERNAL_INFO(6, "Stopping dispatch worker - Cleaning log queue"); clean(); ELPP_INTERNAL_INFO(6, "Log queue cleaned"); } bool AsyncDispatchWorker::clean(void) { std::mutex m; std::unique_lock lk(m); cv.wait(lk, [] { return !ELPP->asyncLogQueue()->empty(); }); emptyQueue(); lk.unlock(); cv.notify_one(); return ELPP->asyncLogQueue()->empty(); } void AsyncDispatchWorker::emptyQueue(void) { while (!ELPP->asyncLogQueue()->empty()) { AsyncLogItem data = ELPP->asyncLogQueue()->next(); handle(&data); base::threading::msleep(100); } } void AsyncDispatchWorker::start(void) { base::threading::msleep(5000); // 5s (why?) setContinueRunning(true); std::thread t1(&AsyncDispatchWorker::run, this); t1.join(); } void AsyncDispatchWorker::handle(AsyncLogItem* logItem) { LogDispatchData* data = logItem->data(); LogMessage* logMessage = logItem->logMessage(); Logger* logger = logMessage->logger(); base::TypedConfigurations* conf = logger->typedConfigurations(); base::type::string_t logLine = logItem->logLine(); if (data->dispatchAction() == base::DispatchAction::NormalLog) { if (conf->toFile(logMessage->level())) { base::type::fstream_t* fs = conf->fileStream(logMessage->level()); if (fs != nullptr) { fs->write(logLine.c_str(), logLine.size()); if (fs->fail()) { ELPP_INTERNAL_ERROR("Unable to write log to file [" << conf->filename(logMessage->level()) << "].\n" << "Few possible reasons (could be something else):\n" << " * Permission denied\n" << " * Disk full\n" << " * Disk is not writable", true); } else { if (ELPP->hasFlag(LoggingFlag::ImmediateFlush) || (logger->isFlushNeeded(logMessage->level()))) { logger->flush(logMessage->level(), fs); } } } else { ELPP_INTERNAL_ERROR("Log file for [" << LevelHelper::convertToString(logMessage->level()) << "] " << "has not been configured but [TO_FILE] is configured to TRUE. [Logger ID: " << logger->id() << "]", false); } } } # if defined(ELPP_SYSLOG) else if (data->dispatchAction() == base::DispatchAction::SysLog) { // Determine syslog priority int sysLogPriority = 0; if (logMessage->level() == Level::Fatal) sysLogPriority = LOG_EMERG; else if (logMessage->level() == Level::Error) sysLogPriority = LOG_ERR; else if (logMessage->level() == Level::Warning) sysLogPriority = LOG_WARNING; else if (logMessage->level() == Level::Info) sysLogPriority = LOG_INFO; else if (logMessage->level() == Level::Debug) sysLogPriority = LOG_DEBUG; else sysLogPriority = LOG_NOTICE; # if defined(ELPP_UNICODE) char* line = base::utils::Str::wcharPtrToCharPtr(logLine.c_str()); syslog(sysLogPriority, "%s", line); free(line); # else syslog(sysLogPriority, "%s", logLine.c_str()); # endif } # endif // defined(ELPP_SYSLOG) } void AsyncDispatchWorker::run(void) { while (continueRunning()) { emptyQueue(); base::threading::msleep(10); // 10ms } } #endif // ELPP_ASYNC_LOGGING // DefaultLogBuilder base::type::string_t DefaultLogBuilder::build(const LogMessage* logMessage, bool appendNewLine) const { base::TypedConfigurations* tc = logMessage->logger()->typedConfigurations(); const base::LogFormat* logFormat = &tc->logFormat(logMessage->level()); base::type::string_t logLine = logFormat->format(); char buff[base::consts::kSourceFilenameMaxLength + base::consts::kSourceLineMaxLength] = ""; const char* bufLim = buff + sizeof(buff); if (logFormat->hasFlag(base::FormatFlags::AppName)) { // App name base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kAppNameFormatSpecifier, logMessage->logger()->parentApplicationName()); } if (logFormat->hasFlag(base::FormatFlags::ThreadId)) { // Thread ID base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kThreadIdFormatSpecifier, ELPP->getThreadName(base::threading::getCurrentThreadId())); } if (logFormat->hasFlag(base::FormatFlags::DateTime)) { // DateTime base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kDateTimeFormatSpecifier, base::utils::DateTime::getDateTime(logFormat->dateTimeFormat().c_str(), &tc->subsecondPrecision(logMessage->level()))); } if (logFormat->hasFlag(base::FormatFlags::Function)) { // Function base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogFunctionFormatSpecifier, logMessage->func()); } if (logFormat->hasFlag(base::FormatFlags::File)) { // File base::utils::Str::clearBuff(buff, base::consts::kSourceFilenameMaxLength); base::utils::File::buildStrippedFilename(logMessage->file().c_str(), buff); base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogFileFormatSpecifier, std::string(buff)); } if (logFormat->hasFlag(base::FormatFlags::FileBase)) { // FileBase base::utils::Str::clearBuff(buff, base::consts::kSourceFilenameMaxLength); base::utils::File::buildBaseFilename(logMessage->file(), buff); base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogFileBaseFormatSpecifier, std::string(buff)); } if (logFormat->hasFlag(base::FormatFlags::Line)) { // Line char* buf = base::utils::Str::clearBuff(buff, base::consts::kSourceLineMaxLength); buf = base::utils::Str::convertAndAddToBuff(logMessage->line(), base::consts::kSourceLineMaxLength, buf, bufLim, false); base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogLineFormatSpecifier, std::string(buff)); } if (logFormat->hasFlag(base::FormatFlags::Location)) { // Location char* buf = base::utils::Str::clearBuff(buff, base::consts::kSourceFilenameMaxLength + base::consts::kSourceLineMaxLength); base::utils::File::buildStrippedFilename(logMessage->file().c_str(), buff); buf = base::utils::Str::addToBuff(buff, buf, bufLim); buf = base::utils::Str::addToBuff(":", buf, bufLim); buf = base::utils::Str::convertAndAddToBuff(logMessage->line(), base::consts::kSourceLineMaxLength, buf, bufLim, false); base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogLocationFormatSpecifier, std::string(buff)); } if (logMessage->level() == Level::Verbose && logFormat->hasFlag(base::FormatFlags::VerboseLevel)) { // Verbose level char* buf = base::utils::Str::clearBuff(buff, 1); buf = base::utils::Str::convertAndAddToBuff(logMessage->verboseLevel(), 1, buf, bufLim, false); base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kVerboseLevelFormatSpecifier, std::string(buff)); } if (logFormat->hasFlag(base::FormatFlags::LogMessage)) { // Log message base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kMessageFormatSpecifier, logMessage->message()); } #if !defined(ELPP_DISABLE_CUSTOM_FORMAT_SPECIFIERS) el::base::threading::ScopedLock lock_(ELPP->customFormatSpecifiersLock()); ELPP_UNUSED(lock_); for (std::vector::const_iterator it = ELPP->customFormatSpecifiers()->begin(); it != ELPP->customFormatSpecifiers()->end(); ++it) { std::string fs(it->formatSpecifier()); base::type::string_t wcsFormatSpecifier(fs.begin(), fs.end()); base::utils::Str::replaceFirstWithEscape(logLine, wcsFormatSpecifier, it->resolver()(logMessage)); } #endif // !defined(ELPP_DISABLE_CUSTOM_FORMAT_SPECIFIERS) if (appendNewLine) logLine += ELPP_LITERAL("\n"); return logLine; } // LogDispatcher void LogDispatcher::dispatch(void) { if (m_proceed && m_dispatchAction == base::DispatchAction::None) { m_proceed = false; } if (!m_proceed) { return; } #ifndef ELPP_NO_GLOBAL_LOCK // see https://github.com/muflihun/easyloggingpp/issues/580 // global lock is turned on by default unless // ELPP_NO_GLOBAL_LOCK is defined base::threading::ScopedLock scopedLock(ELPP->lock()); #endif base::TypedConfigurations* tc = m_logMessage->logger()->m_typedConfigurations; if (ELPP->hasFlag(LoggingFlag::StrictLogFileSizeCheck)) { tc->validateFileRolling(m_logMessage->level(), ELPP->preRollOutCallback()); } LogDispatchCallback* callback = nullptr; LogDispatchData data; for (const std::pair& h : ELPP->m_logDispatchCallbacks) { callback = h.second.get(); if (callback != nullptr && callback->enabled()) { data.setLogMessage(m_logMessage); data.setDispatchAction(m_dispatchAction); callback->handle(&data); } } } // MessageBuilder void MessageBuilder::initialize(Logger* logger) { m_logger = logger; m_containerLogSeparator = ELPP->hasFlag(LoggingFlag::NewLineForContainer) ? ELPP_LITERAL("\n ") : ELPP_LITERAL(", "); } MessageBuilder& MessageBuilder::operator<<(const wchar_t* msg) { if (msg == nullptr) { m_logger->stream() << base::consts::kNullPointer; return *this; } # if defined(ELPP_UNICODE) m_logger->stream() << msg; # else char* buff_ = base::utils::Str::wcharPtrToCharPtr(msg); m_logger->stream() << buff_; free(buff_); # endif if (ELPP->hasFlag(LoggingFlag::AutoSpacing)) { m_logger->stream() << " "; } return *this; } // Writer Writer& Writer::construct(Logger* logger, bool needLock) { m_logger = logger; initializeLogger(logger->id(), false, needLock); m_messageBuilder.initialize(m_logger); return *this; } Writer& Writer::construct(int count, const char* loggerIds, ...) { if (ELPP->hasFlag(LoggingFlag::MultiLoggerSupport)) { va_list loggersList; va_start(loggersList, loggerIds); const char* id = loggerIds; m_loggerIds.reserve(count); for (int i = 0; i < count; ++i) { m_loggerIds.push_back(std::string(id)); id = va_arg(loggersList, const char*); } va_end(loggersList); initializeLogger(m_loggerIds.at(0)); } else { initializeLogger(std::string(loggerIds)); } m_messageBuilder.initialize(m_logger); return *this; } void Writer::initializeLogger(const std::string& loggerId, bool lookup, bool needLock) { if (lookup) { m_logger = ELPP->registeredLoggers()->get(loggerId, ELPP->hasFlag(LoggingFlag::CreateLoggerAutomatically)); } if (m_logger == nullptr) { { if (!ELPP->registeredLoggers()->has(std::string(base::consts::kDefaultLoggerId))) { // Somehow default logger has been unregistered. Not good! Register again ELPP->registeredLoggers()->get(std::string(base::consts::kDefaultLoggerId)); } } Writer(Level::Debug, m_file, m_line, m_func).construct(1, base::consts::kDefaultLoggerId) << "Logger [" << loggerId << "] is not registered yet!"; m_proceed = false; } else { if (needLock) { m_logger->acquireLock(); // This should not be unlocked by checking m_proceed because // m_proceed can be changed by lines below } if (ELPP->hasFlag(LoggingFlag::HierarchicalLogging)) { m_proceed = m_level == Level::Verbose ? m_logger->enabled(m_level) : LevelHelper::castToInt(m_level) >= LevelHelper::castToInt(ELPP->m_loggingLevel); } else { m_proceed = m_logger->enabled(m_level); } } } void Writer::processDispatch() { #if ELPP_LOGGING_ENABLED if (ELPP->hasFlag(LoggingFlag::MultiLoggerSupport)) { bool firstDispatched = false; base::type::string_t logMessage; std::size_t i = 0; do { if (m_proceed) { if (firstDispatched) { m_logger->stream() << logMessage; } else { firstDispatched = true; if (m_loggerIds.size() > 1) { logMessage = m_logger->stream().str(); } } triggerDispatch(); } else if (m_logger != nullptr) { m_logger->stream().str(ELPP_LITERAL("")); m_logger->releaseLock(); } if (i + 1 < m_loggerIds.size()) { initializeLogger(m_loggerIds.at(i + 1)); } } while (++i < m_loggerIds.size()); } else { if (m_proceed) { triggerDispatch(); } else if (m_logger != nullptr) { m_logger->stream().str(ELPP_LITERAL("")); m_logger->releaseLock(); } } #else if (m_logger != nullptr) { m_logger->stream().str(ELPP_LITERAL("")); m_logger->releaseLock(); } #endif // ELPP_LOGGING_ENABLED } void Writer::triggerDispatch(void) { try { if (m_proceed) { if (m_msg == nullptr) { LogMessage msg(m_level, m_file, m_line, m_func, m_verboseLevel, m_logger); base::LogDispatcher(m_proceed, &msg, m_dispatchAction).dispatch(); } else { base::LogDispatcher(m_proceed, m_msg, m_dispatchAction).dispatch(); } } if (m_logger != nullptr) { m_logger->stream().str(ELPP_LITERAL("")); m_logger->releaseLock(); } if (m_proceed && m_level == Level::Fatal && !ELPP->hasFlag(LoggingFlag::DisableApplicationAbortOnFatalLog)) { base::Writer(Level::Warning, m_file, m_line, m_func).construct(1, base::consts::kDefaultLoggerId) << "Aborting application. Reason: Fatal log at [" << m_file << ":" << m_line << "]"; std::stringstream reasonStream; reasonStream << "Fatal log at [" << m_file << ":" << m_line << "]" << " If you wish to disable 'abort on fatal log' please use " << "el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog)"; base::utils::abort(1, reasonStream.str()); } m_proceed = false; } catch(std::exception & ex){ // Extremely low memory situation; don't let exception be unhandled. } } // PErrorWriter PErrorWriter::~PErrorWriter(void) { if (m_proceed) { #if ELPP_COMPILER_MSVC char buff[256]; strerror_s(buff, 256, errno); m_logger->stream() << ": " << buff << " [" << errno << "]"; #else m_logger->stream() << ": " << strerror(errno) << " [" << errno << "]"; #endif } } // PerformanceTracker #if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) PerformanceTracker::PerformanceTracker(const std::string& blockName, base::TimestampUnit timestampUnit, const std::string& loggerId, bool scopedLog, Level level) : m_blockName(blockName), m_timestampUnit(timestampUnit), m_loggerId(loggerId), m_scopedLog(scopedLog), m_level(level), m_hasChecked(false), m_lastCheckpointId(std::string()), m_enabled(false) { #if !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED // We store it locally so that if user happen to change configuration by the end of scope // or before calling checkpoint, we still depend on state of configuration at time of construction el::Logger* loggerPtr = ELPP->registeredLoggers()->get(loggerId, false); m_enabled = loggerPtr != nullptr && loggerPtr->m_typedConfigurations->performanceTracking(m_level); if (m_enabled) { base::utils::DateTime::gettimeofday(&m_startTime); } #endif // !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED } PerformanceTracker::~PerformanceTracker(void) { #if !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED if (m_enabled) { base::threading::ScopedLock scopedLock(lock()); if (m_scopedLog) { base::utils::DateTime::gettimeofday(&m_endTime); base::type::string_t formattedTime = getFormattedTimeTaken(); PerformanceTrackingData data(PerformanceTrackingData::DataType::Complete); data.init(this); data.m_formattedTimeTaken = formattedTime; PerformanceTrackingCallback* callback = nullptr; for (const std::pair& h : ELPP->m_performanceTrackingCallbacks) { callback = h.second.get(); if (callback != nullptr && callback->enabled()) { callback->handle(&data); } } } } #endif // !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) } void PerformanceTracker::checkpoint(const std::string& id, const char* file, base::type::LineNumber line, const char* func) { #if !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED if (m_enabled) { base::threading::ScopedLock scopedLock(lock()); base::utils::DateTime::gettimeofday(&m_endTime); base::type::string_t formattedTime = m_hasChecked ? getFormattedTimeTaken(m_lastCheckpointTime) : ELPP_LITERAL(""); PerformanceTrackingData data(PerformanceTrackingData::DataType::Checkpoint); data.init(this); data.m_checkpointId = id; data.m_file = file; data.m_line = line; data.m_func = func; data.m_formattedTimeTaken = formattedTime; PerformanceTrackingCallback* callback = nullptr; for (const std::pair& h : ELPP->m_performanceTrackingCallbacks) { callback = h.second.get(); if (callback != nullptr && callback->enabled()) { callback->handle(&data); } } base::utils::DateTime::gettimeofday(&m_lastCheckpointTime); m_hasChecked = true; m_lastCheckpointId = id; } #endif // !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED ELPP_UNUSED(id); ELPP_UNUSED(file); ELPP_UNUSED(line); ELPP_UNUSED(func); } const base::type::string_t PerformanceTracker::getFormattedTimeTaken(struct timeval startTime) const { if (ELPP->hasFlag(LoggingFlag::FixedTimeFormat)) { base::type::stringstream_t ss; ss << base::utils::DateTime::getTimeDifference(m_endTime, startTime, m_timestampUnit) << " " << base::consts::kTimeFormats[static_cast (m_timestampUnit)].unit; return ss.str(); } return base::utils::DateTime::formatTime(base::utils::DateTime::getTimeDifference(m_endTime, startTime, m_timestampUnit), m_timestampUnit); } #endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) namespace debug { #if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) // StackTrace StackTrace::StackTraceEntry::StackTraceEntry(std::size_t index, const std::string& loc, const std::string& demang, const std::string& hex, const std::string& addr) : m_index(index), m_location(loc), m_demangled(demang), m_hex(hex), m_addr(addr) { } std::ostream& operator<<(std::ostream& ss, const StackTrace::StackTraceEntry& si) { ss << "[" << si.m_index << "] " << si.m_location << (si.m_hex.empty() ? "" : "+") << si.m_hex << " " << si.m_addr << (si.m_demangled.empty() ? "" : ":") << si.m_demangled; return ss; } std::ostream& operator<<(std::ostream& os, const StackTrace& st) { std::vector::const_iterator it = st.m_stack.begin(); while (it != st.m_stack.end()) { os << " " << *it++ << "\n"; } return os; } void StackTrace::generateNew(void) { #ifdef HAVE_EXECINFO m_stack.clear(); void* stack[kMaxStack]; unsigned int size = backtrace(stack, kMaxStack); char** strings = backtrace_symbols(stack, size); if (size > kStackStart) { // Skip StackTrace c'tor and generateNew for (std::size_t i = kStackStart; i < size; ++i) { std::string mangName; std::string location; std::string hex; std::string addr; // entry: 2 crash.cpp.bin 0x0000000101552be5 _ZN2el4base5debug10StackTraceC1Ev + 21 const std::string line(strings[i]); auto p = line.find("_"); if (p != std::string::npos) { mangName = line.substr(p); mangName = mangName.substr(0, mangName.find(" +")); } p = line.find("0x"); if (p != std::string::npos) { addr = line.substr(p); addr = addr.substr(0, addr.find("_")); } // Perform demangling if parsed properly if (!mangName.empty()) { int status = 0; char* demangName = abi::__cxa_demangle(mangName.data(), 0, 0, &status); // if demangling is successful, output the demangled function name if (status == 0) { // Success (see http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/a01696.html) StackTraceEntry entry(i - 1, location, demangName, hex, addr); m_stack.push_back(entry); } else { // Not successful - we will use mangled name StackTraceEntry entry(i - 1, location, mangName, hex, addr); m_stack.push_back(entry); } free(demangName); } else { StackTraceEntry entry(i - 1, line); m_stack.push_back(entry); } } } free(strings); #else ELPP_INTERNAL_INFO(1, "Stacktrace generation not supported for selected compiler"); #endif // ELPP_STACKTRACE } // Static helper functions static std::string crashReason(int sig) { std::stringstream ss; bool foundReason = false; for (int i = 0; i < base::consts::kCrashSignalsCount; ++i) { if (base::consts::kCrashSignals[i].numb == sig) { ss << "Application has crashed due to [" << base::consts::kCrashSignals[i].name << "] signal"; if (ELPP->hasFlag(el::LoggingFlag::LogDetailedCrashReason)) { ss << std::endl << " " << base::consts::kCrashSignals[i].brief << std::endl << " " << base::consts::kCrashSignals[i].detail; } foundReason = true; } } if (!foundReason) { ss << "Application has crashed due to unknown signal [" << sig << "]"; } return ss.str(); } /// @brief Logs reason of crash from sig static void logCrashReason(int sig, bool stackTraceIfAvailable, Level level, const char* logger) { if (sig == SIGINT && ELPP->hasFlag(el::LoggingFlag::IgnoreSigInt)) { return; } std::stringstream ss; ss << "CRASH HANDLED; "; ss << crashReason(sig); #if ELPP_STACKTRACE if (stackTraceIfAvailable) { ss << std::endl << " ======= Backtrace: =========" << std::endl << base::debug::StackTrace(); } #else ELPP_UNUSED(stackTraceIfAvailable); #endif // ELPP_STACKTRACE ELPP_WRITE_LOG(el::base::Writer, level, base::DispatchAction::NormalLog, logger) << ss.str(); } static inline void crashAbort(int sig) { base::utils::abort(sig, std::string()); } /// @brief Default application crash handler /// /// @detail This function writes log using 'default' logger, prints stack trace for GCC based compilers and aborts program. static inline void defaultCrashHandler(int sig) { base::debug::logCrashReason(sig, true, Level::Fatal, base::consts::kDefaultLoggerId); base::debug::crashAbort(sig); } // CrashHandler CrashHandler::CrashHandler(bool useDefault) { if (useDefault) { setHandler(defaultCrashHandler); } } void CrashHandler::setHandler(const Handler& cHandler) { m_handler = cHandler; #if defined(ELPP_HANDLE_SIGABRT) int i = 0; // SIGABRT is at base::consts::kCrashSignals[0] #else int i = 1; #endif // defined(ELPP_HANDLE_SIGABRT) for (; i < base::consts::kCrashSignalsCount; ++i) { m_handler = signal(base::consts::kCrashSignals[i].numb, cHandler); } } #endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) } // namespace debug } // namespace base // el // Helpers #if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) void Helpers::crashAbort(int sig, const char* sourceFile, unsigned int long line) { std::stringstream ss; ss << base::debug::crashReason(sig).c_str(); ss << " - [Called el::Helpers::crashAbort(" << sig << ")]"; if (sourceFile != nullptr && strlen(sourceFile) > 0) { ss << " - Source: " << sourceFile; if (line > 0) ss << ":" << line; else ss << " (line number not specified)"; } base::utils::abort(sig, ss.str()); } void Helpers::logCrashReason(int sig, bool stackTraceIfAvailable, Level level, const char* logger) { el::base::debug::logCrashReason(sig, stackTraceIfAvailable, level, logger); } #endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) // Loggers Logger* Loggers::getLogger(const std::string& identity, bool registerIfNotAvailable) { return ELPP->registeredLoggers()->get(identity, registerIfNotAvailable); } void Loggers::setDefaultLogBuilder(el::LogBuilderPtr& logBuilderPtr) { ELPP->registeredLoggers()->setDefaultLogBuilder(logBuilderPtr); } bool Loggers::unregisterLogger(const std::string& identity) { return ELPP->registeredLoggers()->remove(identity); } bool Loggers::hasLogger(const std::string& identity) { return ELPP->registeredLoggers()->has(identity); } Logger* Loggers::reconfigureLogger(Logger* logger, const Configurations& configurations) { if (!logger) return nullptr; logger->configure(configurations); return logger; } Logger* Loggers::reconfigureLogger(const std::string& identity, const Configurations& configurations) { return Loggers::reconfigureLogger(Loggers::getLogger(identity), configurations); } Logger* Loggers::reconfigureLogger(const std::string& identity, ConfigurationType configurationType, const std::string& value) { Logger* logger = Loggers::getLogger(identity); if (logger == nullptr) { return nullptr; } logger->configurations()->set(Level::Global, configurationType, value); logger->reconfigure(); return logger; } void Loggers::reconfigureAllLoggers(const Configurations& configurations) { for (base::RegisteredLoggers::iterator it = ELPP->registeredLoggers()->begin(); it != ELPP->registeredLoggers()->end(); ++it) { Loggers::reconfigureLogger(it->second, configurations); } } void Loggers::reconfigureAllLoggers(Level level, ConfigurationType configurationType, const std::string& value) { for (base::RegisteredLoggers::iterator it = ELPP->registeredLoggers()->begin(); it != ELPP->registeredLoggers()->end(); ++it) { Logger* logger = it->second; logger->configurations()->set(level, configurationType, value); logger->reconfigure(); } } void Loggers::setDefaultConfigurations(const Configurations& configurations, bool reconfigureExistingLoggers) { ELPP->registeredLoggers()->setDefaultConfigurations(configurations); if (reconfigureExistingLoggers) { Loggers::reconfigureAllLoggers(configurations); } } const Configurations* Loggers::defaultConfigurations(void) { return ELPP->registeredLoggers()->defaultConfigurations(); } const base::LogStreamsReferenceMapPtr Loggers::logStreamsReference(void) { return ELPP->registeredLoggers()->logStreamsReference(); } base::TypedConfigurations Loggers::defaultTypedConfigurations(void) { return base::TypedConfigurations( ELPP->registeredLoggers()->defaultConfigurations(), ELPP->registeredLoggers()->logStreamsReference()); } std::vector* Loggers::populateAllLoggerIds(std::vector* targetList) { targetList->clear(); for (base::RegisteredLoggers::iterator it = ELPP->registeredLoggers()->list().begin(); it != ELPP->registeredLoggers()->list().end(); ++it) { targetList->push_back(it->first); } return targetList; } void Loggers::configureFromGlobal(const char* globalConfigurationFilePath) { std::ifstream gcfStream(globalConfigurationFilePath, std::ifstream::in); ELPP_ASSERT(gcfStream.is_open(), "Unable to open global configuration file [" << globalConfigurationFilePath << "] for parsing."); std::string line = std::string(); std::stringstream ss; Logger* logger = nullptr; auto configure = [&](void) { ELPP_INTERNAL_INFO(8, "Configuring logger: '" << logger->id() << "' with configurations \n" << ss.str() << "\n--------------"); Configurations c; c.parseFromText(ss.str()); logger->configure(c); }; while (gcfStream.good()) { std::getline(gcfStream, line); ELPP_INTERNAL_INFO(1, "Parsing line: " << line); base::utils::Str::trim(line); if (Configurations::Parser::isComment(line)) continue; Configurations::Parser::ignoreComments(&line); base::utils::Str::trim(line); if (line.size() > 2 && base::utils::Str::startsWith(line, std::string(base::consts::kConfigurationLoggerId))) { if (!ss.str().empty() && logger != nullptr) { configure(); } ss.str(std::string("")); line = line.substr(2); base::utils::Str::trim(line); if (line.size() > 1) { ELPP_INTERNAL_INFO(1, "Getting logger: '" << line << "'"); logger = getLogger(line); } } else { ss << line << "\n"; } } if (!ss.str().empty() && logger != nullptr) { configure(); } } bool Loggers::configureFromArg(const char* argKey) { #if defined(ELPP_DISABLE_CONFIGURATION_FROM_PROGRAM_ARGS) ELPP_UNUSED(argKey); #else if (!Helpers::commandLineArgs()->hasParamWithValue(argKey)) { return false; } configureFromGlobal(Helpers::commandLineArgs()->getParamValue(argKey)); #endif // defined(ELPP_DISABLE_CONFIGURATION_FROM_PROGRAM_ARGS) return true; } void Loggers::flushAll(void) { ELPP->registeredLoggers()->flushAll(); } void Loggers::setVerboseLevel(base::type::VerboseLevel level) { ELPP->vRegistry()->setLevel(level); } base::type::VerboseLevel Loggers::verboseLevel(void) { return ELPP->vRegistry()->level(); } void Loggers::setVModules(const char* modules) { if (ELPP->vRegistry()->vModulesEnabled()) { ELPP->vRegistry()->setModules(modules); } } void Loggers::clearVModules(void) { ELPP->vRegistry()->clearModules(); } // VersionInfo const std::string VersionInfo::version(void) { return std::string("9.96.7"); } /// @brief Release date of current version const std::string VersionInfo::releaseDate(void) { return std::string("24-11-2018 0728hrs"); } } // namespace el ProcDump-for-Linux-2.2/src/000077500000000000000000000000001447614355600155755ustar00rootroot00000000000000ProcDump-for-Linux-2.2/src/CoreDumpWriter.c000066400000000000000000000276421447614355600206670ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // Core dump orchestrator // //-------------------------------------------------------------------- #include "Includes.h" static const char *CoreDumpTypeStrings[] = { "commit", "cpu", "thread", "filedesc", "signal", "time", "exception", "manual" }; //-------------------------------------------------------------------- // // NewCoreDumpWriter - Helper function for newing a struct CoreDumpWriter // // Returns: struct CoreDumpWriter * // //-------------------------------------------------------------------- struct CoreDumpWriter *NewCoreDumpWriter(enum ECoreDumpType type, struct ProcDumpConfiguration *config) { struct CoreDumpWriter *writer = (struct CoreDumpWriter *)malloc(sizeof(struct CoreDumpWriter)); if (writer == NULL) { Log(error, INTERNAL_ERROR); Trace("NewCoreDumpWriter: failed to allocate memory."); exit(-1); } writer->Config = config; writer->Type = type; return writer; } //-------------------------------------------------------------------- // // GetCoreDumpName - Gets the core dump name // //-------------------------------------------------------------------- char* GetCoreDumpName(pid_t pid, char* procName, char* dumpPath, char* dumpName, enum ECoreDumpType type) { auto_free char *name = sanitize(procName); time_t rawTime = {0}; struct tm* timerInfo = NULL; char date[DATE_LENGTH]; char* gcorePrefixName = NULL; gcorePrefixName = malloc(PATH_MAX+1); if(!gcorePrefixName) { Log(error, INTERNAL_ERROR); Trace("GetCoreDumpName: Memory allocation failure"); exit(-1); } const char *desc = CoreDumpTypeStrings[type]; // get time for current dump generated rawTime = time(NULL); if((timerInfo = localtime(&rawTime)) == NULL){ Log(error, INTERNAL_ERROR); Trace("GetCoreDumpName: failed localtime"); exit(-1); } strftime(date, 26, "%Y-%m-%d_%H:%M:%S", timerInfo); // assemble the full file name (including path) for core dumps if(dumpName != NULL) { if(snprintf(gcorePrefixName, BUFFER_LENGTH, "%s/%s", dumpPath, dumpName) < 0) { Log(error, INTERNAL_ERROR); Trace("GetCoreDumpName: failed sprintf custom output file name"); exit(-1); } } else { if(snprintf(gcorePrefixName, BUFFER_LENGTH, "%s/%s_%s_%s", dumpPath, name, desc, date) < 0) { Log(error, INTERNAL_ERROR); Trace("GetCoreDumpName: failed sprintf default output file name"); exit(-1); } } return gcorePrefixName; } //-------------------------------------------------------------------- // // WaitForQuit - Wait for Quit Event or just timeout // // Timed wait with awareness of quit event // // Returns: 0 - Success // -1 - Failure // 1 - Quit/Limit reached // //-------------------------------------------------------------------- int WriteCoreDump(struct CoreDumpWriter *self) { int rc = 0; // Enter critical section (block till we decrement semaphore) rc = WaitForQuitOrEvent(self->Config, &self->Config->semAvailableDumpSlots, INFINITE_WAIT); if(rc == 0){ Log(error, INTERNAL_ERROR); Trace("WriteCoreDump: failed WaitForQuitOrEvent."); exit(-1); } if(pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL) != 0){ Log(error, INTERNAL_ERROR); Trace("WriteCoreDump: failed pthread_setcanceltype."); exit(-1); } switch (rc) { case WAIT_OBJECT_0: // QUIT! Time for cleanup, no dump break; case WAIT_OBJECT_0+1: // We got a dump slot! { char* socketName = NULL; IsCoreClrProcess(self->Config->ProcessId, &socketName); if ((rc = WriteCoreDumpInternal(self, socketName)) == 0) { // We're done here, unlock (increment) the sem if(sem_post(&self->Config->semAvailableDumpSlots.semaphore) == -1){ Log(error, INTERNAL_ERROR); Trace("WriteCoreDump: failed sem_post."); if(socketName) free(socketName); exit(-1); } } if(socketName) free(socketName); } break; case WAIT_ABANDONED: // We've hit the dump limit, clean up break; default: Trace("WriteCoreDump: Error in default case"); break; } if(pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL) != 0){ Log(error, INTERNAL_ERROR); Trace("WriteCoreDump: failed pthread_setcanceltype."); exit(-1); } return rc; } // -------------------------------------------------------------------------------------- // CRITICAL SECTION // Should only ever have running concurrently // The default value of which is 1 (hard coded) and is set in // ProcDumpConfiguration.semAvailableDumpSlots // Returns 1 if we trigger quit in the crit section, 0 otherwise // -------------------------------------------------------------------------------------- int WriteCoreDumpInternal(struct CoreDumpWriter *self, char* socketName) { char command[BUFFER_LENGTH]; char ** outputBuffer; char lineBuffer[BUFFER_LENGTH]; char coreDumpFileName[PATH_MAX+1] = {0}; auto_free char* gcorePrefixName = NULL; int lineLength; int i = 0; int rc = 0; pid_t gcorePid; FILE *commandPipe = NULL; char *name = sanitize(self->Config->ProcessName); pid_t pid = self->Config->ProcessId; gcorePrefixName = GetCoreDumpName(self->Config->ProcessId, name, self->Config->CoreDumpPath, self->Config->CoreDumpName, self->Type); // assemble the command if(snprintf(command, BUFFER_LENGTH, "gcore -o %s %d 2>&1", gcorePrefixName, pid) < 0) { Log(error, INTERNAL_ERROR); Trace("WriteCoreDumpInternal: failed sprintf gcore command"); exit(-1); } // assemble filename if(snprintf(coreDumpFileName, PATH_MAX, "%s.%d", gcorePrefixName, pid) < 0) { Log(error, INTERNAL_ERROR); Trace("WriteCoreDumpInternal: failed sprintf core file name"); exit(-1); } // If the file already exists and the overwrite flag has not been set we fail if(access(coreDumpFileName, F_OK)==0 && !self->Config->bOverwriteExisting) { Log(info, "Dump file %s already exists and was not overwritten (use -o to overwrite)", coreDumpFileName); return -1; } // check if we're allowed to write into the target directory if(access(self->Config->CoreDumpPath, W_OK) < 0) { Log(error, INTERNAL_ERROR); Trace("WriteCoreDumpInternal: no write permission to core dump target file %s", coreDumpFileName); exit(-1); } if(socketName!=NULL) { // If we have a socket name, we're dumping a .NET process.... if(GenerateCoreClrDump(socketName, coreDumpFileName)==false) { Log(error, "An error occurred while generating the core dump for the specified .NET process"); } else { // log out sucessful core dump generated Log(info, "Core dump %d generated: %s", self->Config->NumberOfDumpsCollected, coreDumpFileName); self->Config->NumberOfDumpsCollected++; // safe to increment in crit section } } else { // allocate output buffer outputBuffer = (char**)malloc(sizeof(char*) * MAX_LINES); if(outputBuffer == NULL) { Log(error, INTERNAL_ERROR); Trace("WriteCoreDumpInternal: failed gcore output buffer allocation"); exit(-1); } // Oterwise, we use gcore dump generation TODO@FUTURE: We might consider adding a forcegcore flag in cases where // someone wants to use gcore even for .NET processes. commandPipe = popen2(command, "r", &gcorePid); self->Config->gcorePid = gcorePid; if(commandPipe == NULL) { Log(error, "An error occurred while generating the core dump"); Trace("WriteCoreDumpInternal: Failed to open pipe to gcore"); exit(1); } // read all output from gcore command for(i = 0; i < MAX_LINES && fgets(lineBuffer, sizeof(lineBuffer), commandPipe) != NULL; i++) { lineLength = strlen(lineBuffer) + 1; // get # of characters read outputBuffer[i] = (char*)malloc(sizeof(char) * lineLength); if(outputBuffer[i] != NULL) { strcpy(outputBuffer[i], lineBuffer); outputBuffer[i][lineLength-1] = '\0'; // append null character } else { Log(error, INTERNAL_ERROR); Trace("WriteCoreDumpInternal: failed to allocate gcore error message buffer"); exit(-1); } } // After reading all input, wait for child process to end and get exit status for bash gcore command int stat; waitpid(gcorePid, &stat, 0); int gcoreStatus = WEXITSTATUS(stat); // close pipe reading from gcore self->Config->gcorePid = NO_PID; // reset gcore pid so that signal handler knows we aren't dumping int pcloseStatus = pclose(commandPipe); bool gcoreFailedMsg = false; // in case error sneaks through the message output // check if gcore was able to generate the dump if(gcoreStatus != 0 || pcloseStatus != 0 || (gcoreFailedMsg = (strstr(outputBuffer[i-1], "gcore: failed") != NULL))) { Log(error, "An error occurred while generating the core dump:"); if (gcoreStatus != 0) Log(error, "\tDump exit status = %d", gcoreStatus); if (pcloseStatus != 0) Log(error, "\tError closing pipe: %d", pcloseStatus); if (gcoreFailedMsg) Log(error, "\tgcore failed"); // log gcore message for(int j = 0; j < i; j++) { if(outputBuffer[j] != NULL) { Log(error, "GCORE - %s", outputBuffer[j]); } } rc = gcoreStatus; } else { // On WSL2 there is a delay between the core dump being written to disk and able to succesfully access it in the below check sleep(1); // validate that core dump file was generated if(access(coreDumpFileName, F_OK) != -1) { if(self->Config->nQuit) { // if we are in a quit state from interrupt delete partially generated core dump file int ret = unlink(coreDumpFileName); if (ret < 0 && errno != ENOENT) { Trace("WriteCoreDumpInternal: Failed to remove partial core dump"); exit(-1); } } else { // log out sucessful core dump generated Log(info, "Core dump %d generated: %s", self->Config->NumberOfDumpsCollected, coreDumpFileName); self->Config->NumberOfDumpsCollected++; // safe to increment in crit section if (self->Config->NumberOfDumpsCollected >= self->Config->NumberOfDumpsToCollect) { SetEvent(&self->Config->evtQuit.event); // shut it down, we're done here rc = 1; } } } } for(int j = 0; j < i; j++) { free(outputBuffer[j]); } free(outputBuffer); } free(name); return rc; } ProcDump-for-Linux-2.2/src/DotnetHelpers.c000066400000000000000000000205361447614355600205270ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // .NET helpers // //-------------------------------------------------------------------- #include "Includes.h" //-------------------------------------------------------------------- // // IsCoreClrProcess - Checks to see whether the process is a .NET // process by checking the availability of a diagnostics server exposed // as a Unix domain socket. If the pipe is available, we assume its a // .NET process // // Returns: true - if the process is a .NET process,[out] socketName // will contain the full socket name. Caller owns the // memory allocated for the socketName // false - if the process is NOT a .NET process,[out] socketName // will be NULL. // //-------------------------------------------------------------------- bool IsCoreClrProcess(pid_t pid, char** socketName) { bool bRet = false; *socketName = NULL; auto_free_file FILE *procFile = NULL; char lineBuf[4096]; auto_free char* tmpFolder = NULL; // If $TMPDIR is set, use it as the path, otherwise we use /tmp // per https://github.com/dotnet/diagnostics/blob/master/documentation/design-docs/ipc-protocol.md tmpFolder = GetSocketPath("dotnet-diagnostic-", pid, 0); if(tmpFolder == NULL) { return false; } // Enumerate all open domain sockets exposed from the process. If one // exists by the following prefix, we assume its a .NET process: // dotnet-diagnostic-{%d:PID} // The sockets are found in /proc/net/unix procFile = fopen("/proc/net/unix", "r"); if(procFile != NULL) { if(fgets(lineBuf, sizeof(lineBuf), procFile) != NULL) { while(fgets(lineBuf, 4096, procFile) != NULL) { char* ptr = GetPath(lineBuf); if(ptr!=NULL) { if(strncmp(ptr, tmpFolder, strlen(tmpFolder)) == 0) { // Found the correct socket...copy the name to the out param int len = strlen(ptr)+1; *socketName = calloc(len, sizeof(char)); if(*socketName!=NULL) { if(strcpy(*socketName, ptr) != NULL) { Trace("IsCoreClrProcess: CoreCLR diagnostics socket: %s", *socketName); bRet = true; } break; } } } } } } else { Trace("IsCoreClrProcess: Failed to open /proc/net/unix [%d].", errno); } if(*socketName!=NULL && bRet==false) { free(*socketName); *socketName = NULL; } return bRet; } //-------------------------------------------------------------------- // // GenerateCoreClrDump - Generates the .NET dump using the // diagnostics server. // // Returns: true - if core dump was generated // false - otherwise // //-------------------------------------------------------------------- bool GenerateCoreClrDump(char* socketName, char* dumpFileName) { bool bRet = false; struct sockaddr_un addr = {0}; auto_free_fd int fd = 0; auto_free uint16_t* dumpFileNameW = NULL; auto_free void* temp_buffer = NULL; if( (dumpFileNameW = GetUint16(dumpFileName))!=NULL) { if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) { Trace("GenerateCoreClrDump: Failed to create socket for .NET dump generation [%d].", errno); } else { // Create socket to diagnostics server memset(&addr, 0, sizeof(struct sockaddr_un)); addr.sun_family = AF_UNIX; strncpy(addr.sun_path, socketName, sizeof(addr.sun_path)-1); if (connect(fd, (struct sockaddr*)&addr, sizeof(struct sockaddr_un)) == -1) { Trace("GenerateCoreClrDump: Failed to connect to socket for .NET dump generation [%d].", errno); Log(error, "Failed to connect to the target .NET process diagnostics socket at %s [%d].", socketName, errno); } else { unsigned int dumpFileNameLen = ((strlen(dumpFileName)+1)); int payloadSize = sizeof(dumpFileNameLen); payloadSize += dumpFileNameLen*sizeof(wchar_t); unsigned int dumpType = CORECLR_DUMPTYPE_FULL; payloadSize += sizeof(dumpType); unsigned int diagnostics = CORECLR_DUMPLOGGING_OFF; payloadSize += sizeof(diagnostics); uint16_t totalPacketSize = sizeof(struct IpcHeader)+payloadSize; // First initialize header temp_buffer = malloc(totalPacketSize); if(temp_buffer!=NULL) { memset(temp_buffer, 0, totalPacketSize); struct IpcHeader dumpHeader = { { {"DOTNET_IPC_V1"} }, (uint16_t)totalPacketSize, (uint8_t)0x01, (uint8_t)0x01, (uint16_t)0x0000 }; void* temp_buffer_cur = temp_buffer; memcpy(temp_buffer_cur, &dumpHeader, sizeof(struct IpcHeader)); temp_buffer_cur += sizeof(struct IpcHeader); // Now we add the payload memcpy(temp_buffer_cur, &dumpFileNameLen, sizeof(dumpFileNameLen)); temp_buffer_cur += sizeof(dumpFileNameLen); memcpy(temp_buffer_cur, dumpFileNameW, dumpFileNameLen*sizeof(uint16_t)); temp_buffer_cur += dumpFileNameLen*sizeof(uint16_t); // next, the dumpType memcpy(temp_buffer_cur, &dumpType, sizeof(unsigned int)); temp_buffer_cur += sizeof(unsigned int); // next, the diagnostics flag memcpy(temp_buffer_cur, &diagnostics, sizeof(unsigned int)); if(send_all(fd, temp_buffer, totalPacketSize)==-1) { Trace("GenerateCoreClrDump: Failed sending packet to diagnostics server [%d]", errno); } else { // Lets get the header first struct IpcHeader retHeader; if(recv_all(fd, &retHeader, sizeof(struct IpcHeader))==-1) { Trace("GenerateCoreClrDump: Failed receiving response header from diagnostics server [%d]", errno); } else { // Check the header to make sure its the right size if(retHeader.Size != CORECLR_DIAG_IPCHEADER_SIZE) { Trace("GenerateCoreClrDump: Failed validating header size in response header from diagnostics server [%d != 24]", retHeader.Size); } else { // Next, get the payload which contains a single uint32 (hresult) int32_t res = -1; if(recv_all(fd, &res, sizeof(int32_t))==-1) { Trace("GenerateCoreClrDump: Failed receiving result code from response payload from diagnostics server [%d]", errno); } else { if(res==0) { bRet = true; } } } } } } } } } #if (__GNUC__ >= 13) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wanalyzer-fd-leak" #endif return bRet; #if (__GNUC__ >= 13) #pragma GCC diagnostic pop #endif } ProcDump-for-Linux-2.2/src/Events.c000066400000000000000000000117261447614355600172140ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // Quick events implementation // //-------------------------------------------------------------------- #include "Includes.h" //-------------------------------------------------------------------- // // CreateEvent - Create an Event and return a pointer to it // //-------------------------------------------------------------------- struct Event *CreateEvent(bool IsManualReset, bool InitialState) { struct Event *event = (struct Event *)malloc(sizeof(struct Event)); if(event == NULL){ Log(error, "INTERNAL_ERROR"); Trace("CreateEvent: failed memory allocation."); exit(-1); } InitEvent(event, IsManualReset, InitialState); return event; } //-------------------------------------------------------------------- // // CreateNamedEvent - Create a Named Event and return a pointer to it // //-------------------------------------------------------------------- struct Event *CreateNamedEvent(bool IsManualReset, bool InitialState, char *Name) { struct Event *event = (struct Event *)malloc(sizeof(struct Event)); if(event == NULL){ Log(error, INTERNAL_ERROR); Trace("CreateNamedEvent: failed memory allocation."); exit(-1); } InitNamedEvent(event, IsManualReset, InitialState, Name); return event; } //-------------------------------------------------------------------- // // InitEvent - initialize an Event // //-------------------------------------------------------------------- void InitEvent(struct Event *Event, bool IsManualReset, bool InitialState) { InitNamedEvent(Event, IsManualReset, InitialState, NULL); } //-------------------------------------------------------------------- // // InitNamedEvent - Initialize a Named Event // //-------------------------------------------------------------------- void InitNamedEvent(struct Event *Event, bool IsManualReset, bool InitialState, char *Name) { static int unamedEventId = 0; // ID for logging purposes pthread_mutex_init(&(Event->mutex), NULL); if(pthread_cond_init(&(Event->cond), NULL) != 0){ Log(error, INTERNAL_ERROR); Trace("InitNamedEvent: failed pthread_cond_init."); exit(-1); } Event->bManualReset = IsManualReset; Event->bTriggered = InitialState; Event->nWaiters = 0; if (Name == NULL) { sprintf(Event->Name, "Unnamed Event %d", ++unamedEventId); } else if (strlen(Name) >= MAX_EVENT_NAME) { strncpy(Event->Name, Name, MAX_EVENT_NAME); Event->Name[MAX_EVENT_NAME - 1] = '\0'; // null terminate } else { strcpy(Event->Name, Name); } } //-------------------------------------------------------------------- // // DestroyEvent - Clean up an event // //-------------------------------------------------------------------- void DestroyEvent(struct Event *Event) { // destroy mutex and cond if(pthread_cond_destroy(&(Event->cond)) != 0){ Log(error, INTERNAL_ERROR); Trace("DestroyEvent: failed pthread_cond_destroy."); exit(-1); } if(pthread_mutex_destroy(&(Event->mutex)) != 0){ Log(error, INTERNAL_ERROR); Trace("DestroyEvent: failed pthread_mutex_destroy."); exit(-1); } } //-------------------------------------------------------------------- // // SetEvent - Attempts to trigger the event and set Event.bTriggered to true // // Return - A boolean indicating success of firing the event // //-------------------------------------------------------------------- bool SetEvent(struct Event *Event) { int success = 0; if ((success = pthread_mutex_lock(&(Event->mutex))) == 0) { Event->bTriggered = true; Event->bManualReset ? // Are we a manual-reset? pthread_cond_broadcast(&(Event->cond)) : // signal everyone! pthread_cond_signal(&(Event->cond)); // Signal first in line! pthread_mutex_unlock(&(Event->mutex)); } else { Log(error, INTERNAL_ERROR); Trace("SetEvent: failed pthread_mutex_lock."); exit(-1); } return (success == 0); } //-------------------------------------------------------------------- // // ResetEvent - For Events with bManualReset == true // // Return - A boolean indicating success of reseting the event (i.e., Event.bTriggered == false) // //-------------------------------------------------------------------- bool ResetEvent(struct Event *Event) { int success = 0; if ((success = pthread_mutex_lock(&(Event->mutex))) == 0) { Event->bTriggered = false; if(pthread_mutex_unlock(&(Event->mutex)) != 0){ Log(error, INTERNAL_ERROR); Trace("ResetEvent: failed pthread_mutex_unlock."); exit(-1); } } else{ Log(error, INTERNAL_ERROR); Trace("ResetEvent: failed pthread_mutex_lock."); exit(-1); } return (success == 0); } ProcDump-for-Linux-2.2/src/GenHelpers.c000066400000000000000000000343431447614355600200040ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // General purpose helpers // //-------------------------------------------------------------------- #define _GNU_SOURCE #include "Includes.h" #include //-------------------------------------------------------------------- // // GetSeparatedValues - // Returns a list of values separated by the specified separator. // //-------------------------------------------------------------------- int* GetSeparatedValues(char* src, char* separator, int* numValues) { int* ret = NULL; int i = 0; if(src == NULL || numValues == NULL) { return NULL; } char* dup = strdup(src); // Duplicate to avoid changing the original using strtok if(dup == NULL) { return NULL; } char* token = strtok((char*)dup, separator); while (token != NULL) { i++; token = strtok(NULL, separator); } free(dup); if(i > 0) { ret = malloc(i*sizeof(int)); if(ret) { i = 0; dup = strdup(src); if(dup == NULL) { free(ret); ret = NULL; return NULL; } token = strtok((char*)dup, separator); while (token != NULL) { if(!ConvertToInt(token, &ret[i])) { free(ret); ret = NULL; return NULL; } i++; token = strtok(NULL, separator); } free(dup); } } *numValues = i; return ret; } //-------------------------------------------------------------------- // // ConvertToInt - Helper to convert from a char* to int // //-------------------------------------------------------------------- bool ConvertToInt(const char* src, int* conv) { char *end; long l = strtol(src, &end, 10); if (*end != '\0') return false; *conv = l; return true; } //-------------------------------------------------------------------- // // CheckKernelVersion - Check to see if current kernel is 3.5+. // // ProcDump won't proceed if current kernel is less than 3.5. // Returns true if >= 3.5+, returns false otherwise or error. //-------------------------------------------------------------------- bool CheckKernelVersion() { struct utsname kernelInfo; if(uname(&kernelInfo) == 0) { int version, patch = 0; if(sscanf(kernelInfo.release,"%d.%d",&version,&patch) != 2) { Log(error, "Cannot validate kernel version"); Trace("%s",strerror(errno)); return false; } if(version > MIN_KERNEL_VERSION) return true; if(version == MIN_KERNEL_VERSION && patch >= MIN_KERNEL_PATCH) return true; } else { Log(error, strerror(errno)); } return false; } //-------------------------------------------------------------------- // // IsValidNumberArg - quick helper function for ensuring arg is a number // //-------------------------------------------------------------------- bool IsValidNumberArg(const char *arg) { int strLen = strlen(arg); for (int i = 0; i < strLen; i++) { if (!isdigit(arg[i]) && !isspace(arg[i])) { return false; } } return true; } //-------------------------------------------------------------------- // // GetUint16 - Quick and dirty conversion from char to uint16_t // // Returns: uint16_t* - if successfully converted, NULL otherwise. // Caller must free upon success // //-------------------------------------------------------------------- uint16_t* GetUint16(char* buffer) { uint16_t* dumpFileNameW = NULL; if(buffer!=NULL) { dumpFileNameW = malloc((strlen(buffer)+1)*sizeof(uint16_t)); if(dumpFileNameW==NULL) { return NULL; } for(int i=0; i<(strlen(buffer)+1); i++) { dumpFileNameW[i] = (uint16_t) buffer[i]; } } return dumpFileNameW; } //-------------------------------------------------------------------- // // GetPath - Parses out the path from a full line read from // /proc/net/unix. Example line: // // 0000000000000000: 00000003 00000000 00000000 0001 03 20287 @/tmp/.X11-unix/X0 // // Returns: path - point to path if it exists, NULL otherwise. // //-------------------------------------------------------------------- char* GetPath(char* lineBuf) { char delim[] = " "; // example of /proc/net/unix line: // 0000000000000000: 00000003 00000000 00000000 0001 03 20287 @/tmp/.X11-unix/X0 char *ptr = strtok(lineBuf, delim); // Move to last column which contains the name of the file (/socket) for(int i=0; i<7; i++) { ptr = strtok(NULL, delim); } if(ptr!=NULL) { ptr[strlen(ptr)-1]='\0'; } return ptr; } //-------------------------------------------------------------------- // // popen2 - alternate popen that surfaces the pid of the spawned process // // Parameters: command (const char *) - the string containing the command to execute in the child thread // type (const char *) - either "r" for read or "w" for write // pid (pidt_t *) - out variable containing the pid of the spawned process // // Returns: FILE* pointing to the r or w of the pip between this thread and the spawned // //-------------------------------------------------------------------- FILE *popen2(const char *command, const char *type, pid_t *pid) { // per man page: "...opens a process by creating a pipe, forking, and invoking the shell..." int pipefd[2]; // 0 -> read, 1 -> write pid_t childPid; if ((pipe(pipefd)) == -1) { Log(error, INTERNAL_ERROR); Trace("popen2: unable to open pipe"); exit(-1); } // fork and then ensure we have the correct end of the pipe open if ((childPid = fork()) == -1) { Log(error, INTERNAL_ERROR); Trace("popen2: unable to fork process"); exit(-1); } if (childPid == 0) { // Child setpgid(0,0); // give the child and descendants their own pgid so we can terminate gcore separately if (type[0] == 'r') { close(pipefd[0]); dup2(pipefd[1], STDOUT_FILENO); // redirect stdout to write end of pipe dup2(pipefd[1], STDERR_FILENO); // redirect stderr to write end of pipe } else { close(pipefd[1]); dup2(pipefd[0], STDIN_FILENO); // redirect pipe read to stdin } execl("/bin/bash", "bash", "-c", command, (char *)NULL); // won't return return NULL; // will never be hit; just for static analyzers } else { // parent setpgid(childPid, childPid); // give the child and descendants their own pgid so we can terminate gcore separately *pid = childPid; if (type[0] == 'r') { close(pipefd[1]); return fdopen(pipefd[0], "r"); } else { close(pipefd[0]); return fdopen(pipefd[1], "w"); } } #if (__GNUC__ >= 13) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wanalyzer-fd-leak" #endif } #if (__GNUC__ >= 13) #pragma GCC diagnostic pop #endif //-------------------------------------------------------------------- // // sanitize - Helper function for removing all non-alphanumeric characters from process name // // Returns: char * // //-------------------------------------------------------------------- // remove all non alphanumeric characters from process name and replace with '_' char *sanitize(char * processName) { if(processName == NULL){ Log(error, "NULL process name.\n"); exit(-1); } char *sanitizedProcessName = strdup(processName); if(sanitizedProcessName==NULL) { return NULL; } for (int i = 0; i < strlen(sanitizedProcessName); i++) { if (!isalnum(sanitizedProcessName[i])) { sanitizedProcessName[i] = '_'; } } return sanitizedProcessName; } //-------------------------------------------------------------------- // // StringToGuid // // Convert string representation of GUID to a GUID // //-------------------------------------------------------------------- int StringToGuid(char* szGuid, struct CLSID* pGuid) { int i = 0; // Verify the surrounding syntax. if (strlen(szGuid) != 38 || szGuid[0] != '{' || szGuid[9] != '-' || szGuid[14] != '-' || szGuid[19] != '-' || szGuid[24] != '-' || szGuid[37] != '}') { return -1; } // Parse the first 3 fields. if (GetHex(szGuid + 1, 4, &pGuid->Data1)) return -1; if (GetHex(szGuid + 10, 2, &pGuid->Data2)) return -1; if (GetHex(szGuid + 15, 2, &pGuid->Data3)) return -1; // Get the last two fields (which are byte arrays). for (i = 0; i < 2; ++i) { if (GetHex(szGuid + 20 + (i * 2), 1, &pGuid->Data4[i])) { return -1; } } for (i=0; i < 6; ++i) { if (GetHex(szGuid + 25 + (i * 2), 1, &pGuid->Data4[i+2])) { return -1; } } return 0; } //-------------------------------------------------------------------- // // GetHex // // Gets hex value of specified string // //-------------------------------------------------------------------- int GetHex(char* szStr, int size, void* pResult) { int count = size * 2; // # of bytes to take from string. unsigned int Result = 0; // Result value. char ch; while (count-- && (ch = *szStr++) != '\0') { switch (ch) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': Result = 16 * Result + (ch - '0'); break; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': Result = 16 * Result + 10 + (ch - 'A'); break; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': Result = 16 * Result + 10 + (ch - 'a'); break; default: return -1; } } // Set the output. switch (size) { case 1: *((unsigned char*) pResult) = (unsigned char) Result; break; case 2: *((short*) pResult) = (short) Result; break; case 4: *((int*) pResult) = Result; break; default: break; } return 0; } //-------------------------------------------------------------------- // // createDir // // Create specified directory with specified permissions. // //-------------------------------------------------------------------- bool createDir(const char *dir, mode_t perms) { if (dir == NULL) { fprintf(stderr, "createDir invalid params\n"); return false; } struct stat st; if (stat(dir, &st) < 0) { if (mkdir(dir, perms) < 0) { return false; } } else { if (!S_ISDIR(st.st_mode)) { return false; } chmod(dir, perms); } return true; } //-------------------------------------------------------------------- // // GetSocketPath // //-------------------------------------------------------------------- char* GetSocketPath(char* prefix, pid_t pid, pid_t targetPid) { char* prefixTmpFolder = NULL; char* t = NULL; // If $TMPDIR is set, use it as the path, otherwise we use /tmp prefixTmpFolder = getenv("TMPDIR"); if(prefixTmpFolder==NULL) { if(targetPid) { int len = snprintf(NULL, 0, "/tmp/%s%d-%d", prefix, pid, targetPid); t = malloc(len+1); if(t==NULL) { return NULL; } sprintf(t, "/tmp/%s%d-%d", prefix, pid, targetPid); } else { int len = snprintf(NULL, 0, "/tmp/%s%d", prefix, pid); t = malloc(len+1); if(t==NULL) { return NULL; } sprintf(t, "/tmp/%s%d", prefix, pid); } } else { if(targetPid) { int len = snprintf(NULL, 0, "%s/%s%d-%d", prefixTmpFolder, prefix, pid, targetPid); t = malloc(len+1); if(t==NULL) { return NULL; } sprintf(t, "%s/%s%d-%d", prefixTmpFolder, prefix, pid, targetPid); } else { int len = snprintf(NULL, 0, "%s/%s%d", prefixTmpFolder, prefix, pid); t = malloc(len+1); if(t==NULL) { return NULL; } sprintf(t, "%s/%s%d", prefixTmpFolder, prefix, pid); } } return t; } //-------------------------------------------------------------------- // // send_all // // Keeps sending data on socket until all data has been sent. // //-------------------------------------------------------------------- int send_all(int socket, void* buffer, size_t length) { char *ptr = (char*) buffer; while (length > 0) { int i = send(socket, ptr, length, 0); if (i < 1) { return -1; } ptr += i; length -= i; } return 0; } //-------------------------------------------------------------------- // // recv_all // // Keeps reading data on socket until all data has been read. // //-------------------------------------------------------------------- int recv_all(int socket, void* buffer, size_t length) { char *ptr = (char*) buffer; while (length > 0) { int i = recv(socket, ptr, length, 0); if (i < 1) { return -1; } ptr += i; length -= i; } return 0; } //-------------------------------------------------------------------- // // gettid // // Returns the current thread ID. Useful to add in trace statements // when threads are created to match to a debug session. // // Note: SYS_gettid is not POSIX compliant. // //-------------------------------------------------------------------- pid_t gettid() { #ifdef SYS_gettid return syscall(SYS_gettid); #endif return 0; }ProcDump-for-Linux-2.2/src/Handle.c000066400000000000000000000250721447614355600171420ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // Generalization of Events and Semaphores (Critical Sections) // //-------------------------------------------------------------------- #include "Includes.h" //-------------------------------------------------------------------- // // WaitForSingleObject - Blocks the current thread until // either the event triggers, semaphore > 0, // or the wait time has passed // // Parameters: // -Handle -> the event/semaphore to wait for // -Milliseconds -> the time to wait (in milliseconds). // '-1' will mean infinite, and 0 will be instant check // // Return - An integer indicating state of wait // 0 -> successful wait, and trigger fired // ETIMEDOUT -> the wait timed out (based on sepcified milliseconds) // other non-zero -> check errno.h // //-------------------------------------------------------------------- int WaitForSingleObject(struct Handle *Handle, int Milliseconds) { struct timespec ts; int rc = 0; // Get current time and add wait time if (Milliseconds != INFINITE_WAIT) { // We aren't waiting infinitely clock_gettime(CLOCK_REALTIME, &ts); ts.tv_sec += Milliseconds / 1000; // ms->sec ts.tv_nsec += (Milliseconds % 1000) * 1000000; // remaining ms->ns } switch (Handle->type) { case EVENT: if ((rc = pthread_mutex_lock(&(Handle->event.mutex))) == 0) { Handle->event.nWaiters++; while (!Handle->event.bTriggered && rc == 0) { rc = (Milliseconds == INFINITE_WAIT) ? // either wait pthread_cond_wait(&(Handle->event.cond), &(Handle->event.mutex)) : // infinitely pthread_cond_timedwait(&(Handle->event.cond), &(Handle->event.mutex), &ts); // or till specified time passes } Handle->event.nWaiters--; // Check if we should reset if (Handle->event.nWaiters == 0 && !Handle->event.bManualReset) { Handle->event.bTriggered = false; } pthread_mutex_unlock(&(Handle->event.mutex)); } break; case SEMAPHORE: rc = (Milliseconds == INFINITE_WAIT) ? sem_wait(&(Handle->semaphore)) : sem_timedwait(&(Handle->semaphore), &ts); break; default: rc = -1; break; } return rc; } // Helper functions/infrastructure for WaitForMultipleObjects struct thread_result { int retVal; int threadIndex; }; struct coordinator { pthread_cond_t condEventTriggered; pthread_mutex_t mutexEventTriggered; struct thread_result *results; int numberTriggered; // behind mutex int nWaiters; // when 0, delete the struct int stopIssued; // when != 0, proceed to cleanup struct Handle evtCanCleanUp; // trigger when we leave main wait thread struct Handle evtStartWaiting; }; struct thread_args { struct Handle *handle; struct coordinator *coordinator; // for cleanup int milliseconds; int retVal; int threadIndex; }; void *WaiterThread(void *thread_args) { int rc; struct thread_args *input = (struct thread_args *)thread_args; // Wait for go signal if ((rc = WaitForSingleObject(&(input->coordinator->evtStartWaiting), 2000)) != WAIT_OBJECT_0) { // we messed up and the thread can't start... } // wait on the event, and then let parent know if we signal if (input->milliseconds == INFINITE_WAIT) { do { rc = WaitForSingleObject(input->handle, 5000); // loop every 5 seconds to make sure we can get out and cleanup if we don't need to wait anymore } while (!input->coordinator->stopIssued && rc == ETIMEDOUT); } else { rc = WaitForSingleObject(input->handle, input->milliseconds); // blocks till timeout, error, or success } pthread_mutex_lock(&input->coordinator->mutexEventTriggered); struct thread_result result = { .retVal = rc, .threadIndex = input->threadIndex }; input->coordinator->results[input->coordinator->numberTriggered++] = result; pthread_mutex_unlock(&input->coordinator->mutexEventTriggered); pthread_cond_signal(&input->coordinator->condEventTriggered); // Wait for the cleanup signal! WaitForSingleObject(&input->coordinator->evtCanCleanUp, INFINITE_WAIT); // Lock mutex to make sure each thread gets a chance to check status pthread_mutex_lock(&input->coordinator->mutexEventTriggered); input->coordinator->nWaiters--; if (input->coordinator->nWaiters == 0) { // if we're the last one, turn the lights out pthread_mutex_unlock(&input->coordinator->mutexEventTriggered); pthread_mutex_destroy(&input->coordinator->mutexEventTriggered); pthread_cond_destroy(&input->coordinator->condEventTriggered); free(input->coordinator->results); free(input->coordinator); free(input); } else { // otherwise only clean up your own memory pthread_mutex_unlock(&input->coordinator->mutexEventTriggered); free(input); } pthread_exit(NULL); } //-------------------------------------------------------------------- // // WaitForMultipleObjects - Blocks the current thread and waits for multiple Events // // Parameters: // -Count -> The number of Events // -Events -> An array of pointers to Events // -WaitAll -> Should we wait for all the events or whatever comes back first // -Milliseconds -> the number of milliseconds to wait, -1 is infinite // // Return - An integer indicating state of wait: // WAIT_OBJECT_0 to (WAIT_OBJECT_0 + Count-1) -> successful wait, and trigger fired // if WaitAll is TRUE: indicates all objects signaled // if WaitAll is FALSE: returns the index of the event that satisfied the wait *first* // ETIMEDOUT -> the wait timed out (based on sepcified milliseconds) // other non-zero -> check errno.h // //-------------------------------------------------------------------- int WaitForMultipleObjects(int Count, struct Handle **Handles, bool WaitAll, int Milliseconds) { struct coordinator *coordinator; struct thread_result *results; pthread_t *threads; struct thread_args **thread_args; struct timespec ts; int t = 0; int rc = -1; int retVal = -1; threads = (pthread_t *)malloc(sizeof(pthread_t) * Count); if(threads==NULL) { Log(error, INTERNAL_ERROR); Trace("ERROR: Failed to malloc in %s\n",__FILE__); exit(-1); } thread_args = (struct thread_args **)malloc(sizeof(struct thread_args *) * Count); if(thread_args==NULL) { Log(error, INTERNAL_ERROR); Trace("ERROR: Failed to malloc in %s\n",__FILE__); exit(-1); } coordinator = (struct coordinator *)malloc(sizeof(struct coordinator)); if (coordinator == NULL) { Log(error, INTERNAL_ERROR); Trace("ERROR: Failed to malloc in %s\n",__FILE__); exit(-1); } coordinator->numberTriggered = 0; coordinator->stopIssued = 0; coordinator->evtCanCleanUp.type = EVENT; coordinator->evtStartWaiting.type = EVENT; InitNamedEvent(&(coordinator->evtCanCleanUp.event), true, false, "CanCleanUp"); InitNamedEvent(&(coordinator->evtStartWaiting.event), true, false, "StartWaiting"); pthread_cond_init(&coordinator->condEventTriggered, NULL); pthread_mutex_init(&coordinator->mutexEventTriggered, NULL); results = coordinator->results = (struct thread_result *)malloc(sizeof(struct thread_result) * Count); // Get current time and add wait time if (Milliseconds != -1) { // We aren't waiting infinitely clock_gettime(CLOCK_REALTIME, &ts); ts.tv_sec += Milliseconds / 1000; // ms->sec ts.tv_nsec += (Milliseconds % 1000) * 1000000; // remaining ms->ns } // Create our threads pthread_mutex_lock(&coordinator->mutexEventTriggered); for (t = 0; t < Count; t++) { thread_args[t] = (struct thread_args *)malloc(sizeof(struct thread_args)); if (thread_args[t] == NULL) { printf("ERROR: Failed to alloc in %s\n",__FILE__); exit(-1); } thread_args[t]->handle = Handles[t]; thread_args[t]->milliseconds = (Milliseconds == INFINITE_WAIT) ? Milliseconds : Milliseconds + 100; // prevent race condition of everyone timing out at the same time as the main waiter thread thread_args[t]->threadIndex = t; thread_args[t]->coordinator = coordinator; rc = pthread_create(&threads[t], NULL, WaiterThread, (void *)thread_args[t]); if (rc) { Log(error, INTERNAL_ERROR); Trace("ERROR: pthread_create failed in %s with error %d\n",__FILE__,rc); exit(-1); } } coordinator->nWaiters = Count; SetEvent(&(coordinator->evtStartWaiting.event)); // listen to our threads in no particular order while (((WaitAll && coordinator->numberTriggered < Count) || (!WaitAll && coordinator->numberTriggered == 0)) && rc == 0) { if (Milliseconds == INFINITE_WAIT) { if ((rc = pthread_cond_wait(&coordinator->condEventTriggered, &coordinator->mutexEventTriggered)) != 0) { break; // we either errored or timed out, go cleanup } } else { if ((rc = pthread_cond_timedwait(&coordinator->condEventTriggered, &coordinator->mutexEventTriggered, &ts)) != 0) { break; // we either errored or timed out, go cleanup } } // A handle fired. Check if we need to kep listening or head to return } coordinator->stopIssued = 1; pthread_mutex_unlock(&coordinator->mutexEventTriggered); // cleanup threads for (t = 0; t < Count; t++) { pthread_detach(threads[t]); } // free everything! SetEvent(&(coordinator->evtCanCleanUp.event)); free(threads); // we don't need handles on those threads anymore free(thread_args); // each thread has already got their copy and is in charge of freeing it // rc will be non-zero if we timed/errored out // retVal will be + threadIndex that fired first (e.g., WAIT_OBJECT_0 + 1, WAIT_ABANDONED + 2) if (rc) { retVal = rc; } else { retVal = (WaitAll) ? rc : results[0].retVal + results[0].threadIndex; } #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wanalyzer-malloc-leak" // Analyzer false positive: 'coordinator' is freed on a different thread. return retVal; #pragma GCC diagnostic pop } ProcDump-for-Linux-2.2/src/Logging.c000066400000000000000000000036571447614355600173420ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // A simple logging library for log generation and debugging // //-------------------------------------------------------------------- #include "Includes.h" static const char *LogLevelStrings[] = { "DEBUG", "INFO", "WARN", "CRITICAL", "ERROR" }; extern struct ProcDumpConfiguration g_config; pthread_mutex_t LoggerLock; void LogFormatter(enum LogLevel logLevel, const char *message, va_list args) { char timeBuff[64]; time_t rawTime; struct tm *timeInfo=NULL; char* trace=NULL; va_list copy; va_copy(copy, args); pthread_mutex_lock(&LoggerLock); rawTime = time(NULL); timeInfo = localtime(&rawTime); strftime(timeBuff, 64, "%T", timeInfo); int traceLen = snprintf(NULL, 0, "[%s - %s]: ", timeBuff, LogLevelStrings[logLevel]); int argsLen = vsnprintf(NULL, 0, message, copy); if(!(trace = malloc(traceLen+argsLen+1))) { pthread_mutex_unlock(&LoggerLock); va_end(copy); return; } sprintf(trace, "[%s - %s]: ", timeBuff, LogLevelStrings[logLevel]); vsprintf(trace+traceLen, message, args); // If a log entry is not 'debug' it simply goes to stdout. // If you want an entry to only go to the syslog, use 'debug' if(logLevel != debug) { puts(trace); } // All log entries also go to the syslog syslog(LOG_DEBUG, "%s", trace); va_end(copy); free(trace); pthread_mutex_unlock(&LoggerLock); } void Log(enum LogLevel logLevel, const char *message, ...) { va_list args; va_start(args, message); LogFormatter(logLevel, message, args); va_end(args); } void DiagTrace(const char *message, ...) { va_list args; va_start(args, message); if(g_config.DiagnosticsLoggingEnabled) LogFormatter(debug, message, args); va_end(args); } ProcDump-for-Linux-2.2/src/Monitor.c000066400000000000000000001775111447614355600174040ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // Monitor functions // //-------------------------------------------------------------------- #include "Includes.h" static pthread_t sig_thread_id; TAILQ_HEAD(, ConfigQueueEntry) configQueueHead; pthread_mutex_t queue_mutex; extern struct ProcDumpConfiguration g_config; extern struct ProcDumpConfiguration * target_config; extern sigset_t sig_set; //------------------------------------------------------------------------------------------------------ // // SignalThread - Thread for handling graceful Async signals (e.g., SIGINT, SIGTERM) // // Turn off address sanitation for this function as a result of a likely bug with pthread_cancel. The // incorrect error that the address sanitizer gives is: //==314250==AddressSanitizer CHECK failed: ../../../../src/libsanitizer/asan/asan_thread.cpp:367 "((ptr[0] == kCurrentStackFrameMagic)) != (0)" (0x0, 0x0) // #0 0x7f6cd0a30988 in AsanCheckFailed ../../../../src/libsanitizer/asan/asan_rtl.cpp:74 // #1 0x7f6cd0a5130e in __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) ../../../../src/libsanitizer/sanitizer_common/sanitizer_termination.cpp:78 // #2 0x7f6cd0a3610c in __asan::AsanThread::GetStackFrameAccessByAddr(unsigned long, __asan::AsanThread::StackFrameAccess*) ../../../../src/libsanitizer/asan/asan_thread.cpp:367 // #3 0x7f6cd09a0e9b in __asan::GetStackAddressInformation(unsigned long, unsigned long, __asan::StackAddressDescription*) ../../../../src/libsanitizer/asan/asan_descriptions.cpp:203 // #4 0x7f6cd09a22d8 in __asan::AddressDescription::AddressDescription(unsigned long, unsigned long, bool) ../../../../src/libsanitizer/asan/asan_descriptions.cpp:455 // #5 0x7f6cd09a22d8 in __asan::AddressDescription::AddressDescription(unsigned long, unsigned long, bool) ../../../../src/libsanitizer/asan/asan_descriptions.cpp:439 // #6 0x7f6cd09a4a84 in __asan::ErrorGeneric::ErrorGeneric(unsigned int, unsigned long, unsigned long, unsigned long, unsigned long, bool, unsigned long) ../../../../src/libsanitizer/asan/asan_errors.cpp:389 // #7 0x7f6cd0a2ffa5 in __asan::ReportGenericError(unsigned long, unsigned long, unsigned long, unsigned long, bool, unsigned long, unsigned int, bool) ../../../../src/libsanitizer/asan/asan_report.cpp:476 // #8 0x7f6cd09c6fe8 in __interceptor_sigaltstack ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:9986 // #9 0x7f6cd0a45867 in __sanitizer::UnsetAlternateSignalStack() ../../../../src/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp:195 // #10 0x7f6cd0a3560c in __asan::AsanThread::Destroy() ../../../../src/libsanitizer/asan/asan_thread.cpp:104 // #11 0x7f6cd07dc710 in __GI___nptl_deallocate_tsd nptl/nptl_deallocate_tsd.c:73 // #12 0x7f6cd07dc710 in __GI___nptl_deallocate_tsd nptl/nptl_deallocate_tsd.c:22 // #13 0x7f6cd07df9c9 in start_thread nptl/pthread_create.c:453 // #14 0x7f6cd08719ff (/lib/x86_64-linux-gnu/libc.so.6+0x1269ff) //------------------------------------------------------------------------------------------------------ __attribute__((no_sanitize("address"))) void *SignalThread(void *input) { Trace("SignalThread: Enter [id=%d]", gettid()); int sig_caught, rc; struct ConfigQueueEntry * item; if ((rc = sigwait(&sig_set, &sig_caught)) != 0) { Log(error, "Failed to wait on signal"); exit(-1); } switch (sig_caught) { case SIGINT: Trace("SignalThread: Got a SIGINT"); // In case of CTRL-C we need to iterate over all the outstanding monitors and handle them appropriately pthread_mutex_lock(&queue_mutex); TAILQ_FOREACH(item, &configQueueHead, element) { if(!IsQuit(item->config)) SetQuit(item->config, 1); if(item->config->gcorePid != NO_PID) { Log(info, "Shutting down gcore"); if((rc = kill(-item->config->gcorePid, SIGKILL)) != 0) { // pass negative PID to kill entire PGRP with value of gcore PID Log(error, "Failed to shutdown gcore."); } } // Need to make sure we detach from ptrace (if not attached it will silently fail) // To avoid situations where we have intercepted a signal and CTRL-C is hit, we synchronize // access to the signal path (in SignalMonitoringThread). Note, there is still a race but // acceptable since it is very unlikely to occur. We also cancel the SignalMonitorThread to // break it out of waitpid call. if(item->config->SignalNumber != -1) { for(int i=0; iconfig->nThreads; i++) { if(item->config->Threads[i].trigger == Signal) { pthread_mutex_lock(&item->config->ptrace_mutex); ptrace(PTRACE_DETACH, item->config->ProcessId, 0, 0); pthread_mutex_unlock(&item->config->ptrace_mutex); if ((rc = pthread_cancel(item->config->Threads[i].thread)) != 0) { Log(error, "An error occurred while cancelling SignalMonitorThread.\n"); exit(-1); } } } } } Log(info, "Quit"); SetQuit(&g_config, 1); // Make sure to signal the global config pthread_mutex_unlock(&queue_mutex); break; default: Trace("Unexpected signal %d", sig_caught); break; } Trace("SignalThread: Exit [id=%d]", gettid()); return NULL; } //-------------------------------------------------------------------- // // MonitorProcesses // MonitorProcess is the starting point of where the monitors get // created. It uses a list to store all the monitors that are active. // All monitors must go on this list as there are other places (for // example, SignalThread) that relies on all active monitors to be part // of the list. Any access to this list must be protected by queue_mutex. // //-------------------------------------------------------------------- void MonitorProcesses(struct ProcDumpConfiguration *self) { auto_free struct MonitoredProcessMapEntry* monitoredProcessMap = NULL; if (self->WaitingForProcessName) Log(info, "Waiting for processes '%s' to launch\n", self->ProcessName); if (self->bProcessGroup == true) Log(info, "Monitoring processes of PGID '%d'\n", self->ProcessGroup); // allocate list of configs for process monitoring TAILQ_INIT(&configQueueHead); int numMonitoredProcesses = 0; struct ConfigQueueEntry * item; // create binary map to track processes we have already tracked and closed int maxPid = GetMaximumPID(); if(maxPid < 0) { Log(error, INTERNAL_ERROR); Trace("Unable to get MAX_PID value\n"); return; } monitoredProcessMap = (struct MonitoredProcessMapEntry*) calloc(maxPid, sizeof(struct MonitoredProcessMapEntry)); if(!monitoredProcessMap) { Log(error, INTERNAL_ERROR); Trace("CreateMonitorThreads: failed to allocate memory for monitorProcessMap."); return; } // Create a signal handler thread where we handle shutdown as a result of SIGINT. // Note: We only create ONE per instance of procdump rather than per monitor. if((pthread_create(&sig_thread_id, NULL, SignalThread, (void *)self))!= 0) { Log(error, INTERNAL_ERROR); Trace("CreateMonitorThreads: failed to create SignalThread."); return; } Log(info, "Press Ctrl-C to end monitoring without terminating the process(es)."); if(!self->WaitingForProcessName && !self->bProcessGroup) { // // Monitoring single process (-p) // // // Make sure target process exists // // If we have a process name find it to make sure it exists if(self->ProcessName) { if(!LookupProcessByName(self->ProcessName)) { Log(error, "No process matching the specified name (%s) can be found.", self->ProcessName); return; } // Set the process ID so the monitor can target. self->ProcessId = LookupProcessPidByName(g_config.ProcessName); } else { if (self->ProcessId != NO_PID && LookupProcessByPid(self->ProcessId)) { self->ProcessName = GetProcessName(self->ProcessId); } else { Log(error, "No process matching the specified PID (%d) can be found.", self->ProcessId); return; } } item = (struct ConfigQueueEntry*)malloc(sizeof(struct ConfigQueueEntry)); if(item==NULL) { Log(error, INTERNAL_ERROR); Trace("MonitorProcesses: failed to allocate memory for item"); return; } item->config = CopyProcDumpConfiguration(self); if(item->config == NULL) { Log(error, INTERNAL_ERROR); Trace("MonitorProcesses: failed to alloc struct for process."); return; } // insert config into queue pthread_mutex_lock(&queue_mutex); TAILQ_INSERT_HEAD(&configQueueHead, item, element); monitoredProcessMap[item->config->ProcessId].active = true; pthread_mutex_unlock(&queue_mutex); // print config here PrintConfiguration(self); if(StartMonitor(self)!=0) { Trace("MonitorProcesses: Failed to start the monitor."); Log(error, "MonitorProcesses: Failed to start the monitor."); return; } WaitForAllMonitorsToTerminate(self); Log(info, "Stopping monitor for process %s (%d)", self->ProcessName, self->ProcessId); WaitForSignalThreadToTerminate(self); pthread_mutex_lock(&queue_mutex); TAILQ_REMOVE(&configQueueHead, item, element); monitoredProcessMap[item->config->ProcessId].active = false; pthread_mutex_unlock(&queue_mutex); FreeProcDumpConfiguration(item->config); free(item->config); free(item); } else { // print config here PrintConfiguration(self); do { // Multi process monitoring // If we are monitoring for PGID, validate the root process exists if(self->bProcessGroup && !LookupProcessByPgid(self->ProcessGroup)) { Log(error, "No process matching the specified PGID can be found."); PrintUsage(); return; } // Iterate over all running processes struct dirent ** nameList; int numEntries = scandir("/proc/", &nameList, FilterForPid, alphasort); for (int i = 0; i < numEntries; i++) { pid_t procPid; if(!ConvertToInt(nameList[i]->d_name, &procPid)) { continue; } if(self->bProcessGroup) { // We are monitoring a process group (-g) pid_t pgid = GetProcessPgid(procPid); if(pgid != NO_PID && pgid == self->ProcessGroup) { struct ProcessStat procStat; bool ret = GetProcessStat(procPid, &procStat); // Note: To solve the PID reuse case, we uniquely identify an entry via {PID}{starttime} if(ret && (monitoredProcessMap[procPid].active == false || monitoredProcessMap[procPid].starttime != procStat.starttime)) { // allocate for new queue entry item = (struct ConfigQueueEntry*)malloc(sizeof(struct ConfigQueueEntry)); if(item==NULL) { Log(error, INTERNAL_ERROR); Trace("MonitorProcesses: failed to allocate memory for item"); return; } item->config = CopyProcDumpConfiguration(self); if(item->config == NULL) { Log(error, INTERNAL_ERROR); Trace("MonitorProcesses: failed to alloc struct for process."); return; } // populate fields for this target item->config->ProcessId = procPid; item->config->ProcessName = GetProcessName(procPid); // insert config into queue pthread_mutex_lock(&queue_mutex); TAILQ_INSERT_HEAD(&configQueueHead, item, element); monitoredProcessMap[item->config->ProcessId].active = true; monitoredProcessMap[item->config->ProcessId].starttime = procStat.starttime; pthread_mutex_unlock(&queue_mutex); if(StartMonitor(item->config)!=0) { Log(error, INTERNAL_ERROR); Trace("MonitorProcesses: Failed to start the monitor."); return; } numMonitoredProcesses++; } } } else if(self->WaitingForProcessName) { // We are monitoring for a process name (-w) char *nameForPid = GetProcessName(procPid); // check to see if process name matches target if (nameForPid && strcmp(nameForPid, self->ProcessName) == 0) { struct ProcessStat procStat; bool ret = GetProcessStat(procPid, &procStat); // Note: To solve the PID reuse case, we uniquely identify an entry via {PID}{starttime} if(ret && (monitoredProcessMap[procPid].active == false || monitoredProcessMap[procPid].starttime != procStat.starttime)) { // allocate for new queue entry item = (struct ConfigQueueEntry*)malloc(sizeof(struct ConfigQueueEntry)); if(item==NULL) { Log(error, INTERNAL_ERROR); Trace("MonitorProcesses: failed to allocate memory for item"); return; } item->config = CopyProcDumpConfiguration(self); if(item->config == NULL) { Log(error, INTERNAL_ERROR); Trace("MonitorProcesses: failed to alloc struct for named process."); return; } // populate fields for this target item->config->ProcessId = procPid; item->config->ProcessName = strdup(nameForPid); // insert config into queue pthread_mutex_lock(&queue_mutex); TAILQ_INSERT_HEAD(&configQueueHead, item, element); monitoredProcessMap[item->config->ProcessId].active = true; monitoredProcessMap[item->config->ProcessId].starttime = procStat.starttime; pthread_mutex_unlock(&queue_mutex); if(StartMonitor(item->config)!=0) { Log(error, INTERNAL_ERROR); Trace("MonitorProcesses: Failed to start the monitor."); return; } numMonitoredProcesses++; } } } } // clean up namelist for (int i = 0; i < numEntries; i++) { free(nameList[i]); } if(numEntries!=-1) { free(nameList); } // cleanup process configs for child processes that have exited or for monitors that have captured N dumps pthread_mutex_lock(&queue_mutex); // TALQ_FOREACH does not support changing the list while iterating. // We use a seperate delete list instead. int count = 0; TAILQ_FOREACH(item, &configQueueHead, element) { count++; } struct ConfigQueueEntry** deleteList = (struct ConfigQueueEntry**) malloc(count*(sizeof(struct ConfigQueueEntry*))); if(deleteList == NULL) { Log(error, INTERNAL_ERROR); Trace("WriteCoreDumpInternal: failed to allocate memory for deleteList"); return; } count = 0; // Iterate over the queue and store the items to delete TAILQ_FOREACH(item, &configQueueHead, element) { // The conditions under which we stop monitoring a process are: // 1. Process has been terminated // 2. The monitoring thread has exited // 3. The monitor has collected the required number of dumps if(item->config->bTerminated || item->config->nQuit || item->config->NumberOfDumpsCollected == item->config->NumberOfDumpsToCollect) { Log(info, "Stopping monitors for process: %s (%d)", item->config->ProcessName, item->config->ProcessId); WaitForAllMonitorsToTerminate(item->config); deleteList[count++] = item; numMonitoredProcesses--; } } // Iterate over the delete list and actually delete the items from the queue for(int i=0; iconfig); free(deleteList[i]->config); TAILQ_REMOVE(&configQueueHead, deleteList[i], element); free(deleteList[i]); } free(deleteList); pthread_mutex_unlock(&queue_mutex); // Exit if we are monitoring PGID and there are no more processes to monitor. // If we are monitoring for processes based on a process name we keep monitoring if(numMonitoredProcesses == 0 && self->WaitingForProcessName == false) { break; } // Wait for the polling interval the user specified before we check again sleep(g_config.PollingInterval / 1000); // We keep iterating while we have processes to monitor (in case of -g ) or if process name has // been specified (-w) in which case we keep monitoring until CTRL-C or finally if we have a quit signal. } while ((numMonitoredProcesses >= 0 || self->WaitingForProcessName == true) && !IsQuit(&g_config)); // cleanup monitoring queue pthread_mutex_lock(&queue_mutex); int count = 0; TAILQ_FOREACH(item, &configQueueHead, element) { count++; } struct ConfigQueueEntry** deleteList = (struct ConfigQueueEntry**) malloc(count*(sizeof(struct ConfigQueueEntry*))); if(deleteList == NULL) { Log(error, INTERNAL_ERROR); Trace("WriteCoreDumpInternal: failed to allocate memory for deleteList"); return; } count = 0; TAILQ_FOREACH(item, &configQueueHead, element) { SetQuit(item->config, 1); WaitForAllMonitorsToTerminate(item->config); deleteList[count++] = item; } // Iterate over the delete list and actually delete the items from the queue for(int i=0; iconfig); TAILQ_REMOVE(&configQueueHead, deleteList[i], element); free(deleteList[i]); } free(deleteList); pthread_mutex_unlock(&queue_mutex); free(target_config); } } //-------------------------------------------------------------------- // // MonitorDotNet - Returns true if we are monitoring a dotnet process // //-------------------------------------------------------------------- bool MonitorDotNet(struct ProcDumpConfiguration *self) { if(self->bDumpOnException || self->bMonitoringGCMemory || self->DumpGCGeneration != -1) { return true; } return false; } //-------------------------------------------------------------------- // // CreateMonitorThreads - Create each of the threads that will be running as a trigger // //-------------------------------------------------------------------- int CreateMonitorThreads(struct ProcDumpConfiguration *self) { int rc = 0; self->nThreads = 0; bool tooManyTriggers = false; // create threads if (MonitorDotNet(self) == true) { if (self->nThreads < MAX_TRIGGERS) { if ((rc = pthread_create(&self->Threads[self->nThreads].thread, NULL, DotNetMonitoringThread, (void *)self)) != 0) { Trace("CreateMonitorThreads: failed to create DotNetMonitoringThread."); return rc; } self->Threads[self->nThreads].trigger = Exception; self->nThreads++; } else { tooManyTriggers = true; } } if (self->CpuThreshold != -1) { if (self->nThreads < MAX_TRIGGERS) { if ((rc = pthread_create(&self->Threads[self->nThreads].thread, NULL, CpuMonitoringThread, (void *)self)) != 0) { Trace("CreateMonitorThreads: failed to create CpuThread."); return rc; } self->Threads[self->nThreads].trigger = Processor; self->nThreads++; } else { tooManyTriggers = true; } } if (self->MemoryThreshold != NULL && !tooManyTriggers && self->bMonitoringGCMemory == false) { if (self->nThreads < MAX_TRIGGERS) { if ((rc = pthread_create(&self->Threads[self->nThreads].thread, NULL, CommitMonitoringThread, (void *)self)) != 0) { Trace("CreateMonitorThreads: failed to create CommitThread."); return rc; } self->Threads[self->nThreads].trigger = Commit; self->nThreads++; } else { tooManyTriggers = true; } } if (self->ThreadThreshold != -1 && !tooManyTriggers) { if (self->nThreads < MAX_TRIGGERS) { if ((rc = pthread_create(&self->Threads[self->nThreads].thread, NULL, ThreadCountMonitoringThread, (void *)self)) != 0) { Trace("CreateMonitorThreads: failed to create ThreadThread."); return rc; } self->Threads[self->nThreads].trigger = ThreadCount; self->nThreads++; } else { tooManyTriggers = true; } } if (self->FileDescriptorThreshold != -1 && !tooManyTriggers) { if (self->nThreads < MAX_TRIGGERS) { if ((rc = pthread_create(&self->Threads[self->nThreads].thread, NULL, FileDescriptorCountMonitoringThread, (void *)self)) != 0) { Trace("CreateMonitorThreads: failed to create FileDescriptorThread."); return rc; } self->Threads[self->nThreads].trigger = FileDescriptorCount; self->nThreads++; } else { tooManyTriggers = true; } } if (self->SignalNumber != -1 && !tooManyTriggers) { if ((rc = pthread_create(&self->Threads[self->nThreads].thread, NULL, SignalMonitoringThread, (void *)self)) != 0) { Trace("CreateMonitorThreads: failed to create SignalMonitoringThread."); return rc; } self->Threads[self->nThreads].trigger = Signal; self->nThreads++; } if (self->bTimerThreshold && !tooManyTriggers) { if (self->nThreads < MAX_TRIGGERS) { if ((rc = pthread_create(&self->Threads[self->nThreads].thread, NULL, TimerThread, (void *)self)) != 0) { Trace("CreateMonitorThreads: failed to create TimerThread."); return rc; } self->Threads[self->nThreads].trigger = Timer; self->nThreads++; } else { tooManyTriggers = true; } } if (tooManyTriggers) { Log(error, "Too many triggers. ProcDump only supports up to %d triggers.", MAX_TRIGGERS); return -1; } return 0; } //-------------------------------------------------------------------- // // StartMonitor // Creates the monitoring threads and begins the monitor based on // the configuration passed in. In the case of exception monitoring // we inject the monitor into the target process. // //-------------------------------------------------------------------- int StartMonitor(struct ProcDumpConfiguration* monitorConfig) { int ret = 0; if(CreateMonitorThreads(monitorConfig) != 0) { Log(error, INTERNAL_ERROR); Trace("StartMonitor: failed to create trigger threads."); return -1; } if(BeginMonitoring(monitorConfig) == false) { Log(error, INTERNAL_ERROR); Trace("StartMonitor: failed to start monitoring."); return -1; } Log(info, "Starting monitor for process %s (%d)", monitorConfig->ProcessName, monitorConfig->ProcessId); return ret; } //-------------------------------------------------------------------- // // WaitForQuit - Wait for Quit Event or just timeout // // Timed wait with awareness of quit event // // Returns: WAIT_OBJECT_0 - Quit triggered // WAIT_TIMEOUT - Timeout // WAIT_ABANDONED - At dump limit or terminated // //-------------------------------------------------------------------- int WaitForQuit(struct ProcDumpConfiguration *self, int milliseconds) { if (!ContinueMonitoring(self)) { return WAIT_ABANDONED; } int wait = WaitForSingleObject(&self->evtQuit, milliseconds); if ((wait == WAIT_TIMEOUT) && !ContinueMonitoring(self)) { return WAIT_ABANDONED; } return wait; } //-------------------------------------------------------------------- // // WaitForQuitOrEvent - Wait for Quit Event, an Event, or just timeout // // Use to wait for dumps to complete, yet be aware of quit or finished events // // Returns: WAIT_OBJECT_0 - Quit triggered // WAIT_OBJECT_0+1 - Event triggered // WAIT_TIMEOUT - Timeout // WAIT_ABANDONED - (Abandonded) At dump limit or terminated // //-------------------------------------------------------------------- int WaitForQuitOrEvent(struct ProcDumpConfiguration *self, struct Handle *handle, int milliseconds) { struct Handle *waits[2]; waits[0] = &self->evtQuit; waits[1] = handle; if (!ContinueMonitoring(self)) { return WAIT_ABANDONED; } int wait = WaitForMultipleObjects(2, waits, false, milliseconds); if ((wait == WAIT_TIMEOUT) && !ContinueMonitoring(self)) { return WAIT_ABANDONED; } if ((wait == WAIT_OBJECT_0) && !ContinueMonitoring(self)) { return WAIT_ABANDONED; } return wait; } //-------------------------------------------------------------------- // // WaitForAllMonitorsToTerminate - Wait for all monitors to terminate // //-------------------------------------------------------------------- int WaitForAllMonitorsToTerminate(struct ProcDumpConfiguration *self) { int rc = 0; // Wait for the other monitoring threads for (int i = 0; i < self->nThreads; i++) { if ((rc = pthread_join(self->Threads[i].thread, NULL)) != 0) { Log(error, "An error occurred while joining threads\n"); exit(-1); } } return rc; } //-------------------------------------------------------------------- // // WaitForSignalThreadToTerminate - Wait for signal handler thread to terminate // //-------------------------------------------------------------------- int WaitForSignalThreadToTerminate(struct ProcDumpConfiguration *self) { int rc = 0; // Cancel the signal handling thread. // We dont care about the return since the signal thread might already be gone. pthread_cancel(sig_thread_id); // Wait for signal handling thread to complete if ((rc = pthread_join(sig_thread_id, NULL)) != 0) { Log(error, "An error occurred while joining SignalThread.\n"); exit(-1); } return rc; } //-------------------------------------------------------------------- // // IsQuit - A check on the underlying value of whether we should quit // //-------------------------------------------------------------------- bool IsQuit(struct ProcDumpConfiguration *self) { return (self->nQuit != 0); } //-------------------------------------------------------------------- // // SetQuit - Sets the quit value and signals the event // //-------------------------------------------------------------------- int SetQuit(struct ProcDumpConfiguration *self, int quit) { self->nQuit = quit; SetEvent(&self->evtQuit.event); return self->nQuit; } //-------------------------------------------------------------------- // // ContinueMonitoring - Should we keep monitoring or should we clean up our thread // //-------------------------------------------------------------------- bool ContinueMonitoring(struct ProcDumpConfiguration *self) { // Have we reached the dump limit? if (self->NumberOfDumpsCollected >= self->NumberOfDumpsToCollect) { return false; } // Do we already know the process is terminated? if (self->bTerminated) { return false; } // check if any process are running with PGID if(self->bProcessGroup && kill(-1 * self->ProcessGroup, 0)) { self->bTerminated = true; return false; } // Let's check to make sure the process is still alive then // note: kill([pid], 0) doesn't send a signal but does perform error checking // therefore, if it returns 0, the process is still alive, -1 means it errored out if (self->ProcessId != NO_PID && kill(self->ProcessId, 0)) { self->bTerminated = true; Log(warn, "Target process %d is no longer alive", self->ProcessId); return false; } // Otherwise, keep going! return true; } //-------------------------------------------------------------------- // // BeginMonitoring - Sync up monitoring threads // //-------------------------------------------------------------------- bool BeginMonitoring(struct ProcDumpConfiguration *self) { return SetEvent(&(self->evtStartMonitoring.event)); } extern long HZ; // clock ticks per second //-------------------------------------------------------------------- // // CommitMonitoringThread - Thread monitoring for memory consumption // //-------------------------------------------------------------------- void *CommitMonitoringThread(void *thread_args /* struct ProcDumpConfiguration* */) { Trace("CommitMonitoringThread: Enter [id=%d]", gettid()); struct ProcDumpConfiguration *config = (struct ProcDumpConfiguration *)thread_args; long pageSize_kb; unsigned long memUsage = 0; struct ProcessStat proc = {0}; int rc = 0; auto_free struct CoreDumpWriter *writer = NULL; writer = NewCoreDumpWriter(COMMIT, config); pageSize_kb = sysconf(_SC_PAGESIZE) >> 10; // convert bytes to kilobytes (2^10) if ((rc = WaitForQuitOrEvent(config, &config->evtStartMonitoring, INFINITE_WAIT)) == WAIT_OBJECT_0 + 1) { while ((rc = WaitForQuit(config, config->PollingInterval)) == WAIT_TIMEOUT) { if (GetProcessStat(config->ProcessId, &proc)) { // Calc Commit memUsage = (proc.rss * pageSize_kb) >> 10; // get Resident Set Size memUsage += (proc.nswap * pageSize_kb) >> 10; // get Swap size // Commit Trigger if ((config->bMemoryTriggerBelowValue && (memUsage < config->MemoryThreshold[config->MemoryCurrentThreshold])) || (!config->bMemoryTriggerBelowValue && (memUsage >= config->MemoryThreshold[config->MemoryCurrentThreshold]))) { Log(info, "Trigger: Commit usage:%ldMB on process ID: %d", memUsage, config->ProcessId); rc = WriteCoreDump(writer); if(rc != 0) { SetQuit(config, 1); } config->MemoryCurrentThreshold++; if ((rc = WaitForQuit(config, config->ThresholdSeconds * 1000)) != WAIT_TIMEOUT) { break; } } } else { Log(error, "An error occurred while parsing procfs\n"); exit(-1); } } } Trace("CommitMonitoringThread: Exit [id=%d]", gettid()); return NULL; } //-------------------------------------------------------------------- // // ThreadCountMonitoringThread - Thread monitoring for thread count // //-------------------------------------------------------------------- void* ThreadCountMonitoringThread(void *thread_args /* struct ProcDumpConfiguration* */) { Trace("ThreadCountMonitoringThread: Enter [id=%d]", gettid()); struct ProcDumpConfiguration *config = (struct ProcDumpConfiguration *)thread_args; struct ProcessStat proc = {0}; int rc = 0; auto_free struct CoreDumpWriter *writer = NULL; writer = NewCoreDumpWriter(THREAD, config); if ((rc = WaitForQuitOrEvent(config, &config->evtStartMonitoring, INFINITE_WAIT)) == WAIT_OBJECT_0 + 1) { while ((rc = WaitForQuit(config, config->PollingInterval)) == WAIT_TIMEOUT) { if (GetProcessStat(config->ProcessId, &proc)) { if (proc.num_threads >= config->ThreadThreshold) { Log(info, "Trigger: Thread count:%ld on process ID: %d", proc.num_threads, config->ProcessId); rc = WriteCoreDump(writer); if(rc != 0) { SetQuit(config, 1); } if ((rc = WaitForQuit(config, config->ThresholdSeconds * 1000)) != WAIT_TIMEOUT) { break; } } } else { Log(error, "An error occurred while parsing procfs\n"); exit(-1); } } } Trace("ThreadCountMonitoringThread: Exit [id=%d]", gettid()); return NULL; } //-------------------------------------------------------------------- // // FileDescriptorCountMonitoringThread - Thread monitoring for file // descriptor count // //-------------------------------------------------------------------- void* FileDescriptorCountMonitoringThread(void *thread_args /* struct ProcDumpConfiguration* */) { Trace("FileDescriptorCountMonitoringThread: Enter [id=%d]", gettid()); struct ProcDumpConfiguration *config = (struct ProcDumpConfiguration *)thread_args; struct ProcessStat proc = {0}; int rc = 0; auto_free struct CoreDumpWriter *writer = NULL; writer = NewCoreDumpWriter(FILEDESC, config); if ((rc = WaitForQuitOrEvent(config, &config->evtStartMonitoring, INFINITE_WAIT)) == WAIT_OBJECT_0 + 1) { while ((rc = WaitForQuit(config, config->PollingInterval)) == WAIT_TIMEOUT) { if (GetProcessStat(config->ProcessId, &proc)) { if (proc.num_filedescriptors >= config->FileDescriptorThreshold) { Log(info, "Trigger: File descriptors:%ld on process ID: %d", proc.num_filedescriptors, config->ProcessId); rc = WriteCoreDump(writer); if(rc != 0) { SetQuit(config, 1); } if ((rc = WaitForQuit(config, config->ThresholdSeconds * 1000)) != WAIT_TIMEOUT) { break; } } } else { Log(error, "An error occurred while parsing procfs\n"); exit(-1); } } } Trace("FileDescriptorCountMonitoringThread: Exit [id=%d]", gettid()); return NULL; } // // This thread monitors for a specific signal to be sent to target process. // It uses ptrace (PTRACE_SEIZE) and once the signal with the corresponding // signal number is intercepted, it detaches from the target process in a stopped state // followed by invoking gcore to generate the dump. Once completed, a SIGCONT followed by the // original signal is sent to the target process. Signals of non-interest are simply forwarded // to the target process. // // Polling interval has no meaning during signal monitoring. // void* SignalMonitoringThread(void *thread_args /* struct ProcDumpConfiguration* */) { Trace("SignalMonitoringThread: Enter [id=%d]", gettid()); struct ProcDumpConfiguration *config = (struct ProcDumpConfiguration *)thread_args; int wstatus; int signum=-1; int rc = 0; int dumpStatus = 0; auto_free struct CoreDumpWriter *writer = NULL; writer = NewCoreDumpWriter(SIGNAL, config); if ((rc = WaitForQuitOrEvent(config, &config->evtStartMonitoring, INFINITE_WAIT)) == WAIT_OBJECT_0 + 1) { // Attach to the target process. We use SEIZE here to avoid // the SIGSTOP issues of the ATTACH method. if (ptrace(PTRACE_SEIZE, config->ProcessId, NULL, NULL) == -1) { Log(error, "Unable to PTRACE the target process"); } else { while(1) { // Wait for signal to be delivered waitpid(config->ProcessId, &wstatus, 0); if(WIFEXITED(wstatus) || WIFSIGNALED(wstatus)) { ptrace(PTRACE_DETACH, config->ProcessId, 0, 0); break; } pthread_mutex_lock(&config->ptrace_mutex); // We are now in a signal-stop state signum = WSTOPSIG(wstatus); if(signum == config->SignalNumber) { // We have to detach in a STOP state so we can invoke gcore if(ptrace(PTRACE_DETACH, config->ProcessId, 0, SIGSTOP) == -1) { Log(error, "Unable to PTRACE (DETACH) the target process"); pthread_mutex_unlock(&config->ptrace_mutex); break; } // Write core dump Log(info, "Trigger: Signal:%d on process ID: %d", signum, config->ProcessId); dumpStatus = WriteCoreDump(writer); if(dumpStatus != 0) { SetQuit(config, 1); } kill(config->ProcessId, SIGCONT); if(config->NumberOfDumpsCollected >= config->NumberOfDumpsToCollect) { // If we are over the max number of dumps to collect, send the original signal we intercepted. kill(config->ProcessId, signum); pthread_mutex_unlock(&config->ptrace_mutex); break; } ptrace(PTRACE_CONT, config->ProcessId, NULL, signum); // Re-attach to the target process if (ptrace(PTRACE_SEIZE, config->ProcessId, NULL, NULL) == -1) { Log(error, "Unable to PTRACE the target process"); pthread_mutex_unlock(&config->ptrace_mutex); break; } pthread_mutex_unlock(&config->ptrace_mutex); continue; } // Resume execution of the target process ptrace(PTRACE_CONT, config->ProcessId, NULL, signum); pthread_mutex_unlock(&config->ptrace_mutex); if(dumpStatus != 0) { break; } } } } Trace("SignalMonitoringThread: Exit [id=%d]", gettid()); return NULL; } //-------------------------------------------------------------------- // // CpuMonitoringThread - Thread monitoring for CPU usage. // //-------------------------------------------------------------------- void *CpuMonitoringThread(void *thread_args /* struct ProcDumpConfiguration* */) { Trace("CpuMonitoringThread: Enter [id=%d]", gettid()); struct ProcDumpConfiguration *config = (struct ProcDumpConfiguration *)thread_args; unsigned long totalTime = 0; unsigned long elapsedTime = 0; struct sysinfo sysInfo; int cpuUsage; auto_free struct CoreDumpWriter *writer = NULL; writer = NewCoreDumpWriter(CPU, config); int rc = 0; struct ProcessStat proc = {0}; if ((rc = WaitForQuitOrEvent(config, &config->evtStartMonitoring, INFINITE_WAIT)) == WAIT_OBJECT_0 + 1) { while ((rc = WaitForQuit(config, config->PollingInterval)) == WAIT_TIMEOUT) { sysinfo(&sysInfo); if (GetProcessStat(config->ProcessId, &proc)) { // Calc CPU totalTime = (unsigned long)((proc.utime + proc.stime) / HZ); elapsedTime = (unsigned long)(sysInfo.uptime - (long)(proc.starttime / HZ)); cpuUsage = (int)(100 * ((double)totalTime / elapsedTime)); // CPU Trigger if ((config->bCpuTriggerBelowValue && (cpuUsage < config->CpuThreshold)) || (!config->bCpuTriggerBelowValue && (cpuUsage >= config->CpuThreshold))) { Log(info, "Trigger: CPU usage:%d%% on process ID: %d", cpuUsage, config->ProcessId); rc = WriteCoreDump(writer); if(rc != 0) { SetQuit(config, 1); } if ((rc = WaitForQuit(config, config->ThresholdSeconds * 1000)) != WAIT_TIMEOUT) { break; } } } else { Log(error, "An error occurred while parsing procfs\n"); exit(-1); } } } Trace("CpuTCpuMonitoringThread: Exit [id=%d]", gettid()); return NULL; } //-------------------------------------------------------------------- // // TimerThread - Thread that creates dumps based on specified timer // interval. // //-------------------------------------------------------------------- void *TimerThread(void *thread_args /* struct ProcDumpConfiguration* */) { Trace("TimerThread: Enter [id=%d]", gettid()); struct ProcDumpConfiguration *config = (struct ProcDumpConfiguration *)thread_args; auto_free struct CoreDumpWriter *writer = NULL; writer = NewCoreDumpWriter(TIME, config); int rc = 0; if ((rc = WaitForQuitOrEvent(config, &config->evtStartMonitoring, INFINITE_WAIT)) == WAIT_OBJECT_0 + 1) { while ((rc = WaitForQuit(config, 0)) == WAIT_TIMEOUT) { Log(info, "Trigger: Timer:%ld(s) on process ID: %d", config->PollingInterval/1000, config->ProcessId); rc = WriteCoreDump(writer); if(rc != 0) { SetQuit(config, 1); } if ((rc = WaitForQuit(config, config->ThresholdSeconds * 1000)) != WAIT_TIMEOUT) { break; } } } Trace("TimerThread: Exit [id=%d]", gettid()); return NULL; } //-------------------------------------------------------------------- // // DotNetMonitoringThread - Thread that creates dumps based on // dotnet triggers. // // NOTE: .NET only. // NOTE: At the moment, .NET triggers are mutually exclusive meaning // only one can be specified at a time. For example, you cannot specify // both exception based monitoring and GC based monitoring. // //-------------------------------------------------------------------- void *DotNetMonitoringThread(void *thread_args /* struct ProcDumpConfiguration* */) { Trace("DotNetMonitoringThread: Enter [id=%d]", gettid()); struct ProcDumpConfiguration *config = (struct ProcDumpConfiguration *)thread_args; auto_free char* fullDumpPath = NULL; auto_cancel_thread pthread_t waitForProfilerCompletion = -1; auto_free char* clientData = NULL; int rc = 0; if ((rc = WaitForQuitOrEvent(config, &config->evtStartMonitoring, INFINITE_WAIT)) == WAIT_OBJECT_0 + 1) { if(config->CoreDumpName == NULL) { // We don't have a dump name so we just use the path (append a '/' to indicate its a base path) if(config->CoreDumpPath[strlen(config->CoreDumpPath)-1] != '/') { fullDumpPath = malloc(strlen(config->CoreDumpPath) + 2); // +1 = '\0', +1 = '/' if(fullDumpPath == NULL) { Trace("DotNetMonitoringThread: Failed to allocate memory."); return NULL; } snprintf(fullDumpPath, strlen(config->CoreDumpPath) + 2, "%s/", config->CoreDumpPath); } else { fullDumpPath = malloc(strlen(config->CoreDumpPath) + 1); if(fullDumpPath == NULL) { Trace("DotNetMonitoringThread: Failed to allocate memory."); return NULL; } snprintf(fullDumpPath, strlen(config->CoreDumpPath) + 1, "%s", config->CoreDumpPath); } } else { // We have a dump name, let's append to dump path if(config->CoreDumpPath[strlen(config->CoreDumpPath)] != '/') { fullDumpPath = malloc(strlen(config->CoreDumpPath) + strlen(config->CoreDumpName) + 2); // +1 = '\0', +1 = '/' if(fullDumpPath == NULL) { Trace("DotNetMonitoringThread: Failed to allocate memory."); return NULL; } snprintf(fullDumpPath, strlen(config->CoreDumpPath) + strlen(config->CoreDumpName) + 2, "%s/%s", config->CoreDumpPath, config->CoreDumpName); } else { fullDumpPath = malloc(strlen(config->CoreDumpPath) + strlen(config->CoreDumpName) + 1); // +1 = '\0', +1 = '/' if(fullDumpPath == NULL) { Trace("DotNetMonitoringThread: Failed to allocate memory."); return NULL; } snprintf(fullDumpPath, strlen(config->CoreDumpPath) + strlen(config->CoreDumpName) + 1, "%s%s", config->CoreDumpPath, config->CoreDumpName); } } // Create thread to wait for profiler completion if ((pthread_create(&waitForProfilerCompletion, NULL, WaitForProfilerCompletion, (void *) config)) != 0) { Trace("DotNetMonitoringThread: failed to create WaitForProfilerCompletion thread."); return NULL; } // Wait for the socket to be available from WaitForProfilerCompletion thread pthread_mutex_lock(&config->dotnetMutex); while(!config->bSocketInitialized) { pthread_cond_wait(&config->dotnetCond, &config->dotnetMutex); } pthread_mutex_unlock(&config->dotnetMutex); // Get the corresponding client data to be sent to profiler clientData = GetClientData(config, fullDumpPath); if(clientData == NULL) { Trace("DotNetMonitoringThread: Failed to get client data."); return NULL; } // Inject the profiler into the target process if(InjectProfiler(config->ProcessId, clientData)!=0) { Trace("DotNetMonitoringThread: Failed to inject the profiler."); pthread_cancel(waitForProfilerCompletion); } pthread_join(waitForProfilerCompletion, NULL); } Trace("DotNetMonitoringThread: Exit [id=%d]", gettid()); return NULL; } //------------------------------------------------------------------------------------- // // GetClientData // // Gets the client data string depending on which triggers were requested in the // specified config. // //------------------------------------------------------------------------------------- char* GetClientData(struct ProcDumpConfiguration *self, char* fullDumpPath) { Trace("GetClientData: Entering GetClientData"); char* clientData = NULL; auto_free char* exceptionFilter = NULL; auto_free char* thresholds = NULL; if(self->bDumpOnException) { // exception_trigger;;;:;:,... exceptionFilter = GetEncodedExceptionFilter(self->ExceptionFilter, self->NumberOfDumpsToCollect); if(exceptionFilter == NULL) { Trace("GetClientData: Failed to get exception filter."); return NULL; } clientData = GetClientDataHelper(Exception, fullDumpPath, "%s", exceptionFilter); if(clientData == NULL) { Trace("GetClientData: Failed to get client data (-e)."); return NULL; } } else if (self->bMonitoringGCMemory) { // GC Memory trigger (-gcm);;;Generation:Threshold1;Threshold2,... thresholds = GetThresholds(self); if(thresholds == NULL) { Trace("GetClientData: Failed to get thresholds."); return NULL; } clientData = GetClientDataHelper(GCThreshold, fullDumpPath, "%d;%s", self->DumpGCGeneration == -1 ? CUMULATIVE_GC_SIZE : self->DumpGCGeneration, thresholds); if(clientData == NULL) { Trace("GetClientData: Failed to get client data (-gcm)."); return NULL; } } else if(self->DumpGCGeneration != -1 && self->MemoryThreshold == NULL) { // GC Generation (-gcgen);;;GCGeneration clientData = GetClientDataHelper(GCGeneration, fullDumpPath, "%d", self->DumpGCGeneration); if(clientData == NULL) { Trace("GetClientData: Failed to get client data (-gcgen)."); return NULL; } } else { Trace("GetClientData: Invalid trigger specified"); return NULL; } Trace("GetClientData: Exiting GetClientData"); return clientData; } //------------------------------------------------------------------------------------- // // GetClientDataHelper // // Helper that fetches client data based on format specified. // //------------------------------------------------------------------------------------- char* GetClientDataHelper(enum TriggerType triggerType, char* path, const char* format, ...) { unsigned int clientDataSize = 0; unsigned int clientDataPrefixSize = 0; char* clientData = NULL; va_list args; va_start(args, format); clientDataPrefixSize = snprintf(NULL, 0, "%d;%s;%d;", triggerType, path, getpid()); va_list args_copy; va_copy(args_copy, args); clientDataSize = clientDataPrefixSize + vsnprintf(NULL, 0, format, args_copy) + 1; va_end(args_copy); clientData = malloc(clientDataSize); if(clientData == NULL) { Trace("GetClientDataHelper: Failed to allocate memory for client data."); va_end(args); return NULL; } sprintf(clientData, "%d;%s;%d;", triggerType, path, getpid()); vsprintf(clientData+clientDataPrefixSize, format, args); va_end(args); return clientData; } //------------------------------------------------------------------------------------- // // GetThresholds // // Returns a ; separated string of GC mem thresholds specified in // self->MemoryThreshold // //------------------------------------------------------------------------------------- // On GCC 11 it generates a false positive leak for thresholds. #if (__GNUC__ >= 11 && __GNUC__ < 12) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wanalyzer-malloc-leak" #endif char* GetThresholds(struct ProcDumpConfiguration *self) { Trace("GetThresholds: Entering GetThresholds"); int thresholdLen = 0; char* thresholds = NULL; for(int i = 0; i < self->MemoryThresholdCount; i++) { thresholdLen += snprintf(NULL, 0, "%d", self->MemoryThreshold[i]); if(i != self->MemoryThresholdCount - 1) { thresholdLen++; // Comma } } thresholdLen++; // NULL terminator thresholds = malloc(thresholdLen); if(thresholds != NULL) { char* writePos = thresholds; if(thresholds != NULL) { for(int i = 0; i < self->MemoryThresholdCount; i++) { int len = snprintf(writePos, thresholdLen, "%d", self->MemoryThreshold[i]); writePos += len; thresholdLen -= len; if(i != self->MemoryThresholdCount - 1) { *writePos = ';'; writePos++; thresholdLen--; } } } *(writePos) = '\0'; } Trace("GetThresholds: Exiting GetThresholds"); return thresholds; } #if (__GNUC__ >= 11 && __GNUC__ < 12) #pragma GCC diagnostic pop #endif //------------------------------------------------------------------------------------- // // WaitForProfilerCompletion // // Waits for profiler to send a status on (/procdump-status-). // Status is in the form of: // <[uint]payload_len><[byte] 0=failure, 1=success><[uint] dumpfile_path_len><[char*]Dumpfile path> // // Where the failure byte is interpreted as following: // '0' - Dump with the given path failed to generate // '1' - Dump with the given path was generated // 'F' - Profiler encountered an error and unloaded itself (path not applicable) // 'H' - Profiler pinging to see if procdump is still running (path not applicable) // // The socket created is in the form: /procdump-status-- // //------------------------------------------------------------------------------------- void *WaitForProfilerCompletion(void *thread_args /* struct ProcDumpConfiguration* */) { Trace("WaitForProfilerCompletion: Enter [id=%d]", gettid()); struct ProcDumpConfiguration *config = (struct ProcDumpConfiguration *)thread_args; unsigned int t, s2; struct sockaddr_un local, remote; int len; pthread_t processMonitor = -1; auto_free char* tmpFolder = NULL; auto_free_fd int s=-1; tmpFolder = GetSocketPath("procdump/procdump-status-", getpid(), config->ProcessId); config->socketPath = tmpFolder; Trace("WaitForProfilerCompletion: Status socket path: %s", tmpFolder); if((s = socket(AF_UNIX, SOCK_STREAM, 0))==-1) { Trace("WaitForProfilerCompletion: Failed to create socket\n"); unlink(tmpFolder); config->socketPath = NULL; return NULL; } local.sun_family = AF_UNIX; strcpy(local.sun_path, tmpFolder); unlink(local.sun_path); len = strlen(local.sun_path) + sizeof(local.sun_family); if(bind(s, (struct sockaddr *)&local, len)==-1) { Trace("WaitForProfilerCompletion: Failed to bind to socket\n"); unlink(tmpFolder); config->socketPath = NULL; return NULL; } // // Change perms on the socket to be read/write for 'others' since the profiler is loaded into // an unknown user process // chmod(tmpFolder, 0777); // // Create a thread that will monitor for abnormal process terminations of the target process. // In case of an abnormal process termination, it cancels the socket that procdump is waiting on // for status from target process and we can exit promptly. // config->statusSocket = s; if ((pthread_create(&processMonitor, NULL, ProcessMonitor, (void *) config)) != 0) { Trace("WaitForProfilerCompletion: failed to create ProcessMonitor thread."); unlink(tmpFolder); config->socketPath = NULL; return NULL; } // // Since the profiler callbacks can be invoked concurrently, we can also have X number of // pending status calls to ProcDump. We cap this to 50 by default which should be plenty for most // scenarios // if(listen(s, MAX_PROFILER_CONNECTIONS)==-1) { Trace("WaitForProfilerCompletion: Failed to listen on socket\n"); unlink(tmpFolder); config->socketPath = NULL; ExitProcessMonitor(config, processMonitor); return NULL; } // // Notify that the socket is now available for the target process to communicate with // pthread_mutex_lock(&config->dotnetMutex); config->bSocketInitialized = true; pthread_cond_signal(&config->dotnetCond); pthread_mutex_unlock(&config->dotnetMutex); while(true) { Trace("WaitForProfilerCompletion:Waiting for status"); t = sizeof(remote); if((s2 = accept(s, (struct sockaddr *)&remote, &t))==-1) { // This means the target process died and we need to return Trace("WaitForProfilerCompletion: Failed in accept call on socket\n"); unlink(tmpFolder); config->socketPath = NULL; ExitProcessMonitor(config, processMonitor); return NULL; } // packet looks like this: <[byte] 0=failure, 1=success><[uint_32] dumpfile_path_len><[char*]Dumpfile path> int payloadLen = 0; if(recv_all(s2, &payloadLen, sizeof(int))==-1) { // This means the target process died and we need to return Trace("WaitForProfilerCompletion: Failed in recv on accept socket\n"); unlink(tmpFolder); close(s2); config->socketPath = NULL; ExitProcessMonitor(config, processMonitor); return NULL; } if(payloadLen>0) { Trace("Received payload len %d", payloadLen); char* payload = (char*) malloc(payloadLen); if(payload==NULL) { Trace("WaitForProfilerCompletion: Failed to allocate memory for payload\n"); unlink(tmpFolder); close(s2); config->socketPath = NULL; ExitProcessMonitor(config, processMonitor); return NULL; } if(recv_all(s2, payload, payloadLen)==-1) { Trace("WaitForProfilerCompletion: Failed to allocate memory for payload\n"); unlink(tmpFolder); close(s2); free(payload); config->socketPath = NULL; ExitProcessMonitor(config, processMonitor); return NULL; } char status = payload[0]; Trace("WaitForProfilerCompletion: Received status %c", status); int dumpLen = 0; memcpy(&dumpLen, payload+1, sizeof(int)); Trace("WaitForProfilerCompletion: Received dump length %d", dumpLen); if(dumpLen > PATH_MAX+1) { Trace("WaitForProfilerCompletion: Payload contained invalid dumplen %s\n", dumpLen); unlink(tmpFolder); close(s2); free(payload); config->socketPath = NULL; ExitProcessMonitor(config, processMonitor); return NULL; } char* dump = malloc(dumpLen+1); if(dump==NULL) { Trace("WaitForProfilerCompletion: Failed to allocate memory for dump\n"); unlink(tmpFolder); close(s2); free(payload); config->socketPath = NULL; ExitProcessMonitor(config, processMonitor); return NULL; } memcpy(dump, payload+1+sizeof(int), dumpLen); dump[dumpLen] = '\0'; Trace("WaitForProfilerCompletion: Received dump path %s", dump); free(payload); if(status=='1') { Log(info, "Core dump generated: %s", dump); config->NumberOfDumpsCollected++; if(config->NumberOfDumpsCollected == config->NumberOfDumpsToCollect) { Trace("WaitForProfilerCompletion: Total dump count has been reached: %d", config->NumberOfDumpsCollected); unlink(tmpFolder); close(s2); free(dump); config->socketPath = NULL; break; } } else if(status=='2') { Log(error, "Failed to generate core dump: %s", dump); } else if(status=='F') { Log(error, "Exception monitoring failed."); Trace("WaitForProfilerCompletion: Total dump count has been reached: %d", config->NumberOfDumpsCollected); unlink(tmpFolder); free(dump); close(s2); config->socketPath = NULL; break; } else if(status=='H') { Trace("WaitForProfilerCompletion: Recieved health check ping from profiler"); } free(dump); } close(s2); } unlink(tmpFolder); config->socketPath = NULL; ExitProcessMonitor(config, processMonitor); Trace("WaitForProfilerCompletion: Exiting WaitForProfilerCompletion Thread [id=%d]", gettid()); return NULL; } //-------------------------------------------------------------------- // // ProcessMonitor - Thread that monitors for the existence of the // target process. // //-------------------------------------------------------------------- void *ProcessMonitor(void *thread_args /* struct ProcDumpConfiguration* */) { Trace("ProcessMonitor: Enter [id=%d]", gettid()); struct ProcDumpConfiguration *config = (struct ProcDumpConfiguration *)thread_args; int rc = 0; while ((rc = WaitForQuit(config, 0)) == WAIT_TIMEOUT && config->bExitProcessMonitor == false) { if(!LookupProcessByPid(config->ProcessId)) { break; } } // // Target process terminated, cancel the status socket to unblock WaitForProfiler... // shutdown(config->statusSocket, SHUT_RD); Trace("ProcessMonitor: Exit [id=%d]", gettid()); return NULL; } //-------------------------------------------------------------------- // // ExitProcessMonitor - Sets ProcessMonitor thread to exit state and // waits for the thread to exit. // //-------------------------------------------------------------------- bool ExitProcessMonitor(struct ProcDumpConfiguration* config, pthread_t processMonitor) { config->bExitProcessMonitor = true; pthread_join(processMonitor, NULL); return true; } ProcDump-for-Linux-2.2/src/ProcDumpConfiguration.c000066400000000000000000001113251447614355600222250ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // The global configuration structure and utilities header // //-------------------------------------------------------------------- #include "Includes.h" extern pthread_mutex_t LoggerLock; long HZ; // clock ticks per second int MAXIMUM_CPU; // maximum cpu usage percentage (# cores * 100) struct ProcDumpConfiguration g_config; // backbone of the program struct ProcDumpConfiguration * target_config; // list of configs for target group processes or matching names extern pthread_mutex_t queue_mutex; sigset_t sig_set; //-------------------------------------------------------------------- // // ApplyDefaults - Apply default values to configuration // //-------------------------------------------------------------------- void ApplyDefaults(struct ProcDumpConfiguration *self) { if(self->NumberOfDumpsToCollect == -1) { self->NumberOfDumpsToCollect = DEFAULT_NUMBER_OF_DUMPS; } if(self->ThresholdSeconds == -1) { self->ThresholdSeconds = DEFAULT_DELTA_TIME; } if(self->PollingInterval == -1) { self->PollingInterval = MIN_POLLING_INTERVAL; } } //-------------------------------------------------------------------- // // InitProcDump - initalize procdump // //-------------------------------------------------------------------- void InitProcDump() { openlog("ProcDump", LOG_PID, LOG_USER); if(CheckKernelVersion() == false) { Log(error, "Kernel version lower than 3.5+."); exit(-1); } InitProcDumpConfiguration(&g_config); pthread_mutex_init(&LoggerLock, NULL); pthread_mutex_init(&queue_mutex, NULL); sigemptyset (&sig_set); sigaddset (&sig_set, SIGINT); sigaddset (&sig_set, SIGTERM); pthread_sigmask (SIG_BLOCK, &sig_set, NULL); char* prefixTmpFolder = NULL; // Create the directories where our sockets will be stored // If $TMPDIR is set, use it as the path, otherwise we use /tmp prefixTmpFolder = getenv("TMPDIR"); if(prefixTmpFolder==NULL) { createDir("/tmp/procdump", 0777); } else { int len = strlen(prefixTmpFolder) + strlen("/procdump") + 1; char* t = malloc(len); if(t == NULL) { Log(error, INTERNAL_ERROR); Trace("InitProcDump: failed to allocate memory."); exit(-1); } sprintf(t, "%s%s", prefixTmpFolder, "/procdump"); createDir(t, 0777); free(t); } } //-------------------------------------------------------------------- // // ExitProcDump - cleanup during exit. // //-------------------------------------------------------------------- void ExitProcDump() { Trace("ExitProcDump: Enter"); pthread_mutex_destroy(&LoggerLock); closelog(); // Try to delete the profiler lib in case it was left over... unlink(PROCDUMP_DIR "/" PROFILER_FILE_NAME); Trace("ExitProcDump: Exit"); } //-------------------------------------------------------------------- // // InitProcDumpConfiguration - initalize a config // //-------------------------------------------------------------------- void InitProcDumpConfiguration(struct ProcDumpConfiguration *self) { MAXIMUM_CPU = 100 * (int)sysconf(_SC_NPROCESSORS_ONLN); HZ = sysconf(_SC_CLK_TCK); sysinfo(&(self->SystemInfo)); pthread_mutex_init(&self->ptrace_mutex, NULL); InitNamedEvent(&(self->evtCtrlHandlerCleanupComplete.event), true, false, "CtrlHandlerCleanupComplete"); self->evtCtrlHandlerCleanupComplete.type = EVENT; InitNamedEvent(&(self->evtBannerPrinted.event), true, false, "BannerPrinted"); self->evtBannerPrinted.type = EVENT; InitNamedEvent(&(self->evtConfigurationPrinted.event), true, false, "ConfigurationPrinted"); self->evtConfigurationPrinted.type = EVENT; InitNamedEvent(&(self->evtDebugThreadInitialized.event), true, false, "DebugThreadInitialized"); self->evtDebugThreadInitialized.type = EVENT; InitNamedEvent(&(self->evtQuit.event), true, false, "Quit"); self->evtQuit.type = EVENT; InitNamedEvent(&(self->evtStartMonitoring.event), true, false, "StartMonitoring"); self->evtStartMonitoring.type = EVENT; sem_init(&(self->semAvailableDumpSlots.semaphore), 0, 1); self->semAvailableDumpSlots.type = SEMAPHORE; // Additional initialization self->ProcessId = NO_PID; self->bProcessGroup = false; self->ProcessGroup = NO_PID; self->NumberOfDumpsCollected = 0; self->NumberOfDumpsToCollect = -1; self->CpuThreshold = -1; self->bCpuTriggerBelowValue = false; self->MemoryThreshold = NULL; self->MemoryThresholdCount = -1; self->MemoryCurrentThreshold = 0; self->bMonitoringGCMemory = false; self->DumpGCGeneration = -1; self->ThreadThreshold = -1; self->FileDescriptorThreshold = -1; self->SignalNumber = -1; self->ThresholdSeconds = -1; self->bMemoryTriggerBelowValue = false; self->bTimerThreshold = false; self->WaitingForProcessName = false; self->DiagnosticsLoggingEnabled = false; self->gcorePid = NO_PID; self->PollingInterval = -1; self->CoreDumpPath = NULL; self->CoreDumpName = NULL; self->nQuit = 0; self->bDumpOnException = false; self->bDumpOnException = NULL; self->ExceptionFilter = NULL; self->socketPath = NULL; self->statusSocket = -1; self->bSocketInitialized = false; self->bExitProcessMonitor = false; pthread_mutex_init(&self->dotnetMutex, NULL); pthread_cond_init(&self->dotnetCond, NULL); } //-------------------------------------------------------------------- // // FreeProcDumpConfiguration - ensure destruction of config and contents // //-------------------------------------------------------------------- void FreeProcDumpConfiguration(struct ProcDumpConfiguration *self) { Trace("FreeProcDumpConfiguration: Enter"); DestroyEvent(&(self->evtCtrlHandlerCleanupComplete.event)); DestroyEvent(&(self->evtBannerPrinted.event)); DestroyEvent(&(self->evtConfigurationPrinted.event)); DestroyEvent(&(self->evtDebugThreadInitialized.event)); DestroyEvent(&(self->evtQuit.event)); DestroyEvent(&(self->evtStartMonitoring.event)); pthread_mutex_destroy(&self->ptrace_mutex); sem_destroy(&(self->semAvailableDumpSlots.semaphore)); pthread_mutex_destroy(&self->dotnetMutex); pthread_cond_destroy(&self->dotnetCond); if(self->ProcessName) { free(self->ProcessName); self->ProcessName = NULL; } if(self->statusSocket != -1) { close(self->statusSocket); self->statusSocket = -1; } if(self->socketPath) { unlink(self->socketPath); free(self->socketPath); self->socketPath = NULL; } if(self->ExceptionFilter) { free(self->ExceptionFilter); self->ExceptionFilter = NULL; } if(self->CoreDumpPath) { free(self->CoreDumpPath); self->CoreDumpPath = NULL; } if(self->CoreDumpName) { free(self->CoreDumpName); self->CoreDumpName = NULL; } if(self->MemoryThreshold) { free(self->MemoryThreshold); self->MemoryThreshold = NULL; } Trace("FreeProcDumpConfiguration: Exit"); } //-------------------------------------------------------------------- // // CopyProcDumpConfiguration - deep copy of Procdump Config struct // //-------------------------------------------------------------------- struct ProcDumpConfiguration * CopyProcDumpConfiguration(struct ProcDumpConfiguration *self) { struct ProcDumpConfiguration * copy = (struct ProcDumpConfiguration*)malloc(sizeof(struct ProcDumpConfiguration)); if(copy != NULL) { // Init new struct InitProcDumpConfiguration(copy); copy->bExitProcessMonitor = self->bExitProcessMonitor; // copy target data we need from original config copy->ProcessId = self->ProcessId; copy->bProcessGroup = self->bProcessGroup; copy->ProcessGroup = self->ProcessGroup; copy->ProcessName = self->ProcessName == NULL ? NULL : strdup(self->ProcessName); // copy runtime values from original config copy->NumberOfDumpsCollecting = self->NumberOfDumpsCollecting; copy->NumberOfDumpsCollected = self->NumberOfDumpsCollected; copy->bTerminated = self->bTerminated; // copy trigger behavior from original config copy->bTriggerThenSnoozeCPU = self->bTriggerThenSnoozeCPU; copy->bTriggerThenSnoozeMemory = self->bTriggerThenSnoozeMemory; copy->bTriggerThenSnoozeTimer = self->bTriggerThenSnoozeTimer; // copy options from original config copy->CpuThreshold = self->CpuThreshold; copy->bCpuTriggerBelowValue = self->bCpuTriggerBelowValue; if(self->MemoryThreshold != NULL) { copy->NumberOfDumpsToCollect = self->NumberOfDumpsToCollect; copy->MemoryCurrentThreshold = self->MemoryCurrentThreshold; copy->MemoryThreshold = malloc(self->NumberOfDumpsToCollect*sizeof(int)); if(copy->MemoryThreshold == NULL) { Trace("Failed to alloc memory for MemoryThreshold"); if(copy->ProcessName) { free(copy->ProcessName); } return NULL; } memcpy(copy->MemoryThreshold, self->MemoryThreshold, self->NumberOfDumpsToCollect*sizeof(int)); } copy->bMemoryTriggerBelowValue = self->bMemoryTriggerBelowValue; copy->MemoryThresholdCount = self->MemoryThresholdCount; copy->bMonitoringGCMemory = self->bMonitoringGCMemory; copy->DumpGCGeneration = self->DumpGCGeneration; copy->ThresholdSeconds = self->ThresholdSeconds; copy->bTimerThreshold = self->bTimerThreshold; copy->NumberOfDumpsToCollect = self->NumberOfDumpsToCollect; copy->WaitingForProcessName = self->WaitingForProcessName; copy->DiagnosticsLoggingEnabled = self->DiagnosticsLoggingEnabled; copy->ThreadThreshold = self->ThreadThreshold; copy->FileDescriptorThreshold = self->FileDescriptorThreshold; copy->SignalNumber = self->SignalNumber; copy->PollingInterval = self->PollingInterval; copy->CoreDumpPath = self->CoreDumpPath == NULL ? NULL : strdup(self->CoreDumpPath); copy->CoreDumpName = self->CoreDumpName == NULL ? NULL : strdup(self->CoreDumpName); copy->ExceptionFilter = self->ExceptionFilter == NULL ? NULL : strdup(self->ExceptionFilter); copy->socketPath = self->socketPath == NULL ? NULL : strdup(self->socketPath); copy->bDumpOnException = self->bDumpOnException; copy->statusSocket = self->statusSocket; return copy; } else { Trace("Failed to alloc memory for Procdump config copy"); return NULL; } } //-------------------------------------------------------------------- // // GetOptions - Unpack command line inputs // //-------------------------------------------------------------------- int GetOptions(struct ProcDumpConfiguration *self, int argc, char *argv[]) { bool bProcessSpecified = false; int dotnetTriggerCount = 0; if (argc < 2) { Trace("GetOptions: Invalid number of command line arguments."); return PrintUsage(); } for( int i = 1; i < argc; i++ ) { if (0 == strcasecmp( argv[i], "/?" ) || 0 == strcasecmp( argv[i], "-?" )) { return PrintUsage(); } else if ( 0 == strcasecmp( argv[i], "/c" ) || 0 == strcasecmp( argv[i], "-c" ) || 0 == strcasecmp( argv[i], "/cl" ) || 0 == strcasecmp( argv[i], "-cl" )) { if( i+1 >= argc || self->CpuThreshold != -1 ) return PrintUsage(); if(!ConvertToInt(argv[i+1], &self->CpuThreshold)) return PrintUsage(); if(self->CpuThreshold < 0) { Log(error, "Invalid CPU threshold count specified."); return PrintUsage(); } if( 0 == strcasecmp( argv[i], "/cl" ) || 0 == strcasecmp( argv[i], "-cl")) { self->bCpuTriggerBelowValue = true; } i++; } else if( 0 == strcasecmp( argv[i], "/m" ) || 0 == strcasecmp( argv[i], "-m" ) || 0 == strcasecmp( argv[i], "/ml" ) || 0 == strcasecmp( argv[i], "-ml" )) { if( i+1 >= argc || self->MemoryThresholdCount != -1 ) return PrintUsage(); self->MemoryThreshold = GetSeparatedValues(argv[i+1], ",", &self->MemoryThresholdCount); if(self->MemoryThreshold == NULL || self->MemoryThresholdCount == 0) return PrintUsage(); for(int i = 0; i < self->MemoryThresholdCount; i++) { if(self->MemoryThreshold[i] < 0) { Log(error, "Invalid memory threshold specified."); free(self->MemoryThreshold); return PrintUsage(); } } if( 0 == strcasecmp( argv[i], "/ml" ) || 0 == strcasecmp( argv[i], "-ml" )) { self->bMemoryTriggerBelowValue = true; } i++; } else if( 0 == strcasecmp( argv[i], "/gcm" ) || 0 == strcasecmp( argv[i], "-gcm" )) { if( i+1 >= argc || self->MemoryThresholdCount != -1) return PrintUsage(); if(strchr(argv[i+1], ':') != NULL) { char* token = NULL; char* copy = strdup(argv[i+1]); if(copy == NULL) { Trace("Failed to strdup."); Log(error, INTERNAL_ERROR); return 1; } token = strtok(copy, ":"); if(token != NULL) { if(!ConvertToInt(token, &self->DumpGCGeneration)) { if(strcasecmp(token, "loh") == 0) { self->DumpGCGeneration = 3; } else if(strcasecmp(token, "poh") == 0) { self->DumpGCGeneration = 4; } else { free(copy); return PrintUsage(); } } token = strtok(NULL, ":"); if(token == NULL) { free(copy); return PrintUsage(); } self->MemoryThreshold = GetSeparatedValues(token, ",", &self->MemoryThresholdCount); } else { free(copy); return PrintUsage(); } free(copy); } else { self->DumpGCGeneration = CUMULATIVE_GC_SIZE; // Indicates that we want to check against total managed heap size (across all generations) self->MemoryThreshold = GetSeparatedValues(argv[i+1], ",", &self->MemoryThresholdCount); } for(int i = 0; i < self->MemoryThresholdCount; i++) { if(self->MemoryThreshold[i] < 0) { Log(error, "Invalid memory threshold specified."); free(self->MemoryThreshold); return PrintUsage(); } } if(self->DumpGCGeneration < 0 || (self->DumpGCGeneration > MAX_GC_GEN+2 && self->DumpGCGeneration != CUMULATIVE_GC_SIZE)) // +2 for LOH and POH { Log(error, "Invalid GC generation or heap specified."); free(self->MemoryThreshold); return PrintUsage(); } dotnetTriggerCount++; self->bMonitoringGCMemory = true; i++; } else if( 0 == strcasecmp( argv[i], "/gcgen" ) || 0 == strcasecmp( argv[i], "-gcgen" )) { if( i+1 >= argc || self->DumpGCGeneration != -1 ) return PrintUsage(); if(!ConvertToInt(argv[i+1], &self->DumpGCGeneration)) return PrintUsage(); if(self->DumpGCGeneration < 0 || self->DumpGCGeneration > MAX_GC_GEN) { Log(error, "Invalid GC generation specified."); return PrintUsage(); } self->NumberOfDumpsToCollect = 2; // This accounts for 1 dump at the start of the GC and 1 at the end. dotnetTriggerCount++; i++; } else if( 0 == strcasecmp( argv[i], "/tc" ) || 0 == strcasecmp( argv[i], "-tc" )) { if( i+1 >= argc || self->ThreadThreshold != -1 ) return PrintUsage(); if(!ConvertToInt(argv[i+1], &self->ThreadThreshold)) return PrintUsage(); if(self->ThreadThreshold < 0) { Log(error, "Invalid thread threshold count specified."); return PrintUsage(); } i++; } else if( 0 == strcasecmp( argv[i], "/fc" ) || 0 == strcasecmp( argv[i], "-fc" )) { if( i+1 >= argc || self->FileDescriptorThreshold != -1 ) return PrintUsage(); if(!ConvertToInt(argv[i+1], &self->FileDescriptorThreshold)) return PrintUsage(); if(self->FileDescriptorThreshold < 0) { Log(error, "Invalid file descriptor threshold count specified."); return PrintUsage(); } i++; } else if( 0 == strcasecmp( argv[i], "/sig" ) || 0 == strcasecmp( argv[i], "-sig" )) { if( i+1 >= argc || self->SignalNumber != -1 ) return PrintUsage(); if(!ConvertToInt(argv[i+1], &self->SignalNumber)) return PrintUsage(); if(self->SignalNumber < 0) { Log(error, "Invalid signal specified."); return PrintUsage(); } i++; } else if( 0 == strcasecmp( argv[i], "/pf" ) || 0 == strcasecmp( argv[i], "-pf" )) { if( i+1 >= argc || self->PollingInterval != -1 ) return PrintUsage(); if(!ConvertToInt(argv[i+1], &self->PollingInterval)) return PrintUsage(); if(self->PollingInterval < 0) { Log(error, "Invalid polling inverval specified."); return PrintUsage(); } i++; } else if( 0 == strcasecmp( argv[i], "/n" ) || 0 == strcasecmp( argv[i], "-n" )) { if( i+1 >= argc || self->NumberOfDumpsToCollect != -1) return PrintUsage(); if(!ConvertToInt(argv[i+1], &self->NumberOfDumpsToCollect)) return PrintUsage(); if(self->NumberOfDumpsToCollect < 0) { Log(error, "Invalid number of dumps specified."); return PrintUsage(); } if(self->NumberOfDumpsToCollect > MAX_DUMP_COUNT) { Log(error, "Max dump count must be less than %d.", MAX_DUMP_COUNT); return PrintUsage(); } i++; } else if( 0 == strcasecmp( argv[i], "/s" ) || 0 == strcasecmp( argv[i], "-s" )) { if( i+1 >= argc || self->ThresholdSeconds != -1 ) return PrintUsage(); if(!ConvertToInt(argv[i+1], &self->ThresholdSeconds)) return PrintUsage(); if(self->ThresholdSeconds < 0) { Log(error, "Invalid seconds specified."); return PrintUsage(); } i++; } else if( 0 == strcasecmp( argv[i], "/log" ) || 0 == strcasecmp( argv[i], "-log" )) { self->DiagnosticsLoggingEnabled = true; } else if( 0 == strcasecmp( argv[i], "/e" ) || 0 == strcasecmp( argv[i], "-e" )) { if( i+1 >= argc) return PrintUsage(); dotnetTriggerCount++; self->bDumpOnException = true; } else if( 0 == strcasecmp( argv[i], "/f" ) || 0 == strcasecmp( argv[i], "-f" )) { if( i+1 >= argc || self->ExceptionFilter) { if(self->ExceptionFilter) { free(self->ExceptionFilter); } return PrintUsage(); } self->ExceptionFilter = strdup(argv[i+1]); if(self->ExceptionFilter==NULL) { Log(error, INTERNAL_ERROR); Trace("GetOptions: failed to strdup ExceptionFilter"); return -1; } if( tolower( self->ExceptionFilter[0] ) > 'z' || ( self->ExceptionFilter[0] != '*' && tolower( self->ExceptionFilter[0] ) < 'a' ) ) { free(self->ExceptionFilter); return PrintUsage(); } i++; } else if( 0 == strcasecmp( argv[i], "/o" ) || 0 == strcasecmp( argv[i], "-o" )) { self->bOverwriteExisting = true; } else if( 0 == strcasecmp( argv[i], "/w" ) || 0 == strcasecmp( argv[i], "-w" )) { self->WaitingForProcessName = true; } else if( 0 == strcasecmp( argv[i], "/pgid" ) || 0 == strcasecmp( argv[i], "-pgid" )) { self->bProcessGroup = true; } else { // Process targets int j; if( bProcessSpecified && self->CoreDumpPath ) { return PrintUsage(); } else if(!bProcessSpecified) { bProcessSpecified = true; bool isPid = true; for( j = 0; j < (int) strlen( argv[i]); j++ ) { if( !isdigit( argv[i][j]) ) { isPid = false; break; } } if( !isPid ) { self->ProcessName = strdup(argv[i]); if(self->ProcessName==NULL) { Log(error, INTERNAL_ERROR); Trace("GetOptions: failed to strdup ProcessName"); return -1; } } else { if(self->bProcessGroup) { if( !sscanf( argv[i], "%d", &self->ProcessGroup )) { return PrintUsage(); } } else { if( !sscanf( argv[i], "%d", &self->ProcessId )) { return PrintUsage(); } } } } else if(!self->CoreDumpPath) { char *tempOutputPath = NULL; tempOutputPath = strdup(argv[i]); if(tempOutputPath==NULL) { Log(error, INTERNAL_ERROR); Trace("GetOptions: failed to strdup tempOutputPath"); return -1; } struct stat statbuf; // Check if the user provided an existing directory or a path // ending in a '/'. In this case, use the default naming // convention but place the files in the given directory. if ((stat(tempOutputPath, &statbuf) == 0 && S_ISDIR(statbuf.st_mode)) || tempOutputPath[strlen(tempOutputPath)-1] == '/') { self->CoreDumpPath = tempOutputPath; self->CoreDumpName = NULL; } else { self->CoreDumpPath = strdup(dirname(tempOutputPath)); free(tempOutputPath); if(self->CoreDumpPath==NULL) { Log(error, INTERNAL_ERROR); Trace("GetOptions: failed to strdup CoreDumpPath"); return -1; } tempOutputPath = strdup(argv[i]); if(tempOutputPath==NULL) { Log(error, INTERNAL_ERROR); Trace("GetOptions: failed to strdup tempOutputPath"); return -1; } self->CoreDumpName = strdup(basename(tempOutputPath)); if(self->CoreDumpName==NULL) { Log(error, INTERNAL_ERROR); Trace("GetOptions: failed to strdup CoreDumpName"); return -1; } free(tempOutputPath); } // Check if the path portion of the output format is valid if (stat(self->CoreDumpPath, &statbuf) < 0 || !S_ISDIR(statbuf.st_mode)) { Log(error, "Invalid directory (\"%s\") provided for core dump output.", self->CoreDumpPath); return PrintUsage(); } } } } // // Validate multi arguments // // .NET triggers are mutually exclusive if(dotnetTriggerCount > 1) { Log(error, "Only one .NET trigger can be specified."); return PrintUsage(); } // Ensure consistency between number of thresholds specified and the -n switch if(self->MemoryThresholdCount > 1 && self->NumberOfDumpsToCollect != -1) { Log(error, "When specifying more than one memory threshold the number of dumps switch (-n) is invalid."); return PrintUsage(); } if(self->MemoryThresholdCount != -1) { self->NumberOfDumpsToCollect = self->MemoryThresholdCount; } // If exception filter is provided with no -e switch exit if((self->ExceptionFilter && self->bDumpOnException == false)) { Log(error, "Please use the -e switch when specifying an exception filter (-f)"); return PrintUsage(); } // If no path was provided, assume the current directory if (self->CoreDumpPath == NULL) { self->CoreDumpPath = strdup("."); if(self->CoreDumpPath==NULL) { Log(error, INTERNAL_ERROR); Trace("GetOptions: failed to strdup CoreDumpPath"); return -1; } } // Wait if((self->WaitingForProcessName && self->ProcessId != NO_PID)) { Log(error, "The wait option requires the process be specified by name."); return PrintUsage(); } // If number of dumps to collect is set, but there is no other criteria, enable Timer here... if ((self->CpuThreshold == -1) && (self->MemoryThreshold == NULL) && (self->ThreadThreshold == -1) && (self->FileDescriptorThreshold == -1) && (self->DumpGCGeneration == -1)) { self->bTimerThreshold = true; } // Signal trigger can only be specified alone if(self->SignalNumber != -1 || self->bDumpOnException) { if(self->CpuThreshold != -1 || self->ThreadThreshold != -1 || self->FileDescriptorThreshold != -1 || self->MemoryThreshold != NULL) { Log(error, "Signal/Exception trigger must be the only trigger specified."); return PrintUsage(); } if(self->PollingInterval != -1) { Log(error, "Polling interval has no meaning during Signal/Exception monitoring."); return PrintUsage(); } // Again, we cant have another trigger (in this case timer) kicking off another dump generation since we will already // be attached via ptrace. self->bTimerThreshold = false; } // If we are monitoring multiple process, setting dump name doesn't make sense (path is OK) if ((self->bProcessGroup || self->WaitingForProcessName) && self->CoreDumpName) { Log(error, "Setting core dump name in multi process monitoring is invalid (path is ok)."); return PrintUsage(); } // Apply default values for any config values that were not specified by user ApplyDefaults(self); Trace("GetOpts and initial Configuration finished"); return 0; } //-------------------------------------------------------------------- // // PrintConfiguration - Prints the current configuration to the command line // //-------------------------------------------------------------------- bool PrintConfiguration(struct ProcDumpConfiguration *self) { if (WaitForSingleObject(&self->evtConfigurationPrinted,0) == WAIT_TIMEOUT) { if(self->SignalNumber != -1) { printf("** NOTE ** Signal triggers use PTRACE which will impact the performance of the target process\n\n"); } if (self->bProcessGroup) { printf("%-40s%d\n", "Process Group:", self->ProcessGroup); } else if (self->WaitingForProcessName) { printf("%-40s%s\n", "Process Name:", self->ProcessName); } else { printf("%-40s%s (%d)\n", "Process:", self->ProcessName, self->ProcessId); } // CPU if (self->CpuThreshold != -1) { if (self->bCpuTriggerBelowValue) { printf("%-40s< %d%%\n", "CPU Threshold:", self->CpuThreshold); } else { printf("%-40s>= %d%%\n", "CPU Threshold:", self->CpuThreshold); } } else { printf("%-40s%s\n", "CPU Threshold:", "n/a"); } // Memory if (self->MemoryThreshold != NULL) { if (self->bMemoryTriggerBelowValue) { printf("%-40s< ", "Commit Threshold:"); } else { if(self->bMonitoringGCMemory == true) { printf("%-40s>= ", ".NET Memory Threshold:"); } else { printf("%-40s>= ", "Commit Threshold:"); } } for(int i=0; iNumberOfDumpsToCollect; i++) { printf("%d MB", self->MemoryThreshold[i]); if(i < self->NumberOfDumpsToCollect -1) { printf(","); } } printf("\n"); } else { printf("%-40s%s\n", "Commit Threshold:", "n/a"); } // Thread if (self->ThreadThreshold != -1) { printf("%-40s%d\n", "Thread Threshold:", self->ThreadThreshold); } else { printf("%-40s%s\n", "Thread Threshold:", "n/a"); } // File descriptor if (self->FileDescriptorThreshold != -1) { printf("%-40s%d\n", "File Descriptor Threshold:", self->FileDescriptorThreshold); } else { printf("%-40s%s\n", "File Descriptor Threshold:", "n/a"); } // Signal if (self->SignalNumber != -1) { printf("%-40s%d\n", "Signal:", self->SignalNumber); } else { printf("%-40s%s\n", "Signal:", "n/a"); } // Exception if (self->bDumpOnException) { printf("%-40s%s\n", "Exception monitor", "On"); printf("%-40s%s\n", "Exception filter", self->ExceptionFilter); } else { printf("%-40s%s\n", "Exception monitor", "n/a"); } // GC Generation if (self->DumpGCGeneration != -1) { printf("%-40s%d\n", "GC Generation", self->DumpGCGeneration); } else { printf("%-40s%s\n", "GC Generation", "n/a"); } // Polling inverval printf("%-40s%d\n", "Polling Interval (ms):", self->PollingInterval); // time printf("%-40s%d\n", "Threshold (s):", self->ThresholdSeconds); // number of dumps and others printf("%-40s%d\n", "Number of Dumps:", self->NumberOfDumpsToCollect); // Output directory and filename printf("%-40s%s\n", "Output directory:", self->CoreDumpPath); if (self->CoreDumpName != NULL) { printf("%-40s%s_\n", "Custom name for core dumps:", self->CoreDumpName); } SetEvent(&self->evtConfigurationPrinted.event); return true; } return false; } //-------------------------------------------------------------------- // // PrintBanner - Not re-entrant safe banner printer. Function must be called before trigger threads start. // //-------------------------------------------------------------------- void PrintBanner() { printf("\nProcDump v2.2 - Sysinternals process dump utility\n"); printf("Copyright (C) 2023 Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n"); printf("Mark Russinovich, Mario Hewardt, John Salem, Javid Habibi\n"); printf("Sysinternals - www.sysinternals.com\n\n"); printf("Monitors one or more processes and writes a core dump file when the processes exceeds the\n"); printf("specified criteria.\n\n"); } //-------------------------------------------------------------------- // // PrintUsage - Print usage // //-------------------------------------------------------------------- int PrintUsage() { printf("\nCapture Usage: \n"); printf(" procdump [-n Count]\n"); printf(" [-s Seconds]\n"); printf(" [-c|-cl CPU_Usage]\n"); printf(" [-m|-ml Commit_Usage1[,Commit_Usage2...]]\n"); printf(" [-gcm [: | LOH: | POH:]Memory_Usage1[,Memory_Usage2...]]\n"); printf(" [-gcgen Generation\n"); printf(" [-tc Thread_Threshold]\n"); printf(" [-fc FileDescriptor_Threshold]\n"); printf(" [-sig Signal_Number]\n"); printf(" [-e]\n"); printf(" [-f Include_Filter,...]\n"); printf(" [-pf Polling_Frequency]\n"); printf(" [-o]\n"); printf(" [-log]\n"); printf(" {\n"); printf(" {{[-w] Process_Name | [-pgid] PID} [Dump_File | Dump_Folder]}\n"); printf(" }\n"); printf("\n"); printf("Options:\n"); printf(" -n Number of dumps to write before exiting.\n"); printf(" -s Consecutive seconds before dump is written (default is 10).\n"); printf(" -c CPU threshold above which to create a dump of the process.\n"); printf(" -cl CPU threshold below which to create a dump of the process.\n"); printf(" -m Memory commit threshold(s) (MB) above which to create dumps.\n"); printf(" -ml Memory commit threshold(s) (MB) below which to create dumps.\n"); printf(" -gcm [.NET] GC memory threshold(s) (MB) above which to create dumps for the specified generation or heap (default is total .NET memory usage).\n"); printf(" -gcgen [.NET] Create dump when the garbage collection of the specified generation starts and finishes.\n"); printf(" -tc Thread count threshold above which to create a dump of the process.\n"); printf(" -fc File descriptor count threshold above which to create a dump of the process.\n"); printf(" -sig Signal number to intercept to create a dump of the process.\n"); printf(" -e [.NET] Create dump when the process encounters an exception.\n"); printf(" -f [.NET] Filter (include) on the (comma seperated) exception name(s) and exception messages(s). Supports wildcards.\n"); printf(" -pf Polling frequency.\n"); printf(" -o Overwrite existing dump file.\n"); printf(" -log Writes extended ProcDump tracing to syslog.\n"); printf(" -w Wait for the specified process to launch if it's not running.\n"); printf(" -pgid Process ID specified refers to a process group ID.\n"); return -1; } ProcDump-for-Linux-2.2/src/Procdump.c000066400000000000000000000031011447614355600175250ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // This program monitors a process and generates core dumps in // in response to various triggers // //-------------------------------------------------------------------- #include "Includes.h" extern struct ProcDumpConfiguration g_config; //-------------------------------------------------------------------- // // OnExit // // Invoked when ProcDump exits. // //-------------------------------------------------------------------- void OnExit() { ExitProcDump(); } //-------------------------------------------------------------------- // // main // // main ProcDump function // //-------------------------------------------------------------------- int main(int argc, char *argv[]) { // print banner and begin intialization PrintBanner(); InitProcDump(); // print privelege warning if(geteuid() != 0) { Log(warn, "Procdump not running with elevated credentials. If your uid does not match the uid of the target process procdump will not be able to capture memory dumps"); PrintUsage(); } else { if (GetOptions(&g_config, argc, argv) != 0) { Trace("main: failed to parse command line arguments"); exit(-1); } // Register exit handler atexit(OnExit); // monitor for all specified processes MonitorProcesses(&g_config); } } ProcDump-for-Linux-2.2/src/Process.c000066400000000000000000000553571447614355600173760ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // This library reads from the /procfs pseudo filesystem // //-------------------------------------------------------------------- #include "Includes.h" //-------------------------------------------------------------------- // // GetProcessStat - Gets the process stats for the given pid // //-------------------------------------------------------------------- bool GetProcessStat(pid_t pid, struct ProcessStat *proc) { char procFilePath[32]; char fileBuffer[1024]; char *token; char *savePtr = NULL; struct dirent* entry = NULL; auto_free_file FILE *procFile = NULL; auto_free_dir DIR* fddir = NULL; // Get number of file descriptors in /proc/%d/fdinfo. This directory only contains sub directories for each file descriptor. if(sprintf(procFilePath, "/proc/%d/fdinfo", pid) < 0){ return false; } fddir = opendir(procFilePath); if(fddir) { proc->num_filedescriptors = 0; while ((entry = readdir(fddir)) != NULL) { proc->num_filedescriptors++; } } else { Log(error, "Failed to open %s. Exiting...", procFilePath); return false; } proc->num_filedescriptors-=2; // Account for "." and ".." // Read /proc/[pid]/stat if(sprintf(procFilePath, "/proc/%d/stat", pid) < 0){ return false; } procFile = fopen(procFilePath, "r"); if(procFile != NULL){ if(fgets(fileBuffer, sizeof(fileBuffer), procFile) == NULL) { Log(error, "Failed to read from %s. Exiting...", procFilePath); return false; } } else{ Log(error, "Failed to open %s.", procFilePath); return false; } // (1) process ID proc->pid = (pid_t)atoi(fileBuffer); // (3) process state if((savePtr = strrchr(fileBuffer, ')')) != NULL){ savePtr += 2; // iterate past ')' and ' ' in /proc/[pid]/stat proc->state = strtok_r(savePtr, " ", &savePtr)[0]; } // (4) parent process ID token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - Parent PID."); return false; } proc->ppid = (pid_t)strtol(token, NULL, 10); // (5) process group ID token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - Process group ID."); return false; } proc->pgrp = (pid_t)strtol(token, NULL, 10); // (6) session ID token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - Session ID."); return false; } proc->session = (int)strtol(token, NULL, 10); // (7) controlling terminal token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - Controlling terminal."); return false; } proc->tty_nr = (int)strtol(token, NULL, 10); // (8) Foreground group ID of controlling terminal token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - Foreground group ID."); return false; } proc->tpgid = (pid_t)strtol(token, NULL, 10); // (9) Kernel flags token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - Kernel flags."); return false; } proc->flags = (unsigned int)strtoul(token, NULL, 10); // (10) minflt token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - Minflt."); return false; } proc->minflt = strtoul(token, NULL, 10); // (11) cminflt token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - cminflt."); return false; } proc->cminflt = strtoul(token, NULL, 10); // (12) majflt token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - majflt."); return false; } proc->majflt = strtoul(token, NULL, 10); // (13) cmajflt token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - cmajflt."); return false; } proc->cmajflt = strtoul(token, NULL, 10); // (14) utime token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - utime."); return false; } proc->utime = strtoul(token, NULL, 10); // (15) stime token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - stime."); return false; } proc->stime = strtoul(token, NULL, 10); // (16) cutime token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - cutime."); return false; } proc->cutime = strtoul(token, NULL, 10); // (17) cstime token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - cstime."); return false; } proc->cstime = strtoul(token, NULL, 10); // (18) priority token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - priority."); return false; } proc->priority = strtol(token, NULL, 10); // (19) nice token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - nice."); return false; } proc->nice = strtol(token, NULL, 10); // (20) num_threads token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - num_threads."); return false; } proc->num_threads = strtol(token, NULL, 10); // (21) itrealvalue token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - itrealvalue."); return false; } proc->itrealvalue = strtol(token, NULL, 10); // (22) starttime token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - starttime."); return false; } proc->starttime = strtoull(token, NULL, 10); // (23) vsize token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - vsize."); return false; } proc->vsize = strtoul(token, NULL, 10); // (24) rss token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - rss."); return false; } proc->rss = strtol(token, NULL, 10); // (25) rsslim token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - rsslim."); return false; } proc->rsslim = strtoul(token, NULL, 10); // (26) startcode token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - startcode."); return false; } proc->startcode = strtoul(token, NULL, 10); // (27) endcode token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - endcode."); return false; } proc->endcode = strtoul(token, NULL, 10); // (28) startstack token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - startstack."); return false; } proc->startstack = strtoul(token, NULL, 10); // (29) kstkesp token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - kstkesp."); return false; } proc->kstkesp = strtoul(token, NULL, 10); // (30) kstkeip token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - kstkeip."); return false; } proc->kstkeip = strtoul(token, NULL, 10); // (31) signal token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - signal."); return false; } proc->signal = strtoul(token, NULL, 10); // (32) blocked token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - blocked."); return false; } proc->blocked = strtoul(token, NULL, 10); // (33) sigignore token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - sigignore."); return false; } proc->sigignore = strtoul(token, NULL, 10); // (34) sigcatch token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - sigcatch."); return false; } proc->sigcatch = strtoul(token, NULL, 10); // (35) wchan token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - wchan."); return false; } proc->wchan = strtoul(token, NULL, 10); // (36) nswap token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - nswap."); return false; } proc->nswap = strtoul(token, NULL, 10); // (37) cnswap token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - cnswap."); return false; } proc->cnswap = strtoul(token, NULL, 10); // (38) exit_signal token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - exit_signal."); return false; } proc->exit_signal = (int)strtol(token, NULL, 10); // (39) processor token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - processor."); return false; } proc->processor = (int)strtol(token, NULL, 10); // (40) rt_priority token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - rt_priority."); return false; } proc->rt_priority = (unsigned int)strtoul(token, NULL, 10); // (41) policy token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - policy."); return false; } proc->policy = (unsigned int)strtoul(token, NULL, 10); // (42) delayacct_blkio_ticks token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - delayacct_blkio_ticks."); return false; } proc->delayacct_blkio_ticks = strtoull(token, NULL, 10); // (43) guest_time token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - guest_time."); return false; } proc->guest_time = strtoul(token, NULL, 10); // (44) cguest_time token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - cguest_time."); return false; } proc->cguest_time = strtol(token, NULL, 10); // (45) start_data token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - start_data."); return false; } proc->start_data = strtoul(token, NULL, 10); // (46) end_data token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - end_data."); return false; } proc->end_data = strtoul(token, NULL, 10); // (47) start_brk token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - start_brk."); return false; } proc->start_brk = strtoul(token, NULL, 10); // (48) arg_start token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - arg_start."); return false; } proc->arg_start = strtoul(token, NULL, 10); // (49) arg_end token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - arg_end."); return false; } proc->arg_end = strtoul(token, NULL, 10); // (50) env_start token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - env_start."); return false; } proc->env_start = strtoul(token, NULL, 10); // (52) env_end token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - env_end."); return false; } proc->env_end = strtoul(token, NULL, 10); // (53) exit_code token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessStat: failed to get token from proc/[pid]/stat - exit_code."); return false; } proc->exit_code = (int)strtol(token, NULL, 10); return true; } //-------------------------------------------------------------------- // // GetProcessName - Get process name using PID provided. // Returns EMPTY_PROC_NAME for null process name. // //-------------------------------------------------------------------- char * GetProcessName(pid_t pid){ char procFilePath[32]; char fileBuffer[MAX_CMDLINE_LEN]; int charactersRead = 0; int itr = 0; char * stringItr; char * processName; auto_free_file FILE * procFile = NULL; if(sprintf(procFilePath, "/proc/%d/cmdline", pid) < 0) { return NULL; } procFile = fopen(procFilePath, "r"); if(procFile != NULL) { if(fgets(fileBuffer, MAX_CMDLINE_LEN, procFile) == NULL) { if(strlen(fileBuffer) == 0) { Log(debug, "Empty cmdline.\n"); } else{ } return NULL; } } else { Log(debug, "Failed to open %s.\n", procFilePath); return NULL; } // Extract process name stringItr = fileBuffer; charactersRead = strlen(fileBuffer); for(int i = 0; i <= charactersRead; i++){ if(fileBuffer[i] == '\0'){ itr = i - itr; if(strcmp(stringItr, "sudo") != 0){ // do we have the process name including filepath? processName = strrchr(stringItr, '/'); // does this process include a filepath? if(processName != NULL){ return strdup(processName + 1); // +1 to not include '/' character } else{ return strdup(stringItr); } } else{ stringItr += (itr+1); // +1 to move past '\0' } } } return NULL; } //-------------------------------------------------------------------- // // GetProcessPgid - Get process pgid using PID provided. // Returns NO_PID on error // //-------------------------------------------------------------------- pid_t GetProcessPgid(pid_t pid){ pid_t pgid = NO_PID; char procFilePath[32]; char fileBuffer[1024]; char *token; char *savePtr = NULL; auto_free_file FILE *procFile = NULL; // Read /proc/[pid]/stat if(sprintf(procFilePath, "/proc/%d/stat", pid) < 0){ return pgid; } procFile = fopen(procFilePath, "r"); if(procFile != NULL){ if(fgets(fileBuffer, sizeof(fileBuffer), procFile) == NULL) { return pgid; } } else{ Trace("GetProcessPgid: Cannot open %s to check PGID", procFilePath); return pgid; } // itaerate past process state savePtr = strrchr(fileBuffer, ')'); savePtr += 2; // iterate past ')' and ' ' in /proc/[pid]/stat // iterate past process state token = strtok_r(NULL, " ", &savePtr); // iterate past parent process ID token = strtok_r(NULL, " ", &savePtr); // grab process group ID token = strtok_r(NULL, " ", &savePtr); if(token == NULL){ Trace("GetProcessPgid: failed to get token from proc/[pid]/stat - Process group ID."); return pgid; } pgid = (pid_t)strtol(token, NULL, 10); return pgid; } //-------------------------------------------------------------------- // // LookupProcessByPid - Find process using PID provided. // //-------------------------------------------------------------------- bool LookupProcessByPid(pid_t pid) { char statFilePath[32]; auto_free_file FILE *fd = NULL; if(pid == NO_PID) { return false; } // check to see if pid is an actual process running1` if(pid != NO_PID) { sprintf(statFilePath, "/proc/%d/stat", pid); } fd = fopen(statFilePath, "r"); if (fd == NULL) { return false; } return true; } //-------------------------------------------------------------------- // // LookupProcessByPgid - Find a running process using PGID provided. // //-------------------------------------------------------------------- bool LookupProcessByPgid(pid_t pid) { bool ret = false; // check to see if pid is an actual process running if(pid != NO_PID) { struct dirent ** nameList; int numEntries = scandir("/proc/", &nameList, FilterForPid, alphasort); // evaluate all running processes for (int i = 0; i < numEntries; i++) { pid_t procPid; if(!ConvertToInt(nameList[i]->d_name, &procPid)) { continue; } pid_t procPgid; procPgid = GetProcessPgid(procPid); if(procPgid != NO_PID && procPgid == pid) { ret = true; break; } } for (int i = 0; i < numEntries; i++) { free(nameList[i]); } if(numEntries!=-1) { free(nameList); } } // if we have ran through all the running processes then supplied PGID is invalid return ret; } //-------------------------------------------------------------------- // // LookupProcessByName - Find a running process using name provided. // //-------------------------------------------------------------------- bool LookupProcessByName(const char *procName) { // check to see if name is an actual process running bool ret = false; struct dirent ** nameList; int numEntries = scandir("/proc/", &nameList, FilterForPid, alphasort); // evaluate all running processes for (int i = 0; i < numEntries; i++) { pid_t procPid; if(!ConvertToInt(nameList[i]->d_name, &procPid)) { continue; } char* processName = GetProcessName(procPid); if(processName && strcasecmp(processName, procName)==0) { free(processName); ret = true; break; } if(processName) free(processName); } for (int i = 0; i < numEntries; i++) { free(nameList[i]); } if(numEntries!=-1) { free(nameList); } // if we have ran through all the running processes then supplied PGID is invalid return ret; } //-------------------------------------------------------------------- // // LookupProcessPidByName - Return PID of process using name provided. // //-------------------------------------------------------------------- pid_t LookupProcessPidByName(const char* name) { // check to see if name is an actual process running pid_t ret = NO_PID; struct dirent ** nameList; int numEntries = scandir("/proc/", &nameList, FilterForPid, alphasort); // evaluate all running processes for (int i = 0; i < numEntries; i++) { pid_t procPid; if(!ConvertToInt(nameList[i]->d_name, &procPid)) { continue; } char* procName = GetProcessName(procPid); if(procName && strcasecmp(name, procName)==0) { struct ProcessStat stat; free(procName); if(GetProcessStat(procPid, &stat)) { ret = stat.pid; } break; } if(procName) free(procName); } for (int i = 0; i < numEntries; i++) { #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wanalyzer-double-free" free(nameList[i]); // Note: Analyzer incorrectly states that there is a double-free here which is incorrect and can be ignored. #pragma GCC diagnostic pop } if(numEntries!=-1) { free(nameList); } // if we have ran through all the running processes then supplied name is not found return ret; } //-------------------------------------------------------------------- // // GetMaximumPID - Read from kernel configs what the maximum PID value is // // Returns maximum PID value before processes roll over or -1 upon error. //-------------------------------------------------------------------- int GetMaximumPID() { auto_free_file FILE * pidMaxFile = NULL; int maxPIDs = -1; pidMaxFile = fopen(PID_MAX_KERNEL_CONFIG, "r"); if(pidMaxFile != NULL) { if(fscanf(pidMaxFile, "%d", &maxPIDs) == EOF) { maxPIDs = -1; } } return maxPIDs; } //-------------------------------------------------------------------- // // FilterForPid - Helper function for scandir to only return PIDs. // //-------------------------------------------------------------------- int FilterForPid(const struct dirent *entry) { return IsValidNumberArg(entry->d_name); } ProcDump-for-Linux-2.2/src/ProfilerHelpers.c000066400000000000000000000247111447614355600210530ustar00rootroot00000000000000// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License //-------------------------------------------------------------------- // // General purpose helpers // //-------------------------------------------------------------------- #include "Includes.h" // These are the start and end addresses to the embedded profiler binary extern char _binary_obj_ProcDumpProfiler_so_end[]; extern char _binary_obj_ProcDumpProfiler_so_start[]; //-------------------------------------------------------------------- // // ExtractProfiler // // The profiler so is embedded into the ProcDump binary. This function // extracts the profiler so and places it into // PROCDUMP_DIR "/" PROFILER_FILE_NAME // //-------------------------------------------------------------------- int ExtractProfiler() { auto_free_fd int destfd = -1; // Try to delete the profiler lib in case it was left over... unlink(PROCDUMP_DIR "/" PROFILER_FILE_NAME); destfd = creat(PROCDUMP_DIR "/" PROFILER_FILE_NAME, S_IRWXU|S_IROTH); if (destfd < 0) { return -1; } size_t written = 0; ssize_t writeRet; size_t size = _binary_obj_ProcDumpProfiler_so_end - _binary_obj_ProcDumpProfiler_so_start; while (written < size) { writeRet = write(destfd, _binary_obj_ProcDumpProfiler_so_start + written, size - written); if (writeRet < 0) { return 1; } written += writeRet; } return 0; } //-------------------------------------------------------------------- // // LoadProfiler // // This function sends a command to the diagnostics pipe of the target // process instructing the runtime to load the profiler. // //-------------------------------------------------------------------- int LoadProfiler(pid_t pid, char* clientData) { struct sockaddr_un addr = {0}; uint32_t attachTimeout = 5000; struct CLSID profilerGuid = {0}; unsigned int clientDataSize = 0; auto_free_fd int fd = -1; auto_free char* socketName = NULL; auto_free char* dumpPath = NULL; auto_free uint16_t* profilerPathW = NULL; auto_free void* temp_buffer = NULL; if(!IsCoreClrProcess(pid, &socketName)) { Trace("LoadProfiler: Unable to find .NET diagnostics endpoint for targeted process."); return -1; } if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) { Trace("LoadProfiler: Failed to create socket for .NET dump generation."); return -1; } // Create socket to diagnostics server memset(&addr, 0, sizeof(struct sockaddr_un)); addr.sun_family = AF_UNIX; strncpy(addr.sun_path, socketName, sizeof(addr.sun_path)-1); if (connect(fd, (struct sockaddr*)&addr, sizeof(struct sockaddr_un)) == -1) { Trace("LoadProfiler: Failed to connect to socket for .NET profiler load."); return -1; } // Calculate header and payload size // profile attach timeout unsigned int payloadSize = sizeof(attachTimeout); // profiler guid StringToGuid(PROFILER_GUID, &profilerGuid); payloadSize += sizeof(profilerGuid); //profiler path profilerPathW = GetUint16(PROCDUMP_DIR "/" PROFILER_FILE_NAME); if(profilerPathW==NULL) { Trace("LoadProfiler: Failed to GetUint16."); return -1; } unsigned int profilerPathLen = (strlen(PROCDUMP_DIR "/" PROFILER_FILE_NAME)+1); payloadSize += sizeof(profilerPathLen); payloadSize += profilerPathLen*sizeof(uint16_t); // client data if(clientData) { clientDataSize = strlen(clientData) + 1; } else { clientDataSize = 0; } payloadSize += sizeof(clientDataSize); payloadSize += clientDataSize*sizeof(unsigned char); Trace("LoadProfiler: client data: %s", clientData); uint16_t totalPacketSize = sizeof(struct IpcHeader)+payloadSize; // First initialize header temp_buffer = malloc(totalPacketSize); if(temp_buffer==NULL) { Trace("LoadProfiler: Failed to allocate memory for packet.") return -1; } memset(temp_buffer, 0, totalPacketSize); struct IpcHeader dumpHeader = { { {"DOTNET_IPC_V1"} }, (uint16_t)totalPacketSize, (uint8_t)0x03, (uint8_t)0x01, (uint16_t)0x0000 }; void* temp_buffer_cur = temp_buffer; memcpy(temp_buffer_cur, &dumpHeader, sizeof(struct IpcHeader)); temp_buffer_cur += sizeof(struct IpcHeader); memcpy(temp_buffer_cur, &attachTimeout, sizeof(attachTimeout)); temp_buffer_cur += sizeof(attachTimeout); memcpy(temp_buffer_cur, &profilerGuid, sizeof(profilerGuid)); temp_buffer_cur += sizeof(profilerGuid); memcpy(temp_buffer_cur, &profilerPathLen, sizeof(profilerPathLen)); temp_buffer_cur += sizeof(profilerPathLen); memcpy(temp_buffer_cur, profilerPathW, profilerPathLen*sizeof(uint16_t)); temp_buffer_cur += profilerPathLen*sizeof(uint16_t); memcpy(temp_buffer_cur, &clientDataSize, sizeof(unsigned int)); temp_buffer_cur += sizeof(unsigned int); if(clientDataSize>0) { memcpy(temp_buffer_cur, clientData, clientDataSize); temp_buffer_cur += clientDataSize; } // Send the payload if(send_all(fd, temp_buffer, totalPacketSize)==-1) { Trace("LoadProfiler: Failed sending packet to diagnostics server [%d]", errno); return -1; } // Get response struct IpcHeader retHeader; if(recv_all(fd, &retHeader, sizeof(struct IpcHeader))==-1) { Trace("LoadProfiler: Failed receiving response header from diagnostics server [%d]", errno); return -1; } // Check the header to make sure its the right size if(retHeader.Size != CORECLR_DIAG_IPCHEADER_SIZE) { Trace("LoadProfiler: Failed validating header size in response header from diagnostics server [%d != 24]", retHeader.Size); return -1; } int32_t res = -1; if(recv_all(fd, &res, sizeof(int32_t))==-1) { Trace("LoadProfiler: Failed receiving result code from response payload from diagnostics server [%d]", errno); return -1; } else { if(res!=0) { if(res==0x8013136A) { // The profiler is already loaded in the target process Trace("LoadProfiler: Target process is already being monitored."); Log(error, "Target process is already being monitored."); } else { Trace("LoadProfiler: Error returned from diagnostics server [0x%x]", res); Log(error, "Error returned from diagnostics server [0x%x]", res); } return -1; } } #if (__GNUC__ >= 13) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wanalyzer-fd-leak" #endif return 0; } #if (__GNUC__ >= 13) #pragma GCC diagnostic pop #endif //-------------------------------------------------------------------- // // InjectProfiler // // Injects the profiler into the target process by: // // 1. Extracting the profiler binary from the procdump binary and placing in // tmp location. // 2. Send a command to the target process diagnostics pipe with the location // of the profiler (passing in any relevant data such as exception filter and // dump count). The profiler opens an IPC pipe that ProcDump can send // cancellation requests to. // //-------------------------------------------------------------------- int InjectProfiler(pid_t pid, char* clientData) { int ret = ExtractProfiler(); if(ret != 0) { Log(error, "Failed to extract profiler. Please make sure you are running elevated."); Trace("InjectProfiler: failed to extract profiler."); return ret; } ret = LoadProfiler(pid, clientData); if(ret != 0) { Log(error, "Failed to load profiler. Please make sure you are running elevated and targetting a .NET process."); Trace("InjectProfiler: failed to load profiler into target process."); return ret; } return 0; } //-------------------------------------------------------------------- // // GetEncodedExceptionFilter // // Create the exception filter string which goes like this: // ;;:;:,... // Where Exception is: // Name_of_Exception:num_dumps or // which means that the user did not specify an exception filter and we just dump on // any exception that happens to throw. // The exception filter passed in from the command line using -f: // ,,... // //-------------------------------------------------------------------- char* GetEncodedExceptionFilter(char* exceptionFilterCmdLine, unsigned int numDumps) { unsigned int totalExceptionNameLen = 0; unsigned int numberOfDumpsLen = 0; unsigned int numExceptions = 0; char* exceptionFilter = NULL; char* exceptionFilterCur = NULL; char tmp[10]; size_t len = 0; // If no exceptions were specified using -f we should dump on any exception (hence we add ) char* cpy = exceptionFilterCmdLine ? strdup(exceptionFilterCmdLine) : strdup("*"); numberOfDumpsLen = sprintf(tmp, "%d", numDumps); char* token = strtok(cpy, ","); while(token!=NULL) { totalExceptionNameLen += strlen(token); numExceptions++; token = strtok(NULL, ","); } free(cpy); cpy = exceptionFilterCmdLine ? strdup(exceptionFilterCmdLine) : strdup("*"); totalExceptionNameLen++; // NULL terminator exceptionFilter = malloc(totalExceptionNameLen+numExceptions*(numberOfDumpsLen+2+2)); // +1 for : seperator +1 for ; seperator +2 for 2 '*' wildcard if(exceptionFilter==NULL) { free(cpy); return NULL; } exceptionFilterCur = exceptionFilter; token = strtok(cpy, ","); while(token!=NULL) { len = strlen(token); if(token[0] != '*' && token[len-1] != '*') { exceptionFilterCur += sprintf(exceptionFilterCur, "*%s*:%d;", token, numDumps); } else if(token[0] != '*') { exceptionFilterCur += sprintf(exceptionFilterCur, "*%s:%d;", token, numDumps); } else if(token[len-1] != '*') { exceptionFilterCur += sprintf(exceptionFilterCur, "%s*:%d;", token, numDumps); } else { exceptionFilterCur += sprintf(exceptionFilterCur, "%s:%d;", token, numDumps); } token = strtok(NULL, ","); } free(cpy); return exceptionFilter; }ProcDump-for-Linux-2.2/templates/000077500000000000000000000000001447614355600170045ustar00rootroot00000000000000ProcDump-for-Linux-2.2/templates/build.yaml000066400000000000000000000003651447614355600207730ustar00rootroot00000000000000parameters: - name: ccopts type: string default: '' - name: extra type: string default: '' steps: - script: | ${{ parameters.extra }} export OPT_CCFLAGS=${{ parameters.ccopts }} make displayName: "Build ProcDump binaries" ProcDump-for-Linux-2.2/tests/000077500000000000000000000000001447614355600161505ustar00rootroot00000000000000ProcDump-for-Linux-2.2/tests/integration/000077500000000000000000000000001447614355600204735ustar00rootroot00000000000000ProcDump-for-Linux-2.2/tests/integration/ProcDumpTestApplication.c000066400000000000000000000023741447614355600254220ustar00rootroot00000000000000#include #include #include #include #include #include #define FILE_DESC_COUNT 500 #define THREAD_COUNT 100 void* ThreadProc(void *input) { sleep(UINT_MAX); return NULL; }; int main(int argc, char *argv[]) { if (argc > 1) { // // To avoid timing differences, each test below should sleep indefinately once done. // The process will be killed by the test harness once procdump has finished monitoring // if (strcmp("sleep", argv[1]) == 0) { sleep(UINT_MAX); } else if (strcmp("burn", argv[1]) == 0) { while(1); } else if (strcmp("fc", argv[1]) == 0) { FILE* fd[FILE_DESC_COUNT]; for(int i=0; i { throw new System.InvalidOperationException(); }); app.MapGet("/fullgc", () => { System.GC.Collect(); }); app.MapGet("/memincrease", () => { // Gen2 var myList = new List(); for(int i = 0; i < 1000; i++) { myList.Add(new byte[10000]); } // Promote to Gen2 GC.Collect(); GC.Collect(); GC.Collect(); // LOH var myLOHList = new List(); myLOHList.Add(new byte[15000000]); System.GC.Collect(); myLOHList.Add(new byte[15000000]); System.GC.Collect(); myLOHList.Add(new byte[15000000]); System.GC.Collect(); // POH var p1 = GC.AllocateArray(15000000, pinned: true); System.GC.Collect(); var p2 = GC.AllocateArray(15000000, pinned: true); System.GC.Collect(); var p3 = GC.AllocateArray(15000000, pinned: true); System.GC.Collect(); }); app.MapGet("/throwandcatchinvalidoperation", () => { try { throw new System.InvalidOperationException(); } catch(Exception){} throw new System.InvalidOperationException(); }); app.MapGet("/throwargumentexception", () => { throw new System.ArgumentException(); }); // Kills the web api app.MapGet("/terminate", () => { System.Environment.Exit(0); }); // Kills the web api app.MapGet("/stress", () => { List arr = new List(); for(int i=0; i<50; i++) { arr.Add(new Thread(DoWork)); } foreach(Thread thread in arr) { thread.Start(); } }); void DoWork() { for(int i = 0; i<50;i++) { try { throw new System.InvalidOperationException(); } catch(Exception){} } } app.Run(); ProcDump-for-Linux-2.2/tests/integration/TestWebApi/Properties/000077500000000000000000000000001447614355600246365ustar00rootroot00000000000000ProcDump-for-Linux-2.2/tests/integration/TestWebApi/Properties/launchSettings.json000066400000000000000000000017061447614355600305300ustar00rootroot00000000000000{ "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:1187", "sslPort": 44319 } }, "profiles": { "http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "http://localhost:5032", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "https": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "https://localhost:7118;http://localhost:5032", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } } ProcDump-for-Linux-2.2/tests/integration/TestWebApi/TestWebApi.csproj000066400000000000000000000003331447614355600257320ustar00rootroot00000000000000 net6.0 enable enable ProcDump-for-Linux-2.2/tests/integration/TestWebApi/appsettings.Development.json000066400000000000000000000001771447614355600302240ustar00rootroot00000000000000{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } } } ProcDump-for-Linux-2.2/tests/integration/TestWebApi/appsettings.json000066400000000000000000000002271447614355600257370ustar00rootroot00000000000000{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" } ProcDump-for-Linux-2.2/tests/integration/helpers.sh000077500000000000000000000031501447614355600224730ustar00rootroot00000000000000# Max number of seconds for programs to be available in test run. MAX_WAIT=60 # # Waits until the specified URL is reachable. # function waitforurl { local url=$1 i=0 wget $url while [ $? -ne 8 ] do ((i=i+1)) if [[ "$i" -gt $MAX_WAIT ]]; then return -1 fi sleep 1s wget $url done return 0 } # # Waits until the procdump child process has become available # function waitforprocdump { local -n result=$1 i=0 pid=$(ps -o pid= -C "procdump" | tr -d ' ') while [ ! $pid ] do ((i=i+1)) if [[ "$i" -gt $MAX_WAIT ]]; then result=-1 return fi sleep 1s pid=$(ps -o pid= -C "procdump" | tr -d ' ') done result=$pid } # # Waits until the procdump status socket (in case of .net apps) is available # function waitforprocdumpsocket { local procdumpchildpid=$1 local testchildpid=$2 local -n result=$3 ps -A -l if [[ -v TMPDIR ]]; then tmpfolder=$TMPDIR else tmpfolder="/tmp" fi prefixname="/procdump/procdump-status-" socketpath=$tmpfolder$prefixname$procdumpchildpid"-"$testchildpid echo "ProcDump .NET status socket: "$socketpath echo "List of ProcDump sockets:" sudo ls /tmp/procdump i=0 while [ ! -S $socketpath ] do ((i=i+1)) if [[ "$i" -gt $MAX_WAIT ]]; then echo "List of ProcDump sockets:" sudo ls /tmp/procdump echo "ProcDump .NET status socket not available within alloted time" result=-1 return fi sleep 1s done sudo ls /tmp/procdump echo "ProcDump .NET status socket found" result=$socketpath }ProcDump-for-Linux-2.2/tests/integration/run.sh000077500000000000000000000017711447614355600216440ustar00rootroot00000000000000#!/bin/bash failed=0 failedTests="\n" rootcheck () { if [ $(id -u) != "0" ] then sudo "$0" "$@" exit $? fi } rootcheck if [[ $EUID -ne 0 ]]; then echo "This script must be run as root" exit 1 fi if [ ! -e /usr/bin/stress-ng ]; then echo "Please install stress-ng before running this script!" exit 1 fi if [ ! -e /usr/bin/dotnet ]; then echo "Please install .NET before running this script!" exit 1 fi DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; function runTest { printf "\n========================================================================================\n" printf "\nStarting $(basename $1)\n" $1 if [ $? -ne 0 ]; then echo "$(basename $1) failed" failedTests="$failedTests$(basename $1)\n" failed=1 else echo "$(basename $1) passed" fi } for file in $DIR/scenarios/*.sh do runTest $file done printf "\nFailed tests: $failedTests" if [ "$failed" -eq "1" ]; then exit 1 else exit 0 fi ProcDump-for-Linux-2.2/tests/integration/runProcDumpAndValidate.sh000077500000000000000000000046121447614355600254100ustar00rootroot00000000000000#!/bin/bash function runProcDumpAndValidate { DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../bin/procdump"); # In cases where the previous scenario is still writing a dump we simply want to kill it pkill -9 gdb # Make absolutely sure we cleanup dumps from prior run rm -rf /tmp/dump_* dumpDir=$(mktemp -d -t dump_XXXXXX) cd $dumpDir dumpParam="" if [ "$#" -ge "6" -a -n "$6" ]; then dumpParam="$dumpDir/$6" fi if [ -z "$TESTPROGNAME" ]; then echo [`date +"%T.%3N"`] Starting stress-ng if [ "$5" == "MEM" ]; then stress-ng --vm 1 --vm-hang 0 --vm-bytes $1 --timeout 20s -q& else stress-ng -c 1 -l $1 --timeout 20s -q& fi pid=$! echo "PID: $pid" # Give test app opportunity to start and get into scenario state sleep 5s echo [`date +"%T.%3N"`] Done waiting for stress-ng to start childrenpid=$(pidof -o $pid $(which stress-ng)) echo "ChildrenPID: $childrenpid" childpid=$(echo $childrenpid | cut -d " " -f1) echo "ChildPID: $childpid" # We launch procdump in background and wait for 10 secs to complete the monitoring echo "$PROCDUMPPATH $2 $3 $childpid $dumpParam " echo [`date +"%T.%3N"`] Starting ProcDump $PROCDUMPPATH -log $2 $3 $childpid $dumpParam& pidPD=$! echo "ProcDump PID: $pidPD" sleep 30s echo [`date +"%T.%3N"`] Killing ProcDump if ps -p $pidPD > /dev/null then kill $pidPD fi else echo [`date +"%T.%3N"`] Starting $TESTPROGNAME TESTPROGPATH=$(readlink -m "$DIR/../../bin/$TESTPROGNAME"); ($TESTPROGPATH "$TESTPROGMODE") & pid=$! echo "Test App: $TESTPROGPATH $TESTPROGMODE" echo "PID: $pid" # Give test app opportunity to start and get into scenario state sleep 5s echo [`date +"%T.%3N"`] Done waiting for $TESTPROGNAME to start # We launch procdump in background and wait for 10 secs to complete the monitoring echo "$PROCDUMPPATH $2 $3 $dumpParam $TESTPROGNAME" echo [`date +"%T.%3N"`] Starting ProcDump $PROCDUMPPATH -log $2 $3 $dumpParam "$TESTPROGNAME"& pidPD=$! echo "ProcDump PID: $pidPD" sleep 30s echo [`date +"%T.%3N"`] Killing ProcDump if ps -p $pidPD > /dev/null then kill $pidPD fi fi if ps -p $pid > /dev/null then kill $pid fi if find "$dumpDir" -mindepth 1 -print -quit | grep -q .; then if $4; then exit 0 else exit 1 fi else if $4; then exit 1 else exit 0 fi fi } ProcDump-for-Linux-2.2/tests/integration/scenarios/000077500000000000000000000000001447614355600224615ustar00rootroot00000000000000ProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_0ExceptionDump1Thrown_dump.sh000077500000000000000000000032611447614355600315530ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*Exception* pkill -9 TestWebApi pkill -9 procdump dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi sudo $PROCDUMPPATH -log -e -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget http://localhost:5032/throwinvalidoperation sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*Exception* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -eq 1 ]]; then rm -rf *TestWebApi_*Exception* popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi else pkill -9 TestWebApi popd exit 1 fiProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_0WildcardExceptionDump1Thrown_dump.sh000077500000000000000000000032271447614355600332270ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*Exception* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi sudo $PROCDUMPPATH -log -e -f invalid -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget http://localhost:5032/throwinvalidoperation sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*Exception* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -eq 1 ]]; then rm -rf *TestWebApi_*Exception* popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi else pkill -9 TestWebApi popd exit 1 fi ProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_1FilterExceptionMsgDump1Thrown_dump.sh000077500000000000000000000032361447614355600333730ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*Exception* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi sudo $PROCDUMPPATH -log -e -f "current state" -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget http://localhost:5032/throwinvalidoperation sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*Exception* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -eq 1 ]]; then rm -rf *TestWebApi_*Exception* popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi else pkill -9 TestWebApi popd exit 1 fiProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_1WildcardExceptionDump1Thrown_dump.sh000077500000000000000000000032371447614355600332310ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*Exception* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi sudo $PROCDUMPPATH -log -e -f Invali*xception -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget http://localhost:5032/throwinvalidoperation sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*Exception* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -eq 1 ]]; then rm -rf *TestWebApi_*Exception* popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi else pkill -9 TestWebApi popd exit 1 fi dotnet_1WildcardFilterExceptionMsgDump1Thrown_dump.sh000077500000000000000000000032361447614355600347660ustar00rootroot00000000000000ProcDump-for-Linux-2.2/tests/integration/scenarios#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*Exception* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi sudo $PROCDUMPPATH -log -e -f "*current*sta*" -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget http://localhost:5032/throwinvalidoperation sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*Exception* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -eq 1 ]]; then rm -rf *TestWebApi_*Exception* popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi else pkill -9 TestWebApi popd exit 1 fiProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_1_gc_gen_1_dump.sh000077500000000000000000000033041447614355600273040ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*gc_gen_* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi # Wait for 2 dumps (gc start and finish) for generation 1 sudo $PROCDUMPPATH -log -gcgen 1 -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget -O /dev/null http://localhost:5032/fullgc sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*gc_gen_* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -eq 2 ]]; then rm -rf *TestWebApi_*gc_gen_* popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi else pkill -9 TestWebApi popd exit 1 fi ProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_1_gc_threshold_1_dump.sh000077500000000000000000000032721447614355600305330ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*gc_size_* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi # Wait for 1 GC commit thresholds (10MB) sudo $PROCDUMPPATH -log -gcm 10 -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget -O /dev/null http://localhost:5032/memincrease sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*gc_size_* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -eq 1 ]]; then rm -rf *TestWebApi_*gc_size_* popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi else pkill -9 TestWebApi popd exit 1 fi ProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_1exceptionDump1Thrown_dump.sh000077500000000000000000000032601447614355600316130ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*Exception* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi sudo $PROCDUMPPATH -log -e -f System.InvalidOperationException -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget http://localhost:5032/throwinvalidoperation sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*Exception* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -eq 1 ]]; then rm -rf *TestWebApi_*Exception* popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi else pkill -9 TestWebApi popd exit 1 fi ProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_1exceptionDump2Thrown_dump.sh000077500000000000000000000033401447614355600316130ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*Exception* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi sudo $PROCDUMPPATH -log -e -f System.InvalidOperationException -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget http://localhost:5032/throwinvalidoperation wget http://localhost:5032/throwinvalidoperation sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*Exception* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -eq 1 ]]; then rm -rf *TestWebApi_*Exception* popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi else pkill -9 TestWebApi popd exit 1 fiProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_2WildcardExceptionDump2Thrown_dump.sh000077500000000000000000000033221447614355600332260ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*Exception* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi sudo $PROCDUMPPATH -log -n 2 -e -f In*rat*ption -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget http://localhost:5032/throwinvalidoperation wget http://localhost:5032/throwinvalidoperation sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*Exception* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -eq 2 ]]; then rm -rf *TestWebApi_*Exception* popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi else pkill -9 TestWebApi popd exit 1 fi ProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_2exceptionDump2Thrown_dump.sh000077500000000000000000000033451447614355600316210ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*Exception* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi sudo $PROCDUMPPATH -log -n 2 -e -f System.InvalidOperationException -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget http://localhost:5032/throwinvalidoperation wget http://localhost:5032/throwinvalidoperation sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*Exception* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -eq 2 ]]; then rm -rf *TestWebApi_*Exception* popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi else pkill -9 TestWebApi popd exit 1 fiProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_3_gc_thresholds_3_dumps.sh000077500000000000000000000033131447614355600311010ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*gc_size_* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi # Wait for 3 GC commit thresholds (10, 20 and 30MB) sudo $PROCDUMPPATH -log -gcm 10,20,30 -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget -O /dev/null http://localhost:5032/memincrease sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*gc_size_* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -eq 3 ]]; then rm -rf *TestWebApi_*gc_size_* popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi else pkill -9 TestWebApi popd exit 1 fi ProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_LOH_thresholds_3_dumps.sh000077500000000000000000000033171447614355600307140ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*gc_size_* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi # Wait for 3 GC commit thresholds (10, 20 and 30MB) sudo $PROCDUMPPATH -log -gcm LOH:10,20,30 -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget -O /dev/null http://localhost:5032/memincrease sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*gc_size_* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -eq 3 ]]; then rm -rf *TestWebApi_*gc_size_* popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi else pkill -9 TestWebApi popd exit 1 fi ProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_MemMultipleDumps.sh000077500000000000000000000022671447614355600276470ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*commit* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi sudo $PROCDUMPPATH -log -m 10,20,30 -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi COUNT=( $(ls *TestWebApi_*commit* 2>/dev/null | wc -l) ) i=0 while [ $COUNT -ne 3 ] do ((i=i+1)) if [[ "$i" -gt 60 ]]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 return fi sleep 1s COUNT=( $(ls *TestWebApi_*commit* 2>/dev/null | wc -l) ) done sudo pkill -9 procdump pkill -9 TestWebApi rm -rf *TestWebApi_*commit* popd if [[ "$COUNT" -eq 3 ]]; then exit 0 else exit 1 fiProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_POH_thresholds_3_dumps.sh000077500000000000000000000033171447614355600307200ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*gc_size_* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi # Wait for 3 GC commit thresholds (10, 20 and 30MB) sudo $PROCDUMPPATH -log -gcm POH:10,20,30 -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget -O /dev/null http://localhost:5032/memincrease sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*gc_size_* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -eq 3 ]]; then rm -rf *TestWebApi_*gc_size_* popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi else pkill -9 TestWebApi popd exit 1 fi ProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_exception_notdump.sh000077500000000000000000000032571447614355600301500ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*Exception* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi sudo $PROCDUMPPATH -log -e -f System.NonExistingException -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget http://localhost:5032/throwinvalidoperation sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*Exception* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -ne 0 ]]; then rm -rf *TestWebApi_*Exception* sudo pkill -9 TestWebApi popd exit 1 else popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi fiProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_gen_2_thresholds_3_dumps.sh000077500000000000000000000033121447614355600312570ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*gc_size_* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi # Wait for 3 GC commit thresholds (10, 20 and 30MB) sudo $PROCDUMPPATH -log -gcm 2:4,6,8 -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget -O /dev/null http://localhost:5032/memincrease sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*gc_size_* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -eq 3 ]]; then rm -rf *TestWebApi_*gc_size_* popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi else pkill -9 TestWebApi popd exit 1 fi ProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_sigint_procdump.sh000077500000000000000000000026621447614355600276110ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*Exception* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi sudo $PROCDUMPPATH -log -e TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH sudo kill -2 ${PROCDUMPCHILDPID} popd sleep 1s if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi pkill -9 procdump if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fiProcDump-for-Linux-2.2/tests/integration/scenarios/dotnet_wildcardexception_notdump.sh000077500000000000000000000032401447614355600316520ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; PROCDUMPPATH=$(readlink -m "$DIR/../../../bin/procdump"); TESTWEBAPIPATH=$(readlink -m "$DIR/../TestWebApi"); HELPERS=$(readlink -m "$DIR/../helpers.sh"); source $HELPERS pushd . cd $TESTWEBAPIPATH rm -rf *TestWebApi_*Exception* dotnet run --urls=http://localhost:5032& # waiting TestWebApi ready to service waitforurl http://localhost:5032/throwinvalidoperation if [ $? -eq -1 ]; then pkill -9 TestWebApi popds exit 1 fi sudo $PROCDUMPPATH -log -e -f on*Existing -w TestWebApi& # waiting for procdump child process PROCDUMPCHILDPID=-1 waitforprocdump PROCDUMPCHILDPID if [ $PROCDUMPCHILDPID -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi TESTCHILDPID=$(ps -o pid= -C "TestWebApi" | tr -d ' ') #make sure procdump ready to capture before throw exception by checking if socket created SOCKETPATH=-1 waitforprocdumpsocket $PROCDUMPCHILDPID $TESTCHILDPID SOCKETPATH if [ $SOCKETPATH -eq -1 ]; then pkill -9 TestWebApi pkill -9 procdump popd exit 1 fi echo "SOCKETPATH: "$SOCKETPATH wget http://localhost:5032/throwinvalidoperation sudo pkill -9 procdump COUNT=( $(ls *TestWebApi_*Exception* | wc -l) ) if [ -S $SOCKETPATH ]; then rm $SOCKETPATH fi if [[ "$COUNT" -ne 0 ]]; then rm -rf *TestWebApi_*Exception* sudo pkill -9 TestWebApi popd exit 1 else popd #check to make sure profiler so is unloaded PROF="$(cat /proc/${TESTCHILDPID}/maps | awk '{print $6}' | grep '\procdumpprofiler.so' | uniq)" pkill -9 TestWebApi if [[ "$PROF" == "procdumpprofiler.so" ]]; then exit 1 else exit 0 fi fi ProcDump-for-Linux-2.2/tests/integration/scenarios/high_cpu.sh000077500000000000000000000005241447614355600246070ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate stressPercentage=90 procDumpType="-c" procDumpTrigger=80 shouldDump=true runProcDumpAndValidate $stressPercentage $procDumpType $procDumpTrigger $shouldDump "CPU" ProcDump-for-Linux-2.2/tests/integration/scenarios/high_cpu_by_name.sh000077500000000000000000000006201447614355600262760ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate TESTPROGNAME="ProcDumpTestApplication" TESTPROGMODE="burn" stressPercentage=90 procDumpType="-c" procDumpTrigger=50 shouldDump=true runProcDumpAndValidate $stressPercentage $procDumpType $procDumpTrigger $shouldDump "CPU" ProcDump-for-Linux-2.2/tests/integration/scenarios/high_cpu_custom_core_file_name.sh000077500000000000000000000006161447614355600312120ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate stressPercentage=90 procDumpType="-c" procDumpTrigger=80 shouldDump=true customDumpFileName="custom_dump_file" runProcDumpAndValidate $stressPercentage $procDumpType $procDumpTrigger $shouldDump "CPU" $customDumpFileName ProcDump-for-Linux-2.2/tests/integration/scenarios/high_cpu_nonexisting_output_directory.sh000077500000000000000000000006361447614355600327440ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate stressPercentage=90 procDumpType="-c" procDumpTrigger=80 shouldDump=false customDumpFileName="missing_subdir/custom_dump_file" runProcDumpAndValidate $stressPercentage $procDumpType $procDumpTrigger $shouldDump "CPU" $customDumpFileName ProcDump-for-Linux-2.2/tests/integration/scenarios/high_cpu_notdump.sh000077500000000000000000000005251447614355600263560ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate stressPercentage=20 procDumpType="-c" procDumpTrigger=80 shouldDump=false runProcDumpAndValidate $stressPercentage $procDumpType $procDumpTrigger $shouldDump "CPU" ProcDump-for-Linux-2.2/tests/integration/scenarios/high_cpu_trigger_cpu_memory.sh000077500000000000000000000005361447614355600305740ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate stressPercentage=90 procDumpType="-m 1000 -c" procDumpTrigger=80 shouldDump=true runProcDumpAndValidate $stressPercentage "$procDumpType" $procDumpTrigger $shouldDump "CPU" ProcDump-for-Linux-2.2/tests/integration/scenarios/high_fd_by_name.sh000077500000000000000000000006331447614355600261040ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate TESTPROGNAME="ProcDumpTestApplication" TESTPROGMODE="fc" stressPercentage=90 procDumpType="-fc" procDumpTrigger=100 shouldDump=true runProcDumpAndValidate $stressPercentage "$procDumpType" $procDumpTrigger $shouldDump "FILEDESCCOUNT"ProcDump-for-Linux-2.2/tests/integration/scenarios/high_fd_notdump.sh000077500000000000000000000006331447614355600261600ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate TESTPROGNAME="ProcDumpTestApplication" TESTPROGMODE="fc" stressPercentage=90 procDumpType="-fc" procDumpTrigger=1000 shouldDump=false runProcDumpAndValidate $stressPercentage $procDumpType $procDumpTrigger $shouldDump "FILEDESCCOUNT"ProcDump-for-Linux-2.2/tests/integration/scenarios/high_mem.sh000077500000000000000000000005251447614355600245770ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate stressPercentage=90M procDumpType="-m" procDumpTrigger=80 shouldDump=true runProcDumpAndValidate $stressPercentage $procDumpType $procDumpTrigger $shouldDump "MEM" ProcDump-for-Linux-2.2/tests/integration/scenarios/high_mem_notdump.sh000077500000000000000000000005261447614355600263460ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate stressPercentage=60M procDumpType="-m" procDumpTrigger=80 shouldDump=false runProcDumpAndValidate $stressPercentage $procDumpType $procDumpTrigger $shouldDump "MEM" ProcDump-for-Linux-2.2/tests/integration/scenarios/high_mem_trigger_cpu_memory.sh000077500000000000000000000005361447614355600305630ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate stressPercentage=90M procDumpType="-c 100 -m" procDumpTrigger=80 shouldDump=true runProcDumpAndValidate $stressPercentage "$procDumpType" $procDumpTrigger $shouldDump "MEM" ProcDump-for-Linux-2.2/tests/integration/scenarios/high_tc_by_name.sh000077500000000000000000000006301447614355600261160ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate TESTPROGNAME="ProcDumpTestApplication" TESTPROGMODE="tc" stressPercentage=90 procDumpType="-tc" procDumpTrigger=50 shouldDump=true runProcDumpAndValidate $stressPercentage "$procDumpType" $procDumpTrigger $shouldDump "THREADCOUNT"ProcDump-for-Linux-2.2/tests/integration/scenarios/high_tc_notdump.sh000077500000000000000000000006301447614355600261720ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate TESTPROGNAME="ProcDumpTestApplication" TESTPROGMODE="tc" stressPercentage=90 procDumpType="-tc" procDumpTrigger=500 shouldDump=false runProcDumpAndValidate $stressPercentage $procDumpType $procDumpTrigger $shouldDump "THREADCOUNT"ProcDump-for-Linux-2.2/tests/integration/scenarios/low_cpu.sh000077500000000000000000000005251447614355600244720ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate stressPercentage=10 procDumpType="-cl" procDumpTrigger=20 shouldDump=true runProcDumpAndValidate $stressPercentage $procDumpType $procDumpTrigger $shouldDump "CPU" ProcDump-for-Linux-2.2/tests/integration/scenarios/low_cpu_by_name.sh000077500000000000000000000006211447614355600261610ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); TESTPROGNAME="ProcDumpTestApplication" TESTPROGMODE="sleep" source $runProcDumpAndValidate stressPercentage=10 procDumpType="-cl" procDumpTrigger=20 shouldDump=true runProcDumpAndValidate $stressPercentage $procDumpType $procDumpTrigger $shouldDump "CPU" ProcDump-for-Linux-2.2/tests/integration/scenarios/low_cpu_notdump.sh000077500000000000000000000005261447614355600262410ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate stressPercentage=80 procDumpType="-cl" procDumpTrigger=20 shouldDump=false runProcDumpAndValidate $stressPercentage $procDumpType $procDumpTrigger $shouldDump "CPU" ProcDump-for-Linux-2.2/tests/integration/scenarios/low_cpu_trigger_cpu_memory.sh000077500000000000000000000005371447614355600304570ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate stressPercentage=10 procDumpType="-m 1000 -cl" procDumpTrigger=20 shouldDump=true runProcDumpAndValidate $stressPercentage "$procDumpType" $procDumpTrigger $shouldDump "CPU" ProcDump-for-Linux-2.2/tests/integration/scenarios/low_mem.sh000077500000000000000000000005261447614355600244620ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate stressPercentage=40M procDumpType="-ml" procDumpTrigger=80 shouldDump=true runProcDumpAndValidate $stressPercentage $procDumpType $procDumpTrigger $shouldDump "MEM" ProcDump-for-Linux-2.2/tests/integration/scenarios/low_mem_notdump.sh000077500000000000000000000005301447614355600262230ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate stressPercentage=200M procDumpType="-ml" procDumpTrigger=80 shouldDump=false runProcDumpAndValidate $stressPercentage $procDumpType $procDumpTrigger $shouldDump "MEM" ProcDump-for-Linux-2.2/tests/integration/scenarios/low_mem_trigger_cpu_memory.sh000077500000000000000000000005371447614355600304460ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate stressPercentage=40M procDumpType="-c 100 -ml" procDumpTrigger=80 shouldDump=true runProcDumpAndValidate $stressPercentage "$procDumpType" $procDumpTrigger $shouldDump "MEM" ProcDump-for-Linux-2.2/tests/integration/scenarios/ondemand.sh000077500000000000000000000005311447614355600246040ustar00rootroot00000000000000#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; runProcDumpAndValidate=$(readlink -m "$DIR/../runProcDumpAndValidate.sh"); source $runProcDumpAndValidate stressPercentage=1 procDumpType="" procDumpTrigger="" shouldDump=true runProcDumpAndValidate "$stressPercentage" "$procDumpType" "$procDumpTrigger" "$shouldDump" "CPU" ProcDump-for-Linux-2.2/tests/integration/signal/000077500000000000000000000000001447614355600217505ustar00rootroot00000000000000ProcDump-for-Linux-2.2/tests/integration/signal/makefile000066400000000000000000000000761447614355600234530ustar00rootroot00000000000000signaltest: signaltest.c gcc -o signaltest signaltest.c -I. ProcDump-for-Linux-2.2/tests/integration/signal/signaltest000077500000000000000000000407501447614355600240610ustar00rootroot00000000000000ELF>@(:@8 @@@@ -==px-==888 XXXDDStd888 Ptd   LLQtdRtd-==``/lib64/ld-linux-x86-64.so.2GNUGNUԦc*MZD!D`~GNU  emQ 3m  | $"libc.so.6exitsignalprintfpause__cxa_finalize__libc_start_mainGLIBC_2.2.5_ITM_deregisterTMCloneTable__gmon_start___ITM_registerTMCloneTableui E==`@@????? ????HH/HtH5/%/hhhh%}/D%-/D%%/D%/D%/D1I^HHPTLH ?H=.H=/H/H9tH.Ht H=.H5.H)HH?HHHtH.HtfD=.u+UH=.Ht H=.d}.]wUHH}}u EH=0UHH }HuEEH5E}~AWL=s+AVIAUIATAUH-d+SL)HHt1LLDAHH9uH[]A\A]A^A_ff.HHCaught signal: %d ;LXhhx`zRx 8/D$4PFJ w?:*3$"\t@8EC o >EC DeFIE E(D0H8G@n8A0A(B BBB`  ==o ?`H oohooNo=0@P`@GCC: (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.08X|N h  H  p  h ===?@@  !`7@F=my=!=== ?   } @58A@H\{@ @  e@/@> @ 3"crtstuff.cderegister_tm_clones__do_global_dtors_auxcompleted.8060__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entrysignaltest.c__FRAME_END____init_array_end_DYNAMIC__init_array_start__GNU_EH_FRAME_HDR_GLOBAL_OFFSET_TABLE___libc_csu_fini_ITM_deregisterTMCloneTablesig_handler_edataprintf@@GLIBC_2.2.5__libc_start_main@@GLIBC_2.2.5__data_startsignal@@GLIBC_2.2.5__gmon_start____dso_handle_IO_stdin_usedpause@@GLIBC_2.2.5__libc_csu_init__bss_startmainexit@@GLIBC_2.2.5__TMC_END___ITM_registerTMCloneTable__cxa_finalize@@GLIBC_2.2.5.symtab.strtab.shstrtab.interp.note.gnu.property.note.gnu.build-id.note.ABI-tag.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.got.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.data.bss.comment#88 6XX$I|| Wo$a iqoNN~ohh BHH`  Ppp@    Lh h (=-=-=-?/`@0 @000*@0x. 6O9ProcDump-for-Linux-2.2/tests/integration/signal/signaltest.c000066400000000000000000000021151447614355600242700ustar00rootroot00000000000000// // Used to test the signal triggering (and forwarding) of procdump. // // 1. Run this test app (it registers for the first 23 signals). // 2. Run procdump against this pid // 3. use kill to send whichever signal you are interested in triggering procdump (or not trigger) // 4. Make sure in all cases (except for signals that can't be intercepted) that this program outputs "Caught signal X" // where X is the signal you sent. If the output does not show that signal being handled, it means the signal forwarding // in procdump is not working properly and needs to be investigated. // #include #include #include #include #include #include void sig_handler(int signum) { if(signum==SIGINT) { exit(-1); } // We shouldnt be using printf in a signal handler but in this simple test case its fine printf("Caught signal: %d\n", signum); } void main(int argc, char** argv) { for(int i=0; i<24; i++) { signal(i, sig_handler); } while(1) { pause(); } }